diff --git a/go.mod b/go.mod index 08c66a0b7..72f2bda67 100644 --- a/go.mod +++ b/go.mod @@ -5,53 +5,53 @@ go 1.24.2 replace cuelang.org/go => cuelang.org/go v0.4.3 require ( - github.com/99designs/gqlgen v0.17.76 + github.com/99designs/gqlgen v0.17.78 github.com/Yamashou/gqlgenc v0.33.0 github.com/charmbracelet/lipgloss v1.1.0 github.com/creack/pty v1.1.24 - github.com/gin-gonic/gin v1.10.0 - github.com/go-git/go-git/v5 v5.16.0 + github.com/gin-gonic/gin v1.10.1 + github.com/go-git/go-git/v5 v5.16.2 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 github.com/hashicorp/go-getter v1.7.8 - github.com/nhost/be v0.0.0-20250729094706-ada22fe1437e + github.com/nhost/be v0.0.0-20250730065440-072ba750534a github.com/pelletier/go-toml/v2 v2.2.4 github.com/rs/cors/wrapper/gin v0.0.0-20240830163046-1084d89a1692 github.com/sirupsen/logrus v1.9.3 github.com/urfave/cli/v2 v2.27.7 - github.com/wI2L/jsondiff v0.6.1 - golang.org/x/mod v0.25.0 - golang.org/x/term v0.32.0 + github.com/wI2L/jsondiff v0.7.0 + golang.org/x/mod v0.26.0 + golang.org/x/term v0.33.0 gopkg.in/evanphx/json-patch.v5 v5.9.11 gopkg.in/yaml.v3 v3.0.1 ) require ( - cel.dev/expr v0.23.1 // indirect - cloud.google.com/go v0.121.0 // indirect - cloud.google.com/go/auth v0.16.1 // indirect + cel.dev/expr v0.24.0 // indirect + cloud.google.com/go v0.121.4 // indirect + cloud.google.com/go/auth v0.16.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/compute/metadata v0.7.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect - cloud.google.com/go/storage v1.53.0 // indirect + cloud.google.com/go/storage v1.56.0 // indirect cuelang.org/go v0.11.2 // indirect - dario.cat/mergo v1.0.1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect + dario.cat/mergo v1.0.2 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.2.0 // indirect + github.com/ProtonMail/go-crypto v1.3.0 // indirect github.com/agnivade/levenshtein v1.2.1 // indirect github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bytedance/sonic v1.13.2 // indirect - github.com/bytedance/sonic/loader v0.2.4 // indirect + github.com/bytedance/sonic v1.14.0 // indirect + github.com/bytedance/sonic/loader v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/colorprofile v0.3.1 // indirect - github.com/charmbracelet/x/ansi v0.9.2 // indirect + github.com/charmbracelet/x/ansi v0.9.3 // indirect github.com/charmbracelet/x/cellbuf v0.0.13 // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/cloudflare/circl v1.6.1 // indirect @@ -68,19 +68,19 @@ require ( github.com/gin-contrib/sse v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/go-jose/go-jose/v4 v4.1.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-jose/go-jose/v4 v4.1.1 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // 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.26.0 // indirect - github.com/go-viper/mapstructure/v2 v2.3.0 // indirect + github.com/go-playground/validator/v10 v10.27.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/goccy/go-json v0.10.5 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.3 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.1 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect @@ -88,13 +88,13 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.4 // indirect + github.com/jackc/pgx/v5 v5.7.5 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -106,17 +106,17 @@ require ( github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect github.com/muesli/termenv v0.16.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pjbgf/sha1cd v0.3.2 // indirect + github.com/pjbgf/sha1cd v0.4.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect - github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/procfs v0.17.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/cors v1.11.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/sergi/go-diff v1.4.0 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/sosodev/duration v1.3.1 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect @@ -125,37 +125,37 @@ require ( github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ugorji/go/codec v1.2.12 // indirect + github.com/ugorji/go/codec v1.3.0 // indirect github.com/ulikunitz/xz v0.5.12 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect github.com/vektah/gqlparser/v2 v2.5.30 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect + github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 // indirect github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - golang.org/x/arch v0.17.0 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.37.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + golang.org/x/arch v0.19.0 // indirect + golang.org/x/crypto v0.40.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect - golang.org/x/time v0.11.0 // indirect - google.golang.org/api v0.231.0 // indirect - google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/grpc v1.72.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.27.0 // indirect + golang.org/x/time v0.12.0 // indirect + google.golang.org/api v0.243.0 // indirect + google.golang.org/genproto v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index 04dfc8008..6995378ae 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg= -cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -38,8 +38,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.121.0 h1:pgfwva8nGw7vivjZiRfrmglGWiCJBP+0OmDpenG/Fwg= -cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= +cloud.google.com/go v0.121.4 h1:cVvUiY0sX0xwyxPwdSU2KsF9knOVmtRyAMt8xou0iTs= +cloud.google.com/go v0.121.4/go.mod h1:XEBchUiHFJbz4lKBZwYBDHV/rSyfFktk737TLDU089s= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= @@ -101,8 +101,8 @@ cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVo cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= -cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.16.3 h1:kabzoQ9/bobUmnseYnBO6qQG7q4a/CffFRlJSxv2wCc= +cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= @@ -180,12 +180,13 @@ cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63 cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.41.0 h1:S+HvMIzBUAFK/73wxkrA4/GwvM7R9d+egGZvih4kp+M= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= -cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -545,8 +546,8 @@ cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeL cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw= -cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA= +cloud.google.com/go/storage v1.56.0 h1:iixmq2Fse2tqxMbWhLWC9HfBj1qdxqAmiK8/eqtsLxI= +cloud.google.com/go/storage v1.56.0/go.mod h1:Tpuj6t4NweCLzlNbw9Z9iwxEkrSem20AetIeH/shgVU= cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= @@ -616,30 +617,30 @@ cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo= cuelang.org/go v0.4.3/go.mod h1:7805vR9H+VoBNdWFdI7jyDR3QLUPp4+naHfbcgp55HI= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/99designs/gqlgen v0.17.76 h1:YsJBcfACWmXWU2t1yCjoGdOmqcTfOFpjbLAE443fmYI= -github.com/99designs/gqlgen v0.17.76/go.mod h1:miiU+PkAnTIDKMQ1BseUOIVeQHoiwYDZGCswoxl7xec= +github.com/99designs/gqlgen v0.17.78 h1:bhIi7ynrc3js2O8wu1sMQj1YHPENDt3jQGyifoBvoVI= +github.com/99designs/gqlgen v0.17.78/go.mod h1:yI/o31IauG2kX0IsskM4R894OCCG1jXJORhtLQqB7Oc= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 h1:owcC2UnmsZycprQ5RfRgjydWhuoxg71LUfyiQdijZuM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0 h1:4LP6hvB4I5ouTbGgWtixJhgED6xdf67twf9PoY96Tbg= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs= -github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= +github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/PuerkitoBio/goquery v1.10.3 h1:pFYcNSqHxBD06Fpj/KsbStFRsgRATgnf3LeXiUkhzPo= github.com/PuerkitoBio/goquery v1.10.3/go.mod h1:tMUX0zDMHXYlAQk6p35XxQMqMweEKB7iK7iLNd4RH4Y= github.com/Yamashou/gqlgenc v0.33.0 h1:0fxTnNE8/JVmFpfo7reA5pEgOcr7VjNc+/nEpVhNjfc= @@ -676,14 +677,15 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1U github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= -github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ= +github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= -github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= +github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -693,8 +695,8 @@ github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0= github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/x/ansi v0.9.2 h1:92AGsQmNTRMzuzHEYfCdjQeUzTrgE1vfO5/7fEVoXdY= -github.com/charmbracelet/x/ansi v0.9.2/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= +github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0= +github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k= github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= @@ -724,6 +726,7 @@ github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= @@ -780,8 +783,8 @@ github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFA github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= -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/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= +github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -795,18 +798,18 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.16.0 h1:k3kuOEpkc0DeY7xlL6NaaNg39xdgQbtH5mwCafHO9AQ= -github.com/go-git/go-git/v5 v5.16.0/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= +github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM= +github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= -github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= @@ -817,15 +820,15 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o 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.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= -github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= -github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= -github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= +github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -937,8 +940,8 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= -github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= @@ -966,8 +969,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg= -github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= +github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= +github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -992,8 +995,8 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -1044,10 +1047,8 @@ github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/nhost/be v0.0.0-20250729074615-4c9a31b695cb h1:ftbYufoc6iZA2jHOgjcsuraYbnvWzKFX4DoqGts9C4c= -github.com/nhost/be v0.0.0-20250729074615-4c9a31b695cb/go.mod h1:Btk2JXy1ih/+VTlNItNNFfhOTZlKlrodBqXaJ+2K7Pg= -github.com/nhost/be v0.0.0-20250729094706-ada22fe1437e h1:F3Wi7p0pn+aIFLqCBlN0Rtvdgc/ym6F4fM7PDGYtUho= -github.com/nhost/be v0.0.0-20250729094706-ada22fe1437e/go.mod h1:Btk2JXy1ih/+VTlNItNNFfhOTZlKlrodBqXaJ+2K7Pg= +github.com/nhost/be v0.0.0-20250730065440-072ba750534a h1:PBNFdtz2XdGUbFVDTJNBdKwtWLab3jgEl0fpb5rn3j0= +github.com/nhost/be v0.0.0-20250730065440-072ba750534a/go.mod h1:Btk2JXy1ih/+VTlNItNNFfhOTZlKlrodBqXaJ+2K7Pg= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -1056,8 +1057,8 @@ github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2 github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= -github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= +github.com/pjbgf/sha1cd v0.4.0 h1:NXzbL1RvjTUi6kgYZCX3fPwwl27Q1LJndxtUDVfJGRY= +github.com/pjbgf/sha1cd v0.4.0/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1077,10 +1078,10 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= -github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= +github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d h1:HWfigq7lB31IeJL8iy7jkUmU/PG1Sr8jVGhS749dbUA= github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -1101,8 +1102,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -1143,8 +1144,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= 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/ugorji/go/codec v1.3.0 h1:Qd2W2sQawAfG8XSvzwhBeoGq71zXOC/Q1E9y/wUcsUA= +github.com/ugorji/go/codec v1.3.0/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1156,14 +1157,14 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vektah/gqlparser/v2 v2.5.30 h1:EqLwGAFLIzt1wpx1IPpY67DwUujF1OfzgEyDsLrN6kE= github.com/vektah/gqlparser/v2 v2.5.30/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= -github.com/wI2L/jsondiff v0.6.1 h1:ISZb9oNWbP64LHnu4AUhsMF5W0FIj5Ok3Krip9Shqpw= -github.com/wI2L/jsondiff v0.6.1/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= +github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= +github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= -github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= +github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 h1:FnBeRrxr7OU4VvAzt5X7s6266i6cSVkkFPS0TuXWbIg= +github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1185,31 +1186,33 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/contrib/detectors/gcp v1.37.0 h1:B+WbN9RPsvobe6q4vP6KgM8/9plR/HNjgGBrfcOlweA= +go.opentelemetry.io/contrib/detectors/gcp v1.37.0/go.mod h1:K5zQ3TT7p2ru9Qkzk0bKtCql0RGkPj9pRjpXgZJZ+rU= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= -golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= -golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= +golang.org/x/arch v0.19.0 h1:LmbDQUodHThXE+htjrnmVD73M//D9GTH6wFZjyDkjyU= +golang.org/x/arch v0.19.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1224,8 +1227,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1288,8 +1291,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1353,8 +1356,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1406,8 +1409,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1493,8 +1496,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= 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= @@ -1509,8 +1512,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1531,16 +1534,16 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1604,8 +1607,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= 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= @@ -1679,8 +1682,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.231.0 h1:LbUD5FUl0C4qwia2bjXhCMH65yz1MLPzA/0OYEsYY7Q= -google.golang.org/api v0.231.0/go.mod h1:H52180fPI/QQlUc0F4xWfGZILdv09GCWKt2bcsn164A= +google.golang.org/api v0.243.0 h1:sw+ESIJ4BVnlJcWu9S+p2Z6Qq1PjG77T8IJ1xtp4jZQ= +google.golang.org/api v0.243.0/go.mod h1:GE4QtYfaybx1KmeHMdBnNnyLzBZCVihGBXAmJu/uUr8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1820,12 +1823,12 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 h1:vPV0tzlsK6EzEDHNNH5sa7Hs9bd7iXR7B1tSiPepkV0= -google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2 h1:IqsN8hx+lWLqlN+Sc3DoMy/watjofWiU8sRFgQ8fhKM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto v0.0.0-20250728155136-f173205681a0 h1:btBcgujH2+KIWEfz0s7Cdtt9R7hpwM4SAEXAdXf/ddw= +google.golang.org/genproto v0.0.0-20250728155136-f173205681a0/go.mod h1:Q4yZQ3kmmIyg6HsMjCGx2vQ8gzN+dntaPmFWz6Zj0fo= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1867,8 +1870,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= diff --git a/nhostclient/graphql/models_gen.go b/nhostclient/graphql/models_gen.go index 267df0fbc..37a15192f 100644 --- a/nhostclient/graphql/models_gen.go +++ b/nhostclient/graphql/models_gen.go @@ -469,13 +469,15 @@ type ConfigAuthUserUpdateInput struct { } type ConfigAuthsessionaccessTokenCustomClaims struct { - Key string `json:"key"` - Value string `json:"value"` + Default *string `json:"default,omitempty"` + Key string `json:"key"` + Value string `json:"value"` } type ConfigAuthsessionaccessTokenCustomClaimsUpdateInput struct { - Key *string `json:"key,omitempty"` - Value *string `json:"value,omitempty"` + Default *string `json:"default,omitempty"` + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` } type ConfigAutoscaler struct { @@ -978,6 +980,7 @@ type ConfigPostgresSettings struct { MinWalSize *string `json:"minWalSize,omitempty"` RandomPageCost *float64 `json:"randomPageCost,omitempty"` SharedBuffers *string `json:"sharedBuffers,omitempty"` + TrackIoTiming *string `json:"trackIoTiming,omitempty"` WalBuffers *string `json:"walBuffers,omitempty"` WalLevel *string `json:"walLevel,omitempty"` WorkMem *string `json:"workMem,omitempty"` @@ -1003,6 +1006,7 @@ type ConfigPostgresSettingsUpdateInput struct { MinWalSize *string `json:"minWalSize,omitempty"` RandomPageCost *float64 `json:"randomPageCost,omitempty"` SharedBuffers *string `json:"sharedBuffers,omitempty"` + TrackIoTiming *string `json:"trackIoTiming,omitempty"` WalBuffers *string `json:"walBuffers,omitempty"` WalLevel *string `json:"walLevel,omitempty"` WorkMem *string `json:"workMem,omitempty"` diff --git a/vendor/cel.dev/expr/eval.pb.go b/vendor/cel.dev/expr/eval.pb.go index 8f651f9cc..a7aae0900 100644 --- a/vendor/cel.dev/expr/eval.pb.go +++ b/vendor/cel.dev/expr/eval.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.5 +// protoc-gen-go v1.36.3 +// protoc v5.27.1 // source: cel/expr/eval.proto package expr import ( - status "google.golang.org/genproto/googleapis/rpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" ) @@ -22,21 +22,18 @@ const ( ) type EvalState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Values []*ExprValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + Results []*EvalState_Result `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"` unknownFields protoimpl.UnknownFields - - Values []*ExprValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` - Results []*EvalState_Result `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EvalState) Reset() { *x = EvalState{} - if protoimpl.UnsafeEnabled { - mi := &file_cel_expr_eval_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_cel_expr_eval_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EvalState) String() string { @@ -47,7 +44,7 @@ func (*EvalState) ProtoMessage() {} func (x *EvalState) ProtoReflect() protoreflect.Message { mi := &file_cel_expr_eval_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -77,25 +74,22 @@ func (x *EvalState) GetResults() []*EvalState_Result { } type ExprValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: // // *ExprValue_Value // *ExprValue_Error // *ExprValue_Unknown - Kind isExprValue_Kind `protobuf_oneof:"kind"` + Kind isExprValue_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExprValue) Reset() { *x = ExprValue{} - if protoimpl.UnsafeEnabled { - mi := &file_cel_expr_eval_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_cel_expr_eval_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExprValue) String() string { @@ -106,7 +100,7 @@ func (*ExprValue) ProtoMessage() {} func (x *ExprValue) ProtoReflect() protoreflect.Message { mi := &file_cel_expr_eval_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -121,30 +115,36 @@ func (*ExprValue) Descriptor() ([]byte, []int) { return file_cel_expr_eval_proto_rawDescGZIP(), []int{1} } -func (m *ExprValue) GetKind() isExprValue_Kind { - if m != nil { - return m.Kind +func (x *ExprValue) GetKind() isExprValue_Kind { + if x != nil { + return x.Kind } return nil } func (x *ExprValue) GetValue() *Value { - if x, ok := x.GetKind().(*ExprValue_Value); ok { - return x.Value + if x != nil { + if x, ok := x.Kind.(*ExprValue_Value); ok { + return x.Value + } } return nil } func (x *ExprValue) GetError() *ErrorSet { - if x, ok := x.GetKind().(*ExprValue_Error); ok { - return x.Error + if x != nil { + if x, ok := x.Kind.(*ExprValue_Error); ok { + return x.Error + } } return nil } func (x *ExprValue) GetUnknown() *UnknownSet { - if x, ok := x.GetKind().(*ExprValue_Unknown); ok { - return x.Unknown + if x != nil { + if x, ok := x.Kind.(*ExprValue_Unknown); ok { + return x.Unknown + } } return nil } @@ -172,20 +172,17 @@ func (*ExprValue_Error) isExprValue_Kind() {} func (*ExprValue_Unknown) isExprValue_Kind() {} type ErrorSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Errors []*Status `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"` unknownFields protoimpl.UnknownFields - - Errors []*status.Status `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ErrorSet) Reset() { *x = ErrorSet{} - if protoimpl.UnsafeEnabled { - mi := &file_cel_expr_eval_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_cel_expr_eval_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ErrorSet) String() string { @@ -196,7 +193,7 @@ func (*ErrorSet) ProtoMessage() {} func (x *ErrorSet) ProtoReflect() protoreflect.Message { mi := &file_cel_expr_eval_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -211,28 +208,85 @@ func (*ErrorSet) Descriptor() ([]byte, []int) { return file_cel_expr_eval_proto_rawDescGZIP(), []int{2} } -func (x *ErrorSet) GetErrors() []*status.Status { +func (x *ErrorSet) GetErrors() []*Status { if x != nil { return x.Errors } return nil } -type UnknownSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type Status struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Details []*anypb.Any `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - Exprs []int64 `protobuf:"varint,1,rep,packed,name=exprs,proto3" json:"exprs,omitempty"` +func (x *Status) Reset() { + *x = Status{} + mi := &file_cel_expr_eval_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *UnknownSet) Reset() { - *x = UnknownSet{} - if protoimpl.UnsafeEnabled { - mi := &file_cel_expr_eval_proto_msgTypes[3] +func (x *Status) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Status) ProtoMessage() {} + +func (x *Status) ProtoReflect() protoreflect.Message { + mi := &file_cel_expr_eval_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Status.ProtoReflect.Descriptor instead. +func (*Status) Descriptor() ([]byte, []int) { + return file_cel_expr_eval_proto_rawDescGZIP(), []int{3} +} + +func (x *Status) GetCode() int32 { + if x != nil { + return x.Code } + return 0 +} + +func (x *Status) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *Status) GetDetails() []*anypb.Any { + if x != nil { + return x.Details + } + return nil +} + +type UnknownSet struct { + state protoimpl.MessageState `protogen:"open.v1"` + Exprs []int64 `protobuf:"varint,1,rep,packed,name=exprs,proto3" json:"exprs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnknownSet) Reset() { + *x = UnknownSet{} + mi := &file_cel_expr_eval_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnknownSet) String() string { @@ -242,8 +296,8 @@ func (x *UnknownSet) String() string { func (*UnknownSet) ProtoMessage() {} func (x *UnknownSet) ProtoReflect() protoreflect.Message { - mi := &file_cel_expr_eval_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_cel_expr_eval_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -255,7 +309,7 @@ func (x *UnknownSet) ProtoReflect() protoreflect.Message { // Deprecated: Use UnknownSet.ProtoReflect.Descriptor instead. func (*UnknownSet) Descriptor() ([]byte, []int) { - return file_cel_expr_eval_proto_rawDescGZIP(), []int{3} + return file_cel_expr_eval_proto_rawDescGZIP(), []int{4} } func (x *UnknownSet) GetExprs() []int64 { @@ -266,21 +320,18 @@ func (x *UnknownSet) GetExprs() []int64 { } type EvalState_Result struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Expr int64 `protobuf:"varint,1,opt,name=expr,proto3" json:"expr,omitempty"` + Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Expr int64 `protobuf:"varint,1,opt,name=expr,proto3" json:"expr,omitempty"` - Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EvalState_Result) Reset() { *x = EvalState_Result{} - if protoimpl.UnsafeEnabled { - mi := &file_cel_expr_eval_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_cel_expr_eval_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EvalState_Result) String() string { @@ -290,8 +341,8 @@ func (x *EvalState_Result) String() string { func (*EvalState_Result) ProtoMessage() {} func (x *EvalState_Result) ProtoReflect() protoreflect.Message { - mi := &file_cel_expr_eval_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_cel_expr_eval_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -325,39 +376,45 @@ var File_cel_expr_eval_proto protoreflect.FileDescriptor var file_cel_expr_eval_proto_rawDesc = []byte{ 0x0a, 0x13, 0x63, 0x65, 0x6c, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x1a, - 0x14, 0x63, 0x65, 0x6c, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, - 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, - 0x01, 0x0a, 0x09, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, - 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x6c, - 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, - 0x32, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x70, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x65, 0x6c, 0x2e, - 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, - 0x70, 0x72, 0x2e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, - 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x22, 0x36, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x06, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x22, 0x0a, 0x0a, 0x55, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x42, 0x2c, 0x0a, 0x0c, - 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x42, 0x09, 0x45, 0x76, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0c, 0x63, 0x65, 0x6c, 0x2e, 0x64, - 0x65, 0x76, 0x2f, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x63, 0x65, 0x6c, 0x2f, + 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xa2, 0x01, 0x0a, 0x09, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, + 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x1a, 0x32, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, + 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x65, + 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x48, + 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x65, 0x6c, 0x2e, + 0x65, 0x78, 0x70, 0x72, 0x2e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x48, + 0x00, 0x52, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x28, + 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x63, 0x65, 0x6c, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x22, 0x0a, 0x0a, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x65, + 0x78, 0x70, 0x72, 0x73, 0x42, 0x2c, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x6c, 0x2e, + 0x65, 0x78, 0x70, 0x72, 0x42, 0x09, 0x45, 0x76, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x0c, 0x63, 0x65, 0x6c, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x65, 0x78, 0x70, 0x72, 0xf8, + 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -372,28 +429,30 @@ func file_cel_expr_eval_proto_rawDescGZIP() []byte { return file_cel_expr_eval_proto_rawDescData } -var file_cel_expr_eval_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_cel_expr_eval_proto_goTypes = []interface{}{ +var file_cel_expr_eval_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_cel_expr_eval_proto_goTypes = []any{ (*EvalState)(nil), // 0: cel.expr.EvalState (*ExprValue)(nil), // 1: cel.expr.ExprValue (*ErrorSet)(nil), // 2: cel.expr.ErrorSet - (*UnknownSet)(nil), // 3: cel.expr.UnknownSet - (*EvalState_Result)(nil), // 4: cel.expr.EvalState.Result - (*Value)(nil), // 5: cel.expr.Value - (*status.Status)(nil), // 6: google.rpc.Status + (*Status)(nil), // 3: cel.expr.Status + (*UnknownSet)(nil), // 4: cel.expr.UnknownSet + (*EvalState_Result)(nil), // 5: cel.expr.EvalState.Result + (*Value)(nil), // 6: cel.expr.Value + (*anypb.Any)(nil), // 7: google.protobuf.Any } var file_cel_expr_eval_proto_depIdxs = []int32{ 1, // 0: cel.expr.EvalState.values:type_name -> cel.expr.ExprValue - 4, // 1: cel.expr.EvalState.results:type_name -> cel.expr.EvalState.Result - 5, // 2: cel.expr.ExprValue.value:type_name -> cel.expr.Value + 5, // 1: cel.expr.EvalState.results:type_name -> cel.expr.EvalState.Result + 6, // 2: cel.expr.ExprValue.value:type_name -> cel.expr.Value 2, // 3: cel.expr.ExprValue.error:type_name -> cel.expr.ErrorSet - 3, // 4: cel.expr.ExprValue.unknown:type_name -> cel.expr.UnknownSet - 6, // 5: cel.expr.ErrorSet.errors:type_name -> google.rpc.Status - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 4, // 4: cel.expr.ExprValue.unknown:type_name -> cel.expr.UnknownSet + 3, // 5: cel.expr.ErrorSet.errors:type_name -> cel.expr.Status + 7, // 6: cel.expr.Status.details:type_name -> google.protobuf.Any + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_cel_expr_eval_proto_init() } @@ -402,69 +461,7 @@ func file_cel_expr_eval_proto_init() { return } file_cel_expr_value_proto_init() - if !protoimpl.UnsafeEnabled { - file_cel_expr_eval_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvalState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cel_expr_eval_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExprValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cel_expr_eval_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ErrorSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cel_expr_eval_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnknownSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cel_expr_eval_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvalState_Result); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_cel_expr_eval_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_cel_expr_eval_proto_msgTypes[1].OneofWrappers = []any{ (*ExprValue_Value)(nil), (*ExprValue_Error)(nil), (*ExprValue_Unknown)(nil), @@ -475,7 +472,7 @@ func file_cel_expr_eval_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cel_expr_eval_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/cloud.google.com/go/auth/CHANGES.md b/vendor/cloud.google.com/go/auth/CHANGES.md index fd6f06233..cbee12816 100644 --- a/vendor/cloud.google.com/go/auth/CHANGES.md +++ b/vendor/cloud.google.com/go/auth/CHANGES.md @@ -1,5 +1,20 @@ # Changelog +## [0.16.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.16.2...auth/v0.16.3) (2025-07-17) + + +### Bug Fixes + +* **auth:** Fix race condition in cachedTokenProvider.tokenAsync ([#12586](https://github.com/googleapis/google-cloud-go/issues/12586)) ([73867cc](https://github.com/googleapis/google-cloud-go/commit/73867ccc1e9808d65361bcfc0776bd95fe34dbb3)) + +## [0.16.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.16.1...auth/v0.16.2) (2025-06-04) + + +### Bug Fixes + +* **auth:** Add back DirectPath misconfiguration logging ([#11162](https://github.com/googleapis/google-cloud-go/issues/11162)) ([8d52da5](https://github.com/googleapis/google-cloud-go/commit/8d52da58da5a0ed77a0f6307d1b561bc045406a1)) +* **auth:** Remove s2a fallback option ([#12354](https://github.com/googleapis/google-cloud-go/issues/12354)) ([d5acc59](https://github.com/googleapis/google-cloud-go/commit/d5acc599cd775ddc404349e75906fa02e8ff133e)) + ## [0.16.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.16.0...auth/v0.16.1) (2025-04-23) diff --git a/vendor/cloud.google.com/go/auth/auth.go b/vendor/cloud.google.com/go/auth/auth.go index cd5e98868..fb24c43eb 100644 --- a/vendor/cloud.google.com/go/auth/auth.go +++ b/vendor/cloud.google.com/go/auth/auth.go @@ -362,9 +362,6 @@ func (c *cachedTokenProvider) tokenState() tokenState { // blocking call to Token should likely return the same error on the main goroutine. func (c *cachedTokenProvider) tokenAsync(ctx context.Context) { fn := func() { - c.mu.Lock() - c.isRefreshRunning = true - c.mu.Unlock() t, err := c.tp.Token(ctx) c.mu.Lock() defer c.mu.Unlock() @@ -380,6 +377,7 @@ func (c *cachedTokenProvider) tokenAsync(ctx context.Context) { c.mu.Lock() defer c.mu.Unlock() if !c.isRefreshRunning && !c.isRefreshErr { + c.isRefreshRunning = true go fn() } } diff --git a/vendor/cloud.google.com/go/auth/grpctransport/directpath.go b/vendor/cloud.google.com/go/auth/grpctransport/directpath.go index db487b7e5..69d6d0034 100644 --- a/vendor/cloud.google.com/go/auth/grpctransport/directpath.go +++ b/vendor/cloud.google.com/go/auth/grpctransport/directpath.go @@ -20,14 +20,18 @@ import ( "os" "strconv" "strings" + "time" "cloud.google.com/go/auth" "cloud.google.com/go/auth/credentials" "cloud.google.com/go/auth/internal/compute" + "golang.org/x/time/rate" "google.golang.org/grpc" grpcgoogle "google.golang.org/grpc/credentials/google" ) +var logRateLimiter = rate.Sometimes{Interval: 1 * time.Second} + func isDirectPathEnabled(endpoint string, opts *Options) bool { if opts.InternalOptions != nil && !opts.InternalOptions.EnableDirectPath { return false @@ -111,6 +115,9 @@ func isDirectPathBoundTokenEnabled(opts *InternalOptions) bool { // configuration allows the use of direct path. If it does not the provided // grpcOpts and endpoint are returned. func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint string, creds *auth.Credentials) ([]grpc.DialOption, string, error) { + logRateLimiter.Do(func() { + logDirectPathMisconfig(endpoint, creds, opts) + }) if isDirectPathEnabled(endpoint, opts) && compute.OnComputeEngine() && isTokenProviderDirectPathCompatible(creds, opts) { // Overwrite all of the previously specific DialOptions, DirectPath uses its own set of credentials and certificates. defaultCredetialsOptions := grpcgoogle.DefaultCredentialsOptions{PerRPCCreds: &grpcCredentialsProvider{creds: creds}} @@ -151,3 +158,20 @@ func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint str } return grpcOpts, endpoint, nil } + +func logDirectPathMisconfig(endpoint string, creds *auth.Credentials, o *Options) { + + // Case 1: does not enable DirectPath + if !isDirectPathEnabled(endpoint, o) { + o.logger().Warn("DirectPath is disabled. To enable, please set the EnableDirectPath option along with the EnableDirectPathXds option.") + } else { + // Case 2: credential is not correctly set + if !isTokenProviderDirectPathCompatible(creds, o) { + o.logger().Warn("DirectPath is disabled. Please make sure the token source is fetched from GCE metadata server and the default service account is used.") + } + // Case 3: not running on GCE + if !compute.OnComputeEngine() { + o.logger().Warn("DirectPath is disabled. DirectPath is only available in a GCE environment.") + } + } +} diff --git a/vendor/cloud.google.com/go/auth/internal/transport/cba.go b/vendor/cloud.google.com/go/auth/internal/transport/cba.go index b1f0fcf93..14bca966e 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/cba.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/cba.go @@ -31,7 +31,6 @@ import ( "cloud.google.com/go/auth/internal" "cloud.google.com/go/auth/internal/transport/cert" "github.com/google/s2a-go" - "github.com/google/s2a-go/fallback" "google.golang.org/grpc/credentials" ) @@ -170,18 +169,9 @@ func GetGRPCTransportCredsAndEndpoint(opts *Options) (*GRPCTransportCredentials, return &GRPCTransportCredentials{defaultTransportCreds, config.endpoint, TransportTypeUnknown}, nil } - var fallbackOpts *s2a.FallbackOptions - // In case of S2A failure, fall back to the endpoint that would've been used without S2A. - if fallbackHandshake, err := fallback.DefaultFallbackClientHandshakeFunc(config.endpoint); err == nil { - fallbackOpts = &s2a.FallbackOptions{ - FallbackClientHandshakeFunc: fallbackHandshake, - } - } - s2aTransportCreds, err := s2a.NewClientCreds(&s2a.ClientOptions{ S2AAddress: s2aAddr, TransportCreds: transportCredsForS2A, - FallbackOpts: fallbackOpts, }) if err != nil { // Use default if we cannot initialize S2A client transport credentials. @@ -218,23 +208,9 @@ func GetHTTPTransportConfig(opts *Options) (cert.Provider, func(context.Context, return config.clientCertSource, nil, nil } - var fallbackOpts *s2a.FallbackOptions - // In case of S2A failure, fall back to the endpoint that would've been used without S2A. - if fallbackURL, err := url.Parse(config.endpoint); err == nil { - if fallbackDialer, fallbackServerAddr, err := fallback.DefaultFallbackDialerAndAddress(fallbackURL.Hostname()); err == nil { - fallbackOpts = &s2a.FallbackOptions{ - FallbackDialer: &s2a.FallbackDialer{ - Dialer: fallbackDialer, - ServerAddr: fallbackServerAddr, - }, - } - } - } - dialTLSContextFunc := s2a.NewS2ADialTLSContextFunc(&s2a.ClientOptions{ S2AAddress: s2aAddr, TransportCreds: transportCredsForS2A, - FallbackOpts: fallbackOpts, }) return nil, dialTLSContextFunc, nil } diff --git a/vendor/cloud.google.com/go/compute/metadata/CHANGES.md b/vendor/cloud.google.com/go/compute/metadata/CHANGES.md index bcfb5d816..1f848ce0b 100644 --- a/vendor/cloud.google.com/go/compute/metadata/CHANGES.md +++ b/vendor/cloud.google.com/go/compute/metadata/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.7.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.6.0...compute/metadata/v0.7.0) (2025-05-13) + + +### Features + +* **compute/metadata:** Allow canceling GCE detection ([#11786](https://github.com/googleapis/google-cloud-go/issues/11786)) ([78100fe](https://github.com/googleapis/google-cloud-go/commit/78100fe7e28cd30f1e10b47191ac3c9839663b64)) + ## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.2...compute/metadata/v0.6.0) (2024-12-13) diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go index 4c18a383a..322be8032 100644 --- a/vendor/cloud.google.com/go/compute/metadata/metadata.go +++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go @@ -117,80 +117,18 @@ var ( // NOTE: True returned from `OnGCE` does not guarantee that the metadata server // is accessible from this process and have all the metadata defined. func OnGCE() bool { - onGCEOnce.Do(initOnGCE) - return onGCE -} - -func initOnGCE() { - onGCE = testOnGCE() + return OnGCEWithContext(context.Background()) } -func testOnGCE() bool { - // The user explicitly said they're on GCE, so trust them. - if os.Getenv(metadataHostEnv) != "" { - return true - } - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - resc := make(chan bool, 2) - - // Try two strategies in parallel. - // See https://github.com/googleapis/google-cloud-go/issues/194 - go func() { - req, _ := http.NewRequest("GET", "http://"+metadataIP, nil) - req.Header.Set("User-Agent", userAgent) - res, err := newDefaultHTTPClient().Do(req.WithContext(ctx)) - if err != nil { - resc <- false - return - } - defer res.Body.Close() - resc <- res.Header.Get("Metadata-Flavor") == "Google" - }() - - go func() { - resolver := &net.Resolver{} - addrs, err := resolver.LookupHost(ctx, "metadata.google.internal.") - if err != nil || len(addrs) == 0 { - resc <- false - return - } - resc <- strsContains(addrs, metadataIP) - }() - - tryHarder := systemInfoSuggestsGCE() - if tryHarder { - res := <-resc - if res { - // The first strategy succeeded, so let's use it. - return true - } - // Wait for either the DNS or metadata server probe to - // contradict the other one and say we are running on - // GCE. Give it a lot of time to do so, since the system - // info already suggests we're running on a GCE BIOS. - timer := time.NewTimer(5 * time.Second) - defer timer.Stop() - select { - case res = <-resc: - return res - case <-timer.C: - // Too slow. Who knows what this system is. - return false - } - } - - // There's no hint from the system info that we're running on - // GCE, so use the first probe's result as truth, whether it's - // true or false. The goal here is to optimize for speed for - // users who are NOT running on GCE. We can't assume that - // either a DNS lookup or an HTTP request to a blackholed IP - // address is fast. Worst case this should return when the - // metaClient's Transport.ResponseHeaderTimeout or - // Transport.Dial.Timeout fires (in two seconds). - return <-resc +// OnGCEWithContext reports whether this process is running on Google Compute Platforms. +// This function's return value is memoized for better performance. +// NOTE: True returned from `OnGCEWithContext` does not guarantee that the metadata server +// is accessible from this process and have all the metadata defined. +func OnGCEWithContext(ctx context.Context) bool { + onGCEOnce.Do(func() { + onGCE = defaultClient.OnGCEWithContext(ctx) + }) + return onGCE } // Subscribe calls Client.SubscribeWithContext on the default client. @@ -450,6 +388,84 @@ func NewWithOptions(opts *Options) *Client { return &Client{hc: client, logger: logger} } +// NOTE: metadataRequestStrategy is assigned to a variable for test stubbing purposes. +var metadataRequestStrategy = func(ctx context.Context, httpClient *http.Client, resc chan bool) { + req, _ := http.NewRequest("GET", "http://"+metadataIP, nil) + req.Header.Set("User-Agent", userAgent) + res, err := httpClient.Do(req.WithContext(ctx)) + if err != nil { + resc <- false + return + } + defer res.Body.Close() + resc <- res.Header.Get("Metadata-Flavor") == "Google" +} + +// NOTE: dnsRequestStrategy is assigned to a variable for test stubbing purposes. +var dnsRequestStrategy = func(ctx context.Context, resc chan bool) { + resolver := &net.Resolver{} + addrs, err := resolver.LookupHost(ctx, "metadata.google.internal.") + if err != nil || len(addrs) == 0 { + resc <- false + return + } + resc <- strsContains(addrs, metadataIP) +} + +// OnGCEWithContext reports whether this process is running on Google Compute Platforms. +// NOTE: True returned from `OnGCEWithContext` does not guarantee that the metadata server +// is accessible from this process and have all the metadata defined. +func (c *Client) OnGCEWithContext(ctx context.Context) bool { + // The user explicitly said they're on GCE, so trust them. + if os.Getenv(metadataHostEnv) != "" { + return true + } + + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + resc := make(chan bool, 2) + + // Try two strategies in parallel. + // See https://github.com/googleapis/google-cloud-go/issues/194 + go metadataRequestStrategy(ctx, c.hc, resc) + go dnsRequestStrategy(ctx, resc) + + tryHarder := systemInfoSuggestsGCE() + if tryHarder { + res := <-resc + if res { + // The first strategy succeeded, so let's use it. + return true + } + + // Wait for either the DNS or metadata server probe to + // contradict the other one and say we are running on + // GCE. Give it a lot of time to do so, since the system + // info already suggests we're running on a GCE BIOS. + // Ensure cancellations from the calling context are respected. + waitContext, cancelWait := context.WithTimeout(ctx, 5*time.Second) + defer cancelWait() + select { + case res = <-resc: + return res + case <-waitContext.Done(): + // Too slow. Who knows what this system is. + return false + } + } + + // There's no hint from the system info that we're running on + // GCE, so use the first probe's result as truth, whether it's + // true or false. The goal here is to optimize for speed for + // users who are NOT running on GCE. We can't assume that + // either a DNS lookup or an HTTP request to a blackholed IP + // address is fast. Worst case this should return when the + // metaClient's Transport.ResponseHeaderTimeout or + // Transport.Dial.Timeout fires (in two seconds). + return <-resc +} + // getETag returns a value from the metadata service as well as the associated ETag. // This func is otherwise equivalent to Get. func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string, err error) { diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck.go b/vendor/cloud.google.com/go/compute/metadata/syscheck.go index e0704fa64..d57ae1b27 100644 --- a/vendor/cloud.google.com/go/compute/metadata/syscheck.go +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck.go @@ -20,7 +20,9 @@ package metadata // doing network requests) suggests that we're running on GCE. If this // returns true, testOnGCE tries a bit harder to reach its metadata // server. -func systemInfoSuggestsGCE() bool { +// +// NOTE: systemInfoSuggestsGCE is assigned to a varible for test stubbing purposes. +var systemInfoSuggestsGCE = func() bool { // We don't currently have checks for other GOOS return false } diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go b/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go index 74689acbb..17ba5a3a2 100644 --- a/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go @@ -21,8 +21,10 @@ import ( "strings" ) -func systemInfoSuggestsGCE() bool { +// NOTE: systemInfoSuggestsGCE is assigned to a varible for test stubbing purposes. +var systemInfoSuggestsGCE = func() bool { b, _ := os.ReadFile("/sys/class/dmi/id/product_name") + name := strings.TrimSpace(string(b)) return name == "Google" || name == "Google Compute Engine" } diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go b/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go index c0ce62787..f57a5b14e 100644 --- a/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go @@ -22,7 +22,8 @@ import ( "golang.org/x/sys/windows/registry" ) -func systemInfoSuggestsGCE() bool { +// NOTE: systemInfoSuggestsGCE is assigned to a varible for test stubbing purposes. +var systemInfoSuggestsGCE = func() bool { k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\HardwareConfig\Current`, registry.QUERY_VALUE) if err != nil { return false diff --git a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json index 9dfae7977..655773bf1 100644 --- a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json +++ b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json @@ -239,6 +239,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/apps/events/subscriptions/apiv1beta": { + "api_shortname": "workspaceevents", + "distribution_name": "cloud.google.com/go/apps/events/subscriptions/apiv1beta", + "description": "Google Workspace Events API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/apps/latest/events/subscriptions/apiv1beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/apps/meet/apiv2": { "api_shortname": "meet", "distribution_name": "cloud.google.com/go/apps/meet/apiv2", @@ -589,6 +599,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/bigquery/storage/apiv1beta": { + "api_shortname": "bigquerystorage", + "distribution_name": "cloud.google.com/go/bigquery/storage/apiv1beta", + "description": "BigQuery Storage API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/storage/apiv1beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/bigquery/storage/apiv1beta1": { "api_shortname": "bigquerystorage", "distribution_name": "cloud.google.com/go/bigquery/storage/apiv1beta1", @@ -609,6 +629,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/bigquery/v2/apiv2": { + "api_shortname": "bigquery", + "distribution_name": "cloud.google.com/go/bigquery/v2/apiv2", + "description": "BigQuery API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/v2/latest/apiv2", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/bigtable": { "api_shortname": "bigtable", "distribution_name": "cloud.google.com/go/bigtable", @@ -719,6 +749,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/chronicle/apiv1": { + "api_shortname": "chronicle", + "distribution_name": "cloud.google.com/go/chronicle/apiv1", + "description": "Chronicle API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/chronicle/latest/apiv1", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/cloudbuild/apiv1/v2": { "api_shortname": "cloudbuild", "distribution_name": "cloud.google.com/go/cloudbuild/apiv1/v2", @@ -849,6 +889,16 @@ "release_level": "stable", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/compute/apiv1beta": { + "api_shortname": "compute", + "distribution_name": "cloud.google.com/go/compute/apiv1beta", + "description": "Google Compute Engine API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/compute/latest/apiv1beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/compute/metadata": { "api_shortname": "compute-metadata", "distribution_name": "cloud.google.com/go/compute/metadata", @@ -959,6 +1009,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/dataform/apiv1": { + "api_shortname": "dataform", + "distribution_name": "cloud.google.com/go/dataform/apiv1", + "description": "Dataform API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/dataform/latest/apiv1", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/dataform/apiv1beta1": { "api_shortname": "dataform", "distribution_name": "cloud.google.com/go/dataform/apiv1beta1", @@ -1629,6 +1689,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/maintenance/api/apiv1beta": { + "api_shortname": "maintenance", + "distribution_name": "cloud.google.com/go/maintenance/api/apiv1beta", + "description": "Maintenance API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/maintenance/latest/api/apiv1beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/managedidentities/apiv1": { "api_shortname": "managedidentities", "distribution_name": "cloud.google.com/go/managedidentities/apiv1", @@ -1829,6 +1899,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/modelarmor/apiv1beta": { + "api_shortname": "modelarmor", + "distribution_name": "cloud.google.com/go/modelarmor/apiv1beta", + "description": "Model Armor API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/modelarmor/latest/apiv1beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/monitoring/apiv3/v2": { "api_shortname": "monitoring", "distribution_name": "cloud.google.com/go/monitoring/apiv3/v2", @@ -2169,6 +2249,16 @@ "release_level": "stable", "library_type": "GAPIC_MANUAL" }, + "cloud.google.com/go/pubsub/v2": { + "api_shortname": "pubsub", + "distribution_name": "cloud.google.com/go/pubsub/v2", + "description": "Cloud Pub/Sub API", + "language": "go", + "client_library_type": "manual", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/v2", + "release_level": "stable", + "library_type": "GAPIC_MANUAL" + }, "cloud.google.com/go/pubsub/v2/apiv1": { "api_shortname": "pubsub", "distribution_name": "cloud.google.com/go/pubsub/v2/apiv1", @@ -2752,7 +2842,7 @@ "cloud.google.com/go/spanner/admin/instance/apiv1": { "api_shortname": "spanner", "distribution_name": "cloud.google.com/go/spanner/admin/instance/apiv1", - "description": "Cloud Spanner Instance Admin API", + "description": "Cloud Spanner API", "language": "go", "client_library_type": "generated", "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/admin/instance/apiv1", @@ -2839,6 +2929,16 @@ "release_level": "stable", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/storagebatchoperations/apiv1": { + "api_shortname": "storagebatchoperations", + "distribution_name": "cloud.google.com/go/storagebatchoperations/apiv1", + "description": "Storage Batch Operations API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/storagebatchoperations/latest/apiv1", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/storageinsights/apiv1": { "api_shortname": "storageinsights", "distribution_name": "cloud.google.com/go/storageinsights/apiv1", @@ -2879,6 +2979,16 @@ "release_level": "stable", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/support/apiv2beta": { + "api_shortname": "cloudsupport", + "distribution_name": "cloud.google.com/go/support/apiv2beta", + "description": "Google Cloud Support API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/support/latest/apiv2beta", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/talent/apiv4": { "api_shortname": "jobs", "distribution_name": "cloud.google.com/go/talent/apiv4", diff --git a/vendor/cloud.google.com/go/storage/CHANGES.md b/vendor/cloud.google.com/go/storage/CHANGES.md index cc0452c6a..cbe212871 100644 --- a/vendor/cloud.google.com/go/storage/CHANGES.md +++ b/vendor/cloud.google.com/go/storage/CHANGES.md @@ -1,6 +1,70 @@ # Changes +## [1.56.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.55.0...storage/v1.56.0) (2025-07-24) + + +### Features + +* **storage/control:** Update BUILD configs to support rest transportation for all client ([116a33a](https://github.com/googleapis/google-cloud-go/commit/116a33ab13c9fac6f6830dded55c24d38504707b)) + + +### Bug Fixes + +* **storage:** Avoid integration test segfaults. ([#12419](https://github.com/googleapis/google-cloud-go/issues/12419)) ([a9dec07](https://github.com/googleapis/google-cloud-go/commit/a9dec0763f85f083cc1da451249caae7ad97d904)) +* **storage:** Current object generation takeover. ([#12383](https://github.com/googleapis/google-cloud-go/issues/12383)) ([9ca8e01](https://github.com/googleapis/google-cloud-go/commit/9ca8e015405a523bbe68cbff2defbdff3dac0a61)) +* **storage:** Fix MultiRangeDownloader deadlock ([#12548](https://github.com/googleapis/google-cloud-go/issues/12548)) ([2eb23bb](https://github.com/googleapis/google-cloud-go/commit/2eb23bb01ffe92c967e772ef66c846357fbf5419)) +* **storage:** Remove object length limit for unfinalized reads ([#12489](https://github.com/googleapis/google-cloud-go/issues/12489)) ([5566d7d](https://github.com/googleapis/google-cloud-go/commit/5566d7dd5cc83afce38821961c447f5945e48456)) + + +### Performance Improvements + +* **storage:** Zero copy for MultiRangeDownloader ([#12542](https://github.com/googleapis/google-cloud-go/issues/12542)) ([a5e6a68](https://github.com/googleapis/google-cloud-go/commit/a5e6a681164d5be62270cde16891685a9f03bb12)) + + +### Documentation + +* **storage/internal:** Fix broken link for message `CustomPlacementConfig` ([9614487](https://github.com/googleapis/google-cloud-go/commit/96144875e01bfc8a59c2671c6eae87233710cef7)) +* **storage:** Fix typo in storage/doc.go ([#12391](https://github.com/googleapis/google-cloud-go/issues/12391)) ([bf74408](https://github.com/googleapis/google-cloud-go/commit/bf744088f0ed23ea510b914c994e1754ca1fc7c4)) +* **storage:** Improve error inspection documentation ([#12301](https://github.com/googleapis/google-cloud-go/issues/12301)) ([420da1a](https://github.com/googleapis/google-cloud-go/commit/420da1a64ac4040c8b2e6d6f0d66e7633426ac25)) + +## [1.55.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.54.0...storage/v1.55.0) (2025-05-29) + + +### Features + +* **storage/control:** Add Client Libraries Storage IntelligenceConfig ([2aaada3](https://github.com/googleapis/google-cloud-go/commit/2aaada3fb7a9d3eaacec3351019e225c4038646b)) +* **storage/internal:** Add IpFilter to Bucket ([#12309](https://github.com/googleapis/google-cloud-go/issues/12309)) ([d8ae687](https://github.com/googleapis/google-cloud-go/commit/d8ae6874a54b48fce49968664f14db63c055c6e2)) +* **storage/internal:** Add Object.Retention message ([d8ae687](https://github.com/googleapis/google-cloud-go/commit/d8ae6874a54b48fce49968664f14db63c055c6e2)) + + +### Bug Fixes + +* **storage:** Add EnableNewAuthLibrary internalOption to HTTP newClient ([#12320](https://github.com/googleapis/google-cloud-go/issues/12320)) ([0036073](https://github.com/googleapis/google-cloud-go/commit/0036073affee5451894654a983fba6b2638433cb)) +* **storage:** Migrate oauth2/google usages to cloud.google.com/go/auth ([#11191](https://github.com/googleapis/google-cloud-go/issues/11191)) ([3a22349](https://github.com/googleapis/google-cloud-go/commit/3a22349c1ba6a192d70269f77e5804a9957aa572)) +* **storage:** Omit check on MultiRangeDownloader ([#12342](https://github.com/googleapis/google-cloud-go/issues/12342)) ([774621c](https://github.com/googleapis/google-cloud-go/commit/774621c5baa5110f57fe79d817143416bd671d1e)) +* **storage:** Retry url.Error and net.OpErrors when they wrap an io.EOF ([#12289](https://github.com/googleapis/google-cloud-go/issues/12289)) ([080f6b0](https://github.com/googleapis/google-cloud-go/commit/080f6b05c5e8bd5baaef71ed47f8d54c695f63d3)) + + +### Documentation + +* **storage/internal:** Add explicit Optional annotations to fields that have always been treated as optional ([d8ae687](https://github.com/googleapis/google-cloud-go/commit/d8ae6874a54b48fce49968664f14db63c055c6e2)) +* **storage/internal:** Add note that Bucket.project output format is always project number format ([d8ae687](https://github.com/googleapis/google-cloud-go/commit/d8ae6874a54b48fce49968664f14db63c055c6e2)) +* **storage/internal:** Add note that managedFolders are supported for GetIamPolicy and SetIamPolicy ([d8ae687](https://github.com/googleapis/google-cloud-go/commit/d8ae6874a54b48fce49968664f14db63c055c6e2)) + +## [1.54.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.53.0...storage/v1.54.0) (2025-05-12) + + +### Features + +* **storage:** Add experimental ZB API option ([#12214](https://github.com/googleapis/google-cloud-go/issues/12214)) ([f669982](https://github.com/googleapis/google-cloud-go/commit/f669982de2abf64759eccf5c38bd669488b9cf6a)) + + +### Bug Fixes + +* **storage:** Fix append writer hang ([#12201](https://github.com/googleapis/google-cloud-go/issues/12201)) ([7ce2a2a](https://github.com/googleapis/google-cloud-go/commit/7ce2a2ad3ae9deff28c73c1bcc2e7001770464eb)) +* **storage:** Retry unwrapped EOFs ([#12202](https://github.com/googleapis/google-cloud-go/issues/12202)) ([b2d42bd](https://github.com/googleapis/google-cloud-go/commit/b2d42bda6a398f3aa00030b6e99bbcb40f132ff7)) + ## [1.53.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.52.0...storage/v1.53.0) (2025-05-02) diff --git a/vendor/cloud.google.com/go/storage/TESTING.md b/vendor/cloud.google.com/go/storage/TESTING.md new file mode 100644 index 000000000..65871ab58 --- /dev/null +++ b/vendor/cloud.google.com/go/storage/TESTING.md @@ -0,0 +1,53 @@ +# Testing + +Package storage has unit, emulated integration tests, and integration tests +against the real GCS service. + +## Setup + +Assume that you're running from a directory which contains the `google-cloud-go` +git repository. + +```bash +git clone https://github.com/googleapis/google-cloud-go +git clone https://github.com/googleapis/storage-testbench # emulator +``` + +## Running unit tests + +```bash +go test ./google-cloud-go/storage -short +``` + +## Running emulated integration tests + +See +https://github.com/googleapis/storage-testbench?tab=readme-ov-file#how-to-use-this-testbench +for testbench setup instructions. After following those instructions, you should +have an emulator running an HTTP server on port 9000 and a gRPC server on port +8888. + +```bash +STORAGE_EMULATOR_HOST_GRPC="localhost:8888" STORAGE_EMULATOR_HOST="http://localhost:9000" go test ./google-cloud-go/storage -short -run="^Test(RetryConformance|.*Emulated)" +``` + +If you don't specify the `-run` filter, this will also run unit tests. + +## Running live service integration tests + +See the [general setup instructions](../CONTRIBUTING.md#local-setup) for more +details. The GCS integration tests require: + +- A project configured such that all bucket types can be created (e.g. with and + without UBLA, with and without HNS). A dedicated project which only stores + test data is recommended. +- A JSON key file for a service account with most GCS privileges in that + project. +- A VM in that project. + +Run with: + +```bash +GCLOUD_TESTS_GOLANG_PROJECT_ID="${PROJECT_ID?}" GCLOUD_TESTS_GOLANG_KEY="${KEYFILE?}" \ + go test ./google-cloud-go/storage -run="^Test.*Integration" +``` diff --git a/vendor/cloud.google.com/go/storage/bucket.go b/vendor/cloud.google.com/go/storage/bucket.go index c2934a8c4..60a5ffb5b 100644 --- a/vendor/cloud.google.com/go/storage/bucket.go +++ b/vendor/cloud.google.com/go/storage/bucket.go @@ -199,11 +199,11 @@ func (b *BucketHandle) SignedURL(object string, opts *SignedURLOptions) (string, newopts.GoogleAccessID = id } if newopts.SignBytes == nil && len(newopts.PrivateKey) == 0 { - if b.c.creds != nil && len(b.c.creds.JSON) > 0 { + if j, ok := b.c.credsJSON(); ok { var sa struct { PrivateKey string `json:"private_key"` } - err := json.Unmarshal(b.c.creds.JSON, &sa) + err := json.Unmarshal(j, &sa) if err == nil && sa.PrivateKey != "" { newopts.PrivateKey = []byte(sa.PrivateKey) } @@ -247,11 +247,11 @@ func (b *BucketHandle) GenerateSignedPostPolicyV4(object string, opts *PostPolic newopts.GoogleAccessID = id } if newopts.SignBytes == nil && newopts.SignRawBytes == nil && len(newopts.PrivateKey) == 0 { - if b.c.creds != nil && len(b.c.creds.JSON) > 0 { + if j, ok := b.c.credsJSON(); ok { var sa struct { PrivateKey string `json:"private_key"` } - err := json.Unmarshal(b.c.creds.JSON, &sa) + err := json.Unmarshal(j, &sa) if err == nil && sa.PrivateKey != "" { newopts.PrivateKey = []byte(sa.PrivateKey) } @@ -269,14 +269,14 @@ func (b *BucketHandle) GenerateSignedPostPolicyV4(object string, opts *PostPolic func (b *BucketHandle) detectDefaultGoogleAccessID() (string, error) { returnErr := errors.New("no credentials found on client and not on GCE (Google Compute Engine)") - if b.c.creds != nil && len(b.c.creds.JSON) > 0 { + if j, ok := b.c.credsJSON(); ok { var sa struct { ClientEmail string `json:"client_email"` SAImpersonationURL string `json:"service_account_impersonation_url"` CredType string `json:"type"` } - err := json.Unmarshal(b.c.creds.JSON, &sa) + err := json.Unmarshal(j, &sa) if err != nil { returnErr = err } else { @@ -322,7 +322,7 @@ func (b *BucketHandle) defaultSignBytesFunc(email string) func([]byte) ([]byte, opts := []option.ClientOption{option.WithHTTPClient(b.c.hc)} if b.c.creds != nil { - universeDomain, err := b.c.creds.GetUniverseDomain() + universeDomain, err := b.c.creds.UniverseDomain(ctx) if err != nil { return nil, err } diff --git a/vendor/cloud.google.com/go/storage/client.go b/vendor/cloud.google.com/go/storage/client.go index 4c17b602e..3e4aceaeb 100644 --- a/vendor/cloud.google.com/go/storage/client.go +++ b/vendor/cloud.google.com/go/storage/client.go @@ -16,7 +16,6 @@ package storage import ( "context" - "io" "time" "cloud.google.com/go/iam/apiv1/iampb" @@ -88,7 +87,7 @@ type storageClient interface { RewriteObject(ctx context.Context, req *rewriteObjectRequest, opts ...storageOption) (*rewriteObjectResponse, error) NewRangeReader(ctx context.Context, params *newRangeReaderParams, opts ...storageOption) (*Reader, error) - OpenWriter(params *openWriterParams, opts ...storageOption) (*io.PipeWriter, error) + OpenWriter(params *openWriterParams, opts ...storageOption) (internalWriter, error) // IAM methods. @@ -290,11 +289,6 @@ type openWriterParams struct { setObj func(*ObjectAttrs) // setSize callback for updated the persisted size in Writer.obj. setSize func(int64) - // setFlush callback for providing a Flush function implementation - see `Writer.Flush`. - // Required. - setFlush func(func() (int64, error)) - // setPipeWriter callback for reseting `Writer.pw` if needed. - setPipeWriter func(*io.PipeWriter) // setTakeoverOffset callback for returning offset to start writing from to Writer. setTakeoverOffset func(int64) } diff --git a/vendor/cloud.google.com/go/storage/doc.go b/vendor/cloud.google.com/go/storage/doc.go index ec801fb54..6a64c6c03 100644 --- a/vendor/cloud.google.com/go/storage/doc.go +++ b/vendor/cloud.google.com/go/storage/doc.go @@ -274,15 +274,43 @@ To generate the signature, you must have: # Errors -Errors returned by this client are often of the type [googleapi.Error]. -These errors can be introspected for more information by using [errors.As] -with the richer [googleapi.Error] type. For example: +Errors returned by this client are often of the type [github.com/googleapis/gax-go/v2/apierror]. +The [apierror.APIError] type can wrap a [google.golang.org/grpc/status.Status] +if gRPC was used, or a [google.golang.org/api/googleapi.Error] if HTTP/REST was used. +You might also encounter [googleapi.Error] directly from HTTP operations. +These types of errors can be inspected for more information by using [errors.As] +to access the specific underlying error types and retrieve detailed information, +including HTTP or gRPC status codes. For example: + + // APIErrors often wrap a googleapi.Error (for JSON and XML calls) or a status.Status (for gRPC calls) + var ae *apierror.APIError + if ok := errors.As(err, &ae); ok { + // ae.HTTPCode() is the HTTP status code. + // ae.GRPCStatus().Code() is the gRPC status code + log.Printf("APIError: HTTPCode: %d, GRPCStatusCode: %s", ae.HTTPCode(), ae.GRPCStatus().Code()) + + if ae.GRPCStatus().Code() == codes.Unavailable { + // ... handle gRPC unavailable ... + } + } + // This allows a user to get more information directly from googleapi.Errors (for JSON/XML calls) var e *googleapi.Error if ok := errors.As(err, &e); ok { - if e.Code == 409 { ... } + // e.Code is the HTTP status code. + // e.Message is the error message. + // e.Body is the raw response body. + // e.Header contains the HTTP response headers. + log.Printf("HTTP Code: %d, Message: %s", e.Code, e.Message) + + if e.Code == 409 { + // ... handle conflict ... + } } +This library may also return other errors that are not wrapped as [apierror.APIError]. For +example, errors with authentication may return [cloud.google.com/go/auth.Error]. + # Retrying failed requests Methods in this package may retry calls that fail with transient errors. @@ -351,7 +379,7 @@ To create a client which will use gRPC, use the alternate constructor: // Use client as usual. One major advantage of the gRPC API is that it can use [Direct Connectivity], -enabling requests to skip some proxy steps and reducing responce latency. +enabling requests to skip some proxy steps and reducing response latency. Requirements to use Direct Connectivity include: - Your application must be running inside Google Cloud. diff --git a/vendor/cloud.google.com/go/storage/emulator_test.sh b/vendor/cloud.google.com/go/storage/emulator_test.sh index cf26432e0..4d8da2eeb 100644 --- a/vendor/cloud.google.com/go/storage/emulator_test.sh +++ b/vendor/cloud.google.com/go/storage/emulator_test.sh @@ -89,4 +89,5 @@ then fi # Run tests -go test -v -timeout 15m ./ ./dataflux -run="^Test(RetryConformance|.*Emulated)$" -short -race 2>&1 | tee -a sponge_log.log + +go test -v -timeout 17m ./ ./dataflux -run="^Test(RetryConformance|.*Emulated)$" -short -race 2>&1 | tee -a sponge_log.log diff --git a/vendor/cloud.google.com/go/storage/experimental/experimental.go b/vendor/cloud.google.com/go/storage/experimental/experimental.go index 5bcc59ad2..a178f9ebb 100644 --- a/vendor/cloud.google.com/go/storage/experimental/experimental.go +++ b/vendor/cloud.google.com/go/storage/experimental/experimental.go @@ -77,7 +77,8 @@ type ReadStallTimeoutConfig struct { // WithGRPCBidiReads provides an [option.ClientOption] that may be passed to // [cloud.google.com/go/storage.NewGRPCClient]. // It enables the client to use bi-directional gRPC APIs for downloads rather than the -// server streaming API. In particular, it allows users to use the [storage.MultiRangeDownloader] +// server streaming API. In particular, it allows users to use the +// [cloud.google.com/go/storage.MultiRangeDownloader] // surface, which requires bi-directional streaming. // // The bi-directional API is in private preview; please contact your account manager if @@ -85,3 +86,16 @@ type ReadStallTimeoutConfig struct { func WithGRPCBidiReads() option.ClientOption { return internal.WithGRPCBidiReads.(func() option.ClientOption)() } + +// WithZonalBucketAPIs provides an [option.ClientOption] that may be passed to +// [cloud.google.com/go/storage.NewGRPCClient]. +// It enables the client to use bi-directional gRPC APIs for downloads rather than the +// server streaming API (same as [WithGRPCBidiReads]) as well as appendable +// object semantics for uploads. By setting this option, both upload and download +// paths will use zonal bucket compatible APIs by default. +// +// Zonal buckets and rapid storage is in private preview; please contact your +// account manager if interested. +func WithZonalBucketAPIs() option.ClientOption { + return internal.WithZonalBucketAPIs.(func() option.ClientOption)() +} diff --git a/vendor/cloud.google.com/go/storage/grpc_client.go b/vendor/cloud.google.com/go/storage/grpc_client.go index 2b0a4b4f9..19c969f73 100644 --- a/vendor/cloud.google.com/go/storage/grpc_client.go +++ b/vendor/cloud.google.com/go/storage/grpc_client.go @@ -64,6 +64,10 @@ const ( // // This is only used for the gRPC API. msgEntityNotSupported = "The gRPC API currently does not support ACL entities using project ID, use project numbers instead" + + // Default value for Read ID on BidiReadObject streams. Used for NewRangeReader + // which only does a single read per stream. + defaultReadID = 1 ) // defaultGRPCOptions returns a set of the default client options @@ -132,7 +136,7 @@ func enableClientMetrics(ctx context.Context, s *settings, config storageConfig) // newGRPCStorageClient initializes a new storageClient that uses the gRPC // Storage API. -func newGRPCStorageClient(ctx context.Context, opts ...storageOption) (storageClient, error) { +func newGRPCStorageClient(ctx context.Context, opts ...storageOption) (*grpcStorageClient, error) { s := initSettings(opts...) s.clientOption = append(defaultGRPCOptions(), s.clientOption...) // Disable all gax-level retries in favor of retry logic in the veneer client. @@ -452,6 +456,9 @@ func (c *grpcStorageClient) ListObjects(ctx context.Context, bucket string, q *Q ctx = setUserProjectMetadata(ctx, s.userProject) } fetch := func(pageSize int, pageToken string) (token string, err error) { + // Add trace span around List API call within the fetch. + ctx, _ = startSpan(ctx, "grpcStorageClient.ObjectsListCall") + defer func() { endSpan(ctx, err) }() var objects []*storagepb.Object var gitr *gapic.ObjectIterator err = run(it.ctx, func(ctx context.Context) error { @@ -1062,6 +1069,10 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.grpcStorageClient.NewMultiRangeDownloader") defer func() { trace.EndSpan(ctx, err) }() s := callSettings(c.settings, opts...) + // Force the use of the custom codec to enable zero-copy reads. + s.gax = append(s.gax, gax.WithGRPCOptions( + grpc.ForceCodecV2(bytesCodecV2{}), + )) if s.userProject != "" { ctx = setUserProjectMetadata(ctx, s.userProject) @@ -1101,7 +1112,7 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params } } var stream storagepb.Storage_BidiReadObjectClient - var resp *storagepb.BidiReadObjectResponse + var decoder *readResponseDecoder cc, cancel := context.WithCancel(ctx) err = run(cc, func(ctx context.Context) error { stream, err = c.raw.BidiReadObject(ctx, s.gax...) @@ -1126,11 +1137,19 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params if err != nil { return err } - resp, err = stream.Recv() + // Use RecvMsg to get the raw buffer slice instead of Recv(). + databufs := mem.BufferSlice{} + err = stream.RecvMsg(&databufs) if err != nil { return err } - return nil + + // Use the custom decoder to parse the raw buffer without copying object data. + decoder = &readResponseDecoder{ + databufs: databufs, + } + err = decoder.readFullObjectResponse() + return err }, s.retry, s.idempotent) if err != nil { // Close the stream context we just created to ensure we don't leak @@ -1138,7 +1157,7 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params cancel() return nil, nil, err } - return &bidiReadStreamResponse{stream: stream, response: resp}, cancel, nil + return &bidiReadStreamResponse{stream: stream, decoder: decoder}, cancel, nil } // For the first time open stream without adding any range. @@ -1149,10 +1168,8 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params // The first message was Recv'd on stream open, use it to populate the // object metadata. - msg := resp.response + msg := resp.decoder.msg obj := msg.GetMetadata() - // This is the size of the entire object, even if only a range was requested. - size := obj.GetSize() mrd := &gRPCBidiReader{ stream: resp.stream, @@ -1238,7 +1255,6 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params // receives ranges responses on the stream and executes the callback. receiver := func() { - var resp *storagepb.BidiReadObjectResponse var err error for { select { @@ -1252,59 +1268,80 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params default: // This function reads the data sent for a particular range request and has a callback // to indicate that output buffer is filled. - resp, err = mrd.stream.Recv() - if resp.GetReadHandle().GetHandle() != nil { - mrd.readHandle = resp.GetReadHandle().GetHandle() - } + databufs := mem.BufferSlice{} + err = mrd.stream.RecvMsg(&databufs) if err == io.EOF { err = nil - } - if err != nil { - // cancel stream and reopen the stream again. - // Incase again an error is thrown close the streamManager goroutine. + } else { + // Cancel stream and reopen the stream again. + // In case again an error is thrown, close the streamManager goroutine. + // TODO: special handling for not found error. mrd.retrier(err, "receiver") } if err == nil { + // Use the custom decoder to parse the message. + decoder := &readResponseDecoder{databufs: databufs} + if err := decoder.readFullObjectResponse(); err != nil { + mrd.retrier(err, "receiver") + continue // Move to next iteration after retry + } + msg := decoder.msg + + if msg.GetReadHandle().GetHandle() != nil { + mrd.readHandle = msg.GetReadHandle().GetHandle() + } + mrd.mu.Lock() if len(mrd.activeRanges) == 0 && mrd.numActiveRanges == 0 { + mrd.mu.Unlock() mrd.closeReceiver <- true mrd.closeSender <- true return } mrd.mu.Unlock() - arr := resp.GetObjectDataRanges() - for _, val := range arr { + for _, val := range msg.GetObjectDataRanges() { id := val.GetReadRange().GetReadId() - mrd.mu.Lock() - _, ok := mrd.activeRanges[id] - if !ok { - // it's ok to ignore responses for read_id not in map as user would have been notified by callback. - continue - } - _, err = mrd.activeRanges[id].writer.Write(val.GetChecksummedData().GetContent()) - if err != nil { - mrd.activeRanges[id].callback(mrd.activeRanges[id].offset, mrd.activeRanges[id].totalBytesWritten, err) - mrd.numActiveRanges-- - delete(mrd.activeRanges, id) - } else { - mrd.activeRanges[id] = mrdRange{ - readID: mrd.activeRanges[id].readID, - writer: mrd.activeRanges[id].writer, - offset: mrd.activeRanges[id].offset, - limit: mrd.activeRanges[id].limit, - currentBytesWritten: mrd.activeRanges[id].currentBytesWritten + int64(len(val.GetChecksummedData().GetContent())), - totalBytesWritten: mrd.activeRanges[id].totalBytesWritten + int64(len(val.GetChecksummedData().GetContent())), - callback: mrd.activeRanges[id].callback, + func() { + mrd.mu.Lock() + defer mrd.mu.Unlock() + currRange, ok := mrd.activeRanges[id] + if !ok { + // it's ok to ignore responses for read_id not in map as user would have been notified by callback. + return } - } - if val.GetRangeEnd() { - mrd.activeRanges[id].callback(mrd.activeRanges[id].offset, mrd.activeRanges[id].totalBytesWritten, nil) - mrd.numActiveRanges-- - delete(mrd.activeRanges, id) - } - mrd.mu.Unlock() + + // The decoder holds the object content. writeToAndUpdateCRC writes + // it to the user's buffer without an intermediate copy. + written, _, err := decoder.writeToAndUpdateCRC(currRange.writer, id, func(b []byte) { + // crc update logic can be added here if needed + }) + + if err != nil { + currRange.callback(currRange.offset, currRange.totalBytesWritten, err) + mrd.numActiveRanges-- + delete(mrd.activeRanges, id) + } else { + currRange = mrdRange{ + readID: currRange.readID, + writer: currRange.writer, + offset: currRange.offset, + limit: currRange.limit, + currentBytesWritten: currRange.currentBytesWritten + written, + totalBytesWritten: currRange.totalBytesWritten + written, + callback: currRange.callback, + } + mrd.activeRanges[id] = currRange + } + if val.GetRangeEnd() { + currRange.callback(currRange.offset, currRange.totalBytesWritten, nil) + mrd.numActiveRanges-- + delete(mrd.activeRanges, id) + } + }() } + // Free the buffers once the message has been processed. + decoder.databufs.Free() } } } @@ -1350,16 +1387,12 @@ func (c *grpcStorageClient) NewMultiRangeDownloader(ctx context.Context, params mrd.mu.Unlock() } - mrd.mu.Lock() - mrd.objectSize = size - mrd.mu.Unlock() - go sender() go receiver() return &MultiRangeDownloader{ Attrs: ReaderObjectAttrs{ - Size: size, + Size: obj.GetSize(), // this is the size of the entire object, even if only a range was requested. ContentType: obj.GetContentType(), ContentEncoding: obj.GetContentEncoding(), CacheControl: obj.GetCacheControl(), @@ -1380,7 +1413,6 @@ type gRPCBidiReader struct { readIDGenerator *readIDGenerator reopen func(ReadHandle) (*bidiReadStreamResponse, context.CancelFunc, error) readSpec *storagepb.BidiReadObjectSpec - objectSize int64 // always use the mutex when accessing this variable closeReceiver chan bool closeSender chan bool senderRetry chan bool @@ -1442,23 +1474,53 @@ func (mrd *gRPCBidiReader) reopenStream(failSpec []mrdRange) error { } mrd.stream = res.stream mrd.cancel = cancel - mrd.readHandle = res.response.GetReadHandle().GetHandle() + msg := res.decoder.msg + if msg.GetReadHandle().GetHandle() != nil { + mrd.readHandle = msg.GetReadHandle().GetHandle() + } + + // Process any data ranges that came back in the initial response. + // This prevents data loss from the first message on the new stream. + for _, val := range msg.GetObjectDataRanges() { + id := val.GetReadRange().GetReadId() + mrd.mu.Lock() + activeRange, ok := mrd.activeRanges[id] + if !ok { + mrd.mu.Unlock() + continue + } + + // Use the decoder's zero-copy write method. + written, _, writeErr := res.decoder.writeToAndUpdateCRC(activeRange.writer, id, nil) + if writeErr != nil { + activeRange.callback(activeRange.offset, activeRange.totalBytesWritten, writeErr) + mrd.numActiveRanges-- + delete(mrd.activeRanges, id) + } else { + activeRange.currentBytesWritten += written + activeRange.totalBytesWritten += written + mrd.activeRanges[id] = activeRange + } + + if val.GetRangeEnd() { + activeRange.callback(activeRange.offset, activeRange.totalBytesWritten, nil) + mrd.numActiveRanges-- + delete(mrd.activeRanges, id) + } + mrd.mu.Unlock() + } + // Once all data in the initial response has been read out, free buffers. + res.decoder.databufs.Free() if failSpec != nil { mrd.rangesToRead <- failSpec } return nil } -// Add will add current range to stream. +// add will add current range to stream. The size of the range is not validated +// by add; if the client requests more bytes than are available in the object +// the server will return an error. func (mrd *gRPCBidiReader) add(output io.Writer, offset, limit int64, callback func(int64, int64, error)) { - mrd.mu.Lock() - objectSize := mrd.objectSize - mrd.mu.Unlock() - - if offset > objectSize { - callback(offset, 0, fmt.Errorf("storage: offset should not be larger than the size of object (%v)", objectSize)) - return - } if limit < 0 { callback(offset, 0, errors.New("storage: cannot add range because the limit cannot be negative")) return @@ -1469,8 +1531,8 @@ func (mrd *gRPCBidiReader) add(output io.Writer, offset, limit int64, callback f spec := mrdRange{readID: id, writer: output, offset: offset, limit: limit, currentBytesWritten: 0, totalBytesWritten: 0, callback: callback} mrd.mu.Lock() mrd.numActiveRanges++ - mrd.rangesToRead <- []mrdRange{spec} mrd.mu.Unlock() + mrd.rangesToRead <- []mrdRange{spec} } else { callback(offset, 0, errors.New("storage: cannot add range because the stream is closed")) } @@ -1582,7 +1644,7 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange // BidiReadObject can take multiple ranges, but we just request one in this case. readRange := &storagepb.ReadRange{ ReadOffset: params.offset + seen, - ReadId: 1, + ReadId: defaultReadID, } // Only set a ReadLength if length is greater than zero, because <= 0 means @@ -1657,9 +1719,20 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange msg := res.decoder.msg obj := msg.GetMetadata() handle := ReadHandle(msg.GetReadHandle().GetHandle()) + // This is the size of the entire object, even if only a range was requested. + // Object size can be out of date in the case of unfinalized objects. size := obj.GetSize() + finalized := obj.GetFinalizeTime() != nil + negativeOffset := params.offset < 0 + if !finalized && negativeOffset { + // Fix the offset and length of a negative-offset read at time of first + // response to ensure data integrity. + params.offset = obj.Size + params.offset + params.length = obj.Size - params.offset + } + // Only support checksums when reading an entire object, not a range. var ( wantCRC uint32 @@ -1676,6 +1749,11 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange if params.offset < 0 { startOffset = size + params.offset } + // If caller has specified a negative start offset that's larger than the + // reported size, start at the beginning of the object. + if startOffset < 0 { + startOffset = 0 + } // The remaining bytes are the lesser of the requested range and all bytes // after params.offset. @@ -1707,15 +1785,18 @@ func (c *grpcStorageClient) NewRangeReader(ctx context.Context, params *newRange cancel: cancel, size: size, // Preserve the decoder to read out object data when Read/WriteTo is called. - currMsg: res.decoder, - settings: s, - zeroRange: params.length == 0, - wantCRC: wantCRC, - checkCRC: checkCRC, + currMsg: res.decoder, + settings: s, + zeroRange: params.length == 0, + wantCRC: wantCRC, + checkCRC: checkCRC, + finalized: finalized, + negativeOffset: negativeOffset, }, - checkCRC: checkCRC, - handle: &handle, - remain: remain, + checkCRC: checkCRC, + handle: &handle, + remain: remain, + unfinalized: !finalized, } // For a zero-length request, explicitly close the stream and set remaining @@ -1847,23 +1928,25 @@ type readStreamResponse struct { } type bidiReadStreamResponse struct { - stream storagepb.Storage_BidiReadObjectClient - response *storagepb.BidiReadObjectResponse + stream storagepb.Storage_BidiReadObjectClient + decoder *readResponseDecoder } // gRPCReader is used by storage.Reader if the experimental option WithGRPCBidiReads is passed. type gRPCReader struct { - seen, size int64 - zeroRange bool - stream storagepb.Storage_BidiReadObjectClient - reopen func(seen int64) (*readStreamResponse, context.CancelFunc, error) - leftovers []byte - currMsg *readResponseDecoder // decoder for the current message - cancel context.CancelFunc - settings *settings - checkCRC bool // should we check the CRC? - wantCRC uint32 // the CRC32c value the server sent in the header - gotCRC uint32 // running crc + seen, size int64 + zeroRange bool + finalized bool // if we are reading from a finalized object; in this case, remain and size may be inaccurate + negativeOffset bool + stream storagepb.Storage_BidiReadObjectClient + reopen func(seen int64) (*readStreamResponse, context.CancelFunc, error) + leftovers []byte + currMsg *readResponseDecoder // decoder for the current message + cancel context.CancelFunc + settings *settings + checkCRC bool // should we check the CRC? + wantCRC uint32 // the CRC32c value the server sent in the header + gotCRC uint32 // running crc } // Update the running CRC with the data in the slice, if CRC checking was enabled. @@ -1885,7 +1968,7 @@ func (r *gRPCReader) runCRCCheck() error { func (r *gRPCReader) Read(p []byte) (int, error) { // The entire object has been read by this reader, check the checksum if // necessary and return EOF. - if r.size == r.seen || r.zeroRange { + if (r.finalized || r.negativeOffset) && r.size == r.seen || r.zeroRange { if err := r.runCRCCheck(); err != nil { return 0, err } @@ -1900,39 +1983,30 @@ func (r *gRPCReader) Read(p []byte) (int, error) { return 0, fmt.Errorf("storage: reader has been closed") } - var n int - - // If there is data remaining in the current message, return what was - // available to conform to the Reader - // interface: https://pkg.go.dev/io#Reader. - if !r.currMsg.done { - n = r.currMsg.readAndUpdateCRC(p, func(b []byte) { - r.updateCRC(b) - }) - r.seen += int64(n) - return n, nil - } + for { + // If there is data remaining in the current message, try to read from it. + if r.currMsg != nil && !r.currMsg.done { + n, found := r.currMsg.readAndUpdateCRC(p, 1, func(b []byte) { + r.updateCRC(b) + }) + + // If data for our readID was found, we can update `seen` and return. + if found { + r.seen += int64(n) + return n, nil + } + // If not found, this message is exhausted for our purposes. + // Fall through to recv() to get a new one. + } - // Attempt to Recv the next message on the stream. - // This will update r.currMsg with the decoder for the new message. - err := r.recv() - if err != nil { - return 0, err + // Get the next message from the stream. + err := r.recv() + if err != nil { + // This correctly handles io.EOF, context canceled, and other terminal errors. + return 0, err + } + // The loop will now restart and try to read from the new r.currMsg. } - - // TODO: Determine if we need to capture incremental CRC32C for this - // chunk. The Object CRC32C checksum is captured when directed to read - // the entire Object. If directed to read a range, we may need to - // calculate the range's checksum for verification if the checksum is - // present in the response here. - // TODO: Figure out if we need to support decompressive transcoding - // https://cloud.google.com/storage/docs/transcoding. - - n = r.currMsg.readAndUpdateCRC(p, func(b []byte) { - r.updateCRC(b) - }) - r.seen += int64(n) - return n, nil } // WriteTo writes all the data requested by the Reader into w, implementing @@ -1940,7 +2014,7 @@ func (r *gRPCReader) Read(p []byte) (int, error) { func (r *gRPCReader) WriteTo(w io.Writer) (int64, error) { // The entire object has been read by this reader, check the checksum if // necessary and return nil. - if r.size == r.seen || r.zeroRange { + if (r.finalized || r.negativeOffset) && r.size == r.seen || r.zeroRange { if err := r.runCRCCheck(); err != nil { return 0, err } @@ -1960,47 +2034,37 @@ func (r *gRPCReader) WriteTo(w io.Writer) (int64, error) { // Write any already received message to the stream. There will be some leftovers from the // original NewRangeReader call. - if r.currMsg != nil && !r.currMsg.done { - written, err := r.currMsg.writeToAndUpdateCRC(w, func(b []byte) { - r.updateCRC(b) - }) - r.seen += int64(written) - r.currMsg = nil - if err != nil { - return r.seen - alreadySeen, err + for { + // Write any data from the current message buffer. + if r.currMsg != nil && !r.currMsg.done { + written, _, err := r.currMsg.writeToAndUpdateCRC(w, defaultReadID, func(b []byte) { + r.updateCRC(b) + }) + r.seen += written + if err != nil { + return r.seen - alreadySeen, err + } + // If no data was found, we still need to fetch the next message. + // If data was found, we also need the next message. So we always fall through. } - } - // Loop and receive additional messages until the entire data is written. - for { // Attempt to receive the next message on the stream. - // Will terminate with io.EOF once data has all come through. - // recv() handles stream reopening and retry logic so no need for retries here. err := r.recv() if err != nil { if err == io.EOF { - // We are done; check the checksum if necessary and return. - err = r.runCRCCheck() + // We are done; exit the loop. + break } return r.seen - alreadySeen, err } - - // TODO: Determine if we need to capture incremental CRC32C for this - // chunk. The Object CRC32C checksum is captured when directed to read - // the entire Object. If directed to read a range, we may need to - // calculate the range's checksum for verification if the checksum is - // present in the response here. - // TODO: Figure out if we need to support decompressive transcoding - // https://cloud.google.com/storage/docs/transcoding. - written, err := r.currMsg.writeToAndUpdateCRC(w, func(b []byte) { - r.updateCRC(b) - }) - r.seen += int64(written) - if err != nil { - return r.seen - alreadySeen, err - } + // Continue loop to process the new message. } - + // Propagate any checksum error. + var finalErr error + if err := r.runCRCCheck(); err != nil { + finalErr = err + } + return r.seen - alreadySeen, finalErr } // Close cancels the read stream's context in order for it to be closed and @@ -2009,6 +2073,7 @@ func (r *gRPCReader) Close() error { if r.cancel != nil { r.cancel() } + r.currMsg = nil return nil } @@ -2070,7 +2135,7 @@ type readResponseDecoder struct { currOff uint64 // offset in the current buffer // Processed data msg *storagepb.BidiReadObjectResponse // processed response message with all fields other than object data populated - dataOffsets bufferSliceOffsets // offsets of the object data in the message. + dataOffsets map[int64]bufferSliceOffsets // Map ReadId to the offsets of the object data for that ID in the message. done bool // true if the data has been completely read. } @@ -2156,69 +2221,95 @@ func (d *readResponseDecoder) advanceOffset(n uint64) error { // This copies object data from the message into the buffer and returns the number of // bytes copied. The data offsets are incremented in the message. The updateCRC // function is called on the copied bytes. -func (d *readResponseDecoder) readAndUpdateCRC(p []byte, updateCRC func([]byte)) int { - // For a completely empty message, just return 0 +func (d *readResponseDecoder) readAndUpdateCRC(p []byte, readID int64, updateCRC func([]byte)) (n int, found bool) { + // For a completely empty message, just return 0. if len(d.databufs) == 0 { - return 0 + return 0, false + } + + // Look up the specific offsets for the requested readID. + offsets, ok := d.dataOffsets[readID] + if !ok { + // If the message contains no data for this ID, return 0 bytes read. + return 0, false } - databuf := d.databufs[d.dataOffsets.currBuf] - startOff := d.dataOffsets.currOff + + databuf := d.databufs[offsets.currBuf] + startOff := offsets.currOff var b []byte - if d.dataOffsets.currBuf == d.dataOffsets.endBuf { - b = databuf.ReadOnlyData()[startOff:d.dataOffsets.endOff] + if offsets.currBuf == offsets.endBuf { + b = databuf.ReadOnlyData()[startOff:offsets.endOff] } else { b = databuf.ReadOnlyData()[startOff:] } - n := copy(p, b) - updateCRC(b[:n]) - d.dataOffsets.currOff += uint64(n) + n = copy(p, b) + if updateCRC != nil { + updateCRC(b[:n]) + } + offsets.currOff += uint64(n) - // We've read all the data from this message. Free the underlying buffers. - if d.dataOffsets.currBuf == d.dataOffsets.endBuf && d.dataOffsets.currOff == d.dataOffsets.endOff { - d.done = true - d.databufs.Free() + // We've read all the data for this specific range from this message. + if offsets.currBuf == offsets.endBuf && offsets.currOff == offsets.endOff { + d.done = true // Mark as done for this read, though the overall message might have more data. } - // We are at the end of the current buffer - if d.dataOffsets.currBuf != d.dataOffsets.endBuf && d.dataOffsets.currOff == uint64(databuf.Len()) { - d.dataOffsets.currOff = 0 - d.dataOffsets.currBuf++ + // We are at the end of the current buffer for this range. + if offsets.currBuf != offsets.endBuf && offsets.currOff == uint64(databuf.Len()) { + offsets.currOff = 0 + offsets.currBuf++ } - return n + + // Update the map with the new offsets. + d.dataOffsets[readID] = offsets + + return n, true } -func (d *readResponseDecoder) writeToAndUpdateCRC(w io.Writer, updateCRC func([]byte)) (int64, error) { +func (d *readResponseDecoder) writeToAndUpdateCRC(w io.Writer, readID int64, updateCRC func([]byte)) (totalWritten int64, found bool, err error) { // For a completely empty message, just return 0 if len(d.databufs) == 0 { - return 0, nil + return 0, false, nil } - var written int64 - for !d.done { - databuf := d.databufs[d.dataOffsets.currBuf] - startOff := d.dataOffsets.currOff - var b []byte - if d.dataOffsets.currBuf == d.dataOffsets.endBuf { - b = databuf.ReadOnlyData()[startOff:d.dataOffsets.endOff] - } else { - b = databuf.ReadOnlyData()[startOff:] + // Look up the specific offsets for the requested readID. + offsets, ok := d.dataOffsets[readID] + if !ok { + // It's normal for a message to not contain data for every active range, + // so we return 0 bytes written and no error. + return 0, false, nil + } + + // Loop from the current buffer to the ending buffer for this specific data range. + for i := offsets.currBuf; i <= offsets.endBuf; i++ { + databuf := d.databufs[i] + + // Determine the start and end of the data slice for the current buffer. + start := offsets.currOff + end := uint64(databuf.Len()) + if i == offsets.endBuf { + end = offsets.endOff } - var n int - // Write all remaining data from the current buffer - n, err := w.Write(b) - written += int64(n) - updateCRC(b) - if err != nil { - return written, err + + // It's possible for a buffer to be empty in some edge cases. + if start >= end { + continue } - d.dataOffsets.currOff = 0 - // We've read all the data from this message. - if d.dataOffsets.currBuf == d.dataOffsets.endBuf { - d.done = true - d.databufs.Free() - } else { - d.dataOffsets.currBuf++ + + dataSlice := databuf.ReadOnlyData()[start:end] + + // Write the data slice to the user's writer. + n, err := w.Write(dataSlice) + totalWritten += int64(n) + offsets.currOff = 0 // moving to the next buffer, currOff resets to zero. + if updateCRC != nil { + updateCRC(dataSlice[:n]) + } + if err != nil { + // Return immediately on a write error. + return totalWritten, true, err } } - return written, nil + d.done = true + + return totalWritten, true, nil } // Consume the next available tag in the input data and return the field number and type. @@ -2361,6 +2452,8 @@ func (d *readResponseDecoder) consumeBytesCopy() ([]byte, error) { // Unmarshal that does that, this function can be dropped. func (d *readResponseDecoder) readFullObjectResponse() error { msg := &storagepb.BidiReadObjectResponse{} + // Initialize the new map. + d.dataOffsets = make(map[int64]bufferSliceOffsets) // Loop over the entire message, extracting fields as we go. This does not // handle field concatenation, in which the contents of a single field @@ -2382,7 +2475,13 @@ func (d *readResponseDecoder) readFullObjectResponse() error { case fieldNum == objectRangeDataField && fieldType == protowire.BytesType: // The object data field was found. Initialize the data ranges assuming // exactly one range in the message. - msg.ObjectDataRanges = []*storagepb.ObjectRangeData{{ChecksummedData: &storagepb.ChecksummedData{}, ReadRange: &storagepb.ReadRange{}}} + // Create a new ObjectRangeData for each instance of this repeated field. + currentRange := &storagepb.ObjectRangeData{ChecksummedData: &storagepb.ChecksummedData{}, ReadRange: &storagepb.ReadRange{}} + msg.ObjectDataRanges = append(msg.ObjectDataRanges, currentRange) + // This variable will temporarily hold the data offsets until the ReadId is known. + var contentOffsets bufferSliceOffsets + var hasContent bool + bytesFieldLen, err := d.consumeVarint() if err != nil { return fmt.Errorf("consuming bytes: %w", err) @@ -2409,16 +2508,18 @@ func (d *readResponseDecoder) readFullObjectResponse() error { switch { case gotNum == checksummedDataContentField && gotTyp == protowire.BytesType: // Get the offsets of the content bytes. - d.dataOffsets, err = d.consumeBytes() + contentOffsets, err = d.consumeBytes() if err != nil { return fmt.Errorf("invalid BidiReadObjectResponse.ChecksummedData.Content: %w", err) } + hasContent = true + case gotNum == checksummedDataCRC32CField && gotTyp == protowire.Fixed32Type: v, err := d.consumeFixed32() if err != nil { return fmt.Errorf("invalid BidiReadObjectResponse.ChecksummedData.Crc32C: %w", err) } - msg.ObjectDataRanges[0].ChecksummedData.Crc32C = &v + currentRange.ChecksummedData.Crc32C = &v default: err := d.consumeFieldValue(gotNum, gotTyp) if err != nil { @@ -2432,7 +2533,7 @@ func (d *readResponseDecoder) readFullObjectResponse() error { return fmt.Errorf("invalid ObjectDataRange.ReadRange: %w", err) } - if err := proto.Unmarshal(buf, msg.ObjectDataRanges[0].ReadRange); err != nil { + if err := proto.Unmarshal(buf, currentRange.ReadRange); err != nil { return err } case gotNum == rangeEndField && gotTyp == protowire.VarintType: // proto encodes bool as int32 @@ -2440,10 +2541,14 @@ func (d *readResponseDecoder) readFullObjectResponse() error { if err != nil { return fmt.Errorf("invalid ObjectDataRange.RangeEnd: %w", err) } - msg.ObjectDataRanges[0].RangeEnd = protowire.DecodeBool(b) + currentRange.RangeEnd = protowire.DecodeBool(b) } } + if hasContent { + // Store the offsets in the map, keyed by the ReadId of the current range. + d.dataOffsets[currentRange.ReadRange.GetReadId()] = contentOffsets + } case fieldNum == metadataField && fieldType == protowire.BytesType: msg.Metadata = &storagepb.Object{} buf, err := d.consumeBytesCopy() diff --git a/vendor/cloud.google.com/go/storage/grpc_reader.go b/vendor/cloud.google.com/go/storage/grpc_reader.go index 099e6a615..14ec5048d 100644 --- a/vendor/cloud.google.com/go/storage/grpc_reader.go +++ b/vendor/cloud.google.com/go/storage/grpc_reader.go @@ -81,6 +81,7 @@ func (bytesCodecReadObject) Name() string { return "" } +// NewRangeReaderReadObject is the legacy (non-bidi) implementation of reads. func (c *grpcStorageClient) NewRangeReaderReadObject(ctx context.Context, params *newRangeReaderParams, opts ...storageOption) (r *Reader, err error) { ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.grpcStorageClient.NewRangeReaderReadObject") defer func() { trace.EndSpan(ctx, err) }() diff --git a/vendor/cloud.google.com/go/storage/grpc_writer.go b/vendor/cloud.google.com/go/storage/grpc_writer.go index c74d1ff31..3d82e5951 100644 --- a/vendor/cloud.google.com/go/storage/grpc_writer.go +++ b/vendor/cloud.google.com/go/storage/grpc_writer.go @@ -76,11 +76,50 @@ func withBidiWriteObjectRedirectionErrorRetries(s *settings) (newr *retryConfig) return newr } -func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storageOption) (*io.PipeWriter, error) { +type flushResult struct { + err error + offset int64 +} + +type gRPCInternalWriter struct { + flushSupported bool + flushInProgress bool + + pw *io.PipeWriter + + flushComplete chan flushResult +} + +func (giw *gRPCInternalWriter) Flush() (int64, error) { + if !giw.flushSupported { + return 0, errors.New("Flush is supported only if Writer.Append is set to true") + } + + giw.flushInProgress = true + giw.pw.Close() + + // Return the offset based on flushComplete. + r := <-giw.flushComplete + return r.offset, r.err +} + +// Forward other methods to *io.PipeWriter +func (giw *gRPCInternalWriter) Write(p []byte) (int, error) { + return giw.pw.Write(p) +} + +func (giw *gRPCInternalWriter) Close() error { + return giw.pw.Close() +} + +func (giw *gRPCInternalWriter) CloseWithError(err error) error { + return giw.pw.CloseWithError(err) +} + +func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storageOption) (internalWriter, error) { var offset int64 errorf := params.setError setObj := params.setObj - setFlush := params.setFlush pr, pw := io.Pipe() s := callSettings(c.settings, opts...) @@ -97,12 +136,7 @@ func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storage } s.retry.maxRetryDuration = retryDeadline - // Set Flush func for use by exported Writer.Flush. - var gw *gRPCWriter - setFlush(func() (int64, error) { - return gw.flush() - }) - gw, err := newGRPCWriter(c, s, params, pr, pw, params.setPipeWriter) + gw, err := newGRPCWriter(c, s, params, pr, pr, pw) if err != nil { errorf(err) pr.CloseWithError(err) @@ -114,7 +148,7 @@ func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storage // If we are taking over an appendable object, send the first message here // to get the append offset. - if params.appendGen > 0 { + if params.append && params.appendGen >= 0 { // Create the buffer sender. This opens a stream and blocks until we // get a response that tells us what offset to write from. wbs, err := gw.newGRPCAppendTakeoverWriteBufferSender(params.ctx) @@ -167,10 +201,10 @@ func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storage offset += int64(recvd) // If this buffer upload was triggered by a flush, reset and // communicate back the result. - if gw.flushInProgress { + if gw.iw.flushInProgress { gw.setSize(offset) - gw.flushInProgress = false - gw.flushComplete <- flushResult{offset: offset, err: err} + gw.iw.flushInProgress = false + gw.iw.flushComplete <- flushResult{offset: offset, err: err} } if err != nil { return err @@ -188,14 +222,14 @@ func (c *grpcStorageClient) OpenWriter(params *openWriterParams, opts ...storage // These calls are still valid if err is nil err = checkCanceled(err) errorf(err) - pr.CloseWithError(err) + gw.pr.CloseWithError(err) close(params.donec) }() - return pw, nil + return gw.iw, nil } -func newGRPCWriter(c *grpcStorageClient, s *settings, params *openWriterParams, r io.Reader, pw *io.PipeWriter, setPipeWriter func(*io.PipeWriter)) (*gRPCWriter, error) { +func newGRPCWriter(c *grpcStorageClient, s *settings, params *openWriterParams, r io.Reader, pr *io.PipeReader, pw *io.PipeWriter) (*gRPCWriter, error) { if params.attrs.Retention != nil { // TO-DO: remove once ObjectRetention is available - see b/308194853 return nil, status.Errorf(codes.Unimplemented, "storage: object retention is not supported in gRPC") @@ -223,7 +257,7 @@ func newGRPCWriter(c *grpcStorageClient, s *settings, params *openWriterParams, Appendable: proto.Bool(params.append), } var appendSpec *storagepb.AppendObjectSpec - if params.appendGen > 0 { + if params.append && params.appendGen >= 0 { appendSpec = &storagepb.AppendObjectSpec{ Bucket: bucketResourceName(globalProjectAlias, params.bucket), Object: params.attrs.Name, @@ -236,11 +270,17 @@ func newGRPCWriter(c *grpcStorageClient, s *settings, params *openWriterParams, } return &gRPCWriter{ - buf: make([]byte, size), - c: c, - ctx: params.ctx, - reader: r, - pw: pw, + buf: make([]byte, size), + c: c, + ctx: params.ctx, + reader: r, + pr: pr, + iw: &gRPCInternalWriter{ + flushSupported: params.append, + flushInProgress: false, + pw: pw, + flushComplete: make(chan flushResult), + }, bucket: params.bucket, attrs: params.attrs, conds: params.conds, @@ -255,19 +295,17 @@ func newGRPCWriter(c *grpcStorageClient, s *settings, params *openWriterParams, forceEmptyContentType: params.forceEmptyContentType, append: params.append, finalizeOnClose: params.finalizeOnClose, - setPipeWriter: setPipeWriter, - flushComplete: make(chan flushResult), }, nil } // gRPCWriter is a wrapper around the the gRPC client-stream API that manages // sending chunks of data provided by the user over the stream. type gRPCWriter struct { - c *grpcStorageClient - buf []byte - reader io.Reader - pw *io.PipeWriter - setPipeWriter func(*io.PipeWriter) // used to set in parent storage.Writer + c *grpcStorageClient + buf []byte + reader io.Reader + pr *io.PipeReader // Keep track of pr to update post-flush + iw *gRPCInternalWriter ctx context.Context @@ -287,14 +325,7 @@ type gRPCWriter struct { append bool finalizeOnClose bool - streamSender gRPCBidiWriteBufferSender - flushInProgress bool // true when the pipe is being recreated for a flush. - flushComplete chan flushResult // use to signal back to flush call that flush to server was completed. -} - -type flushResult struct { - err error - offset int64 + streamSender gRPCBidiWriteBufferSender } func bucketContext(ctx context.Context, bucket string) context.Context { @@ -623,12 +654,12 @@ func (w *gRPCWriter) read() (int, bool, error) { if err == io.EOF { err = nil // EOF can come from Writer.Flush or Writer.Close. - if w.flushInProgress { + if w.iw.flushInProgress { // Reset pipe for additional writes after the flush. pr, pw := io.Pipe() w.reader = pr - w.pw = pw - w.setPipeWriter(pw) + w.pr = pr + w.iw.pw = pw } else { done = true } @@ -636,22 +667,6 @@ func (w *gRPCWriter) read() (int, bool, error) { return recvd, done, err } -// flush flushes the current buffer regardless of whether it is full or not. -// It's the implementation for Writer.Flush. -func (w *gRPCWriter) flush() (int64, error) { - if !w.append { - return 0, errors.New("Flush is supported only if Writer.Append is set to true") - } - - // Close PipeWriter to trigger EOF on read side of the stream. - w.flushInProgress = true - w.pw.Close() - - // Wait for flush to complete - result := <-w.flushComplete - return result.offset, result.err -} - func checkCanceled(err error) error { if status.Code(err) == codes.Canceled { return context.Canceled @@ -700,6 +715,7 @@ func (w *gRPCWriter) newGRPCAppendableObjectBufferSender() (*gRPCAppendBidiWrite finalizeOnClose: w.finalizeOnClose, forceFirstMessage: true, progress: w.progress, + flushOffset: -1, // We should ack flushes to length 0. } return s, nil } @@ -955,9 +971,7 @@ func (s *gRPCAppendBidiWriteBufferSender) sendOnConnectedStream(buf []byte, offs // this allows the server to send multiple responses if it wants to. flushOffset := s.flushOffset - // Await a response on the stream. Loop at least once or until the - // persisted offset matches the flush offset. - for { + for flushOffset < offset+int64(len(buf)) { resp, ok := <-s.recvs if !ok { return nil, s.recvErr @@ -975,9 +989,6 @@ func (s *gRPCAppendBidiWriteBufferSender) sendOnConnectedStream(buf []byte, offs if resp.GetResource() != nil { obj = resp.GetResource() } - if flushOffset <= offset+int64(len(buf)) { - break - } } if s.flushOffset < flushOffset { s.flushOffset = flushOffset diff --git a/vendor/cloud.google.com/go/storage/http_client.go b/vendor/cloud.google.com/go/storage/http_client.go index eafa1a3b1..a4b601300 100644 --- a/vendor/cloud.google.com/go/storage/http_client.go +++ b/vendor/cloud.google.com/go/storage/http_client.go @@ -30,25 +30,24 @@ import ( "strings" "time" + "cloud.google.com/go/auth" "cloud.google.com/go/iam/apiv1/iampb" "cloud.google.com/go/internal/optional" "cloud.google.com/go/internal/trace" "github.com/google/uuid" "github.com/googleapis/gax-go/v2/callctx" - "golang.org/x/oauth2/google" "google.golang.org/api/googleapi" "google.golang.org/api/iterator" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" raw "google.golang.org/api/storage/v1" - "google.golang.org/api/transport" htransport "google.golang.org/api/transport/http" ) // httpStorageClient is the HTTP-JSON API implementation of the transport-agnostic // storageClient interface. type httpStorageClient struct { - creds *google.Credentials + creds *auth.Credentials hc *http.Client xmlHost string raw *raw.Service @@ -65,7 +64,7 @@ func newHTTPStorageClient(ctx context.Context, opts ...storageOption) (storageCl o := s.clientOption config := newStorageConfig(o...) - var creds *google.Credentials + var creds *auth.Credentials // In general, it is recommended to use raw.NewService instead of htransport.NewClient // since raw.NewService configures the correct default endpoints when initializing the // internal http client. However, in our case, "NewRangeReader" in reader.go needs to @@ -83,10 +82,10 @@ func newHTTPStorageClient(ctx context.Context, opts ...storageOption) (storageCl ) // Don't error out here. The user may have passed in their own HTTP // client which does not auth with ADC or other common conventions. - c, err := transport.Creds(ctx, o...) + c, err := internaloption.AuthCreds(ctx, o) if err == nil { creds = c - o = append(o, internaloption.WithCredentials(creds)) + o = append(o, option.WithAuthCredentials(creds)) } } else { var hostURL *url.URL @@ -344,6 +343,10 @@ func (c *httpStorageClient) ListObjects(ctx context.Context, bucket string, q *Q it.query = *q } fetch := func(pageSize int, pageToken string) (string, error) { + var err error + // Add trace span around List API call within the fetch. + ctx, _ = startSpan(ctx, "httpStorageClient.ObjectsListCall") + defer func() { endSpan(ctx, err) }() req := c.raw.Objects.List(bucket) if it.query.SoftDeleted { req.SoftDeleted(it.query.SoftDeleted) @@ -372,7 +375,6 @@ func (c *httpStorageClient) ListObjects(ctx context.Context, bucket string, q *Q req.MaxResults(int64(pageSize)) } var resp *raw.Objects - var err error err = run(it.ctx, func(ctx context.Context) error { resp, err = req.Context(ctx).Do() return err @@ -961,7 +963,15 @@ func (c *httpStorageClient) newRangeReaderJSON(ctx context.Context, params *newR return parseReadResponse(res, params, reopen) } -func (c *httpStorageClient) OpenWriter(params *openWriterParams, opts ...storageOption) (*io.PipeWriter, error) { +type httpInternalWriter struct { + *io.PipeWriter +} + +func (hiw httpInternalWriter) Flush() (int64, error) { + return 0, errors.New("Writer.Flush is only supported for gRPC-based clients") +} + +func (c *httpStorageClient) OpenWriter(params *openWriterParams, opts ...storageOption) (internalWriter, error) { if params.append { return nil, errors.New("storage: append not supported on HTTP Client; use gRPC") } @@ -971,9 +981,6 @@ func (c *httpStorageClient) OpenWriter(params *openWriterParams, opts ...storage setObj := params.setObj progress := params.progress attrs := params.attrs - params.setFlush(func() (int64, error) { - return 0, errors.New("Writer.Flush is only supported for gRPC-based clients") - }) mediaOpts := []googleapi.MediaOption{ googleapi.ChunkSize(params.chunkSize), @@ -1057,7 +1064,7 @@ func (c *httpStorageClient) OpenWriter(params *openWriterParams, opts ...storage setObj(newObject(resp)) }() - return pw, nil + return httpInternalWriter{pw}, nil } // IAM methods. diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/doc.go b/vendor/cloud.google.com/go/storage/internal/apiv2/doc.go index 502fa5678..c46be7aa7 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/doc.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/doc.go @@ -17,15 +17,7 @@ // Package storage is an auto-generated package for the // Cloud Storage API. // -// This folder contains protocol buffer definitions for an API only -// accessible to select customers. Customers not participating should not -// depend on this file. Please contact Google Cloud sales if you are -// interested. Unless told otherwise by a Google Cloud representative, do not -// use or otherwise rely on any of the contents of this folder. If you would -// like to use Cloud Storage, please consult our official documentation (at -// https://cloud.google.com/storage/docs/apis) for details on our XML and -// JSON APIs, or else consider one of our client libraries (at -// https://cloud.google.com/storage/docs/reference/libraries). +// Lets you store and retrieve potentially-large, immutable data objects. // // # General documentation // diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/helpers.go b/vendor/cloud.google.com/go/storage/internal/apiv2/helpers.go index 0de9b31f6..78116e924 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/helpers.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/helpers.go @@ -18,16 +18,20 @@ package storage import ( "context" + "fmt" "log/slog" "github.com/googleapis/gax-go/v2/internallog/grpclog" "google.golang.org/api/option" "google.golang.org/grpc" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/runtime/protoimpl" ) const serviceName = "storage.googleapis.com" +var protoVersion = fmt.Sprintf("1.%d", protoimpl.MaxVersion) + // For more information on implementing a client constructor hook, see // https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. type clientHookParams struct{} diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go b/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go index 4a50254d8..68133628c 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/storage_client.go @@ -510,14 +510,18 @@ func (c *Client) LockBucketRetentionPolicy(ctx context.Context, req *storagepb.L // GetIamPolicy gets the IAM policy for a specified bucket. // The resource field in the request should be -// projects/_/buckets/{bucket}. +// projects/_/buckets/{bucket} for a bucket, or +// projects/_/buckets/{bucket}/managedFolders/{managedFolder} +// for a managed folder. func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { return c.internalClient.GetIamPolicy(ctx, req, opts...) } // SetIamPolicy updates an IAM policy for the specified bucket. // The resource field in the request should be -// projects/_/buckets/{bucket}. +// projects/_/buckets/{bucket} for a bucket, or +// projects/_/buckets/{bucket}/managedFolders/{managedFolder} +// for a managed folder. func (c *Client) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { return c.internalClient.SetIamPolicy(ctx, req, opts...) } @@ -876,7 +880,7 @@ func (c *gRPCClient) Connection() *grpc.ClientConn { // use by Google-written clients. func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) c.xGoogHeaders = []string{ "x-goog-api-client", gax.XGoogHeader(kv...), } @@ -1056,6 +1060,9 @@ func (c *gRPCClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRe if reg := regexp.MustCompile("(?P.*)"); reg.MatchString(req.GetResource()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1])) > 0 { routingHeadersMap["bucket"] = url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1]) } + if reg := regexp.MustCompile("(?Pprojects/[^/]+/buckets/[^/]+)(?:/.*)?"); reg.MatchString(req.GetResource()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1])) > 0 { + routingHeadersMap["bucket"] = url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1]) + } for headerName, headerValue := range routingHeadersMap { routingHeaders = fmt.Sprintf("%s%s=%s&", routingHeaders, headerName, headerValue) } @@ -1083,6 +1090,9 @@ func (c *gRPCClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRe if reg := regexp.MustCompile("(?P.*)"); reg.MatchString(req.GetResource()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1])) > 0 { routingHeadersMap["bucket"] = url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1]) } + if reg := regexp.MustCompile("(?Pprojects/[^/]+/buckets/[^/]+)(?:/.*)?"); reg.MatchString(req.GetResource()) && len(url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1])) > 0 { + routingHeadersMap["bucket"] = url.QueryEscape(reg.FindStringSubmatch(req.GetResource())[1]) + } for headerName, headerValue := range routingHeadersMap { routingHeaders = fmt.Sprintf("%s%s=%s&", routingHeaders, headerName, headerValue) } diff --git a/vendor/cloud.google.com/go/storage/internal/apiv2/storagepb/storage.pb.go b/vendor/cloud.google.com/go/storage/internal/apiv2/storagepb/storage.pb.go index 6f0ac1ef8..ee6639e49 100644 --- a/vendor/cloud.google.com/go/storage/internal/apiv2/storagepb/storage.pb.go +++ b/vendor/cloud.google.com/go/storage/internal/apiv2/storagepb/storage.pb.go @@ -15,17 +15,14 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.2 -// protoc v4.25.3 +// protoc v4.25.7 // source: google/storage/v2/storage.proto package storagepb import ( - context "context" - reflect "reflect" - sync "sync" - iampb "cloud.google.com/go/iam/apiv1/iampb" + context "context" _ "google.golang.org/genproto/googleapis/api/annotations" status "google.golang.org/genproto/googleapis/rpc/status" date "google.golang.org/genproto/googleapis/type/date" @@ -38,6 +35,8 @@ import ( emptypb "google.golang.org/protobuf/types/known/emptypb" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) const ( @@ -181,6 +180,63 @@ func (ServiceConstants_Values) EnumDescriptor() ([]byte, []int) { return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{42, 0} } +// Retention mode values. +type Object_Retention_Mode int32 + +const ( + // No specified mode. Object is not under retention. + Object_Retention_MODE_UNSPECIFIED Object_Retention_Mode = 0 + // Retention period may be decreased or increased. + // The Retention configuration may be removed. + // The mode may be changed to locked. + Object_Retention_UNLOCKED Object_Retention_Mode = 1 + // Retention period may be increased. + // The Retention configuration cannot be removed. + // The mode cannot be changed. + Object_Retention_LOCKED Object_Retention_Mode = 2 +) + +// Enum value maps for Object_Retention_Mode. +var ( + Object_Retention_Mode_name = map[int32]string{ + 0: "MODE_UNSPECIFIED", + 1: "UNLOCKED", + 2: "LOCKED", + } + Object_Retention_Mode_value = map[string]int32{ + "MODE_UNSPECIFIED": 0, + "UNLOCKED": 1, + "LOCKED": 2, + } +) + +func (x Object_Retention_Mode) Enum() *Object_Retention_Mode { + p := new(Object_Retention_Mode) + *p = x + return p +} + +func (x Object_Retention_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Object_Retention_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_google_storage_v2_storage_proto_enumTypes[1].Descriptor() +} + +func (Object_Retention_Mode) Type() protoreflect.EnumType { + return &file_google_storage_v2_storage_proto_enumTypes[1] +} + +func (x Object_Retention_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Object_Retention_Mode.Descriptor instead. +func (Object_Retention_Mode) EnumDescriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{50, 0, 0} +} + // Request message for DeleteBucket. type DeleteBucketRequest struct { state protoimpl.MessageState @@ -331,9 +387,11 @@ type CreateBucketRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The project to which this bucket will belong. + // Required. The project to which this bucket will belong. This field must + // either be empty or `projects/_`. The project ID that owns this bucket + // should be specified in the `bucket.project` field. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Properties of the new bucket being inserted. + // Optional. Properties of the new bucket being inserted. // The name of the bucket is specified in the `bucket_id` field. Populating // `bucket.name` field will result in an error. // The project of the bucket must be specified in the `bucket.project` field. @@ -345,14 +403,16 @@ type CreateBucketRequest struct { // component of the bucket's resource name. For example, the value `foo` might // result in a bucket with the name `projects/123456/buckets/foo`. BucketId string `protobuf:"bytes,3,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` - // Apply a predefined set of access controls to this bucket. + // Optional. Apply a predefined set of access controls to this bucket. // Valid values are "authenticatedRead", "private", "projectPrivate", // "publicRead", or "publicReadWrite". PredefinedAcl string `protobuf:"bytes,6,opt,name=predefined_acl,json=predefinedAcl,proto3" json:"predefined_acl,omitempty"` - // Apply a predefined set of default object access controls to this bucket. - // Valid values are "authenticatedRead", "bucketOwnerFullControl", + // Optional. Apply a predefined set of default object access controls to this + // bucket. Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". PredefinedDefaultObjectAcl string `protobuf:"bytes,7,opt,name=predefined_default_object_acl,json=predefinedDefaultObjectAcl,proto3" json:"predefined_default_object_acl,omitempty"` + // Optional. If true, enable object retention on the bucket. + EnableObjectRetention bool `protobuf:"varint,9,opt,name=enable_object_retention,json=enableObjectRetention,proto3" json:"enable_object_retention,omitempty"` } func (x *CreateBucketRequest) Reset() { @@ -420,6 +480,13 @@ func (x *CreateBucketRequest) GetPredefinedDefaultObjectAcl() string { return "" } +func (x *CreateBucketRequest) GetEnableObjectRetention() bool { + if x != nil { + return x.EnableObjectRetention + } + return false +} + // Request message for ListBuckets. type ListBucketsRequest struct { state protoimpl.MessageState @@ -428,15 +495,15 @@ type ListBucketsRequest struct { // Required. The project whose buckets we are listing. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Maximum number of buckets to return in a single response. The service will - // use this parameter or 1,000 items, whichever is smaller. If "acl" is - // present in the read_mask, the service will use this parameter of 200 items, - // whichever is smaller. + // Optional. Maximum number of buckets to return in a single response. The + // service will use this parameter or 1,000 items, whichever is smaller. If + // "acl" is present in the read_mask, the service will use this parameter of + // 200 items, whichever is smaller. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // A previously-returned page token representing part of the larger set of - // results to view. + // Optional. A previously-returned page token representing part of the larger + // set of results to view. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Filter results to buckets whose names begin with this prefix. + // Optional. Filter results to buckets whose names begin with this prefix. Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"` // Mask specifying which fields to read from each result. // If no mask is specified, will default to all fields except items.owner, @@ -639,12 +706,12 @@ type UpdateBucketRequest struct { // If set, will only modify the bucket if its metageneration does not match // this value. IfMetagenerationNotMatch *int64 `protobuf:"varint,3,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // Apply a predefined set of access controls to this bucket. + // Optional. Apply a predefined set of access controls to this bucket. // Valid values are "authenticatedRead", "private", "projectPrivate", // "publicRead", or "publicReadWrite". PredefinedAcl string `protobuf:"bytes,8,opt,name=predefined_acl,json=predefinedAcl,proto3" json:"predefined_acl,omitempty"` - // Apply a predefined set of default object access controls to this bucket. - // Valid values are "authenticatedRead", "bucketOwnerFullControl", + // Optional. Apply a predefined set of default object access controls to this + // bucket. Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". PredefinedDefaultObjectAcl string `protobuf:"bytes,9,opt,name=predefined_default_object_acl,json=predefinedDefaultObjectAcl,proto3" json:"predefined_default_object_acl,omitempty"` // Required. List of fields to be updated. @@ -738,10 +805,11 @@ type ComposeObjectRequest struct { // Required. Properties of the resulting object. Destination *Object `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` - // The list of source objects that will be concatenated into a single object. + // Optional. The list of source objects that will be concatenated into a + // single object. SourceObjects []*ComposeObjectRequest_SourceObject `protobuf:"bytes,2,rep,name=source_objects,json=sourceObjects,proto3" json:"source_objects,omitempty"` - // Apply a predefined set of access controls to the destination object. - // Valid values are "authenticatedRead", "bucketOwnerFullControl", + // Optional. Apply a predefined set of access controls to the destination + // object. Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". DestinationPredefinedAcl string `protobuf:"bytes,9,opt,name=destination_predefined_acl,json=destinationPredefinedAcl,proto3" json:"destination_predefined_acl,omitempty"` // Makes the operation conditional on whether the object's current generation @@ -751,15 +819,16 @@ type ComposeObjectRequest struct { // Makes the operation conditional on whether the object's current // metageneration matches the given value. IfMetagenerationMatch *int64 `protobuf:"varint,5,opt,name=if_metageneration_match,json=ifMetagenerationMatch,proto3,oneof" json:"if_metageneration_match,omitempty"` - // Resource name of the Cloud KMS key, of the form + // Optional. Resource name of the Cloud KMS key, of the form // `projects/my-project/locations/my-location/keyRings/my-kr/cryptoKeys/my-key`, // that will be used to encrypt the object. Overrides the object // metadata's `kms_key_name` value, if any. KmsKey string `protobuf:"bytes,6,opt,name=kms_key,json=kmsKey,proto3" json:"kms_key,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,7,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` - // The checksums of the complete object. This will be validated against the - // combined checksums of the component objects. + // Optional. The checksums of the complete object. This will be validated + // against the combined checksums of the component objects. ObjectChecksums *ObjectChecksums `protobuf:"bytes,10,opt,name=object_checksums,json=objectChecksums,proto3" json:"object_checksums,omitempty"` } @@ -862,8 +931,8 @@ type DeleteObjectRequest struct { // Note: If you want to delete an unfinalized resumable upload please use // `CancelResumableWrite`. Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` - // If present, permanently deletes a specific revision of this object (as - // opposed to the latest version, the default). + // Optional. If present, permanently deletes a specific revision of this + // object (as opposed to the latest version, the default). Generation int64 `protobuf:"varint,4,opt,name=generation,proto3" json:"generation,omitempty"` // Makes the operation conditional on whether the object's current generation // matches the given value. Setting to 0 makes the operation succeed only if @@ -880,7 +949,8 @@ type DeleteObjectRequest struct { // Makes the operation conditional on whether the object's current // metageneration does not match the given value. IfMetagenerationNotMatch *int64 `protobuf:"varint,8,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,10,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` } @@ -1008,7 +1078,8 @@ type RestoreObjectRequest struct { // If true, copy the source object's access controls. // Return an error if bucket has UBLA enabled. CopySourceAcl *bool `protobuf:"varint,9,opt,name=copy_source_acl,json=copySourceAcl,proto3,oneof" json:"copy_source_acl,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,8,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` } @@ -1209,11 +1280,11 @@ type ReadObjectRequest struct { Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The name of the object to read. Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` - // If present, selects a specific revision of this object (as opposed - // to the latest version, the default). + // Optional. If present, selects a specific revision of this object (as + // opposed to the latest version, the default). Generation int64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` - // The offset for the first byte to return in the read, relative to the start - // of the object. + // Optional. The offset for the first byte to return in the read, relative to + // the start of the object. // // A negative `read_offset` value will be interpreted as the number of bytes // back from the end of the object to be returned. For example, if an object's @@ -1222,9 +1293,10 @@ type ReadObjectRequest struct { // a negative offset with magnitude larger than the size of the object will // return the entire object. ReadOffset int64 `protobuf:"varint,4,opt,name=read_offset,json=readOffset,proto3" json:"read_offset,omitempty"` - // The maximum number of `data` bytes the server is allowed to return in the - // sum of all `Object` messages. A `read_limit` of zero indicates that there - // is no limit, and a negative `read_limit` will cause an error. + // Optional. The maximum number of `data` bytes the server is allowed to + // return in the sum of all `Object` messages. A `read_limit` of zero + // indicates that there is no limit, and a negative `read_limit` will cause an + // error. // // If the stream returns fewer bytes than allowed by the `read_limit` and no // error occurred, the stream includes all data from the `read_offset` to the @@ -1245,7 +1317,8 @@ type ReadObjectRequest struct { // Makes the operation conditional on whether the object's current // metageneration does not match the given value. IfMetagenerationNotMatch *int64 `protobuf:"varint,9,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,10,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` // Mask specifying which fields to read. // The checksummed_data field and its children will always be present. @@ -1372,8 +1445,8 @@ type GetObjectRequest struct { Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. Name of the object. Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` - // If present, selects a specific revision of this object (as opposed to the - // latest version, the default). + // Optional. If present, selects a specific revision of this object (as + // opposed to the latest version, the default). Generation int64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` // If true, return the soft-deleted version of this object. SoftDeleted *bool `protobuf:"varint,11,opt,name=soft_deleted,json=softDeleted,proto3,oneof" json:"soft_deleted,omitempty"` @@ -1392,7 +1465,8 @@ type GetObjectRequest struct { // Makes the operation conditional on whether the object's current // metageneration does not match the given value. IfMetagenerationNotMatch *int64 `protobuf:"varint,7,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,8,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` // Mask specifying which fields to read. // If no mask is specified, will default to all fields except metadata.acl and @@ -1606,8 +1680,8 @@ type BidiReadObjectSpec struct { Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The name of the object to read. Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` - // If present, selects a specific revision of this object (as opposed - // to the latest version, the default). + // Optional. If present, selects a specific revision of this object (as + // opposed to the latest version, the default). Generation int64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` // Makes the operation conditional on whether the object's current generation // matches the given value. Setting to 0 makes the operation succeed only if @@ -1624,7 +1698,8 @@ type BidiReadObjectSpec struct { // Makes the operation conditional on whether the object's current // metageneration does not match the given value. IfMetagenerationNotMatch *int64 `protobuf:"varint,7,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,8,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` // Mask specifying which fields to read. // The checksummed_data field and its children will always be present. @@ -1760,15 +1835,16 @@ type BidiReadObjectRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The first message of each stream should set this field. If this is not - // the first message, an error will be returned. Describes the object to read. + // Optional. The first message of each stream should set this field. If this + // is not the first message, an error will be returned. Describes the object + // to read. ReadObjectSpec *BidiReadObjectSpec `protobuf:"bytes,1,opt,name=read_object_spec,json=readObjectSpec,proto3" json:"read_object_spec,omitempty"` - // Provides a list of 0 or more (up to 100) ranges to read. If a single range - // is large enough to require multiple responses, they are guaranteed to be - // delivered in increasing offset order. There are no ordering guarantees - // across ranges. When no ranges are provided, the response message will not - // include ObjectRangeData. For full object downloads, the offset and size can - // be set to 0. + // Optional. Provides a list of 0 or more (up to 100) ranges to read. If a + // single range is large enough to require multiple responses, they are + // guaranteed to be delivered in increasing offset order. There are no + // ordering guarantees across ranges. When no ranges are provided, the + // response message will not include ObjectRangeData. For full object + // downloads, the offset and size can be set to 0. ReadRanges []*ReadRange `protobuf:"bytes,8,rep,name=read_ranges,json=readRanges,proto3" json:"read_ranges,omitempty"` } @@ -1891,17 +1967,19 @@ func (x *BidiReadObjectResponse) GetReadHandle() *BidiReadHandle { return nil } -// Error proto containing details for a redirected read. This error is only -// returned on initial open in case of a redirect. +// Error proto containing details for a redirected read. This error may be +// attached as details for an ABORTED response to BidiReadObject. type BidiReadObjectRedirectedError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The read handle for the redirected read. The client can use this for the - // subsequent open. + // The read handle for the redirected read. If set, the client may use this in + // the BidiReadObjectSpec when retrying the read stream. ReadHandle *BidiReadHandle `protobuf:"bytes,1,opt,name=read_handle,json=readHandle,proto3" json:"read_handle,omitempty"` - // The routing token that should be used when reopening the read stream. + // The routing token the client must use when retrying the read stream. + // This value must be provided in the header `x-goog-request-params`, with key + // `routing_token` and this string verbatim as the value. RoutingToken *string `protobuf:"bytes,2,opt,name=routing_token,json=routingToken,proto3,oneof" json:"routing_token,omitempty"` } @@ -1949,21 +2027,24 @@ func (x *BidiReadObjectRedirectedError) GetRoutingToken() string { return "" } -// Error proto containing details for a redirected write. This error is only -// returned on initial open in case of a redirect. +// Error proto containing details for a redirected write. This error may be +// attached as details for an ABORTED response to BidiWriteObject. type BidiWriteObjectRedirectedError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The routing token that should be used when reopening the write stream. + // The routing token the client must use when retrying the write stream. + // This value must be provided in the header `x-goog-request-params`, with key + // `routing_token` and this string verbatim as the value. RoutingToken *string `protobuf:"bytes,1,opt,name=routing_token,json=routingToken,proto3,oneof" json:"routing_token,omitempty"` - // Opaque value describing a previous write. + // Opaque value describing a previous write. If set, the client must use this + // in an AppendObjectSpec first_message when retrying the write stream. If not + // set, clients may retry the original request. WriteHandle *BidiWriteHandle `protobuf:"bytes,2,opt,name=write_handle,json=writeHandle,proto3,oneof" json:"write_handle,omitempty"` - // The generation of the object that triggered the redirect. - // Note that if this error was returned as part of an appendable object - // create, this object generation is now successfully created and - // append_object_spec should be used when reconnecting. + // The generation of the object that triggered the redirect. This will be set + // iff write_handle is set. If set, the client must use this in an + // AppendObjectSpec first_message when retrying the write stream. Generation *int64 `protobuf:"varint,3,opt,name=generation,proto3,oneof" json:"generation,omitempty"` } @@ -2380,7 +2461,7 @@ type WriteObjectSpec struct { // Required. Destination object, including its name and its metadata. Resource *Object `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` - // Apply a predefined set of access controls to this object. + // Optional. Apply a predefined set of access controls to this object. // Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". PredefinedAcl string `protobuf:"bytes,7,opt,name=predefined_acl,json=predefinedAcl,proto3" json:"predefined_acl,omitempty"` @@ -2531,19 +2612,20 @@ type WriteObjectRequest struct { // // *WriteObjectRequest_ChecksummedData Data isWriteObjectRequest_Data `protobuf_oneof:"data"` - // Checksums for the complete object. If the checksums computed by the service - // don't match the specified checksums the call will fail. May only be - // provided in the first or last request (either with first_message, or - // finish_write set). + // Optional. Checksums for the complete object. If the checksums computed by + // the service don't match the specified checksums the call will fail. May + // only be provided in the first or last request (either with first_message, + // or finish_write set). ObjectChecksums *ObjectChecksums `protobuf:"bytes,6,opt,name=object_checksums,json=objectChecksums,proto3" json:"object_checksums,omitempty"` - // If `true`, this indicates that the write is complete. Sending any + // Optional. If `true`, this indicates that the write is complete. Sending any // `WriteObjectRequest`s subsequent to one in which `finish_write` is `true` // will cause an error. // For a non-resumable write (where the upload_id was not set in the first // message), it is an error not to set this field in the final message of the // stream. FinishWrite bool `protobuf:"varint,7,opt,name=finish_write,json=finishWrite,proto3" json:"finish_write,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,8,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` } @@ -2772,15 +2854,24 @@ type AppendObjectSpec struct { Generation int64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` // Makes the operation conditional on whether the object's current // metageneration matches the given value. + // + // Note that metageneration preconditions are only checked if `write_handle` + // is empty. IfMetagenerationMatch *int64 `protobuf:"varint,4,opt,name=if_metageneration_match,json=ifMetagenerationMatch,proto3,oneof" json:"if_metageneration_match,omitempty"` // Makes the operation conditional on whether the object's current // metageneration does not match the given value. + // + // Note that metageneration preconditions are only checked if `write_handle` + // is empty. IfMetagenerationNotMatch *int64 `protobuf:"varint,5,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` // An optional routing token that influences request routing for the stream. // Must be provided if a BidiWriteObjectRedirectedError is returned. RoutingToken *string `protobuf:"bytes,6,opt,name=routing_token,json=routingToken,proto3,oneof" json:"routing_token,omitempty"` // An optional write handle returned from a previous BidiWriteObjectResponse // message or a BidiWriteObjectRedirectedError error. + // + // Note that metageneration preconditions are only checked if `write_handle` + // is empty. WriteHandle *BidiWriteHandle `protobuf:"bytes,7,opt,name=write_handle,json=writeHandle,proto3,oneof" json:"write_handle,omitempty"` } @@ -2897,35 +2988,36 @@ type BidiWriteObjectRequest struct { // // *BidiWriteObjectRequest_ChecksummedData Data isBidiWriteObjectRequest_Data `protobuf_oneof:"data"` - // Checksums for the complete object. If the checksums computed by the service - // don't match the specified checksums the call will fail. May only be - // provided in the first request or the - // last request (with finish_write set). + // Optional. Checksums for the complete object. If the checksums computed by + // the service don't match the specified checksums the call will fail. May + // only be provided in the first request or the last request (with + // finish_write set). ObjectChecksums *ObjectChecksums `protobuf:"bytes,6,opt,name=object_checksums,json=objectChecksums,proto3" json:"object_checksums,omitempty"` - // For each BidiWriteObjectRequest where state_lookup is `true` or the client - // closes the stream, the service will send a BidiWriteObjectResponse - // containing the current persisted size. The persisted size sent in responses - // covers all the bytes the server has persisted thus far and can be used to - // decide what data is safe for the client to drop. Note that the object's - // current size reported by the BidiWriteObjectResponse may lag behind the - // number of bytes written by the client. This field is ignored if - // `finish_write` is set to true. + // Optional. For each BidiWriteObjectRequest where state_lookup is `true` or + // the client closes the stream, the service will send a + // BidiWriteObjectResponse containing the current persisted size. The + // persisted size sent in responses covers all the bytes the server has + // persisted thus far and can be used to decide what data is safe for the + // client to drop. Note that the object's current size reported by the + // BidiWriteObjectResponse may lag behind the number of bytes written by the + // client. This field is ignored if `finish_write` is set to true. StateLookup bool `protobuf:"varint,7,opt,name=state_lookup,json=stateLookup,proto3" json:"state_lookup,omitempty"` - // Persists data written on the stream, up to and including the current - // message, to permanent storage. This option should be used sparingly as it - // may reduce performance. Ongoing writes will periodically be persisted on - // the server even when `flush` is not set. This field is ignored if + // Optional. Persists data written on the stream, up to and including the + // current message, to permanent storage. This option should be used sparingly + // as it may reduce performance. Ongoing writes will periodically be persisted + // on the server even when `flush` is not set. This field is ignored if // `finish_write` is set to true since there's no need to checkpoint or flush // if this message completes the write. Flush bool `protobuf:"varint,8,opt,name=flush,proto3" json:"flush,omitempty"` - // If `true`, this indicates that the write is complete. Sending any + // Optional. If `true`, this indicates that the write is complete. Sending any // `WriteObjectRequest`s subsequent to one in which `finish_write` is `true` // will cause an error. // For a non-resumable write (where the upload_id was not set in the first // message), it is an error not to set this field in the final message of the // stream. FinishWrite bool `protobuf:"varint,9,opt,name=finish_write,json=finishWrite,proto3" json:"finish_write,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,10,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` } @@ -3187,28 +3279,27 @@ type ListObjectsRequest struct { // Required. Name of the bucket in which to look for objects. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Maximum number of `items` plus `prefixes` to return + // Optional. Maximum number of `items` plus `prefixes` to return // in a single page of responses. As duplicate `prefixes` are // omitted, fewer total results may be returned than requested. The service // will use this parameter or 1,000 items, whichever is smaller. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // A previously-returned page token representing part of the larger set of - // results to view. + // Optional. A previously-returned page token representing part of the larger + // set of results to view. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // If set, returns results in a directory-like mode. `items` will contain - // only objects whose names, aside from the `prefix`, do not - // contain `delimiter`. Objects whose names, aside from the - // `prefix`, contain `delimiter` will have their name, - // truncated after the `delimiter`, returned in - // `prefixes`. Duplicate `prefixes` are omitted. + // Optional. If set, returns results in a directory-like mode. `items` will + // contain only objects whose names, aside from the `prefix`, do not contain + // `delimiter`. Objects whose names, aside from the `prefix`, contain + // `delimiter` will have their name, truncated after the `delimiter`, returned + // in `prefixes`. Duplicate `prefixes` are omitted. Delimiter string `protobuf:"bytes,4,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - // If true, objects that end in exactly one instance of `delimiter` + // Optional. If true, objects that end in exactly one instance of `delimiter` // will have their metadata included in `items` in addition to // `prefixes`. IncludeTrailingDelimiter bool `protobuf:"varint,5,opt,name=include_trailing_delimiter,json=includeTrailingDelimiter,proto3" json:"include_trailing_delimiter,omitempty"` - // Filter results to objects whose names begin with this prefix. + // Optional. Filter results to objects whose names begin with this prefix. Prefix string `protobuf:"bytes,6,opt,name=prefix,proto3" json:"prefix,omitempty"` - // If `true`, lists all versions of an object as distinct results. + // Optional. If `true`, lists all versions of an object as distinct results. // For more information, see // [Object // Versioning](https://cloud.google.com/storage/docs/object-versioning). @@ -3239,6 +3330,10 @@ type ListObjectsRequest struct { // Glob](https://cloud.google.com/storage/docs/json_api/v1/objects/list#list-objects-and-prefixes-using-glob) // for the full syntax. MatchGlob string `protobuf:"bytes,14,opt,name=match_glob,json=matchGlob,proto3" json:"match_glob,omitempty"` + // Optional. Filter the returned objects. Currently only supported for the + // `contexts` field. If `delimiter` is set, the returned `prefixes` are exempt + // from this filter. + Filter string `protobuf:"bytes,15,opt,name=filter,proto3" json:"filter,omitempty"` } func (x *ListObjectsRequest) Reset() { @@ -3362,6 +3457,13 @@ func (x *ListObjectsRequest) GetMatchGlob() string { return "" } +func (x *ListObjectsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + // Request object for `QueryWriteStatus`. type QueryWriteStatusRequest struct { state protoimpl.MessageState @@ -3371,7 +3473,8 @@ type QueryWriteStatusRequest struct { // Required. The name of the resume token for the object whose write status is // being requested. UploadId string `protobuf:"bytes,1,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,2,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` } @@ -3531,13 +3634,13 @@ type RewriteObjectRequest struct { // Required. Immutable. The name of the bucket containing the destination // object. DestinationBucket string `protobuf:"bytes,25,opt,name=destination_bucket,json=destinationBucket,proto3" json:"destination_bucket,omitempty"` - // The name of the Cloud KMS key that will be used to encrypt the destination - // object. The Cloud KMS key must be located in same location as the object. - // If the parameter is not specified, the request uses the destination - // bucket's default encryption key, if any, or else the Google-managed - // encryption key. + // Optional. The name of the Cloud KMS key that will be used to encrypt the + // destination object. The Cloud KMS key must be located in same location as + // the object. If the parameter is not specified, the request uses the + // destination bucket's default encryption key, if any, or else the + // Google-managed encryption key. DestinationKmsKey string `protobuf:"bytes,27,opt,name=destination_kms_key,json=destinationKmsKey,proto3" json:"destination_kms_key,omitempty"` - // Properties of the destination, post-rewrite object. + // Optional. Properties of the destination, post-rewrite object. // The `name`, `bucket` and `kms_key` fields must not be populated (these // values are specified in the `destination_name`, `destination_bucket`, and // `destination_kms_key` fields). @@ -3549,17 +3652,17 @@ type RewriteObjectRequest struct { SourceBucket string `protobuf:"bytes,2,opt,name=source_bucket,json=sourceBucket,proto3" json:"source_bucket,omitempty"` // Required. Name of the source object. SourceObject string `protobuf:"bytes,3,opt,name=source_object,json=sourceObject,proto3" json:"source_object,omitempty"` - // If present, selects a specific revision of the source object (as opposed to - // the latest version, the default). + // Optional. If present, selects a specific revision of the source object (as + // opposed to the latest version, the default). SourceGeneration int64 `protobuf:"varint,4,opt,name=source_generation,json=sourceGeneration,proto3" json:"source_generation,omitempty"` - // Include this field (from the previous rewrite response) on each rewrite - // request after the first one, until the rewrite response 'done' flag is - // true. Calls that provide a rewriteToken can omit all other request fields, - // but if included those fields must match the values provided in the first - // rewrite request. + // Optional. Include this field (from the previous rewrite response) on each + // rewrite request after the first one, until the rewrite response 'done' flag + // is true. Calls that provide a rewriteToken can omit all other request + // fields, but if included those fields must match the values provided in the + // first rewrite request. RewriteToken string `protobuf:"bytes,5,opt,name=rewrite_token,json=rewriteToken,proto3" json:"rewrite_token,omitempty"` - // Apply a predefined set of access controls to the destination object. - // Valid values are "authenticatedRead", "bucketOwnerFullControl", + // Optional. Apply a predefined set of access controls to the destination + // object. Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". DestinationPredefinedAcl string `protobuf:"bytes,28,opt,name=destination_predefined_acl,json=destinationPredefinedAcl,proto3" json:"destination_predefined_acl,omitempty"` // Makes the operation conditional on whether the object's current generation @@ -3589,30 +3692,30 @@ type RewriteObjectRequest struct { // Makes the operation conditional on whether the source object's current // metageneration does not match the given value. IfSourceMetagenerationNotMatch *int64 `protobuf:"varint,14,opt,name=if_source_metageneration_not_match,json=ifSourceMetagenerationNotMatch,proto3,oneof" json:"if_source_metageneration_not_match,omitempty"` - // The maximum number of bytes that will be rewritten per rewrite request. - // Most callers - // shouldn't need to specify this parameter - it is primarily in place to - // support testing. If specified the value must be an integral multiple of - // 1 MiB (1048576). Also, this only applies to requests where the source and - // destination span locations and/or storage classes. Finally, this value must - // not change across rewrite calls else you'll get an error that the - // `rewriteToken` is invalid. + // Optional. The maximum number of bytes that will be rewritten per rewrite + // request. Most callers shouldn't need to specify this parameter - it is + // primarily in place to support testing. If specified the value must be an + // integral multiple of 1 MiB (1048576). Also, this only applies to requests + // where the source and destination span locations and/or storage classes. + // Finally, this value must not change across rewrite calls else you'll get an + // error that the `rewriteToken` is invalid. MaxBytesRewrittenPerCall int64 `protobuf:"varint,15,opt,name=max_bytes_rewritten_per_call,json=maxBytesRewrittenPerCall,proto3" json:"max_bytes_rewritten_per_call,omitempty"` - // The algorithm used to encrypt the source object, if any. Used if the source - // object was encrypted with a Customer-Supplied Encryption Key. + // Optional. The algorithm used to encrypt the source object, if any. Used if + // the source object was encrypted with a Customer-Supplied Encryption Key. CopySourceEncryptionAlgorithm string `protobuf:"bytes,16,opt,name=copy_source_encryption_algorithm,json=copySourceEncryptionAlgorithm,proto3" json:"copy_source_encryption_algorithm,omitempty"` - // The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt - // the source object, if it was encrypted with a Customer-Supplied Encryption - // Key. - CopySourceEncryptionKeyBytes []byte `protobuf:"bytes,21,opt,name=copy_source_encryption_key_bytes,json=copySourceEncryptionKeyBytes,proto3" json:"copy_source_encryption_key_bytes,omitempty"` - // The raw bytes (not base64-encoded) SHA256 hash of the encryption key used - // to encrypt the source object, if it was encrypted with a Customer-Supplied + // Optional. The raw bytes (not base64-encoded) AES-256 encryption key used to + // encrypt the source object, if it was encrypted with a Customer-Supplied // Encryption Key. + CopySourceEncryptionKeyBytes []byte `protobuf:"bytes,21,opt,name=copy_source_encryption_key_bytes,json=copySourceEncryptionKeyBytes,proto3" json:"copy_source_encryption_key_bytes,omitempty"` + // Optional. The raw bytes (not base64-encoded) SHA256 hash of the encryption + // key used to encrypt the source object, if it was encrypted with a + // Customer-Supplied Encryption Key. CopySourceEncryptionKeySha256Bytes []byte `protobuf:"bytes,22,opt,name=copy_source_encryption_key_sha256_bytes,json=copySourceEncryptionKeySha256Bytes,proto3" json:"copy_source_encryption_key_sha256_bytes,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,19,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` - // The checksums of the complete object. This will be used to validate the - // destination object after rewriting. + // Optional. The checksums of the complete object. This will be used to + // validate the destination object after rewriting. ObjectChecksums *ObjectChecksums `protobuf:"bytes,29,opt,name=object_checksums,json=objectChecksums,proto3" json:"object_checksums,omitempty"` } @@ -4072,11 +4175,12 @@ type StartResumableWriteRequest struct { // Required. Contains the information necessary to start a resumable write. WriteObjectSpec *WriteObjectSpec `protobuf:"bytes,1,opt,name=write_object_spec,json=writeObjectSpec,proto3" json:"write_object_spec,omitempty"` - // A set of parameters common to Storage API requests related to an object. + // Optional. A set of parameters common to Storage API requests related to an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,3,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` - // The checksums of the complete object. This is used to validate the - // uploaded object. For each upload, `object_checksums` can be provided when - // initiating a resumable upload with`StartResumableWriteRequest` or when + // Optional. The checksums of the complete object. This is used to validate + // the uploaded object. For each upload, `object_checksums` can be provided + // when initiating a resumable upload with`StartResumableWriteRequest` or when // completing a write with `WriteObjectRequest` with // `finish_write` set to `true`. ObjectChecksums *ObjectChecksums `protobuf:"bytes,5,opt,name=object_checksums,json=objectChecksums,proto3" json:"object_checksums,omitempty"` @@ -4211,7 +4315,7 @@ type UpdateObjectRequest struct { // Makes the operation conditional on whether the object's current // metageneration does not match the given value. IfMetagenerationNotMatch *int64 `protobuf:"varint,5,opt,name=if_metageneration_not_match,json=ifMetagenerationNotMatch,proto3,oneof" json:"if_metageneration_not_match,omitempty"` - // Apply a predefined set of access controls to this object. + // Optional. Apply a predefined set of access controls to this object. // Valid values are "authenticatedRead", "bucketOwnerFullControl", // "bucketOwnerRead", "private", "projectPrivate", or "publicRead". PredefinedAcl string `protobuf:"bytes,10,opt,name=predefined_acl,json=predefinedAcl,proto3" json:"predefined_acl,omitempty"` @@ -4224,8 +4328,11 @@ type UpdateObjectRequest struct { // // Not specifying any fields is an error. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,7,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - // A set of parameters common to Storage API requests concerning an object. + // Optional. A set of parameters common to Storage API requests concerning an + // object. CommonObjectRequestParams *CommonObjectRequestParams `protobuf:"bytes,8,opt,name=common_object_request_params,json=commonObjectRequestParams,proto3" json:"common_object_request_params,omitempty"` + // Optional. Overrides the unlocked retention config on the object. + OverrideUnlockedRetention bool `protobuf:"varint,11,opt,name=override_unlocked_retention,json=overrideUnlockedRetention,proto3" json:"override_unlocked_retention,omitempty"` } func (x *UpdateObjectRequest) Reset() { @@ -4314,20 +4421,27 @@ func (x *UpdateObjectRequest) GetCommonObjectRequestParams() *CommonObjectReques return nil } +func (x *UpdateObjectRequest) GetOverrideUnlockedRetention() bool { + if x != nil { + return x.OverrideUnlockedRetention + } + return false +} + // Parameters that can be passed to any object request. type CommonObjectRequestParams struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Encryption algorithm used with the Customer-Supplied Encryption Keys - // feature. + // Optional. Encryption algorithm used with the Customer-Supplied Encryption + // Keys feature. EncryptionAlgorithm string `protobuf:"bytes,1,opt,name=encryption_algorithm,json=encryptionAlgorithm,proto3" json:"encryption_algorithm,omitempty"` - // Encryption key used with the Customer-Supplied Encryption Keys feature. - // In raw bytes format (not base64-encoded). + // Optional. Encryption key used with the Customer-Supplied Encryption Keys + // feature. In raw bytes format (not base64-encoded). EncryptionKeyBytes []byte `protobuf:"bytes,4,opt,name=encryption_key_bytes,json=encryptionKeyBytes,proto3" json:"encryption_key_bytes,omitempty"` - // SHA256 hash of encryption key used with the Customer-Supplied Encryption - // Keys feature. + // Optional. SHA256 hash of encryption key used with the Customer-Supplied + // Encryption Keys feature. EncryptionKeySha256Bytes []byte `protobuf:"bytes,5,opt,name=encryption_key_sha256_bytes,json=encryptionKeySha256Bytes,proto3" json:"encryption_key_sha256_bytes,omitempty"` } @@ -4425,7 +4539,7 @@ type Bucket struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Immutable. The name of the bucket. + // Identifier. The name of the bucket. // Format: `projects/{project}/buckets/{bucket}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Output only. The user-chosen part of the bucket name. The `{bucket}` @@ -4439,6 +4553,7 @@ type Bucket struct { // Immutable. The project which owns this bucket, in the format of // "projects/{projectIdentifier}". // {projectIdentifier} can be the project ID or project number. + // Output values will always be in project number format. Project string `protobuf:"bytes,3,opt,name=project,proto3" json:"project,omitempty"` // Output only. The metadata generation of this bucket. Metageneration int64 `protobuf:"varint,4,opt,name=metageneration,proto3" json:"metageneration,omitempty"` @@ -4452,92 +4567,94 @@ type Bucket struct { // Output only. The location type of the bucket (region, dual-region, // multi-region, etc). LocationType string `protobuf:"bytes,6,opt,name=location_type,json=locationType,proto3" json:"location_type,omitempty"` - // The bucket's default storage class, used whenever no storageClass is - // specified for a newly-created object. This defines how objects in the + // Optional. The bucket's default storage class, used whenever no storageClass + // is specified for a newly-created object. This defines how objects in the // bucket are stored and determines the SLA and the cost of storage. // If this value is not specified when the bucket is created, it will default // to `STANDARD`. For more information, see // https://developers.google.com/storage/docs/storage-classes. StorageClass string `protobuf:"bytes,7,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` - // The recovery point objective for cross-region replication of the bucket. - // Applicable only for dual- and multi-region buckets. "DEFAULT" uses default - // replication. "ASYNC_TURBO" enables turbo replication, valid for dual-region - // buckets only. If rpo is not specified when the bucket is created, it - // defaults to "DEFAULT". For more information, see + // Optional. The recovery point objective for cross-region replication of the + // bucket. Applicable only for dual- and multi-region buckets. "DEFAULT" uses + // default replication. "ASYNC_TURBO" enables turbo replication, valid for + // dual-region buckets only. If rpo is not specified when the bucket is + // created, it defaults to "DEFAULT". For more information, see // https://cloud.google.com/storage/docs/availability-durability#turbo-replication. Rpo string `protobuf:"bytes,27,opt,name=rpo,proto3" json:"rpo,omitempty"` - // Access controls on the bucket. + // Optional. Access controls on the bucket. // If iam_config.uniform_bucket_level_access is enabled on this bucket, // requests to set, read, or modify acl is an error. Acl []*BucketAccessControl `protobuf:"bytes,8,rep,name=acl,proto3" json:"acl,omitempty"` - // Default access controls to apply to new objects when no ACL is provided. - // If iam_config.uniform_bucket_level_access is enabled on this bucket, - // requests to set, read, or modify acl is an error. + // Optional. Default access controls to apply to new objects when no ACL is + // provided. If iam_config.uniform_bucket_level_access is enabled on this + // bucket, requests to set, read, or modify acl is an error. DefaultObjectAcl []*ObjectAccessControl `protobuf:"bytes,9,rep,name=default_object_acl,json=defaultObjectAcl,proto3" json:"default_object_acl,omitempty"` - // The bucket's lifecycle config. See + // Optional. The bucket's lifecycle config. See // [https://developers.google.com/storage/docs/lifecycle]Lifecycle Management] // for more information. Lifecycle *Bucket_Lifecycle `protobuf:"bytes,10,opt,name=lifecycle,proto3" json:"lifecycle,omitempty"` // Output only. The creation time of the bucket. CreateTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // The bucket's [https://www.w3.org/TR/cors/][Cross-Origin Resource Sharing] - // (CORS) config. + // Optional. The bucket's [https://www.w3.org/TR/cors/][Cross-Origin Resource + // Sharing] (CORS) config. Cors []*Bucket_Cors `protobuf:"bytes,12,rep,name=cors,proto3" json:"cors,omitempty"` // Output only. The modification time of the bucket. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // The default value for event-based hold on newly created objects in this - // bucket. Event-based hold is a way to retain objects indefinitely until an - // event occurs, signified by the - // hold's release. After being released, such objects will be subject to - // bucket-level retention (if any). One sample use case of this flag is for - // banks to hold loan documents for at least 3 years after loan is paid in - // full. Here, bucket-level retention is 3 years and the event is loan being - // paid in full. In this example, these objects will be held intact for any - // number of years until the event has occurred (event-based hold on the - // object is released) and then 3 more years after that. That means retention - // duration of the objects begins from the moment event-based hold - // transitioned from true to false. Objects under event-based hold cannot be - // deleted, overwritten or archived until the hold is removed. + // Optional. The default value for event-based hold on newly created objects + // in this bucket. Event-based hold is a way to retain objects indefinitely + // until an event occurs, signified by the hold's release. After being + // released, such objects will be subject to bucket-level retention (if any). + // One sample use case of this flag is for banks to hold loan documents for at + // least 3 years after loan is paid in full. Here, bucket-level retention is 3 + // years and the event is loan being paid in full. In this example, these + // objects will be held intact for any number of years until the event has + // occurred (event-based hold on the object is released) and then 3 more years + // after that. That means retention duration of the objects begins from the + // moment event-based hold transitioned from true to false. Objects under + // event-based hold cannot be deleted, overwritten or archived until the hold + // is removed. DefaultEventBasedHold bool `protobuf:"varint,14,opt,name=default_event_based_hold,json=defaultEventBasedHold,proto3" json:"default_event_based_hold,omitempty"` - // User-provided labels, in key/value pairs. + // Optional. User-provided labels, in key/value pairs. Labels map[string]string `protobuf:"bytes,15,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The bucket's website config, controlling how the service behaves + // Optional. The bucket's website config, controlling how the service behaves // when accessing bucket contents as a web site. See the // [https://cloud.google.com/storage/docs/static-website][Static Website // Examples] for more information. Website *Bucket_Website `protobuf:"bytes,16,opt,name=website,proto3" json:"website,omitempty"` - // The bucket's versioning config. + // Optional. The bucket's versioning config. Versioning *Bucket_Versioning `protobuf:"bytes,17,opt,name=versioning,proto3" json:"versioning,omitempty"` - // The bucket's logging config, which defines the destination bucket + // Optional. The bucket's logging config, which defines the destination bucket // and name prefix (if any) for the current bucket's logs. Logging *Bucket_Logging `protobuf:"bytes,18,opt,name=logging,proto3" json:"logging,omitempty"` // Output only. The owner of the bucket. This is always the project team's // owner group. Owner *Owner `protobuf:"bytes,19,opt,name=owner,proto3" json:"owner,omitempty"` - // Encryption config for a bucket. + // Optional. Encryption config for a bucket. Encryption *Bucket_Encryption `protobuf:"bytes,20,opt,name=encryption,proto3" json:"encryption,omitempty"` - // The bucket's billing config. + // Optional. The bucket's billing config. Billing *Bucket_Billing `protobuf:"bytes,21,opt,name=billing,proto3" json:"billing,omitempty"` - // The bucket's retention policy. The retention policy enforces a minimum - // retention time for all objects contained in the bucket, based on their - // creation time. Any attempt to overwrite or delete objects younger than the - // retention period will result in a PERMISSION_DENIED error. An unlocked - // retention policy can be modified or removed from the bucket via a + // Optional. The bucket's retention policy. The retention policy enforces a + // minimum retention time for all objects contained in the bucket, based on + // their creation time. Any attempt to overwrite or delete objects younger + // than the retention period will result in a PERMISSION_DENIED error. An + // unlocked retention policy can be modified or removed from the bucket via a // storage.buckets.update operation. A locked retention policy cannot be // removed or shortened in duration for the lifetime of the bucket. // Attempting to remove or decrease period of a locked retention policy will // result in a PERMISSION_DENIED error. RetentionPolicy *Bucket_RetentionPolicy `protobuf:"bytes,22,opt,name=retention_policy,json=retentionPolicy,proto3" json:"retention_policy,omitempty"` - // The bucket's IAM config. + // Optional. The bucket's IAM config. IamConfig *Bucket_IamConfig `protobuf:"bytes,23,opt,name=iam_config,json=iamConfig,proto3" json:"iam_config,omitempty"` - // Reserved for future use. + // Optional. Reserved for future use. SatisfiesPzs bool `protobuf:"varint,25,opt,name=satisfies_pzs,json=satisfiesPzs,proto3" json:"satisfies_pzs,omitempty"` - // Configuration that, if present, specifies the data placement for a + // Optional. Configuration that, if present, specifies the data placement for + // a // [https://cloud.google.com/storage/docs/locations#location-dr][configurable // dual-region]. CustomPlacementConfig *Bucket_CustomPlacementConfig `protobuf:"bytes,26,opt,name=custom_placement_config,json=customPlacementConfig,proto3" json:"custom_placement_config,omitempty"` - // The bucket's Autoclass configuration. If there is no configuration, the - // Autoclass feature will be disabled and have no effect on the bucket. + // Optional. The bucket's Autoclass configuration. If there is no + // configuration, the Autoclass feature will be disabled and have no effect on + // the bucket. Autoclass *Bucket_Autoclass `protobuf:"bytes,28,opt,name=autoclass,proto3" json:"autoclass,omitempty"` // Optional. The bucket's hierarchical namespace configuration. If there is no // configuration, the hierarchical namespace feature will be disabled and have @@ -4546,6 +4663,11 @@ type Bucket struct { // Optional. The bucket's soft delete policy. The soft delete policy prevents // soft-deleted objects from being permanently deleted. SoftDeletePolicy *Bucket_SoftDeletePolicy `protobuf:"bytes,31,opt,name=soft_delete_policy,json=softDeletePolicy,proto3" json:"soft_delete_policy,omitempty"` + // Optional. The bucket's object retention configuration. Must be enabled + // before objects in the bucket may have retention configured. + ObjectRetention *Bucket_ObjectRetention `protobuf:"bytes,33,opt,name=object_retention,json=objectRetention,proto3" json:"object_retention,omitempty"` + // Optional. The bucket's IP filter configuration. + IpFilter *Bucket_IpFilter `protobuf:"bytes,38,opt,name=ip_filter,json=ipFilter,proto3,oneof" json:"ip_filter,omitempty"` } func (x *Bucket) Reset() { @@ -4788,17 +4910,31 @@ func (x *Bucket) GetSoftDeletePolicy() *Bucket_SoftDeletePolicy { return nil } +func (x *Bucket) GetObjectRetention() *Bucket_ObjectRetention { + if x != nil { + return x.ObjectRetention + } + return nil +} + +func (x *Bucket) GetIpFilter() *Bucket_IpFilter { + if x != nil { + return x.IpFilter + } + return nil +} + // An access-control entry. type BucketAccessControl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The access permission for the entity. + // Optional. The access permission for the entity. Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - // The ID of the access-control entry. + // Optional. The ID of the access-control entry. Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - // The entity holding the permission, in one of the following forms: + // Optional. The entity holding the permission, in one of the following forms: // * `user-{userid}` // * `user-{email}` // * `group-{groupid}` @@ -4820,18 +4956,18 @@ type BucketAccessControl struct { // Output only. The alternative entity format, if exists. For project // entities, `project-{team}-{projectid}` format will be returned on response. EntityAlt string `protobuf:"bytes,9,opt,name=entity_alt,json=entityAlt,proto3" json:"entity_alt,omitempty"` - // The ID for the entity, if any. + // Optional. The ID for the entity, if any. EntityId string `protobuf:"bytes,4,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` - // The etag of the BucketAccessControl. + // Optional. The etag of the BucketAccessControl. // If included in the metadata of an update or delete request message, the // operation operation will only be performed if the etag matches that of the // bucket's BucketAccessControl. Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"` - // The email address associated with the entity, if any. + // Optional. The email address associated with the entity, if any. Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - // The domain associated with the entity, if any. + // Optional. The domain associated with the entity, if any. Domain string `protobuf:"bytes,6,opt,name=domain,proto3" json:"domain,omitempty"` - // The project team associated with the entity, if any. + // Optional. The project team associated with the entity, if any. ProjectTeam *ProjectTeam `protobuf:"bytes,7,opt,name=project_team,json=projectTeam,proto3" json:"project_team,omitempty"` } @@ -4996,7 +5132,7 @@ type ObjectChecksums struct { // If set in a WriteObjectRequest, service will validate that the stored // object matches this checksum. Crc32C *uint32 `protobuf:"fixed32,1,opt,name=crc32c,proto3,oneof" json:"crc32c,omitempty"` - // 128 bit MD5 hash of the object data. + // Optional. 128 bit MD5 hash of the object data. // For more information about using the MD5 hash, see // [https://cloud.google.com/storage/docs/hashes-etags#json-api][Hashes and // ETags: Best Practices]. @@ -5050,6 +5186,118 @@ func (x *ObjectChecksums) GetMd5Hash() []byte { return nil } +// The payload of a single user-defined object context. +type ObjectCustomContextPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The value of the object context. + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + // Output only. The time at which the object context was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time at which the object context was last updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` +} + +func (x *ObjectCustomContextPayload) Reset() { + *x = ObjectCustomContextPayload{} + mi := &file_google_storage_v2_storage_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObjectCustomContextPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectCustomContextPayload) ProtoMessage() {} + +func (x *ObjectCustomContextPayload) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectCustomContextPayload.ProtoReflect.Descriptor instead. +func (*ObjectCustomContextPayload) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{47} +} + +func (x *ObjectCustomContextPayload) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *ObjectCustomContextPayload) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *ObjectCustomContextPayload) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +// All contexts of an object grouped by type. +type ObjectContexts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. User-defined object contexts. + Custom map[string]*ObjectCustomContextPayload `protobuf:"bytes,1,rep,name=custom,proto3" json:"custom,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ObjectContexts) Reset() { + *x = ObjectContexts{} + mi := &file_google_storage_v2_storage_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObjectContexts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectContexts) ProtoMessage() {} + +func (x *ObjectContexts) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectContexts.ProtoReflect.Descriptor instead. +func (*ObjectContexts) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{48} +} + +func (x *ObjectContexts) GetCustom() map[string]*ObjectCustomContextPayload { + if x != nil { + return x.Custom + } + return nil +} + // Describes the Customer-Supplied Encryption Key mechanism used to store an // Object's data at rest. type CustomerEncryption struct { @@ -5057,16 +5305,16 @@ type CustomerEncryption struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The encryption algorithm. + // Optional. The encryption algorithm. EncryptionAlgorithm string `protobuf:"bytes,1,opt,name=encryption_algorithm,json=encryptionAlgorithm,proto3" json:"encryption_algorithm,omitempty"` - // SHA256 hash value of the encryption key. + // Optional. SHA256 hash value of the encryption key. // In raw bytes format (not base64-encoded). KeySha256Bytes []byte `protobuf:"bytes,3,opt,name=key_sha256_bytes,json=keySha256Bytes,proto3" json:"key_sha256_bytes,omitempty"` } func (x *CustomerEncryption) Reset() { *x = CustomerEncryption{} - mi := &file_google_storage_v2_storage_proto_msgTypes[47] + mi := &file_google_storage_v2_storage_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5078,7 +5326,7 @@ func (x *CustomerEncryption) String() string { func (*CustomerEncryption) ProtoMessage() {} func (x *CustomerEncryption) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[47] + mi := &file_google_storage_v2_storage_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5091,7 +5339,7 @@ func (x *CustomerEncryption) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomerEncryption.ProtoReflect.Descriptor instead. func (*CustomerEncryption) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{47} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{49} } func (x *CustomerEncryption) GetEncryptionAlgorithm() string { @@ -5124,7 +5372,7 @@ type Object struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Immutable. The name of the bucket containing this object. Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // The etag of the object. + // Optional. The etag of the object. // If included in the metadata of an update or delete request message, the // operation will only be performed if the etag matches that of the live // object. @@ -5141,27 +5389,27 @@ type Object struct { // metageneration number is only meaningful in the context of a particular // generation of a particular object. Metageneration int64 `protobuf:"varint,4,opt,name=metageneration,proto3" json:"metageneration,omitempty"` - // Storage class of the object. + // Optional. Storage class of the object. StorageClass string `protobuf:"bytes,5,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` // Output only. Content-Length of the object data in bytes, matching // [https://tools.ietf.org/html/rfc7230#section-3.3.2][RFC 7230 §3.3.2]. Size int64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` - // Content-Encoding of the object data, matching + // Optional. Content-Encoding of the object data, matching // [https://tools.ietf.org/html/rfc7231#section-3.1.2.2][RFC 7231 §3.1.2.2] ContentEncoding string `protobuf:"bytes,7,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` - // Content-Disposition of the object data, matching + // Optional. Content-Disposition of the object data, matching // [https://tools.ietf.org/html/rfc6266][RFC 6266]. ContentDisposition string `protobuf:"bytes,8,opt,name=content_disposition,json=contentDisposition,proto3" json:"content_disposition,omitempty"` - // Cache-Control directive for the object data, matching + // Optional. Cache-Control directive for the object data, matching // [https://tools.ietf.org/html/rfc7234#section-5.2"][RFC 7234 §5.2]. // If omitted, and the object is accessible to all anonymous users, the // default will be `public, max-age=3600`. CacheControl string `protobuf:"bytes,9,opt,name=cache_control,json=cacheControl,proto3" json:"cache_control,omitempty"` - // Access controls on the object. + // Optional. Access controls on the object. // If iam_config.uniform_bucket_level_access is enabled on the parent // bucket, requests to set, read, or modify acl is an error. Acl []*ObjectAccessControl `protobuf:"bytes,10,rep,name=acl,proto3" json:"acl,omitempty"` - // Content-Language of the object data, matching + // Optional. Content-Language of the object data, matching // [https://tools.ietf.org/html/rfc7231#section-3.1.3.2][RFC 7231 §3.1.3.2]. ContentLanguage string `protobuf:"bytes,11,opt,name=content_language,json=contentLanguage,proto3" json:"content_language,omitempty"` // Output only. If this object is noncurrent, this is the time when the object @@ -5169,7 +5417,7 @@ type Object struct { DeleteTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"` // Output only. The time when the object was finalized. FinalizeTime *timestamppb.Timestamp `protobuf:"bytes,36,opt,name=finalize_time,json=finalizeTime,proto3" json:"finalize_time,omitempty"` - // Content-Type of the object data, matching + // Optional. Content-Type of the object data, matching // [https://tools.ietf.org/html/rfc7231#section-3.1.1.5][RFC 7231 §3.1.1.5]. // If an object is stored without a Content-Type, it is served as // `application/octet-stream`. @@ -5192,28 +5440,32 @@ type Object struct { // on behalf of a requester, such as changing the storage class based on an // Object Lifecycle Configuration. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Cloud KMS Key used to encrypt this object, if the object is encrypted by - // such a key. + // Optional. Cloud KMS Key used to encrypt this object, if the object is + // encrypted by such a key. KmsKey string `protobuf:"bytes,18,opt,name=kms_key,json=kmsKey,proto3" json:"kms_key,omitempty"` // Output only. The time at which the object's storage class was last changed. // When the object is initially created, it will be set to time_created. UpdateStorageClassTime *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=update_storage_class_time,json=updateStorageClassTime,proto3" json:"update_storage_class_time,omitempty"` - // Whether an object is under temporary hold. While this flag is set to true, - // the object is protected against deletion and overwrites. A common use case - // of this flag is regulatory investigations where objects need to be retained - // while the investigation is ongoing. Note that unlike event-based hold, - // temporary hold does not impact retention expiration time of an object. + // Optional. Whether an object is under temporary hold. While this flag is set + // to true, the object is protected against deletion and overwrites. A common + // use case of this flag is regulatory investigations where objects need to be + // retained while the investigation is ongoing. Note that unlike event-based + // hold, temporary hold does not impact retention expiration time of an + // object. TemporaryHold bool `protobuf:"varint,20,opt,name=temporary_hold,json=temporaryHold,proto3" json:"temporary_hold,omitempty"` - // A server-determined value that specifies the earliest time that the - // object's retention period expires. - // Note 1: This field is not provided for objects with an active event-based - // hold, since retention expiration is unknown until the hold is removed. - // Note 2: This value can be provided even when temporary hold is set (so that - // the user can reason about policy without having to first unset the - // temporary hold). + // Optional. A server-determined value that specifies the earliest time that + // the object's retention period expires. Note 1: This field is not provided + // for objects with an active event-based hold, since retention expiration is + // unknown until the hold is removed. Note 2: This value can be provided even + // when temporary hold is set (so that the user can reason about policy + // without having to first unset the temporary hold). RetentionExpireTime *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=retention_expire_time,json=retentionExpireTime,proto3" json:"retention_expire_time,omitempty"` - // User-provided metadata, in key/value pairs. + // Optional. User-provided metadata, in key/value pairs. Metadata map[string]string `protobuf:"bytes,22,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. User-defined or system-defined object contexts. Each object + // context is a key-payload pair, where the key provides the identification + // and the payload holds the associated value and additional metadata. + Contexts *ObjectContexts `protobuf:"bytes,38,opt,name=contexts,proto3" json:"contexts,omitempty"` // Whether an object is under event-based hold. // An event-based hold is a way to force the retention of an object until // after some event occurs. Once the hold is released by explicitly setting @@ -5229,10 +5481,10 @@ type Object struct { // Output only. The owner of the object. This will always be the uploader of // the object. Owner *Owner `protobuf:"bytes,24,opt,name=owner,proto3" json:"owner,omitempty"` - // Metadata of Customer-Supplied Encryption Key, if the object is encrypted by - // such a key. + // Optional. Metadata of Customer-Supplied Encryption Key, if the object is + // encrypted by such a key. CustomerEncryption *CustomerEncryption `protobuf:"bytes,25,opt,name=customer_encryption,json=customerEncryption,proto3" json:"customer_encryption,omitempty"` - // A user-specified timestamp set on an object. + // Optional. A user-specified timestamp set on an object. CustomTime *timestamppb.Timestamp `protobuf:"bytes,26,opt,name=custom_time,json=customTime,proto3" json:"custom_time,omitempty"` // Output only. This is the time when the object became soft-deleted. // @@ -5244,11 +5496,14 @@ type Object struct { // Only set when an object becomes soft-deleted with a soft_delete_policy. // Otherwise, the object will not be accessible. HardDeleteTime *timestamppb.Timestamp `protobuf:"bytes,29,opt,name=hard_delete_time,json=hardDeleteTime,proto3,oneof" json:"hard_delete_time,omitempty"` + // Optional. Retention configuration of this object. + // May only be configured if the bucket has object retention enabled. + Retention *Object_Retention `protobuf:"bytes,30,opt,name=retention,proto3" json:"retention,omitempty"` } func (x *Object) Reset() { *x = Object{} - mi := &file_google_storage_v2_storage_proto_msgTypes[48] + mi := &file_google_storage_v2_storage_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5260,7 +5515,7 @@ func (x *Object) String() string { func (*Object) ProtoMessage() {} func (x *Object) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[48] + mi := &file_google_storage_v2_storage_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5273,7 +5528,7 @@ func (x *Object) ProtoReflect() protoreflect.Message { // Deprecated: Use Object.ProtoReflect.Descriptor instead. func (*Object) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{48} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{50} } func (x *Object) GetName() string { @@ -5451,6 +5706,13 @@ func (x *Object) GetMetadata() map[string]string { return nil } +func (x *Object) GetContexts() *ObjectContexts { + if x != nil { + return x.Contexts + } + return nil +} + func (x *Object) GetEventBasedHold() bool { if x != nil && x.EventBasedHold != nil { return *x.EventBasedHold @@ -5493,20 +5755,28 @@ func (x *Object) GetHardDeleteTime() *timestamppb.Timestamp { return nil } +func (x *Object) GetRetention() *Object_Retention { + if x != nil { + return x.Retention + } + return nil +} + // An access-control entry. type ObjectAccessControl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The access permission for the entity. One of the following values: + // Optional. The access permission for the entity. One of the following + // values: // * `READER` // * `WRITER` // * `OWNER` Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - // The ID of the access-control entry. + // Optional. The ID of the access-control entry. Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - // The entity holding the permission, in one of the following forms: + // Optional. The entity holding the permission, in one of the following forms: // * `user-{userid}` // * `user-{email}` // * `group-{groupid}` @@ -5528,24 +5798,24 @@ type ObjectAccessControl struct { // Output only. The alternative entity format, if exists. For project // entities, `project-{team}-{projectid}` format will be returned on response. EntityAlt string `protobuf:"bytes,9,opt,name=entity_alt,json=entityAlt,proto3" json:"entity_alt,omitempty"` - // The ID for the entity, if any. + // Optional. The ID for the entity, if any. EntityId string `protobuf:"bytes,4,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` - // The etag of the ObjectAccessControl. + // Optional. The etag of the ObjectAccessControl. // If included in the metadata of an update or delete request message, the // operation will only be performed if the etag matches that of the live // object's ObjectAccessControl. Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"` - // The email address associated with the entity, if any. + // Optional. The email address associated with the entity, if any. Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - // The domain associated with the entity, if any. + // Optional. The domain associated with the entity, if any. Domain string `protobuf:"bytes,6,opt,name=domain,proto3" json:"domain,omitempty"` - // The project team associated with the entity, if any. + // Optional. The project team associated with the entity, if any. ProjectTeam *ProjectTeam `protobuf:"bytes,7,opt,name=project_team,json=projectTeam,proto3" json:"project_team,omitempty"` } func (x *ObjectAccessControl) Reset() { *x = ObjectAccessControl{} - mi := &file_google_storage_v2_storage_proto_msgTypes[49] + mi := &file_google_storage_v2_storage_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5557,7 +5827,7 @@ func (x *ObjectAccessControl) String() string { func (*ObjectAccessControl) ProtoMessage() {} func (x *ObjectAccessControl) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[49] + mi := &file_google_storage_v2_storage_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5570,7 +5840,7 @@ func (x *ObjectAccessControl) ProtoReflect() protoreflect.Message { // Deprecated: Use ObjectAccessControl.ProtoReflect.Descriptor instead. func (*ObjectAccessControl) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{49} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{51} } func (x *ObjectAccessControl) GetRole() string { @@ -5654,7 +5924,7 @@ type ListObjectsResponse struct { func (x *ListObjectsResponse) Reset() { *x = ListObjectsResponse{} - mi := &file_google_storage_v2_storage_proto_msgTypes[50] + mi := &file_google_storage_v2_storage_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5666,7 +5936,7 @@ func (x *ListObjectsResponse) String() string { func (*ListObjectsResponse) ProtoMessage() {} func (x *ListObjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[50] + mi := &file_google_storage_v2_storage_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5679,7 +5949,7 @@ func (x *ListObjectsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListObjectsResponse.ProtoReflect.Descriptor instead. func (*ListObjectsResponse) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{50} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{52} } func (x *ListObjectsResponse) GetObjects() []*Object { @@ -5709,15 +5979,15 @@ type ProjectTeam struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The project number. + // Optional. The project number. ProjectNumber string `protobuf:"bytes,1,opt,name=project_number,json=projectNumber,proto3" json:"project_number,omitempty"` - // The team. + // Optional. The team. Team string `protobuf:"bytes,2,opt,name=team,proto3" json:"team,omitempty"` } func (x *ProjectTeam) Reset() { *x = ProjectTeam{} - mi := &file_google_storage_v2_storage_proto_msgTypes[51] + mi := &file_google_storage_v2_storage_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5729,7 +5999,7 @@ func (x *ProjectTeam) String() string { func (*ProjectTeam) ProtoMessage() {} func (x *ProjectTeam) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[51] + mi := &file_google_storage_v2_storage_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5742,7 +6012,7 @@ func (x *ProjectTeam) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectTeam.ProtoReflect.Descriptor instead. func (*ProjectTeam) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{51} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{53} } func (x *ProjectTeam) GetProjectNumber() string { @@ -5765,15 +6035,15 @@ type Owner struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The entity, in the form `user-`*userId*. + // Optional. The entity, in the form `user-`*userId*. Entity string `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` - // The ID for the entity. + // Optional. The ID for the entity. EntityId string `protobuf:"bytes,2,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` } func (x *Owner) Reset() { *x = Owner{} - mi := &file_google_storage_v2_storage_proto_msgTypes[52] + mi := &file_google_storage_v2_storage_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5785,7 +6055,7 @@ func (x *Owner) String() string { func (*Owner) ProtoMessage() {} func (x *Owner) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[52] + mi := &file_google_storage_v2_storage_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5798,7 +6068,7 @@ func (x *Owner) ProtoReflect() protoreflect.Message { // Deprecated: Use Owner.ProtoReflect.Descriptor instead. func (*Owner) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{52} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{54} } func (x *Owner) GetEntity() string { @@ -5831,7 +6101,7 @@ type ContentRange struct { func (x *ContentRange) Reset() { *x = ContentRange{} - mi := &file_google_storage_v2_storage_proto_msgTypes[53] + mi := &file_google_storage_v2_storage_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5843,7 +6113,7 @@ func (x *ContentRange) String() string { func (*ContentRange) ProtoMessage() {} func (x *ContentRange) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[53] + mi := &file_google_storage_v2_storage_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5856,7 +6126,7 @@ func (x *ContentRange) ProtoReflect() protoreflect.Message { // Deprecated: Use ContentRange.ProtoReflect.Descriptor instead. func (*ContentRange) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{53} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{55} } func (x *ContentRange) GetStart() int64 { @@ -5889,15 +6159,15 @@ type ComposeObjectRequest_SourceObject struct { // Required. The source object's name. All source objects must reside in the // same bucket. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The generation of this object to use as the source. + // Optional. The generation of this object to use as the source. Generation int64 `protobuf:"varint,2,opt,name=generation,proto3" json:"generation,omitempty"` - // Conditions that must be met for this operation to execute. + // Optional. Conditions that must be met for this operation to execute. ObjectPreconditions *ComposeObjectRequest_SourceObject_ObjectPreconditions `protobuf:"bytes,3,opt,name=object_preconditions,json=objectPreconditions,proto3" json:"object_preconditions,omitempty"` } func (x *ComposeObjectRequest_SourceObject) Reset() { *x = ComposeObjectRequest_SourceObject{} - mi := &file_google_storage_v2_storage_proto_msgTypes[54] + mi := &file_google_storage_v2_storage_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5909,7 +6179,7 @@ func (x *ComposeObjectRequest_SourceObject) String() string { func (*ComposeObjectRequest_SourceObject) ProtoMessage() {} func (x *ComposeObjectRequest_SourceObject) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[54] + mi := &file_google_storage_v2_storage_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5960,7 +6230,7 @@ type ComposeObjectRequest_SourceObject_ObjectPreconditions struct { func (x *ComposeObjectRequest_SourceObject_ObjectPreconditions) Reset() { *x = ComposeObjectRequest_SourceObject_ObjectPreconditions{} - mi := &file_google_storage_v2_storage_proto_msgTypes[55] + mi := &file_google_storage_v2_storage_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5972,7 +6242,7 @@ func (x *ComposeObjectRequest_SourceObject_ObjectPreconditions) String() string func (*ComposeObjectRequest_SourceObject_ObjectPreconditions) ProtoMessage() {} func (x *ComposeObjectRequest_SourceObject_ObjectPreconditions) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[55] + mi := &file_google_storage_v2_storage_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6001,13 +6271,13 @@ type Bucket_Billing struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // When set to true, Requester Pays is enabled for this bucket. + // Optional. When set to true, Requester Pays is enabled for this bucket. RequesterPays bool `protobuf:"varint,1,opt,name=requester_pays,json=requesterPays,proto3" json:"requester_pays,omitempty"` } func (x *Bucket_Billing) Reset() { *x = Bucket_Billing{} - mi := &file_google_storage_v2_storage_proto_msgTypes[56] + mi := &file_google_storage_v2_storage_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6019,7 +6289,7 @@ func (x *Bucket_Billing) String() string { func (*Bucket_Billing) ProtoMessage() {} func (x *Bucket_Billing) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[56] + mi := &file_google_storage_v2_storage_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6051,19 +6321,20 @@ type Bucket_Cors struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The list of Origins eligible to receive CORS response headers. See - // [https://tools.ietf.org/html/rfc6454][RFC 6454] for more on origins. + // Optional. The list of Origins eligible to receive CORS response headers. + // See [https://tools.ietf.org/html/rfc6454][RFC 6454] for more on origins. // Note: "*" is permitted in the list of origins, and means "any Origin". Origin []string `protobuf:"bytes,1,rep,name=origin,proto3" json:"origin,omitempty"` - // The list of HTTP methods on which to include CORS response headers, + // Optional. The list of HTTP methods on which to include CORS response + // headers, // (`GET`, `OPTIONS`, `POST`, etc) Note: "*" is permitted in the list of // methods, and means "any method". Method []string `protobuf:"bytes,2,rep,name=method,proto3" json:"method,omitempty"` - // The list of HTTP headers other than the + // Optional. The list of HTTP headers other than the // [https://www.w3.org/TR/cors/#simple-response-header][simple response // headers] to give permission for the user-agent to share across domains. ResponseHeader []string `protobuf:"bytes,3,rep,name=response_header,json=responseHeader,proto3" json:"response_header,omitempty"` - // The value, in seconds, to return in the + // Optional. The value, in seconds, to return in the // [https://www.w3.org/TR/cors/#access-control-max-age-response-header][Access-Control-Max-Age // header] used in preflight responses. MaxAgeSeconds int32 `protobuf:"varint,4,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` @@ -6071,7 +6342,7 @@ type Bucket_Cors struct { func (x *Bucket_Cors) Reset() { *x = Bucket_Cors{} - mi := &file_google_storage_v2_storage_proto_msgTypes[57] + mi := &file_google_storage_v2_storage_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6083,7 +6354,7 @@ func (x *Bucket_Cors) String() string { func (*Bucket_Cors) ProtoMessage() {} func (x *Bucket_Cors) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[57] + mi := &file_google_storage_v2_storage_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6133,14 +6404,29 @@ type Bucket_Encryption struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the Cloud KMS key that will be used to encrypt objects - // inserted into this bucket, if no encryption method is specified. + // Optional. The name of the Cloud KMS key that will be used to encrypt + // objects inserted into this bucket, if no encryption method is specified. DefaultKmsKey string `protobuf:"bytes,1,opt,name=default_kms_key,json=defaultKmsKey,proto3" json:"default_kms_key,omitempty"` + // Optional. If omitted, then new objects with GMEK encryption-type is + // allowed. If set, then new objects created in this bucket must comply with + // enforcement config. Changing this has no effect on existing objects; it + // applies to new objects only. + GoogleManagedEncryptionEnforcementConfig *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig `protobuf:"bytes,2,opt,name=google_managed_encryption_enforcement_config,json=googleManagedEncryptionEnforcementConfig,proto3,oneof" json:"google_managed_encryption_enforcement_config,omitempty"` + // Optional. If omitted, then new objects with CMEK encryption-type is + // allowed. If set, then new objects created in this bucket must comply with + // enforcement config. Changing this has no effect on existing objects; it + // applies to new objects only. + CustomerManagedEncryptionEnforcementConfig *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig `protobuf:"bytes,3,opt,name=customer_managed_encryption_enforcement_config,json=customerManagedEncryptionEnforcementConfig,proto3,oneof" json:"customer_managed_encryption_enforcement_config,omitempty"` + // Optional. If omitted, then new objects with CSEK encryption-type is + // allowed. If set, then new objects created in this bucket must comply with + // enforcement config. Changing this has no effect on existing objects; it + // applies to new objects only. + CustomerSuppliedEncryptionEnforcementConfig *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig `protobuf:"bytes,4,opt,name=customer_supplied_encryption_enforcement_config,json=customerSuppliedEncryptionEnforcementConfig,proto3,oneof" json:"customer_supplied_encryption_enforcement_config,omitempty"` } func (x *Bucket_Encryption) Reset() { *x = Bucket_Encryption{} - mi := &file_google_storage_v2_storage_proto_msgTypes[58] + mi := &file_google_storage_v2_storage_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6152,7 +6438,7 @@ func (x *Bucket_Encryption) String() string { func (*Bucket_Encryption) ProtoMessage() {} func (x *Bucket_Encryption) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[58] + mi := &file_google_storage_v2_storage_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6175,22 +6461,43 @@ func (x *Bucket_Encryption) GetDefaultKmsKey() string { return "" } -// Bucket restriction options. -type Bucket_IamConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Bucket restriction options currently enforced on the bucket. - UniformBucketLevelAccess *Bucket_IamConfig_UniformBucketLevelAccess `protobuf:"bytes,1,opt,name=uniform_bucket_level_access,json=uniformBucketLevelAccess,proto3" json:"uniform_bucket_level_access,omitempty"` - // Whether IAM will enforce public access prevention. Valid values are - // "enforced" or "inherited". - PublicAccessPrevention string `protobuf:"bytes,3,opt,name=public_access_prevention,json=publicAccessPrevention,proto3" json:"public_access_prevention,omitempty"` +func (x *Bucket_Encryption) GetGoogleManagedEncryptionEnforcementConfig() *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig { + if x != nil { + return x.GoogleManagedEncryptionEnforcementConfig + } + return nil } -func (x *Bucket_IamConfig) Reset() { +func (x *Bucket_Encryption) GetCustomerManagedEncryptionEnforcementConfig() *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig { + if x != nil { + return x.CustomerManagedEncryptionEnforcementConfig + } + return nil +} + +func (x *Bucket_Encryption) GetCustomerSuppliedEncryptionEnforcementConfig() *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig { + if x != nil { + return x.CustomerSuppliedEncryptionEnforcementConfig + } + return nil +} + +// Bucket restriction options. +type Bucket_IamConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Bucket restriction options currently enforced on the bucket. + UniformBucketLevelAccess *Bucket_IamConfig_UniformBucketLevelAccess `protobuf:"bytes,1,opt,name=uniform_bucket_level_access,json=uniformBucketLevelAccess,proto3" json:"uniform_bucket_level_access,omitempty"` + // Optional. Whether IAM will enforce public access prevention. Valid values + // are "enforced" or "inherited". + PublicAccessPrevention string `protobuf:"bytes,3,opt,name=public_access_prevention,json=publicAccessPrevention,proto3" json:"public_access_prevention,omitempty"` +} + +func (x *Bucket_IamConfig) Reset() { *x = Bucket_IamConfig{} - mi := &file_google_storage_v2_storage_proto_msgTypes[59] + mi := &file_google_storage_v2_storage_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6202,7 +6509,7 @@ func (x *Bucket_IamConfig) String() string { func (*Bucket_IamConfig) ProtoMessage() {} func (x *Bucket_IamConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[59] + mi := &file_google_storage_v2_storage_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6239,14 +6546,14 @@ type Bucket_Lifecycle struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A lifecycle management rule, which is made of an action to take and the - // condition(s) under which the action will be taken. + // Optional. A lifecycle management rule, which is made of an action to take + // and the condition(s) under which the action will be taken. Rule []*Bucket_Lifecycle_Rule `protobuf:"bytes,1,rep,name=rule,proto3" json:"rule,omitempty"` } func (x *Bucket_Lifecycle) Reset() { *x = Bucket_Lifecycle{} - mi := &file_google_storage_v2_storage_proto_msgTypes[60] + mi := &file_google_storage_v2_storage_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6258,7 +6565,7 @@ func (x *Bucket_Lifecycle) String() string { func (*Bucket_Lifecycle) ProtoMessage() {} func (x *Bucket_Lifecycle) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[60] + mi := &file_google_storage_v2_storage_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6287,16 +6594,16 @@ type Bucket_Logging struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The destination bucket where the current bucket's logs should be placed, - // using path format (like `projects/123456/buckets/foo`). + // Optional. The destination bucket where the current bucket's logs should + // be placed, using path format (like `projects/123456/buckets/foo`). LogBucket string `protobuf:"bytes,1,opt,name=log_bucket,json=logBucket,proto3" json:"log_bucket,omitempty"` - // A prefix for log object names. + // Optional. A prefix for log object names. LogObjectPrefix string `protobuf:"bytes,2,opt,name=log_object_prefix,json=logObjectPrefix,proto3" json:"log_object_prefix,omitempty"` } func (x *Bucket_Logging) Reset() { *x = Bucket_Logging{} - mi := &file_google_storage_v2_storage_proto_msgTypes[61] + mi := &file_google_storage_v2_storage_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6308,7 +6615,7 @@ func (x *Bucket_Logging) String() string { func (*Bucket_Logging) ProtoMessage() {} func (x *Bucket_Logging) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[61] + mi := &file_google_storage_v2_storage_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6338,28 +6645,76 @@ func (x *Bucket_Logging) GetLogObjectPrefix() string { return "" } +// Object Retention related properties of a bucket. +type Bucket_ObjectRetention struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Output only. If true, object retention is enabled for the + // bucket. + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` +} + +func (x *Bucket_ObjectRetention) Reset() { + *x = Bucket_ObjectRetention{} + mi := &file_google_storage_v2_storage_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_ObjectRetention) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_ObjectRetention) ProtoMessage() {} + +func (x *Bucket_ObjectRetention) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_ObjectRetention.ProtoReflect.Descriptor instead. +func (*Bucket_ObjectRetention) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 6} +} + +func (x *Bucket_ObjectRetention) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + // Retention policy properties of a bucket. type Bucket_RetentionPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Server-determined value that indicates the time from which policy was - // enforced and effective. + // Optional. Server-determined value that indicates the time from which + // policy was enforced and effective. EffectiveTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=effective_time,json=effectiveTime,proto3" json:"effective_time,omitempty"` - // Once locked, an object retention policy cannot be modified. + // Optional. Once locked, an object retention policy cannot be modified. IsLocked bool `protobuf:"varint,2,opt,name=is_locked,json=isLocked,proto3" json:"is_locked,omitempty"` - // The duration that objects need to be retained. Retention duration must be - // greater than zero and less than 100 years. Note that enforcement of - // retention periods less than a day is not guaranteed. Such periods should - // only be used for testing purposes. Any `nanos` value specified will be - // rounded down to the nearest second. + // Optional. The duration that objects need to be retained. Retention + // duration must be greater than zero and less than 100 years. Note that + // enforcement of retention periods less than a day is not guaranteed. Such + // periods should only be used for testing purposes. Any `nanos` value + // specified will be rounded down to the nearest second. RetentionDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=retention_duration,json=retentionDuration,proto3" json:"retention_duration,omitempty"` } func (x *Bucket_RetentionPolicy) Reset() { *x = Bucket_RetentionPolicy{} - mi := &file_google_storage_v2_storage_proto_msgTypes[62] + mi := &file_google_storage_v2_storage_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6371,7 +6726,7 @@ func (x *Bucket_RetentionPolicy) String() string { func (*Bucket_RetentionPolicy) ProtoMessage() {} func (x *Bucket_RetentionPolicy) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[62] + mi := &file_google_storage_v2_storage_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6384,7 +6739,7 @@ func (x *Bucket_RetentionPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_RetentionPolicy.ProtoReflect.Descriptor instead. func (*Bucket_RetentionPolicy) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 6} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 7} } func (x *Bucket_RetentionPolicy) GetEffectiveTime() *timestamppb.Timestamp { @@ -6424,7 +6779,7 @@ type Bucket_SoftDeletePolicy struct { func (x *Bucket_SoftDeletePolicy) Reset() { *x = Bucket_SoftDeletePolicy{} - mi := &file_google_storage_v2_storage_proto_msgTypes[63] + mi := &file_google_storage_v2_storage_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6436,7 +6791,7 @@ func (x *Bucket_SoftDeletePolicy) String() string { func (*Bucket_SoftDeletePolicy) ProtoMessage() {} func (x *Bucket_SoftDeletePolicy) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[63] + mi := &file_google_storage_v2_storage_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6449,7 +6804,7 @@ func (x *Bucket_SoftDeletePolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_SoftDeletePolicy.ProtoReflect.Descriptor instead. func (*Bucket_SoftDeletePolicy) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 7} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 8} } func (x *Bucket_SoftDeletePolicy) GetRetentionDuration() *durationpb.Duration { @@ -6474,13 +6829,13 @@ type Bucket_Versioning struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // While set to true, versioning is fully enabled for this bucket. + // Optional. While set to true, versioning is fully enabled for this bucket. Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` } func (x *Bucket_Versioning) Reset() { *x = Bucket_Versioning{} - mi := &file_google_storage_v2_storage_proto_msgTypes[64] + mi := &file_google_storage_v2_storage_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6492,7 +6847,7 @@ func (x *Bucket_Versioning) String() string { func (*Bucket_Versioning) ProtoMessage() {} func (x *Bucket_Versioning) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[64] + mi := &file_google_storage_v2_storage_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6505,7 +6860,7 @@ func (x *Bucket_Versioning) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_Versioning.ProtoReflect.Descriptor instead. func (*Bucket_Versioning) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 8} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 9} } func (x *Bucket_Versioning) GetEnabled() bool { @@ -6523,12 +6878,12 @@ type Bucket_Website struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If the requested object path is missing, the service will ensure the path - // has a trailing '/', append this suffix, and attempt to retrieve the - // resulting object. This allows the creation of `index.html` + // Optional. If the requested object path is missing, the service will + // ensure the path has a trailing '/', append this suffix, and attempt to + // retrieve the resulting object. This allows the creation of `index.html` // objects to represent directory pages. MainPageSuffix string `protobuf:"bytes,1,opt,name=main_page_suffix,json=mainPageSuffix,proto3" json:"main_page_suffix,omitempty"` - // If the requested object path is missing, and any + // Optional. If the requested object path is missing, and any // `mainPageSuffix` object is missing, if applicable, the service // will return the named object from this bucket as the content for a // [https://tools.ietf.org/html/rfc7231#section-6.5.4][404 Not Found] @@ -6538,7 +6893,7 @@ type Bucket_Website struct { func (x *Bucket_Website) Reset() { *x = Bucket_Website{} - mi := &file_google_storage_v2_storage_proto_msgTypes[65] + mi := &file_google_storage_v2_storage_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6550,7 +6905,7 @@ func (x *Bucket_Website) String() string { func (*Bucket_Website) ProtoMessage() {} func (x *Bucket_Website) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[65] + mi := &file_google_storage_v2_storage_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6563,7 +6918,7 @@ func (x *Bucket_Website) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_Website.ProtoReflect.Descriptor instead. func (*Bucket_Website) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 9} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 10} } func (x *Bucket_Website) GetMainPageSuffix() string { @@ -6582,19 +6937,19 @@ func (x *Bucket_Website) GetNotFoundPage() string { // Configuration for Custom Dual Regions. It should specify precisely two // eligible regions within the same Multiregion. More information on regions -// may be found [https://cloud.google.com/storage/docs/locations][here]. +// may be found [here](https://cloud.google.com/storage/docs/locations). type Bucket_CustomPlacementConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of locations to use for data placement. + // Optional. List of locations to use for data placement. DataLocations []string `protobuf:"bytes,1,rep,name=data_locations,json=dataLocations,proto3" json:"data_locations,omitempty"` } func (x *Bucket_CustomPlacementConfig) Reset() { *x = Bucket_CustomPlacementConfig{} - mi := &file_google_storage_v2_storage_proto_msgTypes[66] + mi := &file_google_storage_v2_storage_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6606,7 +6961,7 @@ func (x *Bucket_CustomPlacementConfig) String() string { func (*Bucket_CustomPlacementConfig) ProtoMessage() {} func (x *Bucket_CustomPlacementConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[66] + mi := &file_google_storage_v2_storage_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6619,7 +6974,7 @@ func (x *Bucket_CustomPlacementConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_CustomPlacementConfig.ProtoReflect.Descriptor instead. func (*Bucket_CustomPlacementConfig) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 10} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 11} } func (x *Bucket_CustomPlacementConfig) GetDataLocations() []string { @@ -6635,7 +6990,7 @@ type Bucket_Autoclass struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Enables Autoclass. + // Optional. Enables Autoclass. Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` // Output only. Latest instant at which the `enabled` field was set to true // after being disabled/unconfigured or set to false after being enabled. If @@ -6653,7 +7008,7 @@ type Bucket_Autoclass struct { func (x *Bucket_Autoclass) Reset() { *x = Bucket_Autoclass{} - mi := &file_google_storage_v2_storage_proto_msgTypes[67] + mi := &file_google_storage_v2_storage_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6665,7 +7020,7 @@ func (x *Bucket_Autoclass) String() string { func (*Bucket_Autoclass) ProtoMessage() {} func (x *Bucket_Autoclass) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[67] + mi := &file_google_storage_v2_storage_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6678,7 +7033,7 @@ func (x *Bucket_Autoclass) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_Autoclass.ProtoReflect.Descriptor instead. func (*Bucket_Autoclass) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 11} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 12} } func (x *Bucket_Autoclass) GetEnabled() bool { @@ -6709,6 +7064,102 @@ func (x *Bucket_Autoclass) GetTerminalStorageClassUpdateTime() *timestamppb.Time return nil } +// The [bucket IP +// filtering](https://cloud.google.com/storage/docs/ip-filtering-overview) +// configuration. Specifies the network sources that can access the bucket, as +// well as its underlying objects. +type Bucket_IpFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The state of the IP filter configuration. Valid values are `Enabled` and + // `Disabled`. When set to `Enabled`, IP filtering rules are applied to a + // bucket and all incoming requests to the bucket are evaluated against + // these rules. When set to `Disabled`, IP filtering rules are not applied + // to a bucket.". + Mode *string `protobuf:"bytes,1,opt,name=mode,proto3,oneof" json:"mode,omitempty"` + // Public IPs allowed to operate or access the bucket. + PublicNetworkSource *Bucket_IpFilter_PublicNetworkSource `protobuf:"bytes,2,opt,name=public_network_source,json=publicNetworkSource,proto3,oneof" json:"public_network_source,omitempty"` + // Optional. The list of network sources that are allowed to access + // operations on the bucket or the underlying objects. + VpcNetworkSources []*Bucket_IpFilter_VpcNetworkSource `protobuf:"bytes,3,rep,name=vpc_network_sources,json=vpcNetworkSources,proto3" json:"vpc_network_sources,omitempty"` + // Optional. Whether or not to allow VPCs from orgs different than the + // bucket's parent org to access the bucket. When set to true, validations + // on the existence of the VPCs won't be performed. If set to false, each + // VPC network source will be checked to belong to the same org as the + // bucket as well as validated for existence. + AllowCrossOrgVpcs bool `protobuf:"varint,4,opt,name=allow_cross_org_vpcs,json=allowCrossOrgVpcs,proto3" json:"allow_cross_org_vpcs,omitempty"` + // Whether or not to allow all P4SA access to the bucket. When set to true, + // IP filter config validation will not apply. + AllowAllServiceAgentAccess *bool `protobuf:"varint,5,opt,name=allow_all_service_agent_access,json=allowAllServiceAgentAccess,proto3,oneof" json:"allow_all_service_agent_access,omitempty"` +} + +func (x *Bucket_IpFilter) Reset() { + *x = Bucket_IpFilter{} + mi := &file_google_storage_v2_storage_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_IpFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_IpFilter) ProtoMessage() {} + +func (x *Bucket_IpFilter) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_IpFilter.ProtoReflect.Descriptor instead. +func (*Bucket_IpFilter) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 13} +} + +func (x *Bucket_IpFilter) GetMode() string { + if x != nil && x.Mode != nil { + return *x.Mode + } + return "" +} + +func (x *Bucket_IpFilter) GetPublicNetworkSource() *Bucket_IpFilter_PublicNetworkSource { + if x != nil { + return x.PublicNetworkSource + } + return nil +} + +func (x *Bucket_IpFilter) GetVpcNetworkSources() []*Bucket_IpFilter_VpcNetworkSource { + if x != nil { + return x.VpcNetworkSources + } + return nil +} + +func (x *Bucket_IpFilter) GetAllowCrossOrgVpcs() bool { + if x != nil { + return x.AllowCrossOrgVpcs + } + return false +} + +func (x *Bucket_IpFilter) GetAllowAllServiceAgentAccess() bool { + if x != nil && x.AllowAllServiceAgentAccess != nil { + return *x.AllowAllServiceAgentAccess + } + return false +} + // Configuration for a bucket's hierarchical namespace feature. type Bucket_HierarchicalNamespace struct { state protoimpl.MessageState @@ -6721,7 +7172,7 @@ type Bucket_HierarchicalNamespace struct { func (x *Bucket_HierarchicalNamespace) Reset() { *x = Bucket_HierarchicalNamespace{} - mi := &file_google_storage_v2_storage_proto_msgTypes[68] + mi := &file_google_storage_v2_storage_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6733,7 +7184,7 @@ func (x *Bucket_HierarchicalNamespace) String() string { func (*Bucket_HierarchicalNamespace) ProtoMessage() {} func (x *Bucket_HierarchicalNamespace) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[68] + mi := &file_google_storage_v2_storage_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6746,7 +7197,7 @@ func (x *Bucket_HierarchicalNamespace) ProtoReflect() protoreflect.Message { // Deprecated: Use Bucket_HierarchicalNamespace.ProtoReflect.Descriptor instead. func (*Bucket_HierarchicalNamespace) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 12} + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 14} } func (x *Bucket_HierarchicalNamespace) GetEnabled() bool { @@ -6756,37 +7207,38 @@ func (x *Bucket_HierarchicalNamespace) GetEnabled() bool { return false } -// Settings for Uniform Bucket level access. -// See https://cloud.google.com/storage/docs/uniform-bucket-level-access. -type Bucket_IamConfig_UniformBucketLevelAccess struct { +// Google Managed Encryption (GMEK) enforcement config of a bucket. +type Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If set, access checks only use bucket-level IAM policies or above. - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - // The deadline time for changing - // `iam_config.uniform_bucket_level_access.enabled` from `true` to - // `false`. Mutable until the specified deadline is reached, but not - // afterward. - LockTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=lock_time,json=lockTime,proto3" json:"lock_time,omitempty"` + // Restriction mode for google-managed encryption for new objects within + // the bucket. Valid values are: "NotRestricted", "FullyRestricted". + // If `NotRestricted` or unset, creation of new objects with + // google-managed encryption is allowed. + // If `FullyRestricted`, new objects can't be created using google-managed + // encryption. + RestrictionMode *string `protobuf:"bytes,3,opt,name=restriction_mode,json=restrictionMode,proto3,oneof" json:"restriction_mode,omitempty"` + // Time from which the config was effective. This is service-provided. + EffectiveTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=effective_time,json=effectiveTime,proto3,oneof" json:"effective_time,omitempty"` } -func (x *Bucket_IamConfig_UniformBucketLevelAccess) Reset() { - *x = Bucket_IamConfig_UniformBucketLevelAccess{} - mi := &file_google_storage_v2_storage_proto_msgTypes[70] +func (x *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) Reset() { + *x = Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig{} + mi := &file_google_storage_v2_storage_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Bucket_IamConfig_UniformBucketLevelAccess) String() string { +func (x *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bucket_IamConfig_UniformBucketLevelAccess) ProtoMessage() {} +func (*Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) ProtoMessage() {} -func (x *Bucket_IamConfig_UniformBucketLevelAccess) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[70] +func (x *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6797,53 +7249,57 @@ func (x *Bucket_IamConfig_UniformBucketLevelAccess) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use Bucket_IamConfig_UniformBucketLevelAccess.ProtoReflect.Descriptor instead. -func (*Bucket_IamConfig_UniformBucketLevelAccess) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 3, 0} +// Deprecated: Use Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig.ProtoReflect.Descriptor instead. +func (*Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 2, 0} } -func (x *Bucket_IamConfig_UniformBucketLevelAccess) GetEnabled() bool { - if x != nil { - return x.Enabled +func (x *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) GetRestrictionMode() string { + if x != nil && x.RestrictionMode != nil { + return *x.RestrictionMode } - return false + return "" } -func (x *Bucket_IamConfig_UniformBucketLevelAccess) GetLockTime() *timestamppb.Timestamp { +func (x *Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig) GetEffectiveTime() *timestamppb.Timestamp { if x != nil { - return x.LockTime + return x.EffectiveTime } return nil } -// A lifecycle Rule, combining an action to take on an object and a -// condition which will trigger that action. -type Bucket_Lifecycle_Rule struct { +// Customer Managed Encryption (CMEK) enforcement config of a bucket. +type Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The action to take. - Action *Bucket_Lifecycle_Rule_Action `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` - // The condition(s) under which the action will be taken. - Condition *Bucket_Lifecycle_Rule_Condition `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"` + // Restriction mode for customer-managed encryption for new objects within + // the bucket. Valid values are: "NotRestricted", "FullyRestricted". + // If `NotRestricted` or unset, creation of new objects with + // customer-managed encryption is allowed. + // If `FullyRestricted`, new objects can't be created using + // customer-managed encryption. + RestrictionMode *string `protobuf:"bytes,3,opt,name=restriction_mode,json=restrictionMode,proto3,oneof" json:"restriction_mode,omitempty"` + // Time from which the config was effective. This is service-provided. + EffectiveTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=effective_time,json=effectiveTime,proto3,oneof" json:"effective_time,omitempty"` } -func (x *Bucket_Lifecycle_Rule) Reset() { - *x = Bucket_Lifecycle_Rule{} - mi := &file_google_storage_v2_storage_proto_msgTypes[71] +func (x *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) Reset() { + *x = Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig{} + mi := &file_google_storage_v2_storage_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Bucket_Lifecycle_Rule) String() string { +func (x *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bucket_Lifecycle_Rule) ProtoMessage() {} +func (*Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) ProtoMessage() {} -func (x *Bucket_Lifecycle_Rule) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[71] +func (x *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6854,54 +7310,58 @@ func (x *Bucket_Lifecycle_Rule) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bucket_Lifecycle_Rule.ProtoReflect.Descriptor instead. -func (*Bucket_Lifecycle_Rule) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 4, 0} +// Deprecated: Use Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig.ProtoReflect.Descriptor instead. +func (*Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 2, 1} } -func (x *Bucket_Lifecycle_Rule) GetAction() *Bucket_Lifecycle_Rule_Action { - if x != nil { - return x.Action +func (x *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) GetRestrictionMode() string { + if x != nil && x.RestrictionMode != nil { + return *x.RestrictionMode } - return nil + return "" } -func (x *Bucket_Lifecycle_Rule) GetCondition() *Bucket_Lifecycle_Rule_Condition { +func (x *Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig) GetEffectiveTime() *timestamppb.Timestamp { if x != nil { - return x.Condition + return x.EffectiveTime } return nil } -// An action to take on an object. -type Bucket_Lifecycle_Rule_Action struct { +// Customer Supplied Encryption (CSEK) enforcement config of a bucket. +type Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Type of the action. Currently, only `Delete`, `SetStorageClass`, and - // `AbortIncompleteMultipartUpload` are supported. - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Target storage class. Required iff the type of the action is - // SetStorageClass. - StorageClass string `protobuf:"bytes,2,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` + // Restriction mode for customer-supplied encryption for new objects + // within the bucket. Valid values are: "NotRestricted", + // "FullyRestricted". + // If `NotRestricted` or unset, creation of new objects with + // customer-supplied encryption is allowed. + // If `FullyRestricted`, new objects can't be created using + // customer-supplied encryption. + RestrictionMode *string `protobuf:"bytes,3,opt,name=restriction_mode,json=restrictionMode,proto3,oneof" json:"restriction_mode,omitempty"` + // Time from which the config was effective. This is service-provided. + EffectiveTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=effective_time,json=effectiveTime,proto3,oneof" json:"effective_time,omitempty"` } -func (x *Bucket_Lifecycle_Rule_Action) Reset() { - *x = Bucket_Lifecycle_Rule_Action{} - mi := &file_google_storage_v2_storage_proto_msgTypes[72] +func (x *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) Reset() { + *x = Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig{} + mi := &file_google_storage_v2_storage_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Bucket_Lifecycle_Rule_Action) String() string { +func (x *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bucket_Lifecycle_Rule_Action) ProtoMessage() {} +func (*Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) ProtoMessage() {} -func (x *Bucket_Lifecycle_Rule_Action) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[72] +func (x *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6912,58 +7372,235 @@ func (x *Bucket_Lifecycle_Rule_Action) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bucket_Lifecycle_Rule_Action.ProtoReflect.Descriptor instead. -func (*Bucket_Lifecycle_Rule_Action) Descriptor() ([]byte, []int) { - return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 4, 0, 0} +// Deprecated: Use Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig.ProtoReflect.Descriptor instead. +func (*Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 2, 2} } -func (x *Bucket_Lifecycle_Rule_Action) GetType() string { - if x != nil { - return x.Type +func (x *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) GetRestrictionMode() string { + if x != nil && x.RestrictionMode != nil { + return *x.RestrictionMode } return "" } -func (x *Bucket_Lifecycle_Rule_Action) GetStorageClass() string { +func (x *Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig) GetEffectiveTime() *timestamppb.Timestamp { if x != nil { - return x.StorageClass + return x.EffectiveTime } - return "" + return nil } -// A condition of an object which triggers some action. -type Bucket_Lifecycle_Rule_Condition struct { +// Settings for Uniform Bucket level access. +// See https://cloud.google.com/storage/docs/uniform-bucket-level-access. +type Bucket_IamConfig_UniformBucketLevelAccess struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Age of an object (in days). This condition is satisfied when an - // object reaches the specified age. - // A value of 0 indicates that all objects immediately match this - // condition. - AgeDays *int32 `protobuf:"varint,1,opt,name=age_days,json=ageDays,proto3,oneof" json:"age_days,omitempty"` - // This condition is satisfied when an object is created before midnight - // of the specified date in UTC. - CreatedBefore *date.Date `protobuf:"bytes,2,opt,name=created_before,json=createdBefore,proto3" json:"created_before,omitempty"` - // Relevant only for versioned objects. If the value is - // `true`, this condition matches live objects; if the value - // is `false`, it matches archived objects. - IsLive *bool `protobuf:"varint,3,opt,name=is_live,json=isLive,proto3,oneof" json:"is_live,omitempty"` - // Relevant only for versioned objects. If the value is N, this - // condition is satisfied when there are at least N versions (including - // the live version) newer than this version of the object. - NumNewerVersions *int32 `protobuf:"varint,4,opt,name=num_newer_versions,json=numNewerVersions,proto3,oneof" json:"num_newer_versions,omitempty"` - // Objects having any of the storage classes specified by this condition - // will be matched. Values include `MULTI_REGIONAL`, `REGIONAL`, - // `NEARLINE`, `COLDLINE`, `STANDARD`, and - // `DURABLE_REDUCED_AVAILABILITY`. - MatchesStorageClass []string `protobuf:"bytes,5,rep,name=matches_storage_class,json=matchesStorageClass,proto3" json:"matches_storage_class,omitempty"` - // Number of days that have elapsed since the custom timestamp set on an - // object. - // The value of the field must be a nonnegative integer. + // Optional. If set, access checks only use bucket-level IAM policies or + // above. + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Optional. The deadline time for changing + // `iam_config.uniform_bucket_level_access.enabled` from `true` to + // `false`. Mutable until the specified deadline is reached, but not + // afterward. + LockTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=lock_time,json=lockTime,proto3" json:"lock_time,omitempty"` +} + +func (x *Bucket_IamConfig_UniformBucketLevelAccess) Reset() { + *x = Bucket_IamConfig_UniformBucketLevelAccess{} + mi := &file_google_storage_v2_storage_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_IamConfig_UniformBucketLevelAccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_IamConfig_UniformBucketLevelAccess) ProtoMessage() {} + +func (x *Bucket_IamConfig_UniformBucketLevelAccess) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_IamConfig_UniformBucketLevelAccess.ProtoReflect.Descriptor instead. +func (*Bucket_IamConfig_UniformBucketLevelAccess) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 3, 0} +} + +func (x *Bucket_IamConfig_UniformBucketLevelAccess) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *Bucket_IamConfig_UniformBucketLevelAccess) GetLockTime() *timestamppb.Timestamp { + if x != nil { + return x.LockTime + } + return nil +} + +// A lifecycle Rule, combining an action to take on an object and a +// condition which will trigger that action. +type Bucket_Lifecycle_Rule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The action to take. + Action *Bucket_Lifecycle_Rule_Action `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + // Optional. The condition(s) under which the action will be taken. + Condition *Bucket_Lifecycle_Rule_Condition `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"` +} + +func (x *Bucket_Lifecycle_Rule) Reset() { + *x = Bucket_Lifecycle_Rule{} + mi := &file_google_storage_v2_storage_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_Lifecycle_Rule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_Lifecycle_Rule) ProtoMessage() {} + +func (x *Bucket_Lifecycle_Rule) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_Lifecycle_Rule.ProtoReflect.Descriptor instead. +func (*Bucket_Lifecycle_Rule) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 4, 0} +} + +func (x *Bucket_Lifecycle_Rule) GetAction() *Bucket_Lifecycle_Rule_Action { + if x != nil { + return x.Action + } + return nil +} + +func (x *Bucket_Lifecycle_Rule) GetCondition() *Bucket_Lifecycle_Rule_Condition { + if x != nil { + return x.Condition + } + return nil +} + +// An action to take on an object. +type Bucket_Lifecycle_Rule_Action struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Type of the action. Currently, only `Delete`, + // `SetStorageClass`, and `AbortIncompleteMultipartUpload` are + // supported. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // Optional. Target storage class. Required iff the type of the action + // is SetStorageClass. + StorageClass string `protobuf:"bytes,2,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` +} + +func (x *Bucket_Lifecycle_Rule_Action) Reset() { + *x = Bucket_Lifecycle_Rule_Action{} + mi := &file_google_storage_v2_storage_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_Lifecycle_Rule_Action) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_Lifecycle_Rule_Action) ProtoMessage() {} + +func (x *Bucket_Lifecycle_Rule_Action) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_Lifecycle_Rule_Action.ProtoReflect.Descriptor instead. +func (*Bucket_Lifecycle_Rule_Action) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 4, 0, 0} +} + +func (x *Bucket_Lifecycle_Rule_Action) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Bucket_Lifecycle_Rule_Action) GetStorageClass() string { + if x != nil { + return x.StorageClass + } + return "" +} + +// A condition of an object which triggers some action. +type Bucket_Lifecycle_Rule_Condition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Age of an object (in days). This condition is satisfied when an + // object reaches the specified age. + // A value of 0 indicates that all objects immediately match this + // condition. + AgeDays *int32 `protobuf:"varint,1,opt,name=age_days,json=ageDays,proto3,oneof" json:"age_days,omitempty"` + // Optional. This condition is satisfied when an object is created + // before midnight of the specified date in UTC. + CreatedBefore *date.Date `protobuf:"bytes,2,opt,name=created_before,json=createdBefore,proto3" json:"created_before,omitempty"` + // Relevant only for versioned objects. If the value is + // `true`, this condition matches live objects; if the value + // is `false`, it matches archived objects. + IsLive *bool `protobuf:"varint,3,opt,name=is_live,json=isLive,proto3,oneof" json:"is_live,omitempty"` + // Relevant only for versioned objects. If the value is N, this + // condition is satisfied when there are at least N versions (including + // the live version) newer than this version of the object. + NumNewerVersions *int32 `protobuf:"varint,4,opt,name=num_newer_versions,json=numNewerVersions,proto3,oneof" json:"num_newer_versions,omitempty"` + // Optional. Objects having any of the storage classes specified by this + // condition will be matched. Values include `MULTI_REGIONAL`, + // `REGIONAL`, `NEARLINE`, `COLDLINE`, `STANDARD`, and + // `DURABLE_REDUCED_AVAILABILITY`. + MatchesStorageClass []string `protobuf:"bytes,5,rep,name=matches_storage_class,json=matchesStorageClass,proto3" json:"matches_storage_class,omitempty"` + // Number of days that have elapsed since the custom timestamp set on an + // object. + // The value of the field must be a nonnegative integer. DaysSinceCustomTime *int32 `protobuf:"varint,7,opt,name=days_since_custom_time,json=daysSinceCustomTime,proto3,oneof" json:"days_since_custom_time,omitempty"` - // An object matches this condition if the custom timestamp set on the - // object is before the specified date in UTC. + // Optional. An object matches this condition if the custom timestamp + // set on the object is before the specified date in UTC. CustomTimeBefore *date.Date `protobuf:"bytes,8,opt,name=custom_time_before,json=customTimeBefore,proto3" json:"custom_time_before,omitempty"` // This condition is relevant only for versioned objects. An object // version satisfies this condition only if these many days have been @@ -6971,21 +7608,21 @@ type Bucket_Lifecycle_Rule_Condition struct { // nonnegative integer. If it's zero, the object version will become // eligible for Lifecycle action as soon as it becomes noncurrent. DaysSinceNoncurrentTime *int32 `protobuf:"varint,9,opt,name=days_since_noncurrent_time,json=daysSinceNoncurrentTime,proto3,oneof" json:"days_since_noncurrent_time,omitempty"` - // This condition is relevant only for versioned objects. An object - // version satisfies this condition only if it became noncurrent before - // the specified date in UTC. + // Optional. This condition is relevant only for versioned objects. An + // object version satisfies this condition only if it became noncurrent + // before the specified date in UTC. NoncurrentTimeBefore *date.Date `protobuf:"bytes,10,opt,name=noncurrent_time_before,json=noncurrentTimeBefore,proto3" json:"noncurrent_time_before,omitempty"` - // List of object name prefixes. If any prefix exactly matches the - // beginning of the object name, the condition evaluates to true. + // Optional. List of object name prefixes. If any prefix exactly matches + // the beginning of the object name, the condition evaluates to true. MatchesPrefix []string `protobuf:"bytes,11,rep,name=matches_prefix,json=matchesPrefix,proto3" json:"matches_prefix,omitempty"` - // List of object name suffixes. If any suffix exactly matches the - // end of the object name, the condition evaluates to true. + // Optional. List of object name suffixes. If any suffix exactly matches + // the end of the object name, the condition evaluates to true. MatchesSuffix []string `protobuf:"bytes,12,rep,name=matches_suffix,json=matchesSuffix,proto3" json:"matches_suffix,omitempty"` } func (x *Bucket_Lifecycle_Rule_Condition) Reset() { *x = Bucket_Lifecycle_Rule_Condition{} - mi := &file_google_storage_v2_storage_proto_msgTypes[73] + mi := &file_google_storage_v2_storage_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6997,7 +7634,7 @@ func (x *Bucket_Lifecycle_Rule_Condition) String() string { func (*Bucket_Lifecycle_Rule_Condition) ProtoMessage() {} func (x *Bucket_Lifecycle_Rule_Condition) ProtoReflect() protoreflect.Message { - mi := &file_google_storage_v2_storage_proto_msgTypes[73] + mi := &file_google_storage_v2_storage_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7090,6 +7727,176 @@ func (x *Bucket_Lifecycle_Rule_Condition) GetMatchesSuffix() []string { return nil } +// The public network IP address ranges that can access the bucket and its +// data. +type Bucket_IpFilter_PublicNetworkSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The list of IPv4 and IPv6 cidr blocks that are allowed to + // operate or access the bucket and its underlying objects. + AllowedIpCidrRanges []string `protobuf:"bytes,1,rep,name=allowed_ip_cidr_ranges,json=allowedIpCidrRanges,proto3" json:"allowed_ip_cidr_ranges,omitempty"` +} + +func (x *Bucket_IpFilter_PublicNetworkSource) Reset() { + *x = Bucket_IpFilter_PublicNetworkSource{} + mi := &file_google_storage_v2_storage_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_IpFilter_PublicNetworkSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_IpFilter_PublicNetworkSource) ProtoMessage() {} + +func (x *Bucket_IpFilter_PublicNetworkSource) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_IpFilter_PublicNetworkSource.ProtoReflect.Descriptor instead. +func (*Bucket_IpFilter_PublicNetworkSource) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 13, 0} +} + +func (x *Bucket_IpFilter_PublicNetworkSource) GetAllowedIpCidrRanges() []string { + if x != nil { + return x.AllowedIpCidrRanges + } + return nil +} + +// The list of VPC networks that can access the bucket. +type Bucket_IpFilter_VpcNetworkSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the network. + // + // Format: `projects/PROJECT_ID/global/networks/NETWORK_NAME` + Network *string `protobuf:"bytes,1,opt,name=network,proto3,oneof" json:"network,omitempty"` + // Optional. The list of public or private IPv4 and IPv6 CIDR ranges that + // can access the bucket. In the CIDR IP address block, the specified IP + // address must be properly truncated, meaning all the host bits must be + // zero or else the input is considered malformed. For example, + // `192.0.2.0/24` is accepted but `192.0.2.1/24` is not. Similarly, for + // IPv6, `2001:db8::/32` is accepted whereas `2001:db8::1/32` is not. + AllowedIpCidrRanges []string `protobuf:"bytes,2,rep,name=allowed_ip_cidr_ranges,json=allowedIpCidrRanges,proto3" json:"allowed_ip_cidr_ranges,omitempty"` +} + +func (x *Bucket_IpFilter_VpcNetworkSource) Reset() { + *x = Bucket_IpFilter_VpcNetworkSource{} + mi := &file_google_storage_v2_storage_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Bucket_IpFilter_VpcNetworkSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bucket_IpFilter_VpcNetworkSource) ProtoMessage() {} + +func (x *Bucket_IpFilter_VpcNetworkSource) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[82] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bucket_IpFilter_VpcNetworkSource.ProtoReflect.Descriptor instead. +func (*Bucket_IpFilter_VpcNetworkSource) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{43, 13, 1} +} + +func (x *Bucket_IpFilter_VpcNetworkSource) GetNetwork() string { + if x != nil && x.Network != nil { + return *x.Network + } + return "" +} + +func (x *Bucket_IpFilter_VpcNetworkSource) GetAllowedIpCidrRanges() []string { + if x != nil { + return x.AllowedIpCidrRanges + } + return nil +} + +// Specifies retention parameters of the object. Objects under retention +// cannot be deleted or overwritten until their retention expires. +type Object_Retention struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The mode of the Retention. + Mode Object_Retention_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.storage.v2.Object_Retention_Mode" json:"mode,omitempty"` + // Optional. The timestamp that the object needs to be retained until. + // Value cannot be set in the past or more than 100 years in the future. + RetainUntilTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=retain_until_time,json=retainUntilTime,proto3" json:"retain_until_time,omitempty"` +} + +func (x *Object_Retention) Reset() { + *x = Object_Retention{} + mi := &file_google_storage_v2_storage_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Object_Retention) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Object_Retention) ProtoMessage() {} + +func (x *Object_Retention) ProtoReflect() protoreflect.Message { + mi := &file_google_storage_v2_storage_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Object_Retention.ProtoReflect.Descriptor instead. +func (*Object_Retention) Descriptor() ([]byte, []int) { + return file_google_storage_v2_storage_proto_rawDescGZIP(), []int{50, 0} +} + +func (x *Object_Retention) GetMode() Object_Retention_Mode { + if x != nil { + return x.Mode + } + return Object_Retention_MODE_UNSPECIFIED +} + +func (x *Object_Retention) GetRetainUntilTime() *timestamppb.Timestamp { + if x != nil { + return x.RetainUntilTime + } + return nil +} + var File_google_storage_v2_storage_proto protoreflect.FileDescriptor var file_google_storage_v2_storage_proto_rawDesc = []byte{ @@ -7156,392 +7963,284 @@ var file_google_storage_v2_storage_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x93, 0x02, 0x0a, 0x13, 0x43, 0x72, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xdf, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x31, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x12, 0x36, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, - 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x41, 0x0a, 0x1d, - 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x22, - 0xf3, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x72, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, + 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x46, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x3b, + 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x02, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, + 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x22, 0x72, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x20, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x15, + 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xc0, 0x03, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x20, 0x4c, 0x6f, - 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, - 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3b, 0x0a, + 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, + 0x63, 0x6c, 0x12, 0x46, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1a, + 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xe5, 0x07, 0x0a, 0x14, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, + 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xb6, 0x03, 0x0a, 0x13, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, + 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x07, 0x6b, 0x6d, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, + 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x72, + 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x52, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x1a, 0xb3, 0x02, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x14, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x62, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, + 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x22, 0xec, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, + 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, + 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x15, 0x69, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x18, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x70, - 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, - 0x63, 0x6c, 0x12, 0x41, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, + 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x1c, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x22, 0xc3, 0x07, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, - 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0d, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x18, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x01, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x6b, - 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, - 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x6d, 0x0a, 0x1c, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x1a, 0xa8, 0x02, 0x0a, 0x0c, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x14, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x62, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xe2, 0x04, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, - 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xd3, - 0x05, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, - 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, + 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, + 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, + 0xd8, 0x05, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, + 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, - 0x0d, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x63, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x61, 0x63, 0x6c, 0x22, 0x3f, 0x0a, 0x1b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, - 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x05, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, - 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, - 0x61, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, - 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, - 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, - 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, - 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, + 0x52, 0x0d, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x63, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x8e, 0x06, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x73, - 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, - 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x11, 0x69, 0x66, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x03, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x04, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, - 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x05, 0x52, - 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, - 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, - 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc6, 0x06, 0x0a, 0x12, 0x42, 0x69, 0x64, 0x69, - 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3d, - 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, - 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, - 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, - 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1c, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x02, 0x18, 0x01, 0x48, 0x04, - 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, - 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x22, 0x3f, 0x0a, 0x1b, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x06, 0x0a, 0x11, + 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, + 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x72, 0x65, + 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x13, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, + 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x72, + 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x48, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, @@ -7549,1371 +8248,1727 @@ var file_google_storage_v2_storage_proto_rawDesc = []byte{ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0xa7, 0x01, 0x0a, 0x15, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x72, 0x65, 0x61, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x0b, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0a, - 0x72, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x16, 0x42, - 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x42, - 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, - 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x1d, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, - 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0a, 0x72, 0x65, - 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xed, 0x01, 0x0a, 0x1e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x02, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x13, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4d, 0x0a, 0x11, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, - 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x75, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, - 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, - 0x72, 0x65, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0a, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x45, 0x6e, 0x64, 0x22, 0x2d, 0x0a, 0x0e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, - 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x2e, 0x0a, 0x0f, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xc0, 0x04, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, - 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x98, + 0x06, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x6f, + 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x11, 0x69, 0x66, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x02, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, + 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x04, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x72, + 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x48, 0x05, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, + 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, + 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, - 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, - 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x65, 0x6e, - 0x64, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x50, 0x0a, - 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x26, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, + 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x12, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x44, + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0, 0x06, 0x0a, 0x12, + 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, + 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe9, 0x03, 0x0a, - 0x10, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x72, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, - 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x02, 0x18, 0x01, 0x48, 0x04, 0x52, 0x08, + 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0b, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x48, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0c, 0x72, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb1, + 0x01, 0x0a, 0x15, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, + 0x72, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, + 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x16, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, + 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0a, + 0x72, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x1d, 0x42, + 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x0b, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xed, 0x01, 0x0a, + 0x1e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, + 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x13, + 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x4d, 0x0a, 0x11, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x2a, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x75, 0x0a, 0x09, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0b, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, + 0x22, 0xba, 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6e, 0x64, 0x22, 0x2d, 0x0a, + 0x0e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x1b, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x2e, 0x0a, 0x0f, + 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x1b, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xc5, 0x04, 0x0a, + 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x0e, + 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, + 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, + 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, + 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x04, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x23, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x8a, 0x05, 0x0a, 0x16, 0x42, 0x69, 0x64, - 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x64, 0x12, 0x50, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x53, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x10, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x01, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x87, 0x04, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x11, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, + 0x01, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe9, 0x03, 0x0a, 0x10, 0x41, 0x70, 0x70, + 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3d, 0x0a, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, + 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, + 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x01, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, + 0x28, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xa3, 0x05, 0x0a, 0x16, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x50, + 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, + 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x53, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, - 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6d, 0x0a, + 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x00, 0x52, 0x10, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4f, 0x0a, + 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x52, + 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c, + 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, + 0x66, 0x6c, 0x75, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x5f, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0f, 0x0a, 0x0d, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe8, 0x01, 0x0a, 0x17, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, - 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x01, 0x52, - 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x22, 0xe3, 0x04, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, - 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, - 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, - 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, - 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, - 0x12, 0x34, 0x0a, 0x13, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, - 0x63, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x12, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, - 0x63, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x69, 0x63, 0x45, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x6f, 0x66, 0x74, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x6f, 0x6c, 0x64, - 0x65, 0x72, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x41, 0x73, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x67, 0x6c, - 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x47, 0x6c, 0x6f, 0x62, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe8, 0x01, 0x0a, 0x17, 0x42, + 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x9e, 0x05, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x21, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x12, 0x1f, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x69, 0x63, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x6c, 0x65, 0x78, + 0x69, 0x63, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6c, 0x65, 0x78, 0x69, 0x63, + 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x45, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x73, + 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x41, 0x73, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x47, 0x6c, 0x6f, 0x62, 0x12, 0x1b, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x64, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, + 0x61, 0x64, 0x49, 0x64, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0xb5, 0x0e, 0x0a, 0x14, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x10, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x57, - 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xe0, - 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x56, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x64, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, - 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0d, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, - 0x63, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, - 0x63, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x17, 0x69, 0x66, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, - 0x52, 0x1a, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, + 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x37, + 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x0e, 0x0a, 0x14, 0x52, 0x65, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, + 0x41, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x28, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x59, 0x0a, 0x13, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0d, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x30, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x1a, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, + 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, + 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x48, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x1b, 0x69, 0x66, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x22, 0x69, 0x66, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x03, 0x48, 0x07, 0x52, 0x1e, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x1c, 0x6d, 0x61, - 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, - 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x18, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x74, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x47, 0x0a, 0x20, 0x63, 0x6f, - 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x12, 0x46, 0x0a, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x63, - 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x27, 0x63, + 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, + 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x40, 0x0a, 0x1a, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x17, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x69, 0x66, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1e, 0x69, + 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x1b, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x22, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x07, 0x52, 0x1e, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, + 0x74, 0x74, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x22, 0x63, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1d, 0x63, 0x6f, 0x70, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x4b, 0x0a, 0x20, 0x63, 0x6f, 0x70, + 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1c, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x27, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x22, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1d, - 0x0a, 0x1b, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, - 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, - 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, - 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x52, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0xec, 0x07, 0x0a, 0x11, 0x4d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x32, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x1a, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, - 0x00, 0x52, 0x17, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, - 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x1a, 0x69, 0x66, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1e, 0x69, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x66, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x1b, 0x69, 0x66, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x69, 0x66, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x03, 0x52, 0x1e, 0x69, - 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x38, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x48, 0x04, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x17, 0x69, 0x66, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x48, 0x05, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x17, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x48, 0x06, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x07, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, - 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x25, 0x0a, + 0x23, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xec, 0x07, + 0x0a, 0x11, 0x4d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x12, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x45, 0x0a, 0x1a, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x17, 0x69, 0x66, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x25, 0x0a, 0x23, 0x5f, - 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, + 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x1a, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1e, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x48, 0x02, 0x52, 0x1b, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x03, 0x52, 0x1e, 0x69, 0x66, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x13, 0x69, 0x66, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x04, 0x52, 0x11, + 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x05, 0x52, 0x14, 0x69, 0x66, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x06, 0x52, 0x15, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x48, 0x07, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, + 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, + 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x22, 0xaf, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, - 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x53, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x73, 0x22, 0x3a, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, - 0x22, 0x87, 0x05, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, - 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x42, - 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x6d, 0x0a, 0x1c, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, - 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x43, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, 0x1c, + 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xb9, 0x02, 0x0a, + 0x1a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x11, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x52, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x22, 0x3a, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x64, 0x22, 0xd6, 0x05, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x00, 0x52, 0x11, 0x69, 0x66, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x66, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x14, 0x69, 0x66, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x15, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x69, 0x66, 0x4d, 0x65, 0x74, + 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, + 0x63, 0x6c, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x72, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, - 0x1b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xca, 0x05, 0x0a, - 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x73, 0x22, 0xb5, 0x05, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x12, - 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x14, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x19, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x43, 0x0a, 0x1b, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x19, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x55, 0x6e, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1e, 0x0a, + 0x1c, 0x5f, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xce, 0x01, + 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x14, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x12, 0x35, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x1b, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, + 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xca, + 0x05, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x73, 0x22, 0xb5, 0x05, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x16, + 0x0a, 0x12, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x14, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, + 0x80, 0x80, 0x01, 0x12, 0x1c, 0x0a, 0x15, 0x4d, 0x41, 0x58, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x80, 0x80, - 0x01, 0x12, 0x1c, 0x0a, 0x15, 0x4d, 0x41, 0x58, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x43, - 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x80, 0x80, 0x01, 0x12, - 0x19, 0x0a, 0x12, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x49, - 0x5a, 0x45, 0x5f, 0x4d, 0x42, 0x10, 0x80, 0x80, 0xc0, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, - 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, - 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x80, 0x08, 0x12, 0x2a, 0x0a, 0x25, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, - 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, - 0x20, 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, - 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x40, 0x12, 0x2a, 0x0a, 0x24, - 0x4d, 0x41, 0x58, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, - 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, - 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0xa0, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x58, 0x5f, - 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, - 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, - 0x4c, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, - 0x4b, 0x45, 0x54, 0x10, 0x64, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, - 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x31, 0x0a, - 0x2c, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, - 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x80, 0x02, - 0x12, 0x33, 0x0a, 0x2e, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, - 0x54, 0x48, 0x10, 0x80, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x10, 0x40, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, - 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, - 0x54, 0x48, 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1a, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, 0x45, - 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x80, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, - 0x53, 0x54, 0x10, 0xe8, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x54, - 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, - 0x41, 0x59, 0x53, 0x10, 0x0e, 0x1a, 0x02, 0x10, 0x01, 0x22, 0x86, 0x24, 0x0a, 0x06, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, - 0x74, 0x61, 0x67, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x72, 0x70, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x70, - 0x6f, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x54, 0x0a, 0x12, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, - 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, - 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, - 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, - 0x79, 0x63, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, - 0x43, 0x6f, 0x72, 0x73, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, + 0x01, 0x12, 0x19, 0x0a, 0x12, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x4d, 0x42, 0x10, 0x80, 0x80, 0xc0, 0x02, 0x12, 0x29, 0x0a, 0x24, + 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x08, 0x12, 0x2a, 0x0a, 0x25, 0x4d, 0x41, 0x58, 0x5f, 0x43, + 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x80, 0x20, 0x12, 0x29, 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x40, 0x12, 0x2a, + 0x0a, 0x24, 0x4d, 0x41, 0x58, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x45, 0x54, + 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0xa0, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, + 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, + 0x54, 0x10, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x43, + 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x42, + 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x64, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x58, 0x5f, 0x4e, + 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, + 0x31, 0x0a, 0x2c, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, + 0x42, 0x55, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, + 0x80, 0x02, 0x12, 0x33, 0x0a, 0x2e, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, + 0x4e, 0x47, 0x54, 0x48, 0x10, 0x80, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x58, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x10, 0x40, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x45, + 0x4e, 0x47, 0x54, 0x48, 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1a, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x80, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x4d, 0x41, 0x58, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x52, 0x45, 0x51, + 0x55, 0x45, 0x53, 0x54, 0x10, 0xe8, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x50, 0x4c, 0x49, 0x54, + 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x0e, 0x1a, 0x02, 0x10, 0x01, 0x22, 0xb5, 0x37, 0x0a, 0x06, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x03, 0x72, 0x70, 0x6f, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x03, 0x72, 0x70, 0x6f, 0x12, 0x3d, 0x0a, + 0x03, 0x61, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x59, 0x0a, 0x12, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, + 0x63, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x6c, 0x12, 0x46, 0x0a, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, + 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, - 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, - 0x64, 0x48, 0x6f, 0x6c, 0x64, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, - 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6c, 0x6f, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3b, 0x0a, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x10, - 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x69, 0x61, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, - 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, - 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, 0x6f, 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, + 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, + 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x12, 0x49, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x40, 0x0a, 0x07, 0x6c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, + 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x6b, 0x0a, 0x16, 0x68, 0x69, 0x65, 0x72, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x2e, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x68, + 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, + 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, + 0x59, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x47, 0x0a, 0x0a, 0x69, 0x61, + 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x69, 0x61, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, + 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x73, 0x12, 0x6c, 0x0a, + 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x09, 0x61, + 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x6b, 0x0a, 0x16, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x20, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x12, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x6f, 0x66, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x10, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x1a, 0x30, 0x0a, 0x07, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x25, - 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x79, 0x73, 0x1a, 0x87, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, - 0x5c, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, - 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0d, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x1a, 0xb1, 0x02, - 0x0a, 0x09, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7b, 0x0a, 0x1b, 0x75, - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x18, - 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x1a, 0x6d, 0x0a, 0x18, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, + 0x70, 0x61, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x68, 0x69, 0x65, 0x72, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x5d, 0x0a, 0x12, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, + 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x59, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x09, 0x69, 0x70, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x08, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x35, 0x0a, 0x07, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x73, 0x1a, 0x9b, 0x01, 0x0a, + 0x04, 0x43, 0x6f, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x2c, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2b, 0x0a, + 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, + 0x41, 0x67, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0xa0, 0x0b, 0x0a, 0x0a, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0xb7, 0x01, 0x0a, + 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0xbd, 0x01, 0x0a, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x2a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0xc0, 0x01, 0x0a, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x2b, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x1a, 0xca, 0x01, 0x0a, 0x28, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0xcc, 0x01, 0x0a, 0x2a, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0xcd, 0x01, 0x0a, 0x2b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x2f, 0x0a, 0x2d, 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x31, 0x0a, 0x2f, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x32, 0x0a, 0x30, 0x5f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xc6, 0x02, + 0x0a, 0x09, 0x49, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x80, 0x01, 0x0a, 0x1b, + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x61, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3d, + 0x0a, 0x18, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x16, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x77, 0x0a, + 0x18, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, - 0x65, 0x1a, 0xdb, 0x07, 0x0a, 0x09, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, - 0x3c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, - 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x1a, 0x8f, 0x07, - 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x50, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x92, 0x08, 0x0a, 0x09, 0x4c, 0x69, 0x66, 0x65, 0x63, + 0x79, 0x63, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, - 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x41, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x1a, 0xa8, 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x44, 0x61, 0x79, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x07, - 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, - 0x06, 0x69, 0x73, 0x4c, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6e, 0x75, - 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x4e, 0x65, 0x77, - 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x12, 0x38, 0x0a, 0x16, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x12, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x1a, - 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x48, 0x04, 0x52, 0x17, 0x64, 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x6e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, - 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x14, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x25, - 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, - 0x75, 0x66, 0x66, 0x69, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, - 0x79, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, - 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, - 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, - 0x54, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, - 0x67, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6c, 0x6f, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x67, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xbb, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x11, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0xd3, 0x01, 0x0a, 0x10, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4d, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x11, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0d, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x26, 0x0a, 0x0a, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x1a, 0x59, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x10, - 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x67, 0x65, - 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x61, 0x67, 0x65, 0x1a, 0x3e, 0x0a, 0x15, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, - 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xd6, 0x02, 0x0a, - 0x09, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, + 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x1a, 0xc1, 0x07, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x4c, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, 0x65, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, + 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x66, + 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4b, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x1a, 0xc6, 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, + 0x1c, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x01, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x10, 0x6e, 0x75, 0x6d, + 0x4e, 0x65, 0x77, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x37, 0x0a, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x64, 0x61, 0x79, + 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, 0x61, 0x79, + 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, + 0x69, 0x6d, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x1a, 0x64, 0x61, 0x79, + 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, + 0x17, 0x64, 0x61, 0x79, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x16, 0x6e, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x14, 0x6e, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, + 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x75, 0x66, 0x66, 0x69, + 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, + 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, + 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x5e, 0x0a, 0x07, 0x4c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x09, 0x6c, 0x6f, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x6c, 0x6f, + 0x67, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x33, 0x0a, 0x0f, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x1a, 0xca, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, + 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x4d, + 0x0a, 0x12, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x72, 0x65, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xd3, 0x01, + 0x0a, 0x10, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x4d, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x74, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x70, 0x0a, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, - 0x52, 0x1e, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x25, - 0x0a, 0x23, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x36, 0x0a, 0x15, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x39, 0x0a, - 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x58, 0xea, 0x41, 0x55, 0x0a, 0x1d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x7d, 0x2a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x32, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x1a, 0x2b, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, + 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x1a, 0x63, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x6d, + 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x69, 0x6e, + 0x50, 0x61, 0x67, 0x65, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x6f, + 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x50, 0x61, 0x67, 0x65, 0x1a, 0x43, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, + 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xdb, 0x02, 0x0a, 0x09, 0x41, + 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x74, 0x6f, 0x67, 0x67, 0x6c, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x74, + 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x48, 0x01, 0x52, 0x1e, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x8d, 0x05, 0x0a, 0x08, 0x49, 0x70, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6f, + 0x0a, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x01, 0x52, 0x13, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x68, 0x0a, 0x13, 0x76, 0x70, 0x63, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x49, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x56, 0x70, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x76, 0x70, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x14, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x70, 0x63, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x4f, 0x72, 0x67, 0x56, 0x70, 0x63, 0x73, 0x12, + 0x47, 0x0a, 0x1e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x38, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x63, 0x69, + 0x64, 0x72, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x43, + 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x1a, 0x77, 0x0a, 0x10, 0x56, 0x70, 0x63, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x43, 0x69, 0x64, 0x72, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0x36, 0x0a, 0x15, 0x48, 0x69, 0x65, 0x72, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x58, 0xea, 0x41, 0x55, + 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x23, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x7d, 0x2a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x32, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0xbf, 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, - 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x5a, 0x0a, 0x0f, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x05, 0xe0, 0x41, 0x01, 0x08, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0x54, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x63, - 0x72, 0x63, 0x33, 0x32, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x72, 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x48, - 0x61, 0x73, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0x71, - 0x0a, 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x73, - 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x22, 0xbd, 0x0e, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, - 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, - 0x0d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x23, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, - 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, - 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x03, 0x61, - 0x63, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, + 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x46, 0x0a, + 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x65, 0x61, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x5a, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xe0, 0x41, 0x01, 0x08, 0x01, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, + 0x33, 0x32, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, + 0x33, 0x32, 0x63, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, + 0x63, 0x22, 0x59, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x48, 0x61, 0x73, + 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x22, 0xbb, 0x01, 0x0a, + 0x1a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, - 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x4a, 0x0a, + 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, + 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0x68, 0x0a, 0x0b, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x7b, 0x0a, 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x12, 0x2d, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x22, 0xe3, 0x11, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0a, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x2b, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, + 0x65, 0x74, 0x61, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x34, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x12, 0x3d, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, + 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, - 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x6c, 0x64, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, - 0x79, 0x48, 0x6f, 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x13, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, - 0x65, 0x64, 0x48, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x56, - 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x02, - 0x52, 0x0e, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x19, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, + 0x48, 0x6f, 0x6c, 0x64, 0x12, 0x53, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x48, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x13, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x03, - 0x52, 0x0e, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x73, - 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x6f, 0x66, 0x74, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, - 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x73, 0x6f, + 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x10, 0x68, 0x61, + 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x03, 0x52, 0x0e, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x72, 0x65, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0xd3, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x41, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x48, 0x0a, 0x0b, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x3c, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x32, 0xc1, 0x1e, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x12, 0x72, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x22, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x6f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x22, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x75, 0x6e, + 0x74, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x36, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xbf, 0x02, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x17, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x06, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x74, 0x12, 0x20, 0x0a, + 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, + 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x12, 0x46, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x0b, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x46, 0x0a, + 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x32, 0x9f, 0x1f, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x72, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x22, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x58, 0xda, 0x41, 0x17, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x1e, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, + 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x6f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x22, 0x22, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x15, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x58, 0xda, 0x41, 0x17, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x1e, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x8a, + 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x0c, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x93, 0x01, + 0x0a, 0x19, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x26, 0xda, 0x41, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, + 0x2a, 0x2a, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, + 0x58, 0xda, 0x41, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x47, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, + 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x2c, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x65, + 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, + 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5f, 0xda, 0x41, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, + 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x2c, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0x96, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, + 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xaa, 0x01, 0xda, 0x41, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2c, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x8c, 0x01, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2a, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, + 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2a, 0x12, + 0x8a, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x22, 0x37, 0xda, 0x41, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1c, + 0x12, 0x1a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x7e, 0x0a, 0x0d, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x29, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, + 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, 0xda, + 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, + 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x38, 0xda, + 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xba, 0x01, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, + 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, + 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x41, 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x8a, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x69, 0x64, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x48, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xa5, 0x01, 0x0a, + 0x0a, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x27, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x8a, 0xd3, - 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0c, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x93, 0x01, 0x0a, - 0x19, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x26, 0xda, 0x41, 0x06, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, - 0x2a, 0x7d, 0x12, 0x75, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x2a, 0xda, - 0x41, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x7c, 0x0a, 0x0c, 0x53, 0x65, 0x74, - 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x22, 0x31, 0xda, 0x41, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x96, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, - 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0xda, 0x41, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x2c, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xd3, 0xe4, - 0x93, 0x02, 0x8c, 0x01, 0x12, 0x17, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x34, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x7b, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2a, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2a, - 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x2a, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, + 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, + 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x8a, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x0a, 0x17, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x28, 0x01, 0x30, 0x01, + 0x12, 0x8c, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x22, 0x37, 0xda, 0x41, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x22, 0x39, 0xda, 0x41, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x1c, 0x12, 0x1a, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x7e, 0x0a, - 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x29, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x98, 0x01, - 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, + 0x1e, 0x12, 0x1c, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, + 0x60, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, - 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, + 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, + 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x84, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x38, - 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xba, 0x01, 0x0a, 0x14, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, - 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, - 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, + 0x0f, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, + 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x32, 0x12, 0x30, 0x0a, 0x21, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x48, 0xda, 0x41, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xa5, 0x01, - 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0xda, 0x41, 0x0d, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0xda, 0x41, 0x18, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, - 0x2a, 0x2a, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, - 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, - 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x52, 0x65, 0x61, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x8a, - 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x0a, 0x17, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x28, 0x01, 0x30, - 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x76, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x39, 0xda, 0x41, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x8a, 0xd3, 0xe4, 0x93, - 0x02, 0x1e, 0x12, 0x1c, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, - 0x12, 0x60, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x28, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x69, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, - 0x30, 0x01, 0x12, 0x84, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x8a, 0xd3, 0xe4, 0x93, - 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x7b, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x0d, 0x52, 0x65, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x34, - 0x12, 0x0f, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x21, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x8a, 0xd3, 0xe4, - 0x93, 0x02, 0x32, 0x12, 0x30, 0x0a, 0x21, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, - 0x64, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x69, 0x64, 0x12, 0x20, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x2a, 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x76, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x47, 0xda, 0x41, 0x27, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x1a, - 0xa7, 0x02, 0xca, 0x41, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x8a, 0x02, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x47, 0xda, 0x41, 0x27, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x0b, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x1a, 0xa7, + 0x02, 0xca, 0x41, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x8a, 0x02, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, - 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, - 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, - 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, - 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xe2, 0x01, 0xea, 0x41, 0x78, 0x0a, - 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, - 0x65, 0x79, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x52, - 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x7d, 0x2f, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x42, 0x0c, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x70, 0x62, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, + 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x65, + 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x64, 0x65, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xe2, 0x01, 0xea, 0x41, 0x78, 0x0a, 0x21, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, + 0x79, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x52, 0x69, + 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x7d, 0x2f, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x6f, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x70, 0x62, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8928,263 +9983,293 @@ func file_google_storage_v2_storage_proto_rawDescGZIP() []byte { return file_google_storage_v2_storage_proto_rawDescData } -var file_google_storage_v2_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_google_storage_v2_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 75) +var file_google_storage_v2_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_storage_v2_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 86) var file_google_storage_v2_storage_proto_goTypes = []any{ (ServiceConstants_Values)(0), // 0: google.storage.v2.ServiceConstants.Values - (*DeleteBucketRequest)(nil), // 1: google.storage.v2.DeleteBucketRequest - (*GetBucketRequest)(nil), // 2: google.storage.v2.GetBucketRequest - (*CreateBucketRequest)(nil), // 3: google.storage.v2.CreateBucketRequest - (*ListBucketsRequest)(nil), // 4: google.storage.v2.ListBucketsRequest - (*ListBucketsResponse)(nil), // 5: google.storage.v2.ListBucketsResponse - (*LockBucketRetentionPolicyRequest)(nil), // 6: google.storage.v2.LockBucketRetentionPolicyRequest - (*UpdateBucketRequest)(nil), // 7: google.storage.v2.UpdateBucketRequest - (*ComposeObjectRequest)(nil), // 8: google.storage.v2.ComposeObjectRequest - (*DeleteObjectRequest)(nil), // 9: google.storage.v2.DeleteObjectRequest - (*RestoreObjectRequest)(nil), // 10: google.storage.v2.RestoreObjectRequest - (*CancelResumableWriteRequest)(nil), // 11: google.storage.v2.CancelResumableWriteRequest - (*CancelResumableWriteResponse)(nil), // 12: google.storage.v2.CancelResumableWriteResponse - (*ReadObjectRequest)(nil), // 13: google.storage.v2.ReadObjectRequest - (*GetObjectRequest)(nil), // 14: google.storage.v2.GetObjectRequest - (*ReadObjectResponse)(nil), // 15: google.storage.v2.ReadObjectResponse - (*BidiReadObjectSpec)(nil), // 16: google.storage.v2.BidiReadObjectSpec - (*BidiReadObjectRequest)(nil), // 17: google.storage.v2.BidiReadObjectRequest - (*BidiReadObjectResponse)(nil), // 18: google.storage.v2.BidiReadObjectResponse - (*BidiReadObjectRedirectedError)(nil), // 19: google.storage.v2.BidiReadObjectRedirectedError - (*BidiWriteObjectRedirectedError)(nil), // 20: google.storage.v2.BidiWriteObjectRedirectedError - (*BidiReadObjectError)(nil), // 21: google.storage.v2.BidiReadObjectError - (*ReadRangeError)(nil), // 22: google.storage.v2.ReadRangeError - (*ReadRange)(nil), // 23: google.storage.v2.ReadRange - (*ObjectRangeData)(nil), // 24: google.storage.v2.ObjectRangeData - (*BidiReadHandle)(nil), // 25: google.storage.v2.BidiReadHandle - (*BidiWriteHandle)(nil), // 26: google.storage.v2.BidiWriteHandle - (*WriteObjectSpec)(nil), // 27: google.storage.v2.WriteObjectSpec - (*WriteObjectRequest)(nil), // 28: google.storage.v2.WriteObjectRequest - (*WriteObjectResponse)(nil), // 29: google.storage.v2.WriteObjectResponse - (*AppendObjectSpec)(nil), // 30: google.storage.v2.AppendObjectSpec - (*BidiWriteObjectRequest)(nil), // 31: google.storage.v2.BidiWriteObjectRequest - (*BidiWriteObjectResponse)(nil), // 32: google.storage.v2.BidiWriteObjectResponse - (*ListObjectsRequest)(nil), // 33: google.storage.v2.ListObjectsRequest - (*QueryWriteStatusRequest)(nil), // 34: google.storage.v2.QueryWriteStatusRequest - (*QueryWriteStatusResponse)(nil), // 35: google.storage.v2.QueryWriteStatusResponse - (*RewriteObjectRequest)(nil), // 36: google.storage.v2.RewriteObjectRequest - (*RewriteResponse)(nil), // 37: google.storage.v2.RewriteResponse - (*MoveObjectRequest)(nil), // 38: google.storage.v2.MoveObjectRequest - (*StartResumableWriteRequest)(nil), // 39: google.storage.v2.StartResumableWriteRequest - (*StartResumableWriteResponse)(nil), // 40: google.storage.v2.StartResumableWriteResponse - (*UpdateObjectRequest)(nil), // 41: google.storage.v2.UpdateObjectRequest - (*CommonObjectRequestParams)(nil), // 42: google.storage.v2.CommonObjectRequestParams - (*ServiceConstants)(nil), // 43: google.storage.v2.ServiceConstants - (*Bucket)(nil), // 44: google.storage.v2.Bucket - (*BucketAccessControl)(nil), // 45: google.storage.v2.BucketAccessControl - (*ChecksummedData)(nil), // 46: google.storage.v2.ChecksummedData - (*ObjectChecksums)(nil), // 47: google.storage.v2.ObjectChecksums - (*CustomerEncryption)(nil), // 48: google.storage.v2.CustomerEncryption - (*Object)(nil), // 49: google.storage.v2.Object - (*ObjectAccessControl)(nil), // 50: google.storage.v2.ObjectAccessControl - (*ListObjectsResponse)(nil), // 51: google.storage.v2.ListObjectsResponse - (*ProjectTeam)(nil), // 52: google.storage.v2.ProjectTeam - (*Owner)(nil), // 53: google.storage.v2.Owner - (*ContentRange)(nil), // 54: google.storage.v2.ContentRange - (*ComposeObjectRequest_SourceObject)(nil), // 55: google.storage.v2.ComposeObjectRequest.SourceObject - (*ComposeObjectRequest_SourceObject_ObjectPreconditions)(nil), // 56: google.storage.v2.ComposeObjectRequest.SourceObject.ObjectPreconditions - (*Bucket_Billing)(nil), // 57: google.storage.v2.Bucket.Billing - (*Bucket_Cors)(nil), // 58: google.storage.v2.Bucket.Cors - (*Bucket_Encryption)(nil), // 59: google.storage.v2.Bucket.Encryption - (*Bucket_IamConfig)(nil), // 60: google.storage.v2.Bucket.IamConfig - (*Bucket_Lifecycle)(nil), // 61: google.storage.v2.Bucket.Lifecycle - (*Bucket_Logging)(nil), // 62: google.storage.v2.Bucket.Logging - (*Bucket_RetentionPolicy)(nil), // 63: google.storage.v2.Bucket.RetentionPolicy - (*Bucket_SoftDeletePolicy)(nil), // 64: google.storage.v2.Bucket.SoftDeletePolicy - (*Bucket_Versioning)(nil), // 65: google.storage.v2.Bucket.Versioning - (*Bucket_Website)(nil), // 66: google.storage.v2.Bucket.Website - (*Bucket_CustomPlacementConfig)(nil), // 67: google.storage.v2.Bucket.CustomPlacementConfig - (*Bucket_Autoclass)(nil), // 68: google.storage.v2.Bucket.Autoclass - (*Bucket_HierarchicalNamespace)(nil), // 69: google.storage.v2.Bucket.HierarchicalNamespace - nil, // 70: google.storage.v2.Bucket.LabelsEntry - (*Bucket_IamConfig_UniformBucketLevelAccess)(nil), // 71: google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess - (*Bucket_Lifecycle_Rule)(nil), // 72: google.storage.v2.Bucket.Lifecycle.Rule - (*Bucket_Lifecycle_Rule_Action)(nil), // 73: google.storage.v2.Bucket.Lifecycle.Rule.Action - (*Bucket_Lifecycle_Rule_Condition)(nil), // 74: google.storage.v2.Bucket.Lifecycle.Rule.Condition - nil, // 75: google.storage.v2.Object.MetadataEntry - (*fieldmaskpb.FieldMask)(nil), // 76: google.protobuf.FieldMask - (*status.Status)(nil), // 77: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 78: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 79: google.protobuf.Duration - (*date.Date)(nil), // 80: google.type.Date - (*iampb.GetIamPolicyRequest)(nil), // 81: google.iam.v1.GetIamPolicyRequest - (*iampb.SetIamPolicyRequest)(nil), // 82: google.iam.v1.SetIamPolicyRequest - (*iampb.TestIamPermissionsRequest)(nil), // 83: google.iam.v1.TestIamPermissionsRequest - (*emptypb.Empty)(nil), // 84: google.protobuf.Empty - (*iampb.Policy)(nil), // 85: google.iam.v1.Policy - (*iampb.TestIamPermissionsResponse)(nil), // 86: google.iam.v1.TestIamPermissionsResponse + (Object_Retention_Mode)(0), // 1: google.storage.v2.Object.Retention.Mode + (*DeleteBucketRequest)(nil), // 2: google.storage.v2.DeleteBucketRequest + (*GetBucketRequest)(nil), // 3: google.storage.v2.GetBucketRequest + (*CreateBucketRequest)(nil), // 4: google.storage.v2.CreateBucketRequest + (*ListBucketsRequest)(nil), // 5: google.storage.v2.ListBucketsRequest + (*ListBucketsResponse)(nil), // 6: google.storage.v2.ListBucketsResponse + (*LockBucketRetentionPolicyRequest)(nil), // 7: google.storage.v2.LockBucketRetentionPolicyRequest + (*UpdateBucketRequest)(nil), // 8: google.storage.v2.UpdateBucketRequest + (*ComposeObjectRequest)(nil), // 9: google.storage.v2.ComposeObjectRequest + (*DeleteObjectRequest)(nil), // 10: google.storage.v2.DeleteObjectRequest + (*RestoreObjectRequest)(nil), // 11: google.storage.v2.RestoreObjectRequest + (*CancelResumableWriteRequest)(nil), // 12: google.storage.v2.CancelResumableWriteRequest + (*CancelResumableWriteResponse)(nil), // 13: google.storage.v2.CancelResumableWriteResponse + (*ReadObjectRequest)(nil), // 14: google.storage.v2.ReadObjectRequest + (*GetObjectRequest)(nil), // 15: google.storage.v2.GetObjectRequest + (*ReadObjectResponse)(nil), // 16: google.storage.v2.ReadObjectResponse + (*BidiReadObjectSpec)(nil), // 17: google.storage.v2.BidiReadObjectSpec + (*BidiReadObjectRequest)(nil), // 18: google.storage.v2.BidiReadObjectRequest + (*BidiReadObjectResponse)(nil), // 19: google.storage.v2.BidiReadObjectResponse + (*BidiReadObjectRedirectedError)(nil), // 20: google.storage.v2.BidiReadObjectRedirectedError + (*BidiWriteObjectRedirectedError)(nil), // 21: google.storage.v2.BidiWriteObjectRedirectedError + (*BidiReadObjectError)(nil), // 22: google.storage.v2.BidiReadObjectError + (*ReadRangeError)(nil), // 23: google.storage.v2.ReadRangeError + (*ReadRange)(nil), // 24: google.storage.v2.ReadRange + (*ObjectRangeData)(nil), // 25: google.storage.v2.ObjectRangeData + (*BidiReadHandle)(nil), // 26: google.storage.v2.BidiReadHandle + (*BidiWriteHandle)(nil), // 27: google.storage.v2.BidiWriteHandle + (*WriteObjectSpec)(nil), // 28: google.storage.v2.WriteObjectSpec + (*WriteObjectRequest)(nil), // 29: google.storage.v2.WriteObjectRequest + (*WriteObjectResponse)(nil), // 30: google.storage.v2.WriteObjectResponse + (*AppendObjectSpec)(nil), // 31: google.storage.v2.AppendObjectSpec + (*BidiWriteObjectRequest)(nil), // 32: google.storage.v2.BidiWriteObjectRequest + (*BidiWriteObjectResponse)(nil), // 33: google.storage.v2.BidiWriteObjectResponse + (*ListObjectsRequest)(nil), // 34: google.storage.v2.ListObjectsRequest + (*QueryWriteStatusRequest)(nil), // 35: google.storage.v2.QueryWriteStatusRequest + (*QueryWriteStatusResponse)(nil), // 36: google.storage.v2.QueryWriteStatusResponse + (*RewriteObjectRequest)(nil), // 37: google.storage.v2.RewriteObjectRequest + (*RewriteResponse)(nil), // 38: google.storage.v2.RewriteResponse + (*MoveObjectRequest)(nil), // 39: google.storage.v2.MoveObjectRequest + (*StartResumableWriteRequest)(nil), // 40: google.storage.v2.StartResumableWriteRequest + (*StartResumableWriteResponse)(nil), // 41: google.storage.v2.StartResumableWriteResponse + (*UpdateObjectRequest)(nil), // 42: google.storage.v2.UpdateObjectRequest + (*CommonObjectRequestParams)(nil), // 43: google.storage.v2.CommonObjectRequestParams + (*ServiceConstants)(nil), // 44: google.storage.v2.ServiceConstants + (*Bucket)(nil), // 45: google.storage.v2.Bucket + (*BucketAccessControl)(nil), // 46: google.storage.v2.BucketAccessControl + (*ChecksummedData)(nil), // 47: google.storage.v2.ChecksummedData + (*ObjectChecksums)(nil), // 48: google.storage.v2.ObjectChecksums + (*ObjectCustomContextPayload)(nil), // 49: google.storage.v2.ObjectCustomContextPayload + (*ObjectContexts)(nil), // 50: google.storage.v2.ObjectContexts + (*CustomerEncryption)(nil), // 51: google.storage.v2.CustomerEncryption + (*Object)(nil), // 52: google.storage.v2.Object + (*ObjectAccessControl)(nil), // 53: google.storage.v2.ObjectAccessControl + (*ListObjectsResponse)(nil), // 54: google.storage.v2.ListObjectsResponse + (*ProjectTeam)(nil), // 55: google.storage.v2.ProjectTeam + (*Owner)(nil), // 56: google.storage.v2.Owner + (*ContentRange)(nil), // 57: google.storage.v2.ContentRange + (*ComposeObjectRequest_SourceObject)(nil), // 58: google.storage.v2.ComposeObjectRequest.SourceObject + (*ComposeObjectRequest_SourceObject_ObjectPreconditions)(nil), // 59: google.storage.v2.ComposeObjectRequest.SourceObject.ObjectPreconditions + (*Bucket_Billing)(nil), // 60: google.storage.v2.Bucket.Billing + (*Bucket_Cors)(nil), // 61: google.storage.v2.Bucket.Cors + (*Bucket_Encryption)(nil), // 62: google.storage.v2.Bucket.Encryption + (*Bucket_IamConfig)(nil), // 63: google.storage.v2.Bucket.IamConfig + (*Bucket_Lifecycle)(nil), // 64: google.storage.v2.Bucket.Lifecycle + (*Bucket_Logging)(nil), // 65: google.storage.v2.Bucket.Logging + (*Bucket_ObjectRetention)(nil), // 66: google.storage.v2.Bucket.ObjectRetention + (*Bucket_RetentionPolicy)(nil), // 67: google.storage.v2.Bucket.RetentionPolicy + (*Bucket_SoftDeletePolicy)(nil), // 68: google.storage.v2.Bucket.SoftDeletePolicy + (*Bucket_Versioning)(nil), // 69: google.storage.v2.Bucket.Versioning + (*Bucket_Website)(nil), // 70: google.storage.v2.Bucket.Website + (*Bucket_CustomPlacementConfig)(nil), // 71: google.storage.v2.Bucket.CustomPlacementConfig + (*Bucket_Autoclass)(nil), // 72: google.storage.v2.Bucket.Autoclass + (*Bucket_IpFilter)(nil), // 73: google.storage.v2.Bucket.IpFilter + (*Bucket_HierarchicalNamespace)(nil), // 74: google.storage.v2.Bucket.HierarchicalNamespace + nil, // 75: google.storage.v2.Bucket.LabelsEntry + (*Bucket_Encryption_GoogleManagedEncryptionEnforcementConfig)(nil), // 76: google.storage.v2.Bucket.Encryption.GoogleManagedEncryptionEnforcementConfig + (*Bucket_Encryption_CustomerManagedEncryptionEnforcementConfig)(nil), // 77: google.storage.v2.Bucket.Encryption.CustomerManagedEncryptionEnforcementConfig + (*Bucket_Encryption_CustomerSuppliedEncryptionEnforcementConfig)(nil), // 78: google.storage.v2.Bucket.Encryption.CustomerSuppliedEncryptionEnforcementConfig + (*Bucket_IamConfig_UniformBucketLevelAccess)(nil), // 79: google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess + (*Bucket_Lifecycle_Rule)(nil), // 80: google.storage.v2.Bucket.Lifecycle.Rule + (*Bucket_Lifecycle_Rule_Action)(nil), // 81: google.storage.v2.Bucket.Lifecycle.Rule.Action + (*Bucket_Lifecycle_Rule_Condition)(nil), // 82: google.storage.v2.Bucket.Lifecycle.Rule.Condition + (*Bucket_IpFilter_PublicNetworkSource)(nil), // 83: google.storage.v2.Bucket.IpFilter.PublicNetworkSource + (*Bucket_IpFilter_VpcNetworkSource)(nil), // 84: google.storage.v2.Bucket.IpFilter.VpcNetworkSource + nil, // 85: google.storage.v2.ObjectContexts.CustomEntry + (*Object_Retention)(nil), // 86: google.storage.v2.Object.Retention + nil, // 87: google.storage.v2.Object.MetadataEntry + (*fieldmaskpb.FieldMask)(nil), // 88: google.protobuf.FieldMask + (*status.Status)(nil), // 89: google.rpc.Status + (*timestamppb.Timestamp)(nil), // 90: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 91: google.protobuf.Duration + (*date.Date)(nil), // 92: google.type.Date + (*iampb.GetIamPolicyRequest)(nil), // 93: google.iam.v1.GetIamPolicyRequest + (*iampb.SetIamPolicyRequest)(nil), // 94: google.iam.v1.SetIamPolicyRequest + (*iampb.TestIamPermissionsRequest)(nil), // 95: google.iam.v1.TestIamPermissionsRequest + (*emptypb.Empty)(nil), // 96: google.protobuf.Empty + (*iampb.Policy)(nil), // 97: google.iam.v1.Policy + (*iampb.TestIamPermissionsResponse)(nil), // 98: google.iam.v1.TestIamPermissionsResponse } var file_google_storage_v2_storage_proto_depIdxs = []int32{ - 76, // 0: google.storage.v2.GetBucketRequest.read_mask:type_name -> google.protobuf.FieldMask - 44, // 1: google.storage.v2.CreateBucketRequest.bucket:type_name -> google.storage.v2.Bucket - 76, // 2: google.storage.v2.ListBucketsRequest.read_mask:type_name -> google.protobuf.FieldMask - 44, // 3: google.storage.v2.ListBucketsResponse.buckets:type_name -> google.storage.v2.Bucket - 44, // 4: google.storage.v2.UpdateBucketRequest.bucket:type_name -> google.storage.v2.Bucket - 76, // 5: google.storage.v2.UpdateBucketRequest.update_mask:type_name -> google.protobuf.FieldMask - 49, // 6: google.storage.v2.ComposeObjectRequest.destination:type_name -> google.storage.v2.Object - 55, // 7: google.storage.v2.ComposeObjectRequest.source_objects:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject - 42, // 8: google.storage.v2.ComposeObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 47, // 9: google.storage.v2.ComposeObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 42, // 10: google.storage.v2.DeleteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 42, // 11: google.storage.v2.RestoreObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 42, // 12: google.storage.v2.ReadObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 76, // 13: google.storage.v2.ReadObjectRequest.read_mask:type_name -> google.protobuf.FieldMask - 42, // 14: google.storage.v2.GetObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 76, // 15: google.storage.v2.GetObjectRequest.read_mask:type_name -> google.protobuf.FieldMask - 46, // 16: google.storage.v2.ReadObjectResponse.checksummed_data:type_name -> google.storage.v2.ChecksummedData - 47, // 17: google.storage.v2.ReadObjectResponse.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 54, // 18: google.storage.v2.ReadObjectResponse.content_range:type_name -> google.storage.v2.ContentRange - 49, // 19: google.storage.v2.ReadObjectResponse.metadata:type_name -> google.storage.v2.Object - 42, // 20: google.storage.v2.BidiReadObjectSpec.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 76, // 21: google.storage.v2.BidiReadObjectSpec.read_mask:type_name -> google.protobuf.FieldMask - 25, // 22: google.storage.v2.BidiReadObjectSpec.read_handle:type_name -> google.storage.v2.BidiReadHandle - 16, // 23: google.storage.v2.BidiReadObjectRequest.read_object_spec:type_name -> google.storage.v2.BidiReadObjectSpec - 23, // 24: google.storage.v2.BidiReadObjectRequest.read_ranges:type_name -> google.storage.v2.ReadRange - 24, // 25: google.storage.v2.BidiReadObjectResponse.object_data_ranges:type_name -> google.storage.v2.ObjectRangeData - 49, // 26: google.storage.v2.BidiReadObjectResponse.metadata:type_name -> google.storage.v2.Object - 25, // 27: google.storage.v2.BidiReadObjectResponse.read_handle:type_name -> google.storage.v2.BidiReadHandle - 25, // 28: google.storage.v2.BidiReadObjectRedirectedError.read_handle:type_name -> google.storage.v2.BidiReadHandle - 26, // 29: google.storage.v2.BidiWriteObjectRedirectedError.write_handle:type_name -> google.storage.v2.BidiWriteHandle - 22, // 30: google.storage.v2.BidiReadObjectError.read_range_errors:type_name -> google.storage.v2.ReadRangeError - 77, // 31: google.storage.v2.ReadRangeError.status:type_name -> google.rpc.Status - 46, // 32: google.storage.v2.ObjectRangeData.checksummed_data:type_name -> google.storage.v2.ChecksummedData - 23, // 33: google.storage.v2.ObjectRangeData.read_range:type_name -> google.storage.v2.ReadRange - 49, // 34: google.storage.v2.WriteObjectSpec.resource:type_name -> google.storage.v2.Object - 27, // 35: google.storage.v2.WriteObjectRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec - 46, // 36: google.storage.v2.WriteObjectRequest.checksummed_data:type_name -> google.storage.v2.ChecksummedData - 47, // 37: google.storage.v2.WriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 42, // 38: google.storage.v2.WriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 49, // 39: google.storage.v2.WriteObjectResponse.resource:type_name -> google.storage.v2.Object - 26, // 40: google.storage.v2.AppendObjectSpec.write_handle:type_name -> google.storage.v2.BidiWriteHandle - 27, // 41: google.storage.v2.BidiWriteObjectRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec - 30, // 42: google.storage.v2.BidiWriteObjectRequest.append_object_spec:type_name -> google.storage.v2.AppendObjectSpec - 46, // 43: google.storage.v2.BidiWriteObjectRequest.checksummed_data:type_name -> google.storage.v2.ChecksummedData - 47, // 44: google.storage.v2.BidiWriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 42, // 45: google.storage.v2.BidiWriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 49, // 46: google.storage.v2.BidiWriteObjectResponse.resource:type_name -> google.storage.v2.Object - 26, // 47: google.storage.v2.BidiWriteObjectResponse.write_handle:type_name -> google.storage.v2.BidiWriteHandle - 76, // 48: google.storage.v2.ListObjectsRequest.read_mask:type_name -> google.protobuf.FieldMask - 42, // 49: google.storage.v2.QueryWriteStatusRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 49, // 50: google.storage.v2.QueryWriteStatusResponse.resource:type_name -> google.storage.v2.Object - 49, // 51: google.storage.v2.RewriteObjectRequest.destination:type_name -> google.storage.v2.Object - 42, // 52: google.storage.v2.RewriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 47, // 53: google.storage.v2.RewriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 49, // 54: google.storage.v2.RewriteResponse.resource:type_name -> google.storage.v2.Object - 27, // 55: google.storage.v2.StartResumableWriteRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec - 42, // 56: google.storage.v2.StartResumableWriteRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 47, // 57: google.storage.v2.StartResumableWriteRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums - 49, // 58: google.storage.v2.UpdateObjectRequest.object:type_name -> google.storage.v2.Object - 76, // 59: google.storage.v2.UpdateObjectRequest.update_mask:type_name -> google.protobuf.FieldMask - 42, // 60: google.storage.v2.UpdateObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams - 45, // 61: google.storage.v2.Bucket.acl:type_name -> google.storage.v2.BucketAccessControl - 50, // 62: google.storage.v2.Bucket.default_object_acl:type_name -> google.storage.v2.ObjectAccessControl - 61, // 63: google.storage.v2.Bucket.lifecycle:type_name -> google.storage.v2.Bucket.Lifecycle - 78, // 64: google.storage.v2.Bucket.create_time:type_name -> google.protobuf.Timestamp - 58, // 65: google.storage.v2.Bucket.cors:type_name -> google.storage.v2.Bucket.Cors - 78, // 66: google.storage.v2.Bucket.update_time:type_name -> google.protobuf.Timestamp - 70, // 67: google.storage.v2.Bucket.labels:type_name -> google.storage.v2.Bucket.LabelsEntry - 66, // 68: google.storage.v2.Bucket.website:type_name -> google.storage.v2.Bucket.Website - 65, // 69: google.storage.v2.Bucket.versioning:type_name -> google.storage.v2.Bucket.Versioning - 62, // 70: google.storage.v2.Bucket.logging:type_name -> google.storage.v2.Bucket.Logging - 53, // 71: google.storage.v2.Bucket.owner:type_name -> google.storage.v2.Owner - 59, // 72: google.storage.v2.Bucket.encryption:type_name -> google.storage.v2.Bucket.Encryption - 57, // 73: google.storage.v2.Bucket.billing:type_name -> google.storage.v2.Bucket.Billing - 63, // 74: google.storage.v2.Bucket.retention_policy:type_name -> google.storage.v2.Bucket.RetentionPolicy - 60, // 75: google.storage.v2.Bucket.iam_config:type_name -> google.storage.v2.Bucket.IamConfig - 67, // 76: google.storage.v2.Bucket.custom_placement_config:type_name -> google.storage.v2.Bucket.CustomPlacementConfig - 68, // 77: google.storage.v2.Bucket.autoclass:type_name -> google.storage.v2.Bucket.Autoclass - 69, // 78: google.storage.v2.Bucket.hierarchical_namespace:type_name -> google.storage.v2.Bucket.HierarchicalNamespace - 64, // 79: google.storage.v2.Bucket.soft_delete_policy:type_name -> google.storage.v2.Bucket.SoftDeletePolicy - 52, // 80: google.storage.v2.BucketAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam - 50, // 81: google.storage.v2.Object.acl:type_name -> google.storage.v2.ObjectAccessControl - 78, // 82: google.storage.v2.Object.delete_time:type_name -> google.protobuf.Timestamp - 78, // 83: google.storage.v2.Object.finalize_time:type_name -> google.protobuf.Timestamp - 78, // 84: google.storage.v2.Object.create_time:type_name -> google.protobuf.Timestamp - 47, // 85: google.storage.v2.Object.checksums:type_name -> google.storage.v2.ObjectChecksums - 78, // 86: google.storage.v2.Object.update_time:type_name -> google.protobuf.Timestamp - 78, // 87: google.storage.v2.Object.update_storage_class_time:type_name -> google.protobuf.Timestamp - 78, // 88: google.storage.v2.Object.retention_expire_time:type_name -> google.protobuf.Timestamp - 75, // 89: google.storage.v2.Object.metadata:type_name -> google.storage.v2.Object.MetadataEntry - 53, // 90: google.storage.v2.Object.owner:type_name -> google.storage.v2.Owner - 48, // 91: google.storage.v2.Object.customer_encryption:type_name -> google.storage.v2.CustomerEncryption - 78, // 92: google.storage.v2.Object.custom_time:type_name -> google.protobuf.Timestamp - 78, // 93: google.storage.v2.Object.soft_delete_time:type_name -> google.protobuf.Timestamp - 78, // 94: google.storage.v2.Object.hard_delete_time:type_name -> google.protobuf.Timestamp - 52, // 95: google.storage.v2.ObjectAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam - 49, // 96: google.storage.v2.ListObjectsResponse.objects:type_name -> google.storage.v2.Object - 56, // 97: google.storage.v2.ComposeObjectRequest.SourceObject.object_preconditions:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject.ObjectPreconditions - 71, // 98: google.storage.v2.Bucket.IamConfig.uniform_bucket_level_access:type_name -> google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess - 72, // 99: google.storage.v2.Bucket.Lifecycle.rule:type_name -> google.storage.v2.Bucket.Lifecycle.Rule - 78, // 100: google.storage.v2.Bucket.RetentionPolicy.effective_time:type_name -> google.protobuf.Timestamp - 79, // 101: google.storage.v2.Bucket.RetentionPolicy.retention_duration:type_name -> google.protobuf.Duration - 79, // 102: google.storage.v2.Bucket.SoftDeletePolicy.retention_duration:type_name -> google.protobuf.Duration - 78, // 103: google.storage.v2.Bucket.SoftDeletePolicy.effective_time:type_name -> google.protobuf.Timestamp - 78, // 104: google.storage.v2.Bucket.Autoclass.toggle_time:type_name -> google.protobuf.Timestamp - 78, // 105: google.storage.v2.Bucket.Autoclass.terminal_storage_class_update_time:type_name -> google.protobuf.Timestamp - 78, // 106: google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess.lock_time:type_name -> google.protobuf.Timestamp - 73, // 107: google.storage.v2.Bucket.Lifecycle.Rule.action:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Action - 74, // 108: google.storage.v2.Bucket.Lifecycle.Rule.condition:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Condition - 80, // 109: google.storage.v2.Bucket.Lifecycle.Rule.Condition.created_before:type_name -> google.type.Date - 80, // 110: google.storage.v2.Bucket.Lifecycle.Rule.Condition.custom_time_before:type_name -> google.type.Date - 80, // 111: google.storage.v2.Bucket.Lifecycle.Rule.Condition.noncurrent_time_before:type_name -> google.type.Date - 1, // 112: google.storage.v2.Storage.DeleteBucket:input_type -> google.storage.v2.DeleteBucketRequest - 2, // 113: google.storage.v2.Storage.GetBucket:input_type -> google.storage.v2.GetBucketRequest - 3, // 114: google.storage.v2.Storage.CreateBucket:input_type -> google.storage.v2.CreateBucketRequest - 4, // 115: google.storage.v2.Storage.ListBuckets:input_type -> google.storage.v2.ListBucketsRequest - 6, // 116: google.storage.v2.Storage.LockBucketRetentionPolicy:input_type -> google.storage.v2.LockBucketRetentionPolicyRequest - 81, // 117: google.storage.v2.Storage.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest - 82, // 118: google.storage.v2.Storage.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest - 83, // 119: google.storage.v2.Storage.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest - 7, // 120: google.storage.v2.Storage.UpdateBucket:input_type -> google.storage.v2.UpdateBucketRequest - 8, // 121: google.storage.v2.Storage.ComposeObject:input_type -> google.storage.v2.ComposeObjectRequest - 9, // 122: google.storage.v2.Storage.DeleteObject:input_type -> google.storage.v2.DeleteObjectRequest - 10, // 123: google.storage.v2.Storage.RestoreObject:input_type -> google.storage.v2.RestoreObjectRequest - 11, // 124: google.storage.v2.Storage.CancelResumableWrite:input_type -> google.storage.v2.CancelResumableWriteRequest - 14, // 125: google.storage.v2.Storage.GetObject:input_type -> google.storage.v2.GetObjectRequest - 13, // 126: google.storage.v2.Storage.ReadObject:input_type -> google.storage.v2.ReadObjectRequest - 17, // 127: google.storage.v2.Storage.BidiReadObject:input_type -> google.storage.v2.BidiReadObjectRequest - 41, // 128: google.storage.v2.Storage.UpdateObject:input_type -> google.storage.v2.UpdateObjectRequest - 28, // 129: google.storage.v2.Storage.WriteObject:input_type -> google.storage.v2.WriteObjectRequest - 31, // 130: google.storage.v2.Storage.BidiWriteObject:input_type -> google.storage.v2.BidiWriteObjectRequest - 33, // 131: google.storage.v2.Storage.ListObjects:input_type -> google.storage.v2.ListObjectsRequest - 36, // 132: google.storage.v2.Storage.RewriteObject:input_type -> google.storage.v2.RewriteObjectRequest - 39, // 133: google.storage.v2.Storage.StartResumableWrite:input_type -> google.storage.v2.StartResumableWriteRequest - 34, // 134: google.storage.v2.Storage.QueryWriteStatus:input_type -> google.storage.v2.QueryWriteStatusRequest - 38, // 135: google.storage.v2.Storage.MoveObject:input_type -> google.storage.v2.MoveObjectRequest - 84, // 136: google.storage.v2.Storage.DeleteBucket:output_type -> google.protobuf.Empty - 44, // 137: google.storage.v2.Storage.GetBucket:output_type -> google.storage.v2.Bucket - 44, // 138: google.storage.v2.Storage.CreateBucket:output_type -> google.storage.v2.Bucket - 5, // 139: google.storage.v2.Storage.ListBuckets:output_type -> google.storage.v2.ListBucketsResponse - 44, // 140: google.storage.v2.Storage.LockBucketRetentionPolicy:output_type -> google.storage.v2.Bucket - 85, // 141: google.storage.v2.Storage.GetIamPolicy:output_type -> google.iam.v1.Policy - 85, // 142: google.storage.v2.Storage.SetIamPolicy:output_type -> google.iam.v1.Policy - 86, // 143: google.storage.v2.Storage.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse - 44, // 144: google.storage.v2.Storage.UpdateBucket:output_type -> google.storage.v2.Bucket - 49, // 145: google.storage.v2.Storage.ComposeObject:output_type -> google.storage.v2.Object - 84, // 146: google.storage.v2.Storage.DeleteObject:output_type -> google.protobuf.Empty - 49, // 147: google.storage.v2.Storage.RestoreObject:output_type -> google.storage.v2.Object - 12, // 148: google.storage.v2.Storage.CancelResumableWrite:output_type -> google.storage.v2.CancelResumableWriteResponse - 49, // 149: google.storage.v2.Storage.GetObject:output_type -> google.storage.v2.Object - 15, // 150: google.storage.v2.Storage.ReadObject:output_type -> google.storage.v2.ReadObjectResponse - 18, // 151: google.storage.v2.Storage.BidiReadObject:output_type -> google.storage.v2.BidiReadObjectResponse - 49, // 152: google.storage.v2.Storage.UpdateObject:output_type -> google.storage.v2.Object - 29, // 153: google.storage.v2.Storage.WriteObject:output_type -> google.storage.v2.WriteObjectResponse - 32, // 154: google.storage.v2.Storage.BidiWriteObject:output_type -> google.storage.v2.BidiWriteObjectResponse - 51, // 155: google.storage.v2.Storage.ListObjects:output_type -> google.storage.v2.ListObjectsResponse - 37, // 156: google.storage.v2.Storage.RewriteObject:output_type -> google.storage.v2.RewriteResponse - 40, // 157: google.storage.v2.Storage.StartResumableWrite:output_type -> google.storage.v2.StartResumableWriteResponse - 35, // 158: google.storage.v2.Storage.QueryWriteStatus:output_type -> google.storage.v2.QueryWriteStatusResponse - 49, // 159: google.storage.v2.Storage.MoveObject:output_type -> google.storage.v2.Object - 136, // [136:160] is the sub-list for method output_type - 112, // [112:136] is the sub-list for method input_type - 112, // [112:112] is the sub-list for extension type_name - 112, // [112:112] is the sub-list for extension extendee - 0, // [0:112] is the sub-list for field type_name + 88, // 0: google.storage.v2.GetBucketRequest.read_mask:type_name -> google.protobuf.FieldMask + 45, // 1: google.storage.v2.CreateBucketRequest.bucket:type_name -> google.storage.v2.Bucket + 88, // 2: google.storage.v2.ListBucketsRequest.read_mask:type_name -> google.protobuf.FieldMask + 45, // 3: google.storage.v2.ListBucketsResponse.buckets:type_name -> google.storage.v2.Bucket + 45, // 4: google.storage.v2.UpdateBucketRequest.bucket:type_name -> google.storage.v2.Bucket + 88, // 5: google.storage.v2.UpdateBucketRequest.update_mask:type_name -> google.protobuf.FieldMask + 52, // 6: google.storage.v2.ComposeObjectRequest.destination:type_name -> google.storage.v2.Object + 58, // 7: google.storage.v2.ComposeObjectRequest.source_objects:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject + 43, // 8: google.storage.v2.ComposeObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 48, // 9: google.storage.v2.ComposeObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 43, // 10: google.storage.v2.DeleteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 43, // 11: google.storage.v2.RestoreObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 43, // 12: google.storage.v2.ReadObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 88, // 13: google.storage.v2.ReadObjectRequest.read_mask:type_name -> google.protobuf.FieldMask + 43, // 14: google.storage.v2.GetObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 88, // 15: google.storage.v2.GetObjectRequest.read_mask:type_name -> google.protobuf.FieldMask + 47, // 16: google.storage.v2.ReadObjectResponse.checksummed_data:type_name -> google.storage.v2.ChecksummedData + 48, // 17: google.storage.v2.ReadObjectResponse.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 57, // 18: google.storage.v2.ReadObjectResponse.content_range:type_name -> google.storage.v2.ContentRange + 52, // 19: google.storage.v2.ReadObjectResponse.metadata:type_name -> google.storage.v2.Object + 43, // 20: google.storage.v2.BidiReadObjectSpec.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 88, // 21: google.storage.v2.BidiReadObjectSpec.read_mask:type_name -> google.protobuf.FieldMask + 26, // 22: google.storage.v2.BidiReadObjectSpec.read_handle:type_name -> google.storage.v2.BidiReadHandle + 17, // 23: google.storage.v2.BidiReadObjectRequest.read_object_spec:type_name -> google.storage.v2.BidiReadObjectSpec + 24, // 24: google.storage.v2.BidiReadObjectRequest.read_ranges:type_name -> google.storage.v2.ReadRange + 25, // 25: google.storage.v2.BidiReadObjectResponse.object_data_ranges:type_name -> google.storage.v2.ObjectRangeData + 52, // 26: google.storage.v2.BidiReadObjectResponse.metadata:type_name -> google.storage.v2.Object + 26, // 27: google.storage.v2.BidiReadObjectResponse.read_handle:type_name -> google.storage.v2.BidiReadHandle + 26, // 28: google.storage.v2.BidiReadObjectRedirectedError.read_handle:type_name -> google.storage.v2.BidiReadHandle + 27, // 29: google.storage.v2.BidiWriteObjectRedirectedError.write_handle:type_name -> google.storage.v2.BidiWriteHandle + 23, // 30: google.storage.v2.BidiReadObjectError.read_range_errors:type_name -> google.storage.v2.ReadRangeError + 89, // 31: google.storage.v2.ReadRangeError.status:type_name -> google.rpc.Status + 47, // 32: google.storage.v2.ObjectRangeData.checksummed_data:type_name -> google.storage.v2.ChecksummedData + 24, // 33: google.storage.v2.ObjectRangeData.read_range:type_name -> google.storage.v2.ReadRange + 52, // 34: google.storage.v2.WriteObjectSpec.resource:type_name -> google.storage.v2.Object + 28, // 35: google.storage.v2.WriteObjectRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec + 47, // 36: google.storage.v2.WriteObjectRequest.checksummed_data:type_name -> google.storage.v2.ChecksummedData + 48, // 37: google.storage.v2.WriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 43, // 38: google.storage.v2.WriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 52, // 39: google.storage.v2.WriteObjectResponse.resource:type_name -> google.storage.v2.Object + 27, // 40: google.storage.v2.AppendObjectSpec.write_handle:type_name -> google.storage.v2.BidiWriteHandle + 28, // 41: google.storage.v2.BidiWriteObjectRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec + 31, // 42: google.storage.v2.BidiWriteObjectRequest.append_object_spec:type_name -> google.storage.v2.AppendObjectSpec + 47, // 43: google.storage.v2.BidiWriteObjectRequest.checksummed_data:type_name -> google.storage.v2.ChecksummedData + 48, // 44: google.storage.v2.BidiWriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 43, // 45: google.storage.v2.BidiWriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 52, // 46: google.storage.v2.BidiWriteObjectResponse.resource:type_name -> google.storage.v2.Object + 27, // 47: google.storage.v2.BidiWriteObjectResponse.write_handle:type_name -> google.storage.v2.BidiWriteHandle + 88, // 48: google.storage.v2.ListObjectsRequest.read_mask:type_name -> google.protobuf.FieldMask + 43, // 49: google.storage.v2.QueryWriteStatusRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 52, // 50: google.storage.v2.QueryWriteStatusResponse.resource:type_name -> google.storage.v2.Object + 52, // 51: google.storage.v2.RewriteObjectRequest.destination:type_name -> google.storage.v2.Object + 43, // 52: google.storage.v2.RewriteObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 48, // 53: google.storage.v2.RewriteObjectRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 52, // 54: google.storage.v2.RewriteResponse.resource:type_name -> google.storage.v2.Object + 28, // 55: google.storage.v2.StartResumableWriteRequest.write_object_spec:type_name -> google.storage.v2.WriteObjectSpec + 43, // 56: google.storage.v2.StartResumableWriteRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 48, // 57: google.storage.v2.StartResumableWriteRequest.object_checksums:type_name -> google.storage.v2.ObjectChecksums + 52, // 58: google.storage.v2.UpdateObjectRequest.object:type_name -> google.storage.v2.Object + 88, // 59: google.storage.v2.UpdateObjectRequest.update_mask:type_name -> google.protobuf.FieldMask + 43, // 60: google.storage.v2.UpdateObjectRequest.common_object_request_params:type_name -> google.storage.v2.CommonObjectRequestParams + 46, // 61: google.storage.v2.Bucket.acl:type_name -> google.storage.v2.BucketAccessControl + 53, // 62: google.storage.v2.Bucket.default_object_acl:type_name -> google.storage.v2.ObjectAccessControl + 64, // 63: google.storage.v2.Bucket.lifecycle:type_name -> google.storage.v2.Bucket.Lifecycle + 90, // 64: google.storage.v2.Bucket.create_time:type_name -> google.protobuf.Timestamp + 61, // 65: google.storage.v2.Bucket.cors:type_name -> google.storage.v2.Bucket.Cors + 90, // 66: google.storage.v2.Bucket.update_time:type_name -> google.protobuf.Timestamp + 75, // 67: google.storage.v2.Bucket.labels:type_name -> google.storage.v2.Bucket.LabelsEntry + 70, // 68: google.storage.v2.Bucket.website:type_name -> google.storage.v2.Bucket.Website + 69, // 69: google.storage.v2.Bucket.versioning:type_name -> google.storage.v2.Bucket.Versioning + 65, // 70: google.storage.v2.Bucket.logging:type_name -> google.storage.v2.Bucket.Logging + 56, // 71: google.storage.v2.Bucket.owner:type_name -> google.storage.v2.Owner + 62, // 72: google.storage.v2.Bucket.encryption:type_name -> google.storage.v2.Bucket.Encryption + 60, // 73: google.storage.v2.Bucket.billing:type_name -> google.storage.v2.Bucket.Billing + 67, // 74: google.storage.v2.Bucket.retention_policy:type_name -> google.storage.v2.Bucket.RetentionPolicy + 63, // 75: google.storage.v2.Bucket.iam_config:type_name -> google.storage.v2.Bucket.IamConfig + 71, // 76: google.storage.v2.Bucket.custom_placement_config:type_name -> google.storage.v2.Bucket.CustomPlacementConfig + 72, // 77: google.storage.v2.Bucket.autoclass:type_name -> google.storage.v2.Bucket.Autoclass + 74, // 78: google.storage.v2.Bucket.hierarchical_namespace:type_name -> google.storage.v2.Bucket.HierarchicalNamespace + 68, // 79: google.storage.v2.Bucket.soft_delete_policy:type_name -> google.storage.v2.Bucket.SoftDeletePolicy + 66, // 80: google.storage.v2.Bucket.object_retention:type_name -> google.storage.v2.Bucket.ObjectRetention + 73, // 81: google.storage.v2.Bucket.ip_filter:type_name -> google.storage.v2.Bucket.IpFilter + 55, // 82: google.storage.v2.BucketAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam + 90, // 83: google.storage.v2.ObjectCustomContextPayload.create_time:type_name -> google.protobuf.Timestamp + 90, // 84: google.storage.v2.ObjectCustomContextPayload.update_time:type_name -> google.protobuf.Timestamp + 85, // 85: google.storage.v2.ObjectContexts.custom:type_name -> google.storage.v2.ObjectContexts.CustomEntry + 53, // 86: google.storage.v2.Object.acl:type_name -> google.storage.v2.ObjectAccessControl + 90, // 87: google.storage.v2.Object.delete_time:type_name -> google.protobuf.Timestamp + 90, // 88: google.storage.v2.Object.finalize_time:type_name -> google.protobuf.Timestamp + 90, // 89: google.storage.v2.Object.create_time:type_name -> google.protobuf.Timestamp + 48, // 90: google.storage.v2.Object.checksums:type_name -> google.storage.v2.ObjectChecksums + 90, // 91: google.storage.v2.Object.update_time:type_name -> google.protobuf.Timestamp + 90, // 92: google.storage.v2.Object.update_storage_class_time:type_name -> google.protobuf.Timestamp + 90, // 93: google.storage.v2.Object.retention_expire_time:type_name -> google.protobuf.Timestamp + 87, // 94: google.storage.v2.Object.metadata:type_name -> google.storage.v2.Object.MetadataEntry + 50, // 95: google.storage.v2.Object.contexts:type_name -> google.storage.v2.ObjectContexts + 56, // 96: google.storage.v2.Object.owner:type_name -> google.storage.v2.Owner + 51, // 97: google.storage.v2.Object.customer_encryption:type_name -> google.storage.v2.CustomerEncryption + 90, // 98: google.storage.v2.Object.custom_time:type_name -> google.protobuf.Timestamp + 90, // 99: google.storage.v2.Object.soft_delete_time:type_name -> google.protobuf.Timestamp + 90, // 100: google.storage.v2.Object.hard_delete_time:type_name -> google.protobuf.Timestamp + 86, // 101: google.storage.v2.Object.retention:type_name -> google.storage.v2.Object.Retention + 55, // 102: google.storage.v2.ObjectAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam + 52, // 103: google.storage.v2.ListObjectsResponse.objects:type_name -> google.storage.v2.Object + 59, // 104: google.storage.v2.ComposeObjectRequest.SourceObject.object_preconditions:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject.ObjectPreconditions + 76, // 105: google.storage.v2.Bucket.Encryption.google_managed_encryption_enforcement_config:type_name -> google.storage.v2.Bucket.Encryption.GoogleManagedEncryptionEnforcementConfig + 77, // 106: google.storage.v2.Bucket.Encryption.customer_managed_encryption_enforcement_config:type_name -> google.storage.v2.Bucket.Encryption.CustomerManagedEncryptionEnforcementConfig + 78, // 107: google.storage.v2.Bucket.Encryption.customer_supplied_encryption_enforcement_config:type_name -> google.storage.v2.Bucket.Encryption.CustomerSuppliedEncryptionEnforcementConfig + 79, // 108: google.storage.v2.Bucket.IamConfig.uniform_bucket_level_access:type_name -> google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess + 80, // 109: google.storage.v2.Bucket.Lifecycle.rule:type_name -> google.storage.v2.Bucket.Lifecycle.Rule + 90, // 110: google.storage.v2.Bucket.RetentionPolicy.effective_time:type_name -> google.protobuf.Timestamp + 91, // 111: google.storage.v2.Bucket.RetentionPolicy.retention_duration:type_name -> google.protobuf.Duration + 91, // 112: google.storage.v2.Bucket.SoftDeletePolicy.retention_duration:type_name -> google.protobuf.Duration + 90, // 113: google.storage.v2.Bucket.SoftDeletePolicy.effective_time:type_name -> google.protobuf.Timestamp + 90, // 114: google.storage.v2.Bucket.Autoclass.toggle_time:type_name -> google.protobuf.Timestamp + 90, // 115: google.storage.v2.Bucket.Autoclass.terminal_storage_class_update_time:type_name -> google.protobuf.Timestamp + 83, // 116: google.storage.v2.Bucket.IpFilter.public_network_source:type_name -> google.storage.v2.Bucket.IpFilter.PublicNetworkSource + 84, // 117: google.storage.v2.Bucket.IpFilter.vpc_network_sources:type_name -> google.storage.v2.Bucket.IpFilter.VpcNetworkSource + 90, // 118: google.storage.v2.Bucket.Encryption.GoogleManagedEncryptionEnforcementConfig.effective_time:type_name -> google.protobuf.Timestamp + 90, // 119: google.storage.v2.Bucket.Encryption.CustomerManagedEncryptionEnforcementConfig.effective_time:type_name -> google.protobuf.Timestamp + 90, // 120: google.storage.v2.Bucket.Encryption.CustomerSuppliedEncryptionEnforcementConfig.effective_time:type_name -> google.protobuf.Timestamp + 90, // 121: google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess.lock_time:type_name -> google.protobuf.Timestamp + 81, // 122: google.storage.v2.Bucket.Lifecycle.Rule.action:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Action + 82, // 123: google.storage.v2.Bucket.Lifecycle.Rule.condition:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Condition + 92, // 124: google.storage.v2.Bucket.Lifecycle.Rule.Condition.created_before:type_name -> google.type.Date + 92, // 125: google.storage.v2.Bucket.Lifecycle.Rule.Condition.custom_time_before:type_name -> google.type.Date + 92, // 126: google.storage.v2.Bucket.Lifecycle.Rule.Condition.noncurrent_time_before:type_name -> google.type.Date + 49, // 127: google.storage.v2.ObjectContexts.CustomEntry.value:type_name -> google.storage.v2.ObjectCustomContextPayload + 1, // 128: google.storage.v2.Object.Retention.mode:type_name -> google.storage.v2.Object.Retention.Mode + 90, // 129: google.storage.v2.Object.Retention.retain_until_time:type_name -> google.protobuf.Timestamp + 2, // 130: google.storage.v2.Storage.DeleteBucket:input_type -> google.storage.v2.DeleteBucketRequest + 3, // 131: google.storage.v2.Storage.GetBucket:input_type -> google.storage.v2.GetBucketRequest + 4, // 132: google.storage.v2.Storage.CreateBucket:input_type -> google.storage.v2.CreateBucketRequest + 5, // 133: google.storage.v2.Storage.ListBuckets:input_type -> google.storage.v2.ListBucketsRequest + 7, // 134: google.storage.v2.Storage.LockBucketRetentionPolicy:input_type -> google.storage.v2.LockBucketRetentionPolicyRequest + 93, // 135: google.storage.v2.Storage.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest + 94, // 136: google.storage.v2.Storage.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest + 95, // 137: google.storage.v2.Storage.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest + 8, // 138: google.storage.v2.Storage.UpdateBucket:input_type -> google.storage.v2.UpdateBucketRequest + 9, // 139: google.storage.v2.Storage.ComposeObject:input_type -> google.storage.v2.ComposeObjectRequest + 10, // 140: google.storage.v2.Storage.DeleteObject:input_type -> google.storage.v2.DeleteObjectRequest + 11, // 141: google.storage.v2.Storage.RestoreObject:input_type -> google.storage.v2.RestoreObjectRequest + 12, // 142: google.storage.v2.Storage.CancelResumableWrite:input_type -> google.storage.v2.CancelResumableWriteRequest + 15, // 143: google.storage.v2.Storage.GetObject:input_type -> google.storage.v2.GetObjectRequest + 14, // 144: google.storage.v2.Storage.ReadObject:input_type -> google.storage.v2.ReadObjectRequest + 18, // 145: google.storage.v2.Storage.BidiReadObject:input_type -> google.storage.v2.BidiReadObjectRequest + 42, // 146: google.storage.v2.Storage.UpdateObject:input_type -> google.storage.v2.UpdateObjectRequest + 29, // 147: google.storage.v2.Storage.WriteObject:input_type -> google.storage.v2.WriteObjectRequest + 32, // 148: google.storage.v2.Storage.BidiWriteObject:input_type -> google.storage.v2.BidiWriteObjectRequest + 34, // 149: google.storage.v2.Storage.ListObjects:input_type -> google.storage.v2.ListObjectsRequest + 37, // 150: google.storage.v2.Storage.RewriteObject:input_type -> google.storage.v2.RewriteObjectRequest + 40, // 151: google.storage.v2.Storage.StartResumableWrite:input_type -> google.storage.v2.StartResumableWriteRequest + 35, // 152: google.storage.v2.Storage.QueryWriteStatus:input_type -> google.storage.v2.QueryWriteStatusRequest + 39, // 153: google.storage.v2.Storage.MoveObject:input_type -> google.storage.v2.MoveObjectRequest + 96, // 154: google.storage.v2.Storage.DeleteBucket:output_type -> google.protobuf.Empty + 45, // 155: google.storage.v2.Storage.GetBucket:output_type -> google.storage.v2.Bucket + 45, // 156: google.storage.v2.Storage.CreateBucket:output_type -> google.storage.v2.Bucket + 6, // 157: google.storage.v2.Storage.ListBuckets:output_type -> google.storage.v2.ListBucketsResponse + 45, // 158: google.storage.v2.Storage.LockBucketRetentionPolicy:output_type -> google.storage.v2.Bucket + 97, // 159: google.storage.v2.Storage.GetIamPolicy:output_type -> google.iam.v1.Policy + 97, // 160: google.storage.v2.Storage.SetIamPolicy:output_type -> google.iam.v1.Policy + 98, // 161: google.storage.v2.Storage.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse + 45, // 162: google.storage.v2.Storage.UpdateBucket:output_type -> google.storage.v2.Bucket + 52, // 163: google.storage.v2.Storage.ComposeObject:output_type -> google.storage.v2.Object + 96, // 164: google.storage.v2.Storage.DeleteObject:output_type -> google.protobuf.Empty + 52, // 165: google.storage.v2.Storage.RestoreObject:output_type -> google.storage.v2.Object + 13, // 166: google.storage.v2.Storage.CancelResumableWrite:output_type -> google.storage.v2.CancelResumableWriteResponse + 52, // 167: google.storage.v2.Storage.GetObject:output_type -> google.storage.v2.Object + 16, // 168: google.storage.v2.Storage.ReadObject:output_type -> google.storage.v2.ReadObjectResponse + 19, // 169: google.storage.v2.Storage.BidiReadObject:output_type -> google.storage.v2.BidiReadObjectResponse + 52, // 170: google.storage.v2.Storage.UpdateObject:output_type -> google.storage.v2.Object + 30, // 171: google.storage.v2.Storage.WriteObject:output_type -> google.storage.v2.WriteObjectResponse + 33, // 172: google.storage.v2.Storage.BidiWriteObject:output_type -> google.storage.v2.BidiWriteObjectResponse + 54, // 173: google.storage.v2.Storage.ListObjects:output_type -> google.storage.v2.ListObjectsResponse + 38, // 174: google.storage.v2.Storage.RewriteObject:output_type -> google.storage.v2.RewriteResponse + 41, // 175: google.storage.v2.Storage.StartResumableWrite:output_type -> google.storage.v2.StartResumableWriteResponse + 36, // 176: google.storage.v2.Storage.QueryWriteStatus:output_type -> google.storage.v2.QueryWriteStatusResponse + 52, // 177: google.storage.v2.Storage.MoveObject:output_type -> google.storage.v2.Object + 154, // [154:178] is the sub-list for method output_type + 130, // [130:154] is the sub-list for method input_type + 130, // [130:130] is the sub-list for extension type_name + 130, // [130:130] is the sub-list for extension extendee + 0, // [0:130] is the sub-list for field type_name } func init() { file_google_storage_v2_storage_proto_init() } @@ -9233,20 +10318,27 @@ func file_google_storage_v2_storage_proto_init() { file_google_storage_v2_storage_proto_msgTypes[35].OneofWrappers = []any{} file_google_storage_v2_storage_proto_msgTypes[37].OneofWrappers = []any{} file_google_storage_v2_storage_proto_msgTypes[40].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[43].OneofWrappers = []any{} file_google_storage_v2_storage_proto_msgTypes[45].OneofWrappers = []any{} file_google_storage_v2_storage_proto_msgTypes[46].OneofWrappers = []any{} - file_google_storage_v2_storage_proto_msgTypes[48].OneofWrappers = []any{} - file_google_storage_v2_storage_proto_msgTypes[55].OneofWrappers = []any{} - file_google_storage_v2_storage_proto_msgTypes[63].OneofWrappers = []any{} - file_google_storage_v2_storage_proto_msgTypes[67].OneofWrappers = []any{} - file_google_storage_v2_storage_proto_msgTypes[73].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[50].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[57].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[60].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[66].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[70].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[71].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[74].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[75].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[76].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[80].OneofWrappers = []any{} + file_google_storage_v2_storage_proto_msgTypes[82].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_storage_v2_storage_proto_rawDesc, - NumEnums: 1, - NumMessages: 75, + NumEnums: 2, + NumMessages: 86, NumExtensions: 0, NumServices: 1, }, @@ -9285,11 +10377,15 @@ type StorageClient interface { LockBucketRetentionPolicy(ctx context.Context, in *LockBucketRetentionPolicyRequest, opts ...grpc.CallOption) (*Bucket, error) // Gets the IAM policy for a specified bucket. // The `resource` field in the request should be - // `projects/_/buckets/{bucket}`. + // `projects/_/buckets/{bucket}` for a bucket, or + // `projects/_/buckets/{bucket}/managedFolders/{managedFolder}` + // for a managed folder. GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Updates an IAM policy for the specified bucket. // The `resource` field in the request should be - // `projects/_/buckets/{bucket}`. + // `projects/_/buckets/{bucket}` for a bucket, or + // `projects/_/buckets/{bucket}/managedFolders/{managedFolder}` + // for a managed folder. SetIamPolicy(ctx context.Context, in *iampb.SetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Tests a set of permissions on the given bucket, object, or managed folder // to see which, if any, are held by the caller. @@ -9836,11 +10932,15 @@ type StorageServer interface { LockBucketRetentionPolicy(context.Context, *LockBucketRetentionPolicyRequest) (*Bucket, error) // Gets the IAM policy for a specified bucket. // The `resource` field in the request should be - // `projects/_/buckets/{bucket}`. + // `projects/_/buckets/{bucket}` for a bucket, or + // `projects/_/buckets/{bucket}/managedFolders/{managedFolder}` + // for a managed folder. GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) // Updates an IAM policy for the specified bucket. // The `resource` field in the request should be - // `projects/_/buckets/{bucket}`. + // `projects/_/buckets/{bucket}` for a bucket, or + // `projects/_/buckets/{bucket}/managedFolders/{managedFolder}` + // for a managed folder. SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) // Tests a set of permissions on the given bucket, object, or managed folder // to see which, if any, are held by the caller. diff --git a/vendor/cloud.google.com/go/storage/internal/experimental.go b/vendor/cloud.google.com/go/storage/internal/experimental.go index 2fd5111fb..4482eab8a 100644 --- a/vendor/cloud.google.com/go/storage/internal/experimental.go +++ b/vendor/cloud.google.com/go/storage/internal/experimental.go @@ -33,4 +33,9 @@ var ( // WithGRPCBidiReads is a function which is implemented by the storage package. // It sets the gRPC client to use the BidiReadObject API for downloads. WithGRPCBidiReads any // func() option.ClientOption + + // WithZonalBucketAPIs is a function which is implemented by the storage package. + // It sets the gRPC client to use the BidiReadObject API for downloads and + // appendable object semantics by default for uploads. + WithZonalBucketAPIs any // func() option.ClientOption ) diff --git a/vendor/cloud.google.com/go/storage/internal/version.go b/vendor/cloud.google.com/go/storage/internal/version.go index 215f04cde..f801fb63b 100644 --- a/vendor/cloud.google.com/go/storage/internal/version.go +++ b/vendor/cloud.google.com/go/storage/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.53.0" +const Version = "1.56.0" diff --git a/vendor/cloud.google.com/go/storage/invoke.go b/vendor/cloud.google.com/go/storage/invoke.go index 609d01223..7d0a45c7d 100644 --- a/vendor/cloud.google.com/go/storage/invoke.go +++ b/vendor/cloud.google.com/go/storage/invoke.go @@ -170,6 +170,15 @@ func ShouldRetry(err error) bool { return true } } + // TODO: remove when https://github.com/golang/go/issues/53472 is resolved. + // We don't want to retry io.EOF errors, since these can indicate normal + // functioning terminations such as internally in the case of Reader and + // externally in the case of iterator methods. However, the linked bug + // requires us to retry the EOFs that it causes, which should be wrapped + // in net or url errors. + if errors.Is(err, io.EOF) { + return true + } case *net.DNSError: if e.IsTemporary { return true diff --git a/vendor/cloud.google.com/go/storage/option.go b/vendor/cloud.google.com/go/storage/option.go index 16d57644a..6548cc18e 100644 --- a/vendor/cloud.google.com/go/storage/option.go +++ b/vendor/cloud.google.com/go/storage/option.go @@ -41,6 +41,7 @@ func init() { storageinternal.WithMetricInterval = withMetricInterval storageinternal.WithReadStallTimeout = withReadStallTimeout storageinternal.WithGRPCBidiReads = withGRPCBidiReads + storageinternal.WithZonalBucketAPIs = withZonalBucketAPIs } // getDynamicReadReqIncreaseRateFromEnv returns the value set in the env variable. @@ -83,6 +84,7 @@ type storageConfig struct { manualReader *metric.ManualReader readStallTimeoutConfig *experimental.ReadStallTimeoutConfig grpcBidiReads bool + grpcAppendableUploads bool } // newStorageConfig generates a new storageConfig with all the given @@ -254,3 +256,17 @@ type withGRPCBidiReadsConfig struct { func (w *withGRPCBidiReadsConfig) ApplyStorageOpt(config *storageConfig) { config.grpcBidiReads = true } + +func withZonalBucketAPIs() option.ClientOption { + return &withZonalBucketAPIsConfig{} +} + +type withZonalBucketAPIsConfig struct { + internaloption.EmbeddableAdapter +} + +func (w *withZonalBucketAPIsConfig) ApplyStorageOpt(config *storageConfig) { + // Use both appendable upload semantics and bidi reads. + config.grpcAppendableUploads = true + config.grpcBidiReads = true +} diff --git a/vendor/cloud.google.com/go/storage/reader.go b/vendor/cloud.google.com/go/storage/reader.go index e1a8b9b67..793c1b2e0 100644 --- a/vendor/cloud.google.com/go/storage/reader.go +++ b/vendor/cloud.google.com/go/storage/reader.go @@ -19,7 +19,6 @@ import ( "fmt" "hash/crc32" "io" - "io/ioutil" "net/http" "strings" "sync" @@ -37,6 +36,7 @@ var crc32cTable = crc32.MakeTable(crc32.Castagnoli) // Each field is read-only. type ReaderObjectAttrs struct { // Size is the length of the object's content. + // Size may be out of date for unfinalized objects. Size int64 // StartOffset is the byte offset within the object @@ -162,7 +162,8 @@ func (o *ObjectHandle) NewRangeReader(ctx context.Context, offset, length int64) // // This uses the gRPC-specific bi-directional read API, which is in private // preview; please contact your account manager if interested. The option -// [experimental.WithGRPCBidiReads] must be selected in order to use this API. +// [experimental.WithGRPCBidiReads] or [experimental.WithZonalBucketAPIs] +// must be selected in order to use this API. func (o *ObjectHandle) NewMultiRangeDownloader(ctx context.Context) (mrd *MultiRangeDownloader, err error) { // This span covers the life of the reader. It is closed via the context // in Reader.Close. @@ -259,7 +260,7 @@ func setConditionsHeaders(headers http.Header, conds *Conditions) error { return nil } -var emptyBody = ioutil.NopCloser(strings.NewReader("")) +var emptyBody = io.NopCloser(strings.NewReader("")) // Reader reads a Cloud Storage object. // It implements io.Reader. @@ -274,10 +275,11 @@ type Reader struct { seen, remain, size int64 checkCRC bool // Did we check the CRC? This is now only used by tests. - reader io.ReadCloser - ctx context.Context - mu sync.Mutex - handle *ReadHandle + reader io.ReadCloser + ctx context.Context + mu sync.Mutex + handle *ReadHandle + unfinalized bool } // Close closes the Reader. It must be called when done reading. @@ -310,6 +312,7 @@ func (r *Reader) WriteTo(w io.Writer) (int64, error) { // Size returns the size of the object in bytes. // The returned value is always the same and is not affected by // calls to Read or Close. +// Size may be out of date for a Reader to an unfinalized object. // // Deprecated: use Reader.Attrs.Size. func (r *Reader) Size() int64 { @@ -317,7 +320,11 @@ func (r *Reader) Size() int64 { } // Remain returns the number of bytes left to read, or -1 if unknown. +// Unfinalized objects will return -1. func (r *Reader) Remain() int64 { + if r.unfinalized { + return -1 + } return r.remain } diff --git a/vendor/cloud.google.com/go/storage/storage.go b/vendor/cloud.google.com/go/storage/storage.go index a820666a4..d8455425f 100644 --- a/vendor/cloud.google.com/go/storage/storage.go +++ b/vendor/cloud.google.com/go/storage/storage.go @@ -38,6 +38,7 @@ import ( "time" "unicode/utf8" + "cloud.google.com/go/auth" "cloud.google.com/go/internal/optional" "cloud.google.com/go/internal/trace" "cloud.google.com/go/storage/internal" @@ -46,12 +47,10 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/metric/metricdata" - "golang.org/x/oauth2/google" "google.golang.org/api/googleapi" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" raw "google.golang.org/api/storage/v1" - "google.golang.org/api/transport" htransport "google.golang.org/api/transport/http" "google.golang.org/grpc/codes" "google.golang.org/grpc/experimental/stats" @@ -121,11 +120,23 @@ type Client struct { // xmlHost is the default host used for XML requests. xmlHost string // May be nil. - creds *google.Credentials + creds *auth.Credentials retry *retryConfig // tc is the transport-agnostic client implemented with either gRPC or HTTP. tc storageClient + + // Option to use gRRPC appendable upload API was set. + grpcAppendableUploads bool +} + +// credsJSON returns the raw JSON of the Client's creds and true, or an empty slice +// and false if no credentials JSON is available. +func (c Client) credsJSON() ([]byte, bool) { + if c.creds != nil && len(c.creds.JSON()) > 0 { + return c.creds.JSON(), true + } + return []byte{}, false } // NewClient creates a new Google Cloud Storage client using the HTTP transport. @@ -138,7 +149,7 @@ type Client struct { // You may configure the client by passing in options from the [google.golang.org/api/option] // package. You may also use options defined in this package, such as [WithJSONReads]. func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - var creds *google.Credentials + var creds *auth.Credentials // In general, it is recommended to use raw.NewService instead of htransport.NewClient // since raw.NewService configures the correct default endpoints when initializing the @@ -154,14 +165,15 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error opts = append(opts, internaloption.WithDefaultEndpointTemplate("https://storage.UNIVERSE_DOMAIN/storage/v1/"), internaloption.WithDefaultMTLSEndpoint("https://storage.mtls.googleapis.com/storage/v1/"), internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.EnableNewAuthLibrary(), ) // Don't error out here. The user may have passed in their own HTTP // client which does not auth with ADC or other common conventions. - c, err := transport.Creds(ctx, opts...) + c, err := internaloption.AuthCreds(ctx, opts) if err == nil { creds = c - opts = append(opts, internaloption.WithCredentials(creds)) + opts = append(opts, option.WithAuthCredentials(creds)) } } else { var hostURL *url.URL @@ -238,8 +250,10 @@ func NewGRPCClient(ctx context.Context, opts ...option.ClientOption) (*Client, e if err != nil { return nil, err } - - return &Client{tc: tc}, nil + return &Client{ + tc: tc, + grpcAppendableUploads: tc.config.grpcAppendableUploads, + }, nil } // CheckDirectConnectivitySupported checks if gRPC direct connectivity @@ -1107,7 +1121,9 @@ type ObjectAttrsToUpdate struct { } // Delete deletes the single specified object. -func (o *ObjectHandle) Delete(ctx context.Context) error { +func (o *ObjectHandle) Delete(ctx context.Context) (err error) { + ctx, _ = startSpan(ctx, "Object.Delete") + defer func() { endSpan(ctx, err) }() if err := o.validate(); err != nil { return err } @@ -1238,6 +1254,7 @@ func (o *ObjectHandle) NewWriter(ctx context.Context) *Writer { donec: make(chan struct{}), ObjectAttrs: ObjectAttrs{Name: o.object}, ChunkSize: googleapi.DefaultUploadChunkSize, + Append: o.c.grpcAppendableUploads, } } diff --git a/vendor/cloud.google.com/go/storage/trace.go b/vendor/cloud.google.com/go/storage/trace.go index 67858b086..0fb023259 100644 --- a/vendor/cloud.google.com/go/storage/trace.go +++ b/vendor/cloud.google.com/go/storage/trace.go @@ -76,18 +76,23 @@ func endSpan(ctx context.Context, err error) { } } -// getCommonTraceOptions includes the common attributes used for Cloud Trace adoption tracking. +// getCommonTraceOptions makes a SpanStartOption with common attributes. func getCommonTraceOptions() []trace.SpanStartOption { opts := []trace.SpanStartOption{ - trace.WithAttributes( - attribute.String("gcp.client.version", internal.Version), - attribute.String("gcp.client.repo", gcpClientRepo), - attribute.String("gcp.client.artifact", gcpClientArtifact), - ), + trace.WithAttributes(getCommonAttributes()...), } return opts } +// getCommonAttributes includes the common attributes used for Cloud Trace adoption tracking. +func getCommonAttributes() []attribute.KeyValue { + return []attribute.KeyValue{ + attribute.String("gcp.client.version", internal.Version), + attribute.String("gcp.client.repo", gcpClientRepo), + attribute.String("gcp.client.artifact", gcpClientArtifact), + } +} + func appendPackageName(spanName string) string { return fmt.Sprintf("%s.%s", gcpClientArtifact, spanName) } diff --git a/vendor/cloud.google.com/go/storage/writer.go b/vendor/cloud.google.com/go/storage/writer.go index d43f28d28..bc0893eea 100644 --- a/vendor/cloud.google.com/go/storage/writer.go +++ b/vendor/cloud.google.com/go/storage/writer.go @@ -26,6 +26,16 @@ import ( "cloud.google.com/go/internal/trace" ) +// Interface internalWriter wraps low-level implementations which may vary +// across client types. +type internalWriter interface { + io.WriteCloser + Flush() (int64, error) + // CloseWithError terminates the write operation and sets its status. + // Note that CloseWithError always returns nil. + CloseWithError(error) error +} + // A Writer writes a Cloud Storage object. type Writer struct { // ObjectAttrs are optional attributes to set on the object. Any attributes @@ -111,6 +121,9 @@ type Writer struct { // when Writer.Close() is called; otherwise, the object is left unfinalized // and can be appended to later. // + // Defaults to false unless the experiemental WithZonalBucketAPIs option was + // set. + // // Append is only supported for gRPC. This feature is in preview and is not // yet available for general use. Append bool @@ -141,14 +154,13 @@ type Writer struct { opened bool closed bool - pw *io.PipeWriter + iw internalWriter donec chan struct{} // closed after err and obj are set. obj *ObjectAttrs mu sync.Mutex err error - flush func() (int64, error) takeoverOffset int64 // offset from which the writer started appending to the object. } @@ -173,7 +185,7 @@ func (w *Writer) Write(p []byte) (n int, err error) { return 0, err } } - n, err = w.pw.Write(p) + n, err = w.iw.Write(p) if err != nil { w.mu.Lock() werr := w.err @@ -223,14 +235,12 @@ func (w *Writer) Flush() (int64, error) { // If Flush called before any bytes written, it should start the upload // at zero bytes. This will make the object visible with zero length data. if !w.opened { - err := w.openWriter() - if err != nil { + if err := w.openWriter(); err != nil { return 0, err } - w.progress(0) } - return w.flush() + return w.iw.Flush() } // Close completes the write operation and flushes any buffered data. @@ -243,8 +253,7 @@ func (w *Writer) Close() error { } } - // Closing either the read or write causes the entire pipe to close. - if err := w.pw.Close(); err != nil { + if err := w.iw.Close(); err != nil { return err } @@ -283,20 +292,18 @@ func (w *Writer) openWriter() (err error) { setError: w.error, progress: w.progress, setObj: func(o *ObjectAttrs) { w.obj = o }, - setFlush: func(f func() (int64, error)) { w.flush = f }, setSize: func(n int64) { if w.obj != nil { w.obj.Size = n } }, - setPipeWriter: func(pw *io.PipeWriter) { w.pw = pw }, setTakeoverOffset: func(n int64) { w.takeoverOffset = n }, forceEmptyContentType: w.ForceEmptyContentType, } if err := w.ctx.Err(); err != nil { return err // short-circuit } - w.pw, err = w.o.c.tc.OpenWriter(params, opts...) + w.iw, err = w.o.c.tc.OpenWriter(params, opts...) if err != nil { return err } @@ -317,7 +324,6 @@ func (w *Writer) monitorCancel() { w.err = werr w.mu.Unlock() - // Closing either the read or write causes the entire pipe to close. w.CloseWithError(werr) case <-w.donec: } @@ -331,7 +337,7 @@ func (w *Writer) CloseWithError(err error) error { if !w.opened { return nil } - return w.pw.CloseWithError(err) + return w.iw.CloseWithError(err) } // Attrs returns metadata about a successfully-written object. diff --git a/vendor/dario.cat/mergo/FUNDING.json b/vendor/dario.cat/mergo/FUNDING.json new file mode 100644 index 000000000..0585e1fe1 --- /dev/null +++ b/vendor/dario.cat/mergo/FUNDING.json @@ -0,0 +1,7 @@ +{ + "drips": { + "ethereum": { + "ownedBy": "0x6160020e7102237aC41bdb156e94401692D76930" + } + } +} diff --git a/vendor/dario.cat/mergo/README.md b/vendor/dario.cat/mergo/README.md index 0b3c48889..0e4a59afd 100644 --- a/vendor/dario.cat/mergo/README.md +++ b/vendor/dario.cat/mergo/README.md @@ -85,7 +85,6 @@ Mergo is used by [thousands](https://deps.dev/go/dario.cat%2Fmergo/v1.0.0/depend * [goreleaser/goreleaser](https://github.com/goreleaser/goreleaser) * [go-micro/go-micro](https://github.com/go-micro/go-micro) * [grafana/loki](https://github.com/grafana/loki) -* [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) * [masterminds/sprig](github.com/Masterminds/sprig) * [moby/moby](https://github.com/moby/moby) * [slackhq/nebula](https://github.com/slackhq/nebula) @@ -191,10 +190,6 @@ func main() { } ``` -Note: if test are failing due missing package, please execute: - - go get gopkg.in/yaml.v3 - ### Transformers Transformers allow to merge specific types differently than in the default behavior. In other words, now you can customize how some types are merged. For example, `time.Time` is a struct; it doesn't have zero value but IsZero can return true because it has fields with zero value. How can we merge a non-zero `time.Time`? diff --git a/vendor/dario.cat/mergo/SECURITY.md b/vendor/dario.cat/mergo/SECURITY.md index a5de61f77..3788fcc1c 100644 --- a/vendor/dario.cat/mergo/SECURITY.md +++ b/vendor/dario.cat/mergo/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | | ------- | ------------------ | -| 0.3.x | :white_check_mark: | -| < 0.3 | :x: | +| 1.x.x | :white_check_mark: | +| < 1.0 | :x: | ## Security contact information diff --git a/vendor/github.com/99designs/gqlgen/graphql/args.go b/vendor/github.com/99designs/gqlgen/graphql/args.go new file mode 100644 index 000000000..0638da37d --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/graphql/args.go @@ -0,0 +1,42 @@ +package graphql + +import ( + "context" +) + +// ProcessArgField Parses argument value without Execution Context +// This function is called from generated code +func ProcessArgField[T any]( + ctx context.Context, + rawArgs map[string]any, + fieldName string, + valueMapperFn func(ctx context.Context, value any) (T, error), +) (T, error) { + value, exists := rawArgs[fieldName] + if !exists { + var zeroVal T + return zeroVal, nil + } + + ctx = WithPathContext(ctx, NewPathWithField(fieldName)) + return valueMapperFn(ctx, value) +} + +// ProcessArgFieldWithEC Parses argument value with Execution Context +// This function is called from generated code +func ProcessArgFieldWithEC[T, EC any]( + ctx context.Context, + ec EC, + rawArgs map[string]any, + fieldName string, + valueMapperFn func(ctx context.Context, ec EC, value any) (T, error), +) (T, error) { + value, exists := rawArgs[fieldName] + if !exists { + var zeroVal T + return zeroVal, nil + } + + ctx = WithPathContext(ctx, NewPathWithField(fieldName)) + return valueMapperFn(ctx, ec, value) +} diff --git a/vendor/github.com/99designs/gqlgen/graphql/executor/executor.go b/vendor/github.com/99designs/gqlgen/graphql/executor/executor.go index 95302f914..40f0b3257 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/executor/executor.go +++ b/vendor/github.com/99designs/gqlgen/graphql/executor/executor.go @@ -27,6 +27,7 @@ type Executor struct { parserTokenLimit int disableSuggestion bool + defaultRulesFn func() *rules.Rules } var _ graphql.GraphExecutor = &Executor{} @@ -45,6 +46,11 @@ func New(es graphql.ExecutableSchema) *Executor { return e } +// SetDefaultRulesFn is to customize the Default GraphQL Validation Rules +func (e *Executor) SetDefaultRulesFn(f func() *rules.Rules) { + e.defaultRulesFn = f +} + func (e *Executor) CreateOperationContext( ctx context.Context, params *graphql.RawParams, @@ -86,7 +92,11 @@ func (e *Executor) CreateOperationContext( } var err error - opCtx.Variables, err = validator.VariableValues(e.es.Schema(), opCtx.Operation, params.Variables) + opCtx.Variables, err = validator.VariableValues( + e.es.Schema(), + opCtx.Operation, + params.Variables, + ) if err != nil { gqlErr, ok := err.(*gqlerror.Error) if ok { @@ -223,8 +233,12 @@ func (e *Executor) parseQuery( return nil, gqlerror.List{gqlErr} } - currentRules := rules.NewDefaultRules() - + var currentRules *rules.Rules + if e.defaultRulesFn == nil { + currentRules = rules.NewDefaultRules() + } else { + currentRules = e.defaultRulesFn() + } // Customise rules as required // TODO(steve): consider currentRules.RemoveRule(rules.MaxIntrospectionDepth.Name) diff --git a/vendor/github.com/99designs/gqlgen/graphql/handler/server.go b/vendor/github.com/99designs/gqlgen/graphql/handler/server.go index d80e60dc9..8a30d5d4d 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/handler/server.go +++ b/vendor/github.com/99designs/gqlgen/graphql/handler/server.go @@ -25,27 +25,30 @@ type ( } ) +// New returns a new Server for the given executable schema. The Server is not +// ready for use until the transports you require are added and configured with +// Server.AddTransport. See the implementation of [NewDefaultServer] for an +// example. func New(es graphql.ExecutableSchema) *Server { return &Server{ exec: executor.New(es), } } -// NewDefaultServer is a demonstration only. Not for prod. +// NewDefaultServer returns a Server for the given executable schema which is +// only suitable for use in examples. // -// Currently, the server just picks the first available transport, -// so this example NewDefaultServer orders them, but it is just -// for demonstration purposes. -// You will likely want to tune and better configure Websocket transport -// since adding a new one (To configure it) doesn't have effect. +// Deprecated: +// The Server returned by NewDefaultServer is not suitable for production use. +// Use [New] instead and add transports configured for your use case, +// appropriate caches, and introspection if required. See the implementation of +// NewDefaultServer for an example of starting point to construct a Server. // -// Also SSE support is not in here at all! -// SSE when used over HTTP/1.1 (but not HTTP/2 or HTTP/3), -// SSE suffers from a severe limitation to the maximum number -// of open connections of 6 per browser. See: -// https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#sect1 +// SSE is not supported using this example. SSE when used over HTTP/1.1 (but not +// HTTP/2 or HTTP/3) suffers from a severe limitation to the maximum number of +// open connections of 6 per browser, see [Using server-sent events]. // -// Deprecated: This was and is just an example. +// [Using server-sent events]: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#sect1 func NewDefaultServer(es graphql.ExecutableSchema) *Server { srv := New(es) @@ -67,6 +70,9 @@ func NewDefaultServer(es graphql.ExecutableSchema) *Server { return srv } +// AddTransport adds a transport to the Server. The server picks the first +// supported transport. Adding a transport which has already been added has no +// effect. func (s *Server) AddTransport(transport graphql.Transport) { s.transports = append(s.transports, transport) } @@ -91,6 +97,8 @@ func (s *Server) SetDisableSuggestion(value bool) { s.exec.SetDisableSuggestion(value) } +// Use adds the given extension middleware to the server. Extensions are run in +// order from first to last added. func (s *Server) Use(extension graphql.HandlerExtension) { s.exec.Use(extension) } diff --git a/vendor/github.com/99designs/gqlgen/graphql/version.go b/vendor/github.com/99designs/gqlgen/graphql/version.go index 590013780..2bbd83108 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/version.go +++ b/vendor/github.com/99designs/gqlgen/graphql/version.go @@ -1,3 +1,3 @@ package graphql -const Version = "v0.17.76" +const Version = "v0.17.78" diff --git a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/metric.go b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/metric.go index b0ab713c6..c69f43dba 100644 --- a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/metric.go +++ b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/metric.go @@ -106,25 +106,29 @@ func newMetricExporter(o *options) (*metricExporter, error) { return nil, errBlankProjectID } - clientOpts := append([]option.ClientOption{option.WithGRPCDialOption(grpc.WithUserAgent(userAgent))}, o.monitoringClientOptions...) - ctx := o.context - if ctx == nil { - ctx = context.Background() - } - client, err := monitoring.NewMetricClient(ctx, clientOpts...) - if err != nil { - return nil, err - } + client := o.monitoringClient + if client == nil { + clientOpts := append([]option.ClientOption{option.WithGRPCDialOption(grpc.WithUserAgent(userAgent))}, o.monitoringClientOptions...) + ctx := o.context + if ctx == nil { + ctx = context.Background() + } + var err error + client, err = monitoring.NewMetricClient(ctx, clientOpts...) + if err != nil { + return nil, err + } - if o.compression == "gzip" { - client.CallOptions.GetMetricDescriptor = append(client.CallOptions.GetMetricDescriptor, - gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) - client.CallOptions.CreateMetricDescriptor = append(client.CallOptions.CreateMetricDescriptor, - gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) - client.CallOptions.CreateTimeSeries = append(client.CallOptions.CreateTimeSeries, - gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) - client.CallOptions.CreateServiceTimeSeries = append(client.CallOptions.CreateServiceTimeSeries, - gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) + if o.compression == "gzip" { + client.CallOptions.GetMetricDescriptor = append(client.CallOptions.GetMetricDescriptor, + gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) + client.CallOptions.CreateMetricDescriptor = append(client.CallOptions.CreateMetricDescriptor, + gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) + client.CallOptions.CreateTimeSeries = append(client.CallOptions.CreateTimeSeries, + gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) + client.CallOptions.CreateServiceTimeSeries = append(client.CallOptions.CreateServiceTimeSeries, + gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name))) + } } cache := map[key]*googlemetricpb.MetricDescriptor{} diff --git a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/option.go b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/option.go index 701b10b10..8f2927b11 100644 --- a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/option.go +++ b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/option.go @@ -21,8 +21,9 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/metric/metricdata" - semconv "go.opentelemetry.io/otel/semconv/v1.24.0" + monitoring "cloud.google.com/go/monitoring/apiv3/v2" + semconv "go.opentelemetry.io/otel/semconv/v1.24.0" apioption "google.golang.org/api/option" ) @@ -69,8 +70,11 @@ type options struct { projectID string // compression enables gzip compression on gRPC calls. compression string + // monitoringClient is used as the default client when not nil. If + // monitoringClient is nil, a client is created instead. + monitoringClient *monitoring.MetricClient // monitoringClientOptions are additional options to be passed - // to the underlying Stackdriver Monitoring API client. + // to the underlying Cloud Monitoring API client. // Optional. monitoringClientOptions []apioption.ClientOption // destinationProjectQuota sets whether the request should use quota from @@ -108,6 +112,16 @@ func WithDestinationProjectQuota() func(o *options) { } } +// WithMonitoringClient configures the client used by the exporter to write +// metrics to Cloud Monitoring. This option is mutually exclusive with +// WithMonitoringClientOptions. If both options are provided, +// WithMonitoringClient is used and WithMonitoringClientOptions is ignored. +func WithMonitoringClient(cl *monitoring.MetricClient) func(o *options) { + return func(o *options) { + o.monitoringClient = cl + } +} + // WithMonitoringClientOptions add the options for Cloud Monitoring client instance. // Available options are defined in. func WithMonitoringClientOptions(opts ...apioption.ClientOption) func(o *options) { diff --git a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/version.go b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/version.go index 47739d0fa..bee9d3332 100644 --- a/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/version.go +++ b/vendor/github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric/version.go @@ -17,5 +17,5 @@ package metric // Version is the current release version of the OpenTelemetry // Operations Metric Exporter in use. func Version() string { - return "0.51.0" + return "0.53.0" } diff --git a/vendor/github.com/ProtonMail/go-crypto/openpgp/errors/errors.go b/vendor/github.com/ProtonMail/go-crypto/openpgp/errors/errors.go index e44b45734..2e341507a 100644 --- a/vendor/github.com/ProtonMail/go-crypto/openpgp/errors/errors.go +++ b/vendor/github.com/ProtonMail/go-crypto/openpgp/errors/errors.go @@ -180,6 +180,16 @@ func (dke ErrMalformedMessage) Error() string { return "openpgp: malformed message " + string(dke) } +type messageTooLargeError int + +func (e messageTooLargeError) Error() string { + return "openpgp: decompressed message size exceeds provided limit" +} + +// ErrMessageTooLarge is returned if the read data from +// a compressed packet exceeds the provided limit. +var ErrMessageTooLarge error = messageTooLargeError(0) + // ErrEncryptionKeySelection is returned if encryption key selection fails (v2 API). type ErrEncryptionKeySelection struct { PrimaryKeyId string diff --git a/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/compressed.go b/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/compressed.go index 0bcb38cac..931f55a4e 100644 --- a/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/compressed.go +++ b/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/compressed.go @@ -98,6 +98,16 @@ func (c *Compressed) parse(r io.Reader) error { return err } +// LimitedBodyReader wraps the provided body reader with a limiter that restricts +// the number of bytes read to the specified limit. +// If limit is nil, the reader is unbounded. +func (c *Compressed) LimitedBodyReader(limit *int64) io.Reader { + if limit == nil { + return c.Body + } + return &LimitReader{R: c.Body, N: *limit} +} + // compressedWriterCloser represents the serialized compression stream // header and the compressor. Its Close() method ensures that both the // compressor and serialized stream header are closed. Its Write() @@ -159,3 +169,24 @@ func SerializeCompressed(w io.WriteCloser, algo CompressionAlgo, cc *Compression return } + +// LimitReader is an io.Reader that fails with MessageToLarge if read bytes exceed N. +type LimitReader struct { + R io.Reader // underlying reader + N int64 // max bytes allowed +} + +func (l *LimitReader) Read(p []byte) (int, error) { + if l.N <= 0 { + return 0, errors.ErrMessageTooLarge + } + + n, err := l.R.Read(p) + l.N -= int64(n) + + if err == nil && l.N <= 0 { + err = errors.ErrMessageTooLarge + } + + return n, err +} diff --git a/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/config.go b/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/config.go index 257398d9d..30167ed9d 100644 --- a/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/config.go +++ b/vendor/github.com/ProtonMail/go-crypto/openpgp/packet/config.go @@ -178,6 +178,11 @@ type Config struct { // When set to true, a key without flags is treated as if all flags are enabled. // This behavior is consistent with GPG. InsecureAllowAllKeyFlagsWhenMissing bool + + // MaxDecompressedMessageSize specifies the maximum number of bytes that can be + // read from a compressed packet. This serves as an upper limit to prevent + // excessively large decompressed messages. + MaxDecompressedMessageSize *int64 } func (c *Config) Random() io.Reader { @@ -415,6 +420,13 @@ func (c *Config) AllowAllKeyFlagsWhenMissing() bool { return c.InsecureAllowAllKeyFlagsWhenMissing } +func (c *Config) DecompressedMessageSizeLimit() *int64 { + if c == nil { + return nil + } + return c.MaxDecompressedMessageSize +} + // BoolPointer is a helper function to set a boolean pointer in the Config. // e.g., config.CheckPacketSequence = BoolPointer(true) func BoolPointer(value bool) *bool { diff --git a/vendor/github.com/ProtonMail/go-crypto/openpgp/read.go b/vendor/github.com/ProtonMail/go-crypto/openpgp/read.go index e6dd9b5fd..5578797ed 100644 --- a/vendor/github.com/ProtonMail/go-crypto/openpgp/read.go +++ b/vendor/github.com/ProtonMail/go-crypto/openpgp/read.go @@ -259,7 +259,7 @@ FindLiteralData: } switch p := p.(type) { case *packet.Compressed: - if err := packets.Push(p.Body); err != nil { + if err := packets.Push(p.LimitedBodyReader(config.DecompressedMessageSizeLimit())); err != nil { return nil, err } case *packet.OnePassSignature: diff --git a/vendor/github.com/ProtonMail/go-crypto/openpgp/write.go b/vendor/github.com/ProtonMail/go-crypto/openpgp/write.go index b0f6ef7b0..84bc27d83 100644 --- a/vendor/github.com/ProtonMail/go-crypto/openpgp/write.go +++ b/vendor/github.com/ProtonMail/go-crypto/openpgp/write.go @@ -253,34 +253,12 @@ func writeAndSign(payload io.WriteCloser, candidateHashes []uint8, signed *Entit } var hash crypto.Hash - for _, hashId := range candidateHashes { - if h, ok := algorithm.HashIdToHash(hashId); ok && h.Available() { - hash = h - break - } - } - - // If the hash specified by config is a candidate, we'll use that. - if configuredHash := config.Hash(); configuredHash.Available() { - for _, hashId := range candidateHashes { - if h, ok := algorithm.HashIdToHash(hashId); ok && h == configuredHash { - hash = h - break - } - } - } - - if hash == 0 { - hashId := candidateHashes[0] - name, ok := algorithm.HashIdToString(hashId) - if !ok { - name = "#" + strconv.Itoa(int(hashId)) - } - return nil, errors.InvalidArgumentError("cannot encrypt because no candidate hash functions are compiled in. (Wanted " + name + " in this case.)") - } - var salt []byte if signer != nil { + if hash, err = selectHash(candidateHashes, config.Hash(), signer); err != nil { + return nil, err + } + var opsVersion = 3 if signer.Version == 6 { opsVersion = signer.Version @@ -558,13 +536,34 @@ func (s signatureWriter) Close() error { return s.encryptedData.Close() } +func selectHashForSigningKey(config *packet.Config, signer *packet.PublicKey) crypto.Hash { + acceptableHashes := acceptableHashesToWrite(signer) + hash, ok := algorithm.HashToHashId(config.Hash()) + if !ok { + return config.Hash() + } + for _, acceptableHashes := range acceptableHashes { + if acceptableHashes == hash { + return config.Hash() + } + } + if len(acceptableHashes) > 0 { + defaultAcceptedHash, ok := algorithm.HashIdToHash(acceptableHashes[0]) + if ok { + return defaultAcceptedHash + } + } + return config.Hash() +} + func createSignaturePacket(signer *packet.PublicKey, sigType packet.SignatureType, config *packet.Config) *packet.Signature { sigLifetimeSecs := config.SigLifetime() + hash := selectHashForSigningKey(config, signer) return &packet.Signature{ Version: signer.Version, SigType: sigType, PubKeyAlgo: signer.PubKeyAlgo, - Hash: config.Hash(), + Hash: hash, CreationTime: config.Now(), IssuerKeyId: &signer.KeyId, IssuerFingerprint: signer.Fingerprint, @@ -618,3 +617,74 @@ func handleCompression(compressed io.WriteCloser, candidateCompression []uint8, } return data, nil } + +// selectHash selects the preferred hash given the candidateHashes and the configuredHash +func selectHash(candidateHashes []byte, configuredHash crypto.Hash, signer *packet.PrivateKey) (hash crypto.Hash, err error) { + acceptableHashes := acceptableHashesToWrite(&signer.PublicKey) + candidateHashes = intersectPreferences(acceptableHashes, candidateHashes) + + for _, hashId := range candidateHashes { + if h, ok := algorithm.HashIdToHash(hashId); ok && h.Available() { + hash = h + break + } + } + + // If the hash specified by config is a candidate, we'll use that. + if configuredHash.Available() { + for _, hashId := range candidateHashes { + if h, ok := algorithm.HashIdToHash(hashId); ok && h == configuredHash { + hash = h + break + } + } + } + + if hash == 0 { + if len(acceptableHashes) > 0 { + if h, ok := algorithm.HashIdToHash(acceptableHashes[0]); ok { + hash = h + } else { + return 0, errors.UnsupportedError("no candidate hash functions are compiled in.") + } + } else { + return 0, errors.UnsupportedError("no candidate hash functions are compiled in.") + } + } + return +} + +func acceptableHashesToWrite(singingKey *packet.PublicKey) []uint8 { + switch singingKey.PubKeyAlgo { + case packet.PubKeyAlgoEd448: + return []uint8{ + hashToHashId(crypto.SHA512), + hashToHashId(crypto.SHA3_512), + } + case packet.PubKeyAlgoECDSA, packet.PubKeyAlgoEdDSA: + if curve, err := singingKey.Curve(); err == nil { + if curve == packet.Curve448 || + curve == packet.CurveNistP521 || + curve == packet.CurveBrainpoolP512 { + return []uint8{ + hashToHashId(crypto.SHA512), + hashToHashId(crypto.SHA3_512), + } + } else if curve == packet.CurveBrainpoolP384 || + curve == packet.CurveNistP384 { + return []uint8{ + hashToHashId(crypto.SHA384), + hashToHashId(crypto.SHA512), + hashToHashId(crypto.SHA3_512), + } + } + } + } + return []uint8{ + hashToHashId(crypto.SHA256), + hashToHashId(crypto.SHA384), + hashToHashId(crypto.SHA512), + hashToHashId(crypto.SHA3_256), + hashToHashId(crypto.SHA3_512), + } +} diff --git a/vendor/github.com/bytedance/sonic/.gitmodules b/vendor/github.com/bytedance/sonic/.gitmodules index ea84b991a..5a2d998ab 100644 --- a/vendor/github.com/bytedance/sonic/.gitmodules +++ b/vendor/github.com/bytedance/sonic/.gitmodules @@ -4,3 +4,6 @@ [submodule "tools/simde"] path = tools/simde url = https://github.com/simd-everywhere/simde.git +[submodule "fuzz/go-fuzz-corpus"] + path = fuzz/go-fuzz-corpus + url = https://github.com/dvyukov/go-fuzz-corpus.git diff --git a/vendor/github.com/bytedance/sonic/README.md b/vendor/github.com/bytedance/sonic/README.md index 317878d09..41fe77658 100644 --- a/vendor/github.com/bytedance/sonic/README.md +++ b/vendor/github.com/bytedance/sonic/README.md @@ -385,12 +385,12 @@ See [ast/visitor.go](https://github.com/bytedance/sonic/blob/main/ast/visitor.go ## Compatibility -For developers who want to use sonic to meet diffirent scenarios, we provide some integrated configs as `sonic.API` +For developers who want to use sonic to meet different scenarios, we provide some integrated configs as `sonic.API` - `ConfigDefault`: the sonic's default config (`EscapeHTML=false`,`SortKeys=false`...) to run sonic fast meanwhile ensure security. - `ConfigStd`: the std-compatible config (`EscapeHTML=true`,`SortKeys=true`...) - `ConfigFastest`: the fastest config (`NoQuoteTextMarshaler=true`) to run on sonic as fast as possible. -Sonic **DOES NOT** ensure to support all environments, due to the difficulty of developing high-performance codes. On non-sonic-supporting environment, the implementation will fall back to `encoding/json`. Thus beflow configs will all equal to `ConfigStd`. +Sonic **DOES NOT** ensure to support all environments, due to the difficulty of developing high-performance codes. On non-sonic-supporting environment, the implementation will fall back to `encoding/json`. Thus below configs will all equal to `ConfigStd`. ## Tips diff --git a/vendor/github.com/bytedance/sonic/api.go b/vendor/github.com/bytedance/sonic/api.go index 406715eca..3858d9a80 100644 --- a/vendor/github.com/bytedance/sonic/api.go +++ b/vendor/github.com/bytedance/sonic/api.go @@ -94,6 +94,9 @@ type Config struct { // Encode Infinity or Nan float into `null`, instead of returning an error. EncodeNullForInfOrNan bool + + // CaseSensitive indicates that the decoder should not ignore the case of object keys. + CaseSensitive bool } var ( @@ -111,7 +114,6 @@ var ( // ConfigFastest is the fastest config of APIs, aiming at speed. ConfigFastest = Config{ - NoQuoteTextMarshaler: true, NoValidateJSONMarshaler: true, NoValidateJSONSkip: true, }.Froze() diff --git a/vendor/github.com/bytedance/sonic/ast/api.go b/vendor/github.com/bytedance/sonic/ast/api.go index 36151f270..38d7ab9ca 100644 --- a/vendor/github.com/bytedance/sonic/ast/api.go +++ b/vendor/github.com/bytedance/sonic/ast/api.go @@ -1,5 +1,5 @@ -//go:build (amd64 && go1.17 && !go1.25) || (arm64 && go1.20 && !go1.25) -// +build amd64,go1.17,!go1.25 arm64,go1.20,!go1.25 +//go:build (amd64 && go1.17 && !go1.26) || (arm64 && go1.20 && !go1.26) +// +build amd64,go1.17,!go1.26 arm64,go1.20,!go1.26 /* * Copyright 2022 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/ast/api_compat.go b/vendor/github.com/bytedance/sonic/ast/api_compat.go index 74119fed6..0ca4d56ca 100644 --- a/vendor/github.com/bytedance/sonic/ast/api_compat.go +++ b/vendor/github.com/bytedance/sonic/ast/api_compat.go @@ -1,4 +1,4 @@ -// +build !amd64,!arm64 go1.25 !go1.17 arm64,!go1.20 +// +build !amd64,!arm64 go1.26 !go1.17 arm64,!go1.20 /* * Copyright 2022 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/ast/decode.go b/vendor/github.com/bytedance/sonic/ast/decode.go index 135ee6eb8..8922bacfd 100644 --- a/vendor/github.com/bytedance/sonic/ast/decode.go +++ b/vendor/github.com/bytedance/sonic/ast/decode.go @@ -27,8 +27,6 @@ import ( "github.com/bytedance/sonic/internal/utils" ) -// Hack: this is used for both checking space and cause friendly compile errors in 32-bit arch. -const _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here = (1 << ' ') | (1 << '\t') | (1 << '\r') | (1 << '\n') var bytesNull = []byte("null") @@ -40,17 +38,13 @@ const ( bytesArray = "[]" ) -func isSpace(c byte) bool { - return (int(1<= 0 && isSpace(self.s[self.p]); self.p-=1 {} + for ; self.p >= 0 && utils.IsSpace(self.s[self.p]); self.p-=1 {} } func (self *Parser) decodeArray(ret *linkedNodes) (Node, types.ParsingError) { @@ -638,7 +639,7 @@ func Loads(src string) (int, interface{}, error) { } } -// LoadsUseNumber parse all json into interface{}, with numeric nodes casted to json.Number +// LoadsUseNumber parse all json into interface{}, with numeric nodes cast to json.Number func LoadsUseNumber(src string) (int, interface{}, error) { ps := &Parser{s: src} np, err := ps.Parse() @@ -692,7 +693,7 @@ func (self *Parser) ExportError(err types.ParsingError) error { } func backward(src string, i int) int { - for ; i>=0 && isSpace(src[i]); i-- {} + for ; i>=0 && utils.IsSpace(src[i]); i-- {} return i } diff --git a/vendor/github.com/bytedance/sonic/ast/visitor.go b/vendor/github.com/bytedance/sonic/ast/visitor.go index dc0478513..fc71d40cb 100644 --- a/vendor/github.com/bytedance/sonic/ast/visitor.go +++ b/vendor/github.com/bytedance/sonic/ast/visitor.go @@ -178,7 +178,7 @@ func (self *traverser) decodeArray() error { /* 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 + // NOTICE: for user needs to skip entry object self.parser.p -= 1 if _, e := self.parser.skipFast(); e != 0 { return e @@ -233,7 +233,7 @@ func (self *traverser) decodeObject() error { /* 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 + // NOTICE: for user needs to skip entry object self.parser.p -= 1 if _, e := self.parser.skipFast(); e != 0 { return e @@ -328,5 +328,5 @@ func (self *traverser) decodeString(iv int64, ep int) error { } // If visitor return this error on `OnObjectBegin()` or `OnArrayBegin()`, -// the transverer will skip entiry object or array +// the traverser will skip entry object or array var VisitOPSkip = errors.New("") diff --git a/vendor/github.com/bytedance/sonic/compat.go b/vendor/github.com/bytedance/sonic/compat.go index b694d7ce9..1fa670a48 100644 --- a/vendor/github.com/bytedance/sonic/compat.go +++ b/vendor/github.com/bytedance/sonic/compat.go @@ -1,4 +1,4 @@ -// +build !amd64,!arm64 go1.25 !go1.17 arm64,!go1.20 +// +build !amd64,!arm64 go1.26 !go1.17 arm64,!go1.20 /* * Copyright 2021 ByteDance Inc. @@ -87,7 +87,17 @@ func (cfg frozenConfig) UnmarshalFromString(buf string, val interface{}) error { if cfg.DisallowUnknownFields { dec.DisallowUnknownFields() } - return dec.Decode(val) + err := dec.Decode(val) + if err != nil { + return err + } + + // check the trailing chars + offset := dec.InputOffset() + if t, err := dec.Token(); !(t == nil && err == io.EOF) { + return &json.SyntaxError{ Offset: offset} + } + return nil } // Unmarshal is implemented by sonic diff --git a/vendor/github.com/bytedance/sonic/decoder/decoder_compat.go b/vendor/github.com/bytedance/sonic/decoder/decoder_compat.go index 754e5fbc2..75b21746f 100644 --- a/vendor/github.com/bytedance/sonic/decoder/decoder_compat.go +++ b/vendor/github.com/bytedance/sonic/decoder/decoder_compat.go @@ -1,5 +1,5 @@ -//go:build (!amd64 && !arm64) || go1.25 || !go1.17 || (arm64 && !go1.20) -// +build !amd64,!arm64 go1.25 !go1.17 arm64,!go1.20 +//go:build (!amd64 && !arm64) || go1.26 || !go1.17 || (arm64 && !go1.20) +// +build !amd64,!arm64 go1.26 !go1.17 arm64,!go1.20 /* * Copyright 2023 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/decoder/decoder_native.go b/vendor/github.com/bytedance/sonic/decoder/decoder_native.go index 563ca944b..4313a4e14 100644 --- a/vendor/github.com/bytedance/sonic/decoder/decoder_native.go +++ b/vendor/github.com/bytedance/sonic/decoder/decoder_native.go @@ -1,5 +1,5 @@ -//go:build (amd64 && go1.17 && !go1.25) || (arm64 && go1.20 && !go1.25) -// +build amd64,go1.17,!go1.25 arm64,go1.20,!go1.25 +//go:build (amd64 && go1.17 && !go1.26) || (arm64 && go1.20 && !go1.26) +// +build amd64,go1.17,!go1.26 arm64,go1.20,!go1.26 /* diff --git a/vendor/github.com/bytedance/sonic/encoder/encoder_compat.go b/vendor/github.com/bytedance/sonic/encoder/encoder_compat.go index d48e99b1f..a7350548a 100644 --- a/vendor/github.com/bytedance/sonic/encoder/encoder_compat.go +++ b/vendor/github.com/bytedance/sonic/encoder/encoder_compat.go @@ -1,4 +1,4 @@ -// +build !amd64,!arm64 go1.25 !go1.17 arm64,!go1.20 +// +build !amd64,!arm64 go1.26 !go1.17 arm64,!go1.20 /* * Copyright 2023 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/encoder/encoder_native.go b/vendor/github.com/bytedance/sonic/encoder/encoder_native.go index 2881da8d7..d38ab3c1a 100644 --- a/vendor/github.com/bytedance/sonic/encoder/encoder_native.go +++ b/vendor/github.com/bytedance/sonic/encoder/encoder_native.go @@ -1,4 +1,4 @@ -// +build amd64,go1.17,!go1.25 arm64,go1.20,!go1.25 +// +build amd64,go1.17,!go1.26 arm64,go1.20,!go1.26 /* * Copyright 2023 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/go.work b/vendor/github.com/bytedance/sonic/go.work index 8d2af51b9..7cac2c2b1 100644 --- a/vendor/github.com/bytedance/sonic/go.work +++ b/vendor/github.com/bytedance/sonic/go.work @@ -6,4 +6,5 @@ use ( ./fuzz ./generic_test ./loader + ./issue_test ) diff --git a/vendor/github.com/bytedance/sonic/internal/compat/warn.go b/vendor/github.com/bytedance/sonic/internal/compat/warn.go index bd9600e5a..4fabaabac 100644 --- a/vendor/github.com/bytedance/sonic/internal/compat/warn.go +++ b/vendor/github.com/bytedance/sonic/internal/compat/warn.go @@ -1,4 +1,4 @@ -// +build !amd64,!arm64 go1.25 !go1.17 arm64,!go1.20 +// +build !amd64,!arm64 go1.26 !go1.17 arm64,!go1.20 package compat diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_amd64.go b/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_amd64.go index 551b35b1b..4e7f46fa6 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_amd64.go @@ -1,5 +1,5 @@ -//go:build go1.17 && !go1.25 -// +build go1.17,!go1.25 +//go:build go1.17 && !go1.26 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_arm64.go b/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_arm64.go index a56e1579d..5a7d44de1 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_arm64.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/api/decoder_arm64.go @@ -1,4 +1,4 @@ -// +build go1.17,!go1.25 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go b/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go index 8a8102dd5..d0ee97511 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go @@ -17,14 +17,15 @@ package api import ( - `bytes` - `io` - `sync` - - `github.com/bytedance/sonic/internal/native` - `github.com/bytedance/sonic/internal/native/types` - `github.com/bytedance/sonic/internal/rt` - `github.com/bytedance/sonic/option` + "bytes" + "io" + "sync" + + "github.com/bytedance/sonic/internal/native" + "github.com/bytedance/sonic/internal/native/types" + "github.com/bytedance/sonic/internal/rt" + "github.com/bytedance/sonic/internal/utils" + "github.com/bytedance/sonic/option" ) var ( @@ -76,11 +77,12 @@ func (self *StreamDecoder) Decode(val interface{}) (err error) { if y := native.SkipOneFast(&src, &x); y < 0 { if self.readMore() { goto try_skip - } else { - err = SyntaxError{e, self.s, types.ParsingError(-s), ""} - self.setErr(err) - return + } + if self.err == nil { + self.err = SyntaxError{e, self.s, types.ParsingError(-s), ""} + self.setErr(self.err) } + return self.err } else { s = y + s e = x + s @@ -193,7 +195,7 @@ func (self *StreamDecoder) peek() (byte, error) { func (self *StreamDecoder) scan() (byte, bool) { for i := self.scanp; i < len(self.buf); i++ { c := self.buf[i] - if isSpace(c) { + if utils.IsSpace(c) { continue } self.scanp = i @@ -202,9 +204,6 @@ func (self *StreamDecoder) scan() (byte, bool) { return 0, true } -func isSpace(c byte) bool { - return types.SPACE_MASK & (1 << c) != 0 -} func (self *StreamDecoder) refill() error { // Make room to read more into the buffer. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/asm_stubs_amd64_go121.go b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/asm_stubs_amd64_go121.go index d6101b2e6..5cd3750bf 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/asm_stubs_amd64_go121.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/asm_stubs_amd64_go121.go @@ -1,4 +1,4 @@ -// +build go1.21,!go1.25 +// +build go1.21,!go1.26 // Copyright 2023 CloudWeGo Authors // diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/assembler_regabi_amd64.go b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/assembler_regabi_amd64.go index 20c115e79..10f623095 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/assembler_regabi_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/assembler_regabi_amd64.go @@ -1,5 +1,5 @@ -//go:build go1.17 && !go1.25 -// +build go1.17,!go1.25 +//go:build go1.17 && !go1.26 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64.go b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64.go index 51a850a8a..2cb41f08d 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64.go @@ -1,4 +1,4 @@ -// +build go1.17,!go1.25 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64_test.s b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64_test.s index f287eaeb4..a08f0e2ad 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64_test.s +++ b/vendor/github.com/bytedance/sonic/internal/decoder/jitdec/generic_regabi_amd64_test.s @@ -1,4 +1,4 @@ -// +build go1.17,!go1.25 +// +build go1.17,!go1.26 // // Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/helper.go b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/helper.go index 61faa6c80..0683f45ae 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/helper.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/helper.go @@ -28,11 +28,6 @@ func SkipNumberFast(json string, start int) (int, bool) { return pos, true } - -func isSpace(c byte) bool { - return c == ' ' || c == '\t' || c == '\n' || c == '\r' -} - // pos is the start index of the raw func ValidNumberFast(raw string) bool { ret := utils.SkipNumber(raw, 0) @@ -48,22 +43,12 @@ func ValidNumberFast(raw string) bool { return true } -func SkipOneFast2(json string, pos *int) (int, error) { - // find the number ending, we parsed in sonic-cpp, it always valid - start := native.SkipOneFast(&json, pos) - if start < 0 { - return -1, error_syntax(*pos, json, types.ParsingError(-start).Error()) - } - return start, nil -} - func SkipOneFast(json string, pos int) (string, error) { - // find the number ending, we parsed in sonic-cpp, it always valid start := native.SkipOneFast(&json, &pos) if start < 0 { - // TODO: details error code return "", error_syntax(pos, json, types.ParsingError(-start).Error()) } + return json[start:pos], nil } diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go index 774b6eef7..085e81102 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go @@ -12,7 +12,7 @@ import ( type Context struct { Parser *Parser efacePool *efacePool - Stack bounedStack + Stack boundedStack Utf8Inv bool } @@ -26,20 +26,20 @@ type parentStat struct { con unsafe.Pointer remain uint64 } -type bounedStack struct { +type boundedStack struct { stack []parentStat index int } -func newStack(size int) bounedStack { - return bounedStack{ +func newStack(size int) boundedStack { + return boundedStack{ stack: make([]parentStat, size + 2), index: 0, } } //go:nosplit -func (s *bounedStack) Pop() (unsafe.Pointer, int, bool){ +func (s *boundedStack) Pop() (unsafe.Pointer, int, bool){ s.index-- con := s.stack[s.index].con remain := s.stack[s.index].remain &^ (uint64(1) << 63) @@ -50,7 +50,7 @@ func (s *bounedStack) Pop() (unsafe.Pointer, int, bool){ } //go:nosplit -func (s *bounedStack) Push(p unsafe.Pointer, remain int, isObj bool) { +func (s *boundedStack) Push(p unsafe.Pointer, remain int, isObj bool) { s.stack[s.index].con = p s.stack[s.index].remain = uint64(remain) if isObj { @@ -1253,7 +1253,7 @@ func (node *Node) AsEfaceFallback(ctx *Context) (interface{}, error) { if ctx.Parser.options & (1 << _F_use_number) != 0 { num, ok := node.AsNumber(ctx) if !ok { - // skip the unmacthed type + // skip the unmatched type *node = NewNode(node.Next()) return nil, newUnmatched(node.Position(), rt.JsonNumberType) } else { @@ -1275,13 +1275,13 @@ func (node *Node) AsEfaceFallback(ctx *Context) (interface{}, error) { return f, nil } - // skip the unmacthed type + // skip the unmatched type *node = NewNode(node.Next()) return nil, newUnmatched(node.Position(), rt.Int64Type) } else { num, ok := node.AsF64(ctx) if !ok { - // skip the unmacthed type + // skip the unmatched type *node = NewNode(node.Next()) return nil, newUnmatched(node.Position(), rt.Float64Type) } else { diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go b/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go index 032ae3b8a..090afac13 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go @@ -97,17 +97,18 @@ func (self *MapIterator) append(t *rt.GoType, k unsafe.Pointer, v unsafe.Pointer func (self *MapIterator) appendGeneric(p *_MapPair, t *rt.GoType, v reflect.Kind, k unsafe.Pointer) error { switch v { - case reflect.Int : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int)(k)), 10)) ; return nil - case reflect.Int8 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int8)(k)), 10)) ; return nil - case reflect.Int16 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int16)(k)), 10)) ; return nil - case reflect.Int32 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int32)(k)), 10)) ; return nil - case reflect.Int64 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int64)(k)), 10)) ; return nil + case reflect.Int : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int)(k)), 10)) ; return nil + case reflect.Int8 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int8)(k)), 10)) ; return nil + case reflect.Int16 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int16)(k)), 10)) ; return nil + case reflect.Int32 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int32)(k)), 10)) ; return nil + case reflect.Int64 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int64)(k)), 10)) ; return nil case reflect.Uint : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint)(k)), 10)) ; return nil case reflect.Uint8 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint8)(k)), 10)) ; return nil case reflect.Uint16 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint16)(k)), 10)) ; return nil case reflect.Uint32 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint32)(k)), 10)) ; return nil - case reflect.Uint64 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint64)(k)), 10)) ; return nil + case reflect.Uint64 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint64)(k)), 10)) ; return nil case reflect.Uintptr : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uintptr)(k)), 10)) ; return nil + case reflect.Bool : if *(*bool)(k) { p.k = "true" } else { p.k = "false" }; return nil case reflect.Interface : return self.appendInterface(p, t, k) case reflect.Struct, reflect.Ptr : return self.appendConcrete(p, t, k) default : panic("unexpected map key type") diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go index 6f76ac739..e0b2fc9b8 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go @@ -1,5 +1,5 @@ -//go:build (amd64 && go1.16 && !go1.25) || (arm64 && go1.20 && !go1.25) -// +build amd64,go1.16,!go1.25 arm64,go1.20,!go1.25 +//go:build (amd64 && go1.16 && !go1.26) || (arm64 && go1.20 && !go1.26) +// +build amd64,go1.16,!go1.26 arm64,go1.20,!go1.26 /** * Copyright 2024 ByteDance Inc. @@ -21,6 +21,7 @@ package alg import ( "runtime" + "strconv" "unsafe" "github.com/bytedance/sonic/internal/native" @@ -177,22 +178,9 @@ func F32toa(buf []byte, v float32) ([]byte) { } func I64toa(buf []byte, v int64) ([]byte) { - buf = rt.GuardSlice2(buf, 32) - ret := native.I64toa((*byte)(rt.IndexByte(buf, len(buf))), v) - if ret > 0 { - return buf[:len(buf)+ret] - } else { - return buf - } + return strconv.AppendInt(buf, v, 10) } func U64toa(buf []byte, v uint64) ([]byte) { - buf = rt.GuardSlice2(buf, 32) - ret := native.U64toa((*byte)(rt.IndexByte(buf, len(buf))), v) - if ret > 0 { - return buf[:len(buf)+ret] - } else { - return buf - } + return strconv.AppendUint(buf, v, 10) } - diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec_compat.go b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec_compat.go index cd8369834..cd9beab04 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec_compat.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec_compat.go @@ -1,4 +1,4 @@ -// +build !amd64,!arm64 go1.25 !go1.16 arm64,!go1.20 +// +build !amd64,!arm64 go1.26 !go1.16 arm64,!go1.20 /** * Copyright 2024 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go index 6956bd9ba..34a2ff321 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go @@ -1,5 +1,5 @@ -//go:build go1.21 && !go1.25 -// +build go1.21,!go1.25 +//go:build go1.21 && !go1.26 +// +build go1.21,!go1.26 // Copyright 2023 CloudWeGo Authors // diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go index d6d451329..927c436dd 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go @@ -1,5 +1,5 @@ -//go:build go1.17 && !go1.25 -// +build go1.17,!go1.25 +//go:build go1.17 && !go1.26 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go index 1d1338756..6d7659e68 100644 --- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go +++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go @@ -1,5 +1,5 @@ -//go:build go1.17 && !go1.25 -// +build go1.17,!go1.25 +//go:build go1.17 && !go1.26 +// +build go1.17,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_subr.go index a3711769b..02c69441a 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__get_by_path = 21452 + _size__get_by_path = 22296 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x4a1c, 240}, - {0x4a1d, 48}, - {0x4a1f, 40}, - {0x4a21, 32}, - {0x4a23, 24}, - {0x4a25, 16}, - {0x4a26, 8}, - {0x4a2a, 0}, - {0x53cc, 240}, + {0x4ca0, 240}, + {0x4ca1, 48}, + {0x4ca3, 40}, + {0x4ca5, 32}, + {0x4ca7, 24}, + {0x4ca9, 16}, + {0x4caa, 8}, + {0x4cae, 0}, + {0x5718, 240}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_text_amd64.go index a99b8fde6..3c0239fe9 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/get_by_path_text_amd64.go @@ -115,171 +115,170 @@ var _text_get_by_path = []byte{ 0x53, //0x0000028c pushq %rbx 0x48, 0x81, 0xec, 0xc0, 0x00, 0x00, 0x00, //0x0000028d subq $192, %rsp 0x48, 0x89, 0x4c, 0x24, 0x10, //0x00000294 movq %rcx, $16(%rsp) - 0x49, 0x89, 0xf0, //0x00000299 movq %rsi, %r8 - 0x49, 0x89, 0xfb, //0x0000029c movq %rdi, %r11 - 0x48, 0x8b, 0x42, 0x08, //0x0000029f movq $8(%rdx), %rax - 0x4c, 0x8d, 0x6f, 0x08, //0x000002a3 leaq $8(%rdi), %r13 - 0x48, 0x85, 0xc0, //0x000002a7 testq %rax, %rax - 0x48, 0x89, 0x74, 0x24, 0x08, //0x000002aa movq %rsi, $8(%rsp) - 0x48, 0x89, 0x7c, 0x24, 0x20, //0x000002af movq %rdi, $32(%rsp) - 0x0f, 0x84, 0x32, 0x2b, 0x00, 0x00, //0x000002b4 je LBB0_520 + 0x49, 0x89, 0xf1, //0x00000299 movq %rsi, %r9 + 0x48, 0x8b, 0x4a, 0x08, //0x0000029c movq $8(%rdx), %rcx + 0x48, 0x89, 0xbc, 0x24, 0x90, 0x00, 0x00, 0x00, //0x000002a0 movq %rdi, $144(%rsp) + 0x4c, 0x8d, 0x6f, 0x08, //0x000002a8 leaq $8(%rdi), %r13 + 0x48, 0x85, 0xc9, //0x000002ac testq %rcx, %rcx + 0x48, 0x89, 0x74, 0x24, 0x08, //0x000002af movq %rsi, $8(%rsp) + 0x0f, 0x84, 0xc0, 0x2d, 0x00, 0x00, //0x000002b4 je LBB0_538 0x4c, 0x8b, 0x3a, //0x000002ba movq (%rdx), %r15 - 0x48, 0xc1, 0xe0, 0x04, //0x000002bd shlq $4, %rax - 0x4c, 0x01, 0xf8, //0x000002c1 addq %r15, %rax - 0x48, 0x89, 0x84, 0x24, 0xa0, 0x00, 0x00, 0x00, //0x000002c4 movq %rax, $160(%rsp) - 0x4d, 0x8b, 0x23, //0x000002cc movq (%r11), %r12 - 0x49, 0x8b, 0x00, //0x000002cf movq (%r8), %rax + 0x48, 0xc1, 0xe1, 0x04, //0x000002bd shlq $4, %rcx + 0x4c, 0x01, 0xf9, //0x000002c1 addq %r15, %rcx + 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, //0x000002c4 movq $144(%rsp), %rax + 0x4c, 0x8b, 0x20, //0x000002cc movq (%rax), %r12 + 0x49, 0x8b, 0x01, //0x000002cf movq (%r9), %rax 0xc5, 0xfe, 0x6f, 0x05, 0x26, 0xfd, 0xff, 0xff, //0x000002d2 vmovdqu $-730(%rip), %ymm0 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0x9e, 0xfd, 0xff, 0xff, //0x000002da vmovdqu $-610(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x15, 0xb6, 0xfd, 0xff, 0xff, //0x000002e2 vmovdqu $-586(%rip), %ymm2 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x2e, 0xfd, 0xff, 0xff, //0x000002ea vmovdqu $-722(%rip), %ymm3 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x46, 0xfd, 0xff, 0xff, //0x000002f2 vmovdqu $-698(%rip), %ymm4 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0x5e, 0xfd, 0xff, 0xff, //0x000002fa vmovdqu $-674(%rip), %ymm5 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7a, 0x6f, 0x05, 0xf6, 0xfe, 0xff, 0xff, //0x00000302 vmovdqu $-266(%rip), %xmm8 /* LCPI0_6+0(%rip) */ - 0xc4, 0x41, 0x31, 0x76, 0xc9, //0x0000030a vpcmpeqd %xmm9, %xmm9, %xmm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xe9, 0xfd, 0xff, 0xff, //0x0000030f vmovdqu $-535(%rip), %ymm10 /* LCPI0_11+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xa1, 0xfd, 0xff, 0xff, //0x00000317 vmovdqu $-607(%rip), %ymm12 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xb9, 0xfd, 0xff, 0xff, //0x0000031f vmovdqu $-583(%rip), %ymm13 /* LCPI0_10+0(%rip) */ - //0x00000327 LBB0_2 - 0x49, 0x8b, 0x4d, 0x00, //0x00000327 movq (%r13), %rcx - 0x48, 0x39, 0xc8, //0x0000032b cmpq %rcx, %rax - 0x0f, 0x83, 0x2c, 0x00, 0x00, 0x00, //0x0000032e jae LBB0_7 - 0x41, 0x8a, 0x14, 0x04, //0x00000334 movb (%r12,%rax), %dl - 0x80, 0xfa, 0x0d, //0x00000338 cmpb $13, %dl - 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x0000033b je LBB0_7 - 0x80, 0xfa, 0x20, //0x00000341 cmpb $32, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000344 je LBB0_7 - 0x80, 0xc2, 0xf7, //0x0000034a addb $-9, %dl - 0x80, 0xfa, 0x01, //0x0000034d cmpb $1, %dl - 0x0f, 0x86, 0x0a, 0x00, 0x00, 0x00, //0x00000350 jbe LBB0_7 - 0x48, 0x89, 0xc2, //0x00000356 movq %rax, %rdx - 0xe9, 0xa3, 0x01, 0x00, 0x00, //0x00000359 jmp LBB0_32 - 0x90, 0x90, //0x0000035e .p2align 4, 0x90 - //0x00000360 LBB0_7 - 0x48, 0x8d, 0x50, 0x01, //0x00000360 leaq $1(%rax), %rdx - 0x48, 0x39, 0xca, //0x00000364 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000367 jae LBB0_11 - 0x41, 0x8a, 0x1c, 0x14, //0x0000036d movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x00000371 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000374 je LBB0_11 - 0x80, 0xfb, 0x20, //0x0000037a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000037d je LBB0_11 - 0x80, 0xc3, 0xf7, //0x00000383 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000386 cmpb $1, %bl - 0x0f, 0x87, 0x72, 0x01, 0x00, 0x00, //0x00000389 ja LBB0_32 - 0x90, //0x0000038f .p2align 4, 0x90 - //0x00000390 LBB0_11 - 0x48, 0x8d, 0x50, 0x02, //0x00000390 leaq $2(%rax), %rdx - 0x48, 0x39, 0xca, //0x00000394 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000397 jae LBB0_15 - 0x41, 0x8a, 0x1c, 0x14, //0x0000039d movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x000003a1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000003a4 je LBB0_15 - 0x80, 0xfb, 0x20, //0x000003aa cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000003ad je LBB0_15 - 0x80, 0xc3, 0xf7, //0x000003b3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000003b6 cmpb $1, %bl - 0x0f, 0x87, 0x42, 0x01, 0x00, 0x00, //0x000003b9 ja LBB0_32 - 0x90, //0x000003bf .p2align 4, 0x90 - //0x000003c0 LBB0_15 - 0x48, 0x8d, 0x50, 0x03, //0x000003c0 leaq $3(%rax), %rdx - 0x48, 0x39, 0xca, //0x000003c4 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003c7 jae LBB0_19 - 0x41, 0x8a, 0x1c, 0x14, //0x000003cd movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x000003d1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000003d4 je LBB0_19 - 0x80, 0xfb, 0x20, //0x000003da cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000003dd je LBB0_19 - 0x80, 0xc3, 0xf7, //0x000003e3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000003e6 cmpb $1, %bl - 0x0f, 0x87, 0x12, 0x01, 0x00, 0x00, //0x000003e9 ja LBB0_32 - 0x90, //0x000003ef .p2align 4, 0x90 - //0x000003f0 LBB0_19 - 0x4c, 0x8d, 0x70, 0x04, //0x000003f0 leaq $4(%rax), %r14 - 0x48, 0x89, 0xce, //0x000003f4 movq %rcx, %rsi - 0x4c, 0x29, 0xf6, //0x000003f7 subq %r14, %rsi - 0x0f, 0x86, 0xd0, 0x00, 0x00, 0x00, //0x000003fa jbe LBB0_629 - 0x48, 0x83, 0xfe, 0x20, //0x00000400 cmpq $32, %rsi - 0x0f, 0x82, 0xbd, 0x29, 0x00, 0x00, //0x00000404 jb LBB0_594 - 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x0000040a movq $-4, %rsi - 0x48, 0x29, 0xc6, //0x00000411 subq %rax, %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000414 .p2align 4, 0x90 - //0x00000420 LBB0_22 - 0xc4, 0x01, 0x7e, 0x6f, 0x34, 0x34, //0x00000420 vmovdqu (%r12,%r14), %ymm14 - 0xc4, 0x42, 0x7d, 0x00, 0xfe, //0x00000426 vpshufb %ymm14, %ymm0, %ymm15 - 0xc4, 0x41, 0x0d, 0x74, 0xf7, //0x0000042b vpcmpeqb %ymm15, %ymm14, %ymm14 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd6, //0x00000430 vpmovmskb %ymm14, %edx - 0x83, 0xfa, 0xff, //0x00000435 cmpl $-1, %edx - 0x0f, 0x85, 0xb2, 0x00, 0x00, 0x00, //0x00000438 jne LBB0_31 - 0x49, 0x83, 0xc6, 0x20, //0x0000043e addq $32, %r14 - 0x48, 0x8d, 0x14, 0x31, //0x00000442 leaq (%rcx,%rsi), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000446 addq $-32, %rdx - 0x48, 0x83, 0xc6, 0xe0, //0x0000044a addq $-32, %rsi - 0x48, 0x83, 0xfa, 0x1f, //0x0000044e cmpq $31, %rdx - 0x0f, 0x87, 0xc8, 0xff, 0xff, 0xff, //0x00000452 ja LBB0_22 - 0x4c, 0x89, 0xe2, //0x00000458 movq %r12, %rdx - 0x48, 0x29, 0xf2, //0x0000045b subq %rsi, %rdx - 0x48, 0x01, 0xce, //0x0000045e addq %rcx, %rsi - 0x48, 0x85, 0xf6, //0x00000461 testq %rsi, %rsi - 0x0f, 0x84, 0x3e, 0x00, 0x00, 0x00, //0x00000464 je LBB0_30 - //0x0000046a LBB0_25 - 0x4c, 0x8d, 0x04, 0x32, //0x0000046a leaq (%rdx,%rsi), %r8 - 0x31, 0xff, //0x0000046e xorl %edi, %edi - //0x00000470 LBB0_26 - 0x44, 0x0f, 0xbe, 0x0c, 0x3a, //0x00000470 movsbl (%rdx,%rdi), %r9d - 0x41, 0x83, 0xf9, 0x20, //0x00000475 cmpl $32, %r9d - 0x0f, 0x87, 0x1b, 0x29, 0x00, 0x00, //0x00000479 ja LBB0_33 - 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000047f movabsq $4294977024, %rbx - 0x4c, 0x0f, 0xa3, 0xcb, //0x00000489 btq %r9, %rbx - 0x0f, 0x83, 0x07, 0x29, 0x00, 0x00, //0x0000048d jae LBB0_33 - 0x48, 0x83, 0xc7, 0x01, //0x00000493 addq $1, %rdi - 0x48, 0x39, 0xfe, //0x00000497 cmpq %rdi, %rsi - 0x0f, 0x85, 0xd0, 0xff, 0xff, 0xff, //0x0000049a jne LBB0_26 - 0x4c, 0x89, 0xc2, //0x000004a0 movq %r8, %rdx - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000004a3 movq $8(%rsp), %r8 - //0x000004a8 LBB0_30 - 0x4c, 0x29, 0xe2, //0x000004a8 subq %r12, %rdx - 0x48, 0x39, 0xca, //0x000004ab cmpq %rcx, %rdx - 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x000004ae jb LBB0_32 - //0x000004b4 LBB0_34 - 0x31, 0xc9, //0x000004b4 xorl %ecx, %ecx - 0x49, 0x89, 0xc6, //0x000004b6 movq %rax, %r14 - 0x49, 0x8b, 0x07, //0x000004b9 movq (%r15), %rax - 0x48, 0x85, 0xc0, //0x000004bc testq %rax, %rax - 0x0f, 0x85, 0x53, 0x00, 0x00, 0x00, //0x000004bf jne LBB0_35 - 0xe9, 0x11, 0x46, 0x00, 0x00, //0x000004c5 jmp LBB0_630 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004ca .p2align 4, 0x90 - //0x000004d0 LBB0_629 - 0x4d, 0x89, 0x30, //0x000004d0 movq %r14, (%r8) + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000002da movabsq $4294977024, %r10 + 0xc5, 0xfe, 0x6f, 0x0d, 0x94, 0xfd, 0xff, 0xff, //0x000002e4 vmovdqu $-620(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x15, 0xac, 0xfd, 0xff, 0xff, //0x000002ec vmovdqu $-596(%rip), %ymm2 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x24, 0xfd, 0xff, 0xff, //0x000002f4 vmovdqu $-732(%rip), %ymm3 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x3c, 0xfd, 0xff, 0xff, //0x000002fc vmovdqu $-708(%rip), %ymm4 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0x54, 0xfd, 0xff, 0xff, //0x00000304 vmovdqu $-684(%rip), %ymm5 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7a, 0x6f, 0x05, 0xec, 0xfe, 0xff, 0xff, //0x0000030c vmovdqu $-276(%rip), %xmm8 /* LCPI0_6+0(%rip) */ + 0xc4, 0x41, 0x31, 0x76, 0xc9, //0x00000314 vpcmpeqd %xmm9, %xmm9, %xmm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xdf, 0xfd, 0xff, 0xff, //0x00000319 vmovdqu $-545(%rip), %ymm10 /* LCPI0_11+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x97, 0xfd, 0xff, 0xff, //0x00000321 vmovdqu $-617(%rip), %ymm12 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xaf, 0xfd, 0xff, 0xff, //0x00000329 vmovdqu $-593(%rip), %ymm13 /* LCPI0_10+0(%rip) */ + 0x48, 0x89, 0x8c, 0x24, 0xa0, 0x00, 0x00, 0x00, //0x00000331 movq %rcx, $160(%rsp) + //0x00000339 LBB0_2 + 0x49, 0x8b, 0x4d, 0x00, //0x00000339 movq (%r13), %rcx + 0x48, 0x39, 0xc8, //0x0000033d cmpq %rcx, %rax + 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x00000340 jae LBB0_7 + 0x41, 0x8a, 0x14, 0x04, //0x00000346 movb (%r12,%rax), %dl + 0x80, 0xfa, 0x0d, //0x0000034a cmpb $13, %dl + 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x0000034d je LBB0_7 + 0x80, 0xfa, 0x20, //0x00000353 cmpb $32, %dl + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000356 je LBB0_7 + 0x80, 0xc2, 0xf7, //0x0000035c addb $-9, %dl + 0x80, 0xfa, 0x01, //0x0000035f cmpb $1, %dl + 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00000362 jbe LBB0_7 + 0x48, 0x89, 0xc2, //0x00000368 movq %rax, %rdx + 0xe9, 0x91, 0x01, 0x00, 0x00, //0x0000036b jmp LBB0_32 + //0x00000370 .p2align 4, 0x90 + //0x00000370 LBB0_7 + 0x48, 0x8d, 0x50, 0x01, //0x00000370 leaq $1(%rax), %rdx + 0x48, 0x39, 0xca, //0x00000374 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000377 jae LBB0_11 + 0x41, 0x8a, 0x1c, 0x14, //0x0000037d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000381 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000384 je LBB0_11 + 0x80, 0xfb, 0x20, //0x0000038a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000038d je LBB0_11 + 0x80, 0xc3, 0xf7, //0x00000393 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000396 cmpb $1, %bl + 0x0f, 0x87, 0x62, 0x01, 0x00, 0x00, //0x00000399 ja LBB0_32 + 0x90, //0x0000039f .p2align 4, 0x90 + //0x000003a0 LBB0_11 + 0x48, 0x8d, 0x50, 0x02, //0x000003a0 leaq $2(%rax), %rdx + 0x48, 0x39, 0xca, //0x000003a4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003a7 jae LBB0_15 + 0x41, 0x8a, 0x1c, 0x14, //0x000003ad movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000003b1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000003b4 je LBB0_15 + 0x80, 0xfb, 0x20, //0x000003ba cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000003bd je LBB0_15 + 0x80, 0xc3, 0xf7, //0x000003c3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000003c6 cmpb $1, %bl + 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x000003c9 ja LBB0_32 + 0x90, //0x000003cf .p2align 4, 0x90 + //0x000003d0 LBB0_15 + 0x48, 0x8d, 0x50, 0x03, //0x000003d0 leaq $3(%rax), %rdx + 0x48, 0x39, 0xca, //0x000003d4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003d7 jae LBB0_19 + 0x41, 0x8a, 0x1c, 0x14, //0x000003dd movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000003e1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000003e4 je LBB0_19 + 0x80, 0xfb, 0x20, //0x000003ea cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000003ed je LBB0_19 + 0x80, 0xc3, 0xf7, //0x000003f3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000003f6 cmpb $1, %bl + 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x000003f9 ja LBB0_32 + 0x90, //0x000003ff .p2align 4, 0x90 + //0x00000400 LBB0_19 + 0x4c, 0x8d, 0x70, 0x04, //0x00000400 leaq $4(%rax), %r14 + 0x48, 0x89, 0xcf, //0x00000404 movq %rcx, %rdi + 0x4c, 0x29, 0xf7, //0x00000407 subq %r14, %rdi + 0x0f, 0x86, 0xc0, 0x00, 0x00, 0x00, //0x0000040a jbe LBB0_648 + 0x48, 0x83, 0xff, 0x20, //0x00000410 cmpq $32, %rdi + 0x0f, 0x82, 0x3b, 0x2c, 0x00, 0x00, //0x00000414 jb LBB0_613 + 0x48, 0xc7, 0xc7, 0xfc, 0xff, 0xff, 0xff, //0x0000041a movq $-4, %rdi + 0x48, 0x29, 0xc7, //0x00000421 subq %rax, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000424 .p2align 4, 0x90 + //0x00000430 LBB0_22 + 0xc4, 0x01, 0x7e, 0x6f, 0x34, 0x34, //0x00000430 vmovdqu (%r12,%r14), %ymm14 + 0xc4, 0x42, 0x7d, 0x00, 0xfe, //0x00000436 vpshufb %ymm14, %ymm0, %ymm15 + 0xc4, 0x41, 0x0d, 0x74, 0xf7, //0x0000043b vpcmpeqb %ymm15, %ymm14, %ymm14 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd6, //0x00000440 vpmovmskb %ymm14, %edx + 0x83, 0xfa, 0xff, //0x00000445 cmpl $-1, %edx + 0x0f, 0x85, 0xa2, 0x00, 0x00, 0x00, //0x00000448 jne LBB0_31 + 0x49, 0x83, 0xc6, 0x20, //0x0000044e addq $32, %r14 + 0x48, 0x8d, 0x14, 0x39, //0x00000452 leaq (%rcx,%rdi), %rdx + 0x48, 0x83, 0xc2, 0xe0, //0x00000456 addq $-32, %rdx + 0x48, 0x83, 0xc7, 0xe0, //0x0000045a addq $-32, %rdi + 0x48, 0x83, 0xfa, 0x1f, //0x0000045e cmpq $31, %rdx + 0x0f, 0x87, 0xc8, 0xff, 0xff, 0xff, //0x00000462 ja LBB0_22 + 0x4c, 0x89, 0xe2, //0x00000468 movq %r12, %rdx + 0x48, 0x29, 0xfa, //0x0000046b subq %rdi, %rdx + 0x48, 0x01, 0xcf, //0x0000046e addq %rcx, %rdi + 0x48, 0x85, 0xff, //0x00000471 testq %rdi, %rdi + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00000474 je LBB0_30 + //0x0000047a LBB0_25 + 0x4c, 0x8d, 0x04, 0x3a, //0x0000047a leaq (%rdx,%rdi), %r8 + 0x31, 0xf6, //0x0000047e xorl %esi, %esi + //0x00000480 LBB0_26 + 0x0f, 0xbe, 0x1c, 0x32, //0x00000480 movsbl (%rdx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x00000484 cmpl $32, %ebx + 0x0f, 0x87, 0xa0, 0x2b, 0x00, 0x00, //0x00000487 ja LBB0_33 + 0x49, 0x0f, 0xa3, 0xda, //0x0000048d btq %rbx, %r10 + 0x0f, 0x83, 0x96, 0x2b, 0x00, 0x00, //0x00000491 jae LBB0_33 + 0x48, 0x83, 0xc6, 0x01, //0x00000497 addq $1, %rsi + 0x48, 0x39, 0xf7, //0x0000049b cmpq %rsi, %rdi + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000049e jne LBB0_26 + 0x4c, 0x89, 0xc2, //0x000004a4 movq %r8, %rdx + //0x000004a7 LBB0_30 + 0x4c, 0x29, 0xe2, //0x000004a7 subq %r12, %rdx + 0x48, 0x39, 0xca, //0x000004aa cmpq %rcx, %rdx + 0x0f, 0x82, 0x4e, 0x00, 0x00, 0x00, //0x000004ad jb LBB0_32 + //0x000004b3 LBB0_34 + 0x31, 0xc9, //0x000004b3 xorl %ecx, %ecx + 0x49, 0x89, 0xc6, //0x000004b5 movq %rax, %r14 + 0x49, 0x8b, 0x07, //0x000004b8 movq (%r15), %rax + 0x48, 0x85, 0xc0, //0x000004bb testq %rax, %rax + 0x0f, 0x85, 0x54, 0x00, 0x00, 0x00, //0x000004be jne LBB0_35 + 0xe9, 0x9f, 0x48, 0x00, 0x00, //0x000004c4 jmp LBB0_649 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004c9 .p2align 4, 0x90 + //0x000004d0 LBB0_648 + 0x4d, 0x89, 0x31, //0x000004d0 movq %r14, (%r9) 0x31, 0xc9, //0x000004d3 xorl %ecx, %ecx 0x49, 0x8b, 0x07, //0x000004d5 movq (%r15), %rax 0x48, 0x85, 0xc0, //0x000004d8 testq %rax, %rax 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x000004db jne LBB0_35 - 0xe9, 0xf5, 0x45, 0x00, 0x00, //0x000004e1 jmp LBB0_630 + 0xe9, 0x82, 0x48, 0x00, 0x00, //0x000004e1 jmp LBB0_649 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004e6 .p2align 4, 0x90 //0x000004f0 LBB0_31 0xf7, 0xd2, //0x000004f0 notl %edx 0x0f, 0xbc, 0xd2, //0x000004f2 bsfl %edx, %edx - 0x48, 0x29, 0xf2, //0x000004f5 subq %rsi, %rdx + 0x48, 0x29, 0xfa, //0x000004f5 subq %rdi, %rdx 0x48, 0x39, 0xca, //0x000004f8 cmpq %rcx, %rdx - 0x0f, 0x83, 0xb3, 0xff, 0xff, 0xff, //0x000004fb jae LBB0_34 + 0x0f, 0x83, 0xb2, 0xff, 0xff, 0xff, //0x000004fb jae LBB0_34 //0x00000501 LBB0_32 0x4c, 0x8d, 0x72, 0x01, //0x00000501 leaq $1(%rdx), %r14 - 0x4d, 0x89, 0x30, //0x00000505 movq %r14, (%r8) + 0x4d, 0x89, 0x31, //0x00000505 movq %r14, (%r9) 0x41, 0x8a, 0x0c, 0x14, //0x00000508 movb (%r12,%rdx), %cl 0x49, 0x8b, 0x07, //0x0000050c movq (%r15), %rax 0x48, 0x85, 0xc0, //0x0000050f testq %rax, %rax - 0x0f, 0x84, 0xc3, 0x45, 0x00, 0x00, //0x00000512 je LBB0_630 + 0x0f, 0x84, 0x50, 0x48, 0x00, 0x00, //0x00000512 je LBB0_649 //0x00000518 LBB0_35 0x8a, 0x40, 0x17, //0x00000518 movb $23(%rax), %al 0x24, 0x1f, //0x0000051b andb $31, %al 0x3c, 0x02, //0x0000051d cmpb $2, %al - 0x0f, 0x84, 0xab, 0x19, 0x00, 0x00, //0x0000051f je LBB0_386 + 0x0f, 0x84, 0x5b, 0x1b, 0x00, 0x00, //0x0000051f je LBB0_399 0x3c, 0x18, //0x00000525 cmpb $24, %al - 0x0f, 0x85, 0xae, 0x45, 0x00, 0x00, //0x00000527 jne LBB0_630 + 0x0f, 0x85, 0x3b, 0x48, 0x00, 0x00, //0x00000527 jne LBB0_649 0x80, 0xf9, 0x7b, //0x0000052d cmpb $123, %cl - 0x4c, 0x89, 0x6c, 0x24, 0x28, //0x00000530 movq %r13, $40(%rsp) - 0x0f, 0x85, 0x4c, 0x47, 0x00, 0x00, //0x00000535 jne LBB0_1024 + 0x4c, 0x89, 0x6c, 0x24, 0x18, //0x00000530 movq %r13, $24(%rsp) + 0x0f, 0x85, 0xd0, 0x49, 0x00, 0x00, //0x00000535 jne LBB0_1048 //0x0000053b LBB0_38 0x49, 0x8b, 0x45, 0x00, //0x0000053b movq (%r13), %rax 0x49, 0x39, 0xc6, //0x0000053f cmpq %rax, %r14 @@ -292,3621 +291,3587 @@ var _text_get_by_path = []byte{ 0x80, 0xc1, 0xf7, //0x0000055e addb $-9, %cl 0x80, 0xf9, 0x01, //0x00000561 cmpb $1, %cl 0x0f, 0x86, 0x16, 0x00, 0x00, 0x00, //0x00000564 jbe LBB0_43 - 0x4c, 0x89, 0xf3, //0x0000056a movq %r14, %rbx - 0xe9, 0x7f, 0x01, 0x00, 0x00, //0x0000056d jmp LBB0_68 + 0x4c, 0x89, 0xf1, //0x0000056a movq %r14, %rcx + 0xe9, 0x6f, 0x01, 0x00, 0x00, //0x0000056d jmp LBB0_68 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000572 .p2align 4, 0x90 //0x00000580 LBB0_43 - 0x49, 0x8d, 0x5e, 0x01, //0x00000580 leaq $1(%r14), %rbx - 0x48, 0x39, 0xc3, //0x00000584 cmpq %rax, %rbx + 0x49, 0x8d, 0x4e, 0x01, //0x00000580 leaq $1(%r14), %rcx + 0x48, 0x39, 0xc1, //0x00000584 cmpq %rax, %rcx 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000587 jae LBB0_47 - 0x41, 0x8a, 0x0c, 0x1c, //0x0000058d movb (%r12,%rbx), %cl - 0x80, 0xf9, 0x0d, //0x00000591 cmpb $13, %cl + 0x41, 0x8a, 0x14, 0x0c, //0x0000058d movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x00000591 cmpb $13, %dl 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000594 je LBB0_47 - 0x80, 0xf9, 0x20, //0x0000059a cmpb $32, %cl + 0x80, 0xfa, 0x20, //0x0000059a cmpb $32, %dl 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000059d je LBB0_47 - 0x80, 0xc1, 0xf7, //0x000005a3 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x000005a6 cmpb $1, %cl - 0x0f, 0x87, 0x42, 0x01, 0x00, 0x00, //0x000005a9 ja LBB0_68 + 0x80, 0xc2, 0xf7, //0x000005a3 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000005a6 cmpb $1, %dl + 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x000005a9 ja LBB0_68 0x90, //0x000005af .p2align 4, 0x90 //0x000005b0 LBB0_47 - 0x49, 0x8d, 0x5e, 0x02, //0x000005b0 leaq $2(%r14), %rbx - 0x48, 0x39, 0xc3, //0x000005b4 cmpq %rax, %rbx + 0x49, 0x8d, 0x4e, 0x02, //0x000005b0 leaq $2(%r14), %rcx + 0x48, 0x39, 0xc1, //0x000005b4 cmpq %rax, %rcx 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000005b7 jae LBB0_51 - 0x41, 0x8a, 0x0c, 0x1c, //0x000005bd movb (%r12,%rbx), %cl - 0x80, 0xf9, 0x0d, //0x000005c1 cmpb $13, %cl + 0x41, 0x8a, 0x14, 0x0c, //0x000005bd movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x000005c1 cmpb $13, %dl 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000005c4 je LBB0_51 - 0x80, 0xf9, 0x20, //0x000005ca cmpb $32, %cl + 0x80, 0xfa, 0x20, //0x000005ca cmpb $32, %dl 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000005cd je LBB0_51 - 0x80, 0xc1, 0xf7, //0x000005d3 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x000005d6 cmpb $1, %cl - 0x0f, 0x87, 0x12, 0x01, 0x00, 0x00, //0x000005d9 ja LBB0_68 + 0x80, 0xc2, 0xf7, //0x000005d3 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000005d6 cmpb $1, %dl + 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x000005d9 ja LBB0_68 0x90, //0x000005df .p2align 4, 0x90 //0x000005e0 LBB0_51 - 0x49, 0x8d, 0x5e, 0x03, //0x000005e0 leaq $3(%r14), %rbx - 0x48, 0x39, 0xc3, //0x000005e4 cmpq %rax, %rbx + 0x49, 0x8d, 0x4e, 0x03, //0x000005e0 leaq $3(%r14), %rcx + 0x48, 0x39, 0xc1, //0x000005e4 cmpq %rax, %rcx 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000005e7 jae LBB0_55 - 0x41, 0x8a, 0x0c, 0x1c, //0x000005ed movb (%r12,%rbx), %cl - 0x80, 0xf9, 0x0d, //0x000005f1 cmpb $13, %cl + 0x41, 0x8a, 0x14, 0x0c, //0x000005ed movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x000005f1 cmpb $13, %dl 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000005f4 je LBB0_55 - 0x80, 0xf9, 0x20, //0x000005fa cmpb $32, %cl + 0x80, 0xfa, 0x20, //0x000005fa cmpb $32, %dl 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000005fd je LBB0_55 - 0x80, 0xc1, 0xf7, //0x00000603 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x00000606 cmpb $1, %cl - 0x0f, 0x87, 0xe2, 0x00, 0x00, 0x00, //0x00000609 ja LBB0_68 + 0x80, 0xc2, 0xf7, //0x00000603 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000606 cmpb $1, %dl + 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x00000609 ja LBB0_68 0x90, //0x0000060f .p2align 4, 0x90 //0x00000610 LBB0_55 - 0x49, 0x8d, 0x5e, 0x04, //0x00000610 leaq $4(%r14), %rbx - 0x48, 0x89, 0xc1, //0x00000614 movq %rax, %rcx - 0x48, 0x29, 0xd9, //0x00000617 subq %rbx, %rcx - 0x0f, 0x86, 0x64, 0x46, 0x00, 0x00, //0x0000061a jbe LBB0_1022 - 0x48, 0x83, 0xf9, 0x20, //0x00000620 cmpq $32, %rcx - 0x0f, 0x82, 0x16, 0x16, 0x00, 0x00, //0x00000624 jb LBB0_190 - 0x48, 0xc7, 0xc1, 0xfc, 0xff, 0xff, 0xff, //0x0000062a movq $-4, %rcx - 0x4c, 0x29, 0xf1, //0x00000631 subq %r14, %rcx + 0x49, 0x8d, 0x4e, 0x04, //0x00000610 leaq $4(%r14), %rcx + 0x48, 0x89, 0xc2, //0x00000614 movq %rax, %rdx + 0x48, 0x29, 0xca, //0x00000617 subq %rcx, %rdx + 0x0f, 0x86, 0x94, 0x2c, 0x00, 0x00, //0x0000061a jbe LBB0_1047 + 0x48, 0x83, 0xfa, 0x20, //0x00000620 cmpq $32, %rdx + 0x0f, 0x82, 0xa3, 0x17, 0x00, 0x00, //0x00000624 jb LBB0_167 + 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x0000062a movq $-4, %rdx + 0x4c, 0x29, 0xf2, //0x00000631 subq %r14, %rdx 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000634 .p2align 4, 0x90 //0x00000640 LBB0_58 - 0xc4, 0x41, 0x7e, 0x6f, 0x34, 0x1c, //0x00000640 vmovdqu (%r12,%rbx), %ymm14 + 0xc4, 0x41, 0x7e, 0x6f, 0x34, 0x0c, //0x00000640 vmovdqu (%r12,%rcx), %ymm14 0xc4, 0x42, 0x7d, 0x00, 0xfe, //0x00000646 vpshufb %ymm14, %ymm0, %ymm15 0xc4, 0x41, 0x0d, 0x74, 0xf7, //0x0000064b vpcmpeqb %ymm15, %ymm14, %ymm14 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd6, //0x00000650 vpmovmskb %ymm14, %edx - 0x83, 0xfa, 0xff, //0x00000655 cmpl $-1, %edx - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000658 jne LBB0_67 - 0x48, 0x83, 0xc3, 0x20, //0x0000065e addq $32, %rbx - 0x48, 0x8d, 0x14, 0x08, //0x00000662 leaq (%rax,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000666 addq $-32, %rdx - 0x48, 0x83, 0xc1, 0xe0, //0x0000066a addq $-32, %rcx - 0x48, 0x83, 0xfa, 0x1f, //0x0000066e cmpq $31, %rdx + 0xc4, 0xc1, 0x7d, 0xd7, 0xf6, //0x00000650 vpmovmskb %ymm14, %esi + 0x83, 0xfe, 0xff, //0x00000655 cmpl $-1, %esi + 0x0f, 0x85, 0x72, 0x00, 0x00, 0x00, //0x00000658 jne LBB0_67 + 0x48, 0x83, 0xc1, 0x20, //0x0000065e addq $32, %rcx + 0x48, 0x8d, 0x34, 0x10, //0x00000662 leaq (%rax,%rdx), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00000666 addq $-32, %rsi + 0x48, 0x83, 0xc2, 0xe0, //0x0000066a addq $-32, %rdx + 0x48, 0x83, 0xfe, 0x1f, //0x0000066e cmpq $31, %rsi 0x0f, 0x87, 0xc8, 0xff, 0xff, 0xff, //0x00000672 ja LBB0_58 - 0x4c, 0x89, 0xe3, //0x00000678 movq %r12, %rbx - 0x48, 0x29, 0xcb, //0x0000067b subq %rcx, %rbx - 0x48, 0x01, 0xc1, //0x0000067e addq %rax, %rcx - 0x48, 0x85, 0xc9, //0x00000681 testq %rcx, %rcx - 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00000684 je LBB0_66 + 0x4c, 0x89, 0xe1, //0x00000678 movq %r12, %rcx + 0x48, 0x29, 0xd1, //0x0000067b subq %rdx, %rcx + 0x48, 0x01, 0xc2, //0x0000067e addq %rax, %rdx + 0x48, 0x85, 0xd2, //0x00000681 testq %rdx, %rdx + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00000684 je LBB0_66 //0x0000068a LBB0_61 - 0x4c, 0x8d, 0x0c, 0x0b, //0x0000068a leaq (%rbx,%rcx), %r9 - 0x31, 0xd2, //0x0000068e xorl %edx, %edx + 0x48, 0x8d, 0x3c, 0x11, //0x0000068a leaq (%rcx,%rdx), %rdi + 0x31, 0xf6, //0x0000068e xorl %esi, %esi //0x00000690 .p2align 4, 0x90 //0x00000690 LBB0_62 - 0x0f, 0xbe, 0x3c, 0x13, //0x00000690 movsbl (%rbx,%rdx), %edi - 0x83, 0xff, 0x20, //0x00000694 cmpl $32, %edi - 0x0f, 0x87, 0x8e, 0x11, 0x00, 0x00, //0x00000697 ja LBB0_117 - 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000069d movabsq $4294977024, %rsi - 0x48, 0x0f, 0xa3, 0xfe, //0x000006a7 btq %rdi, %rsi - 0x0f, 0x83, 0x7a, 0x11, 0x00, 0x00, //0x000006ab jae LBB0_117 - 0x48, 0x83, 0xc2, 0x01, //0x000006b1 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x000006b5 cmpq %rdx, %rcx - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x000006b8 jne LBB0_62 - 0x4c, 0x89, 0xcb, //0x000006be movq %r9, %rbx - //0x000006c1 LBB0_66 - 0x4c, 0x29, 0xe3, //0x000006c1 subq %r12, %rbx - 0x48, 0x39, 0xc3, //0x000006c4 cmpq %rax, %rbx - 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x000006c7 jb LBB0_68 - 0xe9, 0xb5, 0x45, 0x00, 0x00, //0x000006cd jmp LBB0_1024 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006d2 .p2align 4, 0x90 - //0x000006e0 LBB0_67 - 0xf7, 0xd2, //0x000006e0 notl %edx - 0x0f, 0xbc, 0xda, //0x000006e2 bsfl %edx, %ebx - 0x48, 0x29, 0xcb, //0x000006e5 subq %rcx, %rbx - 0x48, 0x39, 0xc3, //0x000006e8 cmpq %rax, %rbx - 0x0f, 0x83, 0x96, 0x45, 0x00, 0x00, //0x000006eb jae LBB0_1024 - //0x000006f1 LBB0_68 - 0x4c, 0x8d, 0x4b, 0x01, //0x000006f1 leaq $1(%rbx), %r9 - 0x4d, 0x89, 0x08, //0x000006f5 movq %r9, (%r8) - 0x41, 0x8a, 0x04, 0x1c, //0x000006f8 movb (%r12,%rbx), %al - 0x3c, 0x22, //0x000006fc cmpb $34, %al - 0x0f, 0x85, 0x15, 0x29, 0x00, 0x00, //0x000006fe jne LBB0_626 - 0x49, 0x8b, 0x45, 0x00, //0x00000704 movq (%r13), %rax - 0x48, 0x89, 0xc1, //0x00000708 movq %rax, %rcx - 0x4c, 0x29, 0xc9, //0x0000070b subq %r9, %rcx - 0x0f, 0x84, 0xf3, 0x4c, 0x00, 0x00, //0x0000070e je LBB0_1101 - 0x48, 0x89, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, //0x00000714 movq %rax, $152(%rsp) - 0x49, 0x8b, 0x47, 0x08, //0x0000071c movq $8(%r15), %rax - 0x48, 0x8b, 0x38, //0x00000720 movq (%rax), %rdi - 0x48, 0x8b, 0x40, 0x08, //0x00000723 movq $8(%rax), %rax - 0x48, 0x89, 0x44, 0x24, 0x30, //0x00000727 movq %rax, $48(%rsp) - 0x4f, 0x8d, 0x1c, 0x0c, //0x0000072c leaq (%r12,%r9), %r11 - 0x48, 0x83, 0xf9, 0x40, //0x00000730 cmpq $64, %rcx - 0x4c, 0x89, 0x5c, 0x24, 0x38, //0x00000734 movq %r11, $56(%rsp) - 0x0f, 0x82, 0x41, 0x11, 0x00, 0x00, //0x00000739 jb LBB0_118 - 0x48, 0x89, 0x7c, 0x24, 0x18, //0x0000073f movq %rdi, $24(%rsp) - 0x4d, 0x89, 0xfb, //0x00000744 movq %r15, %r11 - 0x48, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x00000747 movq $-2, %rdi - 0x48, 0x29, 0xdf, //0x0000074e subq %rbx, %rdi - 0x4c, 0x8d, 0x73, 0x01, //0x00000751 leaq $1(%rbx), %r14 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000755 movq $-1, %r13 - 0x45, 0x31, 0xc0, //0x0000075c xorl %r8d, %r8d - 0x90, //0x0000075f .p2align 4, 0x90 - //0x00000760 LBB0_72 - 0xc4, 0x01, 0x7e, 0x6f, 0x34, 0x34, //0x00000760 vmovdqu (%r12,%r14), %ymm14 - 0xc4, 0x01, 0x7e, 0x6f, 0x7c, 0x34, 0x20, //0x00000766 vmovdqu $32(%r12,%r14), %ymm15 - 0xc5, 0x0d, 0x74, 0xd9, //0x0000076d vpcmpeqb %ymm1, %ymm14, %ymm11 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc3, //0x00000771 vpmovmskb %ymm11, %eax - 0xc5, 0x05, 0x74, 0xd9, //0x00000776 vpcmpeqb %ymm1, %ymm15, %ymm11 - 0xc4, 0x41, 0x7d, 0xd7, 0xd3, //0x0000077a vpmovmskb %ymm11, %r10d - 0xc5, 0x0d, 0x74, 0xda, //0x0000077f vpcmpeqb %ymm2, %ymm14, %ymm11 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf3, //0x00000783 vpmovmskb %ymm11, %esi - 0xc5, 0x05, 0x74, 0xda, //0x00000788 vpcmpeqb %ymm2, %ymm15, %ymm11 - 0xc4, 0x41, 0x7d, 0xd7, 0xfb, //0x0000078c vpmovmskb %ymm11, %r15d - 0x49, 0xc1, 0xe2, 0x20, //0x00000791 shlq $32, %r10 - 0x4c, 0x09, 0xd0, //0x00000795 orq %r10, %rax - 0x49, 0xc1, 0xe7, 0x20, //0x00000798 shlq $32, %r15 - 0x4c, 0x09, 0xfe, //0x0000079c orq %r15, %rsi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000079f jne LBB0_81 - 0x4d, 0x85, 0xc0, //0x000007a5 testq %r8, %r8 - 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000007a8 jne LBB0_83 - 0x45, 0x31, 0xc0, //0x000007ae xorl %r8d, %r8d - 0x48, 0x85, 0xc0, //0x000007b1 testq %rax, %rax - 0x0f, 0x85, 0x86, 0x00, 0x00, 0x00, //0x000007b4 jne LBB0_84 - //0x000007ba LBB0_75 - 0x48, 0x83, 0xc1, 0xc0, //0x000007ba addq $-64, %rcx - 0x48, 0x83, 0xc7, 0xc0, //0x000007be addq $-64, %rdi - 0x49, 0x83, 0xc6, 0x40, //0x000007c2 addq $64, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x000007c6 cmpq $63, %rcx - 0x0f, 0x87, 0x90, 0xff, 0xff, 0xff, //0x000007ca ja LBB0_72 - 0xe9, 0xb2, 0x02, 0x00, 0x00, //0x000007d0 jmp LBB0_76 - //0x000007d5 LBB0_81 - 0x49, 0x83, 0xfd, 0xff, //0x000007d5 cmpq $-1, %r13 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000007d9 jne LBB0_83 - 0x4c, 0x0f, 0xbc, 0xee, //0x000007df bsfq %rsi, %r13 - 0x4d, 0x01, 0xf5, //0x000007e3 addq %r14, %r13 - //0x000007e6 LBB0_83 - 0x4d, 0x89, 0xc2, //0x000007e6 movq %r8, %r10 - 0x49, 0xf7, 0xd2, //0x000007e9 notq %r10 - 0x49, 0x21, 0xf2, //0x000007ec andq %rsi, %r10 - 0x4b, 0x8d, 0x14, 0x12, //0x000007ef leaq (%r10,%r10), %rdx - 0x4c, 0x09, 0xc2, //0x000007f3 orq %r8, %rdx - 0x49, 0x89, 0xd7, //0x000007f6 movq %rdx, %r15 - 0x49, 0xf7, 0xd7, //0x000007f9 notq %r15 - 0x49, 0x21, 0xf7, //0x000007fc andq %rsi, %r15 - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000007ff movabsq $-6148914691236517206, %rsi - 0x49, 0x21, 0xf7, //0x00000809 andq %rsi, %r15 - 0x45, 0x31, 0xc0, //0x0000080c xorl %r8d, %r8d - 0x4d, 0x01, 0xd7, //0x0000080f addq %r10, %r15 - 0x41, 0x0f, 0x92, 0xc0, //0x00000812 setb %r8b - 0x4d, 0x01, 0xff, //0x00000816 addq %r15, %r15 - 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000819 movabsq $6148914691236517205, %rsi - 0x49, 0x31, 0xf7, //0x00000823 xorq %rsi, %r15 - 0x49, 0x21, 0xd7, //0x00000826 andq %rdx, %r15 - 0x49, 0xf7, 0xd7, //0x00000829 notq %r15 - 0x4c, 0x21, 0xf8, //0x0000082c andq %r15, %rax - 0x48, 0x85, 0xc0, //0x0000082f testq %rax, %rax - 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x00000832 je LBB0_75 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000838 .p2align 4, 0x90 - //0x00000840 LBB0_84 - 0x4c, 0x0f, 0xbc, 0xf0, //0x00000840 bsfq %rax, %r14 - 0x49, 0x29, 0xfe, //0x00000844 subq %rdi, %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00000847 movq $8(%rsp), %r8 - 0x4d, 0x89, 0xdf, //0x0000084c movq %r11, %r15 - 0x48, 0x8b, 0x7c, 0x24, 0x18, //0x0000084f movq $24(%rsp), %rdi - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00000854 movq $56(%rsp), %r11 - 0x4c, 0x89, 0xee, //0x00000859 movq %r13, %rsi - //0x0000085c LBB0_85 - 0x4d, 0x85, 0xf6, //0x0000085c testq %r14, %r14 - 0x0f, 0x88, 0xaa, 0x4b, 0x00, 0x00, //0x0000085f js LBB0_1102 - 0x4d, 0x89, 0x30, //0x00000865 movq %r14, (%r8) - 0x48, 0x83, 0xfe, 0xff, //0x00000868 cmpq $-1, %rsi - 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x0000086c je LBB0_88 - 0x4c, 0x39, 0xf6, //0x00000872 cmpq %r14, %rsi - 0x0f, 0x8e, 0x21, 0x10, 0x00, 0x00, //0x00000875 jle LBB0_119 - //0x0000087b LBB0_88 - 0x4c, 0x89, 0xf0, //0x0000087b movq %r14, %rax - 0x48, 0x29, 0xd8, //0x0000087e subq %rbx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00000881 addq $-2, %rax - 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000885 movl $1, %r9d - 0x48, 0x89, 0xc1, //0x0000088b movq %rax, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x0000088e movq $48(%rsp), %rdx - 0x48, 0x09, 0xd1, //0x00000893 orq %rdx, %rcx - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00000896 movq $40(%rsp), %r13 - 0x0f, 0x85, 0x3f, 0x00, 0x00, 0x00, //0x0000089b jne LBB0_89 - 0x49, 0x8b, 0x45, 0x00, //0x000008a1 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x000008a5 cmpq %rax, %r14 - 0x0f, 0x83, 0x62, 0x02, 0x00, 0x00, //0x000008a8 jae LBB0_153 - //0x000008ae LBB0_113 - 0x43, 0x8a, 0x0c, 0x34, //0x000008ae movb (%r12,%r14), %cl - 0x80, 0xf9, 0x0d, //0x000008b2 cmpb $13, %cl - 0x0f, 0x84, 0x55, 0x02, 0x00, 0x00, //0x000008b5 je LBB0_153 - 0x80, 0xf9, 0x20, //0x000008bb cmpb $32, %cl - 0x0f, 0x84, 0x4c, 0x02, 0x00, 0x00, //0x000008be je LBB0_153 - 0x80, 0xc1, 0xf7, //0x000008c4 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x000008c7 cmpb $1, %cl - 0x0f, 0x86, 0x40, 0x02, 0x00, 0x00, //0x000008ca jbe LBB0_153 - 0x4c, 0x89, 0xf1, //0x000008d0 movq %r14, %rcx - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x000008d3 movq $32(%rsp), %r11 - 0xe9, 0xb4, 0x03, 0x00, 0x00, //0x000008d8 jmp LBB0_192 - 0x90, 0x90, 0x90, //0x000008dd .p2align 4, 0x90 - //0x000008e0 LBB0_89 - 0x48, 0x39, 0xd0, //0x000008e0 cmpq %rdx, %rax - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x000008e3 jne LBB0_93 - 0x48, 0x89, 0xd1, //0x000008e9 movq %rdx, %rcx - 0x31, 0xd2, //0x000008ec xorl %edx, %edx - 0x90, 0x90, //0x000008ee .p2align 4, 0x90 - //0x000008f0 LBB0_91 - 0x48, 0x83, 0xf9, 0x20, //0x000008f0 cmpq $32, %rcx - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x000008f4 jb LBB0_94 - 0xc4, 0x41, 0x7e, 0x6f, 0x1c, 0x13, //0x000008fa vmovdqu (%r11,%rdx), %ymm11 - 0xc5, 0x25, 0x74, 0x1c, 0x17, //0x00000900 vpcmpeqb (%rdi,%rdx), %ymm11, %ymm11 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc3, //0x00000905 vpmovmskb %ymm11, %eax - 0x48, 0x83, 0xc1, 0xe0, //0x0000090a addq $-32, %rcx - 0x48, 0x83, 0xc2, 0x20, //0x0000090e addq $32, %rdx - 0x83, 0xf8, 0xff, //0x00000912 cmpl $-1, %eax - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00000915 je LBB0_91 - 0xe9, 0x9b, 0x00, 0x00, 0x00, //0x0000091b jmp LBB0_100 - //0x00000920 .p2align 4, 0x90 - //0x00000920 LBB0_93 - 0x45, 0x31, 0xc9, //0x00000920 xorl %r9d, %r9d - 0x49, 0x8b, 0x45, 0x00, //0x00000923 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00000927 cmpq %rax, %r14 - 0x0f, 0x82, 0x7e, 0xff, 0xff, 0xff, //0x0000092a jb LBB0_113 - 0xe9, 0xdb, 0x01, 0x00, 0x00, //0x00000930 jmp LBB0_153 - //0x00000935 LBB0_94 - 0x41, 0x8d, 0x04, 0x1c, //0x00000935 leal (%r12,%rbx), %eax - 0x01, 0xd0, //0x00000939 addl %edx, %eax - 0x83, 0xc0, 0x01, //0x0000093b addl $1, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x0000093e andl $4095, %eax - 0x3d, 0xe0, 0x0f, 0x00, 0x00, //0x00000943 cmpl $4064, %eax - 0x0f, 0x87, 0x42, 0x00, 0x00, 0x00, //0x00000948 ja LBB0_98 - 0x8d, 0x04, 0x17, //0x0000094e leal (%rdi,%rdx), %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000951 andl $4095, %eax - 0x3d, 0xe1, 0x0f, 0x00, 0x00, //0x00000956 cmpl $4065, %eax - 0x0f, 0x83, 0x2f, 0x00, 0x00, 0x00, //0x0000095b jae LBB0_98 - 0xc4, 0x41, 0x7e, 0x6f, 0x1c, 0x13, //0x00000961 vmovdqu (%r11,%rdx), %ymm11 - 0xc5, 0x25, 0x74, 0x1c, 0x17, //0x00000967 vpcmpeqb (%rdi,%rdx), %ymm11, %ymm11 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc3, //0x0000096c vpmovmskb %ymm11, %eax - 0x83, 0xf8, 0xff, //0x00000971 cmpl $-1, %eax - 0x0f, 0x84, 0xc3, 0x00, 0x00, 0x00, //0x00000974 je LBB0_107 - 0xf7, 0xd0, //0x0000097a notl %eax - 0x0f, 0xbc, 0xc0, //0x0000097c bsfl %eax, %eax - 0xe9, 0x9d, 0x00, 0x00, 0x00, //0x0000097f jmp LBB0_106 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000984 .p2align 4, 0x90 - //0x00000990 LBB0_98 - 0x48, 0x83, 0xf9, 0x10, //0x00000990 cmpq $16, %rcx - 0x0f, 0x82, 0x39, 0x00, 0x00, 0x00, //0x00000994 jb LBB0_102 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x13, //0x0000099a vmovdqu (%r11,%rdx), %xmm6 - 0xc5, 0xc9, 0x74, 0x34, 0x17, //0x000009a0 vpcmpeqb (%rdi,%rdx), %xmm6, %xmm6 - 0xc5, 0xf9, 0xd7, 0xc6, //0x000009a5 vpmovmskb %xmm6, %eax - 0x48, 0x83, 0xc1, 0xf0, //0x000009a9 addq $-16, %rcx - 0x48, 0x83, 0xc2, 0x10, //0x000009ad addq $16, %rdx - 0x66, 0x83, 0xf8, 0xff, //0x000009b1 cmpw $-1, %ax - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000009b5 je LBB0_98 - //0x000009bb LBB0_100 - 0x31, 0xc0, //0x000009bb xorl %eax, %eax - //0x000009bd LBB0_101 - 0x44, 0x0f, 0xb6, 0xc8, //0x000009bd movzbl %al, %r9d - 0x49, 0x8b, 0x45, 0x00, //0x000009c1 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x000009c5 cmpq %rax, %r14 - 0x0f, 0x82, 0xe0, 0xfe, 0xff, 0xff, //0x000009c8 jb LBB0_113 - 0xe9, 0x3d, 0x01, 0x00, 0x00, //0x000009ce jmp LBB0_153 - //0x000009d3 LBB0_102 - 0x41, 0x8d, 0x04, 0x1c, //0x000009d3 leal (%r12,%rbx), %eax - 0x01, 0xd0, //0x000009d7 addl %edx, %eax - 0x83, 0xc0, 0x01, //0x000009d9 addl $1, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x000009dc andl $4095, %eax - 0x3d, 0xf0, 0x0f, 0x00, 0x00, //0x000009e1 cmpl $4080, %eax - 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000009e6 ja LBB0_108 - 0x8d, 0x04, 0x17, //0x000009ec leal (%rdi,%rdx), %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x000009ef andl $4095, %eax - 0x3d, 0xf1, 0x0f, 0x00, 0x00, //0x000009f4 cmpl $4081, %eax - 0x0f, 0x83, 0x56, 0x00, 0x00, 0x00, //0x000009f9 jae LBB0_108 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x13, //0x000009ff vmovdqu (%r11,%rdx), %xmm6 - 0xc5, 0xc9, 0x74, 0x34, 0x17, //0x00000a05 vpcmpeqb (%rdi,%rdx), %xmm6, %xmm6 - 0xc5, 0xf9, 0xd7, 0xc6, //0x00000a0a vpmovmskb %xmm6, %eax - 0x66, 0x83, 0xf8, 0xff, //0x00000a0e cmpw $-1, %ax - 0x0f, 0x84, 0xd9, 0x00, 0x00, 0x00, //0x00000a12 je LBB0_111 - 0xf7, 0xd0, //0x00000a18 notl %eax - 0x66, 0x0f, 0xbc, 0xc0, //0x00000a1a bsfw %ax, %ax - 0x0f, 0xb7, 0xc0, //0x00000a1e movzwl %ax, %eax - //0x00000a21 LBB0_106 - 0x48, 0x39, 0xc1, //0x00000a21 cmpq %rax, %rcx - 0x0f, 0x96, 0xc0, //0x00000a24 setbe %al - 0x44, 0x0f, 0xb6, 0xc8, //0x00000a27 movzbl %al, %r9d - 0x49, 0x8b, 0x45, 0x00, //0x00000a2b movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00000a2f cmpq %rax, %r14 - 0x0f, 0x82, 0x76, 0xfe, 0xff, 0xff, //0x00000a32 jb LBB0_113 - 0xe9, 0xd3, 0x00, 0x00, 0x00, //0x00000a38 jmp LBB0_153 - //0x00000a3d LBB0_107 - 0xb0, 0x01, //0x00000a3d movb $1, %al - 0x44, 0x0f, 0xb6, 0xc8, //0x00000a3f movzbl %al, %r9d - 0x49, 0x8b, 0x45, 0x00, //0x00000a43 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00000a47 cmpq %rax, %r14 - 0x0f, 0x82, 0x5e, 0xfe, 0xff, 0xff, //0x00000a4a jb LBB0_113 - 0xe9, 0xbb, 0x00, 0x00, 0x00, //0x00000a50 jmp LBB0_153 - //0x00000a55 LBB0_108 - 0xb0, 0x01, //0x00000a55 movb $1, %al - 0x48, 0x39, 0x54, 0x24, 0x30, //0x00000a57 cmpq %rdx, $48(%rsp) - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000a5c je LBB0_101 - //0x00000a62 LBB0_109 - 0x41, 0x0f, 0xb6, 0x04, 0x13, //0x00000a62 movzbl (%r11,%rdx), %eax - 0x3a, 0x04, 0x17, //0x00000a67 cmpb (%rdi,%rdx), %al - 0x0f, 0x94, 0xc0, //0x00000a6a sete %al - 0x0f, 0x85, 0x4a, 0xff, 0xff, 0xff, //0x00000a6d jne LBB0_101 - 0x48, 0x83, 0xc2, 0x01, //0x00000a73 addq $1, %rdx - 0x48, 0x39, 0x54, 0x24, 0x30, //0x00000a77 cmpq %rdx, $48(%rsp) - 0x0f, 0x85, 0xe0, 0xff, 0xff, 0xff, //0x00000a7c jne LBB0_109 - 0xe9, 0x36, 0xff, 0xff, 0xff, //0x00000a82 jmp LBB0_101 - //0x00000a87 LBB0_76 - 0x4d, 0x01, 0xe6, //0x00000a87 addq %r12, %r14 - 0x4d, 0x89, 0xdf, //0x00000a8a movq %r11, %r15 - 0x48, 0x8b, 0x7c, 0x24, 0x18, //0x00000a8d movq $24(%rsp), %rdi - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00000a92 movq $56(%rsp), %r11 - 0x4c, 0x89, 0xee, //0x00000a97 movq %r13, %rsi - 0x48, 0x83, 0xf9, 0x20, //0x00000a9a cmpq $32, %rcx - 0x0f, 0x82, 0xdf, 0x12, 0x00, 0x00, //0x00000a9e jb LBB0_365 - //0x00000aa4 LBB0_77 - 0xc4, 0x41, 0x7e, 0x6f, 0x1e, //0x00000aa4 vmovdqu (%r14), %ymm11 - 0xc5, 0x25, 0x74, 0xf1, //0x00000aa9 vpcmpeqb %ymm1, %ymm11, %ymm14 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc6, //0x00000aad vpmovmskb %ymm14, %eax - 0xc5, 0x25, 0x74, 0xda, //0x00000ab2 vpcmpeqb %ymm2, %ymm11, %ymm11 - 0xc4, 0x41, 0x7d, 0xd7, 0xeb, //0x00000ab6 vpmovmskb %ymm11, %r13d - 0x45, 0x85, 0xed, //0x00000abb testl %r13d, %r13d - 0x0f, 0x85, 0x43, 0x12, 0x00, 0x00, //0x00000abe jne LBB0_360 - 0x4d, 0x85, 0xc0, //0x00000ac4 testq %r8, %r8 - 0x0f, 0x85, 0x5f, 0x12, 0x00, 0x00, //0x00000ac7 jne LBB0_362 - 0x45, 0x31, 0xc0, //0x00000acd xorl %r8d, %r8d - 0x48, 0x85, 0xc0, //0x00000ad0 testq %rax, %rax - 0x0f, 0x84, 0xa2, 0x12, 0x00, 0x00, //0x00000ad3 je LBB0_364 - //0x00000ad9 LBB0_80 - 0x48, 0x0f, 0xbc, 0xc0, //0x00000ad9 bsfq %rax, %rax - 0x4d, 0x29, 0xe6, //0x00000add subq %r12, %r14 - 0x49, 0x01, 0xc6, //0x00000ae0 addq %rax, %r14 - 0x49, 0x83, 0xc6, 0x01, //0x00000ae3 addq $1, %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00000ae7 movq $8(%rsp), %r8 - 0xe9, 0x6b, 0xfd, 0xff, 0xff, //0x00000aec jmp LBB0_85 - //0x00000af1 LBB0_111 - 0xb0, 0x01, //0x00000af1 movb $1, %al - 0x44, 0x0f, 0xb6, 0xc8, //0x00000af3 movzbl %al, %r9d - 0x49, 0x8b, 0x45, 0x00, //0x00000af7 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00000afb cmpq %rax, %r14 - 0x0f, 0x82, 0xaa, 0xfd, 0xff, 0xff, //0x00000afe jb LBB0_113 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b04 .p2align 4, 0x90 - //0x00000b10 LBB0_153 - 0x49, 0x8d, 0x4e, 0x01, //0x00000b10 leaq $1(%r14), %rcx - 0x48, 0x39, 0xc1, //0x00000b14 cmpq %rax, %rcx - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00000b17 movq $32(%rsp), %r11 - 0x0f, 0x83, 0x2e, 0x00, 0x00, 0x00, //0x00000b1c jae LBB0_157 - 0x41, 0x8a, 0x1c, 0x0c, //0x00000b22 movb (%r12,%rcx), %bl - 0x80, 0xfb, 0x0d, //0x00000b26 cmpb $13, %bl - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000b29 je LBB0_157 - 0x80, 0xfb, 0x20, //0x00000b2f cmpb $32, %bl - 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x00000b32 je LBB0_157 - 0x80, 0xc3, 0xf7, //0x00000b38 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000b3b cmpb $1, %bl - 0x0f, 0x87, 0x4d, 0x01, 0x00, 0x00, //0x00000b3e ja LBB0_192 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b44 .p2align 4, 0x90 - //0x00000b50 LBB0_157 + 0x0f, 0xbe, 0x1c, 0x31, //0x00000690 movsbl (%rcx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x00000694 cmpl $32, %ebx + 0x0f, 0x87, 0xa6, 0x12, 0x00, 0x00, //0x00000697 ja LBB0_118 + 0x49, 0x0f, 0xa3, 0xda, //0x0000069d btq %rbx, %r10 + 0x0f, 0x83, 0x9c, 0x12, 0x00, 0x00, //0x000006a1 jae LBB0_118 + 0x48, 0x83, 0xc6, 0x01, //0x000006a7 addq $1, %rsi + 0x48, 0x39, 0xf2, //0x000006ab cmpq %rsi, %rdx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000006ae jne LBB0_62 + 0x48, 0x89, 0xf9, //0x000006b4 movq %rdi, %rcx + //0x000006b7 LBB0_66 + 0x4c, 0x29, 0xe1, //0x000006b7 subq %r12, %rcx + 0x48, 0x39, 0xc1, //0x000006ba cmpq %rax, %rcx + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x000006bd jb LBB0_68 + 0xe9, 0x43, 0x48, 0x00, 0x00, //0x000006c3 jmp LBB0_1048 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006c8 .p2align 4, 0x90 + //0x000006d0 LBB0_67 + 0xf7, 0xd6, //0x000006d0 notl %esi + 0x0f, 0xbc, 0xce, //0x000006d2 bsfl %esi, %ecx + 0x48, 0x29, 0xd1, //0x000006d5 subq %rdx, %rcx + 0x48, 0x39, 0xc1, //0x000006d8 cmpq %rax, %rcx + 0x0f, 0x83, 0x2a, 0x48, 0x00, 0x00, //0x000006db jae LBB0_1048 + //0x000006e1 LBB0_68 + 0x4c, 0x8d, 0x59, 0x01, //0x000006e1 leaq $1(%rcx), %r11 + 0x4d, 0x89, 0x19, //0x000006e5 movq %r11, (%r9) + 0x41, 0x8a, 0x04, 0x0c, //0x000006e8 movb (%r12,%rcx), %al + 0x3c, 0x22, //0x000006ec cmpb $34, %al + 0x0f, 0x85, 0xc8, 0x2b, 0x00, 0x00, //0x000006ee jne LBB0_645 + 0x49, 0x8b, 0x5d, 0x00, //0x000006f4 movq (%r13), %rbx + 0x48, 0x89, 0xda, //0x000006f8 movq %rbx, %rdx + 0x4c, 0x29, 0xda, //0x000006fb subq %r11, %rdx + 0x0f, 0x84, 0xf9, 0x4f, 0x00, 0x00, //0x000006fe je LBB0_1126 + 0x49, 0x8b, 0x77, 0x08, //0x00000704 movq $8(%r15), %rsi + 0x48, 0x8b, 0x06, //0x00000708 movq (%rsi), %rax + 0x48, 0x89, 0x44, 0x24, 0x38, //0x0000070b movq %rax, $56(%rsp) + 0x48, 0x8b, 0x46, 0x08, //0x00000710 movq $8(%rsi), %rax + 0x48, 0x89, 0x44, 0x24, 0x30, //0x00000714 movq %rax, $48(%rsp) + 0x4b, 0x8d, 0x3c, 0x1c, //0x00000719 leaq (%r12,%r11), %rdi + 0x48, 0x83, 0xfa, 0x40, //0x0000071d cmpq $64, %rdx + 0x48, 0x89, 0x7c, 0x24, 0x20, //0x00000721 movq %rdi, $32(%rsp) + 0x0f, 0x82, 0x67, 0x12, 0x00, 0x00, //0x00000726 jb LBB0_119 + 0x4d, 0x89, 0xfd, //0x0000072c movq %r15, %r13 + 0x48, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x0000072f movq $-2, %rdi + 0x48, 0x29, 0xcf, //0x00000736 subq %rcx, %rdi + 0x4c, 0x8d, 0x71, 0x01, //0x00000739 leaq $1(%rcx), %r14 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000073d movq $-1, %rax + 0x45, 0x31, 0xc9, //0x00000744 xorl %r9d, %r9d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000747 .p2align 4, 0x90 + //0x00000750 LBB0_72 + 0xc4, 0x01, 0x7e, 0x6f, 0x34, 0x34, //0x00000750 vmovdqu (%r12,%r14), %ymm14 + 0xc4, 0x01, 0x7e, 0x6f, 0x7c, 0x34, 0x20, //0x00000756 vmovdqu $32(%r12,%r14), %ymm15 + 0xc5, 0x0d, 0x74, 0xd9, //0x0000075d vpcmpeqb %ymm1, %ymm14, %ymm11 + 0xc4, 0x41, 0x7d, 0xd7, 0xc3, //0x00000761 vpmovmskb %ymm11, %r8d + 0xc5, 0x05, 0x74, 0xd9, //0x00000766 vpcmpeqb %ymm1, %ymm15, %ymm11 + 0xc4, 0x41, 0x7d, 0xd7, 0xd3, //0x0000076a vpmovmskb %ymm11, %r10d + 0xc5, 0x0d, 0x74, 0xda, //0x0000076f vpcmpeqb %ymm2, %ymm14, %ymm11 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf3, //0x00000773 vpmovmskb %ymm11, %esi + 0xc5, 0x05, 0x74, 0xda, //0x00000778 vpcmpeqb %ymm2, %ymm15, %ymm11 + 0xc4, 0x41, 0x7d, 0xd7, 0xfb, //0x0000077c vpmovmskb %ymm11, %r15d + 0x49, 0xc1, 0xe2, 0x20, //0x00000781 shlq $32, %r10 + 0x4d, 0x09, 0xd0, //0x00000785 orq %r10, %r8 + 0x49, 0xc1, 0xe7, 0x20, //0x00000788 shlq $32, %r15 + 0x4c, 0x09, 0xfe, //0x0000078c orq %r15, %rsi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000078f jne LBB0_81 + 0x4d, 0x85, 0xc9, //0x00000795 testq %r9, %r9 + 0x0f, 0x85, 0x45, 0x00, 0x00, 0x00, //0x00000798 jne LBB0_83 + 0x45, 0x31, 0xc9, //0x0000079e xorl %r9d, %r9d + 0x4d, 0x85, 0xc0, //0x000007a1 testq %r8, %r8 + 0x0f, 0x85, 0xa6, 0x00, 0x00, 0x00, //0x000007a4 jne LBB0_85 + //0x000007aa LBB0_75 + 0x48, 0x83, 0xc2, 0xc0, //0x000007aa addq $-64, %rdx + 0x48, 0x83, 0xc7, 0xc0, //0x000007ae addq $-64, %rdi + 0x49, 0x83, 0xc6, 0x40, //0x000007b2 addq $64, %r14 + 0x48, 0x83, 0xfa, 0x3f, //0x000007b6 cmpq $63, %rdx + 0x0f, 0x87, 0x90, 0xff, 0xff, 0xff, //0x000007ba ja LBB0_72 + 0xe9, 0xdb, 0x02, 0x00, 0x00, //0x000007c0 jmp LBB0_76 + //0x000007c5 LBB0_81 + 0x48, 0x89, 0x9c, 0x24, 0x98, 0x00, 0x00, 0x00, //0x000007c5 movq %rbx, $152(%rsp) + 0x48, 0x83, 0xf8, 0xff, //0x000007cd cmpq $-1, %rax + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x000007d1 jne LBB0_84 + 0x48, 0x0f, 0xbc, 0xc6, //0x000007d7 bsfq %rsi, %rax + 0x4c, 0x01, 0xf0, //0x000007db addq %r14, %rax + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x000007de jmp LBB0_84 + //0x000007e3 LBB0_83 + 0x48, 0x89, 0x9c, 0x24, 0x98, 0x00, 0x00, 0x00, //0x000007e3 movq %rbx, $152(%rsp) + //0x000007eb LBB0_84 + 0x4d, 0x89, 0xca, //0x000007eb movq %r9, %r10 + 0x49, 0xf7, 0xd2, //0x000007ee notq %r10 + 0x49, 0x21, 0xf2, //0x000007f1 andq %rsi, %r10 + 0x4b, 0x8d, 0x1c, 0x12, //0x000007f4 leaq (%r10,%r10), %rbx + 0x4c, 0x09, 0xcb, //0x000007f8 orq %r9, %rbx + 0x49, 0x89, 0xdf, //0x000007fb movq %rbx, %r15 + 0x49, 0xf7, 0xd7, //0x000007fe notq %r15 + 0x49, 0x21, 0xf7, //0x00000801 andq %rsi, %r15 + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000804 movabsq $-6148914691236517206, %rsi + 0x49, 0x21, 0xf7, //0x0000080e andq %rsi, %r15 + 0x45, 0x31, 0xc9, //0x00000811 xorl %r9d, %r9d + 0x4d, 0x01, 0xd7, //0x00000814 addq %r10, %r15 + 0x41, 0x0f, 0x92, 0xc1, //0x00000817 setb %r9b + 0x4d, 0x01, 0xff, //0x0000081b addq %r15, %r15 + 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000081e movabsq $6148914691236517205, %rsi + 0x49, 0x31, 0xf7, //0x00000828 xorq %rsi, %r15 + 0x49, 0x21, 0xdf, //0x0000082b andq %rbx, %r15 + 0x49, 0xf7, 0xd7, //0x0000082e notq %r15 + 0x4d, 0x21, 0xf8, //0x00000831 andq %r15, %r8 + 0x48, 0x8b, 0x9c, 0x24, 0x98, 0x00, 0x00, 0x00, //0x00000834 movq $152(%rsp), %rbx + 0x4d, 0x85, 0xc0, //0x0000083c testq %r8, %r8 + 0x0f, 0x84, 0x65, 0xff, 0xff, 0xff, //0x0000083f je LBB0_75 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000845 .p2align 4, 0x90 + //0x00000850 LBB0_85 + 0x4d, 0x0f, 0xbc, 0xf0, //0x00000850 bsfq %r8, %r14 + 0x49, 0x29, 0xfe, //0x00000854 subq %rdi, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00000857 movq $8(%rsp), %r9 + 0x4d, 0x89, 0xef, //0x0000085c movq %r13, %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000085f movabsq $4294977024, %r10 + //0x00000869 LBB0_86 + 0x4d, 0x85, 0xf6, //0x00000869 testq %r14, %r14 + 0x0f, 0x88, 0x8e, 0x4e, 0x00, 0x00, //0x0000086c js LBB0_1127 + 0x4d, 0x89, 0x31, //0x00000872 movq %r14, (%r9) + 0x48, 0x83, 0xf8, 0xff, //0x00000875 cmpq $-1, %rax + 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x00000879 je LBB0_89 + 0x4c, 0x39, 0xf0, //0x0000087f cmpq %r14, %rax + 0x0f, 0x8e, 0x2a, 0x11, 0x00, 0x00, //0x00000882 jle LBB0_120 + //0x00000888 LBB0_89 + 0x4c, 0x89, 0xf6, //0x00000888 movq %r14, %rsi + 0x48, 0x29, 0xce, //0x0000088b subq %rcx, %rsi + 0x48, 0x83, 0xc6, 0xfe, //0x0000088e addq $-2, %rsi + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00000892 movl $1, %edx + 0x48, 0x89, 0xf7, //0x00000897 movq %rsi, %rdi + 0x4c, 0x8b, 0x44, 0x24, 0x30, //0x0000089a movq $48(%rsp), %r8 + 0x4c, 0x09, 0xc7, //0x0000089f orq %r8, %rdi + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x000008a2 movq $24(%rsp), %r13 + 0x0f, 0x85, 0x43, 0x00, 0x00, 0x00, //0x000008a7 jne LBB0_90 + 0x49, 0x8b, 0x45, 0x00, //0x000008ad movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x000008b1 cmpq %rax, %r14 + 0x0f, 0x83, 0x66, 0x02, 0x00, 0x00, //0x000008b4 jae LBB0_171 + //0x000008ba LBB0_114 + 0x43, 0x8a, 0x0c, 0x34, //0x000008ba movb (%r12,%r14), %cl + 0x80, 0xf9, 0x0d, //0x000008be cmpb $13, %cl + 0x0f, 0x84, 0x59, 0x02, 0x00, 0x00, //0x000008c1 je LBB0_171 + 0x80, 0xf9, 0x20, //0x000008c7 cmpb $32, %cl + 0x0f, 0x84, 0x50, 0x02, 0x00, 0x00, //0x000008ca je LBB0_171 + 0x80, 0xc1, 0xf7, //0x000008d0 addb $-9, %cl + 0x80, 0xf9, 0x01, //0x000008d3 cmpb $1, %cl + 0x0f, 0x86, 0x44, 0x02, 0x00, 0x00, //0x000008d6 jbe LBB0_171 + 0x4c, 0x89, 0xf1, //0x000008dc movq %r14, %rcx + 0xe9, 0x9d, 0x03, 0x00, 0x00, //0x000008df jmp LBB0_196 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008e4 .p2align 4, 0x90 + //0x000008f0 LBB0_90 + 0x4c, 0x39, 0xc6, //0x000008f0 cmpq %r8, %rsi + 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x000008f3 jne LBB0_94 + 0x31, 0xff, //0x000008f9 xorl %edi, %edi + 0x4c, 0x89, 0xc2, //0x000008fb movq %r8, %rdx + 0x48, 0x8b, 0x44, 0x24, 0x38, //0x000008fe movq $56(%rsp), %rax + 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00000903 movq $32(%rsp), %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000908 .p2align 4, 0x90 + //0x00000910 LBB0_92 + 0x48, 0x83, 0xfa, 0x20, //0x00000910 cmpq $32, %rdx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00000914 jb LBB0_95 + 0xc5, 0x7e, 0x6f, 0x1c, 0x3b, //0x0000091a vmovdqu (%rbx,%rdi), %ymm11 + 0xc5, 0x25, 0x74, 0x1c, 0x38, //0x0000091f vpcmpeqb (%rax,%rdi), %ymm11, %ymm11 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf3, //0x00000924 vpmovmskb %ymm11, %esi + 0x48, 0x83, 0xc2, 0xe0, //0x00000929 addq $-32, %rdx + 0x48, 0x83, 0xc7, 0x20, //0x0000092d addq $32, %rdi + 0x83, 0xfe, 0xff, //0x00000931 cmpl $-1, %esi + 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x00000934 je LBB0_92 + 0xe9, 0x9b, 0x00, 0x00, 0x00, //0x0000093a jmp LBB0_101 + 0x90, //0x0000093f .p2align 4, 0x90 + //0x00000940 LBB0_94 + 0x31, 0xd2, //0x00000940 xorl %edx, %edx + 0x49, 0x8b, 0x45, 0x00, //0x00000942 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00000946 cmpq %rax, %r14 + 0x0f, 0x82, 0x6b, 0xff, 0xff, 0xff, //0x00000949 jb LBB0_114 + 0xe9, 0xcc, 0x01, 0x00, 0x00, //0x0000094f jmp LBB0_171 + //0x00000954 LBB0_95 + 0x41, 0x8d, 0x34, 0x0c, //0x00000954 leal (%r12,%rcx), %esi + 0x01, 0xfe, //0x00000958 addl %edi, %esi + 0x83, 0xc6, 0x01, //0x0000095a addl $1, %esi + 0x81, 0xe6, 0xff, 0x0f, 0x00, 0x00, //0x0000095d andl $4095, %esi + 0x81, 0xfe, 0xe0, 0x0f, 0x00, 0x00, //0x00000963 cmpl $4064, %esi + 0x0f, 0x87, 0x41, 0x00, 0x00, 0x00, //0x00000969 ja LBB0_99 + 0x8d, 0x34, 0x38, //0x0000096f leal (%rax,%rdi), %esi + 0x81, 0xe6, 0xff, 0x0f, 0x00, 0x00, //0x00000972 andl $4095, %esi + 0x81, 0xfe, 0xe1, 0x0f, 0x00, 0x00, //0x00000978 cmpl $4065, %esi + 0x0f, 0x83, 0x2c, 0x00, 0x00, 0x00, //0x0000097e jae LBB0_99 + 0xc5, 0x7e, 0x6f, 0x1c, 0x3b, //0x00000984 vmovdqu (%rbx,%rdi), %ymm11 + 0xc5, 0x25, 0x74, 0x1c, 0x38, //0x00000989 vpcmpeqb (%rax,%rdi), %ymm11, %ymm11 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc3, //0x0000098e vpmovmskb %ymm11, %eax + 0x83, 0xf8, 0xff, //0x00000993 cmpl $-1, %eax + 0x0f, 0x84, 0xc0, 0x00, 0x00, 0x00, //0x00000996 je LBB0_108 + 0xf7, 0xd0, //0x0000099c notl %eax + 0x0f, 0xbc, 0xc0, //0x0000099e bsfl %eax, %eax + 0xe9, 0x9b, 0x00, 0x00, 0x00, //0x000009a1 jmp LBB0_107 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000009a6 .p2align 4, 0x90 + //0x000009b0 LBB0_99 + 0x48, 0x83, 0xfa, 0x10, //0x000009b0 cmpq $16, %rdx + 0x0f, 0x82, 0x37, 0x00, 0x00, 0x00, //0x000009b4 jb LBB0_103 + 0xc5, 0xfa, 0x6f, 0x34, 0x3b, //0x000009ba vmovdqu (%rbx,%rdi), %xmm6 + 0xc5, 0xc9, 0x74, 0x34, 0x38, //0x000009bf vpcmpeqb (%rax,%rdi), %xmm6, %xmm6 + 0xc5, 0xf9, 0xd7, 0xf6, //0x000009c4 vpmovmskb %xmm6, %esi + 0x48, 0x83, 0xc2, 0xf0, //0x000009c8 addq $-16, %rdx + 0x48, 0x83, 0xc7, 0x10, //0x000009cc addq $16, %rdi + 0x66, 0x83, 0xfe, 0xff, //0x000009d0 cmpw $-1, %si + 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x000009d4 je LBB0_99 + //0x000009da LBB0_101 + 0x31, 0xc9, //0x000009da xorl %ecx, %ecx + //0x000009dc LBB0_102 + 0x0f, 0xb6, 0xd1, //0x000009dc movzbl %cl, %edx + 0x49, 0x8b, 0x45, 0x00, //0x000009df movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x000009e3 cmpq %rax, %r14 + 0x0f, 0x82, 0xce, 0xfe, 0xff, 0xff, //0x000009e6 jb LBB0_114 + 0xe9, 0x2f, 0x01, 0x00, 0x00, //0x000009ec jmp LBB0_171 + //0x000009f1 LBB0_103 + 0x44, 0x01, 0xe1, //0x000009f1 addl %r12d, %ecx + 0x01, 0xf9, //0x000009f4 addl %edi, %ecx + 0x83, 0xc1, 0x01, //0x000009f6 addl $1, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000009f9 andl $4095, %ecx + 0x81, 0xf9, 0xf0, 0x0f, 0x00, 0x00, //0x000009ff cmpl $4080, %ecx + 0x0f, 0x87, 0x68, 0x00, 0x00, 0x00, //0x00000a05 ja LBB0_109 + 0x8d, 0x0c, 0x38, //0x00000a0b leal (%rax,%rdi), %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00000a0e andl $4095, %ecx + 0x81, 0xf9, 0xf1, 0x0f, 0x00, 0x00, //0x00000a14 cmpl $4081, %ecx + 0x0f, 0x83, 0x53, 0x00, 0x00, 0x00, //0x00000a1a jae LBB0_109 + 0xc5, 0xfa, 0x6f, 0x34, 0x3b, //0x00000a20 vmovdqu (%rbx,%rdi), %xmm6 + 0xc5, 0xc9, 0x74, 0x34, 0x38, //0x00000a25 vpcmpeqb (%rax,%rdi), %xmm6, %xmm6 + 0xc5, 0xf9, 0xd7, 0xc6, //0x00000a2a vpmovmskb %xmm6, %eax + 0x66, 0x83, 0xf8, 0xff, //0x00000a2e cmpw $-1, %ax + 0x0f, 0x84, 0xd4, 0x00, 0x00, 0x00, //0x00000a32 je LBB0_112 + 0xf7, 0xd0, //0x00000a38 notl %eax + 0x66, 0x0f, 0xbc, 0xc0, //0x00000a3a bsfw %ax, %ax + 0x0f, 0xb7, 0xc0, //0x00000a3e movzwl %ax, %eax + //0x00000a41 LBB0_107 + 0x48, 0x39, 0xc2, //0x00000a41 cmpq %rax, %rdx + 0x0f, 0x96, 0xc1, //0x00000a44 setbe %cl + 0x0f, 0xb6, 0xd1, //0x00000a47 movzbl %cl, %edx + 0x49, 0x8b, 0x45, 0x00, //0x00000a4a movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00000a4e cmpq %rax, %r14 + 0x0f, 0x82, 0x63, 0xfe, 0xff, 0xff, //0x00000a51 jb LBB0_114 + 0xe9, 0xc4, 0x00, 0x00, 0x00, //0x00000a57 jmp LBB0_171 + //0x00000a5c LBB0_108 + 0xb1, 0x01, //0x00000a5c movb $1, %cl + 0x0f, 0xb6, 0xd1, //0x00000a5e movzbl %cl, %edx + 0x49, 0x8b, 0x45, 0x00, //0x00000a61 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00000a65 cmpq %rax, %r14 + 0x0f, 0x82, 0x4c, 0xfe, 0xff, 0xff, //0x00000a68 jb LBB0_114 + 0xe9, 0xad, 0x00, 0x00, 0x00, //0x00000a6e jmp LBB0_171 + //0x00000a73 LBB0_109 + 0xb1, 0x01, //0x00000a73 movb $1, %cl + 0x49, 0x39, 0xf8, //0x00000a75 cmpq %rdi, %r8 + 0x0f, 0x84, 0x5e, 0xff, 0xff, 0xff, //0x00000a78 je LBB0_102 + //0x00000a7e LBB0_110 + 0x0f, 0xb6, 0x0c, 0x3b, //0x00000a7e movzbl (%rbx,%rdi), %ecx + 0x3a, 0x0c, 0x38, //0x00000a82 cmpb (%rax,%rdi), %cl + 0x0f, 0x94, 0xc1, //0x00000a85 sete %cl + 0x0f, 0x85, 0x4e, 0xff, 0xff, 0xff, //0x00000a88 jne LBB0_102 + 0x48, 0x83, 0xc7, 0x01, //0x00000a8e addq $1, %rdi + 0x49, 0x39, 0xf8, //0x00000a92 cmpq %rdi, %r8 + 0x0f, 0x85, 0xe3, 0xff, 0xff, 0xff, //0x00000a95 jne LBB0_110 + 0xe9, 0x3c, 0xff, 0xff, 0xff, //0x00000a9b jmp LBB0_102 + //0x00000aa0 LBB0_76 + 0x4d, 0x01, 0xe6, //0x00000aa0 addq %r12, %r14 + 0x4d, 0x89, 0xef, //0x00000aa3 movq %r13, %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000aa6 movabsq $4294977024, %r10 + 0x49, 0x89, 0xdd, //0x00000ab0 movq %rbx, %r13 + 0x48, 0x83, 0xfa, 0x20, //0x00000ab3 cmpq $32, %rdx + 0x0f, 0x82, 0x4c, 0x14, 0x00, 0x00, //0x00000ab7 jb LBB0_378 + //0x00000abd LBB0_77 + 0xc4, 0x41, 0x7e, 0x6f, 0x1e, //0x00000abd vmovdqu (%r14), %ymm11 + 0xc5, 0x25, 0x74, 0xf1, //0x00000ac2 vpcmpeqb %ymm1, %ymm11, %ymm14 + 0xc4, 0xc1, 0x7d, 0xd7, 0xde, //0x00000ac6 vpmovmskb %ymm14, %ebx + 0xc5, 0x25, 0x74, 0xda, //0x00000acb vpcmpeqb %ymm2, %ymm11, %ymm11 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf3, //0x00000acf vpmovmskb %ymm11, %esi + 0x85, 0xf6, //0x00000ad4 testl %esi, %esi + 0x0f, 0x85, 0xaf, 0x13, 0x00, 0x00, //0x00000ad6 jne LBB0_373 + 0x4d, 0x85, 0xc9, //0x00000adc testq %r9, %r9 + 0x0f, 0x85, 0xc8, 0x13, 0x00, 0x00, //0x00000adf jne LBB0_375 + 0x45, 0x31, 0xc9, //0x00000ae5 xorl %r9d, %r9d + 0x48, 0x85, 0xdb, //0x00000ae8 testq %rbx, %rbx + 0x0f, 0x84, 0x10, 0x14, 0x00, 0x00, //0x00000aeb je LBB0_377 + //0x00000af1 LBB0_80 + 0x48, 0x0f, 0xbc, 0xd3, //0x00000af1 bsfq %rbx, %rdx + 0x4d, 0x29, 0xe6, //0x00000af5 subq %r12, %r14 + 0x49, 0x01, 0xd6, //0x00000af8 addq %rdx, %r14 + 0x49, 0x83, 0xc6, 0x01, //0x00000afb addq $1, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00000aff movq $8(%rsp), %r9 + 0x4c, 0x89, 0xeb, //0x00000b04 movq %r13, %rbx + 0xe9, 0x5d, 0xfd, 0xff, 0xff, //0x00000b07 jmp LBB0_86 + //0x00000b0c LBB0_112 + 0xb1, 0x01, //0x00000b0c movb $1, %cl + 0x0f, 0xb6, 0xd1, //0x00000b0e movzbl %cl, %edx + 0x49, 0x8b, 0x45, 0x00, //0x00000b11 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00000b15 cmpq %rax, %r14 + 0x0f, 0x82, 0x9c, 0xfd, 0xff, 0xff, //0x00000b18 jb LBB0_114 + 0x90, 0x90, //0x00000b1e .p2align 4, 0x90 + //0x00000b20 LBB0_171 + 0x49, 0x8d, 0x4e, 0x01, //0x00000b20 leaq $1(%r14), %rcx + 0x48, 0x39, 0xc1, //0x00000b24 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b27 jae LBB0_175 + 0x41, 0x8a, 0x1c, 0x0c, //0x00000b2d movb (%r12,%rcx), %bl + 0x80, 0xfb, 0x0d, //0x00000b31 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000b34 je LBB0_175 + 0x80, 0xfb, 0x20, //0x00000b3a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000b3d je LBB0_175 + 0x80, 0xc3, 0xf7, //0x00000b43 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000b46 cmpb $1, %bl + 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x00000b49 ja LBB0_196 + 0x90, //0x00000b4f .p2align 4, 0x90 + //0x00000b50 LBB0_175 0x49, 0x8d, 0x4e, 0x02, //0x00000b50 leaq $2(%r14), %rcx 0x48, 0x39, 0xc1, //0x00000b54 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b57 jae LBB0_161 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b57 jae LBB0_179 0x41, 0x8a, 0x1c, 0x0c, //0x00000b5d movb (%r12,%rcx), %bl 0x80, 0xfb, 0x0d, //0x00000b61 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000b64 je LBB0_161 + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000b64 je LBB0_179 0x80, 0xfb, 0x20, //0x00000b6a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000b6d je LBB0_161 + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000b6d je LBB0_179 0x80, 0xc3, 0xf7, //0x00000b73 addb $-9, %bl 0x80, 0xfb, 0x01, //0x00000b76 cmpb $1, %bl - 0x0f, 0x87, 0x12, 0x01, 0x00, 0x00, //0x00000b79 ja LBB0_192 + 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x00000b79 ja LBB0_196 0x90, //0x00000b7f .p2align 4, 0x90 - //0x00000b80 LBB0_161 + //0x00000b80 LBB0_179 0x49, 0x8d, 0x4e, 0x03, //0x00000b80 leaq $3(%r14), %rcx 0x48, 0x39, 0xc1, //0x00000b84 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b87 jae LBB0_165 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b87 jae LBB0_183 0x41, 0x8a, 0x1c, 0x0c, //0x00000b8d movb (%r12,%rcx), %bl 0x80, 0xfb, 0x0d, //0x00000b91 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000b94 je LBB0_165 + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000b94 je LBB0_183 0x80, 0xfb, 0x20, //0x00000b9a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000b9d je LBB0_165 + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000b9d je LBB0_183 0x80, 0xc3, 0xf7, //0x00000ba3 addb $-9, %bl 0x80, 0xfb, 0x01, //0x00000ba6 cmpb $1, %bl - 0x0f, 0x87, 0xe2, 0x00, 0x00, 0x00, //0x00000ba9 ja LBB0_192 + 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x00000ba9 ja LBB0_196 0x90, //0x00000baf .p2align 4, 0x90 - //0x00000bb0 LBB0_165 + //0x00000bb0 LBB0_183 0x49, 0x8d, 0x4e, 0x04, //0x00000bb0 leaq $4(%r14), %rcx - 0x48, 0x89, 0xc6, //0x00000bb4 movq %rax, %rsi - 0x48, 0x29, 0xce, //0x00000bb7 subq %rcx, %rsi - 0x0f, 0x86, 0x13, 0x3f, 0x00, 0x00, //0x00000bba jbe LBB0_1023 - 0x48, 0x83, 0xfe, 0x20, //0x00000bc0 cmpq $32, %rsi - 0x0f, 0x82, 0x87, 0x10, 0x00, 0x00, //0x00000bc4 jb LBB0_351 - 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x00000bca movq $-4, %rsi - 0x4c, 0x29, 0xf6, //0x00000bd1 subq %r14, %rsi + 0x48, 0x89, 0xc7, //0x00000bb4 movq %rax, %rdi + 0x48, 0x29, 0xcf, //0x00000bb7 subq %rcx, %rdi + 0x0f, 0x86, 0xf4, 0x26, 0x00, 0x00, //0x00000bba jbe LBB0_1047 + 0x48, 0x83, 0xff, 0x20, //0x00000bc0 cmpq $32, %rdi + 0x0f, 0x82, 0x14, 0x12, 0x00, 0x00, //0x00000bc4 jb LBB0_366 + 0x48, 0xc7, 0xc7, 0xfc, 0xff, 0xff, 0xff, //0x00000bca movq $-4, %rdi + 0x4c, 0x29, 0xf7, //0x00000bd1 subq %r14, %rdi 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bd4 .p2align 4, 0x90 - //0x00000be0 LBB0_168 + //0x00000be0 LBB0_186 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x00000be0 vmovdqu (%r12,%rcx), %ymm6 0xc4, 0x62, 0x7d, 0x00, 0xde, //0x00000be6 vpshufb %ymm6, %ymm0, %ymm11 0xc5, 0xa5, 0x74, 0xf6, //0x00000beb vpcmpeqb %ymm6, %ymm11, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x00000bef vpmovmskb %ymm6, %edi - 0x83, 0xff, 0xff, //0x00000bf3 cmpl $-1, %edi - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000bf6 jne LBB0_191 + 0xc5, 0xfd, 0xd7, 0xf6, //0x00000bef vpmovmskb %ymm6, %esi + 0x83, 0xfe, 0xff, //0x00000bf3 cmpl $-1, %esi + 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00000bf6 jne LBB0_195 0x48, 0x83, 0xc1, 0x20, //0x00000bfc addq $32, %rcx - 0x48, 0x8d, 0x3c, 0x30, //0x00000c00 leaq (%rax,%rsi), %rdi - 0x48, 0x83, 0xc7, 0xe0, //0x00000c04 addq $-32, %rdi - 0x48, 0x83, 0xc6, 0xe0, //0x00000c08 addq $-32, %rsi - 0x48, 0x83, 0xff, 0x1f, //0x00000c0c cmpq $31, %rdi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000c10 ja LBB0_168 + 0x48, 0x8d, 0x34, 0x38, //0x00000c00 leaq (%rax,%rdi), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00000c04 addq $-32, %rsi + 0x48, 0x83, 0xc7, 0xe0, //0x00000c08 addq $-32, %rdi + 0x48, 0x83, 0xfe, 0x1f, //0x00000c0c cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000c10 ja LBB0_186 0x4c, 0x89, 0xe1, //0x00000c16 movq %r12, %rcx - 0x48, 0x29, 0xf1, //0x00000c19 subq %rsi, %rcx - 0x48, 0x01, 0xc6, //0x00000c1c addq %rax, %rsi - 0x48, 0x85, 0xf6, //0x00000c1f testq %rsi, %rsi - 0x0f, 0x84, 0x3e, 0x00, 0x00, 0x00, //0x00000c22 je LBB0_176 - //0x00000c28 LBB0_171 - 0x4c, 0x8d, 0x04, 0x31, //0x00000c28 leaq (%rcx,%rsi), %r8 - 0x31, 0xff, //0x00000c2c xorl %edi, %edi + 0x48, 0x29, 0xf9, //0x00000c19 subq %rdi, %rcx + 0x48, 0x01, 0xc7, //0x00000c1c addq %rax, %rdi + 0x48, 0x85, 0xff, //0x00000c1f testq %rdi, %rdi + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00000c22 je LBB0_194 + //0x00000c28 LBB0_189 + 0x4c, 0x8d, 0x04, 0x39, //0x00000c28 leaq (%rcx,%rdi), %r8 + 0x31, 0xf6, //0x00000c2c xorl %esi, %esi 0x90, 0x90, //0x00000c2e .p2align 4, 0x90 - //0x00000c30 LBB0_172 - 0x0f, 0xbe, 0x1c, 0x39, //0x00000c30 movsbl (%rcx,%rdi), %ebx + //0x00000c30 LBB0_190 + 0x0f, 0xbe, 0x1c, 0x31, //0x00000c30 movsbl (%rcx,%rsi), %ebx 0x83, 0xfb, 0x20, //0x00000c34 cmpl $32, %ebx - 0x0f, 0x87, 0x02, 0x0c, 0x00, 0x00, //0x00000c37 ja LBB0_348 - 0x48, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c3d movabsq $4294977024, %rdx - 0x48, 0x0f, 0xa3, 0xda, //0x00000c47 btq %rbx, %rdx - 0x0f, 0x83, 0xee, 0x0b, 0x00, 0x00, //0x00000c4b jae LBB0_348 - 0x48, 0x83, 0xc7, 0x01, //0x00000c51 addq $1, %rdi - 0x48, 0x39, 0xfe, //0x00000c55 cmpq %rdi, %rsi - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x00000c58 jne LBB0_172 - 0x4c, 0x89, 0xc1, //0x00000c5e movq %r8, %rcx - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00000c61 movq $8(%rsp), %r8 - //0x00000c66 LBB0_176 - 0x4c, 0x29, 0xe1, //0x00000c66 subq %r12, %rcx - 0x48, 0x39, 0xc1, //0x00000c69 cmpq %rax, %rcx - 0x0f, 0x82, 0x1f, 0x00, 0x00, 0x00, //0x00000c6c jb LBB0_192 - 0xe9, 0x10, 0x40, 0x00, 0x00, //0x00000c72 jmp LBB0_1024 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c77 .p2align 4, 0x90 - //0x00000c80 LBB0_191 - 0xf7, 0xd7, //0x00000c80 notl %edi - 0x0f, 0xbc, 0xcf, //0x00000c82 bsfl %edi, %ecx - 0x48, 0x29, 0xf1, //0x00000c85 subq %rsi, %rcx - 0x48, 0x39, 0xc1, //0x00000c88 cmpq %rax, %rcx - 0x0f, 0x83, 0xf6, 0x3f, 0x00, 0x00, //0x00000c8b jae LBB0_1024 - //0x00000c91 LBB0_192 - 0x4c, 0x8d, 0x71, 0x01, //0x00000c91 leaq $1(%rcx), %r14 - 0x4d, 0x89, 0x30, //0x00000c95 movq %r14, (%r8) - 0x41, 0x80, 0x3c, 0x0c, 0x3a, //0x00000c98 cmpb $58, (%r12,%rcx) - 0x0f, 0x85, 0xe4, 0x3f, 0x00, 0x00, //0x00000c9d jne LBB0_1024 - 0x4d, 0x85, 0xc9, //0x00000ca3 testq %r9, %r9 - 0x0f, 0x85, 0xd4, 0x20, 0x00, 0x00, //0x00000ca6 jne LBB0_519 - 0x49, 0x8b, 0x55, 0x00, //0x00000cac movq (%r13), %rdx - 0x49, 0x39, 0xd6, //0x00000cb0 cmpq %rdx, %r14 - 0x0f, 0x83, 0x27, 0x00, 0x00, 0x00, //0x00000cb3 jae LBB0_199 - 0x43, 0x8a, 0x04, 0x34, //0x00000cb9 movb (%r12,%r14), %al - 0x3c, 0x0d, //0x00000cbd cmpb $13, %al - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000cbf je LBB0_199 - 0x3c, 0x20, //0x00000cc5 cmpb $32, %al - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000cc7 je LBB0_199 - 0x04, 0xf7, //0x00000ccd addb $-9, %al - 0x3c, 0x01, //0x00000ccf cmpb $1, %al - 0x0f, 0x86, 0x09, 0x00, 0x00, 0x00, //0x00000cd1 jbe LBB0_199 - 0x4c, 0x89, 0xf0, //0x00000cd7 movq %r14, %rax - 0xe9, 0x62, 0x01, 0x00, 0x00, //0x00000cda jmp LBB0_224 - 0x90, //0x00000cdf .p2align 4, 0x90 - //0x00000ce0 LBB0_199 - 0x48, 0x8d, 0x41, 0x02, //0x00000ce0 leaq $2(%rcx), %rax - 0x48, 0x39, 0xd0, //0x00000ce4 cmpq %rdx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000ce7 jae LBB0_203 - 0x41, 0x8a, 0x1c, 0x04, //0x00000ced movb (%r12,%rax), %bl - 0x80, 0xfb, 0x0d, //0x00000cf1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000cf4 je LBB0_203 - 0x80, 0xfb, 0x20, //0x00000cfa cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000cfd je LBB0_203 - 0x80, 0xc3, 0xf7, //0x00000d03 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000d06 cmpb $1, %bl - 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x00000d09 ja LBB0_224 - 0x90, //0x00000d0f .p2align 4, 0x90 - //0x00000d10 LBB0_203 - 0x48, 0x8d, 0x41, 0x03, //0x00000d10 leaq $3(%rcx), %rax - 0x48, 0x39, 0xd0, //0x00000d14 cmpq %rdx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000d17 jae LBB0_207 - 0x41, 0x8a, 0x1c, 0x04, //0x00000d1d movb (%r12,%rax), %bl - 0x80, 0xfb, 0x0d, //0x00000d21 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000d24 je LBB0_207 - 0x80, 0xfb, 0x20, //0x00000d2a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000d2d je LBB0_207 - 0x80, 0xc3, 0xf7, //0x00000d33 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000d36 cmpb $1, %bl - 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x00000d39 ja LBB0_224 - 0x90, //0x00000d3f .p2align 4, 0x90 - //0x00000d40 LBB0_207 - 0x48, 0x8d, 0x41, 0x04, //0x00000d40 leaq $4(%rcx), %rax - 0x48, 0x39, 0xd0, //0x00000d44 cmpq %rdx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000d47 jae LBB0_211 - 0x41, 0x8a, 0x1c, 0x04, //0x00000d4d movb (%r12,%rax), %bl - 0x80, 0xfb, 0x0d, //0x00000d51 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000d54 je LBB0_211 - 0x80, 0xfb, 0x20, //0x00000d5a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000d5d je LBB0_211 - 0x80, 0xc3, 0xf7, //0x00000d63 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000d66 cmpb $1, %bl - 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x00000d69 ja LBB0_224 - 0x90, //0x00000d6f .p2align 4, 0x90 - //0x00000d70 LBB0_211 - 0x48, 0x8d, 0x41, 0x05, //0x00000d70 leaq $5(%rcx), %rax - 0x48, 0x89, 0xd6, //0x00000d74 movq %rdx, %rsi - 0x48, 0x29, 0xc6, //0x00000d77 subq %rax, %rsi - 0x0f, 0x86, 0xb0, 0x05, 0x00, 0x00, //0x00000d7a jbe LBB0_282 - 0x48, 0x83, 0xfe, 0x20, //0x00000d80 cmpq $32, %rsi - 0x0f, 0x82, 0x2c, 0x0f, 0x00, 0x00, //0x00000d84 jb LBB0_354 - 0x48, 0xc7, 0xc6, 0xfb, 0xff, 0xff, 0xff, //0x00000d8a movq $-5, %rsi - 0x48, 0x29, 0xce, //0x00000d91 subq %rcx, %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d94 .p2align 4, 0x90 - //0x00000da0 LBB0_214 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x04, //0x00000da0 vmovdqu (%r12,%rax), %ymm6 - 0xc4, 0x62, 0x7d, 0x00, 0xde, //0x00000da6 vpshufb %ymm6, %ymm0, %ymm11 - 0xc5, 0xa5, 0x74, 0xf6, //0x00000dab vpcmpeqb %ymm6, %ymm11, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x00000daf vpmovmskb %ymm6, %ecx - 0x83, 0xf9, 0xff, //0x00000db3 cmpl $-1, %ecx - 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00000db6 jne LBB0_223 - 0x48, 0x83, 0xc0, 0x20, //0x00000dbc addq $32, %rax - 0x48, 0x8d, 0x0c, 0x32, //0x00000dc0 leaq (%rdx,%rsi), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00000dc4 addq $-32, %rcx - 0x48, 0x83, 0xc6, 0xe0, //0x00000dc8 addq $-32, %rsi - 0x48, 0x83, 0xf9, 0x1f, //0x00000dcc cmpq $31, %rcx - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000dd0 ja LBB0_214 - 0x4c, 0x89, 0xe0, //0x00000dd6 movq %r12, %rax - 0x48, 0x29, 0xf0, //0x00000dd9 subq %rsi, %rax - 0x48, 0x01, 0xd6, //0x00000ddc addq %rdx, %rsi - 0x48, 0x85, 0xf6, //0x00000ddf testq %rsi, %rsi - 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00000de2 je LBB0_222 - //0x00000de8 LBB0_217 - 0x4c, 0x8d, 0x0c, 0x30, //0x00000de8 leaq (%rax,%rsi), %r9 - 0x31, 0xc9, //0x00000dec xorl %ecx, %ecx - //0x00000dee LBB0_218 - 0x0f, 0xbe, 0x1c, 0x08, //0x00000dee movsbl (%rax,%rcx), %ebx - 0x83, 0xfb, 0x20, //0x00000df2 cmpl $32, %ebx - 0x0f, 0x87, 0x71, 0x0a, 0x00, 0x00, //0x00000df5 ja LBB0_350 - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000dfb movabsq $4294977024, %rdi - 0x48, 0x0f, 0xa3, 0xdf, //0x00000e05 btq %rbx, %rdi - 0x0f, 0x83, 0x5d, 0x0a, 0x00, 0x00, //0x00000e09 jae LBB0_350 - 0x48, 0x83, 0xc1, 0x01, //0x00000e0f addq $1, %rcx - 0x48, 0x39, 0xce, //0x00000e13 cmpq %rcx, %rsi - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x00000e16 jne LBB0_218 - 0x4c, 0x89, 0xc8, //0x00000e1c movq %r9, %rax - //0x00000e1f LBB0_222 - 0x4c, 0x29, 0xe0, //0x00000e1f subq %r12, %rax - 0x48, 0x39, 0xd0, //0x00000e22 cmpq %rdx, %rax - 0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000e25 jb LBB0_224 - 0xe9, 0x06, 0x05, 0x00, 0x00, //0x00000e2b jmp LBB0_283 - //0x00000e30 .p2align 4, 0x90 - //0x00000e30 LBB0_223 - 0xf7, 0xd1, //0x00000e30 notl %ecx - 0x0f, 0xbc, 0xc1, //0x00000e32 bsfl %ecx, %eax - 0x48, 0x29, 0xf0, //0x00000e35 subq %rsi, %rax - 0x48, 0x39, 0xd0, //0x00000e38 cmpq %rdx, %rax - 0x0f, 0x83, 0xf5, 0x04, 0x00, 0x00, //0x00000e3b jae LBB0_283 - //0x00000e41 LBB0_224 - 0x4c, 0x8d, 0x70, 0x01, //0x00000e41 leaq $1(%rax), %r14 - 0x4d, 0x89, 0x30, //0x00000e45 movq %r14, (%r8) - 0x41, 0x0f, 0xbe, 0x0c, 0x04, //0x00000e48 movsbl (%r12,%rax), %ecx - 0x83, 0xf9, 0x7b, //0x00000e4d cmpl $123, %ecx - 0x0f, 0x87, 0xda, 0x04, 0x00, 0x00, //0x00000e50 ja LBB0_282 - 0x48, 0x8d, 0x15, 0xdf, 0x49, 0x00, 0x00, //0x00000e56 leaq $18911(%rip), %rdx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00000e5d movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00000e61 addq %rdx, %rcx - 0xff, 0xe1, //0x00000e64 jmpq *%rcx - //0x00000e66 LBB0_226 - 0x49, 0x8b, 0x55, 0x00, //0x00000e66 movq (%r13), %rdx - 0x48, 0x89, 0xd1, //0x00000e6a movq %rdx, %rcx - 0x4c, 0x29, 0xf1, //0x00000e6d subq %r14, %rcx - 0x48, 0x83, 0xf9, 0x20, //0x00000e70 cmpq $32, %rcx - 0x0f, 0x82, 0x4d, 0x0e, 0x00, 0x00, //0x00000e74 jb LBB0_355 - 0x48, 0x89, 0xc1, //0x00000e7a movq %rax, %rcx - 0x48, 0xf7, 0xd1, //0x00000e7d notq %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00000e80 addq $1, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e84 .p2align 4, 0x90 - //0x00000e90 LBB0_228 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x04, //0x00000e90 vmovdqu (%r12,%rax), %ymm6 - 0xc5, 0x4d, 0x74, 0xdb, //0x00000e96 vpcmpeqb %ymm3, %ymm6, %ymm11 - 0xc5, 0xcd, 0xdb, 0xf4, //0x00000e9a vpand %ymm4, %ymm6, %ymm6 - 0xc5, 0xcd, 0x74, 0xf5, //0x00000e9e vpcmpeqb %ymm5, %ymm6, %ymm6 - 0xc5, 0xa5, 0xeb, 0xf6, //0x00000ea2 vpor %ymm6, %ymm11, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00000ea6 vpmovmskb %ymm6, %esi - 0x85, 0xf6, //0x00000eaa testl %esi, %esi - 0x0f, 0x85, 0xbe, 0x00, 0x00, 0x00, //0x00000eac jne LBB0_242 - 0x48, 0x83, 0xc0, 0x20, //0x00000eb2 addq $32, %rax - 0x48, 0x8d, 0x34, 0x0a, //0x00000eb6 leaq (%rdx,%rcx), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x00000eba addq $-32, %rsi - 0x48, 0x83, 0xc1, 0xe0, //0x00000ebe addq $-32, %rcx - 0x48, 0x83, 0xfe, 0x1f, //0x00000ec2 cmpq $31, %rsi - 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x00000ec6 ja LBB0_228 - 0x4d, 0x89, 0xe6, //0x00000ecc movq %r12, %r14 - 0x49, 0x29, 0xce, //0x00000ecf subq %rcx, %r14 - 0x48, 0x01, 0xca, //0x00000ed2 addq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00000ed5 movq %rdx, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x00000ed8 cmpq $16, %rcx - 0x0f, 0x82, 0x45, 0x00, 0x00, 0x00, //0x00000edc jb LBB0_234 - //0x00000ee2 LBB0_231 - 0x4c, 0x89, 0xe0, //0x00000ee2 movq %r12, %rax - 0x4c, 0x29, 0xf0, //0x00000ee5 subq %r14, %rax - //0x00000ee8 LBB0_232 - 0xc4, 0xc1, 0x7a, 0x6f, 0x36, //0x00000ee8 vmovdqu (%r14), %xmm6 - 0xc5, 0xc9, 0x74, 0x3d, 0xeb, 0xf2, 0xff, 0xff, //0x00000eed vpcmpeqb $-3349(%rip), %xmm6, %xmm7 /* LCPI0_4+0(%rip) */ - 0xc5, 0xc9, 0xdb, 0x35, 0xf3, 0xf2, 0xff, 0xff, //0x00000ef5 vpand $-3341(%rip), %xmm6, %xmm6 /* LCPI0_5+0(%rip) */ - 0xc5, 0xb9, 0x74, 0xf6, //0x00000efd vpcmpeqb %xmm6, %xmm8, %xmm6 - 0xc5, 0xc9, 0xeb, 0xf7, //0x00000f01 vpor %xmm7, %xmm6, %xmm6 - 0xc5, 0xf9, 0xd7, 0xd6, //0x00000f05 vpmovmskb %xmm6, %edx - 0x85, 0xd2, //0x00000f09 testl %edx, %edx - 0x0f, 0x85, 0x07, 0x09, 0x00, 0x00, //0x00000f0b jne LBB0_347 - 0x49, 0x83, 0xc6, 0x10, //0x00000f11 addq $16, %r14 - 0x48, 0x83, 0xc1, 0xf0, //0x00000f15 addq $-16, %rcx - 0x48, 0x83, 0xc0, 0xf0, //0x00000f19 addq $-16, %rax - 0x48, 0x83, 0xf9, 0x0f, //0x00000f1d cmpq $15, %rcx - 0x0f, 0x87, 0xc1, 0xff, 0xff, 0xff, //0x00000f21 ja LBB0_232 - //0x00000f27 LBB0_234 - 0x48, 0x85, 0xc9, //0x00000f27 testq %rcx, %rcx - 0x0f, 0x84, 0x36, 0x00, 0x00, 0x00, //0x00000f2a je LBB0_241 - 0x49, 0x8d, 0x14, 0x0e, //0x00000f30 leaq (%r14,%rcx), %rdx - 0x31, 0xc0, //0x00000f34 xorl %eax, %eax - //0x00000f36 LBB0_236 - 0x41, 0x0f, 0xb6, 0x1c, 0x06, //0x00000f36 movzbl (%r14,%rax), %ebx - 0x80, 0xfb, 0x2c, //0x00000f3b cmpb $44, %bl - 0x0f, 0x84, 0x9d, 0x0d, 0x00, 0x00, //0x00000f3e je LBB0_356 - 0x80, 0xfb, 0x7d, //0x00000f44 cmpb $125, %bl - 0x0f, 0x84, 0x94, 0x0d, 0x00, 0x00, //0x00000f47 je LBB0_356 - 0x80, 0xfb, 0x5d, //0x00000f4d cmpb $93, %bl - 0x0f, 0x84, 0x8b, 0x0d, 0x00, 0x00, //0x00000f50 je LBB0_356 - 0x48, 0x83, 0xc0, 0x01, //0x00000f56 addq $1, %rax - 0x48, 0x39, 0xc1, //0x00000f5a cmpq %rax, %rcx - 0x0f, 0x85, 0xd3, 0xff, 0xff, 0xff, //0x00000f5d jne LBB0_236 - 0x49, 0x89, 0xd6, //0x00000f63 movq %rdx, %r14 - //0x00000f66 LBB0_241 - 0x4d, 0x29, 0xe6, //0x00000f66 subq %r12, %r14 - 0xe9, 0x79, 0x0d, 0x00, 0x00, //0x00000f69 jmp LBB0_357 - 0x90, 0x90, //0x00000f6e .p2align 4, 0x90 - //0x00000f70 LBB0_242 - 0x44, 0x0f, 0xbc, 0xf6, //0x00000f70 bsfl %esi, %r14d - 0x49, 0x29, 0xce, //0x00000f74 subq %rcx, %r14 - 0x4d, 0x89, 0x30, //0x00000f77 movq %r14, (%r8) - 0xe9, 0xb7, 0x03, 0x00, 0x00, //0x00000f7a jmp LBB0_283 - //0x00000f7f LBB0_243 - 0x48, 0x83, 0xc0, 0x04, //0x00000f7f addq $4, %rax - 0x49, 0x3b, 0x45, 0x00, //0x00000f83 cmpq (%r13), %rax - 0x0f, 0x86, 0xa3, 0x03, 0x00, 0x00, //0x00000f87 jbe LBB0_282 - 0xe9, 0xa4, 0x03, 0x00, 0x00, //0x00000f8d jmp LBB0_283 - //0x00000f92 LBB0_244 - 0x4c, 0x89, 0x7c, 0x24, 0x18, //0x00000f92 movq %r15, $24(%rsp) - 0x4d, 0x8b, 0x45, 0x00, //0x00000f97 movq (%r13), %r8 - 0x4d, 0x89, 0xc7, //0x00000f9b movq %r8, %r15 - 0x4d, 0x29, 0xf7, //0x00000f9e subq %r14, %r15 - 0x49, 0x83, 0xff, 0x20, //0x00000fa1 cmpq $32, %r15 - 0x0f, 0x8c, 0x53, 0x0d, 0x00, 0x00, //0x00000fa5 jl LBB0_359 - 0x4d, 0x8d, 0x0c, 0x04, //0x00000fab leaq (%r12,%rax), %r9 - 0x49, 0x29, 0xc0, //0x00000faf subq %rax, %r8 - 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x00000fb2 movl $31, %ebx - 0x45, 0x31, 0xff, //0x00000fb7 xorl %r15d, %r15d - 0x45, 0x31, 0xdb, //0x00000fba xorl %r11d, %r11d - 0x90, 0x90, 0x90, //0x00000fbd .p2align 4, 0x90 - //0x00000fc0 LBB0_246 - 0xc4, 0x81, 0x7e, 0x6f, 0x74, 0x39, 0x01, //0x00000fc0 vmovdqu $1(%r9,%r15), %ymm6 - 0xc5, 0x4d, 0x74, 0xd9, //0x00000fc7 vpcmpeqb %ymm1, %ymm6, %ymm11 - 0xc4, 0x41, 0x7d, 0xd7, 0xd3, //0x00000fcb vpmovmskb %ymm11, %r10d - 0xc5, 0xcd, 0x74, 0xf2, //0x00000fd0 vpcmpeqb %ymm2, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x00000fd4 vpmovmskb %ymm6, %edi - 0x85, 0xff, //0x00000fd8 testl %edi, %edi - 0x0f, 0x85, 0x20, 0x00, 0x00, 0x00, //0x00000fda jne LBB0_249 - 0x4d, 0x85, 0xdb, //0x00000fe0 testq %r11, %r11 - 0x0f, 0x85, 0x17, 0x00, 0x00, 0x00, //0x00000fe3 jne LBB0_249 - 0x45, 0x31, 0xdb, //0x00000fe9 xorl %r11d, %r11d - 0xe9, 0x40, 0x00, 0x00, 0x00, //0x00000fec jmp LBB0_250 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ff1 .p2align 4, 0x90 - //0x00001000 LBB0_249 - 0x44, 0x89, 0xde, //0x00001000 movl %r11d, %esi - 0xf7, 0xd6, //0x00001003 notl %esi - 0x21, 0xfe, //0x00001005 andl %edi, %esi - 0x8d, 0x0c, 0x36, //0x00001007 leal (%rsi,%rsi), %ecx - 0x44, 0x09, 0xd9, //0x0000100a orl %r11d, %ecx - 0x89, 0xca, //0x0000100d movl %ecx, %edx - 0xf7, 0xd2, //0x0000100f notl %edx - 0x21, 0xfa, //0x00001011 andl %edi, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001013 andl $-1431655766, %edx - 0x45, 0x31, 0xdb, //0x00001019 xorl %r11d, %r11d - 0x01, 0xf2, //0x0000101c addl %esi, %edx - 0x41, 0x0f, 0x92, 0xc3, //0x0000101e setb %r11b - 0x01, 0xd2, //0x00001022 addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00001024 xorl $1431655765, %edx - 0x21, 0xca, //0x0000102a andl %ecx, %edx - 0xf7, 0xd2, //0x0000102c notl %edx - 0x41, 0x21, 0xd2, //0x0000102e andl %edx, %r10d - //0x00001031 LBB0_250 - 0x4d, 0x85, 0xd2, //0x00001031 testq %r10, %r10 - 0x0f, 0x85, 0x69, 0x07, 0x00, 0x00, //0x00001034 jne LBB0_341 - 0x49, 0x83, 0xc7, 0x20, //0x0000103a addq $32, %r15 - 0x49, 0x8d, 0x0c, 0x18, //0x0000103e leaq (%r8,%rbx), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00001042 addq $-32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00001046 addq $-32, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x0000104a cmpq $63, %rcx - 0x0f, 0x8f, 0x6c, 0xff, 0xff, 0xff, //0x0000104e jg LBB0_246 - 0x4d, 0x85, 0xdb, //0x00001054 testq %r11, %r11 - 0x0f, 0x85, 0x31, 0x0e, 0x00, 0x00, //0x00001057 jne LBB0_383 - 0x4b, 0x8d, 0x04, 0x0f, //0x0000105d leaq (%r15,%r9), %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001061 addq $1, %rax - 0x49, 0xf7, 0xd7, //0x00001065 notq %r15 - 0x4d, 0x01, 0xc7, //0x00001068 addq %r8, %r15 - //0x0000106b LBB0_254 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x0000106b movq $32(%rsp), %r11 - 0x4d, 0x85, 0xff, //0x00001070 testq %r15, %r15 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001073 movq $8(%rsp), %r8 - 0x0f, 0x8f, 0x63, 0x07, 0x00, 0x00, //0x00001078 jg LBB0_344 - 0xe9, 0x8b, 0x07, 0x00, 0x00, //0x0000107e jmp LBB0_255 - //0x00001083 LBB0_256 - 0x4d, 0x8b, 0x4d, 0x00, //0x00001083 movq (%r13), %r9 - 0x4d, 0x29, 0xf1, //0x00001087 subq %r14, %r9 - 0x4d, 0x01, 0xf4, //0x0000108a addq %r14, %r12 - 0x45, 0x31, 0xd2, //0x0000108d xorl %r10d, %r10d - 0x45, 0x31, 0xdb, //0x00001090 xorl %r11d, %r11d - 0x45, 0x31, 0xf6, //0x00001093 xorl %r14d, %r14d - 0x31, 0xd2, //0x00001096 xorl %edx, %edx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001098 jmp LBB0_258 - //0x0000109d LBB0_257 - 0x48, 0xc1, 0xf9, 0x3f, //0x0000109d sarq $63, %rcx - 0xf3, 0x48, 0x0f, 0xb8, 0xc7, //0x000010a1 popcntq %rdi, %rax - 0x49, 0x01, 0xc6, //0x000010a6 addq %rax, %r14 - 0x49, 0x83, 0xc4, 0x40, //0x000010a9 addq $64, %r12 - 0x49, 0x83, 0xc1, 0xc0, //0x000010ad addq $-64, %r9 - 0x49, 0x89, 0xca, //0x000010b1 movq %rcx, %r10 - //0x000010b4 LBB0_258 - 0x49, 0x83, 0xf9, 0x40, //0x000010b4 cmpq $64, %r9 - 0x0f, 0x8c, 0x2f, 0x01, 0x00, 0x00, //0x000010b8 jl LBB0_265 - //0x000010be LBB0_259 - 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x000010be vmovdqu (%r12), %ymm15 - 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x000010c4 vmovdqu $32(%r12), %ymm14 - 0xc5, 0x85, 0x74, 0xf2, //0x000010cb vpcmpeqb %ymm2, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x000010cf vpmovmskb %ymm6, %esi - 0xc5, 0x8d, 0x74, 0xf2, //0x000010d3 vpcmpeqb %ymm2, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x000010d7 vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x000010db shlq $32, %rax - 0x48, 0x09, 0xc6, //0x000010df orq %rax, %rsi - 0x48, 0x89, 0xf0, //0x000010e2 movq %rsi, %rax - 0x4c, 0x09, 0xd8, //0x000010e5 orq %r11, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000010e8 jne LBB0_261 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000010ee movq $-1, %rsi - 0x45, 0x31, 0xdb, //0x000010f5 xorl %r11d, %r11d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000010f8 jmp LBB0_262 - //0x000010fd LBB0_261 - 0x4c, 0x89, 0xd8, //0x000010fd movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001100 notq %rax - 0x48, 0x21, 0xf0, //0x00001103 andq %rsi, %rax - 0x48, 0x8d, 0x1c, 0x00, //0x00001106 leaq (%rax,%rax), %rbx - 0x4c, 0x09, 0xdb, //0x0000110a orq %r11, %rbx - 0x48, 0x89, 0xdf, //0x0000110d movq %rbx, %rdi - 0x48, 0xf7, 0xd7, //0x00001110 notq %rdi - 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001113 movabsq $-6148914691236517206, %rcx - 0x48, 0x21, 0xce, //0x0000111d andq %rcx, %rsi - 0x48, 0x21, 0xfe, //0x00001120 andq %rdi, %rsi - 0x45, 0x31, 0xdb, //0x00001123 xorl %r11d, %r11d - 0x48, 0x01, 0xc6, //0x00001126 addq %rax, %rsi - 0x41, 0x0f, 0x92, 0xc3, //0x00001129 setb %r11b - 0x48, 0x01, 0xf6, //0x0000112d addq %rsi, %rsi - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001130 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc6, //0x0000113a xorq %rax, %rsi - 0x48, 0x21, 0xde, //0x0000113d andq %rbx, %rsi - 0x48, 0xf7, 0xd6, //0x00001140 notq %rsi - //0x00001143 LBB0_262 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001143 movq $8(%rsp), %r8 - 0xc5, 0x8d, 0x74, 0xf1, //0x00001148 vpcmpeqb %ymm1, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x0000114c vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001150 shlq $32, %rax - 0xc5, 0x85, 0x74, 0xf1, //0x00001154 vpcmpeqb %ymm1, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x00001158 vpmovmskb %ymm6, %edi - 0x48, 0x09, 0xc7, //0x0000115c orq %rax, %rdi - 0x48, 0x21, 0xf7, //0x0000115f andq %rsi, %rdi - 0xc4, 0xe1, 0xf9, 0x6e, 0xf7, //0x00001162 vmovq %rdi, %xmm6 - 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x00001167 vpclmulqdq $0, %xmm9, %xmm6, %xmm6 - 0xc4, 0xe1, 0xf9, 0x7e, 0xf1, //0x0000116d vmovq %xmm6, %rcx - 0x4c, 0x31, 0xd1, //0x00001172 xorq %r10, %rcx - 0xc4, 0xc1, 0x05, 0x74, 0xf2, //0x00001175 vpcmpeqb %ymm10, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x0000117a vpmovmskb %ymm6, %edi - 0xc4, 0xc1, 0x0d, 0x74, 0xf2, //0x0000117e vpcmpeqb %ymm10, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x00001183 vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001187 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x0000118b orq %rax, %rdi - 0x48, 0x89, 0xce, //0x0000118e movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001191 notq %rsi - 0x48, 0x21, 0xf7, //0x00001194 andq %rsi, %rdi - 0xc5, 0x85, 0x74, 0xf5, //0x00001197 vpcmpeqb %ymm5, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x0000119b vpmovmskb %ymm6, %eax - 0xc5, 0x8d, 0x74, 0xf5, //0x0000119f vpcmpeqb %ymm5, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xde, //0x000011a3 vpmovmskb %ymm6, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x000011a7 shlq $32, %rbx - 0x48, 0x09, 0xd8, //0x000011ab orq %rbx, %rax - 0x48, 0x21, 0xf0, //0x000011ae andq %rsi, %rax - 0x0f, 0x84, 0xe6, 0xfe, 0xff, 0xff, //0x000011b1 je LBB0_257 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000011b7 .p2align 4, 0x90 - //0x000011c0 LBB0_263 - 0x48, 0x8d, 0x58, 0xff, //0x000011c0 leaq $-1(%rax), %rbx - 0x48, 0x89, 0xde, //0x000011c4 movq %rbx, %rsi - 0x48, 0x21, 0xfe, //0x000011c7 andq %rdi, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000011ca popcntq %rsi, %rsi - 0x4c, 0x01, 0xf6, //0x000011cf addq %r14, %rsi - 0x48, 0x39, 0xd6, //0x000011d2 cmpq %rdx, %rsi - 0x0f, 0x86, 0x9a, 0x05, 0x00, 0x00, //0x000011d5 jbe LBB0_339 - 0x48, 0x83, 0xc2, 0x01, //0x000011db addq $1, %rdx - 0x48, 0x21, 0xd8, //0x000011df andq %rbx, %rax - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x000011e2 jne LBB0_263 - 0xe9, 0xb0, 0xfe, 0xff, 0xff, //0x000011e8 jmp LBB0_257 - //0x000011ed LBB0_265 - 0x4d, 0x85, 0xc9, //0x000011ed testq %r9, %r9 - 0x0f, 0x8e, 0x85, 0x0c, 0x00, 0x00, //0x000011f0 jle LBB0_382 - 0xc5, 0xc9, 0xef, 0xf6, //0x000011f6 vpxor %xmm6, %xmm6, %xmm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x000011fa vmovdqu %ymm6, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001200 vmovdqu %ymm6, $64(%rsp) - 0x44, 0x89, 0xe0, //0x00001206 movl %r12d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001209 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x0000120e cmpl $4033, %eax - 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x00001213 jb LBB0_269 - 0x49, 0x83, 0xf9, 0x20, //0x00001219 cmpq $32, %r9 - 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x0000121d jb LBB0_270 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00001223 vmovdqu (%r12), %ymm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001229 vmovdqu %ymm6, $64(%rsp) - 0x49, 0x83, 0xc4, 0x20, //0x0000122f addq $32, %r12 - 0x49, 0x8d, 0x79, 0xe0, //0x00001233 leaq $-32(%r9), %rdi - 0x4c, 0x8d, 0x44, 0x24, 0x60, //0x00001237 leaq $96(%rsp), %r8 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000123c jmp LBB0_271 - //0x00001241 LBB0_269 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001241 movq $40(%rsp), %r13 - 0xe9, 0x73, 0xfe, 0xff, 0xff, //0x00001246 jmp LBB0_259 - //0x0000124b LBB0_270 - 0x4c, 0x8d, 0x44, 0x24, 0x40, //0x0000124b leaq $64(%rsp), %r8 - 0x4c, 0x89, 0xcf, //0x00001250 movq %r9, %rdi - //0x00001253 LBB0_271 - 0x48, 0x83, 0xff, 0x10, //0x00001253 cmpq $16, %rdi - 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x00001257 jb LBB0_272 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x0000125d vmovdqu (%r12), %xmm6 - 0xc4, 0xc1, 0x7a, 0x7f, 0x30, //0x00001263 vmovdqu %xmm6, (%r8) - 0x49, 0x83, 0xc4, 0x10, //0x00001268 addq $16, %r12 - 0x49, 0x83, 0xc0, 0x10, //0x0000126c addq $16, %r8 - 0x48, 0x83, 0xc7, 0xf0, //0x00001270 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001274 cmpq $8, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00001278 jae LBB0_279 - //0x0000127e LBB0_273 - 0x48, 0x83, 0xff, 0x04, //0x0000127e cmpq $4, %rdi - 0x0f, 0x8c, 0x49, 0x00, 0x00, 0x00, //0x00001282 jl LBB0_274 - //0x00001288 LBB0_280 - 0x41, 0x8b, 0x04, 0x24, //0x00001288 movl (%r12), %eax - 0x41, 0x89, 0x00, //0x0000128c movl %eax, (%r8) - 0x49, 0x83, 0xc4, 0x04, //0x0000128f addq $4, %r12 - 0x49, 0x83, 0xc0, 0x04, //0x00001293 addq $4, %r8 - 0x48, 0x83, 0xc7, 0xfc, //0x00001297 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x0000129b cmpq $2, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x0000129f jae LBB0_275 - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000012a5 jmp LBB0_276 - //0x000012aa LBB0_272 - 0x48, 0x83, 0xff, 0x08, //0x000012aa cmpq $8, %rdi - 0x0f, 0x82, 0xca, 0xff, 0xff, 0xff, //0x000012ae jb LBB0_273 - //0x000012b4 LBB0_279 - 0x49, 0x8b, 0x04, 0x24, //0x000012b4 movq (%r12), %rax - 0x49, 0x89, 0x00, //0x000012b8 movq %rax, (%r8) - 0x49, 0x83, 0xc4, 0x08, //0x000012bb addq $8, %r12 - 0x49, 0x83, 0xc0, 0x08, //0x000012bf addq $8, %r8 - 0x48, 0x83, 0xc7, 0xf8, //0x000012c3 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x000012c7 cmpq $4, %rdi - 0x0f, 0x8d, 0xb7, 0xff, 0xff, 0xff, //0x000012cb jge LBB0_280 - //0x000012d1 LBB0_274 - 0x48, 0x83, 0xff, 0x02, //0x000012d1 cmpq $2, %rdi - 0x0f, 0x82, 0x15, 0x00, 0x00, 0x00, //0x000012d5 jb LBB0_276 - //0x000012db LBB0_275 - 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x000012db movzwl (%r12), %eax - 0x66, 0x41, 0x89, 0x00, //0x000012e0 movw %ax, (%r8) - 0x49, 0x83, 0xc4, 0x02, //0x000012e4 addq $2, %r12 - 0x49, 0x83, 0xc0, 0x02, //0x000012e8 addq $2, %r8 - 0x48, 0x83, 0xc7, 0xfe, //0x000012ec addq $-2, %rdi - //0x000012f0 LBB0_276 - 0x4c, 0x89, 0xe0, //0x000012f0 movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x000012f3 leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x000012f8 testq %rdi, %rdi - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x000012fb movq $40(%rsp), %r13 - 0x0f, 0x84, 0xb8, 0xfd, 0xff, 0xff, //0x00001300 je LBB0_259 - 0x8a, 0x00, //0x00001306 movb (%rax), %al - 0x41, 0x88, 0x00, //0x00001308 movb %al, (%r8) - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x0000130b leaq $64(%rsp), %r12 - 0xe9, 0xa9, 0xfd, 0xff, 0xff, //0x00001310 jmp LBB0_259 - //0x00001315 LBB0_281 - 0x48, 0x83, 0xc0, 0x05, //0x00001315 addq $5, %rax - 0x49, 0x3b, 0x45, 0x00, //0x00001319 cmpq (%r13), %rax - 0x0f, 0x87, 0x13, 0x00, 0x00, 0x00, //0x0000131d ja LBB0_283 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001323 .p2align 4, 0x90 - //0x00001330 LBB0_282 - 0x49, 0x89, 0x00, //0x00001330 movq %rax, (%r8) - 0x49, 0x89, 0xc6, //0x00001333 movq %rax, %r14 - //0x00001336 LBB0_283 - 0x4d, 0x8b, 0x23, //0x00001336 movq (%r11), %r12 - 0x49, 0x8b, 0x43, 0x08, //0x00001339 movq $8(%r11), %rax - 0x49, 0x39, 0xc6, //0x0000133d cmpq %rax, %r14 - 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x00001340 jae LBB0_288 - 0x43, 0x8a, 0x0c, 0x34, //0x00001346 movb (%r12,%r14), %cl - 0x80, 0xf9, 0x0d, //0x0000134a cmpb $13, %cl - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x0000134d je LBB0_288 - 0x80, 0xf9, 0x20, //0x00001353 cmpb $32, %cl - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001356 je LBB0_288 - 0x80, 0xc1, 0xf7, //0x0000135c addb $-9, %cl - 0x80, 0xf9, 0x01, //0x0000135f cmpb $1, %cl - 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00001362 jbe LBB0_288 - 0x4c, 0x89, 0xf1, //0x00001368 movq %r14, %rcx - 0xe9, 0x61, 0x01, 0x00, 0x00, //0x0000136b jmp LBB0_313 - //0x00001370 .p2align 4, 0x90 - //0x00001370 LBB0_288 - 0x49, 0x8d, 0x4e, 0x01, //0x00001370 leaq $1(%r14), %rcx - 0x48, 0x39, 0xc1, //0x00001374 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001377 jae LBB0_292 - 0x41, 0x8a, 0x14, 0x0c, //0x0000137d movb (%r12,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x00001381 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001384 je LBB0_292 - 0x80, 0xfa, 0x20, //0x0000138a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000138d je LBB0_292 - 0x80, 0xc2, 0xf7, //0x00001393 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00001396 cmpb $1, %dl - 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x00001399 ja LBB0_313 - 0x90, //0x0000139f .p2align 4, 0x90 - //0x000013a0 LBB0_292 - 0x49, 0x8d, 0x4e, 0x02, //0x000013a0 leaq $2(%r14), %rcx - 0x48, 0x39, 0xc1, //0x000013a4 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000013a7 jae LBB0_296 - 0x41, 0x8a, 0x14, 0x0c, //0x000013ad movb (%r12,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x000013b1 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000013b4 je LBB0_296 - 0x80, 0xfa, 0x20, //0x000013ba cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000013bd je LBB0_296 - 0x80, 0xc2, 0xf7, //0x000013c3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000013c6 cmpb $1, %dl - 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x000013c9 ja LBB0_313 - 0x90, //0x000013cf .p2align 4, 0x90 - //0x000013d0 LBB0_296 - 0x49, 0x8d, 0x4e, 0x03, //0x000013d0 leaq $3(%r14), %rcx - 0x48, 0x39, 0xc1, //0x000013d4 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000013d7 jae LBB0_300 - 0x41, 0x8a, 0x14, 0x0c, //0x000013dd movb (%r12,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x000013e1 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000013e4 je LBB0_300 - 0x80, 0xfa, 0x20, //0x000013ea cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000013ed je LBB0_300 - 0x80, 0xc2, 0xf7, //0x000013f3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000013f6 cmpb $1, %dl - 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x000013f9 ja LBB0_313 - 0x90, //0x000013ff .p2align 4, 0x90 - //0x00001400 LBB0_300 - 0x49, 0x8d, 0x4e, 0x04, //0x00001400 leaq $4(%r14), %rcx - 0x48, 0x89, 0xc2, //0x00001404 movq %rax, %rdx - 0x48, 0x29, 0xca, //0x00001407 subq %rcx, %rdx - 0x0f, 0x86, 0xc3, 0x36, 0x00, 0x00, //0x0000140a jbe LBB0_1023 - 0x48, 0x83, 0xfa, 0x20, //0x00001410 cmpq $32, %rdx - 0x0f, 0x82, 0x8b, 0x08, 0x00, 0x00, //0x00001414 jb LBB0_353 - 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x0000141a movq $-4, %rdx - 0x4c, 0x29, 0xf2, //0x00001421 subq %r14, %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001424 .p2align 4, 0x90 - //0x00001430 LBB0_303 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x00001430 vmovdqu (%r12,%rcx), %ymm6 - 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x00001436 vpshufb %ymm6, %ymm0, %ymm7 - 0xc5, 0xcd, 0x74, 0xf7, //0x0000143b vpcmpeqb %ymm7, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x0000143f vpmovmskb %ymm6, %esi - 0x83, 0xfe, 0xff, //0x00001443 cmpl $-1, %esi - 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00001446 jne LBB0_312 - 0x48, 0x83, 0xc1, 0x20, //0x0000144c addq $32, %rcx - 0x48, 0x8d, 0x34, 0x10, //0x00001450 leaq (%rax,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x00001454 addq $-32, %rsi - 0x48, 0x83, 0xc2, 0xe0, //0x00001458 addq $-32, %rdx - 0x48, 0x83, 0xfe, 0x1f, //0x0000145c cmpq $31, %rsi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00001460 ja LBB0_303 - 0x4c, 0x89, 0xe1, //0x00001466 movq %r12, %rcx - 0x48, 0x29, 0xd1, //0x00001469 subq %rdx, %rcx - 0x48, 0x01, 0xc2, //0x0000146c addq %rax, %rdx - 0x48, 0x85, 0xd2, //0x0000146f testq %rdx, %rdx - 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00001472 je LBB0_311 - //0x00001478 LBB0_306 - 0x4c, 0x8d, 0x0c, 0x11, //0x00001478 leaq (%rcx,%rdx), %r9 - 0x31, 0xf6, //0x0000147c xorl %esi, %esi - //0x0000147e LBB0_307 - 0x0f, 0xbe, 0x1c, 0x31, //0x0000147e movsbl (%rcx,%rsi), %ebx - 0x83, 0xfb, 0x20, //0x00001482 cmpl $32, %ebx - 0x0f, 0x87, 0xcd, 0x03, 0x00, 0x00, //0x00001485 ja LBB0_349 - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000148b movabsq $4294977024, %rdi - 0x48, 0x0f, 0xa3, 0xdf, //0x00001495 btq %rbx, %rdi - 0x0f, 0x83, 0xb9, 0x03, 0x00, 0x00, //0x00001499 jae LBB0_349 - 0x48, 0x83, 0xc6, 0x01, //0x0000149f addq $1, %rsi - 0x48, 0x39, 0xf2, //0x000014a3 cmpq %rsi, %rdx - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x000014a6 jne LBB0_307 - 0x4c, 0x89, 0xc9, //0x000014ac movq %r9, %rcx - //0x000014af LBB0_311 - 0x4c, 0x29, 0xe1, //0x000014af subq %r12, %rcx - 0x48, 0x39, 0xc1, //0x000014b2 cmpq %rax, %rcx - 0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x000014b5 jb LBB0_313 - 0xe9, 0xc7, 0x37, 0x00, 0x00, //0x000014bb jmp LBB0_1024 - //0x000014c0 .p2align 4, 0x90 - //0x000014c0 LBB0_312 - 0xf7, 0xd6, //0x000014c0 notl %esi - 0x0f, 0xbc, 0xce, //0x000014c2 bsfl %esi, %ecx - 0x48, 0x29, 0xd1, //0x000014c5 subq %rdx, %rcx - 0x48, 0x39, 0xc1, //0x000014c8 cmpq %rax, %rcx - 0x0f, 0x83, 0xb6, 0x37, 0x00, 0x00, //0x000014cb jae LBB0_1024 - //0x000014d1 LBB0_313 - 0x4c, 0x8d, 0x71, 0x01, //0x000014d1 leaq $1(%rcx), %r14 - 0x4d, 0x89, 0x30, //0x000014d5 movq %r14, (%r8) - 0x41, 0x8a, 0x04, 0x0c, //0x000014d8 movb (%r12,%rcx), %al - 0x3c, 0x2c, //0x000014dc cmpb $44, %al - 0x0f, 0x84, 0x57, 0xf0, 0xff, 0xff, //0x000014de je LBB0_38 - 0xe9, 0x33, 0x1b, 0x00, 0x00, //0x000014e4 jmp LBB0_627 - //0x000014e9 LBB0_314 - 0x4d, 0x8b, 0x4d, 0x00, //0x000014e9 movq (%r13), %r9 - 0x4d, 0x29, 0xf1, //0x000014ed subq %r14, %r9 - 0x4d, 0x01, 0xf4, //0x000014f0 addq %r14, %r12 - 0x45, 0x31, 0xd2, //0x000014f3 xorl %r10d, %r10d - 0x45, 0x31, 0xdb, //0x000014f6 xorl %r11d, %r11d - 0x45, 0x31, 0xf6, //0x000014f9 xorl %r14d, %r14d - 0x31, 0xd2, //0x000014fc xorl %edx, %edx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000014fe jmp LBB0_316 - //0x00001503 LBB0_315 - 0x48, 0xc1, 0xf9, 0x3f, //0x00001503 sarq $63, %rcx - 0xf3, 0x48, 0x0f, 0xb8, 0xc7, //0x00001507 popcntq %rdi, %rax - 0x49, 0x01, 0xc6, //0x0000150c addq %rax, %r14 - 0x49, 0x83, 0xc4, 0x40, //0x0000150f addq $64, %r12 - 0x49, 0x83, 0xc1, 0xc0, //0x00001513 addq $-64, %r9 - 0x49, 0x89, 0xca, //0x00001517 movq %rcx, %r10 - //0x0000151a LBB0_316 - 0x49, 0x83, 0xf9, 0x40, //0x0000151a cmpq $64, %r9 - 0x0f, 0x8c, 0x29, 0x01, 0x00, 0x00, //0x0000151e jl LBB0_323 - //0x00001524 LBB0_317 - 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x00001524 vmovdqu (%r12), %ymm15 - 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x0000152a vmovdqu $32(%r12), %ymm14 - 0xc5, 0x85, 0x74, 0xf2, //0x00001531 vpcmpeqb %ymm2, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00001535 vpmovmskb %ymm6, %esi - 0xc5, 0x8d, 0x74, 0xf2, //0x00001539 vpcmpeqb %ymm2, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x0000153d vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001541 shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001545 orq %rax, %rsi - 0x48, 0x89, 0xf0, //0x00001548 movq %rsi, %rax - 0x4c, 0x09, 0xd8, //0x0000154b orq %r11, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000154e jne LBB0_319 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001554 movq $-1, %rsi - 0x45, 0x31, 0xdb, //0x0000155b xorl %r11d, %r11d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000155e jmp LBB0_320 - //0x00001563 LBB0_319 - 0x4c, 0x89, 0xd8, //0x00001563 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001566 notq %rax - 0x48, 0x21, 0xf0, //0x00001569 andq %rsi, %rax - 0x48, 0x8d, 0x1c, 0x00, //0x0000156c leaq (%rax,%rax), %rbx - 0x4c, 0x09, 0xdb, //0x00001570 orq %r11, %rbx - 0x48, 0x89, 0xdf, //0x00001573 movq %rbx, %rdi - 0x48, 0xf7, 0xd7, //0x00001576 notq %rdi - 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001579 movabsq $-6148914691236517206, %rcx - 0x48, 0x21, 0xce, //0x00001583 andq %rcx, %rsi - 0x48, 0x21, 0xfe, //0x00001586 andq %rdi, %rsi - 0x45, 0x31, 0xdb, //0x00001589 xorl %r11d, %r11d - 0x48, 0x01, 0xc6, //0x0000158c addq %rax, %rsi - 0x41, 0x0f, 0x92, 0xc3, //0x0000158f setb %r11b - 0x48, 0x01, 0xf6, //0x00001593 addq %rsi, %rsi - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001596 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc6, //0x000015a0 xorq %rax, %rsi - 0x48, 0x21, 0xde, //0x000015a3 andq %rbx, %rsi - 0x48, 0xf7, 0xd6, //0x000015a6 notq %rsi - //0x000015a9 LBB0_320 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000015a9 movq $8(%rsp), %r8 - 0xc5, 0x8d, 0x74, 0xf1, //0x000015ae vpcmpeqb %ymm1, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x000015b2 vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x000015b6 shlq $32, %rax - 0xc5, 0x85, 0x74, 0xf1, //0x000015ba vpcmpeqb %ymm1, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x000015be vpmovmskb %ymm6, %edi - 0x48, 0x09, 0xc7, //0x000015c2 orq %rax, %rdi - 0x48, 0x21, 0xf7, //0x000015c5 andq %rsi, %rdi - 0xc4, 0xe1, 0xf9, 0x6e, 0xf7, //0x000015c8 vmovq %rdi, %xmm6 - 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x000015cd vpclmulqdq $0, %xmm9, %xmm6, %xmm6 - 0xc4, 0xe1, 0xf9, 0x7e, 0xf1, //0x000015d3 vmovq %xmm6, %rcx - 0x4c, 0x31, 0xd1, //0x000015d8 xorq %r10, %rcx - 0xc4, 0xc1, 0x05, 0x74, 0xf4, //0x000015db vpcmpeqb %ymm12, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x000015e0 vpmovmskb %ymm6, %edi - 0xc4, 0xc1, 0x0d, 0x74, 0xf4, //0x000015e4 vpcmpeqb %ymm12, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x000015e9 vpmovmskb %ymm6, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x000015ed shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000015f1 orq %rax, %rdi - 0x48, 0x89, 0xce, //0x000015f4 movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x000015f7 notq %rsi - 0x48, 0x21, 0xf7, //0x000015fa andq %rsi, %rdi - 0xc4, 0xc1, 0x05, 0x74, 0xf5, //0x000015fd vpcmpeqb %ymm13, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x00001602 vpmovmskb %ymm6, %eax - 0xc4, 0xc1, 0x0d, 0x74, 0xf5, //0x00001606 vpcmpeqb %ymm13, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xde, //0x0000160b vpmovmskb %ymm6, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x0000160f shlq $32, %rbx - 0x48, 0x09, 0xd8, //0x00001613 orq %rbx, %rax - 0x48, 0x21, 0xf0, //0x00001616 andq %rsi, %rax - 0x0f, 0x84, 0xe4, 0xfe, 0xff, 0xff, //0x00001619 je LBB0_315 - 0x90, //0x0000161f .p2align 4, 0x90 - //0x00001620 LBB0_321 - 0x48, 0x8d, 0x58, 0xff, //0x00001620 leaq $-1(%rax), %rbx - 0x48, 0x89, 0xde, //0x00001624 movq %rbx, %rsi - 0x48, 0x21, 0xfe, //0x00001627 andq %rdi, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x0000162a popcntq %rsi, %rsi - 0x4c, 0x01, 0xf6, //0x0000162f addq %r14, %rsi - 0x48, 0x39, 0xd6, //0x00001632 cmpq %rdx, %rsi - 0x0f, 0x86, 0x3a, 0x01, 0x00, 0x00, //0x00001635 jbe LBB0_339 - 0x48, 0x83, 0xc2, 0x01, //0x0000163b addq $1, %rdx - 0x48, 0x21, 0xd8, //0x0000163f andq %rbx, %rax - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001642 jne LBB0_321 - 0xe9, 0xb6, 0xfe, 0xff, 0xff, //0x00001648 jmp LBB0_315 - //0x0000164d LBB0_323 - 0x4d, 0x85, 0xc9, //0x0000164d testq %r9, %r9 - 0x0f, 0x8e, 0x25, 0x08, 0x00, 0x00, //0x00001650 jle LBB0_382 - 0xc5, 0xc9, 0xef, 0xf6, //0x00001656 vpxor %xmm6, %xmm6, %xmm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x0000165a vmovdqu %ymm6, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001660 vmovdqu %ymm6, $64(%rsp) - 0x44, 0x89, 0xe0, //0x00001666 movl %r12d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001669 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x0000166e cmpl $4033, %eax - 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x00001673 jb LBB0_327 - 0x49, 0x83, 0xf9, 0x20, //0x00001679 cmpq $32, %r9 - 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x0000167d jb LBB0_328 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00001683 vmovdqu (%r12), %ymm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001689 vmovdqu %ymm6, $64(%rsp) - 0x49, 0x83, 0xc4, 0x20, //0x0000168f addq $32, %r12 - 0x49, 0x8d, 0x79, 0xe0, //0x00001693 leaq $-32(%r9), %rdi - 0x4c, 0x8d, 0x44, 0x24, 0x60, //0x00001697 leaq $96(%rsp), %r8 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000169c jmp LBB0_329 - //0x000016a1 LBB0_327 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x000016a1 movq $40(%rsp), %r13 - 0xe9, 0x79, 0xfe, 0xff, 0xff, //0x000016a6 jmp LBB0_317 - //0x000016ab LBB0_328 - 0x4c, 0x8d, 0x44, 0x24, 0x40, //0x000016ab leaq $64(%rsp), %r8 - 0x4c, 0x89, 0xcf, //0x000016b0 movq %r9, %rdi - //0x000016b3 LBB0_329 - 0x48, 0x83, 0xff, 0x10, //0x000016b3 cmpq $16, %rdi - 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x000016b7 jb LBB0_330 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x000016bd vmovdqu (%r12), %xmm6 - 0xc4, 0xc1, 0x7a, 0x7f, 0x30, //0x000016c3 vmovdqu %xmm6, (%r8) - 0x49, 0x83, 0xc4, 0x10, //0x000016c8 addq $16, %r12 - 0x49, 0x83, 0xc0, 0x10, //0x000016cc addq $16, %r8 - 0x48, 0x83, 0xc7, 0xf0, //0x000016d0 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x000016d4 cmpq $8, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000016d8 jae LBB0_337 - //0x000016de LBB0_331 - 0x48, 0x83, 0xff, 0x04, //0x000016de cmpq $4, %rdi - 0x0f, 0x8c, 0x49, 0x00, 0x00, 0x00, //0x000016e2 jl LBB0_332 - //0x000016e8 LBB0_338 - 0x41, 0x8b, 0x04, 0x24, //0x000016e8 movl (%r12), %eax - 0x41, 0x89, 0x00, //0x000016ec movl %eax, (%r8) - 0x49, 0x83, 0xc4, 0x04, //0x000016ef addq $4, %r12 - 0x49, 0x83, 0xc0, 0x04, //0x000016f3 addq $4, %r8 - 0x48, 0x83, 0xc7, 0xfc, //0x000016f7 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x000016fb cmpq $2, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000016ff jae LBB0_333 - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001705 jmp LBB0_334 - //0x0000170a LBB0_330 - 0x48, 0x83, 0xff, 0x08, //0x0000170a cmpq $8, %rdi - 0x0f, 0x82, 0xca, 0xff, 0xff, 0xff, //0x0000170e jb LBB0_331 - //0x00001714 LBB0_337 - 0x49, 0x8b, 0x04, 0x24, //0x00001714 movq (%r12), %rax - 0x49, 0x89, 0x00, //0x00001718 movq %rax, (%r8) - 0x49, 0x83, 0xc4, 0x08, //0x0000171b addq $8, %r12 - 0x49, 0x83, 0xc0, 0x08, //0x0000171f addq $8, %r8 - 0x48, 0x83, 0xc7, 0xf8, //0x00001723 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001727 cmpq $4, %rdi - 0x0f, 0x8d, 0xb7, 0xff, 0xff, 0xff, //0x0000172b jge LBB0_338 - //0x00001731 LBB0_332 - 0x48, 0x83, 0xff, 0x02, //0x00001731 cmpq $2, %rdi - 0x0f, 0x82, 0x15, 0x00, 0x00, 0x00, //0x00001735 jb LBB0_334 - //0x0000173b LBB0_333 - 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x0000173b movzwl (%r12), %eax - 0x66, 0x41, 0x89, 0x00, //0x00001740 movw %ax, (%r8) - 0x49, 0x83, 0xc4, 0x02, //0x00001744 addq $2, %r12 - 0x49, 0x83, 0xc0, 0x02, //0x00001748 addq $2, %r8 - 0x48, 0x83, 0xc7, 0xfe, //0x0000174c addq $-2, %rdi - //0x00001750 LBB0_334 - 0x4c, 0x89, 0xe0, //0x00001750 movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00001753 leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x00001758 testq %rdi, %rdi - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x0000175b movq $40(%rsp), %r13 - 0x0f, 0x84, 0xbe, 0xfd, 0xff, 0xff, //0x00001760 je LBB0_317 - 0x8a, 0x00, //0x00001766 movb (%rax), %al - 0x41, 0x88, 0x00, //0x00001768 movb %al, (%r8) - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x0000176b leaq $64(%rsp), %r12 - 0xe9, 0xaf, 0xfd, 0xff, 0xff, //0x00001770 jmp LBB0_317 - //0x00001775 LBB0_339 - 0x49, 0x8b, 0x4d, 0x00, //0x00001775 movq (%r13), %rcx - 0x48, 0x0f, 0xbc, 0xc0, //0x00001779 bsfq %rax, %rax - 0x4c, 0x29, 0xc8, //0x0000177d subq %r9, %rax - 0x4c, 0x8d, 0x34, 0x08, //0x00001780 leaq (%rax,%rcx), %r14 - 0x49, 0x83, 0xc6, 0x01, //0x00001784 addq $1, %r14 - 0x4d, 0x89, 0x30, //0x00001788 movq %r14, (%r8) - 0x49, 0x8b, 0x45, 0x00, //0x0000178b movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x0000178f cmpq %rax, %r14 - 0x4c, 0x0f, 0x47, 0xf0, //0x00001792 cmovaq %rax, %r14 - //0x00001796 LBB0_340 - 0x4d, 0x89, 0x30, //0x00001796 movq %r14, (%r8) - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00001799 movq $32(%rsp), %r11 - 0xe9, 0x93, 0xfb, 0xff, 0xff, //0x0000179e jmp LBB0_283 - //0x000017a3 LBB0_341 - 0x41, 0x0f, 0xbc, 0xca, //0x000017a3 bsfl %r10d, %ecx - 0x48, 0x01, 0xc1, //0x000017a7 addq %rax, %rcx - 0x4d, 0x8d, 0x34, 0x0f, //0x000017aa leaq (%r15,%rcx), %r14 - 0x49, 0x83, 0xc6, 0x02, //0x000017ae addq $2, %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000017b2 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x30, //0x000017b7 movq %r14, (%r8) - //0x000017ba LBB0_342 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x000017ba movq $32(%rsp), %r11 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x000017bf movq $24(%rsp), %r15 - 0xe9, 0x6d, 0xfb, 0xff, 0xff, //0x000017c4 jmp LBB0_283 - //0x000017c9 LBB0_343 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000017c9 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000017d0 movl $2, %esi - 0x48, 0x01, 0xf0, //0x000017d5 addq %rsi, %rax - 0x49, 0x01, 0xd7, //0x000017d8 addq %rdx, %r15 - 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x000017db jle LBB0_255 - //0x000017e1 LBB0_344 - 0x0f, 0xb6, 0x10, //0x000017e1 movzbl (%rax), %edx - 0x80, 0xfa, 0x5c, //0x000017e4 cmpb $92, %dl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x000017e7 je LBB0_343 - 0x80, 0xfa, 0x22, //0x000017ed cmpb $34, %dl - 0x0f, 0x84, 0x6c, 0x04, 0x00, 0x00, //0x000017f0 je LBB0_352 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000017f6 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000017fd movl $1, %esi - 0x48, 0x01, 0xf0, //0x00001802 addq %rsi, %rax - 0x49, 0x01, 0xd7, //0x00001805 addq %rdx, %r15 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00001808 jg LBB0_344 - //0x0000180e LBB0_255 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x0000180e movq $24(%rsp), %r15 - 0xe9, 0x1e, 0xfb, 0xff, 0xff, //0x00001813 jmp LBB0_283 - //0x00001818 LBB0_347 - 0x66, 0x0f, 0xbc, 0xca, //0x00001818 bsfw %dx, %cx - 0x44, 0x0f, 0xb7, 0xf1, //0x0000181c movzwl %cx, %r14d - 0x49, 0x29, 0xc6, //0x00001820 subq %rax, %r14 - 0x4d, 0x89, 0x30, //0x00001823 movq %r14, (%r8) - 0xe9, 0x0b, 0xfb, 0xff, 0xff, //0x00001826 jmp LBB0_283 - //0x0000182b LBB0_117 - 0x4c, 0x29, 0xe3, //0x0000182b subq %r12, %rbx - 0x48, 0x01, 0xd3, //0x0000182e addq %rdx, %rbx - 0x48, 0x39, 0xc3, //0x00001831 cmpq %rax, %rbx - 0x0f, 0x82, 0xb7, 0xee, 0xff, 0xff, //0x00001834 jb LBB0_68 - 0xe9, 0x48, 0x34, 0x00, 0x00, //0x0000183a jmp LBB0_1024 - //0x0000183f LBB0_348 - 0x4c, 0x29, 0xe1, //0x0000183f subq %r12, %rcx - 0x48, 0x01, 0xf9, //0x00001842 addq %rdi, %rcx - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001845 movq $8(%rsp), %r8 - 0x48, 0x39, 0xc1, //0x0000184a cmpq %rax, %rcx - 0x0f, 0x82, 0x3e, 0xf4, 0xff, 0xff, //0x0000184d jb LBB0_192 - 0xe9, 0x2f, 0x34, 0x00, 0x00, //0x00001853 jmp LBB0_1024 - //0x00001858 LBB0_349 - 0x4c, 0x29, 0xe1, //0x00001858 subq %r12, %rcx - 0x48, 0x01, 0xf1, //0x0000185b addq %rsi, %rcx - 0x48, 0x39, 0xc1, //0x0000185e cmpq %rax, %rcx - 0x0f, 0x82, 0x6a, 0xfc, 0xff, 0xff, //0x00001861 jb LBB0_313 - 0xe9, 0x1b, 0x34, 0x00, 0x00, //0x00001867 jmp LBB0_1024 - //0x0000186c LBB0_350 - 0x4c, 0x29, 0xe0, //0x0000186c subq %r12, %rax - 0x48, 0x01, 0xc8, //0x0000186f addq %rcx, %rax - 0x48, 0x39, 0xd0, //0x00001872 cmpq %rdx, %rax - 0x0f, 0x82, 0xc6, 0xf5, 0xff, 0xff, //0x00001875 jb LBB0_224 - 0xe9, 0xb6, 0xfa, 0xff, 0xff, //0x0000187b jmp LBB0_283 - //0x00001880 LBB0_118 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001880 movq $-1, %rsi - 0x45, 0x31, 0xc0, //0x00001887 xorl %r8d, %r8d - 0x4d, 0x89, 0xde, //0x0000188a movq %r11, %r14 - 0x48, 0x83, 0xf9, 0x20, //0x0000188d cmpq $32, %rcx - 0x0f, 0x83, 0x0d, 0xf2, 0xff, 0xff, //0x00001891 jae LBB0_77 - 0xe9, 0xe7, 0x04, 0x00, 0x00, //0x00001897 jmp LBB0_365 - //0x0000189c LBB0_119 - 0x4c, 0x89, 0x7c, 0x24, 0x18, //0x0000189c movq %r15, $24(%rsp) - 0x48, 0xc7, 0x44, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, //0x000018a1 movq $0, $64(%rsp) - 0x49, 0x8d, 0x46, 0xff, //0x000018aa leaq $-1(%r14), %rax - 0x4f, 0x8d, 0x04, 0x34, //0x000018ae leaq (%r12,%r14), %r8 - 0x49, 0x83, 0xc0, 0xff, //0x000018b2 addq $-1, %r8 - 0x48, 0x8b, 0x4c, 0x24, 0x30, //0x000018b6 movq $48(%rsp), %rcx - 0x4c, 0x8d, 0x3c, 0x0f, //0x000018bb leaq (%rdi,%rcx), %r15 - 0x49, 0x39, 0xc1, //0x000018bf cmpq %rax, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x000018c2 movq $40(%rsp), %r13 - 0x0f, 0x8d, 0xac, 0x03, 0x00, 0x00, //0x000018c7 jge LBB0_151 - 0x48, 0x85, 0xc9, //0x000018cd testq %rcx, %rcx - 0x0f, 0x8e, 0xa3, 0x03, 0x00, 0x00, //0x000018d0 jle LBB0_151 - //0x000018d6 LBB0_121 - 0x41, 0x8a, 0x03, //0x000018d6 movb (%r11), %al - 0x3c, 0x5c, //0x000018d9 cmpb $92, %al - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x000018db jne LBB0_126 - 0x4c, 0x89, 0xc2, //0x000018e1 movq %r8, %rdx - 0x4c, 0x29, 0xda, //0x000018e4 subq %r11, %rdx - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000018e7 movq $-1, %r13 - 0x48, 0x85, 0xd2, //0x000018ee testq %rdx, %rdx - 0x0f, 0x8e, 0xd1, 0x3c, 0x00, 0x00, //0x000018f1 jle LBB0_1124 - 0x41, 0x0f, 0xb6, 0x43, 0x01, //0x000018f7 movzbl $1(%r11), %eax - 0x48, 0x8d, 0x0d, 0xfd, 0x45, 0x00, 0x00, //0x000018fc leaq $17917(%rip), %rcx /* __UnquoteTab+0(%rip) */ - 0x8a, 0x1c, 0x08, //0x00001903 movb (%rax,%rcx), %bl - 0x80, 0xfb, 0xff, //0x00001906 cmpb $-1, %bl - 0x0f, 0x84, 0x34, 0x00, 0x00, 0x00, //0x00001909 je LBB0_128 - 0x84, 0xdb, //0x0000190f testb %bl, %bl - 0x0f, 0x84, 0x9d, 0x3c, 0x00, 0x00, //0x00001911 je LBB0_1122 - 0x88, 0x5c, 0x24, 0x40, //0x00001917 movb %bl, $64(%rsp) - 0x49, 0x83, 0xc3, 0x02, //0x0000191b addq $2, %r11 - 0xba, 0x01, 0x00, 0x00, 0x00, //0x0000191f movl $1, %edx - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001924 movq $40(%rsp), %r13 - 0xe9, 0x26, 0x01, 0x00, 0x00, //0x00001929 jmp LBB0_139 - //0x0000192e LBB0_126 - 0x3a, 0x07, //0x0000192e cmpb (%rdi), %al - 0x0f, 0x85, 0xa3, 0x03, 0x00, 0x00, //0x00001930 jne LBB0_358 - 0x49, 0x83, 0xc3, 0x01, //0x00001936 addq $1, %r11 - 0x48, 0x83, 0xc7, 0x01, //0x0000193a addq $1, %rdi - 0xe9, 0x82, 0x01, 0x00, 0x00, //0x0000193e jmp LBB0_149 - //0x00001943 LBB0_128 - 0x48, 0x83, 0xfa, 0x04, //0x00001943 cmpq $4, %rdx - 0x0f, 0x8c, 0x77, 0x3c, 0x00, 0x00, //0x00001947 jl LBB0_1123 - 0x49, 0x89, 0xf9, //0x0000194d movq %rdi, %r9 - 0x4d, 0x8d, 0x53, 0x02, //0x00001950 leaq $2(%r11), %r10 - 0x41, 0x8b, 0x73, 0x02, //0x00001954 movl $2(%r11), %esi - 0x89, 0xf7, //0x00001958 movl %esi, %edi - 0xf7, 0xd7, //0x0000195a notl %edi - 0x8d, 0x9e, 0xd0, 0xcf, 0xcf, 0xcf, //0x0000195c leal $-808464432(%rsi), %ebx - 0x81, 0xe7, 0x80, 0x80, 0x80, 0x80, //0x00001962 andl $-2139062144, %edi - 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00001968 movq $-2, %r13 - 0x85, 0xdf, //0x0000196f testl %ebx, %edi - 0x0f, 0x85, 0x0e, 0x3c, 0x00, 0x00, //0x00001971 jne LBB0_1134 - 0x8d, 0x9e, 0x19, 0x19, 0x19, 0x19, //0x00001977 leal $421075225(%rsi), %ebx - 0x09, 0xf3, //0x0000197d orl %esi, %ebx - 0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x0000197f testl $-2139062144, %ebx - 0x0f, 0x85, 0xfa, 0x3b, 0x00, 0x00, //0x00001985 jne LBB0_1134 - 0x89, 0xf3, //0x0000198b movl %esi, %ebx - 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x0000198d andl $2139062143, %ebx - 0xb8, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001993 movl $-1061109568, %eax - 0x29, 0xd8, //0x00001998 subl %ebx, %eax - 0x8d, 0x8b, 0x46, 0x46, 0x46, 0x46, //0x0000199a leal $1179010630(%rbx), %ecx - 0x21, 0xf8, //0x000019a0 andl %edi, %eax - 0x85, 0xc8, //0x000019a2 testl %ecx, %eax - 0x0f, 0x85, 0xdb, 0x3b, 0x00, 0x00, //0x000019a4 jne LBB0_1134 - 0xb8, 0xe0, 0xe0, 0xe0, 0xe0, //0x000019aa movl $-522133280, %eax - 0x29, 0xd8, //0x000019af subl %ebx, %eax - 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x000019b1 addl $960051513, %ebx - 0x21, 0xc7, //0x000019b7 andl %eax, %edi - 0x85, 0xdf, //0x000019b9 testl %ebx, %edi - 0x0f, 0x85, 0x0a, 0x3c, 0x00, 0x00, //0x000019bb jne LBB0_1125 - 0x0f, 0xce, //0x000019c1 bswapl %esi - 0x89, 0xf0, //0x000019c3 movl %esi, %eax - 0xc1, 0xe8, 0x04, //0x000019c5 shrl $4, %eax - 0xf7, 0xd0, //0x000019c8 notl %eax - 0x25, 0x01, 0x01, 0x01, 0x01, //0x000019ca andl $16843009, %eax - 0x8d, 0x04, 0xc0, //0x000019cf leal (%rax,%rax,8), %eax - 0x81, 0xe6, 0x0f, 0x0f, 0x0f, 0x0f, //0x000019d2 andl $252645135, %esi - 0x01, 0xc6, //0x000019d8 addl %eax, %esi - 0x89, 0xf3, //0x000019da movl %esi, %ebx - 0xc1, 0xeb, 0x04, //0x000019dc shrl $4, %ebx - 0x09, 0xf3, //0x000019df orl %esi, %ebx - 0x89, 0xde, //0x000019e1 movl %ebx, %esi - 0xc1, 0xee, 0x08, //0x000019e3 shrl $8, %esi - 0x81, 0xe6, 0x00, 0xff, 0x00, 0x00, //0x000019e6 andl $65280, %esi - 0x0f, 0xb6, 0xfb, //0x000019ec movzbl %bl, %edi - 0x09, 0xf7, //0x000019ef orl %esi, %edi - 0x4d, 0x8d, 0x53, 0x06, //0x000019f1 leaq $6(%r11), %r10 - 0x83, 0xff, 0x7f, //0x000019f5 cmpl $127, %edi - 0x0f, 0x86, 0xde, 0x00, 0x00, 0x00, //0x000019f8 jbe LBB0_177 - 0x81, 0xff, 0xff, 0x07, 0x00, 0x00, //0x000019fe cmpl $2047, %edi - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001a04 movq $40(%rsp), %r13 - 0x0f, 0x86, 0xde, 0x00, 0x00, 0x00, //0x00001a09 jbe LBB0_178 - 0x89, 0xd8, //0x00001a0f movl %ebx, %eax - 0x25, 0x00, 0x00, 0xf8, 0x00, //0x00001a11 andl $16252928, %eax - 0x3d, 0x00, 0x00, 0xd8, 0x00, //0x00001a16 cmpl $14155776, %eax - 0x0f, 0x84, 0xee, 0x00, 0x00, 0x00, //0x00001a1b je LBB0_179 - 0xc1, 0xee, 0x0c, //0x00001a21 shrl $12, %esi - 0x40, 0x80, 0xce, 0xe0, //0x00001a24 orb $-32, %sil - 0x40, 0x88, 0x74, 0x24, 0x40, //0x00001a28 movb %sil, $64(%rsp) - 0xc1, 0xef, 0x06, //0x00001a2d shrl $6, %edi - 0x40, 0x80, 0xe7, 0x3f, //0x00001a30 andb $63, %dil - 0x40, 0x80, 0xcf, 0x80, //0x00001a34 orb $-128, %dil - 0x40, 0x88, 0x7c, 0x24, 0x41, //0x00001a38 movb %dil, $65(%rsp) - 0x80, 0xe3, 0x3f, //0x00001a3d andb $63, %bl - 0x80, 0xcb, 0x80, //0x00001a40 orb $-128, %bl - 0x88, 0x5c, 0x24, 0x42, //0x00001a43 movb %bl, $66(%rsp) - 0xba, 0x03, 0x00, 0x00, 0x00, //0x00001a47 movl $3, %edx - 0x89, 0xf3, //0x00001a4c movl %esi, %ebx - //0x00001a4e LBB0_137 - 0x4d, 0x89, 0xd3, //0x00001a4e movq %r10, %r11 - //0x00001a51 LBB0_138 - 0x4c, 0x89, 0xcf, //0x00001a51 movq %r9, %rdi - //0x00001a54 LBB0_139 - 0x48, 0x8d, 0x04, 0x14, //0x00001a54 leaq (%rsp,%rdx), %rax - 0x48, 0x83, 0xc0, 0x40, //0x00001a58 addq $64, %rax - 0x4c, 0x39, 0xff, //0x00001a5c cmpq %r15, %rdi - 0x0f, 0x83, 0x52, 0x00, 0x00, 0x00, //0x00001a5f jae LBB0_147 - 0x48, 0x8d, 0x4c, 0x24, 0x40, //0x00001a65 leaq $64(%rsp), %rcx - 0x48, 0x39, 0xc8, //0x00001a6a cmpq %rcx, %rax - 0x0f, 0x86, 0x44, 0x00, 0x00, 0x00, //0x00001a6d jbe LBB0_147 - 0x38, 0x1f, //0x00001a73 cmpb %bl, (%rdi) - 0x0f, 0x85, 0x3c, 0x00, 0x00, 0x00, //0x00001a75 jne LBB0_147 - 0x48, 0x83, 0xc7, 0x01, //0x00001a7b addq $1, %rdi - 0x48, 0x8d, 0x74, 0x24, 0x41, //0x00001a7f leaq $65(%rsp), %rsi - //0x00001a84 LBB0_143 - 0x48, 0x89, 0xf2, //0x00001a84 movq %rsi, %rdx - 0x4c, 0x39, 0xff, //0x00001a87 cmpq %r15, %rdi - 0x0f, 0x83, 0x2c, 0x00, 0x00, 0x00, //0x00001a8a jae LBB0_148 - 0x48, 0x39, 0xc2, //0x00001a90 cmpq %rax, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001a93 jae LBB0_148 - 0x0f, 0xb6, 0x0f, //0x00001a99 movzbl (%rdi), %ecx - 0x48, 0x89, 0xfb, //0x00001a9c movq %rdi, %rbx - 0x48, 0x83, 0xc7, 0x01, //0x00001a9f addq $1, %rdi - 0x48, 0x8d, 0x72, 0x01, //0x00001aa3 leaq $1(%rdx), %rsi - 0x3a, 0x0a, //0x00001aa7 cmpb (%rdx), %cl - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00001aa9 je LBB0_143 - 0x48, 0x89, 0xdf, //0x00001aaf movq %rbx, %rdi - 0xe9, 0x05, 0x00, 0x00, 0x00, //0x00001ab2 jmp LBB0_148 - //0x00001ab7 LBB0_147 - 0x48, 0x8d, 0x54, 0x24, 0x40, //0x00001ab7 leaq $64(%rsp), %rdx - //0x00001abc LBB0_148 - 0x48, 0x39, 0xc2, //0x00001abc cmpq %rax, %rdx - 0x0f, 0x85, 0x14, 0x02, 0x00, 0x00, //0x00001abf jne LBB0_358 - //0x00001ac5 LBB0_149 - 0x4d, 0x39, 0xc3, //0x00001ac5 cmpq %r8, %r11 - 0x0f, 0x83, 0xab, 0x01, 0x00, 0x00, //0x00001ac8 jae LBB0_151 - 0x4c, 0x39, 0xff, //0x00001ace cmpq %r15, %rdi - 0x0f, 0x82, 0xff, 0xfd, 0xff, 0xff, //0x00001ad1 jb LBB0_121 - 0xe9, 0x9d, 0x01, 0x00, 0x00, //0x00001ad7 jmp LBB0_151 - //0x00001adc LBB0_177 - 0x88, 0x5c, 0x24, 0x40, //0x00001adc movb %bl, $64(%rsp) - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00001ae0 movl $1, %edx - 0x4d, 0x89, 0xd3, //0x00001ae5 movq %r10, %r11 - 0xe9, 0x49, 0x01, 0x00, 0x00, //0x00001ae8 jmp LBB0_189 - //0x00001aed LBB0_178 - 0xc1, 0xef, 0x06, //0x00001aed shrl $6, %edi - 0x40, 0x80, 0xcf, 0xc0, //0x00001af0 orb $-64, %dil - 0x40, 0x88, 0x7c, 0x24, 0x40, //0x00001af4 movb %dil, $64(%rsp) - 0x80, 0xe3, 0x3f, //0x00001af9 andb $63, %bl - 0x80, 0xcb, 0x80, //0x00001afc orb $-128, %bl - 0x88, 0x5c, 0x24, 0x41, //0x00001aff movb %bl, $65(%rsp) - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00001b03 movl $2, %edx - 0x89, 0xfb, //0x00001b08 movl %edi, %ebx - 0xe9, 0x3f, 0xff, 0xff, 0xff, //0x00001b0a jmp LBB0_137 - //0x00001b0f LBB0_179 - 0x49, 0xc7, 0xc5, 0xfc, 0xff, 0xff, 0xff, //0x00001b0f movq $-4, %r13 - 0x48, 0x83, 0xfa, 0x06, //0x00001b16 cmpq $6, %rdx - 0x0f, 0x8c, 0xab, 0x3a, 0x00, 0x00, //0x00001b1a jl LBB0_1125 - 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x00001b20 cmpl $56319, %edi - 0x0f, 0x87, 0x9f, 0x3a, 0x00, 0x00, //0x00001b26 ja LBB0_1125 - 0x41, 0x80, 0x3a, 0x5c, //0x00001b2c cmpb $92, (%r10) - 0x0f, 0x85, 0x95, 0x3a, 0x00, 0x00, //0x00001b30 jne LBB0_1125 - 0x41, 0x80, 0x7b, 0x07, 0x75, //0x00001b36 cmpb $117, $7(%r11) - 0x0f, 0x85, 0x8a, 0x3a, 0x00, 0x00, //0x00001b3b jne LBB0_1125 - 0x4c, 0x89, 0xd8, //0x00001b41 movq %r11, %rax - 0x4d, 0x8d, 0x53, 0x08, //0x00001b44 leaq $8(%r11), %r10 - 0x41, 0x8b, 0x53, 0x08, //0x00001b48 movl $8(%r11), %edx - 0x89, 0xd6, //0x00001b4c movl %edx, %esi - 0xf7, 0xd6, //0x00001b4e notl %esi - 0x8d, 0x82, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001b50 leal $-808464432(%rdx), %eax - 0x81, 0xe6, 0x80, 0x80, 0x80, 0x80, //0x00001b56 andl $-2139062144, %esi - 0x85, 0xc6, //0x00001b5c testl %eax, %esi - 0x0f, 0x85, 0x21, 0x3a, 0x00, 0x00, //0x00001b5e jne LBB0_1134 - 0x8d, 0x82, 0x19, 0x19, 0x19, 0x19, //0x00001b64 leal $421075225(%rdx), %eax - 0x09, 0xd0, //0x00001b6a orl %edx, %eax - 0xa9, 0x80, 0x80, 0x80, 0x80, //0x00001b6c testl $-2139062144, %eax - 0x0f, 0x85, 0x0e, 0x3a, 0x00, 0x00, //0x00001b71 jne LBB0_1134 - 0x89, 0xd3, //0x00001b77 movl %edx, %ebx - 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001b79 andl $2139062143, %ebx - 0xb8, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001b7f movl $-1061109568, %eax - 0x29, 0xd8, //0x00001b84 subl %ebx, %eax - 0x8d, 0x8b, 0x46, 0x46, 0x46, 0x46, //0x00001b86 leal $1179010630(%rbx), %ecx - 0x21, 0xf0, //0x00001b8c andl %esi, %eax - 0x85, 0xc8, //0x00001b8e testl %ecx, %eax - 0x0f, 0x85, 0xef, 0x39, 0x00, 0x00, //0x00001b90 jne LBB0_1134 - 0xb8, 0xe0, 0xe0, 0xe0, 0xe0, //0x00001b96 movl $-522133280, %eax - 0x29, 0xd8, //0x00001b9b subl %ebx, %eax - 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x00001b9d addl $960051513, %ebx - 0x21, 0xc6, //0x00001ba3 andl %eax, %esi - 0x85, 0xde, //0x00001ba5 testl %ebx, %esi - 0x0f, 0x85, 0xd8, 0x39, 0x00, 0x00, //0x00001ba7 jne LBB0_1134 - 0x0f, 0xca, //0x00001bad bswapl %edx - 0x89, 0xd0, //0x00001baf movl %edx, %eax - 0xc1, 0xe8, 0x04, //0x00001bb1 shrl $4, %eax - 0xf7, 0xd0, //0x00001bb4 notl %eax - 0x25, 0x01, 0x01, 0x01, 0x01, //0x00001bb6 andl $16843009, %eax - 0x8d, 0x04, 0xc0, //0x00001bbb leal (%rax,%rax,8), %eax - 0x81, 0xe2, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001bbe andl $252645135, %edx - 0x01, 0xc2, //0x00001bc4 addl %eax, %edx - 0x89, 0xd6, //0x00001bc6 movl %edx, %esi - 0xc1, 0xee, 0x04, //0x00001bc8 shrl $4, %esi - 0x09, 0xd6, //0x00001bcb orl %edx, %esi - 0x89, 0xf0, //0x00001bcd movl %esi, %eax - 0x25, 0x00, 0x00, 0xfc, 0x00, //0x00001bcf andl $16515072, %eax - 0x3d, 0x00, 0x00, 0xdc, 0x00, //0x00001bd4 cmpl $14417920, %eax - 0x0f, 0x85, 0xec, 0x39, 0x00, 0x00, //0x00001bd9 jne LBB0_1125 - 0x89, 0xf0, //0x00001bdf movl %esi, %eax - 0xc1, 0xe8, 0x08, //0x00001be1 shrl $8, %eax - 0x25, 0x00, 0xff, 0x00, 0x00, //0x00001be4 andl $65280, %eax - 0x40, 0x0f, 0xb6, 0xce, //0x00001be9 movzbl %sil, %ecx - 0x09, 0xc1, //0x00001bed orl %eax, %ecx - 0xc1, 0xe7, 0x0a, //0x00001bef shll $10, %edi - 0x8d, 0x04, 0x39, //0x00001bf2 leal (%rcx,%rdi), %eax - 0x01, 0xf9, //0x00001bf5 addl %edi, %ecx - 0x81, 0xc1, 0x00, 0x24, 0xa0, 0xfc, //0x00001bf7 addl $-56613888, %ecx - 0x89, 0xcb, //0x00001bfd movl %ecx, %ebx - 0xc1, 0xeb, 0x12, //0x00001bff shrl $18, %ebx - 0x80, 0xcb, 0xf0, //0x00001c02 orb $-16, %bl - 0x88, 0x5c, 0x24, 0x40, //0x00001c05 movb %bl, $64(%rsp) - 0x89, 0xca, //0x00001c09 movl %ecx, %edx - 0xc1, 0xea, 0x0c, //0x00001c0b shrl $12, %edx - 0x80, 0xe2, 0x3f, //0x00001c0e andb $63, %dl - 0x80, 0xca, 0x80, //0x00001c11 orb $-128, %dl - 0x88, 0x54, 0x24, 0x41, //0x00001c14 movb %dl, $65(%rsp) - 0xc1, 0xe9, 0x06, //0x00001c18 shrl $6, %ecx - 0x80, 0xe1, 0x3f, //0x00001c1b andb $63, %cl - 0x80, 0xc9, 0x80, //0x00001c1e orb $-128, %cl - 0x88, 0x4c, 0x24, 0x42, //0x00001c21 movb %cl, $66(%rsp) - 0x24, 0x3f, //0x00001c25 andb $63, %al - 0x0c, 0x80, //0x00001c27 orb $-128, %al - 0x88, 0x44, 0x24, 0x43, //0x00001c29 movb %al, $67(%rsp) - 0x49, 0x83, 0xc3, 0x0c, //0x00001c2d addq $12, %r11 - 0xba, 0x04, 0x00, 0x00, 0x00, //0x00001c31 movl $4, %edx - //0x00001c36 LBB0_189 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001c36 movq $40(%rsp), %r13 - 0xe9, 0x11, 0xfe, 0xff, 0xff, //0x00001c3b jmp LBB0_138 - //0x00001c40 LBB0_190 - 0x4c, 0x01, 0xe3, //0x00001c40 addq %r12, %rbx - 0x48, 0x85, 0xc9, //0x00001c43 testq %rcx, %rcx - 0x0f, 0x85, 0x3e, 0xea, 0xff, 0xff, //0x00001c46 jne LBB0_61 - 0xe9, 0x70, 0xea, 0xff, 0xff, //0x00001c4c jmp LBB0_66 - //0x00001c51 LBB0_351 - 0x4c, 0x01, 0xe1, //0x00001c51 addq %r12, %rcx - 0x48, 0x85, 0xf6, //0x00001c54 testq %rsi, %rsi - 0x0f, 0x85, 0xcb, 0xef, 0xff, 0xff, //0x00001c57 jne LBB0_171 - 0xe9, 0x04, 0xf0, 0xff, 0xff, //0x00001c5d jmp LBB0_176 - //0x00001c62 LBB0_352 - 0x4c, 0x29, 0xe0, //0x00001c62 subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001c65 addq $1, %rax - 0x49, 0x89, 0x00, //0x00001c69 movq %rax, (%r8) - 0x49, 0x89, 0xc6, //0x00001c6c movq %rax, %r14 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x00001c6f movq $24(%rsp), %r15 - 0xe9, 0xbd, 0xf6, 0xff, 0xff, //0x00001c74 jmp LBB0_283 - //0x00001c79 LBB0_151 - 0x4d, 0x31, 0xc3, //0x00001c79 xorq %r8, %r11 - 0x4c, 0x31, 0xff, //0x00001c7c xorq %r15, %rdi - 0x45, 0x31, 0xc9, //0x00001c7f xorl %r9d, %r9d - 0x4c, 0x09, 0xdf, //0x00001c82 orq %r11, %rdi - 0x41, 0x0f, 0x94, 0xc1, //0x00001c85 sete %r9b - //0x00001c89 LBB0_152 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001c89 movq $8(%rsp), %r8 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x00001c8e movq $24(%rsp), %r15 - 0x49, 0x8b, 0x45, 0x00, //0x00001c93 movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00001c97 cmpq %rax, %r14 - 0x0f, 0x82, 0x0e, 0xec, 0xff, 0xff, //0x00001c9a jb LBB0_113 - 0xe9, 0x6b, 0xee, 0xff, 0xff, //0x00001ca0 jmp LBB0_153 - //0x00001ca5 LBB0_353 - 0x4c, 0x01, 0xe1, //0x00001ca5 addq %r12, %rcx - 0x48, 0x85, 0xd2, //0x00001ca8 testq %rdx, %rdx - 0x0f, 0x85, 0xc7, 0xf7, 0xff, 0xff, //0x00001cab jne LBB0_306 - 0xe9, 0xf9, 0xf7, 0xff, 0xff, //0x00001cb1 jmp LBB0_311 - //0x00001cb6 LBB0_354 - 0x4c, 0x01, 0xe0, //0x00001cb6 addq %r12, %rax - 0x48, 0x85, 0xf6, //0x00001cb9 testq %rsi, %rsi - 0x0f, 0x85, 0x26, 0xf1, 0xff, 0xff, //0x00001cbc jne LBB0_217 - 0xe9, 0x58, 0xf1, 0xff, 0xff, //0x00001cc2 jmp LBB0_222 - //0x00001cc7 LBB0_355 - 0x4d, 0x01, 0xe6, //0x00001cc7 addq %r12, %r14 - 0x48, 0x83, 0xf9, 0x10, //0x00001cca cmpq $16, %rcx - 0x0f, 0x83, 0x0e, 0xf2, 0xff, 0xff, //0x00001cce jae LBB0_231 - 0xe9, 0x4e, 0xf2, 0xff, 0xff, //0x00001cd4 jmp LBB0_234 - //0x00001cd9 LBB0_358 - 0x45, 0x31, 0xc9, //0x00001cd9 xorl %r9d, %r9d - 0xe9, 0xa8, 0xff, 0xff, 0xff, //0x00001cdc jmp LBB0_152 - //0x00001ce1 LBB0_356 - 0x4d, 0x29, 0xe6, //0x00001ce1 subq %r12, %r14 - 0x49, 0x01, 0xc6, //0x00001ce4 addq %rax, %r14 - //0x00001ce7 LBB0_357 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001ce7 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x30, //0x00001cec movq %r14, (%r8) - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001cef movq $40(%rsp), %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00001cf4 movq $32(%rsp), %r11 - 0xe9, 0x38, 0xf6, 0xff, 0xff, //0x00001cf9 jmp LBB0_283 - //0x00001cfe LBB0_359 - 0x4b, 0x8d, 0x04, 0x34, //0x00001cfe leaq (%r12,%r14), %rax - 0xe9, 0x64, 0xf3, 0xff, 0xff, //0x00001d02 jmp LBB0_254 - //0x00001d07 LBB0_360 - 0x49, 0x89, 0xf2, //0x00001d07 movq %rsi, %r10 - 0x49, 0x89, 0xfb, //0x00001d0a movq %rdi, %r11 - 0x4c, 0x89, 0xfa, //0x00001d0d movq %r15, %rdx - 0x48, 0x83, 0xfe, 0xff, //0x00001d10 cmpq $-1, %rsi - 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00001d14 jne LBB0_363 - 0x4c, 0x89, 0xf7, //0x00001d1a movq %r14, %rdi - 0x4c, 0x29, 0xe7, //0x00001d1d subq %r12, %rdi - 0x49, 0x0f, 0xbc, 0xf5, //0x00001d20 bsfq %r13, %rsi - 0x48, 0x01, 0xfe, //0x00001d24 addq %rdi, %rsi - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00001d27 jmp LBB0_363 - //0x00001d2c LBB0_362 - 0x49, 0x89, 0xfb, //0x00001d2c movq %rdi, %r11 - 0x4c, 0x89, 0xfa, //0x00001d2f movq %r15, %rdx - //0x00001d32 LBB0_363 - 0x45, 0x89, 0xc2, //0x00001d32 movl %r8d, %r10d - 0x41, 0xf7, 0xd2, //0x00001d35 notl %r10d - 0x45, 0x21, 0xea, //0x00001d38 andl %r13d, %r10d - 0x43, 0x8d, 0x3c, 0x12, //0x00001d3b leal (%r10,%r10), %edi - 0x47, 0x8d, 0x3c, 0x50, //0x00001d3f leal (%r8,%r10,2), %r15d - 0xf7, 0xd7, //0x00001d43 notl %edi - 0x44, 0x21, 0xef, //0x00001d45 andl %r13d, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d48 andl $-1431655766, %edi - 0x45, 0x31, 0xc0, //0x00001d4e xorl %r8d, %r8d - 0x44, 0x01, 0xd7, //0x00001d51 addl %r10d, %edi - 0x41, 0x0f, 0x92, 0xc0, //0x00001d54 setb %r8b - 0x01, 0xff, //0x00001d58 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001d5a xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x00001d60 andl %r15d, %edi - 0xf7, 0xd7, //0x00001d63 notl %edi - 0x21, 0xf8, //0x00001d65 andl %edi, %eax - 0x49, 0x89, 0xd7, //0x00001d67 movq %rdx, %r15 - 0x4c, 0x89, 0xdf, //0x00001d6a movq %r11, %rdi - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00001d6d movq $56(%rsp), %r11 - 0x48, 0x85, 0xc0, //0x00001d72 testq %rax, %rax - 0x0f, 0x85, 0x5e, 0xed, 0xff, 0xff, //0x00001d75 jne LBB0_80 - //0x00001d7b LBB0_364 - 0x49, 0x83, 0xc6, 0x20, //0x00001d7b addq $32, %r14 - 0x48, 0x83, 0xc1, 0xe0, //0x00001d7f addq $-32, %rcx - //0x00001d83 LBB0_365 - 0x48, 0x89, 0xfa, //0x00001d83 movq %rdi, %rdx - 0x4d, 0x85, 0xc0, //0x00001d86 testq %r8, %r8 - 0x0f, 0x85, 0xb4, 0x00, 0x00, 0x00, //0x00001d89 jne LBB0_380 - 0x4d, 0x89, 0xe2, //0x00001d8f movq %r12, %r10 - 0x49, 0xf7, 0xd2, //0x00001d92 notq %r10 - 0x49, 0x89, 0xf0, //0x00001d95 movq %rsi, %r8 - 0x48, 0x85, 0xc9, //0x00001d98 testq %rcx, %rcx - 0x0f, 0x84, 0x7a, 0x00, 0x00, 0x00, //0x00001d9b je LBB0_378 - //0x00001da1 LBB0_367 - 0x49, 0x83, 0xc2, 0x01, //0x00001da1 addq $1, %r10 - //0x00001da5 LBB0_368 - 0x31, 0xff, //0x00001da5 xorl %edi, %edi - //0x00001da7 LBB0_369 - 0x41, 0x0f, 0xb6, 0x04, 0x3e, //0x00001da7 movzbl (%r14,%rdi), %eax - 0x3c, 0x22, //0x00001dac cmpb $34, %al - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x00001dae je LBB0_377 - 0x3c, 0x5c, //0x00001db4 cmpb $92, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001db6 je LBB0_374 - 0x48, 0x83, 0xc7, 0x01, //0x00001dbc addq $1, %rdi - 0x48, 0x39, 0xf9, //0x00001dc0 cmpq %rdi, %rcx - 0x0f, 0x85, 0xde, 0xff, 0xff, 0xff, //0x00001dc3 jne LBB0_369 - 0xe9, 0x5d, 0x00, 0x00, 0x00, //0x00001dc9 jmp LBB0_372 - //0x00001dce LBB0_374 - 0x48, 0x8d, 0x41, 0xff, //0x00001dce leaq $-1(%rcx), %rax - 0x48, 0x39, 0xf8, //0x00001dd2 cmpq %rdi, %rax - 0x0f, 0x84, 0x40, 0x38, 0x00, 0x00, //0x00001dd5 je LBB0_376 - 0x4b, 0x8d, 0x04, 0x32, //0x00001ddb leaq (%r10,%r14), %rax - 0x48, 0x01, 0xf8, //0x00001ddf addq %rdi, %rax - 0x49, 0x83, 0xf8, 0xff, //0x00001de2 cmpq $-1, %r8 - 0x48, 0x0f, 0x44, 0xf0, //0x00001de6 cmoveq %rax, %rsi - 0x4c, 0x0f, 0x44, 0xc0, //0x00001dea cmoveq %rax, %r8 - 0x49, 0x01, 0xfe, //0x00001dee addq %rdi, %r14 - 0x49, 0x83, 0xc6, 0x02, //0x00001df1 addq $2, %r14 - 0x48, 0x89, 0xc8, //0x00001df5 movq %rcx, %rax - 0x48, 0x29, 0xf8, //0x00001df8 subq %rdi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00001dfb addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00001dff addq $-2, %rcx - 0x48, 0x39, 0xf9, //0x00001e03 cmpq %rdi, %rcx - 0x48, 0x89, 0xc1, //0x00001e06 movq %rax, %rcx - 0x0f, 0x85, 0x96, 0xff, 0xff, 0xff, //0x00001e09 jne LBB0_368 - 0xe9, 0x07, 0x38, 0x00, 0x00, //0x00001e0f jmp LBB0_376 - //0x00001e14 LBB0_377 - 0x49, 0x01, 0xfe, //0x00001e14 addq %rdi, %r14 - 0x49, 0x83, 0xc6, 0x01, //0x00001e17 addq $1, %r14 - //0x00001e1b LBB0_378 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001e1b movq $8(%rsp), %r8 - 0x48, 0x89, 0xd7, //0x00001e20 movq %rdx, %rdi - //0x00001e23 LBB0_379 - 0x4d, 0x29, 0xe6, //0x00001e23 subq %r12, %r14 - 0xe9, 0x31, 0xea, 0xff, 0xff, //0x00001e26 jmp LBB0_85 - //0x00001e2b LBB0_372 - 0x3c, 0x22, //0x00001e2b cmpb $34, %al - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001e2d movq $8(%rsp), %r8 - 0x0f, 0x85, 0xd7, 0x35, 0x00, 0x00, //0x00001e32 jne LBB0_1102 - 0x48, 0x89, 0xd7, //0x00001e38 movq %rdx, %rdi - 0x49, 0x01, 0xce, //0x00001e3b addq %rcx, %r14 - 0xe9, 0xe0, 0xff, 0xff, 0xff, //0x00001e3e jmp LBB0_379 - //0x00001e43 LBB0_380 - 0x48, 0x85, 0xc9, //0x00001e43 testq %rcx, %rcx - 0x0f, 0x84, 0xcf, 0x37, 0x00, 0x00, //0x00001e46 je LBB0_376 - 0x4d, 0x89, 0xe2, //0x00001e4c movq %r12, %r10 - 0x49, 0xf7, 0xd2, //0x00001e4f notq %r10 - 0x4b, 0x8d, 0x04, 0x16, //0x00001e52 leaq (%r14,%r10), %rax - 0x48, 0x83, 0xfe, 0xff, //0x00001e56 cmpq $-1, %rsi - 0x49, 0x89, 0xf0, //0x00001e5a movq %rsi, %r8 - 0x48, 0x0f, 0x44, 0xf0, //0x00001e5d cmoveq %rax, %rsi - 0x4c, 0x0f, 0x44, 0xc0, //0x00001e61 cmoveq %rax, %r8 - 0x49, 0x83, 0xc6, 0x01, //0x00001e65 addq $1, %r14 - 0x48, 0x83, 0xc1, 0xff, //0x00001e69 addq $-1, %rcx - 0x48, 0x85, 0xc9, //0x00001e6d testq %rcx, %rcx - 0x0f, 0x85, 0x2b, 0xff, 0xff, 0xff, //0x00001e70 jne LBB0_367 - 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x00001e76 jmp LBB0_378 - //0x00001e7b LBB0_382 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001e7b movq $40(%rsp), %r13 - 0x4d, 0x8b, 0x75, 0x00, //0x00001e80 movq (%r13), %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001e84 movq $8(%rsp), %r8 - 0xe9, 0x08, 0xf9, 0xff, 0xff, //0x00001e89 jmp LBB0_340 - //0x00001e8e LBB0_383 - 0x49, 0x8d, 0x40, 0xff, //0x00001e8e leaq $-1(%r8), %rax - 0x4c, 0x39, 0xf8, //0x00001e92 cmpq %r15, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001e95 jne LBB0_385 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00001e9b movq $8(%rsp), %r8 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001ea0 movq $40(%rsp), %r13 - 0xe9, 0x10, 0xf9, 0xff, 0xff, //0x00001ea5 jmp LBB0_342 - //0x00001eaa LBB0_385 - 0x4b, 0x8d, 0x04, 0x0f, //0x00001eaa leaq (%r15,%r9), %rax - 0x48, 0x83, 0xc0, 0x02, //0x00001eae addq $2, %rax - 0x4d, 0x29, 0xf8, //0x00001eb2 subq %r15, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00001eb5 addq $-2, %r8 - 0x4d, 0x89, 0xc7, //0x00001eb9 movq %r8, %r15 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00001ebc movq $40(%rsp), %r13 - 0xe9, 0xa5, 0xf1, 0xff, 0xff, //0x00001ec1 jmp LBB0_254 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001ec6 .p2align 4, 0x90 - //0x00001ed0 LBB0_386 - 0x80, 0xf9, 0x5b, //0x00001ed0 cmpb $91, %cl - 0x0f, 0x85, 0xae, 0x2d, 0x00, 0x00, //0x00001ed3 jne LBB0_1024 - 0x49, 0x8b, 0x47, 0x08, //0x00001ed9 movq $8(%r15), %rax - 0x4c, 0x8b, 0x08, //0x00001edd movq (%rax), %r9 - 0x4d, 0x85, 0xc9, //0x00001ee0 testq %r9, %r9 - 0x0f, 0x88, 0xf2, 0x2b, 0x00, 0x00, //0x00001ee3 js LBB0_630 - 0x49, 0x8b, 0x4d, 0x00, //0x00001ee9 movq (%r13), %rcx - 0x49, 0x39, 0xce, //0x00001eed cmpq %rcx, %r14 - 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x00001ef0 jae LBB0_393 - 0x43, 0x8a, 0x04, 0x34, //0x00001ef6 movb (%r12,%r14), %al - 0x3c, 0x0d, //0x00001efa cmpb $13, %al - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x00001efc je LBB0_393 - 0x3c, 0x20, //0x00001f02 cmpb $32, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001f04 je LBB0_393 - 0x04, 0xf7, //0x00001f0a addb $-9, %al - 0x3c, 0x01, //0x00001f0c cmpb $1, %al - 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x00001f0e jbe LBB0_393 - 0x4c, 0x89, 0xf2, //0x00001f14 movq %r14, %rdx - 0xe9, 0x6d, 0x01, 0x00, 0x00, //0x00001f17 jmp LBB0_419 - 0x90, 0x90, 0x90, 0x90, //0x00001f1c .p2align 4, 0x90 - //0x00001f20 LBB0_393 - 0x49, 0x8d, 0x56, 0x01, //0x00001f20 leaq $1(%r14), %rdx - 0x48, 0x39, 0xca, //0x00001f24 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001f27 jae LBB0_397 - 0x41, 0x8a, 0x04, 0x14, //0x00001f2d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00001f31 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001f33 je LBB0_397 - 0x3c, 0x20, //0x00001f39 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x00001f3b je LBB0_397 - 0x04, 0xf7, //0x00001f41 addb $-9, %al - 0x3c, 0x01, //0x00001f43 cmpb $1, %al - 0x0f, 0x87, 0x3e, 0x01, 0x00, 0x00, //0x00001f45 ja LBB0_419 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f4b .p2align 4, 0x90 - //0x00001f50 LBB0_397 - 0x49, 0x8d, 0x56, 0x02, //0x00001f50 leaq $2(%r14), %rdx - 0x48, 0x39, 0xca, //0x00001f54 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001f57 jae LBB0_401 - 0x41, 0x8a, 0x04, 0x14, //0x00001f5d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00001f61 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001f63 je LBB0_401 - 0x3c, 0x20, //0x00001f69 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x00001f6b je LBB0_401 - 0x04, 0xf7, //0x00001f71 addb $-9, %al - 0x3c, 0x01, //0x00001f73 cmpb $1, %al - 0x0f, 0x87, 0x0e, 0x01, 0x00, 0x00, //0x00001f75 ja LBB0_419 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f7b .p2align 4, 0x90 - //0x00001f80 LBB0_401 - 0x49, 0x8d, 0x56, 0x03, //0x00001f80 leaq $3(%r14), %rdx - 0x48, 0x39, 0xca, //0x00001f84 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001f87 jae LBB0_405 - 0x41, 0x8a, 0x04, 0x14, //0x00001f8d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00001f91 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001f93 je LBB0_405 - 0x3c, 0x20, //0x00001f99 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x00001f9b je LBB0_405 - 0x04, 0xf7, //0x00001fa1 addb $-9, %al - 0x3c, 0x01, //0x00001fa3 cmpb $1, %al - 0x0f, 0x87, 0xde, 0x00, 0x00, 0x00, //0x00001fa5 ja LBB0_419 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001fab .p2align 4, 0x90 - //0x00001fb0 LBB0_405 - 0x49, 0x8d, 0x56, 0x04, //0x00001fb0 leaq $4(%r14), %rdx - 0x48, 0x89, 0xc8, //0x00001fb4 movq %rcx, %rax - 0x48, 0x29, 0xd0, //0x00001fb7 subq %rdx, %rax - 0x0f, 0x86, 0xb0, 0x00, 0x00, 0x00, //0x00001fba jbe LBB0_417 - 0x48, 0x83, 0xf8, 0x20, //0x00001fc0 cmpq $32, %rax - 0x0f, 0x82, 0x11, 0x0e, 0x00, 0x00, //0x00001fc4 jb LBB0_595 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x00001fca movq $-4, %rax - 0x4c, 0x29, 0xf0, //0x00001fd1 subq %r14, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001fd4 .p2align 4, 0x90 - //0x00001fe0 LBB0_408 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x14, //0x00001fe0 vmovdqu (%r12,%rdx), %ymm6 - 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x00001fe6 vpshufb %ymm6, %ymm0, %ymm7 - 0xc5, 0xcd, 0x74, 0xf7, //0x00001feb vpcmpeqb %ymm7, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00001fef vpmovmskb %ymm6, %esi - 0x83, 0xfe, 0xff, //0x00001ff3 cmpl $-1, %esi - 0x0f, 0x85, 0x7c, 0x00, 0x00, 0x00, //0x00001ff6 jne LBB0_418 - 0x48, 0x83, 0xc2, 0x20, //0x00001ffc addq $32, %rdx - 0x48, 0x8d, 0x34, 0x01, //0x00002000 leaq (%rcx,%rax), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x00002004 addq $-32, %rsi - 0x48, 0x83, 0xc0, 0xe0, //0x00002008 addq $-32, %rax - 0x48, 0x83, 0xfe, 0x1f, //0x0000200c cmpq $31, %rsi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00002010 ja LBB0_408 - 0x4c, 0x89, 0xe2, //0x00002016 movq %r12, %rdx - 0x48, 0x29, 0xc2, //0x00002019 subq %rax, %rdx - 0x48, 0x01, 0xc8, //0x0000201c addq %rcx, %rax - 0x48, 0x85, 0xc0, //0x0000201f testq %rax, %rax - 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00002022 je LBB0_416 - //0x00002028 LBB0_411 - 0x4c, 0x8d, 0x14, 0x02, //0x00002028 leaq (%rdx,%rax), %r10 - 0x31, 0xf6, //0x0000202c xorl %esi, %esi - //0x0000202e LBB0_412 - 0x0f, 0xbe, 0x1c, 0x32, //0x0000202e movsbl (%rdx,%rsi), %ebx - 0x83, 0xfb, 0x20, //0x00002032 cmpl $32, %ebx - 0x0f, 0x87, 0x78, 0x0d, 0x00, 0x00, //0x00002035 ja LBB0_593 - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000203b movabsq $4294977024, %rdi - 0x48, 0x0f, 0xa3, 0xdf, //0x00002045 btq %rbx, %rdi - 0x0f, 0x83, 0x64, 0x0d, 0x00, 0x00, //0x00002049 jae LBB0_593 - 0x48, 0x83, 0xc6, 0x01, //0x0000204f addq $1, %rsi - 0x48, 0x39, 0xf0, //0x00002053 cmpq %rsi, %rax - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x00002056 jne LBB0_412 - 0x4c, 0x89, 0xd2, //0x0000205c movq %r10, %rdx - //0x0000205f LBB0_416 - 0x4c, 0x29, 0xe2, //0x0000205f subq %r12, %rdx - 0x48, 0x39, 0xca, //0x00002062 cmpq %rcx, %rdx - 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00002065 jb LBB0_419 - 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x0000206b jmp LBB0_420 - //0x00002070 LBB0_417 - 0x49, 0x89, 0xd6, //0x00002070 movq %rdx, %r14 - 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00002073 jmp LBB0_420 - //0x00002078 LBB0_418 - 0xf7, 0xd6, //0x00002078 notl %esi - 0x0f, 0xbc, 0xd6, //0x0000207a bsfl %esi, %edx - 0x48, 0x29, 0xc2, //0x0000207d subq %rax, %rdx - 0x48, 0x39, 0xca, //0x00002080 cmpq %rcx, %rdx - 0x0f, 0x83, 0x12, 0x00, 0x00, 0x00, //0x00002083 jae LBB0_420 - //0x00002089 LBB0_419 - 0x4c, 0x8d, 0x72, 0x01, //0x00002089 leaq $1(%rdx), %r14 - 0x4d, 0x89, 0x30, //0x0000208d movq %r14, (%r8) - 0x41, 0x80, 0x3c, 0x14, 0x5d, //0x00002090 cmpb $93, (%r12,%rdx) - 0x0f, 0x84, 0x89, 0x0f, 0x00, 0x00, //0x00002095 je LBB0_628 - //0x0000209b LBB0_420 - 0x49, 0x83, 0xc6, 0xff, //0x0000209b addq $-1, %r14 - 0x4d, 0x89, 0x30, //0x0000209f movq %r14, (%r8) - 0x4d, 0x85, 0xc9, //0x000020a2 testq %r9, %r9 - 0x0f, 0x8e, 0xd5, 0x0c, 0x00, 0x00, //0x000020a5 jle LBB0_519 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x000020ab .p2align 4, 0x90 - //0x000020b0 LBB0_421 - 0x49, 0x8b, 0x55, 0x00, //0x000020b0 movq (%r13), %rdx - 0x49, 0x39, 0xd6, //0x000020b4 cmpq %rdx, %r14 - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x000020b7 jae LBB0_426 - 0x43, 0x8a, 0x04, 0x34, //0x000020bd movb (%r12,%r14), %al - 0x3c, 0x0d, //0x000020c1 cmpb $13, %al - 0x0f, 0x84, 0x27, 0x00, 0x00, 0x00, //0x000020c3 je LBB0_426 - 0x3c, 0x20, //0x000020c9 cmpb $32, %al - 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x000020cb je LBB0_426 - 0x04, 0xf7, //0x000020d1 addb $-9, %al - 0x3c, 0x01, //0x000020d3 cmpb $1, %al - 0x0f, 0x86, 0x15, 0x00, 0x00, 0x00, //0x000020d5 jbe LBB0_426 - 0x4c, 0x89, 0xf1, //0x000020db movq %r14, %rcx - 0xe9, 0x6e, 0x01, 0x00, 0x00, //0x000020de jmp LBB0_451 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000020e3 .p2align 4, 0x90 - //0x000020f0 LBB0_426 - 0x49, 0x8d, 0x4e, 0x01, //0x000020f0 leaq $1(%r14), %rcx - 0x48, 0x39, 0xd1, //0x000020f4 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000020f7 jae LBB0_430 - 0x41, 0x8a, 0x04, 0x0c, //0x000020fd movb (%r12,%rcx), %al - 0x3c, 0x0d, //0x00002101 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002103 je LBB0_430 - 0x3c, 0x20, //0x00002109 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000210b je LBB0_430 - 0x04, 0xf7, //0x00002111 addb $-9, %al - 0x3c, 0x01, //0x00002113 cmpb $1, %al - 0x0f, 0x87, 0x36, 0x01, 0x00, 0x00, //0x00002115 ja LBB0_451 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000211b .p2align 4, 0x90 - //0x00002120 LBB0_430 - 0x49, 0x8d, 0x4e, 0x02, //0x00002120 leaq $2(%r14), %rcx - 0x48, 0x39, 0xd1, //0x00002124 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002127 jae LBB0_434 - 0x41, 0x8a, 0x04, 0x0c, //0x0000212d movb (%r12,%rcx), %al - 0x3c, 0x0d, //0x00002131 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002133 je LBB0_434 - 0x3c, 0x20, //0x00002139 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000213b je LBB0_434 - 0x04, 0xf7, //0x00002141 addb $-9, %al - 0x3c, 0x01, //0x00002143 cmpb $1, %al - 0x0f, 0x87, 0x06, 0x01, 0x00, 0x00, //0x00002145 ja LBB0_451 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000214b .p2align 4, 0x90 - //0x00002150 LBB0_434 - 0x49, 0x8d, 0x4e, 0x03, //0x00002150 leaq $3(%r14), %rcx - 0x48, 0x39, 0xd1, //0x00002154 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002157 jae LBB0_438 - 0x41, 0x8a, 0x04, 0x0c, //0x0000215d movb (%r12,%rcx), %al - 0x3c, 0x0d, //0x00002161 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002163 je LBB0_438 - 0x3c, 0x20, //0x00002169 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000216b je LBB0_438 - 0x04, 0xf7, //0x00002171 addb $-9, %al - 0x3c, 0x01, //0x00002173 cmpb $1, %al - 0x0f, 0x87, 0xd6, 0x00, 0x00, 0x00, //0x00002175 ja LBB0_451 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000217b .p2align 4, 0x90 - //0x00002180 LBB0_438 - 0x49, 0x8d, 0x4e, 0x04, //0x00002180 leaq $4(%r14), %rcx - 0x48, 0x89, 0xd0, //0x00002184 movq %rdx, %rax - 0x48, 0x29, 0xc8, //0x00002187 subq %rcx, %rax - 0x0f, 0x86, 0x30, 0x03, 0x00, 0x00, //0x0000218a jbe LBB0_486 - 0x48, 0x83, 0xf8, 0x20, //0x00002190 cmpq $32, %rax - 0x0f, 0x82, 0x51, 0x0b, 0x00, 0x00, //0x00002194 jb LBB0_583 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x0000219a movq $-4, %rax - 0x4c, 0x29, 0xf0, //0x000021a1 subq %r14, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021a4 .p2align 4, 0x90 - //0x000021b0 LBB0_441 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x000021b0 vmovdqu (%r12,%rcx), %ymm6 - 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x000021b6 vpshufb %ymm6, %ymm0, %ymm7 - 0xc5, 0xcd, 0x74, 0xf7, //0x000021bb vpcmpeqb %ymm7, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x000021bf vpmovmskb %ymm6, %esi - 0x83, 0xfe, 0xff, //0x000021c3 cmpl $-1, %esi - 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x000021c6 jne LBB0_450 - 0x48, 0x83, 0xc1, 0x20, //0x000021cc addq $32, %rcx - 0x48, 0x8d, 0x34, 0x02, //0x000021d0 leaq (%rdx,%rax), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x000021d4 addq $-32, %rsi - 0x48, 0x83, 0xc0, 0xe0, //0x000021d8 addq $-32, %rax - 0x48, 0x83, 0xfe, 0x1f, //0x000021dc cmpq $31, %rsi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x000021e0 ja LBB0_441 - 0x4c, 0x89, 0xe1, //0x000021e6 movq %r12, %rcx - 0x48, 0x29, 0xc1, //0x000021e9 subq %rax, %rcx - 0x48, 0x01, 0xd0, //0x000021ec addq %rdx, %rax - 0x48, 0x85, 0xc0, //0x000021ef testq %rax, %rax - 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x000021f2 je LBB0_449 - //0x000021f8 LBB0_444 - 0x4c, 0x8d, 0x14, 0x01, //0x000021f8 leaq (%rcx,%rax), %r10 - 0x31, 0xf6, //0x000021fc xorl %esi, %esi - //0x000021fe LBB0_445 - 0x0f, 0xbe, 0x1c, 0x31, //0x000021fe movsbl (%rcx,%rsi), %ebx - 0x83, 0xfb, 0x20, //0x00002202 cmpl $32, %ebx - 0x0f, 0x87, 0x21, 0x0a, 0x00, 0x00, //0x00002205 ja LBB0_580 - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000220b movabsq $4294977024, %rdi - 0x48, 0x0f, 0xa3, 0xdf, //0x00002215 btq %rbx, %rdi - 0x0f, 0x83, 0x0d, 0x0a, 0x00, 0x00, //0x00002219 jae LBB0_580 - 0x48, 0x83, 0xc6, 0x01, //0x0000221f addq $1, %rsi - 0x48, 0x39, 0xf0, //0x00002223 cmpq %rsi, %rax - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x00002226 jne LBB0_445 - 0x4c, 0x89, 0xd1, //0x0000222c movq %r10, %rcx - //0x0000222f LBB0_449 - 0x4c, 0x29, 0xe1, //0x0000222f subq %r12, %rcx - 0x48, 0x39, 0xd1, //0x00002232 cmpq %rdx, %rcx - 0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00002235 jb LBB0_451 - 0xe9, 0x86, 0x02, 0x00, 0x00, //0x0000223b jmp LBB0_487 - //0x00002240 .p2align 4, 0x90 - //0x00002240 LBB0_450 - 0xf7, 0xd6, //0x00002240 notl %esi - 0x0f, 0xbc, 0xce, //0x00002242 bsfl %esi, %ecx - 0x48, 0x29, 0xc1, //0x00002245 subq %rax, %rcx - 0x48, 0x39, 0xd1, //0x00002248 cmpq %rdx, %rcx - 0x0f, 0x83, 0x75, 0x02, 0x00, 0x00, //0x0000224b jae LBB0_487 - //0x00002251 LBB0_451 - 0x4c, 0x8d, 0x71, 0x01, //0x00002251 leaq $1(%rcx), %r14 - 0x4d, 0x89, 0x30, //0x00002255 movq %r14, (%r8) - 0x41, 0x0f, 0xbe, 0x04, 0x0c, //0x00002258 movsbl (%r12,%rcx), %eax - 0x83, 0xf8, 0x7b, //0x0000225d cmpl $123, %eax - 0x0f, 0x87, 0x5a, 0x02, 0x00, 0x00, //0x00002260 ja LBB0_486 - 0x48, 0x8d, 0x15, 0xdf, 0x33, 0x00, 0x00, //0x00002266 leaq $13279(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x04, 0x82, //0x0000226d movslq (%rdx,%rax,4), %rax - 0x48, 0x01, 0xd0, //0x00002271 addq %rdx, %rax - 0xff, 0xe0, //0x00002274 jmpq *%rax - //0x00002276 LBB0_453 - 0x49, 0x8b, 0x45, 0x00, //0x00002276 movq (%r13), %rax - 0x48, 0x89, 0xc2, //0x0000227a movq %rax, %rdx - 0x4c, 0x29, 0xf2, //0x0000227d subq %r14, %rdx - 0x48, 0x83, 0xfa, 0x20, //0x00002280 cmpq $32, %rdx - 0x0f, 0x82, 0x72, 0x0a, 0x00, 0x00, //0x00002284 jb LBB0_584 - 0x48, 0x89, 0xca, //0x0000228a movq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x0000228d notq %rdx - 0x48, 0x83, 0xc1, 0x01, //0x00002290 addq $1, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002294 .p2align 4, 0x90 - //0x000022a0 LBB0_455 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x000022a0 vmovdqu (%r12,%rcx), %ymm6 - 0xc5, 0xcd, 0x74, 0xfb, //0x000022a6 vpcmpeqb %ymm3, %ymm6, %ymm7 - 0xc5, 0xcd, 0xdb, 0xf4, //0x000022aa vpand %ymm4, %ymm6, %ymm6 - 0xc5, 0xcd, 0x74, 0xf5, //0x000022ae vpcmpeqb %ymm5, %ymm6, %ymm6 - 0xc5, 0xcd, 0xeb, 0xf7, //0x000022b2 vpor %ymm7, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x000022b6 vpmovmskb %ymm6, %esi - 0x85, 0xf6, //0x000022ba testl %esi, %esi - 0x0f, 0x85, 0xce, 0x00, 0x00, 0x00, //0x000022bc jne LBB0_469 - 0x48, 0x83, 0xc1, 0x20, //0x000022c2 addq $32, %rcx - 0x48, 0x8d, 0x34, 0x10, //0x000022c6 leaq (%rax,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x000022ca addq $-32, %rsi - 0x48, 0x83, 0xc2, 0xe0, //0x000022ce addq $-32, %rdx - 0x48, 0x83, 0xfe, 0x1f, //0x000022d2 cmpq $31, %rsi - 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x000022d6 ja LBB0_455 - 0x4d, 0x89, 0xe6, //0x000022dc movq %r12, %r14 - 0x49, 0x29, 0xd6, //0x000022df subq %rdx, %r14 - 0x48, 0x01, 0xd0, //0x000022e2 addq %rdx, %rax - 0x48, 0x89, 0xc2, //0x000022e5 movq %rax, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x000022e8 cmpq $16, %rdx - 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x000022ec jb LBB0_461 - //0x000022f2 LBB0_458 - 0x4c, 0x89, 0xe0, //0x000022f2 movq %r12, %rax - 0x4c, 0x29, 0xf0, //0x000022f5 subq %r14, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000022f8 .p2align 4, 0x90 - //0x00002300 LBB0_459 - 0xc4, 0xc1, 0x7a, 0x6f, 0x36, //0x00002300 vmovdqu (%r14), %xmm6 - 0xc5, 0xc9, 0x74, 0x3d, 0xd3, 0xde, 0xff, 0xff, //0x00002305 vpcmpeqb $-8493(%rip), %xmm6, %xmm7 /* LCPI0_4+0(%rip) */ - 0xc5, 0xc9, 0xdb, 0x35, 0xdb, 0xde, 0xff, 0xff, //0x0000230d vpand $-8485(%rip), %xmm6, %xmm6 /* LCPI0_5+0(%rip) */ - 0xc5, 0xb9, 0x74, 0xf6, //0x00002315 vpcmpeqb %xmm6, %xmm8, %xmm6 - 0xc5, 0xc9, 0xeb, 0xf7, //0x00002319 vpor %xmm7, %xmm6, %xmm6 - 0xc5, 0xf9, 0xd7, 0xce, //0x0000231d vpmovmskb %xmm6, %ecx - 0x85, 0xc9, //0x00002321 testl %ecx, %ecx - 0x0f, 0x85, 0xdc, 0x08, 0x00, 0x00, //0x00002323 jne LBB0_578 - 0x49, 0x83, 0xc6, 0x10, //0x00002329 addq $16, %r14 - 0x48, 0x83, 0xc2, 0xf0, //0x0000232d addq $-16, %rdx - 0x48, 0x83, 0xc0, 0xf0, //0x00002331 addq $-16, %rax - 0x48, 0x83, 0xfa, 0x0f, //0x00002335 cmpq $15, %rdx - 0x0f, 0x87, 0xc1, 0xff, 0xff, 0xff, //0x00002339 ja LBB0_459 - //0x0000233f LBB0_461 - 0x48, 0x85, 0xd2, //0x0000233f testq %rdx, %rdx - 0x0f, 0x84, 0x36, 0x00, 0x00, 0x00, //0x00002342 je LBB0_468 - 0x49, 0x8d, 0x0c, 0x16, //0x00002348 leaq (%r14,%rdx), %rcx - 0x31, 0xc0, //0x0000234c xorl %eax, %eax - //0x0000234e LBB0_463 - 0x41, 0x0f, 0xb6, 0x1c, 0x06, //0x0000234e movzbl (%r14,%rax), %ebx - 0x80, 0xfb, 0x2c, //0x00002353 cmpb $44, %bl - 0x0f, 0x84, 0xb2, 0x09, 0x00, 0x00, //0x00002356 je LBB0_585 - 0x80, 0xfb, 0x7d, //0x0000235c cmpb $125, %bl - 0x0f, 0x84, 0xa9, 0x09, 0x00, 0x00, //0x0000235f je LBB0_585 - 0x80, 0xfb, 0x5d, //0x00002365 cmpb $93, %bl - 0x0f, 0x84, 0xa0, 0x09, 0x00, 0x00, //0x00002368 je LBB0_585 - 0x48, 0x83, 0xc0, 0x01, //0x0000236e addq $1, %rax - 0x48, 0x39, 0xc2, //0x00002372 cmpq %rax, %rdx - 0x0f, 0x85, 0xd3, 0xff, 0xff, 0xff, //0x00002375 jne LBB0_463 - 0x49, 0x89, 0xce, //0x0000237b movq %rcx, %r14 - //0x0000237e LBB0_468 - 0x4d, 0x29, 0xe6, //0x0000237e subq %r12, %r14 - 0xe9, 0x8e, 0x09, 0x00, 0x00, //0x00002381 jmp LBB0_586 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002386 .p2align 4, 0x90 - //0x00002390 LBB0_469 - 0x44, 0x0f, 0xbc, 0xf6, //0x00002390 bsfl %esi, %r14d - 0x49, 0x29, 0xd6, //0x00002394 subq %rdx, %r14 - 0x4d, 0x89, 0x30, //0x00002397 movq %r14, (%r8) - 0xe9, 0x27, 0x01, 0x00, 0x00, //0x0000239a jmp LBB0_487 - //0x0000239f LBB0_470 - 0x48, 0x83, 0xc1, 0x04, //0x0000239f addq $4, %rcx - 0x49, 0x3b, 0x4d, 0x00, //0x000023a3 cmpq (%r13), %rcx - 0x0f, 0x86, 0x13, 0x01, 0x00, 0x00, //0x000023a7 jbe LBB0_486 - 0xe9, 0x14, 0x01, 0x00, 0x00, //0x000023ad jmp LBB0_487 - //0x000023b2 LBB0_471 - 0x4c, 0x89, 0x7c, 0x24, 0x18, //0x000023b2 movq %r15, $24(%rsp) - 0x4c, 0x89, 0x6c, 0x24, 0x28, //0x000023b7 movq %r13, $40(%rsp) - 0x4d, 0x8b, 0x45, 0x00, //0x000023bc movq (%r13), %r8 - 0x4d, 0x89, 0xc5, //0x000023c0 movq %r8, %r13 - 0x4d, 0x29, 0xf5, //0x000023c3 subq %r14, %r13 - 0x49, 0x83, 0xfd, 0x20, //0x000023c6 cmpq $32, %r13 - 0x0f, 0x8c, 0x56, 0x09, 0x00, 0x00, //0x000023ca jl LBB0_587 - 0x4d, 0x8d, 0x14, 0x0c, //0x000023d0 leaq (%r12,%rcx), %r10 - 0x49, 0x29, 0xc8, //0x000023d4 subq %rcx, %r8 - 0xb8, 0x1f, 0x00, 0x00, 0x00, //0x000023d7 movl $31, %eax - 0x45, 0x31, 0xed, //0x000023dc xorl %r13d, %r13d - 0x45, 0x31, 0xff, //0x000023df xorl %r15d, %r15d - 0xe9, 0x5d, 0x00, 0x00, 0x00, //0x000023e2 jmp LBB0_473 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023e7 .p2align 4, 0x90 - //0x000023f0 LBB0_479 - 0x44, 0x89, 0xfe, //0x000023f0 movl %r15d, %esi - 0xf7, 0xd6, //0x000023f3 notl %esi - 0x21, 0xde, //0x000023f5 andl %ebx, %esi - 0x8d, 0x14, 0x36, //0x000023f7 leal (%rsi,%rsi), %edx - 0x44, 0x09, 0xfa, //0x000023fa orl %r15d, %edx - 0x89, 0xd7, //0x000023fd movl %edx, %edi - 0xf7, 0xd7, //0x000023ff notl %edi - 0x21, 0xdf, //0x00002401 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002403 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00002409 xorl %r15d, %r15d - 0x01, 0xf7, //0x0000240c addl %esi, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x0000240e setb %r15b - 0x01, 0xff, //0x00002412 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002414 xorl $1431655765, %edi - 0x21, 0xd7, //0x0000241a andl %edx, %edi - 0xf7, 0xd7, //0x0000241c notl %edi - 0x41, 0x21, 0xfb, //0x0000241e andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00002421 testq %r11, %r11 - 0x0f, 0x85, 0x4e, 0x00, 0x00, 0x00, //0x00002424 jne LBB0_476 - //0x0000242a LBB0_480 - 0x49, 0x83, 0xc5, 0x20, //0x0000242a addq $32, %r13 - 0x49, 0x8d, 0x14, 0x00, //0x0000242e leaq (%r8,%rax), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00002432 addq $-32, %rdx - 0x48, 0x83, 0xc0, 0xe0, //0x00002436 addq $-32, %rax - 0x48, 0x83, 0xfa, 0x3f, //0x0000243a cmpq $63, %rdx - 0x0f, 0x8e, 0xfc, 0x07, 0x00, 0x00, //0x0000243e jle LBB0_481 - //0x00002444 LBB0_473 - 0xc4, 0x81, 0x7e, 0x6f, 0x74, 0x2a, 0x01, //0x00002444 vmovdqu $1(%r10,%r13), %ymm6 - 0xc5, 0xcd, 0x74, 0xf9, //0x0000244b vpcmpeqb %ymm1, %ymm6, %ymm7 - 0xc5, 0x7d, 0xd7, 0xdf, //0x0000244f vpmovmskb %ymm7, %r11d - 0xc5, 0xcd, 0x74, 0xf2, //0x00002453 vpcmpeqb %ymm2, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xde, //0x00002457 vpmovmskb %ymm6, %ebx - 0x85, 0xdb, //0x0000245b testl %ebx, %ebx - 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x0000245d jne LBB0_479 - 0x4d, 0x85, 0xff, //0x00002463 testq %r15, %r15 - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00002466 jne LBB0_479 - 0x45, 0x31, 0xff, //0x0000246c xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x0000246f testq %r11, %r11 - 0x0f, 0x84, 0xb2, 0xff, 0xff, 0xff, //0x00002472 je LBB0_480 - //0x00002478 LBB0_476 - 0x41, 0x0f, 0xbc, 0xc3, //0x00002478 bsfl %r11d, %eax - 0x48, 0x01, 0xc8, //0x0000247c addq %rcx, %rax - 0x4e, 0x8d, 0x34, 0x28, //0x0000247f leaq (%rax,%r13), %r14 - 0x49, 0x83, 0xc6, 0x02, //0x00002483 addq $2, %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002487 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x30, //0x0000248c movq %r14, (%r8) - //0x0000248f LBB0_477 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x0000248f movq $40(%rsp), %r13 - //0x00002494 LBB0_478 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00002494 movq $32(%rsp), %r11 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x00002499 movq $24(%rsp), %r15 - 0xe9, 0x23, 0x00, 0x00, 0x00, //0x0000249e jmp LBB0_487 - //0x000024a3 LBB0_485 - 0x48, 0x83, 0xc1, 0x05, //0x000024a3 addq $5, %rcx - 0x49, 0x3b, 0x4d, 0x00, //0x000024a7 cmpq (%r13), %rcx - 0x0f, 0x87, 0x15, 0x00, 0x00, 0x00, //0x000024ab ja LBB0_487 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000024b1 .p2align 4, 0x90 - //0x000024c0 LBB0_486 - 0x49, 0x89, 0x08, //0x000024c0 movq %rcx, (%r8) - 0x49, 0x89, 0xce, //0x000024c3 movq %rcx, %r14 - //0x000024c6 LBB0_487 - 0x4d, 0x8b, 0x23, //0x000024c6 movq (%r11), %r12 - 0x49, 0x8b, 0x4b, 0x08, //0x000024c9 movq $8(%r11), %rcx - 0x49, 0x39, 0xce, //0x000024cd cmpq %rcx, %r14 - 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x000024d0 jae LBB0_492 - 0x43, 0x8a, 0x04, 0x34, //0x000024d6 movb (%r12,%r14), %al - 0x3c, 0x0d, //0x000024da cmpb $13, %al - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x000024dc je LBB0_492 - 0x3c, 0x20, //0x000024e2 cmpb $32, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000024e4 je LBB0_492 - 0x04, 0xf7, //0x000024ea addb $-9, %al - 0x3c, 0x01, //0x000024ec cmpb $1, %al - 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x000024ee jbe LBB0_492 - 0x4c, 0x89, 0xf2, //0x000024f4 movq %r14, %rdx - 0xe9, 0x75, 0x01, 0x00, 0x00, //0x000024f7 jmp LBB0_517 - 0x90, 0x90, 0x90, 0x90, //0x000024fc .p2align 4, 0x90 - //0x00002500 LBB0_492 - 0x49, 0x8d, 0x56, 0x01, //0x00002500 leaq $1(%r14), %rdx - 0x48, 0x39, 0xca, //0x00002504 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002507 jae LBB0_496 - 0x41, 0x8a, 0x04, 0x14, //0x0000250d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00002511 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002513 je LBB0_496 - 0x3c, 0x20, //0x00002519 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000251b je LBB0_496 - 0x04, 0xf7, //0x00002521 addb $-9, %al - 0x3c, 0x01, //0x00002523 cmpb $1, %al - 0x0f, 0x87, 0x46, 0x01, 0x00, 0x00, //0x00002525 ja LBB0_517 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000252b .p2align 4, 0x90 - //0x00002530 LBB0_496 - 0x49, 0x8d, 0x56, 0x02, //0x00002530 leaq $2(%r14), %rdx - 0x48, 0x39, 0xca, //0x00002534 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002537 jae LBB0_500 - 0x41, 0x8a, 0x04, 0x14, //0x0000253d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00002541 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002543 je LBB0_500 - 0x3c, 0x20, //0x00002549 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000254b je LBB0_500 - 0x04, 0xf7, //0x00002551 addb $-9, %al - 0x3c, 0x01, //0x00002553 cmpb $1, %al - 0x0f, 0x87, 0x16, 0x01, 0x00, 0x00, //0x00002555 ja LBB0_517 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000255b .p2align 4, 0x90 - //0x00002560 LBB0_500 - 0x49, 0x8d, 0x56, 0x03, //0x00002560 leaq $3(%r14), %rdx - 0x48, 0x39, 0xca, //0x00002564 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002567 jae LBB0_504 - 0x41, 0x8a, 0x04, 0x14, //0x0000256d movb (%r12,%rdx), %al - 0x3c, 0x0d, //0x00002571 cmpb $13, %al - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002573 je LBB0_504 - 0x3c, 0x20, //0x00002579 cmpb $32, %al - 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000257b je LBB0_504 - 0x04, 0xf7, //0x00002581 addb $-9, %al - 0x3c, 0x01, //0x00002583 cmpb $1, %al - 0x0f, 0x87, 0xe6, 0x00, 0x00, 0x00, //0x00002585 ja LBB0_517 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000258b .p2align 4, 0x90 - //0x00002590 LBB0_504 - 0x49, 0x8d, 0x56, 0x04, //0x00002590 leaq $4(%r14), %rdx - 0x48, 0x89, 0xc8, //0x00002594 movq %rcx, %rax - 0x48, 0x29, 0xd0, //0x00002597 subq %rdx, %rax - 0x0f, 0x86, 0xbc, 0x26, 0x00, 0x00, //0x0000259a jbe LBB0_1017 - 0x48, 0x83, 0xf8, 0x20, //0x000025a0 cmpq $32, %rax - 0x0f, 0x82, 0x30, 0x07, 0x00, 0x00, //0x000025a4 jb LBB0_582 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000025aa movq $-4, %rax - 0x4c, 0x29, 0xf0, //0x000025b1 subq %r14, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000025b4 .p2align 4, 0x90 - //0x000025c0 LBB0_507 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x14, //0x000025c0 vmovdqu (%r12,%rdx), %ymm6 - 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x000025c6 vpshufb %ymm6, %ymm0, %ymm7 - 0xc5, 0xcd, 0x74, 0xf7, //0x000025cb vpcmpeqb %ymm7, %ymm6, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x000025cf vpmovmskb %ymm6, %esi - 0x83, 0xfe, 0xff, //0x000025d3 cmpl $-1, %esi - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000025d6 jne LBB0_516 - 0x48, 0x83, 0xc2, 0x20, //0x000025dc addq $32, %rdx - 0x48, 0x8d, 0x34, 0x01, //0x000025e0 leaq (%rcx,%rax), %rsi - 0x48, 0x83, 0xc6, 0xe0, //0x000025e4 addq $-32, %rsi - 0x48, 0x83, 0xc0, 0xe0, //0x000025e8 addq $-32, %rax - 0x48, 0x83, 0xfe, 0x1f, //0x000025ec cmpq $31, %rsi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x000025f0 ja LBB0_507 - 0x4c, 0x89, 0xe2, //0x000025f6 movq %r12, %rdx - 0x48, 0x29, 0xc2, //0x000025f9 subq %rax, %rdx - 0x48, 0x01, 0xc8, //0x000025fc addq %rcx, %rax - 0x48, 0x85, 0xc0, //0x000025ff testq %rax, %rax - 0x0f, 0x84, 0x39, 0x00, 0x00, 0x00, //0x00002602 je LBB0_515 - //0x00002608 LBB0_510 - 0x4c, 0x8d, 0x14, 0x02, //0x00002608 leaq (%rdx,%rax), %r10 - 0x31, 0xf6, //0x0000260c xorl %esi, %esi - 0x90, 0x90, //0x0000260e .p2align 4, 0x90 - //0x00002610 LBB0_511 - 0x0f, 0xbe, 0x1c, 0x32, //0x00002610 movsbl (%rdx,%rsi), %ebx - 0x83, 0xfb, 0x20, //0x00002614 cmpl $32, %ebx - 0x0f, 0x87, 0xfb, 0x05, 0x00, 0x00, //0x00002617 ja LBB0_579 - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000261d movabsq $4294977024, %rdi - 0x48, 0x0f, 0xa3, 0xdf, //0x00002627 btq %rbx, %rdi - 0x0f, 0x83, 0xe7, 0x05, 0x00, 0x00, //0x0000262b jae LBB0_579 - 0x48, 0x83, 0xc6, 0x01, //0x00002631 addq $1, %rsi - 0x48, 0x39, 0xf0, //0x00002635 cmpq %rsi, %rax - 0x0f, 0x85, 0xd2, 0xff, 0xff, 0xff, //0x00002638 jne LBB0_511 - 0x4c, 0x89, 0xd2, //0x0000263e movq %r10, %rdx - //0x00002641 LBB0_515 - 0x4c, 0x29, 0xe2, //0x00002641 subq %r12, %rdx - 0x48, 0x39, 0xca, //0x00002644 cmpq %rcx, %rdx - 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x00002647 jb LBB0_517 - 0xe9, 0x35, 0x26, 0x00, 0x00, //0x0000264d jmp LBB0_1024 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002652 .p2align 4, 0x90 - //0x00002660 LBB0_516 - 0xf7, 0xd6, //0x00002660 notl %esi - 0x0f, 0xbc, 0xd6, //0x00002662 bsfl %esi, %edx - 0x48, 0x29, 0xc2, //0x00002665 subq %rax, %rdx - 0x48, 0x39, 0xca, //0x00002668 cmpq %rcx, %rdx - 0x0f, 0x83, 0x16, 0x26, 0x00, 0x00, //0x0000266b jae LBB0_1024 - //0x00002671 LBB0_517 - 0x4c, 0x8d, 0x72, 0x01, //0x00002671 leaq $1(%rdx), %r14 - 0x4d, 0x89, 0x30, //0x00002675 movq %r14, (%r8) - 0x41, 0x8a, 0x04, 0x14, //0x00002678 movb (%r12,%rdx), %al - 0x3c, 0x2c, //0x0000267c cmpb $44, %al - 0x0f, 0x85, 0x88, 0x09, 0x00, 0x00, //0x0000267e jne LBB0_625 - 0x49, 0x8d, 0x41, 0xff, //0x00002684 leaq $-1(%r9), %rax - 0x49, 0x83, 0xf9, 0x02, //0x00002688 cmpq $2, %r9 - 0x49, 0x89, 0xc1, //0x0000268c movq %rax, %r9 - 0x0f, 0x8d, 0x1b, 0xfa, 0xff, 0xff, //0x0000268f jge LBB0_421 - 0xe9, 0xe6, 0x06, 0x00, 0x00, //0x00002695 jmp LBB0_519 - //0x0000269a LBB0_522 - 0x4c, 0x89, 0x7c, 0x24, 0x18, //0x0000269a movq %r15, $24(%rsp) - 0x4d, 0x8b, 0x55, 0x00, //0x0000269f movq (%r13), %r10 - 0x4d, 0x29, 0xf2, //0x000026a3 subq %r14, %r10 - 0x4d, 0x01, 0xf4, //0x000026a6 addq %r14, %r12 - 0x45, 0x31, 0xdb, //0x000026a9 xorl %r11d, %r11d - 0x45, 0x31, 0xf6, //0x000026ac xorl %r14d, %r14d - 0x45, 0x31, 0xff, //0x000026af xorl %r15d, %r15d - 0x31, 0xdb, //0x000026b2 xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000026b4 jmp LBB0_524 - //0x000026b9 LBB0_523 - 0x48, 0xc1, 0xf8, 0x3f, //0x000026b9 sarq $63, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x000026bd popcntq %rsi, %rcx - 0x49, 0x01, 0xcf, //0x000026c2 addq %rcx, %r15 - 0x49, 0x83, 0xc4, 0x40, //0x000026c5 addq $64, %r12 - 0x49, 0x83, 0xc2, 0xc0, //0x000026c9 addq $-64, %r10 - 0x49, 0x89, 0xc3, //0x000026cd movq %rax, %r11 - //0x000026d0 LBB0_524 - 0x49, 0x83, 0xfa, 0x40, //0x000026d0 cmpq $64, %r10 - 0x0f, 0x8c, 0x33, 0x01, 0x00, 0x00, //0x000026d4 jl LBB0_532 - //0x000026da LBB0_525 - 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x000026da vmovdqu (%r12), %ymm15 - 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x000026e0 vmovdqu $32(%r12), %ymm14 - 0xc5, 0x85, 0x74, 0xf2, //0x000026e7 vpcmpeqb %ymm2, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x000026eb vpmovmskb %ymm6, %eax - 0xc5, 0x8d, 0x74, 0xf2, //0x000026ef vpcmpeqb %ymm2, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x000026f3 vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x000026f7 shlq $32, %rcx - 0x48, 0x09, 0xc8, //0x000026fb orq %rcx, %rax - 0x48, 0x89, 0xc1, //0x000026fe movq %rax, %rcx - 0x4c, 0x09, 0xf1, //0x00002701 orq %r14, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00002704 jne LBB0_527 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000270a movq $-1, %rax - 0x45, 0x31, 0xf6, //0x00002711 xorl %r14d, %r14d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00002714 jmp LBB0_528 - //0x00002719 LBB0_527 - 0x4c, 0x89, 0xf1, //0x00002719 movq %r14, %rcx - 0x48, 0xf7, 0xd1, //0x0000271c notq %rcx - 0x48, 0x21, 0xc1, //0x0000271f andq %rax, %rcx - 0x48, 0x8d, 0x34, 0x09, //0x00002722 leaq (%rcx,%rcx), %rsi - 0x4c, 0x09, 0xf6, //0x00002726 orq %r14, %rsi - 0x48, 0x89, 0xf7, //0x00002729 movq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x0000272c notq %rdi - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000272f movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd0, //0x00002739 andq %rdx, %rax - 0x48, 0x21, 0xf8, //0x0000273c andq %rdi, %rax - 0x45, 0x31, 0xf6, //0x0000273f xorl %r14d, %r14d - 0x48, 0x01, 0xc8, //0x00002742 addq %rcx, %rax - 0x41, 0x0f, 0x92, 0xc6, //0x00002745 setb %r14b - 0x48, 0x01, 0xc0, //0x00002749 addq %rax, %rax - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000274c movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xc8, //0x00002756 xorq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00002759 andq %rsi, %rax - 0x48, 0xf7, 0xd0, //0x0000275c notq %rax - //0x0000275f LBB0_528 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x0000275f movq $8(%rsp), %r8 - 0xc5, 0x8d, 0x74, 0xf1, //0x00002764 vpcmpeqb %ymm1, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x00002768 vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x0000276c shlq $32, %rcx - 0xc5, 0x85, 0x74, 0xf1, //0x00002770 vpcmpeqb %ymm1, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00002774 vpmovmskb %ymm6, %esi - 0x48, 0x09, 0xce, //0x00002778 orq %rcx, %rsi - 0x48, 0x21, 0xc6, //0x0000277b andq %rax, %rsi - 0xc4, 0xe1, 0xf9, 0x6e, 0xf6, //0x0000277e vmovq %rsi, %xmm6 - 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x00002783 vpclmulqdq $0, %xmm9, %xmm6, %xmm6 - 0xc4, 0xe1, 0xf9, 0x7e, 0xf0, //0x00002789 vmovq %xmm6, %rax - 0x4c, 0x31, 0xd8, //0x0000278e xorq %r11, %rax - 0xc4, 0xc1, 0x05, 0x74, 0xf4, //0x00002791 vpcmpeqb %ymm12, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00002796 vpmovmskb %ymm6, %esi - 0xc4, 0xc1, 0x0d, 0x74, 0xf4, //0x0000279a vpcmpeqb %ymm12, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x0000279f vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x000027a3 shlq $32, %rcx - 0x48, 0x09, 0xce, //0x000027a7 orq %rcx, %rsi - 0x48, 0x89, 0xc1, //0x000027aa movq %rax, %rcx - 0x48, 0xf7, 0xd1, //0x000027ad notq %rcx - 0x48, 0x21, 0xce, //0x000027b0 andq %rcx, %rsi - 0xc4, 0xc1, 0x05, 0x74, 0xf5, //0x000027b3 vpcmpeqb %ymm13, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x000027b8 vpmovmskb %ymm6, %edi - 0xc4, 0xc1, 0x0d, 0x74, 0xf5, //0x000027bc vpcmpeqb %ymm13, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xd6, //0x000027c1 vpmovmskb %ymm6, %edx - 0x48, 0xc1, 0xe2, 0x20, //0x000027c5 shlq $32, %rdx - 0x48, 0x09, 0xd7, //0x000027c9 orq %rdx, %rdi - 0x48, 0x21, 0xcf, //0x000027cc andq %rcx, %rdi - 0x0f, 0x84, 0xe4, 0xfe, 0xff, 0xff, //0x000027cf je LBB0_523 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x000027d5 movq $32(%rsp), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000027da .p2align 4, 0x90 - //0x000027e0 LBB0_530 - 0x48, 0x8d, 0x4f, 0xff, //0x000027e0 leaq $-1(%rdi), %rcx - 0x48, 0x89, 0xca, //0x000027e4 movq %rcx, %rdx - 0x48, 0x21, 0xf2, //0x000027e7 andq %rsi, %rdx - 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x000027ea popcntq %rdx, %rdx - 0x4c, 0x01, 0xfa, //0x000027ef addq %r15, %rdx - 0x48, 0x39, 0xda, //0x000027f2 cmpq %rbx, %rdx - 0x0f, 0x86, 0xdc, 0x03, 0x00, 0x00, //0x000027f5 jbe LBB0_572 - 0x48, 0x83, 0xc3, 0x01, //0x000027fb addq $1, %rbx - 0x48, 0x21, 0xcf, //0x000027ff andq %rcx, %rdi - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00002802 jne LBB0_530 - 0xe9, 0xac, 0xfe, 0xff, 0xff, //0x00002808 jmp LBB0_523 - //0x0000280d LBB0_532 - 0x4d, 0x85, 0xd2, //0x0000280d testq %r10, %r10 - 0x0f, 0x8e, 0x19, 0x05, 0x00, 0x00, //0x00002810 jle LBB0_588 - 0xc5, 0xc9, 0xef, 0xf6, //0x00002816 vpxor %xmm6, %xmm6, %xmm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x0000281a vmovdqu %ymm6, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002820 vmovdqu %ymm6, $64(%rsp) - 0x44, 0x89, 0xe0, //0x00002826 movl %r12d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002829 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x0000282e cmpl $4033, %eax - 0x0f, 0x82, 0xa1, 0xfe, 0xff, 0xff, //0x00002833 jb LBB0_525 - 0x49, 0x83, 0xfa, 0x20, //0x00002839 cmpq $32, %r10 - 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x0000283d jb LBB0_536 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00002843 vmovdqu (%r12), %ymm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002849 vmovdqu %ymm6, $64(%rsp) - 0x49, 0x83, 0xc4, 0x20, //0x0000284f addq $32, %r12 - 0x49, 0x8d, 0x7a, 0xe0, //0x00002853 leaq $-32(%r10), %rdi - 0x4c, 0x8d, 0x44, 0x24, 0x60, //0x00002857 leaq $96(%rsp), %r8 - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x0000285c jmp LBB0_537 - //0x00002861 LBB0_536 - 0x4c, 0x8d, 0x44, 0x24, 0x40, //0x00002861 leaq $64(%rsp), %r8 - 0x4c, 0x89, 0xd7, //0x00002866 movq %r10, %rdi - //0x00002869 LBB0_537 - 0x48, 0x83, 0xff, 0x10, //0x00002869 cmpq $16, %rdi - 0x0f, 0x82, 0x5e, 0x00, 0x00, 0x00, //0x0000286d jb LBB0_538 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x00002873 vmovdqu (%r12), %xmm6 - 0xc4, 0xc1, 0x7a, 0x7f, 0x30, //0x00002879 vmovdqu %xmm6, (%r8) - 0x49, 0x83, 0xc4, 0x10, //0x0000287e addq $16, %r12 - 0x49, 0x83, 0xc0, 0x10, //0x00002882 addq $16, %r8 - 0x48, 0x83, 0xc7, 0xf0, //0x00002886 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x0000288a cmpq $8, %rdi - 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x0000288e jae LBB0_543 - //0x00002894 LBB0_539 - 0x48, 0x83, 0xff, 0x04, //0x00002894 cmpq $4, %rdi - 0x0f, 0x8c, 0x5a, 0x00, 0x00, 0x00, //0x00002898 jl LBB0_540 - //0x0000289e LBB0_544 - 0x41, 0x8b, 0x04, 0x24, //0x0000289e movl (%r12), %eax - 0x41, 0x89, 0x00, //0x000028a2 movl %eax, (%r8) - 0x49, 0x83, 0xc4, 0x04, //0x000028a5 addq $4, %r12 - 0x49, 0x83, 0xc0, 0x04, //0x000028a9 addq $4, %r8 - 0x48, 0x83, 0xc7, 0xfc, //0x000028ad addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x000028b1 cmpq $2, %rdi - 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x000028b5 jae LBB0_545 - //0x000028bb LBB0_541 - 0x4c, 0x89, 0xe0, //0x000028bb movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x000028be leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x000028c3 testq %rdi, %rdi - 0x0f, 0x85, 0x5c, 0x00, 0x00, 0x00, //0x000028c6 jne LBB0_546 - 0xe9, 0x09, 0xfe, 0xff, 0xff, //0x000028cc jmp LBB0_525 - //0x000028d1 LBB0_538 - 0x48, 0x83, 0xff, 0x08, //0x000028d1 cmpq $8, %rdi - 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x000028d5 jb LBB0_539 - //0x000028db LBB0_543 - 0x49, 0x8b, 0x04, 0x24, //0x000028db movq (%r12), %rax - 0x49, 0x89, 0x00, //0x000028df movq %rax, (%r8) - 0x49, 0x83, 0xc4, 0x08, //0x000028e2 addq $8, %r12 - 0x49, 0x83, 0xc0, 0x08, //0x000028e6 addq $8, %r8 - 0x48, 0x83, 0xc7, 0xf8, //0x000028ea addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x000028ee cmpq $4, %rdi - 0x0f, 0x8d, 0xa6, 0xff, 0xff, 0xff, //0x000028f2 jge LBB0_544 - //0x000028f8 LBB0_540 - 0x48, 0x83, 0xff, 0x02, //0x000028f8 cmpq $2, %rdi - 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x000028fc jb LBB0_541 - //0x00002902 LBB0_545 - 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x00002902 movzwl (%r12), %eax - 0x66, 0x41, 0x89, 0x00, //0x00002907 movw %ax, (%r8) - 0x49, 0x83, 0xc4, 0x02, //0x0000290b addq $2, %r12 - 0x49, 0x83, 0xc0, 0x02, //0x0000290f addq $2, %r8 - 0x48, 0x83, 0xc7, 0xfe, //0x00002913 addq $-2, %rdi - 0x4c, 0x89, 0xe0, //0x00002917 movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x0000291a leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x0000291f testq %rdi, %rdi - 0x0f, 0x84, 0xb2, 0xfd, 0xff, 0xff, //0x00002922 je LBB0_525 - //0x00002928 LBB0_546 - 0x8a, 0x00, //0x00002928 movb (%rax), %al - 0x41, 0x88, 0x00, //0x0000292a movb %al, (%r8) - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x0000292d leaq $64(%rsp), %r12 - 0xe9, 0xa3, 0xfd, 0xff, 0xff, //0x00002932 jmp LBB0_525 - //0x00002937 LBB0_547 - 0x4c, 0x89, 0x7c, 0x24, 0x18, //0x00002937 movq %r15, $24(%rsp) - 0x4d, 0x8b, 0x55, 0x00, //0x0000293c movq (%r13), %r10 - 0x4d, 0x29, 0xf2, //0x00002940 subq %r14, %r10 - 0x4d, 0x01, 0xf4, //0x00002943 addq %r14, %r12 - 0x45, 0x31, 0xdb, //0x00002946 xorl %r11d, %r11d - 0x45, 0x31, 0xf6, //0x00002949 xorl %r14d, %r14d - 0x45, 0x31, 0xff, //0x0000294c xorl %r15d, %r15d - 0x31, 0xdb, //0x0000294f xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00002951 jmp LBB0_549 - //0x00002956 LBB0_548 - 0x48, 0xc1, 0xf8, 0x3f, //0x00002956 sarq $63, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x0000295a popcntq %rsi, %rcx - 0x49, 0x01, 0xcf, //0x0000295f addq %rcx, %r15 - 0x49, 0x83, 0xc4, 0x40, //0x00002962 addq $64, %r12 - 0x49, 0x83, 0xc2, 0xc0, //0x00002966 addq $-64, %r10 - 0x49, 0x89, 0xc3, //0x0000296a movq %rax, %r11 - //0x0000296d LBB0_549 - 0x49, 0x83, 0xfa, 0x40, //0x0000296d cmpq $64, %r10 - 0x0f, 0x8c, 0x36, 0x01, 0x00, 0x00, //0x00002971 jl LBB0_557 - //0x00002977 LBB0_550 - 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x00002977 vmovdqu (%r12), %ymm15 - 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x0000297d vmovdqu $32(%r12), %ymm14 - 0xc5, 0x85, 0x74, 0xf2, //0x00002984 vpcmpeqb %ymm2, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xc6, //0x00002988 vpmovmskb %ymm6, %eax - 0xc5, 0x8d, 0x74, 0xf2, //0x0000298c vpcmpeqb %ymm2, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x00002990 vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00002994 shlq $32, %rcx - 0x48, 0x09, 0xc8, //0x00002998 orq %rcx, %rax - 0x48, 0x89, 0xc1, //0x0000299b movq %rax, %rcx - 0x4c, 0x09, 0xf1, //0x0000299e orq %r14, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000029a1 jne LBB0_552 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000029a7 movq $-1, %rax - 0x45, 0x31, 0xf6, //0x000029ae xorl %r14d, %r14d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000029b1 jmp LBB0_553 - //0x000029b6 LBB0_552 - 0x4c, 0x89, 0xf1, //0x000029b6 movq %r14, %rcx - 0x48, 0xf7, 0xd1, //0x000029b9 notq %rcx - 0x48, 0x21, 0xc1, //0x000029bc andq %rax, %rcx - 0x48, 0x8d, 0x34, 0x09, //0x000029bf leaq (%rcx,%rcx), %rsi - 0x4c, 0x09, 0xf6, //0x000029c3 orq %r14, %rsi - 0x48, 0x89, 0xf7, //0x000029c6 movq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x000029c9 notq %rdi - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000029cc movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd0, //0x000029d6 andq %rdx, %rax - 0x48, 0x21, 0xf8, //0x000029d9 andq %rdi, %rax - 0x45, 0x31, 0xf6, //0x000029dc xorl %r14d, %r14d - 0x48, 0x01, 0xc8, //0x000029df addq %rcx, %rax - 0x41, 0x0f, 0x92, 0xc6, //0x000029e2 setb %r14b - 0x48, 0x01, 0xc0, //0x000029e6 addq %rax, %rax - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000029e9 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xc8, //0x000029f3 xorq %rcx, %rax - 0x48, 0x21, 0xf0, //0x000029f6 andq %rsi, %rax - 0x48, 0xf7, 0xd0, //0x000029f9 notq %rax - //0x000029fc LBB0_553 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000029fc movq $8(%rsp), %r8 - 0xc5, 0x8d, 0x74, 0xf1, //0x00002a01 vpcmpeqb %ymm1, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x00002a05 vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00002a09 shlq $32, %rcx - 0xc5, 0x85, 0x74, 0xf1, //0x00002a0d vpcmpeqb %ymm1, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00002a11 vpmovmskb %ymm6, %esi - 0x48, 0x09, 0xce, //0x00002a15 orq %rcx, %rsi - 0x48, 0x21, 0xc6, //0x00002a18 andq %rax, %rsi - 0xc4, 0xe1, 0xf9, 0x6e, 0xf6, //0x00002a1b vmovq %rsi, %xmm6 - 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x00002a20 vpclmulqdq $0, %xmm9, %xmm6, %xmm6 - 0xc4, 0xe1, 0xf9, 0x7e, 0xf0, //0x00002a26 vmovq %xmm6, %rax - 0x4c, 0x31, 0xd8, //0x00002a2b xorq %r11, %rax - 0xc4, 0xc1, 0x05, 0x74, 0xf2, //0x00002a2e vpcmpeqb %ymm10, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xf6, //0x00002a33 vpmovmskb %ymm6, %esi - 0xc4, 0xc1, 0x0d, 0x74, 0xf2, //0x00002a37 vpcmpeqb %ymm10, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xce, //0x00002a3c vpmovmskb %ymm6, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00002a40 shlq $32, %rcx - 0x48, 0x09, 0xce, //0x00002a44 orq %rcx, %rsi - 0x48, 0x89, 0xc1, //0x00002a47 movq %rax, %rcx - 0x48, 0xf7, 0xd1, //0x00002a4a notq %rcx - 0x48, 0x21, 0xce, //0x00002a4d andq %rcx, %rsi - 0xc5, 0x85, 0x74, 0xf5, //0x00002a50 vpcmpeqb %ymm5, %ymm15, %ymm6 - 0xc5, 0xfd, 0xd7, 0xfe, //0x00002a54 vpmovmskb %ymm6, %edi - 0xc5, 0x8d, 0x74, 0xf5, //0x00002a58 vpcmpeqb %ymm5, %ymm14, %ymm6 - 0xc5, 0xfd, 0xd7, 0xd6, //0x00002a5c vpmovmskb %ymm6, %edx - 0x48, 0xc1, 0xe2, 0x20, //0x00002a60 shlq $32, %rdx - 0x48, 0x09, 0xd7, //0x00002a64 orq %rdx, %rdi - 0x48, 0x21, 0xcf, //0x00002a67 andq %rcx, %rdi - 0x0f, 0x84, 0xe6, 0xfe, 0xff, 0xff, //0x00002a6a je LBB0_548 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00002a70 movq $32(%rsp), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002a75 .p2align 4, 0x90 - //0x00002a80 LBB0_555 - 0x48, 0x8d, 0x4f, 0xff, //0x00002a80 leaq $-1(%rdi), %rcx - 0x48, 0x89, 0xca, //0x00002a84 movq %rcx, %rdx - 0x48, 0x21, 0xf2, //0x00002a87 andq %rsi, %rdx - 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00002a8a popcntq %rdx, %rdx - 0x4c, 0x01, 0xfa, //0x00002a8f addq %r15, %rdx - 0x48, 0x39, 0xda, //0x00002a92 cmpq %rbx, %rdx - 0x0f, 0x86, 0x3c, 0x01, 0x00, 0x00, //0x00002a95 jbe LBB0_572 - 0x48, 0x83, 0xc3, 0x01, //0x00002a9b addq $1, %rbx - 0x48, 0x21, 0xcf, //0x00002a9f andq %rcx, %rdi - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00002aa2 jne LBB0_555 - 0xe9, 0xa9, 0xfe, 0xff, 0xff, //0x00002aa8 jmp LBB0_548 - //0x00002aad LBB0_557 - 0x4d, 0x85, 0xd2, //0x00002aad testq %r10, %r10 - 0x0f, 0x8e, 0x79, 0x02, 0x00, 0x00, //0x00002ab0 jle LBB0_588 - 0xc5, 0xc9, 0xef, 0xf6, //0x00002ab6 vpxor %xmm6, %xmm6, %xmm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x00002aba vmovdqu %ymm6, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002ac0 vmovdqu %ymm6, $64(%rsp) - 0x44, 0x89, 0xe0, //0x00002ac6 movl %r12d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002ac9 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002ace cmpl $4033, %eax - 0x0f, 0x82, 0x9e, 0xfe, 0xff, 0xff, //0x00002ad3 jb LBB0_550 - 0x49, 0x83, 0xfa, 0x20, //0x00002ad9 cmpq $32, %r10 - 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00002add jb LBB0_561 - 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00002ae3 vmovdqu (%r12), %ymm6 - 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002ae9 vmovdqu %ymm6, $64(%rsp) - 0x49, 0x83, 0xc4, 0x20, //0x00002aef addq $32, %r12 - 0x49, 0x8d, 0x7a, 0xe0, //0x00002af3 leaq $-32(%r10), %rdi - 0x4c, 0x8d, 0x44, 0x24, 0x60, //0x00002af7 leaq $96(%rsp), %r8 - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002afc jmp LBB0_562 - //0x00002b01 LBB0_561 - 0x4c, 0x8d, 0x44, 0x24, 0x40, //0x00002b01 leaq $64(%rsp), %r8 - 0x4c, 0x89, 0xd7, //0x00002b06 movq %r10, %rdi - //0x00002b09 LBB0_562 - 0x48, 0x83, 0xff, 0x10, //0x00002b09 cmpq $16, %rdi - 0x0f, 0x82, 0x5e, 0x00, 0x00, 0x00, //0x00002b0d jb LBB0_563 - 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x00002b13 vmovdqu (%r12), %xmm6 - 0xc4, 0xc1, 0x7a, 0x7f, 0x30, //0x00002b19 vmovdqu %xmm6, (%r8) - 0x49, 0x83, 0xc4, 0x10, //0x00002b1e addq $16, %r12 - 0x49, 0x83, 0xc0, 0x10, //0x00002b22 addq $16, %r8 - 0x48, 0x83, 0xc7, 0xf0, //0x00002b26 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00002b2a cmpq $8, %rdi - 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002b2e jae LBB0_568 - //0x00002b34 LBB0_564 - 0x48, 0x83, 0xff, 0x04, //0x00002b34 cmpq $4, %rdi - 0x0f, 0x8c, 0x5a, 0x00, 0x00, 0x00, //0x00002b38 jl LBB0_565 - //0x00002b3e LBB0_569 - 0x41, 0x8b, 0x04, 0x24, //0x00002b3e movl (%r12), %eax - 0x41, 0x89, 0x00, //0x00002b42 movl %eax, (%r8) - 0x49, 0x83, 0xc4, 0x04, //0x00002b45 addq $4, %r12 - 0x49, 0x83, 0xc0, 0x04, //0x00002b49 addq $4, %r8 - 0x48, 0x83, 0xc7, 0xfc, //0x00002b4d addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00002b51 cmpq $2, %rdi - 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002b55 jae LBB0_570 - //0x00002b5b LBB0_566 - 0x4c, 0x89, 0xe0, //0x00002b5b movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002b5e leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x00002b63 testq %rdi, %rdi - 0x0f, 0x85, 0x5c, 0x00, 0x00, 0x00, //0x00002b66 jne LBB0_571 - 0xe9, 0x06, 0xfe, 0xff, 0xff, //0x00002b6c jmp LBB0_550 - //0x00002b71 LBB0_563 - 0x48, 0x83, 0xff, 0x08, //0x00002b71 cmpq $8, %rdi - 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002b75 jb LBB0_564 - //0x00002b7b LBB0_568 - 0x49, 0x8b, 0x04, 0x24, //0x00002b7b movq (%r12), %rax - 0x49, 0x89, 0x00, //0x00002b7f movq %rax, (%r8) - 0x49, 0x83, 0xc4, 0x08, //0x00002b82 addq $8, %r12 - 0x49, 0x83, 0xc0, 0x08, //0x00002b86 addq $8, %r8 - 0x48, 0x83, 0xc7, 0xf8, //0x00002b8a addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00002b8e cmpq $4, %rdi - 0x0f, 0x8d, 0xa6, 0xff, 0xff, 0xff, //0x00002b92 jge LBB0_569 - //0x00002b98 LBB0_565 - 0x48, 0x83, 0xff, 0x02, //0x00002b98 cmpq $2, %rdi - 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002b9c jb LBB0_566 - //0x00002ba2 LBB0_570 - 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x00002ba2 movzwl (%r12), %eax - 0x66, 0x41, 0x89, 0x00, //0x00002ba7 movw %ax, (%r8) - 0x49, 0x83, 0xc4, 0x02, //0x00002bab addq $2, %r12 - 0x49, 0x83, 0xc0, 0x02, //0x00002baf addq $2, %r8 - 0x48, 0x83, 0xc7, 0xfe, //0x00002bb3 addq $-2, %rdi - 0x4c, 0x89, 0xe0, //0x00002bb7 movq %r12, %rax - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002bba leaq $64(%rsp), %r12 - 0x48, 0x85, 0xff, //0x00002bbf testq %rdi, %rdi - 0x0f, 0x84, 0xaf, 0xfd, 0xff, 0xff, //0x00002bc2 je LBB0_550 - //0x00002bc8 LBB0_571 - 0x8a, 0x00, //0x00002bc8 movb (%rax), %al - 0x41, 0x88, 0x00, //0x00002bca movb %al, (%r8) - 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002bcd leaq $64(%rsp), %r12 - 0xe9, 0xa0, 0xfd, 0xff, 0xff, //0x00002bd2 jmp LBB0_550 - //0x00002bd7 LBB0_572 - 0x49, 0x8b, 0x45, 0x00, //0x00002bd7 movq (%r13), %rax - 0x48, 0x0f, 0xbc, 0xcf, //0x00002bdb bsfq %rdi, %rcx - 0x4c, 0x29, 0xd1, //0x00002bdf subq %r10, %rcx - 0x4c, 0x8d, 0x34, 0x01, //0x00002be2 leaq (%rcx,%rax), %r14 - 0x49, 0x83, 0xc6, 0x01, //0x00002be6 addq $1, %r14 - 0x4d, 0x89, 0x30, //0x00002bea movq %r14, (%r8) - 0x49, 0x8b, 0x45, 0x00, //0x00002bed movq (%r13), %rax - 0x49, 0x39, 0xc6, //0x00002bf1 cmpq %rax, %r14 - 0x4c, 0x0f, 0x47, 0xf0, //0x00002bf4 cmovaq %rax, %r14 - 0x4d, 0x89, 0x30, //0x00002bf8 movq %r14, (%r8) - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x00002bfb movq $24(%rsp), %r15 - 0xe9, 0xc1, 0xf8, 0xff, 0xff, //0x00002c00 jmp LBB0_487 - //0x00002c05 LBB0_578 - 0x66, 0x0f, 0xbc, 0xc9, //0x00002c05 bsfw %cx, %cx - 0x44, 0x0f, 0xb7, 0xf1, //0x00002c09 movzwl %cx, %r14d - 0x49, 0x29, 0xc6, //0x00002c0d subq %rax, %r14 - 0x4d, 0x89, 0x30, //0x00002c10 movq %r14, (%r8) - 0xe9, 0xae, 0xf8, 0xff, 0xff, //0x00002c13 jmp LBB0_487 - //0x00002c18 LBB0_579 - 0x4c, 0x29, 0xe2, //0x00002c18 subq %r12, %rdx - 0x48, 0x01, 0xf2, //0x00002c1b addq %rsi, %rdx - 0x48, 0x39, 0xca, //0x00002c1e cmpq %rcx, %rdx - 0x0f, 0x82, 0x4a, 0xfa, 0xff, 0xff, //0x00002c21 jb LBB0_517 - 0xe9, 0x5b, 0x20, 0x00, 0x00, //0x00002c27 jmp LBB0_1024 - //0x00002c2c LBB0_580 - 0x4c, 0x29, 0xe1, //0x00002c2c subq %r12, %rcx - 0x48, 0x01, 0xf1, //0x00002c2f addq %rsi, %rcx - 0x48, 0x39, 0xd1, //0x00002c32 cmpq %rdx, %rcx - 0x0f, 0x82, 0x16, 0xf6, 0xff, 0xff, //0x00002c35 jb LBB0_451 - 0xe9, 0x86, 0xf8, 0xff, 0xff, //0x00002c3b jmp LBB0_487 - //0x00002c40 LBB0_481 - 0x4d, 0x85, 0xff, //0x00002c40 testq %r15, %r15 - 0x0f, 0x85, 0x06, 0x01, 0x00, 0x00, //0x00002c43 jne LBB0_590 - 0x4b, 0x8d, 0x04, 0x2a, //0x00002c49 leaq (%r10,%r13), %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002c4d addq $1, %rax - 0x49, 0xf7, 0xd5, //0x00002c51 notq %r13 - 0x4d, 0x01, 0xc5, //0x00002c54 addq %r8, %r13 - //0x00002c57 LBB0_483 - 0x4c, 0x8b, 0x7c, 0x24, 0x18, //0x00002c57 movq $24(%rsp), %r15 - 0x4d, 0x85, 0xed, //0x00002c5c testq %r13, %r13 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002c5f movq $8(%rsp), %r8 - 0x0f, 0x8e, 0xd6, 0x00, 0x00, 0x00, //0x00002c64 jle LBB0_589 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00002c6a movq $32(%rsp), %r11 - 0xe9, 0x18, 0x00, 0x00, 0x00, //0x00002c6f jmp LBB0_574 - //0x00002c74 LBB0_573 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002c74 movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002c7b movl $2, %esi - 0x48, 0x01, 0xf0, //0x00002c80 addq %rsi, %rax - 0x49, 0x01, 0xcd, //0x00002c83 addq %rcx, %r13 - 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x00002c86 jle LBB0_577 - //0x00002c8c LBB0_574 - 0x0f, 0xb6, 0x08, //0x00002c8c movzbl (%rax), %ecx - 0x80, 0xf9, 0x5c, //0x00002c8f cmpb $92, %cl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00002c92 je LBB0_573 - 0x80, 0xf9, 0x22, //0x00002c98 cmpb $34, %cl - 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x00002c9b je LBB0_581 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002ca1 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002ca8 movl $1, %esi - 0x48, 0x01, 0xf0, //0x00002cad addq %rsi, %rax - 0x49, 0x01, 0xcd, //0x00002cb0 addq %rcx, %r13 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00002cb3 jg LBB0_574 - //0x00002cb9 LBB0_577 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00002cb9 movq $40(%rsp), %r13 - 0xe9, 0x03, 0xf8, 0xff, 0xff, //0x00002cbe jmp LBB0_487 - //0x00002cc3 LBB0_581 - 0x4c, 0x29, 0xe0, //0x00002cc3 subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002cc6 addq $1, %rax - 0x49, 0x89, 0x00, //0x00002cca movq %rax, (%r8) - 0x49, 0x89, 0xc6, //0x00002ccd movq %rax, %r14 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00002cd0 movq $40(%rsp), %r13 - 0xe9, 0xec, 0xf7, 0xff, 0xff, //0x00002cd5 jmp LBB0_487 - //0x00002cda LBB0_582 - 0x4c, 0x01, 0xe2, //0x00002cda addq %r12, %rdx - 0x48, 0x85, 0xc0, //0x00002cdd testq %rax, %rax - 0x0f, 0x85, 0x22, 0xf9, 0xff, 0xff, //0x00002ce0 jne LBB0_510 - 0xe9, 0x56, 0xf9, 0xff, 0xff, //0x00002ce6 jmp LBB0_515 - //0x00002ceb LBB0_583 - 0x4c, 0x01, 0xe1, //0x00002ceb addq %r12, %rcx - 0x48, 0x85, 0xc0, //0x00002cee testq %rax, %rax - 0x0f, 0x85, 0x01, 0xf5, 0xff, 0xff, //0x00002cf1 jne LBB0_444 - 0xe9, 0x33, 0xf5, 0xff, 0xff, //0x00002cf7 jmp LBB0_449 - //0x00002cfc LBB0_584 - 0x4d, 0x01, 0xe6, //0x00002cfc addq %r12, %r14 - 0x48, 0x83, 0xfa, 0x10, //0x00002cff cmpq $16, %rdx - 0x0f, 0x83, 0xe9, 0xf5, 0xff, 0xff, //0x00002d03 jae LBB0_458 - 0xe9, 0x31, 0xf6, 0xff, 0xff, //0x00002d09 jmp LBB0_461 - //0x00002d0e LBB0_585 - 0x4d, 0x29, 0xe6, //0x00002d0e subq %r12, %r14 - 0x49, 0x01, 0xc6, //0x00002d11 addq %rax, %r14 - //0x00002d14 LBB0_586 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002d14 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x30, //0x00002d19 movq %r14, (%r8) - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00002d1c movq $32(%rsp), %r11 - 0xe9, 0xa0, 0xf7, 0xff, 0xff, //0x00002d21 jmp LBB0_487 - //0x00002d26 LBB0_587 - 0x4b, 0x8d, 0x04, 0x34, //0x00002d26 leaq (%r12,%r14), %rax - 0xe9, 0x28, 0xff, 0xff, 0xff, //0x00002d2a jmp LBB0_483 - //0x00002d2f LBB0_588 - 0x4d, 0x8b, 0x75, 0x00, //0x00002d2f movq (%r13), %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002d33 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x30, //0x00002d38 movq %r14, (%r8) - 0xe9, 0x54, 0xf7, 0xff, 0xff, //0x00002d3b jmp LBB0_478 - //0x00002d40 LBB0_589 - 0x4c, 0x8b, 0x6c, 0x24, 0x28, //0x00002d40 movq $40(%rsp), %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00002d45 movq $32(%rsp), %r11 - 0xe9, 0x77, 0xf7, 0xff, 0xff, //0x00002d4a jmp LBB0_487 - //0x00002d4f LBB0_590 - 0x49, 0x8d, 0x40, 0xff, //0x00002d4f leaq $-1(%r8), %rax - 0x4c, 0x39, 0xe8, //0x00002d53 cmpq %r13, %rax - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002d56 jne LBB0_592 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002d5c movq $8(%rsp), %r8 - 0xe9, 0x29, 0xf7, 0xff, 0xff, //0x00002d61 jmp LBB0_477 - //0x00002d66 LBB0_592 - 0x4b, 0x8d, 0x04, 0x2a, //0x00002d66 leaq (%r10,%r13), %rax - 0x48, 0x83, 0xc0, 0x02, //0x00002d6a addq $2, %rax - 0x4d, 0x29, 0xe8, //0x00002d6e subq %r13, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00002d71 addq $-2, %r8 - 0x4d, 0x89, 0xc5, //0x00002d75 movq %r8, %r13 - 0xe9, 0xda, 0xfe, 0xff, 0xff, //0x00002d78 jmp LBB0_483 - 0x90, 0x90, 0x90, //0x00002d7d .p2align 4, 0x90 - //0x00002d80 LBB0_519 - 0x49, 0x83, 0xc7, 0x10, //0x00002d80 addq $16, %r15 - 0x4c, 0x89, 0xf0, //0x00002d84 movq %r14, %rax - 0x4c, 0x3b, 0xbc, 0x24, 0xa0, 0x00, 0x00, 0x00, //0x00002d87 cmpq $160(%rsp), %r15 - 0x0f, 0x85, 0x92, 0xd5, 0xff, 0xff, //0x00002d8f jne LBB0_2 - 0xe9, 0x52, 0x00, 0x00, 0x00, //0x00002d95 jmp LBB0_520 - //0x00002d9a LBB0_33 - 0x4c, 0x29, 0xe2, //0x00002d9a subq %r12, %rdx - 0x48, 0x01, 0xfa, //0x00002d9d addq %rdi, %rdx - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002da0 movq $8(%rsp), %r8 - 0x48, 0x39, 0xca, //0x00002da5 cmpq %rcx, %rdx - 0x0f, 0x82, 0x53, 0xd7, 0xff, 0xff, //0x00002da8 jb LBB0_32 - 0xe9, 0x01, 0xd7, 0xff, 0xff, //0x00002dae jmp LBB0_34 - //0x00002db3 LBB0_593 - 0x4c, 0x29, 0xe2, //0x00002db3 subq %r12, %rdx - 0x48, 0x01, 0xf2, //0x00002db6 addq %rsi, %rdx - 0x48, 0x39, 0xca, //0x00002db9 cmpq %rcx, %rdx - 0x0f, 0x82, 0xc7, 0xf2, 0xff, 0xff, //0x00002dbc jb LBB0_419 - 0xe9, 0xd4, 0xf2, 0xff, 0xff, //0x00002dc2 jmp LBB0_420 - //0x00002dc7 LBB0_594 - 0x4d, 0x01, 0xe6, //0x00002dc7 addq %r12, %r14 - 0x4c, 0x89, 0xf2, //0x00002dca movq %r14, %rdx - 0x48, 0x85, 0xf6, //0x00002dcd testq %rsi, %rsi - 0x0f, 0x85, 0x94, 0xd6, 0xff, 0xff, //0x00002dd0 jne LBB0_25 - 0xe9, 0xcd, 0xd6, 0xff, 0xff, //0x00002dd6 jmp LBB0_30 - //0x00002ddb LBB0_595 - 0x4c, 0x01, 0xe2, //0x00002ddb addq %r12, %rdx - 0x48, 0x85, 0xc0, //0x00002dde testq %rax, %rax - 0x0f, 0x85, 0x41, 0xf2, 0xff, 0xff, //0x00002de1 jne LBB0_411 - 0xe9, 0x73, 0xf2, 0xff, 0xff, //0x00002de7 jmp LBB0_416 - //0x00002dec LBB0_520 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00002dec movq $16(%rsp), %r12 - 0x4d, 0x85, 0xe4, //0x00002df1 testq %r12, %r12 - 0x0f, 0x84, 0x7e, 0x00, 0x00, 0x00, //0x00002df4 je LBB0_596 - 0x4c, 0x89, 0x6c, 0x24, 0x28, //0x00002dfa movq %r13, $40(%rsp) - 0xc5, 0xfa, 0x6f, 0x05, 0x09, 0xd4, 0xff, 0xff, //0x00002dff vmovdqu $-11255(%rip), %xmm0 /* LCPI0_12+0(%rip) */ - 0xc4, 0xc1, 0x7a, 0x7f, 0x04, 0x24, //0x00002e07 vmovdqu %xmm0, (%r12) - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002e0d movq $-1, %r10 - 0xc5, 0xfe, 0x6f, 0x2d, 0xe4, 0xd1, 0xff, 0xff, //0x00002e14 vmovdqu $-11804(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x5c, 0xd2, 0xff, 0xff, //0x00002e1c vmovdqu $-11684(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x74, 0xd2, 0xff, 0xff, //0x00002e24 vmovdqu $-11660(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xec, 0xd2, 0xff, 0xff, //0x00002e2c vmovdqu $-11540(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0x04, 0xd3, 0xff, 0xff, //0x00002e34 vmovdqu $-11516(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x1c, 0xd3, 0xff, 0xff, //0x00002e3c vmovdqu $-11492(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x34, 0xd3, 0xff, 0xff, //0x00002e44 vmovdqu $-11468(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xec, 0xd1, 0xff, 0xff, //0x00002e4c vmovdqu $-11796(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x44, 0xd3, 0xff, 0xff, //0x00002e54 vmovdqu $-11452(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x5c, 0xd3, 0xff, 0xff, //0x00002e5c vmovdqu $-11428(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0xc5, 0x7a, 0x6f, 0x3d, 0xb4, 0xd3, 0xff, 0xff, //0x00002e64 vmovdqu $-11340(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0x4c, 0x8d, 0x35, 0xb9, 0x2b, 0x00, 0x00, //0x00002e6c leaq $11193(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0xe9, 0x68, 0x02, 0x00, 0x00, //0x00002e73 jmp LBB0_654 - //0x00002e78 LBB0_596 - 0x4d, 0x89, 0xef, //0x00002e78 movq %r13, %r15 - 0x4c, 0x89, 0xd8, //0x00002e7b movq %r11, %rax - 0x4d, 0x8b, 0x1b, //0x00002e7e movq (%r11), %r11 - 0x48, 0x8b, 0x58, 0x08, //0x00002e81 movq $8(%rax), %rbx - 0x49, 0x8b, 0x38, //0x00002e85 movq (%r8), %rdi - 0x48, 0x39, 0xdf, //0x00002e88 cmpq %rbx, %rdi - 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x00002e8b jae LBB0_601 - 0x41, 0x8a, 0x04, 0x3b, //0x00002e91 movb (%r11,%rdi), %al - 0x3c, 0x0d, //0x00002e95 cmpb $13, %al - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00002e97 je LBB0_601 - 0x3c, 0x20, //0x00002e9d cmpb $32, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002e9f je LBB0_601 - 0x04, 0xf7, //0x00002ea5 addb $-9, %al - 0x3c, 0x01, //0x00002ea7 cmpb $1, %al - 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00002ea9 jbe LBB0_601 - 0x48, 0x89, 0xf8, //0x00002eaf movq %rdi, %rax - 0xe9, 0x4f, 0x1c, 0x00, 0x00, //0x00002eb2 jmp LBB0_632 - //0x00002eb7 LBB0_601 - 0x48, 0x8d, 0x47, 0x01, //0x00002eb7 leaq $1(%rdi), %rax - 0x48, 0x39, 0xd8, //0x00002ebb cmpq %rbx, %rax - 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00002ebe jae LBB0_605 - 0x41, 0x8a, 0x0c, 0x03, //0x00002ec4 movb (%r11,%rax), %cl - 0x80, 0xf9, 0x0d, //0x00002ec8 cmpb $13, %cl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00002ecb je LBB0_605 - 0x80, 0xf9, 0x20, //0x00002ed1 cmpb $32, %cl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00002ed4 je LBB0_605 - 0x80, 0xc1, 0xf7, //0x00002eda addb $-9, %cl - 0x80, 0xf9, 0x01, //0x00002edd cmpb $1, %cl - 0x0f, 0x87, 0x20, 0x1c, 0x00, 0x00, //0x00002ee0 ja LBB0_632 - //0x00002ee6 LBB0_605 - 0x48, 0x8d, 0x47, 0x02, //0x00002ee6 leaq $2(%rdi), %rax - 0x48, 0x39, 0xd8, //0x00002eea cmpq %rbx, %rax - 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00002eed jae LBB0_609 - 0x41, 0x8a, 0x0c, 0x03, //0x00002ef3 movb (%r11,%rax), %cl - 0x80, 0xf9, 0x0d, //0x00002ef7 cmpb $13, %cl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00002efa je LBB0_609 - 0x80, 0xf9, 0x20, //0x00002f00 cmpb $32, %cl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00002f03 je LBB0_609 - 0x80, 0xc1, 0xf7, //0x00002f09 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x00002f0c cmpb $1, %cl - 0x0f, 0x87, 0xf1, 0x1b, 0x00, 0x00, //0x00002f0f ja LBB0_632 - //0x00002f15 LBB0_609 - 0x48, 0x8d, 0x47, 0x03, //0x00002f15 leaq $3(%rdi), %rax - 0x48, 0x39, 0xd8, //0x00002f19 cmpq %rbx, %rax - 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00002f1c jae LBB0_613 - 0x41, 0x8a, 0x0c, 0x03, //0x00002f22 movb (%r11,%rax), %cl - 0x80, 0xf9, 0x0d, //0x00002f26 cmpb $13, %cl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00002f29 je LBB0_613 - 0x80, 0xf9, 0x20, //0x00002f2f cmpb $32, %cl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00002f32 je LBB0_613 - 0x80, 0xc1, 0xf7, //0x00002f38 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x00002f3b cmpb $1, %cl - 0x0f, 0x87, 0xc2, 0x1b, 0x00, 0x00, //0x00002f3e ja LBB0_632 - //0x00002f44 LBB0_613 - 0x48, 0x8d, 0x47, 0x04, //0x00002f44 leaq $4(%rdi), %rax - 0x48, 0x89, 0xda, //0x00002f48 movq %rbx, %rdx - 0x48, 0x29, 0xc2, //0x00002f4b subq %rax, %rdx - 0x0f, 0x86, 0xc3, 0x24, 0x00, 0x00, //0x00002f4e jbe LBB0_1103 - 0x48, 0x83, 0xfa, 0x20, //0x00002f54 cmpq $32, %rdx - 0x0f, 0x82, 0x45, 0x26, 0x00, 0x00, //0x00002f58 jb LBB0_1121 - 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x00002f5e movq $-4, %rdx - 0x48, 0x29, 0xfa, //0x00002f65 subq %rdi, %rdx - 0xc5, 0xfe, 0x6f, 0x05, 0x90, 0xd0, 0xff, 0xff, //0x00002f68 vmovdqu $-12144(%rip), %ymm0 /* LCPI0_0+0(%rip) */ - //0x00002f70 .p2align 4, 0x90 - //0x00002f70 LBB0_616 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0c, 0x03, //0x00002f70 vmovdqu (%r11,%rax), %ymm1 - 0xc4, 0xe2, 0x7d, 0x00, 0xd1, //0x00002f76 vpshufb %ymm1, %ymm0, %ymm2 - 0xc5, 0xf5, 0x74, 0xca, //0x00002f7b vpcmpeqb %ymm2, %ymm1, %ymm1 - 0xc5, 0xfd, 0xd7, 0xc9, //0x00002f7f vpmovmskb %ymm1, %ecx - 0x83, 0xf9, 0xff, //0x00002f83 cmpl $-1, %ecx - 0x0f, 0x85, 0x62, 0x1b, 0x00, 0x00, //0x00002f86 jne LBB0_631 - 0x48, 0x83, 0xc0, 0x20, //0x00002f8c addq $32, %rax - 0x48, 0x8d, 0x0c, 0x13, //0x00002f90 leaq (%rbx,%rdx), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00002f94 addq $-32, %rcx - 0x48, 0x83, 0xc2, 0xe0, //0x00002f98 addq $-32, %rdx - 0x48, 0x83, 0xf9, 0x1f, //0x00002f9c cmpq $31, %rcx - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00002fa0 ja LBB0_616 - 0x4c, 0x89, 0xd8, //0x00002fa6 movq %r11, %rax - 0x48, 0x29, 0xd0, //0x00002fa9 subq %rdx, %rax - 0x48, 0x01, 0xda, //0x00002fac addq %rbx, %rdx - 0x48, 0x85, 0xd2, //0x00002faf testq %rdx, %rdx - 0x0f, 0x84, 0x3c, 0x00, 0x00, 0x00, //0x00002fb2 je LBB0_624 - //0x00002fb8 LBB0_619 - 0x4c, 0x8d, 0x04, 0x10, //0x00002fb8 leaq (%rax,%rdx), %r8 - 0x31, 0xf6, //0x00002fbc xorl %esi, %esi - 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002fbe movabsq $4294977024, %rcx - //0x00002fc8 LBB0_620 - 0x0f, 0xbe, 0x3c, 0x30, //0x00002fc8 movsbl (%rax,%rsi), %edi - 0x83, 0xff, 0x20, //0x00002fcc cmpl $32, %edi - 0x0f, 0x87, 0x90, 0x25, 0x00, 0x00, //0x00002fcf ja LBB0_1119 - 0x48, 0x0f, 0xa3, 0xf9, //0x00002fd5 btq %rdi, %rcx - 0x0f, 0x83, 0x86, 0x25, 0x00, 0x00, //0x00002fd9 jae LBB0_1119 - 0x48, 0x83, 0xc6, 0x01, //0x00002fdf addq $1, %rsi - 0x48, 0x39, 0xf2, //0x00002fe3 cmpq %rsi, %rdx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002fe6 jne LBB0_620 - 0x4c, 0x89, 0xc0, //0x00002fec movq %r8, %rax - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00002fef movq $8(%rsp), %r8 - //0x00002ff4 LBB0_624 - 0x4c, 0x29, 0xd8, //0x00002ff4 subq %r11, %rax - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00002ff7 movq $-1, %r13 - 0x48, 0x39, 0xd8, //0x00002ffe cmpq %rbx, %rax - 0x0f, 0x82, 0xff, 0x1a, 0x00, 0x00, //0x00003001 jb LBB0_632 - 0xe9, 0x89, 0x1c, 0x00, 0x00, //0x00003007 jmp LBB0_1026 - //0x0000300c LBB0_625 - 0x3c, 0x5d, //0x0000300c cmpb $93, %al - 0x0f, 0x84, 0x10, 0x00, 0x00, 0x00, //0x0000300e je LBB0_628 - 0xe9, 0x6e, 0x1c, 0x00, 0x00, //0x00003014 jmp LBB0_1024 - //0x00003019 LBB0_626 - 0x4d, 0x89, 0xce, //0x00003019 movq %r9, %r14 - //0x0000301c LBB0_627 - 0x3c, 0x7d, //0x0000301c cmpb $125, %al - 0x0f, 0x85, 0x63, 0x1c, 0x00, 0x00, //0x0000301e jne LBB0_1024 - //0x00003024 LBB0_628 - 0x49, 0x83, 0xc6, 0xff, //0x00003024 addq $-1, %r14 - 0x4d, 0x89, 0x30, //0x00003028 movq %r14, (%r8) - 0x49, 0xc7, 0xc5, 0xdf, 0xff, 0xff, 0xff, //0x0000302b movq $-33, %r13 - 0xe9, 0x5e, 0x1c, 0x00, 0x00, //0x00003032 jmp LBB0_1026 - //0x00003037 LBB0_1029 - 0x49, 0xf7, 0xdb, //0x00003037 negq %r11 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000303a movq $16(%rsp), %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0xb9, 0xcf, 0xff, 0xff, //0x0000303f vmovdqu $-12359(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x31, 0xd0, 0xff, 0xff, //0x00003047 vmovdqu $-12239(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x49, 0xd0, 0xff, 0xff, //0x0000304f vmovdqu $-12215(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xc1, 0xd0, 0xff, 0xff, //0x00003057 vmovdqu $-12095(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0xd9, 0xd0, 0xff, 0xff, //0x0000305f vmovdqu $-12071(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0xf1, 0xd0, 0xff, 0xff, //0x00003067 vmovdqu $-12047(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x09, 0xd1, 0xff, 0xff, //0x0000306f vmovdqu $-12023(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xc1, 0xcf, 0xff, 0xff, //0x00003077 vmovdqu $-12351(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x19, 0xd1, 0xff, 0xff, //0x0000307f vmovdqu $-12007(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x31, 0xd1, 0xff, 0xff, //0x00003087 vmovdqu $-11983(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0x4d, 0x85, 0xdb, //0x0000308f testq %r11, %r11 - 0x0f, 0x88, 0x65, 0x1c, 0x00, 0x00, //0x00003092 js LBB0_1030 - //0x00003098 LBB0_936 - 0x48, 0x8b, 0x0e, //0x00003098 movq (%rsi), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x0000309b addq $-1, %rcx - 0x4c, 0x8b, 0x4c, 0x24, 0x18, //0x0000309f movq $24(%rsp), %r9 - //0x000030a4 LBB0_651 - 0x4c, 0x01, 0xd9, //0x000030a4 addq %r11, %rcx - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000030a7 movq $8(%rsp), %r8 - 0x49, 0x89, 0x08, //0x000030ac movq %rcx, (%r8) - 0x4d, 0x85, 0xc9, //0x000030af testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x000030b2 movq $32(%rsp), %r11 - 0x0f, 0x8e, 0xd8, 0x1b, 0x00, 0x00, //0x000030b7 jle LBB0_1026 - 0x90, 0x90, 0x90, //0x000030bd .p2align 4, 0x90 - //0x000030c0 LBB0_652 - 0x49, 0x8b, 0x14, 0x24, //0x000030c0 movq (%r12), %rdx - 0x4d, 0x89, 0xd5, //0x000030c4 movq %r10, %r13 - 0x48, 0x85, 0xd2, //0x000030c7 testq %rdx, %rdx - 0x0f, 0x85, 0x10, 0x00, 0x00, 0x00, //0x000030ca jne LBB0_654 - 0xe9, 0xc0, 0x1b, 0x00, 0x00, //0x000030d0 jmp LBB0_1026 - //0x000030d5 LBB0_650 - 0x4c, 0x89, 0xe9, //0x000030d5 movq %r13, %rcx - 0xe9, 0xc7, 0xff, 0xff, 0xff, //0x000030d8 jmp LBB0_651 - 0x90, 0x90, 0x90, //0x000030dd .p2align 4, 0x90 - //0x000030e0 LBB0_654 - 0x4c, 0x89, 0xd1, //0x000030e0 movq %r10, %rcx - 0x4d, 0x8b, 0x3b, //0x000030e3 movq (%r11), %r15 - 0x49, 0x8b, 0x53, 0x08, //0x000030e6 movq $8(%r11), %rdx - 0x49, 0x8b, 0x38, //0x000030ea movq (%r8), %rdi - 0x48, 0x39, 0xd7, //0x000030ed cmpq %rdx, %rdi - 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x000030f0 jae LBB0_659 - 0x41, 0x8a, 0x04, 0x3f, //0x000030f6 movb (%r15,%rdi), %al - 0x3c, 0x0d, //0x000030fa cmpb $13, %al - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x000030fc je LBB0_659 - 0x3c, 0x20, //0x00003102 cmpb $32, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003104 je LBB0_659 - 0x04, 0xf7, //0x0000310a addb $-9, %al - 0x3c, 0x01, //0x0000310c cmpb $1, %al - 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x0000310e jbe LBB0_659 - 0x49, 0x89, 0xfa, //0x00003114 movq %rdi, %r10 - 0xe9, 0x76, 0x01, 0x00, 0x00, //0x00003117 jmp LBB0_684 - 0x90, 0x90, 0x90, 0x90, //0x0000311c .p2align 4, 0x90 - //0x00003120 LBB0_659 - 0x4c, 0x8d, 0x57, 0x01, //0x00003120 leaq $1(%rdi), %r10 - 0x49, 0x39, 0xd2, //0x00003124 cmpq %rdx, %r10 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003127 jae LBB0_663 - 0x43, 0x8a, 0x1c, 0x17, //0x0000312d movb (%r15,%r10), %bl - 0x80, 0xfb, 0x0d, //0x00003131 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003134 je LBB0_663 - 0x80, 0xfb, 0x20, //0x0000313a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000313d je LBB0_663 - 0x80, 0xc3, 0xf7, //0x00003143 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00003146 cmpb $1, %bl - 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x00003149 ja LBB0_684 - 0x90, //0x0000314f .p2align 4, 0x90 - //0x00003150 LBB0_663 - 0x4c, 0x8d, 0x57, 0x02, //0x00003150 leaq $2(%rdi), %r10 - 0x49, 0x39, 0xd2, //0x00003154 cmpq %rdx, %r10 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003157 jae LBB0_667 - 0x43, 0x8a, 0x1c, 0x17, //0x0000315d movb (%r15,%r10), %bl - 0x80, 0xfb, 0x0d, //0x00003161 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003164 je LBB0_667 - 0x80, 0xfb, 0x20, //0x0000316a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000316d je LBB0_667 - 0x80, 0xc3, 0xf7, //0x00003173 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00003176 cmpb $1, %bl - 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00003179 ja LBB0_684 - 0x90, //0x0000317f .p2align 4, 0x90 - //0x00003180 LBB0_667 - 0x4c, 0x8d, 0x57, 0x03, //0x00003180 leaq $3(%rdi), %r10 - 0x49, 0x39, 0xd2, //0x00003184 cmpq %rdx, %r10 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003187 jae LBB0_671 - 0x43, 0x8a, 0x1c, 0x17, //0x0000318d movb (%r15,%r10), %bl - 0x80, 0xfb, 0x0d, //0x00003191 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003194 je LBB0_671 - 0x80, 0xfb, 0x20, //0x0000319a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000319d je LBB0_671 - 0x80, 0xc3, 0xf7, //0x000031a3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000031a6 cmpb $1, %bl - 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000031a9 ja LBB0_684 - 0x90, //0x000031af .p2align 4, 0x90 - //0x000031b0 LBB0_671 - 0x4c, 0x8d, 0x57, 0x04, //0x000031b0 leaq $4(%rdi), %r10 - 0x48, 0x89, 0xd6, //0x000031b4 movq %rdx, %rsi - 0x4c, 0x29, 0xd6, //0x000031b7 subq %r10, %rsi - 0x0f, 0x86, 0xb5, 0x1a, 0x00, 0x00, //0x000031ba jbe LBB0_1020 - 0x48, 0x83, 0xfe, 0x20, //0x000031c0 cmpq $32, %rsi - 0x0f, 0x82, 0x98, 0x12, 0x00, 0x00, //0x000031c4 jb LBB0_937 - 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x000031ca movq $-4, %rsi - 0x48, 0x29, 0xfe, //0x000031d1 subq %rdi, %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000031d4 .p2align 4, 0x90 - //0x000031e0 LBB0_674 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x17, //0x000031e0 vmovdqu (%r15,%r10), %ymm0 - 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x000031e6 vpshufb %ymm0, %ymm5, %ymm1 - 0xc5, 0xfd, 0x74, 0xc1, //0x000031eb vpcmpeqb %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf8, //0x000031ef vpmovmskb %ymm0, %edi - 0x83, 0xff, 0xff, //0x000031f3 cmpl $-1, %edi - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000031f6 jne LBB0_683 - 0x49, 0x83, 0xc2, 0x20, //0x000031fc addq $32, %r10 - 0x48, 0x8d, 0x3c, 0x32, //0x00003200 leaq (%rdx,%rsi), %rdi - 0x48, 0x83, 0xc7, 0xe0, //0x00003204 addq $-32, %rdi - 0x48, 0x83, 0xc6, 0xe0, //0x00003208 addq $-32, %rsi - 0x48, 0x83, 0xff, 0x1f, //0x0000320c cmpq $31, %rdi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00003210 ja LBB0_674 - 0x4d, 0x89, 0xfa, //0x00003216 movq %r15, %r10 - 0x49, 0x29, 0xf2, //0x00003219 subq %rsi, %r10 - 0x48, 0x01, 0xd6, //0x0000321c addq %rdx, %rsi - 0x48, 0x85, 0xf6, //0x0000321f testq %rsi, %rsi - 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00003222 je LBB0_682 - //0x00003228 LBB0_677 - 0x4d, 0x8d, 0x04, 0x32, //0x00003228 leaq (%r10,%rsi), %r8 - 0x31, 0xff, //0x0000322c xorl %edi, %edi - 0x90, 0x90, //0x0000322e .p2align 4, 0x90 - //0x00003230 LBB0_678 - 0x41, 0x0f, 0xbe, 0x1c, 0x3a, //0x00003230 movsbl (%r10,%rdi), %ebx - 0x83, 0xfb, 0x20, //0x00003235 cmpl $32, %ebx - 0x0f, 0x87, 0x07, 0x11, 0x00, 0x00, //0x00003238 ja LBB0_928 - 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000323e movabsq $4294977024, %rax - 0x48, 0x0f, 0xa3, 0xd8, //0x00003248 btq %rbx, %rax - 0x0f, 0x83, 0xf3, 0x10, 0x00, 0x00, //0x0000324c jae LBB0_928 - 0x48, 0x83, 0xc7, 0x01, //0x00003252 addq $1, %rdi - 0x48, 0x39, 0xfe, //0x00003256 cmpq %rdi, %rsi - 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00003259 jne LBB0_678 - 0x4d, 0x89, 0xc2, //0x0000325f movq %r8, %r10 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00003262 movq $8(%rsp), %r8 - //0x00003267 LBB0_682 - 0x4d, 0x29, 0xfa, //0x00003267 subq %r15, %r10 - 0x49, 0x39, 0xd2, //0x0000326a cmpq %rdx, %r10 - 0x0f, 0x82, 0x1f, 0x00, 0x00, 0x00, //0x0000326d jb LBB0_684 - 0xe9, 0x00, 0x1a, 0x00, 0x00, //0x00003273 jmp LBB0_1021 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003278 .p2align 4, 0x90 - //0x00003280 LBB0_683 - 0xf7, 0xd7, //0x00003280 notl %edi - 0x44, 0x0f, 0xbc, 0xd7, //0x00003282 bsfl %edi, %r10d - 0x49, 0x29, 0xf2, //0x00003286 subq %rsi, %r10 - 0x49, 0x39, 0xd2, //0x00003289 cmpq %rdx, %r10 - 0x0f, 0x83, 0xe6, 0x19, 0x00, 0x00, //0x0000328c jae LBB0_1021 - //0x00003292 LBB0_684 - 0x49, 0x8d, 0x52, 0x01, //0x00003292 leaq $1(%r10), %rdx - 0x49, 0x89, 0x10, //0x00003296 movq %rdx, (%r8) - 0x43, 0x0f, 0xbe, 0x3c, 0x17, //0x00003299 movsbl (%r15,%r10), %edi - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000329e movq $-1, %r13 - 0x85, 0xff, //0x000032a5 testl %edi, %edi - 0x0f, 0x84, 0xe8, 0x19, 0x00, 0x00, //0x000032a7 je LBB0_1026 - 0x49, 0x8b, 0x34, 0x24, //0x000032ad movq (%r12), %rsi - 0x48, 0x8d, 0x56, 0xff, //0x000032b1 leaq $-1(%rsi), %rdx - 0x41, 0x8b, 0x1c, 0xf4, //0x000032b5 movl (%r12,%rsi,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x000032b9 cmpq $-1, %rcx - 0x4c, 0x0f, 0x45, 0xd1, //0x000032bd cmovneq %rcx, %r10 - 0x83, 0xc3, 0xff, //0x000032c1 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x000032c4 cmpl $5, %ebx - 0x0f, 0x87, 0x20, 0x00, 0x00, 0x00, //0x000032c7 ja LBB0_690 - 0x49, 0x63, 0x0c, 0x9e, //0x000032cd movslq (%r14,%rbx,4), %rcx - 0x4c, 0x01, 0xf1, //0x000032d1 addq %r14, %rcx - 0xff, 0xe1, //0x000032d4 jmpq *%rcx - //0x000032d6 LBB0_687 - 0x83, 0xff, 0x2c, //0x000032d6 cmpl $44, %edi - 0x0f, 0x84, 0x04, 0x06, 0x00, 0x00, //0x000032d9 je LBB0_776 - 0x83, 0xff, 0x5d, //0x000032df cmpl $93, %edi - 0x0f, 0x84, 0xe6, 0x05, 0x00, 0x00, //0x000032e2 je LBB0_689 - 0xe9, 0xa1, 0x19, 0x00, 0x00, //0x000032e8 jmp LBB0_1025 - //0x000032ed LBB0_690 - 0x49, 0x89, 0x14, 0x24, //0x000032ed movq %rdx, (%r12) - 0x83, 0xff, 0x7b, //0x000032f1 cmpl $123, %edi - 0x0f, 0x86, 0xc3, 0x01, 0x00, 0x00, //0x000032f4 jbe LBB0_718 - 0xe9, 0x8f, 0x19, 0x00, 0x00, //0x000032fa jmp LBB0_1025 - //0x000032ff LBB0_691 - 0x83, 0xff, 0x2c, //0x000032ff cmpl $44, %edi - 0x0f, 0x85, 0xbd, 0x05, 0x00, 0x00, //0x00003302 jne LBB0_692 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00003308 cmpq $4095, %rsi - 0x0f, 0x8f, 0x95, 0x19, 0x00, 0x00, //0x0000330f jg LBB0_1108 - 0x48, 0x8d, 0x4e, 0x01, //0x00003315 leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0c, 0x24, //0x00003319 movq %rcx, (%r12) - 0x49, 0xc7, 0x44, 0xf4, 0x08, 0x03, 0x00, 0x00, 0x00, //0x0000331d movq $3, $8(%r12,%rsi,8) - 0xe9, 0x95, 0xfd, 0xff, 0xff, //0x00003326 jmp LBB0_652 - //0x0000332b LBB0_693 - 0x40, 0x80, 0xff, 0x22, //0x0000332b cmpb $34, %dil - 0x0f, 0x85, 0x59, 0x19, 0x00, 0x00, //0x0000332f jne LBB0_1025 - 0x49, 0xc7, 0x04, 0xf4, 0x04, 0x00, 0x00, 0x00, //0x00003335 movq $4, (%r12,%rsi,8) - 0x4d, 0x8b, 0x08, //0x0000333d movq (%r8), %r9 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003340 movq $40(%rsp), %rax - 0x4c, 0x8b, 0x18, //0x00003345 movq (%rax), %r11 - 0x4c, 0x89, 0xd9, //0x00003348 movq %r11, %rcx - 0x4c, 0x29, 0xc9, //0x0000334b subq %r9, %rcx - 0x0f, 0x84, 0x09, 0x22, 0x00, 0x00, //0x0000334e je LBB0_1129 - 0x48, 0x83, 0xf9, 0x40, //0x00003354 cmpq $64, %rcx - 0x0f, 0x82, 0xd1, 0x11, 0x00, 0x00, //0x00003358 jb LBB0_944 - 0x4c, 0x89, 0xcf, //0x0000335e movq %r9, %rdi - 0x48, 0xf7, 0xd7, //0x00003361 notq %rdi - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003364 movq $-1, %r8 - 0x4d, 0x89, 0xcd, //0x0000336b movq %r9, %r13 - 0x45, 0x31, 0xf6, //0x0000336e xorl %r14d, %r14d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003371 .p2align 4, 0x90 - //0x00003380 LBB0_697 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x2f, //0x00003380 vmovdqu (%r15,%r13), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x2f, 0x20, //0x00003386 vmovdqu $32(%r15,%r13), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000338d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00003391 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd6, //0x00003395 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00003399 vpmovmskb %ymm2, %ebx - 0xc5, 0xfd, 0x74, 0xc7, //0x0000339d vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000033a1 vpmovmskb %ymm0, %esi - 0xc5, 0xf5, 0x74, 0xc7, //0x000033a5 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000033a9 vpmovmskb %ymm0, %eax - 0x48, 0xc1, 0xe3, 0x20, //0x000033ad shlq $32, %rbx - 0x48, 0x09, 0xda, //0x000033b1 orq %rbx, %rdx - 0x48, 0xc1, 0xe0, 0x20, //0x000033b4 shlq $32, %rax - 0x48, 0x09, 0xc6, //0x000033b8 orq %rax, %rsi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000033bb jne LBB0_706 - 0x4d, 0x85, 0xf6, //0x000033c1 testq %r14, %r14 - 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000033c4 jne LBB0_708 - 0x45, 0x31, 0xf6, //0x000033ca xorl %r14d, %r14d - 0x48, 0x85, 0xd2, //0x000033cd testq %rdx, %rdx - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000033d0 jne LBB0_709 - //0x000033d6 LBB0_700 - 0x48, 0x83, 0xc1, 0xc0, //0x000033d6 addq $-64, %rcx - 0x48, 0x83, 0xc7, 0xc0, //0x000033da addq $-64, %rdi - 0x49, 0x83, 0xc5, 0x40, //0x000033de addq $64, %r13 - 0x48, 0x83, 0xf9, 0x3f, //0x000033e2 cmpq $63, %rcx - 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x000033e6 ja LBB0_697 - 0xe9, 0xd7, 0x0d, 0x00, 0x00, //0x000033ec jmp LBB0_701 - //0x000033f1 LBB0_706 - 0x49, 0x83, 0xf8, 0xff, //0x000033f1 cmpq $-1, %r8 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000033f5 jne LBB0_708 - 0x4c, 0x0f, 0xbc, 0xc6, //0x000033fb bsfq %rsi, %r8 - 0x4d, 0x01, 0xe8, //0x000033ff addq %r13, %r8 - //0x00003402 LBB0_708 - 0x4c, 0x89, 0xf0, //0x00003402 movq %r14, %rax - 0x48, 0xf7, 0xd0, //0x00003405 notq %rax - 0x48, 0x21, 0xf0, //0x00003408 andq %rsi, %rax - 0x4c, 0x8d, 0x24, 0x00, //0x0000340b leaq (%rax,%rax), %r12 - 0x4d, 0x09, 0xf4, //0x0000340f orq %r14, %r12 - 0x4c, 0x89, 0xe3, //0x00003412 movq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x00003415 notq %rbx - 0x48, 0x21, 0xf3, //0x00003418 andq %rsi, %rbx - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000341b movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf3, //0x00003425 andq %rsi, %rbx - 0x45, 0x31, 0xf6, //0x00003428 xorl %r14d, %r14d - 0x48, 0x01, 0xc3, //0x0000342b addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc6, //0x0000342e setb %r14b - 0x48, 0x01, 0xdb, //0x00003432 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003435 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x0000343f xorq %rax, %rbx - 0x4c, 0x21, 0xe3, //0x00003442 andq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x00003445 notq %rbx - 0x48, 0x21, 0xda, //0x00003448 andq %rbx, %rdx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000344b movq $16(%rsp), %r12 - 0x48, 0x85, 0xd2, //0x00003450 testq %rdx, %rdx - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003453 je LBB0_700 - //0x00003459 LBB0_709 - 0x4c, 0x0f, 0xbc, 0xea, //0x00003459 bsfq %rdx, %r13 - 0x49, 0x29, 0xfd, //0x0000345d subq %rdi, %r13 - 0x4c, 0x8d, 0x35, 0xc5, 0x25, 0x00, 0x00, //0x00003460 leaq $9669(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x4d, 0x85, 0xed, //0x00003467 testq %r13, %r13 - 0x0f, 0x88, 0x46, 0x18, 0x00, 0x00, //0x0000346a js LBB0_833 - //0x00003470 LBB0_712 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00003470 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x28, //0x00003475 movq %r13, (%r8) - 0x4d, 0x85, 0xc9, //0x00003478 testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x0000347b movq $32(%rsp), %r11 - 0x0f, 0x8f, 0x3a, 0xfc, 0xff, 0xff, //0x00003480 jg LBB0_652 - 0xe9, 0x4c, 0x18, 0x00, 0x00, //0x00003486 jmp LBB0_713 - //0x0000348b LBB0_714 - 0x40, 0x80, 0xff, 0x3a, //0x0000348b cmpb $58, %dil - 0x0f, 0x85, 0xf9, 0x17, 0x00, 0x00, //0x0000348f jne LBB0_1025 - 0x49, 0xc7, 0x04, 0xf4, 0x00, 0x00, 0x00, 0x00, //0x00003495 movq $0, (%r12,%rsi,8) - 0xe9, 0x1e, 0xfc, 0xff, 0xff, //0x0000349d jmp LBB0_652 - //0x000034a2 LBB0_716 - 0x40, 0x80, 0xff, 0x5d, //0x000034a2 cmpb $93, %dil - 0x0f, 0x84, 0x22, 0x04, 0x00, 0x00, //0x000034a6 je LBB0_689 - 0x49, 0xc7, 0x04, 0xf4, 0x01, 0x00, 0x00, 0x00, //0x000034ac movq $1, (%r12,%rsi,8) - 0x83, 0xff, 0x7b, //0x000034b4 cmpl $123, %edi - 0x0f, 0x87, 0xd1, 0x17, 0x00, 0x00, //0x000034b7 ja LBB0_1025 - //0x000034bd LBB0_718 - 0x89, 0xf8, //0x000034bd movl %edi, %eax - 0x48, 0x8d, 0x0d, 0x7e, 0x25, 0x00, 0x00, //0x000034bf leaq $9598(%rip), %rcx /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x04, 0x81, //0x000034c6 movslq (%rcx,%rax,4), %rax - 0x48, 0x01, 0xc8, //0x000034ca addq %rcx, %rax - 0xff, 0xe0, //0x000034cd jmpq *%rax - //0x000034cf LBB0_721 - 0x4c, 0x89, 0xc0, //0x000034cf movq %r8, %rax - 0x48, 0x8b, 0x4c, 0x24, 0x28, //0x000034d2 movq $40(%rsp), %rcx - 0x4c, 0x8b, 0x01, //0x000034d7 movq (%rcx), %r8 - 0x4c, 0x8b, 0x08, //0x000034da movq (%rax), %r9 - 0x4d, 0x8d, 0x69, 0xff, //0x000034dd leaq $-1(%r9), %r13 - 0x4d, 0x29, 0xe8, //0x000034e1 subq %r13, %r8 - 0x0f, 0x84, 0x02, 0x18, 0x00, 0x00, //0x000034e4 je LBB0_1028 - 0x4b, 0x8d, 0x04, 0x0f, //0x000034ea leaq (%r15,%r9), %rax - 0x48, 0x83, 0xc0, 0xff, //0x000034ee addq $-1, %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000034f2 movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000034f7 cmpb $48, (%rax) - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000034fa jne LBB0_726 - 0x41, 0xbb, 0x01, 0x00, 0x00, 0x00, //0x00003500 movl $1, %r11d - 0x49, 0x83, 0xf8, 0x01, //0x00003506 cmpq $1, %r8 - 0x0f, 0x84, 0xc5, 0xfb, 0xff, 0xff, //0x0000350a je LBB0_650 - 0x43, 0x8a, 0x0c, 0x0f, //0x00003510 movb (%r15,%r9), %cl - 0x80, 0xc1, 0xd2, //0x00003514 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00003517 cmpb $55, %cl - 0x0f, 0x87, 0xb5, 0xfb, 0xff, 0xff, //0x0000351a ja LBB0_650 - 0x0f, 0xb6, 0xc1, //0x00003520 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003523 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000352d btq %rax, %rcx - 0x4c, 0x89, 0xe9, //0x00003531 movq %r13, %rcx - 0x0f, 0x83, 0x6a, 0xfb, 0xff, 0xff, //0x00003534 jae LBB0_651 - //0x0000353a LBB0_726 - 0x49, 0x83, 0xf8, 0x20, //0x0000353a cmpq $32, %r8 - 0x4c, 0x89, 0x4c, 0x24, 0x18, //0x0000353e movq %r9, $24(%rsp) - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x00003543 movq $-1, %r12 - 0x0f, 0x82, 0xfc, 0x0f, 0x00, 0x00, //0x0000354a jb LBB0_945 - 0x45, 0x31, 0xdb, //0x00003550 xorl %r11d, %r11d - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003553 movq $-1, %rax - 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x0000355a movq $-1, $48(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003563 .p2align 4, 0x90 - //0x00003570 LBB0_728 - 0x48, 0x8b, 0x4c, 0x24, 0x38, //0x00003570 movq $56(%rsp), %rcx - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x19, //0x00003575 vmovdqu (%rcx,%r11), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xc8, //0x0000357b vpcmpgtb %ymm8, %ymm0, %ymm1 - 0xc5, 0xb5, 0x64, 0xd0, //0x00003580 vpcmpgtb %ymm0, %ymm9, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00003584 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xad, 0x74, 0xd0, //0x00003588 vpcmpeqb %ymm0, %ymm10, %ymm2 - 0xc5, 0xa5, 0x74, 0xd8, //0x0000358c vpcmpeqb %ymm0, %ymm11, %ymm3 - 0xc5, 0xe5, 0xeb, 0xd2, //0x00003590 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x9d, 0xdb, 0xd8, //0x00003594 vpand %ymm0, %ymm12, %ymm3 - 0xc5, 0x95, 0x74, 0xc0, //0x00003598 vpcmpeqb %ymm0, %ymm13, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x0000359c vpmovmskb %ymm0, %esi - 0xc5, 0x8d, 0x74, 0xdb, //0x000035a0 vpcmpeqb %ymm3, %ymm14, %ymm3 - 0xc5, 0xfd, 0xd7, 0xdb, //0x000035a4 vpmovmskb %ymm3, %ebx - 0xc5, 0xfd, 0xd7, 0xfa, //0x000035a8 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0xeb, 0xc0, //0x000035ac vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000035b0 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000035b4 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x000035b8 vpmovmskb %ymm0, %ecx - 0x48, 0xf7, 0xd1, //0x000035bc notq %rcx - 0x48, 0x0f, 0xbc, 0xc9, //0x000035bf bsfq %rcx, %rcx - 0x83, 0xf9, 0x20, //0x000035c3 cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000035c6 je LBB0_730 - 0xba, 0xff, 0xff, 0xff, 0xff, //0x000035cc movl $-1, %edx - 0xd3, 0xe2, //0x000035d1 shll %cl, %edx - 0xf7, 0xd2, //0x000035d3 notl %edx - 0x21, 0xd6, //0x000035d5 andl %edx, %esi - 0x21, 0xd3, //0x000035d7 andl %edx, %ebx - 0x21, 0xfa, //0x000035d9 andl %edi, %edx - 0x89, 0xd7, //0x000035db movl %edx, %edi - //0x000035dd LBB0_730 - 0x8d, 0x56, 0xff, //0x000035dd leal $-1(%rsi), %edx - 0x21, 0xf2, //0x000035e0 andl %esi, %edx - 0x0f, 0x85, 0x43, 0x0c, 0x00, 0x00, //0x000035e2 jne LBB0_912 - 0x8d, 0x53, 0xff, //0x000035e8 leal $-1(%rbx), %edx - 0x21, 0xda, //0x000035eb andl %ebx, %edx - 0x0f, 0x85, 0x38, 0x0c, 0x00, 0x00, //0x000035ed jne LBB0_912 - 0x8d, 0x57, 0xff, //0x000035f3 leal $-1(%rdi), %edx - 0x21, 0xfa, //0x000035f6 andl %edi, %edx - 0x0f, 0x85, 0x2d, 0x0c, 0x00, 0x00, //0x000035f8 jne LBB0_912 - 0x85, 0xf6, //0x000035fe testl %esi, %esi - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00003600 je LBB0_736 - 0x0f, 0xbc, 0xf6, //0x00003606 bsfl %esi, %esi - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00003609 cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0x49, 0x0d, 0x00, 0x00, //0x0000360f jne LBB0_929 - 0x4c, 0x01, 0xde, //0x00003615 addq %r11, %rsi - 0x48, 0x89, 0x74, 0x24, 0x30, //0x00003618 movq %rsi, $48(%rsp) - //0x0000361d LBB0_736 - 0x85, 0xdb, //0x0000361d testl %ebx, %ebx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000361f je LBB0_739 - 0x0f, 0xbc, 0xf3, //0x00003625 bsfl %ebx, %esi - 0x48, 0x83, 0xf8, 0xff, //0x00003628 cmpq $-1, %rax - 0x0f, 0x85, 0x2c, 0x0d, 0x00, 0x00, //0x0000362c jne LBB0_929 - 0x4c, 0x01, 0xde, //0x00003632 addq %r11, %rsi - 0x48, 0x89, 0xf0, //0x00003635 movq %rsi, %rax - //0x00003638 LBB0_739 - 0x85, 0xff, //0x00003638 testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000363a je LBB0_742 - 0x0f, 0xbc, 0xf7, //0x00003640 bsfl %edi, %esi - 0x49, 0x83, 0xfc, 0xff, //0x00003643 cmpq $-1, %r12 - 0x0f, 0x85, 0x11, 0x0d, 0x00, 0x00, //0x00003647 jne LBB0_929 - 0x4c, 0x01, 0xde, //0x0000364d addq %r11, %rsi - 0x49, 0x89, 0xf4, //0x00003650 movq %rsi, %r12 - //0x00003653 LBB0_742 - 0x83, 0xf9, 0x20, //0x00003653 cmpl $32, %ecx - 0x0f, 0x85, 0x21, 0x04, 0x00, 0x00, //0x00003656 jne LBB0_801 - 0x49, 0x83, 0xc0, 0xe0, //0x0000365c addq $-32, %r8 - 0x49, 0x83, 0xc3, 0x20, //0x00003660 addq $32, %r11 - 0x49, 0x83, 0xf8, 0x1f, //0x00003664 cmpq $31, %r8 - 0x0f, 0x87, 0x02, 0xff, 0xff, 0xff, //0x00003668 ja LBB0_728 - 0xc5, 0xf8, 0x77, //0x0000366e vzeroupper - 0xc5, 0x7a, 0x6f, 0x3d, 0xa7, 0xcb, 0xff, 0xff, //0x00003671 vmovdqu $-13401(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x3f, 0xcb, 0xff, 0xff, //0x00003679 vmovdqu $-13505(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x17, 0xcb, 0xff, 0xff, //0x00003681 vmovdqu $-13545(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xaf, 0xc9, 0xff, 0xff, //0x00003689 vmovdqu $-13905(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xe7, 0xca, 0xff, 0xff, //0x00003691 vmovdqu $-13593(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0xbf, 0xca, 0xff, 0xff, //0x00003699 vmovdqu $-13633(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0x97, 0xca, 0xff, 0xff, //0x000036a1 vmovdqu $-13673(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x6f, 0xca, 0xff, 0xff, //0x000036a9 vmovdqu $-13713(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xe7, 0xc9, 0xff, 0xff, //0x000036b1 vmovdqu $-13849(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xbf, 0xc9, 0xff, 0xff, //0x000036b9 vmovdqu $-13889(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0x37, 0xc9, 0xff, 0xff, //0x000036c1 vmovdqu $-14025(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0x4c, 0x03, 0x5c, 0x24, 0x38, //0x000036c9 addq $56(%rsp), %r11 - 0x49, 0x83, 0xf8, 0x10, //0x000036ce cmpq $16, %r8 - 0x0f, 0x82, 0x37, 0x01, 0x00, 0x00, //0x000036d2 jb LBB0_763 - //0x000036d8 LBB0_745 - 0x4d, 0x89, 0xde, //0x000036d8 movq %r11, %r14 - 0x4d, 0x29, 0xce, //0x000036db subq %r9, %r14 - 0x4d, 0x29, 0xfe, //0x000036de subq %r15, %r14 - 0x49, 0x83, 0xc6, 0x01, //0x000036e1 addq $1, %r14 - 0x45, 0x31, 0xc9, //0x000036e5 xorl %r9d, %r9d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000036e8 .p2align 4, 0x90 - //0x000036f0 LBB0_746 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x0b, //0x000036f0 vmovdqu (%r11,%r9), %xmm0 - 0xc4, 0xc1, 0x79, 0x64, 0xcf, //0x000036f6 vpcmpgtb %xmm15, %xmm0, %xmm1 - 0xc5, 0xfa, 0x6f, 0x15, 0x2d, 0xcb, 0xff, 0xff, //0x000036fb vmovdqu $-13523(%rip), %xmm2 /* LCPI0_20+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00003703 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00003707 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x2d, 0xcb, 0xff, 0xff, //0x0000370b vpcmpeqb $-13523(%rip), %xmm0, %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x35, 0xcb, 0xff, 0xff, //0x00003713 vpcmpeqb $-13515(%rip), %xmm0, %xmm3 /* LCPI0_22+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x0000371b vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0xc9, 0xca, 0xff, 0xff, //0x0000371f vpand $-13623(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x31, 0xcb, 0xff, 0xff, //0x00003727 vpcmpeqb $-13519(%rip), %xmm0, %xmm0 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x39, 0xcb, 0xff, 0xff, //0x0000372f vpcmpeqb $-13511(%rip), %xmm3, %xmm3 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00003737 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x0000373b vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x0000373f vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0xf9, 0xd7, 0xf0, //0x00003743 vpmovmskb %xmm0, %esi - 0xc5, 0xf9, 0xd7, 0xdb, //0x00003747 vpmovmskb %xmm3, %ebx - 0xc5, 0xf9, 0xd7, 0xfa, //0x0000374b vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc9, //0x0000374f vpmovmskb %xmm1, %ecx - 0xf7, 0xd1, //0x00003753 notl %ecx - 0x0f, 0xbc, 0xc9, //0x00003755 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00003758 cmpl $16, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x0000375b je LBB0_748 - 0xba, 0xff, 0xff, 0xff, 0xff, //0x00003761 movl $-1, %edx - 0xd3, 0xe2, //0x00003766 shll %cl, %edx - 0xf7, 0xd2, //0x00003768 notl %edx - 0x21, 0xd6, //0x0000376a andl %edx, %esi - 0x21, 0xd3, //0x0000376c andl %edx, %ebx - 0x21, 0xfa, //0x0000376e andl %edi, %edx - 0x89, 0xd7, //0x00003770 movl %edx, %edi - //0x00003772 LBB0_748 - 0x8d, 0x56, 0xff, //0x00003772 leal $-1(%rsi), %edx - 0x21, 0xf2, //0x00003775 andl %esi, %edx - 0x0f, 0x85, 0x7d, 0x0c, 0x00, 0x00, //0x00003777 jne LBB0_932 - 0x8d, 0x53, 0xff, //0x0000377d leal $-1(%rbx), %edx - 0x21, 0xda, //0x00003780 andl %ebx, %edx - 0x0f, 0x85, 0x72, 0x0c, 0x00, 0x00, //0x00003782 jne LBB0_932 - 0x8d, 0x57, 0xff, //0x00003788 leal $-1(%rdi), %edx - 0x21, 0xfa, //0x0000378b andl %edi, %edx - 0x0f, 0x85, 0x67, 0x0c, 0x00, 0x00, //0x0000378d jne LBB0_932 - 0x85, 0xf6, //0x00003793 testl %esi, %esi - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00003795 je LBB0_754 - 0x0f, 0xbc, 0xf6, //0x0000379b bsfl %esi, %esi - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x0000379e cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0x82, 0x0c, 0x00, 0x00, //0x000037a4 jne LBB0_934 - 0x4c, 0x01, 0xf6, //0x000037aa addq %r14, %rsi - 0x4c, 0x01, 0xce, //0x000037ad addq %r9, %rsi - 0x48, 0x89, 0x74, 0x24, 0x30, //0x000037b0 movq %rsi, $48(%rsp) - //0x000037b5 LBB0_754 - 0x85, 0xdb, //0x000037b5 testl %ebx, %ebx - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000037b7 je LBB0_757 - 0x0f, 0xbc, 0xf3, //0x000037bd bsfl %ebx, %esi - 0x48, 0x83, 0xf8, 0xff, //0x000037c0 cmpq $-1, %rax - 0x0f, 0x85, 0x62, 0x0c, 0x00, 0x00, //0x000037c4 jne LBB0_934 - 0x4c, 0x01, 0xf6, //0x000037ca addq %r14, %rsi - 0x4c, 0x01, 0xce, //0x000037cd addq %r9, %rsi - 0x48, 0x89, 0xf0, //0x000037d0 movq %rsi, %rax - //0x000037d3 LBB0_757 - 0x85, 0xff, //0x000037d3 testl %edi, %edi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000037d5 je LBB0_760 - 0x0f, 0xbc, 0xf7, //0x000037db bsfl %edi, %esi - 0x49, 0x83, 0xfc, 0xff, //0x000037de cmpq $-1, %r12 - 0x0f, 0x85, 0x44, 0x0c, 0x00, 0x00, //0x000037e2 jne LBB0_934 - 0x4c, 0x01, 0xf6, //0x000037e8 addq %r14, %rsi - 0x4c, 0x01, 0xce, //0x000037eb addq %r9, %rsi - 0x49, 0x89, 0xf4, //0x000037ee movq %rsi, %r12 - //0x000037f1 LBB0_760 - 0x83, 0xf9, 0x10, //0x000037f1 cmpl $16, %ecx - 0x0f, 0x85, 0x9e, 0x02, 0x00, 0x00, //0x000037f4 jne LBB0_802 - 0x49, 0x83, 0xc0, 0xf0, //0x000037fa addq $-16, %r8 - 0x49, 0x83, 0xc1, 0x10, //0x000037fe addq $16, %r9 - 0x49, 0x83, 0xf8, 0x0f, //0x00003802 cmpq $15, %r8 - 0x0f, 0x87, 0xe4, 0xfe, 0xff, 0xff, //0x00003806 ja LBB0_746 - 0x4d, 0x01, 0xcb, //0x0000380c addq %r9, %r11 - //0x0000380f LBB0_763 - 0x4d, 0x85, 0xc0, //0x0000380f testq %r8, %r8 - 0x48, 0x8d, 0x1d, 0x87, 0x24, 0x00, 0x00, //0x00003812 leaq $9351(%rip), %rbx /* LJTI0_5+0(%rip) */ - 0x4c, 0x8d, 0x35, 0x0c, 0x22, 0x00, 0x00, //0x00003819 leaq $8716(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x0f, 0x84, 0x89, 0x02, 0x00, 0x00, //0x00003820 je LBB0_804 - 0x4f, 0x8d, 0x0c, 0x03, //0x00003826 leaq (%r11,%r8), %r9 - 0x4c, 0x89, 0xdf, //0x0000382a movq %r11, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x18, //0x0000382d subq $24(%rsp), %rdi - 0x4c, 0x29, 0xff, //0x00003832 subq %r15, %rdi - 0x48, 0x83, 0xc7, 0x01, //0x00003835 addq $1, %rdi - 0x31, 0xc9, //0x00003839 xorl %ecx, %ecx - 0xe9, 0x0d, 0x00, 0x00, 0x00, //0x0000383b jmp LBB0_766 - //0x00003840 .p2align 4, 0x90 - //0x00003840 LBB0_765 - 0x48, 0x83, 0xc1, 0x01, //0x00003840 addq $1, %rcx - 0x49, 0x39, 0xc8, //0x00003844 cmpq %rcx, %r8 - 0x0f, 0x84, 0x73, 0x09, 0x00, 0x00, //0x00003847 je LBB0_911 - //0x0000384d LBB0_766 - 0x41, 0x0f, 0xbe, 0x34, 0x0b, //0x0000384d movsbl (%r11,%rcx), %esi - 0x8d, 0x56, 0xd0, //0x00003852 leal $-48(%rsi), %edx - 0x83, 0xfa, 0x0a, //0x00003855 cmpl $10, %edx - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00003858 jb LBB0_765 - 0x8d, 0x56, 0xd5, //0x0000385e leal $-43(%rsi), %edx - 0x83, 0xfa, 0x1a, //0x00003861 cmpl $26, %edx - 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00003864 ja LBB0_771 - 0x48, 0x63, 0x14, 0x93, //0x0000386a movslq (%rbx,%rdx,4), %rdx - 0x48, 0x01, 0xda, //0x0000386e addq %rbx, %rdx - 0xff, 0xe2, //0x00003871 jmpq *%rdx - //0x00003873 LBB0_769 - 0x49, 0x83, 0xfc, 0xff, //0x00003873 cmpq $-1, %r12 - 0x0f, 0x85, 0x85, 0x0b, 0x00, 0x00, //0x00003877 jne LBB0_933 - 0x4c, 0x8d, 0x24, 0x0f, //0x0000387d leaq (%rdi,%rcx), %r12 - 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00003881 jmp LBB0_765 - //0x00003886 LBB0_771 - 0x83, 0xfe, 0x65, //0x00003886 cmpl $101, %esi - 0x0f, 0x85, 0x1d, 0x02, 0x00, 0x00, //0x00003889 jne LBB0_803 - //0x0000388f LBB0_772 - 0x48, 0x83, 0xf8, 0xff, //0x0000388f cmpq $-1, %rax - 0x0f, 0x85, 0x69, 0x0b, 0x00, 0x00, //0x00003893 jne LBB0_933 - 0x48, 0x8d, 0x04, 0x0f, //0x00003899 leaq (%rdi,%rcx), %rax - 0xe9, 0x9e, 0xff, 0xff, 0xff, //0x0000389d jmp LBB0_765 - //0x000038a2 LBB0_774 - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000038a2 cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0x54, 0x0b, 0x00, 0x00, //0x000038a8 jne LBB0_933 - 0x48, 0x8d, 0x14, 0x0f, //0x000038ae leaq (%rdi,%rcx), %rdx - 0x48, 0x89, 0x54, 0x24, 0x30, //0x000038b2 movq %rdx, $48(%rsp) - 0xe9, 0x84, 0xff, 0xff, 0xff, //0x000038b7 jmp LBB0_765 - //0x000038bc LBB0_719 - 0x83, 0xff, 0x22, //0x000038bc cmpl $34, %edi - 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x000038bf je LBB0_780 - //0x000038c5 LBB0_692 - 0x83, 0xff, 0x7d, //0x000038c5 cmpl $125, %edi - 0x0f, 0x85, 0xc0, 0x13, 0x00, 0x00, //0x000038c8 jne LBB0_1025 - //0x000038ce LBB0_689 - 0x49, 0x89, 0x14, 0x24, //0x000038ce movq %rdx, (%r12) - 0x4d, 0x89, 0xd5, //0x000038d2 movq %r10, %r13 - 0x48, 0x85, 0xd2, //0x000038d5 testq %rdx, %rdx - 0x0f, 0x85, 0x02, 0xf8, 0xff, 0xff, //0x000038d8 jne LBB0_654 - 0xe9, 0xb2, 0x13, 0x00, 0x00, //0x000038de jmp LBB0_1026 - //0x000038e3 LBB0_776 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x000038e3 cmpq $4095, %rsi - 0x0f, 0x8f, 0xba, 0x13, 0x00, 0x00, //0x000038ea jg LBB0_1108 - 0x48, 0x8d, 0x4e, 0x01, //0x000038f0 leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0c, 0x24, //0x000038f4 movq %rcx, (%r12) - 0x49, 0xc7, 0x44, 0xf4, 0x08, 0x00, 0x00, 0x00, 0x00, //0x000038f8 movq $0, $8(%r12,%rsi,8) - 0xe9, 0xba, 0xf7, 0xff, 0xff, //0x00003901 jmp LBB0_652 - //0x00003906 LBB0_780 - 0x49, 0xc7, 0x04, 0xf4, 0x02, 0x00, 0x00, 0x00, //0x00003906 movq $2, (%r12,%rsi,8) - 0x4d, 0x8b, 0x08, //0x0000390e movq (%r8), %r9 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003911 movq $40(%rsp), %rax - 0x4c, 0x8b, 0x18, //0x00003916 movq (%rax), %r11 - 0x4c, 0x89, 0xd9, //0x00003919 movq %r11, %rcx - 0x4c, 0x29, 0xc9, //0x0000391c subq %r9, %rcx - 0x0f, 0x84, 0x38, 0x1c, 0x00, 0x00, //0x0000391f je LBB0_1129 - 0x48, 0x83, 0xf9, 0x40, //0x00003925 cmpq $64, %rcx - 0x0f, 0x82, 0xf6, 0x0c, 0x00, 0x00, //0x00003929 jb LBB0_956 - 0x4c, 0x89, 0xcf, //0x0000392f movq %r9, %rdi - 0x48, 0xf7, 0xd7, //0x00003932 notq %rdi - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003935 movq $-1, %r8 - 0x4d, 0x89, 0xcd, //0x0000393c movq %r9, %r13 - 0x45, 0x31, 0xf6, //0x0000393f xorl %r14d, %r14d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003942 .p2align 4, 0x90 - //0x00003950 LBB0_783 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x2f, //0x00003950 vmovdqu (%r15,%r13), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x2f, 0x20, //0x00003956 vmovdqu $32(%r15,%r13), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000395d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00003961 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd6, //0x00003965 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00003969 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x0000396d vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00003971 vpmovmskb %ymm0, %esi - 0xc5, 0xf5, 0x74, 0xc7, //0x00003975 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00003979 vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x0000397d shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00003981 orq %rax, %rdx - 0x48, 0xc1, 0xe3, 0x20, //0x00003984 shlq $32, %rbx - 0x48, 0x09, 0xde, //0x00003988 orq %rbx, %rsi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000398b jne LBB0_792 - 0x4d, 0x85, 0xf6, //0x00003991 testq %r14, %r14 - 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00003994 jne LBB0_794 - 0x45, 0x31, 0xf6, //0x0000399a xorl %r14d, %r14d - 0x48, 0x85, 0xd2, //0x0000399d testq %rdx, %rdx - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000039a0 jne LBB0_795 - //0x000039a6 LBB0_786 - 0x48, 0x83, 0xc1, 0xc0, //0x000039a6 addq $-64, %rcx - 0x48, 0x83, 0xc7, 0xc0, //0x000039aa addq $-64, %rdi - 0x49, 0x83, 0xc5, 0x40, //0x000039ae addq $64, %r13 - 0x48, 0x83, 0xf9, 0x3f, //0x000039b2 cmpq $63, %rcx - 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x000039b6 ja LBB0_783 - 0xe9, 0xbd, 0x09, 0x00, 0x00, //0x000039bc jmp LBB0_787 - //0x000039c1 LBB0_792 - 0x49, 0x83, 0xf8, 0xff, //0x000039c1 cmpq $-1, %r8 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000039c5 jne LBB0_794 - 0x4c, 0x0f, 0xbc, 0xc6, //0x000039cb bsfq %rsi, %r8 - 0x4d, 0x01, 0xe8, //0x000039cf addq %r13, %r8 - //0x000039d2 LBB0_794 - 0x4c, 0x89, 0xf0, //0x000039d2 movq %r14, %rax - 0x48, 0xf7, 0xd0, //0x000039d5 notq %rax - 0x48, 0x21, 0xf0, //0x000039d8 andq %rsi, %rax - 0x4c, 0x8d, 0x24, 0x00, //0x000039db leaq (%rax,%rax), %r12 - 0x4d, 0x09, 0xf4, //0x000039df orq %r14, %r12 - 0x4c, 0x89, 0xe3, //0x000039e2 movq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x000039e5 notq %rbx - 0x48, 0x21, 0xf3, //0x000039e8 andq %rsi, %rbx - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000039eb movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf3, //0x000039f5 andq %rsi, %rbx - 0x45, 0x31, 0xf6, //0x000039f8 xorl %r14d, %r14d - 0x48, 0x01, 0xc3, //0x000039fb addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc6, //0x000039fe setb %r14b - 0x48, 0x01, 0xdb, //0x00003a02 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003a05 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00003a0f xorq %rax, %rbx - 0x4c, 0x21, 0xe3, //0x00003a12 andq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x00003a15 notq %rbx - 0x48, 0x21, 0xda, //0x00003a18 andq %rbx, %rdx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003a1b movq $16(%rsp), %r12 - 0x48, 0x85, 0xd2, //0x00003a20 testq %rdx, %rdx - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003a23 je LBB0_786 - //0x00003a29 LBB0_795 - 0x4c, 0x0f, 0xbc, 0xea, //0x00003a29 bsfq %rdx, %r13 - 0x49, 0x29, 0xfd, //0x00003a2d subq %rdi, %r13 - 0x4c, 0x8d, 0x35, 0xf5, 0x1f, 0x00, 0x00, //0x00003a30 leaq $8181(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x4d, 0x85, 0xed, //0x00003a37 testq %r13, %r13 - 0x0f, 0x88, 0x76, 0x12, 0x00, 0x00, //0x00003a3a js LBB0_833 - //0x00003a40 LBB0_798 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00003a40 movq $8(%rsp), %r8 - 0x4d, 0x89, 0x28, //0x00003a45 movq %r13, (%r8) - 0x4d, 0x85, 0xc9, //0x00003a48 testq %r9, %r9 - 0x0f, 0x8e, 0x86, 0x12, 0x00, 0x00, //0x00003a4b jle LBB0_713 - 0x49, 0x8b, 0x0c, 0x24, //0x00003a51 movq (%r12), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00003a55 cmpq $4095, %rcx - 0x0f, 0x8f, 0x48, 0x12, 0x00, 0x00, //0x00003a5c jg LBB0_1108 - 0x48, 0x8d, 0x41, 0x01, //0x00003a62 leaq $1(%rcx), %rax - 0x49, 0x89, 0x04, 0x24, //0x00003a66 movq %rax, (%r12) - 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00003a6a movq $4, $8(%r12,%rcx,8) - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00003a73 movq $32(%rsp), %r11 - 0xe9, 0x43, 0xf6, 0xff, 0xff, //0x00003a78 jmp LBB0_652 - //0x00003a7d LBB0_801 - 0x4c, 0x01, 0xd9, //0x00003a7d addq %r11, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x38, //0x00003a80 addq $56(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x00003a85 vzeroupper - 0xc5, 0x7a, 0x6f, 0x3d, 0x90, 0xc7, 0xff, 0xff, //0x00003a88 vmovdqu $-14448(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0x49, 0x89, 0xcb, //0x00003a90 movq %rcx, %r11 - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00003a93 jmp LBB0_804 - //0x00003a98 LBB0_802 - 0x89, 0xc9, //0x00003a98 movl %ecx, %ecx - 0x49, 0x01, 0xcb, //0x00003a9a addq %rcx, %r11 - 0x4d, 0x01, 0xcb, //0x00003a9d addq %r9, %r11 - 0x4c, 0x8d, 0x35, 0x85, 0x1f, 0x00, 0x00, //0x00003aa0 leaq $8069(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003aa7 jmp LBB0_804 - //0x00003aac LBB0_803 - 0x49, 0x01, 0xcb, //0x00003aac addq %rcx, %r11 - //0x00003aaf LBB0_804 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003aaf movq $-1, %rcx - 0x48, 0x8b, 0x7c, 0x24, 0x30, //0x00003ab6 movq $48(%rsp), %rdi - 0x48, 0x85, 0xff, //0x00003abb testq %rdi, %rdi - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00003abe movq $8(%rsp), %rsi - 0x0f, 0x84, 0x37, 0x12, 0x00, 0x00, //0x00003ac3 je LBB0_1031 - 0x4d, 0x85, 0xe4, //0x00003ac9 testq %r12, %r12 - 0x0f, 0x84, 0x2e, 0x12, 0x00, 0x00, //0x00003acc je LBB0_1031 - 0x48, 0x85, 0xc0, //0x00003ad2 testq %rax, %rax - 0x0f, 0x84, 0x25, 0x12, 0x00, 0x00, //0x00003ad5 je LBB0_1031 - 0x4c, 0x2b, 0x5c, 0x24, 0x38, //0x00003adb subq $56(%rsp), %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x00003ae0 leaq $-1(%r11), %rcx - 0x48, 0x39, 0xcf, //0x00003ae4 cmpq %rcx, %rdi - 0x0f, 0x84, 0x4a, 0xf5, 0xff, 0xff, //0x00003ae7 je LBB0_1029 - 0x49, 0x39, 0xcc, //0x00003aed cmpq %rcx, %r12 - 0x0f, 0x84, 0x41, 0xf5, 0xff, 0xff, //0x00003af0 je LBB0_1029 - 0x48, 0x39, 0xc8, //0x00003af6 cmpq %rcx, %rax - 0x0f, 0x84, 0x38, 0xf5, 0xff, 0xff, //0x00003af9 je LBB0_1029 - 0x4d, 0x85, 0xe4, //0x00003aff testq %r12, %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0xf6, 0xc4, 0xff, 0xff, //0x00003b02 vmovdqu $-15114(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x6e, 0xc5, 0xff, 0xff, //0x00003b0a vmovdqu $-14994(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x86, 0xc5, 0xff, 0xff, //0x00003b12 vmovdqu $-14970(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xfe, 0xc5, 0xff, 0xff, //0x00003b1a vmovdqu $-14850(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0x16, 0xc6, 0xff, 0xff, //0x00003b22 vmovdqu $-14826(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x2e, 0xc6, 0xff, 0xff, //0x00003b2a vmovdqu $-14802(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x46, 0xc6, 0xff, 0xff, //0x00003b32 vmovdqu $-14778(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xfe, 0xc4, 0xff, 0xff, //0x00003b3a vmovdqu $-15106(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x56, 0xc6, 0xff, 0xff, //0x00003b42 vmovdqu $-14762(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x6e, 0xc6, 0xff, 0xff, //0x00003b4a vmovdqu $-14738(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0x0f, 0x8e, 0x27, 0x00, 0x00, 0x00, //0x00003b52 jle LBB0_813 - 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003b58 leaq $-1(%r12), %rcx - 0x48, 0x39, 0xc8, //0x00003b5d cmpq %rcx, %rax - 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00003b60 je LBB0_813 - 0x49, 0xf7, 0xd4, //0x00003b66 notq %r12 - 0x4d, 0x89, 0xe3, //0x00003b69 movq %r12, %r11 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003b6c movq $16(%rsp), %r12 - 0x4d, 0x85, 0xdb, //0x00003b71 testq %r11, %r11 - 0x0f, 0x89, 0x1e, 0xf5, 0xff, 0xff, //0x00003b74 jns LBB0_936 - 0xe9, 0x7e, 0x11, 0x00, 0x00, //0x00003b7a jmp LBB0_1030 - //0x00003b7f LBB0_813 - 0x48, 0x89, 0xf9, //0x00003b7f movq %rdi, %rcx - 0x48, 0x09, 0xc1, //0x00003b82 orq %rax, %rcx - 0x0f, 0x99, 0xc1, //0x00003b85 setns %cl - 0x0f, 0x88, 0x90, 0x02, 0x00, 0x00, //0x00003b88 js LBB0_857 - 0x48, 0x39, 0xc7, //0x00003b8e cmpq %rax, %rdi - 0x0f, 0x8c, 0x87, 0x02, 0x00, 0x00, //0x00003b91 jl LBB0_857 - 0x48, 0xf7, 0xd7, //0x00003b97 notq %rdi - 0x49, 0x89, 0xfb, //0x00003b9a movq %rdi, %r11 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003b9d movq $16(%rsp), %r12 - 0x4d, 0x85, 0xdb, //0x00003ba2 testq %r11, %r11 - 0x0f, 0x89, 0xed, 0xf4, 0xff, 0xff, //0x00003ba5 jns LBB0_936 - 0xe9, 0x4d, 0x11, 0x00, 0x00, //0x00003bab jmp LBB0_1030 - //0x00003bb0 LBB0_816 - 0x4d, 0x8b, 0x08, //0x00003bb0 movq (%r8), %r9 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003bb3 movq $40(%rsp), %rax - 0x4c, 0x8b, 0x18, //0x00003bb8 movq (%rax), %r11 - 0x4c, 0x89, 0xd9, //0x00003bbb movq %r11, %rcx - 0x4c, 0x29, 0xc9, //0x00003bbe subq %r9, %rcx - 0x0f, 0x84, 0x96, 0x19, 0x00, 0x00, //0x00003bc1 je LBB0_1129 - 0x48, 0x83, 0xf9, 0x40, //0x00003bc7 cmpq $64, %rcx - 0x0f, 0x82, 0x78, 0x0a, 0x00, 0x00, //0x00003bcb jb LBB0_958 - 0x4c, 0x89, 0xcf, //0x00003bd1 movq %r9, %rdi - 0x48, 0xf7, 0xd7, //0x00003bd4 notq %rdi - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003bd7 movq $-1, %r8 - 0x4d, 0x89, 0xcd, //0x00003bde movq %r9, %r13 - 0x45, 0x31, 0xf6, //0x00003be1 xorl %r14d, %r14d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003be4 .p2align 4, 0x90 - //0x00003bf0 LBB0_819 + 0x0f, 0x87, 0x1a, 0x0d, 0x00, 0x00, //0x00000c37 ja LBB0_363 + 0x49, 0x0f, 0xa3, 0xda, //0x00000c3d btq %rbx, %r10 + 0x0f, 0x83, 0x10, 0x0d, 0x00, 0x00, //0x00000c41 jae LBB0_363 + 0x48, 0x83, 0xc6, 0x01, //0x00000c47 addq $1, %rsi + 0x48, 0x39, 0xf7, //0x00000c4b cmpq %rsi, %rdi + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00000c4e jne LBB0_190 + 0x4c, 0x89, 0xc1, //0x00000c54 movq %r8, %rcx + //0x00000c57 LBB0_194 + 0x4c, 0x29, 0xe1, //0x00000c57 subq %r12, %rcx + 0x48, 0x39, 0xc1, //0x00000c5a cmpq %rax, %rcx + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00000c5d jb LBB0_196 + 0xe9, 0xa3, 0x42, 0x00, 0x00, //0x00000c63 jmp LBB0_1048 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c68 .p2align 4, 0x90 + //0x00000c70 LBB0_195 + 0xf7, 0xd6, //0x00000c70 notl %esi + 0x0f, 0xbc, 0xce, //0x00000c72 bsfl %esi, %ecx + 0x48, 0x29, 0xf9, //0x00000c75 subq %rdi, %rcx + 0x48, 0x39, 0xc1, //0x00000c78 cmpq %rax, %rcx + 0x0f, 0x83, 0x8a, 0x42, 0x00, 0x00, //0x00000c7b jae LBB0_1048 + //0x00000c81 LBB0_196 + 0x4c, 0x8d, 0x71, 0x01, //0x00000c81 leaq $1(%rcx), %r14 + 0x4d, 0x89, 0x31, //0x00000c85 movq %r14, (%r9) + 0x41, 0x80, 0x3c, 0x0c, 0x3a, //0x00000c88 cmpb $58, (%r12,%rcx) + 0x0f, 0x85, 0x78, 0x42, 0x00, 0x00, //0x00000c8d jne LBB0_1048 + 0x48, 0x85, 0xd2, //0x00000c93 testq %rdx, %rdx + 0x0f, 0x85, 0x74, 0x23, 0x00, 0x00, //0x00000c96 jne LBB0_537 + 0x49, 0x8b, 0x55, 0x00, //0x00000c9c movq (%r13), %rdx + 0x49, 0x39, 0xd6, //0x00000ca0 cmpq %rdx, %r14 + 0x0f, 0x83, 0x27, 0x00, 0x00, 0x00, //0x00000ca3 jae LBB0_203 + 0x43, 0x8a, 0x04, 0x34, //0x00000ca9 movb (%r12,%r14), %al + 0x3c, 0x0d, //0x00000cad cmpb $13, %al + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000caf je LBB0_203 + 0x3c, 0x20, //0x00000cb5 cmpb $32, %al + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000cb7 je LBB0_203 + 0x04, 0xf7, //0x00000cbd addb $-9, %al + 0x3c, 0x01, //0x00000cbf cmpb $1, %al + 0x0f, 0x86, 0x09, 0x00, 0x00, 0x00, //0x00000cc1 jbe LBB0_203 + 0x4c, 0x89, 0xf0, //0x00000cc7 movq %r14, %rax + 0xe9, 0x62, 0x01, 0x00, 0x00, //0x00000cca jmp LBB0_228 + 0x90, //0x00000ccf .p2align 4, 0x90 + //0x00000cd0 LBB0_203 + 0x48, 0x8d, 0x41, 0x02, //0x00000cd0 leaq $2(%rcx), %rax + 0x48, 0x39, 0xd0, //0x00000cd4 cmpq %rdx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000cd7 jae LBB0_207 + 0x41, 0x8a, 0x1c, 0x04, //0x00000cdd movb (%r12,%rax), %bl + 0x80, 0xfb, 0x0d, //0x00000ce1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000ce4 je LBB0_207 + 0x80, 0xfb, 0x20, //0x00000cea cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000ced je LBB0_207 + 0x80, 0xc3, 0xf7, //0x00000cf3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000cf6 cmpb $1, %bl + 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x00000cf9 ja LBB0_228 + 0x90, //0x00000cff .p2align 4, 0x90 + //0x00000d00 LBB0_207 + 0x48, 0x8d, 0x41, 0x03, //0x00000d00 leaq $3(%rcx), %rax + 0x48, 0x39, 0xd0, //0x00000d04 cmpq %rdx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000d07 jae LBB0_211 + 0x41, 0x8a, 0x1c, 0x04, //0x00000d0d movb (%r12,%rax), %bl + 0x80, 0xfb, 0x0d, //0x00000d11 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000d14 je LBB0_211 + 0x80, 0xfb, 0x20, //0x00000d1a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000d1d je LBB0_211 + 0x80, 0xc3, 0xf7, //0x00000d23 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000d26 cmpb $1, %bl + 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x00000d29 ja LBB0_228 + 0x90, //0x00000d2f .p2align 4, 0x90 + //0x00000d30 LBB0_211 + 0x48, 0x8d, 0x41, 0x04, //0x00000d30 leaq $4(%rcx), %rax + 0x48, 0x39, 0xd0, //0x00000d34 cmpq %rdx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000d37 jae LBB0_215 + 0x41, 0x8a, 0x1c, 0x04, //0x00000d3d movb (%r12,%rax), %bl + 0x80, 0xfb, 0x0d, //0x00000d41 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000d44 je LBB0_215 + 0x80, 0xfb, 0x20, //0x00000d4a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00000d4d je LBB0_215 + 0x80, 0xc3, 0xf7, //0x00000d53 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000d56 cmpb $1, %bl + 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x00000d59 ja LBB0_228 + 0x90, //0x00000d5f .p2align 4, 0x90 + //0x00000d60 LBB0_215 + 0x48, 0x8d, 0x41, 0x05, //0x00000d60 leaq $5(%rcx), %rax + 0x48, 0x89, 0xd7, //0x00000d64 movq %rdx, %rdi + 0x48, 0x29, 0xc7, //0x00000d67 subq %rax, %rdi + 0x0f, 0x86, 0x70, 0x06, 0x00, 0x00, //0x00000d6a jbe LBB0_292 + 0x48, 0x83, 0xff, 0x20, //0x00000d70 cmpq $32, %rdi + 0x0f, 0x82, 0xcc, 0x10, 0x00, 0x00, //0x00000d74 jb LBB0_369 + 0x48, 0xc7, 0xc7, 0xfb, 0xff, 0xff, 0xff, //0x00000d7a movq $-5, %rdi + 0x48, 0x29, 0xcf, //0x00000d81 subq %rcx, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d84 .p2align 4, 0x90 + //0x00000d90 LBB0_218 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x04, //0x00000d90 vmovdqu (%r12,%rax), %ymm6 + 0xc4, 0x62, 0x7d, 0x00, 0xde, //0x00000d96 vpshufb %ymm6, %ymm0, %ymm11 + 0xc5, 0xa5, 0x74, 0xf6, //0x00000d9b vpcmpeqb %ymm6, %ymm11, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x00000d9f vpmovmskb %ymm6, %ecx + 0x83, 0xf9, 0xff, //0x00000da3 cmpl $-1, %ecx + 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00000da6 jne LBB0_227 + 0x48, 0x83, 0xc0, 0x20, //0x00000dac addq $32, %rax + 0x48, 0x8d, 0x0c, 0x3a, //0x00000db0 leaq (%rdx,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000db4 addq $-32, %rcx + 0x48, 0x83, 0xc7, 0xe0, //0x00000db8 addq $-32, %rdi + 0x48, 0x83, 0xf9, 0x1f, //0x00000dbc cmpq $31, %rcx + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000dc0 ja LBB0_218 + 0x4c, 0x89, 0xe0, //0x00000dc6 movq %r12, %rax + 0x48, 0x29, 0xf8, //0x00000dc9 subq %rdi, %rax + 0x48, 0x01, 0xd7, //0x00000dcc addq %rdx, %rdi + 0x48, 0x85, 0xff, //0x00000dcf testq %rdi, %rdi + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00000dd2 je LBB0_226 + //0x00000dd8 LBB0_221 + 0x48, 0x8d, 0x34, 0x38, //0x00000dd8 leaq (%rax,%rdi), %rsi + 0x31, 0xc9, //0x00000ddc xorl %ecx, %ecx + //0x00000dde LBB0_222 + 0x0f, 0xbe, 0x1c, 0x08, //0x00000dde movsbl (%rax,%rcx), %ebx + 0x83, 0xfb, 0x20, //0x00000de2 cmpl $32, %ebx + 0x0f, 0x87, 0x94, 0x0b, 0x00, 0x00, //0x00000de5 ja LBB0_365 + 0x49, 0x0f, 0xa3, 0xda, //0x00000deb btq %rbx, %r10 + 0x0f, 0x83, 0x8a, 0x0b, 0x00, 0x00, //0x00000def jae LBB0_365 + 0x48, 0x83, 0xc1, 0x01, //0x00000df5 addq $1, %rcx + 0x48, 0x39, 0xcf, //0x00000df9 cmpq %rcx, %rdi + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00000dfc jne LBB0_222 + 0x48, 0x89, 0xf0, //0x00000e02 movq %rsi, %rax + //0x00000e05 LBB0_226 + 0x4c, 0x29, 0xe0, //0x00000e05 subq %r12, %rax + 0x48, 0x39, 0xd0, //0x00000e08 cmpq %rdx, %rax + 0x0f, 0x82, 0x20, 0x00, 0x00, 0x00, //0x00000e0b jb LBB0_228 + 0xe9, 0xd0, 0x05, 0x00, 0x00, //0x00000e11 jmp LBB0_293 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e16 .p2align 4, 0x90 + //0x00000e20 LBB0_227 + 0xf7, 0xd1, //0x00000e20 notl %ecx + 0x0f, 0xbc, 0xc1, //0x00000e22 bsfl %ecx, %eax + 0x48, 0x29, 0xf8, //0x00000e25 subq %rdi, %rax + 0x48, 0x39, 0xd0, //0x00000e28 cmpq %rdx, %rax + 0x0f, 0x83, 0xb5, 0x05, 0x00, 0x00, //0x00000e2b jae LBB0_293 + //0x00000e31 LBB0_228 + 0x4c, 0x8d, 0x70, 0x01, //0x00000e31 leaq $1(%rax), %r14 + 0x4d, 0x89, 0x31, //0x00000e35 movq %r14, (%r9) + 0x41, 0x0f, 0xbe, 0x0c, 0x04, //0x00000e38 movsbl (%r12,%rax), %ecx + 0x83, 0xf9, 0x7b, //0x00000e3d cmpl $123, %ecx + 0x0f, 0x87, 0x9a, 0x05, 0x00, 0x00, //0x00000e40 ja LBB0_292 + 0x48, 0x8d, 0x15, 0x3b, 0x4d, 0x00, 0x00, //0x00000e46 leaq $19771(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x00000e4d movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x00000e51 addq %rdx, %rcx + 0xff, 0xe1, //0x00000e54 jmpq *%rcx + //0x00000e56 LBB0_230 + 0x4d, 0x8b, 0x45, 0x00, //0x00000e56 movq (%r13), %r8 + 0x4c, 0x89, 0xc1, //0x00000e5a movq %r8, %rcx + 0x4c, 0x29, 0xf1, //0x00000e5d subq %r14, %rcx + 0x48, 0x83, 0xf9, 0x20, //0x00000e60 cmpq $32, %rcx + 0x0f, 0x82, 0xed, 0x0f, 0x00, 0x00, //0x00000e64 jb LBB0_370 + 0x48, 0x89, 0xc7, //0x00000e6a movq %rax, %rdi + 0x48, 0xf7, 0xd7, //0x00000e6d notq %rdi + 0x48, 0x8d, 0x58, 0x01, //0x00000e70 leaq $1(%rax), %rbx + 0x48, 0x8d, 0x48, 0x02, //0x00000e74 leaq $2(%rax), %rcx + 0x49, 0x8d, 0x14, 0x04, //0x00000e78 leaq (%r12,%rax), %rdx + 0x90, 0x90, 0x90, 0x90, //0x00000e7c .p2align 4, 0x90 + //0x00000e80 LBB0_232 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x1c, //0x00000e80 vmovdqu (%r12,%rbx), %ymm6 + 0xc5, 0x4d, 0x74, 0xdb, //0x00000e86 vpcmpeqb %ymm3, %ymm6, %ymm11 + 0xc5, 0xcd, 0xdb, 0xf4, //0x00000e8a vpand %ymm4, %ymm6, %ymm6 + 0xc5, 0xcd, 0x74, 0xf5, //0x00000e8e vpcmpeqb %ymm5, %ymm6, %ymm6 + 0xc5, 0xa5, 0xeb, 0xf6, //0x00000e92 vpor %ymm6, %ymm11, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x00000e96 vpmovmskb %ymm6, %esi + 0x85, 0xf6, //0x00000e9a testl %esi, %esi + 0x0f, 0x85, 0x1e, 0x01, 0x00, 0x00, //0x00000e9c jne LBB0_247 + 0x48, 0x83, 0xc3, 0x20, //0x00000ea2 addq $32, %rbx + 0x49, 0x8d, 0x34, 0x38, //0x00000ea6 leaq (%r8,%rdi), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00000eaa addq $-32, %rsi + 0x48, 0x83, 0xc7, 0xe0, //0x00000eae addq $-32, %rdi + 0x48, 0x83, 0xc1, 0x20, //0x00000eb2 addq $32, %rcx + 0x48, 0x83, 0xc0, 0x20, //0x00000eb6 addq $32, %rax + 0x48, 0x83, 0xc2, 0x20, //0x00000eba addq $32, %rdx + 0x48, 0x83, 0xfe, 0x1f, //0x00000ebe cmpq $31, %rsi + 0x0f, 0x87, 0xb8, 0xff, 0xff, 0xff, //0x00000ec2 ja LBB0_232 + 0x4d, 0x89, 0xe6, //0x00000ec8 movq %r12, %r14 + 0x49, 0x29, 0xfe, //0x00000ecb subq %rdi, %r14 + 0x49, 0x01, 0xf8, //0x00000ece addq %rdi, %r8 + 0x4c, 0x89, 0xc1, //0x00000ed1 movq %r8, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x00000ed4 cmpq $16, %rcx + 0x0f, 0x82, 0x65, 0x00, 0x00, 0x00, //0x00000ed8 jb LBB0_238 + //0x00000ede LBB0_235 + 0x4c, 0x89, 0xe6, //0x00000ede movq %r12, %rsi + 0x4c, 0x29, 0xf6, //0x00000ee1 subq %r14, %rsi + 0x4c, 0x89, 0xf0, //0x00000ee4 movq %r14, %rax + 0x4c, 0x29, 0xe0, //0x00000ee7 subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00000eea addq $1, %rax + 0x49, 0x8d, 0x56, 0xff, //0x00000eee leaq $-1(%r14), %rdx + 0x48, 0x89, 0xd7, //0x00000ef2 movq %rdx, %rdi + 0x4c, 0x29, 0xe7, //0x00000ef5 subq %r12, %rdi + //0x00000ef8 LBB0_236 + 0xc4, 0xc1, 0x7a, 0x6f, 0x36, //0x00000ef8 vmovdqu (%r14), %xmm6 + 0xc5, 0xc9, 0x74, 0x3d, 0xdb, 0xf2, 0xff, 0xff, //0x00000efd vpcmpeqb $-3365(%rip), %xmm6, %xmm7 /* LCPI0_4+0(%rip) */ + 0xc5, 0xc9, 0xdb, 0x35, 0xe3, 0xf2, 0xff, 0xff, //0x00000f05 vpand $-3357(%rip), %xmm6, %xmm6 /* LCPI0_5+0(%rip) */ + 0xc5, 0xb9, 0x74, 0xf6, //0x00000f0d vpcmpeqb %xmm6, %xmm8, %xmm6 + 0xc5, 0xc9, 0xeb, 0xf7, //0x00000f11 vpor %xmm7, %xmm6, %xmm6 + 0xc5, 0xf9, 0xd7, 0xde, //0x00000f15 vpmovmskb %xmm6, %ebx + 0x85, 0xdb, //0x00000f19 testl %ebx, %ebx + 0x0f, 0x85, 0xc7, 0x09, 0x00, 0x00, //0x00000f1b jne LBB0_358 + 0x49, 0x83, 0xc6, 0x10, //0x00000f21 addq $16, %r14 + 0x48, 0x83, 0xc1, 0xf0, //0x00000f25 addq $-16, %rcx + 0x48, 0x83, 0xc6, 0xf0, //0x00000f29 addq $-16, %rsi + 0x48, 0x83, 0xc0, 0x10, //0x00000f2d addq $16, %rax + 0x48, 0x83, 0xc7, 0x10, //0x00000f31 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00000f35 addq $16, %rdx + 0x48, 0x83, 0xf9, 0x0f, //0x00000f39 cmpq $15, %rcx + 0x0f, 0x87, 0xb5, 0xff, 0xff, 0xff, //0x00000f3d ja LBB0_236 + //0x00000f43 LBB0_238 + 0x48, 0x85, 0xc9, //0x00000f43 testq %rcx, %rcx + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00000f46 je LBB0_246 + 0x49, 0x8d, 0x04, 0x0e, //0x00000f4c leaq (%r14,%rcx), %rax + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000f50 movabsq $17596481021440, %rsi + //0x00000f5a LBB0_240 + 0x41, 0x0f, 0xb6, 0x16, //0x00000f5a movzbl (%r14), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000f5e cmpq $44, %rdx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000f62 ja LBB0_242 + 0x48, 0x0f, 0xa3, 0xd6, //0x00000f68 btq %rdx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00000f6c jb LBB0_246 + //0x00000f72 LBB0_242 + 0x80, 0xfa, 0x5d, //0x00000f72 cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000f75 je LBB0_246 + 0x80, 0xfa, 0x7d, //0x00000f7b cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000f7e je LBB0_246 + 0x49, 0x83, 0xc6, 0x01, //0x00000f84 addq $1, %r14 + 0x48, 0x83, 0xc1, 0xff, //0x00000f88 addq $-1, %rcx + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x00000f8c jne LBB0_240 + 0x49, 0x89, 0xc6, //0x00000f92 movq %rax, %r14 + //0x00000f95 LBB0_246 + 0x4d, 0x29, 0xe6, //0x00000f95 subq %r12, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00000f98 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x00000f9d movq %r14, (%r9) + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00000fa0 movq $24(%rsp), %r13 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000fa5 movabsq $4294977024, %r10 + 0xe9, 0x32, 0x04, 0x00, 0x00, //0x00000faf jmp LBB0_293 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000fb4 .p2align 4, 0x90 + //0x00000fc0 LBB0_247 + 0x0f, 0xbc, 0xf6, //0x00000fc0 bsfl %esi, %esi + 0x49, 0x89, 0xf6, //0x00000fc3 movq %rsi, %r14 + 0x49, 0x29, 0xfe, //0x00000fc6 subq %rdi, %r14 + 0x4d, 0x89, 0x31, //0x00000fc9 movq %r14, (%r9) + 0x4d, 0x85, 0xf6, //0x00000fcc testq %r14, %r14 + 0x0f, 0x8e, 0x11, 0x04, 0x00, 0x00, //0x00000fcf jle LBB0_293 + 0x48, 0x01, 0xf1, //0x00000fd5 addq %rsi, %rcx + 0x48, 0x01, 0xf0, //0x00000fd8 addq %rsi, %rax + 0x48, 0x01, 0xf2, //0x00000fdb addq %rsi, %rdx + 0x90, 0x90, //0x00000fde .p2align 4, 0x90 + //0x00000fe0 LBB0_249 + 0x0f, 0xb6, 0x32, //0x00000fe0 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x00000fe3 cmpq $32, %rsi + 0x0f, 0x87, 0xf9, 0x03, 0x00, 0x00, //0x00000fe7 ja LBB0_293 + 0x49, 0x0f, 0xa3, 0xf2, //0x00000fed btq %rsi, %r10 + 0x0f, 0x83, 0xef, 0x03, 0x00, 0x00, //0x00000ff1 jae LBB0_293 + 0x49, 0x89, 0x01, //0x00000ff7 movq %rax, (%r9) + 0x48, 0x83, 0xc1, 0xff, //0x00000ffa addq $-1, %rcx + 0x48, 0x83, 0xc0, 0xff, //0x00000ffe addq $-1, %rax + 0x48, 0x83, 0xc2, 0xff, //0x00001002 addq $-1, %rdx + 0x49, 0x83, 0xc6, 0xff, //0x00001006 addq $-1, %r14 + 0x48, 0x83, 0xf9, 0x01, //0x0000100a cmpq $1, %rcx + 0x0f, 0x8f, 0xcc, 0xff, 0xff, 0xff, //0x0000100e jg LBB0_249 + 0xe9, 0xcd, 0x03, 0x00, 0x00, //0x00001014 jmp LBB0_293 + //0x00001019 LBB0_252 + 0x48, 0x83, 0xc0, 0x04, //0x00001019 addq $4, %rax + 0x49, 0x3b, 0x45, 0x00, //0x0000101d cmpq (%r13), %rax + 0x0f, 0x86, 0xb9, 0x03, 0x00, 0x00, //0x00001021 jbe LBB0_292 + 0xe9, 0xba, 0x03, 0x00, 0x00, //0x00001027 jmp LBB0_293 + //0x0000102c LBB0_253 + 0x4c, 0x89, 0x7c, 0x24, 0x28, //0x0000102c movq %r15, $40(%rsp) + 0x4d, 0x8b, 0x45, 0x00, //0x00001031 movq (%r13), %r8 + 0x4d, 0x89, 0xc7, //0x00001035 movq %r8, %r15 + 0x4d, 0x29, 0xf7, //0x00001038 subq %r14, %r15 + 0x49, 0x83, 0xff, 0x20, //0x0000103b cmpq $32, %r15 + 0x0f, 0x8c, 0x3d, 0x0e, 0x00, 0x00, //0x0000103f jl LBB0_372 + 0x4d, 0x8d, 0x0c, 0x04, //0x00001045 leaq (%r12,%rax), %r9 + 0x49, 0x29, 0xc0, //0x00001049 subq %rax, %r8 + 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x0000104c movl $31, %ebx + 0x45, 0x31, 0xff, //0x00001051 xorl %r15d, %r15d + 0x45, 0x31, 0xdb, //0x00001054 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001057 .p2align 4, 0x90 + //0x00001060 LBB0_255 + 0xc4, 0x81, 0x7e, 0x6f, 0x74, 0x39, 0x01, //0x00001060 vmovdqu $1(%r9,%r15), %ymm6 + 0xc5, 0x4d, 0x74, 0xd9, //0x00001067 vpcmpeqb %ymm1, %ymm6, %ymm11 + 0xc4, 0x41, 0x7d, 0xd7, 0xd3, //0x0000106b vpmovmskb %ymm11, %r10d + 0xc5, 0xcd, 0x74, 0xf2, //0x00001070 vpcmpeqb %ymm2, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x00001074 vpmovmskb %ymm6, %edi + 0x85, 0xff, //0x00001078 testl %edi, %edi + 0x0f, 0x85, 0x20, 0x00, 0x00, 0x00, //0x0000107a jne LBB0_258 + 0x4d, 0x85, 0xdb, //0x00001080 testq %r11, %r11 + 0x0f, 0x85, 0x17, 0x00, 0x00, 0x00, //0x00001083 jne LBB0_258 + 0x45, 0x31, 0xdb, //0x00001089 xorl %r11d, %r11d + 0xe9, 0x40, 0x00, 0x00, 0x00, //0x0000108c jmp LBB0_259 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001091 .p2align 4, 0x90 + //0x000010a0 LBB0_258 + 0x44, 0x89, 0xde, //0x000010a0 movl %r11d, %esi + 0xf7, 0xd6, //0x000010a3 notl %esi + 0x21, 0xfe, //0x000010a5 andl %edi, %esi + 0x8d, 0x0c, 0x36, //0x000010a7 leal (%rsi,%rsi), %ecx + 0x44, 0x09, 0xd9, //0x000010aa orl %r11d, %ecx + 0x89, 0xca, //0x000010ad movl %ecx, %edx + 0xf7, 0xd2, //0x000010af notl %edx + 0x21, 0xfa, //0x000010b1 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000010b3 andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x000010b9 xorl %r11d, %r11d + 0x01, 0xf2, //0x000010bc addl %esi, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x000010be setb %r11b + 0x01, 0xd2, //0x000010c2 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000010c4 xorl $1431655765, %edx + 0x21, 0xca, //0x000010ca andl %ecx, %edx + 0xf7, 0xd2, //0x000010cc notl %edx + 0x41, 0x21, 0xd2, //0x000010ce andl %edx, %r10d + //0x000010d1 LBB0_259 + 0x4d, 0x85, 0xd2, //0x000010d1 testq %r10, %r10 + 0x0f, 0x85, 0x94, 0x07, 0x00, 0x00, //0x000010d4 jne LBB0_351 + 0x49, 0x83, 0xc7, 0x20, //0x000010da addq $32, %r15 + 0x49, 0x8d, 0x0c, 0x18, //0x000010de leaq (%r8,%rbx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x000010e2 addq $-32, %rcx + 0x48, 0x83, 0xc3, 0xe0, //0x000010e6 addq $-32, %rbx + 0x48, 0x83, 0xf9, 0x3f, //0x000010ea cmpq $63, %rcx + 0x0f, 0x8f, 0x6c, 0xff, 0xff, 0xff, //0x000010ee jg LBB0_255 + 0x4d, 0x85, 0xdb, //0x000010f4 testq %r11, %r11 + 0x0f, 0x85, 0x48, 0x0f, 0x00, 0x00, //0x000010f7 jne LBB0_396 + 0x4b, 0x8d, 0x04, 0x0f, //0x000010fd leaq (%r15,%r9), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00001101 addq $1, %rax + 0x49, 0xf7, 0xd7, //0x00001105 notq %r15 + 0x4d, 0x01, 0xc7, //0x00001108 addq %r8, %r15 + //0x0000110b LBB0_263 + 0x4d, 0x85, 0xff, //0x0000110b testq %r15, %r15 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x0000110e movq $8(%rsp), %r9 + 0x0f, 0x8e, 0x6c, 0x07, 0x00, 0x00, //0x00001113 jle LBB0_352 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001119 movabsq $4294977024, %r10 + 0xe9, 0x89, 0x07, 0x00, 0x00, //0x00001123 jmp LBB0_354 + //0x00001128 LBB0_265 + 0x4d, 0x8b, 0x45, 0x00, //0x00001128 movq (%r13), %r8 + 0x4d, 0x29, 0xf0, //0x0000112c subq %r14, %r8 + 0x4d, 0x01, 0xf4, //0x0000112f addq %r14, %r12 + 0x45, 0x31, 0xd2, //0x00001132 xorl %r10d, %r10d + 0x45, 0x31, 0xdb, //0x00001135 xorl %r11d, %r11d + 0x45, 0x31, 0xf6, //0x00001138 xorl %r14d, %r14d + 0x31, 0xd2, //0x0000113b xorl %edx, %edx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x0000113d jmp LBB0_267 + //0x00001142 LBB0_266 + 0x48, 0xc1, 0xf9, 0x3f, //0x00001142 sarq $63, %rcx + 0xf3, 0x48, 0x0f, 0xb8, 0xc7, //0x00001146 popcntq %rdi, %rax + 0x49, 0x01, 0xc6, //0x0000114b addq %rax, %r14 + 0x49, 0x83, 0xc4, 0x40, //0x0000114e addq $64, %r12 + 0x49, 0x83, 0xc0, 0xc0, //0x00001152 addq $-64, %r8 + 0x49, 0x89, 0xca, //0x00001156 movq %rcx, %r10 + //0x00001159 LBB0_267 + 0x49, 0x83, 0xf8, 0x40, //0x00001159 cmpq $64, %r8 + 0x0f, 0x8c, 0x3a, 0x01, 0x00, 0x00, //0x0000115d jl LBB0_275 + //0x00001163 LBB0_268 + 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x00001163 vmovdqu (%r12), %ymm15 + 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x00001169 vmovdqu $32(%r12), %ymm14 + 0xc5, 0x85, 0x74, 0xf2, //0x00001170 vpcmpeqb %ymm2, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x00001174 vpmovmskb %ymm6, %esi + 0xc5, 0x8d, 0x74, 0xf2, //0x00001178 vpcmpeqb %ymm2, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x0000117c vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x00001180 shlq $32, %rax + 0x48, 0x09, 0xc6, //0x00001184 orq %rax, %rsi + 0x48, 0x89, 0xf0, //0x00001187 movq %rsi, %rax + 0x4c, 0x09, 0xd8, //0x0000118a orq %r11, %rax + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000118d jne LBB0_270 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001193 movq $-1, %rsi + 0x45, 0x31, 0xdb, //0x0000119a xorl %r11d, %r11d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000119d jmp LBB0_271 + //0x000011a2 LBB0_270 + 0x4c, 0x89, 0xd8, //0x000011a2 movq %r11, %rax + 0x48, 0xf7, 0xd0, //0x000011a5 notq %rax + 0x48, 0x21, 0xf0, //0x000011a8 andq %rsi, %rax + 0x48, 0x8d, 0x1c, 0x00, //0x000011ab leaq (%rax,%rax), %rbx + 0x4c, 0x09, 0xdb, //0x000011af orq %r11, %rbx + 0x48, 0x89, 0xdf, //0x000011b2 movq %rbx, %rdi + 0x48, 0xf7, 0xd7, //0x000011b5 notq %rdi + 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000011b8 movabsq $-6148914691236517206, %rcx + 0x48, 0x21, 0xce, //0x000011c2 andq %rcx, %rsi + 0x48, 0x21, 0xfe, //0x000011c5 andq %rdi, %rsi + 0x45, 0x31, 0xdb, //0x000011c8 xorl %r11d, %r11d + 0x48, 0x01, 0xc6, //0x000011cb addq %rax, %rsi + 0x41, 0x0f, 0x92, 0xc3, //0x000011ce setb %r11b + 0x48, 0x01, 0xf6, //0x000011d2 addq %rsi, %rsi + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000011d5 movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc6, //0x000011df xorq %rax, %rsi + 0x48, 0x21, 0xde, //0x000011e2 andq %rbx, %rsi + 0x48, 0xf7, 0xd6, //0x000011e5 notq %rsi + //0x000011e8 LBB0_271 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000011e8 movq $8(%rsp), %r9 + 0xc5, 0x8d, 0x74, 0xf1, //0x000011ed vpcmpeqb %ymm1, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x000011f1 vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x000011f5 shlq $32, %rax + 0xc5, 0x85, 0x74, 0xf1, //0x000011f9 vpcmpeqb %ymm1, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x000011fd vpmovmskb %ymm6, %edi + 0x48, 0x09, 0xc7, //0x00001201 orq %rax, %rdi + 0x48, 0x21, 0xf7, //0x00001204 andq %rsi, %rdi + 0xc4, 0xe1, 0xf9, 0x6e, 0xf7, //0x00001207 vmovq %rdi, %xmm6 + 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x0000120c vpclmulqdq $0, %xmm9, %xmm6, %xmm6 + 0xc4, 0xe1, 0xf9, 0x7e, 0xf1, //0x00001212 vmovq %xmm6, %rcx + 0x4c, 0x31, 0xd1, //0x00001217 xorq %r10, %rcx + 0xc4, 0xc1, 0x05, 0x74, 0xf2, //0x0000121a vpcmpeqb %ymm10, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x0000121f vpmovmskb %ymm6, %edi + 0xc4, 0xc1, 0x0d, 0x74, 0xf2, //0x00001223 vpcmpeqb %ymm10, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x00001228 vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x0000122c shlq $32, %rax + 0x48, 0x09, 0xc7, //0x00001230 orq %rax, %rdi + 0x48, 0x89, 0xce, //0x00001233 movq %rcx, %rsi + 0x48, 0xf7, 0xd6, //0x00001236 notq %rsi + 0x48, 0x21, 0xf7, //0x00001239 andq %rsi, %rdi + 0xc5, 0x85, 0x74, 0xf5, //0x0000123c vpcmpeqb %ymm5, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x00001240 vpmovmskb %ymm6, %eax + 0xc5, 0x8d, 0x74, 0xf5, //0x00001244 vpcmpeqb %ymm5, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xde, //0x00001248 vpmovmskb %ymm6, %ebx + 0x48, 0xc1, 0xe3, 0x20, //0x0000124c shlq $32, %rbx + 0x48, 0x09, 0xd8, //0x00001250 orq %rbx, %rax + 0x48, 0x21, 0xf0, //0x00001253 andq %rsi, %rax + 0x0f, 0x84, 0xe6, 0xfe, 0xff, 0xff, //0x00001256 je LBB0_266 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000125c movabsq $4294977024, %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001266 .p2align 4, 0x90 + //0x00001270 LBB0_273 + 0x48, 0x8d, 0x58, 0xff, //0x00001270 leaq $-1(%rax), %rbx + 0x48, 0x89, 0xde, //0x00001274 movq %rbx, %rsi + 0x48, 0x21, 0xfe, //0x00001277 andq %rdi, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x0000127a popcntq %rsi, %rsi + 0x4c, 0x01, 0xf6, //0x0000127f addq %r14, %rsi + 0x48, 0x39, 0xd6, //0x00001282 cmpq %rdx, %rsi + 0x0f, 0x86, 0xba, 0x05, 0x00, 0x00, //0x00001285 jbe LBB0_350 + 0x48, 0x83, 0xc2, 0x01, //0x0000128b addq $1, %rdx + 0x48, 0x21, 0xd8, //0x0000128f andq %rbx, %rax + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001292 jne LBB0_273 + 0xe9, 0xa5, 0xfe, 0xff, 0xff, //0x00001298 jmp LBB0_266 + //0x0000129d LBB0_275 + 0x4d, 0x85, 0xc0, //0x0000129d testq %r8, %r8 + 0x0f, 0x8e, 0x7f, 0x0d, 0x00, 0x00, //0x000012a0 jle LBB0_395 + 0xc5, 0xc9, 0xef, 0xf6, //0x000012a6 vpxor %xmm6, %xmm6, %xmm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x000012aa vmovdqu %ymm6, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x000012b0 vmovdqu %ymm6, $64(%rsp) + 0x44, 0x89, 0xe0, //0x000012b6 movl %r12d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x000012b9 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x000012be cmpl $4033, %eax + 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x000012c3 jb LBB0_279 + 0x49, 0x83, 0xf8, 0x20, //0x000012c9 cmpq $32, %r8 + 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x000012cd jb LBB0_280 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x000012d3 vmovdqu (%r12), %ymm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x000012d9 vmovdqu %ymm6, $64(%rsp) + 0x49, 0x83, 0xc4, 0x20, //0x000012df addq $32, %r12 + 0x49, 0x8d, 0x78, 0xe0, //0x000012e3 leaq $-32(%r8), %rdi + 0x4c, 0x8d, 0x4c, 0x24, 0x60, //0x000012e7 leaq $96(%rsp), %r9 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x000012ec jmp LBB0_281 + //0x000012f1 LBB0_279 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x000012f1 movq $24(%rsp), %r13 + 0xe9, 0x68, 0xfe, 0xff, 0xff, //0x000012f6 jmp LBB0_268 + //0x000012fb LBB0_280 + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x000012fb leaq $64(%rsp), %r9 + 0x4c, 0x89, 0xc7, //0x00001300 movq %r8, %rdi + //0x00001303 LBB0_281 + 0x48, 0x83, 0xff, 0x10, //0x00001303 cmpq $16, %rdi + 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x00001307 jb LBB0_282 + 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x0000130d vmovdqu (%r12), %xmm6 + 0xc4, 0xc1, 0x7a, 0x7f, 0x31, //0x00001313 vmovdqu %xmm6, (%r9) + 0x49, 0x83, 0xc4, 0x10, //0x00001318 addq $16, %r12 + 0x49, 0x83, 0xc1, 0x10, //0x0000131c addq $16, %r9 + 0x48, 0x83, 0xc7, 0xf0, //0x00001320 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00001324 cmpq $8, %rdi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00001328 jae LBB0_289 + //0x0000132e LBB0_283 + 0x48, 0x83, 0xff, 0x04, //0x0000132e cmpq $4, %rdi + 0x0f, 0x8c, 0x49, 0x00, 0x00, 0x00, //0x00001332 jl LBB0_284 + //0x00001338 LBB0_290 + 0x41, 0x8b, 0x04, 0x24, //0x00001338 movl (%r12), %eax + 0x41, 0x89, 0x01, //0x0000133c movl %eax, (%r9) + 0x49, 0x83, 0xc4, 0x04, //0x0000133f addq $4, %r12 + 0x49, 0x83, 0xc1, 0x04, //0x00001343 addq $4, %r9 + 0x48, 0x83, 0xc7, 0xfc, //0x00001347 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x0000134b cmpq $2, %rdi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x0000134f jae LBB0_285 + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001355 jmp LBB0_286 + //0x0000135a LBB0_282 + 0x48, 0x83, 0xff, 0x08, //0x0000135a cmpq $8, %rdi + 0x0f, 0x82, 0xca, 0xff, 0xff, 0xff, //0x0000135e jb LBB0_283 + //0x00001364 LBB0_289 + 0x49, 0x8b, 0x04, 0x24, //0x00001364 movq (%r12), %rax + 0x49, 0x89, 0x01, //0x00001368 movq %rax, (%r9) + 0x49, 0x83, 0xc4, 0x08, //0x0000136b addq $8, %r12 + 0x49, 0x83, 0xc1, 0x08, //0x0000136f addq $8, %r9 + 0x48, 0x83, 0xc7, 0xf8, //0x00001373 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00001377 cmpq $4, %rdi + 0x0f, 0x8d, 0xb7, 0xff, 0xff, 0xff, //0x0000137b jge LBB0_290 + //0x00001381 LBB0_284 + 0x48, 0x83, 0xff, 0x02, //0x00001381 cmpq $2, %rdi + 0x0f, 0x82, 0x15, 0x00, 0x00, 0x00, //0x00001385 jb LBB0_286 + //0x0000138b LBB0_285 + 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x0000138b movzwl (%r12), %eax + 0x66, 0x41, 0x89, 0x01, //0x00001390 movw %ax, (%r9) + 0x49, 0x83, 0xc4, 0x02, //0x00001394 addq $2, %r12 + 0x49, 0x83, 0xc1, 0x02, //0x00001398 addq $2, %r9 + 0x48, 0x83, 0xc7, 0xfe, //0x0000139c addq $-2, %rdi + //0x000013a0 LBB0_286 + 0x4c, 0x89, 0xe0, //0x000013a0 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x000013a3 leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x000013a8 testq %rdi, %rdi + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x000013ab movq $24(%rsp), %r13 + 0x0f, 0x84, 0xad, 0xfd, 0xff, 0xff, //0x000013b0 je LBB0_268 + 0x8a, 0x00, //0x000013b6 movb (%rax), %al + 0x41, 0x88, 0x01, //0x000013b8 movb %al, (%r9) + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x000013bb leaq $64(%rsp), %r12 + 0xe9, 0x9e, 0xfd, 0xff, 0xff, //0x000013c0 jmp LBB0_268 + //0x000013c5 LBB0_291 + 0x48, 0x83, 0xc0, 0x05, //0x000013c5 addq $5, %rax + 0x49, 0x3b, 0x45, 0x00, //0x000013c9 cmpq (%r13), %rax + 0x0f, 0x87, 0x13, 0x00, 0x00, 0x00, //0x000013cd ja LBB0_293 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000013d3 .p2align 4, 0x90 + //0x000013e0 LBB0_292 + 0x49, 0x89, 0x01, //0x000013e0 movq %rax, (%r9) + 0x49, 0x89, 0xc6, //0x000013e3 movq %rax, %r14 + //0x000013e6 LBB0_293 + 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, //0x000013e6 movq $144(%rsp), %rax + 0x4c, 0x8b, 0x20, //0x000013ee movq (%rax), %r12 + 0x48, 0x8b, 0x40, 0x08, //0x000013f1 movq $8(%rax), %rax + 0x49, 0x39, 0xc6, //0x000013f5 cmpq %rax, %r14 + 0x0f, 0x83, 0x32, 0x00, 0x00, 0x00, //0x000013f8 jae LBB0_298 + 0x43, 0x8a, 0x0c, 0x34, //0x000013fe movb (%r12,%r14), %cl + 0x80, 0xf9, 0x0d, //0x00001402 cmpb $13, %cl + 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00001405 je LBB0_298 + 0x80, 0xf9, 0x20, //0x0000140b cmpb $32, %cl + 0x0f, 0x84, 0x1c, 0x00, 0x00, 0x00, //0x0000140e je LBB0_298 + 0x80, 0xc1, 0xf7, //0x00001414 addb $-9, %cl + 0x80, 0xf9, 0x01, //0x00001417 cmpb $1, %cl + 0x0f, 0x86, 0x10, 0x00, 0x00, 0x00, //0x0000141a jbe LBB0_298 + 0x4c, 0x89, 0xf1, //0x00001420 movq %r14, %rcx + 0xe9, 0x69, 0x01, 0x00, 0x00, //0x00001423 jmp LBB0_323 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001428 .p2align 4, 0x90 + //0x00001430 LBB0_298 + 0x49, 0x8d, 0x4e, 0x01, //0x00001430 leaq $1(%r14), %rcx + 0x48, 0x39, 0xc1, //0x00001434 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001437 jae LBB0_302 + 0x41, 0x8a, 0x14, 0x0c, //0x0000143d movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x00001441 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001444 je LBB0_302 + 0x80, 0xfa, 0x20, //0x0000144a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000144d je LBB0_302 + 0x80, 0xc2, 0xf7, //0x00001453 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00001456 cmpb $1, %dl + 0x0f, 0x87, 0x32, 0x01, 0x00, 0x00, //0x00001459 ja LBB0_323 + 0x90, //0x0000145f .p2align 4, 0x90 + //0x00001460 LBB0_302 + 0x49, 0x8d, 0x4e, 0x02, //0x00001460 leaq $2(%r14), %rcx + 0x48, 0x39, 0xc1, //0x00001464 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001467 jae LBB0_306 + 0x41, 0x8a, 0x14, 0x0c, //0x0000146d movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x00001471 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001474 je LBB0_306 + 0x80, 0xfa, 0x20, //0x0000147a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000147d je LBB0_306 + 0x80, 0xc2, 0xf7, //0x00001483 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00001486 cmpb $1, %dl + 0x0f, 0x87, 0x02, 0x01, 0x00, 0x00, //0x00001489 ja LBB0_323 + 0x90, //0x0000148f .p2align 4, 0x90 + //0x00001490 LBB0_306 + 0x49, 0x8d, 0x4e, 0x03, //0x00001490 leaq $3(%r14), %rcx + 0x48, 0x39, 0xc1, //0x00001494 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001497 jae LBB0_310 + 0x41, 0x8a, 0x14, 0x0c, //0x0000149d movb (%r12,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x000014a1 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000014a4 je LBB0_310 + 0x80, 0xfa, 0x20, //0x000014aa cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000014ad je LBB0_310 + 0x80, 0xc2, 0xf7, //0x000014b3 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000014b6 cmpb $1, %dl + 0x0f, 0x87, 0xd2, 0x00, 0x00, 0x00, //0x000014b9 ja LBB0_323 + 0x90, //0x000014bf .p2align 4, 0x90 + //0x000014c0 LBB0_310 + 0x49, 0x8d, 0x4e, 0x04, //0x000014c0 leaq $4(%r14), %rcx + 0x48, 0x89, 0xc2, //0x000014c4 movq %rax, %rdx + 0x48, 0x29, 0xca, //0x000014c7 subq %rcx, %rdx + 0x0f, 0x86, 0xe4, 0x1d, 0x00, 0x00, //0x000014ca jbe LBB0_1047 + 0x48, 0x83, 0xfa, 0x20, //0x000014d0 cmpq $32, %rdx + 0x0f, 0x82, 0x2c, 0x09, 0x00, 0x00, //0x000014d4 jb LBB0_368 + 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x000014da movq $-4, %rdx + 0x4c, 0x29, 0xf2, //0x000014e1 subq %r14, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000014e4 .p2align 4, 0x90 + //0x000014f0 LBB0_313 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x000014f0 vmovdqu (%r12,%rcx), %ymm6 + 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x000014f6 vpshufb %ymm6, %ymm0, %ymm7 + 0xc5, 0xcd, 0x74, 0xf7, //0x000014fb vpcmpeqb %ymm7, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x000014ff vpmovmskb %ymm6, %esi + 0x83, 0xfe, 0xff, //0x00001503 cmpl $-1, %esi + 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00001506 jne LBB0_322 + 0x48, 0x83, 0xc1, 0x20, //0x0000150c addq $32, %rcx + 0x48, 0x8d, 0x34, 0x10, //0x00001510 leaq (%rax,%rdx), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00001514 addq $-32, %rsi + 0x48, 0x83, 0xc2, 0xe0, //0x00001518 addq $-32, %rdx + 0x48, 0x83, 0xfe, 0x1f, //0x0000151c cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00001520 ja LBB0_313 + 0x4c, 0x89, 0xe1, //0x00001526 movq %r12, %rcx + 0x48, 0x29, 0xd1, //0x00001529 subq %rdx, %rcx + 0x48, 0x01, 0xc2, //0x0000152c addq %rax, %rdx + 0x48, 0x85, 0xd2, //0x0000152f testq %rdx, %rdx + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00001532 je LBB0_321 + //0x00001538 LBB0_316 + 0x48, 0x8d, 0x3c, 0x11, //0x00001538 leaq (%rcx,%rdx), %rdi + 0x31, 0xf6, //0x0000153c xorl %esi, %esi + //0x0000153e LBB0_317 + 0x0f, 0xbe, 0x1c, 0x31, //0x0000153e movsbl (%rcx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x00001542 cmpl $32, %ebx + 0x0f, 0x87, 0x20, 0x04, 0x00, 0x00, //0x00001545 ja LBB0_364 + 0x49, 0x0f, 0xa3, 0xda, //0x0000154b btq %rbx, %r10 + 0x0f, 0x83, 0x16, 0x04, 0x00, 0x00, //0x0000154f jae LBB0_364 + 0x48, 0x83, 0xc6, 0x01, //0x00001555 addq $1, %rsi + 0x48, 0x39, 0xf2, //0x00001559 cmpq %rsi, %rdx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000155c jne LBB0_317 + 0x48, 0x89, 0xf9, //0x00001562 movq %rdi, %rcx + //0x00001565 LBB0_321 + 0x4c, 0x29, 0xe1, //0x00001565 subq %r12, %rcx + 0x48, 0x39, 0xc1, //0x00001568 cmpq %rax, %rcx + 0x0f, 0x82, 0x20, 0x00, 0x00, 0x00, //0x0000156b jb LBB0_323 + 0xe9, 0x95, 0x39, 0x00, 0x00, //0x00001571 jmp LBB0_1048 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001576 .p2align 4, 0x90 + //0x00001580 LBB0_322 + 0xf7, 0xd6, //0x00001580 notl %esi + 0x0f, 0xbc, 0xce, //0x00001582 bsfl %esi, %ecx + 0x48, 0x29, 0xd1, //0x00001585 subq %rdx, %rcx + 0x48, 0x39, 0xc1, //0x00001588 cmpq %rax, %rcx + 0x0f, 0x83, 0x7a, 0x39, 0x00, 0x00, //0x0000158b jae LBB0_1048 + //0x00001591 LBB0_323 + 0x4c, 0x8d, 0x71, 0x01, //0x00001591 leaq $1(%rcx), %r14 + 0x4d, 0x89, 0x31, //0x00001595 movq %r14, (%r9) + 0x41, 0x8a, 0x04, 0x0c, //0x00001598 movb (%r12,%rcx), %al + 0x3c, 0x2c, //0x0000159c cmpb $44, %al + 0x0f, 0x84, 0x97, 0xef, 0xff, 0xff, //0x0000159e je LBB0_38 + 0xe9, 0x16, 0x1d, 0x00, 0x00, //0x000015a4 jmp LBB0_646 + //0x000015a9 LBB0_324 + 0x4d, 0x8b, 0x45, 0x00, //0x000015a9 movq (%r13), %r8 + 0x4d, 0x29, 0xf0, //0x000015ad subq %r14, %r8 + 0x4d, 0x01, 0xf4, //0x000015b0 addq %r14, %r12 + 0x45, 0x31, 0xd2, //0x000015b3 xorl %r10d, %r10d + 0x45, 0x31, 0xdb, //0x000015b6 xorl %r11d, %r11d + 0x45, 0x31, 0xf6, //0x000015b9 xorl %r14d, %r14d + 0x31, 0xd2, //0x000015bc xorl %edx, %edx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000015be jmp LBB0_326 + //0x000015c3 LBB0_325 + 0x48, 0xc1, 0xf9, 0x3f, //0x000015c3 sarq $63, %rcx + 0xf3, 0x48, 0x0f, 0xb8, 0xc7, //0x000015c7 popcntq %rdi, %rax + 0x49, 0x01, 0xc6, //0x000015cc addq %rax, %r14 + 0x49, 0x83, 0xc4, 0x40, //0x000015cf addq $64, %r12 + 0x49, 0x83, 0xc0, 0xc0, //0x000015d3 addq $-64, %r8 + 0x49, 0x89, 0xca, //0x000015d7 movq %rcx, %r10 + //0x000015da LBB0_326 + 0x49, 0x83, 0xf8, 0x40, //0x000015da cmpq $64, %r8 + 0x0f, 0x8c, 0x39, 0x01, 0x00, 0x00, //0x000015de jl LBB0_334 + //0x000015e4 LBB0_327 + 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x000015e4 vmovdqu (%r12), %ymm15 + 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x000015ea vmovdqu $32(%r12), %ymm14 + 0xc5, 0x85, 0x74, 0xf2, //0x000015f1 vpcmpeqb %ymm2, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x000015f5 vpmovmskb %ymm6, %esi + 0xc5, 0x8d, 0x74, 0xf2, //0x000015f9 vpcmpeqb %ymm2, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x000015fd vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x00001601 shlq $32, %rax + 0x48, 0x09, 0xc6, //0x00001605 orq %rax, %rsi + 0x48, 0x89, 0xf0, //0x00001608 movq %rsi, %rax + 0x4c, 0x09, 0xd8, //0x0000160b orq %r11, %rax + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000160e jne LBB0_329 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001614 movq $-1, %rsi + 0x45, 0x31, 0xdb, //0x0000161b xorl %r11d, %r11d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000161e jmp LBB0_330 + //0x00001623 LBB0_329 + 0x4c, 0x89, 0xd8, //0x00001623 movq %r11, %rax + 0x48, 0xf7, 0xd0, //0x00001626 notq %rax + 0x48, 0x21, 0xf0, //0x00001629 andq %rsi, %rax + 0x48, 0x8d, 0x1c, 0x00, //0x0000162c leaq (%rax,%rax), %rbx + 0x4c, 0x09, 0xdb, //0x00001630 orq %r11, %rbx + 0x48, 0x89, 0xdf, //0x00001633 movq %rbx, %rdi + 0x48, 0xf7, 0xd7, //0x00001636 notq %rdi + 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001639 movabsq $-6148914691236517206, %rcx + 0x48, 0x21, 0xce, //0x00001643 andq %rcx, %rsi + 0x48, 0x21, 0xfe, //0x00001646 andq %rdi, %rsi + 0x45, 0x31, 0xdb, //0x00001649 xorl %r11d, %r11d + 0x48, 0x01, 0xc6, //0x0000164c addq %rax, %rsi + 0x41, 0x0f, 0x92, 0xc3, //0x0000164f setb %r11b + 0x48, 0x01, 0xf6, //0x00001653 addq %rsi, %rsi + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001656 movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc6, //0x00001660 xorq %rax, %rsi + 0x48, 0x21, 0xde, //0x00001663 andq %rbx, %rsi + 0x48, 0xf7, 0xd6, //0x00001666 notq %rsi + //0x00001669 LBB0_330 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001669 movq $8(%rsp), %r9 + 0xc5, 0x8d, 0x74, 0xf1, //0x0000166e vpcmpeqb %ymm1, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x00001672 vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x00001676 shlq $32, %rax + 0xc5, 0x85, 0x74, 0xf1, //0x0000167a vpcmpeqb %ymm1, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x0000167e vpmovmskb %ymm6, %edi + 0x48, 0x09, 0xc7, //0x00001682 orq %rax, %rdi + 0x48, 0x21, 0xf7, //0x00001685 andq %rsi, %rdi + 0xc4, 0xe1, 0xf9, 0x6e, 0xf7, //0x00001688 vmovq %rdi, %xmm6 + 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x0000168d vpclmulqdq $0, %xmm9, %xmm6, %xmm6 + 0xc4, 0xe1, 0xf9, 0x7e, 0xf1, //0x00001693 vmovq %xmm6, %rcx + 0x4c, 0x31, 0xd1, //0x00001698 xorq %r10, %rcx + 0xc4, 0xc1, 0x05, 0x74, 0xf4, //0x0000169b vpcmpeqb %ymm12, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x000016a0 vpmovmskb %ymm6, %edi + 0xc4, 0xc1, 0x0d, 0x74, 0xf4, //0x000016a4 vpcmpeqb %ymm12, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x000016a9 vpmovmskb %ymm6, %eax + 0x48, 0xc1, 0xe0, 0x20, //0x000016ad shlq $32, %rax + 0x48, 0x09, 0xc7, //0x000016b1 orq %rax, %rdi + 0x48, 0x89, 0xce, //0x000016b4 movq %rcx, %rsi + 0x48, 0xf7, 0xd6, //0x000016b7 notq %rsi + 0x48, 0x21, 0xf7, //0x000016ba andq %rsi, %rdi + 0xc4, 0xc1, 0x05, 0x74, 0xf5, //0x000016bd vpcmpeqb %ymm13, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x000016c2 vpmovmskb %ymm6, %eax + 0xc4, 0xc1, 0x0d, 0x74, 0xf5, //0x000016c6 vpcmpeqb %ymm13, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xde, //0x000016cb vpmovmskb %ymm6, %ebx + 0x48, 0xc1, 0xe3, 0x20, //0x000016cf shlq $32, %rbx + 0x48, 0x09, 0xd8, //0x000016d3 orq %rbx, %rax + 0x48, 0x21, 0xf0, //0x000016d6 andq %rsi, %rax + 0x0f, 0x84, 0xe4, 0xfe, 0xff, 0xff, //0x000016d9 je LBB0_325 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000016df movabsq $4294977024, %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000016e9 .p2align 4, 0x90 + //0x000016f0 LBB0_332 + 0x48, 0x8d, 0x58, 0xff, //0x000016f0 leaq $-1(%rax), %rbx + 0x48, 0x89, 0xde, //0x000016f4 movq %rbx, %rsi + 0x48, 0x21, 0xfe, //0x000016f7 andq %rdi, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000016fa popcntq %rsi, %rsi + 0x4c, 0x01, 0xf6, //0x000016ff addq %r14, %rsi + 0x48, 0x39, 0xd6, //0x00001702 cmpq %rdx, %rsi + 0x0f, 0x86, 0x3a, 0x01, 0x00, 0x00, //0x00001705 jbe LBB0_350 + 0x48, 0x83, 0xc2, 0x01, //0x0000170b addq $1, %rdx + 0x48, 0x21, 0xd8, //0x0000170f andq %rbx, %rax + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001712 jne LBB0_332 + 0xe9, 0xa6, 0xfe, 0xff, 0xff, //0x00001718 jmp LBB0_325 + //0x0000171d LBB0_334 + 0x4d, 0x85, 0xc0, //0x0000171d testq %r8, %r8 + 0x0f, 0x8e, 0xff, 0x08, 0x00, 0x00, //0x00001720 jle LBB0_395 + 0xc5, 0xc9, 0xef, 0xf6, //0x00001726 vpxor %xmm6, %xmm6, %xmm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x0000172a vmovdqu %ymm6, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001730 vmovdqu %ymm6, $64(%rsp) + 0x44, 0x89, 0xe0, //0x00001736 movl %r12d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001739 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x0000173e cmpl $4033, %eax + 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x00001743 jb LBB0_338 + 0x49, 0x83, 0xf8, 0x20, //0x00001749 cmpq $32, %r8 + 0x0f, 0x82, 0x28, 0x00, 0x00, 0x00, //0x0000174d jb LBB0_339 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00001753 vmovdqu (%r12), %ymm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00001759 vmovdqu %ymm6, $64(%rsp) + 0x49, 0x83, 0xc4, 0x20, //0x0000175f addq $32, %r12 + 0x49, 0x8d, 0x78, 0xe0, //0x00001763 leaq $-32(%r8), %rdi + 0x4c, 0x8d, 0x4c, 0x24, 0x60, //0x00001767 leaq $96(%rsp), %r9 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000176c jmp LBB0_340 + //0x00001771 LBB0_338 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00001771 movq $24(%rsp), %r13 + 0xe9, 0x69, 0xfe, 0xff, 0xff, //0x00001776 jmp LBB0_327 + //0x0000177b LBB0_339 + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x0000177b leaq $64(%rsp), %r9 + 0x4c, 0x89, 0xc7, //0x00001780 movq %r8, %rdi + //0x00001783 LBB0_340 + 0x48, 0x83, 0xff, 0x10, //0x00001783 cmpq $16, %rdi + 0x0f, 0x82, 0x4d, 0x00, 0x00, 0x00, //0x00001787 jb LBB0_341 + 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x0000178d vmovdqu (%r12), %xmm6 + 0xc4, 0xc1, 0x7a, 0x7f, 0x31, //0x00001793 vmovdqu %xmm6, (%r9) + 0x49, 0x83, 0xc4, 0x10, //0x00001798 addq $16, %r12 + 0x49, 0x83, 0xc1, 0x10, //0x0000179c addq $16, %r9 + 0x48, 0x83, 0xc7, 0xf0, //0x000017a0 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x000017a4 cmpq $8, %rdi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000017a8 jae LBB0_348 + //0x000017ae LBB0_342 + 0x48, 0x83, 0xff, 0x04, //0x000017ae cmpq $4, %rdi + 0x0f, 0x8c, 0x49, 0x00, 0x00, 0x00, //0x000017b2 jl LBB0_343 + //0x000017b8 LBB0_349 + 0x41, 0x8b, 0x04, 0x24, //0x000017b8 movl (%r12), %eax + 0x41, 0x89, 0x01, //0x000017bc movl %eax, (%r9) + 0x49, 0x83, 0xc4, 0x04, //0x000017bf addq $4, %r12 + 0x49, 0x83, 0xc1, 0x04, //0x000017c3 addq $4, %r9 + 0x48, 0x83, 0xc7, 0xfc, //0x000017c7 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x000017cb cmpq $2, %rdi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000017cf jae LBB0_344 + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000017d5 jmp LBB0_345 + //0x000017da LBB0_341 + 0x48, 0x83, 0xff, 0x08, //0x000017da cmpq $8, %rdi + 0x0f, 0x82, 0xca, 0xff, 0xff, 0xff, //0x000017de jb LBB0_342 + //0x000017e4 LBB0_348 + 0x49, 0x8b, 0x04, 0x24, //0x000017e4 movq (%r12), %rax + 0x49, 0x89, 0x01, //0x000017e8 movq %rax, (%r9) + 0x49, 0x83, 0xc4, 0x08, //0x000017eb addq $8, %r12 + 0x49, 0x83, 0xc1, 0x08, //0x000017ef addq $8, %r9 + 0x48, 0x83, 0xc7, 0xf8, //0x000017f3 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000017f7 cmpq $4, %rdi + 0x0f, 0x8d, 0xb7, 0xff, 0xff, 0xff, //0x000017fb jge LBB0_349 + //0x00001801 LBB0_343 + 0x48, 0x83, 0xff, 0x02, //0x00001801 cmpq $2, %rdi + 0x0f, 0x82, 0x15, 0x00, 0x00, 0x00, //0x00001805 jb LBB0_345 + //0x0000180b LBB0_344 + 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x0000180b movzwl (%r12), %eax + 0x66, 0x41, 0x89, 0x01, //0x00001810 movw %ax, (%r9) + 0x49, 0x83, 0xc4, 0x02, //0x00001814 addq $2, %r12 + 0x49, 0x83, 0xc1, 0x02, //0x00001818 addq $2, %r9 + 0x48, 0x83, 0xc7, 0xfe, //0x0000181c addq $-2, %rdi + //0x00001820 LBB0_345 + 0x4c, 0x89, 0xe0, //0x00001820 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00001823 leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x00001828 testq %rdi, %rdi + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x0000182b movq $24(%rsp), %r13 + 0x0f, 0x84, 0xae, 0xfd, 0xff, 0xff, //0x00001830 je LBB0_327 + 0x8a, 0x00, //0x00001836 movb (%rax), %al + 0x41, 0x88, 0x01, //0x00001838 movb %al, (%r9) + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x0000183b leaq $64(%rsp), %r12 + 0xe9, 0x9f, 0xfd, 0xff, 0xff, //0x00001840 jmp LBB0_327 + //0x00001845 LBB0_350 + 0x49, 0x8b, 0x4d, 0x00, //0x00001845 movq (%r13), %rcx + 0x48, 0x0f, 0xbc, 0xc0, //0x00001849 bsfq %rax, %rax + 0x4c, 0x29, 0xc0, //0x0000184d subq %r8, %rax + 0x4c, 0x8d, 0x34, 0x08, //0x00001850 leaq (%rax,%rcx), %r14 + 0x49, 0x83, 0xc6, 0x01, //0x00001854 addq $1, %r14 + 0x4d, 0x89, 0x31, //0x00001858 movq %r14, (%r9) + 0x49, 0x8b, 0x45, 0x00, //0x0000185b movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x0000185f cmpq %rax, %r14 + 0x4c, 0x0f, 0x47, 0xf0, //0x00001862 cmovaq %rax, %r14 + 0x4d, 0x89, 0x31, //0x00001866 movq %r14, (%r9) + 0xe9, 0x78, 0xfb, 0xff, 0xff, //0x00001869 jmp LBB0_293 + //0x0000186e LBB0_351 + 0x41, 0x0f, 0xbc, 0xca, //0x0000186e bsfl %r10d, %ecx + 0x48, 0x01, 0xc1, //0x00001872 addq %rax, %rcx + 0x4d, 0x8d, 0x34, 0x0f, //0x00001875 leaq (%r15,%rcx), %r14 + 0x49, 0x83, 0xc6, 0x02, //0x00001879 addq $2, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x0000187d movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x00001882 movq %r14, (%r9) + //0x00001885 LBB0_352 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00001885 movq $40(%rsp), %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000188a movabsq $4294977024, %r10 + 0xe9, 0x4d, 0xfb, 0xff, 0xff, //0x00001894 jmp LBB0_293 + //0x00001899 LBB0_353 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00001899 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000018a0 movl $2, %esi + 0x48, 0x01, 0xf0, //0x000018a5 addq %rsi, %rax + 0x49, 0x01, 0xd7, //0x000018a8 addq %rdx, %r15 + 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x000018ab jle LBB0_357 + //0x000018b1 LBB0_354 + 0x0f, 0xb6, 0x10, //0x000018b1 movzbl (%rax), %edx + 0x80, 0xfa, 0x5c, //0x000018b4 cmpb $92, %dl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x000018b7 je LBB0_353 + 0x80, 0xfa, 0x22, //0x000018bd cmpb $34, %dl + 0x0f, 0x84, 0x29, 0x05, 0x00, 0x00, //0x000018c0 je LBB0_367 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000018c6 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000018cd movl $1, %esi + 0x48, 0x01, 0xf0, //0x000018d2 addq %rsi, %rax + 0x49, 0x01, 0xd7, //0x000018d5 addq %rdx, %r15 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000018d8 jg LBB0_354 + //0x000018de LBB0_357 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x000018de movq $40(%rsp), %r15 + 0xe9, 0xfe, 0xfa, 0xff, 0xff, //0x000018e3 jmp LBB0_293 + //0x000018e8 LBB0_358 + 0x66, 0x0f, 0xbc, 0xcb, //0x000018e8 bsfw %bx, %cx + 0x0f, 0xb7, 0xc9, //0x000018ec movzwl %cx, %ecx + 0x49, 0x89, 0xce, //0x000018ef movq %rcx, %r14 + 0x49, 0x29, 0xf6, //0x000018f2 subq %rsi, %r14 + 0x4d, 0x89, 0x31, //0x000018f5 movq %r14, (%r9) + 0x4d, 0x85, 0xf6, //0x000018f8 testq %r14, %r14 + 0x0f, 0x8e, 0xe5, 0xfa, 0xff, 0xff, //0x000018fb jle LBB0_293 + 0x48, 0x01, 0xc8, //0x00001901 addq %rcx, %rax + 0x48, 0x01, 0xcf, //0x00001904 addq %rcx, %rdi + 0x48, 0x01, 0xca, //0x00001907 addq %rcx, %rdx + //0x0000190a LBB0_360 + 0x0f, 0xb6, 0x0a, //0x0000190a movzbl (%rdx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x0000190d cmpq $32, %rcx + 0x0f, 0x87, 0xcf, 0xfa, 0xff, 0xff, //0x00001911 ja LBB0_293 + 0x49, 0x0f, 0xa3, 0xca, //0x00001917 btq %rcx, %r10 + 0x0f, 0x83, 0xc5, 0xfa, 0xff, 0xff, //0x0000191b jae LBB0_293 + 0x49, 0x89, 0x39, //0x00001921 movq %rdi, (%r9) + 0x48, 0x83, 0xc0, 0xff, //0x00001924 addq $-1, %rax + 0x48, 0x83, 0xc7, 0xff, //0x00001928 addq $-1, %rdi + 0x48, 0x83, 0xc2, 0xff, //0x0000192c addq $-1, %rdx + 0x49, 0x83, 0xc6, 0xff, //0x00001930 addq $-1, %r14 + 0x48, 0x83, 0xf8, 0x01, //0x00001934 cmpq $1, %rax + 0x0f, 0x8f, 0xcc, 0xff, 0xff, 0xff, //0x00001938 jg LBB0_360 + 0xe9, 0xa3, 0xfa, 0xff, 0xff, //0x0000193e jmp LBB0_293 + //0x00001943 LBB0_118 + 0x4c, 0x29, 0xe1, //0x00001943 subq %r12, %rcx + 0x48, 0x01, 0xf1, //0x00001946 addq %rsi, %rcx + 0x48, 0x39, 0xc1, //0x00001949 cmpq %rax, %rcx + 0x0f, 0x82, 0x8f, 0xed, 0xff, 0xff, //0x0000194c jb LBB0_68 + 0xe9, 0xb4, 0x35, 0x00, 0x00, //0x00001952 jmp LBB0_1048 + //0x00001957 LBB0_363 + 0x4c, 0x29, 0xe1, //0x00001957 subq %r12, %rcx + 0x48, 0x01, 0xf1, //0x0000195a addq %rsi, %rcx + 0x48, 0x39, 0xc1, //0x0000195d cmpq %rax, %rcx + 0x0f, 0x82, 0x1b, 0xf3, 0xff, 0xff, //0x00001960 jb LBB0_196 + 0xe9, 0xa0, 0x35, 0x00, 0x00, //0x00001966 jmp LBB0_1048 + //0x0000196b LBB0_364 + 0x4c, 0x29, 0xe1, //0x0000196b subq %r12, %rcx + 0x48, 0x01, 0xf1, //0x0000196e addq %rsi, %rcx + 0x48, 0x39, 0xc1, //0x00001971 cmpq %rax, %rcx + 0x0f, 0x82, 0x17, 0xfc, 0xff, 0xff, //0x00001974 jb LBB0_323 + 0xe9, 0x8c, 0x35, 0x00, 0x00, //0x0000197a jmp LBB0_1048 + //0x0000197f LBB0_365 + 0x4c, 0x29, 0xe0, //0x0000197f subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00001982 addq %rcx, %rax + 0x48, 0x39, 0xd0, //0x00001985 cmpq %rdx, %rax + 0x0f, 0x82, 0xa3, 0xf4, 0xff, 0xff, //0x00001988 jb LBB0_228 + 0xe9, 0x53, 0xfa, 0xff, 0xff, //0x0000198e jmp LBB0_293 + //0x00001993 LBB0_119 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00001993 movq $-1, %rax + 0x45, 0x31, 0xc9, //0x0000199a xorl %r9d, %r9d + 0x49, 0x89, 0xfe, //0x0000199d movq %rdi, %r14 + 0x49, 0x89, 0xdd, //0x000019a0 movq %rbx, %r13 + 0x48, 0x83, 0xfa, 0x20, //0x000019a3 cmpq $32, %rdx + 0x0f, 0x83, 0x10, 0xf1, 0xff, 0xff, //0x000019a7 jae LBB0_77 + 0xe9, 0x57, 0x05, 0x00, 0x00, //0x000019ad jmp LBB0_378 + //0x000019b2 LBB0_120 + 0x48, 0xc7, 0x44, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, //0x000019b2 movq $0, $64(%rsp) + 0x49, 0x8d, 0x56, 0xff, //0x000019bb leaq $-1(%r14), %rdx + 0x4b, 0x8d, 0x3c, 0x34, //0x000019bf leaq (%r12,%r14), %rdi + 0x48, 0x83, 0xc7, 0xff, //0x000019c3 addq $-1, %rdi + 0x48, 0x8b, 0x44, 0x24, 0x38, //0x000019c7 movq $56(%rsp), %rax + 0x48, 0x8b, 0x4c, 0x24, 0x30, //0x000019cc movq $48(%rsp), %rcx + 0x4c, 0x8d, 0x04, 0x08, //0x000019d1 leaq (%rax,%rcx), %r8 + 0x49, 0x39, 0xd3, //0x000019d5 cmpq %rdx, %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x000019d8 movq $24(%rsp), %r13 + 0x0f, 0x8d, 0x34, 0x04, 0x00, 0x00, //0x000019dd jge LBB0_168 + 0x48, 0x85, 0xc9, //0x000019e3 testq %rcx, %rcx + 0x0f, 0x8e, 0x2b, 0x04, 0x00, 0x00, //0x000019e6 jle LBB0_168 + 0x48, 0x8b, 0x5c, 0x24, 0x38, //0x000019ec movq $56(%rsp), %rbx + 0x4c, 0x89, 0x7c, 0x24, 0x28, //0x000019f1 movq %r15, $40(%rsp) + //0x000019f6 LBB0_123 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x000019f6 movq $32(%rsp), %rax + 0x8a, 0x10, //0x000019fb movb (%rax), %dl + 0x80, 0xfa, 0x5c, //0x000019fd cmpb $92, %dl + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00001a00 jne LBB0_128 + 0x49, 0x89, 0xd9, //0x00001a06 movq %rbx, %r9 + 0x48, 0x89, 0xfb, //0x00001a09 movq %rdi, %rbx + 0x48, 0x29, 0xc3, //0x00001a0c subq %rax, %rbx + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00001a0f movq $-1, %r13 + 0x48, 0x85, 0xdb, //0x00001a16 testq %rbx, %rbx + 0x0f, 0x8e, 0xca, 0x3e, 0x00, 0x00, //0x00001a19 jle LBB0_1151 + 0x0f, 0xb6, 0x50, 0x01, //0x00001a1f movzbl $1(%rax), %edx + 0x48, 0x8d, 0x05, 0x26, 0x48, 0x00, 0x00, //0x00001a23 leaq $18470(%rip), %rax /* __UnquoteTab+0(%rip) */ + 0x8a, 0x14, 0x02, //0x00001a2a movb (%rdx,%rax), %dl + 0x80, 0xfa, 0xff, //0x00001a2d cmpb $-1, %dl + 0x0f, 0x84, 0x3b, 0x00, 0x00, 0x00, //0x00001a30 je LBB0_130 + 0x84, 0xd2, //0x00001a36 testb %dl, %dl + 0x0f, 0x84, 0xc4, 0x3e, 0x00, 0x00, //0x00001a38 je LBB0_1153 + 0x88, 0x54, 0x24, 0x40, //0x00001a3e movb %dl, $64(%rsp) + 0x48, 0x83, 0x44, 0x24, 0x20, 0x02, //0x00001a42 addq $2, $32(%rsp) + 0xbb, 0x01, 0x00, 0x00, 0x00, //0x00001a48 movl $1, %ebx + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00001a4d movq $24(%rsp), %r13 + 0xe9, 0x4a, 0x01, 0x00, 0x00, //0x00001a52 jmp LBB0_142 + //0x00001a57 LBB0_128 + 0x3a, 0x13, //0x00001a57 cmpb (%rbx), %dl + 0x0f, 0x85, 0x0a, 0x04, 0x00, 0x00, //0x00001a59 jne LBB0_371 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00001a5f movq $32(%rsp), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00001a64 addq $1, %rax + 0x48, 0x83, 0xc3, 0x01, //0x00001a68 addq $1, %rbx + 0xe9, 0xaf, 0x01, 0x00, 0x00, //0x00001a6c jmp LBB0_153 + //0x00001a71 LBB0_130 + 0x48, 0x83, 0xfb, 0x04, //0x00001a71 cmpq $4, %rbx + 0x0f, 0x8c, 0x9c, 0x3e, 0x00, 0x00, //0x00001a75 jl LBB0_1154 + 0x48, 0x89, 0xf8, //0x00001a7b movq %rdi, %rax + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001a7e movq $32(%rsp), %rcx + 0x4c, 0x8d, 0x79, 0x02, //0x00001a83 leaq $2(%rcx), %r15 + 0x8b, 0x71, 0x02, //0x00001a87 movl $2(%rcx), %esi + 0x89, 0xf2, //0x00001a8a movl %esi, %edx + 0xf7, 0xd2, //0x00001a8c notl %edx + 0x8d, 0xbe, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001a8e leal $-808464432(%rsi), %edi + 0x81, 0xe2, 0x80, 0x80, 0x80, 0x80, //0x00001a94 andl $-2139062144, %edx + 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00001a9a movq $-2, %r13 + 0x85, 0xfa, //0x00001aa1 testl %edi, %edx + 0x0f, 0x85, 0x22, 0x3e, 0x00, 0x00, //0x00001aa3 jne LBB0_1156 + 0x8d, 0xbe, 0x19, 0x19, 0x19, 0x19, //0x00001aa9 leal $421075225(%rsi), %edi + 0x09, 0xf7, //0x00001aaf orl %esi, %edi + 0xf7, 0xc7, 0x80, 0x80, 0x80, 0x80, //0x00001ab1 testl $-2139062144, %edi + 0x0f, 0x85, 0x0e, 0x3e, 0x00, 0x00, //0x00001ab7 jne LBB0_1156 + 0x89, 0xf7, //0x00001abd movl %esi, %edi + 0x81, 0xe7, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001abf andl $2139062143, %edi + 0xb9, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001ac5 movl $-1061109568, %ecx + 0x29, 0xf9, //0x00001aca subl %edi, %ecx + 0x44, 0x8d, 0x97, 0x46, 0x46, 0x46, 0x46, //0x00001acc leal $1179010630(%rdi), %r10d + 0x21, 0xd1, //0x00001ad3 andl %edx, %ecx + 0x44, 0x85, 0xd1, //0x00001ad5 testl %r10d, %ecx + 0x0f, 0x85, 0xed, 0x3d, 0x00, 0x00, //0x00001ad8 jne LBB0_1156 + 0xb9, 0xe0, 0xe0, 0xe0, 0xe0, //0x00001ade movl $-522133280, %ecx + 0x29, 0xf9, //0x00001ae3 subl %edi, %ecx + 0x81, 0xc7, 0x39, 0x39, 0x39, 0x39, //0x00001ae5 addl $960051513, %edi + 0x21, 0xca, //0x00001aeb andl %ecx, %edx + 0x85, 0xfa, //0x00001aed testl %edi, %edx + 0x0f, 0x85, 0x2b, 0x3e, 0x00, 0x00, //0x00001aef jne LBB0_1157 + 0x0f, 0xce, //0x00001af5 bswapl %esi + 0x89, 0xf1, //0x00001af7 movl %esi, %ecx + 0xc1, 0xe9, 0x04, //0x00001af9 shrl $4, %ecx + 0xf7, 0xd1, //0x00001afc notl %ecx + 0x81, 0xe1, 0x01, 0x01, 0x01, 0x01, //0x00001afe andl $16843009, %ecx + 0x8d, 0x0c, 0xc9, //0x00001b04 leal (%rcx,%rcx,8), %ecx + 0x81, 0xe6, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001b07 andl $252645135, %esi + 0x01, 0xce, //0x00001b0d addl %ecx, %esi + 0x89, 0xf2, //0x00001b0f movl %esi, %edx + 0xc1, 0xea, 0x04, //0x00001b11 shrl $4, %edx + 0x09, 0xf2, //0x00001b14 orl %esi, %edx + 0x89, 0xd6, //0x00001b16 movl %edx, %esi + 0xc1, 0xee, 0x08, //0x00001b18 shrl $8, %esi + 0x81, 0xe6, 0x00, 0xff, 0x00, 0x00, //0x00001b1b andl $65280, %esi + 0x0f, 0xb6, 0xfa, //0x00001b21 movzbl %dl, %edi + 0x09, 0xf7, //0x00001b24 orl %esi, %edi + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001b26 movq $32(%rsp), %rcx + 0x4c, 0x8d, 0x79, 0x06, //0x00001b2b leaq $6(%rcx), %r15 + 0x83, 0xff, 0x7f, //0x00001b2f cmpl $127, %edi + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001b32 movabsq $4294977024, %r10 + 0x0f, 0x86, 0xfa, 0x00, 0x00, 0x00, //0x00001b3c jbe LBB0_155 + 0x81, 0xff, 0xff, 0x07, 0x00, 0x00, //0x00001b42 cmpl $2047, %edi + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00001b48 movq $24(%rsp), %r13 + 0x0f, 0x86, 0x01, 0x01, 0x00, 0x00, //0x00001b4d jbe LBB0_156 + 0x89, 0xd1, //0x00001b53 movl %edx, %ecx + 0x81, 0xe1, 0x00, 0x00, 0xf8, 0x00, //0x00001b55 andl $16252928, %ecx + 0x81, 0xf9, 0x00, 0x00, 0xd8, 0x00, //0x00001b5b cmpl $14155776, %ecx + 0x0f, 0x84, 0x0f, 0x01, 0x00, 0x00, //0x00001b61 je LBB0_157 + 0xc1, 0xee, 0x0c, //0x00001b67 shrl $12, %esi + 0x40, 0x80, 0xce, 0xe0, //0x00001b6a orb $-32, %sil + 0x40, 0x88, 0x74, 0x24, 0x40, //0x00001b6e movb %sil, $64(%rsp) + 0xc1, 0xef, 0x06, //0x00001b73 shrl $6, %edi + 0x40, 0x80, 0xe7, 0x3f, //0x00001b76 andb $63, %dil + 0x40, 0x80, 0xcf, 0x80, //0x00001b7a orb $-128, %dil + 0x40, 0x88, 0x7c, 0x24, 0x41, //0x00001b7e movb %dil, $65(%rsp) + 0x80, 0xe2, 0x3f, //0x00001b83 andb $63, %dl + 0x80, 0xca, 0x80, //0x00001b86 orb $-128, %dl + 0x88, 0x54, 0x24, 0x42, //0x00001b89 movb %dl, $66(%rsp) + 0xbb, 0x03, 0x00, 0x00, 0x00, //0x00001b8d movl $3, %ebx + 0x89, 0xf2, //0x00001b92 movl %esi, %edx + //0x00001b94 LBB0_139 + 0x4c, 0x89, 0x7c, 0x24, 0x20, //0x00001b94 movq %r15, $32(%rsp) + //0x00001b99 LBB0_140 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00001b99 movq $40(%rsp), %r15 + //0x00001b9e LBB0_141 + 0x48, 0x89, 0xc7, //0x00001b9e movq %rax, %rdi + //0x00001ba1 LBB0_142 + 0x48, 0x8d, 0x34, 0x1c, //0x00001ba1 leaq (%rsp,%rbx), %rsi + 0x48, 0x83, 0xc6, 0x40, //0x00001ba5 addq $64, %rsi + 0x4c, 0x89, 0xcb, //0x00001ba9 movq %r9, %rbx + 0x4d, 0x39, 0xc1, //0x00001bac cmpq %r8, %r9 + 0x0f, 0x83, 0x58, 0x00, 0x00, 0x00, //0x00001baf jae LBB0_151 + 0x48, 0x8d, 0x44, 0x24, 0x40, //0x00001bb5 leaq $64(%rsp), %rax + 0x48, 0x39, 0xc6, //0x00001bba cmpq %rax, %rsi + 0x0f, 0x86, 0x4a, 0x00, 0x00, 0x00, //0x00001bbd jbe LBB0_151 + 0x38, 0x13, //0x00001bc3 cmpb %dl, (%rbx) + 0x0f, 0x85, 0x42, 0x00, 0x00, 0x00, //0x00001bc5 jne LBB0_151 + 0x49, 0x89, 0xf9, //0x00001bcb movq %rdi, %r9 + 0x48, 0x83, 0xc3, 0x01, //0x00001bce addq $1, %rbx + 0x48, 0x8d, 0x7c, 0x24, 0x41, //0x00001bd2 leaq $65(%rsp), %rdi + //0x00001bd7 LBB0_146 + 0x48, 0x89, 0xfa, //0x00001bd7 movq %rdi, %rdx + 0x4c, 0x39, 0xc3, //0x00001bda cmpq %r8, %rbx + 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00001bdd jae LBB0_150 + 0x48, 0x39, 0xf2, //0x00001be3 cmpq %rsi, %rdx + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x00001be6 jae LBB0_150 + 0x0f, 0xb6, 0x0b, //0x00001bec movzbl (%rbx), %ecx + 0x48, 0x89, 0xd8, //0x00001bef movq %rbx, %rax + 0x48, 0x83, 0xc3, 0x01, //0x00001bf2 addq $1, %rbx + 0x48, 0x8d, 0x7a, 0x01, //0x00001bf6 leaq $1(%rdx), %rdi + 0x3a, 0x0a, //0x00001bfa cmpb (%rdx), %cl + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00001bfc je LBB0_146 + 0x48, 0x89, 0xc3, //0x00001c02 movq %rax, %rbx + //0x00001c05 LBB0_150 + 0x4c, 0x89, 0xcf, //0x00001c05 movq %r9, %rdi + 0xe9, 0x05, 0x00, 0x00, 0x00, //0x00001c08 jmp LBB0_152 + //0x00001c0d LBB0_151 + 0x48, 0x8d, 0x54, 0x24, 0x40, //0x00001c0d leaq $64(%rsp), %rdx + //0x00001c12 LBB0_152 + 0x48, 0x39, 0xf2, //0x00001c12 cmpq %rsi, %rdx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00001c15 movq $32(%rsp), %rax + 0x0f, 0x85, 0x49, 0x02, 0x00, 0x00, //0x00001c1a jne LBB0_371 + //0x00001c20 LBB0_153 + 0x48, 0x89, 0x44, 0x24, 0x20, //0x00001c20 movq %rax, $32(%rsp) + 0x48, 0x39, 0xf8, //0x00001c25 cmpq %rdi, %rax + 0x0f, 0x83, 0xee, 0x01, 0x00, 0x00, //0x00001c28 jae LBB0_169 + 0x4c, 0x39, 0xc3, //0x00001c2e cmpq %r8, %rbx + 0x0f, 0x82, 0xbf, 0xfd, 0xff, 0xff, //0x00001c31 jb LBB0_123 + 0xe9, 0xe0, 0x01, 0x00, 0x00, //0x00001c37 jmp LBB0_169 + //0x00001c3c LBB0_155 + 0x88, 0x54, 0x24, 0x40, //0x00001c3c movb %dl, $64(%rsp) + 0xbb, 0x01, 0x00, 0x00, 0x00, //0x00001c40 movl $1, %ebx + 0x4c, 0x89, 0x7c, 0x24, 0x20, //0x00001c45 movq %r15, $32(%rsp) + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00001c4a movq $24(%rsp), %r13 + 0xe9, 0x45, 0xff, 0xff, 0xff, //0x00001c4f jmp LBB0_140 + //0x00001c54 LBB0_156 + 0xc1, 0xef, 0x06, //0x00001c54 shrl $6, %edi + 0x40, 0x80, 0xcf, 0xc0, //0x00001c57 orb $-64, %dil + 0x40, 0x88, 0x7c, 0x24, 0x40, //0x00001c5b movb %dil, $64(%rsp) + 0x80, 0xe2, 0x3f, //0x00001c60 andb $63, %dl + 0x80, 0xca, 0x80, //0x00001c63 orb $-128, %dl + 0x88, 0x54, 0x24, 0x41, //0x00001c66 movb %dl, $65(%rsp) + 0xbb, 0x02, 0x00, 0x00, 0x00, //0x00001c6a movl $2, %ebx + 0x89, 0xfa, //0x00001c6f movl %edi, %edx + 0xe9, 0x1e, 0xff, 0xff, 0xff, //0x00001c71 jmp LBB0_139 + //0x00001c76 LBB0_157 + 0x49, 0xc7, 0xc5, 0xfc, 0xff, 0xff, 0xff, //0x00001c76 movq $-4, %r13 + 0x48, 0x83, 0xfb, 0x06, //0x00001c7d cmpq $6, %rbx + 0x0f, 0x8c, 0x99, 0x3c, 0x00, 0x00, //0x00001c81 jl LBB0_1157 + 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x00001c87 cmpl $56319, %edi + 0x0f, 0x87, 0x8d, 0x3c, 0x00, 0x00, //0x00001c8d ja LBB0_1157 + 0x41, 0x80, 0x3f, 0x5c, //0x00001c93 cmpb $92, (%r15) + 0x0f, 0x85, 0x83, 0x3c, 0x00, 0x00, //0x00001c97 jne LBB0_1157 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001c9d movq $32(%rsp), %rcx + 0x80, 0x79, 0x07, 0x75, //0x00001ca2 cmpb $117, $7(%rcx) + 0x0f, 0x85, 0x74, 0x3c, 0x00, 0x00, //0x00001ca6 jne LBB0_1157 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001cac movq $32(%rsp), %rcx + 0x4c, 0x8d, 0x79, 0x08, //0x00001cb1 leaq $8(%rcx), %r15 + 0x8b, 0x59, 0x08, //0x00001cb5 movl $8(%rcx), %ebx + 0x89, 0xde, //0x00001cb8 movl %ebx, %esi + 0xf7, 0xd6, //0x00001cba notl %esi + 0x8d, 0x8b, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001cbc leal $-808464432(%rbx), %ecx + 0x81, 0xe6, 0x80, 0x80, 0x80, 0x80, //0x00001cc2 andl $-2139062144, %esi + 0x85, 0xce, //0x00001cc8 testl %ecx, %esi + 0x0f, 0x85, 0xfb, 0x3b, 0x00, 0x00, //0x00001cca jne LBB0_1156 + 0x8d, 0x8b, 0x19, 0x19, 0x19, 0x19, //0x00001cd0 leal $421075225(%rbx), %ecx + 0x09, 0xd9, //0x00001cd6 orl %ebx, %ecx + 0xf7, 0xc1, 0x80, 0x80, 0x80, 0x80, //0x00001cd8 testl $-2139062144, %ecx + 0x0f, 0x85, 0xe7, 0x3b, 0x00, 0x00, //0x00001cde jne LBB0_1156 + 0x89, 0xda, //0x00001ce4 movl %ebx, %edx + 0x81, 0xe2, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001ce6 andl $2139062143, %edx + 0xb9, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001cec movl $-1061109568, %ecx + 0x29, 0xd1, //0x00001cf1 subl %edx, %ecx + 0x44, 0x8d, 0x92, 0x46, 0x46, 0x46, 0x46, //0x00001cf3 leal $1179010630(%rdx), %r10d + 0x21, 0xf1, //0x00001cfa andl %esi, %ecx + 0x44, 0x85, 0xd1, //0x00001cfc testl %r10d, %ecx + 0x0f, 0x85, 0xc6, 0x3b, 0x00, 0x00, //0x00001cff jne LBB0_1156 + 0xb9, 0xe0, 0xe0, 0xe0, 0xe0, //0x00001d05 movl $-522133280, %ecx + 0x29, 0xd1, //0x00001d0a subl %edx, %ecx + 0x81, 0xc2, 0x39, 0x39, 0x39, 0x39, //0x00001d0c addl $960051513, %edx + 0x21, 0xce, //0x00001d12 andl %ecx, %esi + 0x85, 0xd6, //0x00001d14 testl %edx, %esi + 0x0f, 0x85, 0xaf, 0x3b, 0x00, 0x00, //0x00001d16 jne LBB0_1156 + 0x0f, 0xcb, //0x00001d1c bswapl %ebx + 0x89, 0xd9, //0x00001d1e movl %ebx, %ecx + 0xc1, 0xe9, 0x04, //0x00001d20 shrl $4, %ecx + 0xf7, 0xd1, //0x00001d23 notl %ecx + 0x81, 0xe1, 0x01, 0x01, 0x01, 0x01, //0x00001d25 andl $16843009, %ecx + 0x8d, 0x0c, 0xc9, //0x00001d2b leal (%rcx,%rcx,8), %ecx + 0x81, 0xe3, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001d2e andl $252645135, %ebx + 0x01, 0xcb, //0x00001d34 addl %ecx, %ebx + 0x89, 0xde, //0x00001d36 movl %ebx, %esi + 0xc1, 0xee, 0x04, //0x00001d38 shrl $4, %esi + 0x09, 0xde, //0x00001d3b orl %ebx, %esi + 0x89, 0xf1, //0x00001d3d movl %esi, %ecx + 0x81, 0xe1, 0x00, 0x00, 0xfc, 0x00, //0x00001d3f andl $16515072, %ecx + 0x81, 0xf9, 0x00, 0x00, 0xdc, 0x00, //0x00001d45 cmpl $14417920, %ecx + 0x0f, 0x85, 0xcf, 0x3b, 0x00, 0x00, //0x00001d4b jne LBB0_1157 + 0x89, 0xf1, //0x00001d51 movl %esi, %ecx + 0xc1, 0xe9, 0x08, //0x00001d53 shrl $8, %ecx + 0x81, 0xe1, 0x00, 0xff, 0x00, 0x00, //0x00001d56 andl $65280, %ecx + 0x40, 0x0f, 0xb6, 0xd6, //0x00001d5c movzbl %sil, %edx + 0x09, 0xca, //0x00001d60 orl %ecx, %edx + 0xc1, 0xe7, 0x0a, //0x00001d62 shll $10, %edi + 0x8d, 0x0c, 0x3a, //0x00001d65 leal (%rdx,%rdi), %ecx + 0x8d, 0x34, 0x17, //0x00001d68 leal (%rdi,%rdx), %esi + 0x81, 0xc6, 0x00, 0x24, 0xa0, 0xfc, //0x00001d6b addl $-56613888, %esi + 0x89, 0xf2, //0x00001d71 movl %esi, %edx + 0xc1, 0xea, 0x12, //0x00001d73 shrl $18, %edx + 0x80, 0xca, 0xf0, //0x00001d76 orb $-16, %dl + 0x88, 0x54, 0x24, 0x40, //0x00001d79 movb %dl, $64(%rsp) + 0x89, 0xf7, //0x00001d7d movl %esi, %edi + 0xc1, 0xef, 0x0c, //0x00001d7f shrl $12, %edi + 0x40, 0x80, 0xe7, 0x3f, //0x00001d82 andb $63, %dil + 0x40, 0x80, 0xcf, 0x80, //0x00001d86 orb $-128, %dil + 0x40, 0x88, 0x7c, 0x24, 0x41, //0x00001d8a movb %dil, $65(%rsp) + 0xc1, 0xee, 0x06, //0x00001d8f shrl $6, %esi + 0x40, 0x80, 0xe6, 0x3f, //0x00001d92 andb $63, %sil + 0x40, 0x80, 0xce, 0x80, //0x00001d96 orb $-128, %sil + 0x40, 0x88, 0x74, 0x24, 0x42, //0x00001d9a movb %sil, $66(%rsp) + 0x80, 0xe1, 0x3f, //0x00001d9f andb $63, %cl + 0x80, 0xc9, 0x80, //0x00001da2 orb $-128, %cl + 0x88, 0x4c, 0x24, 0x43, //0x00001da5 movb %cl, $67(%rsp) + 0x48, 0x83, 0x44, 0x24, 0x20, 0x0c, //0x00001da9 addq $12, $32(%rsp) + 0xbb, 0x04, 0x00, 0x00, 0x00, //0x00001daf movl $4, %ebx + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00001db4 movq $24(%rsp), %r13 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00001db9 movq $40(%rsp), %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001dbe movabsq $4294977024, %r10 + 0xe9, 0xd1, 0xfd, 0xff, 0xff, //0x00001dc8 jmp LBB0_141 + //0x00001dcd LBB0_167 + 0x4c, 0x01, 0xe1, //0x00001dcd addq %r12, %rcx + 0x48, 0x85, 0xd2, //0x00001dd0 testq %rdx, %rdx + 0x0f, 0x85, 0xb1, 0xe8, 0xff, 0xff, //0x00001dd3 jne LBB0_61 + 0xe9, 0xd9, 0xe8, 0xff, 0xff, //0x00001dd9 jmp LBB0_66 + //0x00001dde LBB0_366 + 0x4c, 0x01, 0xe1, //0x00001dde addq %r12, %rcx + 0x48, 0x85, 0xff, //0x00001de1 testq %rdi, %rdi + 0x0f, 0x85, 0x3e, 0xee, 0xff, 0xff, //0x00001de4 jne LBB0_189 + 0xe9, 0x68, 0xee, 0xff, 0xff, //0x00001dea jmp LBB0_194 + //0x00001def LBB0_367 + 0x4c, 0x29, 0xe0, //0x00001def subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00001df2 addq $1, %rax + 0x49, 0x89, 0x01, //0x00001df6 movq %rax, (%r9) + 0x49, 0x89, 0xc6, //0x00001df9 movq %rax, %r14 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00001dfc movq $40(%rsp), %r15 + 0xe9, 0xe0, 0xf5, 0xff, 0xff, //0x00001e01 jmp LBB0_293 + //0x00001e06 LBB0_368 + 0x4c, 0x01, 0xe1, //0x00001e06 addq %r12, %rcx + 0x48, 0x85, 0xd2, //0x00001e09 testq %rdx, %rdx + 0x0f, 0x85, 0x26, 0xf7, 0xff, 0xff, //0x00001e0c jne LBB0_316 + 0xe9, 0x4e, 0xf7, 0xff, 0xff, //0x00001e12 jmp LBB0_321 + //0x00001e17 LBB0_168 + 0x48, 0x8b, 0x5c, 0x24, 0x38, //0x00001e17 movq $56(%rsp), %rbx + //0x00001e1c LBB0_169 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00001e1c movq $32(%rsp), %rax + 0x48, 0x31, 0xf8, //0x00001e21 xorq %rdi, %rax + 0x4c, 0x31, 0xc3, //0x00001e24 xorq %r8, %rbx + 0x31, 0xd2, //0x00001e27 xorl %edx, %edx + 0x48, 0x09, 0xc3, //0x00001e29 orq %rax, %rbx + 0x0f, 0x94, 0xc2, //0x00001e2c sete %dl + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001e2f movq $8(%rsp), %r9 + 0x49, 0x8b, 0x45, 0x00, //0x00001e34 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00001e38 cmpq %rax, %r14 + 0x0f, 0x82, 0x79, 0xea, 0xff, 0xff, //0x00001e3b jb LBB0_114 + 0xe9, 0xda, 0xec, 0xff, 0xff, //0x00001e41 jmp LBB0_171 + //0x00001e46 LBB0_369 + 0x4c, 0x01, 0xe0, //0x00001e46 addq %r12, %rax + 0x48, 0x85, 0xff, //0x00001e49 testq %rdi, %rdi + 0x0f, 0x85, 0x86, 0xef, 0xff, 0xff, //0x00001e4c jne LBB0_221 + 0xe9, 0xae, 0xef, 0xff, 0xff, //0x00001e52 jmp LBB0_226 + //0x00001e57 LBB0_370 + 0x4d, 0x01, 0xe6, //0x00001e57 addq %r12, %r14 + 0x48, 0x83, 0xf9, 0x10, //0x00001e5a cmpq $16, %rcx + 0x0f, 0x83, 0x7a, 0xf0, 0xff, 0xff, //0x00001e5e jae LBB0_235 + 0xe9, 0xda, 0xf0, 0xff, 0xff, //0x00001e64 jmp LBB0_238 + //0x00001e69 LBB0_371 + 0x31, 0xd2, //0x00001e69 xorl %edx, %edx + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001e6b movq $8(%rsp), %r9 + 0x49, 0x8b, 0x45, 0x00, //0x00001e70 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00001e74 cmpq %rax, %r14 + 0x0f, 0x82, 0x3d, 0xea, 0xff, 0xff, //0x00001e77 jb LBB0_114 + 0xe9, 0x9e, 0xec, 0xff, 0xff, //0x00001e7d jmp LBB0_171 + //0x00001e82 LBB0_372 + 0x4b, 0x8d, 0x04, 0x34, //0x00001e82 leaq (%r12,%r14), %rax + 0xe9, 0x80, 0xf2, 0xff, 0xff, //0x00001e86 jmp LBB0_263 + //0x00001e8b LBB0_373 + 0x49, 0x89, 0xc0, //0x00001e8b movq %rax, %r8 + 0x4c, 0x89, 0xff, //0x00001e8e movq %r15, %rdi + 0x48, 0x83, 0xf8, 0xff, //0x00001e91 cmpq $-1, %rax + 0x0f, 0x85, 0x15, 0x00, 0x00, 0x00, //0x00001e95 jne LBB0_376 + 0x4d, 0x89, 0xf0, //0x00001e9b movq %r14, %r8 + 0x4d, 0x29, 0xe0, //0x00001e9e subq %r12, %r8 + 0x48, 0x0f, 0xbc, 0xc6, //0x00001ea1 bsfq %rsi, %rax + 0x4c, 0x01, 0xc0, //0x00001ea5 addq %r8, %rax + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00001ea8 jmp LBB0_376 + //0x00001ead LBB0_375 + 0x4c, 0x89, 0xff, //0x00001ead movq %r15, %rdi + //0x00001eb0 LBB0_376 + 0x45, 0x89, 0xc8, //0x00001eb0 movl %r9d, %r8d + 0x41, 0xf7, 0xd0, //0x00001eb3 notl %r8d + 0x41, 0x21, 0xf0, //0x00001eb6 andl %esi, %r8d + 0x47, 0x8d, 0x14, 0x00, //0x00001eb9 leal (%r8,%r8), %r10d + 0x47, 0x8d, 0x3c, 0x41, //0x00001ebd leal (%r9,%r8,2), %r15d + 0x41, 0xf7, 0xd2, //0x00001ec1 notl %r10d + 0x41, 0x21, 0xf2, //0x00001ec4 andl %esi, %r10d + 0x41, 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001ec7 andl $-1431655766, %r10d + 0x45, 0x31, 0xc9, //0x00001ece xorl %r9d, %r9d + 0x45, 0x01, 0xc2, //0x00001ed1 addl %r8d, %r10d + 0x41, 0x0f, 0x92, 0xc1, //0x00001ed4 setb %r9b + 0x45, 0x01, 0xd2, //0x00001ed8 addl %r10d, %r10d + 0x41, 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00001edb xorl $1431655765, %r10d + 0x45, 0x21, 0xfa, //0x00001ee2 andl %r15d, %r10d + 0x41, 0xf7, 0xd2, //0x00001ee5 notl %r10d + 0x44, 0x21, 0xd3, //0x00001ee8 andl %r10d, %ebx + 0x49, 0x89, 0xff, //0x00001eeb movq %rdi, %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001eee movabsq $4294977024, %r10 + 0x48, 0x85, 0xdb, //0x00001ef8 testq %rbx, %rbx + 0x0f, 0x85, 0xf0, 0xeb, 0xff, 0xff, //0x00001efb jne LBB0_80 + //0x00001f01 LBB0_377 + 0x49, 0x83, 0xc6, 0x20, //0x00001f01 addq $32, %r14 + 0x48, 0x83, 0xc2, 0xe0, //0x00001f05 addq $-32, %rdx + //0x00001f09 LBB0_378 + 0x4d, 0x85, 0xc9, //0x00001f09 testq %r9, %r9 + 0x0f, 0x85, 0xd3, 0x00, 0x00, 0x00, //0x00001f0c jne LBB0_393 + 0x4c, 0x89, 0xeb, //0x00001f12 movq %r13, %rbx + 0x4d, 0x89, 0xe2, //0x00001f15 movq %r12, %r10 + 0x49, 0xf7, 0xd2, //0x00001f18 notq %r10 + 0x49, 0x89, 0xc0, //0x00001f1b movq %rax, %r8 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001f1e movq $8(%rsp), %r9 + 0x48, 0x85, 0xd2, //0x00001f23 testq %rdx, %rdx + 0x0f, 0x84, 0x86, 0x00, 0x00, 0x00, //0x00001f26 je LBB0_391 + //0x00001f2c LBB0_380 + 0x49, 0x83, 0xc2, 0x01, //0x00001f2c addq $1, %r10 + //0x00001f30 LBB0_381 + 0x31, 0xf6, //0x00001f30 xorl %esi, %esi + //0x00001f32 LBB0_382 + 0x45, 0x0f, 0xb6, 0x0c, 0x36, //0x00001f32 movzbl (%r14,%rsi), %r9d + 0x41, 0x80, 0xf9, 0x22, //0x00001f37 cmpb $34, %r9b + 0x0f, 0x84, 0x65, 0x00, 0x00, 0x00, //0x00001f3b je LBB0_390 + 0x41, 0x80, 0xf9, 0x5c, //0x00001f41 cmpb $92, %r9b + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001f45 je LBB0_387 + 0x48, 0x83, 0xc6, 0x01, //0x00001f4b addq $1, %rsi + 0x48, 0x39, 0xf2, //0x00001f4f cmpq %rsi, %rdx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00001f52 jne LBB0_382 + 0xe9, 0x67, 0x00, 0x00, 0x00, //0x00001f58 jmp LBB0_385 + //0x00001f5d LBB0_387 + 0x48, 0x8d, 0x7a, 0xff, //0x00001f5d leaq $-1(%rdx), %rdi + 0x48, 0x39, 0xf7, //0x00001f61 cmpq %rsi, %rdi + 0x0f, 0x84, 0xfa, 0x39, 0x00, 0x00, //0x00001f64 je LBB0_1161 + 0x4b, 0x8d, 0x3c, 0x32, //0x00001f6a leaq (%r10,%r14), %rdi + 0x48, 0x01, 0xf7, //0x00001f6e addq %rsi, %rdi + 0x49, 0x83, 0xf8, 0xff, //0x00001f71 cmpq $-1, %r8 + 0x48, 0x0f, 0x44, 0xc7, //0x00001f75 cmoveq %rdi, %rax + 0x4c, 0x0f, 0x44, 0xc7, //0x00001f79 cmoveq %rdi, %r8 + 0x49, 0x01, 0xf6, //0x00001f7d addq %rsi, %r14 + 0x49, 0x83, 0xc6, 0x02, //0x00001f80 addq $2, %r14 + 0x48, 0x89, 0xd7, //0x00001f84 movq %rdx, %rdi + 0x48, 0x29, 0xf7, //0x00001f87 subq %rsi, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x00001f8a addq $-2, %rdi + 0x48, 0x83, 0xc2, 0xfe, //0x00001f8e addq $-2, %rdx + 0x48, 0x39, 0xf2, //0x00001f92 cmpq %rsi, %rdx + 0x48, 0x89, 0xfa, //0x00001f95 movq %rdi, %rdx + 0x4c, 0x89, 0xeb, //0x00001f98 movq %r13, %rbx + 0x0f, 0x85, 0x8f, 0xff, 0xff, 0xff, //0x00001f9b jne LBB0_381 + 0xe9, 0x9c, 0x39, 0x00, 0x00, //0x00001fa1 jmp LBB0_389 + //0x00001fa6 LBB0_390 + 0x49, 0x01, 0xf6, //0x00001fa6 addq %rsi, %r14 + 0x49, 0x83, 0xc6, 0x01, //0x00001fa9 addq $1, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001fad movq $8(%rsp), %r9 + //0x00001fb2 LBB0_391 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001fb2 movabsq $4294977024, %r10 + //0x00001fbc LBB0_392 + 0x4d, 0x29, 0xe6, //0x00001fbc subq %r12, %r14 + 0xe9, 0xa5, 0xe8, 0xff, 0xff, //0x00001fbf jmp LBB0_86 + //0x00001fc4 LBB0_385 + 0x41, 0x80, 0xf9, 0x22, //0x00001fc4 cmpb $34, %r9b + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001fc8 movabsq $4294977024, %r10 + 0x0f, 0x85, 0x6a, 0x39, 0x00, 0x00, //0x00001fd2 jne LBB0_389 + 0x49, 0x01, 0xd6, //0x00001fd8 addq %rdx, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00001fdb movq $8(%rsp), %r9 + 0xe9, 0xd7, 0xff, 0xff, 0xff, //0x00001fe0 jmp LBB0_392 + //0x00001fe5 LBB0_393 + 0x48, 0x85, 0xd2, //0x00001fe5 testq %rdx, %rdx + 0x0f, 0x84, 0x76, 0x39, 0x00, 0x00, //0x00001fe8 je LBB0_1161 + 0x4d, 0x89, 0xe2, //0x00001fee movq %r12, %r10 + 0x49, 0xf7, 0xd2, //0x00001ff1 notq %r10 + 0x4f, 0x8d, 0x0c, 0x16, //0x00001ff4 leaq (%r14,%r10), %r9 + 0x48, 0x83, 0xf8, 0xff, //0x00001ff8 cmpq $-1, %rax + 0x49, 0x89, 0xc0, //0x00001ffc movq %rax, %r8 + 0x49, 0x0f, 0x44, 0xc1, //0x00001fff cmoveq %r9, %rax + 0x4d, 0x0f, 0x44, 0xc1, //0x00002003 cmoveq %r9, %r8 + 0x49, 0x83, 0xc6, 0x01, //0x00002007 addq $1, %r14 + 0x48, 0x83, 0xc2, 0xff, //0x0000200b addq $-1, %rdx + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x0000200f movq $8(%rsp), %r9 + 0x4c, 0x89, 0xeb, //0x00002014 movq %r13, %rbx + 0x48, 0x85, 0xd2, //0x00002017 testq %rdx, %rdx + 0x0f, 0x85, 0x0c, 0xff, 0xff, 0xff, //0x0000201a jne LBB0_380 + 0xe9, 0x8d, 0xff, 0xff, 0xff, //0x00002020 jmp LBB0_391 + //0x00002025 LBB0_395 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00002025 movq $24(%rsp), %r13 + 0x4d, 0x8b, 0x75, 0x00, //0x0000202a movq (%r13), %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x0000202e movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x00002033 movq %r14, (%r9) + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002036 movabsq $4294977024, %r10 + 0xe9, 0xa1, 0xf3, 0xff, 0xff, //0x00002040 jmp LBB0_293 + //0x00002045 LBB0_396 + 0x49, 0x8d, 0x40, 0xff, //0x00002045 leaq $-1(%r8), %rax + 0x4c, 0x39, 0xf8, //0x00002049 cmpq %r15, %rax + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000204c jne LBB0_398 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002052 movq $8(%rsp), %r9 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00002057 movq $24(%rsp), %r13 + 0xe9, 0x24, 0xf8, 0xff, 0xff, //0x0000205c jmp LBB0_352 + //0x00002061 LBB0_398 + 0x4b, 0x8d, 0x04, 0x0f, //0x00002061 leaq (%r15,%r9), %rax + 0x48, 0x83, 0xc0, 0x02, //0x00002065 addq $2, %rax + 0x4d, 0x29, 0xf8, //0x00002069 subq %r15, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x0000206c addq $-2, %r8 + 0x4d, 0x89, 0xc7, //0x00002070 movq %r8, %r15 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00002073 movq $24(%rsp), %r13 + 0xe9, 0x8e, 0xf0, 0xff, 0xff, //0x00002078 jmp LBB0_263 + 0x90, 0x90, 0x90, //0x0000207d .p2align 4, 0x90 + //0x00002080 LBB0_399 + 0x80, 0xf9, 0x5b, //0x00002080 cmpb $91, %cl + 0x0f, 0x85, 0x82, 0x2e, 0x00, 0x00, //0x00002083 jne LBB0_1048 + 0x49, 0x8b, 0x47, 0x08, //0x00002089 movq $8(%r15), %rax + 0x4c, 0x8b, 0x00, //0x0000208d movq (%rax), %r8 + 0x4d, 0x85, 0xc0, //0x00002090 testq %r8, %r8 + 0x0f, 0x88, 0xcf, 0x2c, 0x00, 0x00, //0x00002093 js LBB0_649 + 0x49, 0x8b, 0x4d, 0x00, //0x00002099 movq (%r13), %rcx + 0x49, 0x39, 0xce, //0x0000209d cmpq %rcx, %r14 + 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x000020a0 jae LBB0_406 + 0x43, 0x8a, 0x04, 0x34, //0x000020a6 movb (%r12,%r14), %al + 0x3c, 0x0d, //0x000020aa cmpb $13, %al + 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x000020ac je LBB0_406 + 0x3c, 0x20, //0x000020b2 cmpb $32, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000020b4 je LBB0_406 + 0x04, 0xf7, //0x000020ba addb $-9, %al + 0x3c, 0x01, //0x000020bc cmpb $1, %al + 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x000020be jbe LBB0_406 + 0x4c, 0x89, 0xf2, //0x000020c4 movq %r14, %rdx + 0xe9, 0x63, 0x01, 0x00, 0x00, //0x000020c7 jmp LBB0_432 + 0x90, 0x90, 0x90, 0x90, //0x000020cc .p2align 4, 0x90 + //0x000020d0 LBB0_406 + 0x49, 0x8d, 0x56, 0x01, //0x000020d0 leaq $1(%r14), %rdx + 0x48, 0x39, 0xca, //0x000020d4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000020d7 jae LBB0_410 + 0x41, 0x8a, 0x04, 0x14, //0x000020dd movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x000020e1 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000020e3 je LBB0_410 + 0x3c, 0x20, //0x000020e9 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000020eb je LBB0_410 + 0x04, 0xf7, //0x000020f1 addb $-9, %al + 0x3c, 0x01, //0x000020f3 cmpb $1, %al + 0x0f, 0x87, 0x34, 0x01, 0x00, 0x00, //0x000020f5 ja LBB0_432 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000020fb .p2align 4, 0x90 + //0x00002100 LBB0_410 + 0x49, 0x8d, 0x56, 0x02, //0x00002100 leaq $2(%r14), %rdx + 0x48, 0x39, 0xca, //0x00002104 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002107 jae LBB0_414 + 0x41, 0x8a, 0x04, 0x14, //0x0000210d movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x00002111 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002113 je LBB0_414 + 0x3c, 0x20, //0x00002119 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000211b je LBB0_414 + 0x04, 0xf7, //0x00002121 addb $-9, %al + 0x3c, 0x01, //0x00002123 cmpb $1, %al + 0x0f, 0x87, 0x04, 0x01, 0x00, 0x00, //0x00002125 ja LBB0_432 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000212b .p2align 4, 0x90 + //0x00002130 LBB0_414 + 0x49, 0x8d, 0x56, 0x03, //0x00002130 leaq $3(%r14), %rdx + 0x48, 0x39, 0xca, //0x00002134 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002137 jae LBB0_418 + 0x41, 0x8a, 0x04, 0x14, //0x0000213d movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x00002141 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002143 je LBB0_418 + 0x3c, 0x20, //0x00002149 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000214b je LBB0_418 + 0x04, 0xf7, //0x00002151 addb $-9, %al + 0x3c, 0x01, //0x00002153 cmpb $1, %al + 0x0f, 0x87, 0xd4, 0x00, 0x00, 0x00, //0x00002155 ja LBB0_432 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000215b .p2align 4, 0x90 + //0x00002160 LBB0_418 + 0x49, 0x8d, 0x56, 0x04, //0x00002160 leaq $4(%r14), %rdx + 0x48, 0x89, 0xc8, //0x00002164 movq %rcx, %rax + 0x48, 0x29, 0xd0, //0x00002167 subq %rdx, %rax + 0x0f, 0x86, 0xa6, 0x00, 0x00, 0x00, //0x0000216a jbe LBB0_430 + 0x48, 0x83, 0xf8, 0x20, //0x00002170 cmpq $32, %rax + 0x0f, 0x82, 0xef, 0x0e, 0x00, 0x00, //0x00002174 jb LBB0_614 + 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x0000217a movq $-4, %rax + 0x4c, 0x29, 0xf0, //0x00002181 subq %r14, %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002184 .p2align 4, 0x90 + //0x00002190 LBB0_421 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x14, //0x00002190 vmovdqu (%r12,%rdx), %ymm6 + 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x00002196 vpshufb %ymm6, %ymm0, %ymm7 + 0xc5, 0xcd, 0x74, 0xf7, //0x0000219b vpcmpeqb %ymm7, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x0000219f vpmovmskb %ymm6, %esi + 0x83, 0xfe, 0xff, //0x000021a3 cmpl $-1, %esi + 0x0f, 0x85, 0x72, 0x00, 0x00, 0x00, //0x000021a6 jne LBB0_431 + 0x48, 0x83, 0xc2, 0x20, //0x000021ac addq $32, %rdx + 0x48, 0x8d, 0x34, 0x01, //0x000021b0 leaq (%rcx,%rax), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x000021b4 addq $-32, %rsi + 0x48, 0x83, 0xc0, 0xe0, //0x000021b8 addq $-32, %rax + 0x48, 0x83, 0xfe, 0x1f, //0x000021bc cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x000021c0 ja LBB0_421 + 0x4c, 0x89, 0xe2, //0x000021c6 movq %r12, %rdx + 0x48, 0x29, 0xc2, //0x000021c9 subq %rax, %rdx + 0x48, 0x01, 0xc8, //0x000021cc addq %rcx, %rax + 0x48, 0x85, 0xc0, //0x000021cf testq %rax, %rax + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x000021d2 je LBB0_429 + //0x000021d8 LBB0_424 + 0x48, 0x8d, 0x3c, 0x02, //0x000021d8 leaq (%rdx,%rax), %rdi + 0x31, 0xf6, //0x000021dc xorl %esi, %esi + //0x000021de LBB0_425 + 0x0f, 0xbe, 0x1c, 0x32, //0x000021de movsbl (%rdx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x000021e2 cmpl $32, %ebx + 0x0f, 0x87, 0x56, 0x0e, 0x00, 0x00, //0x000021e5 ja LBB0_612 + 0x49, 0x0f, 0xa3, 0xda, //0x000021eb btq %rbx, %r10 + 0x0f, 0x83, 0x4c, 0x0e, 0x00, 0x00, //0x000021ef jae LBB0_612 + 0x48, 0x83, 0xc6, 0x01, //0x000021f5 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x000021f9 cmpq %rsi, %rax + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000021fc jne LBB0_425 + 0x48, 0x89, 0xfa, //0x00002202 movq %rdi, %rdx + //0x00002205 LBB0_429 + 0x4c, 0x29, 0xe2, //0x00002205 subq %r12, %rdx + 0x48, 0x39, 0xca, //0x00002208 cmpq %rcx, %rdx + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x0000220b jb LBB0_432 + 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00002211 jmp LBB0_433 + //0x00002216 LBB0_430 + 0x49, 0x89, 0xd6, //0x00002216 movq %rdx, %r14 + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00002219 jmp LBB0_433 + //0x0000221e LBB0_431 + 0xf7, 0xd6, //0x0000221e notl %esi + 0x0f, 0xbc, 0xd6, //0x00002220 bsfl %esi, %edx + 0x48, 0x29, 0xc2, //0x00002223 subq %rax, %rdx + 0x48, 0x39, 0xca, //0x00002226 cmpq %rcx, %rdx + 0x0f, 0x83, 0x12, 0x00, 0x00, 0x00, //0x00002229 jae LBB0_433 + //0x0000222f LBB0_432 + 0x4c, 0x8d, 0x72, 0x01, //0x0000222f leaq $1(%rdx), %r14 + 0x4d, 0x89, 0x31, //0x00002233 movq %r14, (%r9) + 0x41, 0x80, 0x3c, 0x14, 0x5d, //0x00002236 cmpb $93, (%r12,%rdx) + 0x0f, 0x84, 0x86, 0x10, 0x00, 0x00, //0x0000223b je LBB0_647 + //0x00002241 LBB0_433 + 0x49, 0x83, 0xc6, 0xff, //0x00002241 addq $-1, %r14 + 0x4d, 0x89, 0x31, //0x00002245 movq %r14, (%r9) + 0x4d, 0x85, 0xc0, //0x00002248 testq %r8, %r8 + 0x0f, 0x8e, 0xbf, 0x0d, 0x00, 0x00, //0x0000224b jle LBB0_537 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002251 .p2align 4, 0x90 + //0x00002260 LBB0_434 + 0x49, 0x8b, 0x55, 0x00, //0x00002260 movq (%r13), %rdx + 0x49, 0x39, 0xd6, //0x00002264 cmpq %rdx, %r14 + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00002267 jae LBB0_439 + 0x43, 0x8a, 0x04, 0x34, //0x0000226d movb (%r12,%r14), %al + 0x3c, 0x0d, //0x00002271 cmpb $13, %al + 0x0f, 0x84, 0x27, 0x00, 0x00, 0x00, //0x00002273 je LBB0_439 + 0x3c, 0x20, //0x00002279 cmpb $32, %al + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x0000227b je LBB0_439 + 0x04, 0xf7, //0x00002281 addb $-9, %al + 0x3c, 0x01, //0x00002283 cmpb $1, %al + 0x0f, 0x86, 0x15, 0x00, 0x00, 0x00, //0x00002285 jbe LBB0_439 + 0x4c, 0x89, 0xf1, //0x0000228b movq %r14, %rcx + 0xe9, 0x6e, 0x01, 0x00, 0x00, //0x0000228e jmp LBB0_464 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002293 .p2align 4, 0x90 + //0x000022a0 LBB0_439 + 0x49, 0x8d, 0x4e, 0x01, //0x000022a0 leaq $1(%r14), %rcx + 0x48, 0x39, 0xd1, //0x000022a4 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000022a7 jae LBB0_443 + 0x41, 0x8a, 0x04, 0x0c, //0x000022ad movb (%r12,%rcx), %al + 0x3c, 0x0d, //0x000022b1 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000022b3 je LBB0_443 + 0x3c, 0x20, //0x000022b9 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000022bb je LBB0_443 + 0x04, 0xf7, //0x000022c1 addb $-9, %al + 0x3c, 0x01, //0x000022c3 cmpb $1, %al + 0x0f, 0x87, 0x36, 0x01, 0x00, 0x00, //0x000022c5 ja LBB0_464 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000022cb .p2align 4, 0x90 + //0x000022d0 LBB0_443 + 0x49, 0x8d, 0x4e, 0x02, //0x000022d0 leaq $2(%r14), %rcx + 0x48, 0x39, 0xd1, //0x000022d4 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000022d7 jae LBB0_447 + 0x41, 0x8a, 0x04, 0x0c, //0x000022dd movb (%r12,%rcx), %al + 0x3c, 0x0d, //0x000022e1 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000022e3 je LBB0_447 + 0x3c, 0x20, //0x000022e9 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000022eb je LBB0_447 + 0x04, 0xf7, //0x000022f1 addb $-9, %al + 0x3c, 0x01, //0x000022f3 cmpb $1, %al + 0x0f, 0x87, 0x06, 0x01, 0x00, 0x00, //0x000022f5 ja LBB0_464 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000022fb .p2align 4, 0x90 + //0x00002300 LBB0_447 + 0x49, 0x8d, 0x4e, 0x03, //0x00002300 leaq $3(%r14), %rcx + 0x48, 0x39, 0xd1, //0x00002304 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002307 jae LBB0_451 + 0x41, 0x8a, 0x04, 0x0c, //0x0000230d movb (%r12,%rcx), %al + 0x3c, 0x0d, //0x00002311 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002313 je LBB0_451 + 0x3c, 0x20, //0x00002319 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000231b je LBB0_451 + 0x04, 0xf7, //0x00002321 addb $-9, %al + 0x3c, 0x01, //0x00002323 cmpb $1, %al + 0x0f, 0x87, 0xd6, 0x00, 0x00, 0x00, //0x00002325 ja LBB0_464 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000232b .p2align 4, 0x90 + //0x00002330 LBB0_451 + 0x49, 0x8d, 0x4e, 0x04, //0x00002330 leaq $4(%r14), %rcx + 0x48, 0x89, 0xd0, //0x00002334 movq %rdx, %rax + 0x48, 0x29, 0xc8, //0x00002337 subq %rcx, %rax + 0x0f, 0x86, 0xd0, 0x03, 0x00, 0x00, //0x0000233a jbe LBB0_504 + 0x48, 0x83, 0xf8, 0x20, //0x00002340 cmpq $32, %rax + 0x0f, 0x82, 0x52, 0x0c, 0x00, 0x00, //0x00002344 jb LBB0_605 + 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x0000234a movq $-4, %rax + 0x4c, 0x29, 0xf0, //0x00002351 subq %r14, %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002354 .p2align 4, 0x90 + //0x00002360 LBB0_454 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x0c, //0x00002360 vmovdqu (%r12,%rcx), %ymm6 + 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x00002366 vpshufb %ymm6, %ymm0, %ymm7 + 0xc5, 0xcd, 0x74, 0xf7, //0x0000236b vpcmpeqb %ymm7, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x0000236f vpmovmskb %ymm6, %esi + 0x83, 0xfe, 0xff, //0x00002373 cmpl $-1, %esi + 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00002376 jne LBB0_463 + 0x48, 0x83, 0xc1, 0x20, //0x0000237c addq $32, %rcx + 0x48, 0x8d, 0x34, 0x02, //0x00002380 leaq (%rdx,%rax), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00002384 addq $-32, %rsi + 0x48, 0x83, 0xc0, 0xe0, //0x00002388 addq $-32, %rax + 0x48, 0x83, 0xfe, 0x1f, //0x0000238c cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00002390 ja LBB0_454 + 0x4c, 0x89, 0xe1, //0x00002396 movq %r12, %rcx + 0x48, 0x29, 0xc1, //0x00002399 subq %rax, %rcx + 0x48, 0x01, 0xd0, //0x0000239c addq %rdx, %rax + 0x48, 0x85, 0xc0, //0x0000239f testq %rax, %rax + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x000023a2 je LBB0_462 + //0x000023a8 LBB0_457 + 0x48, 0x8d, 0x3c, 0x01, //0x000023a8 leaq (%rcx,%rax), %rdi + 0x31, 0xf6, //0x000023ac xorl %esi, %esi + //0x000023ae LBB0_458 + 0x0f, 0xbe, 0x1c, 0x31, //0x000023ae movsbl (%rcx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x000023b2 cmpl $32, %ebx + 0x0f, 0x87, 0x1d, 0x0b, 0x00, 0x00, //0x000023b5 ja LBB0_601 + 0x49, 0x0f, 0xa3, 0xda, //0x000023bb btq %rbx, %r10 + 0x0f, 0x83, 0x13, 0x0b, 0x00, 0x00, //0x000023bf jae LBB0_601 + 0x48, 0x83, 0xc6, 0x01, //0x000023c5 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x000023c9 cmpq %rsi, %rax + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000023cc jne LBB0_458 + 0x48, 0x89, 0xf9, //0x000023d2 movq %rdi, %rcx + //0x000023d5 LBB0_462 + 0x4c, 0x29, 0xe1, //0x000023d5 subq %r12, %rcx + 0x48, 0x39, 0xd1, //0x000023d8 cmpq %rdx, %rcx + 0x0f, 0x82, 0x20, 0x00, 0x00, 0x00, //0x000023db jb LBB0_464 + 0xe9, 0x30, 0x03, 0x00, 0x00, //0x000023e1 jmp LBB0_505 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023e6 .p2align 4, 0x90 + //0x000023f0 LBB0_463 + 0xf7, 0xd6, //0x000023f0 notl %esi + 0x0f, 0xbc, 0xce, //0x000023f2 bsfl %esi, %ecx + 0x48, 0x29, 0xc1, //0x000023f5 subq %rax, %rcx + 0x48, 0x39, 0xd1, //0x000023f8 cmpq %rdx, %rcx + 0x0f, 0x83, 0x15, 0x03, 0x00, 0x00, //0x000023fb jae LBB0_505 + //0x00002401 LBB0_464 + 0x4c, 0x8d, 0x71, 0x01, //0x00002401 leaq $1(%rcx), %r14 + 0x4d, 0x89, 0x31, //0x00002405 movq %r14, (%r9) + 0x41, 0x0f, 0xbe, 0x04, 0x0c, //0x00002408 movsbl (%r12,%rcx), %eax + 0x83, 0xf8, 0x7b, //0x0000240d cmpl $123, %eax + 0x0f, 0x87, 0xfa, 0x02, 0x00, 0x00, //0x00002410 ja LBB0_504 + 0x48, 0x8d, 0x15, 0x7b, 0x35, 0x00, 0x00, //0x00002416 leaq $13691(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x04, 0x82, //0x0000241d movslq (%rdx,%rax,4), %rax + 0x48, 0x01, 0xd0, //0x00002421 addq %rdx, %rax + 0xff, 0xe0, //0x00002424 jmpq *%rax + //0x00002426 LBB0_466 + 0x4d, 0x8b, 0x4d, 0x00, //0x00002426 movq (%r13), %r9 + 0x4c, 0x89, 0xca, //0x0000242a movq %r9, %rdx + 0x4c, 0x29, 0xf2, //0x0000242d subq %r14, %rdx + 0x48, 0x83, 0xfa, 0x20, //0x00002430 cmpq $32, %rdx + 0x0f, 0x82, 0x73, 0x0b, 0x00, 0x00, //0x00002434 jb LBB0_606 + 0x48, 0x89, 0xce, //0x0000243a movq %rcx, %rsi + 0x48, 0xf7, 0xd6, //0x0000243d notq %rsi + 0x48, 0x8d, 0x59, 0x01, //0x00002440 leaq $1(%rcx), %rbx + 0x48, 0x8d, 0x51, 0x02, //0x00002444 leaq $2(%rcx), %rdx + 0x49, 0x8d, 0x3c, 0x0c, //0x00002448 leaq (%r12,%rcx), %rdi + 0x90, 0x90, 0x90, 0x90, //0x0000244c .p2align 4, 0x90 + //0x00002450 LBB0_468 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x1c, //0x00002450 vmovdqu (%r12,%rbx), %ymm6 + 0xc5, 0xcd, 0x74, 0xfb, //0x00002456 vpcmpeqb %ymm3, %ymm6, %ymm7 + 0xc5, 0xcd, 0xdb, 0xf4, //0x0000245a vpand %ymm4, %ymm6, %ymm6 + 0xc5, 0xcd, 0x74, 0xf5, //0x0000245e vpcmpeqb %ymm5, %ymm6, %ymm6 + 0xc5, 0xcd, 0xeb, 0xf7, //0x00002462 vpor %ymm7, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x00002466 vpmovmskb %ymm6, %eax + 0x85, 0xc0, //0x0000246a testl %eax, %eax + 0x0f, 0x85, 0x1e, 0x01, 0x00, 0x00, //0x0000246c jne LBB0_483 + 0x48, 0x83, 0xc3, 0x20, //0x00002472 addq $32, %rbx + 0x49, 0x8d, 0x04, 0x31, //0x00002476 leaq (%r9,%rsi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x0000247a addq $-32, %rax + 0x48, 0x83, 0xc6, 0xe0, //0x0000247e addq $-32, %rsi + 0x48, 0x83, 0xc2, 0x20, //0x00002482 addq $32, %rdx + 0x48, 0x83, 0xc1, 0x20, //0x00002486 addq $32, %rcx + 0x48, 0x83, 0xc7, 0x20, //0x0000248a addq $32, %rdi + 0x48, 0x83, 0xf8, 0x1f, //0x0000248e cmpq $31, %rax + 0x0f, 0x87, 0xb8, 0xff, 0xff, 0xff, //0x00002492 ja LBB0_468 + 0x4d, 0x89, 0xe6, //0x00002498 movq %r12, %r14 + 0x49, 0x29, 0xf6, //0x0000249b subq %rsi, %r14 + 0x49, 0x01, 0xf1, //0x0000249e addq %rsi, %r9 + 0x4c, 0x89, 0xca, //0x000024a1 movq %r9, %rdx + 0x48, 0x83, 0xfa, 0x10, //0x000024a4 cmpq $16, %rdx + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000024a8 movq $8(%rsp), %r9 + 0x0f, 0x82, 0x68, 0x00, 0x00, 0x00, //0x000024ad jb LBB0_474 + //0x000024b3 LBB0_471 + 0x4c, 0x89, 0xe0, //0x000024b3 movq %r12, %rax + 0x4c, 0x29, 0xf0, //0x000024b6 subq %r14, %rax + 0x4c, 0x89, 0xf1, //0x000024b9 movq %r14, %rcx + 0x4c, 0x29, 0xe1, //0x000024bc subq %r12, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000024bf addq $1, %rcx + 0x49, 0x8d, 0x5e, 0xff, //0x000024c3 leaq $-1(%r14), %rbx + 0x48, 0x89, 0xdf, //0x000024c7 movq %rbx, %rdi + 0x4c, 0x29, 0xe7, //0x000024ca subq %r12, %rdi + 0x90, 0x90, 0x90, //0x000024cd .p2align 4, 0x90 + //0x000024d0 LBB0_472 + 0xc4, 0xc1, 0x7a, 0x6f, 0x36, //0x000024d0 vmovdqu (%r14), %xmm6 + 0xc5, 0xc9, 0x74, 0x3d, 0x03, 0xdd, 0xff, 0xff, //0x000024d5 vpcmpeqb $-8957(%rip), %xmm6, %xmm7 /* LCPI0_4+0(%rip) */ + 0xc5, 0xc9, 0xdb, 0x35, 0x0b, 0xdd, 0xff, 0xff, //0x000024dd vpand $-8949(%rip), %xmm6, %xmm6 /* LCPI0_5+0(%rip) */ + 0xc5, 0xb9, 0x74, 0xf6, //0x000024e5 vpcmpeqb %xmm6, %xmm8, %xmm6 + 0xc5, 0xc9, 0xeb, 0xf7, //0x000024e9 vpor %xmm7, %xmm6, %xmm6 + 0xc5, 0xf9, 0xd7, 0xf6, //0x000024ed vpmovmskb %xmm6, %esi + 0x85, 0xf6, //0x000024f1 testl %esi, %esi + 0x0f, 0x85, 0x62, 0x09, 0x00, 0x00, //0x000024f3 jne LBB0_595 + 0x49, 0x83, 0xc6, 0x10, //0x000024f9 addq $16, %r14 + 0x48, 0x83, 0xc2, 0xf0, //0x000024fd addq $-16, %rdx + 0x48, 0x83, 0xc0, 0xf0, //0x00002501 addq $-16, %rax + 0x48, 0x83, 0xc1, 0x10, //0x00002505 addq $16, %rcx + 0x48, 0x83, 0xc7, 0x10, //0x00002509 addq $16, %rdi + 0x48, 0x83, 0xc3, 0x10, //0x0000250d addq $16, %rbx + 0x48, 0x83, 0xfa, 0x0f, //0x00002511 cmpq $15, %rdx + 0x0f, 0x87, 0xb5, 0xff, 0xff, 0xff, //0x00002515 ja LBB0_472 + //0x0000251b LBB0_474 + 0x48, 0x85, 0xd2, //0x0000251b testq %rdx, %rdx + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x0000251e je LBB0_482 + 0x49, 0x8d, 0x04, 0x16, //0x00002524 leaq (%r14,%rdx), %rax + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00002528 movabsq $17596481021440, %rsi + //0x00002532 LBB0_476 + 0x41, 0x0f, 0xb6, 0x0e, //0x00002532 movzbl (%r14), %ecx + 0x48, 0x83, 0xf9, 0x2c, //0x00002536 cmpq $44, %rcx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x0000253a ja LBB0_478 + 0x48, 0x0f, 0xa3, 0xce, //0x00002540 btq %rcx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00002544 jb LBB0_482 + //0x0000254a LBB0_478 + 0x80, 0xf9, 0x5d, //0x0000254a cmpb $93, %cl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x0000254d je LBB0_482 + 0x80, 0xf9, 0x7d, //0x00002553 cmpb $125, %cl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00002556 je LBB0_482 + 0x49, 0x83, 0xc6, 0x01, //0x0000255c addq $1, %r14 + 0x48, 0x83, 0xc2, 0xff, //0x00002560 addq $-1, %rdx + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x00002564 jne LBB0_476 + 0x49, 0x89, 0xc6, //0x0000256a movq %rax, %r14 + //0x0000256d LBB0_482 + 0x4d, 0x29, 0xe6, //0x0000256d subq %r12, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002570 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x00002575 movq %r14, (%r9) + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002578 movabsq $4294977024, %r10 + 0xe9, 0x8f, 0x01, 0x00, 0x00, //0x00002582 jmp LBB0_505 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002587 .p2align 4, 0x90 + //0x00002590 LBB0_483 + 0x0f, 0xbc, 0xc0, //0x00002590 bsfl %eax, %eax + 0x49, 0x89, 0xc6, //0x00002593 movq %rax, %r14 + 0x49, 0x29, 0xf6, //0x00002596 subq %rsi, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002599 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x0000259e movq %r14, (%r9) + 0x4d, 0x85, 0xf6, //0x000025a1 testq %r14, %r14 + 0x0f, 0x8e, 0x6c, 0x01, 0x00, 0x00, //0x000025a4 jle LBB0_505 + 0x48, 0x01, 0xc2, //0x000025aa addq %rax, %rdx + 0x48, 0x01, 0xc1, //0x000025ad addq %rax, %rcx + 0x48, 0x01, 0xc7, //0x000025b0 addq %rax, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000025b3 .p2align 4, 0x90 + //0x000025c0 LBB0_485 + 0x0f, 0xb6, 0x07, //0x000025c0 movzbl (%rdi), %eax + 0x48, 0x83, 0xf8, 0x20, //0x000025c3 cmpq $32, %rax + 0x0f, 0x87, 0x49, 0x01, 0x00, 0x00, //0x000025c7 ja LBB0_505 + 0x49, 0x0f, 0xa3, 0xc2, //0x000025cd btq %rax, %r10 + 0x0f, 0x83, 0x3f, 0x01, 0x00, 0x00, //0x000025d1 jae LBB0_505 + 0x49, 0x89, 0x09, //0x000025d7 movq %rcx, (%r9) + 0x48, 0x83, 0xc2, 0xff, //0x000025da addq $-1, %rdx + 0x48, 0x83, 0xc1, 0xff, //0x000025de addq $-1, %rcx + 0x48, 0x83, 0xc7, 0xff, //0x000025e2 addq $-1, %rdi + 0x49, 0x83, 0xc6, 0xff, //0x000025e6 addq $-1, %r14 + 0x48, 0x83, 0xfa, 0x01, //0x000025ea cmpq $1, %rdx + 0x0f, 0x8f, 0xcc, 0xff, 0xff, 0xff, //0x000025ee jg LBB0_485 + 0x45, 0x31, 0xf6, //0x000025f4 xorl %r14d, %r14d + 0xe9, 0x1a, 0x01, 0x00, 0x00, //0x000025f7 jmp LBB0_505 + //0x000025fc LBB0_489 + 0x48, 0x83, 0xc1, 0x04, //0x000025fc addq $4, %rcx + 0x49, 0x3b, 0x4d, 0x00, //0x00002600 cmpq (%r13), %rcx + 0x0f, 0x86, 0x06, 0x01, 0x00, 0x00, //0x00002604 jbe LBB0_504 + 0xe9, 0x07, 0x01, 0x00, 0x00, //0x0000260a jmp LBB0_505 + //0x0000260f LBB0_490 + 0x4c, 0x89, 0x7c, 0x24, 0x28, //0x0000260f movq %r15, $40(%rsp) + 0x4c, 0x89, 0x6c, 0x24, 0x18, //0x00002614 movq %r13, $24(%rsp) + 0x4d, 0x8b, 0x4d, 0x00, //0x00002619 movq (%r13), %r9 + 0x4d, 0x89, 0xcd, //0x0000261d movq %r9, %r13 + 0x4d, 0x29, 0xf5, //0x00002620 subq %r14, %r13 + 0x49, 0x83, 0xfd, 0x20, //0x00002623 cmpq $32, %r13 + 0x0f, 0x8c, 0x97, 0x09, 0x00, 0x00, //0x00002627 jl LBB0_607 + 0x4d, 0x8d, 0x14, 0x0c, //0x0000262d leaq (%r12,%rcx), %r10 + 0x49, 0x29, 0xc9, //0x00002631 subq %rcx, %r9 + 0xb8, 0x1f, 0x00, 0x00, 0x00, //0x00002634 movl $31, %eax + 0x45, 0x31, 0xed, //0x00002639 xorl %r13d, %r13d + 0x45, 0x31, 0xff, //0x0000263c xorl %r15d, %r15d + 0xe9, 0x60, 0x00, 0x00, 0x00, //0x0000263f jmp LBB0_492 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002644 .p2align 4, 0x90 + //0x00002650 LBB0_497 + 0x44, 0x89, 0xfe, //0x00002650 movl %r15d, %esi + 0xf7, 0xd6, //0x00002653 notl %esi + 0x21, 0xde, //0x00002655 andl %ebx, %esi + 0x8d, 0x14, 0x36, //0x00002657 leal (%rsi,%rsi), %edx + 0x44, 0x09, 0xfa, //0x0000265a orl %r15d, %edx + 0x89, 0xd7, //0x0000265d movl %edx, %edi + 0xf7, 0xd7, //0x0000265f notl %edi + 0x21, 0xdf, //0x00002661 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002663 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00002669 xorl %r15d, %r15d + 0x01, 0xf7, //0x0000266c addl %esi, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x0000266e setb %r15b + 0x01, 0xff, //0x00002672 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002674 xorl $1431655765, %edi + 0x21, 0xd7, //0x0000267a andl %edx, %edi + 0xf7, 0xd7, //0x0000267c notl %edi + 0x41, 0x21, 0xfb, //0x0000267e andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00002681 testq %r11, %r11 + 0x0f, 0x85, 0x4e, 0x00, 0x00, 0x00, //0x00002684 jne LBB0_495 + //0x0000268a LBB0_498 + 0x49, 0x83, 0xc5, 0x20, //0x0000268a addq $32, %r13 + 0x49, 0x8d, 0x14, 0x01, //0x0000268e leaq (%r9,%rax), %rdx + 0x48, 0x83, 0xc2, 0xe0, //0x00002692 addq $-32, %rdx + 0x48, 0x83, 0xc0, 0xe0, //0x00002696 addq $-32, %rax + 0x48, 0x83, 0xfa, 0x3f, //0x0000269a cmpq $63, %rdx + 0x0f, 0x8e, 0x48, 0x08, 0x00, 0x00, //0x0000269e jle LBB0_499 + //0x000026a4 LBB0_492 + 0xc4, 0x81, 0x7e, 0x6f, 0x74, 0x2a, 0x01, //0x000026a4 vmovdqu $1(%r10,%r13), %ymm6 + 0xc5, 0xcd, 0x74, 0xf9, //0x000026ab vpcmpeqb %ymm1, %ymm6, %ymm7 + 0xc5, 0x7d, 0xd7, 0xdf, //0x000026af vpmovmskb %ymm7, %r11d + 0xc5, 0xcd, 0x74, 0xf2, //0x000026b3 vpcmpeqb %ymm2, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xde, //0x000026b7 vpmovmskb %ymm6, %ebx + 0x85, 0xdb, //0x000026bb testl %ebx, %ebx + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x000026bd jne LBB0_497 + 0x4d, 0x85, 0xff, //0x000026c3 testq %r15, %r15 + 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x000026c6 jne LBB0_497 + 0x45, 0x31, 0xff, //0x000026cc xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x000026cf testq %r11, %r11 + 0x0f, 0x84, 0xb2, 0xff, 0xff, 0xff, //0x000026d2 je LBB0_498 + //0x000026d8 LBB0_495 + 0x41, 0x0f, 0xbc, 0xc3, //0x000026d8 bsfl %r11d, %eax + 0x48, 0x01, 0xc8, //0x000026dc addq %rcx, %rax + 0x4e, 0x8d, 0x34, 0x28, //0x000026df leaq (%rax,%r13), %r14 + 0x49, 0x83, 0xc6, 0x02, //0x000026e3 addq $2, %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000026e7 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x31, //0x000026ec movq %r14, (%r9) + //0x000026ef LBB0_496 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x000026ef movq $24(%rsp), %r13 + 0xe9, 0x4e, 0x07, 0x00, 0x00, //0x000026f4 jmp LBB0_590 + //0x000026f9 LBB0_503 + 0x48, 0x83, 0xc1, 0x05, //0x000026f9 addq $5, %rcx + 0x49, 0x3b, 0x4d, 0x00, //0x000026fd cmpq (%r13), %rcx + 0x0f, 0x87, 0x0f, 0x00, 0x00, 0x00, //0x00002701 ja LBB0_505 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002707 .p2align 4, 0x90 + //0x00002710 LBB0_504 + 0x49, 0x89, 0x09, //0x00002710 movq %rcx, (%r9) + 0x49, 0x89, 0xce, //0x00002713 movq %rcx, %r14 + //0x00002716 LBB0_505 + 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, //0x00002716 movq $144(%rsp), %rax + 0x4c, 0x8b, 0x20, //0x0000271e movq (%rax), %r12 + 0x48, 0x8b, 0x48, 0x08, //0x00002721 movq $8(%rax), %rcx + 0x49, 0x39, 0xce, //0x00002725 cmpq %rcx, %r14 + 0x0f, 0x83, 0x32, 0x00, 0x00, 0x00, //0x00002728 jae LBB0_510 + 0x43, 0x8a, 0x04, 0x34, //0x0000272e movb (%r12,%r14), %al + 0x3c, 0x0d, //0x00002732 cmpb $13, %al + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002734 je LBB0_510 + 0x3c, 0x20, //0x0000273a cmpb $32, %al + 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x0000273c je LBB0_510 + 0x04, 0xf7, //0x00002742 addb $-9, %al + 0x3c, 0x01, //0x00002744 cmpb $1, %al + 0x0f, 0x86, 0x14, 0x00, 0x00, 0x00, //0x00002746 jbe LBB0_510 + 0x4c, 0x89, 0xf2, //0x0000274c movq %r14, %rdx + 0xe9, 0x6d, 0x01, 0x00, 0x00, //0x0000274f jmp LBB0_535 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002754 .p2align 4, 0x90 + //0x00002760 LBB0_510 + 0x49, 0x8d, 0x56, 0x01, //0x00002760 leaq $1(%r14), %rdx + 0x48, 0x39, 0xca, //0x00002764 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002767 jae LBB0_514 + 0x41, 0x8a, 0x04, 0x14, //0x0000276d movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x00002771 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00002773 je LBB0_514 + 0x3c, 0x20, //0x00002779 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x0000277b je LBB0_514 + 0x04, 0xf7, //0x00002781 addb $-9, %al + 0x3c, 0x01, //0x00002783 cmpb $1, %al + 0x0f, 0x87, 0x36, 0x01, 0x00, 0x00, //0x00002785 ja LBB0_535 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000278b .p2align 4, 0x90 + //0x00002790 LBB0_514 + 0x49, 0x8d, 0x56, 0x02, //0x00002790 leaq $2(%r14), %rdx + 0x48, 0x39, 0xca, //0x00002794 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002797 jae LBB0_518 + 0x41, 0x8a, 0x04, 0x14, //0x0000279d movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x000027a1 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000027a3 je LBB0_518 + 0x3c, 0x20, //0x000027a9 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000027ab je LBB0_518 + 0x04, 0xf7, //0x000027b1 addb $-9, %al + 0x3c, 0x01, //0x000027b3 cmpb $1, %al + 0x0f, 0x87, 0x06, 0x01, 0x00, 0x00, //0x000027b5 ja LBB0_535 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000027bb .p2align 4, 0x90 + //0x000027c0 LBB0_518 + 0x49, 0x8d, 0x56, 0x03, //0x000027c0 leaq $3(%r14), %rdx + 0x48, 0x39, 0xca, //0x000027c4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000027c7 jae LBB0_522 + 0x41, 0x8a, 0x04, 0x14, //0x000027cd movb (%r12,%rdx), %al + 0x3c, 0x0d, //0x000027d1 cmpb $13, %al + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000027d3 je LBB0_522 + 0x3c, 0x20, //0x000027d9 cmpb $32, %al + 0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000027db je LBB0_522 + 0x04, 0xf7, //0x000027e1 addb $-9, %al + 0x3c, 0x01, //0x000027e3 cmpb $1, %al + 0x0f, 0x87, 0xd6, 0x00, 0x00, 0x00, //0x000027e5 ja LBB0_535 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000027eb .p2align 4, 0x90 + //0x000027f0 LBB0_522 + 0x49, 0x8d, 0x56, 0x04, //0x000027f0 leaq $4(%r14), %rdx + 0x48, 0x89, 0xc8, //0x000027f4 movq %rcx, %rax + 0x48, 0x29, 0xd0, //0x000027f7 subq %rdx, %rax + 0x0f, 0x86, 0x08, 0x27, 0x00, 0x00, //0x000027fa jbe LBB0_1038 + 0x48, 0x83, 0xf8, 0x20, //0x00002800 cmpq $32, %rax + 0x0f, 0x82, 0x81, 0x07, 0x00, 0x00, //0x00002804 jb LBB0_603 + 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x0000280a movq $-4, %rax + 0x4c, 0x29, 0xf0, //0x00002811 subq %r14, %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002814 .p2align 4, 0x90 + //0x00002820 LBB0_525 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x14, //0x00002820 vmovdqu (%r12,%rdx), %ymm6 + 0xc4, 0xe2, 0x7d, 0x00, 0xfe, //0x00002826 vpshufb %ymm6, %ymm0, %ymm7 + 0xc5, 0xcd, 0x74, 0xf7, //0x0000282b vpcmpeqb %ymm7, %ymm6, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x0000282f vpmovmskb %ymm6, %esi + 0x83, 0xfe, 0xff, //0x00002833 cmpl $-1, %esi + 0x0f, 0x85, 0x74, 0x00, 0x00, 0x00, //0x00002836 jne LBB0_534 + 0x48, 0x83, 0xc2, 0x20, //0x0000283c addq $32, %rdx + 0x48, 0x8d, 0x34, 0x01, //0x00002840 leaq (%rcx,%rax), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x00002844 addq $-32, %rsi + 0x48, 0x83, 0xc0, 0xe0, //0x00002848 addq $-32, %rax + 0x48, 0x83, 0xfe, 0x1f, //0x0000284c cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00002850 ja LBB0_525 + 0x4c, 0x89, 0xe2, //0x00002856 movq %r12, %rdx + 0x48, 0x29, 0xc2, //0x00002859 subq %rax, %rdx + 0x48, 0x01, 0xc8, //0x0000285c addq %rcx, %rax + 0x48, 0x85, 0xc0, //0x0000285f testq %rax, %rax + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00002862 je LBB0_533 + //0x00002868 LBB0_528 + 0x48, 0x8d, 0x3c, 0x02, //0x00002868 leaq (%rdx,%rax), %rdi + 0x31, 0xf6, //0x0000286c xorl %esi, %esi + 0x90, 0x90, //0x0000286e .p2align 4, 0x90 + //0x00002870 LBB0_529 + 0x0f, 0xbe, 0x1c, 0x32, //0x00002870 movsbl (%rdx,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x00002874 cmpl $32, %ebx + 0x0f, 0x87, 0x47, 0x06, 0x00, 0x00, //0x00002877 ja LBB0_600 + 0x49, 0x0f, 0xa3, 0xda, //0x0000287d btq %rbx, %r10 + 0x0f, 0x83, 0x3d, 0x06, 0x00, 0x00, //0x00002881 jae LBB0_600 + 0x48, 0x83, 0xc6, 0x01, //0x00002887 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x0000288b cmpq %rsi, %rax + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000288e jne LBB0_529 + 0x48, 0x89, 0xfa, //0x00002894 movq %rdi, %rdx + //0x00002897 LBB0_533 + 0x4c, 0x29, 0xe2, //0x00002897 subq %r12, %rdx + 0x48, 0x39, 0xca, //0x0000289a cmpq %rcx, %rdx + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x0000289d jb LBB0_535 + 0xe9, 0x63, 0x26, 0x00, 0x00, //0x000028a3 jmp LBB0_1048 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000028a8 .p2align 4, 0x90 + //0x000028b0 LBB0_534 + 0xf7, 0xd6, //0x000028b0 notl %esi + 0x0f, 0xbc, 0xd6, //0x000028b2 bsfl %esi, %edx + 0x48, 0x29, 0xc2, //0x000028b5 subq %rax, %rdx + 0x48, 0x39, 0xca, //0x000028b8 cmpq %rcx, %rdx + 0x0f, 0x83, 0x4a, 0x26, 0x00, 0x00, //0x000028bb jae LBB0_1048 + //0x000028c1 LBB0_535 + 0x4c, 0x8d, 0x72, 0x01, //0x000028c1 leaq $1(%rdx), %r14 + 0x4d, 0x89, 0x31, //0x000028c5 movq %r14, (%r9) + 0x41, 0x8a, 0x04, 0x14, //0x000028c8 movb (%r12,%rdx), %al + 0x3c, 0x2c, //0x000028cc cmpb $44, %al + 0x0f, 0x85, 0xd3, 0x09, 0x00, 0x00, //0x000028ce jne LBB0_644 + 0x49, 0x8d, 0x40, 0xff, //0x000028d4 leaq $-1(%r8), %rax + 0x49, 0x83, 0xf8, 0x02, //0x000028d8 cmpq $2, %r8 + 0x49, 0x89, 0xc0, //0x000028dc movq %rax, %r8 + 0x0f, 0x8d, 0x7b, 0xf9, 0xff, 0xff, //0x000028df jge LBB0_434 + 0xe9, 0x26, 0x07, 0x00, 0x00, //0x000028e5 jmp LBB0_537 + //0x000028ea LBB0_540 + 0x4c, 0x89, 0x7c, 0x24, 0x28, //0x000028ea movq %r15, $40(%rsp) + 0x4d, 0x8b, 0x55, 0x00, //0x000028ef movq (%r13), %r10 + 0x4d, 0x29, 0xf2, //0x000028f3 subq %r14, %r10 + 0x4d, 0x01, 0xf4, //0x000028f6 addq %r14, %r12 + 0x45, 0x31, 0xdb, //0x000028f9 xorl %r11d, %r11d + 0x45, 0x31, 0xf6, //0x000028fc xorl %r14d, %r14d + 0x45, 0x31, 0xff, //0x000028ff xorl %r15d, %r15d + 0x31, 0xdb, //0x00002902 xorl %ebx, %ebx + 0x49, 0x83, 0xfa, 0x40, //0x00002904 cmpq $64, %r10 + 0x0f, 0x8c, 0x4b, 0x01, 0x00, 0x00, //0x00002908 jl LBB0_549 + //0x0000290e LBB0_543 + 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x0000290e vmovdqu (%r12), %ymm15 + 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x00002914 vmovdqu $32(%r12), %ymm14 + 0xc5, 0x85, 0x74, 0xf2, //0x0000291b vpcmpeqb %ymm2, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x0000291f vpmovmskb %ymm6, %eax + 0xc5, 0x8d, 0x74, 0xf2, //0x00002923 vpcmpeqb %ymm2, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x00002927 vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x0000292b shlq $32, %rcx + 0x48, 0x09, 0xc8, //0x0000292f orq %rcx, %rax + 0x48, 0x89, 0xc1, //0x00002932 movq %rax, %rcx + 0x4c, 0x09, 0xf1, //0x00002935 orq %r14, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00002938 jne LBB0_545 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000293e movq $-1, %rax + 0x45, 0x31, 0xf6, //0x00002945 xorl %r14d, %r14d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00002948 jmp LBB0_546 + //0x0000294d LBB0_545 + 0x4c, 0x89, 0xf1, //0x0000294d movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00002950 notq %rcx + 0x48, 0x21, 0xc1, //0x00002953 andq %rax, %rcx + 0x48, 0x8d, 0x34, 0x09, //0x00002956 leaq (%rcx,%rcx), %rsi + 0x4c, 0x09, 0xf6, //0x0000295a orq %r14, %rsi + 0x48, 0x89, 0xf7, //0x0000295d movq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x00002960 notq %rdi + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002963 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd0, //0x0000296d andq %rdx, %rax + 0x48, 0x21, 0xf8, //0x00002970 andq %rdi, %rax + 0x45, 0x31, 0xf6, //0x00002973 xorl %r14d, %r14d + 0x48, 0x01, 0xc8, //0x00002976 addq %rcx, %rax + 0x41, 0x0f, 0x92, 0xc6, //0x00002979 setb %r14b + 0x48, 0x01, 0xc0, //0x0000297d addq %rax, %rax + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002980 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xc8, //0x0000298a xorq %rcx, %rax + 0x48, 0x21, 0xf0, //0x0000298d andq %rsi, %rax + 0x48, 0xf7, 0xd0, //0x00002990 notq %rax + //0x00002993 LBB0_546 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002993 movq $8(%rsp), %r9 + 0xc5, 0x8d, 0x74, 0xf1, //0x00002998 vpcmpeqb %ymm1, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x0000299c vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000029a0 shlq $32, %rcx + 0xc5, 0x85, 0x74, 0xf1, //0x000029a4 vpcmpeqb %ymm1, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x000029a8 vpmovmskb %ymm6, %esi + 0x48, 0x09, 0xce, //0x000029ac orq %rcx, %rsi + 0x48, 0x21, 0xc6, //0x000029af andq %rax, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xf6, //0x000029b2 vmovq %rsi, %xmm6 + 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x000029b7 vpclmulqdq $0, %xmm9, %xmm6, %xmm6 + 0xc4, 0xe1, 0xf9, 0x7e, 0xf0, //0x000029bd vmovq %xmm6, %rax + 0x4c, 0x31, 0xd8, //0x000029c2 xorq %r11, %rax + 0xc4, 0xc1, 0x05, 0x74, 0xf2, //0x000029c5 vpcmpeqb %ymm10, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x000029ca vpmovmskb %ymm6, %esi + 0xc4, 0xc1, 0x0d, 0x74, 0xf2, //0x000029ce vpcmpeqb %ymm10, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x000029d3 vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000029d7 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x000029db orq %rcx, %rsi + 0x48, 0x89, 0xc1, //0x000029de movq %rax, %rcx + 0x48, 0xf7, 0xd1, //0x000029e1 notq %rcx + 0x48, 0x21, 0xce, //0x000029e4 andq %rcx, %rsi + 0xc5, 0x85, 0x74, 0xf5, //0x000029e7 vpcmpeqb %ymm5, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x000029eb vpmovmskb %ymm6, %edi + 0xc5, 0x8d, 0x74, 0xf5, //0x000029ef vpcmpeqb %ymm5, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xd6, //0x000029f3 vpmovmskb %ymm6, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x000029f7 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x000029fb orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x000029fe andq %rcx, %rdi + 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00002a01 je LBB0_541 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002a07 .p2align 4, 0x90 + //0x00002a10 LBB0_547 + 0x48, 0x8d, 0x4f, 0xff, //0x00002a10 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00002a14 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00002a17 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00002a1a popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00002a1f addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00002a22 cmpq %rbx, %rdx + 0x0f, 0x86, 0xf8, 0x03, 0x00, 0x00, //0x00002a25 jbe LBB0_588 + 0x48, 0x83, 0xc3, 0x01, //0x00002a2b addq $1, %rbx + 0x48, 0x21, 0xcf, //0x00002a2f andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00002a32 jne LBB0_547 + //0x00002a38 LBB0_541 + 0x48, 0xc1, 0xf8, 0x3f, //0x00002a38 sarq $63, %rax + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00002a3c popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00002a41 addq %rcx, %r15 + 0x49, 0x83, 0xc4, 0x40, //0x00002a44 addq $64, %r12 + 0x49, 0x83, 0xc2, 0xc0, //0x00002a48 addq $-64, %r10 + 0x49, 0x89, 0xc3, //0x00002a4c movq %rax, %r11 + 0x49, 0x83, 0xfa, 0x40, //0x00002a4f cmpq $64, %r10 + 0x0f, 0x8d, 0xb5, 0xfe, 0xff, 0xff, //0x00002a53 jge LBB0_543 + //0x00002a59 LBB0_549 + 0x4d, 0x85, 0xd2, //0x00002a59 testq %r10, %r10 + 0x0f, 0x8e, 0x6b, 0x05, 0x00, 0x00, //0x00002a5c jle LBB0_608 + 0xc5, 0xc9, 0xef, 0xf6, //0x00002a62 vpxor %xmm6, %xmm6, %xmm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x00002a66 vmovdqu %ymm6, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002a6c vmovdqu %ymm6, $64(%rsp) + 0x44, 0x89, 0xe0, //0x00002a72 movl %r12d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002a75 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002a7a cmpl $4033, %eax + 0x0f, 0x82, 0x89, 0xfe, 0xff, 0xff, //0x00002a7f jb LBB0_543 + 0x49, 0x83, 0xfa, 0x20, //0x00002a85 cmpq $32, %r10 + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00002a89 jb LBB0_553 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00002a8f vmovdqu (%r12), %ymm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002a95 vmovdqu %ymm6, $64(%rsp) + 0x49, 0x83, 0xc4, 0x20, //0x00002a9b addq $32, %r12 + 0x49, 0x8d, 0x7a, 0xe0, //0x00002a9f leaq $-32(%r10), %rdi + 0x4c, 0x8d, 0x4c, 0x24, 0x60, //0x00002aa3 leaq $96(%rsp), %r9 + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002aa8 jmp LBB0_554 + //0x00002aad LBB0_553 + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x00002aad leaq $64(%rsp), %r9 + 0x4c, 0x89, 0xd7, //0x00002ab2 movq %r10, %rdi + //0x00002ab5 LBB0_554 + 0x48, 0x83, 0xff, 0x10, //0x00002ab5 cmpq $16, %rdi + 0x0f, 0x82, 0x5e, 0x00, 0x00, 0x00, //0x00002ab9 jb LBB0_555 + 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x00002abf vmovdqu (%r12), %xmm6 + 0xc4, 0xc1, 0x7a, 0x7f, 0x31, //0x00002ac5 vmovdqu %xmm6, (%r9) + 0x49, 0x83, 0xc4, 0x10, //0x00002aca addq $16, %r12 + 0x49, 0x83, 0xc1, 0x10, //0x00002ace addq $16, %r9 + 0x48, 0x83, 0xc7, 0xf0, //0x00002ad2 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00002ad6 cmpq $8, %rdi + 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002ada jae LBB0_560 + //0x00002ae0 LBB0_556 + 0x48, 0x83, 0xff, 0x04, //0x00002ae0 cmpq $4, %rdi + 0x0f, 0x8c, 0x5a, 0x00, 0x00, 0x00, //0x00002ae4 jl LBB0_557 + //0x00002aea LBB0_561 + 0x41, 0x8b, 0x04, 0x24, //0x00002aea movl (%r12), %eax + 0x41, 0x89, 0x01, //0x00002aee movl %eax, (%r9) + 0x49, 0x83, 0xc4, 0x04, //0x00002af1 addq $4, %r12 + 0x49, 0x83, 0xc1, 0x04, //0x00002af5 addq $4, %r9 + 0x48, 0x83, 0xc7, 0xfc, //0x00002af9 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00002afd cmpq $2, %rdi + 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002b01 jae LBB0_562 + //0x00002b07 LBB0_558 + 0x4c, 0x89, 0xe0, //0x00002b07 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002b0a leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x00002b0f testq %rdi, %rdi + 0x0f, 0x85, 0x5c, 0x00, 0x00, 0x00, //0x00002b12 jne LBB0_563 + 0xe9, 0xf1, 0xfd, 0xff, 0xff, //0x00002b18 jmp LBB0_543 + //0x00002b1d LBB0_555 + 0x48, 0x83, 0xff, 0x08, //0x00002b1d cmpq $8, %rdi + 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002b21 jb LBB0_556 + //0x00002b27 LBB0_560 + 0x49, 0x8b, 0x04, 0x24, //0x00002b27 movq (%r12), %rax + 0x49, 0x89, 0x01, //0x00002b2b movq %rax, (%r9) + 0x49, 0x83, 0xc4, 0x08, //0x00002b2e addq $8, %r12 + 0x49, 0x83, 0xc1, 0x08, //0x00002b32 addq $8, %r9 + 0x48, 0x83, 0xc7, 0xf8, //0x00002b36 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00002b3a cmpq $4, %rdi + 0x0f, 0x8d, 0xa6, 0xff, 0xff, 0xff, //0x00002b3e jge LBB0_561 + //0x00002b44 LBB0_557 + 0x48, 0x83, 0xff, 0x02, //0x00002b44 cmpq $2, %rdi + 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002b48 jb LBB0_558 + //0x00002b4e LBB0_562 + 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x00002b4e movzwl (%r12), %eax + 0x66, 0x41, 0x89, 0x01, //0x00002b53 movw %ax, (%r9) + 0x49, 0x83, 0xc4, 0x02, //0x00002b57 addq $2, %r12 + 0x49, 0x83, 0xc1, 0x02, //0x00002b5b addq $2, %r9 + 0x48, 0x83, 0xc7, 0xfe, //0x00002b5f addq $-2, %rdi + 0x4c, 0x89, 0xe0, //0x00002b63 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002b66 leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x00002b6b testq %rdi, %rdi + 0x0f, 0x84, 0x9a, 0xfd, 0xff, 0xff, //0x00002b6e je LBB0_543 + //0x00002b74 LBB0_563 + 0x8a, 0x00, //0x00002b74 movb (%rax), %al + 0x41, 0x88, 0x01, //0x00002b76 movb %al, (%r9) + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002b79 leaq $64(%rsp), %r12 + 0xe9, 0x8b, 0xfd, 0xff, 0xff, //0x00002b7e jmp LBB0_543 + //0x00002b83 LBB0_564 + 0x4c, 0x89, 0x7c, 0x24, 0x28, //0x00002b83 movq %r15, $40(%rsp) + 0x4d, 0x8b, 0x55, 0x00, //0x00002b88 movq (%r13), %r10 + 0x4d, 0x29, 0xf2, //0x00002b8c subq %r14, %r10 + 0x4d, 0x01, 0xf4, //0x00002b8f addq %r14, %r12 + 0x45, 0x31, 0xdb, //0x00002b92 xorl %r11d, %r11d + 0x45, 0x31, 0xf6, //0x00002b95 xorl %r14d, %r14d + 0x45, 0x31, 0xff, //0x00002b98 xorl %r15d, %r15d + 0x31, 0xdb, //0x00002b9b xorl %ebx, %ebx + 0x49, 0x83, 0xfa, 0x40, //0x00002b9d cmpq $64, %r10 + 0x0f, 0x8c, 0x52, 0x01, 0x00, 0x00, //0x00002ba1 jl LBB0_573 + //0x00002ba7 LBB0_567 + 0xc4, 0x41, 0x7e, 0x6f, 0x3c, 0x24, //0x00002ba7 vmovdqu (%r12), %ymm15 + 0xc4, 0x41, 0x7e, 0x6f, 0x74, 0x24, 0x20, //0x00002bad vmovdqu $32(%r12), %ymm14 + 0xc5, 0x85, 0x74, 0xf2, //0x00002bb4 vpcmpeqb %ymm2, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xc6, //0x00002bb8 vpmovmskb %ymm6, %eax + 0xc5, 0x8d, 0x74, 0xf2, //0x00002bbc vpcmpeqb %ymm2, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x00002bc0 vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00002bc4 shlq $32, %rcx + 0x48, 0x09, 0xc8, //0x00002bc8 orq %rcx, %rax + 0x48, 0x89, 0xc1, //0x00002bcb movq %rax, %rcx + 0x4c, 0x09, 0xf1, //0x00002bce orq %r14, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00002bd1 jne LBB0_569 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002bd7 movq $-1, %rax + 0x45, 0x31, 0xf6, //0x00002bde xorl %r14d, %r14d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00002be1 jmp LBB0_570 + //0x00002be6 LBB0_569 + 0x4c, 0x89, 0xf1, //0x00002be6 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00002be9 notq %rcx + 0x48, 0x21, 0xc1, //0x00002bec andq %rax, %rcx + 0x48, 0x8d, 0x34, 0x09, //0x00002bef leaq (%rcx,%rcx), %rsi + 0x4c, 0x09, 0xf6, //0x00002bf3 orq %r14, %rsi + 0x48, 0x89, 0xf7, //0x00002bf6 movq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x00002bf9 notq %rdi + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002bfc movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd0, //0x00002c06 andq %rdx, %rax + 0x48, 0x21, 0xf8, //0x00002c09 andq %rdi, %rax + 0x45, 0x31, 0xf6, //0x00002c0c xorl %r14d, %r14d + 0x48, 0x01, 0xc8, //0x00002c0f addq %rcx, %rax + 0x41, 0x0f, 0x92, 0xc6, //0x00002c12 setb %r14b + 0x48, 0x01, 0xc0, //0x00002c16 addq %rax, %rax + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002c19 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xc8, //0x00002c23 xorq %rcx, %rax + 0x48, 0x21, 0xf0, //0x00002c26 andq %rsi, %rax + 0x48, 0xf7, 0xd0, //0x00002c29 notq %rax + //0x00002c2c LBB0_570 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002c2c movq $8(%rsp), %r9 + 0xc5, 0x8d, 0x74, 0xf1, //0x00002c31 vpcmpeqb %ymm1, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x00002c35 vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00002c39 shlq $32, %rcx + 0xc5, 0x85, 0x74, 0xf1, //0x00002c3d vpcmpeqb %ymm1, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x00002c41 vpmovmskb %ymm6, %esi + 0x48, 0x09, 0xce, //0x00002c45 orq %rcx, %rsi + 0x48, 0x21, 0xc6, //0x00002c48 andq %rax, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xf6, //0x00002c4b vmovq %rsi, %xmm6 + 0xc4, 0xc3, 0x49, 0x44, 0xf1, 0x00, //0x00002c50 vpclmulqdq $0, %xmm9, %xmm6, %xmm6 + 0xc4, 0xe1, 0xf9, 0x7e, 0xf0, //0x00002c56 vmovq %xmm6, %rax + 0x4c, 0x31, 0xd8, //0x00002c5b xorq %r11, %rax + 0xc4, 0xc1, 0x05, 0x74, 0xf4, //0x00002c5e vpcmpeqb %ymm12, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xf6, //0x00002c63 vpmovmskb %ymm6, %esi + 0xc4, 0xc1, 0x0d, 0x74, 0xf4, //0x00002c67 vpcmpeqb %ymm12, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xce, //0x00002c6c vpmovmskb %ymm6, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00002c70 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00002c74 orq %rcx, %rsi + 0x48, 0x89, 0xc1, //0x00002c77 movq %rax, %rcx + 0x48, 0xf7, 0xd1, //0x00002c7a notq %rcx + 0x48, 0x21, 0xce, //0x00002c7d andq %rcx, %rsi + 0xc4, 0xc1, 0x05, 0x74, 0xf5, //0x00002c80 vpcmpeqb %ymm13, %ymm15, %ymm6 + 0xc5, 0xfd, 0xd7, 0xfe, //0x00002c85 vpmovmskb %ymm6, %edi + 0xc4, 0xc1, 0x0d, 0x74, 0xf5, //0x00002c89 vpcmpeqb %ymm13, %ymm14, %ymm6 + 0xc5, 0xfd, 0xd7, 0xd6, //0x00002c8e vpmovmskb %ymm6, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00002c92 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00002c96 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00002c99 andq %rcx, %rdi + 0x0f, 0x84, 0x36, 0x00, 0x00, 0x00, //0x00002c9c je LBB0_565 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002ca2 .p2align 4, 0x90 + //0x00002cb0 LBB0_571 + 0x48, 0x8d, 0x4f, 0xff, //0x00002cb0 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00002cb4 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00002cb7 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00002cba popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00002cbf addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00002cc2 cmpq %rbx, %rdx + 0x0f, 0x86, 0x58, 0x01, 0x00, 0x00, //0x00002cc5 jbe LBB0_588 + 0x48, 0x83, 0xc3, 0x01, //0x00002ccb addq $1, %rbx + 0x48, 0x21, 0xcf, //0x00002ccf andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00002cd2 jne LBB0_571 + //0x00002cd8 LBB0_565 + 0x48, 0xc1, 0xf8, 0x3f, //0x00002cd8 sarq $63, %rax + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00002cdc popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00002ce1 addq %rcx, %r15 + 0x49, 0x83, 0xc4, 0x40, //0x00002ce4 addq $64, %r12 + 0x49, 0x83, 0xc2, 0xc0, //0x00002ce8 addq $-64, %r10 + 0x49, 0x89, 0xc3, //0x00002cec movq %rax, %r11 + 0x49, 0x83, 0xfa, 0x40, //0x00002cef cmpq $64, %r10 + 0x0f, 0x8d, 0xae, 0xfe, 0xff, 0xff, //0x00002cf3 jge LBB0_567 + //0x00002cf9 LBB0_573 + 0x4d, 0x85, 0xd2, //0x00002cf9 testq %r10, %r10 + 0x0f, 0x8e, 0xcb, 0x02, 0x00, 0x00, //0x00002cfc jle LBB0_608 + 0xc5, 0xc9, 0xef, 0xf6, //0x00002d02 vpxor %xmm6, %xmm6, %xmm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x60, //0x00002d06 vmovdqu %ymm6, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002d0c vmovdqu %ymm6, $64(%rsp) + 0x44, 0x89, 0xe0, //0x00002d12 movl %r12d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002d15 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002d1a cmpl $4033, %eax + 0x0f, 0x82, 0x82, 0xfe, 0xff, 0xff, //0x00002d1f jb LBB0_567 + 0x49, 0x83, 0xfa, 0x20, //0x00002d25 cmpq $32, %r10 + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00002d29 jb LBB0_577 + 0xc4, 0xc1, 0x7e, 0x6f, 0x34, 0x24, //0x00002d2f vmovdqu (%r12), %ymm6 + 0xc5, 0xfe, 0x7f, 0x74, 0x24, 0x40, //0x00002d35 vmovdqu %ymm6, $64(%rsp) + 0x49, 0x83, 0xc4, 0x20, //0x00002d3b addq $32, %r12 + 0x49, 0x8d, 0x7a, 0xe0, //0x00002d3f leaq $-32(%r10), %rdi + 0x4c, 0x8d, 0x4c, 0x24, 0x60, //0x00002d43 leaq $96(%rsp), %r9 + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002d48 jmp LBB0_578 + //0x00002d4d LBB0_577 + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x00002d4d leaq $64(%rsp), %r9 + 0x4c, 0x89, 0xd7, //0x00002d52 movq %r10, %rdi + //0x00002d55 LBB0_578 + 0x48, 0x83, 0xff, 0x10, //0x00002d55 cmpq $16, %rdi + 0x0f, 0x82, 0x5e, 0x00, 0x00, 0x00, //0x00002d59 jb LBB0_579 + 0xc4, 0xc1, 0x7a, 0x6f, 0x34, 0x24, //0x00002d5f vmovdqu (%r12), %xmm6 + 0xc4, 0xc1, 0x7a, 0x7f, 0x31, //0x00002d65 vmovdqu %xmm6, (%r9) + 0x49, 0x83, 0xc4, 0x10, //0x00002d6a addq $16, %r12 + 0x49, 0x83, 0xc1, 0x10, //0x00002d6e addq $16, %r9 + 0x48, 0x83, 0xc7, 0xf0, //0x00002d72 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00002d76 cmpq $8, %rdi + 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002d7a jae LBB0_584 + //0x00002d80 LBB0_580 + 0x48, 0x83, 0xff, 0x04, //0x00002d80 cmpq $4, %rdi + 0x0f, 0x8c, 0x5a, 0x00, 0x00, 0x00, //0x00002d84 jl LBB0_581 + //0x00002d8a LBB0_585 + 0x41, 0x8b, 0x04, 0x24, //0x00002d8a movl (%r12), %eax + 0x41, 0x89, 0x01, //0x00002d8e movl %eax, (%r9) + 0x49, 0x83, 0xc4, 0x04, //0x00002d91 addq $4, %r12 + 0x49, 0x83, 0xc1, 0x04, //0x00002d95 addq $4, %r9 + 0x48, 0x83, 0xc7, 0xfc, //0x00002d99 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00002d9d cmpq $2, %rdi + 0x0f, 0x83, 0x47, 0x00, 0x00, 0x00, //0x00002da1 jae LBB0_586 + //0x00002da7 LBB0_582 + 0x4c, 0x89, 0xe0, //0x00002da7 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002daa leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x00002daf testq %rdi, %rdi + 0x0f, 0x85, 0x5c, 0x00, 0x00, 0x00, //0x00002db2 jne LBB0_587 + 0xe9, 0xea, 0xfd, 0xff, 0xff, //0x00002db8 jmp LBB0_567 + //0x00002dbd LBB0_579 + 0x48, 0x83, 0xff, 0x08, //0x00002dbd cmpq $8, %rdi + 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002dc1 jb LBB0_580 + //0x00002dc7 LBB0_584 + 0x49, 0x8b, 0x04, 0x24, //0x00002dc7 movq (%r12), %rax + 0x49, 0x89, 0x01, //0x00002dcb movq %rax, (%r9) + 0x49, 0x83, 0xc4, 0x08, //0x00002dce addq $8, %r12 + 0x49, 0x83, 0xc1, 0x08, //0x00002dd2 addq $8, %r9 + 0x48, 0x83, 0xc7, 0xf8, //0x00002dd6 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00002dda cmpq $4, %rdi + 0x0f, 0x8d, 0xa6, 0xff, 0xff, 0xff, //0x00002dde jge LBB0_585 + //0x00002de4 LBB0_581 + 0x48, 0x83, 0xff, 0x02, //0x00002de4 cmpq $2, %rdi + 0x0f, 0x82, 0xb9, 0xff, 0xff, 0xff, //0x00002de8 jb LBB0_582 + //0x00002dee LBB0_586 + 0x41, 0x0f, 0xb7, 0x04, 0x24, //0x00002dee movzwl (%r12), %eax + 0x66, 0x41, 0x89, 0x01, //0x00002df3 movw %ax, (%r9) + 0x49, 0x83, 0xc4, 0x02, //0x00002df7 addq $2, %r12 + 0x49, 0x83, 0xc1, 0x02, //0x00002dfb addq $2, %r9 + 0x48, 0x83, 0xc7, 0xfe, //0x00002dff addq $-2, %rdi + 0x4c, 0x89, 0xe0, //0x00002e03 movq %r12, %rax + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002e06 leaq $64(%rsp), %r12 + 0x48, 0x85, 0xff, //0x00002e0b testq %rdi, %rdi + 0x0f, 0x84, 0x93, 0xfd, 0xff, 0xff, //0x00002e0e je LBB0_567 + //0x00002e14 LBB0_587 + 0x8a, 0x00, //0x00002e14 movb (%rax), %al + 0x41, 0x88, 0x01, //0x00002e16 movb %al, (%r9) + 0x4c, 0x8d, 0x64, 0x24, 0x40, //0x00002e19 leaq $64(%rsp), %r12 + 0xe9, 0x84, 0xfd, 0xff, 0xff, //0x00002e1e jmp LBB0_567 + //0x00002e23 LBB0_588 + 0x49, 0x8b, 0x45, 0x00, //0x00002e23 movq (%r13), %rax + 0x48, 0x0f, 0xbc, 0xcf, //0x00002e27 bsfq %rdi, %rcx + 0x4c, 0x29, 0xd1, //0x00002e2b subq %r10, %rcx + 0x4c, 0x8d, 0x34, 0x01, //0x00002e2e leaq (%rcx,%rax), %r14 + 0x49, 0x83, 0xc6, 0x01, //0x00002e32 addq $1, %r14 + 0x4d, 0x89, 0x31, //0x00002e36 movq %r14, (%r9) + 0x49, 0x8b, 0x45, 0x00, //0x00002e39 movq (%r13), %rax + 0x49, 0x39, 0xc6, //0x00002e3d cmpq %rax, %r14 + 0x4c, 0x0f, 0x47, 0xf0, //0x00002e40 cmovaq %rax, %r14 + //0x00002e44 LBB0_589 + 0x4d, 0x89, 0x31, //0x00002e44 movq %r14, (%r9) + //0x00002e47 LBB0_590 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00002e47 movq $40(%rsp), %r15 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002e4c movabsq $4294977024, %r10 + 0xe9, 0xbb, 0xf8, 0xff, 0xff, //0x00002e56 jmp LBB0_505 + //0x00002e5b LBB0_595 + 0x66, 0x0f, 0xbc, 0xd6, //0x00002e5b bsfw %si, %dx + 0x0f, 0xb7, 0xf2, //0x00002e5f movzwl %dx, %esi + 0x48, 0x89, 0xf2, //0x00002e62 movq %rsi, %rdx + 0x48, 0x29, 0xc2, //0x00002e65 subq %rax, %rdx + 0x49, 0x89, 0x11, //0x00002e68 movq %rdx, (%r9) + 0x48, 0x85, 0xd2, //0x00002e6b testq %rdx, %rdx + 0x0f, 0x8e, 0x48, 0x00, 0x00, 0x00, //0x00002e6e jle LBB0_604 + 0x48, 0x01, 0xf1, //0x00002e74 addq %rsi, %rcx + 0x48, 0x01, 0xf7, //0x00002e77 addq %rsi, %rdi + 0x48, 0x01, 0xf3, //0x00002e7a addq %rsi, %rbx + //0x00002e7d LBB0_597 + 0x0f, 0xb6, 0x03, //0x00002e7d movzbl (%rbx), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00002e80 cmpq $32, %rax + 0x0f, 0x87, 0x32, 0x00, 0x00, 0x00, //0x00002e84 ja LBB0_604 + 0x49, 0x0f, 0xa3, 0xc2, //0x00002e8a btq %rax, %r10 + 0x0f, 0x83, 0x28, 0x00, 0x00, 0x00, //0x00002e8e jae LBB0_604 + 0x49, 0x89, 0x39, //0x00002e94 movq %rdi, (%r9) + 0x48, 0x83, 0xc1, 0xff, //0x00002e97 addq $-1, %rcx + 0x48, 0x83, 0xc7, 0xff, //0x00002e9b addq $-1, %rdi + 0x48, 0x83, 0xc3, 0xff, //0x00002e9f addq $-1, %rbx + 0x48, 0x83, 0xc2, 0xff, //0x00002ea3 addq $-1, %rdx + 0x41, 0xbe, 0x00, 0x00, 0x00, 0x00, //0x00002ea7 movl $0, %r14d + 0x48, 0x83, 0xf9, 0x01, //0x00002ead cmpq $1, %rcx + 0x0f, 0x8f, 0xc6, 0xff, 0xff, 0xff, //0x00002eb1 jg LBB0_597 + 0xe9, 0x5a, 0xf8, 0xff, 0xff, //0x00002eb7 jmp LBB0_505 + //0x00002ebc LBB0_604 + 0x49, 0x89, 0xd6, //0x00002ebc movq %rdx, %r14 + 0xe9, 0x52, 0xf8, 0xff, 0xff, //0x00002ebf jmp LBB0_505 + //0x00002ec4 LBB0_600 + 0x4c, 0x29, 0xe2, //0x00002ec4 subq %r12, %rdx + 0x48, 0x01, 0xf2, //0x00002ec7 addq %rsi, %rdx + 0x48, 0x39, 0xca, //0x00002eca cmpq %rcx, %rdx + 0x0f, 0x82, 0xee, 0xf9, 0xff, 0xff, //0x00002ecd jb LBB0_535 + 0xe9, 0x33, 0x20, 0x00, 0x00, //0x00002ed3 jmp LBB0_1048 + //0x00002ed8 LBB0_601 + 0x4c, 0x29, 0xe1, //0x00002ed8 subq %r12, %rcx + 0x48, 0x01, 0xf1, //0x00002edb addq %rsi, %rcx + 0x48, 0x39, 0xd1, //0x00002ede cmpq %rdx, %rcx + 0x0f, 0x82, 0x1a, 0xf5, 0xff, 0xff, //0x00002ee1 jb LBB0_464 + 0xe9, 0x2a, 0xf8, 0xff, 0xff, //0x00002ee7 jmp LBB0_505 + //0x00002eec LBB0_499 + 0x4d, 0x85, 0xff, //0x00002eec testq %r15, %r15 + 0x0f, 0x85, 0xe6, 0x00, 0x00, 0x00, //0x00002eef jne LBB0_609 + 0x4b, 0x8d, 0x04, 0x2a, //0x00002ef5 leaq (%r10,%r13), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002ef9 addq $1, %rax + 0x49, 0xf7, 0xd5, //0x00002efd notq %r13 + 0x4d, 0x01, 0xcd, //0x00002f00 addq %r9, %r13 + //0x00002f03 LBB0_501 + 0x4c, 0x8b, 0x7c, 0x24, 0x28, //0x00002f03 movq $40(%rsp), %r15 + 0x4d, 0x85, 0xed, //0x00002f08 testq %r13, %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002f0b movq $8(%rsp), %r9 + 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f10 movabsq $4294977024, %r10 + 0x0f, 0x8f, 0x1d, 0x00, 0x00, 0x00, //0x00002f1a jg LBB0_592 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002f20 jmp LBB0_502 + //0x00002f25 LBB0_591 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002f25 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002f2c movl $2, %esi + 0x48, 0x01, 0xf0, //0x00002f31 addq %rsi, %rax + 0x49, 0x01, 0xcd, //0x00002f34 addq %rcx, %r13 + 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x00002f37 jle LBB0_502 + //0x00002f3d LBB0_592 + 0x0f, 0xb6, 0x08, //0x00002f3d movzbl (%rax), %ecx + 0x80, 0xf9, 0x5c, //0x00002f40 cmpb $92, %cl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00002f43 je LBB0_591 + 0x80, 0xf9, 0x22, //0x00002f49 cmpb $34, %cl + 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x00002f4c je LBB0_602 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002f52 movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002f59 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00002f5e addq %rsi, %rax + 0x49, 0x01, 0xcd, //0x00002f61 addq %rcx, %r13 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00002f64 jg LBB0_592 + //0x00002f6a LBB0_502 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00002f6a movq $24(%rsp), %r13 + 0xe9, 0xa2, 0xf7, 0xff, 0xff, //0x00002f6f jmp LBB0_505 + //0x00002f74 LBB0_602 + 0x4c, 0x29, 0xe0, //0x00002f74 subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002f77 addq $1, %rax + 0x49, 0x89, 0x01, //0x00002f7b movq %rax, (%r9) + 0x49, 0x89, 0xc6, //0x00002f7e movq %rax, %r14 + 0x4c, 0x8b, 0x6c, 0x24, 0x18, //0x00002f81 movq $24(%rsp), %r13 + 0xe9, 0x8b, 0xf7, 0xff, 0xff, //0x00002f86 jmp LBB0_505 + //0x00002f8b LBB0_603 + 0x4c, 0x01, 0xe2, //0x00002f8b addq %r12, %rdx + 0x48, 0x85, 0xc0, //0x00002f8e testq %rax, %rax + 0x0f, 0x85, 0xd1, 0xf8, 0xff, 0xff, //0x00002f91 jne LBB0_528 + 0xe9, 0xfb, 0xf8, 0xff, 0xff, //0x00002f97 jmp LBB0_533 + //0x00002f9c LBB0_605 + 0x4c, 0x01, 0xe1, //0x00002f9c addq %r12, %rcx + 0x48, 0x85, 0xc0, //0x00002f9f testq %rax, %rax + 0x0f, 0x85, 0x00, 0xf4, 0xff, 0xff, //0x00002fa2 jne LBB0_457 + 0xe9, 0x28, 0xf4, 0xff, 0xff, //0x00002fa8 jmp LBB0_462 + //0x00002fad LBB0_606 + 0x4d, 0x01, 0xe6, //0x00002fad addq %r12, %r14 + 0x48, 0x83, 0xfa, 0x10, //0x00002fb0 cmpq $16, %rdx + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002fb4 movq $8(%rsp), %r9 + 0x0f, 0x83, 0xf4, 0xf4, 0xff, 0xff, //0x00002fb9 jae LBB0_471 + 0xe9, 0x57, 0xf5, 0xff, 0xff, //0x00002fbf jmp LBB0_474 + //0x00002fc4 LBB0_607 + 0x4b, 0x8d, 0x04, 0x34, //0x00002fc4 leaq (%r12,%r14), %rax + 0xe9, 0x36, 0xff, 0xff, 0xff, //0x00002fc8 jmp LBB0_501 + //0x00002fcd LBB0_608 + 0x4d, 0x8b, 0x75, 0x00, //0x00002fcd movq (%r13), %r14 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002fd1 movq $8(%rsp), %r9 + 0xe9, 0x69, 0xfe, 0xff, 0xff, //0x00002fd6 jmp LBB0_589 + //0x00002fdb LBB0_609 + 0x49, 0x8d, 0x41, 0xff, //0x00002fdb leaq $-1(%r9), %rax + 0x4c, 0x39, 0xe8, //0x00002fdf cmpq %r13, %rax + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002fe2 jne LBB0_611 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00002fe8 movq $8(%rsp), %r9 + 0xe9, 0xfd, 0xf6, 0xff, 0xff, //0x00002fed jmp LBB0_496 + //0x00002ff2 LBB0_611 + 0x4b, 0x8d, 0x04, 0x2a, //0x00002ff2 leaq (%r10,%r13), %rax + 0x48, 0x83, 0xc0, 0x02, //0x00002ff6 addq $2, %rax + 0x4d, 0x29, 0xe9, //0x00002ffa subq %r13, %r9 + 0x49, 0x83, 0xc1, 0xfe, //0x00002ffd addq $-2, %r9 + 0x4d, 0x89, 0xcd, //0x00003001 movq %r9, %r13 + 0xe9, 0xfa, 0xfe, 0xff, 0xff, //0x00003004 jmp LBB0_501 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003009 .p2align 4, 0x90 + //0x00003010 LBB0_537 + 0x49, 0x83, 0xc7, 0x10, //0x00003010 addq $16, %r15 + 0x4c, 0x89, 0xf0, //0x00003014 movq %r14, %rax + 0x48, 0x8b, 0x8c, 0x24, 0xa0, 0x00, 0x00, 0x00, //0x00003017 movq $160(%rsp), %rcx + 0x49, 0x39, 0xcf, //0x0000301f cmpq %rcx, %r15 + 0x0f, 0x85, 0x11, 0xd3, 0xff, 0xff, //0x00003022 jne LBB0_2 + 0xe9, 0x4d, 0x00, 0x00, 0x00, //0x00003028 jmp LBB0_538 + //0x0000302d LBB0_33 + 0x4c, 0x29, 0xe2, //0x0000302d subq %r12, %rdx + 0x48, 0x01, 0xf2, //0x00003030 addq %rsi, %rdx + 0x48, 0x39, 0xca, //0x00003033 cmpq %rcx, %rdx + 0x0f, 0x82, 0xc5, 0xd4, 0xff, 0xff, //0x00003036 jb LBB0_32 + 0xe9, 0x72, 0xd4, 0xff, 0xff, //0x0000303c jmp LBB0_34 + //0x00003041 LBB0_612 + 0x4c, 0x29, 0xe2, //0x00003041 subq %r12, %rdx + 0x48, 0x01, 0xf2, //0x00003044 addq %rsi, %rdx + 0x48, 0x39, 0xca, //0x00003047 cmpq %rcx, %rdx + 0x0f, 0x82, 0xdf, 0xf1, 0xff, 0xff, //0x0000304a jb LBB0_432 + 0xe9, 0xec, 0xf1, 0xff, 0xff, //0x00003050 jmp LBB0_433 + //0x00003055 LBB0_613 + 0x4d, 0x01, 0xe6, //0x00003055 addq %r12, %r14 + 0x4c, 0x89, 0xf2, //0x00003058 movq %r14, %rdx + 0x48, 0x85, 0xff, //0x0000305b testq %rdi, %rdi + 0x0f, 0x85, 0x16, 0xd4, 0xff, 0xff, //0x0000305e jne LBB0_25 + 0xe9, 0x3e, 0xd4, 0xff, 0xff, //0x00003064 jmp LBB0_30 + //0x00003069 LBB0_614 + 0x4c, 0x01, 0xe2, //0x00003069 addq %r12, %rdx + 0x48, 0x85, 0xc0, //0x0000306c testq %rax, %rax + 0x0f, 0x85, 0x63, 0xf1, 0xff, 0xff, //0x0000306f jne LBB0_424 + 0xe9, 0x8b, 0xf1, 0xff, 0xff, //0x00003075 jmp LBB0_429 + //0x0000307a LBB0_538 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000307a movq $16(%rsp), %r12 + 0x4d, 0x85, 0xe4, //0x0000307f testq %r12, %r12 + 0x0f, 0x84, 0x7e, 0x00, 0x00, 0x00, //0x00003082 je LBB0_615 + 0x4c, 0x89, 0x6c, 0x24, 0x18, //0x00003088 movq %r13, $24(%rsp) + 0xc5, 0xfa, 0x6f, 0x05, 0x7b, 0xd1, 0xff, 0xff, //0x0000308d vmovdqu $-11909(%rip), %xmm0 /* LCPI0_12+0(%rip) */ + 0xc4, 0xc1, 0x7a, 0x7f, 0x04, 0x24, //0x00003095 vmovdqu %xmm0, (%r12) + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000309b movq $-1, %r10 + 0xc5, 0xfe, 0x6f, 0x2d, 0x56, 0xcf, 0xff, 0xff, //0x000030a2 vmovdqu $-12458(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xce, 0xcf, 0xff, 0xff, //0x000030aa vmovdqu $-12338(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xe6, 0xcf, 0xff, 0xff, //0x000030b2 vmovdqu $-12314(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x5e, 0xd0, 0xff, 0xff, //0x000030ba vmovdqu $-12194(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0x76, 0xd0, 0xff, 0xff, //0x000030c2 vmovdqu $-12170(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x8e, 0xd0, 0xff, 0xff, //0x000030ca vmovdqu $-12146(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xa6, 0xd0, 0xff, 0xff, //0x000030d2 vmovdqu $-12122(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x5e, 0xcf, 0xff, 0xff, //0x000030da vmovdqu $-12450(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xb6, 0xd0, 0xff, 0xff, //0x000030e2 vmovdqu $-12106(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xce, 0xd0, 0xff, 0xff, //0x000030ea vmovdqu $-12082(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0xc5, 0x7a, 0x6f, 0x3d, 0x26, 0xd1, 0xff, 0xff, //0x000030f2 vmovdqu $-11994(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0x4c, 0x8d, 0x35, 0x77, 0x2c, 0x00, 0x00, //0x000030fa leaq $11383(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0xe9, 0x7a, 0x02, 0x00, 0x00, //0x00003101 jmp LBB0_676 + //0x00003106 LBB0_615 + 0x4d, 0x89, 0xef, //0x00003106 movq %r13, %r15 + 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, //0x00003109 movq $144(%rsp), %rax + 0x4c, 0x8b, 0x18, //0x00003111 movq (%rax), %r11 + 0x48, 0x8b, 0x58, 0x08, //0x00003114 movq $8(%rax), %rbx + 0x49, 0x8b, 0x39, //0x00003118 movq (%r9), %rdi + 0x48, 0x39, 0xdf, //0x0000311b cmpq %rbx, %rdi + 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x0000311e jae LBB0_620 + 0x41, 0x8a, 0x04, 0x3b, //0x00003124 movb (%r11,%rdi), %al + 0x3c, 0x0d, //0x00003128 cmpb $13, %al + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x0000312a je LBB0_620 + 0x3c, 0x20, //0x00003130 cmpb $32, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003132 je LBB0_620 + 0x04, 0xf7, //0x00003138 addb $-9, %al + 0x3c, 0x01, //0x0000313a cmpb $1, %al + 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x0000313c jbe LBB0_620 + 0x48, 0x89, 0xf8, //0x00003142 movq %rdi, %rax + 0xe9, 0x58, 0x1c, 0x00, 0x00, //0x00003145 jmp LBB0_652 + //0x0000314a LBB0_620 + 0x48, 0x8d, 0x47, 0x01, //0x0000314a leaq $1(%rdi), %rax + 0x48, 0x39, 0xd8, //0x0000314e cmpq %rbx, %rax + 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00003151 jae LBB0_624 + 0x41, 0x8a, 0x0c, 0x03, //0x00003157 movb (%r11,%rax), %cl + 0x80, 0xf9, 0x0d, //0x0000315b cmpb $13, %cl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x0000315e je LBB0_624 + 0x80, 0xf9, 0x20, //0x00003164 cmpb $32, %cl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00003167 je LBB0_624 + 0x80, 0xc1, 0xf7, //0x0000316d addb $-9, %cl + 0x80, 0xf9, 0x01, //0x00003170 cmpb $1, %cl + 0x0f, 0x87, 0x29, 0x1c, 0x00, 0x00, //0x00003173 ja LBB0_652 + //0x00003179 LBB0_624 + 0x48, 0x8d, 0x47, 0x02, //0x00003179 leaq $2(%rdi), %rax + 0x48, 0x39, 0xd8, //0x0000317d cmpq %rbx, %rax + 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00003180 jae LBB0_628 + 0x41, 0x8a, 0x0c, 0x03, //0x00003186 movb (%r11,%rax), %cl + 0x80, 0xf9, 0x0d, //0x0000318a cmpb $13, %cl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x0000318d je LBB0_628 + 0x80, 0xf9, 0x20, //0x00003193 cmpb $32, %cl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00003196 je LBB0_628 + 0x80, 0xc1, 0xf7, //0x0000319c addb $-9, %cl + 0x80, 0xf9, 0x01, //0x0000319f cmpb $1, %cl + 0x0f, 0x87, 0xfa, 0x1b, 0x00, 0x00, //0x000031a2 ja LBB0_652 + //0x000031a8 LBB0_628 + 0x48, 0x8d, 0x47, 0x03, //0x000031a8 leaq $3(%rdi), %rax + 0x48, 0x39, 0xd8, //0x000031ac cmpq %rbx, %rax + 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x000031af jae LBB0_632 + 0x41, 0x8a, 0x0c, 0x03, //0x000031b5 movb (%r11,%rax), %cl + 0x80, 0xf9, 0x0d, //0x000031b9 cmpb $13, %cl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000031bc je LBB0_632 + 0x80, 0xf9, 0x20, //0x000031c2 cmpb $32, %cl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000031c5 je LBB0_632 + 0x80, 0xc1, 0xf7, //0x000031cb addb $-9, %cl + 0x80, 0xf9, 0x01, //0x000031ce cmpb $1, %cl + 0x0f, 0x87, 0xcb, 0x1b, 0x00, 0x00, //0x000031d1 ja LBB0_652 + //0x000031d7 LBB0_632 + 0x48, 0x8d, 0x47, 0x04, //0x000031d7 leaq $4(%rdi), %rax + 0x48, 0x89, 0xda, //0x000031db movq %rbx, %rdx + 0x48, 0x29, 0xc2, //0x000031de subq %rax, %rdx + 0x0f, 0x86, 0x94, 0x1b, 0x00, 0x00, //0x000031e1 jbe LBB0_650 + 0x48, 0x83, 0xfa, 0x20, //0x000031e7 cmpq $32, %rdx + 0x0f, 0x82, 0x00, 0x27, 0x00, 0x00, //0x000031eb jb LBB0_1152 + 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x000031f1 movq $-4, %rdx + 0x48, 0x29, 0xfa, //0x000031f8 subq %rdi, %rdx + 0xc5, 0xfe, 0x6f, 0x05, 0xfd, 0xcd, 0xff, 0xff, //0x000031fb vmovdqu $-12803(%rip), %ymm0 /* LCPI0_0+0(%rip) */ + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003203 .p2align 4, 0x90 + //0x00003210 LBB0_635 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0c, 0x03, //0x00003210 vmovdqu (%r11,%rax), %ymm1 + 0xc4, 0xe2, 0x7d, 0x00, 0xd1, //0x00003216 vpshufb %ymm1, %ymm0, %ymm2 + 0xc5, 0xf5, 0x74, 0xca, //0x0000321b vpcmpeqb %ymm2, %ymm1, %ymm1 + 0xc5, 0xfd, 0xd7, 0xc9, //0x0000321f vpmovmskb %ymm1, %ecx + 0x83, 0xf9, 0xff, //0x00003223 cmpl $-1, %ecx + 0x0f, 0x85, 0x5e, 0x1b, 0x00, 0x00, //0x00003226 jne LBB0_651 + 0x48, 0x83, 0xc0, 0x20, //0x0000322c addq $32, %rax + 0x48, 0x8d, 0x0c, 0x13, //0x00003230 leaq (%rbx,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00003234 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00003238 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x1f, //0x0000323c cmpq $31, %rcx + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00003240 ja LBB0_635 + 0x4c, 0x89, 0xd8, //0x00003246 movq %r11, %rax + 0x48, 0x29, 0xd0, //0x00003249 subq %rdx, %rax + 0x48, 0x01, 0xda, //0x0000324c addq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000324f testq %rdx, %rdx + 0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00003252 je LBB0_643 + //0x00003258 LBB0_638 + 0x4c, 0x8d, 0x04, 0x10, //0x00003258 leaq (%rax,%rdx), %r8 + 0x31, 0xf6, //0x0000325c xorl %esi, %esi + 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000325e movabsq $4294977024, %rcx + //0x00003268 LBB0_639 + 0x0f, 0xbe, 0x3c, 0x30, //0x00003268 movsbl (%rax,%rsi), %edi + 0x83, 0xff, 0x20, //0x0000326c cmpl $32, %edi + 0x0f, 0x87, 0x3b, 0x26, 0x00, 0x00, //0x0000326f ja LBB0_1149 + 0x48, 0x0f, 0xa3, 0xf9, //0x00003275 btq %rdi, %rcx + 0x0f, 0x83, 0x31, 0x26, 0x00, 0x00, //0x00003279 jae LBB0_1149 + 0x48, 0x83, 0xc6, 0x01, //0x0000327f addq $1, %rsi + 0x48, 0x39, 0xf2, //0x00003283 cmpq %rsi, %rdx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00003286 jne LBB0_639 + 0x4c, 0x89, 0xc0, //0x0000328c movq %r8, %rax + //0x0000328f LBB0_643 + 0x4c, 0x29, 0xd8, //0x0000328f subq %r11, %rax + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003292 movq $-1, %r13 + 0x48, 0x39, 0xd8, //0x00003299 cmpq %rbx, %rax + 0x0f, 0x82, 0x00, 0x1b, 0x00, 0x00, //0x0000329c jb LBB0_652 + 0xe9, 0x72, 0x1c, 0x00, 0x00, //0x000032a2 jmp LBB0_1050 + //0x000032a7 LBB0_644 + 0x3c, 0x5d, //0x000032a7 cmpb $93, %al + 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x000032a9 je LBB0_647 + 0xe9, 0x57, 0x1c, 0x00, 0x00, //0x000032af jmp LBB0_1048 + //0x000032b4 LBB0_1047 + 0x49, 0x89, 0xce, //0x000032b4 movq %rcx, %r14 + 0xe9, 0x4f, 0x1c, 0x00, 0x00, //0x000032b7 jmp LBB0_1048 + //0x000032bc LBB0_645 + 0x4d, 0x89, 0xde, //0x000032bc movq %r11, %r14 + //0x000032bf LBB0_646 + 0x3c, 0x7d, //0x000032bf cmpb $125, %al + 0x0f, 0x85, 0x44, 0x1c, 0x00, 0x00, //0x000032c1 jne LBB0_1048 + //0x000032c7 LBB0_647 + 0x49, 0x83, 0xc6, 0xff, //0x000032c7 addq $-1, %r14 + 0x4d, 0x89, 0x31, //0x000032cb movq %r14, (%r9) + 0x49, 0xc7, 0xc5, 0xdf, 0xff, 0xff, 0xff, //0x000032ce movq $-33, %r13 + 0xe9, 0x3f, 0x1c, 0x00, 0x00, //0x000032d5 jmp LBB0_1050 + //0x000032da LBB0_1053 + 0x49, 0xf7, 0xdb, //0x000032da negq %r11 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000032dd movq $16(%rsp), %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0x16, 0xcd, 0xff, 0xff, //0x000032e2 vmovdqu $-13034(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x8e, 0xcd, 0xff, 0xff, //0x000032ea vmovdqu $-12914(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xa6, 0xcd, 0xff, 0xff, //0x000032f2 vmovdqu $-12890(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x1e, 0xce, 0xff, 0xff, //0x000032fa vmovdqu $-12770(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0x36, 0xce, 0xff, 0xff, //0x00003302 vmovdqu $-12746(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x4e, 0xce, 0xff, 0xff, //0x0000330a vmovdqu $-12722(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x66, 0xce, 0xff, 0xff, //0x00003312 vmovdqu $-12698(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x1e, 0xcd, 0xff, 0xff, //0x0000331a vmovdqu $-13026(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x76, 0xce, 0xff, 0xff, //0x00003322 vmovdqu $-12682(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x8e, 0xce, 0xff, 0xff, //0x0000332a vmovdqu $-12658(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0x4d, 0x85, 0xdb, //0x00003332 testq %r11, %r11 + 0x0f, 0x88, 0xba, 0x1c, 0x00, 0x00, //0x00003335 js LBB0_1054 + //0x0000333b LBB0_960 + 0x49, 0x8b, 0x09, //0x0000333b movq (%r9), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x0000333e addq $-1, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00003342 movq $56(%rsp), %rax + //0x00003347 LBB0_673 + 0x4c, 0x01, 0xd9, //0x00003347 addq %r11, %rcx + 0x49, 0x89, 0x09, //0x0000334a movq %rcx, (%r9) + 0x48, 0x85, 0xc0, //0x0000334d testq %rax, %rax + 0x0f, 0x8e, 0xc3, 0x1b, 0x00, 0x00, //0x00003350 jle LBB0_1050 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003356 .p2align 4, 0x90 + //0x00003360 LBB0_674 + 0x49, 0x8b, 0x14, 0x24, //0x00003360 movq (%r12), %rdx + 0x4d, 0x89, 0xd5, //0x00003364 movq %r10, %r13 + 0x48, 0x85, 0xd2, //0x00003367 testq %rdx, %rdx + 0x0f, 0x85, 0x10, 0x00, 0x00, 0x00, //0x0000336a jne LBB0_676 + 0xe9, 0xa4, 0x1b, 0x00, 0x00, //0x00003370 jmp LBB0_1050 + //0x00003375 LBB0_672 + 0x4c, 0x89, 0xe9, //0x00003375 movq %r13, %rcx + 0xe9, 0xca, 0xff, 0xff, 0xff, //0x00003378 jmp LBB0_673 + 0x90, 0x90, 0x90, //0x0000337d .p2align 4, 0x90 + //0x00003380 LBB0_676 + 0x4c, 0x89, 0xd1, //0x00003380 movq %r10, %rcx + 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, //0x00003383 movq $144(%rsp), %rax + 0x4c, 0x8b, 0x38, //0x0000338b movq (%rax), %r15 + 0x48, 0x8b, 0x58, 0x08, //0x0000338e movq $8(%rax), %rbx + 0x49, 0x8b, 0x39, //0x00003392 movq (%r9), %rdi + 0x48, 0x39, 0xdf, //0x00003395 cmpq %rbx, %rdi + 0x0f, 0x83, 0x32, 0x00, 0x00, 0x00, //0x00003398 jae LBB0_681 + 0x41, 0x8a, 0x04, 0x3f, //0x0000339e movb (%r15,%rdi), %al + 0x3c, 0x0d, //0x000033a2 cmpb $13, %al + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000033a4 je LBB0_681 + 0x3c, 0x20, //0x000033aa cmpb $32, %al + 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x000033ac je LBB0_681 + 0x04, 0xf7, //0x000033b2 addb $-9, %al + 0x3c, 0x01, //0x000033b4 cmpb $1, %al + 0x0f, 0x86, 0x14, 0x00, 0x00, 0x00, //0x000033b6 jbe LBB0_681 + 0x49, 0x89, 0xfa, //0x000033bc movq %rdi, %r10 + 0xe9, 0x7e, 0x01, 0x00, 0x00, //0x000033bf jmp LBB0_706 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000033c4 .p2align 4, 0x90 + //0x000033d0 LBB0_681 + 0x4c, 0x8d, 0x57, 0x01, //0x000033d0 leaq $1(%rdi), %r10 + 0x49, 0x39, 0xda, //0x000033d4 cmpq %rbx, %r10 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000033d7 jae LBB0_685 + 0x43, 0x8a, 0x14, 0x17, //0x000033dd movb (%r15,%r10), %dl + 0x80, 0xfa, 0x0d, //0x000033e1 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000033e4 je LBB0_685 + 0x80, 0xfa, 0x20, //0x000033ea cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000033ed je LBB0_685 + 0x80, 0xc2, 0xf7, //0x000033f3 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000033f6 cmpb $1, %dl + 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x000033f9 ja LBB0_706 + 0x90, //0x000033ff .p2align 4, 0x90 + //0x00003400 LBB0_685 + 0x4c, 0x8d, 0x57, 0x02, //0x00003400 leaq $2(%rdi), %r10 + 0x49, 0x39, 0xda, //0x00003404 cmpq %rbx, %r10 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003407 jae LBB0_689 + 0x43, 0x8a, 0x14, 0x17, //0x0000340d movb (%r15,%r10), %dl + 0x80, 0xfa, 0x0d, //0x00003411 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003414 je LBB0_689 + 0x80, 0xfa, 0x20, //0x0000341a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000341d je LBB0_689 + 0x80, 0xc2, 0xf7, //0x00003423 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00003426 cmpb $1, %dl + 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00003429 ja LBB0_706 + 0x90, //0x0000342f .p2align 4, 0x90 + //0x00003430 LBB0_689 + 0x4c, 0x8d, 0x57, 0x03, //0x00003430 leaq $3(%rdi), %r10 + 0x49, 0x39, 0xda, //0x00003434 cmpq %rbx, %r10 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003437 jae LBB0_693 + 0x43, 0x8a, 0x14, 0x17, //0x0000343d movb (%r15,%r10), %dl + 0x80, 0xfa, 0x0d, //0x00003441 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003444 je LBB0_693 + 0x80, 0xfa, 0x20, //0x0000344a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000344d je LBB0_693 + 0x80, 0xc2, 0xf7, //0x00003453 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00003456 cmpb $1, %dl + 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x00003459 ja LBB0_706 + 0x90, //0x0000345f .p2align 4, 0x90 + //0x00003460 LBB0_693 + 0x4c, 0x8d, 0x57, 0x04, //0x00003460 leaq $4(%rdi), %r10 + 0x48, 0x89, 0xda, //0x00003464 movq %rbx, %rdx + 0x4c, 0x29, 0xd2, //0x00003467 subq %r10, %rdx + 0x0f, 0x86, 0x28, 0x1b, 0x00, 0x00, //0x0000346a jbe LBB0_1045 + 0x48, 0x83, 0xfa, 0x20, //0x00003470 cmpq $32, %rdx + 0x0f, 0x82, 0x90, 0x12, 0x00, 0x00, //0x00003474 jb LBB0_961 + 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x0000347a movq $-4, %rdx + 0x48, 0x29, 0xfa, //0x00003481 subq %rdi, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003484 .p2align 4, 0x90 + //0x00003490 LBB0_696 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x17, //0x00003490 vmovdqu (%r15,%r10), %ymm0 + 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00003496 vpshufb %ymm0, %ymm5, %ymm1 + 0xc5, 0xfd, 0x74, 0xc1, //0x0000349b vpcmpeqb %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000349f vpmovmskb %ymm0, %esi + 0x83, 0xfe, 0xff, //0x000034a3 cmpl $-1, %esi + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000034a6 jne LBB0_705 + 0x49, 0x83, 0xc2, 0x20, //0x000034ac addq $32, %r10 + 0x48, 0x8d, 0x34, 0x13, //0x000034b0 leaq (%rbx,%rdx), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x000034b4 addq $-32, %rsi + 0x48, 0x83, 0xc2, 0xe0, //0x000034b8 addq $-32, %rdx + 0x48, 0x83, 0xfe, 0x1f, //0x000034bc cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x000034c0 ja LBB0_696 + 0x4d, 0x89, 0xfa, //0x000034c6 movq %r15, %r10 + 0x49, 0x29, 0xd2, //0x000034c9 subq %rdx, %r10 + 0x48, 0x01, 0xda, //0x000034cc addq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x000034cf testq %rdx, %rdx + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000034d2 je LBB0_704 + //0x000034d8 LBB0_699 + 0x4d, 0x8d, 0x04, 0x12, //0x000034d8 leaq (%r10,%rdx), %r8 + 0x31, 0xf6, //0x000034dc xorl %esi, %esi + 0x90, 0x90, //0x000034de .p2align 4, 0x90 + //0x000034e0 LBB0_700 + 0x41, 0x0f, 0xbe, 0x3c, 0x32, //0x000034e0 movsbl (%r10,%rsi), %edi + 0x83, 0xff, 0x20, //0x000034e5 cmpl $32, %edi + 0x0f, 0x87, 0x0e, 0x11, 0x00, 0x00, //0x000034e8 ja LBB0_950 + 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000034ee movabsq $4294977024, %rax + 0x48, 0x0f, 0xa3, 0xf8, //0x000034f8 btq %rdi, %rax + 0x0f, 0x83, 0xfa, 0x10, 0x00, 0x00, //0x000034fc jae LBB0_950 + 0x48, 0x83, 0xc6, 0x01, //0x00003502 addq $1, %rsi + 0x48, 0x39, 0xf2, //0x00003506 cmpq %rsi, %rdx + 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00003509 jne LBB0_700 + 0x4d, 0x89, 0xc2, //0x0000350f movq %r8, %r10 + //0x00003512 LBB0_704 + 0x4d, 0x29, 0xfa, //0x00003512 subq %r15, %r10 + 0x49, 0x39, 0xda, //0x00003515 cmpq %rbx, %r10 + 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x00003518 jb LBB0_706 + 0xe9, 0x78, 0x1a, 0x00, 0x00, //0x0000351e jmp LBB0_1046 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003523 .p2align 4, 0x90 + //0x00003530 LBB0_705 + 0xf7, 0xd6, //0x00003530 notl %esi + 0x44, 0x0f, 0xbc, 0xd6, //0x00003532 bsfl %esi, %r10d + 0x49, 0x29, 0xd2, //0x00003536 subq %rdx, %r10 + 0x49, 0x39, 0xda, //0x00003539 cmpq %rbx, %r10 + 0x0f, 0x83, 0x59, 0x1a, 0x00, 0x00, //0x0000353c jae LBB0_1046 + //0x00003542 LBB0_706 + 0x49, 0x8d, 0x52, 0x01, //0x00003542 leaq $1(%r10), %rdx + 0x49, 0x89, 0x11, //0x00003546 movq %rdx, (%r9) + 0x43, 0x0f, 0xbe, 0x3c, 0x17, //0x00003549 movsbl (%r15,%r10), %edi + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000354e movq $-1, %r13 + 0x85, 0xff, //0x00003555 testl %edi, %edi + 0x0f, 0x84, 0xbc, 0x19, 0x00, 0x00, //0x00003557 je LBB0_1050 + 0x49, 0x8b, 0x34, 0x24, //0x0000355d movq (%r12), %rsi + 0x48, 0x8d, 0x56, 0xff, //0x00003561 leaq $-1(%rsi), %rdx + 0x41, 0x8b, 0x1c, 0xf4, //0x00003565 movl (%r12,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x00003569 cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xd1, //0x0000356d cmovneq %rcx, %r10 + 0x83, 0xc3, 0xff, //0x00003571 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x00003574 cmpl $5, %ebx + 0x0f, 0x87, 0x99, 0x01, 0x00, 0x00, //0x00003577 ja LBB0_736 + 0x49, 0x63, 0x0c, 0x9e, //0x0000357d movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x00003581 addq %r14, %rcx + 0xff, 0xe1, //0x00003584 jmpq *%rcx + //0x00003586 LBB0_709 + 0x83, 0xff, 0x2c, //0x00003586 cmpl $44, %edi + 0x0f, 0x84, 0xfb, 0x05, 0x00, 0x00, //0x00003589 je LBB0_798 + 0x83, 0xff, 0x5d, //0x0000358f cmpl $93, %edi + 0x0f, 0x84, 0xdd, 0x05, 0x00, 0x00, //0x00003592 je LBB0_711 + 0xe9, 0x75, 0x19, 0x00, 0x00, //0x00003598 jmp LBB0_1049 + //0x0000359d LBB0_712 + 0x40, 0x80, 0xff, 0x22, //0x0000359d cmpb $34, %dil + 0x0f, 0x85, 0x6b, 0x19, 0x00, 0x00, //0x000035a1 jne LBB0_1049 + 0x49, 0xc7, 0x04, 0xf4, 0x04, 0x00, 0x00, 0x00, //0x000035a7 movq $4, (%r12,%rsi,8) + 0x4d, 0x8b, 0x19, //0x000035af movq (%r9), %r11 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x000035b2 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x08, //0x000035b7 movq (%rax), %r9 + 0x4c, 0x89, 0xc9, //0x000035ba movq %r9, %rcx + 0x4c, 0x29, 0xd9, //0x000035bd subq %r11, %rcx + 0x0f, 0x84, 0xe2, 0x22, 0x00, 0x00, //0x000035c0 je LBB0_1158 + 0x48, 0x83, 0xf9, 0x40, //0x000035c6 cmpq $64, %rcx + 0x0f, 0x82, 0x0f, 0x12, 0x00, 0x00, //0x000035ca jb LBB0_969 + 0x4c, 0x89, 0xdf, //0x000035d0 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x000035d3 notq %rdi + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000035d6 movq $-1, %r8 + 0x4d, 0x89, 0xdd, //0x000035dd movq %r11, %r13 + 0x45, 0x31, 0xf6, //0x000035e0 xorl %r14d, %r14d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000035e3 .p2align 4, 0x90 + //0x000035f0 LBB0_716 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x2f, //0x000035f0 vmovdqu (%r15,%r13), %ymm0 + 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x2f, 0x20, //0x000035f6 vmovdqu $32(%r15,%r13), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000035fd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00003601 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x00003605 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00003609 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x0000360d vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003611 vpmovmskb %ymm0, %esi + 0xc5, 0xf5, 0x74, 0xc7, //0x00003615 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00003619 vpmovmskb %ymm0, %eax + 0x48, 0xc1, 0xe3, 0x20, //0x0000361d shlq $32, %rbx + 0x48, 0x09, 0xda, //0x00003621 orq %rbx, %rdx + 0x48, 0xc1, 0xe0, 0x20, //0x00003624 shlq $32, %rax + 0x48, 0x09, 0xc6, //0x00003628 orq %rax, %rsi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000362b jne LBB0_725 + 0x4d, 0x85, 0xf6, //0x00003631 testq %r14, %r14 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00003634 jne LBB0_727 + 0x45, 0x31, 0xf6, //0x0000363a xorl %r14d, %r14d + 0x48, 0x85, 0xd2, //0x0000363d testq %rdx, %rdx + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003640 jne LBB0_728 + //0x00003646 LBB0_719 + 0x48, 0x83, 0xc1, 0xc0, //0x00003646 addq $-64, %rcx + 0x48, 0x83, 0xc7, 0xc0, //0x0000364a addq $-64, %rdi + 0x49, 0x83, 0xc5, 0x40, //0x0000364e addq $64, %r13 + 0x48, 0x83, 0xf9, 0x3f, //0x00003652 cmpq $63, %rcx + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00003656 ja LBB0_716 + 0xe9, 0xfc, 0x0d, 0x00, 0x00, //0x0000365c jmp LBB0_720 + //0x00003661 LBB0_725 + 0x49, 0x83, 0xf8, 0xff, //0x00003661 cmpq $-1, %r8 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003665 jne LBB0_727 + 0x4c, 0x0f, 0xbc, 0xc6, //0x0000366b bsfq %rsi, %r8 + 0x4d, 0x01, 0xe8, //0x0000366f addq %r13, %r8 + //0x00003672 LBB0_727 + 0x4c, 0x89, 0xf0, //0x00003672 movq %r14, %rax + 0x48, 0xf7, 0xd0, //0x00003675 notq %rax + 0x48, 0x21, 0xf0, //0x00003678 andq %rsi, %rax + 0x4c, 0x8d, 0x24, 0x00, //0x0000367b leaq (%rax,%rax), %r12 + 0x4d, 0x09, 0xf4, //0x0000367f orq %r14, %r12 + 0x4c, 0x89, 0xe3, //0x00003682 movq %r12, %rbx + 0x48, 0xf7, 0xd3, //0x00003685 notq %rbx + 0x48, 0x21, 0xf3, //0x00003688 andq %rsi, %rbx + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000368b movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf3, //0x00003695 andq %rsi, %rbx + 0x45, 0x31, 0xf6, //0x00003698 xorl %r14d, %r14d + 0x48, 0x01, 0xc3, //0x0000369b addq %rax, %rbx + 0x41, 0x0f, 0x92, 0xc6, //0x0000369e setb %r14b + 0x48, 0x01, 0xdb, //0x000036a2 addq %rbx, %rbx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000036a5 movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc3, //0x000036af xorq %rax, %rbx + 0x4c, 0x21, 0xe3, //0x000036b2 andq %r12, %rbx + 0x48, 0xf7, 0xd3, //0x000036b5 notq %rbx + 0x48, 0x21, 0xda, //0x000036b8 andq %rbx, %rdx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000036bb movq $16(%rsp), %r12 + 0x48, 0x85, 0xd2, //0x000036c0 testq %rdx, %rdx + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x000036c3 je LBB0_719 + //0x000036c9 LBB0_728 + 0x4c, 0x0f, 0xbc, 0xea, //0x000036c9 bsfq %rdx, %r13 + 0x49, 0x29, 0xfd, //0x000036cd subq %rdi, %r13 + 0x4c, 0x8d, 0x35, 0xa1, 0x26, 0x00, 0x00, //0x000036d0 leaq $9889(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4d, 0x85, 0xed, //0x000036d7 testq %r13, %r13 + 0x0f, 0x88, 0xd3, 0x18, 0x00, 0x00, //0x000036da js LBB0_860 + //0x000036e0 LBB0_731 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000036e0 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x29, //0x000036e5 movq %r13, (%r9) + 0x4d, 0x85, 0xdb, //0x000036e8 testq %r11, %r11 + 0x0f, 0x8f, 0x6f, 0xfc, 0xff, 0xff, //0x000036eb jg LBB0_674 + 0xe9, 0xde, 0x18, 0x00, 0x00, //0x000036f1 jmp LBB0_732 + //0x000036f6 LBB0_733 + 0x40, 0x80, 0xff, 0x5d, //0x000036f6 cmpb $93, %dil + 0x0f, 0x84, 0x75, 0x04, 0x00, 0x00, //0x000036fa je LBB0_711 + 0x49, 0xc7, 0x04, 0xf4, 0x01, 0x00, 0x00, 0x00, //0x00003700 movq $1, (%r12,%rsi,8) + 0x83, 0xff, 0x7b, //0x00003708 cmpl $123, %edi + 0x0f, 0x86, 0x12, 0x00, 0x00, 0x00, //0x0000370b jbe LBB0_735 + 0xe9, 0xfc, 0x17, 0x00, 0x00, //0x00003711 jmp LBB0_1049 + //0x00003716 LBB0_736 + 0x49, 0x89, 0x14, 0x24, //0x00003716 movq %rdx, (%r12) + 0x83, 0xff, 0x7b, //0x0000371a cmpl $123, %edi + 0x0f, 0x87, 0xef, 0x17, 0x00, 0x00, //0x0000371d ja LBB0_1049 + //0x00003723 LBB0_735 + 0x89, 0xf8, //0x00003723 movl %edi, %eax + 0x48, 0x8d, 0x0d, 0x64, 0x26, 0x00, 0x00, //0x00003725 leaq $9828(%rip), %rcx /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x04, 0x81, //0x0000372c movslq (%rcx,%rax,4), %rax + 0x48, 0x01, 0xc8, //0x00003730 addq %rcx, %rax + 0xff, 0xe0, //0x00003733 jmpq *%rax + //0x00003735 LBB0_743 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00003735 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x00, //0x0000373a movq (%rax), %r8 + 0x49, 0x8b, 0x01, //0x0000373d movq (%r9), %rax + 0x4c, 0x8d, 0x68, 0xff, //0x00003740 leaq $-1(%rax), %r13 + 0x4d, 0x29, 0xe8, //0x00003744 subq %r13, %r8 + 0x0f, 0x84, 0x9c, 0x18, 0x00, 0x00, //0x00003747 je LBB0_1052 + 0x49, 0x8d, 0x0c, 0x07, //0x0000374d leaq (%r15,%rax), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x00003751 addq $-1, %rcx + 0x48, 0x89, 0x4c, 0x24, 0x20, //0x00003755 movq %rcx, $32(%rsp) + 0x80, 0x39, 0x30, //0x0000375a cmpb $48, (%rcx) + 0x0f, 0x85, 0x40, 0x00, 0x00, 0x00, //0x0000375d jne LBB0_748 + 0x41, 0xbb, 0x01, 0x00, 0x00, 0x00, //0x00003763 movl $1, %r11d + 0x49, 0x83, 0xf8, 0x01, //0x00003769 cmpq $1, %r8 + 0x0f, 0x84, 0x02, 0xfc, 0xff, 0xff, //0x0000376d je LBB0_672 + 0x41, 0x8a, 0x0c, 0x07, //0x00003773 movb (%r15,%rax), %cl + 0x80, 0xc1, 0xd2, //0x00003777 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000377a cmpb $55, %cl + 0x0f, 0x87, 0xf2, 0xfb, 0xff, 0xff, //0x0000377d ja LBB0_672 + 0x48, 0x89, 0xc2, //0x00003783 movq %rax, %rdx + 0x0f, 0xb6, 0xc1, //0x00003786 movzbl %cl, %eax + 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003789 movabsq $36028797027352577, %rcx + 0x48, 0x0f, 0xa3, 0xc1, //0x00003793 btq %rax, %rcx + 0x48, 0x89, 0xd0, //0x00003797 movq %rdx, %rax + 0x4c, 0x89, 0xe9, //0x0000379a movq %r13, %rcx + 0x0f, 0x83, 0xa4, 0xfb, 0xff, 0xff, //0x0000379d jae LBB0_673 + //0x000037a3 LBB0_748 + 0x48, 0x89, 0x44, 0x24, 0x38, //0x000037a3 movq %rax, $56(%rsp) + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000037a8 movq $-1, %r12 + 0x49, 0x83, 0xf8, 0x20, //0x000037af cmpq $32, %r8 + 0x0f, 0x82, 0x43, 0x10, 0x00, 0x00, //0x000037b3 jb LBB0_970 + 0x45, 0x31, 0xdb, //0x000037b9 xorl %r11d, %r11d + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037bc movq $-1, %rax + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x000037c3 movq $-1, $48(%rsp) + 0x90, 0x90, 0x90, 0x90, //0x000037cc .p2align 4, 0x90 + //0x000037d0 LBB0_750 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000037d0 movq $32(%rsp), %rcx + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x19, //0x000037d5 vmovdqu (%rcx,%r11), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xc8, //0x000037db vpcmpgtb %ymm8, %ymm0, %ymm1 + 0xc5, 0xb5, 0x64, 0xd0, //0x000037e0 vpcmpgtb %ymm0, %ymm9, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x000037e4 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xad, 0x74, 0xd0, //0x000037e8 vpcmpeqb %ymm0, %ymm10, %ymm2 + 0xc5, 0xa5, 0x74, 0xd8, //0x000037ec vpcmpeqb %ymm0, %ymm11, %ymm3 + 0xc5, 0xe5, 0xeb, 0xd2, //0x000037f0 vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x9d, 0xdb, 0xd8, //0x000037f4 vpand %ymm0, %ymm12, %ymm3 + 0xc5, 0x95, 0x74, 0xc0, //0x000037f8 vpcmpeqb %ymm0, %ymm13, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x000037fc vpmovmskb %ymm0, %esi + 0xc5, 0x8d, 0x74, 0xdb, //0x00003800 vpcmpeqb %ymm3, %ymm14, %ymm3 + 0xc5, 0xfd, 0xd7, 0xfb, //0x00003804 vpmovmskb %ymm3, %edi + 0xc5, 0xfd, 0xd7, 0xda, //0x00003808 vpmovmskb %ymm2, %ebx + 0xc5, 0xf5, 0xeb, 0xc0, //0x0000380c vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x00003810 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x00003814 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00003818 vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x0000381c notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x0000381f bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x00003823 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00003826 je LBB0_752 + 0xba, 0xff, 0xff, 0xff, 0xff, //0x0000382c movl $-1, %edx + 0xd3, 0xe2, //0x00003831 shll %cl, %edx + 0xf7, 0xd2, //0x00003833 notl %edx + 0x21, 0xd6, //0x00003835 andl %edx, %esi + 0x21, 0xd7, //0x00003837 andl %edx, %edi + 0x21, 0xda, //0x00003839 andl %ebx, %edx + 0x89, 0xd3, //0x0000383b movl %edx, %ebx + //0x0000383d LBB0_752 + 0x8d, 0x56, 0xff, //0x0000383d leal $-1(%rsi), %edx + 0x21, 0xf2, //0x00003840 andl %esi, %edx + 0x0f, 0x85, 0x78, 0x0c, 0x00, 0x00, //0x00003842 jne LBB0_935 + 0x8d, 0x57, 0xff, //0x00003848 leal $-1(%rdi), %edx + 0x21, 0xfa, //0x0000384b andl %edi, %edx + 0x0f, 0x85, 0x6d, 0x0c, 0x00, 0x00, //0x0000384d jne LBB0_935 + 0x8d, 0x53, 0xff, //0x00003853 leal $-1(%rbx), %edx + 0x21, 0xda, //0x00003856 andl %ebx, %edx + 0x0f, 0x85, 0x62, 0x0c, 0x00, 0x00, //0x00003858 jne LBB0_935 + 0x85, 0xf6, //0x0000385e testl %esi, %esi + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00003860 je LBB0_758 + 0x0f, 0xbc, 0xf6, //0x00003866 bsfl %esi, %esi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00003869 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0x9b, 0x0d, 0x00, 0x00, //0x0000386f jne LBB0_951 + 0x4c, 0x01, 0xde, //0x00003875 addq %r11, %rsi + 0x48, 0x89, 0x74, 0x24, 0x30, //0x00003878 movq %rsi, $48(%rsp) + //0x0000387d LBB0_758 + 0x85, 0xff, //0x0000387d testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000387f je LBB0_761 + 0x0f, 0xbc, 0xf7, //0x00003885 bsfl %edi, %esi + 0x48, 0x83, 0xf8, 0xff, //0x00003888 cmpq $-1, %rax + 0x0f, 0x85, 0x7e, 0x0d, 0x00, 0x00, //0x0000388c jne LBB0_951 + 0x4c, 0x01, 0xde, //0x00003892 addq %r11, %rsi + 0x48, 0x89, 0xf0, //0x00003895 movq %rsi, %rax + //0x00003898 LBB0_761 + 0x85, 0xdb, //0x00003898 testl %ebx, %ebx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000389a je LBB0_764 + 0x0f, 0xbc, 0xf3, //0x000038a0 bsfl %ebx, %esi + 0x49, 0x83, 0xfc, 0xff, //0x000038a3 cmpq $-1, %r12 + 0x0f, 0x85, 0x63, 0x0d, 0x00, 0x00, //0x000038a7 jne LBB0_951 + 0x4c, 0x01, 0xde, //0x000038ad addq %r11, %rsi + 0x49, 0x89, 0xf4, //0x000038b0 movq %rsi, %r12 + //0x000038b3 LBB0_764 + 0x83, 0xf9, 0x20, //0x000038b3 cmpl $32, %ecx + 0x0f, 0x85, 0x5c, 0x04, 0x00, 0x00, //0x000038b6 jne LBB0_823 + 0x49, 0x83, 0xc0, 0xe0, //0x000038bc addq $-32, %r8 + 0x49, 0x83, 0xc3, 0x20, //0x000038c0 addq $32, %r11 + 0x49, 0x83, 0xf8, 0x1f, //0x000038c4 cmpq $31, %r8 + 0x0f, 0x87, 0x02, 0xff, 0xff, 0xff, //0x000038c8 ja LBB0_750 + 0xc5, 0xf8, 0x77, //0x000038ce vzeroupper + 0xc5, 0x7a, 0x6f, 0x3d, 0x47, 0xc9, 0xff, 0xff, //0x000038d1 vmovdqu $-14009(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xdf, 0xc8, 0xff, 0xff, //0x000038d9 vmovdqu $-14113(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xb7, 0xc8, 0xff, 0xff, //0x000038e1 vmovdqu $-14153(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x4f, 0xc7, 0xff, 0xff, //0x000038e9 vmovdqu $-14513(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x87, 0xc8, 0xff, 0xff, //0x000038f1 vmovdqu $-14201(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x5f, 0xc8, 0xff, 0xff, //0x000038f9 vmovdqu $-14241(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0x37, 0xc8, 0xff, 0xff, //0x00003901 vmovdqu $-14281(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x0f, 0xc8, 0xff, 0xff, //0x00003909 vmovdqu $-14321(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x87, 0xc7, 0xff, 0xff, //0x00003911 vmovdqu $-14457(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x5f, 0xc7, 0xff, 0xff, //0x00003919 vmovdqu $-14497(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0xd7, 0xc6, 0xff, 0xff, //0x00003921 vmovdqu $-14633(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0x4c, 0x03, 0x5c, 0x24, 0x20, //0x00003929 addq $32(%rsp), %r11 + 0x49, 0x83, 0xf8, 0x10, //0x0000392e cmpq $16, %r8 + 0x0f, 0x82, 0x41, 0x01, 0x00, 0x00, //0x00003932 jb LBB0_785 + //0x00003938 LBB0_767 + 0x4d, 0x89, 0xde, //0x00003938 movq %r11, %r14 + 0x4c, 0x2b, 0x74, 0x24, 0x38, //0x0000393b subq $56(%rsp), %r14 + 0x4d, 0x29, 0xfe, //0x00003940 subq %r15, %r14 + 0x49, 0x83, 0xc6, 0x01, //0x00003943 addq $1, %r14 + 0x31, 0xdb, //0x00003947 xorl %ebx, %ebx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003949 .p2align 4, 0x90 + //0x00003950 LBB0_768 + 0xc4, 0xc1, 0x7a, 0x6f, 0x04, 0x1b, //0x00003950 vmovdqu (%r11,%rbx), %xmm0 + 0xc4, 0xc1, 0x79, 0x64, 0xcf, //0x00003956 vpcmpgtb %xmm15, %xmm0, %xmm1 + 0xc5, 0xfa, 0x6f, 0x15, 0xcd, 0xc8, 0xff, 0xff, //0x0000395b vmovdqu $-14131(%rip), %xmm2 /* LCPI0_20+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x00003963 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00003967 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0xcd, 0xc8, 0xff, 0xff, //0x0000396b vpcmpeqb $-14131(%rip), %xmm0, %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xd5, 0xc8, 0xff, 0xff, //0x00003973 vpcmpeqb $-14123(%rip), %xmm0, %xmm3 /* LCPI0_22+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x0000397b vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x69, 0xc8, 0xff, 0xff, //0x0000397f vpand $-14231(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xd1, 0xc8, 0xff, 0xff, //0x00003987 vpcmpeqb $-14127(%rip), %xmm0, %xmm0 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0xd9, 0xc8, 0xff, 0xff, //0x0000398f vpcmpeqb $-14119(%rip), %xmm3, %xmm3 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00003997 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x0000399b vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x0000399f vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0xf9, 0xd7, 0xf0, //0x000039a3 vpmovmskb %xmm0, %esi + 0xc5, 0x79, 0xd7, 0xcb, //0x000039a7 vpmovmskb %xmm3, %r9d + 0xc5, 0xf9, 0xd7, 0xfa, //0x000039ab vpmovmskb %xmm2, %edi + 0xc5, 0xf9, 0xd7, 0xc9, //0x000039af vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x000039b3 notl %ecx + 0x0f, 0xbc, 0xc9, //0x000039b5 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x000039b8 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000039bb je LBB0_770 + 0xba, 0xff, 0xff, 0xff, 0xff, //0x000039c1 movl $-1, %edx + 0xd3, 0xe2, //0x000039c6 shll %cl, %edx + 0xf7, 0xd2, //0x000039c8 notl %edx + 0x21, 0xd6, //0x000039ca andl %edx, %esi + 0x41, 0x21, 0xd1, //0x000039cc andl %edx, %r9d + 0x21, 0xfa, //0x000039cf andl %edi, %edx + 0x89, 0xd7, //0x000039d1 movl %edx, %edi + //0x000039d3 LBB0_770 + 0x8d, 0x56, 0xff, //0x000039d3 leal $-1(%rsi), %edx + 0x21, 0xf2, //0x000039d6 andl %esi, %edx + 0x0f, 0x85, 0xd7, 0x0c, 0x00, 0x00, //0x000039d8 jne LBB0_954 + 0x41, 0x8d, 0x51, 0xff, //0x000039de leal $-1(%r9), %edx + 0x44, 0x21, 0xca, //0x000039e2 andl %r9d, %edx + 0x0f, 0x85, 0xca, 0x0c, 0x00, 0x00, //0x000039e5 jne LBB0_954 + 0x8d, 0x57, 0xff, //0x000039eb leal $-1(%rdi), %edx + 0x21, 0xfa, //0x000039ee andl %edi, %edx + 0x0f, 0x85, 0xbf, 0x0c, 0x00, 0x00, //0x000039f0 jne LBB0_954 + 0x85, 0xf6, //0x000039f6 testl %esi, %esi + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x000039f8 je LBB0_776 + 0x0f, 0xbc, 0xf6, //0x000039fe bsfl %esi, %esi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00003a01 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xc7, 0x0c, 0x00, 0x00, //0x00003a07 jne LBB0_957 + 0x4c, 0x01, 0xf6, //0x00003a0d addq %r14, %rsi + 0x48, 0x01, 0xde, //0x00003a10 addq %rbx, %rsi + 0x48, 0x89, 0x74, 0x24, 0x30, //0x00003a13 movq %rsi, $48(%rsp) + //0x00003a18 LBB0_776 + 0x45, 0x85, 0xc9, //0x00003a18 testl %r9d, %r9d + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00003a1b je LBB0_779 + 0x41, 0x0f, 0xbc, 0xf1, //0x00003a21 bsfl %r9d, %esi + 0x48, 0x83, 0xf8, 0xff, //0x00003a25 cmpq $-1, %rax + 0x0f, 0x85, 0xa5, 0x0c, 0x00, 0x00, //0x00003a29 jne LBB0_957 + 0x4c, 0x01, 0xf6, //0x00003a2f addq %r14, %rsi + 0x48, 0x01, 0xde, //0x00003a32 addq %rbx, %rsi + 0x48, 0x89, 0xf0, //0x00003a35 movq %rsi, %rax + //0x00003a38 LBB0_779 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00003a38 movq $8(%rsp), %r9 + 0x85, 0xff, //0x00003a3d testl %edi, %edi + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00003a3f je LBB0_782 + 0x0f, 0xbc, 0xf7, //0x00003a45 bsfl %edi, %esi + 0x49, 0x83, 0xfc, 0xff, //0x00003a48 cmpq $-1, %r12 + 0x0f, 0x85, 0xee, 0x0c, 0x00, 0x00, //0x00003a4c jne LBB0_964 + 0x4c, 0x01, 0xf6, //0x00003a52 addq %r14, %rsi + 0x48, 0x01, 0xde, //0x00003a55 addq %rbx, %rsi + 0x49, 0x89, 0xf4, //0x00003a58 movq %rsi, %r12 + //0x00003a5b LBB0_782 + 0x83, 0xf9, 0x10, //0x00003a5b cmpl $16, %ecx + 0x0f, 0x85, 0xcf, 0x02, 0x00, 0x00, //0x00003a5e jne LBB0_824 + 0x49, 0x83, 0xc0, 0xf0, //0x00003a64 addq $-16, %r8 + 0x48, 0x83, 0xc3, 0x10, //0x00003a68 addq $16, %rbx + 0x49, 0x83, 0xf8, 0x0f, //0x00003a6c cmpq $15, %r8 + 0x0f, 0x87, 0xda, 0xfe, 0xff, 0xff, //0x00003a70 ja LBB0_768 + 0x49, 0x01, 0xdb, //0x00003a76 addq %rbx, %r11 + //0x00003a79 LBB0_785 + 0x4d, 0x85, 0xc0, //0x00003a79 testq %r8, %r8 + 0x48, 0x8d, 0x1d, 0x69, 0x25, 0x00, 0x00, //0x00003a7c leaq $9577(%rip), %rbx /* LJTI0_5+0(%rip) */ + 0x0f, 0x84, 0xba, 0x02, 0x00, 0x00, //0x00003a83 je LBB0_826 + 0x4f, 0x8d, 0x34, 0x03, //0x00003a89 leaq (%r11,%r8), %r14 + 0x4c, 0x89, 0xdf, //0x00003a8d movq %r11, %rdi + 0x48, 0x2b, 0x7c, 0x24, 0x38, //0x00003a90 subq $56(%rsp), %rdi + 0x4c, 0x29, 0xff, //0x00003a95 subq %r15, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00003a98 addq $1, %rdi + 0x31, 0xc9, //0x00003a9c xorl %ecx, %ecx + 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x00003a9e jmp LBB0_791 + //0x00003aa3 LBB0_787 + 0x83, 0xfe, 0x65, //0x00003aa3 cmpl $101, %esi + 0x0f, 0x85, 0x94, 0x02, 0x00, 0x00, //0x00003aa6 jne LBB0_825 + //0x00003aac LBB0_788 + 0x48, 0x83, 0xf8, 0xff, //0x00003aac cmpq $-1, %rax + 0x0f, 0x85, 0x07, 0x0c, 0x00, 0x00, //0x00003ab0 jne LBB0_955 + 0x48, 0x8d, 0x04, 0x0f, //0x00003ab6 leaq (%rdi,%rcx), %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003aba .p2align 4, 0x90 + //0x00003ac0 LBB0_790 + 0x48, 0x83, 0xc1, 0x01, //0x00003ac0 addq $1, %rcx + 0x49, 0x39, 0xc8, //0x00003ac4 cmpq %rcx, %r8 + 0x0f, 0x84, 0x88, 0x09, 0x00, 0x00, //0x00003ac7 je LBB0_934 + //0x00003acd LBB0_791 + 0x41, 0x0f, 0xbe, 0x34, 0x0b, //0x00003acd movsbl (%r11,%rcx), %esi + 0x8d, 0x56, 0xd0, //0x00003ad2 leal $-48(%rsi), %edx + 0x83, 0xfa, 0x0a, //0x00003ad5 cmpl $10, %edx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00003ad8 jb LBB0_790 + 0x8d, 0x56, 0xd5, //0x00003ade leal $-43(%rsi), %edx + 0x83, 0xfa, 0x1a, //0x00003ae1 cmpl $26, %edx + 0x0f, 0x87, 0xb9, 0xff, 0xff, 0xff, //0x00003ae4 ja LBB0_787 + 0x48, 0x63, 0x14, 0x93, //0x00003aea movslq (%rbx,%rdx,4), %rdx + 0x48, 0x01, 0xda, //0x00003aee addq %rbx, %rdx + 0xff, 0xe2, //0x00003af1 jmpq *%rdx + //0x00003af3 LBB0_794 + 0x49, 0x83, 0xfc, 0xff, //0x00003af3 cmpq $-1, %r12 + 0x0f, 0x85, 0xc0, 0x0b, 0x00, 0x00, //0x00003af7 jne LBB0_955 + 0x4c, 0x8d, 0x24, 0x0f, //0x00003afd leaq (%rdi,%rcx), %r12 + 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00003b01 jmp LBB0_790 + //0x00003b06 LBB0_796 + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00003b06 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xab, 0x0b, 0x00, 0x00, //0x00003b0c jne LBB0_955 + 0x48, 0x8d, 0x14, 0x0f, //0x00003b12 leaq (%rdi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x30, //0x00003b16 movq %rdx, $48(%rsp) + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x00003b1b jmp LBB0_790 + //0x00003b20 LBB0_737 + 0x83, 0xff, 0x2c, //0x00003b20 cmpl $44, %edi + 0x0f, 0x85, 0x43, 0x00, 0x00, 0x00, //0x00003b23 jne LBB0_738 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00003b29 cmpq $4095, %rsi + 0x0f, 0x8f, 0x71, 0x14, 0x00, 0x00, //0x00003b30 jg LBB0_1135 + 0x48, 0x8d, 0x4e, 0x01, //0x00003b36 leaq $1(%rsi), %rcx + 0x49, 0x89, 0x0c, 0x24, //0x00003b3a movq %rcx, (%r12) + 0x49, 0xc7, 0x44, 0xf4, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00003b3e movq $3, $8(%r12,%rsi,8) + 0xe9, 0x14, 0xf8, 0xff, 0xff, //0x00003b47 jmp LBB0_674 + //0x00003b4c LBB0_739 + 0x40, 0x80, 0xff, 0x3a, //0x00003b4c cmpb $58, %dil + 0x0f, 0x85, 0xbc, 0x13, 0x00, 0x00, //0x00003b50 jne LBB0_1049 + 0x49, 0xc7, 0x04, 0xf4, 0x00, 0x00, 0x00, 0x00, //0x00003b56 movq $0, (%r12,%rsi,8) + 0xe9, 0xfd, 0xf7, 0xff, 0xff, //0x00003b5e jmp LBB0_674 + //0x00003b63 LBB0_741 + 0x83, 0xff, 0x22, //0x00003b63 cmpl $34, %edi + 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x00003b66 je LBB0_802 + //0x00003b6c LBB0_738 + 0x83, 0xff, 0x7d, //0x00003b6c cmpl $125, %edi + 0x0f, 0x85, 0x9d, 0x13, 0x00, 0x00, //0x00003b6f jne LBB0_1049 + //0x00003b75 LBB0_711 + 0x49, 0x89, 0x14, 0x24, //0x00003b75 movq %rdx, (%r12) + 0x4d, 0x89, 0xd5, //0x00003b79 movq %r10, %r13 + 0x48, 0x85, 0xd2, //0x00003b7c testq %rdx, %rdx + 0x0f, 0x85, 0xfb, 0xf7, 0xff, 0xff, //0x00003b7f jne LBB0_676 + 0xe9, 0x8f, 0x13, 0x00, 0x00, //0x00003b85 jmp LBB0_1050 + //0x00003b8a LBB0_798 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00003b8a cmpq $4095, %rsi + 0x0f, 0x8f, 0x10, 0x14, 0x00, 0x00, //0x00003b91 jg LBB0_1135 + 0x48, 0x8d, 0x4e, 0x01, //0x00003b97 leaq $1(%rsi), %rcx + 0x49, 0x89, 0x0c, 0x24, //0x00003b9b movq %rcx, (%r12) + 0x49, 0xc7, 0x44, 0xf4, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00003b9f movq $0, $8(%r12,%rsi,8) + 0xe9, 0xb3, 0xf7, 0xff, 0xff, //0x00003ba8 jmp LBB0_674 + //0x00003bad LBB0_802 + 0x49, 0xc7, 0x04, 0xf4, 0x02, 0x00, 0x00, 0x00, //0x00003bad movq $2, (%r12,%rsi,8) + 0x4d, 0x8b, 0x19, //0x00003bb5 movq (%r9), %r11 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00003bb8 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x08, //0x00003bbd movq (%rax), %r9 + 0x4c, 0x89, 0xc9, //0x00003bc0 movq %r9, %rcx + 0x4c, 0x29, 0xd9, //0x00003bc3 subq %r11, %rcx + 0x0f, 0x84, 0xdc, 0x1c, 0x00, 0x00, //0x00003bc6 je LBB0_1158 + 0x48, 0x83, 0xf9, 0x40, //0x00003bcc cmpq $64, %rcx + 0x0f, 0x82, 0x51, 0x0c, 0x00, 0x00, //0x00003bd0 jb LBB0_972 + 0x4c, 0x89, 0xdf, //0x00003bd6 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x00003bd9 notq %rdi + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003bdc movq $-1, %r8 + 0x4d, 0x89, 0xdd, //0x00003be3 movq %r11, %r13 + 0x45, 0x31, 0xf6, //0x00003be6 xorl %r14d, %r14d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003be9 .p2align 4, 0x90 + //0x00003bf0 LBB0_805 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x2f, //0x00003bf0 vmovdqu (%r15,%r13), %ymm0 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x2f, 0x20, //0x00003bf6 vmovdqu $32(%r15,%r13), %ymm1 0xc5, 0xfd, 0x74, 0xd6, //0x00003bfd vpcmpeqb %ymm6, %ymm0, %ymm2 @@ -3921,25 +3886,25 @@ var _text_get_by_path = []byte{ 0x48, 0x09, 0xc2, //0x00003c21 orq %rax, %rdx 0x48, 0xc1, 0xe3, 0x20, //0x00003c24 shlq $32, %rbx 0x48, 0x09, 0xde, //0x00003c28 orq %rbx, %rsi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00003c2b jne LBB0_828 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00003c2b jne LBB0_814 0x4d, 0x85, 0xf6, //0x00003c31 testq %r14, %r14 - 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00003c34 jne LBB0_830 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00003c34 jne LBB0_816 0x45, 0x31, 0xf6, //0x00003c3a xorl %r14d, %r14d 0x48, 0x85, 0xd2, //0x00003c3d testq %rdx, %rdx - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003c40 jne LBB0_831 - //0x00003c46 LBB0_822 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003c40 jne LBB0_817 + //0x00003c46 LBB0_808 0x48, 0x83, 0xc1, 0xc0, //0x00003c46 addq $-64, %rcx 0x48, 0x83, 0xc7, 0xc0, //0x00003c4a addq $-64, %rdi 0x49, 0x83, 0xc5, 0x40, //0x00003c4e addq $64, %r13 0x48, 0x83, 0xf9, 0x3f, //0x00003c52 cmpq $63, %rcx - 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00003c56 ja LBB0_819 - 0xe9, 0x37, 0x08, 0x00, 0x00, //0x00003c5c jmp LBB0_823 - //0x00003c61 LBB0_828 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00003c56 ja LBB0_805 + 0xe9, 0xca, 0x09, 0x00, 0x00, //0x00003c5c jmp LBB0_809 + //0x00003c61 LBB0_814 0x49, 0x83, 0xf8, 0xff, //0x00003c61 cmpq $-1, %r8 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003c65 jne LBB0_830 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003c65 jne LBB0_816 0x4c, 0x0f, 0xbc, 0xc6, //0x00003c6b bsfq %rsi, %r8 0x4d, 0x01, 0xe8, //0x00003c6f addq %r13, %r8 - //0x00003c72 LBB0_830 + //0x00003c72 LBB0_816 0x4c, 0x89, 0xf0, //0x00003c72 movq %r14, %rax 0x48, 0xf7, 0xd0, //0x00003c75 notq %rax 0x48, 0x21, 0xf0, //0x00003c78 andq %rsi, %rax @@ -3961,2380 +3926,2585 @@ var _text_get_by_path = []byte{ 0x48, 0x21, 0xda, //0x00003cb8 andq %rbx, %rdx 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003cbb movq $16(%rsp), %r12 0x48, 0x85, 0xd2, //0x00003cc0 testq %rdx, %rdx - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003cc3 je LBB0_822 - //0x00003cc9 LBB0_831 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003cc3 je LBB0_808 + //0x00003cc9 LBB0_817 0x4c, 0x0f, 0xbc, 0xea, //0x00003cc9 bsfq %rdx, %r13 0x49, 0x29, 0xfd, //0x00003ccd subq %rdi, %r13 - //0x00003cd0 LBB0_832 - 0x4d, 0x85, 0xed, //0x00003cd0 testq %r13, %r13 - 0x4c, 0x8d, 0x35, 0x52, 0x1d, 0x00, 0x00, //0x00003cd3 leaq $7506(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x0f, 0x89, 0x90, 0xf7, 0xff, 0xff, //0x00003cda jns LBB0_712 - 0xe9, 0xd1, 0x0f, 0x00, 0x00, //0x00003ce0 jmp LBB0_833 - //0x00003ce5 LBB0_836 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003ce5 movq $40(%rsp), %rax - 0x4c, 0x8b, 0x30, //0x00003cea movq (%rax), %r14 - 0x4d, 0x8b, 0x28, //0x00003ced movq (%r8), %r13 - 0x4d, 0x29, 0xee, //0x00003cf0 subq %r13, %r14 - 0x0f, 0x84, 0x3c, 0x17, 0x00, 0x00, //0x00003cf3 je LBB0_1105 - 0x4b, 0x8d, 0x04, 0x2f, //0x00003cf9 leaq (%r15,%r13), %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x00003cfd movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x00003d02 cmpb $48, (%rax) - 0x0f, 0x85, 0x68, 0x01, 0x00, 0x00, //0x00003d05 jne LBB0_860 - 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00003d0b movl $1, %r9d - 0x49, 0x83, 0xfe, 0x01, //0x00003d11 cmpq $1, %r14 - 0x0f, 0x85, 0x2a, 0x01, 0x00, 0x00, //0x00003d15 jne LBB0_858 - //0x00003d1b LBB0_839 - 0x4c, 0x89, 0xe9, //0x00003d1b movq %r13, %rcx - 0xe9, 0x6b, 0x08, 0x00, 0x00, //0x00003d1e jmp LBB0_950 - //0x00003d23 LBB0_840 - 0x49, 0x8b, 0x0c, 0x24, //0x00003d23 movq (%r12), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00003d27 cmpq $4095, %rcx - 0x0f, 0x8f, 0x76, 0x0f, 0x00, 0x00, //0x00003d2e jg LBB0_1108 - 0x48, 0x8d, 0x41, 0x01, //0x00003d34 leaq $1(%rcx), %rax - 0x49, 0x89, 0x04, 0x24, //0x00003d38 movq %rax, (%r12) - 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00003d3c movq $5, $8(%r12,%rcx,8) - 0xe9, 0x76, 0xf3, 0xff, 0xff, //0x00003d45 jmp LBB0_652 - //0x00003d4a LBB0_842 - 0x49, 0x8b, 0x08, //0x00003d4a movq (%r8), %rcx - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003d4d movq $40(%rsp), %rax - 0x48, 0x8b, 0x10, //0x00003d52 movq (%rax), %rdx - 0x48, 0x8d, 0x42, 0xfc, //0x00003d55 leaq $-4(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00003d59 cmpq %rax, %rcx - 0x0f, 0x87, 0x53, 0x16, 0x00, 0x00, //0x00003d5c ja LBB0_1107 - 0x41, 0x8b, 0x14, 0x0f, //0x00003d62 movl (%r15,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00003d66 cmpl $1702063201, %edx - 0x0f, 0x85, 0xcf, 0x16, 0x00, 0x00, //0x00003d6c jne LBB0_1109 - 0x48, 0x8d, 0x41, 0x04, //0x00003d72 leaq $4(%rcx), %rax - 0x49, 0x89, 0x00, //0x00003d76 movq %rax, (%r8) - 0x48, 0x85, 0xc9, //0x00003d79 testq %rcx, %rcx - 0x0f, 0x8f, 0x3e, 0xf3, 0xff, 0xff, //0x00003d7c jg LBB0_652 - 0xe9, 0xae, 0x17, 0x00, 0x00, //0x00003d82 jmp LBB0_845 - //0x00003d87 LBB0_846 - 0x49, 0x8b, 0x08, //0x00003d87 movq (%r8), %rcx - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003d8a movq $40(%rsp), %rax - 0x48, 0x8b, 0x10, //0x00003d8f movq (%rax), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00003d92 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00003d96 cmpq %rax, %rcx - 0x0f, 0x87, 0x16, 0x16, 0x00, 0x00, //0x00003d99 ja LBB0_1107 - 0x4c, 0x8d, 0x69, 0xff, //0x00003d9f leaq $-1(%rcx), %r13 - 0x41, 0x81, 0x7c, 0x0f, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00003da3 cmpl $1819047278, $-1(%r15,%rcx) - 0x0f, 0x84, 0x30, 0x00, 0x00, 0x00, //0x00003dac je LBB0_854 - 0xe9, 0xe4, 0x16, 0x00, 0x00, //0x00003db2 jmp LBB0_848 - //0x00003db7 LBB0_852 - 0x49, 0x8b, 0x08, //0x00003db7 movq (%r8), %rcx - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00003dba movq $40(%rsp), %rax - 0x48, 0x8b, 0x10, //0x00003dbf movq (%rax), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00003dc2 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00003dc6 cmpq %rax, %rcx - 0x0f, 0x87, 0xe6, 0x15, 0x00, 0x00, //0x00003dc9 ja LBB0_1107 - 0x4c, 0x8d, 0x69, 0xff, //0x00003dcf leaq $-1(%rcx), %r13 - 0x41, 0x81, 0x7c, 0x0f, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00003dd3 cmpl $1702195828, $-1(%r15,%rcx) - 0x0f, 0x85, 0x00, 0x17, 0x00, 0x00, //0x00003ddc jne LBB0_1114 - //0x00003de2 LBB0_854 - 0x48, 0x8d, 0x41, 0x03, //0x00003de2 leaq $3(%rcx), %rax - 0x49, 0x89, 0x00, //0x00003de6 movq %rax, (%r8) - 0x48, 0x85, 0xc9, //0x00003de9 testq %rcx, %rcx - 0x0f, 0x8f, 0xce, 0xf2, 0xff, 0xff, //0x00003dec jg LBB0_652 - 0xe9, 0x9e, 0x0e, 0x00, 0x00, //0x00003df2 jmp LBB0_1026 - //0x00003df7 LBB0_855 - 0x49, 0x8b, 0x0c, 0x24, //0x00003df7 movq (%r12), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00003dfb cmpq $4095, %rcx - 0x0f, 0x8f, 0xa2, 0x0e, 0x00, 0x00, //0x00003e02 jg LBB0_1108 - 0x48, 0x8d, 0x41, 0x01, //0x00003e08 leaq $1(%rcx), %rax - 0x49, 0x89, 0x04, 0x24, //0x00003e0c movq %rax, (%r12) - 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x06, 0x00, 0x00, 0x00, //0x00003e10 movq $6, $8(%r12,%rcx,8) - 0xe9, 0xa2, 0xf2, 0xff, 0xff, //0x00003e19 jmp LBB0_652 - //0x00003e1e LBB0_857 - 0x48, 0x8d, 0x50, 0xff, //0x00003e1e leaq $-1(%rax), %rdx - 0x48, 0x39, 0xd7, //0x00003e22 cmpq %rdx, %rdi - 0x48, 0xf7, 0xd0, //0x00003e25 notq %rax - 0x49, 0x0f, 0x45, 0xc3, //0x00003e28 cmovneq %r11, %rax - 0x84, 0xc9, //0x00003e2c testb %cl, %cl - 0x4c, 0x0f, 0x45, 0xd8, //0x00003e2e cmovneq %rax, %r11 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003e32 movq $16(%rsp), %r12 - 0x4d, 0x85, 0xdb, //0x00003e37 testq %r11, %r11 - 0x0f, 0x89, 0x58, 0xf2, 0xff, 0xff, //0x00003e3a jns LBB0_936 - 0xe9, 0xb8, 0x0e, 0x00, 0x00, //0x00003e40 jmp LBB0_1030 - //0x00003e45 LBB0_858 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00003e45 movq $56(%rsp), %rax - 0x8a, 0x48, 0x01, //0x00003e4a movb $1(%rax), %cl - 0x80, 0xc1, 0xd2, //0x00003e4d addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00003e50 cmpb $55, %cl - 0x0f, 0x87, 0xc2, 0xfe, 0xff, 0xff, //0x00003e53 ja LBB0_839 - 0x0f, 0xb6, 0xc1, //0x00003e59 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003e5c movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x00003e66 btq %rax, %rcx - 0x4c, 0x89, 0xe9, //0x00003e6a movq %r13, %rcx - 0x0f, 0x83, 0x1b, 0x07, 0x00, 0x00, //0x00003e6d jae LBB0_950 - //0x00003e73 LBB0_860 - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x00003e73 movq $-1, %r12 - 0x49, 0x83, 0xfe, 0x20, //0x00003e7a cmpq $32, %r14 - 0x0f, 0x82, 0xe2, 0x07, 0x00, 0x00, //0x00003e7e jb LBB0_959 - 0x45, 0x31, 0xc9, //0x00003e84 xorl %r9d, %r9d - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003e87 movq $-1, %r8 - 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00003e8e movq $-1, $48(%rsp) - //0x00003e97 LBB0_862 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00003e97 movq $56(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x08, //0x00003e9c vmovdqu (%rax,%r9), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xc8, //0x00003ea2 vpcmpgtb %ymm8, %ymm0, %ymm1 - 0xc5, 0xb5, 0x64, 0xd0, //0x00003ea7 vpcmpgtb %ymm0, %ymm9, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00003eab vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xad, 0x74, 0xd0, //0x00003eaf vpcmpeqb %ymm0, %ymm10, %ymm2 - 0xc5, 0xa5, 0x74, 0xd8, //0x00003eb3 vpcmpeqb %ymm0, %ymm11, %ymm3 - 0xc5, 0xe5, 0xeb, 0xd2, //0x00003eb7 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x9d, 0xdb, 0xd8, //0x00003ebb vpand %ymm0, %ymm12, %ymm3 - 0xc5, 0x95, 0x74, 0xc0, //0x00003ebf vpcmpeqb %ymm0, %ymm13, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00003ec3 vpmovmskb %ymm0, %ebx - 0xc5, 0x8d, 0x74, 0xdb, //0x00003ec7 vpcmpeqb %ymm3, %ymm14, %ymm3 - 0xc5, 0xfd, 0xd7, 0xf3, //0x00003ecb vpmovmskb %ymm3, %esi - 0xc5, 0xfd, 0xd7, 0xfa, //0x00003ecf vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0xeb, 0xc0, //0x00003ed3 vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x00003ed7 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x00003edb vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x00003edf vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x00003ee3 notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x00003ee6 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x00003eea cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00003eed je LBB0_864 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00003ef3 movl $-1, %eax - 0xd3, 0xe0, //0x00003ef8 shll %cl, %eax - 0xf7, 0xd0, //0x00003efa notl %eax - 0x21, 0xc3, //0x00003efc andl %eax, %ebx - 0x21, 0xc6, //0x00003efe andl %eax, %esi - 0x21, 0xf8, //0x00003f00 andl %edi, %eax - 0x89, 0xc7, //0x00003f02 movl %eax, %edi - //0x00003f04 LBB0_864 - 0x8d, 0x53, 0xff, //0x00003f04 leal $-1(%rbx), %edx - 0x21, 0xda, //0x00003f07 andl %ebx, %edx - 0x0f, 0x85, 0x81, 0x05, 0x00, 0x00, //0x00003f09 jne LBB0_939 - 0x8d, 0x56, 0xff, //0x00003f0f leal $-1(%rsi), %edx - 0x21, 0xf2, //0x00003f12 andl %esi, %edx - 0x0f, 0x85, 0x76, 0x05, 0x00, 0x00, //0x00003f14 jne LBB0_939 - 0x8d, 0x57, 0xff, //0x00003f1a leal $-1(%rdi), %edx - 0x21, 0xfa, //0x00003f1d andl %edi, %edx - 0x0f, 0x85, 0x6b, 0x05, 0x00, 0x00, //0x00003f1f jne LBB0_939 - 0x85, 0xdb, //0x00003f25 testl %ebx, %ebx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00003f27 je LBB0_870 - 0x0f, 0xbc, 0xdb, //0x00003f2d bsfl %ebx, %ebx - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00003f30 cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0x34, 0x06, 0x00, 0x00, //0x00003f36 jne LBB0_946 - 0x4c, 0x01, 0xcb, //0x00003f3c addq %r9, %rbx - 0x48, 0x89, 0x5c, 0x24, 0x30, //0x00003f3f movq %rbx, $48(%rsp) - //0x00003f44 LBB0_870 - 0x85, 0xf6, //0x00003f44 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003f46 je LBB0_873 - 0x0f, 0xbc, 0xf6, //0x00003f4c bsfl %esi, %esi - 0x49, 0x83, 0xf8, 0xff, //0x00003f4f cmpq $-1, %r8 - 0x0f, 0x85, 0xcf, 0x05, 0x00, 0x00, //0x00003f53 jne LBB0_943 - 0x4c, 0x01, 0xce, //0x00003f59 addq %r9, %rsi - 0x49, 0x89, 0xf0, //0x00003f5c movq %rsi, %r8 - //0x00003f5f LBB0_873 - 0x85, 0xff, //0x00003f5f testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003f61 je LBB0_876 - 0x0f, 0xbc, 0xf7, //0x00003f67 bsfl %edi, %esi - 0x49, 0x83, 0xfc, 0xff, //0x00003f6a cmpq $-1, %r12 - 0x0f, 0x85, 0xb4, 0x05, 0x00, 0x00, //0x00003f6e jne LBB0_943 - 0x4c, 0x01, 0xce, //0x00003f74 addq %r9, %rsi - 0x49, 0x89, 0xf4, //0x00003f77 movq %rsi, %r12 - //0x00003f7a LBB0_876 - 0x83, 0xf9, 0x20, //0x00003f7a cmpl $32, %ecx - 0x0f, 0x85, 0x0d, 0x02, 0x00, 0x00, //0x00003f7d jne LBB0_910 - 0x49, 0x83, 0xc6, 0xe0, //0x00003f83 addq $-32, %r14 - 0x49, 0x83, 0xc1, 0x20, //0x00003f87 addq $32, %r9 - 0x49, 0x83, 0xfe, 0x1f, //0x00003f8b cmpq $31, %r14 - 0x0f, 0x87, 0x02, 0xff, 0xff, 0xff, //0x00003f8f ja LBB0_862 - 0xc5, 0xf8, 0x77, //0x00003f95 vzeroupper - 0x4c, 0x03, 0x4c, 0x24, 0x38, //0x00003f98 addq $56(%rsp), %r9 - 0x4c, 0x89, 0x64, 0x24, 0x18, //0x00003f9d movq %r12, $24(%rsp) - 0x49, 0x83, 0xfe, 0x10, //0x00003fa2 cmpq $16, %r14 - 0xc5, 0x7a, 0x6f, 0x3d, 0x72, 0xc2, 0xff, 0xff, //0x00003fa6 vmovdqu $-15758(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0x0f, 0x82, 0x37, 0x01, 0x00, 0x00, //0x00003fae jb LBB0_897 - //0x00003fb4 LBB0_879 - 0x4d, 0x89, 0xcc, //0x00003fb4 movq %r9, %r12 - 0x4c, 0x2b, 0x64, 0x24, 0x38, //0x00003fb7 subq $56(%rsp), %r12 - 0x31, 0xc0, //0x00003fbc xorl %eax, %eax - //0x00003fbe LBB0_880 - 0xc4, 0xc1, 0x7a, 0x6f, 0x04, 0x01, //0x00003fbe vmovdqu (%r9,%rax), %xmm0 - 0xc4, 0xc1, 0x79, 0x64, 0xcf, //0x00003fc4 vpcmpgtb %xmm15, %xmm0, %xmm1 - 0xc5, 0xfa, 0x6f, 0x15, 0x5f, 0xc2, 0xff, 0xff, //0x00003fc9 vmovdqu $-15777(%rip), %xmm2 /* LCPI0_20+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00003fd1 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00003fd5 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x5f, 0xc2, 0xff, 0xff, //0x00003fd9 vpcmpeqb $-15777(%rip), %xmm0, %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x67, 0xc2, 0xff, 0xff, //0x00003fe1 vpcmpeqb $-15769(%rip), %xmm0, %xmm3 /* LCPI0_22+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00003fe9 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0xfb, 0xc1, 0xff, 0xff, //0x00003fed vpand $-15877(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x63, 0xc2, 0xff, 0xff, //0x00003ff5 vpcmpeqb $-15773(%rip), %xmm0, %xmm0 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x6b, 0xc2, 0xff, 0xff, //0x00003ffd vpcmpeqb $-15765(%rip), %xmm3, %xmm3 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00004005 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00004009 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x0000400d vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xd8, //0x00004011 vpmovmskb %xmm0, %r11d - 0xc5, 0xf9, 0xd7, 0xf3, //0x00004015 vpmovmskb %xmm3, %esi - 0xc5, 0xf9, 0xd7, 0xfa, //0x00004019 vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc9, //0x0000401d vpmovmskb %xmm1, %ecx - 0xf7, 0xd1, //0x00004021 notl %ecx - 0x0f, 0xbc, 0xc9, //0x00004023 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00004026 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004029 je LBB0_882 - 0xbb, 0xff, 0xff, 0xff, 0xff, //0x0000402f movl $-1, %ebx - 0xd3, 0xe3, //0x00004034 shll %cl, %ebx - 0xf7, 0xd3, //0x00004036 notl %ebx - 0x41, 0x21, 0xdb, //0x00004038 andl %ebx, %r11d - 0x21, 0xde, //0x0000403b andl %ebx, %esi - 0x21, 0xfb, //0x0000403d andl %edi, %ebx - 0x89, 0xdf, //0x0000403f movl %ebx, %edi - //0x00004041 LBB0_882 - 0x41, 0x8d, 0x5b, 0xff, //0x00004041 leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00004045 andl %r11d, %ebx - 0x0f, 0x85, 0x9d, 0x04, 0x00, 0x00, //0x00004048 jne LBB0_940 - 0x8d, 0x5e, 0xff, //0x0000404e leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00004051 andl %esi, %ebx - 0x0f, 0x85, 0x92, 0x04, 0x00, 0x00, //0x00004053 jne LBB0_940 - 0x8d, 0x5f, 0xff, //0x00004059 leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x0000405c andl %edi, %ebx - 0x0f, 0x85, 0x87, 0x04, 0x00, 0x00, //0x0000405e jne LBB0_940 - 0x45, 0x85, 0xdb, //0x00004064 testl %r11d, %r11d - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00004067 je LBB0_888 - 0x41, 0x0f, 0xbc, 0xdb, //0x0000406d bsfl %r11d, %ebx - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00004071 cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0xc5, 0x05, 0x00, 0x00, //0x00004077 jne LBB0_957 - 0x4c, 0x01, 0xe3, //0x0000407d addq %r12, %rbx - 0x48, 0x01, 0xc3, //0x00004080 addq %rax, %rbx - 0x48, 0x89, 0x5c, 0x24, 0x30, //0x00004083 movq %rbx, $48(%rsp) - //0x00004088 LBB0_888 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x00004088 movq $32(%rsp), %r11 - 0x85, 0xf6, //0x0000408d testl %esi, %esi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000408f je LBB0_891 - 0x0f, 0xbc, 0xf6, //0x00004095 bsfl %esi, %esi - 0x49, 0x83, 0xf8, 0xff, //0x00004098 cmpq $-1, %r8 - 0x0f, 0x85, 0x07, 0x05, 0x00, 0x00, //0x0000409c jne LBB0_952 - 0x4c, 0x01, 0xe6, //0x000040a2 addq %r12, %rsi - 0x48, 0x01, 0xc6, //0x000040a5 addq %rax, %rsi - 0x49, 0x89, 0xf0, //0x000040a8 movq %rsi, %r8 - //0x000040ab LBB0_891 - 0x85, 0xff, //0x000040ab testl %edi, %edi - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x000040ad je LBB0_894 - 0x0f, 0xbc, 0xf7, //0x000040b3 bsfl %edi, %esi - 0x48, 0x83, 0x7c, 0x24, 0x18, 0xff, //0x000040b6 cmpq $-1, $24(%rsp) - 0x0f, 0x85, 0xe7, 0x04, 0x00, 0x00, //0x000040bc jne LBB0_952 - 0x4c, 0x01, 0xe6, //0x000040c2 addq %r12, %rsi - 0x48, 0x01, 0xc6, //0x000040c5 addq %rax, %rsi - 0x48, 0x89, 0x74, 0x24, 0x18, //0x000040c8 movq %rsi, $24(%rsp) - //0x000040cd LBB0_894 - 0x83, 0xf9, 0x10, //0x000040cd cmpl $16, %ecx - 0x0f, 0x85, 0x5d, 0x01, 0x00, 0x00, //0x000040d0 jne LBB0_913 - 0x49, 0x83, 0xc6, 0xf0, //0x000040d6 addq $-16, %r14 - 0x48, 0x83, 0xc0, 0x10, //0x000040da addq $16, %rax - 0x49, 0x83, 0xfe, 0x0f, //0x000040de cmpq $15, %r14 - 0x0f, 0x87, 0xd6, 0xfe, 0xff, 0xff, //0x000040e2 ja LBB0_880 - 0x49, 0x01, 0xc1, //0x000040e8 addq %rax, %r9 - //0x000040eb LBB0_897 - 0x4d, 0x85, 0xf6, //0x000040eb testq %r14, %r14 - 0x4c, 0x8b, 0x64, 0x24, 0x18, //0x000040ee movq $24(%rsp), %r12 - 0x0f, 0x84, 0x64, 0x01, 0x00, 0x00, //0x000040f3 je LBB0_915 - 0x4b, 0x8d, 0x34, 0x31, //0x000040f9 leaq (%r9,%r14), %rsi - 0x4c, 0x89, 0xcf, //0x000040fd movq %r9, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x38, //0x00004100 subq $56(%rsp), %rdi - 0x31, 0xc9, //0x00004105 xorl %ecx, %ecx - 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00004107 jmp LBB0_902 - //0x0000410c LBB0_899 - 0x49, 0x83, 0xfc, 0xff, //0x0000410c cmpq $-1, %r12 - 0x0f, 0x85, 0xfe, 0x03, 0x00, 0x00, //0x00004110 jne LBB0_942 - 0x4c, 0x8d, 0x24, 0x0f, //0x00004116 leaq (%rdi,%rcx), %r12 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000411a .p2align 4, 0x90 - //0x00004120 LBB0_901 - 0x48, 0x83, 0xc1, 0x01, //0x00004120 addq $1, %rcx - 0x49, 0x39, 0xce, //0x00004124 cmpq %rcx, %r14 - 0x0f, 0x84, 0x46, 0x03, 0x00, 0x00, //0x00004127 je LBB0_938 - //0x0000412d LBB0_902 - 0x41, 0x0f, 0xbe, 0x1c, 0x09, //0x0000412d movsbl (%r9,%rcx), %ebx - 0x8d, 0x43, 0xd0, //0x00004132 leal $-48(%rbx), %eax - 0x83, 0xf8, 0x0a, //0x00004135 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00004138 jb LBB0_901 - 0x8d, 0x53, 0xd5, //0x0000413e leal $-43(%rbx), %edx - 0x83, 0xfa, 0x1a, //0x00004141 cmpl $26, %edx - 0x0f, 0x87, 0x2a, 0x00, 0x00, 0x00, //0x00004144 ja LBB0_907 - 0x48, 0x8d, 0x1d, 0xe3, 0x1a, 0x00, 0x00, //0x0000414a leaq $6883(%rip), %rbx /* LJTI0_4+0(%rip) */ - 0x48, 0x63, 0x04, 0x93, //0x00004151 movslq (%rbx,%rdx,4), %rax - 0x48, 0x01, 0xd8, //0x00004155 addq %rbx, %rax - 0xff, 0xe0, //0x00004158 jmpq *%rax - //0x0000415a LBB0_905 - 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x0000415a cmpq $-1, $48(%rsp) - 0x0f, 0x85, 0xae, 0x03, 0x00, 0x00, //0x00004160 jne LBB0_942 - 0x48, 0x8d, 0x04, 0x0f, //0x00004166 leaq (%rdi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x30, //0x0000416a movq %rax, $48(%rsp) - 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000416f jmp LBB0_901 - //0x00004174 LBB0_907 - 0x83, 0xfb, 0x65, //0x00004174 cmpl $101, %ebx - 0x0f, 0x85, 0xdd, 0x00, 0x00, 0x00, //0x00004177 jne LBB0_914 - //0x0000417d LBB0_908 - 0x49, 0x83, 0xf8, 0xff, //0x0000417d cmpq $-1, %r8 - 0x0f, 0x85, 0x8d, 0x03, 0x00, 0x00, //0x00004181 jne LBB0_942 - 0x4c, 0x8d, 0x04, 0x0f, //0x00004187 leaq (%rdi,%rcx), %r8 - 0xe9, 0x90, 0xff, 0xff, 0xff, //0x0000418b jmp LBB0_901 - //0x00004190 LBB0_910 - 0x4c, 0x01, 0xc9, //0x00004190 addq %r9, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x38, //0x00004193 addq $56(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x00004198 vzeroupper - 0xc5, 0x7a, 0x6f, 0x3d, 0x7d, 0xc0, 0xff, 0xff, //0x0000419b vmovdqu $-16259(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0x49, 0x89, 0xc9, //0x000041a3 movq %rcx, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000041a6 movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x000041ad movq $48(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x000041b2 testq %rdx, %rdx - 0x0f, 0x85, 0xb7, 0x00, 0x00, 0x00, //0x000041b5 jne LBB0_916 - 0xe9, 0x8d, 0x13, 0x00, 0x00, //0x000041bb jmp LBB0_1106 - //0x000041c0 LBB0_911 - 0x4d, 0x89, 0xcb, //0x000041c0 movq %r9, %r11 - 0xe9, 0xe7, 0xf8, 0xff, 0xff, //0x000041c3 jmp LBB0_804 - //0x000041c8 LBB0_701 - 0x4d, 0x01, 0xfd, //0x000041c8 addq %r15, %r13 - 0x48, 0x83, 0xf9, 0x20, //0x000041cb cmpq $32, %rcx - 0x0f, 0x82, 0x1e, 0x05, 0x00, 0x00, //0x000041cf jb LBB0_964 - //0x000041d5 LBB0_702 - 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x000041d5 vmovdqu (%r13), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000041db vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000041df vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc7, //0x000041e3 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000041e7 vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000041eb testl %esi, %esi - 0x0f, 0x85, 0xa4, 0x04, 0x00, 0x00, //0x000041ed jne LBB0_960 - 0x4d, 0x85, 0xf6, //0x000041f3 testq %r14, %r14 - 0x0f, 0x85, 0xb2, 0x04, 0x00, 0x00, //0x000041f6 jne LBB0_962 - 0x45, 0x31, 0xf6, //0x000041fc xorl %r14d, %r14d - 0x48, 0x85, 0xd2, //0x000041ff testq %rdx, %rdx - 0x0f, 0x84, 0xe3, 0x04, 0x00, 0x00, //0x00004202 je LBB0_963 - //0x00004208 LBB0_705 - 0x48, 0x0f, 0xbc, 0xc2, //0x00004208 bsfq %rdx, %rax - 0x4d, 0x29, 0xfd, //0x0000420c subq %r15, %r13 - 0x49, 0x01, 0xc5, //0x0000420f addq %rax, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x00004212 addq $1, %r13 - 0x4c, 0x8d, 0x35, 0x0f, 0x18, 0x00, 0x00, //0x00004216 leaq $6159(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x4d, 0x85, 0xed, //0x0000421d testq %r13, %r13 - 0x0f, 0x89, 0x4a, 0xf2, 0xff, 0xff, //0x00004220 jns LBB0_712 - 0xe9, 0x8b, 0x0a, 0x00, 0x00, //0x00004226 jmp LBB0_833 - //0x0000422b LBB0_912 - 0x0f, 0xbc, 0xc2, //0x0000422b bsfl %edx, %eax - 0xe9, 0x2d, 0x01, 0x00, 0x00, //0x0000422e jmp LBB0_930 - //0x00004233 LBB0_913 - 0x89, 0xc9, //0x00004233 movl %ecx, %ecx - 0x49, 0x01, 0xc9, //0x00004235 addq %rcx, %r9 - 0x49, 0x01, 0xc1, //0x00004238 addq %rax, %r9 - 0x4c, 0x8b, 0x64, 0x24, 0x18, //0x0000423b movq $24(%rsp), %r12 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00004240 movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00004247 movq $48(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x0000424c testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000424f jne LBB0_916 - 0xe9, 0xf3, 0x12, 0x00, 0x00, //0x00004255 jmp LBB0_1106 - //0x0000425a LBB0_914 - 0x49, 0x01, 0xc9, //0x0000425a addq %rcx, %r9 - //0x0000425d LBB0_915 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000425d movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00004264 movq $48(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00004269 testq %rdx, %rdx - 0x0f, 0x84, 0xdb, 0x12, 0x00, 0x00, //0x0000426c je LBB0_1106 - //0x00004272 LBB0_916 - 0x4d, 0x85, 0xe4, //0x00004272 testq %r12, %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0x83, 0xbd, 0xff, 0xff, //0x00004275 vmovdqu $-17021(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xfb, 0xbd, 0xff, 0xff, //0x0000427d vmovdqu $-16901(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x13, 0xbe, 0xff, 0xff, //0x00004285 vmovdqu $-16877(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x8b, 0xbe, 0xff, 0xff, //0x0000428d vmovdqu $-16757(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0xa3, 0xbe, 0xff, 0xff, //0x00004295 vmovdqu $-16733(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0xbb, 0xbe, 0xff, 0xff, //0x0000429d vmovdqu $-16709(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xd3, 0xbe, 0xff, 0xff, //0x000042a5 vmovdqu $-16685(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x8b, 0xbd, 0xff, 0xff, //0x000042ad vmovdqu $-17013(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xe3, 0xbe, 0xff, 0xff, //0x000042b5 vmovdqu $-16669(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xfb, 0xbe, 0xff, 0xff, //0x000042bd vmovdqu $-16645(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0x0f, 0x84, 0x82, 0x12, 0x00, 0x00, //0x000042c5 je LBB0_1106 - 0x4d, 0x85, 0xc0, //0x000042cb testq %r8, %r8 - 0x0f, 0x84, 0x79, 0x12, 0x00, 0x00, //0x000042ce je LBB0_1106 - 0x4c, 0x2b, 0x4c, 0x24, 0x38, //0x000042d4 subq $56(%rsp), %r9 - 0x49, 0x8d, 0x49, 0xff, //0x000042d9 leaq $-1(%r9), %rcx - 0x48, 0x39, 0xca, //0x000042dd cmpq %rcx, %rdx - 0x0f, 0x84, 0x34, 0x00, 0x00, 0x00, //0x000042e0 je LBB0_924 - 0x49, 0x39, 0xcc, //0x000042e6 cmpq %rcx, %r12 - 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x000042e9 je LBB0_924 - 0x49, 0x39, 0xc8, //0x000042ef cmpq %rcx, %r8 - 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x000042f2 je LBB0_924 - 0x4d, 0x85, 0xe4, //0x000042f8 testq %r12, %r12 - 0x0f, 0x8e, 0x21, 0x00, 0x00, 0x00, //0x000042fb jle LBB0_925 - 0x49, 0x8d, 0x44, 0x24, 0xff, //0x00004301 leaq $-1(%r12), %rax - 0x49, 0x39, 0xc0, //0x00004306 cmpq %rax, %r8 - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00004309 je LBB0_925 - 0x49, 0xf7, 0xd4, //0x0000430f notq %r12 - 0x4d, 0x89, 0xe1, //0x00004312 movq %r12, %r9 - 0xe9, 0x5e, 0x02, 0x00, 0x00, //0x00004315 jmp LBB0_948 - //0x0000431a LBB0_924 - 0x49, 0xf7, 0xd9, //0x0000431a negq %r9 - 0xe9, 0x56, 0x02, 0x00, 0x00, //0x0000431d jmp LBB0_948 - //0x00004322 LBB0_925 - 0x48, 0x89, 0xd0, //0x00004322 movq %rdx, %rax - 0x4c, 0x09, 0xc0, //0x00004325 orq %r8, %rax - 0x0f, 0x99, 0xc1, //0x00004328 setns %cl - 0x0f, 0x88, 0xb0, 0x00, 0x00, 0x00, //0x0000432b js LBB0_931 - 0x4c, 0x39, 0xc2, //0x00004331 cmpq %r8, %rdx - 0x0f, 0x8c, 0xa7, 0x00, 0x00, 0x00, //0x00004334 jl LBB0_931 - 0x48, 0xf7, 0xd2, //0x0000433a notq %rdx - 0x49, 0x89, 0xd1, //0x0000433d movq %rdx, %r9 - 0xe9, 0x33, 0x02, 0x00, 0x00, //0x00004340 jmp LBB0_948 - //0x00004345 LBB0_928 - 0x4d, 0x29, 0xfa, //0x00004345 subq %r15, %r10 - 0x49, 0x01, 0xfa, //0x00004348 addq %rdi, %r10 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x0000434b movq $8(%rsp), %r8 - 0x49, 0x39, 0xd2, //0x00004350 cmpq %rdx, %r10 - 0x0f, 0x82, 0x39, 0xef, 0xff, 0xff, //0x00004353 jb LBB0_684 - 0xe9, 0x1a, 0x09, 0x00, 0x00, //0x00004359 jmp LBB0_1021 - //0x0000435e LBB0_929 - 0x89, 0xf0, //0x0000435e movl %esi, %eax - //0x00004360 LBB0_930 - 0x49, 0xf7, 0xd3, //0x00004360 notq %r11 - 0x49, 0x29, 0xc3, //0x00004363 subq %rax, %r11 - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00004366 movq $8(%rsp), %rsi - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000436b movq $16(%rsp), %r12 - 0x4d, 0x85, 0xdb, //0x00004370 testq %r11, %r11 - 0x0f, 0x89, 0x1f, 0xed, 0xff, 0xff, //0x00004373 jns LBB0_936 - 0xe9, 0x7f, 0x09, 0x00, 0x00, //0x00004379 jmp LBB0_1030 - //0x0000437e LBB0_787 - 0x4d, 0x01, 0xfd, //0x0000437e addq %r15, %r13 - 0x48, 0x83, 0xf9, 0x20, //0x00004381 cmpq $32, %rcx - 0x0f, 0x82, 0x9d, 0x04, 0x00, 0x00, //0x00004385 jb LBB0_981 - //0x0000438b LBB0_788 - 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x0000438b vmovdqu (%r13), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00004391 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00004395 vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc7, //0x00004399 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x0000439d vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000043a1 testl %esi, %esi - 0x0f, 0x85, 0x23, 0x04, 0x00, 0x00, //0x000043a3 jne LBB0_977 - 0x4d, 0x85, 0xf6, //0x000043a9 testq %r14, %r14 - 0x0f, 0x85, 0x31, 0x04, 0x00, 0x00, //0x000043ac jne LBB0_979 - 0x45, 0x31, 0xf6, //0x000043b2 xorl %r14d, %r14d - 0x48, 0x85, 0xd2, //0x000043b5 testq %rdx, %rdx - 0x0f, 0x84, 0x62, 0x04, 0x00, 0x00, //0x000043b8 je LBB0_980 - //0x000043be LBB0_791 - 0x48, 0x0f, 0xbc, 0xc2, //0x000043be bsfq %rdx, %rax - 0x4d, 0x29, 0xfd, //0x000043c2 subq %r15, %r13 - 0x49, 0x01, 0xc5, //0x000043c5 addq %rax, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x000043c8 addq $1, %r13 - 0x4c, 0x8d, 0x35, 0x59, 0x16, 0x00, 0x00, //0x000043cc leaq $5721(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x4d, 0x85, 0xed, //0x000043d3 testq %r13, %r13 - 0x0f, 0x89, 0x64, 0xf6, 0xff, 0xff, //0x000043d6 jns LBB0_798 - 0xe9, 0xd5, 0x08, 0x00, 0x00, //0x000043dc jmp LBB0_833 - //0x000043e1 LBB0_931 - 0x49, 0x8d, 0x40, 0xff, //0x000043e1 leaq $-1(%r8), %rax - 0x48, 0x39, 0xc2, //0x000043e5 cmpq %rax, %rdx - 0x49, 0xf7, 0xd0, //0x000043e8 notq %r8 - 0x4d, 0x0f, 0x45, 0xc1, //0x000043eb cmovneq %r9, %r8 - 0x84, 0xc9, //0x000043ef testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xc8, //0x000043f1 cmovneq %r8, %r9 - 0xe9, 0x7e, 0x01, 0x00, 0x00, //0x000043f5 jmp LBB0_948 - //0x000043fa LBB0_932 - 0x0f, 0xbc, 0xc2, //0x000043fa bsfl %edx, %eax - 0xe9, 0x2c, 0x00, 0x00, 0x00, //0x000043fd jmp LBB0_935 - //0x00004402 LBB0_933 - 0x4c, 0x03, 0x7c, 0x24, 0x18, //0x00004402 addq $24(%rsp), %r15 - 0x4d, 0x29, 0xdf, //0x00004407 subq %r11, %r15 - 0x49, 0x29, 0xcf, //0x0000440a subq %rcx, %r15 - 0x49, 0x83, 0xc7, 0xfe, //0x0000440d addq $-2, %r15 - 0x4d, 0x89, 0xfb, //0x00004411 movq %r15, %r11 - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00004414 movq $8(%rsp), %rsi - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004419 movq $16(%rsp), %r12 - 0x4d, 0x85, 0xdb, //0x0000441e testq %r11, %r11 - 0x0f, 0x89, 0x71, 0xec, 0xff, 0xff, //0x00004421 jns LBB0_936 - 0xe9, 0xd1, 0x08, 0x00, 0x00, //0x00004427 jmp LBB0_1030 - //0x0000442c LBB0_934 - 0x89, 0xf0, //0x0000442c movl %esi, %eax - //0x0000442e LBB0_935 - 0x4c, 0x03, 0x7c, 0x24, 0x18, //0x0000442e addq $24(%rsp), %r15 - 0x4d, 0x29, 0xdf, //0x00004433 subq %r11, %r15 - 0x49, 0x29, 0xc7, //0x00004436 subq %rax, %r15 - 0x4d, 0x29, 0xcf, //0x00004439 subq %r9, %r15 - 0x49, 0x83, 0xc7, 0xfe, //0x0000443c addq $-2, %r15 - 0x4d, 0x89, 0xfb, //0x00004440 movq %r15, %r11 - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00004443 movq $8(%rsp), %rsi - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004448 movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0xd8, 0x15, 0x00, 0x00, //0x0000444d leaq $5592(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x4d, 0x85, 0xdb, //0x00004454 testq %r11, %r11 - 0x0f, 0x89, 0x3b, 0xec, 0xff, 0xff, //0x00004457 jns LBB0_936 - 0xe9, 0x9b, 0x08, 0x00, 0x00, //0x0000445d jmp LBB0_1030 - //0x00004462 LBB0_937 - 0x4d, 0x01, 0xfa, //0x00004462 addq %r15, %r10 - 0x48, 0x85, 0xf6, //0x00004465 testq %rsi, %rsi - 0x0f, 0x85, 0xba, 0xed, 0xff, 0xff, //0x00004468 jne LBB0_677 - 0xe9, 0xf4, 0xed, 0xff, 0xff, //0x0000446e jmp LBB0_682 - //0x00004473 LBB0_938 - 0x49, 0x89, 0xf1, //0x00004473 movq %rsi, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00004476 movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x0000447d movq $48(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00004482 testq %rdx, %rdx - 0x0f, 0x85, 0xe7, 0xfd, 0xff, 0xff, //0x00004485 jne LBB0_916 - 0xe9, 0xbd, 0x10, 0x00, 0x00, //0x0000448b jmp LBB0_1106 - //0x00004490 LBB0_939 - 0x0f, 0xbc, 0xc2, //0x00004490 bsfl %edx, %eax - 0xe9, 0xda, 0x00, 0x00, 0x00, //0x00004493 jmp LBB0_947 - //0x00004498 LBB0_823 - 0x4d, 0x01, 0xfd, //0x00004498 addq %r15, %r13 - 0x48, 0x83, 0xf9, 0x20, //0x0000449b cmpq $32, %rcx - 0x0f, 0x82, 0x40, 0x05, 0x00, 0x00, //0x0000449f jb LBB0_1002 - //0x000044a5 LBB0_824 - 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x000044a5 vmovdqu (%r13), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000044ab vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000044af vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc7, //0x000044b3 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000044b7 vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000044bb testl %esi, %esi - 0x0f, 0x85, 0xc6, 0x04, 0x00, 0x00, //0x000044bd jne LBB0_998 - 0x4d, 0x85, 0xf6, //0x000044c3 testq %r14, %r14 - 0x0f, 0x85, 0xd4, 0x04, 0x00, 0x00, //0x000044c6 jne LBB0_1000 - 0x45, 0x31, 0xf6, //0x000044cc xorl %r14d, %r14d - 0x48, 0x85, 0xd2, //0x000044cf testq %rdx, %rdx - 0x0f, 0x84, 0x05, 0x05, 0x00, 0x00, //0x000044d2 je LBB0_1001 - //0x000044d8 LBB0_827 - 0x48, 0x0f, 0xbc, 0xc2, //0x000044d8 bsfq %rdx, %rax - 0x4d, 0x29, 0xfd, //0x000044dc subq %r15, %r13 - 0x49, 0x01, 0xc5, //0x000044df addq %rax, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x000044e2 addq $1, %r13 - 0xe9, 0xe5, 0xf7, 0xff, 0xff, //0x000044e6 jmp LBB0_832 - //0x000044eb LBB0_940 - 0x0f, 0xbc, 0xcb, //0x000044eb bsfl %ebx, %ecx - //0x000044ee LBB0_941 - 0x4d, 0x01, 0xef, //0x000044ee addq %r13, %r15 - 0x4d, 0x29, 0xcf, //0x000044f1 subq %r9, %r15 - 0x49, 0x29, 0xcf, //0x000044f4 subq %rcx, %r15 - 0x48, 0xf7, 0xd0, //0x000044f7 notq %rax - 0x4c, 0x01, 0xf8, //0x000044fa addq %r15, %rax - 0x49, 0x89, 0xc1, //0x000044fd movq %rax, %r9 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00004500 movq $8(%rsp), %r8 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004505 movq $16(%rsp), %r12 - 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x0000450a movq $32(%rsp), %r11 - 0xe9, 0xb3, 0x00, 0x00, 0x00, //0x0000450f jmp LBB0_954 - //0x00004514 LBB0_942 - 0x4d, 0x01, 0xef, //0x00004514 addq %r13, %r15 - 0x4d, 0x29, 0xcf, //0x00004517 subq %r9, %r15 - 0x48, 0xf7, 0xd1, //0x0000451a notq %rcx - 0x4c, 0x01, 0xf9, //0x0000451d addq %r15, %rcx - 0x49, 0x89, 0xc9, //0x00004520 movq %rcx, %r9 - 0xe9, 0x95, 0x00, 0x00, 0x00, //0x00004523 jmp LBB0_953 - //0x00004528 LBB0_943 - 0x89, 0xf0, //0x00004528 movl %esi, %eax - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x0000452a jmp LBB0_947 - //0x0000452f LBB0_944 - 0x4f, 0x8d, 0x2c, 0x0f, //0x0000452f leaq (%r15,%r9), %r13 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004533 movq $-1, %r8 - 0x45, 0x31, 0xf6, //0x0000453a xorl %r14d, %r14d - 0x48, 0x83, 0xf9, 0x20, //0x0000453d cmpq $32, %rcx - 0x0f, 0x83, 0x8e, 0xfc, 0xff, 0xff, //0x00004541 jae LBB0_702 - 0xe9, 0xa7, 0x01, 0x00, 0x00, //0x00004547 jmp LBB0_964 - //0x0000454c LBB0_945 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000454c movq $-1, %rax - 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00004553 movq $-1, $48(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x0000455c movq $56(%rsp), %r11 - 0x49, 0x83, 0xf8, 0x10, //0x00004561 cmpq $16, %r8 - 0x0f, 0x83, 0x6d, 0xf1, 0xff, 0xff, //0x00004565 jae LBB0_745 - 0xe9, 0x9f, 0xf2, 0xff, 0xff, //0x0000456b jmp LBB0_763 - //0x00004570 LBB0_946 - 0x89, 0xd8, //0x00004570 movl %ebx, %eax - //0x00004572 LBB0_947 - 0x49, 0xf7, 0xd1, //0x00004572 notq %r9 - 0x49, 0x29, 0xc1, //0x00004575 subq %rax, %r9 - //0x00004578 LBB0_948 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x00004578 movq $8(%rsp), %r8 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000457d movq $16(%rsp), %r12 - 0x4d, 0x85, 0xc9, //0x00004582 testq %r9, %r9 - 0x0f, 0x88, 0xbf, 0x0f, 0x00, 0x00, //0x00004585 js LBB0_955 - //0x0000458b LBB0_949 - 0x49, 0x8b, 0x08, //0x0000458b movq (%r8), %rcx - //0x0000458e LBB0_950 - 0x4c, 0x01, 0xc9, //0x0000458e addq %r9, %rcx - 0x49, 0x89, 0x08, //0x00004591 movq %rcx, (%r8) - 0x4d, 0x85, 0xed, //0x00004594 testq %r13, %r13 - 0x4c, 0x8d, 0x35, 0x8e, 0x14, 0x00, 0x00, //0x00004597 leaq $5262(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x0f, 0x8f, 0x1c, 0xeb, 0xff, 0xff, //0x0000459e jg LBB0_652 - 0xe9, 0x98, 0x0f, 0x00, 0x00, //0x000045a4 jmp LBB0_951 - //0x000045a9 LBB0_952 - 0x89, 0xf1, //0x000045a9 movl %esi, %ecx - 0x4d, 0x01, 0xef, //0x000045ab addq %r13, %r15 - 0x4d, 0x29, 0xcf, //0x000045ae subq %r9, %r15 - 0x49, 0x29, 0xcf, //0x000045b1 subq %rcx, %r15 - 0x48, 0xf7, 0xd0, //0x000045b4 notq %rax - 0x4c, 0x01, 0xf8, //0x000045b7 addq %r15, %rax - 0x49, 0x89, 0xc1, //0x000045ba movq %rax, %r9 - //0x000045bd LBB0_953 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x000045bd movq $8(%rsp), %r8 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000045c2 movq $16(%rsp), %r12 - //0x000045c7 LBB0_954 - 0xc5, 0xfe, 0x6f, 0x2d, 0x31, 0xba, 0xff, 0xff, //0x000045c7 vmovdqu $-17871(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xa9, 0xba, 0xff, 0xff, //0x000045cf vmovdqu $-17751(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xc1, 0xba, 0xff, 0xff, //0x000045d7 vmovdqu $-17727(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x39, 0xbb, 0xff, 0xff, //0x000045df vmovdqu $-17607(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x0d, 0x51, 0xbb, 0xff, 0xff, //0x000045e7 vmovdqu $-17583(%rip), %ymm9 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x69, 0xbb, 0xff, 0xff, //0x000045ef vmovdqu $-17559(%rip), %ymm10 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x81, 0xbb, 0xff, 0xff, //0x000045f7 vmovdqu $-17535(%rip), %ymm11 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x39, 0xba, 0xff, 0xff, //0x000045ff vmovdqu $-17863(%rip), %ymm12 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x91, 0xbb, 0xff, 0xff, //0x00004607 vmovdqu $-17519(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xa9, 0xbb, 0xff, 0xff, //0x0000460f vmovdqu $-17495(%rip), %ymm14 /* LCPI0_18+0(%rip) */ - 0x4d, 0x85, 0xc9, //0x00004617 testq %r9, %r9 - 0x0f, 0x89, 0x6b, 0xff, 0xff, 0xff, //0x0000461a jns LBB0_949 - 0xe9, 0x25, 0x0f, 0x00, 0x00, //0x00004620 jmp LBB0_955 - //0x00004625 LBB0_956 - 0x4f, 0x8d, 0x2c, 0x0f, //0x00004625 leaq (%r15,%r9), %r13 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004629 movq $-1, %r8 - 0x45, 0x31, 0xf6, //0x00004630 xorl %r14d, %r14d - 0x48, 0x83, 0xf9, 0x20, //0x00004633 cmpq $32, %rcx - 0x0f, 0x83, 0x4e, 0xfd, 0xff, 0xff, //0x00004637 jae LBB0_788 - 0xe9, 0xe6, 0x01, 0x00, 0x00, //0x0000463d jmp LBB0_981 - //0x00004642 LBB0_957 - 0x89, 0xd9, //0x00004642 movl %ebx, %ecx - 0xe9, 0xa5, 0xfe, 0xff, 0xff, //0x00004644 jmp LBB0_941 - //0x00004649 LBB0_958 - 0x4f, 0x8d, 0x2c, 0x0f, //0x00004649 leaq (%r15,%r9), %r13 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000464d movq $-1, %r8 - 0x45, 0x31, 0xf6, //0x00004654 xorl %r14d, %r14d - 0x48, 0x83, 0xf9, 0x20, //0x00004657 cmpq $32, %rcx - 0x0f, 0x83, 0x44, 0xfe, 0xff, 0xff, //0x0000465b jae LBB0_824 - 0xe9, 0x7f, 0x03, 0x00, 0x00, //0x00004661 jmp LBB0_1002 - //0x00004666 LBB0_959 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004666 movq $-1, %r8 - 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x0000466d movq $-1, $48(%rsp) - 0x4c, 0x8b, 0x4c, 0x24, 0x38, //0x00004676 movq $56(%rsp), %r9 - 0x4c, 0x89, 0x64, 0x24, 0x18, //0x0000467b movq %r12, $24(%rsp) - 0x49, 0x83, 0xfe, 0x10, //0x00004680 cmpq $16, %r14 - 0xc5, 0x7a, 0x6f, 0x3d, 0x94, 0xbb, 0xff, 0xff, //0x00004684 vmovdqu $-17516(%rip), %xmm15 /* LCPI0_19+0(%rip) */ - 0x0f, 0x83, 0x22, 0xf9, 0xff, 0xff, //0x0000468c jae LBB0_879 - 0xe9, 0x54, 0xfa, 0xff, 0xff, //0x00004692 jmp LBB0_897 - //0x00004697 LBB0_960 - 0x49, 0x83, 0xf8, 0xff, //0x00004697 cmpq $-1, %r8 - 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x0000469b jne LBB0_962 - 0x4c, 0x89, 0xe8, //0x000046a1 movq %r13, %rax - 0x4c, 0x29, 0xf8, //0x000046a4 subq %r15, %rax - 0x4c, 0x0f, 0xbc, 0xc6, //0x000046a7 bsfq %rsi, %r8 - 0x49, 0x01, 0xc0, //0x000046ab addq %rax, %r8 - //0x000046ae LBB0_962 - 0x44, 0x89, 0xf0, //0x000046ae movl %r14d, %eax - 0xf7, 0xd0, //0x000046b1 notl %eax - 0x21, 0xf0, //0x000046b3 andl %esi, %eax - 0x8d, 0x3c, 0x00, //0x000046b5 leal (%rax,%rax), %edi - 0x41, 0x8d, 0x1c, 0x46, //0x000046b8 leal (%r14,%rax,2), %ebx - 0xf7, 0xd7, //0x000046bc notl %edi - 0x21, 0xf7, //0x000046be andl %esi, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000046c0 andl $-1431655766, %edi - 0x45, 0x31, 0xf6, //0x000046c6 xorl %r14d, %r14d - 0x01, 0xc7, //0x000046c9 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc6, //0x000046cb setb %r14b - 0x01, 0xff, //0x000046cf addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000046d1 xorl $1431655765, %edi - 0x21, 0xdf, //0x000046d7 andl %ebx, %edi - 0xf7, 0xd7, //0x000046d9 notl %edi - 0x21, 0xfa, //0x000046db andl %edi, %edx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000046dd movq $16(%rsp), %r12 - 0x48, 0x85, 0xd2, //0x000046e2 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0xfb, 0xff, 0xff, //0x000046e5 jne LBB0_705 - //0x000046eb LBB0_963 - 0x49, 0x83, 0xc5, 0x20, //0x000046eb addq $32, %r13 - 0x48, 0x83, 0xc1, 0xe0, //0x000046ef addq $-32, %rcx - //0x000046f3 LBB0_964 - 0x4d, 0x85, 0xf6, //0x000046f3 testq %r14, %r14 - 0x0f, 0x85, 0x05, 0x02, 0x00, 0x00, //0x000046f6 jne LBB0_994 - 0x4c, 0x89, 0xfa, //0x000046fc movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x000046ff notq %rdx - 0x4c, 0x89, 0xc7, //0x00004702 movq %r8, %rdi - 0x4c, 0x8d, 0x35, 0x20, 0x13, 0x00, 0x00, //0x00004705 leaq $4896(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x48, 0x85, 0xc9, //0x0000470c testq %rcx, %rcx - 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x0000470f je LBB0_976 - //0x00004715 LBB0_966 - 0x48, 0x83, 0xc2, 0x01, //0x00004715 addq $1, %rdx - //0x00004719 LBB0_967 - 0x31, 0xf6, //0x00004719 xorl %esi, %esi - //0x0000471b LBB0_968 - 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x0000471b movzbl (%r13,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x00004721 cmpb $34, %bl - 0x0f, 0x84, 0x6d, 0x00, 0x00, 0x00, //0x00004724 je LBB0_975 - 0x80, 0xfb, 0x5c, //0x0000472a cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000472d je LBB0_973 - 0x48, 0x83, 0xc6, 0x01, //0x00004733 addq $1, %rsi - 0x48, 0x39, 0xf1, //0x00004737 cmpq %rsi, %rcx - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000473a jne LBB0_968 - 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x00004740 jmp LBB0_971 - //0x00004745 LBB0_973 - 0x48, 0x8d, 0x41, 0xff, //0x00004745 leaq $-1(%rcx), %rax - 0x48, 0x39, 0xf0, //0x00004749 cmpq %rsi, %rax - 0x0f, 0x84, 0x6e, 0x05, 0x00, 0x00, //0x0000474c je LBB0_834 - 0x4a, 0x8d, 0x04, 0x2a, //0x00004752 leaq (%rdx,%r13), %rax - 0x48, 0x01, 0xf0, //0x00004756 addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x00004759 cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x0000475d cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x00004761 cmoveq %rax, %rdi - 0x49, 0x01, 0xf5, //0x00004765 addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x02, //0x00004768 addq $2, %r13 - 0x48, 0x89, 0xc8, //0x0000476c movq %rcx, %rax - 0x48, 0x29, 0xf0, //0x0000476f subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00004772 addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00004776 addq $-2, %rcx - 0x48, 0x39, 0xf1, //0x0000477a cmpq %rsi, %rcx - 0x48, 0x89, 0xc1, //0x0000477d movq %rax, %rcx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004780 movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0xa0, 0x12, 0x00, 0x00, //0x00004785 leaq $4768(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x0000478c jne LBB0_967 - 0xe9, 0x29, 0x05, 0x00, 0x00, //0x00004792 jmp LBB0_834 - //0x00004797 LBB0_975 - 0x49, 0x01, 0xf5, //0x00004797 addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x0000479a addq $1, %r13 - //0x0000479e LBB0_976 - 0x4d, 0x29, 0xfd, //0x0000479e subq %r15, %r13 - 0x4d, 0x85, 0xed, //0x000047a1 testq %r13, %r13 - 0x0f, 0x89, 0xc6, 0xec, 0xff, 0xff, //0x000047a4 jns LBB0_712 - 0xe9, 0x07, 0x05, 0x00, 0x00, //0x000047aa jmp LBB0_833 - //0x000047af LBB0_971 - 0x80, 0xfb, 0x22, //0x000047af cmpb $34, %bl - 0x0f, 0x85, 0x08, 0x05, 0x00, 0x00, //0x000047b2 jne LBB0_834 - 0x49, 0x01, 0xcd, //0x000047b8 addq %rcx, %r13 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000047bb movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0x65, 0x12, 0x00, 0x00, //0x000047c0 leaq $4709(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0xe9, 0xd2, 0xff, 0xff, 0xff, //0x000047c7 jmp LBB0_976 - //0x000047cc LBB0_977 - 0x49, 0x83, 0xf8, 0xff, //0x000047cc cmpq $-1, %r8 - 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x000047d0 jne LBB0_979 - 0x4c, 0x89, 0xe8, //0x000047d6 movq %r13, %rax - 0x4c, 0x29, 0xf8, //0x000047d9 subq %r15, %rax - 0x4c, 0x0f, 0xbc, 0xc6, //0x000047dc bsfq %rsi, %r8 - 0x49, 0x01, 0xc0, //0x000047e0 addq %rax, %r8 - //0x000047e3 LBB0_979 - 0x44, 0x89, 0xf0, //0x000047e3 movl %r14d, %eax - 0xf7, 0xd0, //0x000047e6 notl %eax - 0x21, 0xf0, //0x000047e8 andl %esi, %eax - 0x8d, 0x3c, 0x00, //0x000047ea leal (%rax,%rax), %edi - 0x41, 0x8d, 0x1c, 0x46, //0x000047ed leal (%r14,%rax,2), %ebx - 0xf7, 0xd7, //0x000047f1 notl %edi - 0x21, 0xf7, //0x000047f3 andl %esi, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000047f5 andl $-1431655766, %edi - 0x45, 0x31, 0xf6, //0x000047fb xorl %r14d, %r14d - 0x01, 0xc7, //0x000047fe addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc6, //0x00004800 setb %r14b - 0x01, 0xff, //0x00004804 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004806 xorl $1431655765, %edi - 0x21, 0xdf, //0x0000480c andl %ebx, %edi - 0xf7, 0xd7, //0x0000480e notl %edi - 0x21, 0xfa, //0x00004810 andl %edi, %edx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004812 movq $16(%rsp), %r12 - 0x48, 0x85, 0xd2, //0x00004817 testq %rdx, %rdx - 0x0f, 0x85, 0x9e, 0xfb, 0xff, 0xff, //0x0000481a jne LBB0_791 - //0x00004820 LBB0_980 - 0x49, 0x83, 0xc5, 0x20, //0x00004820 addq $32, %r13 - 0x48, 0x83, 0xc1, 0xe0, //0x00004824 addq $-32, %rcx - //0x00004828 LBB0_981 - 0x4d, 0x85, 0xf6, //0x00004828 testq %r14, %r14 - 0x0f, 0x85, 0x14, 0x01, 0x00, 0x00, //0x0000482b jne LBB0_996 - 0x4c, 0x89, 0xfa, //0x00004831 movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x00004834 notq %rdx - 0x4c, 0x89, 0xc7, //0x00004837 movq %r8, %rdi - 0x4c, 0x8d, 0x35, 0xeb, 0x11, 0x00, 0x00, //0x0000483a leaq $4587(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x48, 0x85, 0xc9, //0x00004841 testq %rcx, %rcx - 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x00004844 je LBB0_993 - //0x0000484a LBB0_983 - 0x48, 0x83, 0xc2, 0x01, //0x0000484a addq $1, %rdx - //0x0000484e LBB0_984 - 0x31, 0xf6, //0x0000484e xorl %esi, %esi - //0x00004850 LBB0_985 - 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x00004850 movzbl (%r13,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x00004856 cmpb $34, %bl - 0x0f, 0x84, 0x6d, 0x00, 0x00, 0x00, //0x00004859 je LBB0_992 - 0x80, 0xfb, 0x5c, //0x0000485f cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004862 je LBB0_990 - 0x48, 0x83, 0xc6, 0x01, //0x00004868 addq $1, %rsi - 0x48, 0x39, 0xf1, //0x0000486c cmpq %rsi, %rcx - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000486f jne LBB0_985 - 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x00004875 jmp LBB0_988 - //0x0000487a LBB0_990 - 0x48, 0x8d, 0x41, 0xff, //0x0000487a leaq $-1(%rcx), %rax - 0x48, 0x39, 0xf0, //0x0000487e cmpq %rsi, %rax - 0x0f, 0x84, 0x39, 0x04, 0x00, 0x00, //0x00004881 je LBB0_834 - 0x4a, 0x8d, 0x04, 0x2a, //0x00004887 leaq (%rdx,%r13), %rax - 0x48, 0x01, 0xf0, //0x0000488b addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x0000488e cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x00004892 cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x00004896 cmoveq %rax, %rdi - 0x49, 0x01, 0xf5, //0x0000489a addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x02, //0x0000489d addq $2, %r13 - 0x48, 0x89, 0xc8, //0x000048a1 movq %rcx, %rax - 0x48, 0x29, 0xf0, //0x000048a4 subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x000048a7 addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x000048ab addq $-2, %rcx - 0x48, 0x39, 0xf1, //0x000048af cmpq %rsi, %rcx - 0x48, 0x89, 0xc1, //0x000048b2 movq %rax, %rcx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000048b5 movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0x6b, 0x11, 0x00, 0x00, //0x000048ba leaq $4459(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x000048c1 jne LBB0_984 - 0xe9, 0xf4, 0x03, 0x00, 0x00, //0x000048c7 jmp LBB0_834 - //0x000048cc LBB0_992 - 0x49, 0x01, 0xf5, //0x000048cc addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x000048cf addq $1, %r13 - //0x000048d3 LBB0_993 - 0x4d, 0x29, 0xfd, //0x000048d3 subq %r15, %r13 - 0x4d, 0x85, 0xed, //0x000048d6 testq %r13, %r13 - 0x0f, 0x89, 0x61, 0xf1, 0xff, 0xff, //0x000048d9 jns LBB0_798 - 0xe9, 0xd2, 0x03, 0x00, 0x00, //0x000048df jmp LBB0_833 - //0x000048e4 LBB0_988 - 0x80, 0xfb, 0x22, //0x000048e4 cmpb $34, %bl - 0x0f, 0x85, 0xd3, 0x03, 0x00, 0x00, //0x000048e7 jne LBB0_834 - 0x49, 0x01, 0xcd, //0x000048ed addq %rcx, %r13 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000048f0 movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0x30, 0x11, 0x00, 0x00, //0x000048f5 leaq $4400(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0xe9, 0xd2, 0xff, 0xff, 0xff, //0x000048fc jmp LBB0_993 - //0x00004901 LBB0_994 - 0x48, 0x85, 0xc9, //0x00004901 testq %rcx, %rcx - 0x0f, 0x84, 0xb6, 0x03, 0x00, 0x00, //0x00004904 je LBB0_834 - 0x4c, 0x89, 0xfa, //0x0000490a movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x0000490d notq %rdx - 0x4a, 0x8d, 0x04, 0x2a, //0x00004910 leaq (%rdx,%r13), %rax - 0x49, 0x83, 0xf8, 0xff, //0x00004914 cmpq $-1, %r8 - 0x4c, 0x89, 0xc7, //0x00004918 movq %r8, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x0000491b cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x0000491f cmoveq %rax, %rdi - 0x49, 0x83, 0xc5, 0x01, //0x00004923 addq $1, %r13 - 0x48, 0x83, 0xc1, 0xff, //0x00004927 addq $-1, %rcx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000492b movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0xf5, 0x10, 0x00, 0x00, //0x00004930 leaq $4341(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x48, 0x85, 0xc9, //0x00004937 testq %rcx, %rcx - 0x0f, 0x85, 0xd5, 0xfd, 0xff, 0xff, //0x0000493a jne LBB0_966 - 0xe9, 0x59, 0xfe, 0xff, 0xff, //0x00004940 jmp LBB0_976 - //0x00004945 LBB0_996 - 0x48, 0x85, 0xc9, //0x00004945 testq %rcx, %rcx - 0x0f, 0x84, 0x72, 0x03, 0x00, 0x00, //0x00004948 je LBB0_834 - 0x4c, 0x89, 0xfa, //0x0000494e movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x00004951 notq %rdx - 0x4a, 0x8d, 0x04, 0x2a, //0x00004954 leaq (%rdx,%r13), %rax - 0x49, 0x83, 0xf8, 0xff, //0x00004958 cmpq $-1, %r8 - 0x4c, 0x89, 0xc7, //0x0000495c movq %r8, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x0000495f cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x00004963 cmoveq %rax, %rdi - 0x49, 0x83, 0xc5, 0x01, //0x00004967 addq $1, %r13 - 0x48, 0x83, 0xc1, 0xff, //0x0000496b addq $-1, %rcx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x0000496f movq $16(%rsp), %r12 - 0x4c, 0x8d, 0x35, 0xb1, 0x10, 0x00, 0x00, //0x00004974 leaq $4273(%rip), %r14 /* LJTI0_2+0(%rip) */ - 0x48, 0x85, 0xc9, //0x0000497b testq %rcx, %rcx - 0x0f, 0x85, 0xc6, 0xfe, 0xff, 0xff, //0x0000497e jne LBB0_983 - 0xe9, 0x4a, 0xff, 0xff, 0xff, //0x00004984 jmp LBB0_993 - //0x00004989 LBB0_998 - 0x49, 0x83, 0xf8, 0xff, //0x00004989 cmpq $-1, %r8 - 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x0000498d jne LBB0_1000 - 0x4c, 0x89, 0xe8, //0x00004993 movq %r13, %rax - 0x4c, 0x29, 0xf8, //0x00004996 subq %r15, %rax - 0x4c, 0x0f, 0xbc, 0xc6, //0x00004999 bsfq %rsi, %r8 - 0x49, 0x01, 0xc0, //0x0000499d addq %rax, %r8 - //0x000049a0 LBB0_1000 - 0x44, 0x89, 0xf0, //0x000049a0 movl %r14d, %eax - 0xf7, 0xd0, //0x000049a3 notl %eax - 0x21, 0xf0, //0x000049a5 andl %esi, %eax - 0x8d, 0x3c, 0x00, //0x000049a7 leal (%rax,%rax), %edi - 0x41, 0x8d, 0x1c, 0x46, //0x000049aa leal (%r14,%rax,2), %ebx - 0xf7, 0xd7, //0x000049ae notl %edi - 0x21, 0xf7, //0x000049b0 andl %esi, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000049b2 andl $-1431655766, %edi - 0x45, 0x31, 0xf6, //0x000049b8 xorl %r14d, %r14d - 0x01, 0xc7, //0x000049bb addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc6, //0x000049bd setb %r14b - 0x01, 0xff, //0x000049c1 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000049c3 xorl $1431655765, %edi - 0x21, 0xdf, //0x000049c9 andl %ebx, %edi - 0xf7, 0xd7, //0x000049cb notl %edi - 0x21, 0xfa, //0x000049cd andl %edi, %edx - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000049cf movq $16(%rsp), %r12 - 0x48, 0x85, 0xd2, //0x000049d4 testq %rdx, %rdx - 0x0f, 0x85, 0xfb, 0xfa, 0xff, 0xff, //0x000049d7 jne LBB0_827 - //0x000049dd LBB0_1001 - 0x49, 0x83, 0xc5, 0x20, //0x000049dd addq $32, %r13 - 0x48, 0x83, 0xc1, 0xe0, //0x000049e1 addq $-32, %rcx - //0x000049e5 LBB0_1002 - 0x4d, 0x85, 0xf6, //0x000049e5 testq %r14, %r14 - 0x0f, 0x85, 0xad, 0x00, 0x00, 0x00, //0x000049e8 jne LBB0_1015 - 0x4c, 0x89, 0xfa, //0x000049ee movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x000049f1 notq %rdx - 0x4c, 0x89, 0xc7, //0x000049f4 movq %r8, %rdi - 0x48, 0x85, 0xc9, //0x000049f7 testq %rcx, %rcx - 0x0f, 0x84, 0x7d, 0x00, 0x00, 0x00, //0x000049fa je LBB0_1014 - //0x00004a00 LBB0_1004 - 0x48, 0x83, 0xc2, 0x01, //0x00004a00 addq $1, %rdx - //0x00004a04 LBB0_1005 - 0x31, 0xf6, //0x00004a04 xorl %esi, %esi - //0x00004a06 LBB0_1006 - 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x00004a06 movzbl (%r13,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x00004a0c cmpb $34, %bl - 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x00004a0f je LBB0_1013 - 0x80, 0xfb, 0x5c, //0x00004a15 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004a18 je LBB0_1011 - 0x48, 0x83, 0xc6, 0x01, //0x00004a1e addq $1, %rsi - 0x48, 0x39, 0xf1, //0x00004a22 cmpq %rsi, %rcx - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x00004a25 jne LBB0_1006 - 0xe9, 0x5a, 0x00, 0x00, 0x00, //0x00004a2b jmp LBB0_1009 - //0x00004a30 LBB0_1011 - 0x48, 0x8d, 0x41, 0xff, //0x00004a30 leaq $-1(%rcx), %rax - 0x48, 0x39, 0xf0, //0x00004a34 cmpq %rsi, %rax - 0x0f, 0x84, 0x83, 0x02, 0x00, 0x00, //0x00004a37 je LBB0_834 - 0x4a, 0x8d, 0x04, 0x2a, //0x00004a3d leaq (%rdx,%r13), %rax - 0x48, 0x01, 0xf0, //0x00004a41 addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x00004a44 cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x00004a48 cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x00004a4c cmoveq %rax, %rdi - 0x49, 0x01, 0xf5, //0x00004a50 addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x02, //0x00004a53 addq $2, %r13 - 0x48, 0x89, 0xc8, //0x00004a57 movq %rcx, %rax - 0x48, 0x29, 0xf0, //0x00004a5a subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00004a5d addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00004a61 addq $-2, %rcx - 0x48, 0x39, 0xf1, //0x00004a65 cmpq %rsi, %rcx - 0x48, 0x89, 0xc1, //0x00004a68 movq %rax, %rcx - 0x0f, 0x85, 0x93, 0xff, 0xff, 0xff, //0x00004a6b jne LBB0_1005 - 0xe9, 0x4a, 0x02, 0x00, 0x00, //0x00004a71 jmp LBB0_834 - //0x00004a76 LBB0_1013 - 0x49, 0x01, 0xf5, //0x00004a76 addq %rsi, %r13 - 0x49, 0x83, 0xc5, 0x01, //0x00004a79 addq $1, %r13 - //0x00004a7d LBB0_1014 - 0x4d, 0x29, 0xfd, //0x00004a7d subq %r15, %r13 - 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004a80 movq $16(%rsp), %r12 - 0xe9, 0x46, 0xf2, 0xff, 0xff, //0x00004a85 jmp LBB0_832 - //0x00004a8a LBB0_1009 - 0x80, 0xfb, 0x22, //0x00004a8a cmpb $34, %bl - 0x0f, 0x85, 0x2d, 0x02, 0x00, 0x00, //0x00004a8d jne LBB0_834 - 0x49, 0x01, 0xcd, //0x00004a93 addq %rcx, %r13 - 0xe9, 0xe2, 0xff, 0xff, 0xff, //0x00004a96 jmp LBB0_1014 - //0x00004a9b LBB0_1015 - 0x48, 0x85, 0xc9, //0x00004a9b testq %rcx, %rcx - 0x0f, 0x84, 0x1c, 0x02, 0x00, 0x00, //0x00004a9e je LBB0_834 - 0x4c, 0x89, 0xfa, //0x00004aa4 movq %r15, %rdx - 0x48, 0xf7, 0xd2, //0x00004aa7 notq %rdx - 0x4a, 0x8d, 0x04, 0x2a, //0x00004aaa leaq (%rdx,%r13), %rax - 0x49, 0x83, 0xf8, 0xff, //0x00004aae cmpq $-1, %r8 - 0x4c, 0x89, 0xc7, //0x00004ab2 movq %r8, %rdi - 0x4c, 0x0f, 0x44, 0xc0, //0x00004ab5 cmoveq %rax, %r8 - 0x48, 0x0f, 0x44, 0xf8, //0x00004ab9 cmoveq %rax, %rdi - 0x49, 0x83, 0xc5, 0x01, //0x00004abd addq $1, %r13 - 0x48, 0x83, 0xc1, 0xff, //0x00004ac1 addq $-1, %rcx - 0x48, 0x85, 0xc9, //0x00004ac5 testq %rcx, %rcx - 0x0f, 0x85, 0x32, 0xff, 0xff, 0xff, //0x00004ac8 jne LBB0_1004 - 0xe9, 0xaa, 0xff, 0xff, 0xff, //0x00004ace jmp LBB0_1014 - //0x00004ad3 LBB0_1023 - 0x49, 0x89, 0xce, //0x00004ad3 movq %rcx, %r14 - 0xe9, 0xac, 0x01, 0x00, 0x00, //0x00004ad6 jmp LBB0_1024 - //0x00004adb LBB0_630 - 0x49, 0x83, 0xc6, 0xff, //0x00004adb addq $-1, %r14 - 0x4d, 0x89, 0x30, //0x00004adf movq %r14, (%r8) - 0x49, 0xc7, 0xc5, 0xde, 0xff, 0xff, 0xff, //0x00004ae2 movq $-34, %r13 - 0xe9, 0xa7, 0x01, 0x00, 0x00, //0x00004ae9 jmp LBB0_1026 - //0x00004aee LBB0_631 - 0xf7, 0xd1, //0x00004aee notl %ecx - 0x0f, 0xbc, 0xc1, //0x00004af0 bsfl %ecx, %eax - 0x48, 0x29, 0xd0, //0x00004af3 subq %rdx, %rax - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004af6 movq $-1, %r13 - 0x48, 0x39, 0xd8, //0x00004afd cmpq %rbx, %rax - 0x0f, 0x83, 0x8f, 0x01, 0x00, 0x00, //0x00004b00 jae LBB0_1026 - //0x00004b06 LBB0_632 - 0x48, 0x8d, 0x50, 0x01, //0x00004b06 leaq $1(%rax), %rdx - 0x49, 0x89, 0x10, //0x00004b0a movq %rdx, (%r8) - 0x41, 0x0f, 0xbe, 0x0c, 0x03, //0x00004b0d movsbl (%r11,%rax), %ecx - 0x83, 0xf9, 0x7b, //0x00004b12 cmpl $123, %ecx - 0x0f, 0x87, 0xf7, 0x01, 0x00, 0x00, //0x00004b15 ja LBB0_1032 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004b1b movq $-1, %r13 - 0x48, 0x8d, 0x35, 0xe3, 0x11, 0x00, 0x00, //0x00004b22 leaq $4579(%rip), %rsi /* LJTI0_6+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8e, //0x00004b29 movslq (%rsi,%rcx,4), %rcx - 0x48, 0x01, 0xf1, //0x00004b2d addq %rsi, %rcx - 0xff, 0xe1, //0x00004b30 jmpq *%rcx - //0x00004b32 LBB0_634 - 0x49, 0x8b, 0x37, //0x00004b32 movq (%r15), %rsi - 0x48, 0x89, 0xf7, //0x00004b35 movq %rsi, %rdi - 0x48, 0x29, 0xd7, //0x00004b38 subq %rdx, %rdi - 0x48, 0x83, 0xff, 0x20, //0x00004b3b cmpq $32, %rdi - 0x0f, 0x82, 0x96, 0x0a, 0x00, 0x00, //0x00004b3f jb LBB0_1126 - 0x48, 0x89, 0xc7, //0x00004b45 movq %rax, %rdi - 0x48, 0xf7, 0xd7, //0x00004b48 notq %rdi - 0xc5, 0xfe, 0x6f, 0x05, 0xcd, 0xb4, 0xff, 0xff, //0x00004b4b vmovdqu $-19251(%rip), %ymm0 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xe5, 0xb4, 0xff, 0xff, //0x00004b53 vmovdqu $-19227(%rip), %ymm1 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x15, 0xfd, 0xb4, 0xff, 0xff, //0x00004b5b vmovdqu $-19203(%rip), %ymm2 /* LCPI0_3+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00004b63 .p2align 4, 0x90 - //0x00004b70 LBB0_636 - 0xc4, 0xc1, 0x7e, 0x6f, 0x1c, 0x13, //0x00004b70 vmovdqu (%r11,%rdx), %ymm3 - 0xc5, 0xe5, 0x74, 0xe0, //0x00004b76 vpcmpeqb %ymm0, %ymm3, %ymm4 - 0xc5, 0xe5, 0xdb, 0xd9, //0x00004b7a vpand %ymm1, %ymm3, %ymm3 - 0xc5, 0xe5, 0x74, 0xda, //0x00004b7e vpcmpeqb %ymm2, %ymm3, %ymm3 - 0xc5, 0xe5, 0xeb, 0xdc, //0x00004b82 vpor %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xcb, //0x00004b86 vpmovmskb %ymm3, %ecx - 0x85, 0xc9, //0x00004b8a testl %ecx, %ecx - 0x0f, 0x85, 0xd2, 0x00, 0x00, 0x00, //0x00004b8c jne LBB0_1018 - 0x48, 0x83, 0xc2, 0x20, //0x00004b92 addq $32, %rdx - 0x48, 0x8d, 0x0c, 0x3e, //0x00004b96 leaq (%rsi,%rdi), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00004b9a addq $-32, %rcx - 0x48, 0x83, 0xc7, 0xe0, //0x00004b9e addq $-32, %rdi - 0x48, 0x83, 0xf9, 0x1f, //0x00004ba2 cmpq $31, %rcx - 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x00004ba6 ja LBB0_636 - 0x4c, 0x89, 0xda, //0x00004bac movq %r11, %rdx - 0x48, 0x29, 0xfa, //0x00004baf subq %rdi, %rdx - 0x48, 0x01, 0xfe, //0x00004bb2 addq %rdi, %rsi - 0x48, 0x89, 0xf7, //0x00004bb5 movq %rsi, %rdi - 0x48, 0x83, 0xff, 0x10, //0x00004bb8 cmpq $16, %rdi - 0x0f, 0x82, 0x54, 0x00, 0x00, 0x00, //0x00004bbc jb LBB0_642 - //0x00004bc2 LBB0_639 - 0x4c, 0x89, 0xde, //0x00004bc2 movq %r11, %rsi - 0x48, 0x29, 0xd6, //0x00004bc5 subq %rdx, %rsi - 0xc5, 0xfa, 0x6f, 0x05, 0x10, 0xb6, 0xff, 0xff, //0x00004bc8 vmovdqu $-18928(%rip), %xmm0 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x0d, 0x18, 0xb6, 0xff, 0xff, //0x00004bd0 vmovdqu $-18920(%rip), %xmm1 /* LCPI0_5+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x20, 0xb6, 0xff, 0xff, //0x00004bd8 vmovdqu $-18912(%rip), %xmm2 /* LCPI0_6+0(%rip) */ - //0x00004be0 LBB0_640 - 0xc5, 0xfa, 0x6f, 0x1a, //0x00004be0 vmovdqu (%rdx), %xmm3 - 0xc5, 0xe1, 0x74, 0xe0, //0x00004be4 vpcmpeqb %xmm0, %xmm3, %xmm4 - 0xc5, 0xe1, 0xdb, 0xd9, //0x00004be8 vpand %xmm1, %xmm3, %xmm3 - 0xc5, 0xe1, 0x74, 0xda, //0x00004bec vpcmpeqb %xmm2, %xmm3, %xmm3 - 0xc5, 0xe1, 0xeb, 0xdc, //0x00004bf0 vpor %xmm4, %xmm3, %xmm3 - 0xc5, 0xf9, 0xd7, 0xcb, //0x00004bf4 vpmovmskb %xmm3, %ecx - 0x85, 0xc9, //0x00004bf8 testl %ecx, %ecx - 0x0f, 0x85, 0x26, 0x08, 0x00, 0x00, //0x00004bfa jne LBB0_1104 - 0x48, 0x83, 0xc2, 0x10, //0x00004c00 addq $16, %rdx - 0x48, 0x83, 0xc7, 0xf0, //0x00004c04 addq $-16, %rdi - 0x48, 0x83, 0xc6, 0xf0, //0x00004c08 addq $-16, %rsi - 0x48, 0x83, 0xff, 0x0f, //0x00004c0c cmpq $15, %rdi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00004c10 ja LBB0_640 - //0x00004c16 LBB0_642 - 0x48, 0x85, 0xff, //0x00004c16 testq %rdi, %rdi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00004c19 je LBB0_649 - 0x48, 0x8d, 0x1c, 0x3a, //0x00004c1f leaq (%rdx,%rdi), %rbx - 0x31, 0xf6, //0x00004c23 xorl %esi, %esi - //0x00004c25 LBB0_644 - 0x0f, 0xb6, 0x0c, 0x32, //0x00004c25 movzbl (%rdx,%rsi), %ecx - 0x80, 0xf9, 0x2c, //0x00004c29 cmpb $44, %cl - 0x0f, 0x84, 0xbb, 0x09, 0x00, 0x00, //0x00004c2c je LBB0_1127 - 0x80, 0xf9, 0x7d, //0x00004c32 cmpb $125, %cl - 0x0f, 0x84, 0xb2, 0x09, 0x00, 0x00, //0x00004c35 je LBB0_1127 - 0x80, 0xf9, 0x5d, //0x00004c3b cmpb $93, %cl - 0x0f, 0x84, 0xa9, 0x09, 0x00, 0x00, //0x00004c3e je LBB0_1127 - 0x48, 0x83, 0xc6, 0x01, //0x00004c44 addq $1, %rsi - 0x48, 0x39, 0xf7, //0x00004c48 cmpq %rsi, %rdi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00004c4b jne LBB0_644 - 0x48, 0x89, 0xda, //0x00004c51 movq %rbx, %rdx - //0x00004c54 LBB0_649 - 0x4c, 0x29, 0xda, //0x00004c54 subq %r11, %rdx - 0xe9, 0x97, 0x09, 0x00, 0x00, //0x00004c57 jmp LBB0_1128 - //0x00004c5c LBB0_1017 - 0x49, 0x89, 0xd6, //0x00004c5c movq %rdx, %r14 - 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00004c5f jmp LBB0_1024 - //0x00004c64 LBB0_1018 - 0x0f, 0xbc, 0xc9, //0x00004c64 bsfl %ecx, %ecx - 0x48, 0x29, 0xf9, //0x00004c67 subq %rdi, %rcx - //0x00004c6a LBB0_1019 - 0x49, 0x89, 0x08, //0x00004c6a movq %rcx, (%r8) - 0x49, 0x89, 0xc5, //0x00004c6d movq %rax, %r13 - 0xe9, 0x20, 0x00, 0x00, 0x00, //0x00004c70 jmp LBB0_1026 - //0x00004c75 LBB0_1020 - 0x4d, 0x89, 0x10, //0x00004c75 movq %r10, (%r8) - //0x00004c78 LBB0_1021 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004c78 movq $-1, %r13 - 0xe9, 0x11, 0x00, 0x00, 0x00, //0x00004c7f jmp LBB0_1026 - //0x00004c84 LBB0_1022 - 0x49, 0x89, 0xde, //0x00004c84 movq %rbx, %r14 - //0x00004c87 LBB0_1024 - 0x49, 0x83, 0xc6, 0xff, //0x00004c87 addq $-1, %r14 - 0x4d, 0x89, 0x30, //0x00004c8b movq %r14, (%r8) - //0x00004c8e LBB0_1025 - 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00004c8e movq $-2, %r13 - //0x00004c95 LBB0_1026 - 0x4c, 0x89, 0xe8, //0x00004c95 movq %r13, %rax - 0x48, 0x8d, 0x65, 0xd8, //0x00004c98 leaq $-40(%rbp), %rsp - 0x5b, //0x00004c9c popq %rbx - 0x41, 0x5c, //0x00004c9d popq %r12 - 0x41, 0x5d, //0x00004c9f popq %r13 - 0x41, 0x5e, //0x00004ca1 popq %r14 - 0x41, 0x5f, //0x00004ca3 popq %r15 - 0x5d, //0x00004ca5 popq %rbp - 0xc5, 0xf8, 0x77, //0x00004ca6 vzeroupper - 0xc3, //0x00004ca9 retq - //0x00004caa LBB0_1108 - 0x49, 0xc7, 0xc5, 0xf9, 0xff, 0xff, 0xff, //0x00004caa movq $-7, %r13 - 0xe9, 0xdf, 0xff, 0xff, 0xff, //0x00004cb1 jmp LBB0_1026 - //0x00004cb6 LBB0_833 - 0x49, 0x83, 0xfd, 0xff, //0x00004cb6 cmpq $-1, %r13 - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00004cba jne LBB0_835 - //0x00004cc0 LBB0_834 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004cc0 movq $-1, %r13 - 0x4d, 0x89, 0xd8, //0x00004cc7 movq %r11, %r8 - //0x00004cca LBB0_835 - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00004cca movq $8(%rsp), %rax - 0x4c, 0x89, 0x00, //0x00004ccf movq %r8, (%rax) - 0xe9, 0xbe, 0xff, 0xff, 0xff, //0x00004cd2 jmp LBB0_1026 - //0x00004cd7 LBB0_713 - 0x49, 0x83, 0xc1, 0xff, //0x00004cd7 addq $-1, %r9 - 0x4d, 0x89, 0xcd, //0x00004cdb movq %r9, %r13 - 0xe9, 0xb2, 0xff, 0xff, 0xff, //0x00004cde jmp LBB0_1026 - //0x00004ce3 LBB0_1027 - 0x48, 0x8d, 0x48, 0x04, //0x00004ce3 leaq $4(%rax), %rcx - 0xe9, 0xc0, 0x03, 0x00, 0x00, //0x00004ce7 jmp LBB0_1070 - //0x00004cec LBB0_1028 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00004cec movq $-1, %rcx - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00004cf3 movq $8(%rsp), %rsi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00004cf8 jmp LBB0_1031 - //0x00004cfd LBB0_1030 - 0x4c, 0x89, 0xd9, //0x00004cfd movq %r11, %rcx - //0x00004d00 LBB0_1031 - 0x48, 0x8b, 0x06, //0x00004d00 movq (%rsi), %rax - 0x48, 0x29, 0xc8, //0x00004d03 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00004d06 addq $-2, %rax - 0x48, 0x89, 0x06, //0x00004d0a movq %rax, (%rsi) - 0xe9, 0x7c, 0xff, 0xff, 0xff, //0x00004d0d jmp LBB0_1025 - //0x00004d12 LBB0_1032 - 0x49, 0x89, 0x00, //0x00004d12 movq %rax, (%r8) - 0xe9, 0x74, 0xff, 0xff, 0xff, //0x00004d15 jmp LBB0_1025 - //0x00004d1a LBB0_1033 - 0x4d, 0x8b, 0x07, //0x00004d1a movq (%r15), %r8 - 0x4d, 0x89, 0xc7, //0x00004d1d movq %r8, %r15 - 0x49, 0x29, 0xd7, //0x00004d20 subq %rdx, %r15 - 0x49, 0x83, 0xff, 0x20, //0x00004d23 cmpq $32, %r15 - 0x0f, 0x8c, 0xd6, 0x08, 0x00, 0x00, //0x00004d27 jl LBB0_1130 - 0x4d, 0x8d, 0x0c, 0x03, //0x00004d2d leaq (%r11,%rax), %r9 - 0x49, 0x29, 0xc0, //0x00004d31 subq %rax, %r8 - 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x00004d34 movl $31, %ebx - 0x45, 0x31, 0xff, //0x00004d39 xorl %r15d, %r15d - 0xc5, 0xfe, 0x6f, 0x05, 0x3c, 0xb3, 0xff, 0xff, //0x00004d3c vmovdqu $-19652(%rip), %ymm0 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0x54, 0xb3, 0xff, 0xff, //0x00004d44 vmovdqu $-19628(%rip), %ymm1 /* LCPI0_8+0(%rip) */ - 0x45, 0x31, 0xe4, //0x00004d4c xorl %r12d, %r12d - //0x00004d4f LBB0_1035 - 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x39, 0x01, //0x00004d4f vmovdqu $1(%r9,%r15), %ymm2 - 0xc5, 0xed, 0x74, 0xd8, //0x00004d56 vpcmpeqb %ymm0, %ymm2, %ymm3 - 0xc5, 0x7d, 0xd7, 0xf3, //0x00004d5a vpmovmskb %ymm3, %r14d - 0xc5, 0xed, 0x74, 0xd1, //0x00004d5e vpcmpeqb %ymm1, %ymm2, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00004d62 vpmovmskb %ymm2, %ecx - 0x85, 0xc9, //0x00004d66 testl %ecx, %ecx - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00004d68 jne LBB0_1038 - 0x4d, 0x85, 0xe4, //0x00004d6e testq %r12, %r12 - 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00004d71 jne LBB0_1038 - 0x45, 0x31, 0xe4, //0x00004d77 xorl %r12d, %r12d - 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00004d7a jmp LBB0_1039 - //0x00004d7f LBB0_1038 - 0x44, 0x89, 0xe6, //0x00004d7f movl %r12d, %esi - 0xf7, 0xd6, //0x00004d82 notl %esi - 0x21, 0xce, //0x00004d84 andl %ecx, %esi - 0x8d, 0x14, 0x36, //0x00004d86 leal (%rsi,%rsi), %edx - 0x44, 0x09, 0xe2, //0x00004d89 orl %r12d, %edx - 0x89, 0xd7, //0x00004d8c movl %edx, %edi - 0xf7, 0xd7, //0x00004d8e notl %edi - 0x21, 0xcf, //0x00004d90 andl %ecx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004d92 andl $-1431655766, %edi - 0x45, 0x31, 0xe4, //0x00004d98 xorl %r12d, %r12d - 0x01, 0xf7, //0x00004d9b addl %esi, %edi - 0x41, 0x0f, 0x92, 0xc4, //0x00004d9d setb %r12b - 0x01, 0xff, //0x00004da1 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004da3 xorl $1431655765, %edi - 0x21, 0xd7, //0x00004da9 andl %edx, %edi - 0xf7, 0xd7, //0x00004dab notl %edi - 0x41, 0x21, 0xfe, //0x00004dad andl %edi, %r14d - //0x00004db0 LBB0_1039 - 0x4d, 0x85, 0xf6, //0x00004db0 testq %r14, %r14 - 0x0f, 0x85, 0xde, 0x05, 0x00, 0x00, //0x00004db3 jne LBB0_1096 - 0x49, 0x83, 0xc7, 0x20, //0x00004db9 addq $32, %r15 - 0x49, 0x8d, 0x0c, 0x18, //0x00004dbd leaq (%r8,%rbx), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00004dc1 addq $-32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00004dc5 addq $-32, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x00004dc9 cmpq $63, %rcx - 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x00004dcd jg LBB0_1035 - 0x4d, 0x85, 0xe4, //0x00004dd3 testq %r12, %r12 - 0x0f, 0x85, 0x49, 0x08, 0x00, 0x00, //0x00004dd6 jne LBB0_1132 - 0x4b, 0x8d, 0x14, 0x0f, //0x00004ddc leaq (%r15,%r9), %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00004de0 addq $1, %rdx - 0x49, 0xf7, 0xd7, //0x00004de4 notq %r15 - 0x4d, 0x01, 0xc7, //0x00004de7 addq %r8, %r15 - //0x00004dea LBB0_1043 - 0x4d, 0x85, 0xff, //0x00004dea testq %r15, %r15 - 0x48, 0x8b, 0x7c, 0x24, 0x08, //0x00004ded movq $8(%rsp), %rdi - 0x0f, 0x8e, 0x9d, 0xfe, 0xff, 0xff, //0x00004df2 jle LBB0_1026 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004df8 movq $-1, %r13 - 0xe9, 0xd1, 0x05, 0x00, 0x00, //0x00004dff jmp LBB0_1098 - //0x00004e04 LBB0_1045 - 0x4d, 0x8b, 0x27, //0x00004e04 movq (%r15), %r12 - 0x49, 0x29, 0xd4, //0x00004e07 subq %rdx, %r12 - 0x49, 0x01, 0xd3, //0x00004e0a addq %rdx, %r11 - 0x45, 0x31, 0xf6, //0x00004e0d xorl %r14d, %r14d - 0xc5, 0xfe, 0x6f, 0x05, 0x88, 0xb2, 0xff, 0xff, //0x00004e10 vmovdqu $-19832(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0x60, 0xb2, 0xff, 0xff, //0x00004e18 vmovdqu $-19872(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x00004e20 vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0xd4, 0xb2, 0xff, 0xff, //0x00004e24 vmovdqu $-19756(%rip), %ymm3 /* LCPI0_11+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x2c, 0xb2, 0xff, 0xff, //0x00004e2c vmovdqu $-19924(%rip), %ymm4 /* LCPI0_3+0(%rip) */ - 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x00004e34 vpxor %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xc9, //0x00004e39 xorl %r9d, %r9d - 0x45, 0x31, 0xc0, //0x00004e3c xorl %r8d, %r8d - 0x31, 0xdb, //0x00004e3f xorl %ebx, %ebx - 0x49, 0x83, 0xfc, 0x40, //0x00004e41 cmpq $64, %r12 - 0x0f, 0x8c, 0x3d, 0x01, 0x00, 0x00, //0x00004e45 jl LBB0_1054 - //0x00004e4b LBB0_1048 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3b, //0x00004e4b vmovdqu (%r11), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x73, 0x20, //0x00004e50 vmovdqu $32(%r11), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x00004e56 vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00004e5a vpmovmskb %ymm8, %esi - 0xc5, 0x4d, 0x74, 0xc0, //0x00004e5f vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00004e63 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00004e68 shlq $32, %rcx - 0x48, 0x09, 0xce, //0x00004e6c orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00004e6f movq %rsi, %rcx - 0x4c, 0x09, 0xc9, //0x00004e72 orq %r9, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00004e75 jne LBB0_1050 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004e7b movq $-1, %rsi - 0x45, 0x31, 0xc9, //0x00004e82 xorl %r9d, %r9d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00004e85 jmp LBB0_1051 - //0x00004e8a LBB0_1050 - 0x4c, 0x89, 0xc9, //0x00004e8a movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x00004e8d notq %rcx - 0x48, 0x21, 0xf1, //0x00004e90 andq %rsi, %rcx - 0x4c, 0x8d, 0x14, 0x09, //0x00004e93 leaq (%rcx,%rcx), %r10 - 0x4d, 0x09, 0xca, //0x00004e97 orq %r9, %r10 - 0x4c, 0x89, 0xd7, //0x00004e9a movq %r10, %rdi - 0x48, 0xf7, 0xd7, //0x00004e9d notq %rdi - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004ea0 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd6, //0x00004eaa andq %rdx, %rsi - 0x48, 0x21, 0xfe, //0x00004ead andq %rdi, %rsi - 0x45, 0x31, 0xc9, //0x00004eb0 xorl %r9d, %r9d - 0x48, 0x01, 0xce, //0x00004eb3 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc1, //0x00004eb6 setb %r9b - 0x48, 0x01, 0xf6, //0x00004eba addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004ebd movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00004ec7 xorq %rcx, %rsi - 0x4c, 0x21, 0xd6, //0x00004eca andq %r10, %rsi - 0x48, 0xf7, 0xd6, //0x00004ecd notq %rsi - //0x00004ed0 LBB0_1051 - 0xc5, 0x4d, 0x74, 0xc1, //0x00004ed0 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00004ed4 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00004ed9 shlq $32, %rcx - 0xc5, 0x45, 0x74, 0xc1, //0x00004edd vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x00004ee1 vpmovmskb %ymm8, %edx - 0x48, 0x09, 0xca, //0x00004ee6 orq %rcx, %rdx - 0x48, 0x21, 0xf2, //0x00004ee9 andq %rsi, %rdx - 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x00004eec vmovq %rdx, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x00004ef1 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xea, //0x00004ef7 vmovq %xmm5, %r10 - 0x4d, 0x31, 0xf2, //0x00004efc xorq %r14, %r10 - 0xc5, 0xc5, 0x74, 0xeb, //0x00004eff vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xd5, //0x00004f03 vpmovmskb %ymm5, %edx - 0xc5, 0xcd, 0x74, 0xeb, //0x00004f07 vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xcd, //0x00004f0b vpmovmskb %ymm5, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00004f0f shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00004f13 orq %rcx, %rdx - 0x4c, 0x89, 0xd1, //0x00004f16 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x00004f19 notq %rcx - 0x48, 0x21, 0xca, //0x00004f1c andq %rcx, %rdx - 0xc5, 0xc5, 0x74, 0xec, //0x00004f1f vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xfd, //0x00004f23 vpmovmskb %ymm5, %edi - 0xc5, 0xcd, 0x74, 0xec, //0x00004f27 vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xf5, //0x00004f2b vpmovmskb %ymm5, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x00004f2f shlq $32, %rsi - 0x48, 0x09, 0xf7, //0x00004f33 orq %rsi, %rdi - 0x48, 0x21, 0xcf, //0x00004f36 andq %rcx, %rdi - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00004f39 je LBB0_1046 - //0x00004f3f LBB0_1052 - 0x48, 0x8d, 0x4f, 0xff, //0x00004f3f leaq $-1(%rdi), %rcx - 0x48, 0x89, 0xce, //0x00004f43 movq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00004f46 andq %rdx, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x00004f49 popcntq %rsi, %rsi - 0x4c, 0x01, 0xc6, //0x00004f4e addq %r8, %rsi - 0x48, 0x39, 0xde, //0x00004f51 cmpq %rbx, %rsi - 0x0f, 0x86, 0x04, 0x04, 0x00, 0x00, //0x00004f54 jbe LBB0_1095 - 0x48, 0x83, 0xc3, 0x01, //0x00004f5a addq $1, %rbx - 0x48, 0x21, 0xcf, //0x00004f5e andq %rcx, %rdi - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00004f61 jne LBB0_1052 - //0x00004f67 LBB0_1046 - 0x49, 0xc1, 0xfa, 0x3f, //0x00004f67 sarq $63, %r10 - 0xf3, 0x48, 0x0f, 0xb8, 0xca, //0x00004f6b popcntq %rdx, %rcx - 0x49, 0x01, 0xc8, //0x00004f70 addq %rcx, %r8 - 0x49, 0x83, 0xc3, 0x40, //0x00004f73 addq $64, %r11 - 0x49, 0x83, 0xc4, 0xc0, //0x00004f77 addq $-64, %r12 - 0x4d, 0x89, 0xd6, //0x00004f7b movq %r10, %r14 - 0x49, 0x83, 0xfc, 0x40, //0x00004f7e cmpq $64, %r12 - 0x0f, 0x8d, 0xc3, 0xfe, 0xff, 0xff, //0x00004f82 jge LBB0_1048 - //0x00004f88 LBB0_1054 - 0x4d, 0x85, 0xe4, //0x00004f88 testq %r12, %r12 - 0x0f, 0x8e, 0x7a, 0x06, 0x00, 0x00, //0x00004f8b jle LBB0_1131 - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x00004f91 vmovdqu %ymm9, $96(%rsp) - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x00004f97 vmovdqu %ymm9, $64(%rsp) - 0x44, 0x89, 0xd9, //0x00004f9d movl %r11d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00004fa0 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00004fa6 cmpl $4033, %ecx - 0x0f, 0x82, 0x99, 0xfe, 0xff, 0xff, //0x00004fac jb LBB0_1048 - 0x49, 0x83, 0xfc, 0x20, //0x00004fb2 cmpq $32, %r12 - 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00004fb6 jb LBB0_1058 - 0xc4, 0xc1, 0x7e, 0x6f, 0x2b, //0x00004fbc vmovdqu (%r11), %ymm5 - 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x00004fc1 vmovdqu %ymm5, $64(%rsp) - 0x49, 0x83, 0xc3, 0x20, //0x00004fc7 addq $32, %r11 - 0x49, 0x8d, 0x54, 0x24, 0xe0, //0x00004fcb leaq $-32(%r12), %rdx - 0x48, 0x8d, 0x7c, 0x24, 0x60, //0x00004fd0 leaq $96(%rsp), %rdi - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00004fd5 jmp LBB0_1059 - //0x00004fda LBB0_1058 - 0x48, 0x8d, 0x7c, 0x24, 0x40, //0x00004fda leaq $64(%rsp), %rdi - 0x4c, 0x89, 0xe2, //0x00004fdf movq %r12, %rdx - //0x00004fe2 LBB0_1059 - 0x48, 0x83, 0xfa, 0x10, //0x00004fe2 cmpq $16, %rdx - 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x00004fe6 jb LBB0_1060 - 0xc4, 0xc1, 0x7a, 0x6f, 0x2b, //0x00004fec vmovdqu (%r11), %xmm5 - 0xc5, 0xfa, 0x7f, 0x2f, //0x00004ff1 vmovdqu %xmm5, (%rdi) - 0x49, 0x83, 0xc3, 0x10, //0x00004ff5 addq $16, %r11 - 0x48, 0x83, 0xc7, 0x10, //0x00004ff9 addq $16, %rdi - 0x48, 0x83, 0xc2, 0xf0, //0x00004ffd addq $-16, %rdx - 0x48, 0x83, 0xfa, 0x08, //0x00005001 cmpq $8, %rdx - 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x00005005 jae LBB0_1065 - //0x0000500b LBB0_1061 - 0x48, 0x83, 0xfa, 0x04, //0x0000500b cmpq $4, %rdx - 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x0000500f jl LBB0_1062 - //0x00005015 LBB0_1066 - 0x41, 0x8b, 0x0b, //0x00005015 movl (%r11), %ecx - 0x89, 0x0f, //0x00005018 movl %ecx, (%rdi) - 0x49, 0x83, 0xc3, 0x04, //0x0000501a addq $4, %r11 - 0x48, 0x83, 0xc7, 0x04, //0x0000501e addq $4, %rdi - 0x48, 0x83, 0xc2, 0xfc, //0x00005022 addq $-4, %rdx - 0x48, 0x83, 0xfa, 0x02, //0x00005026 cmpq $2, %rdx - 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000502a jae LBB0_1067 - //0x00005030 LBB0_1063 - 0x4c, 0x89, 0xde, //0x00005030 movq %r11, %rsi - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x00005033 leaq $64(%rsp), %r11 - 0x48, 0x85, 0xd2, //0x00005038 testq %rdx, %rdx - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x0000503b jne LBB0_1068 - 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x00005041 jmp LBB0_1048 - //0x00005046 LBB0_1060 - 0x48, 0x83, 0xfa, 0x08, //0x00005046 cmpq $8, %rdx - 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x0000504a jb LBB0_1061 - //0x00005050 LBB0_1065 - 0x49, 0x8b, 0x0b, //0x00005050 movq (%r11), %rcx - 0x48, 0x89, 0x0f, //0x00005053 movq %rcx, (%rdi) - 0x49, 0x83, 0xc3, 0x08, //0x00005056 addq $8, %r11 - 0x48, 0x83, 0xc7, 0x08, //0x0000505a addq $8, %rdi - 0x48, 0x83, 0xc2, 0xf8, //0x0000505e addq $-8, %rdx - 0x48, 0x83, 0xfa, 0x04, //0x00005062 cmpq $4, %rdx - 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00005066 jge LBB0_1066 - //0x0000506c LBB0_1062 - 0x48, 0x83, 0xfa, 0x02, //0x0000506c cmpq $2, %rdx - 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00005070 jb LBB0_1063 - //0x00005076 LBB0_1067 - 0x41, 0x0f, 0xb7, 0x0b, //0x00005076 movzwl (%r11), %ecx - 0x66, 0x89, 0x0f, //0x0000507a movw %cx, (%rdi) - 0x49, 0x83, 0xc3, 0x02, //0x0000507d addq $2, %r11 - 0x48, 0x83, 0xc7, 0x02, //0x00005081 addq $2, %rdi - 0x48, 0x83, 0xc2, 0xfe, //0x00005085 addq $-2, %rdx - 0x4c, 0x89, 0xde, //0x00005089 movq %r11, %rsi - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x0000508c leaq $64(%rsp), %r11 - 0x48, 0x85, 0xd2, //0x00005091 testq %rdx, %rdx - 0x0f, 0x84, 0xb1, 0xfd, 0xff, 0xff, //0x00005094 je LBB0_1048 - //0x0000509a LBB0_1068 - 0x8a, 0x0e, //0x0000509a movb (%rsi), %cl - 0x88, 0x0f, //0x0000509c movb %cl, (%rdi) - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x0000509e leaq $64(%rsp), %r11 - 0xe9, 0xa3, 0xfd, 0xff, 0xff, //0x000050a3 jmp LBB0_1048 - //0x000050a8 LBB0_1069 - 0x48, 0x8d, 0x48, 0x05, //0x000050a8 leaq $5(%rax), %rcx - //0x000050ac LBB0_1070 - 0x49, 0x3b, 0x0f, //0x000050ac cmpq (%r15), %rcx - 0x0f, 0x86, 0xb5, 0xfb, 0xff, 0xff, //0x000050af jbe LBB0_1019 - 0xe9, 0xdb, 0xfb, 0xff, 0xff, //0x000050b5 jmp LBB0_1026 - //0x000050ba LBB0_1071 - 0x4d, 0x8b, 0x27, //0x000050ba movq (%r15), %r12 - 0x49, 0x29, 0xd4, //0x000050bd subq %rdx, %r12 - 0x49, 0x01, 0xd3, //0x000050c0 addq %rdx, %r11 - 0x45, 0x31, 0xf6, //0x000050c3 xorl %r14d, %r14d - 0xc5, 0xfe, 0x6f, 0x05, 0xd2, 0xaf, 0xff, 0xff, //0x000050c6 vmovdqu $-20526(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xaa, 0xaf, 0xff, 0xff, //0x000050ce vmovdqu $-20566(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x000050d6 vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0xde, 0xaf, 0xff, 0xff, //0x000050da vmovdqu $-20514(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xf6, 0xaf, 0xff, 0xff, //0x000050e2 vmovdqu $-20490(%rip), %ymm4 /* LCPI0_10+0(%rip) */ - 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x000050ea vpxor %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xc9, //0x000050ef xorl %r9d, %r9d - 0x45, 0x31, 0xc0, //0x000050f2 xorl %r8d, %r8d - 0x31, 0xdb, //0x000050f5 xorl %ebx, %ebx - 0x49, 0x83, 0xfc, 0x40, //0x000050f7 cmpq $64, %r12 - 0x0f, 0x8c, 0x3d, 0x01, 0x00, 0x00, //0x000050fb jl LBB0_1080 - //0x00005101 LBB0_1074 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3b, //0x00005101 vmovdqu (%r11), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x73, 0x20, //0x00005106 vmovdqu $32(%r11), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x0000510c vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00005110 vpmovmskb %ymm8, %esi - 0xc5, 0x4d, 0x74, 0xc0, //0x00005115 vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00005119 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x0000511e shlq $32, %rcx - 0x48, 0x09, 0xce, //0x00005122 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00005125 movq %rsi, %rcx - 0x4c, 0x09, 0xc9, //0x00005128 orq %r9, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000512b jne LBB0_1076 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00005131 movq $-1, %rsi - 0x45, 0x31, 0xc9, //0x00005138 xorl %r9d, %r9d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000513b jmp LBB0_1077 - //0x00005140 LBB0_1076 - 0x4c, 0x89, 0xc9, //0x00005140 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x00005143 notq %rcx - 0x48, 0x21, 0xf1, //0x00005146 andq %rsi, %rcx - 0x4c, 0x8d, 0x14, 0x09, //0x00005149 leaq (%rcx,%rcx), %r10 - 0x4d, 0x09, 0xca, //0x0000514d orq %r9, %r10 - 0x4c, 0x89, 0xd7, //0x00005150 movq %r10, %rdi - 0x48, 0xf7, 0xd7, //0x00005153 notq %rdi - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00005156 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd6, //0x00005160 andq %rdx, %rsi - 0x48, 0x21, 0xfe, //0x00005163 andq %rdi, %rsi - 0x45, 0x31, 0xc9, //0x00005166 xorl %r9d, %r9d - 0x48, 0x01, 0xce, //0x00005169 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc1, //0x0000516c setb %r9b - 0x48, 0x01, 0xf6, //0x00005170 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005173 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x0000517d xorq %rcx, %rsi - 0x4c, 0x21, 0xd6, //0x00005180 andq %r10, %rsi - 0x48, 0xf7, 0xd6, //0x00005183 notq %rsi - //0x00005186 LBB0_1077 - 0xc5, 0x4d, 0x74, 0xc1, //0x00005186 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x0000518a vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x0000518f shlq $32, %rcx - 0xc5, 0x45, 0x74, 0xc1, //0x00005193 vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x00005197 vpmovmskb %ymm8, %edx - 0x48, 0x09, 0xca, //0x0000519c orq %rcx, %rdx - 0x48, 0x21, 0xf2, //0x0000519f andq %rsi, %rdx - 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x000051a2 vmovq %rdx, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000051a7 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xea, //0x000051ad vmovq %xmm5, %r10 - 0x4d, 0x31, 0xf2, //0x000051b2 xorq %r14, %r10 - 0xc5, 0xc5, 0x74, 0xeb, //0x000051b5 vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xd5, //0x000051b9 vpmovmskb %ymm5, %edx - 0xc5, 0xcd, 0x74, 0xeb, //0x000051bd vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xcd, //0x000051c1 vpmovmskb %ymm5, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x000051c5 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x000051c9 orq %rcx, %rdx - 0x4c, 0x89, 0xd1, //0x000051cc movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x000051cf notq %rcx - 0x48, 0x21, 0xca, //0x000051d2 andq %rcx, %rdx - 0xc5, 0xc5, 0x74, 0xec, //0x000051d5 vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xfd, //0x000051d9 vpmovmskb %ymm5, %edi - 0xc5, 0xcd, 0x74, 0xec, //0x000051dd vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xf5, //0x000051e1 vpmovmskb %ymm5, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x000051e5 shlq $32, %rsi - 0x48, 0x09, 0xf7, //0x000051e9 orq %rsi, %rdi - 0x48, 0x21, 0xcf, //0x000051ec andq %rcx, %rdi - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x000051ef je LBB0_1072 - //0x000051f5 LBB0_1078 - 0x48, 0x8d, 0x4f, 0xff, //0x000051f5 leaq $-1(%rdi), %rcx - 0x48, 0x89, 0xce, //0x000051f9 movq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x000051fc andq %rdx, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000051ff popcntq %rsi, %rsi - 0x4c, 0x01, 0xc6, //0x00005204 addq %r8, %rsi - 0x48, 0x39, 0xde, //0x00005207 cmpq %rbx, %rsi - 0x0f, 0x86, 0x4e, 0x01, 0x00, 0x00, //0x0000520a jbe LBB0_1095 - 0x48, 0x83, 0xc3, 0x01, //0x00005210 addq $1, %rbx - 0x48, 0x21, 0xcf, //0x00005214 andq %rcx, %rdi - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00005217 jne LBB0_1078 - //0x0000521d LBB0_1072 - 0x49, 0xc1, 0xfa, 0x3f, //0x0000521d sarq $63, %r10 - 0xf3, 0x48, 0x0f, 0xb8, 0xca, //0x00005221 popcntq %rdx, %rcx - 0x49, 0x01, 0xc8, //0x00005226 addq %rcx, %r8 - 0x49, 0x83, 0xc3, 0x40, //0x00005229 addq $64, %r11 - 0x49, 0x83, 0xc4, 0xc0, //0x0000522d addq $-64, %r12 - 0x4d, 0x89, 0xd6, //0x00005231 movq %r10, %r14 - 0x49, 0x83, 0xfc, 0x40, //0x00005234 cmpq $64, %r12 - 0x0f, 0x8d, 0xc3, 0xfe, 0xff, 0xff, //0x00005238 jge LBB0_1074 - //0x0000523e LBB0_1080 - 0x4d, 0x85, 0xe4, //0x0000523e testq %r12, %r12 - 0x0f, 0x8e, 0xc4, 0x03, 0x00, 0x00, //0x00005241 jle LBB0_1131 - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x00005247 vmovdqu %ymm9, $96(%rsp) - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x0000524d vmovdqu %ymm9, $64(%rsp) - 0x44, 0x89, 0xd9, //0x00005253 movl %r11d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00005256 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x0000525c cmpl $4033, %ecx - 0x0f, 0x82, 0x99, 0xfe, 0xff, 0xff, //0x00005262 jb LBB0_1074 - 0x49, 0x83, 0xfc, 0x20, //0x00005268 cmpq $32, %r12 - 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x0000526c jb LBB0_1084 - 0xc4, 0xc1, 0x7e, 0x6f, 0x2b, //0x00005272 vmovdqu (%r11), %ymm5 - 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x00005277 vmovdqu %ymm5, $64(%rsp) - 0x49, 0x83, 0xc3, 0x20, //0x0000527d addq $32, %r11 - 0x49, 0x8d, 0x54, 0x24, 0xe0, //0x00005281 leaq $-32(%r12), %rdx - 0x48, 0x8d, 0x7c, 0x24, 0x60, //0x00005286 leaq $96(%rsp), %rdi - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x0000528b jmp LBB0_1085 - //0x00005290 LBB0_1084 - 0x48, 0x8d, 0x7c, 0x24, 0x40, //0x00005290 leaq $64(%rsp), %rdi - 0x4c, 0x89, 0xe2, //0x00005295 movq %r12, %rdx - //0x00005298 LBB0_1085 - 0x48, 0x83, 0xfa, 0x10, //0x00005298 cmpq $16, %rdx - 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x0000529c jb LBB0_1086 - 0xc4, 0xc1, 0x7a, 0x6f, 0x2b, //0x000052a2 vmovdqu (%r11), %xmm5 - 0xc5, 0xfa, 0x7f, 0x2f, //0x000052a7 vmovdqu %xmm5, (%rdi) - 0x49, 0x83, 0xc3, 0x10, //0x000052ab addq $16, %r11 - 0x48, 0x83, 0xc7, 0x10, //0x000052af addq $16, %rdi - 0x48, 0x83, 0xc2, 0xf0, //0x000052b3 addq $-16, %rdx - 0x48, 0x83, 0xfa, 0x08, //0x000052b7 cmpq $8, %rdx - 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x000052bb jae LBB0_1091 - //0x000052c1 LBB0_1087 - 0x48, 0x83, 0xfa, 0x04, //0x000052c1 cmpq $4, %rdx - 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x000052c5 jl LBB0_1088 - //0x000052cb LBB0_1092 - 0x41, 0x8b, 0x0b, //0x000052cb movl (%r11), %ecx - 0x89, 0x0f, //0x000052ce movl %ecx, (%rdi) - 0x49, 0x83, 0xc3, 0x04, //0x000052d0 addq $4, %r11 - 0x48, 0x83, 0xc7, 0x04, //0x000052d4 addq $4, %rdi - 0x48, 0x83, 0xc2, 0xfc, //0x000052d8 addq $-4, %rdx - 0x48, 0x83, 0xfa, 0x02, //0x000052dc cmpq $2, %rdx - 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000052e0 jae LBB0_1093 - //0x000052e6 LBB0_1089 - 0x4c, 0x89, 0xde, //0x000052e6 movq %r11, %rsi - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x000052e9 leaq $64(%rsp), %r11 - 0x48, 0x85, 0xd2, //0x000052ee testq %rdx, %rdx - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000052f1 jne LBB0_1094 - 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x000052f7 jmp LBB0_1074 - //0x000052fc LBB0_1086 - 0x48, 0x83, 0xfa, 0x08, //0x000052fc cmpq $8, %rdx - 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x00005300 jb LBB0_1087 - //0x00005306 LBB0_1091 - 0x49, 0x8b, 0x0b, //0x00005306 movq (%r11), %rcx - 0x48, 0x89, 0x0f, //0x00005309 movq %rcx, (%rdi) - 0x49, 0x83, 0xc3, 0x08, //0x0000530c addq $8, %r11 - 0x48, 0x83, 0xc7, 0x08, //0x00005310 addq $8, %rdi - 0x48, 0x83, 0xc2, 0xf8, //0x00005314 addq $-8, %rdx - 0x48, 0x83, 0xfa, 0x04, //0x00005318 cmpq $4, %rdx - 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x0000531c jge LBB0_1092 - //0x00005322 LBB0_1088 - 0x48, 0x83, 0xfa, 0x02, //0x00005322 cmpq $2, %rdx - 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00005326 jb LBB0_1089 - //0x0000532c LBB0_1093 - 0x41, 0x0f, 0xb7, 0x0b, //0x0000532c movzwl (%r11), %ecx - 0x66, 0x89, 0x0f, //0x00005330 movw %cx, (%rdi) - 0x49, 0x83, 0xc3, 0x02, //0x00005333 addq $2, %r11 - 0x48, 0x83, 0xc7, 0x02, //0x00005337 addq $2, %rdi - 0x48, 0x83, 0xc2, 0xfe, //0x0000533b addq $-2, %rdx - 0x4c, 0x89, 0xde, //0x0000533f movq %r11, %rsi - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x00005342 leaq $64(%rsp), %r11 - 0x48, 0x85, 0xd2, //0x00005347 testq %rdx, %rdx - 0x0f, 0x84, 0xb1, 0xfd, 0xff, 0xff, //0x0000534a je LBB0_1074 - //0x00005350 LBB0_1094 - 0x8a, 0x0e, //0x00005350 movb (%rsi), %cl - 0x88, 0x0f, //0x00005352 movb %cl, (%rdi) - 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x00005354 leaq $64(%rsp), %r11 - 0xe9, 0xa3, 0xfd, 0xff, 0xff, //0x00005359 jmp LBB0_1074 - //0x0000535e LBB0_1095 - 0x49, 0x8b, 0x0f, //0x0000535e movq (%r15), %rcx - 0x48, 0x0f, 0xbc, 0xd7, //0x00005361 bsfq %rdi, %rdx - 0x4c, 0x29, 0xe2, //0x00005365 subq %r12, %rdx - 0x48, 0x01, 0xd1, //0x00005368 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000536b addq $1, %rcx - 0x48, 0x8b, 0x74, 0x24, 0x08, //0x0000536f movq $8(%rsp), %rsi - 0x48, 0x89, 0x0e, //0x00005374 movq %rcx, (%rsi) - 0x49, 0x8b, 0x17, //0x00005377 movq (%r15), %rdx - 0x48, 0x39, 0xd1, //0x0000537a cmpq %rdx, %rcx - 0x48, 0x0f, 0x47, 0xca, //0x0000537d cmovaq %rdx, %rcx - 0x48, 0x89, 0x0e, //0x00005381 movq %rcx, (%rsi) - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00005384 movq $-1, %rcx - 0x48, 0x0f, 0x47, 0xc1, //0x0000538b cmovaq %rcx, %rax - 0x49, 0x89, 0xc5, //0x0000538f movq %rax, %r13 - 0xe9, 0xfe, 0xf8, 0xff, 0xff, //0x00005392 jmp LBB0_1026 - //0x00005397 LBB0_1096 - 0x41, 0x0f, 0xbc, 0xce, //0x00005397 bsfl %r14d, %ecx - 0x48, 0x01, 0xc1, //0x0000539b addq %rax, %rcx - 0x4c, 0x01, 0xf9, //0x0000539e addq %r15, %rcx - 0x48, 0x83, 0xc1, 0x02, //0x000053a1 addq $2, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x08, //0x000053a5 movq $8(%rsp), %rdx - 0x48, 0x89, 0x0a, //0x000053aa movq %rcx, (%rdx) - 0x49, 0x89, 0xc5, //0x000053ad movq %rax, %r13 - 0xe9, 0xe0, 0xf8, 0xff, 0xff, //0x000053b0 jmp LBB0_1026 - //0x000053b5 LBB0_1107 - 0x49, 0x89, 0x10, //0x000053b5 movq %rdx, (%r8) - 0xe9, 0xd8, 0xf8, 0xff, 0xff, //0x000053b8 jmp LBB0_1026 - //0x000053bd LBB0_1097 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000053bd movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000053c4 movl $2, %esi - 0x48, 0x01, 0xf2, //0x000053c9 addq %rsi, %rdx - 0x49, 0x01, 0xcf, //0x000053cc addq %rcx, %r15 - 0x0f, 0x8e, 0xc0, 0xf8, 0xff, 0xff, //0x000053cf jle LBB0_1026 - //0x000053d5 LBB0_1098 - 0x0f, 0xb6, 0x0a, //0x000053d5 movzbl (%rdx), %ecx - 0x80, 0xf9, 0x5c, //0x000053d8 cmpb $92, %cl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x000053db je LBB0_1097 - 0x80, 0xf9, 0x22, //0x000053e1 cmpb $34, %cl - 0x0f, 0x84, 0xa7, 0x01, 0x00, 0x00, //0x000053e4 je LBB0_1120 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000053ea movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000053f1 movl $1, %esi - 0x48, 0x01, 0xf2, //0x000053f6 addq %rsi, %rdx - 0x49, 0x01, 0xcf, //0x000053f9 addq %rcx, %r15 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000053fc jg LBB0_1098 - 0xe9, 0x8e, 0xf8, 0xff, 0xff, //0x00005402 jmp LBB0_1026 - //0x00005407 LBB0_1101 - 0x4c, 0x89, 0x8c, 0x24, 0x98, 0x00, 0x00, 0x00, //0x00005407 movq %r9, $152(%rsp) - //0x0000540f LBB0_1102 - 0x48, 0x8b, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, //0x0000540f movq $152(%rsp), %rax - //0x00005417 LBB0_1103 - 0x49, 0x89, 0x00, //0x00005417 movq %rax, (%r8) - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000541a movq $-1, %r13 - 0xe9, 0x6f, 0xf8, 0xff, 0xff, //0x00005421 jmp LBB0_1026 - //0x00005426 LBB0_1104 - 0x66, 0x0f, 0xbc, 0xc9, //0x00005426 bsfw %cx, %cx - 0x0f, 0xb7, 0xc9, //0x0000542a movzwl %cx, %ecx - 0x48, 0x29, 0xf1, //0x0000542d subq %rsi, %rcx - 0xe9, 0x35, 0xf8, 0xff, 0xff, //0x00005430 jmp LBB0_1019 - //0x00005435 LBB0_1105 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00005435 movq $-1, %rcx - 0xe9, 0x0c, 0x01, 0x00, 0x00, //0x0000543c jmp LBB0_1106 - //0x00005441 LBB0_1109 - 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00005441 movq $-2, %r13 - 0x80, 0xfa, 0x61, //0x00005448 cmpb $97, %dl - 0x0f, 0x85, 0x44, 0xf8, 0xff, 0xff, //0x0000544b jne LBB0_1026 - 0x48, 0x8d, 0x41, 0x01, //0x00005451 leaq $1(%rcx), %rax - 0x49, 0x89, 0x00, //0x00005455 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x6c, //0x00005458 cmpb $108, $1(%r15,%rcx) - 0x0f, 0x85, 0x31, 0xf8, 0xff, 0xff, //0x0000545e jne LBB0_1026 - 0x48, 0x8d, 0x41, 0x02, //0x00005464 leaq $2(%rcx), %rax - 0x49, 0x89, 0x00, //0x00005468 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x73, //0x0000546b cmpb $115, $2(%r15,%rcx) - 0x0f, 0x85, 0x1e, 0xf8, 0xff, 0xff, //0x00005471 jne LBB0_1026 - 0x48, 0x8d, 0x41, 0x03, //0x00005477 leaq $3(%rcx), %rax - 0x49, 0x89, 0x00, //0x0000547b movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x03, 0x65, //0x0000547e cmpb $101, $3(%r15,%rcx) - 0x0f, 0x85, 0x0b, 0xf8, 0xff, 0xff, //0x00005484 jne LBB0_1026 - 0x48, 0x83, 0xc1, 0x04, //0x0000548a addq $4, %rcx - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x0000548e movq $8(%rsp), %rax - 0x48, 0x89, 0x08, //0x00005493 movq %rcx, (%rax) - 0xe9, 0xfa, 0xf7, 0xff, 0xff, //0x00005496 jmp LBB0_1026 - //0x0000549b LBB0_848 - 0x4d, 0x89, 0x28, //0x0000549b movq %r13, (%r8) - 0x43, 0x80, 0x3c, 0x2f, 0x6e, //0x0000549e cmpb $110, (%r15,%r13) - 0x0f, 0x85, 0xe5, 0xf7, 0xff, 0xff, //0x000054a3 jne LBB0_1025 - 0x49, 0x89, 0x08, //0x000054a9 movq %rcx, (%r8) - 0x41, 0x80, 0x3c, 0x0f, 0x75, //0x000054ac cmpb $117, (%r15,%rcx) - 0x0f, 0x85, 0xd7, 0xf7, 0xff, 0xff, //0x000054b1 jne LBB0_1025 - 0x48, 0x8d, 0x41, 0x01, //0x000054b7 leaq $1(%rcx), %rax - 0x49, 0x89, 0x00, //0x000054bb movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x6c, //0x000054be cmpb $108, $1(%r15,%rcx) - 0x0f, 0x85, 0xc4, 0xf7, 0xff, 0xff, //0x000054c4 jne LBB0_1025 - 0x48, 0x8d, 0x41, 0x02, //0x000054ca leaq $2(%rcx), %rax - 0x49, 0x89, 0x00, //0x000054ce movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x6c, //0x000054d1 cmpb $108, $2(%r15,%rcx) - 0x0f, 0x85, 0xb1, 0xf7, 0xff, 0xff, //0x000054d7 jne LBB0_1025 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x000054dd jmp LBB0_1118 - //0x000054e2 LBB0_1114 - 0x4d, 0x89, 0x28, //0x000054e2 movq %r13, (%r8) - 0x43, 0x80, 0x3c, 0x2f, 0x74, //0x000054e5 cmpb $116, (%r15,%r13) - 0x0f, 0x85, 0x9e, 0xf7, 0xff, 0xff, //0x000054ea jne LBB0_1025 - 0x49, 0x89, 0x08, //0x000054f0 movq %rcx, (%r8) - 0x41, 0x80, 0x3c, 0x0f, 0x72, //0x000054f3 cmpb $114, (%r15,%rcx) - 0x0f, 0x85, 0x90, 0xf7, 0xff, 0xff, //0x000054f8 jne LBB0_1025 - 0x48, 0x8d, 0x41, 0x01, //0x000054fe leaq $1(%rcx), %rax - 0x49, 0x89, 0x00, //0x00005502 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x75, //0x00005505 cmpb $117, $1(%r15,%rcx) - 0x0f, 0x85, 0x7d, 0xf7, 0xff, 0xff, //0x0000550b jne LBB0_1025 - 0x48, 0x8d, 0x41, 0x02, //0x00005511 leaq $2(%rcx), %rax - 0x49, 0x89, 0x00, //0x00005515 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x65, //0x00005518 cmpb $101, $2(%r15,%rcx) - 0x0f, 0x85, 0x6a, 0xf7, 0xff, 0xff, //0x0000551e jne LBB0_1025 - //0x00005524 LBB0_1118 - 0x48, 0x83, 0xc1, 0x03, //0x00005524 addq $3, %rcx - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00005528 movq $8(%rsp), %rax - 0x48, 0x89, 0x08, //0x0000552d movq %rcx, (%rax) - 0xe9, 0x59, 0xf7, 0xff, 0xff, //0x00005530 jmp LBB0_1025 - //0x00005535 LBB0_845 - 0x48, 0x83, 0xc1, 0xff, //0x00005535 addq $-1, %rcx - 0x49, 0x89, 0xcd, //0x00005539 movq %rcx, %r13 - 0xe9, 0x54, 0xf7, 0xff, 0xff, //0x0000553c jmp LBB0_1026 - //0x00005541 LBB0_951 - 0x49, 0x83, 0xc5, 0xff, //0x00005541 addq $-1, %r13 - 0xe9, 0x4b, 0xf7, 0xff, 0xff, //0x00005545 jmp LBB0_1026 - //0x0000554a LBB0_955 - 0x4c, 0x89, 0xc9, //0x0000554a movq %r9, %rcx - //0x0000554d LBB0_1106 - 0x48, 0xf7, 0xd1, //0x0000554d notq %rcx - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00005550 movq $8(%rsp), %rax - 0x48, 0x01, 0x08, //0x00005555 addq %rcx, (%rax) - 0xe9, 0x31, 0xf7, 0xff, 0xff, //0x00005558 jmp LBB0_1025 - //0x0000555d LBB0_1129 - 0x4d, 0x89, 0xcb, //0x0000555d movq %r9, %r11 - 0xe9, 0x5b, 0xf7, 0xff, 0xff, //0x00005560 jmp LBB0_834 - //0x00005565 LBB0_1119 - 0x4c, 0x29, 0xd8, //0x00005565 subq %r11, %rax - 0x48, 0x01, 0xf0, //0x00005568 addq %rsi, %rax - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x0000556b movq $8(%rsp), %r8 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00005570 movq $-1, %r13 - 0x48, 0x39, 0xd8, //0x00005577 cmpq %rbx, %rax - 0x0f, 0x82, 0x86, 0xf5, 0xff, 0xff, //0x0000557a jb LBB0_632 - 0xe9, 0x10, 0xf7, 0xff, 0xff, //0x00005580 jmp LBB0_1026 - //0x00005585 LBB0_1134 - 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00005585 movq $-2, %r13 - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x0000558c jmp LBB0_1125 - //0x00005591 LBB0_1120 - 0x4c, 0x29, 0xda, //0x00005591 subq %r11, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00005594 addq $1, %rdx - 0x48, 0x89, 0x17, //0x00005598 movq %rdx, (%rdi) - 0x49, 0x89, 0xc5, //0x0000559b movq %rax, %r13 - 0xe9, 0xf2, 0xf6, 0xff, 0xff, //0x0000559e jmp LBB0_1026 - //0x000055a3 LBB0_1121 - 0x4c, 0x01, 0xd8, //0x000055a3 addq %r11, %rax - 0x48, 0x85, 0xd2, //0x000055a6 testq %rdx, %rdx - 0x0f, 0x85, 0x09, 0xda, 0xff, 0xff, //0x000055a9 jne LBB0_619 - 0xe9, 0x40, 0xda, 0xff, 0xff, //0x000055af jmp LBB0_624 - //0x000055b4 LBB0_1122 - 0x49, 0x83, 0xc3, 0x01, //0x000055b4 addq $1, %r11 - 0x49, 0xc7, 0xc5, 0xfd, 0xff, 0xff, 0xff, //0x000055b8 movq $-3, %r13 - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x000055bf jmp LBB0_1124 - //0x000055c4 LBB0_1123 - 0x49, 0x83, 0xc3, 0x01, //0x000055c4 addq $1, %r11 - //0x000055c8 LBB0_1124 - 0x4d, 0x89, 0xda, //0x000055c8 movq %r11, %r10 - //0x000055cb LBB0_1125 - 0x4d, 0x29, 0xe2, //0x000055cb subq %r12, %r10 - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x000055ce movq $8(%rsp), %rax - 0x4c, 0x89, 0x10, //0x000055d3 movq %r10, (%rax) - 0xe9, 0xba, 0xf6, 0xff, 0xff, //0x000055d6 jmp LBB0_1026 - //0x000055db LBB0_1126 - 0x4c, 0x01, 0xda, //0x000055db addq %r11, %rdx - 0x48, 0x83, 0xff, 0x10, //0x000055de cmpq $16, %rdi - 0x0f, 0x83, 0xda, 0xf5, 0xff, 0xff, //0x000055e2 jae LBB0_639 - 0xe9, 0x29, 0xf6, 0xff, 0xff, //0x000055e8 jmp LBB0_642 - //0x000055ed LBB0_1127 - 0x4c, 0x29, 0xda, //0x000055ed subq %r11, %rdx - 0x48, 0x01, 0xf2, //0x000055f0 addq %rsi, %rdx - //0x000055f3 LBB0_1128 - 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000055f3 movq $8(%rsp), %rcx - 0x48, 0x89, 0x11, //0x000055f8 movq %rdx, (%rcx) - 0x49, 0x89, 0xc5, //0x000055fb movq %rax, %r13 - 0xe9, 0x92, 0xf6, 0xff, 0xff, //0x000055fe jmp LBB0_1026 - //0x00005603 LBB0_1130 - 0x4c, 0x01, 0xda, //0x00005603 addq %r11, %rdx - 0xe9, 0xdf, 0xf7, 0xff, 0xff, //0x00005606 jmp LBB0_1043 - //0x0000560b LBB0_1131 - 0x49, 0x8b, 0x07, //0x0000560b movq (%r15), %rax - 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x0000560e movq $8(%rsp), %rcx - 0x48, 0x89, 0x01, //0x00005613 movq %rax, (%rcx) - 0xe9, 0x7a, 0xf6, 0xff, 0xff, //0x00005616 jmp LBB0_1026 - //0x0000561b LBB0_376 - 0x4c, 0x8b, 0x44, 0x24, 0x08, //0x0000561b movq $8(%rsp), %r8 - 0xe9, 0xea, 0xfd, 0xff, 0xff, //0x00005620 jmp LBB0_1102 - //0x00005625 LBB0_1132 - 0x49, 0x8d, 0x48, 0xff, //0x00005625 leaq $-1(%r8), %rcx - 0x4c, 0x39, 0xf9, //0x00005629 cmpq %r15, %rcx - 0x0f, 0x84, 0x63, 0xf6, 0xff, 0xff, //0x0000562c je LBB0_1026 - 0x4b, 0x8d, 0x14, 0x0f, //0x00005632 leaq (%r15,%r9), %rdx - 0x48, 0x83, 0xc2, 0x02, //0x00005636 addq $2, %rdx - 0x4d, 0x29, 0xf8, //0x0000563a subq %r15, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x0000563d addq $-2, %r8 - 0x4d, 0x89, 0xc7, //0x00005641 movq %r8, %r15 - 0xe9, 0xa1, 0xf7, 0xff, 0xff, //0x00005644 jmp LBB0_1043 - 0x90, 0x90, 0x90, //0x00005649 .p2align 2, 0x90 - // // .set L0_0_set_487, LBB0_487-LJTI0_0 - // // .set L0_0_set_486, LBB0_486-LJTI0_0 - // // .set L0_0_set_471, LBB0_471-LJTI0_0 - // // .set L0_0_set_453, LBB0_453-LJTI0_0 - // // .set L0_0_set_547, LBB0_547-LJTI0_0 - // // .set L0_0_set_485, LBB0_485-LJTI0_0 - // // .set L0_0_set_470, LBB0_470-LJTI0_0 - // // .set L0_0_set_522, LBB0_522-LJTI0_0 - //0x0000564c LJTI0_0 - 0x7a, 0xce, 0xff, 0xff, //0x0000564c .long L0_0_set_487 - 0x74, 0xce, 0xff, 0xff, //0x00005650 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005654 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005658 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000565c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005660 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005664 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005668 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000566c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005670 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005674 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005678 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000567c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005680 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005684 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005688 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000568c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005690 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005694 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005698 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000569c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056a0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056a4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056a8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056ac .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056b0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056b4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056b8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056bc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056c0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056c4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056c8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056cc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056d0 .long L0_0_set_486 - 0x66, 0xcd, 0xff, 0xff, //0x000056d4 .long L0_0_set_471 - 0x74, 0xce, 0xff, 0xff, //0x000056d8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056dc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056e0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056e4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056e8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056ec .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056f0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056f4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056f8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000056fc .long L0_0_set_486 - 0x2a, 0xcc, 0xff, 0xff, //0x00005700 .long L0_0_set_453 - 0x74, 0xce, 0xff, 0xff, //0x00005704 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005708 .long L0_0_set_486 - 0x2a, 0xcc, 0xff, 0xff, //0x0000570c .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005710 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005714 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005718 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x0000571c .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005720 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005724 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005728 .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x0000572c .long L0_0_set_453 - 0x2a, 0xcc, 0xff, 0xff, //0x00005730 .long L0_0_set_453 - 0x74, 0xce, 0xff, 0xff, //0x00005734 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005738 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000573c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005740 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005744 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005748 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000574c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005750 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005754 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005758 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000575c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005760 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005764 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005768 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000576c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005770 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005774 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005778 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000577c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005780 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005784 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005788 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000578c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005790 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005794 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005798 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000579c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057a0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057a4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057a8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057ac .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057b0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057b4 .long L0_0_set_486 - 0xeb, 0xd2, 0xff, 0xff, //0x000057b8 .long L0_0_set_547 - 0x74, 0xce, 0xff, 0xff, //0x000057bc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057c0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057c4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057c8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057cc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057d0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057d4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057d8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057dc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057e0 .long L0_0_set_486 - 0x57, 0xce, 0xff, 0xff, //0x000057e4 .long L0_0_set_485 - 0x74, 0xce, 0xff, 0xff, //0x000057e8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057ec .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057f0 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057f4 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057f8 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x000057fc .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005800 .long L0_0_set_486 - 0x53, 0xcd, 0xff, 0xff, //0x00005804 .long L0_0_set_470 - 0x74, 0xce, 0xff, 0xff, //0x00005808 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000580c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005810 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005814 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005818 .long L0_0_set_486 - 0x53, 0xcd, 0xff, 0xff, //0x0000581c .long L0_0_set_470 - 0x74, 0xce, 0xff, 0xff, //0x00005820 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005824 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005828 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x0000582c .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005830 .long L0_0_set_486 - 0x74, 0xce, 0xff, 0xff, //0x00005834 .long L0_0_set_486 - 0x4e, 0xd0, 0xff, 0xff, //0x00005838 .long L0_0_set_522 - // // .set L0_1_set_283, LBB0_283-LJTI0_1 - // // .set L0_1_set_282, LBB0_282-LJTI0_1 - // // .set L0_1_set_244, LBB0_244-LJTI0_1 - // // .set L0_1_set_226, LBB0_226-LJTI0_1 - // // .set L0_1_set_256, LBB0_256-LJTI0_1 - // // .set L0_1_set_281, LBB0_281-LJTI0_1 - // // .set L0_1_set_243, LBB0_243-LJTI0_1 - // // .set L0_1_set_314, LBB0_314-LJTI0_1 - //0x0000583c LJTI0_1 - 0xfa, 0xba, 0xff, 0xff, //0x0000583c .long L0_1_set_283 - 0xf4, 0xba, 0xff, 0xff, //0x00005840 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005844 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005848 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000584c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005850 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005854 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005858 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000585c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005860 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005864 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005868 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000586c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005870 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005874 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005878 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000587c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005880 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005884 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005888 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000588c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005890 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005894 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005898 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000589c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058a0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058a4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058a8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058ac .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058b0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058b4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058b8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058bc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058c0 .long L0_1_set_282 - 0x56, 0xb7, 0xff, 0xff, //0x000058c4 .long L0_1_set_244 - 0xf4, 0xba, 0xff, 0xff, //0x000058c8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058cc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058d0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058d4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058d8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058dc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058e0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058e4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058e8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058ec .long L0_1_set_282 - 0x2a, 0xb6, 0xff, 0xff, //0x000058f0 .long L0_1_set_226 - 0xf4, 0xba, 0xff, 0xff, //0x000058f4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000058f8 .long L0_1_set_282 - 0x2a, 0xb6, 0xff, 0xff, //0x000058fc .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005900 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005904 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005908 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x0000590c .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005910 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005914 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005918 .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x0000591c .long L0_1_set_226 - 0x2a, 0xb6, 0xff, 0xff, //0x00005920 .long L0_1_set_226 - 0xf4, 0xba, 0xff, 0xff, //0x00005924 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005928 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000592c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005930 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005934 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005938 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000593c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005940 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005944 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005948 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000594c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005950 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005954 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005958 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000595c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005960 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005964 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005968 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000596c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005970 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005974 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005978 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000597c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005980 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005984 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005988 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000598c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005990 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005994 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005998 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x0000599c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059a0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059a4 .long L0_1_set_282 - 0x47, 0xb8, 0xff, 0xff, //0x000059a8 .long L0_1_set_256 - 0xf4, 0xba, 0xff, 0xff, //0x000059ac .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059b0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059b4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059b8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059bc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059c0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059c4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059c8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059cc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059d0 .long L0_1_set_282 - 0xd9, 0xba, 0xff, 0xff, //0x000059d4 .long L0_1_set_281 - 0xf4, 0xba, 0xff, 0xff, //0x000059d8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059dc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059e0 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059e4 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059e8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059ec .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059f0 .long L0_1_set_282 - 0x43, 0xb7, 0xff, 0xff, //0x000059f4 .long L0_1_set_243 - 0xf4, 0xba, 0xff, 0xff, //0x000059f8 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x000059fc .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a00 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a04 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a08 .long L0_1_set_282 - 0x43, 0xb7, 0xff, 0xff, //0x00005a0c .long L0_1_set_243 - 0xf4, 0xba, 0xff, 0xff, //0x00005a10 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a14 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a18 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a1c .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a20 .long L0_1_set_282 - 0xf4, 0xba, 0xff, 0xff, //0x00005a24 .long L0_1_set_282 - 0xad, 0xbc, 0xff, 0xff, //0x00005a28 .long L0_1_set_314 - // // .set L0_2_set_687, LBB0_687-LJTI0_2 - // // .set L0_2_set_691, LBB0_691-LJTI0_2 - // // .set L0_2_set_693, LBB0_693-LJTI0_2 - // // .set L0_2_set_714, LBB0_714-LJTI0_2 - // // .set L0_2_set_716, LBB0_716-LJTI0_2 - // // .set L0_2_set_719, LBB0_719-LJTI0_2 - //0x00005a2c LJTI0_2 - 0xaa, 0xd8, 0xff, 0xff, //0x00005a2c .long L0_2_set_687 - 0xd3, 0xd8, 0xff, 0xff, //0x00005a30 .long L0_2_set_691 - 0xff, 0xd8, 0xff, 0xff, //0x00005a34 .long L0_2_set_693 - 0x5f, 0xda, 0xff, 0xff, //0x00005a38 .long L0_2_set_714 - 0x76, 0xda, 0xff, 0xff, //0x00005a3c .long L0_2_set_716 - 0x90, 0xde, 0xff, 0xff, //0x00005a40 .long L0_2_set_719 - // // .set L0_3_set_1026, LBB0_1026-LJTI0_3 - // // .set L0_3_set_1025, LBB0_1025-LJTI0_3 - // // .set L0_3_set_816, LBB0_816-LJTI0_3 - // // .set L0_3_set_836, LBB0_836-LJTI0_3 - // // .set L0_3_set_721, LBB0_721-LJTI0_3 - // // .set L0_3_set_840, LBB0_840-LJTI0_3 - // // .set L0_3_set_842, LBB0_842-LJTI0_3 - // // .set L0_3_set_846, LBB0_846-LJTI0_3 - // // .set L0_3_set_852, LBB0_852-LJTI0_3 - // // .set L0_3_set_855, LBB0_855-LJTI0_3 - //0x00005a44 LJTI0_3 - 0x51, 0xf2, 0xff, 0xff, //0x00005a44 .long L0_3_set_1026 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a48 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a4c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a50 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a54 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a58 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a5c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a60 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a64 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a68 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a6c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a70 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a74 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a78 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a7c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a80 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a84 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a88 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a8c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a90 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a94 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a98 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005a9c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005aa0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005aa4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005aa8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005aac .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ab0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ab4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ab8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005abc .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ac0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ac4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ac8 .long L0_3_set_1025 - 0x6c, 0xe1, 0xff, 0xff, //0x00005acc .long L0_3_set_816 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ad0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ad4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ad8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005adc .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ae0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ae4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ae8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005aec .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005af0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005af4 .long L0_3_set_1025 - 0xa1, 0xe2, 0xff, 0xff, //0x00005af8 .long L0_3_set_836 - 0x4a, 0xf2, 0xff, 0xff, //0x00005afc .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b00 .long L0_3_set_1025 - 0x8b, 0xda, 0xff, 0xff, //0x00005b04 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b08 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b0c .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b10 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b14 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b18 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b1c .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b20 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b24 .long L0_3_set_721 - 0x8b, 0xda, 0xff, 0xff, //0x00005b28 .long L0_3_set_721 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b2c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b30 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b34 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b38 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b3c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b40 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b44 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b48 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b4c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b50 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b54 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b58 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b5c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b60 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b64 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b68 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b6c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b70 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b74 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b78 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b7c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b80 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b84 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b88 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b8c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b90 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b94 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b98 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005b9c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ba0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ba4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005ba8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bac .long L0_3_set_1025 - 0xdf, 0xe2, 0xff, 0xff, //0x00005bb0 .long L0_3_set_840 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bb4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bb8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bbc .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bc0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bc4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bc8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bcc .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bd0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bd4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bd8 .long L0_3_set_1025 - 0x06, 0xe3, 0xff, 0xff, //0x00005bdc .long L0_3_set_842 - 0x4a, 0xf2, 0xff, 0xff, //0x00005be0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005be4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005be8 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bec .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bf0 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bf4 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005bf8 .long L0_3_set_1025 - 0x43, 0xe3, 0xff, 0xff, //0x00005bfc .long L0_3_set_846 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c00 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c04 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c08 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c0c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c10 .long L0_3_set_1025 - 0x73, 0xe3, 0xff, 0xff, //0x00005c14 .long L0_3_set_852 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c18 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c1c .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c20 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c24 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c28 .long L0_3_set_1025 - 0x4a, 0xf2, 0xff, 0xff, //0x00005c2c .long L0_3_set_1025 - 0xb3, 0xe3, 0xff, 0xff, //0x00005c30 .long L0_3_set_855 - // // .set L0_4_set_899, LBB0_899-LJTI0_4 - // // .set L0_4_set_914, LBB0_914-LJTI0_4 - // // .set L0_4_set_905, LBB0_905-LJTI0_4 - // // .set L0_4_set_908, LBB0_908-LJTI0_4 - //0x00005c34 LJTI0_4 - 0xd8, 0xe4, 0xff, 0xff, //0x00005c34 .long L0_4_set_899 - 0x26, 0xe6, 0xff, 0xff, //0x00005c38 .long L0_4_set_914 - 0xd8, 0xe4, 0xff, 0xff, //0x00005c3c .long L0_4_set_899 - 0x26, 0xe5, 0xff, 0xff, //0x00005c40 .long L0_4_set_905 - 0x26, 0xe6, 0xff, 0xff, //0x00005c44 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c48 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c4c .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c50 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c54 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c58 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c5c .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c60 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c64 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c68 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c6c .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c70 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c74 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c78 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c7c .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c80 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c84 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c88 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c8c .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c90 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c94 .long L0_4_set_914 - 0x26, 0xe6, 0xff, 0xff, //0x00005c98 .long L0_4_set_914 - 0x49, 0xe5, 0xff, 0xff, //0x00005c9c .long L0_4_set_908 - // // .set L0_5_set_769, LBB0_769-LJTI0_5 - // // .set L0_5_set_803, LBB0_803-LJTI0_5 - // // .set L0_5_set_774, LBB0_774-LJTI0_5 - // // .set L0_5_set_772, LBB0_772-LJTI0_5 - //0x00005ca0 LJTI0_5 - 0xd3, 0xdb, 0xff, 0xff, //0x00005ca0 .long L0_5_set_769 - 0x0c, 0xde, 0xff, 0xff, //0x00005ca4 .long L0_5_set_803 - 0xd3, 0xdb, 0xff, 0xff, //0x00005ca8 .long L0_5_set_769 - 0x02, 0xdc, 0xff, 0xff, //0x00005cac .long L0_5_set_774 - 0x0c, 0xde, 0xff, 0xff, //0x00005cb0 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cb4 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cb8 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cbc .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cc0 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cc4 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cc8 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005ccc .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cd0 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cd4 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cd8 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cdc .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005ce0 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005ce4 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005ce8 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cec .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cf0 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cf4 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cf8 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005cfc .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005d00 .long L0_5_set_803 - 0x0c, 0xde, 0xff, 0xff, //0x00005d04 .long L0_5_set_803 - 0xef, 0xdb, 0xff, 0xff, //0x00005d08 .long L0_5_set_772 - // // .set L0_6_set_1026, LBB0_1026-LJTI0_6 - // // .set L0_6_set_1032, LBB0_1032-LJTI0_6 - // // .set L0_6_set_1033, LBB0_1033-LJTI0_6 - // // .set L0_6_set_634, LBB0_634-LJTI0_6 - // // .set L0_6_set_1045, LBB0_1045-LJTI0_6 + 0x4c, 0x8d, 0x35, 0xa1, 0x20, 0x00, 0x00, //0x00003cd0 leaq $8353(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4d, 0x85, 0xed, //0x00003cd7 testq %r13, %r13 + 0x0f, 0x88, 0xd3, 0x12, 0x00, 0x00, //0x00003cda js LBB0_860 + //0x00003ce0 LBB0_820 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00003ce0 movq $8(%rsp), %r9 + 0x4d, 0x89, 0x29, //0x00003ce5 movq %r13, (%r9) + 0x4d, 0x85, 0xdb, //0x00003ce8 testq %r11, %r11 + 0x0f, 0x8e, 0xe3, 0x12, 0x00, 0x00, //0x00003ceb jle LBB0_732 + 0x49, 0x8b, 0x0c, 0x24, //0x00003cf1 movq (%r12), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00003cf5 cmpq $4095, %rcx + 0x0f, 0x8f, 0xa5, 0x12, 0x00, 0x00, //0x00003cfc jg LBB0_1135 + 0x48, 0x8d, 0x41, 0x01, //0x00003d02 leaq $1(%rcx), %rax + 0x49, 0x89, 0x04, 0x24, //0x00003d06 movq %rax, (%r12) + 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00003d0a movq $4, $8(%r12,%rcx,8) + 0xe9, 0x48, 0xf6, 0xff, 0xff, //0x00003d13 jmp LBB0_674 + //0x00003d18 LBB0_823 + 0x4c, 0x01, 0xd9, //0x00003d18 addq %r11, %rcx + 0x48, 0x03, 0x4c, 0x24, 0x20, //0x00003d1b addq $32(%rsp), %rcx + 0xc5, 0xf8, 0x77, //0x00003d20 vzeroupper + 0xc5, 0x7a, 0x6f, 0x3d, 0xf5, 0xc4, 0xff, 0xff, //0x00003d23 vmovdqu $-15115(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0x49, 0x89, 0xcb, //0x00003d2b movq %rcx, %r11 + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00003d2e jmp LBB0_827 + //0x00003d33 LBB0_824 + 0x89, 0xc9, //0x00003d33 movl %ecx, %ecx + 0x49, 0x01, 0xcb, //0x00003d35 addq %rcx, %r11 + 0x49, 0x01, 0xdb, //0x00003d38 addq %rbx, %r11 + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003d3b jmp LBB0_826 + //0x00003d40 LBB0_825 + 0x49, 0x01, 0xcb, //0x00003d40 addq %rcx, %r11 + //0x00003d43 LBB0_826 + 0x4c, 0x8d, 0x35, 0x2e, 0x20, 0x00, 0x00, //0x00003d43 leaq $8238(%rip), %r14 /* LJTI0_2+0(%rip) */ + //0x00003d4a LBB0_827 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003d4a movq $-1, %rcx + 0x48, 0x8b, 0x74, 0x24, 0x30, //0x00003d51 movq $48(%rsp), %rsi + 0x48, 0x85, 0xf6, //0x00003d56 testq %rsi, %rsi + 0x0f, 0x84, 0x99, 0x12, 0x00, 0x00, //0x00003d59 je LBB0_1055 + 0x4d, 0x85, 0xe4, //0x00003d5f testq %r12, %r12 + 0x0f, 0x84, 0x90, 0x12, 0x00, 0x00, //0x00003d62 je LBB0_1055 + 0x48, 0x85, 0xc0, //0x00003d68 testq %rax, %rax + 0x0f, 0x84, 0x87, 0x12, 0x00, 0x00, //0x00003d6b je LBB0_1055 + 0x4c, 0x2b, 0x5c, 0x24, 0x20, //0x00003d71 subq $32(%rsp), %r11 + 0x49, 0x8d, 0x4b, 0xff, //0x00003d76 leaq $-1(%r11), %rcx + 0x48, 0x39, 0xce, //0x00003d7a cmpq %rcx, %rsi + 0x0f, 0x84, 0x57, 0xf5, 0xff, 0xff, //0x00003d7d je LBB0_1053 + 0x49, 0x39, 0xcc, //0x00003d83 cmpq %rcx, %r12 + 0x0f, 0x84, 0x4e, 0xf5, 0xff, 0xff, //0x00003d86 je LBB0_1053 + 0x48, 0x39, 0xc8, //0x00003d8c cmpq %rcx, %rax + 0x0f, 0x84, 0x45, 0xf5, 0xff, 0xff, //0x00003d8f je LBB0_1053 + 0x4d, 0x85, 0xe4, //0x00003d95 testq %r12, %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0x60, 0xc2, 0xff, 0xff, //0x00003d98 vmovdqu $-15776(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xd8, 0xc2, 0xff, 0xff, //0x00003da0 vmovdqu $-15656(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xf0, 0xc2, 0xff, 0xff, //0x00003da8 vmovdqu $-15632(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x68, 0xc3, 0xff, 0xff, //0x00003db0 vmovdqu $-15512(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0x80, 0xc3, 0xff, 0xff, //0x00003db8 vmovdqu $-15488(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x98, 0xc3, 0xff, 0xff, //0x00003dc0 vmovdqu $-15464(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xb0, 0xc3, 0xff, 0xff, //0x00003dc8 vmovdqu $-15440(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x68, 0xc2, 0xff, 0xff, //0x00003dd0 vmovdqu $-15768(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xc0, 0xc3, 0xff, 0xff, //0x00003dd8 vmovdqu $-15424(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xd8, 0xc3, 0xff, 0xff, //0x00003de0 vmovdqu $-15400(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0x0f, 0x8e, 0x27, 0x00, 0x00, 0x00, //0x00003de8 jle LBB0_836 + 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003dee leaq $-1(%r12), %rcx + 0x48, 0x39, 0xc8, //0x00003df3 cmpq %rcx, %rax + 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00003df6 je LBB0_836 + 0x49, 0xf7, 0xd4, //0x00003dfc notq %r12 + 0x4d, 0x89, 0xe3, //0x00003dff movq %r12, %r11 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003e02 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xdb, //0x00003e07 testq %r11, %r11 + 0x0f, 0x89, 0x2b, 0xf5, 0xff, 0xff, //0x00003e0a jns LBB0_960 + 0xe9, 0xe0, 0x11, 0x00, 0x00, //0x00003e10 jmp LBB0_1054 + //0x00003e15 LBB0_836 + 0x48, 0x89, 0xf1, //0x00003e15 movq %rsi, %rcx + 0x48, 0x09, 0xc1, //0x00003e18 orq %rax, %rcx + 0x0f, 0x99, 0xc1, //0x00003e1b setns %cl + 0x0f, 0x88, 0x89, 0x02, 0x00, 0x00, //0x00003e1e js LBB0_880 + 0x48, 0x39, 0xc6, //0x00003e24 cmpq %rax, %rsi + 0x0f, 0x8c, 0x80, 0x02, 0x00, 0x00, //0x00003e27 jl LBB0_880 + 0x48, 0xf7, 0xd6, //0x00003e2d notq %rsi + 0x49, 0x89, 0xf3, //0x00003e30 movq %rsi, %r11 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003e33 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xdb, //0x00003e38 testq %r11, %r11 + 0x0f, 0x89, 0xfa, 0xf4, 0xff, 0xff, //0x00003e3b jns LBB0_960 + 0xe9, 0xaf, 0x11, 0x00, 0x00, //0x00003e41 jmp LBB0_1054 + //0x00003e46 LBB0_839 + 0x49, 0x8b, 0x09, //0x00003e46 movq (%r9), %rcx + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00003e49 movq $24(%rsp), %rax + 0x48, 0x8b, 0x10, //0x00003e4e movq (%rax), %rdx + 0x48, 0x8d, 0x42, 0xfc, //0x00003e51 leaq $-4(%rdx), %rax + 0x48, 0x39, 0xc1, //0x00003e55 cmpq %rax, %rcx + 0x0f, 0x87, 0x4d, 0x18, 0x00, 0x00, //0x00003e58 ja LBB0_1134 + 0x41, 0x8b, 0x14, 0x0f, //0x00003e5e movl (%r15,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00003e62 cmpl $1702063201, %edx + 0x0f, 0x85, 0x1e, 0x19, 0x00, 0x00, //0x00003e68 jne LBB0_1136 + 0x48, 0x8d, 0x41, 0x04, //0x00003e6e leaq $4(%rcx), %rax + 0x49, 0x89, 0x01, //0x00003e72 movq %rax, (%r9) + 0x48, 0x85, 0xc9, //0x00003e75 testq %rcx, %rcx + 0x0f, 0x8f, 0xe2, 0xf4, 0xff, 0xff, //0x00003e78 jg LBB0_674 + 0xe9, 0xfd, 0x19, 0x00, 0x00, //0x00003e7e jmp LBB0_842 + //0x00003e83 LBB0_843 + 0x4d, 0x8b, 0x19, //0x00003e83 movq (%r9), %r11 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00003e86 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x08, //0x00003e8b movq (%rax), %r9 + 0x4c, 0x89, 0xc9, //0x00003e8e movq %r9, %rcx + 0x4c, 0x29, 0xd9, //0x00003e91 subq %r11, %rcx + 0x0f, 0x84, 0x0e, 0x1a, 0x00, 0x00, //0x00003e94 je LBB0_1158 + 0x48, 0x83, 0xf9, 0x40, //0x00003e9a cmpq $64, %rcx + 0x0f, 0x82, 0x3a, 0x0a, 0x00, 0x00, //0x00003e9e jb LBB0_979 + 0x4c, 0x89, 0xdf, //0x00003ea4 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x00003ea7 notq %rdi + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003eaa movq $-1, %r8 + 0x4d, 0x89, 0xdd, //0x00003eb1 movq %r11, %r13 + 0x45, 0x31, 0xf6, //0x00003eb4 xorl %r14d, %r14d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003eb7 .p2align 4, 0x90 + //0x00003ec0 LBB0_846 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x2f, //0x00003ec0 vmovdqu (%r15,%r13), %ymm0 + 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x2f, 0x20, //0x00003ec6 vmovdqu $32(%r15,%r13), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00003ecd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00003ed1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x00003ed5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xc2, //0x00003ed9 vpmovmskb %ymm2, %eax + 0xc5, 0xfd, 0x74, 0xc7, //0x00003edd vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003ee1 vpmovmskb %ymm0, %esi + 0xc5, 0xf5, 0x74, 0xc7, //0x00003ee5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00003ee9 vpmovmskb %ymm0, %ebx + 0x48, 0xc1, 0xe0, 0x20, //0x00003eed shlq $32, %rax + 0x48, 0x09, 0xc2, //0x00003ef1 orq %rax, %rdx + 0x48, 0xc1, 0xe3, 0x20, //0x00003ef4 shlq $32, %rbx + 0x48, 0x09, 0xde, //0x00003ef8 orq %rbx, %rsi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00003efb jne LBB0_855 + 0x4d, 0x85, 0xf6, //0x00003f01 testq %r14, %r14 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00003f04 jne LBB0_857 + 0x45, 0x31, 0xf6, //0x00003f0a xorl %r14d, %r14d + 0x48, 0x85, 0xd2, //0x00003f0d testq %rdx, %rdx + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003f10 jne LBB0_858 + //0x00003f16 LBB0_849 + 0x48, 0x83, 0xc1, 0xc0, //0x00003f16 addq $-64, %rcx + 0x48, 0x83, 0xc7, 0xc0, //0x00003f1a addq $-64, %rdi + 0x49, 0x83, 0xc5, 0x40, //0x00003f1e addq $64, %r13 + 0x48, 0x83, 0xf9, 0x3f, //0x00003f22 cmpq $63, %rcx + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00003f26 ja LBB0_846 + 0xe9, 0x24, 0x08, 0x00, 0x00, //0x00003f2c jmp LBB0_850 + //0x00003f31 LBB0_855 + 0x49, 0x83, 0xf8, 0xff, //0x00003f31 cmpq $-1, %r8 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003f35 jne LBB0_857 + 0x4c, 0x0f, 0xbc, 0xc6, //0x00003f3b bsfq %rsi, %r8 + 0x4d, 0x01, 0xe8, //0x00003f3f addq %r13, %r8 + //0x00003f42 LBB0_857 + 0x4c, 0x89, 0xf0, //0x00003f42 movq %r14, %rax + 0x48, 0xf7, 0xd0, //0x00003f45 notq %rax + 0x48, 0x21, 0xf0, //0x00003f48 andq %rsi, %rax + 0x4c, 0x8d, 0x24, 0x00, //0x00003f4b leaq (%rax,%rax), %r12 + 0x4d, 0x09, 0xf4, //0x00003f4f orq %r14, %r12 + 0x4c, 0x89, 0xe3, //0x00003f52 movq %r12, %rbx + 0x48, 0xf7, 0xd3, //0x00003f55 notq %rbx + 0x48, 0x21, 0xf3, //0x00003f58 andq %rsi, %rbx + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003f5b movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf3, //0x00003f65 andq %rsi, %rbx + 0x45, 0x31, 0xf6, //0x00003f68 xorl %r14d, %r14d + 0x48, 0x01, 0xc3, //0x00003f6b addq %rax, %rbx + 0x41, 0x0f, 0x92, 0xc6, //0x00003f6e setb %r14b + 0x48, 0x01, 0xdb, //0x00003f72 addq %rbx, %rbx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003f75 movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc3, //0x00003f7f xorq %rax, %rbx + 0x4c, 0x21, 0xe3, //0x00003f82 andq %r12, %rbx + 0x48, 0xf7, 0xd3, //0x00003f85 notq %rbx + 0x48, 0x21, 0xda, //0x00003f88 andq %rbx, %rdx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00003f8b movq $16(%rsp), %r12 + 0x48, 0x85, 0xd2, //0x00003f90 testq %rdx, %rdx + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003f93 je LBB0_849 + //0x00003f99 LBB0_858 + 0x4c, 0x0f, 0xbc, 0xea, //0x00003f99 bsfq %rdx, %r13 + 0x49, 0x29, 0xfd, //0x00003f9d subq %rdi, %r13 + //0x00003fa0 LBB0_859 + 0x4d, 0x85, 0xed, //0x00003fa0 testq %r13, %r13 + 0x4c, 0x8d, 0x35, 0xce, 0x1d, 0x00, 0x00, //0x00003fa3 leaq $7630(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x89, 0x30, 0xf7, 0xff, 0xff, //0x00003faa jns LBB0_731 + 0xe9, 0xfe, 0x0f, 0x00, 0x00, //0x00003fb0 jmp LBB0_860 + //0x00003fb5 LBB0_863 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00003fb5 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x30, //0x00003fba movq (%rax), %r14 + 0x4d, 0x8b, 0x29, //0x00003fbd movq (%r9), %r13 + 0x4d, 0x29, 0xee, //0x00003fc0 subq %r13, %r14 + 0x0f, 0x84, 0xb7, 0x17, 0x00, 0x00, //0x00003fc3 je LBB0_1133 + 0x4f, 0x8d, 0x1c, 0x2f, //0x00003fc9 leaq (%r15,%r13), %r11 + 0x41, 0x80, 0x3b, 0x30, //0x00003fcd cmpb $48, (%r11) + 0x0f, 0x85, 0x27, 0x01, 0x00, 0x00, //0x00003fd1 jne LBB0_883 + 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00003fd7 movl $1, %r9d + 0x49, 0x83, 0xfe, 0x01, //0x00003fdd cmpq $1, %r14 + 0x0f, 0x85, 0xed, 0x00, 0x00, 0x00, //0x00003fe1 jne LBB0_881 + //0x00003fe7 LBB0_866 + 0x4c, 0x89, 0xe9, //0x00003fe7 movq %r13, %rcx + 0xe9, 0xcf, 0x08, 0x00, 0x00, //0x00003fea jmp LBB0_977 + //0x00003fef LBB0_867 + 0x49, 0x8b, 0x0c, 0x24, //0x00003fef movq (%r12), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00003ff3 cmpq $4095, %rcx + 0x0f, 0x8f, 0xa7, 0x0f, 0x00, 0x00, //0x00003ffa jg LBB0_1135 + 0x48, 0x8d, 0x41, 0x01, //0x00004000 leaq $1(%rcx), %rax + 0x49, 0x89, 0x04, 0x24, //0x00004004 movq %rax, (%r12) + 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00004008 movq $5, $8(%r12,%rcx,8) + 0xe9, 0x4a, 0xf3, 0xff, 0xff, //0x00004011 jmp LBB0_674 + //0x00004016 LBB0_869 + 0x49, 0x8b, 0x09, //0x00004016 movq (%r9), %rcx + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00004019 movq $24(%rsp), %rax + 0x48, 0x8b, 0x10, //0x0000401e movq (%rax), %rdx + 0x48, 0x8d, 0x42, 0xfd, //0x00004021 leaq $-3(%rdx), %rax + 0x48, 0x39, 0xc1, //0x00004025 cmpq %rax, %rcx + 0x0f, 0x87, 0x7d, 0x16, 0x00, 0x00, //0x00004028 ja LBB0_1134 + 0x4c, 0x8d, 0x69, 0xff, //0x0000402e leaq $-1(%rcx), %r13 + 0x41, 0x81, 0x7c, 0x0f, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00004032 cmpl $1819047278, $-1(%r15,%rcx) + 0x0f, 0x84, 0x30, 0x00, 0x00, 0x00, //0x0000403b je LBB0_877 + 0xe9, 0xa0, 0x17, 0x00, 0x00, //0x00004041 jmp LBB0_871 + //0x00004046 LBB0_875 + 0x49, 0x8b, 0x09, //0x00004046 movq (%r9), %rcx + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x00004049 movq $24(%rsp), %rax + 0x48, 0x8b, 0x10, //0x0000404e movq (%rax), %rdx + 0x48, 0x8d, 0x42, 0xfd, //0x00004051 leaq $-3(%rdx), %rax + 0x48, 0x39, 0xc1, //0x00004055 cmpq %rax, %rcx + 0x0f, 0x87, 0x4d, 0x16, 0x00, 0x00, //0x00004058 ja LBB0_1134 + 0x4c, 0x8d, 0x69, 0xff, //0x0000405e leaq $-1(%rcx), %r13 + 0x41, 0x81, 0x7c, 0x0f, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00004062 cmpl $1702195828, $-1(%r15,%rcx) + 0x0f, 0x85, 0xbc, 0x17, 0x00, 0x00, //0x0000406b jne LBB0_1141 + //0x00004071 LBB0_877 + 0x48, 0x8d, 0x41, 0x03, //0x00004071 leaq $3(%rcx), %rax + 0x49, 0x89, 0x01, //0x00004075 movq %rax, (%r9) + 0x48, 0x85, 0xc9, //0x00004078 testq %rcx, %rcx + 0x0f, 0x8f, 0xdf, 0xf2, 0xff, 0xff, //0x0000407b jg LBB0_674 + 0xe9, 0x93, 0x0e, 0x00, 0x00, //0x00004081 jmp LBB0_1050 + //0x00004086 LBB0_878 + 0x49, 0x8b, 0x0c, 0x24, //0x00004086 movq (%r12), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x0000408a cmpq $4095, %rcx + 0x0f, 0x8f, 0x10, 0x0f, 0x00, 0x00, //0x00004091 jg LBB0_1135 + 0x48, 0x8d, 0x41, 0x01, //0x00004097 leaq $1(%rcx), %rax + 0x49, 0x89, 0x04, 0x24, //0x0000409b movq %rax, (%r12) + 0x49, 0xc7, 0x44, 0xcc, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000409f movq $6, $8(%r12,%rcx,8) + 0xe9, 0xb3, 0xf2, 0xff, 0xff, //0x000040a8 jmp LBB0_674 + //0x000040ad LBB0_880 + 0x48, 0x8d, 0x50, 0xff, //0x000040ad leaq $-1(%rax), %rdx + 0x48, 0x39, 0xd6, //0x000040b1 cmpq %rdx, %rsi + 0x48, 0xf7, 0xd0, //0x000040b4 notq %rax + 0x49, 0x0f, 0x45, 0xc3, //0x000040b7 cmovneq %r11, %rax + 0x84, 0xc9, //0x000040bb testb %cl, %cl + 0x4c, 0x0f, 0x45, 0xd8, //0x000040bd cmovneq %rax, %r11 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000040c1 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xdb, //0x000040c6 testq %r11, %r11 + 0x0f, 0x89, 0x6c, 0xf2, 0xff, 0xff, //0x000040c9 jns LBB0_960 + 0xe9, 0x21, 0x0f, 0x00, 0x00, //0x000040cf jmp LBB0_1054 + //0x000040d4 LBB0_881 + 0x41, 0x8a, 0x4b, 0x01, //0x000040d4 movb $1(%r11), %cl + 0x80, 0xc1, 0xd2, //0x000040d8 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000040db cmpb $55, %cl + 0x0f, 0x87, 0x03, 0xff, 0xff, 0xff, //0x000040de ja LBB0_866 + 0x0f, 0xb6, 0xc1, //0x000040e4 movzbl %cl, %eax + 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000040e7 movabsq $36028797027352577, %rcx + 0x48, 0x0f, 0xa3, 0xc1, //0x000040f1 btq %rax, %rcx + 0x4c, 0x89, 0xe9, //0x000040f5 movq %r13, %rcx + 0x0f, 0x83, 0xc0, 0x07, 0x00, 0x00, //0x000040f8 jae LBB0_977 + //0x000040fe LBB0_883 + 0x49, 0x83, 0xfe, 0x20, //0x000040fe cmpq $32, %r14 + 0x0f, 0x82, 0xf3, 0x07, 0x00, 0x00, //0x00004102 jb LBB0_980 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00004108 movq $-1, $48(%rsp) + 0x45, 0x31, 0xc9, //0x00004111 xorl %r9d, %r9d + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004114 movq $-1, %r8 + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x0000411b movq $-1, %r12 + //0x00004122 LBB0_885 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x0b, //0x00004122 vmovdqu (%r11,%r9), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xc8, //0x00004128 vpcmpgtb %ymm8, %ymm0, %ymm1 + 0xc5, 0xb5, 0x64, 0xd0, //0x0000412d vpcmpgtb %ymm0, %ymm9, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00004131 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xad, 0x74, 0xd0, //0x00004135 vpcmpeqb %ymm0, %ymm10, %ymm2 + 0xc5, 0xa5, 0x74, 0xd8, //0x00004139 vpcmpeqb %ymm0, %ymm11, %ymm3 + 0xc5, 0xe5, 0xeb, 0xd2, //0x0000413d vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x9d, 0xdb, 0xd8, //0x00004141 vpand %ymm0, %ymm12, %ymm3 + 0xc5, 0x95, 0x74, 0xc0, //0x00004145 vpcmpeqb %ymm0, %ymm13, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00004149 vpmovmskb %ymm0, %esi + 0xc5, 0x8d, 0x74, 0xdb, //0x0000414d vpcmpeqb %ymm3, %ymm14, %ymm3 + 0xc5, 0xfd, 0xd7, 0xdb, //0x00004151 vpmovmskb %ymm3, %ebx + 0xc5, 0xfd, 0xd7, 0xfa, //0x00004155 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0xeb, 0xc0, //0x00004159 vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x0000415d vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x00004161 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00004165 vpmovmskb %ymm0, %eax + 0x48, 0xf7, 0xd0, //0x00004169 notq %rax + 0x48, 0x0f, 0xbc, 0xc8, //0x0000416c bsfq %rax, %rcx + 0x83, 0xf9, 0x20, //0x00004170 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00004173 je LBB0_887 + 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00004179 movl $-1, %eax + 0xd3, 0xe0, //0x0000417e shll %cl, %eax + 0xf7, 0xd0, //0x00004180 notl %eax + 0x21, 0xc6, //0x00004182 andl %eax, %esi + 0x21, 0xc3, //0x00004184 andl %eax, %ebx + 0x21, 0xf8, //0x00004186 andl %edi, %eax + 0x89, 0xc7, //0x00004188 movl %eax, %edi + //0x0000418a LBB0_887 + 0x8d, 0x56, 0xff, //0x0000418a leal $-1(%rsi), %edx + 0x21, 0xf2, //0x0000418d andl %esi, %edx + 0x0f, 0x85, 0xa3, 0x05, 0x00, 0x00, //0x0000418f jne LBB0_963 + 0x8d, 0x53, 0xff, //0x00004195 leal $-1(%rbx), %edx + 0x21, 0xda, //0x00004198 andl %ebx, %edx + 0x0f, 0x85, 0x98, 0x05, 0x00, 0x00, //0x0000419a jne LBB0_963 + 0x8d, 0x57, 0xff, //0x000041a0 leal $-1(%rdi), %edx + 0x21, 0xfa, //0x000041a3 andl %edi, %edx + 0x0f, 0x85, 0x8d, 0x05, 0x00, 0x00, //0x000041a5 jne LBB0_963 + 0x85, 0xf6, //0x000041ab testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000041ad je LBB0_893 + 0x0f, 0xbc, 0xf6, //0x000041b3 bsfl %esi, %esi + 0x49, 0x83, 0xfc, 0xff, //0x000041b6 cmpq $-1, %r12 + 0x0f, 0x85, 0xe8, 0x05, 0x00, 0x00, //0x000041ba jne LBB0_965 + 0x4c, 0x01, 0xce, //0x000041c0 addq %r9, %rsi + 0x49, 0x89, 0xf4, //0x000041c3 movq %rsi, %r12 + //0x000041c6 LBB0_893 + 0x85, 0xdb, //0x000041c6 testl %ebx, %ebx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000041c8 je LBB0_896 + 0x0f, 0xbc, 0xf3, //0x000041ce bsfl %ebx, %esi + 0x49, 0x83, 0xf8, 0xff, //0x000041d1 cmpq $-1, %r8 + 0x0f, 0x85, 0xcd, 0x05, 0x00, 0x00, //0x000041d5 jne LBB0_965 + 0x4c, 0x01, 0xce, //0x000041db addq %r9, %rsi + 0x49, 0x89, 0xf0, //0x000041de movq %rsi, %r8 + //0x000041e1 LBB0_896 + 0x85, 0xff, //0x000041e1 testl %edi, %edi + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000041e3 je LBB0_899 + 0x0f, 0xbc, 0xf7, //0x000041e9 bsfl %edi, %esi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000041ec cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xb0, 0x05, 0x00, 0x00, //0x000041f2 jne LBB0_965 + 0x4c, 0x01, 0xce, //0x000041f8 addq %r9, %rsi + 0x48, 0x89, 0x74, 0x24, 0x30, //0x000041fb movq %rsi, $48(%rsp) + //0x00004200 LBB0_899 + 0x83, 0xf9, 0x20, //0x00004200 cmpl $32, %ecx + 0x0f, 0x85, 0x1e, 0x02, 0x00, 0x00, //0x00004203 jne LBB0_933 + 0x49, 0x83, 0xc6, 0xe0, //0x00004209 addq $-32, %r14 + 0x49, 0x83, 0xc1, 0x20, //0x0000420d addq $32, %r9 + 0x49, 0x83, 0xfe, 0x1f, //0x00004211 cmpq $31, %r14 + 0x0f, 0x87, 0x07, 0xff, 0xff, 0xff, //0x00004215 ja LBB0_885 + 0xc5, 0xf8, 0x77, //0x0000421b vzeroupper + 0x4d, 0x01, 0xd9, //0x0000421e addq %r11, %r9 + 0x49, 0x83, 0xfe, 0x10, //0x00004221 cmpq $16, %r14 + 0xc5, 0x7a, 0x6f, 0x3d, 0xf3, 0xbf, 0xff, 0xff, //0x00004225 vmovdqu $-16397(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0x0f, 0x82, 0x5c, 0x01, 0x00, 0x00, //0x0000422d jb LBB0_920 + //0x00004233 LBB0_902 + 0x4c, 0x89, 0xc8, //0x00004233 movq %r9, %rax + 0x4c, 0x29, 0xd8, //0x00004236 subq %r11, %rax + 0x48, 0x89, 0x44, 0x24, 0x20, //0x00004239 movq %rax, $32(%rsp) + 0x31, 0xc0, //0x0000423e xorl %eax, %eax + //0x00004240 LBB0_903 + 0x4c, 0x89, 0xe2, //0x00004240 movq %r12, %rdx + 0x4d, 0x89, 0xdc, //0x00004243 movq %r11, %r12 + 0xc4, 0xc1, 0x7a, 0x6f, 0x04, 0x01, //0x00004246 vmovdqu (%r9,%rax), %xmm0 + 0xc4, 0xc1, 0x79, 0x64, 0xcf, //0x0000424c vpcmpgtb %xmm15, %xmm0, %xmm1 + 0xc5, 0xfa, 0x6f, 0x15, 0xd7, 0xbf, 0xff, 0xff, //0x00004251 vmovdqu $-16425(%rip), %xmm2 /* LCPI0_20+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x00004259 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x0000425d vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0xd7, 0xbf, 0xff, 0xff, //0x00004261 vpcmpeqb $-16425(%rip), %xmm0, %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xdf, 0xbf, 0xff, 0xff, //0x00004269 vpcmpeqb $-16417(%rip), %xmm0, %xmm3 /* LCPI0_22+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00004271 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x73, 0xbf, 0xff, 0xff, //0x00004275 vpand $-16525(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xdb, 0xbf, 0xff, 0xff, //0x0000427d vpcmpeqb $-16421(%rip), %xmm0, %xmm0 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0xe3, 0xbf, 0xff, 0xff, //0x00004285 vpcmpeqb $-16413(%rip), %xmm3, %xmm3 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x0000428d vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00004291 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00004295 vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xd8, //0x00004299 vpmovmskb %xmm0, %r11d + 0xc5, 0xf9, 0xd7, 0xf3, //0x0000429d vpmovmskb %xmm3, %esi + 0xc5, 0xf9, 0xd7, 0xfa, //0x000042a1 vpmovmskb %xmm2, %edi + 0xc5, 0xf9, 0xd7, 0xc9, //0x000042a5 vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x000042a9 notl %ecx + 0x0f, 0xbc, 0xc9, //0x000042ab bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x000042ae cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000042b1 je LBB0_905 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000042b7 movl $-1, %ebx + 0xd3, 0xe3, //0x000042bc shll %cl, %ebx + 0xf7, 0xd3, //0x000042be notl %ebx + 0x41, 0x21, 0xdb, //0x000042c0 andl %ebx, %r11d + 0x21, 0xde, //0x000042c3 andl %ebx, %esi + 0x21, 0xfb, //0x000042c5 andl %edi, %ebx + 0x89, 0xdf, //0x000042c7 movl %ebx, %edi + //0x000042c9 LBB0_905 + 0x41, 0x8d, 0x5b, 0xff, //0x000042c9 leal $-1(%r11), %ebx + 0x44, 0x21, 0xdb, //0x000042cd andl %r11d, %ebx + 0x0f, 0x85, 0xed, 0x04, 0x00, 0x00, //0x000042d0 jne LBB0_967 + 0x8d, 0x5e, 0xff, //0x000042d6 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000042d9 andl %esi, %ebx + 0x0f, 0x85, 0xe2, 0x04, 0x00, 0x00, //0x000042db jne LBB0_967 + 0x8d, 0x5f, 0xff, //0x000042e1 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000042e4 andl %edi, %ebx + 0x0f, 0x85, 0xd7, 0x04, 0x00, 0x00, //0x000042e6 jne LBB0_967 + 0x45, 0x85, 0xdb, //0x000042ec testl %r11d, %r11d + 0x0f, 0x84, 0x1c, 0x00, 0x00, 0x00, //0x000042ef je LBB0_911 + 0x41, 0x0f, 0xbc, 0xdb, //0x000042f5 bsfl %r11d, %ebx + 0x48, 0x83, 0xfa, 0xff, //0x000042f9 cmpq $-1, %rdx + 0x0f, 0x85, 0x41, 0x05, 0x00, 0x00, //0x000042fd jne LBB0_973 + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00004303 movq $32(%rsp), %rdx + 0x48, 0x01, 0xc2, //0x00004308 addq %rax, %rdx + 0x48, 0x01, 0xd3, //0x0000430b addq %rdx, %rbx + 0x48, 0x89, 0xda, //0x0000430e movq %rbx, %rdx + //0x00004311 LBB0_911 + 0x4d, 0x89, 0xe3, //0x00004311 movq %r12, %r11 + 0x85, 0xf6, //0x00004314 testl %esi, %esi + 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00004316 je LBB0_914 + 0x0f, 0xbc, 0xf6, //0x0000431c bsfl %esi, %esi + 0x49, 0x83, 0xf8, 0xff, //0x0000431f cmpq $-1, %r8 + 0x0f, 0x85, 0xf7, 0x04, 0x00, 0x00, //0x00004323 jne LBB0_971 + 0x49, 0x89, 0xd4, //0x00004329 movq %rdx, %r12 + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x0000432c movq $32(%rsp), %rdx + 0x48, 0x01, 0xc2, //0x00004331 addq %rax, %rdx + 0x48, 0x01, 0xd6, //0x00004334 addq %rdx, %rsi + 0x49, 0x89, 0xf0, //0x00004337 movq %rsi, %r8 + 0x85, 0xff, //0x0000433a testl %edi, %edi + 0x0f, 0x85, 0x10, 0x00, 0x00, 0x00, //0x0000433c jne LBB0_915 + 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x00004342 jmp LBB0_917 + //0x00004347 LBB0_914 + 0x49, 0x89, 0xd4, //0x00004347 movq %rdx, %r12 + 0x85, 0xff, //0x0000434a testl %edi, %edi + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x0000434c je LBB0_917 + //0x00004352 LBB0_915 + 0x0f, 0xbc, 0xf7, //0x00004352 bsfl %edi, %esi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00004355 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xbf, 0x04, 0x00, 0x00, //0x0000435b jne LBB0_971 + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00004361 movq $32(%rsp), %rdx + 0x48, 0x01, 0xc2, //0x00004366 addq %rax, %rdx + 0x48, 0x01, 0xd6, //0x00004369 addq %rdx, %rsi + 0x48, 0x89, 0x74, 0x24, 0x30, //0x0000436c movq %rsi, $48(%rsp) + //0x00004371 LBB0_917 + 0x83, 0xf9, 0x10, //0x00004371 cmpl $16, %ecx + 0x0f, 0x85, 0x4e, 0x01, 0x00, 0x00, //0x00004374 jne LBB0_936 + 0x49, 0x83, 0xc6, 0xf0, //0x0000437a addq $-16, %r14 + 0x48, 0x83, 0xc0, 0x10, //0x0000437e addq $16, %rax + 0x49, 0x83, 0xfe, 0x0f, //0x00004382 cmpq $15, %r14 + 0x0f, 0x87, 0xb4, 0xfe, 0xff, 0xff, //0x00004386 ja LBB0_903 + 0x49, 0x01, 0xc1, //0x0000438c addq %rax, %r9 + //0x0000438f LBB0_920 + 0x4d, 0x85, 0xf6, //0x0000438f testq %r14, %r14 + 0x0f, 0x84, 0x55, 0x01, 0x00, 0x00, //0x00004392 je LBB0_938 + 0x4b, 0x8d, 0x1c, 0x31, //0x00004398 leaq (%r9,%r14), %rbx + 0x4c, 0x89, 0xcf, //0x0000439c movq %r9, %rdi + 0x4c, 0x29, 0xdf, //0x0000439f subq %r11, %rdi + 0x31, 0xc9, //0x000043a2 xorl %ecx, %ecx + 0xe9, 0x24, 0x00, 0x00, 0x00, //0x000043a4 jmp LBB0_926 + //0x000043a9 LBB0_922 + 0x83, 0xfe, 0x65, //0x000043a9 cmpl $101, %esi + 0x0f, 0x85, 0x38, 0x01, 0x00, 0x00, //0x000043ac jne LBB0_937 + //0x000043b2 LBB0_923 + 0x49, 0x83, 0xf8, 0xff, //0x000043b2 cmpq $-1, %r8 + 0x0f, 0x85, 0x0f, 0x04, 0x00, 0x00, //0x000043b6 jne LBB0_968 + 0x4c, 0x8d, 0x04, 0x0f, //0x000043bc leaq (%rdi,%rcx), %r8 + //0x000043c0 .p2align 4, 0x90 + //0x000043c0 LBB0_925 + 0x48, 0x83, 0xc1, 0x01, //0x000043c0 addq $1, %rcx + 0x49, 0x39, 0xce, //0x000043c4 cmpq %rcx, %r14 + 0x0f, 0x84, 0x4e, 0x03, 0x00, 0x00, //0x000043c7 je LBB0_962 + //0x000043cd LBB0_926 + 0x41, 0x0f, 0xbe, 0x34, 0x09, //0x000043cd movsbl (%r9,%rcx), %esi + 0x8d, 0x46, 0xd0, //0x000043d2 leal $-48(%rsi), %eax + 0x83, 0xf8, 0x0a, //0x000043d5 cmpl $10, %eax + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x000043d8 jb LBB0_925 + 0x8d, 0x56, 0xd5, //0x000043de leal $-43(%rsi), %edx + 0x83, 0xfa, 0x1a, //0x000043e1 cmpl $26, %edx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x000043e4 ja LBB0_922 + 0x48, 0x8d, 0x35, 0x8f, 0x1b, 0x00, 0x00, //0x000043ea leaq $7055(%rip), %rsi /* LJTI0_4+0(%rip) */ + 0x48, 0x63, 0x04, 0x96, //0x000043f1 movslq (%rsi,%rdx,4), %rax + 0x48, 0x01, 0xf0, //0x000043f5 addq %rsi, %rax + 0xff, 0xe0, //0x000043f8 jmpq *%rax + //0x000043fa LBB0_929 + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000043fa cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xc5, 0x03, 0x00, 0x00, //0x00004400 jne LBB0_968 + 0x48, 0x8d, 0x04, 0x0f, //0x00004406 leaq (%rdi,%rcx), %rax + 0x48, 0x89, 0x44, 0x24, 0x30, //0x0000440a movq %rax, $48(%rsp) + 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000440f jmp LBB0_925 + //0x00004414 LBB0_931 + 0x49, 0x83, 0xfc, 0xff, //0x00004414 cmpq $-1, %r12 + 0x0f, 0x85, 0xad, 0x03, 0x00, 0x00, //0x00004418 jne LBB0_968 + 0x4c, 0x8d, 0x24, 0x0f, //0x0000441e leaq (%rdi,%rcx), %r12 + 0xe9, 0x99, 0xff, 0xff, 0xff, //0x00004422 jmp LBB0_925 + //0x00004427 LBB0_933 + 0x4c, 0x01, 0xc9, //0x00004427 addq %r9, %rcx + 0x4c, 0x01, 0xd9, //0x0000442a addq %r11, %rcx + 0xc5, 0xf8, 0x77, //0x0000442d vzeroupper + 0xc5, 0x7a, 0x6f, 0x3d, 0xe8, 0xbd, 0xff, 0xff, //0x00004430 vmovdqu $-16920(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0x49, 0x89, 0xc9, //0x00004438 movq %rcx, %r9 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000443b movq $-1, %rcx + 0x4d, 0x85, 0xe4, //0x00004442 testq %r12, %r12 + 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00004445 movq $48(%rsp), %rdx + 0x0f, 0x85, 0xb2, 0x00, 0x00, 0x00, //0x0000444a jne LBB0_939 + 0xe9, 0x43, 0x14, 0x00, 0x00, //0x00004450 jmp LBB0_1148 + //0x00004455 LBB0_934 + 0x4d, 0x89, 0xf3, //0x00004455 movq %r14, %r11 + 0xe9, 0xe6, 0xf8, 0xff, 0xff, //0x00004458 jmp LBB0_826 + //0x0000445d LBB0_720 + 0x4d, 0x01, 0xfd, //0x0000445d addq %r15, %r13 + 0x48, 0x83, 0xf9, 0x20, //0x00004460 cmpq $32, %rcx + 0x0f, 0x82, 0x1e, 0x05, 0x00, 0x00, //0x00004464 jb LBB0_985 + //0x0000446a LBB0_721 + 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x0000446a vmovdqu (%r13), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00004470 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00004474 vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00004478 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000447c vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00004480 testl %esi, %esi + 0x0f, 0x85, 0xa4, 0x04, 0x00, 0x00, //0x00004482 jne LBB0_981 + 0x4d, 0x85, 0xf6, //0x00004488 testq %r14, %r14 + 0x0f, 0x85, 0xb2, 0x04, 0x00, 0x00, //0x0000448b jne LBB0_983 + 0x45, 0x31, 0xf6, //0x00004491 xorl %r14d, %r14d + 0x48, 0x85, 0xd2, //0x00004494 testq %rdx, %rdx + 0x0f, 0x84, 0xe3, 0x04, 0x00, 0x00, //0x00004497 je LBB0_984 + //0x0000449d LBB0_724 + 0x48, 0x0f, 0xbc, 0xc2, //0x0000449d bsfq %rdx, %rax + 0x4d, 0x29, 0xfd, //0x000044a1 subq %r15, %r13 + 0x49, 0x01, 0xc5, //0x000044a4 addq %rax, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x000044a7 addq $1, %r13 + 0x4c, 0x8d, 0x35, 0xc6, 0x18, 0x00, 0x00, //0x000044ab leaq $6342(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4d, 0x85, 0xed, //0x000044b2 testq %r13, %r13 + 0x0f, 0x89, 0x25, 0xf2, 0xff, 0xff, //0x000044b5 jns LBB0_731 + 0xe9, 0xf3, 0x0a, 0x00, 0x00, //0x000044bb jmp LBB0_860 + //0x000044c0 LBB0_935 + 0x0f, 0xbc, 0xc2, //0x000044c0 bsfl %edx, %eax + 0xe9, 0x4a, 0x01, 0x00, 0x00, //0x000044c3 jmp LBB0_952 + //0x000044c8 LBB0_936 + 0x89, 0xc9, //0x000044c8 movl %ecx, %ecx + 0x49, 0x01, 0xc9, //0x000044ca addq %rcx, %r9 + 0x49, 0x01, 0xc1, //0x000044cd addq %rax, %r9 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000044d0 movq $-1, %rcx + 0x4d, 0x85, 0xe4, //0x000044d7 testq %r12, %r12 + 0x48, 0x8b, 0x54, 0x24, 0x30, //0x000044da movq $48(%rsp), %rdx + 0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x000044df jne LBB0_939 + 0xe9, 0xae, 0x13, 0x00, 0x00, //0x000044e5 jmp LBB0_1148 + //0x000044ea LBB0_937 + 0x49, 0x01, 0xc9, //0x000044ea addq %rcx, %r9 + //0x000044ed LBB0_938 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000044ed movq $-1, %rcx + 0x4d, 0x85, 0xe4, //0x000044f4 testq %r12, %r12 + 0x48, 0x8b, 0x54, 0x24, 0x30, //0x000044f7 movq $48(%rsp), %rdx + 0x0f, 0x84, 0x96, 0x13, 0x00, 0x00, //0x000044fc je LBB0_1148 + //0x00004502 LBB0_939 + 0x48, 0x85, 0xd2, //0x00004502 testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x2d, 0xf3, 0xba, 0xff, 0xff, //0x00004505 vmovdqu $-17677(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x6b, 0xbb, 0xff, 0xff, //0x0000450d vmovdqu $-17557(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x83, 0xbb, 0xff, 0xff, //0x00004515 vmovdqu $-17533(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xfb, 0xbb, 0xff, 0xff, //0x0000451d vmovdqu $-17413(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0x13, 0xbc, 0xff, 0xff, //0x00004525 vmovdqu $-17389(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x2b, 0xbc, 0xff, 0xff, //0x0000452d vmovdqu $-17365(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x43, 0xbc, 0xff, 0xff, //0x00004535 vmovdqu $-17341(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xfb, 0xba, 0xff, 0xff, //0x0000453d vmovdqu $-17669(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x53, 0xbc, 0xff, 0xff, //0x00004545 vmovdqu $-17325(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x6b, 0xbc, 0xff, 0xff, //0x0000454d vmovdqu $-17301(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0x0f, 0x84, 0x3d, 0x13, 0x00, 0x00, //0x00004555 je LBB0_1148 + 0x4d, 0x85, 0xc0, //0x0000455b testq %r8, %r8 + 0x0f, 0x84, 0x34, 0x13, 0x00, 0x00, //0x0000455e je LBB0_1148 + 0x4d, 0x29, 0xd9, //0x00004564 subq %r11, %r9 + 0x49, 0x8d, 0x49, 0xff, //0x00004567 leaq $-1(%r9), %rcx + 0x49, 0x39, 0xcc, //0x0000456b cmpq %rcx, %r12 + 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x0000456e je LBB0_1146 + 0x48, 0x39, 0xca, //0x00004574 cmpq %rcx, %rdx + 0x0f, 0x84, 0x38, 0x00, 0x00, 0x00, //0x00004577 je LBB0_1146 + 0x49, 0x39, 0xc8, //0x0000457d cmpq %rcx, %r8 + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00004580 je LBB0_1146 + 0x48, 0x85, 0xd2, //0x00004586 testq %rdx, %rdx + 0x0f, 0x8e, 0x3c, 0x00, 0x00, 0x00, //0x00004589 jle LBB0_947 + 0x48, 0x8d, 0x42, 0xff, //0x0000458f leaq $-1(%rdx), %rax + 0x49, 0x39, 0xc0, //0x00004593 cmpq %rax, %r8 + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00004596 je LBB0_947 + 0x48, 0xf7, 0xd2, //0x0000459c notq %rdx + 0x49, 0x89, 0xd1, //0x0000459f movq %rdx, %r9 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000045a2 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xc9, //0x000045a7 testq %r9, %r9 + 0x0f, 0x89, 0x06, 0x03, 0x00, 0x00, //0x000045aa jns LBB0_976 + 0xe9, 0xe0, 0x12, 0x00, 0x00, //0x000045b0 jmp LBB0_1147 + //0x000045b5 LBB0_1146 + 0x49, 0xf7, 0xd9, //0x000045b5 negq %r9 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000045b8 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xc9, //0x000045bd testq %r9, %r9 + 0x0f, 0x89, 0xf0, 0x02, 0x00, 0x00, //0x000045c0 jns LBB0_976 + 0xe9, 0xca, 0x12, 0x00, 0x00, //0x000045c6 jmp LBB0_1147 + //0x000045cb LBB0_947 + 0x4c, 0x89, 0xe0, //0x000045cb movq %r12, %rax + 0x4c, 0x09, 0xc0, //0x000045ce orq %r8, %rax + 0x0f, 0x99, 0xc1, //0x000045d1 setns %cl + 0x0f, 0x88, 0xb4, 0x00, 0x00, 0x00, //0x000045d4 js LBB0_953 + 0x4d, 0x39, 0xc4, //0x000045da cmpq %r8, %r12 + 0x0f, 0x8c, 0xab, 0x00, 0x00, 0x00, //0x000045dd jl LBB0_953 + 0x49, 0xf7, 0xd4, //0x000045e3 notq %r12 + 0x4d, 0x89, 0xe1, //0x000045e6 movq %r12, %r9 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000045e9 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xc9, //0x000045ee testq %r9, %r9 + 0x0f, 0x89, 0xbf, 0x02, 0x00, 0x00, //0x000045f1 jns LBB0_976 + 0xe9, 0x99, 0x12, 0x00, 0x00, //0x000045f7 jmp LBB0_1147 + //0x000045fc LBB0_950 + 0x4d, 0x29, 0xfa, //0x000045fc subq %r15, %r10 + 0x49, 0x01, 0xf2, //0x000045ff addq %rsi, %r10 + 0x49, 0x39, 0xda, //0x00004602 cmpq %rbx, %r10 + 0x0f, 0x82, 0x37, 0xef, 0xff, 0xff, //0x00004605 jb LBB0_706 + 0xe9, 0x8b, 0x09, 0x00, 0x00, //0x0000460b jmp LBB0_1046 + //0x00004610 LBB0_951 + 0x89, 0xf0, //0x00004610 movl %esi, %eax + //0x00004612 LBB0_952 + 0x49, 0xf7, 0xd3, //0x00004612 notq %r11 + 0x49, 0x29, 0xc3, //0x00004615 subq %rax, %r11 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004618 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xdb, //0x0000461d testq %r11, %r11 + 0x0f, 0x89, 0x15, 0xed, 0xff, 0xff, //0x00004620 jns LBB0_960 + 0xe9, 0xca, 0x09, 0x00, 0x00, //0x00004626 jmp LBB0_1054 + //0x0000462b LBB0_809 + 0x4d, 0x01, 0xfd, //0x0000462b addq %r15, %r13 + 0x48, 0x83, 0xf9, 0x20, //0x0000462e cmpq $32, %rcx + 0x0f, 0x82, 0x85, 0x04, 0x00, 0x00, //0x00004632 jb LBB0_1002 + //0x00004638 LBB0_810 + 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x00004638 vmovdqu (%r13), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x0000463e vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00004642 vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00004646 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000464a vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x0000464e testl %esi, %esi + 0x0f, 0x85, 0x0b, 0x04, 0x00, 0x00, //0x00004650 jne LBB0_998 + 0x4d, 0x85, 0xf6, //0x00004656 testq %r14, %r14 + 0x0f, 0x85, 0x19, 0x04, 0x00, 0x00, //0x00004659 jne LBB0_1000 + 0x45, 0x31, 0xf6, //0x0000465f xorl %r14d, %r14d + 0x48, 0x85, 0xd2, //0x00004662 testq %rdx, %rdx + 0x0f, 0x84, 0x4a, 0x04, 0x00, 0x00, //0x00004665 je LBB0_1001 + //0x0000466b LBB0_813 + 0x48, 0x0f, 0xbc, 0xc2, //0x0000466b bsfq %rdx, %rax + 0x4d, 0x29, 0xfd, //0x0000466f subq %r15, %r13 + 0x49, 0x01, 0xc5, //0x00004672 addq %rax, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x00004675 addq $1, %r13 + 0x4c, 0x8d, 0x35, 0xf8, 0x16, 0x00, 0x00, //0x00004679 leaq $5880(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4d, 0x85, 0xed, //0x00004680 testq %r13, %r13 + 0x0f, 0x89, 0x57, 0xf6, 0xff, 0xff, //0x00004683 jns LBB0_820 + 0xe9, 0x25, 0x09, 0x00, 0x00, //0x00004689 jmp LBB0_860 + //0x0000468e LBB0_953 + 0x49, 0x8d, 0x40, 0xff, //0x0000468e leaq $-1(%r8), %rax + 0x49, 0x39, 0xc4, //0x00004692 cmpq %rax, %r12 + 0x49, 0xf7, 0xd0, //0x00004695 notq %r8 + 0x4d, 0x0f, 0x45, 0xc1, //0x00004698 cmovneq %r9, %r8 + 0x84, 0xc9, //0x0000469c testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xc8, //0x0000469e cmovneq %r8, %r9 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000046a2 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xc9, //0x000046a7 testq %r9, %r9 + 0x0f, 0x89, 0x06, 0x02, 0x00, 0x00, //0x000046aa jns LBB0_976 + 0xe9, 0xe0, 0x11, 0x00, 0x00, //0x000046b0 jmp LBB0_1147 + //0x000046b5 LBB0_954 + 0x0f, 0xbc, 0xc2, //0x000046b5 bsfl %edx, %eax + 0xe9, 0x19, 0x00, 0x00, 0x00, //0x000046b8 jmp LBB0_958 + //0x000046bd LBB0_955 + 0x4c, 0x03, 0x7c, 0x24, 0x38, //0x000046bd addq $56(%rsp), %r15 + 0x4d, 0x29, 0xdf, //0x000046c2 subq %r11, %r15 + 0x49, 0x29, 0xcf, //0x000046c5 subq %rcx, %r15 + //0x000046c8 LBB0_956 + 0x49, 0x83, 0xc7, 0xfe, //0x000046c8 addq $-2, %r15 + 0x4d, 0x89, 0xfb, //0x000046cc movq %r15, %r11 + 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x000046cf jmp LBB0_959 + //0x000046d4 LBB0_957 + 0x89, 0xf0, //0x000046d4 movl %esi, %eax + //0x000046d6 LBB0_958 + 0x4c, 0x03, 0x7c, 0x24, 0x38, //0x000046d6 addq $56(%rsp), %r15 + 0x4d, 0x29, 0xdf, //0x000046db subq %r11, %r15 + 0x49, 0x29, 0xc7, //0x000046de subq %rax, %r15 + 0x49, 0x29, 0xdf, //0x000046e1 subq %rbx, %r15 + 0x49, 0x83, 0xc7, 0xfe, //0x000046e4 addq $-2, %r15 + 0x4d, 0x89, 0xfb, //0x000046e8 movq %r15, %r11 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000046eb movq $8(%rsp), %r9 + //0x000046f0 LBB0_959 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000046f0 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0x7c, 0x16, 0x00, 0x00, //0x000046f5 leaq $5756(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4d, 0x85, 0xdb, //0x000046fc testq %r11, %r11 + 0x0f, 0x89, 0x36, 0xec, 0xff, 0xff, //0x000046ff jns LBB0_960 + 0xe9, 0xeb, 0x08, 0x00, 0x00, //0x00004705 jmp LBB0_1054 + //0x0000470a LBB0_961 + 0x4d, 0x01, 0xfa, //0x0000470a addq %r15, %r10 + 0x48, 0x85, 0xd2, //0x0000470d testq %rdx, %rdx + 0x0f, 0x85, 0xc2, 0xed, 0xff, 0xff, //0x00004710 jne LBB0_699 + 0xe9, 0xf7, 0xed, 0xff, 0xff, //0x00004716 jmp LBB0_704 + //0x0000471b LBB0_962 + 0x49, 0x89, 0xd9, //0x0000471b movq %rbx, %r9 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000471e movq $-1, %rcx + 0x4d, 0x85, 0xe4, //0x00004725 testq %r12, %r12 + 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00004728 movq $48(%rsp), %rdx + 0x0f, 0x85, 0xcf, 0xfd, 0xff, 0xff, //0x0000472d jne LBB0_939 + 0xe9, 0x60, 0x11, 0x00, 0x00, //0x00004733 jmp LBB0_1148 + //0x00004738 LBB0_963 + 0x0f, 0xbc, 0xc2, //0x00004738 bsfl %edx, %eax + 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x0000473b jmp LBB0_966 + //0x00004740 LBB0_964 + 0x89, 0xf0, //0x00004740 movl %esi, %eax + 0x4c, 0x03, 0x7c, 0x24, 0x38, //0x00004742 addq $56(%rsp), %r15 + 0x4d, 0x29, 0xdf, //0x00004747 subq %r11, %r15 + 0x49, 0x29, 0xc7, //0x0000474a subq %rax, %r15 + 0x49, 0x29, 0xdf, //0x0000474d subq %rbx, %r15 + 0xe9, 0x73, 0xff, 0xff, 0xff, //0x00004750 jmp LBB0_956 + //0x00004755 LBB0_850 + 0x4d, 0x01, 0xfd, //0x00004755 addq %r15, %r13 + 0x48, 0x83, 0xf9, 0x20, //0x00004758 cmpq $32, %rcx + 0x0f, 0x82, 0x18, 0x05, 0x00, 0x00, //0x0000475c jb LBB0_1023 + //0x00004762 LBB0_851 + 0xc4, 0xc1, 0x7e, 0x6f, 0x45, 0x00, //0x00004762 vmovdqu (%r13), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00004768 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x0000476c vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00004770 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00004774 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00004778 testl %esi, %esi + 0x0f, 0x85, 0x9e, 0x04, 0x00, 0x00, //0x0000477a jne LBB0_1019 + 0x4d, 0x85, 0xf6, //0x00004780 testq %r14, %r14 + 0x0f, 0x85, 0xac, 0x04, 0x00, 0x00, //0x00004783 jne LBB0_1021 + 0x45, 0x31, 0xf6, //0x00004789 xorl %r14d, %r14d + 0x48, 0x85, 0xd2, //0x0000478c testq %rdx, %rdx + 0x0f, 0x84, 0xdd, 0x04, 0x00, 0x00, //0x0000478f je LBB0_1022 + //0x00004795 LBB0_854 + 0x48, 0x0f, 0xbc, 0xc2, //0x00004795 bsfq %rdx, %rax + 0x4d, 0x29, 0xfd, //0x00004799 subq %r15, %r13 + 0x49, 0x01, 0xc5, //0x0000479c addq %rax, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x0000479f addq $1, %r13 + 0xe9, 0xf8, 0xf7, 0xff, 0xff, //0x000047a3 jmp LBB0_859 + //0x000047a8 LBB0_965 + 0x89, 0xf0, //0x000047a8 movl %esi, %eax + //0x000047aa LBB0_966 + 0x49, 0xf7, 0xd1, //0x000047aa notq %r9 + 0x49, 0x29, 0xc1, //0x000047ad subq %rax, %r9 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x000047b0 movq $16(%rsp), %r12 + 0x4d, 0x85, 0xc9, //0x000047b5 testq %r9, %r9 + 0x0f, 0x89, 0xf8, 0x00, 0x00, 0x00, //0x000047b8 jns LBB0_976 + 0xe9, 0xd2, 0x10, 0x00, 0x00, //0x000047be jmp LBB0_1147 + //0x000047c3 LBB0_967 + 0x0f, 0xbc, 0xcb, //0x000047c3 bsfl %ebx, %ecx + 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x000047c6 jmp LBB0_974 + //0x000047cb LBB0_968 + 0x4d, 0x01, 0xef, //0x000047cb addq %r13, %r15 + 0x4d, 0x29, 0xcf, //0x000047ce subq %r9, %r15 + 0x48, 0xf7, 0xd1, //0x000047d1 notq %rcx + 0x4c, 0x01, 0xf9, //0x000047d4 addq %r15, %rcx + 0x49, 0x89, 0xc9, //0x000047d7 movq %rcx, %r9 + 0xe9, 0x79, 0x00, 0x00, 0x00, //0x000047da jmp LBB0_975 + //0x000047df LBB0_969 + 0x4f, 0x8d, 0x2c, 0x1f, //0x000047df leaq (%r15,%r11), %r13 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000047e3 movq $-1, %r8 + 0x45, 0x31, 0xf6, //0x000047ea xorl %r14d, %r14d + 0x48, 0x83, 0xf9, 0x20, //0x000047ed cmpq $32, %rcx + 0x0f, 0x83, 0x73, 0xfc, 0xff, 0xff, //0x000047f1 jae LBB0_721 + 0xe9, 0x8c, 0x01, 0x00, 0x00, //0x000047f7 jmp LBB0_985 + //0x000047fc LBB0_970 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000047fc movq $-1, %rax + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00004803 movq $-1, $48(%rsp) + 0x4c, 0x8b, 0x5c, 0x24, 0x20, //0x0000480c movq $32(%rsp), %r11 + 0x49, 0x83, 0xf8, 0x10, //0x00004811 cmpq $16, %r8 + 0x0f, 0x83, 0x1d, 0xf1, 0xff, 0xff, //0x00004815 jae LBB0_767 + 0xe9, 0x59, 0xf2, 0xff, 0xff, //0x0000481b jmp LBB0_785 + //0x00004820 LBB0_971 + 0x89, 0xf1, //0x00004820 movl %esi, %ecx + 0xe9, 0x1f, 0x00, 0x00, 0x00, //0x00004822 jmp LBB0_974 + //0x00004827 LBB0_972 + 0x4f, 0x8d, 0x2c, 0x1f, //0x00004827 leaq (%r15,%r11), %r13 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000482b movq $-1, %r8 + 0x45, 0x31, 0xf6, //0x00004832 xorl %r14d, %r14d + 0x48, 0x83, 0xf9, 0x20, //0x00004835 cmpq $32, %rcx + 0x0f, 0x83, 0xf9, 0xfd, 0xff, 0xff, //0x00004839 jae LBB0_810 + 0xe9, 0x79, 0x02, 0x00, 0x00, //0x0000483f jmp LBB0_1002 + //0x00004844 LBB0_973 + 0x89, 0xd9, //0x00004844 movl %ebx, %ecx + //0x00004846 LBB0_974 + 0x4d, 0x01, 0xef, //0x00004846 addq %r13, %r15 + 0x4d, 0x29, 0xcf, //0x00004849 subq %r9, %r15 + 0x49, 0x29, 0xcf, //0x0000484c subq %rcx, %r15 + 0x48, 0xf7, 0xd0, //0x0000484f notq %rax + 0x4c, 0x01, 0xf8, //0x00004852 addq %r15, %rax + 0x49, 0x89, 0xc1, //0x00004855 movq %rax, %r9 + //0x00004858 LBB0_975 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004858 movq $16(%rsp), %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0x9b, 0xb7, 0xff, 0xff, //0x0000485d vmovdqu $-18533(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x13, 0xb8, 0xff, 0xff, //0x00004865 vmovdqu $-18413(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x2b, 0xb8, 0xff, 0xff, //0x0000486d vmovdqu $-18389(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xa3, 0xb8, 0xff, 0xff, //0x00004875 vmovdqu $-18269(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x0d, 0xbb, 0xb8, 0xff, 0xff, //0x0000487d vmovdqu $-18245(%rip), %ymm9 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0xd3, 0xb8, 0xff, 0xff, //0x00004885 vmovdqu $-18221(%rip), %ymm10 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xeb, 0xb8, 0xff, 0xff, //0x0000488d vmovdqu $-18197(%rip), %ymm11 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xa3, 0xb7, 0xff, 0xff, //0x00004895 vmovdqu $-18525(%rip), %ymm12 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xfb, 0xb8, 0xff, 0xff, //0x0000489d vmovdqu $-18181(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x13, 0xb9, 0xff, 0xff, //0x000048a5 vmovdqu $-18157(%rip), %ymm14 /* LCPI0_18+0(%rip) */ + 0x4d, 0x85, 0xc9, //0x000048ad testq %r9, %r9 + 0x0f, 0x88, 0xdf, 0x0f, 0x00, 0x00, //0x000048b0 js LBB0_1147 + //0x000048b6 LBB0_976 + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x000048b6 movq $8(%rsp), %rax + 0x48, 0x8b, 0x08, //0x000048bb movq (%rax), %rcx + //0x000048be LBB0_977 + 0x4c, 0x01, 0xc9, //0x000048be addq %r9, %rcx + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x000048c1 movq $8(%rsp), %r9 + 0x49, 0x89, 0x09, //0x000048c6 movq %rcx, (%r9) + 0x4d, 0x85, 0xed, //0x000048c9 testq %r13, %r13 + 0x4c, 0x8d, 0x35, 0xa5, 0x14, 0x00, 0x00, //0x000048cc leaq $5285(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x8f, 0x87, 0xea, 0xff, 0xff, //0x000048d3 jg LBB0_674 + 0xe9, 0xae, 0x0f, 0x00, 0x00, //0x000048d9 jmp LBB0_978 + //0x000048de LBB0_979 + 0x4f, 0x8d, 0x2c, 0x1f, //0x000048de leaq (%r15,%r11), %r13 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000048e2 movq $-1, %r8 + 0x45, 0x31, 0xf6, //0x000048e9 xorl %r14d, %r14d + 0x48, 0x83, 0xf9, 0x20, //0x000048ec cmpq $32, %rcx + 0x0f, 0x83, 0x6c, 0xfe, 0xff, 0xff, //0x000048f0 jae LBB0_851 + 0xe9, 0x7f, 0x03, 0x00, 0x00, //0x000048f6 jmp LBB0_1023 + //0x000048fb LBB0_980 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x000048fb movq $-1, $48(%rsp) + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004904 movq $-1, %r8 + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x0000490b movq $-1, %r12 + 0x4d, 0x89, 0xd9, //0x00004912 movq %r11, %r9 + 0x49, 0x83, 0xfe, 0x10, //0x00004915 cmpq $16, %r14 + 0xc5, 0x7a, 0x6f, 0x3d, 0xff, 0xb8, 0xff, 0xff, //0x00004919 vmovdqu $-18177(%rip), %xmm15 /* LCPI0_19+0(%rip) */ + 0x0f, 0x83, 0x0c, 0xf9, 0xff, 0xff, //0x00004921 jae LBB0_902 + 0xe9, 0x63, 0xfa, 0xff, 0xff, //0x00004927 jmp LBB0_920 + //0x0000492c LBB0_981 + 0x49, 0x83, 0xf8, 0xff, //0x0000492c cmpq $-1, %r8 + 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x00004930 jne LBB0_983 + 0x4c, 0x89, 0xe8, //0x00004936 movq %r13, %rax + 0x4c, 0x29, 0xf8, //0x00004939 subq %r15, %rax + 0x4c, 0x0f, 0xbc, 0xc6, //0x0000493c bsfq %rsi, %r8 + 0x49, 0x01, 0xc0, //0x00004940 addq %rax, %r8 + //0x00004943 LBB0_983 + 0x44, 0x89, 0xf0, //0x00004943 movl %r14d, %eax + 0xf7, 0xd0, //0x00004946 notl %eax + 0x21, 0xf0, //0x00004948 andl %esi, %eax + 0x8d, 0x3c, 0x00, //0x0000494a leal (%rax,%rax), %edi + 0x41, 0x8d, 0x1c, 0x46, //0x0000494d leal (%r14,%rax,2), %ebx + 0xf7, 0xd7, //0x00004951 notl %edi + 0x21, 0xf7, //0x00004953 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004955 andl $-1431655766, %edi + 0x45, 0x31, 0xf6, //0x0000495b xorl %r14d, %r14d + 0x01, 0xc7, //0x0000495e addl %eax, %edi + 0x41, 0x0f, 0x92, 0xc6, //0x00004960 setb %r14b + 0x01, 0xff, //0x00004964 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004966 xorl $1431655765, %edi + 0x21, 0xdf, //0x0000496c andl %ebx, %edi + 0xf7, 0xd7, //0x0000496e notl %edi + 0x21, 0xfa, //0x00004970 andl %edi, %edx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004972 movq $16(%rsp), %r12 + 0x48, 0x85, 0xd2, //0x00004977 testq %rdx, %rdx + 0x0f, 0x85, 0x1d, 0xfb, 0xff, 0xff, //0x0000497a jne LBB0_724 + //0x00004980 LBB0_984 + 0x49, 0x83, 0xc5, 0x20, //0x00004980 addq $32, %r13 + 0x48, 0x83, 0xc1, 0xe0, //0x00004984 addq $-32, %rcx + //0x00004988 LBB0_985 + 0x4d, 0x85, 0xf6, //0x00004988 testq %r14, %r14 + 0x0f, 0x85, 0x05, 0x02, 0x00, 0x00, //0x0000498b jne LBB0_1015 + 0x4c, 0x89, 0xfa, //0x00004991 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004994 notq %rdx + 0x4c, 0x89, 0xc7, //0x00004997 movq %r8, %rdi + 0x4c, 0x8d, 0x35, 0xd7, 0x13, 0x00, 0x00, //0x0000499a leaq $5079(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc9, //0x000049a1 testq %rcx, %rcx + 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x000049a4 je LBB0_997 + //0x000049aa LBB0_987 + 0x48, 0x83, 0xc2, 0x01, //0x000049aa addq $1, %rdx + //0x000049ae LBB0_988 + 0x31, 0xf6, //0x000049ae xorl %esi, %esi + //0x000049b0 LBB0_989 + 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x000049b0 movzbl (%r13,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x000049b6 cmpb $34, %bl + 0x0f, 0x84, 0x6d, 0x00, 0x00, 0x00, //0x000049b9 je LBB0_996 + 0x80, 0xfb, 0x5c, //0x000049bf cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000049c2 je LBB0_994 + 0x48, 0x83, 0xc6, 0x01, //0x000049c8 addq $1, %rsi + 0x48, 0x39, 0xf1, //0x000049cc cmpq %rsi, %rcx + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000049cf jne LBB0_989 + 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x000049d5 jmp LBB0_992 + //0x000049da LBB0_994 + 0x48, 0x8d, 0x41, 0xff, //0x000049da leaq $-1(%rcx), %rax + 0x48, 0x39, 0xf0, //0x000049de cmpq %rsi, %rax + 0x0f, 0x84, 0xd6, 0x05, 0x00, 0x00, //0x000049e1 je LBB0_861 + 0x4a, 0x8d, 0x04, 0x2a, //0x000049e7 leaq (%rdx,%r13), %rax + 0x48, 0x01, 0xf0, //0x000049eb addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x000049ee cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x000049f2 cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x000049f6 cmoveq %rax, %rdi + 0x49, 0x01, 0xf5, //0x000049fa addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x02, //0x000049fd addq $2, %r13 + 0x48, 0x89, 0xc8, //0x00004a01 movq %rcx, %rax + 0x48, 0x29, 0xf0, //0x00004a04 subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00004a07 addq $-2, %rax + 0x48, 0x83, 0xc1, 0xfe, //0x00004a0b addq $-2, %rcx + 0x48, 0x39, 0xf1, //0x00004a0f cmpq %rsi, %rcx + 0x48, 0x89, 0xc1, //0x00004a12 movq %rax, %rcx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004a15 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0x57, 0x13, 0x00, 0x00, //0x00004a1a leaq $4951(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00004a21 jne LBB0_988 + 0xe9, 0x91, 0x05, 0x00, 0x00, //0x00004a27 jmp LBB0_861 + //0x00004a2c LBB0_996 + 0x49, 0x01, 0xf5, //0x00004a2c addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x00004a2f addq $1, %r13 + //0x00004a33 LBB0_997 + 0x4d, 0x29, 0xfd, //0x00004a33 subq %r15, %r13 + 0x4d, 0x85, 0xed, //0x00004a36 testq %r13, %r13 + 0x0f, 0x89, 0xa1, 0xec, 0xff, 0xff, //0x00004a39 jns LBB0_731 + 0xe9, 0x6f, 0x05, 0x00, 0x00, //0x00004a3f jmp LBB0_860 + //0x00004a44 LBB0_992 + 0x80, 0xfb, 0x22, //0x00004a44 cmpb $34, %bl + 0x0f, 0x85, 0x70, 0x05, 0x00, 0x00, //0x00004a47 jne LBB0_861 + 0x49, 0x01, 0xcd, //0x00004a4d addq %rcx, %r13 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004a50 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0x1c, 0x13, 0x00, 0x00, //0x00004a55 leaq $4892(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0xe9, 0xd2, 0xff, 0xff, 0xff, //0x00004a5c jmp LBB0_997 + //0x00004a61 LBB0_998 + 0x49, 0x83, 0xf8, 0xff, //0x00004a61 cmpq $-1, %r8 + 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x00004a65 jne LBB0_1000 + 0x4c, 0x89, 0xe8, //0x00004a6b movq %r13, %rax + 0x4c, 0x29, 0xf8, //0x00004a6e subq %r15, %rax + 0x4c, 0x0f, 0xbc, 0xc6, //0x00004a71 bsfq %rsi, %r8 + 0x49, 0x01, 0xc0, //0x00004a75 addq %rax, %r8 + //0x00004a78 LBB0_1000 + 0x44, 0x89, 0xf0, //0x00004a78 movl %r14d, %eax + 0xf7, 0xd0, //0x00004a7b notl %eax + 0x21, 0xf0, //0x00004a7d andl %esi, %eax + 0x8d, 0x3c, 0x00, //0x00004a7f leal (%rax,%rax), %edi + 0x41, 0x8d, 0x1c, 0x46, //0x00004a82 leal (%r14,%rax,2), %ebx + 0xf7, 0xd7, //0x00004a86 notl %edi + 0x21, 0xf7, //0x00004a88 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004a8a andl $-1431655766, %edi + 0x45, 0x31, 0xf6, //0x00004a90 xorl %r14d, %r14d + 0x01, 0xc7, //0x00004a93 addl %eax, %edi + 0x41, 0x0f, 0x92, 0xc6, //0x00004a95 setb %r14b + 0x01, 0xff, //0x00004a99 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004a9b xorl $1431655765, %edi + 0x21, 0xdf, //0x00004aa1 andl %ebx, %edi + 0xf7, 0xd7, //0x00004aa3 notl %edi + 0x21, 0xfa, //0x00004aa5 andl %edi, %edx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004aa7 movq $16(%rsp), %r12 + 0x48, 0x85, 0xd2, //0x00004aac testq %rdx, %rdx + 0x0f, 0x85, 0xb6, 0xfb, 0xff, 0xff, //0x00004aaf jne LBB0_813 + //0x00004ab5 LBB0_1001 + 0x49, 0x83, 0xc5, 0x20, //0x00004ab5 addq $32, %r13 + 0x48, 0x83, 0xc1, 0xe0, //0x00004ab9 addq $-32, %rcx + //0x00004abd LBB0_1002 + 0x4d, 0x85, 0xf6, //0x00004abd testq %r14, %r14 + 0x0f, 0x85, 0x14, 0x01, 0x00, 0x00, //0x00004ac0 jne LBB0_1017 + 0x4c, 0x89, 0xfa, //0x00004ac6 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004ac9 notq %rdx + 0x4c, 0x89, 0xc7, //0x00004acc movq %r8, %rdi + 0x4c, 0x8d, 0x35, 0xa2, 0x12, 0x00, 0x00, //0x00004acf leaq $4770(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc9, //0x00004ad6 testq %rcx, %rcx + 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x00004ad9 je LBB0_1014 + //0x00004adf LBB0_1004 + 0x48, 0x83, 0xc2, 0x01, //0x00004adf addq $1, %rdx + //0x00004ae3 LBB0_1005 + 0x31, 0xf6, //0x00004ae3 xorl %esi, %esi + //0x00004ae5 LBB0_1006 + 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x00004ae5 movzbl (%r13,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x00004aeb cmpb $34, %bl + 0x0f, 0x84, 0x6d, 0x00, 0x00, 0x00, //0x00004aee je LBB0_1013 + 0x80, 0xfb, 0x5c, //0x00004af4 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004af7 je LBB0_1011 + 0x48, 0x83, 0xc6, 0x01, //0x00004afd addq $1, %rsi + 0x48, 0x39, 0xf1, //0x00004b01 cmpq %rsi, %rcx + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x00004b04 jne LBB0_1006 + 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x00004b0a jmp LBB0_1009 + //0x00004b0f LBB0_1011 + 0x48, 0x8d, 0x41, 0xff, //0x00004b0f leaq $-1(%rcx), %rax + 0x48, 0x39, 0xf0, //0x00004b13 cmpq %rsi, %rax + 0x0f, 0x84, 0xa1, 0x04, 0x00, 0x00, //0x00004b16 je LBB0_861 + 0x4a, 0x8d, 0x04, 0x2a, //0x00004b1c leaq (%rdx,%r13), %rax + 0x48, 0x01, 0xf0, //0x00004b20 addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x00004b23 cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x00004b27 cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x00004b2b cmoveq %rax, %rdi + 0x49, 0x01, 0xf5, //0x00004b2f addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x02, //0x00004b32 addq $2, %r13 + 0x48, 0x89, 0xc8, //0x00004b36 movq %rcx, %rax + 0x48, 0x29, 0xf0, //0x00004b39 subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00004b3c addq $-2, %rax + 0x48, 0x83, 0xc1, 0xfe, //0x00004b40 addq $-2, %rcx + 0x48, 0x39, 0xf1, //0x00004b44 cmpq %rsi, %rcx + 0x48, 0x89, 0xc1, //0x00004b47 movq %rax, %rcx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004b4a movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0x22, 0x12, 0x00, 0x00, //0x00004b4f leaq $4642(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00004b56 jne LBB0_1005 + 0xe9, 0x5c, 0x04, 0x00, 0x00, //0x00004b5c jmp LBB0_861 + //0x00004b61 LBB0_1013 + 0x49, 0x01, 0xf5, //0x00004b61 addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x00004b64 addq $1, %r13 + //0x00004b68 LBB0_1014 + 0x4d, 0x29, 0xfd, //0x00004b68 subq %r15, %r13 + 0x4d, 0x85, 0xed, //0x00004b6b testq %r13, %r13 + 0x0f, 0x89, 0x6c, 0xf1, 0xff, 0xff, //0x00004b6e jns LBB0_820 + 0xe9, 0x3a, 0x04, 0x00, 0x00, //0x00004b74 jmp LBB0_860 + //0x00004b79 LBB0_1009 + 0x80, 0xfb, 0x22, //0x00004b79 cmpb $34, %bl + 0x0f, 0x85, 0x3b, 0x04, 0x00, 0x00, //0x00004b7c jne LBB0_861 + 0x49, 0x01, 0xcd, //0x00004b82 addq %rcx, %r13 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004b85 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0xe7, 0x11, 0x00, 0x00, //0x00004b8a leaq $4583(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0xe9, 0xd2, 0xff, 0xff, 0xff, //0x00004b91 jmp LBB0_1014 + //0x00004b96 LBB0_1015 + 0x48, 0x85, 0xc9, //0x00004b96 testq %rcx, %rcx + 0x0f, 0x84, 0x1e, 0x04, 0x00, 0x00, //0x00004b99 je LBB0_861 + 0x4c, 0x89, 0xfa, //0x00004b9f movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004ba2 notq %rdx + 0x4a, 0x8d, 0x04, 0x2a, //0x00004ba5 leaq (%rdx,%r13), %rax + 0x49, 0x83, 0xf8, 0xff, //0x00004ba9 cmpq $-1, %r8 + 0x4c, 0x89, 0xc7, //0x00004bad movq %r8, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x00004bb0 cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x00004bb4 cmoveq %rax, %rdi + 0x49, 0x83, 0xc5, 0x01, //0x00004bb8 addq $1, %r13 + 0x48, 0x83, 0xc1, 0xff, //0x00004bbc addq $-1, %rcx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004bc0 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0xac, 0x11, 0x00, 0x00, //0x00004bc5 leaq $4524(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc9, //0x00004bcc testq %rcx, %rcx + 0x0f, 0x85, 0xd5, 0xfd, 0xff, 0xff, //0x00004bcf jne LBB0_987 + 0xe9, 0x59, 0xfe, 0xff, 0xff, //0x00004bd5 jmp LBB0_997 + //0x00004bda LBB0_1017 + 0x48, 0x85, 0xc9, //0x00004bda testq %rcx, %rcx + 0x0f, 0x84, 0xda, 0x03, 0x00, 0x00, //0x00004bdd je LBB0_861 + 0x4c, 0x89, 0xfa, //0x00004be3 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004be6 notq %rdx + 0x4a, 0x8d, 0x04, 0x2a, //0x00004be9 leaq (%rdx,%r13), %rax + 0x49, 0x83, 0xf8, 0xff, //0x00004bed cmpq $-1, %r8 + 0x4c, 0x89, 0xc7, //0x00004bf1 movq %r8, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x00004bf4 cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x00004bf8 cmoveq %rax, %rdi + 0x49, 0x83, 0xc5, 0x01, //0x00004bfc addq $1, %r13 + 0x48, 0x83, 0xc1, 0xff, //0x00004c00 addq $-1, %rcx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004c04 movq $16(%rsp), %r12 + 0x4c, 0x8d, 0x35, 0x68, 0x11, 0x00, 0x00, //0x00004c09 leaq $4456(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc9, //0x00004c10 testq %rcx, %rcx + 0x0f, 0x85, 0xc6, 0xfe, 0xff, 0xff, //0x00004c13 jne LBB0_1004 + 0xe9, 0x4a, 0xff, 0xff, 0xff, //0x00004c19 jmp LBB0_1014 + //0x00004c1e LBB0_1019 + 0x49, 0x83, 0xf8, 0xff, //0x00004c1e cmpq $-1, %r8 + 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x00004c22 jne LBB0_1021 + 0x4c, 0x89, 0xe8, //0x00004c28 movq %r13, %rax + 0x4c, 0x29, 0xf8, //0x00004c2b subq %r15, %rax + 0x4c, 0x0f, 0xbc, 0xc6, //0x00004c2e bsfq %rsi, %r8 + 0x49, 0x01, 0xc0, //0x00004c32 addq %rax, %r8 + //0x00004c35 LBB0_1021 + 0x44, 0x89, 0xf0, //0x00004c35 movl %r14d, %eax + 0xf7, 0xd0, //0x00004c38 notl %eax + 0x21, 0xf0, //0x00004c3a andl %esi, %eax + 0x8d, 0x3c, 0x00, //0x00004c3c leal (%rax,%rax), %edi + 0x41, 0x8d, 0x1c, 0x46, //0x00004c3f leal (%r14,%rax,2), %ebx + 0xf7, 0xd7, //0x00004c43 notl %edi + 0x21, 0xf7, //0x00004c45 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004c47 andl $-1431655766, %edi + 0x45, 0x31, 0xf6, //0x00004c4d xorl %r14d, %r14d + 0x01, 0xc7, //0x00004c50 addl %eax, %edi + 0x41, 0x0f, 0x92, 0xc6, //0x00004c52 setb %r14b + 0x01, 0xff, //0x00004c56 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004c58 xorl $1431655765, %edi + 0x21, 0xdf, //0x00004c5e andl %ebx, %edi + 0xf7, 0xd7, //0x00004c60 notl %edi + 0x21, 0xfa, //0x00004c62 andl %edi, %edx + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004c64 movq $16(%rsp), %r12 + 0x48, 0x85, 0xd2, //0x00004c69 testq %rdx, %rdx + 0x0f, 0x85, 0x23, 0xfb, 0xff, 0xff, //0x00004c6c jne LBB0_854 + //0x00004c72 LBB0_1022 + 0x49, 0x83, 0xc5, 0x20, //0x00004c72 addq $32, %r13 + 0x48, 0x83, 0xc1, 0xe0, //0x00004c76 addq $-32, %rcx + //0x00004c7a LBB0_1023 + 0x4d, 0x85, 0xf6, //0x00004c7a testq %r14, %r14 + 0x0f, 0x85, 0xad, 0x00, 0x00, 0x00, //0x00004c7d jne LBB0_1036 + 0x4c, 0x89, 0xfa, //0x00004c83 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004c86 notq %rdx + 0x4c, 0x89, 0xc7, //0x00004c89 movq %r8, %rdi + 0x48, 0x85, 0xc9, //0x00004c8c testq %rcx, %rcx + 0x0f, 0x84, 0x7d, 0x00, 0x00, 0x00, //0x00004c8f je LBB0_1035 + //0x00004c95 LBB0_1025 + 0x48, 0x83, 0xc2, 0x01, //0x00004c95 addq $1, %rdx + //0x00004c99 LBB0_1026 + 0x31, 0xf6, //0x00004c99 xorl %esi, %esi + //0x00004c9b LBB0_1027 + 0x41, 0x0f, 0xb6, 0x5c, 0x35, 0x00, //0x00004c9b movzbl (%r13,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x00004ca1 cmpb $34, %bl + 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x00004ca4 je LBB0_1034 + 0x80, 0xfb, 0x5c, //0x00004caa cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004cad je LBB0_1032 + 0x48, 0x83, 0xc6, 0x01, //0x00004cb3 addq $1, %rsi + 0x48, 0x39, 0xf1, //0x00004cb7 cmpq %rsi, %rcx + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x00004cba jne LBB0_1027 + 0xe9, 0x5a, 0x00, 0x00, 0x00, //0x00004cc0 jmp LBB0_1030 + //0x00004cc5 LBB0_1032 + 0x48, 0x8d, 0x41, 0xff, //0x00004cc5 leaq $-1(%rcx), %rax + 0x48, 0x39, 0xf0, //0x00004cc9 cmpq %rsi, %rax + 0x0f, 0x84, 0xeb, 0x02, 0x00, 0x00, //0x00004ccc je LBB0_861 + 0x4a, 0x8d, 0x04, 0x2a, //0x00004cd2 leaq (%rdx,%r13), %rax + 0x48, 0x01, 0xf0, //0x00004cd6 addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x00004cd9 cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x00004cdd cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x00004ce1 cmoveq %rax, %rdi + 0x49, 0x01, 0xf5, //0x00004ce5 addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x02, //0x00004ce8 addq $2, %r13 + 0x48, 0x89, 0xc8, //0x00004cec movq %rcx, %rax + 0x48, 0x29, 0xf0, //0x00004cef subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00004cf2 addq $-2, %rax + 0x48, 0x83, 0xc1, 0xfe, //0x00004cf6 addq $-2, %rcx + 0x48, 0x39, 0xf1, //0x00004cfa cmpq %rsi, %rcx + 0x48, 0x89, 0xc1, //0x00004cfd movq %rax, %rcx + 0x0f, 0x85, 0x93, 0xff, 0xff, 0xff, //0x00004d00 jne LBB0_1026 + 0xe9, 0xb2, 0x02, 0x00, 0x00, //0x00004d06 jmp LBB0_861 + //0x00004d0b LBB0_1034 + 0x49, 0x01, 0xf5, //0x00004d0b addq %rsi, %r13 + 0x49, 0x83, 0xc5, 0x01, //0x00004d0e addq $1, %r13 + //0x00004d12 LBB0_1035 + 0x4d, 0x29, 0xfd, //0x00004d12 subq %r15, %r13 + 0x4c, 0x8b, 0x64, 0x24, 0x10, //0x00004d15 movq $16(%rsp), %r12 + 0xe9, 0x81, 0xf2, 0xff, 0xff, //0x00004d1a jmp LBB0_859 + //0x00004d1f LBB0_1030 + 0x80, 0xfb, 0x22, //0x00004d1f cmpb $34, %bl + 0x0f, 0x85, 0x95, 0x02, 0x00, 0x00, //0x00004d22 jne LBB0_861 + 0x49, 0x01, 0xcd, //0x00004d28 addq %rcx, %r13 + 0xe9, 0xe2, 0xff, 0xff, 0xff, //0x00004d2b jmp LBB0_1035 + //0x00004d30 LBB0_1036 + 0x48, 0x85, 0xc9, //0x00004d30 testq %rcx, %rcx + 0x0f, 0x84, 0x84, 0x02, 0x00, 0x00, //0x00004d33 je LBB0_861 + 0x4c, 0x89, 0xfa, //0x00004d39 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004d3c notq %rdx + 0x4a, 0x8d, 0x04, 0x2a, //0x00004d3f leaq (%rdx,%r13), %rax + 0x49, 0x83, 0xf8, 0xff, //0x00004d43 cmpq $-1, %r8 + 0x4c, 0x89, 0xc7, //0x00004d47 movq %r8, %rdi + 0x4c, 0x0f, 0x44, 0xc0, //0x00004d4a cmoveq %rax, %r8 + 0x48, 0x0f, 0x44, 0xf8, //0x00004d4e cmoveq %rax, %rdi + 0x49, 0x83, 0xc5, 0x01, //0x00004d52 addq $1, %r13 + 0x48, 0x83, 0xc1, 0xff, //0x00004d56 addq $-1, %rcx + 0x48, 0x85, 0xc9, //0x00004d5a testq %rcx, %rcx + 0x0f, 0x85, 0x32, 0xff, 0xff, 0xff, //0x00004d5d jne LBB0_1025 + 0xe9, 0xaa, 0xff, 0xff, 0xff, //0x00004d63 jmp LBB0_1035 + //0x00004d68 LBB0_649 + 0x49, 0x83, 0xc6, 0xff, //0x00004d68 addq $-1, %r14 + 0x4d, 0x89, 0x31, //0x00004d6c movq %r14, (%r9) + 0x49, 0xc7, 0xc5, 0xde, 0xff, 0xff, 0xff, //0x00004d6f movq $-34, %r13 + 0xe9, 0x9e, 0x01, 0x00, 0x00, //0x00004d76 jmp LBB0_1050 + //0x00004d7b LBB0_650 + 0x49, 0x89, 0x01, //0x00004d7b movq %rax, (%r9) + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004d7e movq $-1, %r13 + 0xe9, 0x8f, 0x01, 0x00, 0x00, //0x00004d85 jmp LBB0_1050 + //0x00004d8a LBB0_651 + 0xf7, 0xd1, //0x00004d8a notl %ecx + 0x0f, 0xbc, 0xc1, //0x00004d8c bsfl %ecx, %eax + 0x48, 0x29, 0xd0, //0x00004d8f subq %rdx, %rax + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004d92 movq $-1, %r13 + 0x48, 0x39, 0xd8, //0x00004d99 cmpq %rbx, %rax + 0x0f, 0x83, 0x77, 0x01, 0x00, 0x00, //0x00004d9c jae LBB0_1050 + //0x00004da2 LBB0_652 + 0x48, 0x8d, 0x50, 0x01, //0x00004da2 leaq $1(%rax), %rdx + 0x49, 0x89, 0x11, //0x00004da6 movq %rdx, (%r9) + 0x41, 0x0f, 0xbe, 0x0c, 0x03, //0x00004da9 movsbl (%r11,%rax), %ecx + 0x83, 0xf9, 0x7b, //0x00004dae cmpl $123, %ecx + 0x0f, 0x87, 0x4b, 0x02, 0x00, 0x00, //0x00004db1 ja LBB0_1056 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004db7 movq $-1, %r13 + 0x48, 0x8d, 0x35, 0x93, 0x12, 0x00, 0x00, //0x00004dbe leaq $4755(%rip), %rsi /* LJTI0_6+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8e, //0x00004dc5 movslq (%rsi,%rcx,4), %rcx + 0x48, 0x01, 0xf1, //0x00004dc9 addq %rsi, %rcx + 0xff, 0xe1, //0x00004dcc jmpq *%rcx + //0x00004dce LBB0_654 + 0x49, 0x8b, 0x3f, //0x00004dce movq (%r15), %rdi + 0x48, 0x29, 0xd7, //0x00004dd1 subq %rdx, %rdi + 0x48, 0x83, 0xff, 0x20, //0x00004dd4 cmpq $32, %rdi + 0x0f, 0x82, 0x52, 0x0b, 0x00, 0x00, //0x00004dd8 jb LBB0_1155 + 0x31, 0xf6, //0x00004dde xorl %esi, %esi + 0xc5, 0xfe, 0x6f, 0x05, 0x38, 0xb2, 0xff, 0xff, //0x00004de0 vmovdqu $-19912(%rip), %ymm0 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x50, 0xb2, 0xff, 0xff, //0x00004de8 vmovdqu $-19888(%rip), %ymm1 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x15, 0x68, 0xb2, 0xff, 0xff, //0x00004df0 vmovdqu $-19864(%rip), %ymm2 /* LCPI0_3+0(%rip) */ + 0x4c, 0x89, 0xda, //0x00004df8 movq %r11, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00004dfb .p2align 4, 0x90 + //0x00004e00 LBB0_656 + 0xc5, 0xfe, 0x6f, 0x5c, 0x02, 0x01, //0x00004e00 vmovdqu $1(%rdx,%rax), %ymm3 + 0xc5, 0xe5, 0x74, 0xe0, //0x00004e06 vpcmpeqb %ymm0, %ymm3, %ymm4 + 0xc5, 0xe5, 0xdb, 0xd9, //0x00004e0a vpand %ymm1, %ymm3, %ymm3 + 0xc5, 0xe5, 0x74, 0xda, //0x00004e0e vpcmpeqb %ymm2, %ymm3, %ymm3 + 0xc5, 0xe5, 0xeb, 0xdc, //0x00004e12 vpor %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xcb, //0x00004e16 vpmovmskb %ymm3, %ecx + 0x85, 0xc9, //0x00004e1a testl %ecx, %ecx + 0x0f, 0x85, 0x0c, 0x01, 0x00, 0x00, //0x00004e1c jne LBB0_1039 + 0x48, 0x83, 0xc2, 0x20, //0x00004e22 addq $32, %rdx + 0x48, 0x8d, 0x0c, 0x37, //0x00004e26 leaq (%rdi,%rsi), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00004e2a addq $-32, %rcx + 0x48, 0x83, 0xc6, 0xe0, //0x00004e2e addq $-32, %rsi + 0x48, 0x83, 0xf9, 0x1f, //0x00004e32 cmpq $31, %rcx + 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x00004e36 ja LBB0_656 + 0x48, 0x01, 0xc2, //0x00004e3c addq %rax, %rdx + 0x48, 0x83, 0xc2, 0x01, //0x00004e3f addq $1, %rdx + 0x48, 0x01, 0xf7, //0x00004e43 addq %rsi, %rdi + 0x48, 0x83, 0xff, 0x10, //0x00004e46 cmpq $16, %rdi + 0x0f, 0x82, 0x54, 0x00, 0x00, 0x00, //0x00004e4a jb LBB0_663 + //0x00004e50 LBB0_659 + 0x48, 0x8d, 0x5a, 0xff, //0x00004e50 leaq $-1(%rdx), %rbx + 0x31, 0xf6, //0x00004e54 xorl %esi, %esi + 0xc5, 0xfa, 0x6f, 0x05, 0x82, 0xb3, 0xff, 0xff, //0x00004e56 vmovdqu $-19582(%rip), %xmm0 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x0d, 0x8a, 0xb3, 0xff, 0xff, //0x00004e5e vmovdqu $-19574(%rip), %xmm1 /* LCPI0_5+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x92, 0xb3, 0xff, 0xff, //0x00004e66 vmovdqu $-19566(%rip), %xmm2 /* LCPI0_6+0(%rip) */ + //0x00004e6e LBB0_660 + 0xc5, 0xfa, 0x6f, 0x1c, 0x32, //0x00004e6e vmovdqu (%rdx,%rsi), %xmm3 + 0xc5, 0xe1, 0x74, 0xe0, //0x00004e73 vpcmpeqb %xmm0, %xmm3, %xmm4 + 0xc5, 0xe1, 0xdb, 0xd9, //0x00004e77 vpand %xmm1, %xmm3, %xmm3 + 0xc5, 0xe1, 0x74, 0xda, //0x00004e7b vpcmpeqb %xmm2, %xmm3, %xmm3 + 0xc5, 0xe1, 0xeb, 0xdc, //0x00004e7f vpor %xmm4, %xmm3, %xmm3 + 0xc5, 0xf9, 0xd7, 0xcb, //0x00004e83 vpmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x00004e87 testl %ecx, %ecx + 0x0f, 0x85, 0x80, 0x08, 0x00, 0x00, //0x00004e89 jne LBB0_1128 + 0x48, 0x83, 0xc7, 0xf0, //0x00004e8f addq $-16, %rdi + 0x48, 0x83, 0xc6, 0x10, //0x00004e93 addq $16, %rsi + 0x48, 0x83, 0xff, 0x0f, //0x00004e97 cmpq $15, %rdi + 0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x00004e9b ja LBB0_660 + 0x48, 0x01, 0xf2, //0x00004ea1 addq %rsi, %rdx + //0x00004ea4 LBB0_663 + 0x48, 0x85, 0xff, //0x00004ea4 testq %rdi, %rdi + 0x0f, 0x84, 0x48, 0x00, 0x00, 0x00, //0x00004ea7 je LBB0_671 + 0x48, 0x8d, 0x34, 0x3a, //0x00004ead leaq (%rdx,%rdi), %rsi + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00004eb1 movabsq $17596481021440, %rbx + //0x00004ebb LBB0_665 + 0x0f, 0xb6, 0x0a, //0x00004ebb movzbl (%rdx), %ecx + 0x48, 0x83, 0xf9, 0x2c, //0x00004ebe cmpq $44, %rcx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00004ec2 ja LBB0_667 + 0x48, 0x0f, 0xa3, 0xcb, //0x00004ec8 btq %rcx, %rbx + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00004ecc jb LBB0_671 + //0x00004ed2 LBB0_667 + 0x80, 0xf9, 0x5d, //0x00004ed2 cmpb $93, %cl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00004ed5 je LBB0_671 + 0x80, 0xf9, 0x7d, //0x00004edb cmpb $125, %cl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00004ede je LBB0_671 + 0x48, 0x83, 0xc2, 0x01, //0x00004ee4 addq $1, %rdx + 0x48, 0x83, 0xc7, 0xff, //0x00004ee8 addq $-1, %rdi + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00004eec jne LBB0_665 + 0x48, 0x89, 0xf2, //0x00004ef2 movq %rsi, %rdx + //0x00004ef5 LBB0_671 + 0x4c, 0x29, 0xda, //0x00004ef5 subq %r11, %rdx + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00004ef8 movq $8(%rsp), %rcx + 0x48, 0x89, 0x11, //0x00004efd movq %rdx, (%rcx) + 0x49, 0x89, 0xc5, //0x00004f00 movq %rax, %r13 + 0xe9, 0x11, 0x00, 0x00, 0x00, //0x00004f03 jmp LBB0_1050 + //0x00004f08 LBB0_1038 + 0x49, 0x89, 0xd6, //0x00004f08 movq %rdx, %r14 + //0x00004f0b LBB0_1048 + 0x49, 0x83, 0xc6, 0xff, //0x00004f0b addq $-1, %r14 + 0x4d, 0x89, 0x31, //0x00004f0f movq %r14, (%r9) + //0x00004f12 LBB0_1049 + 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x00004f12 movq $-2, %r13 + //0x00004f19 LBB0_1050 + 0x4c, 0x89, 0xe8, //0x00004f19 movq %r13, %rax + 0x48, 0x8d, 0x65, 0xd8, //0x00004f1c leaq $-40(%rbp), %rsp + 0x5b, //0x00004f20 popq %rbx + 0x41, 0x5c, //0x00004f21 popq %r12 + 0x41, 0x5d, //0x00004f23 popq %r13 + 0x41, 0x5e, //0x00004f25 popq %r14 + 0x41, 0x5f, //0x00004f27 popq %r15 + 0x5d, //0x00004f29 popq %rbp + 0xc5, 0xf8, 0x77, //0x00004f2a vzeroupper + 0xc3, //0x00004f2d retq + //0x00004f2e LBB0_1039 + 0x0f, 0xbc, 0xf9, //0x00004f2e bsfl %ecx, %edi + 0x48, 0x01, 0xc7, //0x00004f31 addq %rax, %rdi + 0x48, 0x89, 0xf9, //0x00004f34 movq %rdi, %rcx + 0x48, 0x29, 0xf1, //0x00004f37 subq %rsi, %rcx + 0x48, 0x8d, 0x71, 0x01, //0x00004f3a leaq $1(%rcx), %rsi + 0x49, 0x89, 0x31, //0x00004f3e movq %rsi, (%r9) + 0x48, 0x85, 0xf6, //0x00004f41 testq %rsi, %rsi + 0x0f, 0x8e, 0x46, 0x00, 0x00, 0x00, //0x00004f44 jle LBB0_1044 + 0x48, 0x8d, 0x71, 0x02, //0x00004f4a leaq $2(%rcx), %rsi + 0x48, 0x01, 0xfa, //0x00004f4e addq %rdi, %rdx + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00004f51 movabsq $4294977024, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00004f5b .p2align 4, 0x90 + //0x00004f60 LBB0_1041 + 0x0f, 0xb6, 0x1a, //0x00004f60 movzbl (%rdx), %ebx + 0x48, 0x83, 0xfb, 0x20, //0x00004f63 cmpq $32, %rbx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00004f67 ja LBB0_1044 + 0x48, 0x0f, 0xa3, 0xdf, //0x00004f6d btq %rbx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x00004f71 jae LBB0_1044 + 0x49, 0x89, 0x09, //0x00004f77 movq %rcx, (%r9) + 0x48, 0x83, 0xc6, 0xff, //0x00004f7a addq $-1, %rsi + 0x48, 0x83, 0xc1, 0xff, //0x00004f7e addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00004f82 addq $-1, %rdx + 0x48, 0x83, 0xfe, 0x01, //0x00004f86 cmpq $1, %rsi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00004f8a jg LBB0_1041 + //0x00004f90 LBB0_1044 + 0x49, 0x89, 0xc5, //0x00004f90 movq %rax, %r13 + 0xe9, 0x81, 0xff, 0xff, 0xff, //0x00004f93 jmp LBB0_1050 + //0x00004f98 LBB0_1045 + 0x4d, 0x89, 0x11, //0x00004f98 movq %r10, (%r9) + //0x00004f9b LBB0_1046 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004f9b movq $-1, %r13 + 0xe9, 0x72, 0xff, 0xff, 0xff, //0x00004fa2 jmp LBB0_1050 + //0x00004fa7 LBB0_1135 + 0x49, 0xc7, 0xc5, 0xf9, 0xff, 0xff, 0xff, //0x00004fa7 movq $-7, %r13 + 0xe9, 0x66, 0xff, 0xff, 0xff, //0x00004fae jmp LBB0_1050 + //0x00004fb3 LBB0_860 + 0x49, 0x83, 0xfd, 0xff, //0x00004fb3 cmpq $-1, %r13 + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00004fb7 jne LBB0_862 + //0x00004fbd LBB0_861 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00004fbd movq $-1, %r13 + 0x4d, 0x89, 0xc8, //0x00004fc4 movq %r9, %r8 + //0x00004fc7 LBB0_862 + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00004fc7 movq $8(%rsp), %rax + 0x4c, 0x89, 0x00, //0x00004fcc movq %r8, (%rax) + 0xe9, 0x45, 0xff, 0xff, 0xff, //0x00004fcf jmp LBB0_1050 + //0x00004fd4 LBB0_732 + 0x49, 0x83, 0xc3, 0xff, //0x00004fd4 addq $-1, %r11 + 0x4d, 0x89, 0xdd, //0x00004fd8 movq %r11, %r13 + 0xe9, 0x39, 0xff, 0xff, 0xff, //0x00004fdb jmp LBB0_1050 + //0x00004fe0 LBB0_1051 + 0x48, 0x8d, 0x48, 0x04, //0x00004fe0 leaq $4(%rax), %rcx + 0xe9, 0xb3, 0x03, 0x00, 0x00, //0x00004fe4 jmp LBB0_1094 + //0x00004fe9 LBB0_1052 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00004fe9 movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00004ff0 jmp LBB0_1055 + //0x00004ff5 LBB0_1054 + 0x4c, 0x89, 0xd9, //0x00004ff5 movq %r11, %rcx + //0x00004ff8 LBB0_1055 + 0x49, 0x8b, 0x01, //0x00004ff8 movq (%r9), %rax + 0x48, 0x29, 0xc8, //0x00004ffb subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00004ffe addq $-2, %rax + //0x00005002 LBB0_1056 + 0x49, 0x89, 0x01, //0x00005002 movq %rax, (%r9) + 0xe9, 0x08, 0xff, 0xff, 0xff, //0x00005005 jmp LBB0_1049 + //0x0000500a LBB0_1057 + 0x4d, 0x8b, 0x07, //0x0000500a movq (%r15), %r8 + 0x4d, 0x89, 0xc7, //0x0000500d movq %r8, %r15 + 0x49, 0x29, 0xd7, //0x00005010 subq %rdx, %r15 + 0x49, 0x83, 0xff, 0x20, //0x00005013 cmpq $32, %r15 + 0x0f, 0x8c, 0x2f, 0x09, 0x00, 0x00, //0x00005017 jl LBB0_1159 + 0x4d, 0x8d, 0x0c, 0x03, //0x0000501d leaq (%r11,%rax), %r9 + 0x49, 0x29, 0xc0, //0x00005021 subq %rax, %r8 + 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x00005024 movl $31, %ebx + 0x45, 0x31, 0xff, //0x00005029 xorl %r15d, %r15d + 0xc5, 0xfe, 0x6f, 0x05, 0x4c, 0xb0, 0xff, 0xff, //0x0000502c vmovdqu $-20404(%rip), %ymm0 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x64, 0xb0, 0xff, 0xff, //0x00005034 vmovdqu $-20380(%rip), %ymm1 /* LCPI0_8+0(%rip) */ + 0x45, 0x31, 0xe4, //0x0000503c xorl %r12d, %r12d + //0x0000503f LBB0_1059 + 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x39, 0x01, //0x0000503f vmovdqu $1(%r9,%r15), %ymm2 + 0xc5, 0xed, 0x74, 0xd8, //0x00005046 vpcmpeqb %ymm0, %ymm2, %ymm3 + 0xc5, 0x7d, 0xd7, 0xf3, //0x0000504a vpmovmskb %ymm3, %r14d + 0xc5, 0xed, 0x74, 0xd1, //0x0000504e vpcmpeqb %ymm1, %ymm2, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00005052 vpmovmskb %ymm2, %ecx + 0x85, 0xc9, //0x00005056 testl %ecx, %ecx + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00005058 jne LBB0_1062 + 0x4d, 0x85, 0xe4, //0x0000505e testq %r12, %r12 + 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00005061 jne LBB0_1062 + 0x45, 0x31, 0xe4, //0x00005067 xorl %r12d, %r12d + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x0000506a jmp LBB0_1063 + //0x0000506f LBB0_1062 + 0x44, 0x89, 0xe6, //0x0000506f movl %r12d, %esi + 0xf7, 0xd6, //0x00005072 notl %esi + 0x21, 0xce, //0x00005074 andl %ecx, %esi + 0x8d, 0x14, 0x36, //0x00005076 leal (%rsi,%rsi), %edx + 0x44, 0x09, 0xe2, //0x00005079 orl %r12d, %edx + 0x89, 0xd7, //0x0000507c movl %edx, %edi + 0xf7, 0xd7, //0x0000507e notl %edi + 0x21, 0xcf, //0x00005080 andl %ecx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00005082 andl $-1431655766, %edi + 0x45, 0x31, 0xe4, //0x00005088 xorl %r12d, %r12d + 0x01, 0xf7, //0x0000508b addl %esi, %edi + 0x41, 0x0f, 0x92, 0xc4, //0x0000508d setb %r12b + 0x01, 0xff, //0x00005091 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00005093 xorl $1431655765, %edi + 0x21, 0xd7, //0x00005099 andl %edx, %edi + 0xf7, 0xd7, //0x0000509b notl %edi + 0x41, 0x21, 0xfe, //0x0000509d andl %edi, %r14d + //0x000050a0 LBB0_1063 + 0x4d, 0x85, 0xf6, //0x000050a0 testq %r14, %r14 + 0x0f, 0x85, 0xe4, 0x05, 0x00, 0x00, //0x000050a3 jne LBB0_1121 + 0x49, 0x83, 0xc7, 0x20, //0x000050a9 addq $32, %r15 + 0x49, 0x8d, 0x0c, 0x18, //0x000050ad leaq (%r8,%rbx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x000050b1 addq $-32, %rcx + 0x48, 0x83, 0xc3, 0xe0, //0x000050b5 addq $-32, %rbx + 0x48, 0x83, 0xf9, 0x3f, //0x000050b9 cmpq $63, %rcx + 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x000050bd jg LBB0_1059 + 0x4d, 0x85, 0xe4, //0x000050c3 testq %r12, %r12 + 0x0f, 0x85, 0xa5, 0x08, 0x00, 0x00, //0x000050c6 jne LBB0_1162 + 0x4b, 0x8d, 0x14, 0x0f, //0x000050cc leaq (%r15,%r9), %rdx + 0x48, 0x83, 0xc2, 0x01, //0x000050d0 addq $1, %rdx + 0x49, 0xf7, 0xd7, //0x000050d4 notq %r15 + 0x4d, 0x01, 0xc7, //0x000050d7 addq %r8, %r15 + //0x000050da LBB0_1067 + 0x4d, 0x85, 0xff, //0x000050da testq %r15, %r15 + 0x48, 0x8b, 0x7c, 0x24, 0x08, //0x000050dd movq $8(%rsp), %rdi + 0x0f, 0x8e, 0x31, 0xfe, 0xff, 0xff, //0x000050e2 jle LBB0_1050 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000050e8 movq $-1, %r13 + 0xe9, 0xd7, 0x05, 0x00, 0x00, //0x000050ef jmp LBB0_1123 + //0x000050f4 LBB0_1069 + 0x4d, 0x8b, 0x27, //0x000050f4 movq (%r15), %r12 + 0x49, 0x29, 0xd4, //0x000050f7 subq %rdx, %r12 + 0x49, 0x01, 0xd3, //0x000050fa addq %rdx, %r11 + 0x45, 0x31, 0xf6, //0x000050fd xorl %r14d, %r14d + 0xc5, 0xfe, 0x6f, 0x05, 0x98, 0xaf, 0xff, 0xff, //0x00005100 vmovdqu $-20584(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x70, 0xaf, 0xff, 0xff, //0x00005108 vmovdqu $-20624(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x00005110 vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0xe4, 0xaf, 0xff, 0xff, //0x00005114 vmovdqu $-20508(%rip), %ymm3 /* LCPI0_11+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x3c, 0xaf, 0xff, 0xff, //0x0000511c vmovdqu $-20676(%rip), %ymm4 /* LCPI0_3+0(%rip) */ + 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x00005124 vpxor %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xc9, //0x00005129 xorl %r9d, %r9d + 0x45, 0x31, 0xc0, //0x0000512c xorl %r8d, %r8d + 0x31, 0xdb, //0x0000512f xorl %ebx, %ebx + 0x49, 0x83, 0xfc, 0x40, //0x00005131 cmpq $64, %r12 + 0x0f, 0x8c, 0x3d, 0x01, 0x00, 0x00, //0x00005135 jl LBB0_1078 + //0x0000513b LBB0_1072 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3b, //0x0000513b vmovdqu (%r11), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x73, 0x20, //0x00005140 vmovdqu $32(%r11), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x00005146 vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x0000514a vpmovmskb %ymm8, %esi + 0xc5, 0x4d, 0x74, 0xc0, //0x0000514f vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00005153 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00005158 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x0000515c orq %rcx, %rsi + 0x48, 0x89, 0xf1, //0x0000515f movq %rsi, %rcx + 0x4c, 0x09, 0xc9, //0x00005162 orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00005165 jne LBB0_1074 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000516b movq $-1, %rsi + 0x45, 0x31, 0xc9, //0x00005172 xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00005175 jmp LBB0_1075 + //0x0000517a LBB0_1074 + 0x4c, 0x89, 0xc9, //0x0000517a movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x0000517d notq %rcx + 0x48, 0x21, 0xf1, //0x00005180 andq %rsi, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00005183 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xca, //0x00005187 orq %r9, %r10 + 0x4c, 0x89, 0xd7, //0x0000518a movq %r10, %rdi + 0x48, 0xf7, 0xd7, //0x0000518d notq %rdi + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00005190 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd6, //0x0000519a andq %rdx, %rsi + 0x48, 0x21, 0xfe, //0x0000519d andq %rdi, %rsi + 0x45, 0x31, 0xc9, //0x000051a0 xorl %r9d, %r9d + 0x48, 0x01, 0xce, //0x000051a3 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc1, //0x000051a6 setb %r9b + 0x48, 0x01, 0xf6, //0x000051aa addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000051ad movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x000051b7 xorq %rcx, %rsi + 0x4c, 0x21, 0xd6, //0x000051ba andq %r10, %rsi + 0x48, 0xf7, 0xd6, //0x000051bd notq %rsi + //0x000051c0 LBB0_1075 + 0xc5, 0x4d, 0x74, 0xc1, //0x000051c0 vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x000051c4 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000051c9 shlq $32, %rcx + 0xc5, 0x45, 0x74, 0xc1, //0x000051cd vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x000051d1 vpmovmskb %ymm8, %edx + 0x48, 0x09, 0xca, //0x000051d6 orq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x000051d9 andq %rsi, %rdx + 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x000051dc vmovq %rdx, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000051e1 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xea, //0x000051e7 vmovq %xmm5, %r10 + 0x4d, 0x31, 0xf2, //0x000051ec xorq %r14, %r10 + 0xc5, 0xc5, 0x74, 0xeb, //0x000051ef vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x000051f3 vpmovmskb %ymm5, %edx + 0xc5, 0xcd, 0x74, 0xeb, //0x000051f7 vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xcd, //0x000051fb vpmovmskb %ymm5, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000051ff shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00005203 orq %rcx, %rdx + 0x4c, 0x89, 0xd1, //0x00005206 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00005209 notq %rcx + 0x48, 0x21, 0xca, //0x0000520c andq %rcx, %rdx + 0xc5, 0xc5, 0x74, 0xec, //0x0000520f vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xfd, //0x00005213 vpmovmskb %ymm5, %edi + 0xc5, 0xcd, 0x74, 0xec, //0x00005217 vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xf5, //0x0000521b vpmovmskb %ymm5, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x0000521f shlq $32, %rsi + 0x48, 0x09, 0xf7, //0x00005223 orq %rsi, %rdi + 0x48, 0x21, 0xcf, //0x00005226 andq %rcx, %rdi + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00005229 je LBB0_1070 + //0x0000522f LBB0_1076 + 0x48, 0x8d, 0x4f, 0xff, //0x0000522f leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xce, //0x00005233 movq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00005236 andq %rdx, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x00005239 popcntq %rsi, %rsi + 0x4c, 0x01, 0xc6, //0x0000523e addq %r8, %rsi + 0x48, 0x39, 0xde, //0x00005241 cmpq %rbx, %rsi + 0x0f, 0x86, 0x0a, 0x04, 0x00, 0x00, //0x00005244 jbe LBB0_1120 + 0x48, 0x83, 0xc3, 0x01, //0x0000524a addq $1, %rbx + 0x48, 0x21, 0xcf, //0x0000524e andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00005251 jne LBB0_1076 + //0x00005257 LBB0_1070 + 0x49, 0xc1, 0xfa, 0x3f, //0x00005257 sarq $63, %r10 + 0xf3, 0x48, 0x0f, 0xb8, 0xca, //0x0000525b popcntq %rdx, %rcx + 0x49, 0x01, 0xc8, //0x00005260 addq %rcx, %r8 + 0x49, 0x83, 0xc3, 0x40, //0x00005263 addq $64, %r11 + 0x49, 0x83, 0xc4, 0xc0, //0x00005267 addq $-64, %r12 + 0x4d, 0x89, 0xd6, //0x0000526b movq %r10, %r14 + 0x49, 0x83, 0xfc, 0x40, //0x0000526e cmpq $64, %r12 + 0x0f, 0x8d, 0xc3, 0xfe, 0xff, 0xff, //0x00005272 jge LBB0_1072 + //0x00005278 LBB0_1078 + 0x4d, 0x85, 0xe4, //0x00005278 testq %r12, %r12 + 0x0f, 0x8e, 0xd3, 0x06, 0x00, 0x00, //0x0000527b jle LBB0_1160 + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x00005281 vmovdqu %ymm9, $96(%rsp) + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x00005287 vmovdqu %ymm9, $64(%rsp) + 0x44, 0x89, 0xd9, //0x0000528d movl %r11d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00005290 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00005296 cmpl $4033, %ecx + 0x0f, 0x82, 0x99, 0xfe, 0xff, 0xff, //0x0000529c jb LBB0_1072 + 0x49, 0x83, 0xfc, 0x20, //0x000052a2 cmpq $32, %r12 + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x000052a6 jb LBB0_1082 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2b, //0x000052ac vmovdqu (%r11), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x000052b1 vmovdqu %ymm5, $64(%rsp) + 0x49, 0x83, 0xc3, 0x20, //0x000052b7 addq $32, %r11 + 0x49, 0x8d, 0x54, 0x24, 0xe0, //0x000052bb leaq $-32(%r12), %rdx + 0x48, 0x8d, 0x7c, 0x24, 0x60, //0x000052c0 leaq $96(%rsp), %rdi + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x000052c5 jmp LBB0_1083 + //0x000052ca LBB0_1082 + 0x48, 0x8d, 0x7c, 0x24, 0x40, //0x000052ca leaq $64(%rsp), %rdi + 0x4c, 0x89, 0xe2, //0x000052cf movq %r12, %rdx + //0x000052d2 LBB0_1083 + 0x48, 0x83, 0xfa, 0x10, //0x000052d2 cmpq $16, %rdx + 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x000052d6 jb LBB0_1084 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2b, //0x000052dc vmovdqu (%r11), %xmm5 + 0xc5, 0xfa, 0x7f, 0x2f, //0x000052e1 vmovdqu %xmm5, (%rdi) + 0x49, 0x83, 0xc3, 0x10, //0x000052e5 addq $16, %r11 + 0x48, 0x83, 0xc7, 0x10, //0x000052e9 addq $16, %rdi + 0x48, 0x83, 0xc2, 0xf0, //0x000052ed addq $-16, %rdx + 0x48, 0x83, 0xfa, 0x08, //0x000052f1 cmpq $8, %rdx + 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x000052f5 jae LBB0_1089 + //0x000052fb LBB0_1085 + 0x48, 0x83, 0xfa, 0x04, //0x000052fb cmpq $4, %rdx + 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x000052ff jl LBB0_1086 + //0x00005305 LBB0_1090 + 0x41, 0x8b, 0x0b, //0x00005305 movl (%r11), %ecx + 0x89, 0x0f, //0x00005308 movl %ecx, (%rdi) + 0x49, 0x83, 0xc3, 0x04, //0x0000530a addq $4, %r11 + 0x48, 0x83, 0xc7, 0x04, //0x0000530e addq $4, %rdi + 0x48, 0x83, 0xc2, 0xfc, //0x00005312 addq $-4, %rdx + 0x48, 0x83, 0xfa, 0x02, //0x00005316 cmpq $2, %rdx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000531a jae LBB0_1091 + //0x00005320 LBB0_1087 + 0x4c, 0x89, 0xde, //0x00005320 movq %r11, %rsi + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x00005323 leaq $64(%rsp), %r11 + 0x48, 0x85, 0xd2, //0x00005328 testq %rdx, %rdx + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x0000532b jne LBB0_1092 + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x00005331 jmp LBB0_1072 + //0x00005336 LBB0_1084 + 0x48, 0x83, 0xfa, 0x08, //0x00005336 cmpq $8, %rdx + 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x0000533a jb LBB0_1085 + //0x00005340 LBB0_1089 + 0x49, 0x8b, 0x0b, //0x00005340 movq (%r11), %rcx + 0x48, 0x89, 0x0f, //0x00005343 movq %rcx, (%rdi) + 0x49, 0x83, 0xc3, 0x08, //0x00005346 addq $8, %r11 + 0x48, 0x83, 0xc7, 0x08, //0x0000534a addq $8, %rdi + 0x48, 0x83, 0xc2, 0xf8, //0x0000534e addq $-8, %rdx + 0x48, 0x83, 0xfa, 0x04, //0x00005352 cmpq $4, %rdx + 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00005356 jge LBB0_1090 + //0x0000535c LBB0_1086 + 0x48, 0x83, 0xfa, 0x02, //0x0000535c cmpq $2, %rdx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00005360 jb LBB0_1087 + //0x00005366 LBB0_1091 + 0x41, 0x0f, 0xb7, 0x0b, //0x00005366 movzwl (%r11), %ecx + 0x66, 0x89, 0x0f, //0x0000536a movw %cx, (%rdi) + 0x49, 0x83, 0xc3, 0x02, //0x0000536d addq $2, %r11 + 0x48, 0x83, 0xc7, 0x02, //0x00005371 addq $2, %rdi + 0x48, 0x83, 0xc2, 0xfe, //0x00005375 addq $-2, %rdx + 0x4c, 0x89, 0xde, //0x00005379 movq %r11, %rsi + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x0000537c leaq $64(%rsp), %r11 + 0x48, 0x85, 0xd2, //0x00005381 testq %rdx, %rdx + 0x0f, 0x84, 0xb1, 0xfd, 0xff, 0xff, //0x00005384 je LBB0_1072 + //0x0000538a LBB0_1092 + 0x8a, 0x0e, //0x0000538a movb (%rsi), %cl + 0x88, 0x0f, //0x0000538c movb %cl, (%rdi) + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x0000538e leaq $64(%rsp), %r11 + 0xe9, 0xa3, 0xfd, 0xff, 0xff, //0x00005393 jmp LBB0_1072 + //0x00005398 LBB0_1093 + 0x48, 0x8d, 0x48, 0x05, //0x00005398 leaq $5(%rax), %rcx + //0x0000539c LBB0_1094 + 0x49, 0x3b, 0x0f, //0x0000539c cmpq (%r15), %rcx + 0x0f, 0x87, 0x74, 0xfb, 0xff, 0xff, //0x0000539f ja LBB0_1050 + 0x49, 0x89, 0x09, //0x000053a5 movq %rcx, (%r9) + 0x49, 0x89, 0xc5, //0x000053a8 movq %rax, %r13 + 0xe9, 0x69, 0xfb, 0xff, 0xff, //0x000053ab jmp LBB0_1050 + //0x000053b0 LBB0_1096 + 0x4d, 0x8b, 0x27, //0x000053b0 movq (%r15), %r12 + 0x49, 0x29, 0xd4, //0x000053b3 subq %rdx, %r12 + 0x49, 0x01, 0xd3, //0x000053b6 addq %rdx, %r11 + 0x45, 0x31, 0xf6, //0x000053b9 xorl %r14d, %r14d + 0xc5, 0xfe, 0x6f, 0x05, 0xdc, 0xac, 0xff, 0xff, //0x000053bc vmovdqu $-21284(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0xb4, 0xac, 0xff, 0xff, //0x000053c4 vmovdqu $-21324(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x000053cc vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0xe8, 0xac, 0xff, 0xff, //0x000053d0 vmovdqu $-21272(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x00, 0xad, 0xff, 0xff, //0x000053d8 vmovdqu $-21248(%rip), %ymm4 /* LCPI0_10+0(%rip) */ + 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x000053e0 vpxor %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xc9, //0x000053e5 xorl %r9d, %r9d + 0x45, 0x31, 0xc0, //0x000053e8 xorl %r8d, %r8d + 0x31, 0xdb, //0x000053eb xorl %ebx, %ebx + 0x49, 0x83, 0xfc, 0x40, //0x000053ed cmpq $64, %r12 + 0x0f, 0x8c, 0x3d, 0x01, 0x00, 0x00, //0x000053f1 jl LBB0_1105 + //0x000053f7 LBB0_1099 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3b, //0x000053f7 vmovdqu (%r11), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x73, 0x20, //0x000053fc vmovdqu $32(%r11), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x00005402 vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00005406 vpmovmskb %ymm8, %esi + 0xc5, 0x4d, 0x74, 0xc0, //0x0000540b vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x0000540f vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00005414 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00005418 orq %rcx, %rsi + 0x48, 0x89, 0xf1, //0x0000541b movq %rsi, %rcx + 0x4c, 0x09, 0xc9, //0x0000541e orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00005421 jne LBB0_1101 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00005427 movq $-1, %rsi + 0x45, 0x31, 0xc9, //0x0000542e xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00005431 jmp LBB0_1102 + //0x00005436 LBB0_1101 + 0x4c, 0x89, 0xc9, //0x00005436 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x00005439 notq %rcx + 0x48, 0x21, 0xf1, //0x0000543c andq %rsi, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x0000543f leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xca, //0x00005443 orq %r9, %r10 + 0x4c, 0x89, 0xd7, //0x00005446 movq %r10, %rdi + 0x48, 0xf7, 0xd7, //0x00005449 notq %rdi + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000544c movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd6, //0x00005456 andq %rdx, %rsi + 0x48, 0x21, 0xfe, //0x00005459 andq %rdi, %rsi + 0x45, 0x31, 0xc9, //0x0000545c xorl %r9d, %r9d + 0x48, 0x01, 0xce, //0x0000545f addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc1, //0x00005462 setb %r9b + 0x48, 0x01, 0xf6, //0x00005466 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005469 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00005473 xorq %rcx, %rsi + 0x4c, 0x21, 0xd6, //0x00005476 andq %r10, %rsi + 0x48, 0xf7, 0xd6, //0x00005479 notq %rsi + //0x0000547c LBB0_1102 + 0xc5, 0x4d, 0x74, 0xc1, //0x0000547c vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00005480 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00005485 shlq $32, %rcx + 0xc5, 0x45, 0x74, 0xc1, //0x00005489 vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x0000548d vpmovmskb %ymm8, %edx + 0x48, 0x09, 0xca, //0x00005492 orq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00005495 andq %rsi, %rdx + 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x00005498 vmovq %rdx, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x0000549d vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xea, //0x000054a3 vmovq %xmm5, %r10 + 0x4d, 0x31, 0xf2, //0x000054a8 xorq %r14, %r10 + 0xc5, 0xc5, 0x74, 0xeb, //0x000054ab vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x000054af vpmovmskb %ymm5, %edx + 0xc5, 0xcd, 0x74, 0xeb, //0x000054b3 vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xcd, //0x000054b7 vpmovmskb %ymm5, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000054bb shlq $32, %rcx + 0x48, 0x09, 0xca, //0x000054bf orq %rcx, %rdx + 0x4c, 0x89, 0xd1, //0x000054c2 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x000054c5 notq %rcx + 0x48, 0x21, 0xca, //0x000054c8 andq %rcx, %rdx + 0xc5, 0xc5, 0x74, 0xec, //0x000054cb vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xfd, //0x000054cf vpmovmskb %ymm5, %edi + 0xc5, 0xcd, 0x74, 0xec, //0x000054d3 vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xf5, //0x000054d7 vpmovmskb %ymm5, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x000054db shlq $32, %rsi + 0x48, 0x09, 0xf7, //0x000054df orq %rsi, %rdi + 0x48, 0x21, 0xcf, //0x000054e2 andq %rcx, %rdi + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x000054e5 je LBB0_1097 + //0x000054eb LBB0_1103 + 0x48, 0x8d, 0x4f, 0xff, //0x000054eb leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xce, //0x000054ef movq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x000054f2 andq %rdx, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000054f5 popcntq %rsi, %rsi + 0x4c, 0x01, 0xc6, //0x000054fa addq %r8, %rsi + 0x48, 0x39, 0xde, //0x000054fd cmpq %rbx, %rsi + 0x0f, 0x86, 0x4e, 0x01, 0x00, 0x00, //0x00005500 jbe LBB0_1120 + 0x48, 0x83, 0xc3, 0x01, //0x00005506 addq $1, %rbx + 0x48, 0x21, 0xcf, //0x0000550a andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x0000550d jne LBB0_1103 + //0x00005513 LBB0_1097 + 0x49, 0xc1, 0xfa, 0x3f, //0x00005513 sarq $63, %r10 + 0xf3, 0x48, 0x0f, 0xb8, 0xca, //0x00005517 popcntq %rdx, %rcx + 0x49, 0x01, 0xc8, //0x0000551c addq %rcx, %r8 + 0x49, 0x83, 0xc3, 0x40, //0x0000551f addq $64, %r11 + 0x49, 0x83, 0xc4, 0xc0, //0x00005523 addq $-64, %r12 + 0x4d, 0x89, 0xd6, //0x00005527 movq %r10, %r14 + 0x49, 0x83, 0xfc, 0x40, //0x0000552a cmpq $64, %r12 + 0x0f, 0x8d, 0xc3, 0xfe, 0xff, 0xff, //0x0000552e jge LBB0_1099 + //0x00005534 LBB0_1105 + 0x4d, 0x85, 0xe4, //0x00005534 testq %r12, %r12 + 0x0f, 0x8e, 0x17, 0x04, 0x00, 0x00, //0x00005537 jle LBB0_1160 + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x0000553d vmovdqu %ymm9, $96(%rsp) + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x00005543 vmovdqu %ymm9, $64(%rsp) + 0x44, 0x89, 0xd9, //0x00005549 movl %r11d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x0000554c andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00005552 cmpl $4033, %ecx + 0x0f, 0x82, 0x99, 0xfe, 0xff, 0xff, //0x00005558 jb LBB0_1099 + 0x49, 0x83, 0xfc, 0x20, //0x0000555e cmpq $32, %r12 + 0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x00005562 jb LBB0_1109 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2b, //0x00005568 vmovdqu (%r11), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x0000556d vmovdqu %ymm5, $64(%rsp) + 0x49, 0x83, 0xc3, 0x20, //0x00005573 addq $32, %r11 + 0x49, 0x8d, 0x54, 0x24, 0xe0, //0x00005577 leaq $-32(%r12), %rdx + 0x48, 0x8d, 0x7c, 0x24, 0x60, //0x0000557c leaq $96(%rsp), %rdi + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00005581 jmp LBB0_1110 + //0x00005586 LBB0_1109 + 0x48, 0x8d, 0x7c, 0x24, 0x40, //0x00005586 leaq $64(%rsp), %rdi + 0x4c, 0x89, 0xe2, //0x0000558b movq %r12, %rdx + //0x0000558e LBB0_1110 + 0x48, 0x83, 0xfa, 0x10, //0x0000558e cmpq $16, %rdx + 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x00005592 jb LBB0_1111 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2b, //0x00005598 vmovdqu (%r11), %xmm5 + 0xc5, 0xfa, 0x7f, 0x2f, //0x0000559d vmovdqu %xmm5, (%rdi) + 0x49, 0x83, 0xc3, 0x10, //0x000055a1 addq $16, %r11 + 0x48, 0x83, 0xc7, 0x10, //0x000055a5 addq $16, %rdi + 0x48, 0x83, 0xc2, 0xf0, //0x000055a9 addq $-16, %rdx + 0x48, 0x83, 0xfa, 0x08, //0x000055ad cmpq $8, %rdx + 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x000055b1 jae LBB0_1116 + //0x000055b7 LBB0_1112 + 0x48, 0x83, 0xfa, 0x04, //0x000055b7 cmpq $4, %rdx + 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x000055bb jl LBB0_1113 + //0x000055c1 LBB0_1117 + 0x41, 0x8b, 0x0b, //0x000055c1 movl (%r11), %ecx + 0x89, 0x0f, //0x000055c4 movl %ecx, (%rdi) + 0x49, 0x83, 0xc3, 0x04, //0x000055c6 addq $4, %r11 + 0x48, 0x83, 0xc7, 0x04, //0x000055ca addq $4, %rdi + 0x48, 0x83, 0xc2, 0xfc, //0x000055ce addq $-4, %rdx + 0x48, 0x83, 0xfa, 0x02, //0x000055d2 cmpq $2, %rdx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000055d6 jae LBB0_1118 + //0x000055dc LBB0_1114 + 0x4c, 0x89, 0xde, //0x000055dc movq %r11, %rsi + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x000055df leaq $64(%rsp), %r11 + 0x48, 0x85, 0xd2, //0x000055e4 testq %rdx, %rdx + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000055e7 jne LBB0_1119 + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x000055ed jmp LBB0_1099 + //0x000055f2 LBB0_1111 + 0x48, 0x83, 0xfa, 0x08, //0x000055f2 cmpq $8, %rdx + 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x000055f6 jb LBB0_1112 + //0x000055fc LBB0_1116 + 0x49, 0x8b, 0x0b, //0x000055fc movq (%r11), %rcx + 0x48, 0x89, 0x0f, //0x000055ff movq %rcx, (%rdi) + 0x49, 0x83, 0xc3, 0x08, //0x00005602 addq $8, %r11 + 0x48, 0x83, 0xc7, 0x08, //0x00005606 addq $8, %rdi + 0x48, 0x83, 0xc2, 0xf8, //0x0000560a addq $-8, %rdx + 0x48, 0x83, 0xfa, 0x04, //0x0000560e cmpq $4, %rdx + 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00005612 jge LBB0_1117 + //0x00005618 LBB0_1113 + 0x48, 0x83, 0xfa, 0x02, //0x00005618 cmpq $2, %rdx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000561c jb LBB0_1114 + //0x00005622 LBB0_1118 + 0x41, 0x0f, 0xb7, 0x0b, //0x00005622 movzwl (%r11), %ecx + 0x66, 0x89, 0x0f, //0x00005626 movw %cx, (%rdi) + 0x49, 0x83, 0xc3, 0x02, //0x00005629 addq $2, %r11 + 0x48, 0x83, 0xc7, 0x02, //0x0000562d addq $2, %rdi + 0x48, 0x83, 0xc2, 0xfe, //0x00005631 addq $-2, %rdx + 0x4c, 0x89, 0xde, //0x00005635 movq %r11, %rsi + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x00005638 leaq $64(%rsp), %r11 + 0x48, 0x85, 0xd2, //0x0000563d testq %rdx, %rdx + 0x0f, 0x84, 0xb1, 0xfd, 0xff, 0xff, //0x00005640 je LBB0_1099 + //0x00005646 LBB0_1119 + 0x8a, 0x0e, //0x00005646 movb (%rsi), %cl + 0x88, 0x0f, //0x00005648 movb %cl, (%rdi) + 0x4c, 0x8d, 0x5c, 0x24, 0x40, //0x0000564a leaq $64(%rsp), %r11 + 0xe9, 0xa3, 0xfd, 0xff, 0xff, //0x0000564f jmp LBB0_1099 + //0x00005654 LBB0_1120 + 0x49, 0x8b, 0x0f, //0x00005654 movq (%r15), %rcx + 0x48, 0x0f, 0xbc, 0xd7, //0x00005657 bsfq %rdi, %rdx + 0x4c, 0x29, 0xe2, //0x0000565b subq %r12, %rdx + 0x48, 0x01, 0xd1, //0x0000565e addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00005661 addq $1, %rcx + 0x48, 0x8b, 0x74, 0x24, 0x08, //0x00005665 movq $8(%rsp), %rsi + 0x48, 0x89, 0x0e, //0x0000566a movq %rcx, (%rsi) + 0x49, 0x8b, 0x17, //0x0000566d movq (%r15), %rdx + 0x48, 0x39, 0xd1, //0x00005670 cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x00005673 cmovaq %rdx, %rcx + 0x48, 0x89, 0x0e, //0x00005677 movq %rcx, (%rsi) + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000567a movq $-1, %rcx + 0x48, 0x0f, 0x47, 0xc1, //0x00005681 cmovaq %rcx, %rax + 0x49, 0x89, 0xc5, //0x00005685 movq %rax, %r13 + 0xe9, 0x8c, 0xf8, 0xff, 0xff, //0x00005688 jmp LBB0_1050 + //0x0000568d LBB0_1121 + 0x41, 0x0f, 0xbc, 0xce, //0x0000568d bsfl %r14d, %ecx + 0x48, 0x01, 0xc1, //0x00005691 addq %rax, %rcx + 0x4c, 0x01, 0xf9, //0x00005694 addq %r15, %rcx + 0x48, 0x83, 0xc1, 0x02, //0x00005697 addq $2, %rcx + 0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000569b movq $8(%rsp), %rdx + 0x48, 0x89, 0x0a, //0x000056a0 movq %rcx, (%rdx) + 0x49, 0x89, 0xc5, //0x000056a3 movq %rax, %r13 + 0xe9, 0x6e, 0xf8, 0xff, 0xff, //0x000056a6 jmp LBB0_1050 + //0x000056ab LBB0_1134 + 0x49, 0x89, 0x11, //0x000056ab movq %rdx, (%r9) + 0xe9, 0x66, 0xf8, 0xff, 0xff, //0x000056ae jmp LBB0_1050 + //0x000056b3 LBB0_1122 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000056b3 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000056ba movl $2, %esi + 0x48, 0x01, 0xf2, //0x000056bf addq %rsi, %rdx + 0x49, 0x01, 0xcf, //0x000056c2 addq %rcx, %r15 + 0x0f, 0x8e, 0x4e, 0xf8, 0xff, 0xff, //0x000056c5 jle LBB0_1050 + //0x000056cb LBB0_1123 + 0x0f, 0xb6, 0x0a, //0x000056cb movzbl (%rdx), %ecx + 0x80, 0xf9, 0x5c, //0x000056ce cmpb $92, %cl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x000056d1 je LBB0_1122 + 0x80, 0xf9, 0x22, //0x000056d7 cmpb $34, %cl + 0x0f, 0x84, 0xf7, 0x01, 0x00, 0x00, //0x000056da je LBB0_1150 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000056e0 movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000056e7 movl $1, %esi + 0x48, 0x01, 0xf2, //0x000056ec addq %rsi, %rdx + 0x49, 0x01, 0xcf, //0x000056ef addq %rcx, %r15 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000056f2 jg LBB0_1123 + 0xe9, 0x1c, 0xf8, 0xff, 0xff, //0x000056f8 jmp LBB0_1050 + //0x000056fd LBB0_1126 + 0x4c, 0x89, 0xdb, //0x000056fd movq %r11, %rbx + //0x00005700 LBB0_1127 + 0x49, 0x89, 0x19, //0x00005700 movq %rbx, (%r9) + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00005703 movq $-1, %r13 + 0xe9, 0x0a, 0xf8, 0xff, 0xff, //0x0000570a jmp LBB0_1050 + //0x0000570f LBB0_1128 + 0x66, 0x0f, 0xbc, 0xc9, //0x0000570f bsfw %cx, %cx + 0x0f, 0xb7, 0xf9, //0x00005713 movzwl %cx, %edi + 0x4c, 0x29, 0xda, //0x00005716 subq %r11, %rdx + 0x48, 0x01, 0xfa, //0x00005719 addq %rdi, %rdx + 0x48, 0x8d, 0x0c, 0x32, //0x0000571c leaq (%rdx,%rsi), %rcx + 0x49, 0x89, 0x09, //0x00005720 movq %rcx, (%r9) + 0x48, 0x85, 0xc9, //0x00005723 testq %rcx, %rcx + 0x0f, 0x8e, 0x64, 0xf8, 0xff, 0xff, //0x00005726 jle LBB0_1044 + 0x48, 0x8d, 0x0c, 0x16, //0x0000572c leaq (%rsi,%rdx), %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00005730 addq $1, %rcx + 0x48, 0x01, 0xf2, //0x00005734 addq %rsi, %rdx + 0x48, 0x83, 0xc2, 0xff, //0x00005737 addq $-1, %rdx + 0x48, 0x01, 0xfb, //0x0000573b addq %rdi, %rbx + 0x48, 0x01, 0xf3, //0x0000573e addq %rsi, %rbx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00005741 movabsq $4294977024, %rsi + //0x0000574b LBB0_1130 + 0x0f, 0xb6, 0x3b, //0x0000574b movzbl (%rbx), %edi + 0x48, 0x83, 0xff, 0x20, //0x0000574e cmpq $32, %rdi + 0x0f, 0x87, 0x38, 0xf8, 0xff, 0xff, //0x00005752 ja LBB0_1044 + 0x48, 0x0f, 0xa3, 0xfe, //0x00005758 btq %rdi, %rsi + 0x0f, 0x83, 0x2e, 0xf8, 0xff, 0xff, //0x0000575c jae LBB0_1044 + 0x49, 0x89, 0x11, //0x00005762 movq %rdx, (%r9) + 0x48, 0x83, 0xc1, 0xff, //0x00005765 addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00005769 addq $-1, %rdx + 0x48, 0x83, 0xc3, 0xff, //0x0000576d addq $-1, %rbx + 0x48, 0x83, 0xf9, 0x01, //0x00005771 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00005775 jg LBB0_1130 + 0xe9, 0x10, 0xf8, 0xff, 0xff, //0x0000577b jmp LBB0_1044 + //0x00005780 LBB0_1133 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00005780 movq $-1, %rcx + 0xe9, 0x0c, 0x01, 0x00, 0x00, //0x00005787 jmp LBB0_1148 + //0x0000578c LBB0_1136 + 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x0000578c movq $-2, %r13 + 0x80, 0xfa, 0x61, //0x00005793 cmpb $97, %dl + 0x0f, 0x85, 0x7d, 0xf7, 0xff, 0xff, //0x00005796 jne LBB0_1050 + 0x48, 0x8d, 0x41, 0x01, //0x0000579c leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x000057a0 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x6c, //0x000057a3 cmpb $108, $1(%r15,%rcx) + 0x0f, 0x85, 0x6a, 0xf7, 0xff, 0xff, //0x000057a9 jne LBB0_1050 + 0x48, 0x8d, 0x41, 0x02, //0x000057af leaq $2(%rcx), %rax + 0x49, 0x89, 0x01, //0x000057b3 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x73, //0x000057b6 cmpb $115, $2(%r15,%rcx) + 0x0f, 0x85, 0x57, 0xf7, 0xff, 0xff, //0x000057bc jne LBB0_1050 + 0x48, 0x8d, 0x41, 0x03, //0x000057c2 leaq $3(%rcx), %rax + 0x49, 0x89, 0x01, //0x000057c6 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x03, 0x65, //0x000057c9 cmpb $101, $3(%r15,%rcx) + 0x0f, 0x85, 0x44, 0xf7, 0xff, 0xff, //0x000057cf jne LBB0_1050 + 0x48, 0x83, 0xc1, 0x04, //0x000057d5 addq $4, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x000057d9 movq $8(%rsp), %rax + 0x48, 0x89, 0x08, //0x000057de movq %rcx, (%rax) + 0xe9, 0x33, 0xf7, 0xff, 0xff, //0x000057e1 jmp LBB0_1050 + //0x000057e6 LBB0_871 + 0x4d, 0x89, 0x29, //0x000057e6 movq %r13, (%r9) + 0x43, 0x80, 0x3c, 0x2f, 0x6e, //0x000057e9 cmpb $110, (%r15,%r13) + 0x0f, 0x85, 0x1e, 0xf7, 0xff, 0xff, //0x000057ee jne LBB0_1049 + 0x49, 0x89, 0x09, //0x000057f4 movq %rcx, (%r9) + 0x41, 0x80, 0x3c, 0x0f, 0x75, //0x000057f7 cmpb $117, (%r15,%rcx) + 0x0f, 0x85, 0x10, 0xf7, 0xff, 0xff, //0x000057fc jne LBB0_1049 + 0x48, 0x8d, 0x41, 0x01, //0x00005802 leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x00005806 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x6c, //0x00005809 cmpb $108, $1(%r15,%rcx) + 0x0f, 0x85, 0xfd, 0xf6, 0xff, 0xff, //0x0000580f jne LBB0_1049 + 0x48, 0x8d, 0x41, 0x02, //0x00005815 leaq $2(%rcx), %rax + 0x49, 0x89, 0x01, //0x00005819 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x6c, //0x0000581c cmpb $108, $2(%r15,%rcx) + 0x0f, 0x85, 0xea, 0xf6, 0xff, 0xff, //0x00005822 jne LBB0_1049 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00005828 jmp LBB0_1145 + //0x0000582d LBB0_1141 + 0x4d, 0x89, 0x29, //0x0000582d movq %r13, (%r9) + 0x43, 0x80, 0x3c, 0x2f, 0x74, //0x00005830 cmpb $116, (%r15,%r13) + 0x0f, 0x85, 0xd7, 0xf6, 0xff, 0xff, //0x00005835 jne LBB0_1049 + 0x49, 0x89, 0x09, //0x0000583b movq %rcx, (%r9) + 0x41, 0x80, 0x3c, 0x0f, 0x72, //0x0000583e cmpb $114, (%r15,%rcx) + 0x0f, 0x85, 0xc9, 0xf6, 0xff, 0xff, //0x00005843 jne LBB0_1049 + 0x48, 0x8d, 0x41, 0x01, //0x00005849 leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x0000584d movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x01, 0x75, //0x00005850 cmpb $117, $1(%r15,%rcx) + 0x0f, 0x85, 0xb6, 0xf6, 0xff, 0xff, //0x00005856 jne LBB0_1049 + 0x48, 0x8d, 0x41, 0x02, //0x0000585c leaq $2(%rcx), %rax + 0x49, 0x89, 0x01, //0x00005860 movq %rax, (%r9) + 0x41, 0x80, 0x7c, 0x0f, 0x02, 0x65, //0x00005863 cmpb $101, $2(%r15,%rcx) + 0x0f, 0x85, 0xa3, 0xf6, 0xff, 0xff, //0x00005869 jne LBB0_1049 + //0x0000586f LBB0_1145 + 0x48, 0x83, 0xc1, 0x03, //0x0000586f addq $3, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00005873 movq $8(%rsp), %rax + 0x48, 0x89, 0x08, //0x00005878 movq %rcx, (%rax) + 0xe9, 0x92, 0xf6, 0xff, 0xff, //0x0000587b jmp LBB0_1049 + //0x00005880 LBB0_842 + 0x48, 0x83, 0xc1, 0xff, //0x00005880 addq $-1, %rcx + 0x49, 0x89, 0xcd, //0x00005884 movq %rcx, %r13 + 0xe9, 0x8d, 0xf6, 0xff, 0xff, //0x00005887 jmp LBB0_1050 + //0x0000588c LBB0_978 + 0x49, 0x83, 0xc5, 0xff, //0x0000588c addq $-1, %r13 + 0xe9, 0x84, 0xf6, 0xff, 0xff, //0x00005890 jmp LBB0_1050 + //0x00005895 LBB0_1147 + 0x4c, 0x89, 0xc9, //0x00005895 movq %r9, %rcx + //0x00005898 LBB0_1148 + 0x48, 0xf7, 0xd1, //0x00005898 notq %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x0000589b movq $8(%rsp), %rax + 0x48, 0x01, 0x08, //0x000058a0 addq %rcx, (%rax) + 0xe9, 0x6a, 0xf6, 0xff, 0xff, //0x000058a3 jmp LBB0_1049 + //0x000058a8 LBB0_1158 + 0x4d, 0x89, 0xd9, //0x000058a8 movq %r11, %r9 + 0xe9, 0x0d, 0xf7, 0xff, 0xff, //0x000058ab jmp LBB0_861 + //0x000058b0 LBB0_1149 + 0x4c, 0x29, 0xd8, //0x000058b0 subq %r11, %rax + 0x48, 0x01, 0xf0, //0x000058b3 addq %rsi, %rax + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000058b6 movq $-1, %r13 + 0x48, 0x39, 0xd8, //0x000058bd cmpq %rbx, %rax + 0x0f, 0x82, 0xdc, 0xf4, 0xff, 0xff, //0x000058c0 jb LBB0_652 + 0xe9, 0x4e, 0xf6, 0xff, 0xff, //0x000058c6 jmp LBB0_1050 + //0x000058cb LBB0_1156 + 0x49, 0xc7, 0xc5, 0xfe, 0xff, 0xff, 0xff, //0x000058cb movq $-2, %r13 + 0xe9, 0x49, 0x00, 0x00, 0x00, //0x000058d2 jmp LBB0_1157 + //0x000058d7 LBB0_1150 + 0x4c, 0x29, 0xda, //0x000058d7 subq %r11, %rdx + 0x48, 0x83, 0xc2, 0x01, //0x000058da addq $1, %rdx + 0x48, 0x89, 0x17, //0x000058de movq %rdx, (%rdi) + 0x49, 0x89, 0xc5, //0x000058e1 movq %rax, %r13 + 0xe9, 0x30, 0xf6, 0xff, 0xff, //0x000058e4 jmp LBB0_1050 + //0x000058e9 LBB0_1151 + 0x49, 0x89, 0xc7, //0x000058e9 movq %rax, %r15 + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x000058ec jmp LBB0_1157 + //0x000058f1 LBB0_1152 + 0x4c, 0x01, 0xd8, //0x000058f1 addq %r11, %rax + 0x48, 0x85, 0xd2, //0x000058f4 testq %rdx, %rdx + 0x0f, 0x85, 0x5b, 0xd9, 0xff, 0xff, //0x000058f7 jne LBB0_638 + 0xe9, 0x8d, 0xd9, 0xff, 0xff, //0x000058fd jmp LBB0_643 + //0x00005902 LBB0_1153 + 0x4c, 0x8b, 0x7c, 0x24, 0x20, //0x00005902 movq $32(%rsp), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00005907 addq $1, %r15 + 0x49, 0xc7, 0xc5, 0xfd, 0xff, 0xff, 0xff, //0x0000590b movq $-3, %r13 + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x00005912 jmp LBB0_1157 + //0x00005917 LBB0_1154 + 0x4c, 0x8b, 0x7c, 0x24, 0x20, //0x00005917 movq $32(%rsp), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x0000591c addq $1, %r15 + //0x00005920 LBB0_1157 + 0x4d, 0x29, 0xe7, //0x00005920 subq %r12, %r15 + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00005923 movq $8(%rsp), %rax + 0x4c, 0x89, 0x38, //0x00005928 movq %r15, (%rax) + 0xe9, 0xe9, 0xf5, 0xff, 0xff, //0x0000592b jmp LBB0_1050 + //0x00005930 LBB0_1155 + 0x4c, 0x01, 0xda, //0x00005930 addq %r11, %rdx + 0x48, 0x83, 0xff, 0x10, //0x00005933 cmpq $16, %rdi + 0x0f, 0x83, 0x13, 0xf5, 0xff, 0xff, //0x00005937 jae LBB0_659 + 0xe9, 0x62, 0xf5, 0xff, 0xff, //0x0000593d jmp LBB0_663 + //0x00005942 LBB0_389 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00005942 movq $8(%rsp), %r9 + 0xe9, 0xb4, 0xfd, 0xff, 0xff, //0x00005947 jmp LBB0_1127 + //0x0000594c LBB0_1159 + 0x4c, 0x01, 0xda, //0x0000594c addq %r11, %rdx + 0xe9, 0x86, 0xf7, 0xff, 0xff, //0x0000594f jmp LBB0_1067 + //0x00005954 LBB0_1160 + 0x49, 0x8b, 0x07, //0x00005954 movq (%r15), %rax + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00005957 movq $8(%rsp), %rcx + 0x48, 0x89, 0x01, //0x0000595c movq %rax, (%rcx) + 0xe9, 0xb5, 0xf5, 0xff, 0xff, //0x0000595f jmp LBB0_1050 + //0x00005964 LBB0_1161 + 0x4c, 0x8b, 0x4c, 0x24, 0x08, //0x00005964 movq $8(%rsp), %r9 + 0x4c, 0x89, 0xeb, //0x00005969 movq %r13, %rbx + 0xe9, 0x8f, 0xfd, 0xff, 0xff, //0x0000596c jmp LBB0_1127 + //0x00005971 LBB0_1162 + 0x49, 0x8d, 0x48, 0xff, //0x00005971 leaq $-1(%r8), %rcx + 0x4c, 0x39, 0xf9, //0x00005975 cmpq %r15, %rcx + 0x0f, 0x84, 0x9b, 0xf5, 0xff, 0xff, //0x00005978 je LBB0_1050 + 0x4b, 0x8d, 0x14, 0x0f, //0x0000597e leaq (%r15,%r9), %rdx + 0x48, 0x83, 0xc2, 0x02, //0x00005982 addq $2, %rdx + 0x4d, 0x29, 0xf8, //0x00005986 subq %r15, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00005989 addq $-2, %r8 + 0x4d, 0x89, 0xc7, //0x0000598d movq %r8, %r15 + 0xe9, 0x45, 0xf7, 0xff, 0xff, //0x00005990 jmp LBB0_1067 + 0x90, 0x90, 0x90, //0x00005995 .p2align 2, 0x90 + // // .set L0_0_set_505, LBB0_505-LJTI0_0 + // // .set L0_0_set_504, LBB0_504-LJTI0_0 + // // .set L0_0_set_490, LBB0_490-LJTI0_0 + // // .set L0_0_set_466, LBB0_466-LJTI0_0 + // // .set L0_0_set_540, LBB0_540-LJTI0_0 + // // .set L0_0_set_503, LBB0_503-LJTI0_0 + // // .set L0_0_set_489, LBB0_489-LJTI0_0 + // // .set L0_0_set_564, LBB0_564-LJTI0_0 + //0x00005998 LJTI0_0 + 0x7e, 0xcd, 0xff, 0xff, //0x00005998 .long L0_0_set_505 + 0x78, 0xcd, 0xff, 0xff, //0x0000599c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059a0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059a4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059a8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059ac .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059b0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059b4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059b8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059bc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059c0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059c4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059c8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059cc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059d0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059d4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059d8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059dc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059e0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059e4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059e8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059ec .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059f0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059f4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059f8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x000059fc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a00 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a04 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a08 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a0c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a10 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a14 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a18 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a1c .long L0_0_set_504 + 0x77, 0xcc, 0xff, 0xff, //0x00005a20 .long L0_0_set_490 + 0x78, 0xcd, 0xff, 0xff, //0x00005a24 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a28 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a2c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a30 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a34 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a38 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a3c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a40 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a44 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a48 .long L0_0_set_504 + 0x8e, 0xca, 0xff, 0xff, //0x00005a4c .long L0_0_set_466 + 0x78, 0xcd, 0xff, 0xff, //0x00005a50 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a54 .long L0_0_set_504 + 0x8e, 0xca, 0xff, 0xff, //0x00005a58 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a5c .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a60 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a64 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a68 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a6c .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a70 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a74 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a78 .long L0_0_set_466 + 0x8e, 0xca, 0xff, 0xff, //0x00005a7c .long L0_0_set_466 + 0x78, 0xcd, 0xff, 0xff, //0x00005a80 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a84 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a88 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a8c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a90 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a94 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a98 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005a9c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005aa0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005aa4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005aa8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005aac .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ab0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ab4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ab8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005abc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ac0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ac4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ac8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005acc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ad0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ad4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ad8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005adc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ae0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ae4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005ae8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005aec .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005af0 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005af4 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005af8 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005afc .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b00 .long L0_0_set_504 + 0x52, 0xcf, 0xff, 0xff, //0x00005b04 .long L0_0_set_540 + 0x78, 0xcd, 0xff, 0xff, //0x00005b08 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b0c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b10 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b14 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b18 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b1c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b20 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b24 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b28 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b2c .long L0_0_set_504 + 0x61, 0xcd, 0xff, 0xff, //0x00005b30 .long L0_0_set_503 + 0x78, 0xcd, 0xff, 0xff, //0x00005b34 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b38 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b3c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b40 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b44 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b48 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b4c .long L0_0_set_504 + 0x64, 0xcc, 0xff, 0xff, //0x00005b50 .long L0_0_set_489 + 0x78, 0xcd, 0xff, 0xff, //0x00005b54 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b58 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b5c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b60 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b64 .long L0_0_set_504 + 0x64, 0xcc, 0xff, 0xff, //0x00005b68 .long L0_0_set_489 + 0x78, 0xcd, 0xff, 0xff, //0x00005b6c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b70 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b74 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b78 .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b7c .long L0_0_set_504 + 0x78, 0xcd, 0xff, 0xff, //0x00005b80 .long L0_0_set_504 + 0xeb, 0xd1, 0xff, 0xff, //0x00005b84 .long L0_0_set_564 + // // .set L0_1_set_293, LBB0_293-LJTI0_1 + // // .set L0_1_set_292, LBB0_292-LJTI0_1 + // // .set L0_1_set_253, LBB0_253-LJTI0_1 + // // .set L0_1_set_230, LBB0_230-LJTI0_1 + // // .set L0_1_set_265, LBB0_265-LJTI0_1 + // // .set L0_1_set_291, LBB0_291-LJTI0_1 + // // .set L0_1_set_252, LBB0_252-LJTI0_1 + // // .set L0_1_set_324, LBB0_324-LJTI0_1 + //0x00005b88 LJTI0_1 + 0x5e, 0xb8, 0xff, 0xff, //0x00005b88 .long L0_1_set_293 + 0x58, 0xb8, 0xff, 0xff, //0x00005b8c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005b90 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005b94 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005b98 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005b9c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ba0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ba4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ba8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bac .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bb0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bb4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bb8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bbc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bc0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bc4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bc8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bcc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bd0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bd4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bd8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bdc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005be0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005be4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005be8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bec .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bf0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bf4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bf8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005bfc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c00 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c04 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c08 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c0c .long L0_1_set_292 + 0xa4, 0xb4, 0xff, 0xff, //0x00005c10 .long L0_1_set_253 + 0x58, 0xb8, 0xff, 0xff, //0x00005c14 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c18 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c1c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c20 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c24 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c28 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c2c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c30 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c34 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c38 .long L0_1_set_292 + 0xce, 0xb2, 0xff, 0xff, //0x00005c3c .long L0_1_set_230 + 0x58, 0xb8, 0xff, 0xff, //0x00005c40 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c44 .long L0_1_set_292 + 0xce, 0xb2, 0xff, 0xff, //0x00005c48 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c4c .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c50 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c54 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c58 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c5c .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c60 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c64 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c68 .long L0_1_set_230 + 0xce, 0xb2, 0xff, 0xff, //0x00005c6c .long L0_1_set_230 + 0x58, 0xb8, 0xff, 0xff, //0x00005c70 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c74 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c78 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c7c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c80 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c84 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c88 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c8c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c90 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c94 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c98 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005c9c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ca0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ca4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ca8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cac .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cb0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cb4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cb8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cbc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cc0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cc4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cc8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ccc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cd0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cd4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cd8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cdc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ce0 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ce4 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005ce8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cec .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cf0 .long L0_1_set_292 + 0xa0, 0xb5, 0xff, 0xff, //0x00005cf4 .long L0_1_set_265 + 0x58, 0xb8, 0xff, 0xff, //0x00005cf8 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005cfc .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d00 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d04 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d08 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d0c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d10 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d14 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d18 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d1c .long L0_1_set_292 + 0x3d, 0xb8, 0xff, 0xff, //0x00005d20 .long L0_1_set_291 + 0x58, 0xb8, 0xff, 0xff, //0x00005d24 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d28 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d2c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d30 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d34 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d38 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d3c .long L0_1_set_292 + 0x91, 0xb4, 0xff, 0xff, //0x00005d40 .long L0_1_set_252 + 0x58, 0xb8, 0xff, 0xff, //0x00005d44 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d48 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d4c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d50 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d54 .long L0_1_set_292 + 0x91, 0xb4, 0xff, 0xff, //0x00005d58 .long L0_1_set_252 + 0x58, 0xb8, 0xff, 0xff, //0x00005d5c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d60 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d64 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d68 .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d6c .long L0_1_set_292 + 0x58, 0xb8, 0xff, 0xff, //0x00005d70 .long L0_1_set_292 + 0x21, 0xba, 0xff, 0xff, //0x00005d74 .long L0_1_set_324 + // // .set L0_2_set_709, LBB0_709-LJTI0_2 + // // .set L0_2_set_737, LBB0_737-LJTI0_2 + // // .set L0_2_set_712, LBB0_712-LJTI0_2 + // // .set L0_2_set_739, LBB0_739-LJTI0_2 + // // .set L0_2_set_733, LBB0_733-LJTI0_2 + // // .set L0_2_set_741, LBB0_741-LJTI0_2 + //0x00005d78 LJTI0_2 + 0x0e, 0xd8, 0xff, 0xff, //0x00005d78 .long L0_2_set_709 + 0xa8, 0xdd, 0xff, 0xff, //0x00005d7c .long L0_2_set_737 + 0x25, 0xd8, 0xff, 0xff, //0x00005d80 .long L0_2_set_712 + 0xd4, 0xdd, 0xff, 0xff, //0x00005d84 .long L0_2_set_739 + 0x7e, 0xd9, 0xff, 0xff, //0x00005d88 .long L0_2_set_733 + 0xeb, 0xdd, 0xff, 0xff, //0x00005d8c .long L0_2_set_741 + // // .set L0_3_set_1050, LBB0_1050-LJTI0_3 + // // .set L0_3_set_1049, LBB0_1049-LJTI0_3 + // // .set L0_3_set_843, LBB0_843-LJTI0_3 + // // .set L0_3_set_863, LBB0_863-LJTI0_3 + // // .set L0_3_set_743, LBB0_743-LJTI0_3 + // // .set L0_3_set_867, LBB0_867-LJTI0_3 + // // .set L0_3_set_839, LBB0_839-LJTI0_3 + // // .set L0_3_set_869, LBB0_869-LJTI0_3 + // // .set L0_3_set_875, LBB0_875-LJTI0_3 + // // .set L0_3_set_878, LBB0_878-LJTI0_3 + //0x00005d90 LJTI0_3 + 0x89, 0xf1, 0xff, 0xff, //0x00005d90 .long L0_3_set_1050 + 0x82, 0xf1, 0xff, 0xff, //0x00005d94 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005d98 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005d9c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005da0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005da4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005da8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dac .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005db0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005db4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005db8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dbc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dc0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dc4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dc8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dcc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dd0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dd4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dd8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ddc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005de0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005de4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005de8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dec .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005df0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005df4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005df8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005dfc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e00 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e04 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e08 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e0c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e10 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e14 .long L0_3_set_1049 + 0xf3, 0xe0, 0xff, 0xff, //0x00005e18 .long L0_3_set_843 + 0x82, 0xf1, 0xff, 0xff, //0x00005e1c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e20 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e24 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e28 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e2c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e30 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e34 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e38 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e3c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e40 .long L0_3_set_1049 + 0x25, 0xe2, 0xff, 0xff, //0x00005e44 .long L0_3_set_863 + 0x82, 0xf1, 0xff, 0xff, //0x00005e48 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e4c .long L0_3_set_1049 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e50 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e54 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e58 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e5c .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e60 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e64 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e68 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e6c .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e70 .long L0_3_set_743 + 0xa5, 0xd9, 0xff, 0xff, //0x00005e74 .long L0_3_set_743 + 0x82, 0xf1, 0xff, 0xff, //0x00005e78 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e7c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e80 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e84 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e88 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e8c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e90 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e94 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e98 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005e9c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ea0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ea4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ea8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005eac .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005eb0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005eb4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005eb8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ebc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ec0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ec4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ec8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ecc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ed0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ed4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ed8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005edc .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ee0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ee4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ee8 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005eec .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ef0 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ef4 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005ef8 .long L0_3_set_1049 + 0x5f, 0xe2, 0xff, 0xff, //0x00005efc .long L0_3_set_867 + 0x82, 0xf1, 0xff, 0xff, //0x00005f00 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f04 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f08 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f0c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f10 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f14 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f18 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f1c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f20 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f24 .long L0_3_set_1049 + 0xb6, 0xe0, 0xff, 0xff, //0x00005f28 .long L0_3_set_839 + 0x82, 0xf1, 0xff, 0xff, //0x00005f2c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f30 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f34 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f38 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f3c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f40 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f44 .long L0_3_set_1049 + 0x86, 0xe2, 0xff, 0xff, //0x00005f48 .long L0_3_set_869 + 0x82, 0xf1, 0xff, 0xff, //0x00005f4c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f50 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f54 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f58 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f5c .long L0_3_set_1049 + 0xb6, 0xe2, 0xff, 0xff, //0x00005f60 .long L0_3_set_875 + 0x82, 0xf1, 0xff, 0xff, //0x00005f64 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f68 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f6c .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f70 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f74 .long L0_3_set_1049 + 0x82, 0xf1, 0xff, 0xff, //0x00005f78 .long L0_3_set_1049 + 0xf6, 0xe2, 0xff, 0xff, //0x00005f7c .long L0_3_set_878 + // // .set L0_4_set_929, LBB0_929-LJTI0_4 + // // .set L0_4_set_937, LBB0_937-LJTI0_4 + // // .set L0_4_set_931, LBB0_931-LJTI0_4 + // // .set L0_4_set_923, LBB0_923-LJTI0_4 + //0x00005f80 LJTI0_4 + 0x7a, 0xe4, 0xff, 0xff, //0x00005f80 .long L0_4_set_929 + 0x6a, 0xe5, 0xff, 0xff, //0x00005f84 .long L0_4_set_937 + 0x7a, 0xe4, 0xff, 0xff, //0x00005f88 .long L0_4_set_929 + 0x94, 0xe4, 0xff, 0xff, //0x00005f8c .long L0_4_set_931 + 0x6a, 0xe5, 0xff, 0xff, //0x00005f90 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005f94 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005f98 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005f9c .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fa0 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fa4 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fa8 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fac .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fb0 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fb4 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fb8 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fbc .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fc0 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fc4 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fc8 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fcc .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fd0 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fd4 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fd8 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fdc .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fe0 .long L0_4_set_937 + 0x6a, 0xe5, 0xff, 0xff, //0x00005fe4 .long L0_4_set_937 + 0x32, 0xe4, 0xff, 0xff, //0x00005fe8 .long L0_4_set_923 + // // .set L0_5_set_794, LBB0_794-LJTI0_5 + // // .set L0_5_set_825, LBB0_825-LJTI0_5 + // // .set L0_5_set_796, LBB0_796-LJTI0_5 + // // .set L0_5_set_788, LBB0_788-LJTI0_5 + //0x00005fec LJTI0_5 + 0x07, 0xdb, 0xff, 0xff, //0x00005fec .long L0_5_set_794 + 0x54, 0xdd, 0xff, 0xff, //0x00005ff0 .long L0_5_set_825 + 0x07, 0xdb, 0xff, 0xff, //0x00005ff4 .long L0_5_set_794 + 0x1a, 0xdb, 0xff, 0xff, //0x00005ff8 .long L0_5_set_796 + 0x54, 0xdd, 0xff, 0xff, //0x00005ffc .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006000 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006004 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006008 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x0000600c .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006010 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006014 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006018 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x0000601c .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006020 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006024 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006028 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x0000602c .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006030 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006034 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006038 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x0000603c .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006040 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006044 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006048 .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x0000604c .long L0_5_set_825 + 0x54, 0xdd, 0xff, 0xff, //0x00006050 .long L0_5_set_825 + 0xc0, 0xda, 0xff, 0xff, //0x00006054 .long L0_5_set_788 + // // .set L0_6_set_1050, LBB0_1050-LJTI0_6 + // // .set L0_6_set_1056, LBB0_1056-LJTI0_6 + // // .set L0_6_set_1057, LBB0_1057-LJTI0_6 + // // .set L0_6_set_654, LBB0_654-LJTI0_6 // // .set L0_6_set_1069, LBB0_1069-LJTI0_6 - // // .set L0_6_set_1027, LBB0_1027-LJTI0_6 - // // .set L0_6_set_1071, LBB0_1071-LJTI0_6 - //0x00005d0c LJTI0_6 - 0x89, 0xef, 0xff, 0xff, //0x00005d0c .long L0_6_set_1026 - 0x06, 0xf0, 0xff, 0xff, //0x00005d10 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d14 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d18 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d1c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d20 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d24 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d28 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d2c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d30 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d34 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d38 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d3c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d40 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d44 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d48 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d4c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d50 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d54 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d58 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d5c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d60 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d64 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d68 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d6c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d70 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d74 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d78 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d7c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d80 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d84 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d88 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d8c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d90 .long L0_6_set_1032 - 0x0e, 0xf0, 0xff, 0xff, //0x00005d94 .long L0_6_set_1033 - 0x06, 0xf0, 0xff, 0xff, //0x00005d98 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005d9c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005da0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005da4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005da8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005dac .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005db0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005db4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005db8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005dbc .long L0_6_set_1032 - 0x26, 0xee, 0xff, 0xff, //0x00005dc0 .long L0_6_set_634 - 0x06, 0xf0, 0xff, 0xff, //0x00005dc4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005dc8 .long L0_6_set_1032 - 0x26, 0xee, 0xff, 0xff, //0x00005dcc .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005dd0 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005dd4 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005dd8 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005ddc .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005de0 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005de4 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005de8 .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005dec .long L0_6_set_634 - 0x26, 0xee, 0xff, 0xff, //0x00005df0 .long L0_6_set_634 - 0x06, 0xf0, 0xff, 0xff, //0x00005df4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005df8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005dfc .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e00 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e04 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e08 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e0c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e10 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e14 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e18 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e1c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e20 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e24 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e28 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e2c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e30 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e34 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e38 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e3c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e40 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e44 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e48 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e4c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e50 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e54 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e58 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e5c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e60 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e64 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e68 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e6c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e70 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e74 .long L0_6_set_1032 - 0xf8, 0xf0, 0xff, 0xff, //0x00005e78 .long L0_6_set_1045 - 0x06, 0xf0, 0xff, 0xff, //0x00005e7c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e80 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e84 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e88 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e8c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e90 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e94 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e98 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005e9c .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ea0 .long L0_6_set_1032 - 0x9c, 0xf3, 0xff, 0xff, //0x00005ea4 .long L0_6_set_1069 - 0x06, 0xf0, 0xff, 0xff, //0x00005ea8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005eac .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005eb0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005eb4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005eb8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ebc .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ec0 .long L0_6_set_1032 - 0xd7, 0xef, 0xff, 0xff, //0x00005ec4 .long L0_6_set_1027 - 0x06, 0xf0, 0xff, 0xff, //0x00005ec8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ecc .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ed0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ed4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ed8 .long L0_6_set_1032 - 0xd7, 0xef, 0xff, 0xff, //0x00005edc .long L0_6_set_1027 - 0x06, 0xf0, 0xff, 0xff, //0x00005ee0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ee4 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ee8 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005eec .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ef0 .long L0_6_set_1032 - 0x06, 0xf0, 0xff, 0xff, //0x00005ef4 .long L0_6_set_1032 - 0xae, 0xf3, 0xff, 0xff, //0x00005ef8 .long L0_6_set_1071 - //0x00005efc .p2align 2, 0x00 - //0x00005efc _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00005efc .long 2 - //0x00005f00 .p2align 4, 0x00 - //0x00005f00 __UnquoteTab - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005f00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005f10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, //0x00005f20 QUAD $0x0000000000220000; QUAD $0x2f00000000000000 // .ascii 16, '\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, //0x00005f30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005f40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, 0x5c, 0x00, 0x00, 0x00, //0x00005f50 QUAD $0x0000000000000000; QUAD $0x0000005c00000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00' - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, //0x00005f60 QUAD $0x000c000000080000; QUAD $0x000a000000000000 // .ascii 16, '\x00\x00\x08\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\n\x00' - 0x00, 0x00, 0x0d, 0x00, 0x09, 0xff, //0x00005f70 LONG $0x000d0000; WORD $0xff09 // .ascii 6, '\x00\x00\r\x00\t\xff' - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005f76 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, //0x00005f86 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, //0x00005f96 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, //0x00005fa6 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, //0x00005fb6 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, //0x00005fc6 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, //0x00005fd6 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, //0x00005fe6 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, //0x00005ff6 QUAD $0x0000000000000000; WORD $0x0000 // .space 10, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + // // .set L0_6_set_1093, LBB0_1093-LJTI0_6 + // // .set L0_6_set_1051, LBB0_1051-LJTI0_6 + // // .set L0_6_set_1096, LBB0_1096-LJTI0_6 + //0x00006058 LJTI0_6 + 0xc1, 0xee, 0xff, 0xff, //0x00006058 .long L0_6_set_1050 + 0xaa, 0xef, 0xff, 0xff, //0x0000605c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006060 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006064 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006068 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000606c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006070 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006074 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006078 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000607c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006080 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006084 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006088 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000608c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006090 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006094 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006098 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000609c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060a0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060a4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060a8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060ac .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060b0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060b4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060b8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060bc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060c0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060c4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060c8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060cc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060d0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060d4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060d8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060dc .long L0_6_set_1056 + 0xb2, 0xef, 0xff, 0xff, //0x000060e0 .long L0_6_set_1057 + 0xaa, 0xef, 0xff, 0xff, //0x000060e4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060e8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060ec .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060f0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060f4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060f8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000060fc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006100 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006104 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006108 .long L0_6_set_1056 + 0x76, 0xed, 0xff, 0xff, //0x0000610c .long L0_6_set_654 + 0xaa, 0xef, 0xff, 0xff, //0x00006110 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006114 .long L0_6_set_1056 + 0x76, 0xed, 0xff, 0xff, //0x00006118 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x0000611c .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006120 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006124 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006128 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x0000612c .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006130 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006134 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x00006138 .long L0_6_set_654 + 0x76, 0xed, 0xff, 0xff, //0x0000613c .long L0_6_set_654 + 0xaa, 0xef, 0xff, 0xff, //0x00006140 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006144 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006148 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000614c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006150 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006154 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006158 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000615c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006160 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006164 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006168 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000616c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006170 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006174 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006178 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000617c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006180 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006184 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006188 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000618c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006190 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006194 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006198 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000619c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061a0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061a4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061a8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061ac .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061b0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061b4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061b8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061bc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061c0 .long L0_6_set_1056 + 0x9c, 0xf0, 0xff, 0xff, //0x000061c4 .long L0_6_set_1069 + 0xaa, 0xef, 0xff, 0xff, //0x000061c8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061cc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061d0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061d4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061d8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061dc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061e0 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061e4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061e8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061ec .long L0_6_set_1056 + 0x40, 0xf3, 0xff, 0xff, //0x000061f0 .long L0_6_set_1093 + 0xaa, 0xef, 0xff, 0xff, //0x000061f4 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061f8 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x000061fc .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006200 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006204 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006208 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000620c .long L0_6_set_1056 + 0x88, 0xef, 0xff, 0xff, //0x00006210 .long L0_6_set_1051 + 0xaa, 0xef, 0xff, 0xff, //0x00006214 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006218 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000621c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006220 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006224 .long L0_6_set_1056 + 0x88, 0xef, 0xff, 0xff, //0x00006228 .long L0_6_set_1051 + 0xaa, 0xef, 0xff, 0xff, //0x0000622c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006230 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006234 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006238 .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x0000623c .long L0_6_set_1056 + 0xaa, 0xef, 0xff, 0xff, //0x00006240 .long L0_6_set_1056 + 0x58, 0xf3, 0xff, 0xff, //0x00006244 .long L0_6_set_1096 + //0x00006248 .p2align 2, 0x00 + //0x00006248 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00006248 .long 2 + 0x00, 0x00, 0x00, 0x00, //0x0000624c .p2align 4, 0x00 + //0x00006250 __UnquoteTab + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00006250 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00006260 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, //0x00006270 QUAD $0x0000000000220000; QUAD $0x2f00000000000000 // .ascii 16, '\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, //0x00006280 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00006290 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, 0x5c, 0x00, 0x00, 0x00, //0x000062a0 QUAD $0x0000000000000000; QUAD $0x0000005c00000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00' + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, //0x000062b0 QUAD $0x000c000000080000; QUAD $0x000a000000000000 // .ascii 16, '\x00\x00\x08\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\n\x00' + 0x00, 0x00, 0x0d, 0x00, 0x09, 0xff, //0x000062c0 LONG $0x000d0000; WORD $0xff09 // .ascii 6, '\x00\x00\r\x00\t\xff' + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000062c6 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, //0x000062d6 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, //0x000062e6 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, //0x000062f6 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, //0x00006306 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, //0x00006316 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, //0x00006326 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, //0x00006336 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, //0x00006346 QUAD $0x0000000000000000; WORD $0x0000 // .space 10, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' } diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_subr.go index 229d54e17..29ad7f00a 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_array = 15136 + _size__skip_array = 15384 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x38dd, 208}, - {0x38de, 48}, - {0x38e0, 40}, - {0x38e2, 32}, - {0x38e4, 24}, - {0x38e6, 16}, - {0x38e7, 8}, - {0x38eb, 0}, - {0x3b20, 208}, + {0x3a59, 208}, + {0x3a5a, 48}, + {0x3a5c, 40}, + {0x3a5e, 32}, + {0x3a60, 24}, + {0x3a62, 16}, + {0x3a63, 8}, + {0x3a67, 0}, + {0x3c18, 208}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_text_amd64.go index 94393ffc8..89e167bb3 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_array_text_amd64.go @@ -118,4081 +118,4142 @@ var _text_skip_array = []byte{ 0x53, //0x000002cc pushq %rbx 0x48, 0x81, 0xec, 0xa0, 0x00, 0x00, 0x00, //0x000002cd subq $160, %rsp 0x49, 0x89, 0xcb, //0x000002d4 movq %rcx, %r11 - 0x49, 0x89, 0xd7, //0x000002d7 movq %rdx, %r15 - 0x49, 0x89, 0xf5, //0x000002da movq %rsi, %r13 - 0xc5, 0xfa, 0x6f, 0x05, 0x1b, 0xfd, 0xff, 0xff, //0x000002dd vmovdqu $-741(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfa, 0x7f, 0x02, //0x000002e5 vmovdqu %xmm0, (%rdx) - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002e9 movq $-1, %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0xc8, 0xfd, 0xff, 0xff, //0x000002f0 vmovdqu $-568(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xe0, 0xfd, 0xff, 0xff, //0x000002f8 vmovdqu $-544(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xf8, 0xfd, 0xff, 0xff, //0x00000300 vmovdqu $-520(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x10, 0xfe, 0xff, 0xff, //0x00000308 vmovdqu $-496(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000310 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xe3, 0xfe, 0xff, 0xff, //0x00000315 vmovdqu $-285(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xfb, 0xfe, 0xff, 0xff, //0x0000031d vmovdqu $-261(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x13, 0xff, 0xff, 0xff, //0x00000325 vmovdqu $-237(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xab, 0xfe, 0xff, 0xff, //0x0000032d vmovdqu $-341(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x63, 0xff, 0xff, 0xff, //0x00000335 vmovdqu $-157(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x7b, 0xfe, 0xff, 0xff, //0x0000033d vmovdqu $-389(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xf3, 0xfd, 0xff, 0xff, //0x00000345 vmovdqu $-525(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x0b, 0xfe, 0xff, 0xff, //0x0000034d vmovdqu $-501(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x48, 0x89, 0x4c, 0x24, 0x18, //0x00000355 movq %rcx, $24(%rsp) - 0x48, 0x89, 0x7c, 0x24, 0x10, //0x0000035a movq %rdi, $16(%rsp) - 0x48, 0x89, 0x54, 0x24, 0x08, //0x0000035f movq %rdx, $8(%rsp) - 0xe9, 0x77, 0x00, 0x00, 0x00, //0x00000364 jmp LBB0_5 - //0x00000369 LBB0_153 - 0x41, 0x0f, 0xbc, 0xc3, //0x00000369 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000036d addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x00000370 leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00000374 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000378 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000037d movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000382 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00000387 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x0000038b testq %r8, %r8 - 0x0f, 0x8e, 0x98, 0x37, 0x00, 0x00, //0x0000038e jle LBB0_679 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000394 .p2align 4, 0x90 + 0x49, 0x89, 0xf7, //0x000002d7 movq %rsi, %r15 + 0x48, 0x89, 0x7c, 0x24, 0x20, //0x000002da movq %rdi, $32(%rsp) + 0xc5, 0xfa, 0x6f, 0x05, 0x19, 0xfd, 0xff, 0xff, //0x000002df vmovdqu $-743(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0x48, 0x89, 0x54, 0x24, 0x18, //0x000002e7 movq %rdx, $24(%rsp) + 0xc5, 0xfa, 0x7f, 0x02, //0x000002ec vmovdqu %xmm0, (%rdx) + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002f0 movq $-1, %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0xc1, 0xfd, 0xff, 0xff, //0x000002f7 vmovdqu $-575(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xd9, 0xfd, 0xff, 0xff, //0x000002ff vmovdqu $-551(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xf1, 0xfd, 0xff, 0xff, //0x00000307 vmovdqu $-527(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x09, 0xfe, 0xff, 0xff, //0x0000030f vmovdqu $-503(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000317 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xdc, 0xfe, 0xff, 0xff, //0x0000031c vmovdqu $-292(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xf4, 0xfe, 0xff, 0xff, //0x00000324 vmovdqu $-268(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x0c, 0xff, 0xff, 0xff, //0x0000032c vmovdqu $-244(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xa4, 0xfe, 0xff, 0xff, //0x00000334 vmovdqu $-348(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x5c, 0xff, 0xff, 0xff, //0x0000033c vmovdqu $-164(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x74, 0xfe, 0xff, 0xff, //0x00000344 vmovdqu $-396(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xec, 0xfd, 0xff, 0xff, //0x0000034c vmovdqu $-532(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x04, 0xfe, 0xff, 0xff, //0x00000354 vmovdqu $-508(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x48, 0x89, 0x74, 0x24, 0x08, //0x0000035c movq %rsi, $8(%rsp) + 0x48, 0x89, 0x0c, 0x24, //0x00000361 movq %rcx, (%rsp) + 0xe9, 0x96, 0x00, 0x00, 0x00, //0x00000365 jmp LBB0_5 + //0x0000036a LBB0_235 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000036a movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000036f movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000373 cmpq %rcx, %rdx + 0x0f, 0x82, 0x0a, 0x3b, 0x00, 0x00, //0x00000376 jb LBB0_162 + //0x0000037c LBB0_236 + 0x48, 0x01, 0xc8, //0x0000037c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000037f addq $1, %rax + 0x48, 0x85, 0xc0, //0x00000383 testq %rax, %rax + 0x0f, 0x88, 0x35, 0x39, 0x00, 0x00, //0x00000386 js LBB0_702 + //0x0000038c LBB0_237 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000038c movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x00000391 movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x00000394 testq %r9, %r9 + 0x0f, 0x8e, 0x3d, 0x39, 0x00, 0x00, //0x00000397 jle LBB0_475 + 0x90, 0x90, 0x90, //0x0000039d .p2align 4, 0x90 //0x000003a0 LBB0_3 - 0x4d, 0x8b, 0x07, //0x000003a0 movq (%r15), %r8 - 0x4c, 0x89, 0x24, 0x24, //0x000003a3 movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x000003a7 testq %r8, %r8 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000003aa jne LBB0_5 - 0xe9, 0xe0, 0x37, 0x00, 0x00, //0x000003b0 jmp LBB0_711 - //0x000003b5 LBB0_1 - 0x48, 0x89, 0xd1, //0x000003b5 movq %rdx, %rcx - //0x000003b8 LBB0_2 - 0x4c, 0x01, 0xe9, //0x000003b8 addq %r13, %rcx - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000003bb movq $48(%rsp), %r13 - 0x49, 0x89, 0x4d, 0x00, //0x000003c0 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x000003c4 testq %rbx, %rbx - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000003c7 jg LBB0_3 - 0xe9, 0xc3, 0x37, 0x00, 0x00, //0x000003cd jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003d2 .p2align 4, 0x90 - //0x000003e0 LBB0_5 - 0x4d, 0x89, 0xe1, //0x000003e0 movq %r12, %r9 - 0x4c, 0x8b, 0x37, //0x000003e3 movq (%rdi), %r14 - 0x48, 0x8b, 0x5f, 0x08, //0x000003e6 movq $8(%rdi), %rbx - 0x49, 0x8b, 0x75, 0x00, //0x000003ea movq (%r13), %rsi - 0x48, 0x39, 0xde, //0x000003ee cmpq %rbx, %rsi - 0x0f, 0x83, 0x29, 0x00, 0x00, 0x00, //0x000003f1 jae LBB0_10 - 0x41, 0x8a, 0x04, 0x36, //0x000003f7 movb (%r14,%rsi), %al - 0x3c, 0x0d, //0x000003fb cmpb $13, %al - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000003fd je LBB0_10 - 0x3c, 0x20, //0x00000403 cmpb $32, %al - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000405 je LBB0_10 - 0x04, 0xf7, //0x0000040b addb $-9, %al - 0x3c, 0x01, //0x0000040d cmpb $1, %al - 0x0f, 0x86, 0x0b, 0x00, 0x00, 0x00, //0x0000040f jbe LBB0_10 - 0x49, 0x89, 0xf4, //0x00000415 movq %rsi, %r12 - 0xe9, 0x75, 0x01, 0x00, 0x00, //0x00000418 jmp LBB0_35 - 0x90, 0x90, 0x90, //0x0000041d .p2align 4, 0x90 - //0x00000420 LBB0_10 - 0x4c, 0x8d, 0x66, 0x01, //0x00000420 leaq $1(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000424 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000427 jae LBB0_14 - 0x43, 0x8a, 0x14, 0x26, //0x0000042d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000431 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000434 je LBB0_14 - 0x80, 0xfa, 0x20, //0x0000043a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000043d je LBB0_14 - 0x80, 0xc2, 0xf7, //0x00000443 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000446 cmpb $1, %dl - 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x00000449 ja LBB0_35 - 0x90, //0x0000044f .p2align 4, 0x90 - //0x00000450 LBB0_14 - 0x4c, 0x8d, 0x66, 0x02, //0x00000450 leaq $2(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000454 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000457 jae LBB0_18 - 0x43, 0x8a, 0x14, 0x26, //0x0000045d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000461 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000464 je LBB0_18 - 0x80, 0xfa, 0x20, //0x0000046a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000046d je LBB0_18 - 0x80, 0xc2, 0xf7, //0x00000473 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000476 cmpb $1, %dl - 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00000479 ja LBB0_35 - 0x90, //0x0000047f .p2align 4, 0x90 - //0x00000480 LBB0_18 - 0x4c, 0x8d, 0x66, 0x03, //0x00000480 leaq $3(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000484 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000487 jae LBB0_22 - 0x43, 0x8a, 0x14, 0x26, //0x0000048d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000491 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000494 je LBB0_22 - 0x80, 0xfa, 0x20, //0x0000049a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000049d je LBB0_22 - 0x80, 0xc2, 0xf7, //0x000004a3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000004a6 cmpb $1, %dl - 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004a9 ja LBB0_35 - 0x90, //0x000004af .p2align 4, 0x90 - //0x000004b0 LBB0_22 - 0x4c, 0x8d, 0x66, 0x04, //0x000004b0 leaq $4(%rsi), %r12 - 0x48, 0x89, 0xd8, //0x000004b4 movq %rbx, %rax - 0x4c, 0x29, 0xe0, //0x000004b7 subq %r12, %rax - 0x0f, 0x86, 0x4e, 0x36, 0x00, 0x00, //0x000004ba jbe LBB0_675 - 0x48, 0x83, 0xf8, 0x20, //0x000004c0 cmpq $32, %rax - 0x0f, 0x82, 0x69, 0x23, 0x00, 0x00, //0x000004c4 jb LBB0_488 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000004ca movq $-4, %rax - 0x48, 0x29, 0xf0, //0x000004d1 subq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004d4 .p2align 4, 0x90 - //0x000004e0 LBB0_25 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x000004e0 vmovdqu (%r14,%r12), %ymm0 - 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x000004e6 vpshufb %ymm0, %ymm5, %ymm1 - 0xc5, 0xfd, 0x74, 0xc1, //0x000004eb vpcmpeqb %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000004ef vpmovmskb %ymm0, %edx - 0x83, 0xfa, 0xff, //0x000004f3 cmpl $-1, %edx - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000004f6 jne LBB0_34 - 0x49, 0x83, 0xc4, 0x20, //0x000004fc addq $32, %r12 - 0x48, 0x8d, 0x14, 0x03, //0x00000500 leaq (%rbx,%rax), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000504 addq $-32, %rdx - 0x48, 0x83, 0xc0, 0xe0, //0x00000508 addq $-32, %rax - 0x48, 0x83, 0xfa, 0x1f, //0x0000050c cmpq $31, %rdx - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000510 ja LBB0_25 - 0x4d, 0x89, 0xf4, //0x00000516 movq %r14, %r12 - 0x49, 0x29, 0xc4, //0x00000519 subq %rax, %r12 - 0x48, 0x01, 0xd8, //0x0000051c addq %rbx, %rax - 0x48, 0x85, 0xc0, //0x0000051f testq %rax, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000522 je LBB0_33 - //0x00000528 LBB0_28 - 0x4d, 0x8d, 0x04, 0x04, //0x00000528 leaq (%r12,%rax), %r8 - 0x31, 0xd2, //0x0000052c xorl %edx, %edx - 0x90, 0x90, //0x0000052e .p2align 4, 0x90 - //0x00000530 LBB0_29 - 0x41, 0x0f, 0xbe, 0x34, 0x14, //0x00000530 movsbl (%r12,%rdx), %esi - 0x83, 0xfe, 0x20, //0x00000535 cmpl $32, %esi - 0x0f, 0x87, 0x78, 0x1f, 0x00, 0x00, //0x00000538 ja LBB0_676 - 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000053e movabsq $4294977024, %rcx - 0x48, 0x0f, 0xa3, 0xf1, //0x00000548 btq %rsi, %rcx - 0x0f, 0x83, 0x64, 0x1f, 0x00, 0x00, //0x0000054c jae LBB0_676 - 0x48, 0x83, 0xc2, 0x01, //0x00000552 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x00000556 cmpq %rdx, %rax - 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000559 jne LBB0_29 - 0x4d, 0x89, 0xc4, //0x0000055f movq %r8, %r12 - //0x00000562 LBB0_33 - 0x4d, 0x29, 0xf4, //0x00000562 subq %r14, %r12 - 0x49, 0x39, 0xdc, //0x00000565 cmpq %rbx, %r12 - 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x00000568 jb LBB0_35 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x0000056e jmp LBB0_677 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000573 .p2align 4, 0x90 - //0x00000580 LBB0_34 - 0xf7, 0xd2, //0x00000580 notl %edx - 0x44, 0x0f, 0xbc, 0xe2, //0x00000582 bsfl %edx, %r12d - 0x49, 0x29, 0xc4, //0x00000586 subq %rax, %r12 - 0x49, 0x39, 0xdc, //0x00000589 cmpq %rbx, %r12 - 0x0f, 0x83, 0x80, 0x35, 0x00, 0x00, //0x0000058c jae LBB0_677 - //0x00000592 LBB0_35 - 0x49, 0x8d, 0x54, 0x24, 0x01, //0x00000592 leaq $1(%r12), %rdx - 0x49, 0x89, 0x55, 0x00, //0x00000597 movq %rdx, (%r13) - 0x43, 0x0f, 0xbe, 0x04, 0x26, //0x0000059b movsbl (%r14,%r12), %eax - 0x85, 0xc0, //0x000005a0 testl %eax, %eax - 0x0f, 0x84, 0x6a, 0x35, 0x00, 0x00, //0x000005a2 je LBB0_677 - 0x49, 0x8b, 0x37, //0x000005a8 movq (%r15), %rsi - 0x4c, 0x8d, 0x46, 0xff, //0x000005ab leaq $-1(%rsi), %r8 - 0x41, 0x8b, 0x1c, 0xf7, //0x000005af movl (%r15,%rsi,8), %ebx - 0x49, 0x83, 0xf9, 0xff, //0x000005b3 cmpq $-1, %r9 - 0x4d, 0x0f, 0x45, 0xe1, //0x000005b7 cmovneq %r9, %r12 - 0x83, 0xc3, 0xff, //0x000005bb addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x000005be cmpl $5, %ebx - 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x000005c1 ja LBB0_41 - 0x48, 0x8d, 0x15, 0x12, 0x38, 0x00, 0x00, //0x000005c7 leaq $14354(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000005ce movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000005d2 addq %rdx, %rcx - 0xff, 0xe1, //0x000005d5 jmpq *%rcx - //0x000005d7 LBB0_38 - 0x83, 0xf8, 0x2c, //0x000005d7 cmpl $44, %eax - 0x0f, 0x84, 0x41, 0x06, 0x00, 0x00, //0x000005da je LBB0_126 - 0x83, 0xf8, 0x5d, //0x000005e0 cmpl $93, %eax - 0x0f, 0x84, 0x23, 0x06, 0x00, 0x00, //0x000005e3 je LBB0_40 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x000005e9 jmp LBB0_710 - //0x000005ee LBB0_41 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000005ee movq $-1, (%rsp) - 0x4d, 0x89, 0x07, //0x000005f6 movq %r8, (%r15) - 0x83, 0xf8, 0x7b, //0x000005f9 cmpl $123, %eax - 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x000005fc jbe LBB0_67 - 0xe9, 0x86, 0x35, 0x00, 0x00, //0x00000602 jmp LBB0_710 - //0x00000607 LBB0_42 - 0x83, 0xf8, 0x2c, //0x00000607 cmpl $44, %eax - 0x0f, 0x85, 0xf3, 0x05, 0x00, 0x00, //0x0000060a jne LBB0_43 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000610 cmpq $4095, %rsi - 0x0f, 0x8f, 0x02, 0x35, 0x00, 0x00, //0x00000617 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x0000061d leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000621 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000624 movq $3, $8(%r15,%rsi,8) - 0xe9, 0x6e, 0xfd, 0xff, 0xff, //0x0000062d jmp LBB0_3 - //0x00000632 LBB0_44 - 0x3c, 0x22, //0x00000632 cmpb $34, %al - 0x0f, 0x85, 0x53, 0x35, 0x00, 0x00, //0x00000634 jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x04, 0x00, 0x00, 0x00, //0x0000063a movq $4, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000642 testb $64, %r11b - 0x0f, 0x85, 0x2f, 0x07, 0x00, 0x00, //0x00000646 jne LBB0_148 - 0x4d, 0x8b, 0x4d, 0x00, //0x0000064c movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000650 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc3, //0x00000654 movq %r8, %rbx - 0x41, 0xf6, 0xc3, 0x20, //0x00000657 testb $32, %r11b - 0x0f, 0x85, 0xf6, 0x09, 0x00, 0x00, //0x0000065b jne LBB0_190 - 0x4c, 0x29, 0xcb, //0x00000661 subq %r9, %rbx - 0x0f, 0x84, 0xb2, 0x36, 0x00, 0x00, //0x00000664 je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x0000066a cmpq $64, %rbx - 0x0f, 0x82, 0x29, 0x24, 0x00, 0x00, //0x0000066e jb LBB0_504 - 0x4c, 0x89, 0xce, //0x00000674 movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000677 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x0000067a movq $-1, %r11 - 0x4c, 0x89, 0xc9, //0x00000681 movq %r9, %rcx - 0x45, 0x31, 0xd2, //0x00000684 xorl %r10d, %r10d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000687 .p2align 4, 0x90 - //0x00000690 LBB0_50 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000690 vmovdqu (%r14,%rcx), %ymm0 - 0x49, 0x89, 0xcf, //0x00000696 movq %rcx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00000699 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000006a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000006a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000006a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000006ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000006b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000006b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000006b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x000006bc vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe0, 0x20, //0x000006c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000006c4 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000006c7 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x000006cb orq %rcx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000006ce jne LBB0_59 - 0x4d, 0x85, 0xd2, //0x000006d4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x000006d7 jne LBB0_61 - 0x45, 0x31, 0xd2, //0x000006dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000006e0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000006e3 jne LBB0_62 - //0x000006e9 LBB0_53 - 0x48, 0x83, 0xc3, 0xc0, //0x000006e9 addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x000006ed addq $-64, %rsi - 0x4c, 0x89, 0xf9, //0x000006f1 movq %r15, %rcx - 0x48, 0x83, 0xc1, 0x40, //0x000006f4 addq $64, %rcx - 0x48, 0x83, 0xfb, 0x3f, //0x000006f8 cmpq $63, %rbx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000006fc ja LBB0_50 - 0xe9, 0x42, 0x20, 0x00, 0x00, //0x00000702 jmp LBB0_54 - //0x00000707 LBB0_59 - 0x49, 0x83, 0xfb, 0xff, //0x00000707 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_61 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000711 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000715 addq %r15, %r11 - //0x00000718 LBB0_61 - 0x4c, 0x89, 0xd0, //0x00000718 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000071b notq %rax - 0x48, 0x21, 0xd0, //0x0000071e andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00000721 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00000725 orq %r10, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00000728 movq %rcx, (%rsp) - 0x48, 0xf7, 0xd1, //0x0000072c notq %rcx - 0x48, 0x21, 0xd1, //0x0000072f andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000732 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000073c andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x0000073f xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x00000742 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x00000745 setb %r10b - 0x48, 0x01, 0xc9, //0x00000749 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000074c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00000756 xorq %rax, %rcx - 0x48, 0x23, 0x0c, 0x24, //0x00000759 andq (%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x0000075d notq %rcx - 0x48, 0x21, 0xcf, //0x00000760 andq %rcx, %rdi - 0x48, 0x85, 0xff, //0x00000763 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000766 je LBB0_53 - //0x0000076c LBB0_62 - 0x4c, 0x0f, 0xbc, 0xd7, //0x0000076c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000770 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000773 movq %r11, %r15 - 0xe9, 0xa5, 0x0b, 0x00, 0x00, //0x00000776 jmp LBB0_232 - //0x0000077b LBB0_63 - 0x3c, 0x3a, //0x0000077b cmpb $58, %al - 0x0f, 0x85, 0x0a, 0x34, 0x00, 0x00, //0x0000077d jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x00, 0x00, 0x00, 0x00, //0x00000783 movq $0, (%r15,%rsi,8) - 0xe9, 0x10, 0xfc, 0xff, 0xff, //0x0000078b jmp LBB0_3 - //0x00000790 LBB0_65 - 0x3c, 0x5d, //0x00000790 cmpb $93, %al - 0x0f, 0x84, 0x74, 0x04, 0x00, 0x00, //0x00000792 je LBB0_40 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000798 movq $-1, (%rsp) - 0x49, 0xc7, 0x04, 0xf7, 0x01, 0x00, 0x00, 0x00, //0x000007a0 movq $1, (%r15,%rsi,8) - 0x83, 0xf8, 0x7b, //0x000007a8 cmpl $123, %eax - 0x0f, 0x87, 0xdc, 0x33, 0x00, 0x00, //0x000007ab ja LBB0_710 - //0x000007b1 LBB0_67 - 0x89, 0xc0, //0x000007b1 movl %eax, %eax - 0x48, 0x8d, 0x0d, 0x3e, 0x36, 0x00, 0x00, //0x000007b3 leaq $13886(%rip), %rcx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x04, 0x81, //0x000007ba movslq (%rcx,%rax,4), %rax - 0x48, 0x01, 0xc8, //0x000007be addq %rcx, %rax - 0xff, 0xe0, //0x000007c1 jmpq *%rax - //0x000007c3 LBB0_70 - 0x4c, 0x8b, 0x47, 0x08, //0x000007c3 movq $8(%rdi), %r8 - 0x49, 0x8b, 0x5d, 0x00, //0x000007c7 movq (%r13), %rbx - 0x41, 0xf6, 0xc3, 0x40, //0x000007cb testb $64, %r11b - 0x0f, 0x85, 0x67, 0x06, 0x00, 0x00, //0x000007cf jne LBB0_159 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000007d5 movq %r13, $48(%rsp) - 0x48, 0x8d, 0x53, 0xff, //0x000007da leaq $-1(%rbx), %rdx - 0x49, 0x29, 0xd0, //0x000007de subq %rdx, %r8 - 0x0f, 0x84, 0x78, 0x33, 0x00, 0x00, //0x000007e1 je LBB0_682 - 0x49, 0x8d, 0x04, 0x1e, //0x000007e7 leaq (%r14,%rbx), %rax - 0x48, 0x83, 0xc0, 0xff, //0x000007eb addq $-1, %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000007ef movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000007f4 cmpb $48, (%rax) - 0x48, 0x89, 0x14, 0x24, //0x000007f7 movq %rdx, (%rsp) - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000007fb jne LBB0_76 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000801 movl $1, %r13d - 0x49, 0x83, 0xf8, 0x01, //0x00000807 cmpq $1, %r8 - 0x0f, 0x84, 0xa4, 0xfb, 0xff, 0xff, //0x0000080b je LBB0_1 - 0x41, 0x8a, 0x0c, 0x1e, //0x00000811 movb (%r14,%rbx), %cl - 0x80, 0xc1, 0xd2, //0x00000815 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000818 cmpb $55, %cl - 0x0f, 0x87, 0x94, 0xfb, 0xff, 0xff, //0x0000081b ja LBB0_1 - 0x0f, 0xb6, 0xc1, //0x00000821 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000824 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000082e btq %rax, %rcx - 0x48, 0x89, 0xd1, //0x00000832 movq %rdx, %rcx - 0x0f, 0x83, 0x7d, 0xfb, 0xff, 0xff, //0x00000835 jae LBB0_2 - //0x0000083b LBB0_76 - 0x48, 0x89, 0x5c, 0x24, 0x20, //0x0000083b movq %rbx, $32(%rsp) - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000840 movq $-1, %r10 - 0x49, 0x83, 0xf8, 0x20, //0x00000847 cmpq $32, %r8 - 0x0f, 0x82, 0x21, 0x22, 0x00, 0x00, //0x0000084b jb LBB0_502 - 0x45, 0x31, 0xed, //0x00000851 xorl %r13d, %r13d - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000854 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000085b movq $-1, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000864 .p2align 4, 0x90 - //0x00000870 LBB0_78 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00000870 movq $56(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x28, //0x00000875 vmovdqu (%rax,%r13), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x0000087b vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x00000880 vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00000884 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x00000888 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xcc, 0xf9, 0xff, 0xff, //0x0000088c vpcmpeqb $-1588(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x00000894 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x00000898 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xdc, 0xf9, 0xff, 0xff, //0x0000089c vpcmpeqb $-1572(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000008a4 vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000008a8 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xf3, //0x000008ac vpmovmskb %ymm3, %esi - 0xc5, 0x7d, 0xd7, 0xfa, //0x000008b0 vpmovmskb %ymm2, %r15d - 0xc5, 0xf5, 0xeb, 0xc0, //0x000008b4 vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000008b8 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000008bc vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000008c0 vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000008c4 notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000008c7 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000008cb cmpl $32, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000008ce je LBB0_80 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000008d4 movl $-1, %eax - 0xd3, 0xe0, //0x000008d9 shll %cl, %eax - 0xf7, 0xd0, //0x000008db notl %eax - 0x21, 0xc2, //0x000008dd andl %eax, %edx - 0x21, 0xc6, //0x000008df andl %eax, %esi - 0x44, 0x21, 0xf8, //0x000008e1 andl %r15d, %eax - 0x41, 0x89, 0xc7, //0x000008e4 movl %eax, %r15d - //0x000008e7 LBB0_80 - 0x8d, 0x5a, 0xff, //0x000008e7 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x000008ea andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xcc, 0xf8, 0xff, 0xff, //0x000008ec vmovdqu $-1844(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x4e, 0x1c, 0x00, 0x00, //0x000008f4 jne LBB0_464 - 0x8d, 0x5e, 0xff, //0x000008fa leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x000008fd andl %esi, %ebx - 0x0f, 0x85, 0x43, 0x1c, 0x00, 0x00, //0x000008ff jne LBB0_464 - 0x41, 0x8d, 0x5f, 0xff, //0x00000905 leal $-1(%r15), %ebx - 0x44, 0x21, 0xfb, //0x00000909 andl %r15d, %ebx - 0x0f, 0x85, 0x36, 0x1c, 0x00, 0x00, //0x0000090c jne LBB0_464 - 0x85, 0xd2, //0x00000912 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000914 je LBB0_86 - 0x0f, 0xbc, 0xd2, //0x0000091a bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000091d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xde, 0x1d, 0x00, 0x00, //0x00000923 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000929 addq %r13, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000092c movq %rdx, $40(%rsp) - //0x00000931 LBB0_86 - 0x85, 0xf6, //0x00000931 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000933 je LBB0_89 - 0x0f, 0xbc, 0xd6, //0x00000939 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x0000093c cmpq $-1, %r9 - 0x0f, 0x85, 0xc1, 0x1d, 0x00, 0x00, //0x00000940 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000946 addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x00000949 movq %rdx, %r9 - //0x0000094c LBB0_89 - 0x45, 0x85, 0xff, //0x0000094c testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000094f je LBB0_92 - 0x41, 0x0f, 0xbc, 0xd7, //0x00000955 bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000959 cmpq $-1, %r10 - 0x0f, 0x85, 0xa4, 0x1d, 0x00, 0x00, //0x0000095d jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000963 addq %r13, %rdx - 0x49, 0x89, 0xd2, //0x00000966 movq %rdx, %r10 - //0x00000969 LBB0_92 - 0x83, 0xf9, 0x20, //0x00000969 cmpl $32, %ecx - 0x0f, 0x85, 0x39, 0x08, 0x00, 0x00, //0x0000096c jne LBB0_210 - 0x49, 0x83, 0xc0, 0xe0, //0x00000972 addq $-32, %r8 - 0x49, 0x83, 0xc5, 0x20, //0x00000976 addq $32, %r13 - 0x49, 0x83, 0xf8, 0x1f, //0x0000097a cmpq $31, %r8 - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x0000097e ja LBB0_78 - 0xc5, 0xf8, 0x77, //0x00000984 vzeroupper - 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xf8, 0xff, 0xff, //0x00000987 vmovdqu $-1967(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xa9, 0xf8, 0xff, 0xff, //0x0000098f vmovdqu $-1879(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x81, 0xf8, 0xff, 0xff, //0x00000997 vmovdqu $-1919(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x59, 0xf8, 0xff, 0xff, //0x0000099f vmovdqu $-1959(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xb1, 0xf7, 0xff, 0xff, //0x000009a7 vmovdqu $-2127(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x89, 0xf7, 0xff, 0xff, //0x000009af vmovdqu $-2167(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000009b7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x05, 0x5c, 0xf7, 0xff, 0xff, //0x000009bc vmovdqu $-2212(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x34, 0xf7, 0xff, 0xff, //0x000009c4 vmovdqu $-2252(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xf7, 0xff, 0xff, //0x000009cc vmovdqu $-2292(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0xe4, 0xf6, 0xff, 0xff, //0x000009d4 vmovdqu $-2332(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0x4c, 0x03, 0x6c, 0x24, 0x38, //0x000009dc addq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x000009e1 cmpq $16, %r8 - 0x0f, 0x82, 0x57, 0x01, 0x00, 0x00, //0x000009e5 jb LBB0_113 - //0x000009eb LBB0_95 - 0x4c, 0x89, 0xef, //0x000009eb movq %r13, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x20, //0x000009ee subq $32(%rsp), %rdi - 0x4c, 0x29, 0xf7, //0x000009f3 subq %r14, %rdi - 0x48, 0x83, 0xc7, 0x01, //0x000009f6 addq $1, %rdi - 0x45, 0x31, 0xff, //0x000009fa xorl %r15d, %r15d - 0x90, 0x90, 0x90, //0x000009fd .p2align 4, 0x90 - //0x00000a00 LBB0_96 - 0xc4, 0x81, 0x7a, 0x6f, 0x44, 0x3d, 0x00, //0x00000a00 vmovdqu (%r13,%r15), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x31, 0xf6, 0xff, 0xff, //0x00000a07 vpcmpgtb $-2511(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a0f vmovdqu $-2503(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00000a17 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00000a1b vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a1f vpcmpeqb $-2503(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x41, 0xf6, 0xff, 0xff, //0x00000a27 vpcmpeqb $-2495(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00000a2f vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0xe5, 0xf5, 0xff, 0xff, //0x00000a33 vpand $-2587(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x3d, 0xf6, 0xff, 0xff, //0x00000a3b vpcmpeqb $-2499(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x45, 0xf6, 0xff, 0xff, //0x00000a43 vpcmpeqb $-2491(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00000a4b vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00000a4f vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00000a53 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0xf9, 0xd7, 0xd0, //0x00000a57 vpmovmskb %xmm0, %edx - 0xc5, 0x79, 0xd7, 0xdb, //0x00000a5b vpmovmskb %xmm3, %r11d - 0xc5, 0xf9, 0xd7, 0xf2, //0x00000a5f vpmovmskb %xmm2, %esi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00000a63 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x00000a67 notl %eax - 0x0f, 0xbc, 0xc8, //0x00000a69 bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00000a6c cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000a6f je LBB0_98 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000a75 movl $-1, %eax - 0xd3, 0xe0, //0x00000a7a shll %cl, %eax - 0xf7, 0xd0, //0x00000a7c notl %eax - 0x21, 0xc2, //0x00000a7e andl %eax, %edx - 0x41, 0x21, 0xc3, //0x00000a80 andl %eax, %r11d - 0x21, 0xf0, //0x00000a83 andl %esi, %eax - 0x89, 0xc6, //0x00000a85 movl %eax, %esi - //0x00000a87 LBB0_98 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xf8, 0xff, 0xff, //0x00000a87 vmovdqu $-2031(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xf7, 0xff, 0xff, //0x00000a8f vmovdqu $-2263(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x8d, 0x5a, 0xff, //0x00000a97 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00000a9a andl %edx, %ebx - 0x0f, 0x85, 0x62, 0x1d, 0x00, 0x00, //0x00000a9c jne LBB0_486 - 0x41, 0x8d, 0x5b, 0xff, //0x00000aa2 leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000aa6 andl %r11d, %ebx - 0x0f, 0x85, 0x55, 0x1d, 0x00, 0x00, //0x00000aa9 jne LBB0_486 - 0x8d, 0x5e, 0xff, //0x00000aaf leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000ab2 andl %esi, %ebx - 0x0f, 0x85, 0x4a, 0x1d, 0x00, 0x00, //0x00000ab4 jne LBB0_486 - 0x85, 0xd2, //0x00000aba testl %edx, %edx - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000abc je LBB0_104 - 0x0f, 0xbc, 0xd2, //0x00000ac2 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000ac5 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x73, 0x1d, 0x00, 0x00, //0x00000acb jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000ad1 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000ad4 addq %r15, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00000ad7 movq %rdx, $40(%rsp) - //0x00000adc LBB0_104 - 0x45, 0x85, 0xdb, //0x00000adc testl %r11d, %r11d - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000adf je LBB0_107 - 0x41, 0x0f, 0xbc, 0xd3, //0x00000ae5 bsfl %r11d, %edx - 0x49, 0x83, 0xf9, 0xff, //0x00000ae9 cmpq $-1, %r9 - 0x0f, 0x85, 0x51, 0x1d, 0x00, 0x00, //0x00000aed jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000af3 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000af6 addq %r15, %rdx - 0x49, 0x89, 0xd1, //0x00000af9 movq %rdx, %r9 - //0x00000afc LBB0_107 - 0x85, 0xf6, //0x00000afc testl %esi, %esi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000afe je LBB0_110 - 0x0f, 0xbc, 0xd6, //0x00000b04 bsfl %esi, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000b07 cmpq $-1, %r10 - 0x0f, 0x85, 0x33, 0x1d, 0x00, 0x00, //0x00000b0b jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000b11 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000b14 addq %r15, %rdx - 0x49, 0x89, 0xd2, //0x00000b17 movq %rdx, %r10 - //0x00000b1a LBB0_110 - 0x83, 0xf9, 0x10, //0x00000b1a cmpl $16, %ecx - 0x0f, 0x85, 0xbe, 0x0a, 0x00, 0x00, //0x00000b1d jne LBB0_277 - 0x49, 0x83, 0xc0, 0xf0, //0x00000b23 addq $-16, %r8 - 0x49, 0x83, 0xc7, 0x10, //0x00000b27 addq $16, %r15 - 0x49, 0x83, 0xf8, 0x0f, //0x00000b2b cmpq $15, %r8 - 0x0f, 0x87, 0xcb, 0xfe, 0xff, 0xff, //0x00000b2f ja LBB0_96 - 0x4d, 0x01, 0xfd, //0x00000b35 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000b38 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00000b3d movq $16(%rsp), %rdi - //0x00000b42 LBB0_113 - 0x4d, 0x85, 0xc0, //0x00000b42 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x25, 0x53, 0xf7, 0xff, 0xff, //0x00000b45 vmovdqu $-2221(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x84, 0xa8, 0x0a, 0x00, 0x00, //0x00000b4d je LBB0_279 - 0x4f, 0x8d, 0x3c, 0x28, //0x00000b53 leaq (%r8,%r13), %r15 - 0x4c, 0x89, 0xee, //0x00000b57 movq %r13, %rsi - 0x48, 0x2b, 0x74, 0x24, 0x20, //0x00000b5a subq $32(%rsp), %rsi - 0x4c, 0x29, 0xf6, //0x00000b5f subq %r14, %rsi - 0x48, 0x83, 0xc6, 0x01, //0x00000b62 addq $1, %rsi - 0x31, 0xc9, //0x00000b66 xorl %ecx, %ecx - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xf6, 0xff, 0xff, //0x00000b68 vmovdqu $-2480(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00000b70 jmp LBB0_118 - //0x00000b75 LBB0_115 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000b75 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x8f, 0x1c, 0x00, 0x00, //0x00000b7b jne LBB0_487 - 0x48, 0x8d, 0x04, 0x0e, //0x00000b81 leaq (%rsi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x00000b85 movq %rax, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b8a .p2align 4, 0x90 - //0x00000b90 LBB0_117 - 0x48, 0x83, 0xc1, 0x01, //0x00000b90 addq $1, %rcx - 0x49, 0x39, 0xc8, //0x00000b94 cmpq %rcx, %r8 - 0x0f, 0x84, 0x2d, 0x19, 0x00, 0x00, //0x00000b97 je LBB0_457 - //0x00000b9d LBB0_118 - 0x41, 0x0f, 0xbe, 0x54, 0x0d, 0x00, //0x00000b9d movsbl (%r13,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00000ba3 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00000ba6 cmpl $10, %eax - 0x0f, 0x82, 0xe1, 0xff, 0xff, 0xff, //0x00000ba9 jb LBB0_117 - 0x8d, 0x5a, 0xd5, //0x00000baf leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00000bb2 cmpl $26, %ebx - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000bb5 ja LBB0_123 - 0x48, 0x8d, 0x15, 0x92, 0x34, 0x00, 0x00, //0x00000bbb leaq $13458(%rip), %rdx /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00000bc2 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00000bc6 addq %rdx, %rax - 0xff, 0xe0, //0x00000bc9 jmpq *%rax - //0x00000bcb LBB0_121 - 0x49, 0x83, 0xfa, 0xff, //0x00000bcb cmpq $-1, %r10 - 0x0f, 0x85, 0x3b, 0x1c, 0x00, 0x00, //0x00000bcf jne LBB0_487 - 0x4c, 0x8d, 0x14, 0x0e, //0x00000bd5 leaq (%rsi,%rcx), %r10 - 0xe9, 0xb2, 0xff, 0xff, 0xff, //0x00000bd9 jmp LBB0_117 - //0x00000bde LBB0_123 - 0x83, 0xfa, 0x65, //0x00000bde cmpl $101, %edx - 0x0f, 0x85, 0x11, 0x0a, 0x00, 0x00, //0x00000be1 jne LBB0_278 - //0x00000be7 LBB0_124 - 0x49, 0x83, 0xf9, 0xff, //0x00000be7 cmpq $-1, %r9 - 0x0f, 0x85, 0x1f, 0x1c, 0x00, 0x00, //0x00000beb jne LBB0_487 - 0x4c, 0x8d, 0x0c, 0x0e, //0x00000bf1 leaq (%rsi,%rcx), %r9 - 0xe9, 0x96, 0xff, 0xff, 0xff, //0x00000bf5 jmp LBB0_117 - //0x00000bfa LBB0_68 - 0x83, 0xf8, 0x22, //0x00000bfa cmpl $34, %eax - 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bfd je LBB0_130 - //0x00000c03 LBB0_43 - 0x83, 0xf8, 0x7d, //0x00000c03 cmpl $125, %eax - 0x0f, 0x85, 0x81, 0x2f, 0x00, 0x00, //0x00000c06 jne LBB0_710 - //0x00000c0c LBB0_40 - 0x4d, 0x89, 0x07, //0x00000c0c movq %r8, (%r15) - 0x4c, 0x89, 0x24, 0x24, //0x00000c0f movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x00000c13 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0xf7, 0xff, 0xff, //0x00000c16 jne LBB0_5 - 0xe9, 0x74, 0x2f, 0x00, 0x00, //0x00000c1c jmp LBB0_711 - //0x00000c21 LBB0_126 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000c21 cmpq $4095, %rsi - 0x0f, 0x8f, 0xf1, 0x2e, 0x00, 0x00, //0x00000c28 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x00000c2e leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000c32 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000c35 movq $0, $8(%r15,%rsi,8) - 0xe9, 0x5d, 0xf7, 0xff, 0xff, //0x00000c3e jmp LBB0_3 - //0x00000c43 LBB0_130 - 0x49, 0xc7, 0x04, 0xf7, 0x02, 0x00, 0x00, 0x00, //0x00000c43 movq $2, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000c4b testb $64, %r11b - 0x0f, 0x85, 0x17, 0x03, 0x00, 0x00, //0x00000c4f jne LBB0_179 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000c55 movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000c59 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc1, //0x00000c5d movq %r8, %rcx - 0x41, 0xf6, 0xc3, 0x20, //0x00000c60 testb $32, %r11b - 0x0f, 0x85, 0x54, 0x05, 0x00, 0x00, //0x00000c64 jne LBB0_211 - 0x4c, 0x29, 0xc9, //0x00000c6a subq %r9, %rcx - 0x0f, 0x84, 0xa9, 0x30, 0x00, 0x00, //0x00000c6d je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x00000c73 cmpq $64, %rcx - 0x0f, 0x82, 0xc8, 0x1e, 0x00, 0x00, //0x00000c77 jb LBB0_511 - 0x4c, 0x89, 0xce, //0x00000c7d movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000c80 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000c83 movq $-1, %r11 - 0x4c, 0x89, 0xcb, //0x00000c8a movq %r9, %rbx - 0x45, 0x31, 0xd2, //0x00000c8d xorl %r10d, %r10d - //0x00000c90 .p2align 4, 0x90 - //0x00000c90 LBB0_135 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000c90 vmovdqu (%r14,%rbx), %ymm0 - 0x49, 0x89, 0xdf, //0x00000c96 movq %rbx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x1e, 0x20, //0x00000c99 vmovdqu $32(%r14,%rbx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00000ca0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00000ca4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00000ca8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00000cac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x00000cb0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00000cb4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x00000cb8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000cbc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x00000cc0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00000cc4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00000cc7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x00000ccb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x00000cce jne LBB0_144 - 0x4d, 0x85, 0xd2, //0x00000cd4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x00000cd7 jne LBB0_146 - 0x45, 0x31, 0xd2, //0x00000cdd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x00000ce0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00000ce3 jne LBB0_147 - //0x00000ce9 LBB0_138 - 0x48, 0x83, 0xc1, 0xc0, //0x00000ce9 addq $-64, %rcx - 0x48, 0x83, 0xc6, 0xc0, //0x00000ced addq $-64, %rsi - 0x4c, 0x89, 0xfb, //0x00000cf1 movq %r15, %rbx - 0x48, 0x83, 0xc3, 0x40, //0x00000cf4 addq $64, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x00000cf8 cmpq $63, %rcx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x00000cfc ja LBB0_135 - 0xe9, 0x6f, 0x1b, 0x00, 0x00, //0x00000d02 jmp LBB0_139 - //0x00000d07 LBB0_144 - 0x49, 0x83, 0xfb, 0xff, //0x00000d07 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000d0b jne LBB0_146 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000d11 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000d15 addq %r15, %r11 - //0x00000d18 LBB0_146 - 0x4c, 0x89, 0xd0, //0x00000d18 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00000d1b notq %rax - 0x48, 0x21, 0xd0, //0x00000d1e andq %rdx, %rax - 0x48, 0x8d, 0x1c, 0x00, //0x00000d21 leaq (%rax,%rax), %rbx - 0x4c, 0x09, 0xd3, //0x00000d25 orq %r10, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00000d28 movq %rbx, (%rsp) - 0x48, 0xf7, 0xd3, //0x00000d2c notq %rbx - 0x48, 0x21, 0xd3, //0x00000d2f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d32 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x00000d3c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x00000d3f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00000d42 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00000d45 setb %r10b - 0x48, 0x01, 0xdb, //0x00000d49 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000d4c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00000d56 xorq %rax, %rbx - 0x48, 0x23, 0x1c, 0x24, //0x00000d59 andq (%rsp), %rbx - 0x48, 0xf7, 0xd3, //0x00000d5d notq %rbx - 0x48, 0x21, 0xdf, //0x00000d60 andq %rbx, %rdi - 0x48, 0x85, 0xff, //0x00000d63 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000d66 je LBB0_138 - //0x00000d6c LBB0_147 - 0x4c, 0x0f, 0xbc, 0xd7, //0x00000d6c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000d70 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000d73 movq %r11, %r15 - 0xe9, 0x11, 0x0a, 0x00, 0x00, //0x00000d76 jmp LBB0_298 - //0x00000d7b LBB0_148 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000d7b movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000d83 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000d87 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000d8b leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000d8f subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000d92 cmpq $32, %r10 - 0x0f, 0x8c, 0x9e, 0x17, 0x00, 0x00, //0x00000d96 jl LBB0_158 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000d9c movl $32, %ecx - 0x31, 0xf6, //0x00000da1 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000da3 xorl %r15d, %r15d - 0xe9, 0x59, 0x00, 0x00, 0x00, //0x00000da6 jmp LBB0_150 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000dab .p2align 4, 0x90 - //0x00000db0 LBB0_154 - 0x44, 0x89, 0xfa, //0x00000db0 movl %r15d, %edx - 0xf7, 0xd2, //0x00000db3 notl %edx - 0x21, 0xda, //0x00000db5 andl %ebx, %edx - 0x8d, 0x04, 0x12, //0x00000db7 leal (%rdx,%rdx), %eax - 0x44, 0x09, 0xf8, //0x00000dba orl %r15d, %eax - 0x89, 0xc7, //0x00000dbd movl %eax, %edi - 0xf7, 0xd7, //0x00000dbf notl %edi - 0x21, 0xdf, //0x00000dc1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000dc3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000dc9 xorl %r15d, %r15d - 0x01, 0xd7, //0x00000dcc addl %edx, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000dce setb %r15b - 0x01, 0xff, //0x00000dd2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000dd4 xorl $1431655765, %edi - 0x21, 0xc7, //0x00000dda andl %eax, %edi - 0xf7, 0xd7, //0x00000ddc notl %edi - 0x41, 0x21, 0xfb, //0x00000dde andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000de1 testq %r11, %r11 - 0x0f, 0x85, 0x7f, 0xf5, 0xff, 0xff, //0x00000de4 jne LBB0_153 - //0x00000dea LBB0_155 - 0x48, 0x83, 0xc6, 0x20, //0x00000dea addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000dee leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000df2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000df6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000dfa cmpq $63, %rax - 0x0f, 0x8e, 0x18, 0x17, 0x00, 0x00, //0x00000dfe jle LBB0_156 - //0x00000e04 LBB0_150 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000e04 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000e0a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000e0e vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00000e12 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000e16 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00000e1a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00000e1c jne LBB0_154 - 0x4d, 0x85, 0xff, //0x00000e22 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00000e25 jne LBB0_154 - 0x45, 0x31, 0xff, //0x00000e2b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x00000e2e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000e31 je LBB0_155 - 0xe9, 0x2d, 0xf5, 0xff, 0xff, //0x00000e37 jmp LBB0_153 - //0x00000e3c LBB0_159 - 0x4c, 0x89, 0xc6, //0x00000e3c movq %r8, %rsi - 0x48, 0x29, 0xde, //0x00000e3f subq %rbx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x00000e42 cmpq $32, %rsi - 0x0f, 0x82, 0x13, 0x1c, 0x00, 0x00, //0x00000e46 jb LBB0_501 - 0x48, 0x89, 0xda, //0x00000e4c movq %rbx, %rdx - 0x48, 0xf7, 0xda, //0x00000e4f negq %rdx - 0x48, 0x89, 0xd9, //0x00000e52 movq %rbx, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e55 .p2align 4, 0x90 - //0x00000e60 LBB0_161 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000e60 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x00000e66 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x00000e6a vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0x2a, 0xf3, 0xff, 0xff, //0x00000e6e vpcmpeqb $-3286(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x00000e76 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00000e7a vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x00000e7e testl %esi, %esi - 0x0f, 0x85, 0xce, 0x00, 0x00, 0x00, //0x00000e80 jne LBB0_175 - 0x48, 0x83, 0xc1, 0x20, //0x00000e86 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x10, //0x00000e8a leaq (%r8,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000e8e addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00000e92 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00000e96 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x00000e9a ja LBB0_161 - 0x4c, 0x89, 0xf1, //0x00000ea0 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00000ea3 subq %rdx, %rcx - 0x49, 0x01, 0xd0, //0x00000ea6 addq %rdx, %r8 - 0x4c, 0x89, 0xc6, //0x00000ea9 movq %r8, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x00000eac cmpq $16, %rsi - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00000eb0 jb LBB0_167 - //0x00000eb6 LBB0_164 - 0x4c, 0x89, 0xf2, //0x00000eb6 movq %r14, %rdx - 0x48, 0x29, 0xca, //0x00000eb9 subq %rcx, %rdx - //0x00000ebc LBB0_165 - 0xc5, 0xfa, 0x6f, 0x01, //0x00000ebc vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0x48, 0xf1, 0xff, 0xff, //0x00000ec0 vpcmpeqb $-3768(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0x50, 0xf1, 0xff, 0xff, //0x00000ec8 vpand $-3760(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x58, 0xf1, 0xff, 0xff, //0x00000ed0 vpcmpeqb $-3752(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x00000ed8 vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00000edc vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00000ee0 testl %eax, %eax - 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x00000ee2 jne LBB0_465 - 0x48, 0x83, 0xc1, 0x10, //0x00000ee8 addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00000eec addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00000ef0 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00000ef4 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000ef8 ja LBB0_165 - //0x00000efe LBB0_167 - 0x48, 0x89, 0xd8, //0x00000efe movq %rbx, %rax - 0xc5, 0x7d, 0x7f, 0xe1, //0x00000f01 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00000f05 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000f09 vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x00000f0e testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000f11 je LBB0_174 - 0x48, 0x8d, 0x3c, 0x31, //0x00000f17 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x00000f1b xorl %edx, %edx - //0x00000f1d LBB0_169 - 0x0f, 0xb6, 0x1c, 0x11, //0x00000f1d movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000f21 cmpb $44, %bl - 0x0f, 0x84, 0xb0, 0x1b, 0x00, 0x00, //0x00000f24 je LBB0_507 - 0x80, 0xfb, 0x7d, //0x00000f2a cmpb $125, %bl - 0x0f, 0x84, 0xa7, 0x1b, 0x00, 0x00, //0x00000f2d je LBB0_507 - 0x80, 0xfb, 0x5d, //0x00000f33 cmpb $93, %bl - 0x0f, 0x84, 0x9e, 0x1b, 0x00, 0x00, //0x00000f36 je LBB0_507 - 0x48, 0x83, 0xc2, 0x01, //0x00000f3c addq $1, %rdx - 0x48, 0x39, 0xd6, //0x00000f40 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000f43 jne LBB0_169 - 0x48, 0x89, 0xf9, //0x00000f49 movq %rdi, %rcx - //0x00000f4c LBB0_174 - 0x4c, 0x29, 0xf1, //0x00000f4c subq %r14, %rcx - 0xe9, 0x8c, 0x1b, 0x00, 0x00, //0x00000f4f jmp LBB0_508 - //0x00000f54 LBB0_175 - 0x0f, 0xbc, 0xce, //0x00000f54 bsfl %esi, %ecx - //0x00000f57 LBB0_176 - 0x48, 0x29, 0xd1, //0x00000f57 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00000f5a movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00000f5e testq %rbx, %rbx - 0x0f, 0x8f, 0x39, 0xf4, 0xff, 0xff, //0x00000f61 jg LBB0_3 - 0xe9, 0xff, 0x2b, 0x00, 0x00, //0x00000f67 jmp LBB0_178 - //0x00000f6c LBB0_179 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000f6c movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000f74 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000f78 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000f7c leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000f80 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000f83 cmpq $32, %r10 - 0x0f, 0x8c, 0xae, 0x17, 0x00, 0x00, //0x00000f87 jl LBB0_189 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000f8d movl $32, %ecx - 0x31, 0xf6, //0x00000f92 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000f94 xorl %r15d, %r15d - 0xe9, 0x58, 0x00, 0x00, 0x00, //0x00000f97 jmp LBB0_181 - 0x90, 0x90, 0x90, 0x90, //0x00000f9c .p2align 4, 0x90 - //0x00000fa0 LBB0_185 - 0x44, 0x89, 0xf8, //0x00000fa0 movl %r15d, %eax - 0xf7, 0xd0, //0x00000fa3 notl %eax - 0x21, 0xd8, //0x00000fa5 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00000fa7 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x00000faa orl %r15d, %edx - 0x89, 0xd7, //0x00000fad movl %edx, %edi - 0xf7, 0xd7, //0x00000faf notl %edi - 0x21, 0xdf, //0x00000fb1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000fb9 xorl %r15d, %r15d - 0x01, 0xc7, //0x00000fbc addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000fbe setb %r15b - 0x01, 0xff, //0x00000fc2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000fc4 xorl $1431655765, %edi - 0x21, 0xd7, //0x00000fca andl %edx, %edi - 0xf7, 0xd7, //0x00000fcc notl %edi - 0x41, 0x21, 0xfb, //0x00000fce andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000fd1 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000fd4 jne LBB0_184 - //0x00000fda LBB0_186 - 0x48, 0x83, 0xc6, 0x20, //0x00000fda addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000fde leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000fe2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000fe6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000fea cmpq $63, %rax - 0x0f, 0x8e, 0x29, 0x17, 0x00, 0x00, //0x00000fee jle LBB0_187 - //0x00000ff4 LBB0_181 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000ff4 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000ffa vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000ffe vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00001002 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001006 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x0000100a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000100c jne LBB0_185 - 0x4d, 0x85, 0xff, //0x00001012 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00001015 jne LBB0_185 - 0x45, 0x31, 0xff, //0x0000101b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x0000101e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00001021 je LBB0_186 - //0x00001027 LBB0_184 - 0x41, 0x0f, 0xbc, 0xc3, //0x00001027 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000102b addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x0000102e leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00001032 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001036 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000103b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001040 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00001045 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00001049 testq %r8, %r8 - 0x0f, 0x8f, 0x5f, 0x07, 0x00, 0x00, //0x0000104c jg LBB0_300 - 0xe9, 0xd5, 0x2a, 0x00, 0x00, //0x00001052 jmp LBB0_679 - //0x00001057 LBB0_190 - 0x4c, 0x29, 0xcb, //0x00001057 subq %r9, %rbx - 0x0f, 0x84, 0xbc, 0x2c, 0x00, 0x00, //0x0000105a je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x00001060 cmpq $64, %rbx - 0x0f, 0x82, 0x53, 0x1a, 0x00, 0x00, //0x00001064 jb LBB0_506 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000106a movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x00001071 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x00001074 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001077 .p2align 4, 0x90 - //0x00001080 LBB0_193 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x00001080 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x00001086 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000108d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00001091 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00001095 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001099 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000109d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x000010a1 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x000010a5 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x000010a9 vpmovmskb %ymm2, %ecx - 0xc5, 0xbd, 0x64, 0xd1, //0x000010ad vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000010b1 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x000010b6 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000010ba vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x000010be shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000010c2 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000010c5 shlq $32, %rcx - 0x48, 0xc1, 0xe6, 0x20, //0x000010c9 shlq $32, %rsi - 0x48, 0x09, 0xca, //0x000010cd orq %rcx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000010d0 jne LBB0_204 - 0x4d, 0x85, 0xdb, //0x000010d6 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x000010d9 jne LBB0_206 - 0x45, 0x31, 0xdb, //0x000010df xorl %r11d, %r11d - //0x000010e2 LBB0_196 - 0xc5, 0xbd, 0x64, 0xc8, //0x000010e2 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000010e6 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000010eb vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000010ef vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x000010f3 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x000010f6 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000010f9 jne LBB0_207 - 0x48, 0x85, 0xf6, //0x000010ff testq %rsi, %rsi - 0x0f, 0x85, 0xac, 0x2a, 0x00, 0x00, //0x00001102 jne LBB0_699 - 0x48, 0x83, 0xc3, 0xc0, //0x00001108 addq $-64, %rbx - 0x49, 0x83, 0xc2, 0x40, //0x0000110c addq $64, %r10 - 0x48, 0x83, 0xfb, 0x3f, //0x00001110 cmpq $63, %rbx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001114 ja LBB0_193 - 0xe9, 0x81, 0x16, 0x00, 0x00, //0x0000111a jmp LBB0_199 - //0x0000111f LBB0_204 - 0x49, 0x83, 0xff, 0xff, //0x0000111f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001123 jne LBB0_206 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001129 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000112d addq %r10, %r15 - //0x00001130 LBB0_206 - 0x4c, 0x89, 0x3c, 0x24, //0x00001130 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001134 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001137 notq %rax - 0x48, 0x21, 0xd0, //0x0000113a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000113d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x00001140 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x00001144 orq %r11, %r10 - 0x4c, 0x89, 0xd1, //0x00001147 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000114a notq %rcx - 0x48, 0x21, 0xd1, //0x0000114d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001150 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000115a andq %rdx, %rcx - 0x45, 0x31, 0xdb, //0x0000115d xorl %r11d, %r11d - 0x48, 0x01, 0xc1, //0x00001160 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc3, //0x00001163 setb %r11b - 0x48, 0x01, 0xc9, //0x00001167 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000116a movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001174 xorq %rax, %rcx - 0x4c, 0x21, 0xd1, //0x00001177 andq %r10, %rcx - 0x4d, 0x89, 0xfa, //0x0000117a movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x0000117d movq (%rsp), %r15 - 0x48, 0xf7, 0xd1, //0x00001181 notq %rcx - 0x48, 0x21, 0xcf, //0x00001184 andq %rcx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x00001187 jmp LBB0_196 - //0x0000118c LBB0_207 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000118c bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x00001190 testq %rsi, %rsi - 0x0f, 0x84, 0x72, 0x01, 0x00, 0x00, //0x00001193 je LBB0_230 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001199 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x0000119d cmpq %rcx, %rdx - 0x0f, 0x83, 0x73, 0x01, 0x00, 0x00, //0x000011a0 jae LBB0_231 - 0xe9, 0x8b, 0x2b, 0x00, 0x00, //0x000011a6 jmp LBB0_209 - //0x000011ab LBB0_210 - 0x4c, 0x01, 0xe9, //0x000011ab addq %r13, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x38, //0x000011ae addq $56(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x000011b3 vzeroupper - 0x49, 0x89, 0xcd, //0x000011b6 movq %rcx, %r13 - 0xe9, 0x3d, 0x04, 0x00, 0x00, //0x000011b9 jmp LBB0_279 - //0x000011be LBB0_211 - 0x4c, 0x29, 0xc9, //0x000011be subq %r9, %rcx - 0x0f, 0x84, 0x55, 0x2b, 0x00, 0x00, //0x000011c1 je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x000011c7 cmpq $64, %rcx - 0x0f, 0x82, 0x94, 0x19, 0x00, 0x00, //0x000011cb jb LBB0_513 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000011d1 movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x000011d8 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x000011db xorl %r11d, %r11d - 0x90, 0x90, //0x000011de .p2align 4, 0x90 - //0x000011e0 LBB0_214 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x000011e0 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x000011e6 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000011ed vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000011f1 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000011f5 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000011f9 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x000011fd vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001201 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00001205 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00001209 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000120d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001211 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00001216 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000121a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000121e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00001222 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00001225 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00001229 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000122d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001230 jne LBB0_225 - 0x4d, 0x85, 0xdb, //0x00001236 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00001239 jne LBB0_227 - 0x45, 0x31, 0xdb, //0x0000123f xorl %r11d, %r11d - //0x00001242 LBB0_217 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001242 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00001246 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000124b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000124f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00001253 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00001256 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001259 jne LBB0_228 - 0x48, 0x85, 0xf6, //0x0000125f testq %rsi, %rsi - 0x0f, 0x85, 0x4c, 0x29, 0x00, 0x00, //0x00001262 jne LBB0_699 - 0x48, 0x83, 0xc1, 0xc0, //0x00001268 addq $-64, %rcx - 0x49, 0x83, 0xc2, 0x40, //0x0000126c addq $64, %r10 - 0x48, 0x83, 0xf9, 0x3f, //0x00001270 cmpq $63, %rcx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001274 ja LBB0_214 - 0xe9, 0x4e, 0x16, 0x00, 0x00, //0x0000127a jmp LBB0_220 - //0x0000127f LBB0_225 - 0x49, 0x83, 0xff, 0xff, //0x0000127f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001283 jne LBB0_227 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001289 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000128d addq %r10, %r15 - //0x00001290 LBB0_227 - 0x4c, 0x89, 0x3c, 0x24, //0x00001290 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001294 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001297 notq %rax - 0x48, 0x21, 0xd0, //0x0000129a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000129d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x000012a0 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x000012a4 orq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x000012a7 movq %r10, %rbx - 0x48, 0xf7, 0xd3, //0x000012aa notq %rbx - 0x48, 0x21, 0xd3, //0x000012ad andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000012b0 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000012ba andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000012bd xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000012c0 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x000012c3 setb %r11b - 0x48, 0x01, 0xdb, //0x000012c7 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000012ca movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x000012d4 xorq %rax, %rbx - 0x4c, 0x21, 0xd3, //0x000012d7 andq %r10, %rbx - 0x4d, 0x89, 0xfa, //0x000012da movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x000012dd movq (%rsp), %r15 - 0x48, 0xf7, 0xd3, //0x000012e1 notq %rbx - 0x48, 0x21, 0xdf, //0x000012e4 andq %rbx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x000012e7 jmp LBB0_217 - //0x000012ec LBB0_228 - 0x48, 0x0f, 0xbc, 0xcf, //0x000012ec bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x000012f0 testq %rsi, %rsi - 0x0f, 0x84, 0x7e, 0x04, 0x00, 0x00, //0x000012f3 je LBB0_296 - 0x48, 0x0f, 0xbc, 0xd6, //0x000012f9 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x000012fd cmpq %rcx, %rdx - 0x0f, 0x83, 0x7f, 0x04, 0x00, 0x00, //0x00001300 jae LBB0_297 - 0xe9, 0x2b, 0x2a, 0x00, 0x00, //0x00001306 jmp LBB0_209 - //0x0000130b LBB0_230 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000130b movl $64, %edx - 0x48, 0x39, 0xca, //0x00001310 cmpq %rcx, %rdx - 0x0f, 0x82, 0x1d, 0x2a, 0x00, 0x00, //0x00001313 jb LBB0_209 - //0x00001319 LBB0_231 - 0x49, 0x01, 0xca, //0x00001319 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x0000131c addq $1, %r10 - //0x00001320 LBB0_232 - 0x4d, 0x85, 0xd2, //0x00001320 testq %r10, %r10 - 0x0f, 0x88, 0x1d, 0x28, 0x00, 0x00, //0x00001323 js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001329 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x0000132d testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001330 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001335 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000133a movq $8(%rsp), %r15 - 0x0f, 0x8f, 0x5b, 0xf0, 0xff, 0xff, //0x0000133f jg LBB0_3 - 0xe9, 0xef, 0x27, 0x00, 0x00, //0x00001345 jmp LBB0_463 - //0x0000134a LBB0_234 - 0x41, 0xf6, 0xc3, 0x40, //0x0000134a testb $64, %r11b - 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x0000134e jne LBB0_302 - 0x4d, 0x8b, 0x4d, 0x00, //0x00001354 movq (%r13), %r9 - 0x4c, 0x8b, 0x7f, 0x08, //0x00001358 movq $8(%rdi), %r15 - 0x4d, 0x89, 0xf8, //0x0000135c movq %r15, %r8 - 0x41, 0xf6, 0xc3, 0x20, //0x0000135f testb $32, %r11b - 0x0f, 0x85, 0x97, 0x0c, 0x00, 0x00, //0x00001363 jne LBB0_385 - 0x4d, 0x29, 0xc8, //0x00001369 subq %r9, %r8 - 0x0f, 0x84, 0xf1, 0x29, 0x00, 0x00, //0x0000136c je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00001372 cmpq $64, %r8 - 0x0f, 0x82, 0x48, 0x18, 0x00, 0x00, //0x00001376 jb LBB0_516 - 0x4c, 0x89, 0xce, //0x0000137c movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x0000137f notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00001382 movq $-1, %r11 - 0x4c, 0x89, 0xcf, //0x00001389 movq %r9, %rdi - 0x45, 0x31, 0xd2, //0x0000138c xorl %r10d, %r10d - 0x90, //0x0000138f .p2align 4, 0x90 - //0x00001390 LBB0_239 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x3e, //0x00001390 vmovdqu (%r14,%rdi), %ymm0 - 0x48, 0x89, 0xf9, //0x00001396 movq %rdi, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x3e, 0x20, //0x00001399 vmovdqu $32(%r14,%rdi), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000013a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000013a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000013a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000013ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000013b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000013b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000013b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x000013bc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x000013c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000013c4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x000013c7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x000013cb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000013ce jne LBB0_248 - 0x4d, 0x85, 0xd2, //0x000013d4 testq %r10, %r10 - 0x0f, 0x85, 0x48, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_250 - 0x45, 0x31, 0xd2, //0x000013dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000013e0 testq %rdi, %rdi - 0x0f, 0x85, 0x96, 0x00, 0x00, 0x00, //0x000013e3 jne LBB0_252 - //0x000013e9 LBB0_242 - 0x49, 0x83, 0xc0, 0xc0, //0x000013e9 addq $-64, %r8 - 0x48, 0x83, 0xc6, 0xc0, //0x000013ed addq $-64, %rsi - 0x48, 0x89, 0xcf, //0x000013f1 movq %rcx, %rdi - 0x48, 0x83, 0xc7, 0x40, //0x000013f4 addq $64, %rdi - 0x49, 0x83, 0xf8, 0x3f, //0x000013f8 cmpq $63, %r8 - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000013fc ja LBB0_239 - 0xe9, 0x99, 0x15, 0x00, 0x00, //0x00001402 jmp LBB0_243 - //0x00001407 LBB0_248 - 0x4c, 0x89, 0x1c, 0x24, //0x00001407 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x0000140b cmpq $-1, %r11 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000140f jne LBB0_251 - 0x48, 0x0f, 0xbc, 0xc2, //0x00001415 bsfq %rdx, %rax - 0x48, 0x01, 0xc8, //0x00001419 addq %rcx, %rax - 0x48, 0x89, 0x04, 0x24, //0x0000141c movq %rax, (%rsp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00001420 jmp LBB0_251 - //0x00001425 LBB0_250 - 0x4c, 0x89, 0x1c, 0x24, //0x00001425 movq %r11, (%rsp) - //0x00001429 LBB0_251 - 0x4c, 0x89, 0xd0, //0x00001429 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000142c notq %rax - 0x48, 0x21, 0xd0, //0x0000142f andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00001432 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00001436 orq %r10, %r11 - 0x4c, 0x89, 0xdb, //0x00001439 movq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000143c notq %rbx - 0x48, 0x21, 0xd3, //0x0000143f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001442 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x0000144c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x0000144f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00001452 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00001455 setb %r10b - 0x48, 0x01, 0xdb, //0x00001459 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000145c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00001466 xorq %rax, %rbx - 0x4c, 0x21, 0xdb, //0x00001469 andq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000146c notq %rbx - 0x48, 0x21, 0xdf, //0x0000146f andq %rbx, %rdi - 0x4c, 0x8b, 0x1c, 0x24, //0x00001472 movq (%rsp), %r11 - 0x48, 0x85, 0xff, //0x00001476 testq %rdi, %rdi - 0x0f, 0x84, 0x6a, 0xff, 0xff, 0xff, //0x00001479 je LBB0_242 - //0x0000147f LBB0_252 - 0xc5, 0x7d, 0x7f, 0xea, //0x0000147f vmovdqa %ymm13, %ymm2 - 0x48, 0x0f, 0xbc, 0xcf, //0x00001483 bsfq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00001487 subq %rsi, %rcx - 0xe9, 0x5f, 0x10, 0x00, 0x00, //0x0000148a jmp LBB0_461 - //0x0000148f LBB0_253 - 0x4c, 0x8b, 0x57, 0x08, //0x0000148f movq $8(%rdi), %r10 - 0x49, 0x8b, 0x4d, 0x00, //0x00001493 movq (%r13), %rcx - 0x41, 0xf6, 0xc3, 0x40, //0x00001497 testb $64, %r11b - 0x48, 0x89, 0x0c, 0x24, //0x0000149b movq %rcx, (%rsp) - 0x0f, 0x85, 0x0b, 0x04, 0x00, 0x00, //0x0000149f jne LBB0_313 - 0x49, 0x29, 0xca, //0x000014a5 subq %rcx, %r10 - 0x0f, 0x84, 0x3a, 0x28, 0x00, 0x00, //0x000014a8 je LBB0_704 - 0x49, 0x8d, 0x04, 0x0e, //0x000014ae leaq (%r14,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000014b2 movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000014b7 cmpb $48, (%rax) - 0x0f, 0x85, 0xab, 0x0c, 0x00, 0x00, //0x000014ba jne LBB0_406 - 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000014c0 movl $1, %r9d - 0x49, 0x83, 0xfa, 0x01, //0x000014c6 cmpq $1, %r10 - 0x0f, 0x85, 0x6c, 0x0c, 0x00, 0x00, //0x000014ca jne LBB0_404 - //0x000014d0 LBB0_257 - 0x48, 0x8b, 0x0c, 0x24, //0x000014d0 movq (%rsp), %rcx - 0xe9, 0xb0, 0x14, 0x00, 0x00, //0x000014d4 jmp LBB0_498 - //0x000014d9 LBB0_258 - 0x41, 0xf6, 0xc3, 0x40, //0x000014d9 testb $64, %r11b - 0x0f, 0x85, 0xe2, 0x04, 0x00, 0x00, //0x000014dd jne LBB0_329 - 0x49, 0x8b, 0x0f, //0x000014e3 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000014e6 cmpq $4095, %rcx - 0x0f, 0x8f, 0x2c, 0x26, 0x00, 0x00, //0x000014ed jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000014f3 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000014f7 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000014fa movq $5, $8(%r15,%rcx,8) - 0xe9, 0x98, 0xee, 0xff, 0xff, //0x00001503 jmp LBB0_3 - //0x00001508 LBB0_261 - 0x49, 0x8b, 0x4d, 0x00, //0x00001508 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x0000150c movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfc, //0x00001510 leaq $-4(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00001514 cmpq %rax, %rcx - 0x0f, 0x87, 0x8e, 0x26, 0x00, 0x00, //0x00001517 ja LBB0_686 - 0x41, 0x8b, 0x14, 0x0e, //0x0000151d movl (%r14,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001521 cmpl $1702063201, %edx - 0x0f, 0x85, 0xac, 0x26, 0x00, 0x00, //0x00001527 jne LBB0_687 - 0x48, 0x8d, 0x41, 0x04, //0x0000152d leaq $4(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00001531 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x00001535 testq %rcx, %rcx - 0x0f, 0x8f, 0x62, 0xee, 0xff, 0xff, //0x00001538 jg LBB0_3 - 0xe9, 0x98, 0x27, 0x00, 0x00, //0x0000153e jmp LBB0_264 - //0x00001543 LBB0_265 - 0x49, 0x8b, 0x4d, 0x00, //0x00001543 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001547 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x0000154b leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000154f cmpq %rax, %rcx - 0x0f, 0x87, 0x53, 0x26, 0x00, 0x00, //0x00001552 ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001558 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000155c cmpl $1819047278, $-1(%r14,%rcx) - 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00001565 je LBB0_273 - 0xe9, 0xc3, 0x26, 0x00, 0x00, //0x0000156b jmp LBB0_267 - //0x00001570 LBB0_271 - 0x49, 0x8b, 0x4d, 0x00, //0x00001570 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001574 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00001578 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000157c cmpq %rax, %rcx - 0x0f, 0x87, 0x26, 0x26, 0x00, 0x00, //0x0000157f ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001585 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001589 cmpl $1702195828, $-1(%r14,%rcx) - 0x0f, 0x85, 0xe6, 0x26, 0x00, 0x00, //0x00001592 jne LBB0_692 - //0x00001598 LBB0_273 - 0x48, 0x89, 0x04, 0x24, //0x00001598 movq %rax, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x0000159c leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x000015a0 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x000015a4 testq %rcx, %rcx - 0x0f, 0x8f, 0xf3, 0xed, 0xff, 0xff, //0x000015a7 jg LBB0_3 - 0xe9, 0xe3, 0x25, 0x00, 0x00, //0x000015ad jmp LBB0_711 - //0x000015b2 LBB0_274 - 0x41, 0xf6, 0xc3, 0x40, //0x000015b2 testb $64, %r11b - 0x0f, 0x85, 0xfb, 0x06, 0x00, 0x00, //0x000015b6 jne LBB0_355 - 0x49, 0x8b, 0x0f, //0x000015bc movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015bf cmpq $4095, %rcx - 0x0f, 0x8f, 0x53, 0x25, 0x00, 0x00, //0x000015c6 jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000015cc leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000015d0 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000015d3 movq $6, $8(%r15,%rcx,8) - 0xe9, 0xbf, 0xed, 0xff, 0xff, //0x000015dc jmp LBB0_3 - //0x000015e1 LBB0_277 - 0x89, 0xc8, //0x000015e1 movl %ecx, %eax - 0x49, 0x01, 0xc5, //0x000015e3 addq %rax, %r13 - 0x4d, 0x01, 0xfd, //0x000015e6 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000015e9 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000015ee movq $16(%rsp), %rdi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000015f3 jmp LBB0_279 - //0x000015f8 LBB0_278 - 0x49, 0x01, 0xcd, //0x000015f8 addq %rcx, %r13 - //0x000015fb LBB0_279 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000015fb movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001602 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001607 testq %rdx, %rdx - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000160a movq $8(%rsp), %r15 - 0x0f, 0x84, 0x66, 0x25, 0x00, 0x00, //0x0000160f je LBB0_684 - 0x4d, 0x85, 0xd2, //0x00001615 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x1d, 0xa0, 0xeb, 0xff, 0xff, //0x00001618 vmovdqu $-5216(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x84, 0x55, 0x25, 0x00, 0x00, //0x00001620 je LBB0_684 - 0x4d, 0x85, 0xc9, //0x00001626 testq %r9, %r9 - 0x0f, 0x84, 0x4c, 0x25, 0x00, 0x00, //0x00001629 je LBB0_684 - 0x4c, 0x2b, 0x6c, 0x24, 0x38, //0x0000162f subq $56(%rsp), %r13 - 0x49, 0x8d, 0x4d, 0xff, //0x00001634 leaq $-1(%r13), %rcx - 0x48, 0x39, 0xca, //0x00001638 cmpq %rcx, %rdx - 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000163b je LBB0_288 - 0x49, 0x39, 0xca, //0x00001641 cmpq %rcx, %r10 - 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001644 je LBB0_288 - 0x49, 0x39, 0xc9, //0x0000164a cmpq %rcx, %r9 - 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x0000164d je LBB0_288 - 0x4d, 0x85, 0xd2, //0x00001653 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x2d, 0x62, 0xea, 0xff, 0xff, //0x00001656 vmovdqu $-5534(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x7a, 0xea, 0xff, 0xff, //0x0000165e vmovdqu $-5510(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x92, 0xea, 0xff, 0xff, //0x00001666 vmovdqu $-5486(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xaa, 0xea, 0xff, 0xff, //0x0000166e vmovdqu $-5462(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001676 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x7d, 0xeb, 0xff, 0xff, //0x0000167b vmovdqu $-5251(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x95, 0xeb, 0xff, 0xff, //0x00001683 vmovdqu $-5227(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xad, 0xeb, 0xff, 0xff, //0x0000168b vmovdqu $-5203(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x45, 0xeb, 0xff, 0xff, //0x00001693 vmovdqu $-5307(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xeb, 0xff, 0xff, //0x0000169b vmovdqu $-5123(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x8e, 0x9b, 0x00, 0x00, 0x00, //0x000016a3 jle LBB0_293 - 0x49, 0x8d, 0x42, 0xff, //0x000016a9 leaq $-1(%r10), %rax - 0x49, 0x39, 0xc1, //0x000016ad cmpq %rax, %r9 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000016b0 je LBB0_293 - 0x49, 0xf7, 0xd2, //0x000016b6 notq %r10 - 0x4d, 0x89, 0xd5, //0x000016b9 movq %r10, %r13 - 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000016bc jmp LBB0_289 - //0x000016c1 LBB0_288 - 0x49, 0xf7, 0xdd, //0x000016c1 negq %r13 - 0xc5, 0xfe, 0x6f, 0x2d, 0xf4, 0xe9, 0xff, 0xff, //0x000016c4 vmovdqu $-5644(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xea, 0xff, 0xff, //0x000016cc vmovdqu $-5620(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x24, 0xea, 0xff, 0xff, //0x000016d4 vmovdqu $-5596(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x3c, 0xea, 0xff, 0xff, //0x000016dc vmovdqu $-5572(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000016e4 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x0f, 0xeb, 0xff, 0xff, //0x000016e9 vmovdqu $-5361(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x27, 0xeb, 0xff, 0xff, //0x000016f1 vmovdqu $-5337(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x3f, 0xeb, 0xff, 0xff, //0x000016f9 vmovdqu $-5313(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xd7, 0xea, 0xff, 0xff, //0x00001701 vmovdqu $-5417(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x8f, 0xeb, 0xff, 0xff, //0x00001709 vmovdqu $-5233(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - //0x00001711 LBB0_289 - 0xc5, 0x7e, 0x6f, 0x1d, 0x27, 0xea, 0xff, 0xff, //0x00001711 vmovdqu $-5593(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x3f, 0xea, 0xff, 0xff, //0x00001719 vmovdqu $-5569(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - //0x00001721 LBB0_290 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00001721 movq $32(%rsp), %rbx - //0x00001726 LBB0_291 - 0x4d, 0x85, 0xed, //0x00001726 testq %r13, %r13 - 0x0f, 0x88, 0x49, 0x24, 0x00, 0x00, //0x00001729 js LBB0_683 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x0000172f movq $48(%rsp), %rax - 0x48, 0x8b, 0x08, //0x00001734 movq (%rax), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x00001737 addq $-1, %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x0000173b vmovdqa %ymm0, %ymm13 - 0xe9, 0x74, 0xec, 0xff, 0xff, //0x0000173f jmp LBB0_2 - //0x00001744 LBB0_293 - 0x48, 0x89, 0xd0, //0x00001744 movq %rdx, %rax - 0x4c, 0x09, 0xc8, //0x00001747 orq %r9, %rax - 0x0f, 0x99, 0xc1, //0x0000174a setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0xeb, 0xe9, 0xff, 0xff, //0x0000174d vmovdqu $-5653(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x03, 0xea, 0xff, 0xff, //0x00001755 vmovdqu $-5629(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0x84, 0x08, 0x00, 0x00, //0x0000175d js LBB0_384 - 0x4c, 0x39, 0xca, //0x00001763 cmpq %r9, %rdx - 0x0f, 0x8c, 0x7b, 0x08, 0x00, 0x00, //0x00001766 jl LBB0_384 - 0x48, 0xf7, 0xd2, //0x0000176c notq %rdx - 0x49, 0x89, 0xd5, //0x0000176f movq %rdx, %r13 - 0xe9, 0xaa, 0xff, 0xff, 0xff, //0x00001772 jmp LBB0_290 - //0x00001777 LBB0_296 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001777 movl $64, %edx - 0x48, 0x39, 0xca, //0x0000177c cmpq %rcx, %rdx - 0x0f, 0x82, 0xb1, 0x25, 0x00, 0x00, //0x0000177f jb LBB0_209 - //0x00001785 LBB0_297 - 0x49, 0x01, 0xca, //0x00001785 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001788 addq $1, %r10 - //0x0000178c LBB0_298 - 0x4d, 0x85, 0xd2, //0x0000178c testq %r10, %r10 - 0x0f, 0x88, 0xb1, 0x23, 0x00, 0x00, //0x0000178f js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001795 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x00001799 testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000179c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000017a1 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000017a6 movq $8(%rsp), %r15 - 0x0f, 0x8e, 0x88, 0x23, 0x00, 0x00, //0x000017ab jle LBB0_463 - //0x000017b1 LBB0_300 - 0x49, 0x8b, 0x0f, //0x000017b1 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000017b4 cmpq $4095, %rcx - 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000017bb jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000017c1 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000017c5 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000017c8 movq $4, $8(%r15,%rcx,8) - 0xe9, 0xca, 0xeb, 0xff, 0xff, //0x000017d1 jmp LBB0_3 - //0x000017d6 LBB0_302 - 0x4c, 0x8b, 0x57, 0x08, //0x000017d6 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x000017da movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x000017de leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x000017e2 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x000017e5 cmpq $32, %r10 - 0x0f, 0x8c, 0xa4, 0x00, 0x00, 0x00, //0x000017e9 jl LBB0_312 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x000017ef movl $32, %ecx - 0x31, 0xf6, //0x000017f4 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x000017f6 xorl %r15d, %r15d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000017f9 .p2align 4, 0x90 - //0x00001800 LBB0_304 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001800 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001806 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x0000180a vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x0000180e vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001812 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00001816 testl %ebx, %ebx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001818 jne LBB0_307 - 0x4d, 0x85, 0xff, //0x0000181e testq %r15, %r15 - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001821 jne LBB0_307 - 0x45, 0x31, 0xff, //0x00001827 xorl %r15d, %r15d - 0xe9, 0x32, 0x00, 0x00, 0x00, //0x0000182a jmp LBB0_308 - 0x90, //0x0000182f .p2align 4, 0x90 - //0x00001830 LBB0_307 - 0x44, 0x89, 0xf8, //0x00001830 movl %r15d, %eax - 0xf7, 0xd0, //0x00001833 notl %eax - 0x21, 0xd8, //0x00001835 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00001837 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x0000183a orl %r15d, %edx - 0x89, 0xd7, //0x0000183d movl %edx, %edi - 0xf7, 0xd7, //0x0000183f notl %edi - 0x21, 0xdf, //0x00001841 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001843 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00001849 xorl %r15d, %r15d - 0x01, 0xc7, //0x0000184c addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x0000184e setb %r15b - 0x01, 0xff, //0x00001852 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001854 xorl $1431655765, %edi - 0x21, 0xd7, //0x0000185a andl %edx, %edi - 0xf7, 0xd7, //0x0000185c notl %edi - 0x41, 0x21, 0xfb, //0x0000185e andl %edi, %r11d - //0x00001861 LBB0_308 - 0x4d, 0x85, 0xdb, //0x00001861 testq %r11, %r11 - 0x0f, 0x85, 0xff, 0xea, 0xff, 0xff, //0x00001864 jne LBB0_153 - 0x48, 0x83, 0xc6, 0x20, //0x0000186a addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x0000186e leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00001872 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00001876 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x0000187a cmpq $63, %rax - 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x0000187e jg LBB0_304 - 0x4d, 0x85, 0xff, //0x00001884 testq %r15, %r15 - 0x0f, 0x85, 0xd7, 0x1d, 0x00, 0x00, //0x00001887 jne LBB0_622 - 0x49, 0x01, 0xf1, //0x0000188d addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00001890 subq %rsi, %r10 - //0x00001893 LBB0_312 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001893 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001898 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000189d movq $8(%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000018a2 testq %r10, %r10 - 0x0f, 0x8f, 0x32, 0x1e, 0x00, 0x00, //0x000018a5 jg LBB0_626 - 0xe9, 0xe5, 0x22, 0x00, 0x00, //0x000018ab jmp LBB0_711 - //0x000018b0 LBB0_313 - 0x4c, 0x89, 0xd6, //0x000018b0 movq %r10, %rsi - 0x48, 0x29, 0xce, //0x000018b3 subq %rcx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x000018b6 cmpq $32, %rsi - 0x0f, 0x82, 0xc2, 0x12, 0x00, 0x00, //0x000018ba jb LBB0_514 - 0x48, 0x89, 0xca, //0x000018c0 movq %rcx, %rdx - 0x48, 0xf7, 0xda, //0x000018c3 negq %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018c6 .p2align 4, 0x90 - //0x000018d0 LBB0_315 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x000018d0 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x000018d6 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x000018da vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0xba, 0xe8, 0xff, 0xff, //0x000018de vpcmpeqb $-5958(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x000018e6 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000018ea vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000018ee testl %esi, %esi - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x000018f0 jne LBB0_382 - 0x48, 0x83, 0xc1, 0x20, //0x000018f6 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x12, //0x000018fa leaq (%r10,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x000018fe addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00001902 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00001906 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000190a ja LBB0_315 - 0x4c, 0x89, 0xf1, //0x00001910 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00001913 subq %rdx, %rcx - 0x49, 0x01, 0xd2, //0x00001916 addq %rdx, %r10 - 0x4c, 0x89, 0xd6, //0x00001919 movq %r10, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x0000191c cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00001920 movq (%rsp), %rbx - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00001924 jb LBB0_321 - //0x0000192a LBB0_318 - 0x4c, 0x89, 0xf2, //0x0000192a movq %r14, %rdx - 0x48, 0x29, 0xca, //0x0000192d subq %rcx, %rdx - //0x00001930 LBB0_319 - 0xc5, 0xfa, 0x6f, 0x01, //0x00001930 vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0xd4, 0xe6, 0xff, 0xff, //0x00001934 vpcmpeqb $-6444(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0xdc, 0xe6, 0xff, 0xff, //0x0000193c vpand $-6436(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0xe4, 0xe6, 0xff, 0xff, //0x00001944 vpcmpeqb $-6428(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x0000194c vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00001950 vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00001954 testl %eax, %eax - 0x0f, 0x85, 0xe5, 0x0f, 0x00, 0x00, //0x00001956 jne LBB0_697 - 0x48, 0x83, 0xc1, 0x10, //0x0000195c addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00001960 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001964 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001968 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x0000196c ja LBB0_319 - //0x00001972 LBB0_321 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00001972 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00001976 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000197a vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x0000197f testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00001982 je LBB0_328 - 0x48, 0x8d, 0x3c, 0x31, //0x00001988 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x0000198c xorl %edx, %edx - //0x0000198e LBB0_323 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000198e movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00001992 cmpb $44, %bl - 0x0f, 0x84, 0x85, 0x12, 0x00, 0x00, //0x00001995 je LBB0_520 - 0x80, 0xfb, 0x7d, //0x0000199b cmpb $125, %bl - 0x0f, 0x84, 0x7c, 0x12, 0x00, 0x00, //0x0000199e je LBB0_520 - 0x80, 0xfb, 0x5d, //0x000019a4 cmpb $93, %bl - 0x0f, 0x84, 0x73, 0x12, 0x00, 0x00, //0x000019a7 je LBB0_520 - 0x48, 0x83, 0xc2, 0x01, //0x000019ad addq $1, %rdx - 0x48, 0x39, 0xd6, //0x000019b1 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x000019b4 jne LBB0_323 - 0x48, 0x89, 0xf9, //0x000019ba movq %rdi, %rcx - //0x000019bd LBB0_328 - 0x4c, 0x29, 0xf1, //0x000019bd subq %r14, %rcx - 0xe9, 0x61, 0x12, 0x00, 0x00, //0x000019c0 jmp LBB0_521 - //0x000019c5 LBB0_329 - 0x4c, 0x8b, 0x4f, 0x08, //0x000019c5 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x000019c9 movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x000019cd subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x000019d0 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x000019d3 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x000019d6 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x000019d9 xorl %r15d, %r15d - 0x31, 0xdb, //0x000019dc xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000019de jmp LBB0_331 - //0x000019e3 LBB0_330 - 0x48, 0xc1, 0xff, 0x3f, //0x000019e3 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x000019e7 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x000019ec addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x000019ef addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x000019f3 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x000019f7 movq %rdi, %r11 - //0x000019fa LBB0_331 - 0x49, 0x83, 0xf9, 0x40, //0x000019fa cmpq $64, %r9 - 0x0f, 0x8c, 0x59, 0x01, 0x00, 0x00, //0x000019fe jl LBB0_339 - //0x00001a04 LBB0_332 - 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001a04 vmovdqa %ymm13, %ymm15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001a09 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001a0e vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001a14 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001a18 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001a1c vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a20 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a24 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001a28 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001a2b movq %rdx, %rax - 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001a2e vmovdqa %ymm10, %ymm13 - 0x4c, 0x09, 0xd0, //0x00001a33 orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a36 jne LBB0_334 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a3c movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a46 jmp LBB0_335 - //0x00001a4b LBB0_334 - 0x4c, 0x89, 0xd0, //0x00001a4b movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001a4e notq %rax - 0x48, 0x21, 0xd0, //0x00001a51 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001a54 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001a58 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001a5b movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001a5e notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a61 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001a6b andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001a6e andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001a71 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001a74 addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a77 setb %r10b - 0x48, 0x01, 0xd2, //0x00001a7b addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a7e movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001a88 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001a8b andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001a8e notq %rdx - //0x00001a91 LBB0_335 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001a91 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a95 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a99 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001a9d vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001aa1 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001aa5 orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001aa8 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001aab vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xe6, 0xe5, 0xff, 0xff, 0x00, //0x00001ab0 vpclmulqdq $0, $-6682(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001aba vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001abf xorq %r11, %rdi - 0xc5, 0x7e, 0x6f, 0x15, 0xb6, 0xe6, 0xff, 0xff, //0x00001ac2 vmovdqu $-6474(%rip), %ymm10 /* LCPI0_7+0(%rip) */ - 0xc5, 0xad, 0x74, 0xd1, //0x00001aca vpcmpeqb %ymm1, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001ace vpmovmskb %ymm2, %esi - 0xc5, 0xad, 0x74, 0xd0, //0x00001ad2 vpcmpeqb %ymm0, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001ad6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001ada shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001ade orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001ae1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001ae4 notq %rax - 0x48, 0x21, 0xc6, //0x00001ae7 andq %rax, %rsi - 0xc5, 0xfe, 0x6f, 0x15, 0xae, 0xe6, 0xff, 0xff, //0x00001aea vmovdqu $-6482(%rip), %ymm2 /* LCPI0_8+0(%rip) */ - 0xc5, 0xf5, 0x74, 0xca, //0x00001af2 vpcmpeqb %ymm2, %ymm1, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001af6 vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc2, //0x00001afa vpcmpeqb %ymm2, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001afe vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001b02 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001b06 orq %rcx, %rdx - 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001b09 vmovdqa %ymm13, %ymm10 - 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001b0e vmovdqa %ymm15, %ymm13 - 0x48, 0x21, 0xc2, //0x00001b13 andq %rax, %rdx - 0x0f, 0x84, 0xc7, 0xfe, 0xff, 0xff, //0x00001b16 je LBB0_330 - 0xc5, 0x7e, 0x6f, 0x3d, 0x1c, 0xe7, 0xff, 0xff, //0x00001b1c vmovdqu $-6372(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001b24 .p2align 4, 0x90 - //0x00001b30 LBB0_337 - 0x48, 0x8d, 0x4a, 0xff, //0x00001b30 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001b34 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001b37 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001b3a popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001b3f addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001b42 cmpq %rbx, %rax - 0x0f, 0x86, 0x38, 0x04, 0x00, 0x00, //0x00001b45 jbe LBB0_380 - 0x48, 0x83, 0xc3, 0x01, //0x00001b4b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001b4f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001b52 jne LBB0_337 - 0xe9, 0x86, 0xfe, 0xff, 0xff, //0x00001b58 jmp LBB0_330 - //0x00001b5d LBB0_339 - 0x4d, 0x85, 0xc9, //0x00001b5d testq %r9, %r9 - 0x0f, 0x8e, 0x17, 0x22, 0x00, 0x00, //0x00001b60 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b66 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b6a vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001b6f vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b73 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b79 vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001b7f movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001b82 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001b87 cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b8c jb LBB0_343 - 0x49, 0x83, 0xf9, 0x20, //0x00001b92 cmpq $32, %r9 - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001b96 jb LBB0_344 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001b9c vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001ba1 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001ba7 addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001bab leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001baf leaq $96(%rsp), %rsi - 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bb4 jmp LBB0_345 - //0x00001bb9 LBB0_343 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bb9 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bbe vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xd5, 0xe6, 0xff, 0xff, //0x00001bc3 vmovdqu $-6443(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xed, 0xe5, 0xff, 0xff, //0x00001bcb vmovdqu $-6675(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001bd3 vmovdqa %ymm1, %ymm11 - 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00001bd7 jmp LBB0_332 - //0x00001bdc LBB0_344 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bdc leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001be1 movq %r9, %rdi - //0x00001be4 LBB0_345 - 0x48, 0x83, 0xff, 0x10, //0x00001be4 cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001be8 jb LBB0_346 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bee vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001bf3 vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001bf7 addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001bfb addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001bff addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001c03 cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c07 jae LBB0_353 - //0x00001c0d LBB0_347 - 0x48, 0x83, 0xff, 0x04, //0x00001c0d cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c11 jl LBB0_348 - //0x00001c17 LBB0_354 - 0x41, 0x8b, 0x06, //0x00001c17 movl (%r14), %eax - 0x89, 0x06, //0x00001c1a movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001c1c addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001c20 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001c24 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001c28 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c2c jae LBB0_349 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_350 - //0x00001c37 LBB0_346 - 0x48, 0x83, 0xff, 0x08, //0x00001c37 cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c3b jb LBB0_347 - //0x00001c41 LBB0_353 - 0x49, 0x8b, 0x06, //0x00001c41 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001c44 movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001c47 addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001c4b addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001c4f addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001c53 cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c57 jge LBB0_354 - //0x00001c5d LBB0_348 - 0x48, 0x83, 0xff, 0x02, //0x00001c5d cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c61 jb LBB0_350 - //0x00001c67 LBB0_349 - 0x41, 0x0f, 0xb7, 0x06, //0x00001c67 movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001c6b movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001c6e addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001c72 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001c76 addq $-2, %rdi - //0x00001c7a LBB0_350 - 0x4c, 0x89, 0xf2, //0x00001c7a movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c7d leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001c82 testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c85 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c8a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xe6, 0xff, 0xff, //0x00001c8f vmovdqu $-6647(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x21, 0xe5, 0xff, 0xff, //0x00001c97 vmovdqu $-6879(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001c9f vmovdqa %ymm1, %ymm11 - 0x0f, 0x84, 0x5b, 0xfd, 0xff, 0xff, //0x00001ca3 je LBB0_332 - 0x8a, 0x02, //0x00001ca9 movb (%rdx), %al - 0x88, 0x06, //0x00001cab movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cad leaq $64(%rsp), %r14 - 0xe9, 0x4d, 0xfd, 0xff, 0xff, //0x00001cb2 jmp LBB0_332 - //0x00001cb7 LBB0_355 - 0x4c, 0x8b, 0x4f, 0x08, //0x00001cb7 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x00001cbb movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x00001cbf subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x00001cc2 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x00001cc5 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x00001cc8 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x00001ccb xorl %r15d, %r15d - 0x31, 0xdb, //0x00001cce xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001cd0 jmp LBB0_357 - //0x00001cd5 LBB0_356 - 0x48, 0xc1, 0xff, 0x3f, //0x00001cd5 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x00001cd9 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x00001cde addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x00001ce1 addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x00001ce5 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x00001ce9 movq %rdi, %r11 - //0x00001cec LBB0_357 - 0x49, 0x83, 0xf9, 0x40, //0x00001cec cmpq $64, %r9 - 0x0f, 0x8c, 0x27, 0x01, 0x00, 0x00, //0x00001cf0 jl LBB0_364 - //0x00001cf6 LBB0_358 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cf6 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001cfb vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001d01 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001d05 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001d09 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d0d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d11 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001d15 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001d18 movq %rdx, %rax - 0x4c, 0x09, 0xd0, //0x00001d1b orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001d1e jne LBB0_360 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001d24 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001d2b xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d2e jmp LBB0_361 - //0x00001d33 LBB0_360 - 0x4c, 0x89, 0xd0, //0x00001d33 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001d36 notq %rax - 0x48, 0x21, 0xd0, //0x00001d39 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001d3c leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001d40 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001d43 movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001d46 notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d49 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001d53 andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001d56 andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001d59 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001d5c addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001d5f setb %r10b - 0x48, 0x01, 0xd2, //0x00001d63 addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d66 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001d70 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001d73 andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001d76 notq %rdx - //0x00001d79 LBB0_361 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001d79 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d7d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d81 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001d85 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001d89 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001d8d orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001d90 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001d93 vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xfe, 0xe2, 0xff, 0xff, 0x00, //0x00001d98 vpclmulqdq $0, $-7426(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001da2 vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001da7 xorq %r11, %rdi - 0xc5, 0xa5, 0x74, 0xd1, //0x00001daa vpcmpeqb %ymm1, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001dae vpmovmskb %ymm2, %esi - 0xc5, 0xa5, 0x74, 0xd0, //0x00001db2 vpcmpeqb %ymm0, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001db6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001dba shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001dbe orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001dc1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001dc4 notq %rax - 0x48, 0x21, 0xc6, //0x00001dc7 andq %rax, %rsi - 0xc5, 0x9d, 0x74, 0xc9, //0x00001dca vpcmpeqb %ymm1, %ymm12, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001dce vpmovmskb %ymm1, %edx - 0xc5, 0x9d, 0x74, 0xc0, //0x00001dd2 vpcmpeqb %ymm0, %ymm12, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001dd6 vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001dda shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001dde orq %rcx, %rdx - 0x48, 0x21, 0xc2, //0x00001de1 andq %rax, %rdx - 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001de4 je LBB0_356 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_362 - 0x48, 0x8d, 0x4a, 0xff, //0x00001df0 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001df4 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001df7 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001dfa popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001dff addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001e02 cmpq %rbx, %rax - 0x0f, 0x86, 0x78, 0x01, 0x00, 0x00, //0x00001e05 jbe LBB0_380 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x000003a0 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x00, //0x000003a5 movq (%rax), %r8 + 0x4c, 0x89, 0xe0, //0x000003a8 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x000003ab testq %r8, %r8 + 0x0f, 0x85, 0x4c, 0x00, 0x00, 0x00, //0x000003ae jne LBB0_5 + 0xe9, 0x5c, 0x39, 0x00, 0x00, //0x000003b4 jmp LBB0_728 + //0x000003b9 LBB0_1 + 0x4d, 0x29, 0xf0, //0x000003b9 subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000003bc movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x000003c1 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x000003c4 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000003c8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000003cd vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc6, 0xfe, 0xff, 0xff, //0x000003d2 vmovdqu $-314(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xde, 0xfd, 0xff, 0xff, //0x000003da vmovdqu $-546(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000003e2 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000003e6 vmovdqa %ymm1, %ymm12 + //0x000003ea LBB0_2 + 0x4d, 0x85, 0xed, //0x000003ea testq %r13, %r13 + 0x0f, 0x8f, 0xad, 0xff, 0xff, 0xff, //0x000003ed jg LBB0_3 + 0xe9, 0xee, 0x38, 0x00, 0x00, //0x000003f3 jmp LBB0_705 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003f8 .p2align 4, 0x90 + //0x00000400 LBB0_5 + 0x4c, 0x89, 0xe1, //0x00000400 movq %r12, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000403 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x30, //0x00000408 movq (%rax), %r14 + 0x48, 0x8b, 0x78, 0x08, //0x0000040b movq $8(%rax), %rdi + 0x49, 0x8b, 0x17, //0x0000040f movq (%r15), %rdx + 0x48, 0x39, 0xfa, //0x00000412 cmpq %rdi, %rdx + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000415 jae LBB0_10 + 0x41, 0x8a, 0x04, 0x16, //0x0000041b movb (%r14,%rdx), %al + 0x3c, 0x0d, //0x0000041f cmpb $13, %al + 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x00000421 je LBB0_10 + 0x3c, 0x20, //0x00000427 cmpb $32, %al + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000429 je LBB0_10 + 0x04, 0xf7, //0x0000042f addb $-9, %al + 0x3c, 0x01, //0x00000431 cmpb $1, %al + 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000433 jbe LBB0_10 + 0x49, 0x89, 0xd4, //0x00000439 movq %rdx, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000043c movq $24(%rsp), %r10 + 0xe9, 0x8c, 0x01, 0x00, 0x00, //0x00000441 jmp LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000446 .p2align 4, 0x90 + //0x00000450 LBB0_10 + 0x4c, 0x8d, 0x62, 0x01, //0x00000450 leaq $1(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000454 cmpq %rdi, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000457 movq $24(%rsp), %r10 + 0x0f, 0x83, 0x2e, 0x00, 0x00, 0x00, //0x0000045c jae LBB0_14 + 0x43, 0x8a, 0x1c, 0x26, //0x00000462 movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x00000466 cmpb $13, %bl + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000469 je LBB0_14 + 0x80, 0xfb, 0x20, //0x0000046f cmpb $32, %bl + 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x00000472 je LBB0_14 + 0x80, 0xc3, 0xf7, //0x00000478 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x0000047b cmpb $1, %bl + 0x0f, 0x87, 0x4e, 0x01, 0x00, 0x00, //0x0000047e ja LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000484 .p2align 4, 0x90 + //0x00000490 LBB0_14 + 0x4c, 0x8d, 0x62, 0x02, //0x00000490 leaq $2(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000494 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000497 jae LBB0_18 + 0x43, 0x8a, 0x1c, 0x26, //0x0000049d movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004a4 je LBB0_18 + 0x80, 0xfb, 0x20, //0x000004aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004ad je LBB0_18 + 0x80, 0xc3, 0xf7, //0x000004b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004b6 cmpb $1, %bl + 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x000004b9 ja LBB0_35 + 0x90, //0x000004bf .p2align 4, 0x90 + //0x000004c0 LBB0_18 + 0x4c, 0x8d, 0x62, 0x03, //0x000004c0 leaq $3(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x000004c4 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000004c7 jae LBB0_22 + 0x43, 0x8a, 0x1c, 0x26, //0x000004cd movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004d1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004d4 je LBB0_22 + 0x80, 0xfb, 0x20, //0x000004da cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004dd je LBB0_22 + 0x80, 0xc3, 0xf7, //0x000004e3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004e6 cmpb $1, %bl + 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004e9 ja LBB0_35 + 0x90, //0x000004ef .p2align 4, 0x90 + //0x000004f0 LBB0_22 + 0x4c, 0x8d, 0x62, 0x04, //0x000004f0 leaq $4(%rdx), %r12 + 0x48, 0x89, 0xfe, //0x000004f4 movq %rdi, %rsi + 0x4c, 0x29, 0xe6, //0x000004f7 subq %r12, %rsi + 0x0f, 0x86, 0x9a, 0x37, 0x00, 0x00, //0x000004fa jbe LBB0_697 + 0x48, 0x83, 0xfe, 0x20, //0x00000500 cmpq $32, %rsi + 0x0f, 0x82, 0x3e, 0x25, 0x00, 0x00, //0x00000504 jb LBB0_504 + 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x0000050a movq $-4, %rsi + 0x48, 0x29, 0xd6, //0x00000511 subq %rdx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000514 .p2align 4, 0x90 + //0x00000520 LBB0_25 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x00000520 vmovdqu (%r14,%r12), %ymm0 + 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00000526 vpshufb %ymm0, %ymm5, %ymm1 + 0xc5, 0xfd, 0x74, 0xc1, //0x0000052b vpcmpeqb %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x0000052f vpmovmskb %ymm0, %edx + 0x83, 0xfa, 0xff, //0x00000533 cmpl $-1, %edx + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000536 jne LBB0_34 + 0x49, 0x83, 0xc4, 0x20, //0x0000053c addq $32, %r12 + 0x48, 0x8d, 0x04, 0x37, //0x00000540 leaq (%rdi,%rsi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000544 addq $-32, %rax + 0x48, 0x83, 0xc6, 0xe0, //0x00000548 addq $-32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x0000054c cmpq $31, %rax + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000550 ja LBB0_25 + 0x4d, 0x89, 0xf4, //0x00000556 movq %r14, %r12 + 0x49, 0x29, 0xf4, //0x00000559 subq %rsi, %r12 + 0x48, 0x01, 0xfe, //0x0000055c addq %rdi, %rsi + 0x48, 0x85, 0xf6, //0x0000055f testq %rsi, %rsi + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000562 je LBB0_33 + //0x00000568 LBB0_28 + 0x4d, 0x8d, 0x04, 0x34, //0x00000568 leaq (%r12,%rsi), %r8 + 0x31, 0xd2, //0x0000056c xorl %edx, %edx + 0x90, 0x90, //0x0000056e .p2align 4, 0x90 + //0x00000570 LBB0_29 + 0x41, 0x0f, 0xbe, 0x04, 0x14, //0x00000570 movsbl (%r12,%rdx), %eax + 0x83, 0xf8, 0x20, //0x00000575 cmpl $32, %eax + 0x0f, 0x87, 0x23, 0x21, 0x00, 0x00, //0x00000578 ja LBB0_468 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000057e movabsq $4294977024, %rbx + 0x48, 0x0f, 0xa3, 0xc3, //0x00000588 btq %rax, %rbx + 0x0f, 0x83, 0x0f, 0x21, 0x00, 0x00, //0x0000058c jae LBB0_468 + 0x48, 0x83, 0xc2, 0x01, //0x00000592 addq $1, %rdx + 0x48, 0x39, 0xd6, //0x00000596 cmpq %rdx, %rsi + 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000599 jne LBB0_29 + 0x4d, 0x89, 0xc4, //0x0000059f movq %r8, %r12 + //0x000005a2 LBB0_33 + 0x4d, 0x29, 0xf4, //0x000005a2 subq %r14, %r12 + 0x49, 0x39, 0xfc, //0x000005a5 cmpq %rdi, %r12 + 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x000005a8 jb LBB0_35 + 0xe9, 0xea, 0x36, 0x00, 0x00, //0x000005ae jmp LBB0_698 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000005b3 .p2align 4, 0x90 + //0x000005c0 LBB0_34 + 0xf7, 0xd2, //0x000005c0 notl %edx + 0x44, 0x0f, 0xbc, 0xe2, //0x000005c2 bsfl %edx, %r12d + 0x49, 0x29, 0xf4, //0x000005c6 subq %rsi, %r12 + 0x49, 0x39, 0xfc, //0x000005c9 cmpq %rdi, %r12 + 0x0f, 0x83, 0xcb, 0x36, 0x00, 0x00, //0x000005cc jae LBB0_698 + //0x000005d2 LBB0_35 + 0x49, 0x8d, 0x44, 0x24, 0x01, //0x000005d2 leaq $1(%r12), %rax + 0x49, 0x89, 0x07, //0x000005d7 movq %rax, (%r15) + 0x43, 0x0f, 0xbe, 0x3c, 0x26, //0x000005da movsbl (%r14,%r12), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000005df movq $-1, %rax + 0x85, 0xff, //0x000005e6 testl %edi, %edi + 0x0f, 0x84, 0x27, 0x37, 0x00, 0x00, //0x000005e8 je LBB0_728 + 0x49, 0x8b, 0x32, //0x000005ee movq (%r10), %rsi + 0x4c, 0x8d, 0x46, 0xff, //0x000005f1 leaq $-1(%rsi), %r8 + 0x41, 0x8b, 0x1c, 0xf2, //0x000005f5 movl (%r10,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x000005f9 cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xe1, //0x000005fd cmovneq %rcx, %r12 + 0x83, 0xc3, 0xff, //0x00000601 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x00000604 cmpl $5, %ebx + 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x00000607 ja LBB0_41 + 0x48, 0x8d, 0x15, 0xc4, 0x38, 0x00, 0x00, //0x0000060d leaq $14532(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9a, //0x00000614 movslq (%rdx,%rbx,4), %rcx + 0x48, 0x01, 0xd1, //0x00000618 addq %rdx, %rcx + 0xff, 0xe1, //0x0000061b jmpq *%rcx + //0x0000061d LBB0_38 + 0x83, 0xff, 0x2c, //0x0000061d cmpl $44, %edi + 0x0f, 0x84, 0x4e, 0x02, 0x00, 0x00, //0x00000620 je LBB0_76 + 0x83, 0xff, 0x5d, //0x00000626 cmpl $93, %edi + 0x0f, 0x84, 0x31, 0x02, 0x00, 0x00, //0x00000629 je LBB0_40 + 0xe9, 0xda, 0x36, 0x00, 0x00, //0x0000062f jmp LBB0_727 + //0x00000634 LBB0_41 + 0x4d, 0x89, 0x02, //0x00000634 movq %r8, (%r10) + 0x83, 0xff, 0x7b, //0x00000637 cmpl $123, %edi + 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x0000063a jbe LBB0_68 + 0xe9, 0xc9, 0x36, 0x00, 0x00, //0x00000640 jmp LBB0_727 + //0x00000645 LBB0_42 + 0x83, 0xff, 0x2c, //0x00000645 cmpl $44, %edi + 0x0f, 0x85, 0x09, 0x02, 0x00, 0x00, //0x00000648 jne LBB0_43 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x0000064e cmpq $4095, %rsi + 0x0f, 0x8f, 0x4e, 0x36, 0x00, 0x00, //0x00000655 jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x0000065b leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x0000065f movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000662 movq $3, $8(%r10,%rsi,8) + 0xe9, 0x30, 0xfd, 0xff, 0xff, //0x0000066b jmp LBB0_3 + //0x00000670 LBB0_44 + 0x40, 0x80, 0xff, 0x22, //0x00000670 cmpb $34, %dil + 0x0f, 0x85, 0x94, 0x36, 0x00, 0x00, //0x00000674 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x04, 0x00, 0x00, 0x00, //0x0000067a movq $4, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x00000682 testb $64, %r11b + 0x0f, 0x85, 0x4d, 0x03, 0x00, 0x00, //0x00000686 jne LBB0_99 + 0x4d, 0x8b, 0x0f, //0x0000068c movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000068f movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00000694 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00000698 testb $32, %r11b + 0x0f, 0x85, 0xd6, 0x06, 0x00, 0x00, //0x0000069c jne LBB0_143 + 0x4d, 0x89, 0xc3, //0x000006a2 movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000006a5 subq %r9, %r11 + 0x0f, 0x84, 0xd0, 0x37, 0x00, 0x00, //0x000006a8 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000006ae cmpq $64, %r11 + 0x0f, 0x82, 0x5e, 0x26, 0x00, 0x00, //0x000006b2 jb LBB0_531 + 0x4c, 0x89, 0xce, //0x000006b8 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000006bb notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006be movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000006c5 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000006c8 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006cb .p2align 4, 0x90 + //0x000006d0 LBB0_50 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000006d0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000006d6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000006dd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000006e1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000006e5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x000006e9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xc7, //0x000006ed vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000006f1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000006f5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x000006f9 vpmovmskb %ymm0, %ebx + 0x48, 0xc1, 0xe1, 0x20, //0x000006fd shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00000701 orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x20, //0x00000704 shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000708 orq %rbx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_59 + 0x4d, 0x85, 0xd2, //0x00000711 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000714 jne LBB0_61 + 0x45, 0x31, 0xd2, //0x0000071a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000071d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000720 jne LBB0_62 + //0x00000726 LBB0_53 + 0x49, 0x83, 0xc3, 0xc0, //0x00000726 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000072a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000072e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000732 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000736 ja LBB0_50 + 0xe9, 0x0b, 0x22, 0x00, 0x00, //0x0000073c jmp LBB0_54 + //0x00000741 LBB0_59 + 0x49, 0x83, 0xff, 0xff, //0x00000741 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000745 jne LBB0_61 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000074b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000074f addq %rax, %r15 + //0x00000752 LBB0_61 + 0x4c, 0x89, 0xd1, //0x00000752 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000755 notq %rcx + 0x48, 0x21, 0xf9, //0x00000758 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000075b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000075f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000762 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000765 notq %rbx + 0x48, 0x21, 0xfb, //0x00000768 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000076b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000775 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000778 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000077b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000077e setb %r10b + 0x48, 0x01, 0xdb, //0x00000782 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000785 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000078f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00000792 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000795 notq %rbx + 0x48, 0x21, 0xda, //0x00000798 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000079b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000079e je LBB0_53 + //0x000007a4 LBB0_62 + 0x48, 0x0f, 0xbc, 0xc2, //0x000007a4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000007a8 subq %rsi, %rax + //0x000007ab LBB0_63 + 0x4c, 0x8b, 0x1c, 0x24, //0x000007ab movq (%rsp), %r11 + 0x48, 0x85, 0xc0, //0x000007af testq %rax, %rax + 0x0f, 0x89, 0xd4, 0xfb, 0xff, 0xff, //0x000007b2 jns LBB0_237 + 0xe9, 0x04, 0x35, 0x00, 0x00, //0x000007b8 jmp LBB0_702 + //0x000007bd LBB0_64 + 0x40, 0x80, 0xff, 0x3a, //0x000007bd cmpb $58, %dil + 0x0f, 0x85, 0x47, 0x35, 0x00, 0x00, //0x000007c1 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x00, 0x00, 0x00, 0x00, //0x000007c7 movq $0, (%r10,%rsi,8) + 0xe9, 0xcc, 0xfb, 0xff, 0xff, //0x000007cf jmp LBB0_3 + //0x000007d4 LBB0_66 + 0x40, 0x80, 0xff, 0x5d, //0x000007d4 cmpb $93, %dil + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x000007d8 je LBB0_40 + 0x49, 0xc7, 0x04, 0xf2, 0x01, 0x00, 0x00, 0x00, //0x000007de movq $1, (%r10,%rsi,8) + 0x83, 0xff, 0x7b, //0x000007e6 cmpl $123, %edi + 0x0f, 0x87, 0x1f, 0x35, 0x00, 0x00, //0x000007e9 ja LBB0_727 + //0x000007ef LBB0_68 + 0x89, 0xf9, //0x000007ef movl %edi, %ecx + 0x48, 0x8d, 0x15, 0xf8, 0x36, 0x00, 0x00, //0x000007f1 leaq $14072(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000007f8 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000007fc addq %rdx, %rcx + 0xff, 0xe1, //0x000007ff jmpq *%rcx + //0x00000801 LBB0_71 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000801 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00000806 movq $8(%rax), %r9 + 0x4d, 0x8b, 0x2f, //0x0000080a movq (%r15), %r13 + 0x41, 0xf6, 0xc3, 0x40, //0x0000080d testb $64, %r11b + 0x0f, 0x85, 0xac, 0x02, 0x00, 0x00, //0x00000811 jne LBB0_111 + 0x49, 0x8d, 0x45, 0xff, //0x00000817 leaq $-1(%r13), %rax + 0x49, 0x29, 0xc1, //0x0000081b subq %rax, %r9 + 0x0f, 0x84, 0xce, 0x34, 0x00, 0x00, //0x0000081e je LBB0_706 + 0x4f, 0x8d, 0x04, 0x2e, //0x00000824 leaq (%r14,%r13), %r8 + 0x49, 0x83, 0xc0, 0xff, //0x00000828 addq $-1, %r8 + 0x41, 0x80, 0x38, 0x30, //0x0000082c cmpb $48, (%r8) + 0x0f, 0x85, 0x0a, 0x08, 0x00, 0x00, //0x00000830 jne LBB0_184 + 0x41, 0xba, 0x01, 0x00, 0x00, 0x00, //0x00000836 movl $1, %r10d + 0x49, 0x83, 0xf9, 0x01, //0x0000083c cmpq $1, %r9 + 0x0f, 0x85, 0xd0, 0x07, 0x00, 0x00, //0x00000840 jne LBB0_182 + //0x00000846 LBB0_75 + 0x48, 0x89, 0xc1, //0x00000846 movq %rax, %rcx + 0xe9, 0xe0, 0x0f, 0x00, 0x00, //0x00000849 jmp LBB0_296 + //0x0000084e LBB0_69 + 0x83, 0xff, 0x22, //0x0000084e cmpl $34, %edi + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000851 je LBB0_80 + //0x00000857 LBB0_43 + 0x83, 0xff, 0x7d, //0x00000857 cmpl $125, %edi + 0x0f, 0x85, 0xae, 0x34, 0x00, 0x00, //0x0000085a jne LBB0_727 + //0x00000860 LBB0_40 + 0x4d, 0x89, 0x02, //0x00000860 movq %r8, (%r10) + 0x4c, 0x89, 0xe0, //0x00000863 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x00000866 testq %r8, %r8 + 0x0f, 0x85, 0x91, 0xfb, 0xff, 0xff, //0x00000869 jne LBB0_5 + 0xe9, 0xa1, 0x34, 0x00, 0x00, //0x0000086f jmp LBB0_728 + //0x00000874 LBB0_76 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000874 cmpq $4095, %rsi + 0x0f, 0x8f, 0x28, 0x34, 0x00, 0x00, //0x0000087b jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x00000881 leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x00000885 movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000888 movq $0, $8(%r10,%rsi,8) + 0xe9, 0x0a, 0xfb, 0xff, 0xff, //0x00000891 jmp LBB0_3 + //0x00000896 LBB0_80 + 0x49, 0xc7, 0x04, 0xf2, 0x02, 0x00, 0x00, 0x00, //0x00000896 movq $2, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x0000089e testb $64, %r11b + 0x0f, 0x85, 0xdd, 0x03, 0x00, 0x00, //0x000008a2 jne LBB0_132 + 0x4d, 0x8b, 0x0f, //0x000008a8 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x000008ab movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x000008b0 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x000008b4 testb $32, %r11b + 0x0f, 0x85, 0x03, 0x06, 0x00, 0x00, //0x000008b8 jne LBB0_163 + 0x4d, 0x89, 0xc3, //0x000008be movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000008c1 subq %r9, %r11 + 0x0f, 0x84, 0xb4, 0x35, 0x00, 0x00, //0x000008c4 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000008ca cmpq $64, %r11 + 0x0f, 0x82, 0x92, 0x24, 0x00, 0x00, //0x000008ce jb LBB0_536 + 0x4c, 0x89, 0xce, //0x000008d4 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000008d7 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000008da movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000008e1 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000008e4 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008e7 .p2align 4, 0x90 + //0x000008f0 LBB0_85 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000008f0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000008f6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000008fd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000901 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x00000905 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000909 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x0000090d vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x00000911 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x00000915 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000919 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x0000091d shlq $32, %rbx + 0x48, 0x09, 0xda, //0x00000921 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x00000924 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000928 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000092b jne LBB0_94 + 0x4d, 0x85, 0xd2, //0x00000931 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000934 jne LBB0_96 + 0x45, 0x31, 0xd2, //0x0000093a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000093d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000940 jne LBB0_97 + //0x00000946 LBB0_88 + 0x49, 0x83, 0xc3, 0xc0, //0x00000946 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000094a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000094e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000952 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000956 ja LBB0_85 + 0xe9, 0xf8, 0x20, 0x00, 0x00, //0x0000095c jmp LBB0_89 + //0x00000961 LBB0_94 + 0x49, 0x83, 0xff, 0xff, //0x00000961 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000965 jne LBB0_96 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000096b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000096f addq %rax, %r15 + //0x00000972 LBB0_96 + 0x4c, 0x89, 0xd1, //0x00000972 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000975 notq %rcx + 0x48, 0x21, 0xf9, //0x00000978 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000097b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000097f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000982 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000985 notq %rbx + 0x48, 0x21, 0xfb, //0x00000988 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000098b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000995 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000998 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000099b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000099e setb %r10b + 0x48, 0x01, 0xdb, //0x000009a2 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000009a5 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000009af xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x000009b2 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x000009b5 notq %rbx + 0x48, 0x21, 0xda, //0x000009b8 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x000009bb testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x000009be je LBB0_88 + //0x000009c4 LBB0_97 + 0x48, 0x0f, 0xbc, 0xc2, //0x000009c4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000009c8 subq %rsi, %rax + //0x000009cb LBB0_98 + 0x4c, 0x8b, 0x1c, 0x24, //0x000009cb movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000009cf movq $24(%rsp), %r10 + 0xe9, 0xb5, 0x0e, 0x00, 0x00, //0x000009d4 jmp LBB0_302 + //0x000009d9 LBB0_99 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000009d9 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000009de movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000009e2 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000009e5 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000009e9 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000009ec cmpq $32, %r10 + 0x0f, 0x8c, 0x21, 0x1d, 0x00, 0x00, //0x000009f0 jl LBB0_110 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000009f6 movl $32, %edx + 0x31, 0xf6, //0x000009fb xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000009fd xorl %r15d, %r15d + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x00000a00 jmp LBB0_101 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000a05 .p2align 4, 0x90 + //0x00000a10 LBB0_106 + 0x44, 0x89, 0xf9, //0x00000a10 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000a13 notl %ecx + 0x21, 0xd9, //0x00000a15 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000a17 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000a1b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000a1e movl %r13d, %edi + 0xf7, 0xd7, //0x00000a21 notl %edi + 0x21, 0xdf, //0x00000a23 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a25 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000a2b xorl %r15d, %r15d + 0x01, 0xcf, //0x00000a2e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000a30 setb %r15b + 0x01, 0xff, //0x00000a34 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000a36 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000a3c andl %r13d, %edi + 0xf7, 0xd7, //0x00000a3f notl %edi + 0x41, 0x21, 0xfb, //0x00000a41 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000a44 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000a47 jne LBB0_104 + //0x00000a4d LBB0_107 + 0x48, 0x83, 0xc6, 0x20, //0x00000a4d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000a51 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a55 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000a59 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000a5d cmpq $63, %rcx + 0x0f, 0x8e, 0x98, 0x1c, 0x00, 0x00, //0x00000a61 jle LBB0_108 + //0x00000a67 LBB0_101 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000a67 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000a6d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000a71 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000a75 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000a79 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000a7d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000a7f jne LBB0_106 + 0x4d, 0x85, 0xff, //0x00000a85 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000a88 jne LBB0_106 + 0x45, 0x31, 0xff, //0x00000a8e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000a91 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000a94 je LBB0_107 + //0x00000a9a LBB0_104 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000a9a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000a9e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000aa1 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000aa5 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000aa9 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000aae movq (%rsp), %r11 + //0x00000ab2 LBB0_105 + 0x4d, 0x89, 0x0f, //0x00000ab2 movq %r9, (%r15) + //0x00000ab5 LBB0_387 + 0x4d, 0x85, 0xc0, //0x00000ab5 testq %r8, %r8 + 0x0f, 0x8f, 0xe2, 0xf8, 0xff, 0xff, //0x00000ab8 jg LBB0_3 + 0xe9, 0xf2, 0x31, 0x00, 0x00, //0x00000abe jmp LBB0_700 + //0x00000ac3 LBB0_111 + 0x4c, 0x89, 0xcf, //0x00000ac3 movq %r9, %rdi + 0x4c, 0x29, 0xef, //0x00000ac6 subq %r13, %rdi + 0x48, 0x83, 0xff, 0x20, //0x00000ac9 cmpq $32, %rdi + 0x0f, 0x82, 0xe4, 0x21, 0x00, 0x00, //0x00000acd jb LBB0_526 + 0x4c, 0x89, 0xef, //0x00000ad3 movq %r13, %rdi + 0x48, 0xf7, 0xdf, //0x00000ad6 negq %rdi + 0x49, 0x8d, 0x4d, 0x01, //0x00000ad9 leaq $1(%r13), %rcx + 0x49, 0x8d, 0x55, 0xff, //0x00000add leaq $-1(%r13), %rdx + 0x4b, 0x8d, 0x34, 0x2e, //0x00000ae1 leaq (%r14,%r13), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00000ae5 addq $-1, %rsi + 0x4c, 0x89, 0xeb, //0x00000ae9 movq %r13, %rbx + 0x90, 0x90, 0x90, 0x90, //0x00000aec .p2align 4, 0x90 + //0x00000af0 LBB0_113 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000af0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x00000af6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x00000afa vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0x9a, 0xf6, 0xff, 0xff, //0x00000afe vpcmpeqb $-2406(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x00000b06 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00000b0a vpmovmskb %ymm0, %eax + 0x85, 0xc0, //0x00000b0e testl %eax, %eax + 0x0f, 0x85, 0x09, 0x01, 0x00, 0x00, //0x00000b10 jne LBB0_127 + 0x48, 0x83, 0xc3, 0x20, //0x00000b16 addq $32, %rbx + 0x49, 0x8d, 0x04, 0x39, //0x00000b1a leaq (%r9,%rdi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000b1e addq $-32, %rax + 0x48, 0x83, 0xc7, 0xe0, //0x00000b22 addq $-32, %rdi + 0x48, 0x83, 0xc1, 0x20, //0x00000b26 addq $32, %rcx + 0x48, 0x83, 0xc2, 0x20, //0x00000b2a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00000b2e addq $32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x00000b32 cmpq $31, %rax + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00000b36 ja LBB0_113 + 0x4d, 0x89, 0xf0, //0x00000b3c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00000b3f subq %rdi, %r8 + 0x49, 0x01, 0xf9, //0x00000b42 addq %rdi, %r9 + 0x4c, 0x89, 0xcf, //0x00000b45 movq %r9, %rdi + 0x48, 0x83, 0xff, 0x10, //0x00000b48 cmpq $16, %rdi + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00000b4c jb LBB0_119 + //0x00000b52 LBB0_116 + 0x4d, 0x89, 0xf1, //0x00000b52 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00000b55 subq %r8, %r9 + 0x4c, 0x89, 0xc1, //0x00000b58 movq %r8, %rcx + 0x4c, 0x29, 0xf1, //0x00000b5b subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00000b5e addq $1, %rcx + 0x49, 0x8d, 0x50, 0xff, //0x00000b62 leaq $-1(%r8), %rdx + 0x48, 0x89, 0xd6, //0x00000b66 movq %rdx, %rsi + 0x4c, 0x29, 0xf6, //0x00000b69 subq %r14, %rsi + //0x00000b6c LBB0_117 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00000b6c vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0x97, 0xf4, 0xff, 0xff, //0x00000b71 vpcmpeqb $-2921(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0x9f, 0xf4, 0xff, 0xff, //0x00000b79 vpand $-2913(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa7, 0xf4, 0xff, 0xff, //0x00000b81 vpcmpeqb $-2905(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00000b89 vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xd8, //0x00000b8d vpmovmskb %xmm0, %ebx + 0x85, 0xdb, //0x00000b91 testl %ebx, %ebx + 0x0f, 0x85, 0x9e, 0x1b, 0x00, 0x00, //0x00000b93 jne LBB0_478 + 0x49, 0x83, 0xc0, 0x10, //0x00000b99 addq $16, %r8 + 0x48, 0x83, 0xc7, 0xf0, //0x00000b9d addq $-16, %rdi + 0x49, 0x83, 0xc1, 0xf0, //0x00000ba1 addq $-16, %r9 + 0x48, 0x83, 0xc1, 0x10, //0x00000ba5 addq $16, %rcx + 0x48, 0x83, 0xc6, 0x10, //0x00000ba9 addq $16, %rsi + 0x48, 0x83, 0xc2, 0x10, //0x00000bad addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000bb1 cmpq $15, %rdi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00000bb5 ja LBB0_117 + //0x00000bbb LBB0_119 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00000bbb vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00000bbf vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000bc3 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xff, //0x00000bc8 testq %rdi, %rdi + 0x0f, 0x84, 0xe8, 0xf7, 0xff, 0xff, //0x00000bcb je LBB0_1 + 0x49, 0x8d, 0x0c, 0x38, //0x00000bd1 leaq (%r8,%rdi), %rcx + 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bd5 movabsq $17596481021440, %rax + //0x00000bdf LBB0_121 + 0x41, 0x0f, 0xb6, 0x10, //0x00000bdf movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000be3 cmpq $44, %rdx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000be7 ja LBB0_123 + 0x48, 0x0f, 0xa3, 0xd0, //0x00000bed btq %rdx, %rax + 0x0f, 0x82, 0xc2, 0xf7, 0xff, 0xff, //0x00000bf1 jb LBB0_1 + //0x00000bf7 LBB0_123 + 0x80, 0xfa, 0x5d, //0x00000bf7 cmpb $93, %dl + 0x0f, 0x84, 0xb9, 0xf7, 0xff, 0xff, //0x00000bfa je LBB0_1 + 0x80, 0xfa, 0x7d, //0x00000c00 cmpb $125, %dl + 0x0f, 0x84, 0xb0, 0xf7, 0xff, 0xff, //0x00000c03 je LBB0_1 + 0x49, 0x83, 0xc0, 0x01, //0x00000c09 addq $1, %r8 + 0x48, 0x83, 0xc7, 0xff, //0x00000c0d addq $-1, %rdi + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x00000c11 jne LBB0_121 + 0x49, 0x89, 0xc8, //0x00000c17 movq %rcx, %r8 + 0xe9, 0x9a, 0xf7, 0xff, 0xff, //0x00000c1a jmp LBB0_1 + //0x00000c1f LBB0_127 + 0x0f, 0xbc, 0xd8, //0x00000c1f bsfl %eax, %ebx + 0x48, 0x89, 0xd8, //0x00000c22 movq %rbx, %rax + 0x48, 0x29, 0xf8, //0x00000c25 subq %rdi, %rax + 0x49, 0x89, 0x07, //0x00000c28 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00000c2b testq %rax, %rax + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c2e movabsq $4294977024, %rdi + 0x0f, 0x8e, 0xac, 0xf7, 0xff, 0xff, //0x00000c38 jle LBB0_2 + 0x48, 0x01, 0xd9, //0x00000c3e addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c41 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00000c44 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c47 .p2align 4, 0x90 + //0x00000c50 LBB0_129 + 0x0f, 0xb6, 0x06, //0x00000c50 movzbl (%rsi), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00000c53 cmpq $32, %rax + 0x0f, 0x87, 0x8d, 0xf7, 0xff, 0xff, //0x00000c57 ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc7, //0x00000c5d btq %rax, %rdi + 0x0f, 0x83, 0x83, 0xf7, 0xff, 0xff, //0x00000c61 jae LBB0_2 + 0x49, 0x89, 0x17, //0x00000c67 movq %rdx, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x00000c6a addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c6e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00000c72 addq $-1, %rsi + 0x48, 0x83, 0xf9, 0x01, //0x00000c76 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c7a jg LBB0_129 + 0xe9, 0x65, 0xf7, 0xff, 0xff, //0x00000c80 jmp LBB0_2 + //0x00000c85 LBB0_132 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00000c85 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x00000c8a movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x00000c8e movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x00000c91 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x00000c95 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x00000c98 cmpq $32, %r10 + 0x0f, 0x8c, 0x9c, 0x1c, 0x00, 0x00, //0x00000c9c jl LBB0_142 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x00000ca2 movl $32, %edx + 0x31, 0xf6, //0x00000ca7 xorl %esi, %esi + 0x45, 0x31, 0xff, //0x00000ca9 xorl %r15d, %r15d + 0xe9, 0x66, 0x00, 0x00, 0x00, //0x00000cac jmp LBB0_134 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000cb1 .p2align 4, 0x90 + //0x00000cc0 LBB0_138 + 0x44, 0x89, 0xf9, //0x00000cc0 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000cc3 notl %ecx + 0x21, 0xd9, //0x00000cc5 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000cc7 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000ccb orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000cce movl %r13d, %edi + 0xf7, 0xd7, //0x00000cd1 notl %edi + 0x21, 0xdf, //0x00000cd3 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000cd5 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000cdb xorl %r15d, %r15d + 0x01, 0xcf, //0x00000cde addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000ce0 setb %r15b + 0x01, 0xff, //0x00000ce4 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000ce6 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000cec andl %r13d, %edi + 0xf7, 0xd7, //0x00000cef notl %edi + 0x41, 0x21, 0xfb, //0x00000cf1 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000cf4 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000cf7 jne LBB0_137 + //0x00000cfd LBB0_139 + 0x48, 0x83, 0xc6, 0x20, //0x00000cfd addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000d01 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000d05 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000d09 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000d0d cmpq $63, %rcx + 0x0f, 0x8e, 0x0f, 0x1c, 0x00, 0x00, //0x00000d11 jle LBB0_140 + //0x00000d17 LBB0_134 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000d17 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000d1d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000d21 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000d25 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000d29 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000d2d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000d2f jne LBB0_138 + 0x4d, 0x85, 0xff, //0x00000d35 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000d38 jne LBB0_138 + 0x45, 0x31, 0xff, //0x00000d3e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000d41 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000d44 je LBB0_139 + //0x00000d4a LBB0_137 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000d4a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000d4e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000d51 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000d55 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000d59 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000d5e movq (%rsp), %r11 + 0x4d, 0x89, 0x0f, //0x00000d62 movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x00000d65 testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000d68 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x35, 0x0b, 0x00, 0x00, //0x00000d6d jg LBB0_304 + 0xe9, 0x3d, 0x2f, 0x00, 0x00, //0x00000d73 jmp LBB0_700 + //0x00000d78 LBB0_143 + 0x4d, 0x89, 0xc5, //0x00000d78 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000d7b subq %r9, %r13 + 0x0f, 0x84, 0xfa, 0x30, 0x00, 0x00, //0x00000d7e je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000d84 cmpq $64, %r13 + 0x0f, 0x82, 0xa5, 0x1f, 0x00, 0x00, //0x00000d88 jb LBB0_532 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000d8e movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000d95 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000d98 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d9b .p2align 4, 0x90 + //0x00000da0 LBB0_146 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000da0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000da6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000dad vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000db1 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000db5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000db9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000dbd vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000dc1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000dc5 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000dc9 vpmovmskb %ymm2, %ebx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000dcd vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000dd1 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000dd6 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000dda vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe1, 0x20, //0x00000dde shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000de2 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x20, //0x00000de5 shlq $32, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x00000de9 shlq $32, %rsi + 0x48, 0x09, 0xda, //0x00000ded orq %rbx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000df0 jne LBB0_157 + 0x4d, 0x85, 0xdb, //0x00000df6 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000df9 jne LBB0_159 + 0x45, 0x31, 0xdb, //0x00000dff xorl %r11d, %r11d + //0x00000e02 LBB0_149 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000e02 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000e06 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000e0b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000e0f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000e13 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000e16 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00000e19 jne LBB0_160 + 0x48, 0x85, 0xf6, //0x00000e1f testq %rsi, %rsi + 0x0f, 0x85, 0x07, 0x2f, 0x00, 0x00, //0x00000e22 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000e28 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000e2c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000e30 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000e34 ja LBB0_146 + 0xe9, 0x5e, 0x1b, 0x00, 0x00, //0x00000e3a jmp LBB0_152 + //0x00000e3f LBB0_157 + 0x49, 0x83, 0xff, 0xff, //0x00000e3f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000e43 jne LBB0_159 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000e49 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000e4d addq %rax, %r15 + //0x00000e50 LBB0_159 + 0x4c, 0x89, 0xd9, //0x00000e50 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000e53 notq %rcx + 0x48, 0x21, 0xd1, //0x00000e56 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000e59 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000e5d orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000e60 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e63 notq %rbx + 0x48, 0x21, 0xd3, //0x00000e66 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000e69 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000e73 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000e76 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000e79 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000e7c setb %r11b + 0x48, 0x01, 0xdb, //0x00000e80 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000e83 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000e8d xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000e90 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e93 notq %rbx + 0x48, 0x21, 0xdf, //0x00000e96 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00000e99 jmp LBB0_149 + //0x00000e9e LBB0_160 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000e9e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ea2 testq %rsi, %rsi + 0x0f, 0x84, 0xbf, 0xf4, 0xff, 0xff, //0x00000ea5 je LBB0_235 + 0x48, 0x0f, 0xbc, 0xd6, //0x00000eab bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00000eaf movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000eb3 cmpq %rcx, %rdx + 0x0f, 0x83, 0xc0, 0xf4, 0xff, 0xff, //0x00000eb6 jae LBB0_236 + 0xe9, 0xc5, 0x2f, 0x00, 0x00, //0x00000ebc jmp LBB0_162 + //0x00000ec1 LBB0_163 + 0x4d, 0x89, 0xc5, //0x00000ec1 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000ec4 subq %r9, %r13 + 0x0f, 0x84, 0xb1, 0x2f, 0x00, 0x00, //0x00000ec7 je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000ecd cmpq $64, %r13 + 0x0f, 0x82, 0xac, 0x1e, 0x00, 0x00, //0x00000ed1 jb LBB0_537 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000ed7 movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000ede movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000ee1 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ee4 .p2align 4, 0x90 + //0x00000ef0 LBB0_166 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000ef0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000ef6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000efd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000f01 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000f05 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000f09 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000f0d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000f11 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000f15 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000f19 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000f1d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000f21 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000f26 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000f2a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x00000f2e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000f32 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00000f35 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00000f39 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x00000f3d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000f40 jne LBB0_177 + 0x4d, 0x85, 0xdb, //0x00000f46 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000f49 jne LBB0_179 + 0x45, 0x31, 0xdb, //0x00000f4f xorl %r11d, %r11d + //0x00000f52 LBB0_169 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000f52 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000f56 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000f5b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000f5f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000f63 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000f66 testq %rdi, %rdi + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000f69 jne LBB0_180 + 0x48, 0x85, 0xf6, //0x00000f6f testq %rsi, %rsi + 0x0f, 0x85, 0xb7, 0x2d, 0x00, 0x00, //0x00000f72 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000f78 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000f7c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000f80 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000f84 ja LBB0_166 + 0xe9, 0x1b, 0x1b, 0x00, 0x00, //0x00000f8a jmp LBB0_172 + //0x00000f8f LBB0_177 + 0x49, 0x83, 0xff, 0xff, //0x00000f8f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000f93 jne LBB0_179 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000f99 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000f9d addq %rax, %r15 + //0x00000fa0 LBB0_179 + 0x4c, 0x89, 0xd9, //0x00000fa0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000fa3 notq %rcx + 0x48, 0x21, 0xd1, //0x00000fa6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000fa9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000fad orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000fb0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fb3 notq %rbx + 0x48, 0x21, 0xd3, //0x00000fb6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000fc3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000fc6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000fc9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000fcc setb %r11b + 0x48, 0x01, 0xdb, //0x00000fd0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000fd3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000fdd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000fe0 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fe3 notq %rbx + 0x48, 0x21, 0xdf, //0x00000fe6 andq %rbx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000fe9 movq $24(%rsp), %r10 + 0xe9, 0x5f, 0xff, 0xff, 0xff, //0x00000fee jmp LBB0_169 + //0x00000ff3 LBB0_180 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000ff3 bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ff7 testq %rsi, %rsi + 0x0f, 0x84, 0x75, 0x08, 0x00, 0x00, //0x00000ffa je LBB0_300 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001000 bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00001004 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001008 cmpq %rcx, %rdx + 0x0f, 0x83, 0x76, 0x08, 0x00, 0x00, //0x0000100b jae LBB0_301 + 0xe9, 0x70, 0x2e, 0x00, 0x00, //0x00001011 jmp LBB0_162 + //0x00001016 LBB0_182 + 0x43, 0x8a, 0x0c, 0x2e, //0x00001016 movb (%r14,%r13), %cl + 0x80, 0xc1, 0xd2, //0x0000101a addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000101d cmpb $55, %cl + 0x0f, 0x87, 0x20, 0xf8, 0xff, 0xff, //0x00001020 ja LBB0_75 + 0x0f, 0xb6, 0xc9, //0x00001026 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001029 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00001033 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00001037 movq %rax, %rcx + 0x0f, 0x83, 0xee, 0x07, 0x00, 0x00, //0x0000103a jae LBB0_296 + //0x00001040 LBB0_184 + 0x4c, 0x89, 0x6c, 0x24, 0x10, //0x00001040 movq %r13, $16(%rsp) + 0x49, 0x83, 0xf9, 0x20, //0x00001045 cmpq $32, %r9 + 0x0f, 0x82, 0x7b, 0x1c, 0x00, 0x00, //0x00001049 jb LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000104f movq $-1, $40(%rsp) + 0x45, 0x31, 0xd2, //0x00001058 xorl %r10d, %r10d + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000105b movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00001062 movq $-1, $48(%rsp) + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000106b .p2align 4, 0x90 + //0x00001070 LBB0_186 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x10, //0x00001070 vmovdqu (%r8,%r10), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00001076 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000107b vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x0000107f vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00001083 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd1, 0xf1, 0xff, 0xff, //0x00001087 vpcmpeqb $-3631(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x0000108f vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00001093 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe1, 0xf1, 0xff, 0xff, //0x00001097 vpcmpeqb $-3615(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x0000109f vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000010a3 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000010a7 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000010ab vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000010af vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000010b3 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000010b7 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000010bb vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000010bf notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000010c2 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000010c6 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000010c9 je LBB0_188 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000010cf movl $-1, %ebx + 0xd3, 0xe3, //0x000010d4 shll %cl, %ebx + 0xf7, 0xd3, //0x000010d6 notl %ebx + 0x21, 0xdf, //0x000010d8 andl %ebx, %edi + 0x21, 0xde, //0x000010da andl %ebx, %esi + 0x21, 0xd3, //0x000010dc andl %edx, %ebx + 0x89, 0xda, //0x000010de movl %ebx, %edx + //0x000010e0 LBB0_188 + 0x8d, 0x5f, 0xff, //0x000010e0 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000010e3 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd3, 0xf0, 0xff, 0xff, //0x000010e5 vmovdqu $-3885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x32, 0x16, 0x00, 0x00, //0x000010ed jne LBB0_476 + 0x8d, 0x5e, 0xff, //0x000010f3 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000010f6 andl %esi, %ebx + 0x0f, 0x85, 0x27, 0x16, 0x00, 0x00, //0x000010f8 jne LBB0_476 + 0x8d, 0x5a, 0xff, //0x000010fe leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00001101 andl %edx, %ebx + 0x0f, 0x85, 0x1c, 0x16, 0x00, 0x00, //0x00001103 jne LBB0_476 + 0x85, 0xff, //0x00001109 testl %edi, %edi + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000110b je LBB0_194 + 0x0f, 0xbc, 0xff, //0x00001111 bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001114 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xd1, 0x19, 0x00, 0x00, //0x0000111a jne LBB0_505 + 0x4c, 0x01, 0xd7, //0x00001120 addq %r10, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x00001123 movq %rdi, $48(%rsp) + //0x00001128 LBB0_194 + 0x85, 0xf6, //0x00001128 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000112a je LBB0_197 + 0x0f, 0xbc, 0xf6, //0x00001130 bsfl %esi, %esi + 0x49, 0x83, 0xfd, 0xff, //0x00001133 cmpq $-1, %r13 + 0x0f, 0x85, 0xbf, 0x19, 0x00, 0x00, //0x00001137 jne LBB0_506 + 0x4c, 0x01, 0xd6, //0x0000113d addq %r10, %rsi + 0x49, 0x89, 0xf5, //0x00001140 movq %rsi, %r13 + //0x00001143 LBB0_197 + 0x85, 0xd2, //0x00001143 testl %edx, %edx + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001145 je LBB0_200 + 0x0f, 0xbc, 0xd2, //0x0000114b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000114e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xad, 0x19, 0x00, 0x00, //0x00001154 jne LBB0_507 + 0x4c, 0x01, 0xd2, //0x0000115a addq %r10, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000115d movq %rdx, $40(%rsp) + //0x00001162 LBB0_200 + 0x83, 0xf9, 0x20, //0x00001162 cmpl $32, %ecx + 0x0f, 0x85, 0xc3, 0x02, 0x00, 0x00, //0x00001165 jne LBB0_234 + 0x49, 0x83, 0xc1, 0xe0, //0x0000116b addq $-32, %r9 + 0x49, 0x83, 0xc2, 0x20, //0x0000116f addq $32, %r10 + 0x49, 0x83, 0xf9, 0x1f, //0x00001173 cmpq $31, %r9 + 0x0f, 0x87, 0xf3, 0xfe, 0xff, 0xff, //0x00001177 ja LBB0_186 + 0xc5, 0xf8, 0x77, //0x0000117d vzeroupper + 0xc5, 0x7e, 0x6f, 0x35, 0x58, 0xf0, 0xff, 0xff, //0x00001180 vmovdqu $-4008(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb0, 0xf0, 0xff, 0xff, //0x00001188 vmovdqu $-3920(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x88, 0xf0, 0xff, 0xff, //0x00001190 vmovdqu $-3960(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x60, 0xf0, 0xff, 0xff, //0x00001198 vmovdqu $-4000(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xb8, 0xef, 0xff, 0xff, //0x000011a0 vmovdqu $-4168(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x90, 0xef, 0xff, 0xff, //0x000011a8 vmovdqu $-4208(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000011b0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x05, 0x63, 0xef, 0xff, 0xff, //0x000011b5 vmovdqu $-4253(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x3b, 0xef, 0xff, 0xff, //0x000011bd vmovdqu $-4293(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x13, 0xef, 0xff, 0xff, //0x000011c5 vmovdqu $-4333(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0xeb, 0xee, 0xff, 0xff, //0x000011cd vmovdqu $-4373(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0x4d, 0x01, 0xc2, //0x000011d5 addq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x000011d8 cmpq $16, %r9 + 0x0f, 0x82, 0x8f, 0x01, 0x00, 0x00, //0x000011dc jb LBB0_221 + //0x000011e2 LBB0_203 + 0x4c, 0x89, 0xd1, //0x000011e2 movq %r10, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000011e5 subq $16(%rsp), %rcx + 0x4c, 0x29, 0xf1, //0x000011ea subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000011ed addq $1, %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000011f1 movq %rcx, $56(%rsp) + 0x45, 0x31, 0xff, //0x000011f6 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000011f9 .p2align 4, 0x90 + //0x00001200 LBB0_204 + 0x4d, 0x89, 0xeb, //0x00001200 movq %r13, %r11 + 0x4d, 0x89, 0xc5, //0x00001203 movq %r8, %r13 + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x3a, //0x00001206 vmovdqu (%r10,%r15), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x2c, 0xee, 0xff, 0xff, //0x0000120c vpcmpgtb $-4564(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001214 vmovdqu $-4556(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x0000121c vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00001220 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001224 vpcmpeqb $-4556(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0x3c, 0xee, 0xff, 0xff, //0x0000122c vpcmpeqb $-4548(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00001234 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0xe0, 0xed, 0xff, 0xff, //0x00001238 vpand $-4640(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0x38, 0xee, 0xff, 0xff, //0x00001240 vpcmpeqb $-4552(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0x40, 0xee, 0xff, 0xff, //0x00001248 vpcmpeqb $-4544(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00001250 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00001254 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00001258 vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc0, //0x0000125c vpmovmskb %xmm0, %r8d + 0xc5, 0xf9, 0xd7, 0xf3, //0x00001260 vpmovmskb %xmm3, %esi + 0xc5, 0xf9, 0xd7, 0xd2, //0x00001264 vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x00001268 vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x0000126c notl %ecx + 0x0f, 0xbc, 0xc9, //0x0000126e bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001271 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001274 je LBB0_206 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000127a movl $-1, %edi + 0xd3, 0xe7, //0x0000127f shll %cl, %edi + 0xf7, 0xd7, //0x00001281 notl %edi + 0x41, 0x21, 0xf8, //0x00001283 andl %edi, %r8d + 0x21, 0xfe, //0x00001286 andl %edi, %esi + 0x21, 0xd7, //0x00001288 andl %edx, %edi + 0x89, 0xfa, //0x0000128a movl %edi, %edx + //0x0000128c LBB0_206 + 0xc5, 0xfe, 0x6f, 0x25, 0x0c, 0xf0, 0xff, 0xff, //0x0000128c vmovdqu $-4084(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x24, 0xef, 0xff, 0xff, //0x00001294 vmovdqu $-4316(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x41, 0x8d, 0x78, 0xff, //0x0000129c leal $-1(%r8), %edi + 0x44, 0x21, 0xc7, //0x000012a0 andl %r8d, %edi + 0x0f, 0x85, 0x54, 0x17, 0x00, 0x00, //0x000012a3 jne LBB0_501 + 0x8d, 0x7e, 0xff, //0x000012a9 leal $-1(%rsi), %edi + 0x21, 0xf7, //0x000012ac andl %esi, %edi + 0x0f, 0x85, 0x49, 0x17, 0x00, 0x00, //0x000012ae jne LBB0_501 + 0x8d, 0x7a, 0xff, //0x000012b4 leal $-1(%rdx), %edi + 0x21, 0xd7, //0x000012b7 andl %edx, %edi + 0x0f, 0x85, 0x3e, 0x17, 0x00, 0x00, //0x000012b9 jne LBB0_501 + 0x45, 0x85, 0xc0, //0x000012bf testl %r8d, %r8d + 0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x000012c2 je LBB0_212 + 0x41, 0x0f, 0xbc, 0xf8, //0x000012c8 bsfl %r8d, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000012cc cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xf0, 0x18, 0x00, 0x00, //0x000012d2 jne LBB0_520 + 0x48, 0x8b, 0x5c, 0x24, 0x38, //0x000012d8 movq $56(%rsp), %rbx + 0x4c, 0x01, 0xfb, //0x000012dd addq %r15, %rbx + 0x48, 0x01, 0xdf, //0x000012e0 addq %rbx, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x000012e3 movq %rdi, $48(%rsp) + //0x000012e8 LBB0_212 + 0x85, 0xf6, //0x000012e8 testl %esi, %esi + 0x4d, 0x89, 0xe8, //0x000012ea movq %r13, %r8 + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x000012ed je LBB0_215 + 0x0f, 0xbc, 0xf6, //0x000012f3 bsfl %esi, %esi + 0x49, 0x83, 0xfb, 0xff, //0x000012f6 cmpq $-1, %r11 + 0x0f, 0x85, 0xd3, 0x18, 0x00, 0x00, //0x000012fa jne LBB0_521 + 0x48, 0x8b, 0x7c, 0x24, 0x38, //0x00001300 movq $56(%rsp), %rdi + 0x4c, 0x01, 0xff, //0x00001305 addq %r15, %rdi + 0x48, 0x01, 0xfe, //0x00001308 addq %rdi, %rsi + 0x49, 0x89, 0xf5, //0x0000130b movq %rsi, %r13 + 0x85, 0xd2, //0x0000130e testl %edx, %edx + 0x0f, 0x85, 0x15, 0x00, 0x00, 0x00, //0x00001310 jne LBB0_216 + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001316 jmp LBB0_218 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000131b .p2align 4, 0x90 + //0x00001320 LBB0_215 + 0x4d, 0x89, 0xdd, //0x00001320 movq %r11, %r13 + 0x85, 0xd2, //0x00001323 testl %edx, %edx + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x00001325 je LBB0_218 + //0x0000132b LBB0_216 + 0x0f, 0xbc, 0xd2, //0x0000132b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000132e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xa4, 0x18, 0x00, 0x00, //0x00001334 jne LBB0_522 + 0x48, 0x8b, 0x74, 0x24, 0x38, //0x0000133a movq $56(%rsp), %rsi + 0x4c, 0x01, 0xfe, //0x0000133f addq %r15, %rsi + 0x48, 0x01, 0xf2, //0x00001342 addq %rsi, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x00001345 movq %rdx, $40(%rsp) + //0x0000134a LBB0_218 + 0x83, 0xf9, 0x10, //0x0000134a cmpl $16, %ecx + 0x0f, 0x85, 0x85, 0x03, 0x00, 0x00, //0x0000134d jne LBB0_280 + 0x49, 0x83, 0xc1, 0xf0, //0x00001353 addq $-16, %r9 + 0x49, 0x83, 0xc7, 0x10, //0x00001357 addq $16, %r15 + 0x49, 0x83, 0xf9, 0x0f, //0x0000135b cmpq $15, %r9 + 0x0f, 0x87, 0x9b, 0xfe, 0xff, 0xff, //0x0000135f ja LBB0_204 + 0x4d, 0x01, 0xfa, //0x00001365 addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001368 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000136d movq (%rsp), %r11 + //0x00001371 LBB0_221 + 0x4d, 0x85, 0xc9, //0x00001371 testq %r9, %r9 + 0xc5, 0xfe, 0x6f, 0x25, 0x24, 0xef, 0xff, 0xff, //0x00001374 vmovdqu $-4316(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x84, 0x6f, 0x03, 0x00, 0x00, //0x0000137c je LBB0_282 + 0x4b, 0x8d, 0x0c, 0x0a, //0x00001382 leaq (%r10,%r9), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x00001386 movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xd6, //0x0000138b movq %r10, %rsi + 0x48, 0x2b, 0x74, 0x24, 0x10, //0x0000138e subq $16(%rsp), %rsi + 0x4c, 0x29, 0xf6, //0x00001393 subq %r14, %rsi + 0x48, 0x83, 0xc6, 0x01, //0x00001396 addq $1, %rsi + 0x31, 0xc9, //0x0000139a xorl %ecx, %ecx + 0xc5, 0xfe, 0x6f, 0x1d, 0x1c, 0xee, 0xff, 0xff, //0x0000139c vmovdqu $-4580(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xe9, 0x24, 0x00, 0x00, 0x00, //0x000013a4 jmp LBB0_227 + //0x000013a9 LBB0_223 + 0x83, 0xff, 0x65, //0x000013a9 cmpl $101, %edi + 0x0f, 0x85, 0x3c, 0x03, 0x00, 0x00, //0x000013ac jne LBB0_281 + //0x000013b2 LBB0_224 + 0x49, 0x83, 0xfd, 0xff, //0x000013b2 cmpq $-1, %r13 + 0x0f, 0x85, 0x6e, 0x16, 0x00, 0x00, //0x000013b6 jne LBB0_503 + 0x4c, 0x8d, 0x2c, 0x0e, //0x000013bc leaq (%rsi,%rcx), %r13 + //0x000013c0 .p2align 4, 0x90 + //0x000013c0 LBB0_226 + 0x48, 0x83, 0xc1, 0x01, //0x000013c0 addq $1, %rcx + 0x49, 0x39, 0xc9, //0x000013c4 cmpq %rcx, %r9 + 0x0f, 0x84, 0xe8, 0x12, 0x00, 0x00, //0x000013c7 je LBB0_469 + //0x000013cd LBB0_227 + 0x41, 0x0f, 0xbe, 0x3c, 0x0a, //0x000013cd movsbl (%r10,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x000013d2 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x000013d5 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x000013d8 jb LBB0_226 + 0x8d, 0x5f, 0xd5, //0x000013de leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x000013e1 cmpl $26, %ebx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x000013e4 ja LBB0_223 + 0x48, 0x8d, 0x15, 0x5b, 0x2d, 0x00, 0x00, //0x000013ea leaq $11611(%rip), %rdx /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x000013f1 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x000013f5 addq %rdx, %rdi + 0xff, 0xe7, //0x000013f8 jmpq *%rdi + //0x000013fa LBB0_230 + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x000013fa cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0x24, 0x16, 0x00, 0x00, //0x00001400 jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001406 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000140a movq %rdx, $40(%rsp) + 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000140f jmp LBB0_226 + //0x00001414 LBB0_232 + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001414 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0x0a, 0x16, 0x00, 0x00, //0x0000141a jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001420 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x30, //0x00001424 movq %rdx, $48(%rsp) + 0xe9, 0x92, 0xff, 0xff, 0xff, //0x00001429 jmp LBB0_226 + //0x0000142e LBB0_234 + 0x4c, 0x01, 0xd1, //0x0000142e addq %r10, %rcx + 0x4c, 0x01, 0xc1, //0x00001431 addq %r8, %rcx + 0xc5, 0xf8, 0x77, //0x00001434 vzeroupper + 0x49, 0x89, 0xca, //0x00001437 movq %rcx, %r10 + 0xe9, 0xb2, 0x02, 0x00, 0x00, //0x0000143a jmp LBB0_282 + //0x0000143f LBB0_238 + 0x41, 0xf6, 0xc3, 0x40, //0x0000143f testb $64, %r11b + 0x0f, 0x85, 0x84, 0x04, 0x00, 0x00, //0x00001443 jne LBB0_306 + 0x4d, 0x8b, 0x0f, //0x00001449 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000144c movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00001451 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00001455 testb $32, %r11b + 0x0f, 0x85, 0x88, 0x0d, 0x00, 0x00, //0x00001459 jne LBB0_396 + 0x4d, 0x89, 0xc3, //0x0000145f movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x00001462 subq %r9, %r11 + 0x0f, 0x84, 0x13, 0x2a, 0x00, 0x00, //0x00001465 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x0000146b cmpq $64, %r11 + 0x0f, 0x82, 0x71, 0x19, 0x00, 0x00, //0x0000146f jb LBB0_541 + 0x4c, 0x89, 0xce, //0x00001475 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x00001478 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000147b movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00001482 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x00001485 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001488 .p2align 4, 0x90 + //0x00001490 LBB0_243 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00001490 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00001496 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000149d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000014a1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000014a5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x000014a9 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x000014ad vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000014b1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000014b5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000014b9 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x000014bd shlq $32, %rbx + 0x48, 0x09, 0xda, //0x000014c1 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x000014c4 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x000014c8 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000014cb jne LBB0_252 + 0x4d, 0x85, 0xd2, //0x000014d1 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000014d4 jne LBB0_254 + 0x45, 0x31, 0xd2, //0x000014da xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x000014dd testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x000014e0 jne LBB0_255 + //0x000014e6 LBB0_246 + 0x49, 0x83, 0xc3, 0xc0, //0x000014e6 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x000014ea addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x000014ee addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x000014f2 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x000014f6 ja LBB0_243 + 0xe9, 0xe8, 0x16, 0x00, 0x00, //0x000014fc jmp LBB0_247 + //0x00001501 LBB0_252 + 0x49, 0x83, 0xff, 0xff, //0x00001501 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001505 jne LBB0_254 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000150b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000150f addq %rax, %r15 + //0x00001512 LBB0_254 + 0x4c, 0x89, 0xd1, //0x00001512 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001515 notq %rcx + 0x48, 0x21, 0xf9, //0x00001518 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000151b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000151f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00001522 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001525 notq %rbx + 0x48, 0x21, 0xfb, //0x00001528 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000152b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00001535 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00001538 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000153b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000153e setb %r10b + 0x48, 0x01, 0xdb, //0x00001542 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001545 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000154f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00001552 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001555 notq %rbx + 0x48, 0x21, 0xda, //0x00001558 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000155b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000155e je LBB0_246 + //0x00001564 LBB0_255 + 0xc5, 0x7d, 0x7f, 0xea, //0x00001564 vmovdqa %ymm13, %ymm2 + 0x48, 0x0f, 0xbc, 0xc2, //0x00001568 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x0000156c subq %rsi, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x0000156f movq (%rsp), %r11 + 0xe9, 0x64, 0x11, 0x00, 0x00, //0x00001573 jmp LBB0_473 + //0x00001578 LBB0_256 + 0x4c, 0x89, 0xd9, //0x00001578 movq %r11, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000157b movq $32(%rsp), %rax + 0x4c, 0x8b, 0x58, 0x08, //0x00001580 movq $8(%rax), %r11 + 0x49, 0x8b, 0x07, //0x00001584 movq (%r15), %rax + 0xf6, 0xc1, 0x40, //0x00001587 testb $64, %cl + 0x0f, 0x85, 0x1d, 0x04, 0x00, 0x00, //0x0000158a jne LBB0_317 + 0x49, 0x29, 0xc3, //0x00001590 subq %rax, %r11 + 0x0f, 0x84, 0xc6, 0x28, 0x00, 0x00, //0x00001593 je LBB0_723 + 0x4d, 0x8d, 0x2c, 0x06, //0x00001599 leaq (%r14,%rax), %r13 + 0x41, 0x80, 0x7d, 0x00, 0x30, //0x0000159d cmpb $48, (%r13) + 0x0f, 0x85, 0xa6, 0x0d, 0x00, 0x00, //0x000015a2 jne LBB0_417 + 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000015a8 movl $1, %r8d + 0x49, 0x83, 0xfb, 0x01, //0x000015ae cmpq $1, %r11 + 0x0f, 0x85, 0x6c, 0x0d, 0x00, 0x00, //0x000015b2 jne LBB0_415 + //0x000015b8 LBB0_260 + 0x48, 0x89, 0xc1, //0x000015b8 movq %rax, %rcx + 0xe9, 0x8e, 0x15, 0x00, 0x00, //0x000015bb jmp LBB0_514 + //0x000015c0 LBB0_261 + 0x41, 0xf6, 0xc3, 0x40, //0x000015c0 testb $64, %r11b + 0x0f, 0x85, 0x7a, 0x05, 0x00, 0x00, //0x000015c4 jne LBB0_334 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000015ca movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000015cf movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015d2 cmpq $4095, %rcx + 0x0f, 0x8f, 0xca, 0x26, 0x00, 0x00, //0x000015d9 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000015df leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000015e3 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000015e6 movq $5, $8(%rdx,%rcx,8) + 0xe9, 0xac, 0xed, 0xff, 0xff, //0x000015ef jmp LBB0_3 + //0x000015f4 LBB0_264 + 0x49, 0x8b, 0x0f, //0x000015f4 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x000015f7 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x000015fc movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001600 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001604 cmpq %rsi, %rcx + 0x0f, 0x87, 0x1a, 0x27, 0x00, 0x00, //0x00001607 ja LBB0_711 + 0x41, 0x8b, 0x14, 0x0e, //0x0000160d movl (%r14,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001611 cmpl $1702063201, %edx + 0x0f, 0x85, 0x28, 0x27, 0x00, 0x00, //0x00001617 jne LBB0_712 + 0x48, 0x8d, 0x41, 0x04, //0x0000161d leaq $4(%rcx), %rax + 0x49, 0x89, 0x07, //0x00001621 movq %rax, (%r15) + 0x48, 0x85, 0xc9, //0x00001624 testq %rcx, %rcx + 0x0f, 0x8f, 0x73, 0xed, 0xff, 0xff, //0x00001627 jg LBB0_3 + 0xe9, 0x06, 0x28, 0x00, 0x00, //0x0000162d jmp LBB0_267 + //0x00001632 LBB0_268 + 0x49, 0x8b, 0x0f, //0x00001632 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001635 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000163a movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000163e leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001642 cmpq %rsi, %rcx + 0x0f, 0x87, 0xdc, 0x26, 0x00, 0x00, //0x00001645 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000164b leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000164f cmpl $1819047278, $-1(%r14,%rcx) + 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00001658 je LBB0_276 + 0xe9, 0x37, 0x27, 0x00, 0x00, //0x0000165e jmp LBB0_270 + //0x00001663 LBB0_274 + 0x49, 0x8b, 0x0f, //0x00001663 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001666 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000166b movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000166f leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001673 cmpq %rsi, %rcx + 0x0f, 0x87, 0xab, 0x26, 0x00, 0x00, //0x00001676 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000167c leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001680 cmpl $1702195828, $-1(%r14,%rcx) + 0x0f, 0x85, 0x52, 0x27, 0x00, 0x00, //0x00001689 jne LBB0_717 + //0x0000168f LBB0_276 + 0x48, 0x8d, 0x51, 0x03, //0x0000168f leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00001693 movq %rdx, (%r15) + 0x48, 0x85, 0xc9, //0x00001696 testq %rcx, %rcx + 0x0f, 0x8f, 0x01, 0xed, 0xff, 0xff, //0x00001699 jg LBB0_3 + 0xe9, 0x71, 0x26, 0x00, 0x00, //0x0000169f jmp LBB0_728 + //0x000016a4 LBB0_277 + 0x41, 0xf6, 0xc3, 0x40, //0x000016a4 testb $64, %r11b + 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x000016a8 jne LBB0_360 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000016ae movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000016b3 movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000016b6 cmpq $4095, %rcx + 0x0f, 0x8f, 0xe6, 0x25, 0x00, 0x00, //0x000016bd jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000016c3 leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000016c7 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000016ca movq $6, $8(%rdx,%rcx,8) + 0xe9, 0xc8, 0xec, 0xff, 0xff, //0x000016d3 jmp LBB0_3 + //0x000016d8 LBB0_280 + 0x89, 0xc9, //0x000016d8 movl %ecx, %ecx + 0x49, 0x01, 0xca, //0x000016da addq %rcx, %r10 + 0x4d, 0x01, 0xfa, //0x000016dd addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000016e0 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000016e5 movq (%rsp), %r11 + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000016e9 jmp LBB0_282 + //0x000016ee LBB0_281 + 0x49, 0x01, 0xca, //0x000016ee addq %rcx, %r10 + //0x000016f1 LBB0_282 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000016f1 movq $-1, %rcx + 0x48, 0x8b, 0x74, 0x24, 0x30, //0x000016f8 movq $48(%rsp), %rsi + 0x48, 0x85, 0xf6, //0x000016fd testq %rsi, %rsi + 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001700 movq $40(%rsp), %rdx + 0x0f, 0x84, 0xf6, 0x25, 0x00, 0x00, //0x00001705 je LBB0_708 + 0x48, 0x85, 0xd2, //0x0000170b testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x1d, 0xaa, 0xea, 0xff, 0xff, //0x0000170e vmovdqu $-5462(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x84, 0xe5, 0x25, 0x00, 0x00, //0x00001716 je LBB0_708 + 0x4d, 0x85, 0xed, //0x0000171c testq %r13, %r13 + 0x0f, 0x84, 0xdc, 0x25, 0x00, 0x00, //0x0000171f je LBB0_708 + 0x4d, 0x29, 0xc2, //0x00001725 subq %r8, %r10 + 0x49, 0x8d, 0x4a, 0xff, //0x00001728 leaq $-1(%r10), %rcx + 0x48, 0x39, 0xce, //0x0000172c cmpq %rcx, %rsi + 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000172f je LBB0_291 + 0x48, 0x39, 0xca, //0x00001735 cmpq %rcx, %rdx + 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001738 je LBB0_291 + 0x49, 0x39, 0xcd, //0x0000173e cmpq %rcx, %r13 + 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x00001741 je LBB0_291 + 0x48, 0x85, 0xd2, //0x00001747 testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x2d, 0x6e, 0xe9, 0xff, 0xff, //0x0000174a vmovdqu $-5778(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x86, 0xe9, 0xff, 0xff, //0x00001752 vmovdqu $-5754(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x9e, 0xe9, 0xff, 0xff, //0x0000175a vmovdqu $-5730(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xb6, 0xe9, 0xff, 0xff, //0x00001762 vmovdqu $-5706(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000176a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x89, 0xea, 0xff, 0xff, //0x0000176f vmovdqu $-5495(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xa1, 0xea, 0xff, 0xff, //0x00001777 vmovdqu $-5471(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb9, 0xea, 0xff, 0xff, //0x0000177f vmovdqu $-5447(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xea, 0xff, 0xff, //0x00001787 vmovdqu $-5551(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xeb, 0xff, 0xff, //0x0000178f vmovdqu $-5367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x8e, 0xa5, 0x00, 0x00, 0x00, //0x00001797 jle LBB0_297 + 0x48, 0x8d, 0x4a, 0xff, //0x0000179d leaq $-1(%rdx), %rcx + 0x49, 0x39, 0xcd, //0x000017a1 cmpq %rcx, %r13 + 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000017a4 je LBB0_297 + 0x48, 0xf7, 0xd2, //0x000017aa notq %rdx + 0x49, 0x89, 0xd2, //0x000017ad movq %rdx, %r10 + 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000017b0 jmp LBB0_292 + //0x000017b5 LBB0_291 + 0x49, 0xf7, 0xda, //0x000017b5 negq %r10 + 0xc5, 0xfe, 0x6f, 0x2d, 0x00, 0xe9, 0xff, 0xff, //0x000017b8 vmovdqu $-5888(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x18, 0xe9, 0xff, 0xff, //0x000017c0 vmovdqu $-5864(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x30, 0xe9, 0xff, 0xff, //0x000017c8 vmovdqu $-5840(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x48, 0xe9, 0xff, 0xff, //0x000017d0 vmovdqu $-5816(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000017d8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x1b, 0xea, 0xff, 0xff, //0x000017dd vmovdqu $-5605(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x33, 0xea, 0xff, 0xff, //0x000017e5 vmovdqu $-5581(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x4b, 0xea, 0xff, 0xff, //0x000017ed vmovdqu $-5557(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xe3, 0xe9, 0xff, 0xff, //0x000017f5 vmovdqu $-5661(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x9b, 0xea, 0xff, 0xff, //0x000017fd vmovdqu $-5477(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + //0x00001805 LBB0_292 + 0xc5, 0x7e, 0x6f, 0x1d, 0x33, 0xe9, 0xff, 0xff, //0x00001805 vmovdqu $-5837(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x4b, 0xe9, 0xff, 0xff, //0x0000180d vmovdqu $-5813(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + //0x00001815 LBB0_293 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00001815 movq $16(%rsp), %r13 + //0x0000181a LBB0_294 + 0x4d, 0x85, 0xd2, //0x0000181a testq %r10, %r10 + 0x0f, 0x88, 0xdb, 0x24, 0x00, 0x00, //0x0000181d js LBB0_707 + 0x49, 0x8b, 0x0f, //0x00001823 movq (%r15), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x00001826 addq $-1, %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x0000182a vmovdqa %ymm0, %ymm13 + //0x0000182e LBB0_296 + 0x4c, 0x01, 0xd1, //0x0000182e addq %r10, %rcx + 0x49, 0x89, 0x0f, //0x00001831 movq %rcx, (%r15) + 0x4d, 0x85, 0xed, //0x00001834 testq %r13, %r13 + 0x0f, 0x8f, 0x63, 0xeb, 0xff, 0xff, //0x00001837 jg LBB0_3 + 0xe9, 0xd3, 0x24, 0x00, 0x00, //0x0000183d jmp LBB0_728 + //0x00001842 LBB0_297 + 0x48, 0x89, 0xf1, //0x00001842 movq %rsi, %rcx + 0x4c, 0x09, 0xe9, //0x00001845 orq %r13, %rcx + 0x0f, 0x99, 0xc1, //0x00001848 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0xed, 0xe8, 0xff, 0xff, //0x0000184b vmovdqu $-5907(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x05, 0xe9, 0xff, 0xff, //0x00001853 vmovdqu $-5883(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0x6d, 0x09, 0x00, 0x00, //0x0000185b js LBB0_395 + 0x4c, 0x39, 0xee, //0x00001861 cmpq %r13, %rsi + 0x0f, 0x8c, 0x64, 0x09, 0x00, 0x00, //0x00001864 jl LBB0_395 + 0x48, 0xf7, 0xd6, //0x0000186a notq %rsi + 0x49, 0x89, 0xf2, //0x0000186d movq %rsi, %r10 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x00001870 jmp LBB0_293 + //0x00001875 LBB0_300 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001875 movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000187a movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x0000187e cmpq %rcx, %rdx + 0x0f, 0x82, 0xff, 0x25, 0x00, 0x00, //0x00001881 jb LBB0_162 + //0x00001887 LBB0_301 + 0x48, 0x01, 0xc8, //0x00001887 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000188a addq $1, %rax + //0x0000188e LBB0_302 + 0x48, 0x85, 0xc0, //0x0000188e testq %rax, %rax + 0x0f, 0x88, 0x2a, 0x24, 0x00, 0x00, //0x00001891 js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001897 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x0000189c movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x0000189f testq %r9, %r9 + 0x0f, 0x8e, 0x32, 0x24, 0x00, 0x00, //0x000018a2 jle LBB0_475 + //0x000018a8 LBB0_304 + 0x49, 0x8b, 0x0a, //0x000018a8 movq (%r10), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000018ab cmpq $4095, %rcx + 0x0f, 0x8f, 0xf1, 0x23, 0x00, 0x00, //0x000018b2 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000018b8 leaq $1(%rcx), %rax + 0x49, 0x89, 0x02, //0x000018bc movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xca, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000018bf movq $4, $8(%r10,%rcx,8) + 0xe9, 0xd3, 0xea, 0xff, 0xff, //0x000018c8 jmp LBB0_3 + //0x000018cd LBB0_306 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000018cd movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000018d2 movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000018d6 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000018d9 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000018dd subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000018e0 cmpq $32, %r10 + 0x0f, 0x8c, 0xac, 0x00, 0x00, 0x00, //0x000018e4 jl LBB0_316 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000018ea movl $32, %edx + 0x31, 0xf6, //0x000018ef xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000018f1 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018f4 .p2align 4, 0x90 + //0x00001900 LBB0_308 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001900 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00001906 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x0000190a vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x0000190e vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00001912 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00001916 testl %ebx, %ebx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001918 jne LBB0_311 + 0x4d, 0x85, 0xff, //0x0000191e testq %r15, %r15 + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001921 jne LBB0_311 + 0x45, 0x31, 0xff, //0x00001927 xorl %r15d, %r15d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x0000192a jmp LBB0_312 + 0x90, //0x0000192f .p2align 4, 0x90 + //0x00001930 LBB0_311 + 0x44, 0x89, 0xf9, //0x00001930 movl %r15d, %ecx + 0xf7, 0xd1, //0x00001933 notl %ecx + 0x21, 0xd9, //0x00001935 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00001937 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x0000193b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x0000193e movl %r13d, %edi + 0xf7, 0xd7, //0x00001941 notl %edi + 0x21, 0xdf, //0x00001943 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001945 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x0000194b xorl %r15d, %r15d + 0x01, 0xcf, //0x0000194e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00001950 setb %r15b + 0x01, 0xff, //0x00001954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001956 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x0000195c andl %r13d, %edi + 0xf7, 0xd7, //0x0000195f notl %edi + 0x41, 0x21, 0xfb, //0x00001961 andl %edi, %r11d + //0x00001964 LBB0_312 + 0x4d, 0x85, 0xdb, //0x00001964 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0xf1, 0xff, 0xff, //0x00001967 jne LBB0_104 + 0x48, 0x83, 0xc6, 0x20, //0x0000196d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00001971 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001975 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00001979 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x0000197d cmpq $63, %rcx + 0x0f, 0x8f, 0x79, 0xff, 0xff, 0xff, //0x00001981 jg LBB0_308 + 0x4d, 0x85, 0xff, //0x00001987 testq %r15, %r15 + 0x0f, 0x85, 0xad, 0x1e, 0x00, 0x00, //0x0000198a jne LBB0_645 + 0x49, 0x01, 0xf1, //0x00001990 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00001993 subq %rsi, %r10 + //0x00001996 LBB0_316 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001996 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000199b movq (%rsp), %r11 + 0x4d, 0x85, 0xd2, //0x0000199f testq %r10, %r10 + 0x0f, 0x8f, 0x07, 0x1f, 0x00, 0x00, //0x000019a2 jg LBB0_649 + 0xe9, 0x68, 0x23, 0x00, 0x00, //0x000019a8 jmp LBB0_728 + //0x000019ad LBB0_317 + 0x4c, 0x89, 0xde, //0x000019ad movq %r11, %rsi + 0x48, 0x29, 0xc6, //0x000019b0 subq %rax, %rsi + 0x48, 0x83, 0xfe, 0x20, //0x000019b3 cmpq $32, %rsi + 0x0f, 0x82, 0xe8, 0x13, 0x00, 0x00, //0x000019b7 jb LBB0_539 + 0x48, 0x89, 0xc7, //0x000019bd movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x000019c0 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x000019c3 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x000019c7 leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x06, //0x000019cb leaq (%r14,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x000019cf addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x000019d3 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000019d6 .p2align 4, 0x90 + //0x000019e0 LBB0_319 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x000019e0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x000019e6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x000019ea vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0xaa, 0xe7, 0xff, 0xff, //0x000019ee vpcmpeqb $-6230(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x000019f6 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000019fa vpmovmskb %ymm0, %ecx + 0x85, 0xc9, //0x000019fe testl %ecx, %ecx + 0x0f, 0x85, 0x57, 0x07, 0x00, 0x00, //0x00001a00 jne LBB0_388 + 0x48, 0x83, 0xc3, 0x20, //0x00001a06 addq $32, %rbx + 0x49, 0x8d, 0x0c, 0x3b, //0x00001a0a leaq (%r11,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001a0e addq $-32, %rcx + 0x48, 0x83, 0xc7, 0xe0, //0x00001a12 addq $-32, %rdi + 0x49, 0x83, 0xc0, 0x20, //0x00001a16 addq $32, %r8 + 0x48, 0x83, 0xc2, 0x20, //0x00001a1a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00001a1e addq $32, %rsi + 0x48, 0x83, 0xf9, 0x1f, //0x00001a22 cmpq $31, %rcx + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00001a26 ja LBB0_319 + 0x4d, 0x89, 0xf0, //0x00001a2c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00001a2f subq %rdi, %r8 + 0x49, 0x01, 0xfb, //0x00001a32 addq %rdi, %r11 + 0x4c, 0x89, 0xde, //0x00001a35 movq %r11, %rsi + 0x48, 0x83, 0xfe, 0x10, //0x00001a38 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00001a3c movq (%rsp), %r11 + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00001a40 jb LBB0_325 + //0x00001a46 LBB0_322 + 0x4d, 0x89, 0xf1, //0x00001a46 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00001a49 subq %r8, %r9 + 0x4c, 0x89, 0xc7, //0x00001a4c movq %r8, %rdi + 0x4c, 0x29, 0xf7, //0x00001a4f subq %r14, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00001a52 addq $1, %rdi + 0x49, 0x8d, 0x58, 0xff, //0x00001a56 leaq $-1(%r8), %rbx + 0x48, 0x89, 0xda, //0x00001a5a movq %rbx, %rdx + 0x4c, 0x29, 0xf2, //0x00001a5d subq %r14, %rdx + //0x00001a60 LBB0_323 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00001a60 vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0xa3, 0xe5, 0xff, 0xff, //0x00001a65 vpcmpeqb $-6749(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0xab, 0xe5, 0xff, 0xff, //0x00001a6d vpand $-6741(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xb3, 0xe5, 0xff, 0xff, //0x00001a75 vpcmpeqb $-6733(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00001a7d vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xc8, //0x00001a81 vpmovmskb %xmm0, %ecx + 0x85, 0xc9, //0x00001a85 testl %ecx, %ecx + 0x0f, 0x85, 0xd9, 0x10, 0x00, 0x00, //0x00001a87 jne LBB0_515 + 0x49, 0x83, 0xc0, 0x10, //0x00001a8d addq $16, %r8 + 0x48, 0x83, 0xc6, 0xf0, //0x00001a91 addq $-16, %rsi + 0x49, 0x83, 0xc1, 0xf0, //0x00001a95 addq $-16, %r9 + 0x48, 0x83, 0xc7, 0x10, //0x00001a99 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001a9d addq $16, %rdx + 0x48, 0x83, 0xc3, 0x10, //0x00001aa1 addq $16, %rbx + 0x48, 0x83, 0xfe, 0x0f, //0x00001aa5 cmpq $15, %rsi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00001aa9 ja LBB0_323 + //0x00001aaf LBB0_325 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00001aaf vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00001ab3 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001ab7 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xf6, //0x00001abc testq %rsi, %rsi + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00001abf je LBB0_333 + 0x49, 0x8d, 0x0c, 0x30, //0x00001ac5 leaq (%r8,%rsi), %rcx + //0x00001ac9 LBB0_327 + 0x41, 0x0f, 0xb6, 0x10, //0x00001ac9 movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00001acd cmpq $44, %rdx + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x00001ad1 ja LBB0_329 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00001ad7 movabsq $17596481021440, %rdi + 0x48, 0x0f, 0xa3, 0xd7, //0x00001ae1 btq %rdx, %rdi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00001ae5 jb LBB0_333 + //0x00001aeb LBB0_329 + 0x80, 0xfa, 0x5d, //0x00001aeb cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00001aee je LBB0_333 + 0x80, 0xfa, 0x7d, //0x00001af4 cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001af7 je LBB0_333 + 0x49, 0x83, 0xc0, 0x01, //0x00001afd addq $1, %r8 + 0x48, 0x83, 0xc6, 0xff, //0x00001b01 addq $-1, %rsi + 0x0f, 0x85, 0xbe, 0xff, 0xff, 0xff, //0x00001b05 jne LBB0_327 + 0x49, 0x89, 0xc8, //0x00001b0b movq %rcx, %r8 + //0x00001b0e LBB0_333 + 0x4d, 0x29, 0xf0, //0x00001b0e subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001b11 movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x00001b16 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x00001b19 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001b1d vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001b22 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x71, 0xe7, 0xff, 0xff, //0x00001b27 vmovdqu $-6287(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x89, 0xe6, 0xff, 0xff, //0x00001b2f vmovdqu $-6519(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00001b37 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00001b3b vmovdqa %ymm1, %ymm12 + 0xe9, 0x7c, 0x06, 0x00, 0x00, //0x00001b3f jmp LBB0_393 + //0x00001b44 LBB0_334 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001b44 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001b49 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001b4d movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001b50 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001b53 addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001b56 xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001b59 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001b5c xorl %r15d, %r15d + 0x31, 0xdb, //0x00001b5f xorl %ebx, %ebx + 0x49, 0x83, 0xf9, 0x40, //0x00001b61 cmpq $64, %r9 + 0x0f, 0x8d, 0x57, 0x01, 0x00, 0x00, //0x00001b65 jge LBB0_335 + //0x00001b6b LBB0_344 + 0x4d, 0x85, 0xc9, //0x00001b6b testq %r9, %r9 + 0x0f, 0x8e, 0x24, 0x23, 0x00, 0x00, //0x00001b6e jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b74 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b78 vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001b7d vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b81 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b87 vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001b8d movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001b90 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001b96 cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b9c jb LBB0_348 + 0x49, 0x83, 0xf9, 0x20, //0x00001ba2 cmpq $32, %r9 + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001ba6 jb LBB0_349 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001bac vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001bb1 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x00001bb7 addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00001bbb leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001bbf leaq $96(%rsp), %rsi + 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bc4 jmp LBB0_350 + //0x00001bc9 LBB0_348 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bc9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bce vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc5, 0xe6, 0xff, 0xff, //0x00001bd3 vmovdqu $-6459(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xdd, 0xe5, 0xff, 0xff, //0x00001bdb vmovdqu $-6691(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001be3 vmovdqa %ymm1, %ymm11 + 0xe9, 0xd6, 0x00, 0x00, 0x00, //0x00001be7 jmp LBB0_335 + //0x00001bec LBB0_349 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bec leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x00001bf1 movq %r9, %rdi + //0x00001bf4 LBB0_350 + 0x48, 0x83, 0xff, 0x10, //0x00001bf4 cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001bf8 jb LBB0_351 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bfe vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x00001c03 vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00001c07 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00001c0b addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00001c0f addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00001c13 cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c17 jae LBB0_358 + //0x00001c1d LBB0_352 + 0x48, 0x83, 0xff, 0x04, //0x00001c1d cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c21 jl LBB0_353 + //0x00001c27 LBB0_359 + 0x41, 0x8b, 0x0e, //0x00001c27 movl (%r14), %ecx + 0x89, 0x0e, //0x00001c2a movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00001c2c addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x00001c30 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00001c34 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00001c38 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c3c jae LBB0_354 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c42 jmp LBB0_355 + //0x00001c47 LBB0_351 + 0x48, 0x83, 0xff, 0x08, //0x00001c47 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c4b jb LBB0_352 + //0x00001c51 LBB0_358 + 0x49, 0x8b, 0x0e, //0x00001c51 movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x00001c54 movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x00001c57 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x00001c5b addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x00001c5f addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00001c63 cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c67 jge LBB0_359 + //0x00001c6d LBB0_353 + 0x48, 0x83, 0xff, 0x02, //0x00001c6d cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c71 jb LBB0_355 + //0x00001c77 LBB0_354 + 0x41, 0x0f, 0xb7, 0x0e, //0x00001c77 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x00001c7b movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x00001c7e addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x00001c82 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x00001c86 addq $-2, %rdi + //0x00001c8a LBB0_355 + 0x4c, 0x89, 0xf2, //0x00001c8a movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c8d leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x00001c92 testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c95 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c9a vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf9, 0xe5, 0xff, 0xff, //0x00001c9f vmovdqu $-6663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x11, 0xe5, 0xff, 0xff, //0x00001ca7 vmovdqu $-6895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001caf vmovdqa %ymm1, %ymm11 + 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x00001cb3 je LBB0_335 + 0x8a, 0x0a, //0x00001cb9 movb (%rdx), %cl + 0x88, 0x0e, //0x00001cbb movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cbd leaq $64(%rsp), %r14 + //0x00001cc2 LBB0_335 + 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001cc2 vmovdqa %ymm13, %ymm15 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cc7 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001ccc vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001cd2 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001cd6 vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001cda vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001cde vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001ce2 shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001ce6 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001ce9 movq %rdx, %rcx + 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001cec vmovdqa %ymm10, %ymm13 + 0x4c, 0x09, 0xd1, //0x00001cf1 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001cf4 jne LBB0_337 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001cfa movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001d01 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d04 jmp LBB0_338 + //0x00001d09 LBB0_337 + 0x4c, 0x89, 0xd1, //0x00001d09 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001d0c notq %rcx + 0x48, 0x21, 0xd1, //0x00001d0f andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001d12 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001d16 orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001d19 movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001d1c notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d1f movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001d29 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001d2c andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001d2f xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001d32 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001d35 setb %r10b + 0x48, 0x01, 0xd2, //0x00001d39 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d3c movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001d46 xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001d49 andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001d4c notq %rdx + //0x00001d4f LBB0_338 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001d4f vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d53 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d57 shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001d5b vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d5f vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001d63 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001d66 andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001d69 vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x28, 0xe3, 0xff, 0xff, 0x00, //0x00001d6e vpclmulqdq $0, $-7384(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001d78 vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001d7d xorq %r11, %r13 + 0xc5, 0x7e, 0x6f, 0x15, 0xf8, 0xe3, 0xff, 0xff, //0x00001d80 vmovdqu $-7176(%rip), %ymm10 /* LCPI0_7+0(%rip) */ + 0xc5, 0xad, 0x74, 0xd1, //0x00001d88 vpcmpeqb %ymm1, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d8c vpmovmskb %ymm2, %esi + 0xc5, 0xad, 0x74, 0xd0, //0x00001d90 vpcmpeqb %ymm0, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d94 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d98 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001d9c orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001d9f movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001da2 notq %rcx + 0x48, 0x21, 0xce, //0x00001da5 andq %rcx, %rsi + 0xc5, 0xfe, 0x6f, 0x15, 0xf0, 0xe3, 0xff, 0xff, //0x00001da8 vmovdqu $-7184(%rip), %ymm2 /* LCPI0_8+0(%rip) */ + 0xc5, 0xf5, 0x74, 0xca, //0x00001db0 vpcmpeqb %ymm2, %ymm1, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001db4 vpmovmskb %ymm1, %edi + 0xc5, 0xfd, 0x74, 0xc2, //0x00001db8 vpcmpeqb %ymm2, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001dbc vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001dc0 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001dc4 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001dc7 andq %rcx, %rdi + 0x0f, 0x84, 0x4d, 0x00, 0x00, 0x00, //0x00001dca je LBB0_342 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001dd0 movq (%rsp), %r11 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001dd4 vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001dd9 vmovdqa %ymm15, %ymm13 + 0xc5, 0x7e, 0x6f, 0x3d, 0x5a, 0xe4, 0xff, 0xff, //0x00001dde vmovdqu $-7078(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001de6 .p2align 4, 0x90 + //0x00001df0 LBB0_340 + 0x48, 0x8d, 0x4f, 0xff, //0x00001df0 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001df4 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001df7 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001dfa popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001dff addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001e02 cmpq %rbx, %rdx + 0x0f, 0x86, 0x1a, 0x03, 0x00, 0x00, //0x00001e05 jbe LBB0_386 0x48, 0x83, 0xc3, 0x01, //0x00001e0b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001e0f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_362 - 0xe9, 0xb8, 0xfe, 0xff, 0xff, //0x00001e18 jmp LBB0_356 - //0x00001e1d LBB0_364 - 0x4d, 0x85, 0xc9, //0x00001e1d testq %r9, %r9 - 0x0f, 0x8e, 0x57, 0x1f, 0x00, 0x00, //0x00001e20 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00001e26 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001e2a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001e2e vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001e33 vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001e37 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e3d vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001e43 movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001e46 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001e4b cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001e50 jb LBB0_368 - 0x49, 0x83, 0xf9, 0x20, //0x00001e56 cmpq $32, %r9 - 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001e5a jb LBB0_369 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001e60 vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e65 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001e6b addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001e6f leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001e73 leaq $96(%rsp), %rsi - 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001e78 jmp LBB0_370 - //0x00001e7d LBB0_368 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001e7d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001e82 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xe4, 0xff, 0xff, //0x00001e87 vmovdqu $-7151(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xe3, 0xff, 0xff, //0x00001e8f vmovdqu $-7383(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001e97 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001e9b vmovdqa %ymm2, %ymm12 - 0xe9, 0x52, 0xfe, 0xff, 0xff, //0x00001e9f jmp LBB0_358 - //0x00001ea4 LBB0_369 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001ea4 leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001ea9 movq %r9, %rdi - //0x00001eac LBB0_370 - 0x48, 0x83, 0xff, 0x10, //0x00001eac cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001eb0 jb LBB0_371 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001eb6 vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001ebb vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001ebf addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001ec3 addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001ec7 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001ecb cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001ecf jae LBB0_378 - //0x00001ed5 LBB0_372 - 0x48, 0x83, 0xff, 0x04, //0x00001ed5 cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001ed9 jl LBB0_373 - //0x00001edf LBB0_379 - 0x41, 0x8b, 0x06, //0x00001edf movl (%r14), %eax - 0x89, 0x06, //0x00001ee2 movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001ee4 addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001ee8 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001eec addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001ef0 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001ef4 jae LBB0_374 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001efa jmp LBB0_375 - //0x00001eff LBB0_371 - 0x48, 0x83, 0xff, 0x08, //0x00001eff cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001f03 jb LBB0_372 - //0x00001f09 LBB0_378 - 0x49, 0x8b, 0x06, //0x00001f09 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001f0c movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001f0f addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001f13 addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001f17 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001f1b cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001f1f jge LBB0_379 - //0x00001f25 LBB0_373 - 0x48, 0x83, 0xff, 0x02, //0x00001f25 cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001f29 jb LBB0_375 - //0x00001f2f LBB0_374 - 0x41, 0x0f, 0xb7, 0x06, //0x00001f2f movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001f33 movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001f36 addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001f3a addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001f3e addq $-2, %rdi - //0x00001f42 LBB0_375 - 0x4c, 0x89, 0xf2, //0x00001f42 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f45 leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001f4a testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001f4d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001f52 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x41, 0xe3, 0xff, 0xff, //0x00001f57 vmovdqu $-7359(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x59, 0xe2, 0xff, 0xff, //0x00001f5f vmovdqu $-7591(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001f67 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001f6b vmovdqa %ymm2, %ymm12 - 0x0f, 0x84, 0x81, 0xfd, 0xff, 0xff, //0x00001f6f je LBB0_358 - 0x8a, 0x02, //0x00001f75 movb (%rdx), %al - 0x88, 0x06, //0x00001f77 movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f79 leaq $64(%rsp), %r14 - 0xe9, 0x73, 0xfd, 0xff, 0xff, //0x00001f7e jmp LBB0_358 - //0x00001f83 LBB0_380 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001f83 movq $16(%rsp), %rdi - 0x48, 0x8b, 0x47, 0x08, //0x00001f88 movq $8(%rdi), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00001f8c bsfq %rdx, %rcx - 0x4c, 0x29, 0xc9, //0x00001f90 subq %r9, %rcx - 0x48, 0x01, 0xc8, //0x00001f93 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001f96 addq $1, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001f9a movq %rax, (%r13) - 0x48, 0x8b, 0x4f, 0x08, //0x00001f9e movq $8(%rdi), %rcx - 0x48, 0x39, 0xc8, //0x00001fa2 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x00001fa5 cmovaq %rcx, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001fa9 movq %rax, (%r13) - 0x0f, 0x87, 0xe2, 0x1b, 0x00, 0x00, //0x00001fad ja LBB0_711 - 0x4d, 0x85, 0xc0, //0x00001fb3 testq %r8, %r8 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001fb6 movq $24(%rsp), %r11 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001fbb movq $8(%rsp), %r15 - 0x0f, 0x8f, 0xda, 0xe3, 0xff, 0xff, //0x00001fc0 jg LBB0_3 - 0xe9, 0x61, 0x1b, 0x00, 0x00, //0x00001fc6 jmp LBB0_679 - //0x00001fcb LBB0_382 - 0x0f, 0xbc, 0xce, //0x00001fcb bsfl %esi, %ecx - 0x48, 0x29, 0xd1, //0x00001fce subq %rdx, %rcx - //0x00001fd1 LBB0_383 - 0x48, 0x8b, 0x1c, 0x24, //0x00001fd1 movq (%rsp), %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00001fd5 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00001fd9 testq %rbx, %rbx - 0x0f, 0x8f, 0xbe, 0xe3, 0xff, 0xff, //0x00001fdc jg LBB0_3 - 0xe9, 0xea, 0x1c, 0x00, 0x00, //0x00001fe2 jmp LBB0_698 - //0x00001fe7 LBB0_384 - 0x49, 0x8d, 0x41, 0xff, //0x00001fe7 leaq $-1(%r9), %rax - 0x48, 0x39, 0xc2, //0x00001feb cmpq %rax, %rdx - 0x49, 0xf7, 0xd1, //0x00001fee notq %r9 - 0x4d, 0x0f, 0x45, 0xcd, //0x00001ff1 cmovneq %r13, %r9 - 0x84, 0xc9, //0x00001ff5 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xe9, //0x00001ff7 cmovneq %r9, %r13 - 0xe9, 0x21, 0xf7, 0xff, 0xff, //0x00001ffb jmp LBB0_290 - //0x00002000 LBB0_385 - 0x4d, 0x29, 0xc8, //0x00002000 subq %r9, %r8 - 0x0f, 0x84, 0x5a, 0x1d, 0x00, 0x00, //0x00002003 je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00002009 cmpq $64, %r8 - 0x0f, 0x82, 0xdb, 0x0b, 0x00, 0x00, //0x0000200d jb LBB0_518 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002013 movq $-1, %r10 - 0x4c, 0x89, 0xc9, //0x0000201a movq %r9, %rcx - 0x45, 0x31, 0xdb, //0x0000201d xorl %r11d, %r11d - //0x00002020 .p2align 4, 0x90 - //0x00002020 LBB0_388 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00002020 vmovdqu (%r14,%rcx), %ymm0 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00002026 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000202d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00002031 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00002035 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00002039 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000203d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00002041 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00002045 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00002049 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000204d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002051 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00002056 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000205a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000205e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00002062 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00002065 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00002069 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000206d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002070 jne LBB0_399 - 0x4d, 0x85, 0xdb, //0x00002076 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002079 jne LBB0_401 - 0x45, 0x31, 0xdb, //0x0000207f xorl %r11d, %r11d - //0x00002082 LBB0_391 - 0xc5, 0xbd, 0x64, 0xc8, //0x00002082 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002086 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000208b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000208f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00002093 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00002096 testq %rdi, %rdi - 0x0f, 0x85, 0x87, 0x00, 0x00, 0x00, //0x00002099 jne LBB0_402 - 0x48, 0x85, 0xf6, //0x0000209f testq %rsi, %rsi - 0x0f, 0x85, 0x7c, 0x1c, 0x00, 0x00, //0x000020a2 jne LBB0_712 - 0x49, 0x83, 0xc0, 0xc0, //0x000020a8 addq $-64, %r8 - 0x48, 0x83, 0xc1, 0x40, //0x000020ac addq $64, %rcx - 0x49, 0x83, 0xf8, 0x3f, //0x000020b0 cmpq $63, %r8 - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000020b4 ja LBB0_388 - 0xe9, 0x39, 0x09, 0x00, 0x00, //0x000020ba jmp LBB0_394 - //0x000020bf LBB0_399 - 0x49, 0x83, 0xfa, 0xff, //0x000020bf cmpq $-1, %r10 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000020c3 jne LBB0_401 - 0x4c, 0x0f, 0xbc, 0xd2, //0x000020c9 bsfq %rdx, %r10 - 0x49, 0x01, 0xca, //0x000020cd addq %rcx, %r10 - //0x000020d0 LBB0_401 - 0x4c, 0x89, 0xd8, //0x000020d0 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x000020d3 notq %rax - 0x48, 0x21, 0xd0, //0x000020d6 andq %rdx, %rax - 0x48, 0x89, 0x0c, 0x24, //0x000020d9 movq %rcx, (%rsp) - 0x48, 0x8d, 0x0c, 0x00, //0x000020dd leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd9, //0x000020e1 orq %r11, %rcx - 0x48, 0x89, 0xcb, //0x000020e4 movq %rcx, %rbx - 0x48, 0xf7, 0xd3, //0x000020e7 notq %rbx - 0x48, 0x21, 0xd3, //0x000020ea andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020ed movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000020f7 andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000020fa xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000020fd addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x00002100 setb %r11b - 0x48, 0x01, 0xdb, //0x00002104 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002107 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00002111 xorq %rax, %rbx - 0x48, 0x21, 0xcb, //0x00002114 andq %rcx, %rbx - 0x48, 0x8b, 0x0c, 0x24, //0x00002117 movq (%rsp), %rcx - 0x48, 0xf7, 0xd3, //0x0000211b notq %rbx - 0x48, 0x21, 0xdf, //0x0000211e andq %rbx, %rdi - 0xe9, 0x5c, 0xff, 0xff, 0xff, //0x00002121 jmp LBB0_391 - //0x00002126 LBB0_402 - 0x48, 0x0f, 0xbc, 0xc7, //0x00002126 bsfq %rdi, %rax - 0x48, 0x85, 0xf6, //0x0000212a testq %rsi, %rsi - 0x0f, 0x84, 0x9f, 0x03, 0x00, 0x00, //0x0000212d je LBB0_458 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002133 bsfq %rsi, %rdx - 0xe9, 0x9b, 0x03, 0x00, 0x00, //0x00002137 jmp LBB0_459 - //0x0000213c LBB0_404 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x0000213c movq $56(%rsp), %rax - 0x8a, 0x48, 0x01, //0x00002141 movb $1(%rax), %cl - 0x80, 0xc1, 0xd2, //0x00002144 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00002147 cmpb $55, %cl - 0x0f, 0x87, 0x80, 0xf3, 0xff, 0xff, //0x0000214a ja LBB0_257 - 0x0f, 0xb6, 0xc1, //0x00002150 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002153 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000215d btq %rax, %rcx - 0x48, 0x8b, 0x0c, 0x24, //0x00002161 movq (%rsp), %rcx - 0x0f, 0x83, 0x1e, 0x08, 0x00, 0x00, //0x00002165 jae LBB0_498 - //0x0000216b LBB0_406 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000216b movq $-1, %r8 - 0x49, 0x83, 0xfa, 0x20, //0x00002172 cmpq $32, %r10 - 0x0f, 0x82, 0x1c, 0x0a, 0x00, 0x00, //0x00002176 jb LBB0_515 - 0x45, 0x31, 0xc9, //0x0000217c xorl %r9d, %r9d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000217f movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002186 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x0000218f movq $56(%rsp), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002194 .p2align 4, 0x90 - //0x000021a0 LBB0_408 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x0b, //0x000021a0 vmovdqu (%r11,%r9), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x000021a6 vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x000021ab vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x000021af vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x000021b3 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xa1, 0xe0, 0xff, 0xff, //0x000021b7 vpcmpeqb $-8031(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x000021bf vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x000021c3 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xb1, 0xe0, 0xff, 0xff, //0x000021c7 vpcmpeqb $-8015(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000021cf vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000021d3 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xfb, //0x000021d7 vpmovmskb %ymm3, %edi - 0xc5, 0xfd, 0xd7, 0xf2, //0x000021db vpmovmskb %ymm2, %esi - 0xc5, 0xf5, 0xeb, 0xc0, //0x000021df vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000021e3 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000021e7 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000021eb vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000021ef notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000021f2 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000021f6 cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000021f9 je LBB0_410 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000021ff movl $-1, %eax - 0xd3, 0xe0, //0x00002204 shll %cl, %eax - 0xf7, 0xd0, //0x00002206 notl %eax - 0x21, 0xc2, //0x00002208 andl %eax, %edx - 0x21, 0xc7, //0x0000220a andl %eax, %edi - 0x21, 0xf0, //0x0000220c andl %esi, %eax - 0x89, 0xc6, //0x0000220e movl %eax, %esi - //0x00002210 LBB0_410 - 0x8d, 0x5a, 0xff, //0x00002210 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00002213 andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xa3, 0xdf, 0xff, 0xff, //0x00002215 vmovdqu $-8285(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x12, 0x07, 0x00, 0x00, //0x0000221d jne LBB0_492 - 0x8d, 0x5f, 0xff, //0x00002223 leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x00002226 andl %edi, %ebx - 0x0f, 0x85, 0x07, 0x07, 0x00, 0x00, //0x00002228 jne LBB0_492 - 0x8d, 0x5e, 0xff, //0x0000222e leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00002231 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x06, 0x00, 0x00, //0x00002233 jne LBB0_492 - 0x85, 0xd2, //0x00002239 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000223b je LBB0_416 - 0x0f, 0xbc, 0xd2, //0x00002241 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00002244 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x0000224a jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002250 addq %r9, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00002253 movq %rdx, $40(%rsp) - //0x00002258 LBB0_416 - 0x85, 0xff, //0x00002258 testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000225a je LBB0_419 - 0x0f, 0xbc, 0xd7, //0x00002260 bsfl %edi, %edx - 0x49, 0x83, 0xff, 0xff, //0x00002263 cmpq $-1, %r15 - 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x00002267 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x0000226d addq %r9, %rdx - 0x49, 0x89, 0xd7, //0x00002270 movq %rdx, %r15 - //0x00002273 LBB0_419 - 0x85, 0xf6, //0x00002273 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002275 je LBB0_422 - 0x0f, 0xbc, 0xd6, //0x0000227b bsfl %esi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x0000227e cmpq $-1, %r8 - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x00002282 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002288 addq %r9, %rdx - 0x49, 0x89, 0xd0, //0x0000228b movq %rdx, %r8 - //0x0000228e LBB0_422 - 0x83, 0xf9, 0x20, //0x0000228e cmpl $32, %ecx - 0x0f, 0x85, 0xf9, 0x01, 0x00, 0x00, //0x00002291 jne LBB0_456 - 0x49, 0x83, 0xc2, 0xe0, //0x00002297 addq $-32, %r10 - 0x49, 0x83, 0xc1, 0x20, //0x0000229b addq $32, %r9 - 0x49, 0x83, 0xfa, 0x1f, //0x0000229f cmpq $31, %r10 - 0x0f, 0x87, 0xf7, 0xfe, 0xff, 0xff, //0x000022a3 ja LBB0_408 - 0xc5, 0xf8, 0x77, //0x000022a9 vzeroupper - 0x4d, 0x01, 0xd9, //0x000022ac addq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000022af movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x000022b4 cmpq $16, %r10 - 0x0f, 0x82, 0x35, 0x01, 0x00, 0x00, //0x000022b8 jb LBB0_443 - //0x000022be LBB0_425 - 0x4c, 0x89, 0xcb, //0x000022be movq %r9, %rbx - 0x4c, 0x29, 0xdb, //0x000022c1 subq %r11, %rbx - 0x45, 0x31, 0xed, //0x000022c4 xorl %r13d, %r13d - //0x000022c7 LBB0_426 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x29, //0x000022c7 vmovdqu (%r9,%r13), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x6b, 0xdd, 0xff, 0xff, //0x000022cd vpcmpgtb $-8853(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022d5 vmovdqu $-8845(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x000022dd vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x000022e1 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022e5 vpcmpeqb $-8845(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x7b, 0xdd, 0xff, 0xff, //0x000022ed vpcmpeqb $-8837(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x000022f5 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0x1f, 0xdd, 0xff, 0xff, //0x000022f9 vpand $-8929(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x77, 0xdd, 0xff, 0xff, //0x00002301 vpcmpeqb $-8841(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x7f, 0xdd, 0xff, 0xff, //0x00002309 vpcmpeqb $-8833(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00002311 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00002315 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00002319 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xd8, //0x0000231d vpmovmskb %xmm0, %r11d - 0xc5, 0xf9, 0xd7, 0xd3, //0x00002321 vpmovmskb %xmm3, %edx - 0xc5, 0xf9, 0xd7, 0xfa, //0x00002325 vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00002329 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x0000232d notl %eax - 0x0f, 0xbc, 0xc8, //0x0000232f bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00002332 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002335 je LBB0_428 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x0000233b movl $-1, %eax - 0xd3, 0xe0, //0x00002340 shll %cl, %eax - 0xf7, 0xd0, //0x00002342 notl %eax - 0x41, 0x21, 0xc3, //0x00002344 andl %eax, %r11d - 0x21, 0xc2, //0x00002347 andl %eax, %edx - 0x21, 0xf8, //0x00002349 andl %edi, %eax - 0x89, 0xc7, //0x0000234b movl %eax, %edi - //0x0000234d LBB0_428 - 0x41, 0x8d, 0x73, 0xff, //0x0000234d leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x00002351 andl %r11d, %esi - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x00002354 jne LBB0_499 - 0x8d, 0x72, 0xff, //0x0000235a leal $-1(%rdx), %esi - 0x21, 0xd6, //0x0000235d andl %edx, %esi - 0x0f, 0x85, 0xdd, 0x06, 0x00, 0x00, //0x0000235f jne LBB0_499 - 0x8d, 0x77, 0xff, //0x00002365 leal $-1(%rdi), %esi - 0x21, 0xfe, //0x00002368 andl %edi, %esi - 0x0f, 0x85, 0xd2, 0x06, 0x00, 0x00, //0x0000236a jne LBB0_499 - 0x45, 0x85, 0xdb, //0x00002370 testl %r11d, %r11d - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00002373 je LBB0_434 - 0x41, 0x0f, 0xbc, 0xf3, //0x00002379 bsfl %r11d, %esi - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000237d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x9d, 0x07, 0x00, 0x00, //0x00002383 jne LBB0_509 - 0x48, 0x01, 0xde, //0x00002389 addq %rbx, %rsi - 0x4c, 0x01, 0xee, //0x0000238c addq %r13, %rsi - 0x48, 0x89, 0x74, 0x24, 0x28, //0x0000238f movq %rsi, $40(%rsp) - //0x00002394 LBB0_434 - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002394 movq $56(%rsp), %r11 - 0x85, 0xd2, //0x00002399 testl %edx, %edx - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000239b je LBB0_437 - 0x0f, 0xbc, 0xd2, //0x000023a1 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000023a4 cmpq $-1, %r15 - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x000023a8 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023ae addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023b1 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000023b4 movq %rdx, %r15 - //0x000023b7 LBB0_437 - 0x85, 0xff, //0x000023b7 testl %edi, %edi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000023b9 je LBB0_440 - 0x0f, 0xbc, 0xd7, //0x000023bf bsfl %edi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x000023c2 cmpq $-1, %r8 - 0x0f, 0x85, 0xca, 0x06, 0x00, 0x00, //0x000023c6 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023cc addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023cf addq %r13, %rdx - 0x49, 0x89, 0xd0, //0x000023d2 movq %rdx, %r8 - //0x000023d5 LBB0_440 - 0x83, 0xf9, 0x10, //0x000023d5 cmpl $16, %ecx - 0x0f, 0x85, 0x82, 0x01, 0x00, 0x00, //0x000023d8 jne LBB0_466 - 0x49, 0x83, 0xc2, 0xf0, //0x000023de addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000023e2 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000023e6 cmpq $15, %r10 - 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x000023ea ja LBB0_426 - 0x4d, 0x01, 0xe9, //0x000023f0 addq %r13, %r9 - //0x000023f3 LBB0_443 - 0x4d, 0x85, 0xd2, //0x000023f3 testq %r10, %r10 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000023f6 movq $48(%rsp), %r13 - 0x0f, 0x84, 0x89, 0x01, 0x00, 0x00, //0x000023fb je LBB0_468 - 0x4b, 0x8d, 0x34, 0x11, //0x00002401 leaq (%r9,%r10), %rsi - 0x4c, 0x89, 0xcf, //0x00002405 movq %r9, %rdi - 0x4c, 0x29, 0xdf, //0x00002408 subq %r11, %rdi - 0x31, 0xc9, //0x0000240b xorl %ecx, %ecx - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x0000240d jmp LBB0_448 - //0x00002412 LBB0_445 - 0x49, 0x83, 0xf8, 0xff, //0x00002412 cmpq $-1, %r8 - 0x0f, 0x85, 0x2e, 0x06, 0x00, 0x00, //0x00002416 jne LBB0_500 - 0x4c, 0x8d, 0x04, 0x0f, //0x0000241c leaq (%rdi,%rcx), %r8 - //0x00002420 .p2align 4, 0x90 - //0x00002420 LBB0_447 - 0x48, 0x83, 0xc1, 0x01, //0x00002420 addq $1, %rcx - 0x49, 0x39, 0xca, //0x00002424 cmpq %rcx, %r10 - 0x0f, 0x84, 0xeb, 0x04, 0x00, 0x00, //0x00002427 je LBB0_491 - //0x0000242d LBB0_448 - 0x41, 0x0f, 0xbe, 0x14, 0x09, //0x0000242d movsbl (%r9,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00002432 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00002435 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002438 jb LBB0_447 - 0x8d, 0x5a, 0xd5, //0x0000243e leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00002441 cmpl $26, %ebx - 0x0f, 0x87, 0x2a, 0x00, 0x00, 0x00, //0x00002444 ja LBB0_453 - 0x48, 0x8d, 0x15, 0x97, 0x1b, 0x00, 0x00, //0x0000244a leaq $7063(%rip), %rdx /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00002451 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00002455 addq %rdx, %rax - 0xff, 0xe0, //0x00002458 jmpq *%rax - //0x0000245a LBB0_451 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000245a cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xe4, 0x05, 0x00, 0x00, //0x00002460 jne LBB0_500 - 0x48, 0x8d, 0x04, 0x0f, //0x00002466 leaq (%rdi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x0000246a movq %rax, $40(%rsp) - 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000246f jmp LBB0_447 - //0x00002474 LBB0_453 - 0x83, 0xfa, 0x65, //0x00002474 cmpl $101, %edx - 0x0f, 0x85, 0x0a, 0x01, 0x00, 0x00, //0x00002477 jne LBB0_467 - //0x0000247d LBB0_454 - 0x49, 0x83, 0xff, 0xff, //0x0000247d cmpq $-1, %r15 - 0x0f, 0x85, 0xc3, 0x05, 0x00, 0x00, //0x00002481 jne LBB0_500 - 0x4c, 0x8d, 0x3c, 0x0f, //0x00002487 leaq (%rdi,%rcx), %r15 - 0xe9, 0x90, 0xff, 0xff, 0xff, //0x0000248b jmp LBB0_447 - //0x00002490 LBB0_456 - 0x4c, 0x01, 0xc9, //0x00002490 addq %r9, %rcx - 0x4c, 0x01, 0xd9, //0x00002493 addq %r11, %rcx - 0xc5, 0xf8, 0x77, //0x00002496 vzeroupper - 0x49, 0x89, 0xc9, //0x00002499 movq %rcx, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000249c movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x000024a3 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x000024a8 testq %rdx, %rdx - 0x0f, 0x85, 0xee, 0x00, 0x00, 0x00, //0x000024ab jne LBB0_469 - 0xe9, 0x5a, 0x18, 0x00, 0x00, //0x000024b1 jmp LBB0_709 - //0x000024b6 LBB0_676 - 0x4d, 0x29, 0xf4, //0x000024b6 subq %r14, %r12 - 0x49, 0x01, 0xd4, //0x000024b9 addq %rdx, %r12 - 0x49, 0x39, 0xdc, //0x000024bc cmpq %rbx, %r12 - 0x0f, 0x82, 0xcd, 0xe0, 0xff, 0xff, //0x000024bf jb LBB0_35 - 0xe9, 0x48, 0x16, 0x00, 0x00, //0x000024c5 jmp LBB0_677 - //0x000024ca LBB0_457 - 0x4d, 0x89, 0xfd, //0x000024ca movq %r15, %r13 - 0xe9, 0x29, 0xf1, 0xff, 0xff, //0x000024cd jmp LBB0_279 - //0x000024d2 LBB0_458 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000024d2 movl $64, %edx - //0x000024d7 LBB0_459 - 0x4d, 0x89, 0xd3, //0x000024d7 movq %r10, %r11 - 0x48, 0x39, 0xc2, //0x000024da cmpq %rax, %rdx - 0x0f, 0x82, 0x88, 0x18, 0x00, 0x00, //0x000024dd jb LBB0_719 - 0xc5, 0x7d, 0x7f, 0xea, //0x000024e3 vmovdqa %ymm13, %ymm2 - 0x48, 0x01, 0xc1, //0x000024e7 addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000024ea addq $1, %rcx - //0x000024ee LBB0_461 - 0x48, 0x85, 0xc9, //0x000024ee testq %rcx, %rcx - 0x0f, 0x88, 0xfd, 0x17, 0x00, 0x00, //0x000024f1 js LBB0_706 - 0x49, 0x89, 0x4d, 0x00, //0x000024f7 movq %rcx, (%r13) - 0x4d, 0x85, 0xc9, //0x000024fb testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000024fe movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002503 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002508 movq $8(%rsp), %r15 - 0xc5, 0x7d, 0x6f, 0xea, //0x0000250d vmovdqa %ymm2, %ymm13 - 0x0f, 0x8f, 0x89, 0xde, 0xff, 0xff, //0x00002511 jg LBB0_3 - 0xe9, 0x1d, 0x16, 0x00, 0x00, //0x00002517 jmp LBB0_463 - //0x0000251c LBB0_156 - 0x4d, 0x85, 0xff, //0x0000251c testq %r15, %r15 - 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x0000251f jne LBB0_522 - 0x49, 0x01, 0xf1, //0x00002525 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002528 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000252b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002530 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002535 movq $8(%rsp), %r15 - //0x0000253a LBB0_158 - 0x4d, 0x85, 0xd2, //0x0000253a testq %r10, %r10 - 0x0f, 0x8f, 0x9d, 0x07, 0x00, 0x00, //0x0000253d jg LBB0_526 - 0xe9, 0x4d, 0x16, 0x00, 0x00, //0x00002543 jmp LBB0_711 - //0x00002548 LBB0_464 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002548 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x0000254c bsfl %ebx, %eax - 0xe9, 0xb9, 0x01, 0x00, 0x00, //0x0000254f jmp LBB0_484 - //0x00002554 LBB0_465 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002554 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002558 movzwl %ax, %ecx - 0xe9, 0xf7, 0xe9, 0xff, 0xff, //0x0000255b jmp LBB0_176 - //0x00002560 LBB0_466 - 0x89, 0xc8, //0x00002560 movl %ecx, %eax - 0x49, 0x01, 0xc1, //0x00002562 addq %rax, %r9 - 0x4d, 0x01, 0xe9, //0x00002565 addq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002568 movq $48(%rsp), %r13 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000256d movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002574 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002579 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000257c jne LBB0_469 - 0xe9, 0x89, 0x17, 0x00, 0x00, //0x00002582 jmp LBB0_709 - //0x00002587 LBB0_467 - 0x49, 0x01, 0xc9, //0x00002587 addq %rcx, %r9 - //0x0000258a LBB0_468 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000258a movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002591 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002596 testq %rdx, %rdx - 0x0f, 0x84, 0x71, 0x17, 0x00, 0x00, //0x00002599 je LBB0_709 - //0x0000259f LBB0_469 - 0x4d, 0x85, 0xc0, //0x0000259f testq %r8, %r8 - 0x0f, 0x84, 0x68, 0x17, 0x00, 0x00, //0x000025a2 je LBB0_709 - 0x4d, 0x85, 0xff, //0x000025a8 testq %r15, %r15 - 0x0f, 0x84, 0x5f, 0x17, 0x00, 0x00, //0x000025ab je LBB0_709 - 0x4d, 0x29, 0xd9, //0x000025b1 subq %r11, %r9 - 0x49, 0x8d, 0x49, 0xff, //0x000025b4 leaq $-1(%r9), %rcx - 0x48, 0x39, 0xca, //0x000025b8 cmpq %rcx, %rdx - 0x0f, 0x84, 0x97, 0x00, 0x00, 0x00, //0x000025bb je LBB0_477 - 0x49, 0x39, 0xc8, //0x000025c1 cmpq %rcx, %r8 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000025c4 je LBB0_477 - 0x49, 0x39, 0xcf, //0x000025ca cmpq %rcx, %r15 - 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x000025cd je LBB0_477 - 0x4d, 0x85, 0xc0, //0x000025d3 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x2d, 0xe2, 0xda, 0xff, 0xff, //0x000025d6 vmovdqu $-9502(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xfa, 0xda, 0xff, 0xff, //0x000025de vmovdqu $-9478(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x12, 0xdb, 0xff, 0xff, //0x000025e6 vmovdqu $-9454(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x2a, 0xdb, 0xff, 0xff, //0x000025ee vmovdqu $-9430(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000025f6 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xfd, 0xdb, 0xff, 0xff, //0x000025fb vmovdqu $-9219(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x15, 0xdc, 0xff, 0xff, //0x00002603 vmovdqu $-9195(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x2d, 0xdc, 0xff, 0xff, //0x0000260b vmovdqu $-9171(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xc5, 0xdb, 0xff, 0xff, //0x00002613 vmovdqu $-9275(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xdc, 0xff, 0xff, //0x0000261b vmovdqu $-9091(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xdb, 0xff, 0xff, //0x00002623 vmovdqu $-9323(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x8e, 0xa3, 0x00, 0x00, 0x00, //0x0000262b jle LBB0_480 - 0x49, 0x8d, 0x40, 0xff, //0x00002631 leaq $-1(%r8), %rax - 0x49, 0x39, 0xc7, //0x00002635 cmpq %rax, %r15 - 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x00002638 je LBB0_480 - 0x49, 0xf7, 0xd0, //0x0000263e notq %r8 - 0x4d, 0x89, 0xc1, //0x00002641 movq %r8, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002644 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002649 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000264e movq $8(%rsp), %r15 - 0xe9, 0x67, 0x00, 0x00, 0x00, //0x00002653 jmp LBB0_479 - //0x00002658 LBB0_477 - 0x49, 0xf7, 0xd9, //0x00002658 negq %r9 - //0x0000265b LBB0_478 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000265b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002660 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002665 movq $8(%rsp), %r15 - 0xc5, 0xfe, 0x6f, 0x2d, 0x4e, 0xda, 0xff, 0xff, //0x0000266a vmovdqu $-9650(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x66, 0xda, 0xff, 0xff, //0x00002672 vmovdqu $-9626(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x7e, 0xda, 0xff, 0xff, //0x0000267a vmovdqu $-9602(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x96, 0xda, 0xff, 0xff, //0x00002682 vmovdqu $-9578(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000268a vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x69, 0xdb, 0xff, 0xff, //0x0000268f vmovdqu $-9367(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x81, 0xdb, 0xff, 0xff, //0x00002697 vmovdqu $-9343(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x99, 0xdb, 0xff, 0xff, //0x0000269f vmovdqu $-9319(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x31, 0xdb, 0xff, 0xff, //0x000026a7 vmovdqu $-9423(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xe9, 0xdb, 0xff, 0xff, //0x000026af vmovdqu $-9239(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x01, 0xdb, 0xff, 0xff, //0x000026b7 vmovdqu $-9471(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - //0x000026bf LBB0_479 - 0xc5, 0x7e, 0x6f, 0x1d, 0x79, 0xda, 0xff, 0xff, //0x000026bf vmovdqu $-9607(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x91, 0xda, 0xff, 0xff, //0x000026c7 vmovdqu $-9583(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xe9, 0xa4, 0x02, 0x00, 0x00, //0x000026cf jmp LBB0_496 - //0x000026d4 LBB0_480 - 0x48, 0x89, 0xd0, //0x000026d4 movq %rdx, %rax - 0x4c, 0x09, 0xf8, //0x000026d7 orq %r15, %rax - 0x0f, 0x99, 0xc1, //0x000026da setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0x5b, 0xda, 0xff, 0xff, //0x000026dd vmovdqu $-9637(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x73, 0xda, 0xff, 0xff, //0x000026e5 vmovdqu $-9613(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0xf8, 0x00, 0x00, 0x00, //0x000026ed js LBB0_485 - 0x4c, 0x39, 0xfa, //0x000026f3 cmpq %r15, %rdx - 0x0f, 0x8c, 0xef, 0x00, 0x00, 0x00, //0x000026f6 jl LBB0_485 - 0x48, 0xf7, 0xd2, //0x000026fc notq %rdx - 0x49, 0x89, 0xd1, //0x000026ff movq %rdx, %r9 - 0xe9, 0x62, 0x02, 0x00, 0x00, //0x00002702 jmp LBB0_495 - //0x00002707 LBB0_483 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002707 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x0000270b movl %edx, %eax - //0x0000270d LBB0_484 - 0x49, 0xf7, 0xd5, //0x0000270d notq %r13 - 0x49, 0x29, 0xc5, //0x00002710 subq %rax, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002713 movq $8(%rsp), %r15 - 0xe9, 0x04, 0xf0, 0xff, 0xff, //0x00002718 jmp LBB0_290 - //0x0000271d LBB0_187 - 0x4d, 0x85, 0xff, //0x0000271d testq %r15, %r15 - 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x00002720 jne LBB0_547 - 0x49, 0x01, 0xf1, //0x00002726 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002729 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000272c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002731 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002736 movq $8(%rsp), %r15 - //0x0000273b LBB0_189 - 0x4d, 0x85, 0xd2, //0x0000273b testq %r10, %r10 - 0x0f, 0x8f, 0xfa, 0x07, 0x00, 0x00, //0x0000273e jg LBB0_551 - 0xe9, 0x4c, 0x14, 0x00, 0x00, //0x00002744 jmp LBB0_711 - //0x00002749 LBB0_54 - 0x4c, 0x01, 0xf1, //0x00002749 addq %r14, %rcx - 0x48, 0x83, 0xfb, 0x20, //0x0000274c cmpq $32, %rbx - 0x0f, 0x82, 0x5f, 0x03, 0x00, 0x00, //0x00002750 jb LBB0_505 - //0x00002756 LBB0_55 - 0xc5, 0xfe, 0x6f, 0x01, //0x00002756 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x0000275a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000275e vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x00002762 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002766 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x0000276a testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x0000276c movq %r11, %r15 - 0x0f, 0x85, 0xa6, 0x05, 0x00, 0x00, //0x0000276f jne LBB0_529 - 0x4d, 0x85, 0xd2, //0x00002775 testq %r10, %r10 - 0x0f, 0x85, 0xcb, 0x05, 0x00, 0x00, //0x00002778 jne LBB0_531 - 0x45, 0x31, 0xd2, //0x0000277e xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00002781 testq %rsi, %rsi - 0x0f, 0x84, 0x34, 0x06, 0x00, 0x00, //0x00002784 je LBB0_533 - //0x0000278a LBB0_58 - 0x48, 0x0f, 0xbc, 0xc6, //0x0000278a bsfq %rsi, %rax - 0x49, 0x89, 0xca, //0x0000278e movq %rcx, %r10 - 0x4d, 0x29, 0xf2, //0x00002791 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00002794 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002797 addq $1, %r10 - 0xe9, 0x80, 0xeb, 0xff, 0xff, //0x0000279b jmp LBB0_232 - //0x000027a0 LBB0_199 - 0x4d, 0x01, 0xf2, //0x000027a0 addq %r14, %r10 - 0x48, 0x83, 0xfb, 0x20, //0x000027a3 cmpq $32, %rbx - 0x0f, 0x82, 0xef, 0x08, 0x00, 0x00, //0x000027a7 jb LBB0_564 - //0x000027ad LBB0_200 - 0x4c, 0x89, 0xd1, //0x000027ad movq %r10, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000027b0 vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000027b5 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000027b9 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000027bd vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000027c1 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000027c5 testl %edx, %edx - 0x0f, 0x85, 0xc5, 0x07, 0x00, 0x00, //0x000027c7 jne LBB0_554 - 0x4d, 0x85, 0xdb, //0x000027cd testq %r11, %r11 - 0x0f, 0x85, 0xf2, 0x07, 0x00, 0x00, //0x000027d0 jne LBB0_556 - 0x45, 0x31, 0xdb, //0x000027d6 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x000027d9 testq %r10, %r10 - 0x0f, 0x84, 0x60, 0x08, 0x00, 0x00, //0x000027dc je LBB0_558 - //0x000027e2 LBB0_203 - 0x49, 0x0f, 0xbc, 0xd2, //0x000027e2 bsfq %r10, %rdx - 0xe9, 0x5c, 0x08, 0x00, 0x00, //0x000027e6 jmp LBB0_559 - //0x000027eb LBB0_485 - 0x49, 0x8d, 0x47, 0xff, //0x000027eb leaq $-1(%r15), %rax - 0x48, 0x39, 0xc2, //0x000027ef cmpq %rax, %rdx - 0x49, 0xf7, 0xd7, //0x000027f2 notq %r15 - 0x4d, 0x0f, 0x45, 0xf9, //0x000027f5 cmovneq %r9, %r15 - 0x84, 0xc9, //0x000027f9 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xcf, //0x000027fb cmovneq %r15, %r9 - 0xe9, 0x65, 0x01, 0x00, 0x00, //0x000027ff jmp LBB0_495 - //0x00002804 LBB0_486 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002804 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002808 bsfl %ebx, %eax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x0000280b jmp LBB0_490 - //0x00002810 LBB0_487 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002810 vmovdqa %ymm13, %ymm0 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00002814 movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x00002819 addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x0000281c subq %r13, %r14 - 0x49, 0x29, 0xce, //0x0000281f subq %rcx, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x00002822 addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x00002826 movq %r14, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002829 movq $8(%rsp), %r15 - 0xe9, 0xf3, 0xee, 0xff, 0xff, //0x0000282e jmp LBB0_291 - //0x00002833 LBB0_488 - 0x4d, 0x01, 0xf4, //0x00002833 addq %r14, %r12 - 0x48, 0x85, 0xc0, //0x00002836 testq %rax, %rax - 0x0f, 0x85, 0xe9, 0xdc, 0xff, 0xff, //0x00002839 jne LBB0_28 - 0xe9, 0x1e, 0xdd, 0xff, 0xff, //0x0000283f jmp LBB0_33 - //0x00002844 LBB0_489 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002844 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002848 movl %edx, %eax - //0x0000284a LBB0_490 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x0000284a movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x0000284f addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x00002852 subq %r13, %r14 - 0x49, 0x29, 0xc6, //0x00002855 subq %rax, %r14 - 0x4d, 0x29, 0xfe, //0x00002858 subq %r15, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x0000285b addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x0000285f movq %r14, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002862 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002867 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000286c movq $8(%rsp), %r15 - 0xe9, 0xb0, 0xee, 0xff, 0xff, //0x00002871 jmp LBB0_291 - //0x00002876 LBB0_139 - 0x4c, 0x01, 0xf3, //0x00002876 addq %r14, %rbx - 0x48, 0x83, 0xf9, 0x20, //0x00002879 cmpq $32, %rcx - 0x0f, 0x82, 0xda, 0x02, 0x00, 0x00, //0x0000287d jb LBB0_512 - //0x00002883 LBB0_140 - 0xc5, 0xfe, 0x6f, 0x03, //0x00002883 vmovdqu (%rbx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002887 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000288b vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x0000288f vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002893 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x00002897 testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x00002899 movq %r11, %r15 - 0x0f, 0x85, 0xc0, 0x08, 0x00, 0x00, //0x0000289c jne LBB0_575 - 0x4d, 0x85, 0xd2, //0x000028a2 testq %r10, %r10 - 0x0f, 0x85, 0xe5, 0x08, 0x00, 0x00, //0x000028a5 jne LBB0_577 - 0x45, 0x31, 0xd2, //0x000028ab xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x000028ae testq %rsi, %rsi - 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x000028b1 je LBB0_579 - //0x000028b7 LBB0_143 - 0x48, 0x0f, 0xbc, 0xc6, //0x000028b7 bsfq %rsi, %rax - 0x49, 0x89, 0xda, //0x000028bb movq %rbx, %r10 - 0x4d, 0x29, 0xf2, //0x000028be subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x000028c1 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000028c4 addq $1, %r10 - 0xe9, 0xbf, 0xee, 0xff, 0xff, //0x000028c8 jmp LBB0_298 - //0x000028cd LBB0_220 - 0x4d, 0x01, 0xf2, //0x000028cd addq %r14, %r10 - 0x48, 0x83, 0xf9, 0x20, //0x000028d0 cmpq $32, %rcx - 0x0f, 0x82, 0x3c, 0x0b, 0x00, 0x00, //0x000028d4 jb LBB0_603 - //0x000028da LBB0_221 - 0x4c, 0x89, 0xd3, //0x000028da movq %r10, %rbx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000028dd vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000028e2 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000028e6 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000028ea vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000028ee vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000028f2 testl %edx, %edx - 0x0f, 0x85, 0x12, 0x0a, 0x00, 0x00, //0x000028f4 jne LBB0_593 - 0x4d, 0x85, 0xdb, //0x000028fa testq %r11, %r11 - 0x0f, 0x85, 0x3f, 0x0a, 0x00, 0x00, //0x000028fd jne LBB0_595 - 0x45, 0x31, 0xdb, //0x00002903 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00002906 testq %r10, %r10 - 0x0f, 0x84, 0xad, 0x0a, 0x00, 0x00, //0x00002909 je LBB0_597 - //0x0000290f LBB0_224 - 0x49, 0x0f, 0xbc, 0xd2, //0x0000290f bsfq %r10, %rdx - 0xe9, 0xa9, 0x0a, 0x00, 0x00, //0x00002913 jmp LBB0_598 - //0x00002918 LBB0_491 - 0x49, 0x89, 0xf1, //0x00002918 movq %rsi, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000291b movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002922 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002927 testq %rdx, %rdx - 0x0f, 0x85, 0x6f, 0xfc, 0xff, 0xff, //0x0000292a jne LBB0_469 - 0xe9, 0xdb, 0x13, 0x00, 0x00, //0x00002930 jmp LBB0_709 - //0x00002935 LBB0_492 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002935 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002939 bsfl %ebx, %eax - 0xe9, 0x22, 0x00, 0x00, 0x00, //0x0000293c jmp LBB0_494 - //0x00002941 LBB0_697 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002941 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002945 movzwl %ax, %ecx - 0x48, 0x29, 0xd1, //0x00002948 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000294b movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x0000294f testq %rbx, %rbx - 0x0f, 0x8f, 0x48, 0xda, 0xff, 0xff, //0x00002952 jg LBB0_3 - 0xe9, 0x74, 0x13, 0x00, 0x00, //0x00002958 jmp LBB0_698 - //0x0000295d LBB0_493 - 0xc5, 0x7d, 0x7f, 0xe8, //0x0000295d vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002961 movl %edx, %eax - //0x00002963 LBB0_494 - 0x49, 0xf7, 0xd1, //0x00002963 notq %r9 - 0x49, 0x29, 0xc1, //0x00002966 subq %rax, %r9 - //0x00002969 LBB0_495 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002969 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000296e movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002973 movq $8(%rsp), %r15 - //0x00002978 LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002978 testq %r9, %r9 - 0x0f, 0x88, 0x8c, 0x13, 0x00, 0x00, //0x0000297b js LBB0_708 - 0x49, 0x8b, 0x4d, 0x00, //0x00002981 movq (%r13), %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x00002985 vmovdqa %ymm0, %ymm13 - //0x00002989 LBB0_498 - 0x4c, 0x01, 0xc9, //0x00002989 addq %r9, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000298c movq %rcx, (%r13) - 0x48, 0x83, 0x3c, 0x24, 0x00, //0x00002990 cmpq $0, (%rsp) - 0x0f, 0x8f, 0x05, 0xda, 0xff, 0xff, //0x00002995 jg LBB0_3 - 0xe9, 0x31, 0x13, 0x00, 0x00, //0x0000299b jmp LBB0_698 - //0x000029a0 LBB0_243 - 0x4c, 0x01, 0xf7, //0x000029a0 addq %r14, %rdi - 0x49, 0x83, 0xf8, 0x20, //0x000029a3 cmpq $32, %r8 - 0x0f, 0x82, 0x2f, 0x02, 0x00, 0x00, //0x000029a7 jb LBB0_517 - //0x000029ad LBB0_244 - 0xc5, 0xfe, 0x6f, 0x07, //0x000029ad vmovdqu (%rdi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000029b1 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000029b5 vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x000029b9 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000029bd vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x000029c1 testl %edx, %edx - 0x0f, 0x85, 0x68, 0x0d, 0x00, 0x00, //0x000029c3 jne LBB0_630 - 0x4d, 0x85, 0xd2, //0x000029c9 testq %r10, %r10 - 0x0f, 0x85, 0x95, 0x0d, 0x00, 0x00, //0x000029cc jne LBB0_632 - 0x45, 0x31, 0xd2, //0x000029d2 xorl %r10d, %r10d - 0xc5, 0x7d, 0x7f, 0xea, //0x000029d5 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000029d9 testq %rsi, %rsi - 0x0f, 0x84, 0x02, 0x0e, 0x00, 0x00, //0x000029dc je LBB0_634 - //0x000029e2 LBB0_247 - 0x48, 0x0f, 0xbc, 0xc6, //0x000029e2 bsfq %rsi, %rax - 0x48, 0x89, 0xf9, //0x000029e6 movq %rdi, %rcx - 0x4c, 0x29, 0xf1, //0x000029e9 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x000029ec addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000029ef addq $1, %rcx - 0xe9, 0xf6, 0xfa, 0xff, 0xff, //0x000029f3 jmp LBB0_461 - //0x000029f8 LBB0_394 - 0x4c, 0x01, 0xf1, //0x000029f8 addq %r14, %rcx - 0x49, 0x83, 0xf8, 0x20, //0x000029fb cmpq $32, %r8 - 0x0f, 0x82, 0x01, 0x02, 0x00, 0x00, //0x000029ff jb LBB0_519 - //0x00002a05 LBB0_395 - 0x48, 0x89, 0xcb, //0x00002a05 movq %rcx, %rbx - 0xc5, 0xfe, 0x6f, 0x01, //0x00002a08 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002a0c vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xc9, //0x00002a10 vpmovmskb %ymm1, %ecx - 0xc5, 0xfd, 0x74, 0xcf, //0x00002a14 vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a18 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x00002a1c testl %edx, %edx - 0x0f, 0x85, 0x86, 0x0e, 0x00, 0x00, //0x00002a1e jne LBB0_647 - 0x4d, 0x85, 0xdb, //0x00002a24 testq %r11, %r11 - 0x0f, 0x85, 0xab, 0x0e, 0x00, 0x00, //0x00002a27 jne LBB0_649 - 0x45, 0x31, 0xdb, //0x00002a2d xorl %r11d, %r11d - 0x48, 0x85, 0xc9, //0x00002a30 testq %rcx, %rcx - 0x0f, 0x84, 0x10, 0x0f, 0x00, 0x00, //0x00002a33 je LBB0_651 - //0x00002a39 LBB0_398 - 0x48, 0x0f, 0xbc, 0xd1, //0x00002a39 bsfq %rcx, %rdx - 0xe9, 0x0c, 0x0f, 0x00, 0x00, //0x00002a3d jmp LBB0_652 - //0x00002a42 LBB0_499 - 0x0f, 0xbc, 0xc6, //0x00002a42 bsfl %esi, %eax - 0xe9, 0xde, 0x00, 0x00, 0x00, //0x00002a45 jmp LBB0_510 - //0x00002a4a LBB0_500 - 0x4c, 0x03, 0x34, 0x24, //0x00002a4a addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002a4e subq %r9, %r14 - 0x48, 0xf7, 0xd1, //0x00002a51 notq %rcx - 0x4c, 0x01, 0xf1, //0x00002a54 addq %r14, %rcx - 0x49, 0x89, 0xc9, //0x00002a57 movq %rcx, %r9 - 0xe9, 0xfc, 0xfb, 0xff, 0xff, //0x00002a5a jmp LBB0_478 - //0x00002a5f LBB0_501 - 0x49, 0x8d, 0x0c, 0x1e, //0x00002a5f leaq (%r14,%rbx), %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002a63 cmpq $16, %rsi - 0x0f, 0x83, 0x49, 0xe4, 0xff, 0xff, //0x00002a67 jae LBB0_164 - 0xe9, 0x8c, 0xe4, 0xff, 0xff, //0x00002a6d jmp LBB0_167 - //0x00002a72 LBB0_502 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002a72 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002a79 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002a82 movq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x00002a87 cmpq $16, %r8 - 0x0f, 0x83, 0x5a, 0xdf, 0xff, 0xff, //0x00002a8b jae LBB0_95 - 0xe9, 0xac, 0xe0, 0xff, 0xff, //0x00002a91 jmp LBB0_113 - //0x00002a96 LBB0_503 - 0x89, 0xd0, //0x00002a96 movl %edx, %eax - 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x00002a98 jmp LBB0_510 - //0x00002a9d LBB0_504 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002a9d leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002aa1 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002aa8 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x00002aab cmpq $32, %rbx - 0x0f, 0x83, 0xa1, 0xfc, 0xff, 0xff, //0x00002aaf jae LBB0_55 - //0x00002ab5 LBB0_505 - 0x4d, 0x89, 0xdf, //0x00002ab5 movq %r11, %r15 - 0xe9, 0x09, 0x03, 0x00, 0x00, //0x00002ab8 jmp LBB0_534 - //0x00002abd LBB0_506 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002abd leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002ac1 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002ac8 xorl %r11d, %r11d - 0x48, 0x83, 0xfb, 0x20, //0x00002acb cmpq $32, %rbx - 0x0f, 0x83, 0xd8, 0xfc, 0xff, 0xff, //0x00002acf jae LBB0_200 - 0xe9, 0xc2, 0x05, 0x00, 0x00, //0x00002ad5 jmp LBB0_564 - //0x00002ada LBB0_507 - 0x4c, 0x29, 0xf1, //0x00002ada subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002add addq %rdx, %rcx - //0x00002ae0 LBB0_508 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ae0 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002ae5 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002aea movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002aef vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002af4 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xd7, 0xff, 0xff, //0x00002af9 vmovdqu $-10337(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xd6, 0xff, 0xff, //0x00002b01 vmovdqu $-10569(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002b09 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002b0d vmovdqa %ymm1, %ymm12 - 0x48, 0x89, 0xc3, //0x00002b11 movq %rax, %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00002b14 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00002b18 testq %rbx, %rbx - 0x0f, 0x8f, 0x7f, 0xd8, 0xff, 0xff, //0x00002b1b jg LBB0_3 - 0xe9, 0x45, 0x10, 0x00, 0x00, //0x00002b21 jmp LBB0_178 - //0x00002b26 LBB0_509 - 0x89, 0xf0, //0x00002b26 movl %esi, %eax - //0x00002b28 LBB0_510 - 0x4c, 0x03, 0x34, 0x24, //0x00002b28 addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002b2c subq %r9, %r14 - 0x49, 0x29, 0xc6, //0x00002b2f subq %rax, %r14 - 0x49, 0xf7, 0xd5, //0x00002b32 notq %r13 - 0x4d, 0x01, 0xf5, //0x00002b35 addq %r14, %r13 - 0x4d, 0x89, 0xe9, //0x00002b38 movq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002b3b movq $48(%rsp), %r13 - 0xe9, 0x16, 0xfb, 0xff, 0xff, //0x00002b40 jmp LBB0_478 - //0x00002b45 LBB0_511 - 0x4b, 0x8d, 0x1c, 0x0e, //0x00002b45 leaq (%r14,%r9), %rbx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002b49 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002b50 xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x20, //0x00002b53 cmpq $32, %rcx - 0x0f, 0x83, 0x26, 0xfd, 0xff, 0xff, //0x00002b57 jae LBB0_140 - //0x00002b5d LBB0_512 - 0x4d, 0x89, 0xdf, //0x00002b5d movq %r11, %r15 - 0xe9, 0xa8, 0x06, 0x00, 0x00, //0x00002b60 jmp LBB0_580 - //0x00002b65 LBB0_513 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002b65 leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b69 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002b70 xorl %r11d, %r11d - 0x48, 0x83, 0xf9, 0x20, //0x00002b73 cmpq $32, %rcx - 0x0f, 0x83, 0x5d, 0xfd, 0xff, 0xff, //0x00002b77 jae LBB0_221 - 0xe9, 0x94, 0x08, 0x00, 0x00, //0x00002b7d jmp LBB0_603 - //0x00002b82 LBB0_514 - 0x4c, 0x01, 0xf1, //0x00002b82 addq %r14, %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002b85 cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00002b89 movq (%rsp), %rbx - 0x0f, 0x83, 0x97, 0xed, 0xff, 0xff, //0x00002b8d jae LBB0_318 - 0xe9, 0xda, 0xed, 0xff, 0xff, //0x00002b93 jmp LBB0_321 - //0x00002b98 LBB0_515 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b98 movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002b9f movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002ba8 movq $56(%rsp), %r11 - 0x4d, 0x89, 0xd9, //0x00002bad movq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002bb0 movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x00002bb5 cmpq $16, %r10 - 0x0f, 0x83, 0xff, 0xf6, 0xff, 0xff, //0x00002bb9 jae LBB0_425 - 0xe9, 0x2f, 0xf8, 0xff, 0xff, //0x00002bbf jmp LBB0_443 - //0x00002bc4 LBB0_516 - 0x4b, 0x8d, 0x3c, 0x0e, //0x00002bc4 leaq (%r14,%r9), %rdi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002bc8 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002bcf xorl %r10d, %r10d - 0x49, 0x83, 0xf8, 0x20, //0x00002bd2 cmpq $32, %r8 - 0x0f, 0x83, 0xd1, 0xfd, 0xff, 0xff, //0x00002bd6 jae LBB0_244 - //0x00002bdc LBB0_517 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002bdc vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002be0 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002be4 vmovdqa %ymm13, %ymm11 - 0xe9, 0x0a, 0x0c, 0x00, 0x00, //0x00002be9 jmp LBB0_635 - //0x00002bee LBB0_518 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002bee leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002bf2 movq $-1, %r10 - 0x45, 0x31, 0xdb, //0x00002bf9 xorl %r11d, %r11d - 0x49, 0x83, 0xf8, 0x20, //0x00002bfc cmpq $32, %r8 - 0x0f, 0x83, 0xff, 0xfd, 0xff, 0xff, //0x00002c00 jae LBB0_395 - //0x00002c06 LBB0_519 - 0x48, 0x89, 0xcb, //0x00002c06 movq %rcx, %rbx - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c09 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c0d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c11 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002c16 vmovdqa %ymm15, %ymm12 - 0xe9, 0x99, 0x0d, 0x00, 0x00, //0x00002c1b jmp LBB0_657 - //0x00002c20 LBB0_520 - 0x4c, 0x29, 0xf1, //0x00002c20 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002c23 addq %rdx, %rcx - //0x00002c26 LBB0_521 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c26 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c2b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c30 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c35 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002c3a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x59, 0xd6, 0xff, 0xff, //0x00002c3f vmovdqu $-10663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x71, 0xd5, 0xff, 0xff, //0x00002c47 vmovdqu $-10895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002c4f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002c53 vmovdqa %ymm1, %ymm12 - 0xe9, 0x75, 0xf3, 0xff, 0xff, //0x00002c57 jmp LBB0_383 - //0x00002c5c LBB0_522 - 0x49, 0x39, 0xf2, //0x00002c5c cmpq %rsi, %r10 - 0x0f, 0x84, 0x30, 0x0f, 0x00, 0x00, //0x00002c5f je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c65 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c69 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c6d vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002c72 addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002c75 addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002c79 notq %rsi - 0x49, 0x01, 0xf2, //0x00002c7c addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c7f movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c84 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c89 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c8e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x05, 0xd6, 0xff, 0xff, //0x00002c93 vmovdqu $-10747(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x1d, 0xd5, 0xff, 0xff, //0x00002c9b vmovdqu $-10979(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ca3 vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002ca7 testq %r10, %r10 - 0x0f, 0x8f, 0x30, 0x00, 0x00, 0x00, //0x00002caa jg LBB0_526 - 0xe9, 0xe0, 0x0e, 0x00, 0x00, //0x00002cb0 jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002cb5 .p2align 4, 0x90 - //0x00002cc0 LBB0_524 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002cc0 movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002cc7 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002ccc addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002ccf movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002cd7 addq %rcx, %r10 - 0x0f, 0x8e, 0xb5, 0x0e, 0x00, 0x00, //0x00002cda jle LBB0_711 - //0x00002ce0 LBB0_526 - 0x41, 0x0f, 0xb6, 0x09, //0x00002ce0 movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002ce4 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002ce7 je LBB0_524 - 0x80, 0xf9, 0x22, //0x00002ced cmpb $34, %cl - 0x0f, 0x84, 0x22, 0x0a, 0x00, 0x00, //0x00002cf0 je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002cf6 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002cfd movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002d02 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002d05 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002d0d addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002d10 jg LBB0_526 - 0xe9, 0x7a, 0x0e, 0x00, 0x00, //0x00002d16 jmp LBB0_711 - //0x00002d1b LBB0_529 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d1b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d1f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d23 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d28 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00002d2d cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002d31 jne LBB0_532 - 0x48, 0x89, 0xc8, //0x00002d37 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002d3a subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00002d3d bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00002d41 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002d44 jmp LBB0_532 - //0x00002d49 LBB0_531 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d49 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d4d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d51 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d56 vmovdqa %ymm15, %ymm12 - //0x00002d5b LBB0_532 - 0x44, 0x89, 0xd0, //0x00002d5b movl %r10d, %eax - 0xf7, 0xd0, //0x00002d5e notl %eax - 0x21, 0xd0, //0x00002d60 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002d62 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x00002d65 leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x00002d69 notl %edi - 0x21, 0xd7, //0x00002d6b andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002d6d andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x00002d73 xorl %r10d, %r10d - 0x01, 0xc7, //0x00002d76 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x00002d78 setb %r10b - 0x01, 0xff, //0x00002d7c addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002d7e xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x00002d84 andl %r15d, %edi - 0xf7, 0xd7, //0x00002d87 notl %edi - 0x21, 0xfe, //0x00002d89 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002d8b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002d90 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002d95 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xfe, 0xd4, 0xff, 0xff, //0x00002d9a vmovdqu $-11010(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x16, 0xd4, 0xff, 0xff, //0x00002da2 vmovdqu $-11242(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002daa vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002dae vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x00002db2 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x00002db5 testq %rsi, %rsi - 0x0f, 0x85, 0xcc, 0xf9, 0xff, 0xff, //0x00002db8 jne LBB0_58 - //0x00002dbe LBB0_533 - 0x48, 0x83, 0xc1, 0x20, //0x00002dbe addq $32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00002dc2 addq $-32, %rbx - //0x00002dc6 LBB0_534 - 0x4d, 0x85, 0xd2, //0x00002dc6 testq %r10, %r10 - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x00002dc9 jne LBB0_614 - 0x4c, 0x89, 0xf7, //0x00002dcf movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x00002dd2 notq %rdi - 0x4c, 0x89, 0xfe, //0x00002dd5 movq %r15, %rsi - 0x49, 0x89, 0xca, //0x00002dd8 movq %rcx, %r10 - 0x48, 0x85, 0xdb, //0x00002ddb testq %rbx, %rbx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00002dde je LBB0_546 - //0x00002de4 LBB0_536 - 0x48, 0x83, 0xc7, 0x01, //0x00002de4 addq $1, %rdi - //0x00002de8 LBB0_537 - 0x31, 0xd2, //0x00002de8 xorl %edx, %edx - //0x00002dea LBB0_538 - 0x41, 0x0f, 0xb6, 0x0c, 0x12, //0x00002dea movzbl (%r10,%rdx), %ecx - 0x80, 0xf9, 0x22, //0x00002def cmpb $34, %cl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002df2 je LBB0_545 - 0x80, 0xf9, 0x5c, //0x00002df8 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002dfb je LBB0_543 - 0x48, 0x83, 0xc2, 0x01, //0x00002e01 addq $1, %rdx - 0x48, 0x39, 0xd3, //0x00002e05 cmpq %rdx, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002e08 jne LBB0_538 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002e0e jmp LBB0_541 - //0x00002e13 LBB0_543 - 0x48, 0x8d, 0x43, 0xff, //0x00002e13 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xd0, //0x00002e17 cmpq %rdx, %rax - 0x0f, 0x84, 0x30, 0x0d, 0x00, 0x00, //0x00002e1a je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e20 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e24 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e28 vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x17, //0x00002e2d leaq (%rdi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00002e31 addq %rdx, %rax - 0x48, 0x83, 0xfe, 0xff, //0x00002e34 cmpq $-1, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00002e38 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x00002e3c cmoveq %rax, %rsi - 0x49, 0x01, 0xd2, //0x00002e40 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x00002e43 addq $2, %r10 - 0x48, 0x89, 0xd8, //0x00002e47 movq %rbx, %rax - 0x48, 0x29, 0xd0, //0x00002e4a subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00002e4d addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002e51 addq $-2, %rbx - 0x48, 0x39, 0xd3, //0x00002e55 cmpq %rdx, %rbx - 0x48, 0x89, 0xc3, //0x00002e58 movq %rax, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e5b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x38, 0xd4, 0xff, 0xff, //0x00002e60 vmovdqu $-11208(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xd3, 0xff, 0xff, //0x00002e68 vmovdqu $-11440(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e70 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x00002e74 jne LBB0_537 - 0xe9, 0xd1, 0x0c, 0x00, 0x00, //0x00002e7a jmp LBB0_681 - //0x00002e7f LBB0_545 - 0x49, 0x01, 0xd2, //0x00002e7f addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002e82 addq $1, %r10 - //0x00002e86 LBB0_546 - 0x4d, 0x29, 0xf2, //0x00002e86 subq %r14, %r10 - 0xe9, 0x92, 0xe4, 0xff, 0xff, //0x00002e89 jmp LBB0_232 - //0x00002e8e LBB0_541 - 0x80, 0xf9, 0x22, //0x00002e8e cmpb $34, %cl - 0x0f, 0x85, 0xb9, 0x0c, 0x00, 0x00, //0x00002e91 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e97 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e9b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e9f vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xda, //0x00002ea4 addq %rbx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ea7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xec, 0xd3, 0xff, 0xff, //0x00002eac vmovdqu $-11284(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x04, 0xd3, 0xff, 0xff, //0x00002eb4 vmovdqu $-11516(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ebc vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00002ec0 jmp LBB0_546 - //0x00002ec5 LBB0_547 - 0x49, 0x39, 0xf2, //0x00002ec5 cmpq %rsi, %r10 - 0x0f, 0x84, 0xc7, 0x0c, 0x00, 0x00, //0x00002ec8 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ece vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ed2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ed6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002edb addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002ede addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002ee2 notq %rsi - 0x49, 0x01, 0xf2, //0x00002ee5 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ee8 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002eed movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002ef2 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ef7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x9c, 0xd3, 0xff, 0xff, //0x00002efc vmovdqu $-11364(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb4, 0xd2, 0xff, 0xff, //0x00002f04 vmovdqu $-11596(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f0c vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002f10 testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x00002f13 jg LBB0_551 - 0xe9, 0x77, 0x0c, 0x00, 0x00, //0x00002f19 jmp LBB0_711 - //0x00002f1e LBB0_549 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002f1e movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002f25 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002f2a addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f2d movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f35 addq %rcx, %r10 - 0x0f, 0x8e, 0x57, 0x0c, 0x00, 0x00, //0x00002f38 jle LBB0_711 - //0x00002f3e LBB0_551 - 0x41, 0x0f, 0xb6, 0x09, //0x00002f3e movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002f42 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002f45 je LBB0_549 - 0x80, 0xf9, 0x22, //0x00002f4b cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00002f4e je LBB0_678 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002f54 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002f5b movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002f60 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f63 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f6b addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002f6e jg LBB0_551 - 0xe9, 0x1c, 0x0c, 0x00, 0x00, //0x00002f74 jmp LBB0_711 - //0x00002f79 LBB0_678 - 0x4d, 0x29, 0xf1, //0x00002f79 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002f7c addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x00002f80 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00002f84 testq %r8, %r8 - 0x0f, 0x8f, 0x24, 0xe8, 0xff, 0xff, //0x00002f87 jg LBB0_300 - 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002f8d jmp LBB0_679 - //0x00002f92 LBB0_554 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002f92 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002f96 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f9a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f9f vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fa4 movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00002fa8 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00002fac jne LBB0_557 - 0x48, 0x89, 0xc8, //0x00002fb2 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002fb5 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00002fb8 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00002fbc addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00002fbf movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00002fc3 jmp LBB0_557 - //0x00002fc8 LBB0_556 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fc8 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002fcc vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002fd0 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002fd4 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002fd9 vmovdqa %ymm15, %ymm12 - //0x00002fde LBB0_557 - 0x44, 0x89, 0xd8, //0x00002fde movl %r11d, %eax - 0xf7, 0xd0, //0x00002fe1 notl %eax - 0x21, 0xd0, //0x00002fe3 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002fe5 leal (%rax,%rax), %edi - 0x41, 0x8d, 0x34, 0x43, //0x00002fe8 leal (%r11,%rax,2), %esi - 0xf7, 0xd7, //0x00002fec notl %edi - 0x21, 0xd7, //0x00002fee andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002ff0 andl $-1431655766, %edi - 0x45, 0x31, 0xdb, //0x00002ff6 xorl %r11d, %r11d - 0x01, 0xc7, //0x00002ff9 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc3, //0x00002ffb setb %r11b - 0x01, 0xff, //0x00002fff addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003001 xorl $1431655765, %edi - 0x21, 0xf7, //0x00003007 andl %esi, %edi - 0xf7, 0xd7, //0x00003009 notl %edi - 0x41, 0x21, 0xfa, //0x0000300b andl %edi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000300e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003013 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003018 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x7b, 0xd2, 0xff, 0xff, //0x0000301d vmovdqu $-11653(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x93, 0xd1, 0xff, 0xff, //0x00003025 vmovdqu $-11885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x0000302d vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00003031 vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x00003035 movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x00003039 testq %r10, %r10 - 0x0f, 0x85, 0xa0, 0xf7, 0xff, 0xff, //0x0000303c jne LBB0_203 - //0x00003042 LBB0_558 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003042 movl $64, %edx - //0x00003047 LBB0_559 - 0xc5, 0xbd, 0x64, 0xc8, //0x00003047 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000304b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003050 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00003054 vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x00003058 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x0000305b testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x0000305e je LBB0_562 - 0x85, 0xf6, //0x00003064 testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x00003066 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x0000306b cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x0000306e cmpq %rdi, %rdx - 0x49, 0x89, 0xca, //0x00003071 movq %rcx, %r10 - 0x0f, 0x87, 0x15, 0x0d, 0x00, 0x00, //0x00003074 ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x0000307a subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x0000307d addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003080 addq $1, %r10 - 0xe9, 0x97, 0xe2, 0xff, 0xff, //0x00003084 jmp LBB0_232 - //0x00003089 LBB0_562 - 0x85, 0xf6, //0x00003089 testl %esi, %esi - 0x49, 0x89, 0xca, //0x0000308b movq %rcx, %r10 - 0x0f, 0x85, 0x08, 0x0d, 0x00, 0x00, //0x0000308e jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x00003094 addq $32, %r10 - 0x48, 0x83, 0xc3, 0xe0, //0x00003098 addq $-32, %rbx - //0x0000309c LBB0_564 - 0x4d, 0x85, 0xdb, //0x0000309c testq %r11, %r11 - 0x0f, 0x85, 0x98, 0x04, 0x00, 0x00, //0x0000309f jne LBB0_616 - 0x4c, 0x89, 0xf9, //0x000030a5 movq %r15, %rcx - 0x48, 0x85, 0xdb, //0x000030a8 testq %rbx, %rbx - 0x0f, 0x84, 0x9f, 0x0a, 0x00, 0x00, //0x000030ab je LBB0_681 - //0x000030b1 LBB0_566 - 0x41, 0x0f, 0xb6, 0x12, //0x000030b1 movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x000030b5 cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000030b8 je LBB0_574 - 0x80, 0xfa, 0x5c, //0x000030be cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000030c1 je LBB0_570 - 0x80, 0xfa, 0x1f, //0x000030c7 cmpb $31, %dl - 0x0f, 0x86, 0xd7, 0x0c, 0x00, 0x00, //0x000030ca jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000030d0 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000030d7 movl $1, %esi - 0x49, 0x01, 0xf2, //0x000030dc addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x000030df addq %rdx, %rbx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x000030e2 jne LBB0_566 - 0xe9, 0x63, 0x0a, 0x00, 0x00, //0x000030e8 jmp LBB0_681 - //0x000030ed LBB0_570 - 0x48, 0x83, 0xfb, 0x01, //0x000030ed cmpq $1, %rbx - 0x0f, 0x84, 0x59, 0x0a, 0x00, 0x00, //0x000030f1 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000030f7 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000030fb vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030ff vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003104 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000310b movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00003110 cmpq $-1, %rcx - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003114 jne LBB0_573 - 0x4d, 0x89, 0xd7, //0x0000311a movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x0000311d subq %r14, %r15 - 0x4c, 0x89, 0xf9, //0x00003120 movq %r15, %rcx - //0x00003123 LBB0_573 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003123 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003128 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x6b, 0xd1, 0xff, 0xff, //0x0000312d vmovdqu $-11925(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x83, 0xd0, 0xff, 0xff, //0x00003135 vmovdqu $-12157(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000313d vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003141 vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xf2, //0x00003145 addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x00003148 addq %rdx, %rbx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000314b jne LBB0_566 - 0xe9, 0xfa, 0x09, 0x00, 0x00, //0x00003151 jmp LBB0_681 - //0x00003156 LBB0_574 - 0x4d, 0x29, 0xf2, //0x00003156 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003159 addq $1, %r10 - 0xe9, 0xbe, 0xe1, 0xff, 0xff, //0x0000315d jmp LBB0_232 - //0x00003162 LBB0_575 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003162 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003166 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000316a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316f vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00003174 cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003178 jne LBB0_578 - 0x48, 0x89, 0xd8, //0x0000317e movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x00003181 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00003184 bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00003188 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000318b jmp LBB0_578 - //0x00003190 LBB0_577 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003190 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003194 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003198 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319d vmovdqa %ymm15, %ymm12 - //0x000031a2 LBB0_578 - 0x44, 0x89, 0xd0, //0x000031a2 movl %r10d, %eax - 0xf7, 0xd0, //0x000031a5 notl %eax - 0x21, 0xd0, //0x000031a7 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x000031a9 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x000031ac leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x000031b0 notl %edi - 0x21, 0xd7, //0x000031b2 andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b4 andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x000031ba xorl %r10d, %r10d - 0x01, 0xc7, //0x000031bd addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x000031bf setb %r10b - 0x01, 0xff, //0x000031c3 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000031c5 xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x000031cb andl %r15d, %edi - 0xf7, 0xd7, //0x000031ce notl %edi - 0x21, 0xfe, //0x000031d0 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d7 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031dc vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xb7, 0xd0, 0xff, 0xff, //0x000031e1 vmovdqu $-12105(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xcf, 0xcf, 0xff, 0xff, //0x000031e9 vmovdqu $-12337(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000031f1 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000031f5 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x000031f9 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x000031fc testq %rsi, %rsi - 0x0f, 0x85, 0xb2, 0xf6, 0xff, 0xff, //0x000031ff jne LBB0_143 - //0x00003205 LBB0_579 - 0x48, 0x83, 0xc3, 0x20, //0x00003205 addq $32, %rbx - 0x48, 0x83, 0xc1, 0xe0, //0x00003209 addq $-32, %rcx - //0x0000320d LBB0_580 - 0x4d, 0x85, 0xd2, //0x0000320d testq %r10, %r10 - 0x0f, 0x85, 0x8a, 0x03, 0x00, 0x00, //0x00003210 jne LBB0_618 - 0x4c, 0x89, 0xf6, //0x00003216 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003219 notq %rsi - 0x4c, 0x89, 0xff, //0x0000321c movq %r15, %rdi - 0x49, 0x89, 0xda, //0x0000321f movq %rbx, %r10 - 0x48, 0x85, 0xc9, //0x00003222 testq %rcx, %rcx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00003225 je LBB0_592 - //0x0000322b LBB0_582 - 0x48, 0x83, 0xc6, 0x01, //0x0000322b addq $1, %rsi - //0x0000322f LBB0_583 - 0x31, 0xd2, //0x0000322f xorl %edx, %edx - //0x00003231 LBB0_584 - 0x41, 0x0f, 0xb6, 0x1c, 0x12, //0x00003231 movzbl (%r10,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003236 cmpb $34, %bl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00003239 je LBB0_591 - 0x80, 0xfb, 0x5c, //0x0000323f cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003242 je LBB0_589 - 0x48, 0x83, 0xc2, 0x01, //0x00003248 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x0000324c cmpq %rdx, %rcx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000324f jne LBB0_584 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00003255 jmp LBB0_587 - //0x0000325a LBB0_589 - 0x48, 0x8d, 0x41, 0xff, //0x0000325a leaq $-1(%rcx), %rax - 0x48, 0x39, 0xd0, //0x0000325e cmpq %rdx, %rax - 0x0f, 0x84, 0xe9, 0x08, 0x00, 0x00, //0x00003261 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003267 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000326b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000326f vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x16, //0x00003274 leaq (%rsi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00003278 addq %rdx, %rax - 0x48, 0x83, 0xff, 0xff, //0x0000327b cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x0000327f cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x00003283 cmoveq %rax, %rdi - 0x49, 0x01, 0xd2, //0x00003287 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x0000328a addq $2, %r10 - 0x48, 0x89, 0xc8, //0x0000328e movq %rcx, %rax - 0x48, 0x29, 0xd0, //0x00003291 subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003294 addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00003298 addq $-2, %rcx - 0x48, 0x39, 0xd1, //0x0000329c cmpq %rdx, %rcx - 0x48, 0x89, 0xc1, //0x0000329f movq %rax, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032a2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcf, 0xff, 0xff, //0x000032a7 vmovdqu $-12303(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcf, 0xff, 0xff, //0x000032af vmovdqu $-12535(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000032b7 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x000032bb jne LBB0_583 - 0xe9, 0x8a, 0x08, 0x00, 0x00, //0x000032c1 jmp LBB0_681 - //0x000032c6 LBB0_591 - 0x49, 0x01, 0xd2, //0x000032c6 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000032c9 addq $1, %r10 - //0x000032cd LBB0_592 - 0x4d, 0x29, 0xf2, //0x000032cd subq %r14, %r10 - 0xe9, 0xb7, 0xe4, 0xff, 0xff, //0x000032d0 jmp LBB0_298 - //0x000032d5 LBB0_587 - 0x80, 0xfb, 0x22, //0x000032d5 cmpb $34, %bl - 0x0f, 0x85, 0x72, 0x08, 0x00, 0x00, //0x000032d8 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000032de vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000032e2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032e6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xca, //0x000032eb addq %rcx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032ee vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xa5, 0xcf, 0xff, 0xff, //0x000032f3 vmovdqu $-12379(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xbd, 0xce, 0xff, 0xff, //0x000032fb vmovdqu $-12611(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003303 vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003307 jmp LBB0_592 - //0x0000330c LBB0_593 - 0xc5, 0x7d, 0x7f, 0xe2, //0x0000330c vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00003310 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003314 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003319 vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x0000331e movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00003322 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00003326 jne LBB0_596 - 0x48, 0x89, 0xd8, //0x0000332c movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x0000332f subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00003332 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00003336 addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00003339 movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x0000333d jmp LBB0_596 - //0x00003342 LBB0_595 - 0x4c, 0x89, 0x3c, 0x24, //0x00003342 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00003346 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x0000334a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000334e vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003353 vmovdqa %ymm15, %ymm12 - //0x00003358 LBB0_596 - 0x44, 0x89, 0xd8, //0x00003358 movl %r11d, %eax - 0xf7, 0xd0, //0x0000335b notl %eax - 0x21, 0xd0, //0x0000335d andl %edx, %eax - 0x8d, 0x34, 0x00, //0x0000335f leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x00003362 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x00003366 notl %esi - 0x21, 0xd6, //0x00003368 andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000336a andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003370 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003373 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003375 setb %r11b - 0x01, 0xf6, //0x00003379 addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000337b xorl $1431655765, %esi - 0x21, 0xfe, //0x00003381 andl %edi, %esi - 0xf7, 0xd6, //0x00003383 notl %esi - 0x41, 0x21, 0xf2, //0x00003385 andl %esi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003388 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000338d vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003392 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x01, 0xcf, 0xff, 0xff, //0x00003397 vmovdqu $-12543(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x19, 0xce, 0xff, 0xff, //0x0000339f vmovdqu $-12775(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x000033a7 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x000033ab vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x000033af movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000033b3 testq %r10, %r10 - 0x0f, 0x85, 0x53, 0xf5, 0xff, 0xff, //0x000033b6 jne LBB0_224 - //0x000033bc LBB0_597 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000033bc movl $64, %edx - //0x000033c1 LBB0_598 - 0xc5, 0xbd, 0x64, 0xc8, //0x000033c1 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000033c5 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000033ca vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000033ce vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x000033d2 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x000033d5 testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000033d8 je LBB0_601 - 0x85, 0xf6, //0x000033de testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x000033e0 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x000033e5 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x000033e8 cmpq %rdi, %rdx - 0x49, 0x89, 0xda, //0x000033eb movq %rbx, %r10 - 0x0f, 0x87, 0x9b, 0x09, 0x00, 0x00, //0x000033ee ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x000033f4 subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x000033f7 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033fa addq $1, %r10 - 0xe9, 0x89, 0xe3, 0xff, 0xff, //0x000033fe jmp LBB0_298 - //0x00003403 LBB0_601 - 0x85, 0xf6, //0x00003403 testl %esi, %esi - 0x49, 0x89, 0xda, //0x00003405 movq %rbx, %r10 - 0x0f, 0x85, 0x8e, 0x09, 0x00, 0x00, //0x00003408 jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x0000340e addq $32, %r10 - 0x48, 0x83, 0xc1, 0xe0, //0x00003412 addq $-32, %rcx - //0x00003416 LBB0_603 - 0x4d, 0x85, 0xdb, //0x00003416 testq %r11, %r11 - 0x0f, 0x85, 0xe2, 0x01, 0x00, 0x00, //0x00003419 jne LBB0_620 - 0x4c, 0x89, 0xfe, //0x0000341f movq %r15, %rsi - 0x48, 0x85, 0xc9, //0x00003422 testq %rcx, %rcx - 0x0f, 0x84, 0x25, 0x07, 0x00, 0x00, //0x00003425 je LBB0_681 - //0x0000342b LBB0_605 - 0x41, 0x0f, 0xb6, 0x12, //0x0000342b movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x0000342f cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x00003432 je LBB0_613 - 0x80, 0xfa, 0x5c, //0x00003438 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000343b je LBB0_609 - 0x80, 0xfa, 0x1f, //0x00003441 cmpb $31, %dl - 0x0f, 0x86, 0x5d, 0x09, 0x00, 0x00, //0x00003444 jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000344a movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003451 movl $1, %edi - 0x49, 0x01, 0xfa, //0x00003456 addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x00003459 addq %rdx, %rcx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x0000345c jne LBB0_605 - 0xe9, 0xe9, 0x06, 0x00, 0x00, //0x00003462 jmp LBB0_681 - //0x00003467 LBB0_609 - 0x48, 0x83, 0xf9, 0x01, //0x00003467 cmpq $1, %rcx - 0x0f, 0x84, 0xdf, 0x06, 0x00, 0x00, //0x0000346b je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003471 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003475 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003479 vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x0000347e movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003485 movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x0000348a cmpq $-1, %rsi - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x0000348e jne LBB0_612 - 0x4d, 0x89, 0xd7, //0x00003494 movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x00003497 subq %r14, %r15 - 0x4c, 0x89, 0xfe, //0x0000349a movq %r15, %rsi - //0x0000349d LBB0_612 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000349d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000034a2 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcd, 0xff, 0xff, //0x000034a7 vmovdqu $-12815(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcd, 0xff, 0xff, //0x000034af vmovdqu $-13047(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000034b7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000034bb vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xfa, //0x000034bf addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x000034c2 addq %rdx, %rcx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000034c5 jne LBB0_605 - 0xe9, 0x80, 0x06, 0x00, 0x00, //0x000034cb jmp LBB0_681 - //0x000034d0 LBB0_613 - 0x4d, 0x29, 0xf2, //0x000034d0 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000034d3 addq $1, %r10 - 0xe9, 0xb0, 0xe2, 0xff, 0xff, //0x000034d7 jmp LBB0_298 - //0x000034dc LBB0_614 - 0x48, 0x85, 0xdb, //0x000034dc testq %rbx, %rbx - 0x0f, 0x84, 0x6b, 0x06, 0x00, 0x00, //0x000034df je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000034e5 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000034e9 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034ed vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf7, //0x000034f2 movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x000034f5 notq %rdi - 0x49, 0x89, 0xca, //0x000034f8 movq %rcx, %r10 - 0x48, 0x8d, 0x04, 0x39, //0x000034fb leaq (%rcx,%rdi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000034ff cmpq $-1, %r15 - 0x4c, 0x89, 0xfe, //0x00003503 movq %r15, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00003506 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x0000350a cmoveq %rax, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x0000350e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003512 addq $-1, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003516 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xcd, 0xff, 0xff, //0x0000351b vmovdqu $-12931(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xcc, 0xff, 0xff, //0x00003523 vmovdqu $-13163(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000352b vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x0000352f testq %rbx, %rbx - 0x0f, 0x85, 0xac, 0xf8, 0xff, 0xff, //0x00003532 jne LBB0_536 - 0xe9, 0x49, 0xf9, 0xff, 0xff, //0x00003538 jmp LBB0_546 - //0x0000353d LBB0_616 - 0x48, 0x85, 0xdb, //0x0000353d testq %rbx, %rbx - 0x0f, 0x84, 0x0a, 0x06, 0x00, 0x00, //0x00003540 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003546 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000354a vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000354e vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf1, //0x00003553 movq %r14, %rcx - 0x48, 0xf7, 0xd1, //0x00003556 notq %rcx - 0x4c, 0x01, 0xd1, //0x00003559 addq %r10, %rcx - 0x4c, 0x89, 0xfa, //0x0000355c movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x0000355f cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003563 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc1, //0x00003566 cmoveq %rcx, %rax - 0x49, 0x0f, 0x45, 0xcf, //0x0000356a cmovneq %r15, %rcx - 0x49, 0x83, 0xc2, 0x01, //0x0000356e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003572 addq $-1, %rbx - 0x49, 0x89, 0xc7, //0x00003576 movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003579 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x1a, 0xcd, 0xff, 0xff, //0x0000357e vmovdqu $-13030(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x32, 0xcc, 0xff, 0xff, //0x00003586 vmovdqu $-13262(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000358e vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x00003592 testq %rbx, %rbx - 0x0f, 0x85, 0x16, 0xfb, 0xff, 0xff, //0x00003595 jne LBB0_566 - 0xe9, 0xb0, 0x05, 0x00, 0x00, //0x0000359b jmp LBB0_681 - //0x000035a0 LBB0_618 - 0x48, 0x85, 0xc9, //0x000035a0 testq %rcx, %rcx - 0x0f, 0x84, 0xa7, 0x05, 0x00, 0x00, //0x000035a3 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000035a9 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000035ad vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000035b1 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x000035b6 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x000035b9 notq %rsi - 0x49, 0x89, 0xda, //0x000035bc movq %rbx, %r10 - 0x48, 0x8d, 0x04, 0x33, //0x000035bf leaq (%rbx,%rsi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000035c3 cmpq $-1, %r15 - 0x4c, 0x89, 0xff, //0x000035c7 movq %r15, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x000035ca cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x000035ce cmoveq %rax, %rdi - 0x49, 0x83, 0xc2, 0x01, //0x000035d2 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x000035d6 addq $-1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000035da vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xcc, 0xff, 0xff, //0x000035df vmovdqu $-13127(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcb, 0xff, 0xff, //0x000035e7 vmovdqu $-13359(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000035ef vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x000035f3 testq %rcx, %rcx - 0x0f, 0x85, 0x2f, 0xfc, 0xff, 0xff, //0x000035f6 jne LBB0_582 - 0xe9, 0xcc, 0xfc, 0xff, 0xff, //0x000035fc jmp LBB0_592 - //0x00003601 LBB0_620 - 0x48, 0x85, 0xc9, //0x00003601 testq %rcx, %rcx - 0x0f, 0x84, 0x46, 0x05, 0x00, 0x00, //0x00003604 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000360a vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000360e vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003612 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x00003617 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x0000361a notq %rsi - 0x4c, 0x01, 0xd6, //0x0000361d addq %r10, %rsi - 0x4c, 0x89, 0xfa, //0x00003620 movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x00003623 cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003627 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x0000362a cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf7, //0x0000362e cmovneq %r15, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x00003632 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x00003636 addq $-1, %rcx - 0x49, 0x89, 0xc7, //0x0000363a movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000363d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x56, 0xcc, 0xff, 0xff, //0x00003642 vmovdqu $-13226(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x6e, 0xcb, 0xff, 0xff, //0x0000364a vmovdqu $-13458(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003652 vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x00003656 testq %rcx, %rcx - 0x0f, 0x85, 0xcc, 0xfd, 0xff, 0xff, //0x00003659 jne LBB0_605 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x0000365f jmp LBB0_681 - //0x00003664 LBB0_622 - 0x49, 0x39, 0xf2, //0x00003664 cmpq %rsi, %r10 - 0x0f, 0x84, 0x28, 0x05, 0x00, 0x00, //0x00003667 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000366d vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003671 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003675 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x0000367a addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000367d addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00003681 notq %rsi - 0x49, 0x01, 0xf2, //0x00003684 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00003687 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000368c movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003691 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003696 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xcb, 0xff, 0xff, //0x0000369b vmovdqu $-13315(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x15, 0xcb, 0xff, 0xff, //0x000036a3 vmovdqu $-13547(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000036ab vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x000036af testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x000036b2 jg LBB0_626 - 0xe9, 0xd8, 0x04, 0x00, 0x00, //0x000036b8 jmp LBB0_711 - //0x000036bd LBB0_624 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000036bd movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x000036c4 movl $2, %edx - 0x49, 0x01, 0xd1, //0x000036c9 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000036cc movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x000036d4 addq %rcx, %r10 - 0x0f, 0x8e, 0xb8, 0x04, 0x00, 0x00, //0x000036d7 jle LBB0_711 - //0x000036dd LBB0_626 - 0x41, 0x0f, 0xb6, 0x09, //0x000036dd movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x000036e1 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x000036e4 je LBB0_624 - 0x80, 0xf9, 0x22, //0x000036ea cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000036ed je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000036f3 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x000036fa movl $1, %edx - 0x49, 0x01, 0xd1, //0x000036ff addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003702 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x0000370a addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x0000370d jg LBB0_626 - 0xe9, 0x7d, 0x04, 0x00, 0x00, //0x00003713 jmp LBB0_711 - //0x00003718 LBB0_629 - 0x4d, 0x29, 0xf1, //0x00003718 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000371b addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x0000371f movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00003723 testq %r8, %r8 - 0x0f, 0x8f, 0x74, 0xcc, 0xff, 0xff, //0x00003726 jg LBB0_3 - 0xe9, 0xfb, 0x03, 0x00, 0x00, //0x0000372c jmp LBB0_679 - //0x00003731 LBB0_630 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003731 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003735 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003739 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000373e vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x1c, 0x24, //0x00003743 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x00003747 cmpq $-1, %r11 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000374b jne LBB0_633 - 0x48, 0x89, 0xf8, //0x00003751 movq %rdi, %rax - 0x4c, 0x29, 0xf0, //0x00003754 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00003757 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x0000375b addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x0000375e movq %rcx, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00003762 jmp LBB0_633 - //0x00003767 LBB0_632 - 0x4c, 0x89, 0x1c, 0x24, //0x00003767 movq %r11, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000376b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000376f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003773 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003778 vmovdqa %ymm15, %ymm12 - //0x0000377d LBB0_633 - 0x44, 0x89, 0xd0, //0x0000377d movl %r10d, %eax - 0xf7, 0xd0, //0x00003780 notl %eax - 0x21, 0xd0, //0x00003782 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00003784 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x1c, 0x42, //0x00003787 leal (%r10,%rax,2), %ebx - 0xf7, 0xd1, //0x0000378b notl %ecx - 0x21, 0xd1, //0x0000378d andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000378f andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00003795 xorl %r10d, %r10d - 0x01, 0xc1, //0x00003798 addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x0000379a setb %r10b - 0x01, 0xc9, //0x0000379e addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x000037a0 xorl $1431655765, %ecx - 0x21, 0xd9, //0x000037a6 andl %ebx, %ecx - 0xf7, 0xd1, //0x000037a8 notl %ecx - 0x21, 0xce, //0x000037aa andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ac vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000037b1 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000037b6 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xdd, 0xca, 0xff, 0xff, //0x000037bb vmovdqu $-13603(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf5, 0xc9, 0xff, 0xff, //0x000037c3 vmovdqu $-13835(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000037cb vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000037cf vmovdqa %ymm1, %ymm12 - 0x4c, 0x8b, 0x1c, 0x24, //0x000037d3 movq (%rsp), %r11 - 0xc5, 0x7d, 0x7f, 0xea, //0x000037d7 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000037db testq %rsi, %rsi - 0x0f, 0x85, 0xfe, 0xf1, 0xff, 0xff, //0x000037de jne LBB0_247 - //0x000037e4 LBB0_634 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000037e4 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e8 vmovdqa %ymm11, %ymm0 - 0xc5, 0x7d, 0x6f, 0xda, //0x000037ec vmovdqa %ymm2, %ymm11 - 0x48, 0x83, 0xc7, 0x20, //0x000037f0 addq $32, %rdi - 0x49, 0x83, 0xc0, 0xe0, //0x000037f4 addq $-32, %r8 - //0x000037f8 LBB0_635 - 0x4d, 0x85, 0xd2, //0x000037f8 testq %r10, %r10 - 0x0f, 0x85, 0x6e, 0x02, 0x00, 0x00, //0x000037fb jne LBB0_669 - 0x4c, 0x89, 0xf6, //0x00003801 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003804 notq %rsi - 0x4d, 0x89, 0xda, //0x00003807 movq %r11, %r10 - 0x4d, 0x85, 0xc0, //0x0000380a testq %r8, %r8 - 0x0f, 0x84, 0x95, 0x02, 0x00, 0x00, //0x0000380d je LBB0_671 - //0x00003813 LBB0_637 - 0x48, 0x83, 0xc6, 0x01, //0x00003813 addq $1, %rsi - //0x00003817 LBB0_638 - 0x31, 0xd2, //0x00003817 xorl %edx, %edx - 0x48, 0x89, 0xf9, //0x00003819 movq %rdi, %rcx - //0x0000381c LBB0_639 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000381c movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003820 cmpb $34, %bl - 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x00003823 je LBB0_646 - 0x80, 0xfb, 0x5c, //0x00003829 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000382c je LBB0_644 - 0x48, 0x83, 0xc2, 0x01, //0x00003832 addq $1, %rdx - 0x49, 0x39, 0xd0, //0x00003836 cmpq %rdx, %r8 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003839 jne LBB0_639 - 0xe9, 0x52, 0x00, 0x00, 0x00, //0x0000383f jmp LBB0_642 - //0x00003844 LBB0_644 - 0x49, 0x8d, 0x40, 0xff, //0x00003844 leaq $-1(%r8), %rax - 0x48, 0x39, 0xd0, //0x00003848 cmpq %rdx, %rax - 0x0f, 0x84, 0xad, 0x04, 0x00, 0x00, //0x0000384b je LBB0_707 - 0x48, 0x8d, 0x04, 0x3e, //0x00003851 leaq (%rsi,%rdi), %rax - 0x48, 0x01, 0xd0, //0x00003855 addq %rdx, %rax - 0x49, 0x83, 0xfa, 0xff, //0x00003858 cmpq $-1, %r10 - 0x4c, 0x0f, 0x44, 0xd8, //0x0000385c cmoveq %rax, %r11 - 0x4c, 0x0f, 0x44, 0xd0, //0x00003860 cmoveq %rax, %r10 - 0x48, 0x01, 0xd7, //0x00003864 addq %rdx, %rdi - 0x48, 0x83, 0xc7, 0x02, //0x00003867 addq $2, %rdi - 0x4c, 0x89, 0xc0, //0x0000386b movq %r8, %rax - 0x48, 0x29, 0xd0, //0x0000386e subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003871 addq $-2, %rax - 0x49, 0x83, 0xc0, 0xfe, //0x00003875 addq $-2, %r8 - 0x49, 0x39, 0xd0, //0x00003879 cmpq %rdx, %r8 - 0x49, 0x89, 0xc0, //0x0000387c movq %rax, %r8 - 0x0f, 0x85, 0x92, 0xff, 0xff, 0xff, //0x0000387f jne LBB0_638 - 0xe9, 0x74, 0x04, 0x00, 0x00, //0x00003885 jmp LBB0_707 - //0x0000388a LBB0_646 - 0x48, 0x01, 0xd1, //0x0000388a addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000388d addq $1, %rcx - 0xe9, 0x15, 0x02, 0x00, 0x00, //0x00003891 jmp LBB0_672 - //0x00003896 LBB0_642 - 0x80, 0xfb, 0x22, //0x00003896 cmpb $34, %bl - 0x0f, 0x85, 0x5f, 0x04, 0x00, 0x00, //0x00003899 jne LBB0_707 - 0x48, 0x89, 0xf9, //0x0000389f movq %rdi, %rcx - 0x4c, 0x01, 0xc1, //0x000038a2 addq %r8, %rcx - 0xe9, 0x01, 0x02, 0x00, 0x00, //0x000038a5 jmp LBB0_672 - //0x000038aa LBB0_647 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038aa vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038ae vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038b2 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038b7 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xfa, 0xff, //0x000038bc cmpq $-1, %r10 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000038c0 jne LBB0_650 - 0x48, 0x89, 0xd8, //0x000038c6 movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x000038c9 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xd2, //0x000038cc bsfq %rdx, %r10 - 0x49, 0x01, 0xc2, //0x000038d0 addq %rax, %r10 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x000038d3 jmp LBB0_650 - //0x000038d8 LBB0_649 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038d8 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038dc vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038e0 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038e5 vmovdqa %ymm15, %ymm12 - //0x000038ea LBB0_650 - 0x44, 0x89, 0xd8, //0x000038ea movl %r11d, %eax - 0xf7, 0xd0, //0x000038ed notl %eax - 0x21, 0xd0, //0x000038ef andl %edx, %eax - 0x8d, 0x34, 0x00, //0x000038f1 leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x000038f4 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x000038f8 notl %esi - 0x21, 0xd6, //0x000038fa andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000038fc andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003902 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003905 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003907 setb %r11b - 0x01, 0xf6, //0x0000390b addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000390d xorl $1431655765, %esi - 0x21, 0xfe, //0x00003913 andl %edi, %esi - 0xf7, 0xd6, //0x00003915 notl %esi - 0x21, 0xf1, //0x00003917 andl %esi, %ecx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003919 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000391e vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003923 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x70, 0xc9, 0xff, 0xff, //0x00003928 vmovdqu $-13968(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x88, 0xc8, 0xff, 0xff, //0x00003930 vmovdqu $-14200(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00003938 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x0000393c vmovdqa %ymm2, %ymm12 - 0x48, 0x85, 0xc9, //0x00003940 testq %rcx, %rcx - 0x0f, 0x85, 0xf0, 0xf0, 0xff, 0xff, //0x00003943 jne LBB0_398 - //0x00003949 LBB0_651 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003949 movl $64, %edx - //0x0000394e LBB0_652 - 0xc5, 0xbd, 0x64, 0xc8, //0x0000394e vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003952 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003957 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x0000395b vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x0000395f bsfl %esi, %edi - 0x48, 0x85, 0xc9, //0x00003962 testq %rcx, %rcx - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x00003965 je LBB0_655 - 0x85, 0xf6, //0x0000396b testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x0000396d movl $64, %eax - 0x0f, 0x44, 0xf8, //0x00003972 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x00003975 cmpq %rdi, %rdx - 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx - 0x0f, 0x87, 0x31, 0x04, 0x00, 0x00, //0x0000397b ja LBB0_725 - 0xc5, 0x7d, 0x7f, 0xea, //0x00003981 vmovdqa %ymm13, %ymm2 - 0x4c, 0x29, 0xf1, //0x00003985 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00003988 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000398b addq $1, %rcx - 0x4d, 0x89, 0xd3, //0x0000398f movq %r10, %r11 - 0xe9, 0x57, 0xeb, 0xff, 0xff, //0x00003992 jmp LBB0_461 - //0x00003997 LBB0_655 - 0x85, 0xf6, //0x00003997 testl %esi, %esi - 0x0f, 0x85, 0x23, 0x04, 0x00, 0x00, //0x00003999 jne LBB0_726 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000399f vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000039a3 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000039a7 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000039ac vmovdqa %ymm15, %ymm12 - 0x48, 0x83, 0xc3, 0x20, //0x000039b1 addq $32, %rbx - 0x49, 0x83, 0xc0, 0xe0, //0x000039b5 addq $-32, %r8 - //0x000039b9 LBB0_657 - 0x4d, 0x85, 0xdb, //0x000039b9 testq %r11, %r11 - 0x0f, 0x85, 0x12, 0x01, 0x00, 0x00, //0x000039bc jne LBB0_673 - 0x4c, 0x89, 0xd6, //0x000039c2 movq %r10, %rsi - 0x4d, 0x85, 0xc0, //0x000039c5 testq %r8, %r8 - 0x0f, 0x84, 0x30, 0x03, 0x00, 0x00, //0x000039c8 je LBB0_707 - //0x000039ce LBB0_659 - 0x48, 0x89, 0xd9, //0x000039ce movq %rbx, %rcx - //0x000039d1 LBB0_660 - 0x0f, 0xb6, 0x11, //0x000039d1 movzbl (%rcx), %edx - 0x80, 0xfa, 0x22, //0x000039d4 cmpb $34, %dl - 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x000039d7 je LBB0_668 - 0x80, 0xfa, 0x5c, //0x000039dd cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000039e0 je LBB0_665 - 0x80, 0xfa, 0x1f, //0x000039e6 cmpb $31, %dl - 0x0f, 0x86, 0xe1, 0x03, 0x00, 0x00, //0x000039e9 jbe LBB0_727 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000039ef movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x000039f6 movl $1, %edi - //0x000039fb LBB0_664 - 0x48, 0x01, 0xf9, //0x000039fb addq %rdi, %rcx - 0x49, 0x01, 0xd0, //0x000039fe addq %rdx, %r8 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003a01 jne LBB0_660 - 0xe9, 0xf2, 0x02, 0x00, 0x00, //0x00003a07 jmp LBB0_707 - //0x00003a0c LBB0_665 - 0x49, 0x83, 0xf8, 0x01, //0x00003a0c cmpq $1, %r8 - 0x0f, 0x84, 0xe8, 0x02, 0x00, 0x00, //0x00003a10 je LBB0_707 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003a16 movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003a1d movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x00003a22 cmpq $-1, %rsi - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003a26 jne LBB0_664 - 0x48, 0x89, 0xce, //0x00003a2c movq %rcx, %rsi - 0x4c, 0x29, 0xf6, //0x00003a2f subq %r14, %rsi - 0x49, 0x89, 0xf2, //0x00003a32 movq %rsi, %r10 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a35 jmp LBB0_664 - //0x00003a3a LBB0_668 - 0x4c, 0x29, 0xf1, //0x00003a3a subq %r14, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x00003a3d addq $1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a41 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003a46 vmovdqa %ymm11, %ymm2 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003a4a vmovdqa %ymm12, %ymm15 - 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xc8, 0xff, 0xff, //0x00003a4f vmovdqu $-14263(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xc7, 0xff, 0xff, //0x00003a57 vmovdqu $-14495(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003a5f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003a63 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xd3, //0x00003a67 movq %r10, %r11 - 0xe9, 0x7f, 0xea, 0xff, 0xff, //0x00003a6a jmp LBB0_461 - //0x00003a6f LBB0_669 - 0x4d, 0x85, 0xc0, //0x00003a6f testq %r8, %r8 - 0x0f, 0x84, 0x86, 0x02, 0x00, 0x00, //0x00003a72 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003a78 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003a7b notq %rsi - 0x48, 0x8d, 0x04, 0x37, //0x00003a7e leaq (%rdi,%rsi), %rax - 0x4c, 0x89, 0xd9, //0x00003a82 movq %r11, %rcx - 0x49, 0x83, 0xfb, 0xff, //0x00003a85 cmpq $-1, %r11 - 0x4d, 0x89, 0xda, //0x00003a89 movq %r11, %r10 - 0x48, 0x0f, 0x44, 0xc8, //0x00003a8c cmoveq %rax, %rcx - 0x4c, 0x0f, 0x44, 0xd0, //0x00003a90 cmoveq %rax, %r10 - 0x48, 0x83, 0xc7, 0x01, //0x00003a94 addq $1, %rdi - 0x49, 0x83, 0xc0, 0xff, //0x00003a98 addq $-1, %r8 - 0x49, 0x89, 0xcb, //0x00003a9c movq %rcx, %r11 - 0x4d, 0x85, 0xc0, //0x00003a9f testq %r8, %r8 - 0x0f, 0x85, 0x6b, 0xfd, 0xff, 0xff, //0x00003aa2 jne LBB0_637 - //0x00003aa8 LBB0_671 - 0x48, 0x89, 0xf9, //0x00003aa8 movq %rdi, %rcx - //0x00003aab LBB0_672 - 0x4c, 0x29, 0xf1, //0x00003aab subq %r14, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003aae vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003ab3 vmovdqa %ymm11, %ymm2 - 0xc5, 0xfe, 0x6f, 0x25, 0xe1, 0xc7, 0xff, 0xff, //0x00003ab7 vmovdqu $-14367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf9, 0xc6, 0xff, 0xff, //0x00003abf vmovdqu $-14599(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003ac7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003acb vmovdqa %ymm1, %ymm12 - 0xe9, 0x1a, 0xea, 0xff, 0xff, //0x00003acf jmp LBB0_461 - //0x00003ad4 LBB0_673 - 0x4d, 0x85, 0xc0, //0x00003ad4 testq %r8, %r8 - 0x0f, 0x84, 0x21, 0x02, 0x00, 0x00, //0x00003ad7 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003add movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003ae0 notq %rsi - 0x48, 0x01, 0xde, //0x00003ae3 addq %rbx, %rsi - 0x49, 0x83, 0xfa, 0xff, //0x00003ae6 cmpq $-1, %r10 - 0x4c, 0x89, 0xd0, //0x00003aea movq %r10, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x00003aed cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf2, //0x00003af1 cmovneq %r10, %rsi - 0x48, 0x83, 0xc3, 0x01, //0x00003af5 addq $1, %rbx - 0x49, 0x83, 0xc0, 0xff, //0x00003af9 addq $-1, %r8 - 0x49, 0x89, 0xc2, //0x00003afd movq %rax, %r10 - 0x4d, 0x85, 0xc0, //0x00003b00 testq %r8, %r8 - 0x0f, 0x85, 0xc5, 0xfe, 0xff, 0xff, //0x00003b03 jne LBB0_659 - 0xe9, 0xf0, 0x01, 0x00, 0x00, //0x00003b09 jmp LBB0_707 - //0x00003b0e LBB0_675 - 0x4d, 0x89, 0x65, 0x00, //0x00003b0e movq %r12, (%r13) - //0x00003b12 LBB0_677 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003b12 movq $-1, (%rsp) - 0xe9, 0x76, 0x00, 0x00, 0x00, //0x00003b1a jmp LBB0_711 - //0x00003b1f LBB0_705 - 0x48, 0xc7, 0x04, 0x24, 0xf9, 0xff, 0xff, 0xff, //0x00003b1f movq $-7, (%rsp) - 0xe9, 0x69, 0x00, 0x00, 0x00, //0x00003b27 jmp LBB0_711 - //0x00003b2c LBB0_679 - 0x49, 0x83, 0xc0, 0xff, //0x00003b2c addq $-1, %r8 - 0x4c, 0x89, 0x04, 0x24, //0x00003b30 movq %r8, (%rsp) - 0xe9, 0x5c, 0x00, 0x00, 0x00, //0x00003b34 jmp LBB0_711 - //0x00003b39 LBB0_463 - 0x49, 0x83, 0xc1, 0xff, //0x00003b39 addq $-1, %r9 - 0x4c, 0x89, 0x0c, 0x24, //0x00003b3d movq %r9, (%rsp) - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x00003b41 jmp LBB0_711 - //0x00003b46 LBB0_680 - 0x49, 0x83, 0xfa, 0xff, //0x00003b46 cmpq $-1, %r10 - 0x0f, 0x85, 0x7c, 0x00, 0x00, 0x00, //0x00003b4a jne LBB0_703 - //0x00003b50 LBB0_681 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003b50 movq $-1, %r10 - 0x4d, 0x89, 0xc7, //0x00003b57 movq %r8, %r15 - 0xe9, 0x6d, 0x00, 0x00, 0x00, //0x00003b5a jmp LBB0_703 - //0x00003b5f LBB0_682 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003b5f movq $-1, %rcx - 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00003b66 jmp LBB0_684 - //0x00003b6b LBB0_178 - 0x48, 0x83, 0xc3, 0xff, //0x00003b6b addq $-1, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00003b6f movq %rbx, (%rsp) - 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00003b73 jmp LBB0_711 - //0x00003b78 LBB0_683 - 0x4c, 0x89, 0xe9, //0x00003b78 movq %r13, %rcx - //0x00003b7b LBB0_684 - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00003b7b movq $48(%rsp), %rdx - 0x48, 0x8b, 0x02, //0x00003b80 movq (%rdx), %rax - 0x48, 0x29, 0xc8, //0x00003b83 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003b86 addq $-2, %rax - 0x48, 0x89, 0x02, //0x00003b8a movq %rax, (%rdx) - //0x00003b8d LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003b8d movq $-2, (%rsp) - //0x00003b95 LBB0_711 - 0x48, 0x8b, 0x04, 0x24, //0x00003b95 movq (%rsp), %rax - 0x48, 0x8d, 0x65, 0xd8, //0x00003b99 leaq $-40(%rbp), %rsp - 0x5b, //0x00003b9d popq %rbx - 0x41, 0x5c, //0x00003b9e popq %r12 - 0x41, 0x5d, //0x00003ba0 popq %r13 - 0x41, 0x5e, //0x00003ba2 popq %r14 - 0x41, 0x5f, //0x00003ba4 popq %r15 - 0x5d, //0x00003ba6 popq %rbp - 0xc5, 0xf8, 0x77, //0x00003ba7 vzeroupper - 0xc3, //0x00003baa retq - //0x00003bab LBB0_686 - 0x49, 0x89, 0x55, 0x00, //0x00003bab movq %rdx, (%r13) - 0xe9, 0xe1, 0xff, 0xff, 0xff, //0x00003baf jmp LBB0_711 - //0x00003bb4 LBB0_699 - 0x49, 0x83, 0xff, 0xff, //0x00003bb4 cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003bb8 jne LBB0_702 - 0x4c, 0x0f, 0xbc, 0xfe, //0x00003bbe bsfq %rsi, %r15 - //0x00003bc2 LBB0_701 - 0x4d, 0x01, 0xd7, //0x00003bc2 addq %r10, %r15 - //0x00003bc5 LBB0_702 - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003bc5 movq $-2, %r10 - //0x00003bcc LBB0_703 - 0x4c, 0x89, 0x14, 0x24, //0x00003bcc movq %r10, (%rsp) - 0x4d, 0x89, 0x7d, 0x00, //0x00003bd0 movq %r15, (%r13) - 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x00003bd4 jmp LBB0_711 - //0x00003bd9 LBB0_687 - 0x80, 0xfa, 0x61, //0x00003bd9 cmpb $97, %dl - 0x0f, 0x85, 0xab, 0xff, 0xff, 0xff, //0x00003bdc jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003be2 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003be6 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003bea cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x97, 0xff, 0xff, 0xff, //0x00003bf0 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003bf6 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003bfa movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003bfe cmpb $115, $2(%r14,%rcx) - 0x0f, 0x85, 0x83, 0xff, 0xff, 0xff, //0x00003c04 jne LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003c0a movq $-2, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x00003c12 leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c16 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003c1a cmpb $101, $3(%r14,%rcx) - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003c20 jne LBB0_711 - 0x48, 0x83, 0xc1, 0x04, //0x00003c26 addq $4, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003c2a movq %rcx, (%r13) - 0xe9, 0x62, 0xff, 0xff, 0xff, //0x00003c2e jmp LBB0_711 - //0x00003c33 LBB0_267 - 0x49, 0x89, 0x45, 0x00, //0x00003c33 movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003c37 cmpb $110, (%r14,%rax) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003c3c jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c42 movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003c46 cmpb $117, (%r14,%rcx) - 0x0f, 0x85, 0x3c, 0xff, 0xff, 0xff, //0x00003c4b jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c51 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c55 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003c59 cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x28, 0xff, 0xff, 0xff, //0x00003c5f jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003c65 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c69 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003c6d cmpb $108, $2(%r14,%rcx) - 0x0f, 0x84, 0x4b, 0x00, 0x00, 0x00, //0x00003c73 je LBB0_696 - 0xe9, 0x0f, 0xff, 0xff, 0xff, //0x00003c79 jmp LBB0_710 - //0x00003c7e LBB0_692 - 0x49, 0x89, 0x45, 0x00, //0x00003c7e movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003c82 cmpb $116, (%r14,%rax) - 0x0f, 0x85, 0x00, 0xff, 0xff, 0xff, //0x00003c87 jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c8d movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003c91 cmpb $114, (%r14,%rcx) - 0x0f, 0x85, 0xf1, 0xfe, 0xff, 0xff, //0x00003c96 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c9c leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003ca0 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003ca4 cmpb $117, $1(%r14,%rcx) - 0x0f, 0x85, 0xdd, 0xfe, 0xff, 0xff, //0x00003caa jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003cb0 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003cb4 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003cb8 cmpb $101, $2(%r14,%rcx) - 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003cbe jne LBB0_710 - //0x00003cc4 LBB0_696 - 0x48, 0x83, 0xc1, 0x03, //0x00003cc4 addq $3, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003cc8 movq %rcx, (%r13) - 0xe9, 0xbc, 0xfe, 0xff, 0xff, //0x00003ccc jmp LBB0_710 - //0x00003cd1 LBB0_698 - 0x48, 0x83, 0x04, 0x24, 0xff, //0x00003cd1 addq $-1, (%rsp) - 0xe9, 0xba, 0xfe, 0xff, 0xff, //0x00003cd6 jmp LBB0_711 - //0x00003cdb LBB0_264 - 0x48, 0x83, 0xc1, 0xff, //0x00003cdb addq $-1, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00003cdf movq %rcx, (%rsp) - 0xe9, 0xad, 0xfe, 0xff, 0xff, //0x00003ce3 jmp LBB0_711 - //0x00003ce8 LBB0_704 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003ce8 movq $-1, %rcx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00003cef jmp LBB0_709 - //0x00003cf4 LBB0_706 - 0x48, 0x83, 0xf9, 0xff, //0x00003cf4 cmpq $-1, %rcx - 0x0f, 0x85, 0x58, 0x00, 0x00, 0x00, //0x00003cf8 jne LBB0_716 + 0x48, 0x21, 0xcf, //0x00001e0f andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_340 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00001e18 jmp LBB0_343 + //0x00001e1d LBB0_342 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001e1d vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001e22 vmovdqa %ymm15, %ymm13 + //0x00001e27 LBB0_343 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e27 sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e2b popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e30 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e33 addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e37 addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e3b movq %r13, %r11 + 0x49, 0x83, 0xf9, 0x40, //0x00001e3e cmpq $64, %r9 + 0x0f, 0x8d, 0x7a, 0xfe, 0xff, 0xff, //0x00001e42 jge LBB0_335 + 0xe9, 0x1e, 0xfd, 0xff, 0xff, //0x00001e48 jmp LBB0_344 + //0x00001e4d LBB0_360 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001e4d movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001e52 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001e56 movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001e59 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001e5c addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001e5f xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001e62 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001e65 xorl %r15d, %r15d + 0x31, 0xdb, //0x00001e68 xorl %ebx, %ebx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001e6a jmp LBB0_362 + //0x00001e6f LBB0_361 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e6f sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e73 popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e78 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e7b addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e7f addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e83 movq %r13, %r11 + //0x00001e86 LBB0_362 + 0x49, 0x83, 0xf9, 0x40, //0x00001e86 cmpq $64, %r9 + 0x0f, 0x8c, 0x2d, 0x01, 0x00, 0x00, //0x00001e8a jl LBB0_370 + //0x00001e90 LBB0_363 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001e90 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001e95 vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001e9b vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001e9f vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001ea3 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001ea7 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001eab shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001eaf orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001eb2 movq %rdx, %rcx + 0x4c, 0x09, 0xd1, //0x00001eb5 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001eb8 jne LBB0_365 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001ebe movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001ec5 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001ec8 jmp LBB0_366 + //0x00001ecd LBB0_365 + 0x4c, 0x89, 0xd1, //0x00001ecd movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001ed0 notq %rcx + 0x48, 0x21, 0xd1, //0x00001ed3 andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001ed6 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001eda orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001edd movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001ee0 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001ee3 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001eed andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001ef0 andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001ef3 xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001ef6 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001ef9 setb %r10b + 0x48, 0x01, 0xd2, //0x00001efd addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001f00 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001f0a xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001f0d andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001f10 notq %rdx + //0x00001f13 LBB0_366 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001f13 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f17 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f1b shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001f1f vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f23 vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001f27 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001f2a andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001f2d vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x64, 0xe1, 0xff, 0xff, 0x00, //0x00001f32 vpclmulqdq $0, $-7836(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001f3c vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001f41 xorq %r11, %r13 + 0xc5, 0xa5, 0x74, 0xd1, //0x00001f44 vpcmpeqb %ymm1, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f48 vpmovmskb %ymm2, %esi + 0xc5, 0xa5, 0x74, 0xd0, //0x00001f4c vpcmpeqb %ymm0, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f50 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f54 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001f58 orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001f5b movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001f5e notq %rcx + 0x48, 0x21, 0xce, //0x00001f61 andq %rcx, %rsi + 0xc5, 0x9d, 0x74, 0xc9, //0x00001f64 vpcmpeqb %ymm1, %ymm12, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001f68 vpmovmskb %ymm1, %edi + 0xc5, 0x9d, 0x74, 0xc0, //0x00001f6c vpcmpeqb %ymm0, %ymm12, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001f70 vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001f74 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001f78 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001f7b andq %rcx, %rdi + 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001f7e je LBB0_361 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001f84 movq (%rsp), %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f88 .p2align 4, 0x90 + //0x00001f90 LBB0_368 + 0x48, 0x8d, 0x4f, 0xff, //0x00001f90 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001f94 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001f97 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001f9a popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001f9f addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001fa2 cmpq %rbx, %rdx + 0x0f, 0x86, 0x7a, 0x01, 0x00, 0x00, //0x00001fa5 jbe LBB0_386 + 0x48, 0x83, 0xc3, 0x01, //0x00001fab addq $1, %rbx + 0x48, 0x21, 0xcf, //0x00001faf andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001fb2 jne LBB0_368 + 0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00001fb8 jmp LBB0_361 + //0x00001fbd LBB0_370 + 0x4d, 0x85, 0xc9, //0x00001fbd testq %r9, %r9 + 0x0f, 0x8e, 0xd2, 0x1e, 0x00, 0x00, //0x00001fc0 jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00001fc6 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001fca vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001fce vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001fd3 vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001fd7 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001fdd vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001fe3 movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001fe6 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001fec cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001ff2 jb LBB0_374 + 0x49, 0x83, 0xf9, 0x20, //0x00001ff8 cmpq $32, %r9 + 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001ffc jb LBB0_375 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00002002 vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00002007 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x0000200d addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00002011 leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00002015 leaq $96(%rsp), %rsi + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x0000201a jmp LBB0_376 + //0x0000201f LBB0_374 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000201f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002024 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x6f, 0xe2, 0xff, 0xff, //0x00002029 vmovdqu $-7569(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x87, 0xe1, 0xff, 0xff, //0x00002031 vmovdqu $-7801(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002039 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000203d vmovdqa %ymm2, %ymm12 + 0xe9, 0x4a, 0xfe, 0xff, 0xff, //0x00002041 jmp LBB0_363 + //0x00002046 LBB0_375 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00002046 leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x0000204b movq %r9, %rdi + //0x0000204e LBB0_376 + 0x48, 0x83, 0xff, 0x10, //0x0000204e cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002052 jb LBB0_377 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00002058 vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x0000205d vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00002061 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00002065 addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00002069 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x0000206d cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00002071 jae LBB0_384 + //0x00002077 LBB0_378 + 0x48, 0x83, 0xff, 0x04, //0x00002077 cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x0000207b jl LBB0_379 + //0x00002081 LBB0_385 + 0x41, 0x8b, 0x0e, //0x00002081 movl (%r14), %ecx + 0x89, 0x0e, //0x00002084 movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00002086 addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x0000208a addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x0000208e addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00002092 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002096 jae LBB0_380 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x0000209c jmp LBB0_381 + //0x000020a1 LBB0_377 + 0x48, 0x83, 0xff, 0x08, //0x000020a1 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x000020a5 jb LBB0_378 + //0x000020ab LBB0_384 + 0x49, 0x8b, 0x0e, //0x000020ab movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x000020ae movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x000020b1 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x000020b5 addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x000020b9 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000020bd cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x000020c1 jge LBB0_385 + //0x000020c7 LBB0_379 + 0x48, 0x83, 0xff, 0x02, //0x000020c7 cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x000020cb jb LBB0_381 + //0x000020d1 LBB0_380 + 0x41, 0x0f, 0xb7, 0x0e, //0x000020d1 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x000020d5 movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x000020d8 addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x000020dc addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x000020e0 addq $-2, %rdi + //0x000020e4 LBB0_381 + 0x4c, 0x89, 0xf2, //0x000020e4 movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x000020e7 leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x000020ec testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000020ef vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000020f4 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xe1, 0xff, 0xff, //0x000020f9 vmovdqu $-7777(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xe0, 0xff, 0xff, //0x00002101 vmovdqu $-8009(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002109 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000210d vmovdqa %ymm2, %ymm12 + 0x0f, 0x84, 0x79, 0xfd, 0xff, 0xff, //0x00002111 je LBB0_363 + 0x8a, 0x0a, //0x00002117 movb (%rdx), %cl + 0x88, 0x0e, //0x00002119 movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x0000211b leaq $64(%rsp), %r14 + 0xe9, 0x6b, 0xfd, 0xff, 0xff, //0x00002120 jmp LBB0_363 + //0x00002125 LBB0_386 + 0x48, 0x8b, 0x74, 0x24, 0x20, //0x00002125 movq $32(%rsp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x0000212a movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd7, //0x0000212e bsfq %rdi, %rdx + 0x4c, 0x29, 0xca, //0x00002132 subq %r9, %rdx + 0x48, 0x01, 0xd1, //0x00002135 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00002138 addq $1, %rcx + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000213c movq $8(%rsp), %r15 + 0x49, 0x89, 0x0f, //0x00002141 movq %rcx, (%r15) + 0x48, 0x8b, 0x56, 0x08, //0x00002144 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x00002148 cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000214b cmovaq %rdx, %rcx + 0x49, 0x89, 0x0f, //0x0000214f movq %rcx, (%r15) + 0x0f, 0x86, 0x5d, 0xe9, 0xff, 0xff, //0x00002152 jbe LBB0_387 + 0xe9, 0xb8, 0x1b, 0x00, 0x00, //0x00002158 jmp LBB0_728 + //0x0000215d LBB0_388 + 0x0f, 0xbc, 0xd9, //0x0000215d bsfl %ecx, %ebx + 0x48, 0x89, 0xd9, //0x00002160 movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x00002163 subq %rdi, %rcx + 0x49, 0x89, 0x0f, //0x00002166 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002169 testq %rcx, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000216c movq (%rsp), %r11 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002170 movabsq $4294977024, %rdi + 0x0f, 0x8e, 0x40, 0x00, 0x00, 0x00, //0x0000217a jle LBB0_393 + 0x49, 0x01, 0xd8, //0x00002180 addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002183 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002186 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002189 .p2align 4, 0x90 + //0x00002190 LBB0_390 + 0x0f, 0xb6, 0x0e, //0x00002190 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002193 cmpq $32, %rcx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00002197 ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xcf, //0x0000219d btq %rcx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x000021a1 jae LBB0_393 + 0x49, 0x89, 0x17, //0x000021a7 movq %rdx, (%r15) + 0x49, 0x83, 0xc0, 0xff, //0x000021aa addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x000021ae addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x000021b2 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x000021b6 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000021ba jg LBB0_390 + //0x000021c0 LBB0_393 + 0x48, 0x85, 0xc0, //0x000021c0 testq %rax, %rax + 0x0f, 0x8f, 0xd7, 0xe1, 0xff, 0xff, //0x000021c3 jg LBB0_3 + 0xe9, 0x61, 0x1c, 0x00, 0x00, //0x000021c9 jmp LBB0_394 + //0x000021ce LBB0_395 + 0x49, 0x8d, 0x55, 0xff, //0x000021ce leaq $-1(%r13), %rdx + 0x48, 0x39, 0xd6, //0x000021d2 cmpq %rdx, %rsi + 0x49, 0xf7, 0xd5, //0x000021d5 notq %r13 + 0x4d, 0x0f, 0x45, 0xea, //0x000021d8 cmovneq %r10, %r13 + 0x84, 0xc9, //0x000021dc testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xd5, //0x000021de cmovneq %r13, %r10 + 0xe9, 0x2e, 0xf6, 0xff, 0xff, //0x000021e2 jmp LBB0_293 + //0x000021e7 LBB0_396 + 0x4d, 0x89, 0xc5, //0x000021e7 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x000021ea subq %r9, %r13 + 0x0f, 0x84, 0x8b, 0x1c, 0x00, 0x00, //0x000021ed je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x000021f3 cmpq $64, %r13 + 0x0f, 0x82, 0x13, 0x0c, 0x00, 0x00, //0x000021f7 jb LBB0_543 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000021fd movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00002204 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00002207 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000220a .p2align 4, 0x90 + //0x00002210 LBB0_399 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00002210 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00002216 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000221d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00002221 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00002225 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00002229 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x0000222d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00002231 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00002235 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00002239 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x0000223d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002241 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002246 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x0000224a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x0000224e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00002252 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00002255 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00002259 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x0000225d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002260 jne LBB0_410 + 0x4d, 0x85, 0xdb, //0x00002266 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002269 jne LBB0_412 + 0x45, 0x31, 0xdb, //0x0000226f xorl %r11d, %r11d + //0x00002272 LBB0_402 + 0xc5, 0xbd, 0x64, 0xc8, //0x00002272 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002276 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000227b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x0000227f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00002283 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00002286 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00002289 jne LBB0_413 + 0x48, 0x85, 0xf6, //0x0000228f testq %rsi, %rsi + 0x0f, 0x85, 0x97, 0x1a, 0x00, 0x00, //0x00002292 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00002298 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x0000229c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x000022a0 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000022a4 ja LBB0_399 + 0xe9, 0x93, 0x09, 0x00, 0x00, //0x000022aa jmp LBB0_405 + //0x000022af LBB0_410 + 0x49, 0x83, 0xff, 0xff, //0x000022af cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000022b3 jne LBB0_412 + 0x4c, 0x0f, 0xbc, 0xfa, //0x000022b9 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x000022bd addq %rax, %r15 + //0x000022c0 LBB0_412 + 0x4c, 0x89, 0xd9, //0x000022c0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x000022c3 notq %rcx + 0x48, 0x21, 0xd1, //0x000022c6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x000022c9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x000022cd orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x000022d0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x000022d3 notq %rbx + 0x48, 0x21, 0xd3, //0x000022d6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000022d9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x000022e3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x000022e6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x000022e9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x000022ec setb %r11b + 0x48, 0x01, 0xdb, //0x000022f0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000022f3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000022fd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00002300 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00002303 notq %rbx + 0x48, 0x21, 0xdf, //0x00002306 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00002309 jmp LBB0_402 + //0x0000230e LBB0_413 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000230e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00002312 testq %rsi, %rsi + 0x0f, 0x84, 0xa4, 0x03, 0x00, 0x00, //0x00002315 je LBB0_470 + 0x48, 0x0f, 0xbc, 0xd6, //0x0000231b bsfq %rsi, %rdx + 0xe9, 0xa0, 0x03, 0x00, 0x00, //0x0000231f jmp LBB0_471 + //0x00002324 LBB0_415 + 0x41, 0x8a, 0x4d, 0x01, //0x00002324 movb $1(%r13), %cl + 0x80, 0xc1, 0xd2, //0x00002328 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000232b cmpb $55, %cl + 0x0f, 0x87, 0x84, 0xf2, 0xff, 0xff, //0x0000232e ja LBB0_260 + 0x0f, 0xb6, 0xc9, //0x00002334 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002337 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00002341 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00002345 movq %rax, %rcx + 0x0f, 0x83, 0x00, 0x08, 0x00, 0x00, //0x00002348 jae LBB0_514 + //0x0000234e LBB0_417 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000234e movq $-1, %r15 + 0x49, 0x83, 0xfb, 0x20, //0x00002355 cmpq $32, %r11 + 0x0f, 0x82, 0x5d, 0x0a, 0x00, 0x00, //0x00002359 jb LBB0_540 + 0x45, 0x31, 0xc0, //0x0000235f xorl %r8d, %r8d + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002362 movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002369 movq $-1, %r9 + //0x00002370 .p2align 4, 0x90 + //0x00002370 LBB0_419 + 0xc4, 0x81, 0x7e, 0x6f, 0x44, 0x05, 0x00, //0x00002370 vmovdqu (%r13,%r8), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00002377 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000237c vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002380 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00002384 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd0, 0xde, 0xff, 0xff, //0x00002388 vpcmpeqb $-8496(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x00002390 vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00002394 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe0, 0xde, 0xff, 0xff, //0x00002398 vpcmpeqb $-8480(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x000023a0 vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000023a4 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000023a8 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000023ac vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000023b0 vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000023b4 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000023b8 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000023bc vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000023c0 notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000023c3 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000023c7 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000023ca je LBB0_421 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000023d0 movl $-1, %ebx + 0xd3, 0xe3, //0x000023d5 shll %cl, %ebx + 0xf7, 0xd3, //0x000023d7 notl %ebx + 0x21, 0xdf, //0x000023d9 andl %ebx, %edi + 0x21, 0xde, //0x000023db andl %ebx, %esi + 0x21, 0xd3, //0x000023dd andl %edx, %ebx + 0x89, 0xda, //0x000023df movl %ebx, %edx + //0x000023e1 LBB0_421 + 0x8d, 0x5f, 0xff, //0x000023e1 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000023e4 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd2, 0xdd, 0xff, 0xff, //0x000023e6 vmovdqu $-8750(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x38, 0x07, 0x00, 0x00, //0x000023ee jne LBB0_509 + 0x8d, 0x5e, 0xff, //0x000023f4 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000023f7 andl %esi, %ebx + 0x0f, 0x85, 0x2d, 0x07, 0x00, 0x00, //0x000023f9 jne LBB0_509 + 0x8d, 0x5a, 0xff, //0x000023ff leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00002402 andl %edx, %ebx + 0x0f, 0x85, 0x22, 0x07, 0x00, 0x00, //0x00002404 jne LBB0_509 + 0x85, 0xff, //0x0000240a testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000240c je LBB0_427 + 0x0f, 0xbc, 0xff, //0x00002412 bsfl %edi, %edi + 0x49, 0x83, 0xf9, 0xff, //0x00002415 cmpq $-1, %r9 + 0x0f, 0x85, 0xd6, 0x08, 0x00, 0x00, //0x00002419 jne LBB0_528 + 0x4c, 0x01, 0xc7, //0x0000241f addq %r8, %rdi + 0x49, 0x89, 0xf9, //0x00002422 movq %rdi, %r9 + //0x00002425 LBB0_427 + 0x85, 0xf6, //0x00002425 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002427 je LBB0_430 + 0x0f, 0xbc, 0xf6, //0x0000242d bsfl %esi, %esi + 0x49, 0x83, 0xfa, 0xff, //0x00002430 cmpq $-1, %r10 + 0x0f, 0x85, 0xc6, 0x08, 0x00, 0x00, //0x00002434 jne LBB0_529 + 0x4c, 0x01, 0xc6, //0x0000243a addq %r8, %rsi + 0x49, 0x89, 0xf2, //0x0000243d movq %rsi, %r10 + //0x00002440 LBB0_430 + 0x85, 0xd2, //0x00002440 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002442 je LBB0_433 + 0x0f, 0xbc, 0xd2, //0x00002448 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x0000244b cmpq $-1, %r15 + 0x0f, 0x85, 0xb6, 0x08, 0x00, 0x00, //0x0000244f jne LBB0_530 + 0x4c, 0x01, 0xc2, //0x00002455 addq %r8, %rdx + 0x49, 0x89, 0xd7, //0x00002458 movq %rdx, %r15 + //0x0000245b LBB0_433 + 0x83, 0xf9, 0x20, //0x0000245b cmpl $32, %ecx + 0x0f, 0x85, 0x1c, 0x02, 0x00, 0x00, //0x0000245e jne LBB0_467 + 0x49, 0x83, 0xc3, 0xe0, //0x00002464 addq $-32, %r11 + 0x49, 0x83, 0xc0, 0x20, //0x00002468 addq $32, %r8 + 0x49, 0x83, 0xfb, 0x1f, //0x0000246c cmpq $31, %r11 + 0x0f, 0x87, 0xfa, 0xfe, 0xff, 0xff, //0x00002470 ja LBB0_419 + 0xc5, 0xf8, 0x77, //0x00002476 vzeroupper + 0x4d, 0x01, 0xe8, //0x00002479 addq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x0000247c movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002481 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002485 movq %r13, $48(%rsp) + 0x0f, 0x82, 0x48, 0x01, 0x00, 0x00, //0x0000248a jb LBB0_454 + //0x00002490 LBB0_436 + 0x4d, 0x89, 0xc2, //0x00002490 movq %r8, %r10 + 0x4d, 0x29, 0xea, //0x00002493 subq %r13, %r10 + 0x45, 0x31, 0xed, //0x00002496 xorl %r13d, %r13d + //0x00002499 LBB0_437 + 0x4c, 0x89, 0xce, //0x00002499 movq %r9, %rsi + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x28, //0x0000249c vmovdqu (%r8,%r13), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x96, 0xdb, 0xff, 0xff, //0x000024a2 vpcmpgtb $-9322(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024aa vmovdqu $-9314(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x000024b2 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x000024b6 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024ba vpcmpeqb $-9314(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xa6, 0xdb, 0xff, 0xff, //0x000024c2 vpcmpeqb $-9306(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x000024ca vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x4a, 0xdb, 0xff, 0xff, //0x000024ce vpand $-9398(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa2, 0xdb, 0xff, 0xff, //0x000024d6 vpcmpeqb $-9310(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0xaa, 0xdb, 0xff, 0xff, //0x000024de vpcmpeqb $-9302(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x000024e6 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x000024ea vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x000024ee vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc8, //0x000024f2 vpmovmskb %xmm0, %r9d + 0xc5, 0xf9, 0xd7, 0xfb, //0x000024f6 vpmovmskb %xmm3, %edi + 0xc5, 0xf9, 0xd7, 0xd2, //0x000024fa vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x000024fe vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x00002502 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00002504 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00002507 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000250a je LBB0_439 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x00002510 movl $-1, %ebx + 0xd3, 0xe3, //0x00002515 shll %cl, %ebx + 0xf7, 0xd3, //0x00002517 notl %ebx + 0x41, 0x21, 0xd9, //0x00002519 andl %ebx, %r9d + 0x21, 0xdf, //0x0000251c andl %ebx, %edi + 0x21, 0xd3, //0x0000251e andl %edx, %ebx + 0x89, 0xda, //0x00002520 movl %ebx, %edx + //0x00002522 LBB0_439 + 0x41, 0x8d, 0x59, 0xff, //0x00002522 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00002526 andl %r9d, %ebx + 0x0f, 0x85, 0x5a, 0x07, 0x00, 0x00, //0x00002529 jne LBB0_523 + 0x8d, 0x5f, 0xff, //0x0000252f leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x00002532 andl %edi, %ebx + 0x0f, 0x85, 0x4f, 0x07, 0x00, 0x00, //0x00002534 jne LBB0_523 + 0x8d, 0x5a, 0xff, //0x0000253a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000253d andl %edx, %ebx + 0x0f, 0x85, 0x44, 0x07, 0x00, 0x00, //0x0000253f jne LBB0_523 + 0x45, 0x85, 0xc9, //0x00002545 testl %r9d, %r9d + 0x0f, 0x84, 0x43, 0x00, 0x00, 0x00, //0x00002548 je LBB0_446 + 0x45, 0x0f, 0xbc, 0xc9, //0x0000254e bsfl %r9d, %r9d + 0x48, 0x83, 0xfe, 0xff, //0x00002552 cmpq $-1, %rsi + 0x0f, 0x85, 0xf4, 0x07, 0x00, 0x00, //0x00002556 jne LBB0_533 + 0x4d, 0x01, 0xd1, //0x0000255c addq %r10, %r9 + 0x4d, 0x01, 0xe9, //0x0000255f addq %r13, %r9 + 0x85, 0xff, //0x00002562 testl %edi, %edi + 0x0f, 0x84, 0x32, 0x00, 0x00, 0x00, //0x00002564 je LBB0_445 + //0x0000256a LBB0_447 + 0x0f, 0xbc, 0xff, //0x0000256a bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000256d cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xdf, 0x07, 0x00, 0x00, //0x00002573 jne LBB0_534 + 0x4c, 0x01, 0xd7, //0x00002579 addq %r10, %rdi + 0x4c, 0x01, 0xef, //0x0000257c addq %r13, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x28, //0x0000257f movq %rdi, $40(%rsp) + 0x85, 0xd2, //0x00002584 testl %edx, %edx + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00002586 jne LBB0_449 + 0xe9, 0x29, 0x00, 0x00, 0x00, //0x0000258c jmp LBB0_451 + //0x00002591 LBB0_446 + 0x49, 0x89, 0xf1, //0x00002591 movq %rsi, %r9 + 0x85, 0xff, //0x00002594 testl %edi, %edi + 0x0f, 0x85, 0xce, 0xff, 0xff, 0xff, //0x00002596 jne LBB0_447 + //0x0000259c LBB0_445 + 0x85, 0xd2, //0x0000259c testl %edx, %edx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000259e je LBB0_451 + //0x000025a4 LBB0_449 + 0x0f, 0xbc, 0xd2, //0x000025a4 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x000025a7 cmpq $-1, %r15 + 0x0f, 0x85, 0xae, 0x07, 0x00, 0x00, //0x000025ab jne LBB0_535 + 0x4c, 0x01, 0xd2, //0x000025b1 addq %r10, %rdx + 0x4c, 0x01, 0xea, //0x000025b4 addq %r13, %rdx + 0x49, 0x89, 0xd7, //0x000025b7 movq %rdx, %r15 + //0x000025ba LBB0_451 + 0x83, 0xf9, 0x10, //0x000025ba cmpl $16, %ecx + 0x0f, 0x85, 0xd5, 0x01, 0x00, 0x00, //0x000025bd jne LBB0_483 + 0x49, 0x83, 0xc3, 0xf0, //0x000025c3 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000025c7 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000025cb cmpq $15, %r11 + 0x0f, 0x87, 0xc4, 0xfe, 0xff, 0xff, //0x000025cf ja LBB0_437 + 0x4d, 0x01, 0xe8, //0x000025d5 addq %r13, %r8 + //0x000025d8 LBB0_454 + 0x4d, 0x85, 0xdb, //0x000025d8 testq %r11, %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000025db movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000025e0 movq $40(%rsp), %r10 + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x000025e5 je LBB0_485 + 0x4b, 0x8d, 0x0c, 0x18, //0x000025eb leaq (%r8,%r11), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000025ef movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xc6, //0x000025f4 movq %r8, %rsi + 0x4c, 0x29, 0xee, //0x000025f7 subq %r13, %rsi + 0x31, 0xc9, //0x000025fa xorl %ecx, %ecx + 0xe9, 0x2c, 0x00, 0x00, 0x00, //0x000025fc jmp LBB0_460 + //0x00002601 LBB0_456 + 0x83, 0xff, 0x65, //0x00002601 cmpl $101, %edi + 0x0f, 0x85, 0xb5, 0x01, 0x00, 0x00, //0x00002604 jne LBB0_484 + //0x0000260a LBB0_457 + 0x49, 0x83, 0xfa, 0xff, //0x0000260a cmpq $-1, %r10 + 0x0f, 0x85, 0x8f, 0x06, 0x00, 0x00, //0x0000260e jne LBB0_525 + 0x4c, 0x8d, 0x14, 0x0e, //0x00002614 leaq (%rsi,%rcx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002618 .p2align 4, 0x90 + //0x00002620 LBB0_459 + 0x48, 0x83, 0xc1, 0x01, //0x00002620 addq $1, %rcx + 0x49, 0x39, 0xcb, //0x00002624 cmpq %rcx, %r11 + 0x0f, 0x84, 0xe5, 0x04, 0x00, 0x00, //0x00002627 je LBB0_508 + //0x0000262d LBB0_460 + 0x41, 0x0f, 0xbe, 0x3c, 0x08, //0x0000262d movsbl (%r8,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x00002632 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x00002635 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002638 jb LBB0_459 + 0x8d, 0x5f, 0xd5, //0x0000263e leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x00002641 cmpl $26, %ebx + 0x0f, 0x87, 0xb7, 0xff, 0xff, 0xff, //0x00002644 ja LBB0_456 + 0x48, 0x8d, 0x15, 0x8f, 0x1a, 0x00, 0x00, //0x0000264a leaq $6799(%rip), %rdx /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x00002651 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x00002655 addq %rdx, %rdi + 0xff, 0xe7, //0x00002658 jmpq *%rdi + //0x0000265a LBB0_463 + 0x49, 0x83, 0xff, 0xff, //0x0000265a cmpq $-1, %r15 + 0x0f, 0x85, 0x3f, 0x06, 0x00, 0x00, //0x0000265e jne LBB0_525 + 0x4c, 0x8d, 0x3c, 0x0e, //0x00002664 leaq (%rsi,%rcx), %r15 + 0xe9, 0xb3, 0xff, 0xff, 0xff, //0x00002668 jmp LBB0_459 + //0x0000266d LBB0_465 + 0x49, 0x83, 0xf9, 0xff, //0x0000266d cmpq $-1, %r9 + 0x0f, 0x85, 0x2c, 0x06, 0x00, 0x00, //0x00002671 jne LBB0_525 + 0x4c, 0x8d, 0x0c, 0x0e, //0x00002677 leaq (%rsi,%rcx), %r9 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x0000267b jmp LBB0_459 + //0x00002680 LBB0_467 + 0x4c, 0x01, 0xc1, //0x00002680 addq %r8, %rcx + 0x4c, 0x01, 0xe9, //0x00002683 addq %r13, %rcx + 0xc5, 0xf8, 0x77, //0x00002686 vzeroupper + 0x49, 0x89, 0xc8, //0x00002689 movq %rcx, %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000268c movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002693 testq %r9, %r9 + 0x0f, 0x85, 0x36, 0x01, 0x00, 0x00, //0x00002696 jne LBB0_486 + 0xe9, 0xcd, 0x17, 0x00, 0x00, //0x0000269c jmp LBB0_726 + //0x000026a1 LBB0_468 + 0x4d, 0x29, 0xf4, //0x000026a1 subq %r14, %r12 + 0x49, 0x01, 0xd4, //0x000026a4 addq %rdx, %r12 + 0x49, 0x39, 0xfc, //0x000026a7 cmpq %rdi, %r12 + 0x0f, 0x82, 0x22, 0xdf, 0xff, 0xff, //0x000026aa jb LBB0_35 + 0xe9, 0xe8, 0x15, 0x00, 0x00, //0x000026b0 jmp LBB0_698 + //0x000026b5 LBB0_469 + 0x4c, 0x8b, 0x54, 0x24, 0x38, //0x000026b5 movq $56(%rsp), %r10 + 0xe9, 0x32, 0xf0, 0xff, 0xff, //0x000026ba jmp LBB0_282 + //0x000026bf LBB0_470 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000026bf movl $64, %edx + //0x000026c4 LBB0_471 + 0x4c, 0x8b, 0x1c, 0x24, //0x000026c4 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x000026c8 cmpq %rcx, %rdx + 0x0f, 0x82, 0xb5, 0x17, 0x00, 0x00, //0x000026cb jb LBB0_162 + 0xc5, 0x7d, 0x7f, 0xea, //0x000026d1 vmovdqa %ymm13, %ymm2 + 0x48, 0x01, 0xc8, //0x000026d5 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000026d8 addq $1, %rax + //0x000026dc LBB0_473 + 0x48, 0x85, 0xc0, //0x000026dc testq %rax, %rax + 0x0f, 0x88, 0xdc, 0x15, 0x00, 0x00, //0x000026df js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000026e5 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x000026ea movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x000026ed testq %r9, %r9 + 0xc5, 0x7d, 0x6f, 0xea, //0x000026f0 vmovdqa %ymm2, %ymm13 + 0x0f, 0x8f, 0xa6, 0xdc, 0xff, 0xff, //0x000026f4 jg LBB0_3 + 0xe9, 0xdb, 0x15, 0x00, 0x00, //0x000026fa jmp LBB0_475 + //0x000026ff LBB0_108 + 0x4d, 0x85, 0xff, //0x000026ff testq %r15, %r15 + 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x00002702 jne LBB0_545 + 0x49, 0x01, 0xf1, //0x00002708 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x0000270b subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000270e movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002713 movq (%rsp), %r11 + //0x00002717 LBB0_110 + 0x4d, 0x85, 0xd2, //0x00002717 testq %r10, %r10 + 0x0f, 0x8f, 0x9f, 0x07, 0x00, 0x00, //0x0000271a jg LBB0_549 + 0xe9, 0xf0, 0x15, 0x00, 0x00, //0x00002720 jmp LBB0_728 + //0x00002725 LBB0_476 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002725 vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002729 bsfl %ebx, %ecx + //0x0000272c LBB0_477 + 0x49, 0xf7, 0xd2, //0x0000272c notq %r10 + 0x49, 0x29, 0xca, //0x0000272f subq %rcx, %r10 + 0xe9, 0xde, 0xf0, 0xff, 0xff, //0x00002732 jmp LBB0_293 + //0x00002737 LBB0_478 + 0x66, 0x0f, 0xbc, 0xc3, //0x00002737 bsfw %bx, %ax + 0x0f, 0xb7, 0xf8, //0x0000273b movzwl %ax, %edi + 0x48, 0x89, 0xf8, //0x0000273e movq %rdi, %rax + 0x4c, 0x29, 0xc8, //0x00002741 subq %r9, %rax + 0x49, 0x89, 0x07, //0x00002744 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00002747 testq %rax, %rax + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000274a movabsq $4294977024, %rbx + 0x0f, 0x8e, 0x90, 0xdc, 0xff, 0xff, //0x00002754 jle LBB0_2 + 0x48, 0x01, 0xf9, //0x0000275a addq %rdi, %rcx + 0x48, 0x01, 0xfe, //0x0000275d addq %rdi, %rsi + 0x48, 0x01, 0xfa, //0x00002760 addq %rdi, %rdx + //0x00002763 LBB0_480 + 0x0f, 0xb6, 0x02, //0x00002763 movzbl (%rdx), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00002766 cmpq $32, %rax + 0x0f, 0x87, 0x7a, 0xdc, 0xff, 0xff, //0x0000276a ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc3, //0x00002770 btq %rax, %rbx + 0x0f, 0x83, 0x70, 0xdc, 0xff, 0xff, //0x00002774 jae LBB0_2 + 0x49, 0x89, 0x37, //0x0000277a movq %rsi, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x0000277d addq $-1, %rcx + 0x48, 0x83, 0xc6, 0xff, //0x00002781 addq $-1, %rsi + 0x48, 0x83, 0xc2, 0xff, //0x00002785 addq $-1, %rdx + 0x48, 0x83, 0xf9, 0x01, //0x00002789 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000278d jg LBB0_480 + 0xe9, 0x52, 0xdc, 0xff, 0xff, //0x00002793 jmp LBB0_2 + //0x00002798 LBB0_483 + 0x89, 0xc9, //0x00002798 movl %ecx, %ecx + 0x49, 0x01, 0xc8, //0x0000279a addq %rcx, %r8 + 0x4d, 0x01, 0xe8, //0x0000279d addq %r13, %r8 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000027a0 movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000027a5 movq $40(%rsp), %r10 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027aa movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027b1 testq %r9, %r9 + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x000027b4 jne LBB0_486 + 0xe9, 0xaf, 0x16, 0x00, 0x00, //0x000027ba jmp LBB0_726 + //0x000027bf LBB0_484 + 0x49, 0x01, 0xc8, //0x000027bf addq %rcx, %r8 + //0x000027c2 LBB0_485 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027c2 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027c9 testq %r9, %r9 + 0x0f, 0x84, 0x9c, 0x16, 0x00, 0x00, //0x000027cc je LBB0_726 + //0x000027d2 LBB0_486 + 0x4d, 0x85, 0xff, //0x000027d2 testq %r15, %r15 + 0x0f, 0x84, 0x93, 0x16, 0x00, 0x00, //0x000027d5 je LBB0_726 + 0x4d, 0x85, 0xd2, //0x000027db testq %r10, %r10 + 0x0f, 0x84, 0x8a, 0x16, 0x00, 0x00, //0x000027de je LBB0_726 + 0x4d, 0x29, 0xe8, //0x000027e4 subq %r13, %r8 + 0x49, 0x8d, 0x48, 0xff, //0x000027e7 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xc9, //0x000027eb cmpq %rcx, %r9 + 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x000027ee je LBB0_494 + 0x49, 0x39, 0xcf, //0x000027f4 cmpq %rcx, %r15 + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000027f7 je LBB0_494 + 0x49, 0x39, 0xca, //0x000027fd cmpq %rcx, %r10 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00002800 je LBB0_494 + 0x4d, 0x85, 0xff, //0x00002806 testq %r15, %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0xaf, 0xd8, 0xff, 0xff, //0x00002809 vmovdqu $-10065(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xc7, 0xd8, 0xff, 0xff, //0x00002811 vmovdqu $-10041(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xdf, 0xd8, 0xff, 0xff, //0x00002819 vmovdqu $-10017(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xf7, 0xd8, 0xff, 0xff, //0x00002821 vmovdqu $-9993(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002829 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xca, 0xd9, 0xff, 0xff, //0x0000282e vmovdqu $-9782(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xe2, 0xd9, 0xff, 0xff, //0x00002836 vmovdqu $-9758(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xfa, 0xd9, 0xff, 0xff, //0x0000283e vmovdqu $-9734(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x92, 0xd9, 0xff, 0xff, //0x00002846 vmovdqu $-9838(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x4a, 0xda, 0xff, 0xff, //0x0000284e vmovdqu $-9654(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x62, 0xd9, 0xff, 0xff, //0x00002856 vmovdqu $-9886(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x8e, 0x8f, 0x00, 0x00, 0x00, //0x0000285e jle LBB0_497 + 0x49, 0x8d, 0x4f, 0xff, //0x00002864 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xca, //0x00002868 cmpq %rcx, %r10 + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x0000286b je LBB0_497 + 0x49, 0xf7, 0xd7, //0x00002871 notq %r15 + 0x4d, 0x89, 0xf8, //0x00002874 movq %r15, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002877 movq $8(%rsp), %r15 + 0xe9, 0x5d, 0x00, 0x00, 0x00, //0x0000287c jmp LBB0_496 + //0x00002881 LBB0_494 + 0x49, 0xf7, 0xd8, //0x00002881 negq %r8 + //0x00002884 LBB0_495 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002884 movq $8(%rsp), %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0x2f, 0xd8, 0xff, 0xff, //0x00002889 vmovdqu $-10193(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x47, 0xd8, 0xff, 0xff, //0x00002891 vmovdqu $-10169(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x5f, 0xd8, 0xff, 0xff, //0x00002899 vmovdqu $-10145(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x77, 0xd8, 0xff, 0xff, //0x000028a1 vmovdqu $-10121(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000028a9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x4a, 0xd9, 0xff, 0xff, //0x000028ae vmovdqu $-9910(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x62, 0xd9, 0xff, 0xff, //0x000028b6 vmovdqu $-9886(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x7a, 0xd9, 0xff, 0xff, //0x000028be vmovdqu $-9862(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x12, 0xd9, 0xff, 0xff, //0x000028c6 vmovdqu $-9966(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xca, 0xd9, 0xff, 0xff, //0x000028ce vmovdqu $-9782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe2, 0xd8, 0xff, 0xff, //0x000028d6 vmovdqu $-10014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + //0x000028de LBB0_496 + 0xc5, 0x7e, 0x6f, 0x1d, 0x5a, 0xd8, 0xff, 0xff, //0x000028de vmovdqu $-10150(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x72, 0xd8, 0xff, 0xff, //0x000028e6 vmovdqu $-10126(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xe9, 0x4b, 0x02, 0x00, 0x00, //0x000028ee jmp LBB0_512 + //0x000028f3 LBB0_497 + 0x4c, 0x89, 0xc9, //0x000028f3 movq %r9, %rcx + 0x4c, 0x09, 0xd1, //0x000028f6 orq %r10, %rcx + 0x0f, 0x99, 0xc1, //0x000028f9 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0x3c, 0xd8, 0xff, 0xff, //0x000028fc vmovdqu $-10180(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x54, 0xd8, 0xff, 0xff, //0x00002904 vmovdqu $-10156(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0xd2, 0x00, 0x00, 0x00, //0x0000290c js LBB0_500 + 0x4d, 0x39, 0xd1, //0x00002912 cmpq %r10, %r9 + 0x0f, 0x8c, 0xc9, 0x00, 0x00, 0x00, //0x00002915 jl LBB0_500 + 0x49, 0xf7, 0xd1, //0x0000291b notq %r9 + 0x4d, 0x89, 0xc8, //0x0000291e movq %r9, %r8 + 0xe9, 0x13, 0x02, 0x00, 0x00, //0x00002921 jmp LBB0_511 + //0x00002926 LBB0_140 + 0x4d, 0x85, 0xff, //0x00002926 testq %r15, %r15 + 0x0f, 0x85, 0x6a, 0x07, 0x00, 0x00, //0x00002929 jne LBB0_570 + 0x49, 0x01, 0xf1, //0x0000292f addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00002932 subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002935 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000293a movq (%rsp), %r11 + //0x0000293e LBB0_142 + 0x4d, 0x85, 0xd2, //0x0000293e testq %r10, %r10 + 0x0f, 0x8f, 0xc4, 0x07, 0x00, 0x00, //0x00002941 jg LBB0_574 + 0xe9, 0xc9, 0x13, 0x00, 0x00, //0x00002947 jmp LBB0_728 + //0x0000294c LBB0_54 + 0x4c, 0x01, 0xf0, //0x0000294c addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x0000294f cmpq $32, %r11 + 0x0f, 0x82, 0x45, 0x06, 0x00, 0x00, //0x00002953 jb LBB0_557 + //0x00002959 LBB0_55 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002959 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x0000295d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002961 vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002965 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002969 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x0000296d testl %esi, %esi + 0x0f, 0x85, 0x82, 0x05, 0x00, 0x00, //0x0000296f jne LBB0_552 + 0x4d, 0x85, 0xd2, //0x00002975 testq %r10, %r10 + 0x0f, 0x85, 0xa7, 0x05, 0x00, 0x00, //0x00002978 jne LBB0_554 + 0x45, 0x31, 0xd2, //0x0000297e xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002981 testq %rdx, %rdx + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x00002984 je LBB0_556 + //0x0000298a LBB0_58 + 0x48, 0x0f, 0xbc, 0xca, //0x0000298a bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x0000298e subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002991 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002994 addq $1, %rax + 0xe9, 0x0e, 0xde, 0xff, 0xff, //0x00002998 jmp LBB0_63 + //0x0000299d LBB0_152 + 0x4c, 0x01, 0xf0, //0x0000299d addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x000029a0 cmpq $32, %r13 + 0x0f, 0x82, 0xaa, 0x08, 0x00, 0x00, //0x000029a4 jb LBB0_587 + //0x000029aa LBB0_153 + 0xc5, 0xfe, 0x6f, 0x00, //0x000029aa vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x000029ae vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x000029b2 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x000029b6 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x000029ba vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x000029be testl %edx, %edx + 0x0f, 0x85, 0x9a, 0x07, 0x00, 0x00, //0x000029c0 jne LBB0_577 + 0x4d, 0x85, 0xdb, //0x000029c6 testq %r11, %r11 + 0x0f, 0x85, 0xbf, 0x07, 0x00, 0x00, //0x000029c9 jne LBB0_579 + 0x45, 0x31, 0xdb, //0x000029cf xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x000029d2 testq %r10, %r10 + 0x0f, 0x84, 0x25, 0x08, 0x00, 0x00, //0x000029d5 je LBB0_581 + //0x000029db LBB0_156 + 0x49, 0x0f, 0xbc, 0xd2, //0x000029db bsfq %r10, %rdx + 0xe9, 0x21, 0x08, 0x00, 0x00, //0x000029df jmp LBB0_582 + //0x000029e4 LBB0_500 + 0x49, 0x8d, 0x52, 0xff, //0x000029e4 leaq $-1(%r10), %rdx + 0x49, 0x39, 0xd1, //0x000029e8 cmpq %rdx, %r9 + 0x49, 0xf7, 0xd2, //0x000029eb notq %r10 + 0x4d, 0x0f, 0x45, 0xd0, //0x000029ee cmovneq %r8, %r10 + 0x84, 0xc9, //0x000029f2 testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xc2, //0x000029f4 cmovneq %r10, %r8 + 0xe9, 0x3c, 0x01, 0x00, 0x00, //0x000029f8 jmp LBB0_511 + //0x000029fd LBB0_501 + 0xc5, 0x7d, 0x7f, 0xe8, //0x000029fd vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcf, //0x00002a01 bsfl %edi, %ecx + //0x00002a04 LBB0_502 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a04 movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a09 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a0c subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a0f subq %rcx, %r14 + 0x4d, 0x29, 0xfe, //0x00002a12 subq %r15, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a15 addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a19 movq %r14, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002a1c movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002a21 movq (%rsp), %r11 + 0xe9, 0xf0, 0xed, 0xff, 0xff, //0x00002a25 jmp LBB0_294 + //0x00002a2a LBB0_503 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002a2a vmovdqa %ymm13, %ymm0 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a2e movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a33 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a36 subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a39 subq %rcx, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a3c addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a40 movq %r14, %r10 + 0xe9, 0xd2, 0xed, 0xff, 0xff, //0x00002a43 jmp LBB0_294 + //0x00002a48 LBB0_504 + 0x4d, 0x01, 0xf4, //0x00002a48 addq %r14, %r12 + 0x48, 0x85, 0xf6, //0x00002a4b testq %rsi, %rsi + 0x0f, 0x85, 0x14, 0xdb, 0xff, 0xff, //0x00002a4e jne LBB0_28 + 0xe9, 0x49, 0xdb, 0xff, 0xff, //0x00002a54 jmp LBB0_33 + //0x00002a59 LBB0_89 + 0x4c, 0x01, 0xf0, //0x00002a59 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002a5c cmpq $32, %r11 + 0x0f, 0x82, 0x6b, 0x09, 0x00, 0x00, //0x00002a60 jb LBB0_602 + //0x00002a66 LBB0_90 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002a66 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002a6a vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a6e vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002a72 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002a76 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002a7a testl %esi, %esi + 0x0f, 0x85, 0xa8, 0x08, 0x00, 0x00, //0x00002a7c jne LBB0_597 + 0x4d, 0x85, 0xd2, //0x00002a82 testq %r10, %r10 + 0x0f, 0x85, 0xcd, 0x08, 0x00, 0x00, //0x00002a85 jne LBB0_599 + 0x45, 0x31, 0xd2, //0x00002a8b xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002a8e testq %rdx, %rdx + 0x0f, 0x84, 0x32, 0x09, 0x00, 0x00, //0x00002a91 je LBB0_601 + //0x00002a97 LBB0_93 + 0x48, 0x0f, 0xbc, 0xca, //0x00002a97 bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002a9b subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002a9e addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002aa1 addq $1, %rax + 0xe9, 0x21, 0xdf, 0xff, 0xff, //0x00002aa5 jmp LBB0_98 + //0x00002aaa LBB0_172 + 0x4c, 0x01, 0xf0, //0x00002aaa addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002aad cmpq $32, %r13 + 0x0f, 0x82, 0xe4, 0x02, 0x00, 0x00, //0x00002ab1 jb LBB0_538 + //0x00002ab7 LBB0_173 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002ab7 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002abb vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002abf vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002ac3 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002ac7 vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002acb testl %edx, %edx + 0x0f, 0x85, 0x08, 0x0a, 0x00, 0x00, //0x00002acd jne LBB0_615 + 0x4d, 0x85, 0xdb, //0x00002ad3 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0x0a, 0x00, 0x00, //0x00002ad6 jne LBB0_617 + 0x45, 0x31, 0xdb, //0x00002adc xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002adf testq %r10, %r10 + 0x0f, 0x84, 0x93, 0x0a, 0x00, 0x00, //0x00002ae2 je LBB0_619 + //0x00002ae8 LBB0_176 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002ae8 bsfq %r10, %rdx + 0xe9, 0x8f, 0x0a, 0x00, 0x00, //0x00002aec jmp LBB0_620 + //0x00002af1 LBB0_505 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002af1 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002af5 movl %edi, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002af7 jmp LBB0_477 + //0x00002afc LBB0_506 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002afc vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002b00 movl %esi, %ecx + 0xe9, 0x25, 0xfc, 0xff, 0xff, //0x00002b02 jmp LBB0_477 + //0x00002b07 LBB0_507 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b07 vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002b0b movl %edx, %ecx + 0xe9, 0x1a, 0xfc, 0xff, 0xff, //0x00002b0d jmp LBB0_477 + //0x00002b12 LBB0_508 + 0x4c, 0x8b, 0x44, 0x24, 0x38, //0x00002b12 movq $56(%rsp), %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002b17 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002b1e testq %r9, %r9 + 0x0f, 0x85, 0xab, 0xfc, 0xff, 0xff, //0x00002b21 jne LBB0_486 + 0xe9, 0x42, 0x13, 0x00, 0x00, //0x00002b27 jmp LBB0_726 + //0x00002b2c LBB0_509 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b2c vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002b30 bsfl %ebx, %ecx + //0x00002b33 LBB0_510 + 0x49, 0xf7, 0xd0, //0x00002b33 notq %r8 + 0x49, 0x29, 0xc8, //0x00002b36 subq %rcx, %r8 + //0x00002b39 LBB0_511 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002b39 movq $8(%rsp), %r15 + //0x00002b3e LBB0_512 + 0x4d, 0x85, 0xc0, //0x00002b3e testq %r8, %r8 + 0x0f, 0x88, 0x24, 0x13, 0x00, 0x00, //0x00002b41 js LBB0_725 + 0x49, 0x8b, 0x0f, //0x00002b47 movq (%r15), %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x00002b4a vmovdqa %ymm0, %ymm13 + //0x00002b4e LBB0_514 + 0x4c, 0x01, 0xc1, //0x00002b4e addq %r8, %rcx + 0x49, 0x89, 0x0f, //0x00002b51 movq %rcx, (%r15) + 0x48, 0x85, 0xc0, //0x00002b54 testq %rax, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002b57 movq (%rsp), %r11 + 0x0f, 0x8f, 0x3f, 0xd8, 0xff, 0xff, //0x00002b5b jg LBB0_3 + 0xe9, 0xc9, 0x12, 0x00, 0x00, //0x00002b61 jmp LBB0_394 + //0x00002b66 LBB0_515 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002b66 bsfw %cx, %cx + 0x44, 0x0f, 0xb7, 0xc1, //0x00002b6a movzwl %cx, %r8d + 0x4c, 0x89, 0xc1, //0x00002b6e movq %r8, %rcx + 0x4c, 0x29, 0xc9, //0x00002b71 subq %r9, %rcx + 0x49, 0x89, 0x0f, //0x00002b74 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002b77 testq %rcx, %rcx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b7a movabsq $4294977024, %rsi + 0x0f, 0x8e, 0x36, 0xf6, 0xff, 0xff, //0x00002b84 jle LBB0_393 + 0x4c, 0x01, 0xc7, //0x00002b8a addq %r8, %rdi + 0x4c, 0x01, 0xc2, //0x00002b8d addq %r8, %rdx + 0x4c, 0x01, 0xc3, //0x00002b90 addq %r8, %rbx + //0x00002b93 LBB0_517 + 0x0f, 0xb6, 0x0b, //0x00002b93 movzbl (%rbx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002b96 cmpq $32, %rcx + 0x0f, 0x87, 0x20, 0xf6, 0xff, 0xff, //0x00002b9a ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xce, //0x00002ba0 btq %rcx, %rsi + 0x0f, 0x83, 0x16, 0xf6, 0xff, 0xff, //0x00002ba4 jae LBB0_393 + 0x49, 0x89, 0x17, //0x00002baa movq %rdx, (%r15) + 0x48, 0x83, 0xc7, 0xff, //0x00002bad addq $-1, %rdi + 0x48, 0x83, 0xc2, 0xff, //0x00002bb1 addq $-1, %rdx + 0x48, 0x83, 0xc3, 0xff, //0x00002bb5 addq $-1, %rbx + 0x48, 0x83, 0xff, 0x01, //0x00002bb9 cmpq $1, %rdi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00002bbd jg LBB0_517 + 0xe9, 0xf8, 0xf5, 0xff, 0xff, //0x00002bc3 jmp LBB0_393 + //0x00002bc8 LBB0_520 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bc8 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002bcc movl %edi, %ecx + 0xe9, 0x31, 0xfe, 0xff, 0xff, //0x00002bce jmp LBB0_502 + //0x00002bd3 LBB0_521 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bd3 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002bd7 movl %esi, %ecx + 0xe9, 0x26, 0xfe, 0xff, 0xff, //0x00002bd9 jmp LBB0_502 + //0x00002bde LBB0_522 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bde vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002be2 movl %edx, %ecx + 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00002be4 jmp LBB0_502 + //0x00002be9 LBB0_247 + 0x4c, 0x01, 0xf0, //0x00002be9 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002bec cmpq $32, %r11 + 0x0f, 0x82, 0x08, 0x02, 0x00, 0x00, //0x00002bf0 jb LBB0_542 + //0x00002bf6 LBB0_248 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002bf6 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002bfa vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002bfe vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002c02 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002c06 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002c0a testl %esi, %esi + 0x0f, 0x85, 0xe1, 0x0c, 0x00, 0x00, //0x00002c0c jne LBB0_653 + 0x4d, 0x85, 0xd2, //0x00002c12 testq %r10, %r10 + 0x0f, 0x85, 0x06, 0x0d, 0x00, 0x00, //0x00002c15 jne LBB0_655 + 0x45, 0x31, 0xd2, //0x00002c1b xorl %r10d, %r10d + 0xc5, 0x7d, 0x7f, 0xea, //0x00002c1e vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x00002c22 testq %rdx, %rdx + 0x0f, 0x84, 0x6b, 0x0d, 0x00, 0x00, //0x00002c25 je LBB0_657 + //0x00002c2b LBB0_251 + 0x48, 0x0f, 0xbc, 0xca, //0x00002c2b bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002c2f subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002c32 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c35 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002c39 movq (%rsp), %r11 + 0xe9, 0x9a, 0xfa, 0xff, 0xff, //0x00002c3d jmp LBB0_473 + //0x00002c42 LBB0_405 + 0x4c, 0x01, 0xf0, //0x00002c42 addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002c45 cmpq $32, %r13 + 0x0f, 0x82, 0xd9, 0x01, 0x00, 0x00, //0x00002c49 jb LBB0_544 + //0x00002c4f LBB0_406 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002c4f vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002c53 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002c57 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002c5b vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002c5f vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002c63 testl %edx, %edx + 0x0f, 0x85, 0xfb, 0x0d, 0x00, 0x00, //0x00002c65 jne LBB0_671 + 0x4d, 0x85, 0xdb, //0x00002c6b testq %r11, %r11 + 0x0f, 0x85, 0x20, 0x0e, 0x00, 0x00, //0x00002c6e jne LBB0_673 + 0x45, 0x31, 0xdb, //0x00002c74 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002c77 testq %r10, %r10 + 0x0f, 0x84, 0x86, 0x0e, 0x00, 0x00, //0x00002c7a je LBB0_675 + //0x00002c80 LBB0_409 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002c80 bsfq %r10, %rdx + 0xe9, 0x82, 0x0e, 0x00, 0x00, //0x00002c84 jmp LBB0_676 + //0x00002c89 LBB0_523 + 0x0f, 0xbc, 0xcb, //0x00002c89 bsfl %ebx, %ecx + //0x00002c8c LBB0_524 + 0x49, 0x01, 0xc6, //0x00002c8c addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002c8f subq %r8, %r14 + 0x49, 0x29, 0xce, //0x00002c92 subq %rcx, %r14 + 0x49, 0xf7, 0xd5, //0x00002c95 notq %r13 + 0x4d, 0x01, 0xf5, //0x00002c98 addq %r14, %r13 + 0x4d, 0x89, 0xe8, //0x00002c9b movq %r13, %r8 + 0xe9, 0xe1, 0xfb, 0xff, 0xff, //0x00002c9e jmp LBB0_495 + //0x00002ca3 LBB0_525 + 0x49, 0x01, 0xc6, //0x00002ca3 addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002ca6 subq %r8, %r14 + 0x48, 0xf7, 0xd1, //0x00002ca9 notq %rcx + 0x4c, 0x01, 0xf1, //0x00002cac addq %r14, %rcx + 0x49, 0x89, 0xc8, //0x00002caf movq %rcx, %r8 + 0xe9, 0xcd, 0xfb, 0xff, 0xff, //0x00002cb2 jmp LBB0_495 + //0x00002cb7 LBB0_526 + 0x4f, 0x8d, 0x04, 0x2e, //0x00002cb7 leaq (%r14,%r13), %r8 + 0x48, 0x83, 0xff, 0x10, //0x00002cbb cmpq $16, %rdi + 0x0f, 0x83, 0x8d, 0xde, 0xff, 0xff, //0x00002cbf jae LBB0_116 + 0xe9, 0xf1, 0xde, 0xff, 0xff, //0x00002cc5 jmp LBB0_119 + //0x00002cca LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002cca movq $-1, $40(%rsp) + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00002cd3 movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00002cda movq $-1, $48(%rsp) + 0x4d, 0x89, 0xc2, //0x00002ce3 movq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x00002ce6 cmpq $16, %r9 + 0x0f, 0x83, 0xf2, 0xe4, 0xff, 0xff, //0x00002cea jae LBB0_203 + 0xe9, 0x7c, 0xe6, 0xff, 0xff, //0x00002cf0 jmp LBB0_221 + //0x00002cf5 LBB0_528 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002cf5 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002cf9 movl %edi, %ecx + 0xe9, 0x33, 0xfe, 0xff, 0xff, //0x00002cfb jmp LBB0_510 + //0x00002d00 LBB0_529 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d00 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002d04 movl %esi, %ecx + 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00002d06 jmp LBB0_510 + //0x00002d0b LBB0_530 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d0b vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002d0f movl %edx, %ecx + 0xe9, 0x1d, 0xfe, 0xff, 0xff, //0x00002d11 jmp LBB0_510 + //0x00002d16 LBB0_531 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d16 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d1a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d21 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d24 cmpq $32, %r11 + 0x0f, 0x83, 0x2b, 0xfc, 0xff, 0xff, //0x00002d28 jae LBB0_55 + 0xe9, 0x6b, 0x02, 0x00, 0x00, //0x00002d2e jmp LBB0_557 + //0x00002d33 LBB0_532 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d33 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d37 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d3e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d41 cmpq $32, %r13 + 0x0f, 0x83, 0x5f, 0xfc, 0xff, 0xff, //0x00002d45 jae LBB0_153 + 0xe9, 0x04, 0x05, 0x00, 0x00, //0x00002d4b jmp LBB0_587 + //0x00002d50 LBB0_533 + 0x44, 0x89, 0xc9, //0x00002d50 movl %r9d, %ecx + 0xe9, 0x34, 0xff, 0xff, 0xff, //0x00002d53 jmp LBB0_524 + //0x00002d58 LBB0_534 + 0x89, 0xf9, //0x00002d58 movl %edi, %ecx + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00002d5a jmp LBB0_524 + //0x00002d5f LBB0_535 + 0x89, 0xd1, //0x00002d5f movl %edx, %ecx + 0xe9, 0x26, 0xff, 0xff, 0xff, //0x00002d61 jmp LBB0_524 + //0x00002d66 LBB0_536 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d66 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d6a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d71 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d74 cmpq $32, %r11 + 0x0f, 0x83, 0xe8, 0xfc, 0xff, 0xff, //0x00002d78 jae LBB0_90 + 0xe9, 0x4e, 0x06, 0x00, 0x00, //0x00002d7e jmp LBB0_602 + //0x00002d83 LBB0_537 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d83 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d87 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d8e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d91 cmpq $32, %r13 + 0x0f, 0x83, 0x1c, 0xfd, 0xff, 0xff, //0x00002d95 jae LBB0_173 + //0x00002d9b LBB0_538 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002d9b movq $24(%rsp), %r10 + 0xe9, 0x38, 0x08, 0x00, 0x00, //0x00002da0 jmp LBB0_626 + //0x00002da5 LBB0_539 + 0x4d, 0x8d, 0x04, 0x06, //0x00002da5 leaq (%r14,%rax), %r8 + 0x48, 0x83, 0xfe, 0x10, //0x00002da9 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00002dad movq (%rsp), %r11 + 0x0f, 0x83, 0x8f, 0xec, 0xff, 0xff, //0x00002db1 jae LBB0_322 + 0xe9, 0xf3, 0xec, 0xff, 0xff, //0x00002db7 jmp LBB0_325 + //0x00002dbc LBB0_540 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002dbc movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dc3 movq $-1, %r9 + 0x4d, 0x89, 0xe8, //0x00002dca movq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x00002dcd movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002dd2 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002dd6 movq %r13, $48(%rsp) + 0x0f, 0x83, 0xaf, 0xf6, 0xff, 0xff, //0x00002ddb jae LBB0_436 + 0xe9, 0xf2, 0xf7, 0xff, 0xff, //0x00002de1 jmp LBB0_454 + //0x00002de6 LBB0_541 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002de6 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002df1 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002df4 cmpq $32, %r11 + 0x0f, 0x83, 0xf8, 0xfd, 0xff, 0xff, //0x00002df8 jae LBB0_248 + //0x00002dfe LBB0_542 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002dfe vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e02 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e06 vmovdqa %ymm13, %ymm11 + 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002e0b jmp LBB0_658 + //0x00002e10 LBB0_543 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002e10 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e14 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002e1b xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002e1e cmpq $32, %r13 + 0x0f, 0x83, 0x27, 0xfe, 0xff, 0xff, //0x00002e22 jae LBB0_406 + //0x00002e28 LBB0_544 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e28 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e2c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e30 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002e35 vmovdqa %ymm15, %ymm12 + 0xe9, 0x35, 0x0d, 0x00, 0x00, //0x00002e3a jmp LBB0_681 + //0x00002e3f LBB0_545 + 0x49, 0x39, 0xf2, //0x00002e3f cmpq %rsi, %r10 + 0x0f, 0x84, 0xcd, 0x0e, 0x00, 0x00, //0x00002e42 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e48 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e4c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e50 vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00002e55 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00002e58 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x00002e5c notq %rsi + 0x49, 0x01, 0xf2, //0x00002e5f addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002e62 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002e67 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e6b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x28, 0xd4, 0xff, 0xff, //0x00002e70 vmovdqu $-11224(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x40, 0xd3, 0xff, 0xff, //0x00002e78 vmovdqu $-11456(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e80 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00002e84 testq %r10, %r10 + 0x0f, 0x8f, 0x32, 0x00, 0x00, 0x00, //0x00002e87 jg LBB0_549 + 0xe9, 0x83, 0x0e, 0x00, 0x00, //0x00002e8d jmp LBB0_728 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e92 .p2align 4, 0x90 + //0x00002ea0 LBB0_547 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002ea0 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002ea7 movl $2, %edx + 0x49, 0x01, 0xd1, //0x00002eac addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002eaf movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002eb6 addq %rcx, %r10 + 0x0f, 0x8e, 0x56, 0x0e, 0x00, 0x00, //0x00002eb9 jle LBB0_728 + //0x00002ebf LBB0_549 + 0x41, 0x0f, 0xb6, 0x01, //0x00002ebf movzbl (%r9), %eax + 0x3c, 0x5c, //0x00002ec3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00002ec5 je LBB0_547 + 0x3c, 0x22, //0x00002ecb cmpb $34, %al + 0x0f, 0x84, 0x14, 0x0a, 0x00, 0x00, //0x00002ecd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002ed3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002eda movl $1, %edx + 0x49, 0x01, 0xd1, //0x00002edf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002ee2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002ee9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00002eec jg LBB0_549 + 0xe9, 0x1e, 0x0e, 0x00, 0x00, //0x00002ef2 jmp LBB0_728 + //0x00002ef7 LBB0_552 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ef7 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002efb vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002eff vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f04 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00002f09 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002f0d jne LBB0_555 + 0x48, 0x89, 0xc1, //0x00002f13 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00002f16 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00002f19 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00002f1d addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002f20 jmp LBB0_555 + //0x00002f25 LBB0_554 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002f25 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002f29 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f2d vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f32 vmovdqa %ymm15, %ymm12 + //0x00002f37 LBB0_555 + 0x44, 0x89, 0xd1, //0x00002f37 movl %r10d, %ecx + 0xf7, 0xd1, //0x00002f3a notl %ecx + 0x21, 0xf1, //0x00002f3c andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00002f3e leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00002f41 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00002f45 notl %edi + 0x21, 0xf7, //0x00002f47 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002f49 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00002f4f xorl %r10d, %r10d + 0x01, 0xcf, //0x00002f52 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00002f54 setb %r10b + 0x01, 0xff, //0x00002f58 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002f5a xorl $1431655765, %edi + 0x21, 0xdf, //0x00002f60 andl %ebx, %edi + 0xf7, 0xd7, //0x00002f62 notl %edi + 0x21, 0xfa, //0x00002f64 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002f66 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002f6b vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002f70 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x23, 0xd3, 0xff, 0xff, //0x00002f75 vmovdqu $-11485(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3b, 0xd2, 0xff, 0xff, //0x00002f7d vmovdqu $-11717(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f85 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00002f89 vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x00002f8d testq %rdx, %rdx + 0x0f, 0x85, 0xf4, 0xf9, 0xff, 0xff, //0x00002f90 jne LBB0_58 + //0x00002f96 LBB0_556 + 0x48, 0x83, 0xc0, 0x20, //0x00002f96 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x00002f9a addq $-32, %r11 + //0x00002f9e LBB0_557 + 0x4d, 0x85, 0xd2, //0x00002f9e testq %r10, %r10 + 0x0f, 0x85, 0x08, 0x07, 0x00, 0x00, //0x00002fa1 jne LBB0_637 + 0x4c, 0x89, 0xf1, //0x00002fa7 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00002faa notq %rcx + 0x4c, 0x89, 0xff, //0x00002fad movq %r15, %rdi + 0x4d, 0x85, 0xdb, //0x00002fb0 testq %r11, %r11 + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x00002fb3 je LBB0_569 + //0x00002fb9 LBB0_559 + 0x48, 0x83, 0xc1, 0x01, //0x00002fb9 addq $1, %rcx + //0x00002fbd LBB0_560 + 0x31, 0xf6, //0x00002fbd xorl %esi, %esi + //0x00002fbf LBB0_561 + 0x0f, 0xb6, 0x14, 0x30, //0x00002fbf movzbl (%rax,%rsi), %edx + 0x80, 0xfa, 0x22, //0x00002fc3 cmpb $34, %dl + 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002fc6 je LBB0_568 + 0x80, 0xfa, 0x5c, //0x00002fcc cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002fcf je LBB0_566 + 0x48, 0x83, 0xc6, 0x01, //0x00002fd5 addq $1, %rsi + 0x49, 0x39, 0xf3, //0x00002fd9 cmpq %rsi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002fdc jne LBB0_561 + 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002fe2 jmp LBB0_564 + //0x00002fe7 LBB0_566 + 0x49, 0x8d, 0x53, 0xff, //0x00002fe7 leaq $-1(%r11), %rdx + 0x48, 0x39, 0xf2, //0x00002feb cmpq %rsi, %rdx + 0x0f, 0x84, 0xd7, 0x0c, 0x00, 0x00, //0x00002fee je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ff4 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ff8 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ffc vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x14, 0x01, //0x00003001 leaq (%rcx,%rax), %rdx + 0x48, 0x01, 0xf2, //0x00003005 addq %rsi, %rdx + 0x48, 0x83, 0xff, 0xff, //0x00003008 cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x0000300c cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x00003010 cmoveq %rdx, %rdi + 0x48, 0x01, 0xf0, //0x00003014 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003017 addq $2, %rax + 0x4c, 0x89, 0xda, //0x0000301b movq %r11, %rdx + 0x48, 0x29, 0xf2, //0x0000301e subq %rsi, %rdx + 0x48, 0x83, 0xc2, 0xfe, //0x00003021 addq $-2, %rdx + 0x49, 0x83, 0xc3, 0xfe, //0x00003025 addq $-2, %r11 + 0x49, 0x39, 0xf3, //0x00003029 cmpq %rsi, %r11 + 0x49, 0x89, 0xd3, //0x0000302c movq %rdx, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000302f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x64, 0xd2, 0xff, 0xff, //0x00003034 vmovdqu $-11676(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x7c, 0xd1, 0xff, 0xff, //0x0000303c vmovdqu $-11908(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003044 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003048 jne LBB0_560 + 0xe9, 0x78, 0x0c, 0x00, 0x00, //0x0000304e jmp LBB0_703 + //0x00003053 LBB0_568 + 0x48, 0x01, 0xf0, //0x00003053 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003056 addq $1, %rax + //0x0000305a LBB0_569 + 0x4c, 0x29, 0xf0, //0x0000305a subq %r14, %rax + 0xe9, 0x49, 0xd7, 0xff, 0xff, //0x0000305d jmp LBB0_63 + //0x00003062 LBB0_564 + 0x80, 0xfa, 0x22, //0x00003062 cmpb $34, %dl + 0x0f, 0x85, 0x60, 0x0c, 0x00, 0x00, //0x00003065 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000306b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000306f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003073 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x00003078 addq %r11, %rax + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000307b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x18, 0xd2, 0xff, 0xff, //0x00003080 vmovdqu $-11752(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x30, 0xd1, 0xff, 0xff, //0x00003088 vmovdqu $-11984(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003090 vmovdqa %ymm0, %ymm11 + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003094 jmp LBB0_569 + //0x00003099 LBB0_570 + 0x49, 0x39, 0xf2, //0x00003099 cmpq %rsi, %r10 + 0x0f, 0x84, 0x73, 0x0c, 0x00, 0x00, //0x0000309c je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000030a2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000030a6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030aa vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x000030af addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000030b2 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x000030b6 notq %rsi + 0x49, 0x01, 0xf2, //0x000030b9 addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000030bc movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000030c1 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000030c5 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xce, 0xd1, 0xff, 0xff, //0x000030ca vmovdqu $-11826(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe6, 0xd0, 0xff, 0xff, //0x000030d2 vmovdqu $-12058(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000030da vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x000030de testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000030e1 jg LBB0_574 + 0xe9, 0x29, 0x0c, 0x00, 0x00, //0x000030e7 jmp LBB0_728 + //0x000030ec LBB0_572 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000030ec movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x000030f3 movl $2, %edx + 0x49, 0x01, 0xd1, //0x000030f8 addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030fb movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003102 addq %rcx, %r10 + 0x0f, 0x8e, 0x0a, 0x0c, 0x00, 0x00, //0x00003105 jle LBB0_728 + //0x0000310b LBB0_574 + 0x41, 0x0f, 0xb6, 0x01, //0x0000310b movzbl (%r9), %eax + 0x3c, 0x5c, //0x0000310f cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003111 je LBB0_572 + 0x3c, 0x22, //0x00003117 cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003119 je LBB0_699 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000311f movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00003126 movl $1, %edx + 0x49, 0x01, 0xd1, //0x0000312b addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000312e movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003135 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003138 jg LBB0_574 + 0xe9, 0xd2, 0x0b, 0x00, 0x00, //0x0000313e jmp LBB0_728 + //0x00003143 LBB0_699 + 0x4d, 0x29, 0xf1, //0x00003143 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003146 addq $1, %r9 + 0x4d, 0x89, 0x0f, //0x0000314a movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x0000314d testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003150 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x4d, 0xe7, 0xff, 0xff, //0x00003155 jg LBB0_304 + 0xe9, 0x55, 0x0b, 0x00, 0x00, //0x0000315b jmp LBB0_700 + //0x00003160 LBB0_577 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003160 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003164 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003168 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316d vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003172 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003176 jne LBB0_580 + 0x48, 0x89, 0xc1, //0x0000317c movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x0000317f subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003182 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003186 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003189 jmp LBB0_580 + //0x0000318e LBB0_579 + 0xc5, 0x7d, 0x7f, 0xe2, //0x0000318e vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003192 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003196 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319b vmovdqa %ymm15, %ymm12 + //0x000031a0 LBB0_580 + 0x44, 0x89, 0xd9, //0x000031a0 movl %r11d, %ecx + 0xf7, 0xd1, //0x000031a3 notl %ecx + 0x21, 0xd1, //0x000031a5 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x000031a7 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x000031aa leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x000031ae notl %esi + 0x21, 0xd6, //0x000031b0 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b2 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x000031b8 xorl %r11d, %r11d + 0x01, 0xce, //0x000031bb addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x000031bd setb %r11b + 0x01, 0xf6, //0x000031c1 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x000031c3 xorl $1431655765, %esi + 0x21, 0xfe, //0x000031c9 andl %edi, %esi + 0xf7, 0xd6, //0x000031cb notl %esi + 0x41, 0x21, 0xf2, //0x000031cd andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d5 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031da vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xd0, 0xff, 0xff, //0x000031df vmovdqu $-12103(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcf, 0xff, 0xff, //0x000031e7 vmovdqu $-12335(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x000031ef vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x000031f3 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x000031f7 testq %r10, %r10 + 0x0f, 0x85, 0xdb, 0xf7, 0xff, 0xff, //0x000031fa jne LBB0_156 + //0x00003200 LBB0_581 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003200 movl $64, %edx + //0x00003205 LBB0_582 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003205 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003209 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000320e vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003212 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003216 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003219 testq %r10, %r10 + 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x0000321c je LBB0_585 + 0x85, 0xf6, //0x00003222 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003224 movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003229 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x0000322c cmpq %rdi, %rdx + 0x0f, 0x87, 0x79, 0x0c, 0x00, 0x00, //0x0000322f ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x00003235 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003238 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000323b addq $1, %rax + 0xe9, 0x67, 0xd5, 0xff, 0xff, //0x0000323f jmp LBB0_63 + //0x00003244 LBB0_585 + 0x85, 0xf6, //0x00003244 testl %esi, %esi + 0x0f, 0x85, 0x6f, 0x0c, 0x00, 0x00, //0x00003246 jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x0000324c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003250 addq $-32, %r13 + //0x00003254 LBB0_587 + 0x4d, 0x85, 0xdb, //0x00003254 testq %r11, %r11 + 0x0f, 0x85, 0xb0, 0x04, 0x00, 0x00, //0x00003257 jne LBB0_639 + 0x4c, 0x89, 0xf9, //0x0000325d movq %r15, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x00003260 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x00003264 testq %r13, %r13 + 0x0f, 0x84, 0x5e, 0x0a, 0x00, 0x00, //0x00003267 je LBB0_703 + //0x0000326d LBB0_589 + 0x0f, 0xb6, 0x10, //0x0000326d movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00003270 cmpb $34, %dl + 0x0f, 0x84, 0x9c, 0x00, 0x00, 0x00, //0x00003273 je LBB0_701 + 0x80, 0xfa, 0x5c, //0x00003279 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000327c je LBB0_593 + 0x80, 0xfa, 0x1f, //0x00003282 cmpb $31, %dl + 0x0f, 0x86, 0x3b, 0x0c, 0x00, 0x00, //0x00003285 jbe LBB0_736 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000328b movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00003292 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00003297 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x0000329a addq %rdx, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x0000329d jne LBB0_589 + 0xe9, 0x23, 0x0a, 0x00, 0x00, //0x000032a3 jmp LBB0_703 + //0x000032a8 LBB0_593 + 0x49, 0x83, 0xfd, 0x01, //0x000032a8 cmpq $1, %r13 + 0x0f, 0x84, 0x19, 0x0a, 0x00, 0x00, //0x000032ac je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000032b2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000032b6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032ba vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000032bf movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000032c6 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x000032cb cmpq $-1, %rcx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x000032cf jne LBB0_596 + 0x49, 0x89, 0xc7, //0x000032d5 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x000032d8 subq %r14, %r15 + 0x4c, 0x89, 0xf9, //0x000032db movq %r15, %rcx + //0x000032de LBB0_596 + 0x4c, 0x8b, 0x1c, 0x24, //0x000032de movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032e2 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000032e7 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xac, 0xcf, 0xff, 0xff, //0x000032ec vmovdqu $-12372(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc4, 0xce, 0xff, 0xff, //0x000032f4 vmovdqu $-12604(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000032fc vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003300 vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf0, //0x00003304 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x00003307 addq %rdx, %r13 + 0x0f, 0x85, 0x5d, 0xff, 0xff, 0xff, //0x0000330a jne LBB0_589 + 0xe9, 0xb6, 0x09, 0x00, 0x00, //0x00003310 jmp LBB0_703 + //0x00003315 LBB0_701 + 0x4c, 0x29, 0xf0, //0x00003315 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003318 addq $1, %rax + 0x48, 0x85, 0xc0, //0x0000331c testq %rax, %rax + 0x0f, 0x89, 0x67, 0xd0, 0xff, 0xff, //0x0000331f jns LBB0_237 + 0xe9, 0x97, 0x09, 0x00, 0x00, //0x00003325 jmp LBB0_702 + //0x0000332a LBB0_597 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000332a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000332e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003332 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003337 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x0000333c cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003340 jne LBB0_600 + 0x48, 0x89, 0xc1, //0x00003346 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003349 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x0000334c bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003350 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003353 jmp LBB0_600 + //0x00003358 LBB0_599 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003358 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000335c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003360 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003365 vmovdqa %ymm15, %ymm12 + //0x0000336a LBB0_600 + 0x44, 0x89, 0xd1, //0x0000336a movl %r10d, %ecx + 0xf7, 0xd1, //0x0000336d notl %ecx + 0x21, 0xf1, //0x0000336f andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00003371 leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00003374 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003378 notl %edi + 0x21, 0xf7, //0x0000337a andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000337c andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00003382 xorl %r10d, %r10d + 0x01, 0xcf, //0x00003385 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003387 setb %r10b + 0x01, 0xff, //0x0000338b addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x0000338d xorl $1431655765, %edi + 0x21, 0xdf, //0x00003393 andl %ebx, %edi + 0xf7, 0xd7, //0x00003395 notl %edi + 0x21, 0xfa, //0x00003397 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003399 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000339e vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000033a3 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf0, 0xce, 0xff, 0xff, //0x000033a8 vmovdqu $-12560(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x08, 0xce, 0xff, 0xff, //0x000033b0 vmovdqu $-12792(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000033b8 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000033bc vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x000033c0 testq %rdx, %rdx + 0x0f, 0x85, 0xce, 0xf6, 0xff, 0xff, //0x000033c3 jne LBB0_93 + //0x000033c9 LBB0_601 + 0x48, 0x83, 0xc0, 0x20, //0x000033c9 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000033cd addq $-32, %r11 + //0x000033d1 LBB0_602 + 0x4d, 0x85, 0xd2, //0x000033d1 testq %r10, %r10 + 0x0f, 0x85, 0x97, 0x03, 0x00, 0x00, //0x000033d4 jne LBB0_641 + 0x4c, 0x89, 0xf2, //0x000033da movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000033dd notq %rdx + 0x4c, 0x89, 0xfe, //0x000033e0 movq %r15, %rsi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000033e3 movq $24(%rsp), %r10 + 0x4d, 0x85, 0xdb, //0x000033e8 testq %r11, %r11 + 0x0f, 0x84, 0xa6, 0x00, 0x00, 0x00, //0x000033eb je LBB0_614 + //0x000033f1 LBB0_604 + 0x48, 0x83, 0xc2, 0x01, //0x000033f1 addq $1, %rdx + //0x000033f5 LBB0_605 + 0x31, 0xff, //0x000033f5 xorl %edi, %edi + //0x000033f7 LBB0_606 + 0x0f, 0xb6, 0x1c, 0x38, //0x000033f7 movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000033fb cmpb $34, %bl + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000033fe je LBB0_613 + 0x80, 0xfb, 0x5c, //0x00003404 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003407 je LBB0_611 + 0x48, 0x83, 0xc7, 0x01, //0x0000340d addq $1, %rdi + 0x49, 0x39, 0xfb, //0x00003411 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003414 jne LBB0_606 + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x0000341a jmp LBB0_609 + //0x0000341f LBB0_611 + 0x49, 0x8d, 0x4b, 0xff, //0x0000341f leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x00003423 cmpq %rdi, %rcx + 0x0f, 0x84, 0x9f, 0x08, 0x00, 0x00, //0x00003426 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000342c vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003430 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003434 vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x0c, 0x02, //0x00003439 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x0000343d addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003440 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003444 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003448 cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x0000344c addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000344f addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003453 movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003456 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003459 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x0000345d addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003461 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003464 movq %rcx, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003467 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000346c vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xce, 0xff, 0xff, //0x00003471 vmovdqu $-12761(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xcd, 0xff, 0xff, //0x00003479 vmovdqu $-12993(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003481 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6a, 0xff, 0xff, 0xff, //0x00003485 jne LBB0_605 + 0xe9, 0x3b, 0x08, 0x00, 0x00, //0x0000348b jmp LBB0_703 + //0x00003490 LBB0_613 + 0x48, 0x01, 0xf8, //0x00003490 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003493 addq $1, %rax + //0x00003497 LBB0_614 + 0x4c, 0x29, 0xf0, //0x00003497 subq %r14, %rax + 0xe9, 0x20, 0x01, 0x00, 0x00, //0x0000349a jmp LBB0_623 + //0x0000349f LBB0_609 + 0x80, 0xfb, 0x22, //0x0000349f cmpb $34, %bl + 0x0f, 0x85, 0x23, 0x08, 0x00, 0x00, //0x000034a2 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000034a8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000034ac vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034b0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x000034b5 addq %r11, %rax + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000034b8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000034bd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xd6, 0xcd, 0xff, 0xff, //0x000034c2 vmovdqu $-12842(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xee, 0xcc, 0xff, 0xff, //0x000034ca vmovdqu $-13074(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000034d2 vmovdqa %ymm0, %ymm11 + 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x000034d6 jmp LBB0_614 + //0x000034db LBB0_615 + 0xc5, 0x7d, 0x7f, 0xe2, //0x000034db vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x000034df vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034e3 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000034e8 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x000034ed cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000034f1 jne LBB0_618 + 0x48, 0x89, 0xc1, //0x000034f7 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x000034fa subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x000034fd bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003501 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003504 jmp LBB0_618 + //0x00003509 LBB0_617 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003509 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x0000350d vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003511 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003516 vmovdqa %ymm15, %ymm12 + //0x0000351b LBB0_618 + 0x44, 0x89, 0xd9, //0x0000351b movl %r11d, %ecx + 0xf7, 0xd1, //0x0000351e notl %ecx + 0x21, 0xd1, //0x00003520 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003522 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003525 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003529 notl %esi + 0x21, 0xd6, //0x0000352b andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000352d andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003533 xorl %r11d, %r11d + 0x01, 0xce, //0x00003536 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003538 setb %r11b + 0x01, 0xf6, //0x0000353c addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000353e xorl $1431655765, %esi + 0x21, 0xfe, //0x00003544 andl %edi, %esi + 0xf7, 0xd6, //0x00003546 notl %esi + 0x41, 0x21, 0xf2, //0x00003548 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000354b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003550 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003555 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x3e, 0xcd, 0xff, 0xff, //0x0000355a vmovdqu $-12994(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x56, 0xcc, 0xff, 0xff, //0x00003562 vmovdqu $-13226(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x0000356a vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000356e vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003572 testq %r10, %r10 + 0x0f, 0x85, 0x6d, 0xf5, 0xff, 0xff, //0x00003575 jne LBB0_176 + //0x0000357b LBB0_619 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000357b movl $64, %edx + //0x00003580 LBB0_620 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003580 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003584 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003589 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000358d vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003591 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003594 testq %r10, %r10 + 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00003597 je LBB0_624 + 0x85, 0xf6, //0x0000359d testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x0000359f movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x000035a4 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x000035a7 cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035aa movq $24(%rsp), %r10 + 0x0f, 0x87, 0xf9, 0x08, 0x00, 0x00, //0x000035af ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x000035b5 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x000035b8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035bb addq $1, %rax + //0x000035bf LBB0_623 + 0x4c, 0x8b, 0x1c, 0x24, //0x000035bf movq (%rsp), %r11 + 0xe9, 0xc6, 0xe2, 0xff, 0xff, //0x000035c3 jmp LBB0_302 + //0x000035c8 LBB0_624 + 0x85, 0xf6, //0x000035c8 testl %esi, %esi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035ca movq $24(%rsp), %r10 + 0x0f, 0x85, 0xe6, 0x08, 0x00, 0x00, //0x000035cf jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x000035d5 addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x000035d9 addq $-32, %r13 + //0x000035dd LBB0_626 + 0x4d, 0x85, 0xdb, //0x000035dd testq %r11, %r11 + 0x0f, 0x85, 0xee, 0x01, 0x00, 0x00, //0x000035e0 jne LBB0_643 + 0x4c, 0x89, 0xfa, //0x000035e6 movq %r15, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x000035e9 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x000035ed testq %r13, %r13 + 0x0f, 0x84, 0xd5, 0x06, 0x00, 0x00, //0x000035f0 je LBB0_703 + //0x000035f6 LBB0_628 + 0x0f, 0xb6, 0x18, //0x000035f6 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x000035f9 cmpb $34, %bl + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x000035fc je LBB0_636 + 0x80, 0xfb, 0x5c, //0x00003602 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003605 je LBB0_632 + 0x80, 0xfb, 0x1f, //0x0000360b cmpb $31, %bl + 0x0f, 0x86, 0xb2, 0x08, 0x00, 0x00, //0x0000360e jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003614 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x0000361b movl $1, %edi + 0x48, 0x01, 0xf8, //0x00003620 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003623 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003626 jne LBB0_628 + 0xe9, 0x9a, 0x06, 0x00, 0x00, //0x0000362c jmp LBB0_703 + //0x00003631 LBB0_632 + 0x49, 0x83, 0xfd, 0x01, //0x00003631 cmpq $1, %r13 + 0x0f, 0x84, 0x90, 0x06, 0x00, 0x00, //0x00003635 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000363b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000363f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003643 vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003648 movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x0000364f movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003654 cmpq $-1, %rdx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003658 jne LBB0_635 + 0x49, 0x89, 0xc7, //0x0000365e movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003661 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003664 movq %r15, %rdx + //0x00003667 LBB0_635 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003667 movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000366b movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003670 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003675 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x1e, 0xcc, 0xff, 0xff, //0x0000367a vmovdqu $-13282(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x36, 0xcb, 0xff, 0xff, //0x00003682 vmovdqu $-13514(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000368a vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x0000368e vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf8, //0x00003692 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003695 addq %rsi, %r13 + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003698 jne LBB0_628 + 0xe9, 0x28, 0x06, 0x00, 0x00, //0x0000369e jmp LBB0_703 + //0x000036a3 LBB0_636 + 0x4c, 0x29, 0xf0, //0x000036a3 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000036a6 addq $1, %rax + 0xe9, 0xdf, 0xe1, 0xff, 0xff, //0x000036aa jmp LBB0_302 + //0x000036af LBB0_637 + 0x4d, 0x85, 0xdb, //0x000036af testq %r11, %r11 + 0x0f, 0x84, 0x13, 0x06, 0x00, 0x00, //0x000036b2 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000036b8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000036bc vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000036c0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x000036c5 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x000036c8 notq %rcx + 0x48, 0x8d, 0x14, 0x08, //0x000036cb leaq (%rax,%rcx), %rdx + 0x49, 0x83, 0xff, 0xff, //0x000036cf cmpq $-1, %r15 + 0x4c, 0x89, 0xff, //0x000036d3 movq %r15, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x000036d6 cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x000036da cmoveq %rdx, %rdi + 0x48, 0x83, 0xc0, 0x01, //0x000036de addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000036e2 addq $-1, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000036e6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xad, 0xcb, 0xff, 0xff, //0x000036eb vmovdqu $-13395(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc5, 0xca, 0xff, 0xff, //0x000036f3 vmovdqu $-13627(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000036fb vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000036ff testq %r11, %r11 + 0x0f, 0x85, 0xb1, 0xf8, 0xff, 0xff, //0x00003702 jne LBB0_559 + 0xe9, 0x4d, 0xf9, 0xff, 0xff, //0x00003708 jmp LBB0_569 + //0x0000370d LBB0_639 + 0x4d, 0x85, 0xed, //0x0000370d testq %r13, %r13 + 0x0f, 0x84, 0xb5, 0x05, 0x00, 0x00, //0x00003710 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003716 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000371a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000371e vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x00003723 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00003726 notq %rcx + 0x48, 0x01, 0xc1, //0x00003729 addq %rax, %rcx + 0x49, 0x83, 0xff, 0xff, //0x0000372c cmpq $-1, %r15 + 0x4c, 0x89, 0xfa, //0x00003730 movq %r15, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00003733 cmoveq %rcx, %rdx + 0x49, 0x0f, 0x45, 0xcf, //0x00003737 cmovneq %r15, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x0000373b addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x0000373f addq $-1, %r13 + 0x49, 0x89, 0xd7, //0x00003743 movq %rdx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003746 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000374a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xcb, 0xff, 0xff, //0x0000374f vmovdqu $-13495(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xca, 0xff, 0xff, //0x00003757 vmovdqu $-13727(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000375f vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x00003763 testq %r13, %r13 + 0x0f, 0x85, 0x01, 0xfb, 0xff, 0xff, //0x00003766 jne LBB0_589 + 0xe9, 0x5a, 0x05, 0x00, 0x00, //0x0000376c jmp LBB0_703 + //0x00003771 LBB0_641 + 0x4d, 0x85, 0xdb, //0x00003771 testq %r11, %r11 + 0x0f, 0x84, 0x51, 0x05, 0x00, 0x00, //0x00003774 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000377a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000377e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003782 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x00003787 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x0000378a notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x0000378d leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003791 cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003795 movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003798 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x0000379c cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x000037a0 addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000037a4 addq $-1, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000037a8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ad vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xe6, 0xca, 0xff, 0xff, //0x000037b2 vmovdqu $-13594(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xfe, 0xc9, 0xff, 0xff, //0x000037ba vmovdqu $-13826(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000037c2 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000037c6 testq %r11, %r11 + 0x0f, 0x85, 0x22, 0xfc, 0xff, 0xff, //0x000037c9 jne LBB0_604 + 0xe9, 0xc3, 0xfc, 0xff, 0xff, //0x000037cf jmp LBB0_614 + //0x000037d4 LBB0_643 + 0x4d, 0x85, 0xed, //0x000037d4 testq %r13, %r13 + 0x0f, 0x84, 0xee, 0x04, 0x00, 0x00, //0x000037d7 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000037dd vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e1 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000037e5 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x000037ea movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000037ed notq %rdx + 0x48, 0x01, 0xc2, //0x000037f0 addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x000037f3 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x000037f7 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x000037fa cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x000037fe cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003802 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003806 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x0000380a movq %rcx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000380d movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003811 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003816 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xca, 0xff, 0xff, //0x0000381b vmovdqu $-13699(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xc9, 0xff, 0xff, //0x00003823 vmovdqu $-13931(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000382b vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x0000382f testq %r13, %r13 + 0x0f, 0x85, 0xbe, 0xfd, 0xff, 0xff, //0x00003832 jne LBB0_628 + 0xe9, 0x8e, 0x04, 0x00, 0x00, //0x00003838 jmp LBB0_703 + //0x0000383d LBB0_645 + 0x49, 0x39, 0xf2, //0x0000383d cmpq %rsi, %r10 + 0x0f, 0x84, 0xcf, 0x04, 0x00, 0x00, //0x00003840 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003846 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000384a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000384e vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00003853 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003856 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x0000385a notq %rsi + 0x49, 0x01, 0xf2, //0x0000385d addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003860 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003865 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003869 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x2a, 0xca, 0xff, 0xff, //0x0000386e vmovdqu $-13782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x42, 0xc9, 0xff, 0xff, //0x00003876 vmovdqu $-14014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000387e vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00003882 testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003885 jg LBB0_649 + 0xe9, 0x85, 0x04, 0x00, 0x00, //0x0000388b jmp LBB0_728 + //0x00003890 LBB0_647 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003890 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00003897 movl $2, %edx + 0x49, 0x01, 0xd1, //0x0000389c addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000389f movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038a6 addq %rcx, %r10 + 0x0f, 0x8e, 0x66, 0x04, 0x00, 0x00, //0x000038a9 jle LBB0_728 + //0x000038af LBB0_649 + 0x41, 0x0f, 0xb6, 0x01, //0x000038af movzbl (%r9), %eax + 0x3c, 0x5c, //0x000038b3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000038b5 je LBB0_647 + 0x3c, 0x22, //0x000038bb cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000038bd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000038c3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x000038ca movl $1, %edx + 0x49, 0x01, 0xd1, //0x000038cf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000038d2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038d9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000038dc jg LBB0_649 + 0xe9, 0x2e, 0x04, 0x00, 0x00, //0x000038e2 jmp LBB0_728 + //0x000038e7 LBB0_652 + 0x4d, 0x29, 0xf1, //0x000038e7 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000038ea addq $1, %r9 + 0xe9, 0xbf, 0xd1, 0xff, 0xff, //0x000038ee jmp LBB0_105 + //0x000038f3 LBB0_653 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000038f3 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000038f7 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038fb vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003900 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003905 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003909 jne LBB0_656 + 0x48, 0x89, 0xc1, //0x0000390f movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003912 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003915 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003919 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000391c jmp LBB0_656 + //0x00003921 LBB0_655 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003921 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003925 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003929 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000392e vmovdqa %ymm15, %ymm12 + //0x00003933 LBB0_656 + 0x44, 0x89, 0xd1, //0x00003933 movl %r10d, %ecx + 0xf7, 0xd1, //0x00003936 notl %ecx + 0x21, 0xf1, //0x00003938 andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x0000393a leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x0000393d leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003941 notl %edi + 0x21, 0xf7, //0x00003943 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003945 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x0000394b xorl %r10d, %r10d + 0x01, 0xcf, //0x0000394e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003950 setb %r10b + 0x01, 0xff, //0x00003954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003956 xorl $1431655765, %edi + 0x21, 0xdf, //0x0000395c andl %ebx, %edi + 0xf7, 0xd7, //0x0000395e notl %edi + 0x21, 0xfa, //0x00003960 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003962 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003967 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x0000396c vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xc9, 0xff, 0xff, //0x00003971 vmovdqu $-14041(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xc8, 0xff, 0xff, //0x00003979 vmovdqu $-14273(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003981 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003985 vmovdqa %ymm1, %ymm12 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003989 vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x0000398d testq %rdx, %rdx + 0x0f, 0x85, 0x95, 0xf2, 0xff, 0xff, //0x00003990 jne LBB0_251 + //0x00003996 LBB0_657 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003996 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000399a vmovdqa %ymm11, %ymm0 + 0xc5, 0x7d, 0x6f, 0xda, //0x0000399e vmovdqa %ymm2, %ymm11 + 0x48, 0x83, 0xc0, 0x20, //0x000039a2 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000039a6 addq $-32, %r11 + //0x000039aa LBB0_658 + 0x4d, 0x85, 0xd2, //0x000039aa testq %r10, %r10 + 0x0f, 0x85, 0x75, 0x02, 0x00, 0x00, //0x000039ad jne LBB0_693 + 0x4c, 0x89, 0xf2, //0x000039b3 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000039b6 notq %rdx + 0x4c, 0x89, 0xfe, //0x000039b9 movq %r15, %rsi + 0x4d, 0x85, 0xdb, //0x000039bc testq %r11, %r11 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000039bf je LBB0_670 + //0x000039c5 LBB0_660 + 0x48, 0x83, 0xc2, 0x01, //0x000039c5 addq $1, %rdx + //0x000039c9 LBB0_661 + 0x31, 0xff, //0x000039c9 xorl %edi, %edi + //0x000039cb LBB0_662 + 0x0f, 0xb6, 0x1c, 0x38, //0x000039cb movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000039cf cmpb $34, %bl + 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x000039d2 je LBB0_669 + 0x80, 0xfb, 0x5c, //0x000039d8 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000039db je LBB0_667 + 0x48, 0x83, 0xc7, 0x01, //0x000039e1 addq $1, %rdi + 0x49, 0x39, 0xfb, //0x000039e5 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000039e8 jne LBB0_662 + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x000039ee jmp LBB0_665 + //0x000039f3 LBB0_667 + 0x49, 0x8d, 0x4b, 0xff, //0x000039f3 leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x000039f7 cmpq %rdi, %rcx + 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000039fa je LBB0_703 + 0x48, 0x8d, 0x0c, 0x02, //0x00003a00 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x00003a04 addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003a07 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003a0b cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003a0f cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x00003a13 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003a16 addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003a1a movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003a1d subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a20 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x00003a24 addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003a28 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003a2b movq %rcx, %r11 + 0x0f, 0x85, 0x95, 0xff, 0xff, 0xff, //0x00003a2e jne LBB0_661 + 0xe9, 0x92, 0x02, 0x00, 0x00, //0x00003a34 jmp LBB0_703 + //0x00003a39 LBB0_669 + 0x48, 0x01, 0xf8, //0x00003a39 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003a3c addq $1, %rax + //0x00003a40 LBB0_670 + 0x4c, 0x29, 0xf0, //0x00003a40 subq %r14, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003a43 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a47 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003a4c vmovdqa %ymm11, %ymm2 + 0xe9, 0xb6, 0x01, 0x00, 0x00, //0x00003a50 jmp LBB0_692 + //0x00003a55 LBB0_665 + 0x80, 0xfb, 0x22, //0x00003a55 cmpb $34, %bl + 0x0f, 0x85, 0x6d, 0x02, 0x00, 0x00, //0x00003a58 jne LBB0_703 + 0x4c, 0x01, 0xd8, //0x00003a5e addq %r11, %rax + 0xe9, 0xda, 0xff, 0xff, 0xff, //0x00003a61 jmp LBB0_670 + //0x00003a66 LBB0_671 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a66 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a6a vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a6e vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003a73 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003a78 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003a7c jne LBB0_674 + 0x48, 0x89, 0xc1, //0x00003a82 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003a85 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003a88 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003a8c addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003a8f jmp LBB0_674 + //0x00003a94 LBB0_673 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a94 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a98 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a9c vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003aa1 vmovdqa %ymm15, %ymm12 + //0x00003aa6 LBB0_674 + 0x44, 0x89, 0xd9, //0x00003aa6 movl %r11d, %ecx + 0xf7, 0xd1, //0x00003aa9 notl %ecx + 0x21, 0xd1, //0x00003aab andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003aad leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003ab0 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003ab4 notl %esi + 0x21, 0xd6, //0x00003ab6 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003ab8 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003abe xorl %r11d, %r11d + 0x01, 0xce, //0x00003ac1 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003ac3 setb %r11b + 0x01, 0xf6, //0x00003ac7 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x00003ac9 xorl $1431655765, %esi + 0x21, 0xfe, //0x00003acf andl %edi, %esi + 0xf7, 0xd6, //0x00003ad1 notl %esi + 0x41, 0x21, 0xf2, //0x00003ad3 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003ad6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003adb vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003ae0 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb3, 0xc7, 0xff, 0xff, //0x00003ae5 vmovdqu $-14413(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xcb, 0xc6, 0xff, 0xff, //0x00003aed vmovdqu $-14645(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00003af5 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x00003af9 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003afd testq %r10, %r10 + 0x0f, 0x85, 0x7a, 0xf1, 0xff, 0xff, //0x00003b00 jne LBB0_409 + //0x00003b06 LBB0_675 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003b06 movl $64, %edx + //0x00003b0b LBB0_676 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003b0b vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003b0f vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003b14 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003b18 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003b1c bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003b1f testq %r10, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00003b22 je LBB0_679 + 0x85, 0xf6, //0x00003b28 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003b2a movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003b2f cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x00003b32 cmpq %rdi, %rdx + 0x0f, 0x87, 0x73, 0x03, 0x00, 0x00, //0x00003b35 ja LBB0_734 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003b3b vmovdqa %ymm13, %ymm2 + 0x4c, 0x29, 0xf0, //0x00003b3f subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003b42 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003b45 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003b49 movq (%rsp), %r11 + 0xe9, 0x8a, 0xeb, 0xff, 0xff, //0x00003b4d jmp LBB0_473 + //0x00003b52 LBB0_679 + 0x85, 0xf6, //0x00003b52 testl %esi, %esi + 0x0f, 0x85, 0x61, 0x03, 0x00, 0x00, //0x00003b54 jne LBB0_735 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003b5a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003b5e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003b62 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003b67 vmovdqa %ymm15, %ymm12 + 0x48, 0x83, 0xc0, 0x20, //0x00003b6c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003b70 addq $-32, %r13 + //0x00003b74 LBB0_681 + 0x4d, 0x85, 0xdb, //0x00003b74 testq %r11, %r11 + 0x0f, 0x85, 0xe3, 0x00, 0x00, 0x00, //0x00003b77 jne LBB0_695 + 0x4c, 0x89, 0xfa, //0x00003b7d movq %r15, %rdx + 0x4d, 0x85, 0xed, //0x00003b80 testq %r13, %r13 + 0x0f, 0x84, 0x42, 0x01, 0x00, 0x00, //0x00003b83 je LBB0_703 + //0x00003b89 LBB0_683 + 0x0f, 0xb6, 0x18, //0x00003b89 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x00003b8c cmpb $34, %bl + 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x00003b8f je LBB0_691 + 0x80, 0xfb, 0x5c, //0x00003b95 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003b98 je LBB0_688 + 0x80, 0xfb, 0x1f, //0x00003b9e cmpb $31, %bl + 0x0f, 0x86, 0x1f, 0x03, 0x00, 0x00, //0x00003ba1 jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003ba7 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003bae movl $1, %edi + //0x00003bb3 LBB0_687 + 0x48, 0x01, 0xf8, //0x00003bb3 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003bb6 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003bb9 jne LBB0_683 + 0xe9, 0x07, 0x01, 0x00, 0x00, //0x00003bbf jmp LBB0_703 + //0x00003bc4 LBB0_688 + 0x49, 0x83, 0xfd, 0x01, //0x00003bc4 cmpq $1, %r13 + 0x0f, 0x84, 0xfd, 0x00, 0x00, 0x00, //0x00003bc8 je LBB0_703 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003bce movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003bd5 movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003bda cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003bde jne LBB0_687 + 0x49, 0x89, 0xc7, //0x00003be4 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003be7 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003bea movq %r15, %rdx + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003bed jmp LBB0_687 + //0x00003bf2 LBB0_691 + 0x4c, 0x29, 0xf0, //0x00003bf2 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003bf5 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003bf9 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003bfd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003c02 vmovdqa %ymm11, %ymm2 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003c06 vmovdqa %ymm12, %ymm15 + //0x00003c0b LBB0_692 + 0xc5, 0xfe, 0x6f, 0x25, 0x8d, 0xc6, 0xff, 0xff, //0x00003c0b vmovdqu $-14707(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xa5, 0xc5, 0xff, 0xff, //0x00003c13 vmovdqu $-14939(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003c1b vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003c1f vmovdqa %ymm1, %ymm12 + 0xe9, 0xb4, 0xea, 0xff, 0xff, //0x00003c23 jmp LBB0_473 + //0x00003c28 LBB0_693 + 0x4d, 0x85, 0xdb, //0x00003c28 testq %r11, %r11 + 0x0f, 0x84, 0x9a, 0x00, 0x00, 0x00, //0x00003c2b je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c31 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c34 notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003c37 leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003c3b cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003c3f movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003c42 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003c46 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003c4a addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x00003c4e addq $-1, %r11 + 0x4d, 0x85, 0xdb, //0x00003c52 testq %r11, %r11 + 0x0f, 0x85, 0x6a, 0xfd, 0xff, 0xff, //0x00003c55 jne LBB0_660 + 0xe9, 0xe0, 0xfd, 0xff, 0xff, //0x00003c5b jmp LBB0_670 + //0x00003c60 LBB0_695 + 0x4d, 0x85, 0xed, //0x00003c60 testq %r13, %r13 + 0x0f, 0x84, 0x62, 0x00, 0x00, 0x00, //0x00003c63 je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c69 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c6c notq %rdx + 0x48, 0x01, 0xc2, //0x00003c6f addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x00003c72 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x00003c76 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003c79 cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x00003c7d cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003c81 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003c85 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x00003c89 movq %rcx, %r15 + 0x4d, 0x85, 0xed, //0x00003c8c testq %r13, %r13 + 0x0f, 0x85, 0xf4, 0xfe, 0xff, 0xff, //0x00003c8f jne LBB0_683 + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00003c95 jmp LBB0_703 + //0x00003c9a LBB0_697 + 0x4d, 0x89, 0x27, //0x00003c9a movq %r12, (%r15) + //0x00003c9d LBB0_698 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003c9d movq $-1, %rax + 0xe9, 0x6c, 0x00, 0x00, 0x00, //0x00003ca4 jmp LBB0_728 + //0x00003ca9 LBB0_724 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003ca9 movq $-7, %rax + 0xe9, 0x60, 0x00, 0x00, 0x00, //0x00003cb0 jmp LBB0_728 + //0x00003cb5 LBB0_700 + 0x49, 0x83, 0xc0, 0xff, //0x00003cb5 addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003cb9 movq %r8, %rax + 0xe9, 0x54, 0x00, 0x00, 0x00, //0x00003cbc jmp LBB0_728 + //0x00003cc1 LBB0_702 + 0x48, 0x83, 0xf8, 0xff, //0x00003cc1 cmpq $-1, %rax + 0x0f, 0x85, 0x87, 0x01, 0x00, 0x00, //0x00003cc5 jne LBB0_704 + //0x00003ccb LBB0_703 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003ccb movq $-1, %rax + 0x4d, 0x89, 0xc7, //0x00003cd2 movq %r8, %r15 + 0xe9, 0x78, 0x01, 0x00, 0x00, //0x00003cd5 jmp LBB0_704 + //0x00003cda LBB0_475 + 0x49, 0x83, 0xc1, 0xff, //0x00003cda addq $-1, %r9 + 0x4c, 0x89, 0xc8, //0x00003cde movq %r9, %rax + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00003ce1 jmp LBB0_728 + //0x00003ce6 LBB0_705 + 0x49, 0x83, 0xc5, 0xff, //0x00003ce6 addq $-1, %r13 + 0x4c, 0x89, 0xe8, //0x00003cea movq %r13, %rax + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00003ced jmp LBB0_728 + //0x00003cf2 LBB0_706 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cf2 movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cf9 jmp LBB0_708 //0x00003cfe LBB0_707 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cfe movq $-1, %rcx - 0x4d, 0x89, 0xfb, //0x00003d05 movq %r15, %r11 - 0xe9, 0x49, 0x00, 0x00, 0x00, //0x00003d08 jmp LBB0_716 - //0x00003d0d LBB0_708 - 0x4c, 0x89, 0xc9, //0x00003d0d movq %r9, %rcx - //0x00003d10 LBB0_709 - 0x48, 0xf7, 0xd1, //0x00003d10 notq %rcx - 0x49, 0x01, 0x4d, 0x00, //0x00003d13 addq %rcx, (%r13) - 0xe9, 0x71, 0xfe, 0xff, 0xff, //0x00003d17 jmp LBB0_710 - //0x00003d1c LBB0_717 - 0x4d, 0x89, 0xc8, //0x00003d1c movq %r9, %r8 - 0xe9, 0x2c, 0xfe, 0xff, 0xff, //0x00003d1f jmp LBB0_681 - //0x00003d24 LBB0_712 - 0x49, 0x83, 0xfa, 0xff, //0x00003d24 cmpq $-1, %r10 - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00003d28 je LBB0_714 - 0x4d, 0x89, 0xd3, //0x00003d2e movq %r10, %r11 - 0xe9, 0x19, 0x00, 0x00, 0x00, //0x00003d31 jmp LBB0_715 - //0x00003d36 LBB0_209 - 0x4c, 0x01, 0xd2, //0x00003d36 addq %r10, %rdx - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %r10 - 0x49, 0x89, 0xd7, //0x00003d40 movq %rdx, %r15 - 0xe9, 0x84, 0xfe, 0xff, 0xff, //0x00003d43 jmp LBB0_703 - //0x00003d48 LBB0_714 - 0x4c, 0x0f, 0xbc, 0xde, //0x00003d48 bsfq %rsi, %r11 - 0x49, 0x01, 0xcb, //0x00003d4c addq %rcx, %r11 - //0x00003d4f LBB0_715 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d4f movq $-2, %rcx - //0x00003d56 LBB0_716 - 0x48, 0x89, 0x0c, 0x24, //0x00003d56 movq %rcx, (%rsp) - 0x4d, 0x89, 0x5d, 0x00, //0x00003d5a movq %r11, (%r13) - 0xe9, 0x32, 0xfe, 0xff, 0xff, //0x00003d5e jmp LBB0_711 - //0x00003d63 LBB0_718 - 0x4d, 0x89, 0xcf, //0x00003d63 movq %r9, %r15 - 0xe9, 0x93, 0xff, 0xff, 0xff, //0x00003d66 jmp LBB0_707 - //0x00003d6b LBB0_719 - 0x48, 0x01, 0xca, //0x00003d6b addq %rcx, %rdx - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d6e movq $-2, %rcx - 0x49, 0x89, 0xd3, //0x00003d75 movq %rdx, %r11 - 0xe9, 0xd9, 0xff, 0xff, 0xff, //0x00003d78 jmp LBB0_716 - //0x00003d7d LBB0_720 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00003d7d movq $16(%rsp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00003d82 movq $8(%rax), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003d86 movq %rax, (%r13) - 0xe9, 0x06, 0xfe, 0xff, 0xff, //0x00003d8a jmp LBB0_711 - //0x00003d8f LBB0_721 - 0x89, 0xf8, //0x00003d8f movl %edi, %eax - 0x4d, 0x29, 0xf2, //0x00003d91 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00003d94 addq %rax, %r10 - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003d97 jmp LBB0_724 - //0x00003d9c LBB0_722 - 0x4d, 0x29, 0xf2, //0x00003d9c subq %r14, %r10 - 0x41, 0x89, 0xff, //0x00003d9f movl %edi, %r15d - 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00003da2 jmp LBB0_701 - //0x00003da7 LBB0_723 - 0x4d, 0x29, 0xf2, //0x00003da7 subq %r14, %r10 - //0x00003daa LBB0_724 - 0x4d, 0x89, 0xd7, //0x00003daa movq %r10, %r15 - 0xe9, 0x13, 0xfe, 0xff, 0xff, //0x00003dad jmp LBB0_702 - //0x00003db2 LBB0_725 - 0x89, 0xf8, //0x00003db2 movl %edi, %eax - 0x4c, 0x29, 0xf1, //0x00003db4 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x00003db7 addq %rax, %rcx - 0x49, 0x89, 0xcb, //0x00003dba movq %rcx, %r11 - 0xe9, 0x8d, 0xff, 0xff, 0xff, //0x00003dbd jmp LBB0_715 - //0x00003dc2 LBB0_726 - 0x4c, 0x29, 0xf3, //0x00003dc2 subq %r14, %rbx - 0x41, 0x89, 0xfb, //0x00003dc5 movl %edi, %r11d - 0x49, 0x01, 0xdb, //0x00003dc8 addq %rbx, %r11 - 0xe9, 0x7f, 0xff, 0xff, 0xff, //0x00003dcb jmp LBB0_715 - //0x00003dd0 LBB0_727 - 0x48, 0x89, 0xc8, //0x00003dd0 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00003dd3 subq %r14, %rax - 0x49, 0x89, 0xc3, //0x00003dd6 movq %rax, %r11 - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00003dd9 jmp LBB0_715 - 0x90, 0x90, //0x00003dde .p2align 2, 0x90 + 0x4c, 0x89, 0xd1, //0x00003cfe movq %r10, %rcx + //0x00003d01 LBB0_708 + 0x49, 0x8b, 0x07, //0x00003d01 movq (%r15), %rax + 0x48, 0x29, 0xc8, //0x00003d04 subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00003d07 addq $-2, %rax + 0x49, 0x89, 0x07, //0x00003d0b movq %rax, (%r15) + //0x00003d0e LBB0_727 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d0e movq $-2, %rax + //0x00003d15 LBB0_728 + 0x48, 0x8d, 0x65, 0xd8, //0x00003d15 leaq $-40(%rbp), %rsp + 0x5b, //0x00003d19 popq %rbx + 0x41, 0x5c, //0x00003d1a popq %r12 + 0x41, 0x5d, //0x00003d1c popq %r13 + 0x41, 0x5e, //0x00003d1e popq %r14 + 0x41, 0x5f, //0x00003d20 popq %r15 + 0x5d, //0x00003d22 popq %rbp + 0xc5, 0xf8, 0x77, //0x00003d23 vzeroupper + 0xc3, //0x00003d26 retq + //0x00003d27 LBB0_711 + 0x49, 0x89, 0x17, //0x00003d27 movq %rdx, (%r15) + 0xe9, 0xe6, 0xff, 0xff, 0xff, //0x00003d2a jmp LBB0_728 + //0x00003d2f LBB0_709 + 0x49, 0x83, 0xff, 0xff, //0x00003d2f cmpq $-1, %r15 + 0x0f, 0x84, 0x0b, 0x01, 0x00, 0x00, //0x00003d33 je LBB0_730 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %rax + 0xe9, 0x0d, 0x01, 0x00, 0x00, //0x00003d40 jmp LBB0_704 + //0x00003d45 LBB0_712 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d45 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003d4c cmpb $97, %dl + 0x0f, 0x85, 0xc0, 0xff, 0xff, 0xff, //0x00003d4f jne LBB0_728 + 0x48, 0x8d, 0x51, 0x01, //0x00003d55 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d59 movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003d5c cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0xad, 0xff, 0xff, 0xff, //0x00003d62 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x02, //0x00003d68 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d6c movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003d6f cmpb $115, $2(%r14,%rcx) + 0x0f, 0x85, 0x9a, 0xff, 0xff, 0xff, //0x00003d75 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x03, //0x00003d7b leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d7f movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003d82 cmpb $101, $3(%r14,%rcx) + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00003d88 jne LBB0_728 + 0x48, 0x83, 0xc1, 0x04, //0x00003d8e addq $4, %rcx + 0x49, 0x89, 0x0f, //0x00003d92 movq %rcx, (%r15) + 0xe9, 0x7b, 0xff, 0xff, 0xff, //0x00003d95 jmp LBB0_728 + //0x00003d9a LBB0_270 + 0x49, 0x89, 0x07, //0x00003d9a movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003d9d cmpb $110, (%r14,%rax) + 0x0f, 0x85, 0x66, 0xff, 0xff, 0xff, //0x00003da2 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003da8 movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003dab cmpb $117, (%r14,%rcx) + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003db0 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003db6 leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dba movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003dbd cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0x45, 0xff, 0xff, 0xff, //0x00003dc3 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003dc9 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dcd movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003dd0 cmpb $108, $2(%r14,%rcx) + 0x0f, 0x84, 0x47, 0x00, 0x00, 0x00, //0x00003dd6 je LBB0_721 + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00003ddc jmp LBB0_727 + //0x00003de1 LBB0_717 + 0x49, 0x89, 0x07, //0x00003de1 movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003de4 cmpb $116, (%r14,%rax) + 0x0f, 0x85, 0x1f, 0xff, 0xff, 0xff, //0x00003de9 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003def movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003df2 cmpb $114, (%r14,%rcx) + 0x0f, 0x85, 0x11, 0xff, 0xff, 0xff, //0x00003df7 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003dfd leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e01 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003e04 cmpb $117, $1(%r14,%rcx) + 0x0f, 0x85, 0xfe, 0xfe, 0xff, 0xff, //0x00003e0a jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003e10 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e14 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003e17 cmpb $101, $2(%r14,%rcx) + 0x0f, 0x85, 0xeb, 0xfe, 0xff, 0xff, //0x00003e1d jne LBB0_727 + //0x00003e23 LBB0_721 + 0x48, 0x83, 0xc1, 0x03, //0x00003e23 addq $3, %rcx + 0x49, 0x89, 0x0f, //0x00003e27 movq %rcx, (%r15) + 0xe9, 0xdf, 0xfe, 0xff, 0xff, //0x00003e2a jmp LBB0_727 + //0x00003e2f LBB0_394 + 0x48, 0x83, 0xc0, 0xff, //0x00003e2f addq $-1, %rax + 0xe9, 0xdd, 0xfe, 0xff, 0xff, //0x00003e33 jmp LBB0_728 + //0x00003e38 LBB0_267 + 0x48, 0x83, 0xc1, 0xff, //0x00003e38 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003e3c movq %rcx, %rax + 0xe9, 0xd1, 0xfe, 0xff, 0xff, //0x00003e3f jmp LBB0_728 + //0x00003e44 LBB0_730 + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003e44 bsfq %rsi, %r15 + //0x00003e48 LBB0_731 + 0x49, 0x01, 0xc7, //0x00003e48 addq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e4b movq $-2, %rax + //0x00003e52 LBB0_704 + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00003e52 movq $8(%rsp), %rcx + 0x4c, 0x89, 0x39, //0x00003e57 movq %r15, (%rcx) + 0xe9, 0xb6, 0xfe, 0xff, 0xff, //0x00003e5a jmp LBB0_728 + //0x00003e5f LBB0_723 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003e5f movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003e66 jmp LBB0_726 + //0x00003e6b LBB0_725 + 0x4c, 0x89, 0xc1, //0x00003e6b movq %r8, %rcx + //0x00003e6e LBB0_726 + 0x48, 0xf7, 0xd1, //0x00003e6e notq %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00003e71 movq $8(%rsp), %rax + 0x48, 0x01, 0x08, //0x00003e76 addq %rcx, (%rax) + 0xe9, 0x90, 0xfe, 0xff, 0xff, //0x00003e79 jmp LBB0_727 + //0x00003e7e LBB0_732 + 0x4d, 0x89, 0xc8, //0x00003e7e movq %r9, %r8 + 0xe9, 0x45, 0xfe, 0xff, 0xff, //0x00003e81 jmp LBB0_703 + //0x00003e86 LBB0_162 + 0x48, 0x01, 0xc2, //0x00003e86 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e89 movq $-2, %rax + 0x49, 0x89, 0xd7, //0x00003e90 movq %rdx, %r15 + 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00003e93 jmp LBB0_704 + //0x00003e98 LBB0_733 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00003e98 movq $32(%rsp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003e9d movq $8(%rcx), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x08, //0x00003ea1 movq $8(%rsp), %rdx + 0x48, 0x89, 0x0a, //0x00003ea6 movq %rcx, (%rdx) + 0xe9, 0x67, 0xfe, 0xff, 0xff, //0x00003ea9 jmp LBB0_728 + //0x00003eae LBB0_734 + 0x89, 0xf9, //0x00003eae movl %edi, %ecx + 0x4c, 0x29, 0xf0, //0x00003eb0 subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00003eb3 addq %rcx, %rax + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003eb6 jmp LBB0_737 + //0x00003ebb LBB0_735 + 0x4c, 0x29, 0xf0, //0x00003ebb subq %r14, %rax + 0x41, 0x89, 0xff, //0x00003ebe movl %edi, %r15d + 0xe9, 0x82, 0xff, 0xff, 0xff, //0x00003ec1 jmp LBB0_731 + //0x00003ec6 LBB0_736 + 0x4c, 0x29, 0xf0, //0x00003ec6 subq %r14, %rax + //0x00003ec9 LBB0_737 + 0x49, 0x89, 0xc7, //0x00003ec9 movq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ecc movq $-2, %rax + 0xe9, 0x7a, 0xff, 0xff, 0xff, //0x00003ed3 jmp LBB0_704 + //0x00003ed8 .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_44, LBB0_44-LJTI0_0 - // // .set L0_0_set_63, LBB0_63-LJTI0_0 - // // .set L0_0_set_65, LBB0_65-LJTI0_0 - // // .set L0_0_set_68, LBB0_68-LJTI0_0 - //0x00003de0 LJTI0_0 - 0xf7, 0xc7, 0xff, 0xff, //0x00003de0 .long L0_0_set_38 - 0x27, 0xc8, 0xff, 0xff, //0x00003de4 .long L0_0_set_42 - 0x52, 0xc8, 0xff, 0xff, //0x00003de8 .long L0_0_set_44 - 0x9b, 0xc9, 0xff, 0xff, //0x00003dec .long L0_0_set_63 - 0xb0, 0xc9, 0xff, 0xff, //0x00003df0 .long L0_0_set_65 - 0x1a, 0xce, 0xff, 0xff, //0x00003df4 .long L0_0_set_68 - // // .set L0_1_set_711, LBB0_711-LJTI0_1 - // // .set L0_1_set_710, LBB0_710-LJTI0_1 - // // .set L0_1_set_234, LBB0_234-LJTI0_1 - // // .set L0_1_set_253, LBB0_253-LJTI0_1 - // // .set L0_1_set_70, LBB0_70-LJTI0_1 - // // .set L0_1_set_258, LBB0_258-LJTI0_1 + // // .set L0_0_set_64, LBB0_64-LJTI0_0 + // // .set L0_0_set_66, LBB0_66-LJTI0_0 + // // .set L0_0_set_69, LBB0_69-LJTI0_0 + //0x00003ed8 LJTI0_0 + 0x45, 0xc7, 0xff, 0xff, //0x00003ed8 .long L0_0_set_38 + 0x6d, 0xc7, 0xff, 0xff, //0x00003edc .long L0_0_set_42 + 0x98, 0xc7, 0xff, 0xff, //0x00003ee0 .long L0_0_set_44 + 0xe5, 0xc8, 0xff, 0xff, //0x00003ee4 .long L0_0_set_64 + 0xfc, 0xc8, 0xff, 0xff, //0x00003ee8 .long L0_0_set_66 + 0x76, 0xc9, 0xff, 0xff, //0x00003eec .long L0_0_set_69 + // // .set L0_1_set_728, LBB0_728-LJTI0_1 + // // .set L0_1_set_727, LBB0_727-LJTI0_1 + // // .set L0_1_set_238, LBB0_238-LJTI0_1 + // // .set L0_1_set_256, LBB0_256-LJTI0_1 + // // .set L0_1_set_71, LBB0_71-LJTI0_1 // // .set L0_1_set_261, LBB0_261-LJTI0_1 - // // .set L0_1_set_265, LBB0_265-LJTI0_1 - // // .set L0_1_set_271, LBB0_271-LJTI0_1 + // // .set L0_1_set_264, LBB0_264-LJTI0_1 + // // .set L0_1_set_268, LBB0_268-LJTI0_1 // // .set L0_1_set_274, LBB0_274-LJTI0_1 - //0x00003df8 LJTI0_1 - 0x9d, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_711 - 0x95, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_710 - 0x52, 0xd5, 0xff, 0xff, //0x00003e80 .long L0_1_set_234 - 0x95, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_710 - 0x97, 0xd6, 0xff, 0xff, //0x00003eac .long L0_1_set_253 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_710 - 0xcb, 0xc9, 0xff, 0xff, //0x00003eb8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ebc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ecc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003edc .long L0_1_set_70 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003efc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f60 .long L0_1_set_710 - 0xe1, 0xd6, 0xff, 0xff, //0x00003f64 .long L0_1_set_258 - 0x95, 0xfd, 0xff, 0xff, //0x00003f68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f7c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f80 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f8c .long L0_1_set_710 - 0x10, 0xd7, 0xff, 0xff, //0x00003f90 .long L0_1_set_261 - 0x95, 0xfd, 0xff, 0xff, //0x00003f94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fac .long L0_1_set_710 - 0x4b, 0xd7, 0xff, 0xff, //0x00003fb0 .long L0_1_set_265 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fbc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc4 .long L0_1_set_710 - 0x78, 0xd7, 0xff, 0xff, //0x00003fc8 .long L0_1_set_271 - 0x95, 0xfd, 0xff, 0xff, //0x00003fcc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fdc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fe0 .long L0_1_set_710 - 0xba, 0xd7, 0xff, 0xff, //0x00003fe4 .long L0_1_set_274 - // // .set L0_2_set_445, LBB0_445-LJTI0_2 - // // .set L0_2_set_467, LBB0_467-LJTI0_2 - // // .set L0_2_set_451, LBB0_451-LJTI0_2 - // // .set L0_2_set_454, LBB0_454-LJTI0_2 - //0x00003fe8 LJTI0_2 - 0x2a, 0xe4, 0xff, 0xff, //0x00003fe8 .long L0_2_set_445 - 0x9f, 0xe5, 0xff, 0xff, //0x00003fec .long L0_2_set_467 - 0x2a, 0xe4, 0xff, 0xff, //0x00003ff0 .long L0_2_set_445 - 0x72, 0xe4, 0xff, 0xff, //0x00003ff4 .long L0_2_set_451 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ff8 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ffc .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004000 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004004 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004008 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000400c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004010 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004014 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004018 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000401c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004020 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004024 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004028 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000402c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004030 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004034 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004038 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000403c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004040 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004044 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004048 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000404c .long L0_2_set_467 - 0x95, 0xe4, 0xff, 0xff, //0x00004050 .long L0_2_set_454 - // // .set L0_3_set_121, LBB0_121-LJTI0_3 - // // .set L0_3_set_278, LBB0_278-LJTI0_3 - // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_124, LBB0_124-LJTI0_3 - //0x00004054 LJTI0_3 - 0x77, 0xcb, 0xff, 0xff, //0x00004054 .long L0_3_set_121 - 0xa4, 0xd5, 0xff, 0xff, //0x00004058 .long L0_3_set_278 - 0x77, 0xcb, 0xff, 0xff, //0x0000405c .long L0_3_set_121 - 0x21, 0xcb, 0xff, 0xff, //0x00004060 .long L0_3_set_115 - 0xa4, 0xd5, 0xff, 0xff, //0x00004064 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004068 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000406c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004070 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004074 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004078 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000407c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004080 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004084 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004088 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000408c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004090 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004094 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004098 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000409c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a8 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040ac .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b8 .long L0_3_set_278 - 0x93, 0xcb, 0xff, 0xff, //0x000040bc .long L0_3_set_124 - //0x000040c0 .p2align 2, 0x00 - //0x000040c0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x000040c0 .long 2 + // // .set L0_1_set_277, LBB0_277-LJTI0_1 + //0x00003ef0 LJTI0_1 + 0x25, 0xfe, 0xff, 0xff, //0x00003ef0 .long L0_1_set_728 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003efc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f00 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f04 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f08 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f0c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f10 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f14 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f18 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f1c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f20 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f24 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f28 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f2c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f30 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f34 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f38 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f3c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f40 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f44 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f48 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f4c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f50 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f54 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f58 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f5c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f60 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f64 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f68 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f6c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f70 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f74 .long L0_1_set_727 + 0x4f, 0xd5, 0xff, 0xff, //0x00003f78 .long L0_1_set_238 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f7c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f80 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f84 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f88 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f8c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f90 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f94 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f98 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f9c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa0 .long L0_1_set_727 + 0x88, 0xd6, 0xff, 0xff, //0x00003fa4 .long L0_1_set_256 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fac .long L0_1_set_727 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fbc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fcc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd4 .long L0_1_set_71 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fd8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fdc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fec .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ffc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004000 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004004 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004008 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000400c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004010 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004014 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004018 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000401c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004020 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004024 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004028 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000402c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004030 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004034 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004038 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000403c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004040 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004044 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004048 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000404c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004050 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004054 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004058 .long L0_1_set_727 + 0xd0, 0xd6, 0xff, 0xff, //0x0000405c .long L0_1_set_261 + 0x1e, 0xfe, 0xff, 0xff, //0x00004060 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004064 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004068 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000406c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004070 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004074 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004078 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000407c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004080 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004084 .long L0_1_set_727 + 0x04, 0xd7, 0xff, 0xff, //0x00004088 .long L0_1_set_264 + 0x1e, 0xfe, 0xff, 0xff, //0x0000408c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004090 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004094 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004098 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000409c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a4 .long L0_1_set_727 + 0x42, 0xd7, 0xff, 0xff, //0x000040a8 .long L0_1_set_268 + 0x1e, 0xfe, 0xff, 0xff, //0x000040ac .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040bc .long L0_1_set_727 + 0x73, 0xd7, 0xff, 0xff, //0x000040c0 .long L0_1_set_274 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040cc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d8 .long L0_1_set_727 + 0xb4, 0xd7, 0xff, 0xff, //0x000040dc .long L0_1_set_277 + // // .set L0_2_set_463, LBB0_463-LJTI0_2 + // // .set L0_2_set_484, LBB0_484-LJTI0_2 + // // .set L0_2_set_465, LBB0_465-LJTI0_2 + // // .set L0_2_set_457, LBB0_457-LJTI0_2 + //0x000040e0 LJTI0_2 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e0 .long L0_2_set_463 + 0xdf, 0xe6, 0xff, 0xff, //0x000040e4 .long L0_2_set_484 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e8 .long L0_2_set_463 + 0x8d, 0xe5, 0xff, 0xff, //0x000040ec .long L0_2_set_465 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f0 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f4 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f8 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040fc .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004100 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004104 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004108 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000410c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004110 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004114 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004118 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000411c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004120 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004124 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004128 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000412c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004130 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004134 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004138 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000413c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004140 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004144 .long L0_2_set_484 + 0x2a, 0xe5, 0xff, 0xff, //0x00004148 .long L0_2_set_457 + // // .set L0_3_set_230, LBB0_230-LJTI0_3 + // // .set L0_3_set_281, LBB0_281-LJTI0_3 + // // .set L0_3_set_232, LBB0_232-LJTI0_3 + // // .set L0_3_set_224, LBB0_224-LJTI0_3 + //0x0000414c LJTI0_3 + 0xae, 0xd2, 0xff, 0xff, //0x0000414c .long L0_3_set_230 + 0xa2, 0xd5, 0xff, 0xff, //0x00004150 .long L0_3_set_281 + 0xae, 0xd2, 0xff, 0xff, //0x00004154 .long L0_3_set_230 + 0xc8, 0xd2, 0xff, 0xff, //0x00004158 .long L0_3_set_232 + 0xa2, 0xd5, 0xff, 0xff, //0x0000415c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004160 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004164 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004168 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000416c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004170 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004174 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004178 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000417c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004180 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004184 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004188 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000418c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004190 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004194 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004198 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000419c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a0 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a4 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a8 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041ac .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041b0 .long L0_3_set_281 + 0x66, 0xd2, 0xff, 0xff, //0x000041b4 .long L0_3_set_224 + //0x000041b8 .p2align 2, 0x00 + //0x000041b8 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x000041b8 .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_subr.go index 388203da8..b8a16c1e4 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_object = 15136 + _size__skip_object = 15384 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x38dd, 208}, - {0x38de, 48}, - {0x38e0, 40}, - {0x38e2, 32}, - {0x38e4, 24}, - {0x38e6, 16}, - {0x38e7, 8}, - {0x38eb, 0}, - {0x3b20, 208}, + {0x3a59, 208}, + {0x3a5a, 48}, + {0x3a5c, 40}, + {0x3a5e, 32}, + {0x3a60, 24}, + {0x3a62, 16}, + {0x3a63, 8}, + {0x3a67, 0}, + {0x3c18, 208}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_text_amd64.go index 4346e8f9b..37a983ccd 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_object_text_amd64.go @@ -118,4081 +118,4142 @@ var _text_skip_object = []byte{ 0x53, //0x000002cc pushq %rbx 0x48, 0x81, 0xec, 0xa0, 0x00, 0x00, 0x00, //0x000002cd subq $160, %rsp 0x49, 0x89, 0xcb, //0x000002d4 movq %rcx, %r11 - 0x49, 0x89, 0xd7, //0x000002d7 movq %rdx, %r15 - 0x49, 0x89, 0xf5, //0x000002da movq %rsi, %r13 - 0xc5, 0xfa, 0x6f, 0x05, 0x1b, 0xfd, 0xff, 0xff, //0x000002dd vmovdqu $-741(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfa, 0x7f, 0x02, //0x000002e5 vmovdqu %xmm0, (%rdx) - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002e9 movq $-1, %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0xc8, 0xfd, 0xff, 0xff, //0x000002f0 vmovdqu $-568(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xe0, 0xfd, 0xff, 0xff, //0x000002f8 vmovdqu $-544(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xf8, 0xfd, 0xff, 0xff, //0x00000300 vmovdqu $-520(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x10, 0xfe, 0xff, 0xff, //0x00000308 vmovdqu $-496(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000310 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xe3, 0xfe, 0xff, 0xff, //0x00000315 vmovdqu $-285(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xfb, 0xfe, 0xff, 0xff, //0x0000031d vmovdqu $-261(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x13, 0xff, 0xff, 0xff, //0x00000325 vmovdqu $-237(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xab, 0xfe, 0xff, 0xff, //0x0000032d vmovdqu $-341(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x63, 0xff, 0xff, 0xff, //0x00000335 vmovdqu $-157(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x7b, 0xfe, 0xff, 0xff, //0x0000033d vmovdqu $-389(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xf3, 0xfd, 0xff, 0xff, //0x00000345 vmovdqu $-525(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x0b, 0xfe, 0xff, 0xff, //0x0000034d vmovdqu $-501(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x48, 0x89, 0x4c, 0x24, 0x18, //0x00000355 movq %rcx, $24(%rsp) - 0x48, 0x89, 0x7c, 0x24, 0x10, //0x0000035a movq %rdi, $16(%rsp) - 0x48, 0x89, 0x54, 0x24, 0x08, //0x0000035f movq %rdx, $8(%rsp) - 0xe9, 0x77, 0x00, 0x00, 0x00, //0x00000364 jmp LBB0_5 - //0x00000369 LBB0_153 - 0x41, 0x0f, 0xbc, 0xc3, //0x00000369 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000036d addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x00000370 leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00000374 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000378 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000037d movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000382 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00000387 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x0000038b testq %r8, %r8 - 0x0f, 0x8e, 0x98, 0x37, 0x00, 0x00, //0x0000038e jle LBB0_679 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000394 .p2align 4, 0x90 + 0x49, 0x89, 0xf7, //0x000002d7 movq %rsi, %r15 + 0x48, 0x89, 0x7c, 0x24, 0x20, //0x000002da movq %rdi, $32(%rsp) + 0xc5, 0xfa, 0x6f, 0x05, 0x19, 0xfd, 0xff, 0xff, //0x000002df vmovdqu $-743(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0x48, 0x89, 0x54, 0x24, 0x18, //0x000002e7 movq %rdx, $24(%rsp) + 0xc5, 0xfa, 0x7f, 0x02, //0x000002ec vmovdqu %xmm0, (%rdx) + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002f0 movq $-1, %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0xc1, 0xfd, 0xff, 0xff, //0x000002f7 vmovdqu $-575(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xd9, 0xfd, 0xff, 0xff, //0x000002ff vmovdqu $-551(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xf1, 0xfd, 0xff, 0xff, //0x00000307 vmovdqu $-527(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x09, 0xfe, 0xff, 0xff, //0x0000030f vmovdqu $-503(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000317 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xdc, 0xfe, 0xff, 0xff, //0x0000031c vmovdqu $-292(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xf4, 0xfe, 0xff, 0xff, //0x00000324 vmovdqu $-268(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x0c, 0xff, 0xff, 0xff, //0x0000032c vmovdqu $-244(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xa4, 0xfe, 0xff, 0xff, //0x00000334 vmovdqu $-348(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x5c, 0xff, 0xff, 0xff, //0x0000033c vmovdqu $-164(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x74, 0xfe, 0xff, 0xff, //0x00000344 vmovdqu $-396(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xec, 0xfd, 0xff, 0xff, //0x0000034c vmovdqu $-532(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x04, 0xfe, 0xff, 0xff, //0x00000354 vmovdqu $-508(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x48, 0x89, 0x74, 0x24, 0x08, //0x0000035c movq %rsi, $8(%rsp) + 0x48, 0x89, 0x0c, 0x24, //0x00000361 movq %rcx, (%rsp) + 0xe9, 0x96, 0x00, 0x00, 0x00, //0x00000365 jmp LBB0_5 + //0x0000036a LBB0_235 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000036a movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000036f movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000373 cmpq %rcx, %rdx + 0x0f, 0x82, 0x0a, 0x3b, 0x00, 0x00, //0x00000376 jb LBB0_162 + //0x0000037c LBB0_236 + 0x48, 0x01, 0xc8, //0x0000037c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000037f addq $1, %rax + 0x48, 0x85, 0xc0, //0x00000383 testq %rax, %rax + 0x0f, 0x88, 0x35, 0x39, 0x00, 0x00, //0x00000386 js LBB0_702 + //0x0000038c LBB0_237 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000038c movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x00000391 movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x00000394 testq %r9, %r9 + 0x0f, 0x8e, 0x3d, 0x39, 0x00, 0x00, //0x00000397 jle LBB0_475 + 0x90, 0x90, 0x90, //0x0000039d .p2align 4, 0x90 //0x000003a0 LBB0_3 - 0x4d, 0x8b, 0x07, //0x000003a0 movq (%r15), %r8 - 0x4c, 0x89, 0x24, 0x24, //0x000003a3 movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x000003a7 testq %r8, %r8 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000003aa jne LBB0_5 - 0xe9, 0xe0, 0x37, 0x00, 0x00, //0x000003b0 jmp LBB0_711 - //0x000003b5 LBB0_1 - 0x48, 0x89, 0xd1, //0x000003b5 movq %rdx, %rcx - //0x000003b8 LBB0_2 - 0x4c, 0x01, 0xe9, //0x000003b8 addq %r13, %rcx - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000003bb movq $48(%rsp), %r13 - 0x49, 0x89, 0x4d, 0x00, //0x000003c0 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x000003c4 testq %rbx, %rbx - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000003c7 jg LBB0_3 - 0xe9, 0xc3, 0x37, 0x00, 0x00, //0x000003cd jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003d2 .p2align 4, 0x90 - //0x000003e0 LBB0_5 - 0x4d, 0x89, 0xe1, //0x000003e0 movq %r12, %r9 - 0x4c, 0x8b, 0x37, //0x000003e3 movq (%rdi), %r14 - 0x48, 0x8b, 0x5f, 0x08, //0x000003e6 movq $8(%rdi), %rbx - 0x49, 0x8b, 0x75, 0x00, //0x000003ea movq (%r13), %rsi - 0x48, 0x39, 0xde, //0x000003ee cmpq %rbx, %rsi - 0x0f, 0x83, 0x29, 0x00, 0x00, 0x00, //0x000003f1 jae LBB0_10 - 0x41, 0x8a, 0x04, 0x36, //0x000003f7 movb (%r14,%rsi), %al - 0x3c, 0x0d, //0x000003fb cmpb $13, %al - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000003fd je LBB0_10 - 0x3c, 0x20, //0x00000403 cmpb $32, %al - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000405 je LBB0_10 - 0x04, 0xf7, //0x0000040b addb $-9, %al - 0x3c, 0x01, //0x0000040d cmpb $1, %al - 0x0f, 0x86, 0x0b, 0x00, 0x00, 0x00, //0x0000040f jbe LBB0_10 - 0x49, 0x89, 0xf4, //0x00000415 movq %rsi, %r12 - 0xe9, 0x75, 0x01, 0x00, 0x00, //0x00000418 jmp LBB0_35 - 0x90, 0x90, 0x90, //0x0000041d .p2align 4, 0x90 - //0x00000420 LBB0_10 - 0x4c, 0x8d, 0x66, 0x01, //0x00000420 leaq $1(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000424 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000427 jae LBB0_14 - 0x43, 0x8a, 0x14, 0x26, //0x0000042d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000431 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000434 je LBB0_14 - 0x80, 0xfa, 0x20, //0x0000043a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000043d je LBB0_14 - 0x80, 0xc2, 0xf7, //0x00000443 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000446 cmpb $1, %dl - 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x00000449 ja LBB0_35 - 0x90, //0x0000044f .p2align 4, 0x90 - //0x00000450 LBB0_14 - 0x4c, 0x8d, 0x66, 0x02, //0x00000450 leaq $2(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000454 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000457 jae LBB0_18 - 0x43, 0x8a, 0x14, 0x26, //0x0000045d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000461 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000464 je LBB0_18 - 0x80, 0xfa, 0x20, //0x0000046a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000046d je LBB0_18 - 0x80, 0xc2, 0xf7, //0x00000473 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000476 cmpb $1, %dl - 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00000479 ja LBB0_35 - 0x90, //0x0000047f .p2align 4, 0x90 - //0x00000480 LBB0_18 - 0x4c, 0x8d, 0x66, 0x03, //0x00000480 leaq $3(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000484 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000487 jae LBB0_22 - 0x43, 0x8a, 0x14, 0x26, //0x0000048d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000491 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000494 je LBB0_22 - 0x80, 0xfa, 0x20, //0x0000049a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000049d je LBB0_22 - 0x80, 0xc2, 0xf7, //0x000004a3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000004a6 cmpb $1, %dl - 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004a9 ja LBB0_35 - 0x90, //0x000004af .p2align 4, 0x90 - //0x000004b0 LBB0_22 - 0x4c, 0x8d, 0x66, 0x04, //0x000004b0 leaq $4(%rsi), %r12 - 0x48, 0x89, 0xd8, //0x000004b4 movq %rbx, %rax - 0x4c, 0x29, 0xe0, //0x000004b7 subq %r12, %rax - 0x0f, 0x86, 0x4e, 0x36, 0x00, 0x00, //0x000004ba jbe LBB0_675 - 0x48, 0x83, 0xf8, 0x20, //0x000004c0 cmpq $32, %rax - 0x0f, 0x82, 0x69, 0x23, 0x00, 0x00, //0x000004c4 jb LBB0_488 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000004ca movq $-4, %rax - 0x48, 0x29, 0xf0, //0x000004d1 subq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004d4 .p2align 4, 0x90 - //0x000004e0 LBB0_25 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x000004e0 vmovdqu (%r14,%r12), %ymm0 - 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x000004e6 vpshufb %ymm0, %ymm5, %ymm1 - 0xc5, 0xfd, 0x74, 0xc1, //0x000004eb vpcmpeqb %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000004ef vpmovmskb %ymm0, %edx - 0x83, 0xfa, 0xff, //0x000004f3 cmpl $-1, %edx - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000004f6 jne LBB0_34 - 0x49, 0x83, 0xc4, 0x20, //0x000004fc addq $32, %r12 - 0x48, 0x8d, 0x14, 0x03, //0x00000500 leaq (%rbx,%rax), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000504 addq $-32, %rdx - 0x48, 0x83, 0xc0, 0xe0, //0x00000508 addq $-32, %rax - 0x48, 0x83, 0xfa, 0x1f, //0x0000050c cmpq $31, %rdx - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000510 ja LBB0_25 - 0x4d, 0x89, 0xf4, //0x00000516 movq %r14, %r12 - 0x49, 0x29, 0xc4, //0x00000519 subq %rax, %r12 - 0x48, 0x01, 0xd8, //0x0000051c addq %rbx, %rax - 0x48, 0x85, 0xc0, //0x0000051f testq %rax, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000522 je LBB0_33 - //0x00000528 LBB0_28 - 0x4d, 0x8d, 0x04, 0x04, //0x00000528 leaq (%r12,%rax), %r8 - 0x31, 0xd2, //0x0000052c xorl %edx, %edx - 0x90, 0x90, //0x0000052e .p2align 4, 0x90 - //0x00000530 LBB0_29 - 0x41, 0x0f, 0xbe, 0x34, 0x14, //0x00000530 movsbl (%r12,%rdx), %esi - 0x83, 0xfe, 0x20, //0x00000535 cmpl $32, %esi - 0x0f, 0x87, 0x78, 0x1f, 0x00, 0x00, //0x00000538 ja LBB0_676 - 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000053e movabsq $4294977024, %rcx - 0x48, 0x0f, 0xa3, 0xf1, //0x00000548 btq %rsi, %rcx - 0x0f, 0x83, 0x64, 0x1f, 0x00, 0x00, //0x0000054c jae LBB0_676 - 0x48, 0x83, 0xc2, 0x01, //0x00000552 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x00000556 cmpq %rdx, %rax - 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000559 jne LBB0_29 - 0x4d, 0x89, 0xc4, //0x0000055f movq %r8, %r12 - //0x00000562 LBB0_33 - 0x4d, 0x29, 0xf4, //0x00000562 subq %r14, %r12 - 0x49, 0x39, 0xdc, //0x00000565 cmpq %rbx, %r12 - 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x00000568 jb LBB0_35 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x0000056e jmp LBB0_677 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000573 .p2align 4, 0x90 - //0x00000580 LBB0_34 - 0xf7, 0xd2, //0x00000580 notl %edx - 0x44, 0x0f, 0xbc, 0xe2, //0x00000582 bsfl %edx, %r12d - 0x49, 0x29, 0xc4, //0x00000586 subq %rax, %r12 - 0x49, 0x39, 0xdc, //0x00000589 cmpq %rbx, %r12 - 0x0f, 0x83, 0x80, 0x35, 0x00, 0x00, //0x0000058c jae LBB0_677 - //0x00000592 LBB0_35 - 0x49, 0x8d, 0x54, 0x24, 0x01, //0x00000592 leaq $1(%r12), %rdx - 0x49, 0x89, 0x55, 0x00, //0x00000597 movq %rdx, (%r13) - 0x43, 0x0f, 0xbe, 0x04, 0x26, //0x0000059b movsbl (%r14,%r12), %eax - 0x85, 0xc0, //0x000005a0 testl %eax, %eax - 0x0f, 0x84, 0x6a, 0x35, 0x00, 0x00, //0x000005a2 je LBB0_677 - 0x49, 0x8b, 0x37, //0x000005a8 movq (%r15), %rsi - 0x4c, 0x8d, 0x46, 0xff, //0x000005ab leaq $-1(%rsi), %r8 - 0x41, 0x8b, 0x1c, 0xf7, //0x000005af movl (%r15,%rsi,8), %ebx - 0x49, 0x83, 0xf9, 0xff, //0x000005b3 cmpq $-1, %r9 - 0x4d, 0x0f, 0x45, 0xe1, //0x000005b7 cmovneq %r9, %r12 - 0x83, 0xc3, 0xff, //0x000005bb addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x000005be cmpl $5, %ebx - 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x000005c1 ja LBB0_41 - 0x48, 0x8d, 0x15, 0x12, 0x38, 0x00, 0x00, //0x000005c7 leaq $14354(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000005ce movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000005d2 addq %rdx, %rcx - 0xff, 0xe1, //0x000005d5 jmpq *%rcx - //0x000005d7 LBB0_38 - 0x83, 0xf8, 0x2c, //0x000005d7 cmpl $44, %eax - 0x0f, 0x84, 0x41, 0x06, 0x00, 0x00, //0x000005da je LBB0_126 - 0x83, 0xf8, 0x5d, //0x000005e0 cmpl $93, %eax - 0x0f, 0x84, 0x23, 0x06, 0x00, 0x00, //0x000005e3 je LBB0_40 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x000005e9 jmp LBB0_710 - //0x000005ee LBB0_41 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000005ee movq $-1, (%rsp) - 0x4d, 0x89, 0x07, //0x000005f6 movq %r8, (%r15) - 0x83, 0xf8, 0x7b, //0x000005f9 cmpl $123, %eax - 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x000005fc jbe LBB0_67 - 0xe9, 0x86, 0x35, 0x00, 0x00, //0x00000602 jmp LBB0_710 - //0x00000607 LBB0_42 - 0x83, 0xf8, 0x2c, //0x00000607 cmpl $44, %eax - 0x0f, 0x85, 0xf3, 0x05, 0x00, 0x00, //0x0000060a jne LBB0_43 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000610 cmpq $4095, %rsi - 0x0f, 0x8f, 0x02, 0x35, 0x00, 0x00, //0x00000617 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x0000061d leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000621 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000624 movq $3, $8(%r15,%rsi,8) - 0xe9, 0x6e, 0xfd, 0xff, 0xff, //0x0000062d jmp LBB0_3 - //0x00000632 LBB0_44 - 0x3c, 0x22, //0x00000632 cmpb $34, %al - 0x0f, 0x85, 0x53, 0x35, 0x00, 0x00, //0x00000634 jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x04, 0x00, 0x00, 0x00, //0x0000063a movq $4, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000642 testb $64, %r11b - 0x0f, 0x85, 0x2f, 0x07, 0x00, 0x00, //0x00000646 jne LBB0_148 - 0x4d, 0x8b, 0x4d, 0x00, //0x0000064c movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000650 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc3, //0x00000654 movq %r8, %rbx - 0x41, 0xf6, 0xc3, 0x20, //0x00000657 testb $32, %r11b - 0x0f, 0x85, 0xf6, 0x09, 0x00, 0x00, //0x0000065b jne LBB0_190 - 0x4c, 0x29, 0xcb, //0x00000661 subq %r9, %rbx - 0x0f, 0x84, 0xb2, 0x36, 0x00, 0x00, //0x00000664 je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x0000066a cmpq $64, %rbx - 0x0f, 0x82, 0x29, 0x24, 0x00, 0x00, //0x0000066e jb LBB0_504 - 0x4c, 0x89, 0xce, //0x00000674 movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000677 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x0000067a movq $-1, %r11 - 0x4c, 0x89, 0xc9, //0x00000681 movq %r9, %rcx - 0x45, 0x31, 0xd2, //0x00000684 xorl %r10d, %r10d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000687 .p2align 4, 0x90 - //0x00000690 LBB0_50 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000690 vmovdqu (%r14,%rcx), %ymm0 - 0x49, 0x89, 0xcf, //0x00000696 movq %rcx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00000699 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000006a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000006a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000006a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000006ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000006b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000006b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000006b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x000006bc vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe0, 0x20, //0x000006c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000006c4 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000006c7 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x000006cb orq %rcx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000006ce jne LBB0_59 - 0x4d, 0x85, 0xd2, //0x000006d4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x000006d7 jne LBB0_61 - 0x45, 0x31, 0xd2, //0x000006dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000006e0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000006e3 jne LBB0_62 - //0x000006e9 LBB0_53 - 0x48, 0x83, 0xc3, 0xc0, //0x000006e9 addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x000006ed addq $-64, %rsi - 0x4c, 0x89, 0xf9, //0x000006f1 movq %r15, %rcx - 0x48, 0x83, 0xc1, 0x40, //0x000006f4 addq $64, %rcx - 0x48, 0x83, 0xfb, 0x3f, //0x000006f8 cmpq $63, %rbx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000006fc ja LBB0_50 - 0xe9, 0x42, 0x20, 0x00, 0x00, //0x00000702 jmp LBB0_54 - //0x00000707 LBB0_59 - 0x49, 0x83, 0xfb, 0xff, //0x00000707 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_61 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000711 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000715 addq %r15, %r11 - //0x00000718 LBB0_61 - 0x4c, 0x89, 0xd0, //0x00000718 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000071b notq %rax - 0x48, 0x21, 0xd0, //0x0000071e andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00000721 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00000725 orq %r10, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00000728 movq %rcx, (%rsp) - 0x48, 0xf7, 0xd1, //0x0000072c notq %rcx - 0x48, 0x21, 0xd1, //0x0000072f andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000732 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000073c andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x0000073f xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x00000742 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x00000745 setb %r10b - 0x48, 0x01, 0xc9, //0x00000749 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000074c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00000756 xorq %rax, %rcx - 0x48, 0x23, 0x0c, 0x24, //0x00000759 andq (%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x0000075d notq %rcx - 0x48, 0x21, 0xcf, //0x00000760 andq %rcx, %rdi - 0x48, 0x85, 0xff, //0x00000763 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000766 je LBB0_53 - //0x0000076c LBB0_62 - 0x4c, 0x0f, 0xbc, 0xd7, //0x0000076c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000770 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000773 movq %r11, %r15 - 0xe9, 0xa5, 0x0b, 0x00, 0x00, //0x00000776 jmp LBB0_232 - //0x0000077b LBB0_63 - 0x3c, 0x3a, //0x0000077b cmpb $58, %al - 0x0f, 0x85, 0x0a, 0x34, 0x00, 0x00, //0x0000077d jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x00, 0x00, 0x00, 0x00, //0x00000783 movq $0, (%r15,%rsi,8) - 0xe9, 0x10, 0xfc, 0xff, 0xff, //0x0000078b jmp LBB0_3 - //0x00000790 LBB0_65 - 0x3c, 0x5d, //0x00000790 cmpb $93, %al - 0x0f, 0x84, 0x74, 0x04, 0x00, 0x00, //0x00000792 je LBB0_40 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000798 movq $-1, (%rsp) - 0x49, 0xc7, 0x04, 0xf7, 0x01, 0x00, 0x00, 0x00, //0x000007a0 movq $1, (%r15,%rsi,8) - 0x83, 0xf8, 0x7b, //0x000007a8 cmpl $123, %eax - 0x0f, 0x87, 0xdc, 0x33, 0x00, 0x00, //0x000007ab ja LBB0_710 - //0x000007b1 LBB0_67 - 0x89, 0xc0, //0x000007b1 movl %eax, %eax - 0x48, 0x8d, 0x0d, 0x3e, 0x36, 0x00, 0x00, //0x000007b3 leaq $13886(%rip), %rcx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x04, 0x81, //0x000007ba movslq (%rcx,%rax,4), %rax - 0x48, 0x01, 0xc8, //0x000007be addq %rcx, %rax - 0xff, 0xe0, //0x000007c1 jmpq *%rax - //0x000007c3 LBB0_70 - 0x4c, 0x8b, 0x47, 0x08, //0x000007c3 movq $8(%rdi), %r8 - 0x49, 0x8b, 0x5d, 0x00, //0x000007c7 movq (%r13), %rbx - 0x41, 0xf6, 0xc3, 0x40, //0x000007cb testb $64, %r11b - 0x0f, 0x85, 0x67, 0x06, 0x00, 0x00, //0x000007cf jne LBB0_159 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000007d5 movq %r13, $48(%rsp) - 0x48, 0x8d, 0x53, 0xff, //0x000007da leaq $-1(%rbx), %rdx - 0x49, 0x29, 0xd0, //0x000007de subq %rdx, %r8 - 0x0f, 0x84, 0x78, 0x33, 0x00, 0x00, //0x000007e1 je LBB0_682 - 0x49, 0x8d, 0x04, 0x1e, //0x000007e7 leaq (%r14,%rbx), %rax - 0x48, 0x83, 0xc0, 0xff, //0x000007eb addq $-1, %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000007ef movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000007f4 cmpb $48, (%rax) - 0x48, 0x89, 0x14, 0x24, //0x000007f7 movq %rdx, (%rsp) - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000007fb jne LBB0_76 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000801 movl $1, %r13d - 0x49, 0x83, 0xf8, 0x01, //0x00000807 cmpq $1, %r8 - 0x0f, 0x84, 0xa4, 0xfb, 0xff, 0xff, //0x0000080b je LBB0_1 - 0x41, 0x8a, 0x0c, 0x1e, //0x00000811 movb (%r14,%rbx), %cl - 0x80, 0xc1, 0xd2, //0x00000815 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000818 cmpb $55, %cl - 0x0f, 0x87, 0x94, 0xfb, 0xff, 0xff, //0x0000081b ja LBB0_1 - 0x0f, 0xb6, 0xc1, //0x00000821 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000824 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000082e btq %rax, %rcx - 0x48, 0x89, 0xd1, //0x00000832 movq %rdx, %rcx - 0x0f, 0x83, 0x7d, 0xfb, 0xff, 0xff, //0x00000835 jae LBB0_2 - //0x0000083b LBB0_76 - 0x48, 0x89, 0x5c, 0x24, 0x20, //0x0000083b movq %rbx, $32(%rsp) - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000840 movq $-1, %r10 - 0x49, 0x83, 0xf8, 0x20, //0x00000847 cmpq $32, %r8 - 0x0f, 0x82, 0x21, 0x22, 0x00, 0x00, //0x0000084b jb LBB0_502 - 0x45, 0x31, 0xed, //0x00000851 xorl %r13d, %r13d - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000854 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000085b movq $-1, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000864 .p2align 4, 0x90 - //0x00000870 LBB0_78 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00000870 movq $56(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x28, //0x00000875 vmovdqu (%rax,%r13), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x0000087b vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x00000880 vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00000884 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x00000888 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xcc, 0xf9, 0xff, 0xff, //0x0000088c vpcmpeqb $-1588(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x00000894 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x00000898 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xdc, 0xf9, 0xff, 0xff, //0x0000089c vpcmpeqb $-1572(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000008a4 vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000008a8 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xf3, //0x000008ac vpmovmskb %ymm3, %esi - 0xc5, 0x7d, 0xd7, 0xfa, //0x000008b0 vpmovmskb %ymm2, %r15d - 0xc5, 0xf5, 0xeb, 0xc0, //0x000008b4 vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000008b8 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000008bc vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000008c0 vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000008c4 notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000008c7 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000008cb cmpl $32, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000008ce je LBB0_80 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000008d4 movl $-1, %eax - 0xd3, 0xe0, //0x000008d9 shll %cl, %eax - 0xf7, 0xd0, //0x000008db notl %eax - 0x21, 0xc2, //0x000008dd andl %eax, %edx - 0x21, 0xc6, //0x000008df andl %eax, %esi - 0x44, 0x21, 0xf8, //0x000008e1 andl %r15d, %eax - 0x41, 0x89, 0xc7, //0x000008e4 movl %eax, %r15d - //0x000008e7 LBB0_80 - 0x8d, 0x5a, 0xff, //0x000008e7 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x000008ea andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xcc, 0xf8, 0xff, 0xff, //0x000008ec vmovdqu $-1844(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x4e, 0x1c, 0x00, 0x00, //0x000008f4 jne LBB0_464 - 0x8d, 0x5e, 0xff, //0x000008fa leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x000008fd andl %esi, %ebx - 0x0f, 0x85, 0x43, 0x1c, 0x00, 0x00, //0x000008ff jne LBB0_464 - 0x41, 0x8d, 0x5f, 0xff, //0x00000905 leal $-1(%r15), %ebx - 0x44, 0x21, 0xfb, //0x00000909 andl %r15d, %ebx - 0x0f, 0x85, 0x36, 0x1c, 0x00, 0x00, //0x0000090c jne LBB0_464 - 0x85, 0xd2, //0x00000912 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000914 je LBB0_86 - 0x0f, 0xbc, 0xd2, //0x0000091a bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000091d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xde, 0x1d, 0x00, 0x00, //0x00000923 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000929 addq %r13, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000092c movq %rdx, $40(%rsp) - //0x00000931 LBB0_86 - 0x85, 0xf6, //0x00000931 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000933 je LBB0_89 - 0x0f, 0xbc, 0xd6, //0x00000939 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x0000093c cmpq $-1, %r9 - 0x0f, 0x85, 0xc1, 0x1d, 0x00, 0x00, //0x00000940 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000946 addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x00000949 movq %rdx, %r9 - //0x0000094c LBB0_89 - 0x45, 0x85, 0xff, //0x0000094c testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000094f je LBB0_92 - 0x41, 0x0f, 0xbc, 0xd7, //0x00000955 bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000959 cmpq $-1, %r10 - 0x0f, 0x85, 0xa4, 0x1d, 0x00, 0x00, //0x0000095d jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000963 addq %r13, %rdx - 0x49, 0x89, 0xd2, //0x00000966 movq %rdx, %r10 - //0x00000969 LBB0_92 - 0x83, 0xf9, 0x20, //0x00000969 cmpl $32, %ecx - 0x0f, 0x85, 0x39, 0x08, 0x00, 0x00, //0x0000096c jne LBB0_210 - 0x49, 0x83, 0xc0, 0xe0, //0x00000972 addq $-32, %r8 - 0x49, 0x83, 0xc5, 0x20, //0x00000976 addq $32, %r13 - 0x49, 0x83, 0xf8, 0x1f, //0x0000097a cmpq $31, %r8 - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x0000097e ja LBB0_78 - 0xc5, 0xf8, 0x77, //0x00000984 vzeroupper - 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xf8, 0xff, 0xff, //0x00000987 vmovdqu $-1967(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xa9, 0xf8, 0xff, 0xff, //0x0000098f vmovdqu $-1879(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x81, 0xf8, 0xff, 0xff, //0x00000997 vmovdqu $-1919(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x59, 0xf8, 0xff, 0xff, //0x0000099f vmovdqu $-1959(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xb1, 0xf7, 0xff, 0xff, //0x000009a7 vmovdqu $-2127(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x89, 0xf7, 0xff, 0xff, //0x000009af vmovdqu $-2167(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000009b7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x05, 0x5c, 0xf7, 0xff, 0xff, //0x000009bc vmovdqu $-2212(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x34, 0xf7, 0xff, 0xff, //0x000009c4 vmovdqu $-2252(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xf7, 0xff, 0xff, //0x000009cc vmovdqu $-2292(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0xe4, 0xf6, 0xff, 0xff, //0x000009d4 vmovdqu $-2332(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0x4c, 0x03, 0x6c, 0x24, 0x38, //0x000009dc addq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x000009e1 cmpq $16, %r8 - 0x0f, 0x82, 0x57, 0x01, 0x00, 0x00, //0x000009e5 jb LBB0_113 - //0x000009eb LBB0_95 - 0x4c, 0x89, 0xef, //0x000009eb movq %r13, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x20, //0x000009ee subq $32(%rsp), %rdi - 0x4c, 0x29, 0xf7, //0x000009f3 subq %r14, %rdi - 0x48, 0x83, 0xc7, 0x01, //0x000009f6 addq $1, %rdi - 0x45, 0x31, 0xff, //0x000009fa xorl %r15d, %r15d - 0x90, 0x90, 0x90, //0x000009fd .p2align 4, 0x90 - //0x00000a00 LBB0_96 - 0xc4, 0x81, 0x7a, 0x6f, 0x44, 0x3d, 0x00, //0x00000a00 vmovdqu (%r13,%r15), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x31, 0xf6, 0xff, 0xff, //0x00000a07 vpcmpgtb $-2511(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a0f vmovdqu $-2503(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00000a17 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00000a1b vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a1f vpcmpeqb $-2503(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x41, 0xf6, 0xff, 0xff, //0x00000a27 vpcmpeqb $-2495(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00000a2f vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0xe5, 0xf5, 0xff, 0xff, //0x00000a33 vpand $-2587(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x3d, 0xf6, 0xff, 0xff, //0x00000a3b vpcmpeqb $-2499(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x45, 0xf6, 0xff, 0xff, //0x00000a43 vpcmpeqb $-2491(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00000a4b vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00000a4f vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00000a53 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0xf9, 0xd7, 0xd0, //0x00000a57 vpmovmskb %xmm0, %edx - 0xc5, 0x79, 0xd7, 0xdb, //0x00000a5b vpmovmskb %xmm3, %r11d - 0xc5, 0xf9, 0xd7, 0xf2, //0x00000a5f vpmovmskb %xmm2, %esi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00000a63 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x00000a67 notl %eax - 0x0f, 0xbc, 0xc8, //0x00000a69 bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00000a6c cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000a6f je LBB0_98 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000a75 movl $-1, %eax - 0xd3, 0xe0, //0x00000a7a shll %cl, %eax - 0xf7, 0xd0, //0x00000a7c notl %eax - 0x21, 0xc2, //0x00000a7e andl %eax, %edx - 0x41, 0x21, 0xc3, //0x00000a80 andl %eax, %r11d - 0x21, 0xf0, //0x00000a83 andl %esi, %eax - 0x89, 0xc6, //0x00000a85 movl %eax, %esi - //0x00000a87 LBB0_98 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xf8, 0xff, 0xff, //0x00000a87 vmovdqu $-2031(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xf7, 0xff, 0xff, //0x00000a8f vmovdqu $-2263(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x8d, 0x5a, 0xff, //0x00000a97 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00000a9a andl %edx, %ebx - 0x0f, 0x85, 0x62, 0x1d, 0x00, 0x00, //0x00000a9c jne LBB0_486 - 0x41, 0x8d, 0x5b, 0xff, //0x00000aa2 leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000aa6 andl %r11d, %ebx - 0x0f, 0x85, 0x55, 0x1d, 0x00, 0x00, //0x00000aa9 jne LBB0_486 - 0x8d, 0x5e, 0xff, //0x00000aaf leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000ab2 andl %esi, %ebx - 0x0f, 0x85, 0x4a, 0x1d, 0x00, 0x00, //0x00000ab4 jne LBB0_486 - 0x85, 0xd2, //0x00000aba testl %edx, %edx - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000abc je LBB0_104 - 0x0f, 0xbc, 0xd2, //0x00000ac2 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000ac5 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x73, 0x1d, 0x00, 0x00, //0x00000acb jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000ad1 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000ad4 addq %r15, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00000ad7 movq %rdx, $40(%rsp) - //0x00000adc LBB0_104 - 0x45, 0x85, 0xdb, //0x00000adc testl %r11d, %r11d - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000adf je LBB0_107 - 0x41, 0x0f, 0xbc, 0xd3, //0x00000ae5 bsfl %r11d, %edx - 0x49, 0x83, 0xf9, 0xff, //0x00000ae9 cmpq $-1, %r9 - 0x0f, 0x85, 0x51, 0x1d, 0x00, 0x00, //0x00000aed jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000af3 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000af6 addq %r15, %rdx - 0x49, 0x89, 0xd1, //0x00000af9 movq %rdx, %r9 - //0x00000afc LBB0_107 - 0x85, 0xf6, //0x00000afc testl %esi, %esi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000afe je LBB0_110 - 0x0f, 0xbc, 0xd6, //0x00000b04 bsfl %esi, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000b07 cmpq $-1, %r10 - 0x0f, 0x85, 0x33, 0x1d, 0x00, 0x00, //0x00000b0b jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000b11 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000b14 addq %r15, %rdx - 0x49, 0x89, 0xd2, //0x00000b17 movq %rdx, %r10 - //0x00000b1a LBB0_110 - 0x83, 0xf9, 0x10, //0x00000b1a cmpl $16, %ecx - 0x0f, 0x85, 0xbe, 0x0a, 0x00, 0x00, //0x00000b1d jne LBB0_277 - 0x49, 0x83, 0xc0, 0xf0, //0x00000b23 addq $-16, %r8 - 0x49, 0x83, 0xc7, 0x10, //0x00000b27 addq $16, %r15 - 0x49, 0x83, 0xf8, 0x0f, //0x00000b2b cmpq $15, %r8 - 0x0f, 0x87, 0xcb, 0xfe, 0xff, 0xff, //0x00000b2f ja LBB0_96 - 0x4d, 0x01, 0xfd, //0x00000b35 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000b38 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00000b3d movq $16(%rsp), %rdi - //0x00000b42 LBB0_113 - 0x4d, 0x85, 0xc0, //0x00000b42 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x25, 0x53, 0xf7, 0xff, 0xff, //0x00000b45 vmovdqu $-2221(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x84, 0xa8, 0x0a, 0x00, 0x00, //0x00000b4d je LBB0_279 - 0x4f, 0x8d, 0x3c, 0x28, //0x00000b53 leaq (%r8,%r13), %r15 - 0x4c, 0x89, 0xee, //0x00000b57 movq %r13, %rsi - 0x48, 0x2b, 0x74, 0x24, 0x20, //0x00000b5a subq $32(%rsp), %rsi - 0x4c, 0x29, 0xf6, //0x00000b5f subq %r14, %rsi - 0x48, 0x83, 0xc6, 0x01, //0x00000b62 addq $1, %rsi - 0x31, 0xc9, //0x00000b66 xorl %ecx, %ecx - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xf6, 0xff, 0xff, //0x00000b68 vmovdqu $-2480(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00000b70 jmp LBB0_118 - //0x00000b75 LBB0_115 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000b75 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x8f, 0x1c, 0x00, 0x00, //0x00000b7b jne LBB0_487 - 0x48, 0x8d, 0x04, 0x0e, //0x00000b81 leaq (%rsi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x00000b85 movq %rax, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b8a .p2align 4, 0x90 - //0x00000b90 LBB0_117 - 0x48, 0x83, 0xc1, 0x01, //0x00000b90 addq $1, %rcx - 0x49, 0x39, 0xc8, //0x00000b94 cmpq %rcx, %r8 - 0x0f, 0x84, 0x2d, 0x19, 0x00, 0x00, //0x00000b97 je LBB0_457 - //0x00000b9d LBB0_118 - 0x41, 0x0f, 0xbe, 0x54, 0x0d, 0x00, //0x00000b9d movsbl (%r13,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00000ba3 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00000ba6 cmpl $10, %eax - 0x0f, 0x82, 0xe1, 0xff, 0xff, 0xff, //0x00000ba9 jb LBB0_117 - 0x8d, 0x5a, 0xd5, //0x00000baf leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00000bb2 cmpl $26, %ebx - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000bb5 ja LBB0_123 - 0x48, 0x8d, 0x15, 0x92, 0x34, 0x00, 0x00, //0x00000bbb leaq $13458(%rip), %rdx /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00000bc2 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00000bc6 addq %rdx, %rax - 0xff, 0xe0, //0x00000bc9 jmpq *%rax - //0x00000bcb LBB0_121 - 0x49, 0x83, 0xfa, 0xff, //0x00000bcb cmpq $-1, %r10 - 0x0f, 0x85, 0x3b, 0x1c, 0x00, 0x00, //0x00000bcf jne LBB0_487 - 0x4c, 0x8d, 0x14, 0x0e, //0x00000bd5 leaq (%rsi,%rcx), %r10 - 0xe9, 0xb2, 0xff, 0xff, 0xff, //0x00000bd9 jmp LBB0_117 - //0x00000bde LBB0_123 - 0x83, 0xfa, 0x65, //0x00000bde cmpl $101, %edx - 0x0f, 0x85, 0x11, 0x0a, 0x00, 0x00, //0x00000be1 jne LBB0_278 - //0x00000be7 LBB0_124 - 0x49, 0x83, 0xf9, 0xff, //0x00000be7 cmpq $-1, %r9 - 0x0f, 0x85, 0x1f, 0x1c, 0x00, 0x00, //0x00000beb jne LBB0_487 - 0x4c, 0x8d, 0x0c, 0x0e, //0x00000bf1 leaq (%rsi,%rcx), %r9 - 0xe9, 0x96, 0xff, 0xff, 0xff, //0x00000bf5 jmp LBB0_117 - //0x00000bfa LBB0_68 - 0x83, 0xf8, 0x22, //0x00000bfa cmpl $34, %eax - 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bfd je LBB0_130 - //0x00000c03 LBB0_43 - 0x83, 0xf8, 0x7d, //0x00000c03 cmpl $125, %eax - 0x0f, 0x85, 0x81, 0x2f, 0x00, 0x00, //0x00000c06 jne LBB0_710 - //0x00000c0c LBB0_40 - 0x4d, 0x89, 0x07, //0x00000c0c movq %r8, (%r15) - 0x4c, 0x89, 0x24, 0x24, //0x00000c0f movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x00000c13 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0xf7, 0xff, 0xff, //0x00000c16 jne LBB0_5 - 0xe9, 0x74, 0x2f, 0x00, 0x00, //0x00000c1c jmp LBB0_711 - //0x00000c21 LBB0_126 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000c21 cmpq $4095, %rsi - 0x0f, 0x8f, 0xf1, 0x2e, 0x00, 0x00, //0x00000c28 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x00000c2e leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000c32 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000c35 movq $0, $8(%r15,%rsi,8) - 0xe9, 0x5d, 0xf7, 0xff, 0xff, //0x00000c3e jmp LBB0_3 - //0x00000c43 LBB0_130 - 0x49, 0xc7, 0x04, 0xf7, 0x02, 0x00, 0x00, 0x00, //0x00000c43 movq $2, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000c4b testb $64, %r11b - 0x0f, 0x85, 0x17, 0x03, 0x00, 0x00, //0x00000c4f jne LBB0_179 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000c55 movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000c59 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc1, //0x00000c5d movq %r8, %rcx - 0x41, 0xf6, 0xc3, 0x20, //0x00000c60 testb $32, %r11b - 0x0f, 0x85, 0x54, 0x05, 0x00, 0x00, //0x00000c64 jne LBB0_211 - 0x4c, 0x29, 0xc9, //0x00000c6a subq %r9, %rcx - 0x0f, 0x84, 0xa9, 0x30, 0x00, 0x00, //0x00000c6d je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x00000c73 cmpq $64, %rcx - 0x0f, 0x82, 0xc8, 0x1e, 0x00, 0x00, //0x00000c77 jb LBB0_511 - 0x4c, 0x89, 0xce, //0x00000c7d movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000c80 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000c83 movq $-1, %r11 - 0x4c, 0x89, 0xcb, //0x00000c8a movq %r9, %rbx - 0x45, 0x31, 0xd2, //0x00000c8d xorl %r10d, %r10d - //0x00000c90 .p2align 4, 0x90 - //0x00000c90 LBB0_135 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000c90 vmovdqu (%r14,%rbx), %ymm0 - 0x49, 0x89, 0xdf, //0x00000c96 movq %rbx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x1e, 0x20, //0x00000c99 vmovdqu $32(%r14,%rbx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00000ca0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00000ca4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00000ca8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00000cac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x00000cb0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00000cb4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x00000cb8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000cbc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x00000cc0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00000cc4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00000cc7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x00000ccb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x00000cce jne LBB0_144 - 0x4d, 0x85, 0xd2, //0x00000cd4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x00000cd7 jne LBB0_146 - 0x45, 0x31, 0xd2, //0x00000cdd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x00000ce0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00000ce3 jne LBB0_147 - //0x00000ce9 LBB0_138 - 0x48, 0x83, 0xc1, 0xc0, //0x00000ce9 addq $-64, %rcx - 0x48, 0x83, 0xc6, 0xc0, //0x00000ced addq $-64, %rsi - 0x4c, 0x89, 0xfb, //0x00000cf1 movq %r15, %rbx - 0x48, 0x83, 0xc3, 0x40, //0x00000cf4 addq $64, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x00000cf8 cmpq $63, %rcx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x00000cfc ja LBB0_135 - 0xe9, 0x6f, 0x1b, 0x00, 0x00, //0x00000d02 jmp LBB0_139 - //0x00000d07 LBB0_144 - 0x49, 0x83, 0xfb, 0xff, //0x00000d07 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000d0b jne LBB0_146 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000d11 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000d15 addq %r15, %r11 - //0x00000d18 LBB0_146 - 0x4c, 0x89, 0xd0, //0x00000d18 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00000d1b notq %rax - 0x48, 0x21, 0xd0, //0x00000d1e andq %rdx, %rax - 0x48, 0x8d, 0x1c, 0x00, //0x00000d21 leaq (%rax,%rax), %rbx - 0x4c, 0x09, 0xd3, //0x00000d25 orq %r10, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00000d28 movq %rbx, (%rsp) - 0x48, 0xf7, 0xd3, //0x00000d2c notq %rbx - 0x48, 0x21, 0xd3, //0x00000d2f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d32 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x00000d3c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x00000d3f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00000d42 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00000d45 setb %r10b - 0x48, 0x01, 0xdb, //0x00000d49 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000d4c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00000d56 xorq %rax, %rbx - 0x48, 0x23, 0x1c, 0x24, //0x00000d59 andq (%rsp), %rbx - 0x48, 0xf7, 0xd3, //0x00000d5d notq %rbx - 0x48, 0x21, 0xdf, //0x00000d60 andq %rbx, %rdi - 0x48, 0x85, 0xff, //0x00000d63 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000d66 je LBB0_138 - //0x00000d6c LBB0_147 - 0x4c, 0x0f, 0xbc, 0xd7, //0x00000d6c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000d70 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000d73 movq %r11, %r15 - 0xe9, 0x11, 0x0a, 0x00, 0x00, //0x00000d76 jmp LBB0_298 - //0x00000d7b LBB0_148 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000d7b movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000d83 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000d87 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000d8b leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000d8f subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000d92 cmpq $32, %r10 - 0x0f, 0x8c, 0x9e, 0x17, 0x00, 0x00, //0x00000d96 jl LBB0_158 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000d9c movl $32, %ecx - 0x31, 0xf6, //0x00000da1 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000da3 xorl %r15d, %r15d - 0xe9, 0x59, 0x00, 0x00, 0x00, //0x00000da6 jmp LBB0_150 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000dab .p2align 4, 0x90 - //0x00000db0 LBB0_154 - 0x44, 0x89, 0xfa, //0x00000db0 movl %r15d, %edx - 0xf7, 0xd2, //0x00000db3 notl %edx - 0x21, 0xda, //0x00000db5 andl %ebx, %edx - 0x8d, 0x04, 0x12, //0x00000db7 leal (%rdx,%rdx), %eax - 0x44, 0x09, 0xf8, //0x00000dba orl %r15d, %eax - 0x89, 0xc7, //0x00000dbd movl %eax, %edi - 0xf7, 0xd7, //0x00000dbf notl %edi - 0x21, 0xdf, //0x00000dc1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000dc3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000dc9 xorl %r15d, %r15d - 0x01, 0xd7, //0x00000dcc addl %edx, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000dce setb %r15b - 0x01, 0xff, //0x00000dd2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000dd4 xorl $1431655765, %edi - 0x21, 0xc7, //0x00000dda andl %eax, %edi - 0xf7, 0xd7, //0x00000ddc notl %edi - 0x41, 0x21, 0xfb, //0x00000dde andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000de1 testq %r11, %r11 - 0x0f, 0x85, 0x7f, 0xf5, 0xff, 0xff, //0x00000de4 jne LBB0_153 - //0x00000dea LBB0_155 - 0x48, 0x83, 0xc6, 0x20, //0x00000dea addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000dee leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000df2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000df6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000dfa cmpq $63, %rax - 0x0f, 0x8e, 0x18, 0x17, 0x00, 0x00, //0x00000dfe jle LBB0_156 - //0x00000e04 LBB0_150 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000e04 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000e0a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000e0e vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00000e12 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000e16 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00000e1a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00000e1c jne LBB0_154 - 0x4d, 0x85, 0xff, //0x00000e22 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00000e25 jne LBB0_154 - 0x45, 0x31, 0xff, //0x00000e2b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x00000e2e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000e31 je LBB0_155 - 0xe9, 0x2d, 0xf5, 0xff, 0xff, //0x00000e37 jmp LBB0_153 - //0x00000e3c LBB0_159 - 0x4c, 0x89, 0xc6, //0x00000e3c movq %r8, %rsi - 0x48, 0x29, 0xde, //0x00000e3f subq %rbx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x00000e42 cmpq $32, %rsi - 0x0f, 0x82, 0x13, 0x1c, 0x00, 0x00, //0x00000e46 jb LBB0_501 - 0x48, 0x89, 0xda, //0x00000e4c movq %rbx, %rdx - 0x48, 0xf7, 0xda, //0x00000e4f negq %rdx - 0x48, 0x89, 0xd9, //0x00000e52 movq %rbx, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e55 .p2align 4, 0x90 - //0x00000e60 LBB0_161 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000e60 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x00000e66 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x00000e6a vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0x2a, 0xf3, 0xff, 0xff, //0x00000e6e vpcmpeqb $-3286(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x00000e76 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00000e7a vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x00000e7e testl %esi, %esi - 0x0f, 0x85, 0xce, 0x00, 0x00, 0x00, //0x00000e80 jne LBB0_175 - 0x48, 0x83, 0xc1, 0x20, //0x00000e86 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x10, //0x00000e8a leaq (%r8,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000e8e addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00000e92 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00000e96 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x00000e9a ja LBB0_161 - 0x4c, 0x89, 0xf1, //0x00000ea0 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00000ea3 subq %rdx, %rcx - 0x49, 0x01, 0xd0, //0x00000ea6 addq %rdx, %r8 - 0x4c, 0x89, 0xc6, //0x00000ea9 movq %r8, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x00000eac cmpq $16, %rsi - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00000eb0 jb LBB0_167 - //0x00000eb6 LBB0_164 - 0x4c, 0x89, 0xf2, //0x00000eb6 movq %r14, %rdx - 0x48, 0x29, 0xca, //0x00000eb9 subq %rcx, %rdx - //0x00000ebc LBB0_165 - 0xc5, 0xfa, 0x6f, 0x01, //0x00000ebc vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0x48, 0xf1, 0xff, 0xff, //0x00000ec0 vpcmpeqb $-3768(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0x50, 0xf1, 0xff, 0xff, //0x00000ec8 vpand $-3760(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x58, 0xf1, 0xff, 0xff, //0x00000ed0 vpcmpeqb $-3752(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x00000ed8 vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00000edc vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00000ee0 testl %eax, %eax - 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x00000ee2 jne LBB0_465 - 0x48, 0x83, 0xc1, 0x10, //0x00000ee8 addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00000eec addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00000ef0 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00000ef4 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000ef8 ja LBB0_165 - //0x00000efe LBB0_167 - 0x48, 0x89, 0xd8, //0x00000efe movq %rbx, %rax - 0xc5, 0x7d, 0x7f, 0xe1, //0x00000f01 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00000f05 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000f09 vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x00000f0e testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000f11 je LBB0_174 - 0x48, 0x8d, 0x3c, 0x31, //0x00000f17 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x00000f1b xorl %edx, %edx - //0x00000f1d LBB0_169 - 0x0f, 0xb6, 0x1c, 0x11, //0x00000f1d movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000f21 cmpb $44, %bl - 0x0f, 0x84, 0xb0, 0x1b, 0x00, 0x00, //0x00000f24 je LBB0_507 - 0x80, 0xfb, 0x7d, //0x00000f2a cmpb $125, %bl - 0x0f, 0x84, 0xa7, 0x1b, 0x00, 0x00, //0x00000f2d je LBB0_507 - 0x80, 0xfb, 0x5d, //0x00000f33 cmpb $93, %bl - 0x0f, 0x84, 0x9e, 0x1b, 0x00, 0x00, //0x00000f36 je LBB0_507 - 0x48, 0x83, 0xc2, 0x01, //0x00000f3c addq $1, %rdx - 0x48, 0x39, 0xd6, //0x00000f40 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000f43 jne LBB0_169 - 0x48, 0x89, 0xf9, //0x00000f49 movq %rdi, %rcx - //0x00000f4c LBB0_174 - 0x4c, 0x29, 0xf1, //0x00000f4c subq %r14, %rcx - 0xe9, 0x8c, 0x1b, 0x00, 0x00, //0x00000f4f jmp LBB0_508 - //0x00000f54 LBB0_175 - 0x0f, 0xbc, 0xce, //0x00000f54 bsfl %esi, %ecx - //0x00000f57 LBB0_176 - 0x48, 0x29, 0xd1, //0x00000f57 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00000f5a movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00000f5e testq %rbx, %rbx - 0x0f, 0x8f, 0x39, 0xf4, 0xff, 0xff, //0x00000f61 jg LBB0_3 - 0xe9, 0xff, 0x2b, 0x00, 0x00, //0x00000f67 jmp LBB0_178 - //0x00000f6c LBB0_179 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000f6c movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000f74 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000f78 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000f7c leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000f80 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000f83 cmpq $32, %r10 - 0x0f, 0x8c, 0xae, 0x17, 0x00, 0x00, //0x00000f87 jl LBB0_189 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000f8d movl $32, %ecx - 0x31, 0xf6, //0x00000f92 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000f94 xorl %r15d, %r15d - 0xe9, 0x58, 0x00, 0x00, 0x00, //0x00000f97 jmp LBB0_181 - 0x90, 0x90, 0x90, 0x90, //0x00000f9c .p2align 4, 0x90 - //0x00000fa0 LBB0_185 - 0x44, 0x89, 0xf8, //0x00000fa0 movl %r15d, %eax - 0xf7, 0xd0, //0x00000fa3 notl %eax - 0x21, 0xd8, //0x00000fa5 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00000fa7 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x00000faa orl %r15d, %edx - 0x89, 0xd7, //0x00000fad movl %edx, %edi - 0xf7, 0xd7, //0x00000faf notl %edi - 0x21, 0xdf, //0x00000fb1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000fb9 xorl %r15d, %r15d - 0x01, 0xc7, //0x00000fbc addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000fbe setb %r15b - 0x01, 0xff, //0x00000fc2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000fc4 xorl $1431655765, %edi - 0x21, 0xd7, //0x00000fca andl %edx, %edi - 0xf7, 0xd7, //0x00000fcc notl %edi - 0x41, 0x21, 0xfb, //0x00000fce andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000fd1 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000fd4 jne LBB0_184 - //0x00000fda LBB0_186 - 0x48, 0x83, 0xc6, 0x20, //0x00000fda addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000fde leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000fe2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000fe6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000fea cmpq $63, %rax - 0x0f, 0x8e, 0x29, 0x17, 0x00, 0x00, //0x00000fee jle LBB0_187 - //0x00000ff4 LBB0_181 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000ff4 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000ffa vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000ffe vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00001002 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001006 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x0000100a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000100c jne LBB0_185 - 0x4d, 0x85, 0xff, //0x00001012 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00001015 jne LBB0_185 - 0x45, 0x31, 0xff, //0x0000101b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x0000101e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00001021 je LBB0_186 - //0x00001027 LBB0_184 - 0x41, 0x0f, 0xbc, 0xc3, //0x00001027 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000102b addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x0000102e leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00001032 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001036 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000103b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001040 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00001045 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00001049 testq %r8, %r8 - 0x0f, 0x8f, 0x5f, 0x07, 0x00, 0x00, //0x0000104c jg LBB0_300 - 0xe9, 0xd5, 0x2a, 0x00, 0x00, //0x00001052 jmp LBB0_679 - //0x00001057 LBB0_190 - 0x4c, 0x29, 0xcb, //0x00001057 subq %r9, %rbx - 0x0f, 0x84, 0xbc, 0x2c, 0x00, 0x00, //0x0000105a je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x00001060 cmpq $64, %rbx - 0x0f, 0x82, 0x53, 0x1a, 0x00, 0x00, //0x00001064 jb LBB0_506 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000106a movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x00001071 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x00001074 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001077 .p2align 4, 0x90 - //0x00001080 LBB0_193 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x00001080 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x00001086 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000108d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00001091 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00001095 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001099 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000109d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x000010a1 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x000010a5 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x000010a9 vpmovmskb %ymm2, %ecx - 0xc5, 0xbd, 0x64, 0xd1, //0x000010ad vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000010b1 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x000010b6 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000010ba vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x000010be shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000010c2 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000010c5 shlq $32, %rcx - 0x48, 0xc1, 0xe6, 0x20, //0x000010c9 shlq $32, %rsi - 0x48, 0x09, 0xca, //0x000010cd orq %rcx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000010d0 jne LBB0_204 - 0x4d, 0x85, 0xdb, //0x000010d6 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x000010d9 jne LBB0_206 - 0x45, 0x31, 0xdb, //0x000010df xorl %r11d, %r11d - //0x000010e2 LBB0_196 - 0xc5, 0xbd, 0x64, 0xc8, //0x000010e2 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000010e6 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000010eb vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000010ef vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x000010f3 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x000010f6 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000010f9 jne LBB0_207 - 0x48, 0x85, 0xf6, //0x000010ff testq %rsi, %rsi - 0x0f, 0x85, 0xac, 0x2a, 0x00, 0x00, //0x00001102 jne LBB0_699 - 0x48, 0x83, 0xc3, 0xc0, //0x00001108 addq $-64, %rbx - 0x49, 0x83, 0xc2, 0x40, //0x0000110c addq $64, %r10 - 0x48, 0x83, 0xfb, 0x3f, //0x00001110 cmpq $63, %rbx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001114 ja LBB0_193 - 0xe9, 0x81, 0x16, 0x00, 0x00, //0x0000111a jmp LBB0_199 - //0x0000111f LBB0_204 - 0x49, 0x83, 0xff, 0xff, //0x0000111f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001123 jne LBB0_206 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001129 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000112d addq %r10, %r15 - //0x00001130 LBB0_206 - 0x4c, 0x89, 0x3c, 0x24, //0x00001130 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001134 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001137 notq %rax - 0x48, 0x21, 0xd0, //0x0000113a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000113d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x00001140 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x00001144 orq %r11, %r10 - 0x4c, 0x89, 0xd1, //0x00001147 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000114a notq %rcx - 0x48, 0x21, 0xd1, //0x0000114d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001150 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000115a andq %rdx, %rcx - 0x45, 0x31, 0xdb, //0x0000115d xorl %r11d, %r11d - 0x48, 0x01, 0xc1, //0x00001160 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc3, //0x00001163 setb %r11b - 0x48, 0x01, 0xc9, //0x00001167 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000116a movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001174 xorq %rax, %rcx - 0x4c, 0x21, 0xd1, //0x00001177 andq %r10, %rcx - 0x4d, 0x89, 0xfa, //0x0000117a movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x0000117d movq (%rsp), %r15 - 0x48, 0xf7, 0xd1, //0x00001181 notq %rcx - 0x48, 0x21, 0xcf, //0x00001184 andq %rcx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x00001187 jmp LBB0_196 - //0x0000118c LBB0_207 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000118c bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x00001190 testq %rsi, %rsi - 0x0f, 0x84, 0x72, 0x01, 0x00, 0x00, //0x00001193 je LBB0_230 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001199 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x0000119d cmpq %rcx, %rdx - 0x0f, 0x83, 0x73, 0x01, 0x00, 0x00, //0x000011a0 jae LBB0_231 - 0xe9, 0x8b, 0x2b, 0x00, 0x00, //0x000011a6 jmp LBB0_209 - //0x000011ab LBB0_210 - 0x4c, 0x01, 0xe9, //0x000011ab addq %r13, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x38, //0x000011ae addq $56(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x000011b3 vzeroupper - 0x49, 0x89, 0xcd, //0x000011b6 movq %rcx, %r13 - 0xe9, 0x3d, 0x04, 0x00, 0x00, //0x000011b9 jmp LBB0_279 - //0x000011be LBB0_211 - 0x4c, 0x29, 0xc9, //0x000011be subq %r9, %rcx - 0x0f, 0x84, 0x55, 0x2b, 0x00, 0x00, //0x000011c1 je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x000011c7 cmpq $64, %rcx - 0x0f, 0x82, 0x94, 0x19, 0x00, 0x00, //0x000011cb jb LBB0_513 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000011d1 movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x000011d8 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x000011db xorl %r11d, %r11d - 0x90, 0x90, //0x000011de .p2align 4, 0x90 - //0x000011e0 LBB0_214 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x000011e0 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x000011e6 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000011ed vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000011f1 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000011f5 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000011f9 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x000011fd vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001201 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00001205 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00001209 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000120d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001211 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00001216 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000121a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000121e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00001222 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00001225 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00001229 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000122d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001230 jne LBB0_225 - 0x4d, 0x85, 0xdb, //0x00001236 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00001239 jne LBB0_227 - 0x45, 0x31, 0xdb, //0x0000123f xorl %r11d, %r11d - //0x00001242 LBB0_217 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001242 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00001246 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000124b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000124f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00001253 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00001256 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001259 jne LBB0_228 - 0x48, 0x85, 0xf6, //0x0000125f testq %rsi, %rsi - 0x0f, 0x85, 0x4c, 0x29, 0x00, 0x00, //0x00001262 jne LBB0_699 - 0x48, 0x83, 0xc1, 0xc0, //0x00001268 addq $-64, %rcx - 0x49, 0x83, 0xc2, 0x40, //0x0000126c addq $64, %r10 - 0x48, 0x83, 0xf9, 0x3f, //0x00001270 cmpq $63, %rcx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001274 ja LBB0_214 - 0xe9, 0x4e, 0x16, 0x00, 0x00, //0x0000127a jmp LBB0_220 - //0x0000127f LBB0_225 - 0x49, 0x83, 0xff, 0xff, //0x0000127f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001283 jne LBB0_227 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001289 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000128d addq %r10, %r15 - //0x00001290 LBB0_227 - 0x4c, 0x89, 0x3c, 0x24, //0x00001290 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001294 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001297 notq %rax - 0x48, 0x21, 0xd0, //0x0000129a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000129d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x000012a0 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x000012a4 orq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x000012a7 movq %r10, %rbx - 0x48, 0xf7, 0xd3, //0x000012aa notq %rbx - 0x48, 0x21, 0xd3, //0x000012ad andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000012b0 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000012ba andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000012bd xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000012c0 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x000012c3 setb %r11b - 0x48, 0x01, 0xdb, //0x000012c7 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000012ca movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x000012d4 xorq %rax, %rbx - 0x4c, 0x21, 0xd3, //0x000012d7 andq %r10, %rbx - 0x4d, 0x89, 0xfa, //0x000012da movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x000012dd movq (%rsp), %r15 - 0x48, 0xf7, 0xd3, //0x000012e1 notq %rbx - 0x48, 0x21, 0xdf, //0x000012e4 andq %rbx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x000012e7 jmp LBB0_217 - //0x000012ec LBB0_228 - 0x48, 0x0f, 0xbc, 0xcf, //0x000012ec bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x000012f0 testq %rsi, %rsi - 0x0f, 0x84, 0x7e, 0x04, 0x00, 0x00, //0x000012f3 je LBB0_296 - 0x48, 0x0f, 0xbc, 0xd6, //0x000012f9 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x000012fd cmpq %rcx, %rdx - 0x0f, 0x83, 0x7f, 0x04, 0x00, 0x00, //0x00001300 jae LBB0_297 - 0xe9, 0x2b, 0x2a, 0x00, 0x00, //0x00001306 jmp LBB0_209 - //0x0000130b LBB0_230 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000130b movl $64, %edx - 0x48, 0x39, 0xca, //0x00001310 cmpq %rcx, %rdx - 0x0f, 0x82, 0x1d, 0x2a, 0x00, 0x00, //0x00001313 jb LBB0_209 - //0x00001319 LBB0_231 - 0x49, 0x01, 0xca, //0x00001319 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x0000131c addq $1, %r10 - //0x00001320 LBB0_232 - 0x4d, 0x85, 0xd2, //0x00001320 testq %r10, %r10 - 0x0f, 0x88, 0x1d, 0x28, 0x00, 0x00, //0x00001323 js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001329 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x0000132d testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001330 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001335 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000133a movq $8(%rsp), %r15 - 0x0f, 0x8f, 0x5b, 0xf0, 0xff, 0xff, //0x0000133f jg LBB0_3 - 0xe9, 0xef, 0x27, 0x00, 0x00, //0x00001345 jmp LBB0_463 - //0x0000134a LBB0_234 - 0x41, 0xf6, 0xc3, 0x40, //0x0000134a testb $64, %r11b - 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x0000134e jne LBB0_302 - 0x4d, 0x8b, 0x4d, 0x00, //0x00001354 movq (%r13), %r9 - 0x4c, 0x8b, 0x7f, 0x08, //0x00001358 movq $8(%rdi), %r15 - 0x4d, 0x89, 0xf8, //0x0000135c movq %r15, %r8 - 0x41, 0xf6, 0xc3, 0x20, //0x0000135f testb $32, %r11b - 0x0f, 0x85, 0x97, 0x0c, 0x00, 0x00, //0x00001363 jne LBB0_385 - 0x4d, 0x29, 0xc8, //0x00001369 subq %r9, %r8 - 0x0f, 0x84, 0xf1, 0x29, 0x00, 0x00, //0x0000136c je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00001372 cmpq $64, %r8 - 0x0f, 0x82, 0x48, 0x18, 0x00, 0x00, //0x00001376 jb LBB0_516 - 0x4c, 0x89, 0xce, //0x0000137c movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x0000137f notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00001382 movq $-1, %r11 - 0x4c, 0x89, 0xcf, //0x00001389 movq %r9, %rdi - 0x45, 0x31, 0xd2, //0x0000138c xorl %r10d, %r10d - 0x90, //0x0000138f .p2align 4, 0x90 - //0x00001390 LBB0_239 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x3e, //0x00001390 vmovdqu (%r14,%rdi), %ymm0 - 0x48, 0x89, 0xf9, //0x00001396 movq %rdi, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x3e, 0x20, //0x00001399 vmovdqu $32(%r14,%rdi), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000013a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000013a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000013a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000013ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000013b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000013b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000013b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x000013bc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x000013c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000013c4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x000013c7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x000013cb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000013ce jne LBB0_248 - 0x4d, 0x85, 0xd2, //0x000013d4 testq %r10, %r10 - 0x0f, 0x85, 0x48, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_250 - 0x45, 0x31, 0xd2, //0x000013dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000013e0 testq %rdi, %rdi - 0x0f, 0x85, 0x96, 0x00, 0x00, 0x00, //0x000013e3 jne LBB0_252 - //0x000013e9 LBB0_242 - 0x49, 0x83, 0xc0, 0xc0, //0x000013e9 addq $-64, %r8 - 0x48, 0x83, 0xc6, 0xc0, //0x000013ed addq $-64, %rsi - 0x48, 0x89, 0xcf, //0x000013f1 movq %rcx, %rdi - 0x48, 0x83, 0xc7, 0x40, //0x000013f4 addq $64, %rdi - 0x49, 0x83, 0xf8, 0x3f, //0x000013f8 cmpq $63, %r8 - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000013fc ja LBB0_239 - 0xe9, 0x99, 0x15, 0x00, 0x00, //0x00001402 jmp LBB0_243 - //0x00001407 LBB0_248 - 0x4c, 0x89, 0x1c, 0x24, //0x00001407 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x0000140b cmpq $-1, %r11 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000140f jne LBB0_251 - 0x48, 0x0f, 0xbc, 0xc2, //0x00001415 bsfq %rdx, %rax - 0x48, 0x01, 0xc8, //0x00001419 addq %rcx, %rax - 0x48, 0x89, 0x04, 0x24, //0x0000141c movq %rax, (%rsp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00001420 jmp LBB0_251 - //0x00001425 LBB0_250 - 0x4c, 0x89, 0x1c, 0x24, //0x00001425 movq %r11, (%rsp) - //0x00001429 LBB0_251 - 0x4c, 0x89, 0xd0, //0x00001429 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000142c notq %rax - 0x48, 0x21, 0xd0, //0x0000142f andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00001432 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00001436 orq %r10, %r11 - 0x4c, 0x89, 0xdb, //0x00001439 movq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000143c notq %rbx - 0x48, 0x21, 0xd3, //0x0000143f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001442 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x0000144c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x0000144f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00001452 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00001455 setb %r10b - 0x48, 0x01, 0xdb, //0x00001459 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000145c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00001466 xorq %rax, %rbx - 0x4c, 0x21, 0xdb, //0x00001469 andq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000146c notq %rbx - 0x48, 0x21, 0xdf, //0x0000146f andq %rbx, %rdi - 0x4c, 0x8b, 0x1c, 0x24, //0x00001472 movq (%rsp), %r11 - 0x48, 0x85, 0xff, //0x00001476 testq %rdi, %rdi - 0x0f, 0x84, 0x6a, 0xff, 0xff, 0xff, //0x00001479 je LBB0_242 - //0x0000147f LBB0_252 - 0xc5, 0x7d, 0x7f, 0xea, //0x0000147f vmovdqa %ymm13, %ymm2 - 0x48, 0x0f, 0xbc, 0xcf, //0x00001483 bsfq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00001487 subq %rsi, %rcx - 0xe9, 0x5f, 0x10, 0x00, 0x00, //0x0000148a jmp LBB0_461 - //0x0000148f LBB0_253 - 0x4c, 0x8b, 0x57, 0x08, //0x0000148f movq $8(%rdi), %r10 - 0x49, 0x8b, 0x4d, 0x00, //0x00001493 movq (%r13), %rcx - 0x41, 0xf6, 0xc3, 0x40, //0x00001497 testb $64, %r11b - 0x48, 0x89, 0x0c, 0x24, //0x0000149b movq %rcx, (%rsp) - 0x0f, 0x85, 0x0b, 0x04, 0x00, 0x00, //0x0000149f jne LBB0_313 - 0x49, 0x29, 0xca, //0x000014a5 subq %rcx, %r10 - 0x0f, 0x84, 0x3a, 0x28, 0x00, 0x00, //0x000014a8 je LBB0_704 - 0x49, 0x8d, 0x04, 0x0e, //0x000014ae leaq (%r14,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000014b2 movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000014b7 cmpb $48, (%rax) - 0x0f, 0x85, 0xab, 0x0c, 0x00, 0x00, //0x000014ba jne LBB0_406 - 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000014c0 movl $1, %r9d - 0x49, 0x83, 0xfa, 0x01, //0x000014c6 cmpq $1, %r10 - 0x0f, 0x85, 0x6c, 0x0c, 0x00, 0x00, //0x000014ca jne LBB0_404 - //0x000014d0 LBB0_257 - 0x48, 0x8b, 0x0c, 0x24, //0x000014d0 movq (%rsp), %rcx - 0xe9, 0xb0, 0x14, 0x00, 0x00, //0x000014d4 jmp LBB0_498 - //0x000014d9 LBB0_258 - 0x41, 0xf6, 0xc3, 0x40, //0x000014d9 testb $64, %r11b - 0x0f, 0x85, 0xe2, 0x04, 0x00, 0x00, //0x000014dd jne LBB0_329 - 0x49, 0x8b, 0x0f, //0x000014e3 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000014e6 cmpq $4095, %rcx - 0x0f, 0x8f, 0x2c, 0x26, 0x00, 0x00, //0x000014ed jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000014f3 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000014f7 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000014fa movq $5, $8(%r15,%rcx,8) - 0xe9, 0x98, 0xee, 0xff, 0xff, //0x00001503 jmp LBB0_3 - //0x00001508 LBB0_261 - 0x49, 0x8b, 0x4d, 0x00, //0x00001508 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x0000150c movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfc, //0x00001510 leaq $-4(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00001514 cmpq %rax, %rcx - 0x0f, 0x87, 0x8e, 0x26, 0x00, 0x00, //0x00001517 ja LBB0_686 - 0x41, 0x8b, 0x14, 0x0e, //0x0000151d movl (%r14,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001521 cmpl $1702063201, %edx - 0x0f, 0x85, 0xac, 0x26, 0x00, 0x00, //0x00001527 jne LBB0_687 - 0x48, 0x8d, 0x41, 0x04, //0x0000152d leaq $4(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00001531 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x00001535 testq %rcx, %rcx - 0x0f, 0x8f, 0x62, 0xee, 0xff, 0xff, //0x00001538 jg LBB0_3 - 0xe9, 0x98, 0x27, 0x00, 0x00, //0x0000153e jmp LBB0_264 - //0x00001543 LBB0_265 - 0x49, 0x8b, 0x4d, 0x00, //0x00001543 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001547 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x0000154b leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000154f cmpq %rax, %rcx - 0x0f, 0x87, 0x53, 0x26, 0x00, 0x00, //0x00001552 ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001558 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000155c cmpl $1819047278, $-1(%r14,%rcx) - 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00001565 je LBB0_273 - 0xe9, 0xc3, 0x26, 0x00, 0x00, //0x0000156b jmp LBB0_267 - //0x00001570 LBB0_271 - 0x49, 0x8b, 0x4d, 0x00, //0x00001570 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001574 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00001578 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000157c cmpq %rax, %rcx - 0x0f, 0x87, 0x26, 0x26, 0x00, 0x00, //0x0000157f ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001585 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001589 cmpl $1702195828, $-1(%r14,%rcx) - 0x0f, 0x85, 0xe6, 0x26, 0x00, 0x00, //0x00001592 jne LBB0_692 - //0x00001598 LBB0_273 - 0x48, 0x89, 0x04, 0x24, //0x00001598 movq %rax, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x0000159c leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x000015a0 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x000015a4 testq %rcx, %rcx - 0x0f, 0x8f, 0xf3, 0xed, 0xff, 0xff, //0x000015a7 jg LBB0_3 - 0xe9, 0xe3, 0x25, 0x00, 0x00, //0x000015ad jmp LBB0_711 - //0x000015b2 LBB0_274 - 0x41, 0xf6, 0xc3, 0x40, //0x000015b2 testb $64, %r11b - 0x0f, 0x85, 0xfb, 0x06, 0x00, 0x00, //0x000015b6 jne LBB0_355 - 0x49, 0x8b, 0x0f, //0x000015bc movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015bf cmpq $4095, %rcx - 0x0f, 0x8f, 0x53, 0x25, 0x00, 0x00, //0x000015c6 jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000015cc leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000015d0 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000015d3 movq $6, $8(%r15,%rcx,8) - 0xe9, 0xbf, 0xed, 0xff, 0xff, //0x000015dc jmp LBB0_3 - //0x000015e1 LBB0_277 - 0x89, 0xc8, //0x000015e1 movl %ecx, %eax - 0x49, 0x01, 0xc5, //0x000015e3 addq %rax, %r13 - 0x4d, 0x01, 0xfd, //0x000015e6 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000015e9 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000015ee movq $16(%rsp), %rdi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000015f3 jmp LBB0_279 - //0x000015f8 LBB0_278 - 0x49, 0x01, 0xcd, //0x000015f8 addq %rcx, %r13 - //0x000015fb LBB0_279 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000015fb movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001602 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001607 testq %rdx, %rdx - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000160a movq $8(%rsp), %r15 - 0x0f, 0x84, 0x66, 0x25, 0x00, 0x00, //0x0000160f je LBB0_684 - 0x4d, 0x85, 0xd2, //0x00001615 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x1d, 0xa0, 0xeb, 0xff, 0xff, //0x00001618 vmovdqu $-5216(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x84, 0x55, 0x25, 0x00, 0x00, //0x00001620 je LBB0_684 - 0x4d, 0x85, 0xc9, //0x00001626 testq %r9, %r9 - 0x0f, 0x84, 0x4c, 0x25, 0x00, 0x00, //0x00001629 je LBB0_684 - 0x4c, 0x2b, 0x6c, 0x24, 0x38, //0x0000162f subq $56(%rsp), %r13 - 0x49, 0x8d, 0x4d, 0xff, //0x00001634 leaq $-1(%r13), %rcx - 0x48, 0x39, 0xca, //0x00001638 cmpq %rcx, %rdx - 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000163b je LBB0_288 - 0x49, 0x39, 0xca, //0x00001641 cmpq %rcx, %r10 - 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001644 je LBB0_288 - 0x49, 0x39, 0xc9, //0x0000164a cmpq %rcx, %r9 - 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x0000164d je LBB0_288 - 0x4d, 0x85, 0xd2, //0x00001653 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x2d, 0x62, 0xea, 0xff, 0xff, //0x00001656 vmovdqu $-5534(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x7a, 0xea, 0xff, 0xff, //0x0000165e vmovdqu $-5510(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x92, 0xea, 0xff, 0xff, //0x00001666 vmovdqu $-5486(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xaa, 0xea, 0xff, 0xff, //0x0000166e vmovdqu $-5462(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001676 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x7d, 0xeb, 0xff, 0xff, //0x0000167b vmovdqu $-5251(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x95, 0xeb, 0xff, 0xff, //0x00001683 vmovdqu $-5227(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xad, 0xeb, 0xff, 0xff, //0x0000168b vmovdqu $-5203(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x45, 0xeb, 0xff, 0xff, //0x00001693 vmovdqu $-5307(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xeb, 0xff, 0xff, //0x0000169b vmovdqu $-5123(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x8e, 0x9b, 0x00, 0x00, 0x00, //0x000016a3 jle LBB0_293 - 0x49, 0x8d, 0x42, 0xff, //0x000016a9 leaq $-1(%r10), %rax - 0x49, 0x39, 0xc1, //0x000016ad cmpq %rax, %r9 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000016b0 je LBB0_293 - 0x49, 0xf7, 0xd2, //0x000016b6 notq %r10 - 0x4d, 0x89, 0xd5, //0x000016b9 movq %r10, %r13 - 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000016bc jmp LBB0_289 - //0x000016c1 LBB0_288 - 0x49, 0xf7, 0xdd, //0x000016c1 negq %r13 - 0xc5, 0xfe, 0x6f, 0x2d, 0xf4, 0xe9, 0xff, 0xff, //0x000016c4 vmovdqu $-5644(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xea, 0xff, 0xff, //0x000016cc vmovdqu $-5620(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x24, 0xea, 0xff, 0xff, //0x000016d4 vmovdqu $-5596(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x3c, 0xea, 0xff, 0xff, //0x000016dc vmovdqu $-5572(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000016e4 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x0f, 0xeb, 0xff, 0xff, //0x000016e9 vmovdqu $-5361(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x27, 0xeb, 0xff, 0xff, //0x000016f1 vmovdqu $-5337(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x3f, 0xeb, 0xff, 0xff, //0x000016f9 vmovdqu $-5313(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xd7, 0xea, 0xff, 0xff, //0x00001701 vmovdqu $-5417(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x8f, 0xeb, 0xff, 0xff, //0x00001709 vmovdqu $-5233(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - //0x00001711 LBB0_289 - 0xc5, 0x7e, 0x6f, 0x1d, 0x27, 0xea, 0xff, 0xff, //0x00001711 vmovdqu $-5593(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x3f, 0xea, 0xff, 0xff, //0x00001719 vmovdqu $-5569(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - //0x00001721 LBB0_290 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00001721 movq $32(%rsp), %rbx - //0x00001726 LBB0_291 - 0x4d, 0x85, 0xed, //0x00001726 testq %r13, %r13 - 0x0f, 0x88, 0x49, 0x24, 0x00, 0x00, //0x00001729 js LBB0_683 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x0000172f movq $48(%rsp), %rax - 0x48, 0x8b, 0x08, //0x00001734 movq (%rax), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x00001737 addq $-1, %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x0000173b vmovdqa %ymm0, %ymm13 - 0xe9, 0x74, 0xec, 0xff, 0xff, //0x0000173f jmp LBB0_2 - //0x00001744 LBB0_293 - 0x48, 0x89, 0xd0, //0x00001744 movq %rdx, %rax - 0x4c, 0x09, 0xc8, //0x00001747 orq %r9, %rax - 0x0f, 0x99, 0xc1, //0x0000174a setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0xeb, 0xe9, 0xff, 0xff, //0x0000174d vmovdqu $-5653(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x03, 0xea, 0xff, 0xff, //0x00001755 vmovdqu $-5629(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0x84, 0x08, 0x00, 0x00, //0x0000175d js LBB0_384 - 0x4c, 0x39, 0xca, //0x00001763 cmpq %r9, %rdx - 0x0f, 0x8c, 0x7b, 0x08, 0x00, 0x00, //0x00001766 jl LBB0_384 - 0x48, 0xf7, 0xd2, //0x0000176c notq %rdx - 0x49, 0x89, 0xd5, //0x0000176f movq %rdx, %r13 - 0xe9, 0xaa, 0xff, 0xff, 0xff, //0x00001772 jmp LBB0_290 - //0x00001777 LBB0_296 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001777 movl $64, %edx - 0x48, 0x39, 0xca, //0x0000177c cmpq %rcx, %rdx - 0x0f, 0x82, 0xb1, 0x25, 0x00, 0x00, //0x0000177f jb LBB0_209 - //0x00001785 LBB0_297 - 0x49, 0x01, 0xca, //0x00001785 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001788 addq $1, %r10 - //0x0000178c LBB0_298 - 0x4d, 0x85, 0xd2, //0x0000178c testq %r10, %r10 - 0x0f, 0x88, 0xb1, 0x23, 0x00, 0x00, //0x0000178f js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001795 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x00001799 testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000179c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000017a1 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000017a6 movq $8(%rsp), %r15 - 0x0f, 0x8e, 0x88, 0x23, 0x00, 0x00, //0x000017ab jle LBB0_463 - //0x000017b1 LBB0_300 - 0x49, 0x8b, 0x0f, //0x000017b1 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000017b4 cmpq $4095, %rcx - 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000017bb jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000017c1 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000017c5 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000017c8 movq $4, $8(%r15,%rcx,8) - 0xe9, 0xca, 0xeb, 0xff, 0xff, //0x000017d1 jmp LBB0_3 - //0x000017d6 LBB0_302 - 0x4c, 0x8b, 0x57, 0x08, //0x000017d6 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x000017da movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x000017de leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x000017e2 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x000017e5 cmpq $32, %r10 - 0x0f, 0x8c, 0xa4, 0x00, 0x00, 0x00, //0x000017e9 jl LBB0_312 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x000017ef movl $32, %ecx - 0x31, 0xf6, //0x000017f4 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x000017f6 xorl %r15d, %r15d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000017f9 .p2align 4, 0x90 - //0x00001800 LBB0_304 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001800 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001806 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x0000180a vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x0000180e vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001812 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00001816 testl %ebx, %ebx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001818 jne LBB0_307 - 0x4d, 0x85, 0xff, //0x0000181e testq %r15, %r15 - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001821 jne LBB0_307 - 0x45, 0x31, 0xff, //0x00001827 xorl %r15d, %r15d - 0xe9, 0x32, 0x00, 0x00, 0x00, //0x0000182a jmp LBB0_308 - 0x90, //0x0000182f .p2align 4, 0x90 - //0x00001830 LBB0_307 - 0x44, 0x89, 0xf8, //0x00001830 movl %r15d, %eax - 0xf7, 0xd0, //0x00001833 notl %eax - 0x21, 0xd8, //0x00001835 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00001837 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x0000183a orl %r15d, %edx - 0x89, 0xd7, //0x0000183d movl %edx, %edi - 0xf7, 0xd7, //0x0000183f notl %edi - 0x21, 0xdf, //0x00001841 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001843 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00001849 xorl %r15d, %r15d - 0x01, 0xc7, //0x0000184c addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x0000184e setb %r15b - 0x01, 0xff, //0x00001852 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001854 xorl $1431655765, %edi - 0x21, 0xd7, //0x0000185a andl %edx, %edi - 0xf7, 0xd7, //0x0000185c notl %edi - 0x41, 0x21, 0xfb, //0x0000185e andl %edi, %r11d - //0x00001861 LBB0_308 - 0x4d, 0x85, 0xdb, //0x00001861 testq %r11, %r11 - 0x0f, 0x85, 0xff, 0xea, 0xff, 0xff, //0x00001864 jne LBB0_153 - 0x48, 0x83, 0xc6, 0x20, //0x0000186a addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x0000186e leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00001872 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00001876 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x0000187a cmpq $63, %rax - 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x0000187e jg LBB0_304 - 0x4d, 0x85, 0xff, //0x00001884 testq %r15, %r15 - 0x0f, 0x85, 0xd7, 0x1d, 0x00, 0x00, //0x00001887 jne LBB0_622 - 0x49, 0x01, 0xf1, //0x0000188d addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00001890 subq %rsi, %r10 - //0x00001893 LBB0_312 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001893 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001898 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000189d movq $8(%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000018a2 testq %r10, %r10 - 0x0f, 0x8f, 0x32, 0x1e, 0x00, 0x00, //0x000018a5 jg LBB0_626 - 0xe9, 0xe5, 0x22, 0x00, 0x00, //0x000018ab jmp LBB0_711 - //0x000018b0 LBB0_313 - 0x4c, 0x89, 0xd6, //0x000018b0 movq %r10, %rsi - 0x48, 0x29, 0xce, //0x000018b3 subq %rcx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x000018b6 cmpq $32, %rsi - 0x0f, 0x82, 0xc2, 0x12, 0x00, 0x00, //0x000018ba jb LBB0_514 - 0x48, 0x89, 0xca, //0x000018c0 movq %rcx, %rdx - 0x48, 0xf7, 0xda, //0x000018c3 negq %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018c6 .p2align 4, 0x90 - //0x000018d0 LBB0_315 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x000018d0 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x000018d6 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x000018da vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0xba, 0xe8, 0xff, 0xff, //0x000018de vpcmpeqb $-5958(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x000018e6 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000018ea vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000018ee testl %esi, %esi - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x000018f0 jne LBB0_382 - 0x48, 0x83, 0xc1, 0x20, //0x000018f6 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x12, //0x000018fa leaq (%r10,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x000018fe addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00001902 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00001906 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000190a ja LBB0_315 - 0x4c, 0x89, 0xf1, //0x00001910 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00001913 subq %rdx, %rcx - 0x49, 0x01, 0xd2, //0x00001916 addq %rdx, %r10 - 0x4c, 0x89, 0xd6, //0x00001919 movq %r10, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x0000191c cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00001920 movq (%rsp), %rbx - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00001924 jb LBB0_321 - //0x0000192a LBB0_318 - 0x4c, 0x89, 0xf2, //0x0000192a movq %r14, %rdx - 0x48, 0x29, 0xca, //0x0000192d subq %rcx, %rdx - //0x00001930 LBB0_319 - 0xc5, 0xfa, 0x6f, 0x01, //0x00001930 vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0xd4, 0xe6, 0xff, 0xff, //0x00001934 vpcmpeqb $-6444(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0xdc, 0xe6, 0xff, 0xff, //0x0000193c vpand $-6436(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0xe4, 0xe6, 0xff, 0xff, //0x00001944 vpcmpeqb $-6428(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x0000194c vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00001950 vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00001954 testl %eax, %eax - 0x0f, 0x85, 0xe5, 0x0f, 0x00, 0x00, //0x00001956 jne LBB0_697 - 0x48, 0x83, 0xc1, 0x10, //0x0000195c addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00001960 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001964 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001968 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x0000196c ja LBB0_319 - //0x00001972 LBB0_321 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00001972 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00001976 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000197a vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x0000197f testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00001982 je LBB0_328 - 0x48, 0x8d, 0x3c, 0x31, //0x00001988 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x0000198c xorl %edx, %edx - //0x0000198e LBB0_323 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000198e movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00001992 cmpb $44, %bl - 0x0f, 0x84, 0x85, 0x12, 0x00, 0x00, //0x00001995 je LBB0_520 - 0x80, 0xfb, 0x7d, //0x0000199b cmpb $125, %bl - 0x0f, 0x84, 0x7c, 0x12, 0x00, 0x00, //0x0000199e je LBB0_520 - 0x80, 0xfb, 0x5d, //0x000019a4 cmpb $93, %bl - 0x0f, 0x84, 0x73, 0x12, 0x00, 0x00, //0x000019a7 je LBB0_520 - 0x48, 0x83, 0xc2, 0x01, //0x000019ad addq $1, %rdx - 0x48, 0x39, 0xd6, //0x000019b1 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x000019b4 jne LBB0_323 - 0x48, 0x89, 0xf9, //0x000019ba movq %rdi, %rcx - //0x000019bd LBB0_328 - 0x4c, 0x29, 0xf1, //0x000019bd subq %r14, %rcx - 0xe9, 0x61, 0x12, 0x00, 0x00, //0x000019c0 jmp LBB0_521 - //0x000019c5 LBB0_329 - 0x4c, 0x8b, 0x4f, 0x08, //0x000019c5 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x000019c9 movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x000019cd subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x000019d0 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x000019d3 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x000019d6 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x000019d9 xorl %r15d, %r15d - 0x31, 0xdb, //0x000019dc xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000019de jmp LBB0_331 - //0x000019e3 LBB0_330 - 0x48, 0xc1, 0xff, 0x3f, //0x000019e3 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x000019e7 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x000019ec addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x000019ef addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x000019f3 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x000019f7 movq %rdi, %r11 - //0x000019fa LBB0_331 - 0x49, 0x83, 0xf9, 0x40, //0x000019fa cmpq $64, %r9 - 0x0f, 0x8c, 0x59, 0x01, 0x00, 0x00, //0x000019fe jl LBB0_339 - //0x00001a04 LBB0_332 - 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001a04 vmovdqa %ymm13, %ymm15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001a09 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001a0e vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001a14 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001a18 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001a1c vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a20 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a24 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001a28 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001a2b movq %rdx, %rax - 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001a2e vmovdqa %ymm10, %ymm13 - 0x4c, 0x09, 0xd0, //0x00001a33 orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a36 jne LBB0_334 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a3c movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a46 jmp LBB0_335 - //0x00001a4b LBB0_334 - 0x4c, 0x89, 0xd0, //0x00001a4b movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001a4e notq %rax - 0x48, 0x21, 0xd0, //0x00001a51 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001a54 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001a58 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001a5b movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001a5e notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a61 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001a6b andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001a6e andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001a71 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001a74 addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a77 setb %r10b - 0x48, 0x01, 0xd2, //0x00001a7b addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a7e movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001a88 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001a8b andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001a8e notq %rdx - //0x00001a91 LBB0_335 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001a91 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a95 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a99 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001a9d vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001aa1 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001aa5 orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001aa8 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001aab vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xe6, 0xe5, 0xff, 0xff, 0x00, //0x00001ab0 vpclmulqdq $0, $-6682(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001aba vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001abf xorq %r11, %rdi - 0xc5, 0x7e, 0x6f, 0x15, 0xb6, 0xe6, 0xff, 0xff, //0x00001ac2 vmovdqu $-6474(%rip), %ymm10 /* LCPI0_7+0(%rip) */ - 0xc5, 0xad, 0x74, 0xd1, //0x00001aca vpcmpeqb %ymm1, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001ace vpmovmskb %ymm2, %esi - 0xc5, 0xad, 0x74, 0xd0, //0x00001ad2 vpcmpeqb %ymm0, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001ad6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001ada shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001ade orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001ae1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001ae4 notq %rax - 0x48, 0x21, 0xc6, //0x00001ae7 andq %rax, %rsi - 0xc5, 0xfe, 0x6f, 0x15, 0xae, 0xe6, 0xff, 0xff, //0x00001aea vmovdqu $-6482(%rip), %ymm2 /* LCPI0_8+0(%rip) */ - 0xc5, 0xf5, 0x74, 0xca, //0x00001af2 vpcmpeqb %ymm2, %ymm1, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001af6 vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc2, //0x00001afa vpcmpeqb %ymm2, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001afe vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001b02 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001b06 orq %rcx, %rdx - 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001b09 vmovdqa %ymm13, %ymm10 - 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001b0e vmovdqa %ymm15, %ymm13 - 0x48, 0x21, 0xc2, //0x00001b13 andq %rax, %rdx - 0x0f, 0x84, 0xc7, 0xfe, 0xff, 0xff, //0x00001b16 je LBB0_330 - 0xc5, 0x7e, 0x6f, 0x3d, 0x1c, 0xe7, 0xff, 0xff, //0x00001b1c vmovdqu $-6372(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001b24 .p2align 4, 0x90 - //0x00001b30 LBB0_337 - 0x48, 0x8d, 0x4a, 0xff, //0x00001b30 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001b34 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001b37 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001b3a popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001b3f addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001b42 cmpq %rbx, %rax - 0x0f, 0x86, 0x38, 0x04, 0x00, 0x00, //0x00001b45 jbe LBB0_380 - 0x48, 0x83, 0xc3, 0x01, //0x00001b4b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001b4f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001b52 jne LBB0_337 - 0xe9, 0x86, 0xfe, 0xff, 0xff, //0x00001b58 jmp LBB0_330 - //0x00001b5d LBB0_339 - 0x4d, 0x85, 0xc9, //0x00001b5d testq %r9, %r9 - 0x0f, 0x8e, 0x17, 0x22, 0x00, 0x00, //0x00001b60 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b66 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b6a vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001b6f vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b73 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b79 vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001b7f movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001b82 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001b87 cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b8c jb LBB0_343 - 0x49, 0x83, 0xf9, 0x20, //0x00001b92 cmpq $32, %r9 - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001b96 jb LBB0_344 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001b9c vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001ba1 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001ba7 addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001bab leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001baf leaq $96(%rsp), %rsi - 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bb4 jmp LBB0_345 - //0x00001bb9 LBB0_343 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bb9 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bbe vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xd5, 0xe6, 0xff, 0xff, //0x00001bc3 vmovdqu $-6443(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xed, 0xe5, 0xff, 0xff, //0x00001bcb vmovdqu $-6675(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001bd3 vmovdqa %ymm1, %ymm11 - 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00001bd7 jmp LBB0_332 - //0x00001bdc LBB0_344 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bdc leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001be1 movq %r9, %rdi - //0x00001be4 LBB0_345 - 0x48, 0x83, 0xff, 0x10, //0x00001be4 cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001be8 jb LBB0_346 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bee vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001bf3 vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001bf7 addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001bfb addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001bff addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001c03 cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c07 jae LBB0_353 - //0x00001c0d LBB0_347 - 0x48, 0x83, 0xff, 0x04, //0x00001c0d cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c11 jl LBB0_348 - //0x00001c17 LBB0_354 - 0x41, 0x8b, 0x06, //0x00001c17 movl (%r14), %eax - 0x89, 0x06, //0x00001c1a movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001c1c addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001c20 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001c24 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001c28 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c2c jae LBB0_349 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_350 - //0x00001c37 LBB0_346 - 0x48, 0x83, 0xff, 0x08, //0x00001c37 cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c3b jb LBB0_347 - //0x00001c41 LBB0_353 - 0x49, 0x8b, 0x06, //0x00001c41 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001c44 movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001c47 addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001c4b addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001c4f addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001c53 cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c57 jge LBB0_354 - //0x00001c5d LBB0_348 - 0x48, 0x83, 0xff, 0x02, //0x00001c5d cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c61 jb LBB0_350 - //0x00001c67 LBB0_349 - 0x41, 0x0f, 0xb7, 0x06, //0x00001c67 movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001c6b movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001c6e addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001c72 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001c76 addq $-2, %rdi - //0x00001c7a LBB0_350 - 0x4c, 0x89, 0xf2, //0x00001c7a movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c7d leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001c82 testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c85 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c8a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xe6, 0xff, 0xff, //0x00001c8f vmovdqu $-6647(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x21, 0xe5, 0xff, 0xff, //0x00001c97 vmovdqu $-6879(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001c9f vmovdqa %ymm1, %ymm11 - 0x0f, 0x84, 0x5b, 0xfd, 0xff, 0xff, //0x00001ca3 je LBB0_332 - 0x8a, 0x02, //0x00001ca9 movb (%rdx), %al - 0x88, 0x06, //0x00001cab movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cad leaq $64(%rsp), %r14 - 0xe9, 0x4d, 0xfd, 0xff, 0xff, //0x00001cb2 jmp LBB0_332 - //0x00001cb7 LBB0_355 - 0x4c, 0x8b, 0x4f, 0x08, //0x00001cb7 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x00001cbb movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x00001cbf subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x00001cc2 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x00001cc5 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x00001cc8 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x00001ccb xorl %r15d, %r15d - 0x31, 0xdb, //0x00001cce xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001cd0 jmp LBB0_357 - //0x00001cd5 LBB0_356 - 0x48, 0xc1, 0xff, 0x3f, //0x00001cd5 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x00001cd9 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x00001cde addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x00001ce1 addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x00001ce5 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x00001ce9 movq %rdi, %r11 - //0x00001cec LBB0_357 - 0x49, 0x83, 0xf9, 0x40, //0x00001cec cmpq $64, %r9 - 0x0f, 0x8c, 0x27, 0x01, 0x00, 0x00, //0x00001cf0 jl LBB0_364 - //0x00001cf6 LBB0_358 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cf6 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001cfb vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001d01 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001d05 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001d09 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d0d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d11 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001d15 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001d18 movq %rdx, %rax - 0x4c, 0x09, 0xd0, //0x00001d1b orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001d1e jne LBB0_360 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001d24 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001d2b xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d2e jmp LBB0_361 - //0x00001d33 LBB0_360 - 0x4c, 0x89, 0xd0, //0x00001d33 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001d36 notq %rax - 0x48, 0x21, 0xd0, //0x00001d39 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001d3c leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001d40 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001d43 movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001d46 notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d49 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001d53 andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001d56 andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001d59 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001d5c addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001d5f setb %r10b - 0x48, 0x01, 0xd2, //0x00001d63 addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d66 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001d70 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001d73 andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001d76 notq %rdx - //0x00001d79 LBB0_361 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001d79 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d7d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d81 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001d85 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001d89 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001d8d orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001d90 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001d93 vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xfe, 0xe2, 0xff, 0xff, 0x00, //0x00001d98 vpclmulqdq $0, $-7426(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001da2 vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001da7 xorq %r11, %rdi - 0xc5, 0xa5, 0x74, 0xd1, //0x00001daa vpcmpeqb %ymm1, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001dae vpmovmskb %ymm2, %esi - 0xc5, 0xa5, 0x74, 0xd0, //0x00001db2 vpcmpeqb %ymm0, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001db6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001dba shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001dbe orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001dc1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001dc4 notq %rax - 0x48, 0x21, 0xc6, //0x00001dc7 andq %rax, %rsi - 0xc5, 0x9d, 0x74, 0xc9, //0x00001dca vpcmpeqb %ymm1, %ymm12, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001dce vpmovmskb %ymm1, %edx - 0xc5, 0x9d, 0x74, 0xc0, //0x00001dd2 vpcmpeqb %ymm0, %ymm12, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001dd6 vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001dda shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001dde orq %rcx, %rdx - 0x48, 0x21, 0xc2, //0x00001de1 andq %rax, %rdx - 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001de4 je LBB0_356 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_362 - 0x48, 0x8d, 0x4a, 0xff, //0x00001df0 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001df4 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001df7 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001dfa popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001dff addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001e02 cmpq %rbx, %rax - 0x0f, 0x86, 0x78, 0x01, 0x00, 0x00, //0x00001e05 jbe LBB0_380 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x000003a0 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x00, //0x000003a5 movq (%rax), %r8 + 0x4c, 0x89, 0xe0, //0x000003a8 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x000003ab testq %r8, %r8 + 0x0f, 0x85, 0x4c, 0x00, 0x00, 0x00, //0x000003ae jne LBB0_5 + 0xe9, 0x5c, 0x39, 0x00, 0x00, //0x000003b4 jmp LBB0_728 + //0x000003b9 LBB0_1 + 0x4d, 0x29, 0xf0, //0x000003b9 subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000003bc movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x000003c1 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x000003c4 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000003c8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000003cd vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc6, 0xfe, 0xff, 0xff, //0x000003d2 vmovdqu $-314(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xde, 0xfd, 0xff, 0xff, //0x000003da vmovdqu $-546(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000003e2 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000003e6 vmovdqa %ymm1, %ymm12 + //0x000003ea LBB0_2 + 0x4d, 0x85, 0xed, //0x000003ea testq %r13, %r13 + 0x0f, 0x8f, 0xad, 0xff, 0xff, 0xff, //0x000003ed jg LBB0_3 + 0xe9, 0xee, 0x38, 0x00, 0x00, //0x000003f3 jmp LBB0_705 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003f8 .p2align 4, 0x90 + //0x00000400 LBB0_5 + 0x4c, 0x89, 0xe1, //0x00000400 movq %r12, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000403 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x30, //0x00000408 movq (%rax), %r14 + 0x48, 0x8b, 0x78, 0x08, //0x0000040b movq $8(%rax), %rdi + 0x49, 0x8b, 0x17, //0x0000040f movq (%r15), %rdx + 0x48, 0x39, 0xfa, //0x00000412 cmpq %rdi, %rdx + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000415 jae LBB0_10 + 0x41, 0x8a, 0x04, 0x16, //0x0000041b movb (%r14,%rdx), %al + 0x3c, 0x0d, //0x0000041f cmpb $13, %al + 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x00000421 je LBB0_10 + 0x3c, 0x20, //0x00000427 cmpb $32, %al + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000429 je LBB0_10 + 0x04, 0xf7, //0x0000042f addb $-9, %al + 0x3c, 0x01, //0x00000431 cmpb $1, %al + 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000433 jbe LBB0_10 + 0x49, 0x89, 0xd4, //0x00000439 movq %rdx, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000043c movq $24(%rsp), %r10 + 0xe9, 0x8c, 0x01, 0x00, 0x00, //0x00000441 jmp LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000446 .p2align 4, 0x90 + //0x00000450 LBB0_10 + 0x4c, 0x8d, 0x62, 0x01, //0x00000450 leaq $1(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000454 cmpq %rdi, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000457 movq $24(%rsp), %r10 + 0x0f, 0x83, 0x2e, 0x00, 0x00, 0x00, //0x0000045c jae LBB0_14 + 0x43, 0x8a, 0x1c, 0x26, //0x00000462 movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x00000466 cmpb $13, %bl + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000469 je LBB0_14 + 0x80, 0xfb, 0x20, //0x0000046f cmpb $32, %bl + 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x00000472 je LBB0_14 + 0x80, 0xc3, 0xf7, //0x00000478 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x0000047b cmpb $1, %bl + 0x0f, 0x87, 0x4e, 0x01, 0x00, 0x00, //0x0000047e ja LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000484 .p2align 4, 0x90 + //0x00000490 LBB0_14 + 0x4c, 0x8d, 0x62, 0x02, //0x00000490 leaq $2(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000494 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000497 jae LBB0_18 + 0x43, 0x8a, 0x1c, 0x26, //0x0000049d movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004a4 je LBB0_18 + 0x80, 0xfb, 0x20, //0x000004aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004ad je LBB0_18 + 0x80, 0xc3, 0xf7, //0x000004b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004b6 cmpb $1, %bl + 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x000004b9 ja LBB0_35 + 0x90, //0x000004bf .p2align 4, 0x90 + //0x000004c0 LBB0_18 + 0x4c, 0x8d, 0x62, 0x03, //0x000004c0 leaq $3(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x000004c4 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000004c7 jae LBB0_22 + 0x43, 0x8a, 0x1c, 0x26, //0x000004cd movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004d1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004d4 je LBB0_22 + 0x80, 0xfb, 0x20, //0x000004da cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004dd je LBB0_22 + 0x80, 0xc3, 0xf7, //0x000004e3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004e6 cmpb $1, %bl + 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004e9 ja LBB0_35 + 0x90, //0x000004ef .p2align 4, 0x90 + //0x000004f0 LBB0_22 + 0x4c, 0x8d, 0x62, 0x04, //0x000004f0 leaq $4(%rdx), %r12 + 0x48, 0x89, 0xfe, //0x000004f4 movq %rdi, %rsi + 0x4c, 0x29, 0xe6, //0x000004f7 subq %r12, %rsi + 0x0f, 0x86, 0x9a, 0x37, 0x00, 0x00, //0x000004fa jbe LBB0_697 + 0x48, 0x83, 0xfe, 0x20, //0x00000500 cmpq $32, %rsi + 0x0f, 0x82, 0x3e, 0x25, 0x00, 0x00, //0x00000504 jb LBB0_504 + 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x0000050a movq $-4, %rsi + 0x48, 0x29, 0xd6, //0x00000511 subq %rdx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000514 .p2align 4, 0x90 + //0x00000520 LBB0_25 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x00000520 vmovdqu (%r14,%r12), %ymm0 + 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00000526 vpshufb %ymm0, %ymm5, %ymm1 + 0xc5, 0xfd, 0x74, 0xc1, //0x0000052b vpcmpeqb %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x0000052f vpmovmskb %ymm0, %edx + 0x83, 0xfa, 0xff, //0x00000533 cmpl $-1, %edx + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000536 jne LBB0_34 + 0x49, 0x83, 0xc4, 0x20, //0x0000053c addq $32, %r12 + 0x48, 0x8d, 0x04, 0x37, //0x00000540 leaq (%rdi,%rsi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000544 addq $-32, %rax + 0x48, 0x83, 0xc6, 0xe0, //0x00000548 addq $-32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x0000054c cmpq $31, %rax + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000550 ja LBB0_25 + 0x4d, 0x89, 0xf4, //0x00000556 movq %r14, %r12 + 0x49, 0x29, 0xf4, //0x00000559 subq %rsi, %r12 + 0x48, 0x01, 0xfe, //0x0000055c addq %rdi, %rsi + 0x48, 0x85, 0xf6, //0x0000055f testq %rsi, %rsi + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000562 je LBB0_33 + //0x00000568 LBB0_28 + 0x4d, 0x8d, 0x04, 0x34, //0x00000568 leaq (%r12,%rsi), %r8 + 0x31, 0xd2, //0x0000056c xorl %edx, %edx + 0x90, 0x90, //0x0000056e .p2align 4, 0x90 + //0x00000570 LBB0_29 + 0x41, 0x0f, 0xbe, 0x04, 0x14, //0x00000570 movsbl (%r12,%rdx), %eax + 0x83, 0xf8, 0x20, //0x00000575 cmpl $32, %eax + 0x0f, 0x87, 0x23, 0x21, 0x00, 0x00, //0x00000578 ja LBB0_468 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000057e movabsq $4294977024, %rbx + 0x48, 0x0f, 0xa3, 0xc3, //0x00000588 btq %rax, %rbx + 0x0f, 0x83, 0x0f, 0x21, 0x00, 0x00, //0x0000058c jae LBB0_468 + 0x48, 0x83, 0xc2, 0x01, //0x00000592 addq $1, %rdx + 0x48, 0x39, 0xd6, //0x00000596 cmpq %rdx, %rsi + 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000599 jne LBB0_29 + 0x4d, 0x89, 0xc4, //0x0000059f movq %r8, %r12 + //0x000005a2 LBB0_33 + 0x4d, 0x29, 0xf4, //0x000005a2 subq %r14, %r12 + 0x49, 0x39, 0xfc, //0x000005a5 cmpq %rdi, %r12 + 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x000005a8 jb LBB0_35 + 0xe9, 0xea, 0x36, 0x00, 0x00, //0x000005ae jmp LBB0_698 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000005b3 .p2align 4, 0x90 + //0x000005c0 LBB0_34 + 0xf7, 0xd2, //0x000005c0 notl %edx + 0x44, 0x0f, 0xbc, 0xe2, //0x000005c2 bsfl %edx, %r12d + 0x49, 0x29, 0xf4, //0x000005c6 subq %rsi, %r12 + 0x49, 0x39, 0xfc, //0x000005c9 cmpq %rdi, %r12 + 0x0f, 0x83, 0xcb, 0x36, 0x00, 0x00, //0x000005cc jae LBB0_698 + //0x000005d2 LBB0_35 + 0x49, 0x8d, 0x44, 0x24, 0x01, //0x000005d2 leaq $1(%r12), %rax + 0x49, 0x89, 0x07, //0x000005d7 movq %rax, (%r15) + 0x43, 0x0f, 0xbe, 0x3c, 0x26, //0x000005da movsbl (%r14,%r12), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000005df movq $-1, %rax + 0x85, 0xff, //0x000005e6 testl %edi, %edi + 0x0f, 0x84, 0x27, 0x37, 0x00, 0x00, //0x000005e8 je LBB0_728 + 0x49, 0x8b, 0x32, //0x000005ee movq (%r10), %rsi + 0x4c, 0x8d, 0x46, 0xff, //0x000005f1 leaq $-1(%rsi), %r8 + 0x41, 0x8b, 0x1c, 0xf2, //0x000005f5 movl (%r10,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x000005f9 cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xe1, //0x000005fd cmovneq %rcx, %r12 + 0x83, 0xc3, 0xff, //0x00000601 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x00000604 cmpl $5, %ebx + 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x00000607 ja LBB0_41 + 0x48, 0x8d, 0x15, 0xc4, 0x38, 0x00, 0x00, //0x0000060d leaq $14532(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9a, //0x00000614 movslq (%rdx,%rbx,4), %rcx + 0x48, 0x01, 0xd1, //0x00000618 addq %rdx, %rcx + 0xff, 0xe1, //0x0000061b jmpq *%rcx + //0x0000061d LBB0_38 + 0x83, 0xff, 0x2c, //0x0000061d cmpl $44, %edi + 0x0f, 0x84, 0x4e, 0x02, 0x00, 0x00, //0x00000620 je LBB0_76 + 0x83, 0xff, 0x5d, //0x00000626 cmpl $93, %edi + 0x0f, 0x84, 0x31, 0x02, 0x00, 0x00, //0x00000629 je LBB0_40 + 0xe9, 0xda, 0x36, 0x00, 0x00, //0x0000062f jmp LBB0_727 + //0x00000634 LBB0_41 + 0x4d, 0x89, 0x02, //0x00000634 movq %r8, (%r10) + 0x83, 0xff, 0x7b, //0x00000637 cmpl $123, %edi + 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x0000063a jbe LBB0_68 + 0xe9, 0xc9, 0x36, 0x00, 0x00, //0x00000640 jmp LBB0_727 + //0x00000645 LBB0_42 + 0x83, 0xff, 0x2c, //0x00000645 cmpl $44, %edi + 0x0f, 0x85, 0x09, 0x02, 0x00, 0x00, //0x00000648 jne LBB0_43 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x0000064e cmpq $4095, %rsi + 0x0f, 0x8f, 0x4e, 0x36, 0x00, 0x00, //0x00000655 jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x0000065b leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x0000065f movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000662 movq $3, $8(%r10,%rsi,8) + 0xe9, 0x30, 0xfd, 0xff, 0xff, //0x0000066b jmp LBB0_3 + //0x00000670 LBB0_44 + 0x40, 0x80, 0xff, 0x22, //0x00000670 cmpb $34, %dil + 0x0f, 0x85, 0x94, 0x36, 0x00, 0x00, //0x00000674 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x04, 0x00, 0x00, 0x00, //0x0000067a movq $4, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x00000682 testb $64, %r11b + 0x0f, 0x85, 0x4d, 0x03, 0x00, 0x00, //0x00000686 jne LBB0_99 + 0x4d, 0x8b, 0x0f, //0x0000068c movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000068f movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00000694 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00000698 testb $32, %r11b + 0x0f, 0x85, 0xd6, 0x06, 0x00, 0x00, //0x0000069c jne LBB0_143 + 0x4d, 0x89, 0xc3, //0x000006a2 movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000006a5 subq %r9, %r11 + 0x0f, 0x84, 0xd0, 0x37, 0x00, 0x00, //0x000006a8 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000006ae cmpq $64, %r11 + 0x0f, 0x82, 0x5e, 0x26, 0x00, 0x00, //0x000006b2 jb LBB0_531 + 0x4c, 0x89, 0xce, //0x000006b8 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000006bb notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006be movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000006c5 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000006c8 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006cb .p2align 4, 0x90 + //0x000006d0 LBB0_50 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000006d0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000006d6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000006dd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000006e1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000006e5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x000006e9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xc7, //0x000006ed vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000006f1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000006f5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x000006f9 vpmovmskb %ymm0, %ebx + 0x48, 0xc1, 0xe1, 0x20, //0x000006fd shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00000701 orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x20, //0x00000704 shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000708 orq %rbx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_59 + 0x4d, 0x85, 0xd2, //0x00000711 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000714 jne LBB0_61 + 0x45, 0x31, 0xd2, //0x0000071a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000071d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000720 jne LBB0_62 + //0x00000726 LBB0_53 + 0x49, 0x83, 0xc3, 0xc0, //0x00000726 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000072a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000072e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000732 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000736 ja LBB0_50 + 0xe9, 0x0b, 0x22, 0x00, 0x00, //0x0000073c jmp LBB0_54 + //0x00000741 LBB0_59 + 0x49, 0x83, 0xff, 0xff, //0x00000741 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000745 jne LBB0_61 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000074b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000074f addq %rax, %r15 + //0x00000752 LBB0_61 + 0x4c, 0x89, 0xd1, //0x00000752 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000755 notq %rcx + 0x48, 0x21, 0xf9, //0x00000758 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000075b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000075f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000762 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000765 notq %rbx + 0x48, 0x21, 0xfb, //0x00000768 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000076b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000775 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000778 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000077b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000077e setb %r10b + 0x48, 0x01, 0xdb, //0x00000782 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000785 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000078f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00000792 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000795 notq %rbx + 0x48, 0x21, 0xda, //0x00000798 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000079b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000079e je LBB0_53 + //0x000007a4 LBB0_62 + 0x48, 0x0f, 0xbc, 0xc2, //0x000007a4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000007a8 subq %rsi, %rax + //0x000007ab LBB0_63 + 0x4c, 0x8b, 0x1c, 0x24, //0x000007ab movq (%rsp), %r11 + 0x48, 0x85, 0xc0, //0x000007af testq %rax, %rax + 0x0f, 0x89, 0xd4, 0xfb, 0xff, 0xff, //0x000007b2 jns LBB0_237 + 0xe9, 0x04, 0x35, 0x00, 0x00, //0x000007b8 jmp LBB0_702 + //0x000007bd LBB0_64 + 0x40, 0x80, 0xff, 0x3a, //0x000007bd cmpb $58, %dil + 0x0f, 0x85, 0x47, 0x35, 0x00, 0x00, //0x000007c1 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x00, 0x00, 0x00, 0x00, //0x000007c7 movq $0, (%r10,%rsi,8) + 0xe9, 0xcc, 0xfb, 0xff, 0xff, //0x000007cf jmp LBB0_3 + //0x000007d4 LBB0_66 + 0x40, 0x80, 0xff, 0x5d, //0x000007d4 cmpb $93, %dil + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x000007d8 je LBB0_40 + 0x49, 0xc7, 0x04, 0xf2, 0x01, 0x00, 0x00, 0x00, //0x000007de movq $1, (%r10,%rsi,8) + 0x83, 0xff, 0x7b, //0x000007e6 cmpl $123, %edi + 0x0f, 0x87, 0x1f, 0x35, 0x00, 0x00, //0x000007e9 ja LBB0_727 + //0x000007ef LBB0_68 + 0x89, 0xf9, //0x000007ef movl %edi, %ecx + 0x48, 0x8d, 0x15, 0xf8, 0x36, 0x00, 0x00, //0x000007f1 leaq $14072(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000007f8 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000007fc addq %rdx, %rcx + 0xff, 0xe1, //0x000007ff jmpq *%rcx + //0x00000801 LBB0_71 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000801 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00000806 movq $8(%rax), %r9 + 0x4d, 0x8b, 0x2f, //0x0000080a movq (%r15), %r13 + 0x41, 0xf6, 0xc3, 0x40, //0x0000080d testb $64, %r11b + 0x0f, 0x85, 0xac, 0x02, 0x00, 0x00, //0x00000811 jne LBB0_111 + 0x49, 0x8d, 0x45, 0xff, //0x00000817 leaq $-1(%r13), %rax + 0x49, 0x29, 0xc1, //0x0000081b subq %rax, %r9 + 0x0f, 0x84, 0xce, 0x34, 0x00, 0x00, //0x0000081e je LBB0_706 + 0x4f, 0x8d, 0x04, 0x2e, //0x00000824 leaq (%r14,%r13), %r8 + 0x49, 0x83, 0xc0, 0xff, //0x00000828 addq $-1, %r8 + 0x41, 0x80, 0x38, 0x30, //0x0000082c cmpb $48, (%r8) + 0x0f, 0x85, 0x0a, 0x08, 0x00, 0x00, //0x00000830 jne LBB0_184 + 0x41, 0xba, 0x01, 0x00, 0x00, 0x00, //0x00000836 movl $1, %r10d + 0x49, 0x83, 0xf9, 0x01, //0x0000083c cmpq $1, %r9 + 0x0f, 0x85, 0xd0, 0x07, 0x00, 0x00, //0x00000840 jne LBB0_182 + //0x00000846 LBB0_75 + 0x48, 0x89, 0xc1, //0x00000846 movq %rax, %rcx + 0xe9, 0xe0, 0x0f, 0x00, 0x00, //0x00000849 jmp LBB0_296 + //0x0000084e LBB0_69 + 0x83, 0xff, 0x22, //0x0000084e cmpl $34, %edi + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000851 je LBB0_80 + //0x00000857 LBB0_43 + 0x83, 0xff, 0x7d, //0x00000857 cmpl $125, %edi + 0x0f, 0x85, 0xae, 0x34, 0x00, 0x00, //0x0000085a jne LBB0_727 + //0x00000860 LBB0_40 + 0x4d, 0x89, 0x02, //0x00000860 movq %r8, (%r10) + 0x4c, 0x89, 0xe0, //0x00000863 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x00000866 testq %r8, %r8 + 0x0f, 0x85, 0x91, 0xfb, 0xff, 0xff, //0x00000869 jne LBB0_5 + 0xe9, 0xa1, 0x34, 0x00, 0x00, //0x0000086f jmp LBB0_728 + //0x00000874 LBB0_76 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000874 cmpq $4095, %rsi + 0x0f, 0x8f, 0x28, 0x34, 0x00, 0x00, //0x0000087b jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x00000881 leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x00000885 movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000888 movq $0, $8(%r10,%rsi,8) + 0xe9, 0x0a, 0xfb, 0xff, 0xff, //0x00000891 jmp LBB0_3 + //0x00000896 LBB0_80 + 0x49, 0xc7, 0x04, 0xf2, 0x02, 0x00, 0x00, 0x00, //0x00000896 movq $2, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x0000089e testb $64, %r11b + 0x0f, 0x85, 0xdd, 0x03, 0x00, 0x00, //0x000008a2 jne LBB0_132 + 0x4d, 0x8b, 0x0f, //0x000008a8 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x000008ab movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x000008b0 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x000008b4 testb $32, %r11b + 0x0f, 0x85, 0x03, 0x06, 0x00, 0x00, //0x000008b8 jne LBB0_163 + 0x4d, 0x89, 0xc3, //0x000008be movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000008c1 subq %r9, %r11 + 0x0f, 0x84, 0xb4, 0x35, 0x00, 0x00, //0x000008c4 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000008ca cmpq $64, %r11 + 0x0f, 0x82, 0x92, 0x24, 0x00, 0x00, //0x000008ce jb LBB0_536 + 0x4c, 0x89, 0xce, //0x000008d4 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000008d7 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000008da movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000008e1 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000008e4 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008e7 .p2align 4, 0x90 + //0x000008f0 LBB0_85 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000008f0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000008f6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000008fd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000901 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x00000905 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000909 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x0000090d vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x00000911 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x00000915 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000919 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x0000091d shlq $32, %rbx + 0x48, 0x09, 0xda, //0x00000921 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x00000924 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000928 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000092b jne LBB0_94 + 0x4d, 0x85, 0xd2, //0x00000931 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000934 jne LBB0_96 + 0x45, 0x31, 0xd2, //0x0000093a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000093d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000940 jne LBB0_97 + //0x00000946 LBB0_88 + 0x49, 0x83, 0xc3, 0xc0, //0x00000946 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000094a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000094e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000952 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000956 ja LBB0_85 + 0xe9, 0xf8, 0x20, 0x00, 0x00, //0x0000095c jmp LBB0_89 + //0x00000961 LBB0_94 + 0x49, 0x83, 0xff, 0xff, //0x00000961 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000965 jne LBB0_96 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000096b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000096f addq %rax, %r15 + //0x00000972 LBB0_96 + 0x4c, 0x89, 0xd1, //0x00000972 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000975 notq %rcx + 0x48, 0x21, 0xf9, //0x00000978 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000097b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000097f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000982 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000985 notq %rbx + 0x48, 0x21, 0xfb, //0x00000988 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000098b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000995 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000998 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000099b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000099e setb %r10b + 0x48, 0x01, 0xdb, //0x000009a2 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000009a5 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000009af xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x000009b2 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x000009b5 notq %rbx + 0x48, 0x21, 0xda, //0x000009b8 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x000009bb testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x000009be je LBB0_88 + //0x000009c4 LBB0_97 + 0x48, 0x0f, 0xbc, 0xc2, //0x000009c4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000009c8 subq %rsi, %rax + //0x000009cb LBB0_98 + 0x4c, 0x8b, 0x1c, 0x24, //0x000009cb movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000009cf movq $24(%rsp), %r10 + 0xe9, 0xb5, 0x0e, 0x00, 0x00, //0x000009d4 jmp LBB0_302 + //0x000009d9 LBB0_99 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000009d9 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000009de movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000009e2 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000009e5 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000009e9 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000009ec cmpq $32, %r10 + 0x0f, 0x8c, 0x21, 0x1d, 0x00, 0x00, //0x000009f0 jl LBB0_110 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000009f6 movl $32, %edx + 0x31, 0xf6, //0x000009fb xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000009fd xorl %r15d, %r15d + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x00000a00 jmp LBB0_101 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000a05 .p2align 4, 0x90 + //0x00000a10 LBB0_106 + 0x44, 0x89, 0xf9, //0x00000a10 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000a13 notl %ecx + 0x21, 0xd9, //0x00000a15 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000a17 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000a1b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000a1e movl %r13d, %edi + 0xf7, 0xd7, //0x00000a21 notl %edi + 0x21, 0xdf, //0x00000a23 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a25 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000a2b xorl %r15d, %r15d + 0x01, 0xcf, //0x00000a2e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000a30 setb %r15b + 0x01, 0xff, //0x00000a34 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000a36 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000a3c andl %r13d, %edi + 0xf7, 0xd7, //0x00000a3f notl %edi + 0x41, 0x21, 0xfb, //0x00000a41 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000a44 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000a47 jne LBB0_104 + //0x00000a4d LBB0_107 + 0x48, 0x83, 0xc6, 0x20, //0x00000a4d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000a51 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a55 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000a59 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000a5d cmpq $63, %rcx + 0x0f, 0x8e, 0x98, 0x1c, 0x00, 0x00, //0x00000a61 jle LBB0_108 + //0x00000a67 LBB0_101 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000a67 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000a6d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000a71 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000a75 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000a79 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000a7d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000a7f jne LBB0_106 + 0x4d, 0x85, 0xff, //0x00000a85 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000a88 jne LBB0_106 + 0x45, 0x31, 0xff, //0x00000a8e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000a91 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000a94 je LBB0_107 + //0x00000a9a LBB0_104 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000a9a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000a9e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000aa1 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000aa5 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000aa9 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000aae movq (%rsp), %r11 + //0x00000ab2 LBB0_105 + 0x4d, 0x89, 0x0f, //0x00000ab2 movq %r9, (%r15) + //0x00000ab5 LBB0_387 + 0x4d, 0x85, 0xc0, //0x00000ab5 testq %r8, %r8 + 0x0f, 0x8f, 0xe2, 0xf8, 0xff, 0xff, //0x00000ab8 jg LBB0_3 + 0xe9, 0xf2, 0x31, 0x00, 0x00, //0x00000abe jmp LBB0_700 + //0x00000ac3 LBB0_111 + 0x4c, 0x89, 0xcf, //0x00000ac3 movq %r9, %rdi + 0x4c, 0x29, 0xef, //0x00000ac6 subq %r13, %rdi + 0x48, 0x83, 0xff, 0x20, //0x00000ac9 cmpq $32, %rdi + 0x0f, 0x82, 0xe4, 0x21, 0x00, 0x00, //0x00000acd jb LBB0_526 + 0x4c, 0x89, 0xef, //0x00000ad3 movq %r13, %rdi + 0x48, 0xf7, 0xdf, //0x00000ad6 negq %rdi + 0x49, 0x8d, 0x4d, 0x01, //0x00000ad9 leaq $1(%r13), %rcx + 0x49, 0x8d, 0x55, 0xff, //0x00000add leaq $-1(%r13), %rdx + 0x4b, 0x8d, 0x34, 0x2e, //0x00000ae1 leaq (%r14,%r13), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00000ae5 addq $-1, %rsi + 0x4c, 0x89, 0xeb, //0x00000ae9 movq %r13, %rbx + 0x90, 0x90, 0x90, 0x90, //0x00000aec .p2align 4, 0x90 + //0x00000af0 LBB0_113 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000af0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x00000af6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x00000afa vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0x9a, 0xf6, 0xff, 0xff, //0x00000afe vpcmpeqb $-2406(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x00000b06 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00000b0a vpmovmskb %ymm0, %eax + 0x85, 0xc0, //0x00000b0e testl %eax, %eax + 0x0f, 0x85, 0x09, 0x01, 0x00, 0x00, //0x00000b10 jne LBB0_127 + 0x48, 0x83, 0xc3, 0x20, //0x00000b16 addq $32, %rbx + 0x49, 0x8d, 0x04, 0x39, //0x00000b1a leaq (%r9,%rdi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000b1e addq $-32, %rax + 0x48, 0x83, 0xc7, 0xe0, //0x00000b22 addq $-32, %rdi + 0x48, 0x83, 0xc1, 0x20, //0x00000b26 addq $32, %rcx + 0x48, 0x83, 0xc2, 0x20, //0x00000b2a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00000b2e addq $32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x00000b32 cmpq $31, %rax + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00000b36 ja LBB0_113 + 0x4d, 0x89, 0xf0, //0x00000b3c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00000b3f subq %rdi, %r8 + 0x49, 0x01, 0xf9, //0x00000b42 addq %rdi, %r9 + 0x4c, 0x89, 0xcf, //0x00000b45 movq %r9, %rdi + 0x48, 0x83, 0xff, 0x10, //0x00000b48 cmpq $16, %rdi + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00000b4c jb LBB0_119 + //0x00000b52 LBB0_116 + 0x4d, 0x89, 0xf1, //0x00000b52 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00000b55 subq %r8, %r9 + 0x4c, 0x89, 0xc1, //0x00000b58 movq %r8, %rcx + 0x4c, 0x29, 0xf1, //0x00000b5b subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00000b5e addq $1, %rcx + 0x49, 0x8d, 0x50, 0xff, //0x00000b62 leaq $-1(%r8), %rdx + 0x48, 0x89, 0xd6, //0x00000b66 movq %rdx, %rsi + 0x4c, 0x29, 0xf6, //0x00000b69 subq %r14, %rsi + //0x00000b6c LBB0_117 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00000b6c vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0x97, 0xf4, 0xff, 0xff, //0x00000b71 vpcmpeqb $-2921(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0x9f, 0xf4, 0xff, 0xff, //0x00000b79 vpand $-2913(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa7, 0xf4, 0xff, 0xff, //0x00000b81 vpcmpeqb $-2905(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00000b89 vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xd8, //0x00000b8d vpmovmskb %xmm0, %ebx + 0x85, 0xdb, //0x00000b91 testl %ebx, %ebx + 0x0f, 0x85, 0x9e, 0x1b, 0x00, 0x00, //0x00000b93 jne LBB0_478 + 0x49, 0x83, 0xc0, 0x10, //0x00000b99 addq $16, %r8 + 0x48, 0x83, 0xc7, 0xf0, //0x00000b9d addq $-16, %rdi + 0x49, 0x83, 0xc1, 0xf0, //0x00000ba1 addq $-16, %r9 + 0x48, 0x83, 0xc1, 0x10, //0x00000ba5 addq $16, %rcx + 0x48, 0x83, 0xc6, 0x10, //0x00000ba9 addq $16, %rsi + 0x48, 0x83, 0xc2, 0x10, //0x00000bad addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000bb1 cmpq $15, %rdi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00000bb5 ja LBB0_117 + //0x00000bbb LBB0_119 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00000bbb vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00000bbf vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000bc3 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xff, //0x00000bc8 testq %rdi, %rdi + 0x0f, 0x84, 0xe8, 0xf7, 0xff, 0xff, //0x00000bcb je LBB0_1 + 0x49, 0x8d, 0x0c, 0x38, //0x00000bd1 leaq (%r8,%rdi), %rcx + 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bd5 movabsq $17596481021440, %rax + //0x00000bdf LBB0_121 + 0x41, 0x0f, 0xb6, 0x10, //0x00000bdf movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000be3 cmpq $44, %rdx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000be7 ja LBB0_123 + 0x48, 0x0f, 0xa3, 0xd0, //0x00000bed btq %rdx, %rax + 0x0f, 0x82, 0xc2, 0xf7, 0xff, 0xff, //0x00000bf1 jb LBB0_1 + //0x00000bf7 LBB0_123 + 0x80, 0xfa, 0x5d, //0x00000bf7 cmpb $93, %dl + 0x0f, 0x84, 0xb9, 0xf7, 0xff, 0xff, //0x00000bfa je LBB0_1 + 0x80, 0xfa, 0x7d, //0x00000c00 cmpb $125, %dl + 0x0f, 0x84, 0xb0, 0xf7, 0xff, 0xff, //0x00000c03 je LBB0_1 + 0x49, 0x83, 0xc0, 0x01, //0x00000c09 addq $1, %r8 + 0x48, 0x83, 0xc7, 0xff, //0x00000c0d addq $-1, %rdi + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x00000c11 jne LBB0_121 + 0x49, 0x89, 0xc8, //0x00000c17 movq %rcx, %r8 + 0xe9, 0x9a, 0xf7, 0xff, 0xff, //0x00000c1a jmp LBB0_1 + //0x00000c1f LBB0_127 + 0x0f, 0xbc, 0xd8, //0x00000c1f bsfl %eax, %ebx + 0x48, 0x89, 0xd8, //0x00000c22 movq %rbx, %rax + 0x48, 0x29, 0xf8, //0x00000c25 subq %rdi, %rax + 0x49, 0x89, 0x07, //0x00000c28 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00000c2b testq %rax, %rax + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c2e movabsq $4294977024, %rdi + 0x0f, 0x8e, 0xac, 0xf7, 0xff, 0xff, //0x00000c38 jle LBB0_2 + 0x48, 0x01, 0xd9, //0x00000c3e addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c41 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00000c44 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c47 .p2align 4, 0x90 + //0x00000c50 LBB0_129 + 0x0f, 0xb6, 0x06, //0x00000c50 movzbl (%rsi), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00000c53 cmpq $32, %rax + 0x0f, 0x87, 0x8d, 0xf7, 0xff, 0xff, //0x00000c57 ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc7, //0x00000c5d btq %rax, %rdi + 0x0f, 0x83, 0x83, 0xf7, 0xff, 0xff, //0x00000c61 jae LBB0_2 + 0x49, 0x89, 0x17, //0x00000c67 movq %rdx, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x00000c6a addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c6e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00000c72 addq $-1, %rsi + 0x48, 0x83, 0xf9, 0x01, //0x00000c76 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c7a jg LBB0_129 + 0xe9, 0x65, 0xf7, 0xff, 0xff, //0x00000c80 jmp LBB0_2 + //0x00000c85 LBB0_132 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00000c85 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x00000c8a movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x00000c8e movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x00000c91 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x00000c95 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x00000c98 cmpq $32, %r10 + 0x0f, 0x8c, 0x9c, 0x1c, 0x00, 0x00, //0x00000c9c jl LBB0_142 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x00000ca2 movl $32, %edx + 0x31, 0xf6, //0x00000ca7 xorl %esi, %esi + 0x45, 0x31, 0xff, //0x00000ca9 xorl %r15d, %r15d + 0xe9, 0x66, 0x00, 0x00, 0x00, //0x00000cac jmp LBB0_134 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000cb1 .p2align 4, 0x90 + //0x00000cc0 LBB0_138 + 0x44, 0x89, 0xf9, //0x00000cc0 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000cc3 notl %ecx + 0x21, 0xd9, //0x00000cc5 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000cc7 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000ccb orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000cce movl %r13d, %edi + 0xf7, 0xd7, //0x00000cd1 notl %edi + 0x21, 0xdf, //0x00000cd3 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000cd5 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000cdb xorl %r15d, %r15d + 0x01, 0xcf, //0x00000cde addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000ce0 setb %r15b + 0x01, 0xff, //0x00000ce4 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000ce6 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000cec andl %r13d, %edi + 0xf7, 0xd7, //0x00000cef notl %edi + 0x41, 0x21, 0xfb, //0x00000cf1 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000cf4 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000cf7 jne LBB0_137 + //0x00000cfd LBB0_139 + 0x48, 0x83, 0xc6, 0x20, //0x00000cfd addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000d01 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000d05 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000d09 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000d0d cmpq $63, %rcx + 0x0f, 0x8e, 0x0f, 0x1c, 0x00, 0x00, //0x00000d11 jle LBB0_140 + //0x00000d17 LBB0_134 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000d17 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000d1d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000d21 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000d25 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000d29 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000d2d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000d2f jne LBB0_138 + 0x4d, 0x85, 0xff, //0x00000d35 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000d38 jne LBB0_138 + 0x45, 0x31, 0xff, //0x00000d3e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000d41 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000d44 je LBB0_139 + //0x00000d4a LBB0_137 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000d4a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000d4e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000d51 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000d55 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000d59 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000d5e movq (%rsp), %r11 + 0x4d, 0x89, 0x0f, //0x00000d62 movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x00000d65 testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000d68 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x35, 0x0b, 0x00, 0x00, //0x00000d6d jg LBB0_304 + 0xe9, 0x3d, 0x2f, 0x00, 0x00, //0x00000d73 jmp LBB0_700 + //0x00000d78 LBB0_143 + 0x4d, 0x89, 0xc5, //0x00000d78 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000d7b subq %r9, %r13 + 0x0f, 0x84, 0xfa, 0x30, 0x00, 0x00, //0x00000d7e je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000d84 cmpq $64, %r13 + 0x0f, 0x82, 0xa5, 0x1f, 0x00, 0x00, //0x00000d88 jb LBB0_532 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000d8e movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000d95 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000d98 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d9b .p2align 4, 0x90 + //0x00000da0 LBB0_146 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000da0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000da6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000dad vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000db1 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000db5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000db9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000dbd vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000dc1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000dc5 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000dc9 vpmovmskb %ymm2, %ebx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000dcd vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000dd1 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000dd6 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000dda vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe1, 0x20, //0x00000dde shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000de2 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x20, //0x00000de5 shlq $32, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x00000de9 shlq $32, %rsi + 0x48, 0x09, 0xda, //0x00000ded orq %rbx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000df0 jne LBB0_157 + 0x4d, 0x85, 0xdb, //0x00000df6 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000df9 jne LBB0_159 + 0x45, 0x31, 0xdb, //0x00000dff xorl %r11d, %r11d + //0x00000e02 LBB0_149 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000e02 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000e06 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000e0b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000e0f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000e13 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000e16 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00000e19 jne LBB0_160 + 0x48, 0x85, 0xf6, //0x00000e1f testq %rsi, %rsi + 0x0f, 0x85, 0x07, 0x2f, 0x00, 0x00, //0x00000e22 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000e28 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000e2c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000e30 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000e34 ja LBB0_146 + 0xe9, 0x5e, 0x1b, 0x00, 0x00, //0x00000e3a jmp LBB0_152 + //0x00000e3f LBB0_157 + 0x49, 0x83, 0xff, 0xff, //0x00000e3f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000e43 jne LBB0_159 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000e49 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000e4d addq %rax, %r15 + //0x00000e50 LBB0_159 + 0x4c, 0x89, 0xd9, //0x00000e50 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000e53 notq %rcx + 0x48, 0x21, 0xd1, //0x00000e56 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000e59 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000e5d orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000e60 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e63 notq %rbx + 0x48, 0x21, 0xd3, //0x00000e66 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000e69 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000e73 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000e76 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000e79 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000e7c setb %r11b + 0x48, 0x01, 0xdb, //0x00000e80 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000e83 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000e8d xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000e90 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e93 notq %rbx + 0x48, 0x21, 0xdf, //0x00000e96 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00000e99 jmp LBB0_149 + //0x00000e9e LBB0_160 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000e9e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ea2 testq %rsi, %rsi + 0x0f, 0x84, 0xbf, 0xf4, 0xff, 0xff, //0x00000ea5 je LBB0_235 + 0x48, 0x0f, 0xbc, 0xd6, //0x00000eab bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00000eaf movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000eb3 cmpq %rcx, %rdx + 0x0f, 0x83, 0xc0, 0xf4, 0xff, 0xff, //0x00000eb6 jae LBB0_236 + 0xe9, 0xc5, 0x2f, 0x00, 0x00, //0x00000ebc jmp LBB0_162 + //0x00000ec1 LBB0_163 + 0x4d, 0x89, 0xc5, //0x00000ec1 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000ec4 subq %r9, %r13 + 0x0f, 0x84, 0xb1, 0x2f, 0x00, 0x00, //0x00000ec7 je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000ecd cmpq $64, %r13 + 0x0f, 0x82, 0xac, 0x1e, 0x00, 0x00, //0x00000ed1 jb LBB0_537 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000ed7 movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000ede movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000ee1 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ee4 .p2align 4, 0x90 + //0x00000ef0 LBB0_166 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000ef0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000ef6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000efd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000f01 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000f05 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000f09 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000f0d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000f11 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000f15 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000f19 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000f1d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000f21 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000f26 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000f2a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x00000f2e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000f32 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00000f35 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00000f39 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x00000f3d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000f40 jne LBB0_177 + 0x4d, 0x85, 0xdb, //0x00000f46 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000f49 jne LBB0_179 + 0x45, 0x31, 0xdb, //0x00000f4f xorl %r11d, %r11d + //0x00000f52 LBB0_169 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000f52 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000f56 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000f5b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000f5f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000f63 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000f66 testq %rdi, %rdi + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000f69 jne LBB0_180 + 0x48, 0x85, 0xf6, //0x00000f6f testq %rsi, %rsi + 0x0f, 0x85, 0xb7, 0x2d, 0x00, 0x00, //0x00000f72 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000f78 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000f7c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000f80 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000f84 ja LBB0_166 + 0xe9, 0x1b, 0x1b, 0x00, 0x00, //0x00000f8a jmp LBB0_172 + //0x00000f8f LBB0_177 + 0x49, 0x83, 0xff, 0xff, //0x00000f8f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000f93 jne LBB0_179 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000f99 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000f9d addq %rax, %r15 + //0x00000fa0 LBB0_179 + 0x4c, 0x89, 0xd9, //0x00000fa0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000fa3 notq %rcx + 0x48, 0x21, 0xd1, //0x00000fa6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000fa9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000fad orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000fb0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fb3 notq %rbx + 0x48, 0x21, 0xd3, //0x00000fb6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000fc3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000fc6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000fc9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000fcc setb %r11b + 0x48, 0x01, 0xdb, //0x00000fd0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000fd3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000fdd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000fe0 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fe3 notq %rbx + 0x48, 0x21, 0xdf, //0x00000fe6 andq %rbx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000fe9 movq $24(%rsp), %r10 + 0xe9, 0x5f, 0xff, 0xff, 0xff, //0x00000fee jmp LBB0_169 + //0x00000ff3 LBB0_180 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000ff3 bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ff7 testq %rsi, %rsi + 0x0f, 0x84, 0x75, 0x08, 0x00, 0x00, //0x00000ffa je LBB0_300 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001000 bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00001004 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001008 cmpq %rcx, %rdx + 0x0f, 0x83, 0x76, 0x08, 0x00, 0x00, //0x0000100b jae LBB0_301 + 0xe9, 0x70, 0x2e, 0x00, 0x00, //0x00001011 jmp LBB0_162 + //0x00001016 LBB0_182 + 0x43, 0x8a, 0x0c, 0x2e, //0x00001016 movb (%r14,%r13), %cl + 0x80, 0xc1, 0xd2, //0x0000101a addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000101d cmpb $55, %cl + 0x0f, 0x87, 0x20, 0xf8, 0xff, 0xff, //0x00001020 ja LBB0_75 + 0x0f, 0xb6, 0xc9, //0x00001026 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001029 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00001033 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00001037 movq %rax, %rcx + 0x0f, 0x83, 0xee, 0x07, 0x00, 0x00, //0x0000103a jae LBB0_296 + //0x00001040 LBB0_184 + 0x4c, 0x89, 0x6c, 0x24, 0x10, //0x00001040 movq %r13, $16(%rsp) + 0x49, 0x83, 0xf9, 0x20, //0x00001045 cmpq $32, %r9 + 0x0f, 0x82, 0x7b, 0x1c, 0x00, 0x00, //0x00001049 jb LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000104f movq $-1, $40(%rsp) + 0x45, 0x31, 0xd2, //0x00001058 xorl %r10d, %r10d + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000105b movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00001062 movq $-1, $48(%rsp) + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000106b .p2align 4, 0x90 + //0x00001070 LBB0_186 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x10, //0x00001070 vmovdqu (%r8,%r10), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00001076 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000107b vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x0000107f vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00001083 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd1, 0xf1, 0xff, 0xff, //0x00001087 vpcmpeqb $-3631(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x0000108f vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00001093 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe1, 0xf1, 0xff, 0xff, //0x00001097 vpcmpeqb $-3615(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x0000109f vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000010a3 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000010a7 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000010ab vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000010af vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000010b3 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000010b7 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000010bb vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000010bf notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000010c2 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000010c6 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000010c9 je LBB0_188 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000010cf movl $-1, %ebx + 0xd3, 0xe3, //0x000010d4 shll %cl, %ebx + 0xf7, 0xd3, //0x000010d6 notl %ebx + 0x21, 0xdf, //0x000010d8 andl %ebx, %edi + 0x21, 0xde, //0x000010da andl %ebx, %esi + 0x21, 0xd3, //0x000010dc andl %edx, %ebx + 0x89, 0xda, //0x000010de movl %ebx, %edx + //0x000010e0 LBB0_188 + 0x8d, 0x5f, 0xff, //0x000010e0 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000010e3 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd3, 0xf0, 0xff, 0xff, //0x000010e5 vmovdqu $-3885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x32, 0x16, 0x00, 0x00, //0x000010ed jne LBB0_476 + 0x8d, 0x5e, 0xff, //0x000010f3 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000010f6 andl %esi, %ebx + 0x0f, 0x85, 0x27, 0x16, 0x00, 0x00, //0x000010f8 jne LBB0_476 + 0x8d, 0x5a, 0xff, //0x000010fe leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00001101 andl %edx, %ebx + 0x0f, 0x85, 0x1c, 0x16, 0x00, 0x00, //0x00001103 jne LBB0_476 + 0x85, 0xff, //0x00001109 testl %edi, %edi + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000110b je LBB0_194 + 0x0f, 0xbc, 0xff, //0x00001111 bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001114 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xd1, 0x19, 0x00, 0x00, //0x0000111a jne LBB0_505 + 0x4c, 0x01, 0xd7, //0x00001120 addq %r10, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x00001123 movq %rdi, $48(%rsp) + //0x00001128 LBB0_194 + 0x85, 0xf6, //0x00001128 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000112a je LBB0_197 + 0x0f, 0xbc, 0xf6, //0x00001130 bsfl %esi, %esi + 0x49, 0x83, 0xfd, 0xff, //0x00001133 cmpq $-1, %r13 + 0x0f, 0x85, 0xbf, 0x19, 0x00, 0x00, //0x00001137 jne LBB0_506 + 0x4c, 0x01, 0xd6, //0x0000113d addq %r10, %rsi + 0x49, 0x89, 0xf5, //0x00001140 movq %rsi, %r13 + //0x00001143 LBB0_197 + 0x85, 0xd2, //0x00001143 testl %edx, %edx + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001145 je LBB0_200 + 0x0f, 0xbc, 0xd2, //0x0000114b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000114e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xad, 0x19, 0x00, 0x00, //0x00001154 jne LBB0_507 + 0x4c, 0x01, 0xd2, //0x0000115a addq %r10, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000115d movq %rdx, $40(%rsp) + //0x00001162 LBB0_200 + 0x83, 0xf9, 0x20, //0x00001162 cmpl $32, %ecx + 0x0f, 0x85, 0xc3, 0x02, 0x00, 0x00, //0x00001165 jne LBB0_234 + 0x49, 0x83, 0xc1, 0xe0, //0x0000116b addq $-32, %r9 + 0x49, 0x83, 0xc2, 0x20, //0x0000116f addq $32, %r10 + 0x49, 0x83, 0xf9, 0x1f, //0x00001173 cmpq $31, %r9 + 0x0f, 0x87, 0xf3, 0xfe, 0xff, 0xff, //0x00001177 ja LBB0_186 + 0xc5, 0xf8, 0x77, //0x0000117d vzeroupper + 0xc5, 0x7e, 0x6f, 0x35, 0x58, 0xf0, 0xff, 0xff, //0x00001180 vmovdqu $-4008(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb0, 0xf0, 0xff, 0xff, //0x00001188 vmovdqu $-3920(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x88, 0xf0, 0xff, 0xff, //0x00001190 vmovdqu $-3960(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x60, 0xf0, 0xff, 0xff, //0x00001198 vmovdqu $-4000(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xb8, 0xef, 0xff, 0xff, //0x000011a0 vmovdqu $-4168(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x90, 0xef, 0xff, 0xff, //0x000011a8 vmovdqu $-4208(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000011b0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x05, 0x63, 0xef, 0xff, 0xff, //0x000011b5 vmovdqu $-4253(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x3b, 0xef, 0xff, 0xff, //0x000011bd vmovdqu $-4293(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x13, 0xef, 0xff, 0xff, //0x000011c5 vmovdqu $-4333(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0xeb, 0xee, 0xff, 0xff, //0x000011cd vmovdqu $-4373(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0x4d, 0x01, 0xc2, //0x000011d5 addq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x000011d8 cmpq $16, %r9 + 0x0f, 0x82, 0x8f, 0x01, 0x00, 0x00, //0x000011dc jb LBB0_221 + //0x000011e2 LBB0_203 + 0x4c, 0x89, 0xd1, //0x000011e2 movq %r10, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000011e5 subq $16(%rsp), %rcx + 0x4c, 0x29, 0xf1, //0x000011ea subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000011ed addq $1, %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000011f1 movq %rcx, $56(%rsp) + 0x45, 0x31, 0xff, //0x000011f6 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000011f9 .p2align 4, 0x90 + //0x00001200 LBB0_204 + 0x4d, 0x89, 0xeb, //0x00001200 movq %r13, %r11 + 0x4d, 0x89, 0xc5, //0x00001203 movq %r8, %r13 + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x3a, //0x00001206 vmovdqu (%r10,%r15), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x2c, 0xee, 0xff, 0xff, //0x0000120c vpcmpgtb $-4564(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001214 vmovdqu $-4556(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x0000121c vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00001220 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001224 vpcmpeqb $-4556(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0x3c, 0xee, 0xff, 0xff, //0x0000122c vpcmpeqb $-4548(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00001234 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0xe0, 0xed, 0xff, 0xff, //0x00001238 vpand $-4640(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0x38, 0xee, 0xff, 0xff, //0x00001240 vpcmpeqb $-4552(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0x40, 0xee, 0xff, 0xff, //0x00001248 vpcmpeqb $-4544(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00001250 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00001254 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00001258 vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc0, //0x0000125c vpmovmskb %xmm0, %r8d + 0xc5, 0xf9, 0xd7, 0xf3, //0x00001260 vpmovmskb %xmm3, %esi + 0xc5, 0xf9, 0xd7, 0xd2, //0x00001264 vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x00001268 vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x0000126c notl %ecx + 0x0f, 0xbc, 0xc9, //0x0000126e bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001271 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001274 je LBB0_206 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000127a movl $-1, %edi + 0xd3, 0xe7, //0x0000127f shll %cl, %edi + 0xf7, 0xd7, //0x00001281 notl %edi + 0x41, 0x21, 0xf8, //0x00001283 andl %edi, %r8d + 0x21, 0xfe, //0x00001286 andl %edi, %esi + 0x21, 0xd7, //0x00001288 andl %edx, %edi + 0x89, 0xfa, //0x0000128a movl %edi, %edx + //0x0000128c LBB0_206 + 0xc5, 0xfe, 0x6f, 0x25, 0x0c, 0xf0, 0xff, 0xff, //0x0000128c vmovdqu $-4084(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x24, 0xef, 0xff, 0xff, //0x00001294 vmovdqu $-4316(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x41, 0x8d, 0x78, 0xff, //0x0000129c leal $-1(%r8), %edi + 0x44, 0x21, 0xc7, //0x000012a0 andl %r8d, %edi + 0x0f, 0x85, 0x54, 0x17, 0x00, 0x00, //0x000012a3 jne LBB0_501 + 0x8d, 0x7e, 0xff, //0x000012a9 leal $-1(%rsi), %edi + 0x21, 0xf7, //0x000012ac andl %esi, %edi + 0x0f, 0x85, 0x49, 0x17, 0x00, 0x00, //0x000012ae jne LBB0_501 + 0x8d, 0x7a, 0xff, //0x000012b4 leal $-1(%rdx), %edi + 0x21, 0xd7, //0x000012b7 andl %edx, %edi + 0x0f, 0x85, 0x3e, 0x17, 0x00, 0x00, //0x000012b9 jne LBB0_501 + 0x45, 0x85, 0xc0, //0x000012bf testl %r8d, %r8d + 0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x000012c2 je LBB0_212 + 0x41, 0x0f, 0xbc, 0xf8, //0x000012c8 bsfl %r8d, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000012cc cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xf0, 0x18, 0x00, 0x00, //0x000012d2 jne LBB0_520 + 0x48, 0x8b, 0x5c, 0x24, 0x38, //0x000012d8 movq $56(%rsp), %rbx + 0x4c, 0x01, 0xfb, //0x000012dd addq %r15, %rbx + 0x48, 0x01, 0xdf, //0x000012e0 addq %rbx, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x000012e3 movq %rdi, $48(%rsp) + //0x000012e8 LBB0_212 + 0x85, 0xf6, //0x000012e8 testl %esi, %esi + 0x4d, 0x89, 0xe8, //0x000012ea movq %r13, %r8 + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x000012ed je LBB0_215 + 0x0f, 0xbc, 0xf6, //0x000012f3 bsfl %esi, %esi + 0x49, 0x83, 0xfb, 0xff, //0x000012f6 cmpq $-1, %r11 + 0x0f, 0x85, 0xd3, 0x18, 0x00, 0x00, //0x000012fa jne LBB0_521 + 0x48, 0x8b, 0x7c, 0x24, 0x38, //0x00001300 movq $56(%rsp), %rdi + 0x4c, 0x01, 0xff, //0x00001305 addq %r15, %rdi + 0x48, 0x01, 0xfe, //0x00001308 addq %rdi, %rsi + 0x49, 0x89, 0xf5, //0x0000130b movq %rsi, %r13 + 0x85, 0xd2, //0x0000130e testl %edx, %edx + 0x0f, 0x85, 0x15, 0x00, 0x00, 0x00, //0x00001310 jne LBB0_216 + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001316 jmp LBB0_218 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000131b .p2align 4, 0x90 + //0x00001320 LBB0_215 + 0x4d, 0x89, 0xdd, //0x00001320 movq %r11, %r13 + 0x85, 0xd2, //0x00001323 testl %edx, %edx + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x00001325 je LBB0_218 + //0x0000132b LBB0_216 + 0x0f, 0xbc, 0xd2, //0x0000132b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000132e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xa4, 0x18, 0x00, 0x00, //0x00001334 jne LBB0_522 + 0x48, 0x8b, 0x74, 0x24, 0x38, //0x0000133a movq $56(%rsp), %rsi + 0x4c, 0x01, 0xfe, //0x0000133f addq %r15, %rsi + 0x48, 0x01, 0xf2, //0x00001342 addq %rsi, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x00001345 movq %rdx, $40(%rsp) + //0x0000134a LBB0_218 + 0x83, 0xf9, 0x10, //0x0000134a cmpl $16, %ecx + 0x0f, 0x85, 0x85, 0x03, 0x00, 0x00, //0x0000134d jne LBB0_280 + 0x49, 0x83, 0xc1, 0xf0, //0x00001353 addq $-16, %r9 + 0x49, 0x83, 0xc7, 0x10, //0x00001357 addq $16, %r15 + 0x49, 0x83, 0xf9, 0x0f, //0x0000135b cmpq $15, %r9 + 0x0f, 0x87, 0x9b, 0xfe, 0xff, 0xff, //0x0000135f ja LBB0_204 + 0x4d, 0x01, 0xfa, //0x00001365 addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001368 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000136d movq (%rsp), %r11 + //0x00001371 LBB0_221 + 0x4d, 0x85, 0xc9, //0x00001371 testq %r9, %r9 + 0xc5, 0xfe, 0x6f, 0x25, 0x24, 0xef, 0xff, 0xff, //0x00001374 vmovdqu $-4316(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x84, 0x6f, 0x03, 0x00, 0x00, //0x0000137c je LBB0_282 + 0x4b, 0x8d, 0x0c, 0x0a, //0x00001382 leaq (%r10,%r9), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x00001386 movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xd6, //0x0000138b movq %r10, %rsi + 0x48, 0x2b, 0x74, 0x24, 0x10, //0x0000138e subq $16(%rsp), %rsi + 0x4c, 0x29, 0xf6, //0x00001393 subq %r14, %rsi + 0x48, 0x83, 0xc6, 0x01, //0x00001396 addq $1, %rsi + 0x31, 0xc9, //0x0000139a xorl %ecx, %ecx + 0xc5, 0xfe, 0x6f, 0x1d, 0x1c, 0xee, 0xff, 0xff, //0x0000139c vmovdqu $-4580(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xe9, 0x24, 0x00, 0x00, 0x00, //0x000013a4 jmp LBB0_227 + //0x000013a9 LBB0_223 + 0x83, 0xff, 0x65, //0x000013a9 cmpl $101, %edi + 0x0f, 0x85, 0x3c, 0x03, 0x00, 0x00, //0x000013ac jne LBB0_281 + //0x000013b2 LBB0_224 + 0x49, 0x83, 0xfd, 0xff, //0x000013b2 cmpq $-1, %r13 + 0x0f, 0x85, 0x6e, 0x16, 0x00, 0x00, //0x000013b6 jne LBB0_503 + 0x4c, 0x8d, 0x2c, 0x0e, //0x000013bc leaq (%rsi,%rcx), %r13 + //0x000013c0 .p2align 4, 0x90 + //0x000013c0 LBB0_226 + 0x48, 0x83, 0xc1, 0x01, //0x000013c0 addq $1, %rcx + 0x49, 0x39, 0xc9, //0x000013c4 cmpq %rcx, %r9 + 0x0f, 0x84, 0xe8, 0x12, 0x00, 0x00, //0x000013c7 je LBB0_469 + //0x000013cd LBB0_227 + 0x41, 0x0f, 0xbe, 0x3c, 0x0a, //0x000013cd movsbl (%r10,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x000013d2 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x000013d5 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x000013d8 jb LBB0_226 + 0x8d, 0x5f, 0xd5, //0x000013de leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x000013e1 cmpl $26, %ebx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x000013e4 ja LBB0_223 + 0x48, 0x8d, 0x15, 0x5b, 0x2d, 0x00, 0x00, //0x000013ea leaq $11611(%rip), %rdx /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x000013f1 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x000013f5 addq %rdx, %rdi + 0xff, 0xe7, //0x000013f8 jmpq *%rdi + //0x000013fa LBB0_230 + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x000013fa cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0x24, 0x16, 0x00, 0x00, //0x00001400 jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001406 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000140a movq %rdx, $40(%rsp) + 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000140f jmp LBB0_226 + //0x00001414 LBB0_232 + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001414 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0x0a, 0x16, 0x00, 0x00, //0x0000141a jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001420 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x30, //0x00001424 movq %rdx, $48(%rsp) + 0xe9, 0x92, 0xff, 0xff, 0xff, //0x00001429 jmp LBB0_226 + //0x0000142e LBB0_234 + 0x4c, 0x01, 0xd1, //0x0000142e addq %r10, %rcx + 0x4c, 0x01, 0xc1, //0x00001431 addq %r8, %rcx + 0xc5, 0xf8, 0x77, //0x00001434 vzeroupper + 0x49, 0x89, 0xca, //0x00001437 movq %rcx, %r10 + 0xe9, 0xb2, 0x02, 0x00, 0x00, //0x0000143a jmp LBB0_282 + //0x0000143f LBB0_238 + 0x41, 0xf6, 0xc3, 0x40, //0x0000143f testb $64, %r11b + 0x0f, 0x85, 0x84, 0x04, 0x00, 0x00, //0x00001443 jne LBB0_306 + 0x4d, 0x8b, 0x0f, //0x00001449 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000144c movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00001451 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00001455 testb $32, %r11b + 0x0f, 0x85, 0x88, 0x0d, 0x00, 0x00, //0x00001459 jne LBB0_396 + 0x4d, 0x89, 0xc3, //0x0000145f movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x00001462 subq %r9, %r11 + 0x0f, 0x84, 0x13, 0x2a, 0x00, 0x00, //0x00001465 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x0000146b cmpq $64, %r11 + 0x0f, 0x82, 0x71, 0x19, 0x00, 0x00, //0x0000146f jb LBB0_541 + 0x4c, 0x89, 0xce, //0x00001475 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x00001478 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000147b movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00001482 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x00001485 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001488 .p2align 4, 0x90 + //0x00001490 LBB0_243 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00001490 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00001496 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000149d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000014a1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000014a5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x000014a9 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x000014ad vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000014b1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000014b5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000014b9 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x000014bd shlq $32, %rbx + 0x48, 0x09, 0xda, //0x000014c1 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x000014c4 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x000014c8 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000014cb jne LBB0_252 + 0x4d, 0x85, 0xd2, //0x000014d1 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000014d4 jne LBB0_254 + 0x45, 0x31, 0xd2, //0x000014da xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x000014dd testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x000014e0 jne LBB0_255 + //0x000014e6 LBB0_246 + 0x49, 0x83, 0xc3, 0xc0, //0x000014e6 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x000014ea addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x000014ee addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x000014f2 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x000014f6 ja LBB0_243 + 0xe9, 0xe8, 0x16, 0x00, 0x00, //0x000014fc jmp LBB0_247 + //0x00001501 LBB0_252 + 0x49, 0x83, 0xff, 0xff, //0x00001501 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001505 jne LBB0_254 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000150b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000150f addq %rax, %r15 + //0x00001512 LBB0_254 + 0x4c, 0x89, 0xd1, //0x00001512 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001515 notq %rcx + 0x48, 0x21, 0xf9, //0x00001518 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000151b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000151f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00001522 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001525 notq %rbx + 0x48, 0x21, 0xfb, //0x00001528 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000152b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00001535 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00001538 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000153b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000153e setb %r10b + 0x48, 0x01, 0xdb, //0x00001542 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001545 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000154f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00001552 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001555 notq %rbx + 0x48, 0x21, 0xda, //0x00001558 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000155b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000155e je LBB0_246 + //0x00001564 LBB0_255 + 0xc5, 0x7d, 0x7f, 0xea, //0x00001564 vmovdqa %ymm13, %ymm2 + 0x48, 0x0f, 0xbc, 0xc2, //0x00001568 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x0000156c subq %rsi, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x0000156f movq (%rsp), %r11 + 0xe9, 0x64, 0x11, 0x00, 0x00, //0x00001573 jmp LBB0_473 + //0x00001578 LBB0_256 + 0x4c, 0x89, 0xd9, //0x00001578 movq %r11, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000157b movq $32(%rsp), %rax + 0x4c, 0x8b, 0x58, 0x08, //0x00001580 movq $8(%rax), %r11 + 0x49, 0x8b, 0x07, //0x00001584 movq (%r15), %rax + 0xf6, 0xc1, 0x40, //0x00001587 testb $64, %cl + 0x0f, 0x85, 0x1d, 0x04, 0x00, 0x00, //0x0000158a jne LBB0_317 + 0x49, 0x29, 0xc3, //0x00001590 subq %rax, %r11 + 0x0f, 0x84, 0xc6, 0x28, 0x00, 0x00, //0x00001593 je LBB0_723 + 0x4d, 0x8d, 0x2c, 0x06, //0x00001599 leaq (%r14,%rax), %r13 + 0x41, 0x80, 0x7d, 0x00, 0x30, //0x0000159d cmpb $48, (%r13) + 0x0f, 0x85, 0xa6, 0x0d, 0x00, 0x00, //0x000015a2 jne LBB0_417 + 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000015a8 movl $1, %r8d + 0x49, 0x83, 0xfb, 0x01, //0x000015ae cmpq $1, %r11 + 0x0f, 0x85, 0x6c, 0x0d, 0x00, 0x00, //0x000015b2 jne LBB0_415 + //0x000015b8 LBB0_260 + 0x48, 0x89, 0xc1, //0x000015b8 movq %rax, %rcx + 0xe9, 0x8e, 0x15, 0x00, 0x00, //0x000015bb jmp LBB0_514 + //0x000015c0 LBB0_261 + 0x41, 0xf6, 0xc3, 0x40, //0x000015c0 testb $64, %r11b + 0x0f, 0x85, 0x7a, 0x05, 0x00, 0x00, //0x000015c4 jne LBB0_334 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000015ca movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000015cf movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015d2 cmpq $4095, %rcx + 0x0f, 0x8f, 0xca, 0x26, 0x00, 0x00, //0x000015d9 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000015df leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000015e3 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000015e6 movq $5, $8(%rdx,%rcx,8) + 0xe9, 0xac, 0xed, 0xff, 0xff, //0x000015ef jmp LBB0_3 + //0x000015f4 LBB0_264 + 0x49, 0x8b, 0x0f, //0x000015f4 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x000015f7 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x000015fc movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001600 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001604 cmpq %rsi, %rcx + 0x0f, 0x87, 0x1a, 0x27, 0x00, 0x00, //0x00001607 ja LBB0_711 + 0x41, 0x8b, 0x14, 0x0e, //0x0000160d movl (%r14,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001611 cmpl $1702063201, %edx + 0x0f, 0x85, 0x28, 0x27, 0x00, 0x00, //0x00001617 jne LBB0_712 + 0x48, 0x8d, 0x41, 0x04, //0x0000161d leaq $4(%rcx), %rax + 0x49, 0x89, 0x07, //0x00001621 movq %rax, (%r15) + 0x48, 0x85, 0xc9, //0x00001624 testq %rcx, %rcx + 0x0f, 0x8f, 0x73, 0xed, 0xff, 0xff, //0x00001627 jg LBB0_3 + 0xe9, 0x06, 0x28, 0x00, 0x00, //0x0000162d jmp LBB0_267 + //0x00001632 LBB0_268 + 0x49, 0x8b, 0x0f, //0x00001632 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001635 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000163a movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000163e leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001642 cmpq %rsi, %rcx + 0x0f, 0x87, 0xdc, 0x26, 0x00, 0x00, //0x00001645 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000164b leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000164f cmpl $1819047278, $-1(%r14,%rcx) + 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00001658 je LBB0_276 + 0xe9, 0x37, 0x27, 0x00, 0x00, //0x0000165e jmp LBB0_270 + //0x00001663 LBB0_274 + 0x49, 0x8b, 0x0f, //0x00001663 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001666 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000166b movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000166f leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001673 cmpq %rsi, %rcx + 0x0f, 0x87, 0xab, 0x26, 0x00, 0x00, //0x00001676 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000167c leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001680 cmpl $1702195828, $-1(%r14,%rcx) + 0x0f, 0x85, 0x52, 0x27, 0x00, 0x00, //0x00001689 jne LBB0_717 + //0x0000168f LBB0_276 + 0x48, 0x8d, 0x51, 0x03, //0x0000168f leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00001693 movq %rdx, (%r15) + 0x48, 0x85, 0xc9, //0x00001696 testq %rcx, %rcx + 0x0f, 0x8f, 0x01, 0xed, 0xff, 0xff, //0x00001699 jg LBB0_3 + 0xe9, 0x71, 0x26, 0x00, 0x00, //0x0000169f jmp LBB0_728 + //0x000016a4 LBB0_277 + 0x41, 0xf6, 0xc3, 0x40, //0x000016a4 testb $64, %r11b + 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x000016a8 jne LBB0_360 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000016ae movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000016b3 movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000016b6 cmpq $4095, %rcx + 0x0f, 0x8f, 0xe6, 0x25, 0x00, 0x00, //0x000016bd jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000016c3 leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000016c7 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000016ca movq $6, $8(%rdx,%rcx,8) + 0xe9, 0xc8, 0xec, 0xff, 0xff, //0x000016d3 jmp LBB0_3 + //0x000016d8 LBB0_280 + 0x89, 0xc9, //0x000016d8 movl %ecx, %ecx + 0x49, 0x01, 0xca, //0x000016da addq %rcx, %r10 + 0x4d, 0x01, 0xfa, //0x000016dd addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000016e0 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000016e5 movq (%rsp), %r11 + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000016e9 jmp LBB0_282 + //0x000016ee LBB0_281 + 0x49, 0x01, 0xca, //0x000016ee addq %rcx, %r10 + //0x000016f1 LBB0_282 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000016f1 movq $-1, %rcx + 0x48, 0x8b, 0x74, 0x24, 0x30, //0x000016f8 movq $48(%rsp), %rsi + 0x48, 0x85, 0xf6, //0x000016fd testq %rsi, %rsi + 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001700 movq $40(%rsp), %rdx + 0x0f, 0x84, 0xf6, 0x25, 0x00, 0x00, //0x00001705 je LBB0_708 + 0x48, 0x85, 0xd2, //0x0000170b testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x1d, 0xaa, 0xea, 0xff, 0xff, //0x0000170e vmovdqu $-5462(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x84, 0xe5, 0x25, 0x00, 0x00, //0x00001716 je LBB0_708 + 0x4d, 0x85, 0xed, //0x0000171c testq %r13, %r13 + 0x0f, 0x84, 0xdc, 0x25, 0x00, 0x00, //0x0000171f je LBB0_708 + 0x4d, 0x29, 0xc2, //0x00001725 subq %r8, %r10 + 0x49, 0x8d, 0x4a, 0xff, //0x00001728 leaq $-1(%r10), %rcx + 0x48, 0x39, 0xce, //0x0000172c cmpq %rcx, %rsi + 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000172f je LBB0_291 + 0x48, 0x39, 0xca, //0x00001735 cmpq %rcx, %rdx + 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001738 je LBB0_291 + 0x49, 0x39, 0xcd, //0x0000173e cmpq %rcx, %r13 + 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x00001741 je LBB0_291 + 0x48, 0x85, 0xd2, //0x00001747 testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x2d, 0x6e, 0xe9, 0xff, 0xff, //0x0000174a vmovdqu $-5778(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x86, 0xe9, 0xff, 0xff, //0x00001752 vmovdqu $-5754(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x9e, 0xe9, 0xff, 0xff, //0x0000175a vmovdqu $-5730(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xb6, 0xe9, 0xff, 0xff, //0x00001762 vmovdqu $-5706(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000176a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x89, 0xea, 0xff, 0xff, //0x0000176f vmovdqu $-5495(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xa1, 0xea, 0xff, 0xff, //0x00001777 vmovdqu $-5471(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb9, 0xea, 0xff, 0xff, //0x0000177f vmovdqu $-5447(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xea, 0xff, 0xff, //0x00001787 vmovdqu $-5551(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xeb, 0xff, 0xff, //0x0000178f vmovdqu $-5367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x8e, 0xa5, 0x00, 0x00, 0x00, //0x00001797 jle LBB0_297 + 0x48, 0x8d, 0x4a, 0xff, //0x0000179d leaq $-1(%rdx), %rcx + 0x49, 0x39, 0xcd, //0x000017a1 cmpq %rcx, %r13 + 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000017a4 je LBB0_297 + 0x48, 0xf7, 0xd2, //0x000017aa notq %rdx + 0x49, 0x89, 0xd2, //0x000017ad movq %rdx, %r10 + 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000017b0 jmp LBB0_292 + //0x000017b5 LBB0_291 + 0x49, 0xf7, 0xda, //0x000017b5 negq %r10 + 0xc5, 0xfe, 0x6f, 0x2d, 0x00, 0xe9, 0xff, 0xff, //0x000017b8 vmovdqu $-5888(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x18, 0xe9, 0xff, 0xff, //0x000017c0 vmovdqu $-5864(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x30, 0xe9, 0xff, 0xff, //0x000017c8 vmovdqu $-5840(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x48, 0xe9, 0xff, 0xff, //0x000017d0 vmovdqu $-5816(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000017d8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x1b, 0xea, 0xff, 0xff, //0x000017dd vmovdqu $-5605(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x33, 0xea, 0xff, 0xff, //0x000017e5 vmovdqu $-5581(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x4b, 0xea, 0xff, 0xff, //0x000017ed vmovdqu $-5557(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xe3, 0xe9, 0xff, 0xff, //0x000017f5 vmovdqu $-5661(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x9b, 0xea, 0xff, 0xff, //0x000017fd vmovdqu $-5477(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + //0x00001805 LBB0_292 + 0xc5, 0x7e, 0x6f, 0x1d, 0x33, 0xe9, 0xff, 0xff, //0x00001805 vmovdqu $-5837(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x4b, 0xe9, 0xff, 0xff, //0x0000180d vmovdqu $-5813(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + //0x00001815 LBB0_293 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00001815 movq $16(%rsp), %r13 + //0x0000181a LBB0_294 + 0x4d, 0x85, 0xd2, //0x0000181a testq %r10, %r10 + 0x0f, 0x88, 0xdb, 0x24, 0x00, 0x00, //0x0000181d js LBB0_707 + 0x49, 0x8b, 0x0f, //0x00001823 movq (%r15), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x00001826 addq $-1, %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x0000182a vmovdqa %ymm0, %ymm13 + //0x0000182e LBB0_296 + 0x4c, 0x01, 0xd1, //0x0000182e addq %r10, %rcx + 0x49, 0x89, 0x0f, //0x00001831 movq %rcx, (%r15) + 0x4d, 0x85, 0xed, //0x00001834 testq %r13, %r13 + 0x0f, 0x8f, 0x63, 0xeb, 0xff, 0xff, //0x00001837 jg LBB0_3 + 0xe9, 0xd3, 0x24, 0x00, 0x00, //0x0000183d jmp LBB0_728 + //0x00001842 LBB0_297 + 0x48, 0x89, 0xf1, //0x00001842 movq %rsi, %rcx + 0x4c, 0x09, 0xe9, //0x00001845 orq %r13, %rcx + 0x0f, 0x99, 0xc1, //0x00001848 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0xed, 0xe8, 0xff, 0xff, //0x0000184b vmovdqu $-5907(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x05, 0xe9, 0xff, 0xff, //0x00001853 vmovdqu $-5883(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0x6d, 0x09, 0x00, 0x00, //0x0000185b js LBB0_395 + 0x4c, 0x39, 0xee, //0x00001861 cmpq %r13, %rsi + 0x0f, 0x8c, 0x64, 0x09, 0x00, 0x00, //0x00001864 jl LBB0_395 + 0x48, 0xf7, 0xd6, //0x0000186a notq %rsi + 0x49, 0x89, 0xf2, //0x0000186d movq %rsi, %r10 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x00001870 jmp LBB0_293 + //0x00001875 LBB0_300 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001875 movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000187a movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x0000187e cmpq %rcx, %rdx + 0x0f, 0x82, 0xff, 0x25, 0x00, 0x00, //0x00001881 jb LBB0_162 + //0x00001887 LBB0_301 + 0x48, 0x01, 0xc8, //0x00001887 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000188a addq $1, %rax + //0x0000188e LBB0_302 + 0x48, 0x85, 0xc0, //0x0000188e testq %rax, %rax + 0x0f, 0x88, 0x2a, 0x24, 0x00, 0x00, //0x00001891 js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001897 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x0000189c movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x0000189f testq %r9, %r9 + 0x0f, 0x8e, 0x32, 0x24, 0x00, 0x00, //0x000018a2 jle LBB0_475 + //0x000018a8 LBB0_304 + 0x49, 0x8b, 0x0a, //0x000018a8 movq (%r10), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000018ab cmpq $4095, %rcx + 0x0f, 0x8f, 0xf1, 0x23, 0x00, 0x00, //0x000018b2 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000018b8 leaq $1(%rcx), %rax + 0x49, 0x89, 0x02, //0x000018bc movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xca, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000018bf movq $4, $8(%r10,%rcx,8) + 0xe9, 0xd3, 0xea, 0xff, 0xff, //0x000018c8 jmp LBB0_3 + //0x000018cd LBB0_306 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000018cd movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000018d2 movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000018d6 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000018d9 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000018dd subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000018e0 cmpq $32, %r10 + 0x0f, 0x8c, 0xac, 0x00, 0x00, 0x00, //0x000018e4 jl LBB0_316 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000018ea movl $32, %edx + 0x31, 0xf6, //0x000018ef xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000018f1 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018f4 .p2align 4, 0x90 + //0x00001900 LBB0_308 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001900 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00001906 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x0000190a vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x0000190e vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00001912 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00001916 testl %ebx, %ebx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001918 jne LBB0_311 + 0x4d, 0x85, 0xff, //0x0000191e testq %r15, %r15 + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001921 jne LBB0_311 + 0x45, 0x31, 0xff, //0x00001927 xorl %r15d, %r15d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x0000192a jmp LBB0_312 + 0x90, //0x0000192f .p2align 4, 0x90 + //0x00001930 LBB0_311 + 0x44, 0x89, 0xf9, //0x00001930 movl %r15d, %ecx + 0xf7, 0xd1, //0x00001933 notl %ecx + 0x21, 0xd9, //0x00001935 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00001937 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x0000193b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x0000193e movl %r13d, %edi + 0xf7, 0xd7, //0x00001941 notl %edi + 0x21, 0xdf, //0x00001943 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001945 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x0000194b xorl %r15d, %r15d + 0x01, 0xcf, //0x0000194e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00001950 setb %r15b + 0x01, 0xff, //0x00001954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001956 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x0000195c andl %r13d, %edi + 0xf7, 0xd7, //0x0000195f notl %edi + 0x41, 0x21, 0xfb, //0x00001961 andl %edi, %r11d + //0x00001964 LBB0_312 + 0x4d, 0x85, 0xdb, //0x00001964 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0xf1, 0xff, 0xff, //0x00001967 jne LBB0_104 + 0x48, 0x83, 0xc6, 0x20, //0x0000196d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00001971 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001975 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00001979 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x0000197d cmpq $63, %rcx + 0x0f, 0x8f, 0x79, 0xff, 0xff, 0xff, //0x00001981 jg LBB0_308 + 0x4d, 0x85, 0xff, //0x00001987 testq %r15, %r15 + 0x0f, 0x85, 0xad, 0x1e, 0x00, 0x00, //0x0000198a jne LBB0_645 + 0x49, 0x01, 0xf1, //0x00001990 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00001993 subq %rsi, %r10 + //0x00001996 LBB0_316 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001996 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000199b movq (%rsp), %r11 + 0x4d, 0x85, 0xd2, //0x0000199f testq %r10, %r10 + 0x0f, 0x8f, 0x07, 0x1f, 0x00, 0x00, //0x000019a2 jg LBB0_649 + 0xe9, 0x68, 0x23, 0x00, 0x00, //0x000019a8 jmp LBB0_728 + //0x000019ad LBB0_317 + 0x4c, 0x89, 0xde, //0x000019ad movq %r11, %rsi + 0x48, 0x29, 0xc6, //0x000019b0 subq %rax, %rsi + 0x48, 0x83, 0xfe, 0x20, //0x000019b3 cmpq $32, %rsi + 0x0f, 0x82, 0xe8, 0x13, 0x00, 0x00, //0x000019b7 jb LBB0_539 + 0x48, 0x89, 0xc7, //0x000019bd movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x000019c0 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x000019c3 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x000019c7 leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x06, //0x000019cb leaq (%r14,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x000019cf addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x000019d3 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000019d6 .p2align 4, 0x90 + //0x000019e0 LBB0_319 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x000019e0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x000019e6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x000019ea vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0xaa, 0xe7, 0xff, 0xff, //0x000019ee vpcmpeqb $-6230(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x000019f6 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000019fa vpmovmskb %ymm0, %ecx + 0x85, 0xc9, //0x000019fe testl %ecx, %ecx + 0x0f, 0x85, 0x57, 0x07, 0x00, 0x00, //0x00001a00 jne LBB0_388 + 0x48, 0x83, 0xc3, 0x20, //0x00001a06 addq $32, %rbx + 0x49, 0x8d, 0x0c, 0x3b, //0x00001a0a leaq (%r11,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001a0e addq $-32, %rcx + 0x48, 0x83, 0xc7, 0xe0, //0x00001a12 addq $-32, %rdi + 0x49, 0x83, 0xc0, 0x20, //0x00001a16 addq $32, %r8 + 0x48, 0x83, 0xc2, 0x20, //0x00001a1a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00001a1e addq $32, %rsi + 0x48, 0x83, 0xf9, 0x1f, //0x00001a22 cmpq $31, %rcx + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00001a26 ja LBB0_319 + 0x4d, 0x89, 0xf0, //0x00001a2c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00001a2f subq %rdi, %r8 + 0x49, 0x01, 0xfb, //0x00001a32 addq %rdi, %r11 + 0x4c, 0x89, 0xde, //0x00001a35 movq %r11, %rsi + 0x48, 0x83, 0xfe, 0x10, //0x00001a38 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00001a3c movq (%rsp), %r11 + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00001a40 jb LBB0_325 + //0x00001a46 LBB0_322 + 0x4d, 0x89, 0xf1, //0x00001a46 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00001a49 subq %r8, %r9 + 0x4c, 0x89, 0xc7, //0x00001a4c movq %r8, %rdi + 0x4c, 0x29, 0xf7, //0x00001a4f subq %r14, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00001a52 addq $1, %rdi + 0x49, 0x8d, 0x58, 0xff, //0x00001a56 leaq $-1(%r8), %rbx + 0x48, 0x89, 0xda, //0x00001a5a movq %rbx, %rdx + 0x4c, 0x29, 0xf2, //0x00001a5d subq %r14, %rdx + //0x00001a60 LBB0_323 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00001a60 vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0xa3, 0xe5, 0xff, 0xff, //0x00001a65 vpcmpeqb $-6749(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0xab, 0xe5, 0xff, 0xff, //0x00001a6d vpand $-6741(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xb3, 0xe5, 0xff, 0xff, //0x00001a75 vpcmpeqb $-6733(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00001a7d vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xc8, //0x00001a81 vpmovmskb %xmm0, %ecx + 0x85, 0xc9, //0x00001a85 testl %ecx, %ecx + 0x0f, 0x85, 0xd9, 0x10, 0x00, 0x00, //0x00001a87 jne LBB0_515 + 0x49, 0x83, 0xc0, 0x10, //0x00001a8d addq $16, %r8 + 0x48, 0x83, 0xc6, 0xf0, //0x00001a91 addq $-16, %rsi + 0x49, 0x83, 0xc1, 0xf0, //0x00001a95 addq $-16, %r9 + 0x48, 0x83, 0xc7, 0x10, //0x00001a99 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001a9d addq $16, %rdx + 0x48, 0x83, 0xc3, 0x10, //0x00001aa1 addq $16, %rbx + 0x48, 0x83, 0xfe, 0x0f, //0x00001aa5 cmpq $15, %rsi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00001aa9 ja LBB0_323 + //0x00001aaf LBB0_325 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00001aaf vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00001ab3 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001ab7 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xf6, //0x00001abc testq %rsi, %rsi + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00001abf je LBB0_333 + 0x49, 0x8d, 0x0c, 0x30, //0x00001ac5 leaq (%r8,%rsi), %rcx + //0x00001ac9 LBB0_327 + 0x41, 0x0f, 0xb6, 0x10, //0x00001ac9 movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00001acd cmpq $44, %rdx + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x00001ad1 ja LBB0_329 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00001ad7 movabsq $17596481021440, %rdi + 0x48, 0x0f, 0xa3, 0xd7, //0x00001ae1 btq %rdx, %rdi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00001ae5 jb LBB0_333 + //0x00001aeb LBB0_329 + 0x80, 0xfa, 0x5d, //0x00001aeb cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00001aee je LBB0_333 + 0x80, 0xfa, 0x7d, //0x00001af4 cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001af7 je LBB0_333 + 0x49, 0x83, 0xc0, 0x01, //0x00001afd addq $1, %r8 + 0x48, 0x83, 0xc6, 0xff, //0x00001b01 addq $-1, %rsi + 0x0f, 0x85, 0xbe, 0xff, 0xff, 0xff, //0x00001b05 jne LBB0_327 + 0x49, 0x89, 0xc8, //0x00001b0b movq %rcx, %r8 + //0x00001b0e LBB0_333 + 0x4d, 0x29, 0xf0, //0x00001b0e subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001b11 movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x00001b16 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x00001b19 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001b1d vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001b22 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x71, 0xe7, 0xff, 0xff, //0x00001b27 vmovdqu $-6287(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x89, 0xe6, 0xff, 0xff, //0x00001b2f vmovdqu $-6519(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00001b37 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00001b3b vmovdqa %ymm1, %ymm12 + 0xe9, 0x7c, 0x06, 0x00, 0x00, //0x00001b3f jmp LBB0_393 + //0x00001b44 LBB0_334 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001b44 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001b49 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001b4d movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001b50 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001b53 addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001b56 xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001b59 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001b5c xorl %r15d, %r15d + 0x31, 0xdb, //0x00001b5f xorl %ebx, %ebx + 0x49, 0x83, 0xf9, 0x40, //0x00001b61 cmpq $64, %r9 + 0x0f, 0x8d, 0x57, 0x01, 0x00, 0x00, //0x00001b65 jge LBB0_335 + //0x00001b6b LBB0_344 + 0x4d, 0x85, 0xc9, //0x00001b6b testq %r9, %r9 + 0x0f, 0x8e, 0x24, 0x23, 0x00, 0x00, //0x00001b6e jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b74 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b78 vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001b7d vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b81 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b87 vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001b8d movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001b90 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001b96 cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b9c jb LBB0_348 + 0x49, 0x83, 0xf9, 0x20, //0x00001ba2 cmpq $32, %r9 + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001ba6 jb LBB0_349 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001bac vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001bb1 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x00001bb7 addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00001bbb leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001bbf leaq $96(%rsp), %rsi + 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bc4 jmp LBB0_350 + //0x00001bc9 LBB0_348 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bc9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bce vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc5, 0xe6, 0xff, 0xff, //0x00001bd3 vmovdqu $-6459(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xdd, 0xe5, 0xff, 0xff, //0x00001bdb vmovdqu $-6691(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001be3 vmovdqa %ymm1, %ymm11 + 0xe9, 0xd6, 0x00, 0x00, 0x00, //0x00001be7 jmp LBB0_335 + //0x00001bec LBB0_349 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bec leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x00001bf1 movq %r9, %rdi + //0x00001bf4 LBB0_350 + 0x48, 0x83, 0xff, 0x10, //0x00001bf4 cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001bf8 jb LBB0_351 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bfe vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x00001c03 vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00001c07 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00001c0b addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00001c0f addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00001c13 cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c17 jae LBB0_358 + //0x00001c1d LBB0_352 + 0x48, 0x83, 0xff, 0x04, //0x00001c1d cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c21 jl LBB0_353 + //0x00001c27 LBB0_359 + 0x41, 0x8b, 0x0e, //0x00001c27 movl (%r14), %ecx + 0x89, 0x0e, //0x00001c2a movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00001c2c addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x00001c30 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00001c34 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00001c38 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c3c jae LBB0_354 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c42 jmp LBB0_355 + //0x00001c47 LBB0_351 + 0x48, 0x83, 0xff, 0x08, //0x00001c47 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c4b jb LBB0_352 + //0x00001c51 LBB0_358 + 0x49, 0x8b, 0x0e, //0x00001c51 movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x00001c54 movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x00001c57 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x00001c5b addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x00001c5f addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00001c63 cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c67 jge LBB0_359 + //0x00001c6d LBB0_353 + 0x48, 0x83, 0xff, 0x02, //0x00001c6d cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c71 jb LBB0_355 + //0x00001c77 LBB0_354 + 0x41, 0x0f, 0xb7, 0x0e, //0x00001c77 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x00001c7b movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x00001c7e addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x00001c82 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x00001c86 addq $-2, %rdi + //0x00001c8a LBB0_355 + 0x4c, 0x89, 0xf2, //0x00001c8a movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c8d leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x00001c92 testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c95 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c9a vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf9, 0xe5, 0xff, 0xff, //0x00001c9f vmovdqu $-6663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x11, 0xe5, 0xff, 0xff, //0x00001ca7 vmovdqu $-6895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001caf vmovdqa %ymm1, %ymm11 + 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x00001cb3 je LBB0_335 + 0x8a, 0x0a, //0x00001cb9 movb (%rdx), %cl + 0x88, 0x0e, //0x00001cbb movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cbd leaq $64(%rsp), %r14 + //0x00001cc2 LBB0_335 + 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001cc2 vmovdqa %ymm13, %ymm15 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cc7 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001ccc vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001cd2 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001cd6 vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001cda vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001cde vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001ce2 shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001ce6 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001ce9 movq %rdx, %rcx + 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001cec vmovdqa %ymm10, %ymm13 + 0x4c, 0x09, 0xd1, //0x00001cf1 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001cf4 jne LBB0_337 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001cfa movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001d01 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d04 jmp LBB0_338 + //0x00001d09 LBB0_337 + 0x4c, 0x89, 0xd1, //0x00001d09 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001d0c notq %rcx + 0x48, 0x21, 0xd1, //0x00001d0f andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001d12 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001d16 orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001d19 movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001d1c notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d1f movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001d29 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001d2c andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001d2f xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001d32 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001d35 setb %r10b + 0x48, 0x01, 0xd2, //0x00001d39 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d3c movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001d46 xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001d49 andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001d4c notq %rdx + //0x00001d4f LBB0_338 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001d4f vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d53 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d57 shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001d5b vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d5f vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001d63 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001d66 andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001d69 vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x28, 0xe3, 0xff, 0xff, 0x00, //0x00001d6e vpclmulqdq $0, $-7384(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001d78 vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001d7d xorq %r11, %r13 + 0xc5, 0x7e, 0x6f, 0x15, 0xf8, 0xe3, 0xff, 0xff, //0x00001d80 vmovdqu $-7176(%rip), %ymm10 /* LCPI0_7+0(%rip) */ + 0xc5, 0xad, 0x74, 0xd1, //0x00001d88 vpcmpeqb %ymm1, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d8c vpmovmskb %ymm2, %esi + 0xc5, 0xad, 0x74, 0xd0, //0x00001d90 vpcmpeqb %ymm0, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d94 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d98 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001d9c orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001d9f movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001da2 notq %rcx + 0x48, 0x21, 0xce, //0x00001da5 andq %rcx, %rsi + 0xc5, 0xfe, 0x6f, 0x15, 0xf0, 0xe3, 0xff, 0xff, //0x00001da8 vmovdqu $-7184(%rip), %ymm2 /* LCPI0_8+0(%rip) */ + 0xc5, 0xf5, 0x74, 0xca, //0x00001db0 vpcmpeqb %ymm2, %ymm1, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001db4 vpmovmskb %ymm1, %edi + 0xc5, 0xfd, 0x74, 0xc2, //0x00001db8 vpcmpeqb %ymm2, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001dbc vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001dc0 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001dc4 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001dc7 andq %rcx, %rdi + 0x0f, 0x84, 0x4d, 0x00, 0x00, 0x00, //0x00001dca je LBB0_342 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001dd0 movq (%rsp), %r11 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001dd4 vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001dd9 vmovdqa %ymm15, %ymm13 + 0xc5, 0x7e, 0x6f, 0x3d, 0x5a, 0xe4, 0xff, 0xff, //0x00001dde vmovdqu $-7078(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001de6 .p2align 4, 0x90 + //0x00001df0 LBB0_340 + 0x48, 0x8d, 0x4f, 0xff, //0x00001df0 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001df4 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001df7 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001dfa popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001dff addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001e02 cmpq %rbx, %rdx + 0x0f, 0x86, 0x1a, 0x03, 0x00, 0x00, //0x00001e05 jbe LBB0_386 0x48, 0x83, 0xc3, 0x01, //0x00001e0b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001e0f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_362 - 0xe9, 0xb8, 0xfe, 0xff, 0xff, //0x00001e18 jmp LBB0_356 - //0x00001e1d LBB0_364 - 0x4d, 0x85, 0xc9, //0x00001e1d testq %r9, %r9 - 0x0f, 0x8e, 0x57, 0x1f, 0x00, 0x00, //0x00001e20 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00001e26 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001e2a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001e2e vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001e33 vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001e37 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e3d vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001e43 movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001e46 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001e4b cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001e50 jb LBB0_368 - 0x49, 0x83, 0xf9, 0x20, //0x00001e56 cmpq $32, %r9 - 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001e5a jb LBB0_369 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001e60 vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e65 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001e6b addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001e6f leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001e73 leaq $96(%rsp), %rsi - 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001e78 jmp LBB0_370 - //0x00001e7d LBB0_368 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001e7d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001e82 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xe4, 0xff, 0xff, //0x00001e87 vmovdqu $-7151(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xe3, 0xff, 0xff, //0x00001e8f vmovdqu $-7383(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001e97 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001e9b vmovdqa %ymm2, %ymm12 - 0xe9, 0x52, 0xfe, 0xff, 0xff, //0x00001e9f jmp LBB0_358 - //0x00001ea4 LBB0_369 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001ea4 leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001ea9 movq %r9, %rdi - //0x00001eac LBB0_370 - 0x48, 0x83, 0xff, 0x10, //0x00001eac cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001eb0 jb LBB0_371 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001eb6 vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001ebb vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001ebf addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001ec3 addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001ec7 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001ecb cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001ecf jae LBB0_378 - //0x00001ed5 LBB0_372 - 0x48, 0x83, 0xff, 0x04, //0x00001ed5 cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001ed9 jl LBB0_373 - //0x00001edf LBB0_379 - 0x41, 0x8b, 0x06, //0x00001edf movl (%r14), %eax - 0x89, 0x06, //0x00001ee2 movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001ee4 addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001ee8 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001eec addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001ef0 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001ef4 jae LBB0_374 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001efa jmp LBB0_375 - //0x00001eff LBB0_371 - 0x48, 0x83, 0xff, 0x08, //0x00001eff cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001f03 jb LBB0_372 - //0x00001f09 LBB0_378 - 0x49, 0x8b, 0x06, //0x00001f09 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001f0c movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001f0f addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001f13 addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001f17 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001f1b cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001f1f jge LBB0_379 - //0x00001f25 LBB0_373 - 0x48, 0x83, 0xff, 0x02, //0x00001f25 cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001f29 jb LBB0_375 - //0x00001f2f LBB0_374 - 0x41, 0x0f, 0xb7, 0x06, //0x00001f2f movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001f33 movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001f36 addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001f3a addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001f3e addq $-2, %rdi - //0x00001f42 LBB0_375 - 0x4c, 0x89, 0xf2, //0x00001f42 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f45 leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001f4a testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001f4d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001f52 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x41, 0xe3, 0xff, 0xff, //0x00001f57 vmovdqu $-7359(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x59, 0xe2, 0xff, 0xff, //0x00001f5f vmovdqu $-7591(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001f67 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001f6b vmovdqa %ymm2, %ymm12 - 0x0f, 0x84, 0x81, 0xfd, 0xff, 0xff, //0x00001f6f je LBB0_358 - 0x8a, 0x02, //0x00001f75 movb (%rdx), %al - 0x88, 0x06, //0x00001f77 movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f79 leaq $64(%rsp), %r14 - 0xe9, 0x73, 0xfd, 0xff, 0xff, //0x00001f7e jmp LBB0_358 - //0x00001f83 LBB0_380 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001f83 movq $16(%rsp), %rdi - 0x48, 0x8b, 0x47, 0x08, //0x00001f88 movq $8(%rdi), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00001f8c bsfq %rdx, %rcx - 0x4c, 0x29, 0xc9, //0x00001f90 subq %r9, %rcx - 0x48, 0x01, 0xc8, //0x00001f93 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001f96 addq $1, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001f9a movq %rax, (%r13) - 0x48, 0x8b, 0x4f, 0x08, //0x00001f9e movq $8(%rdi), %rcx - 0x48, 0x39, 0xc8, //0x00001fa2 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x00001fa5 cmovaq %rcx, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001fa9 movq %rax, (%r13) - 0x0f, 0x87, 0xe2, 0x1b, 0x00, 0x00, //0x00001fad ja LBB0_711 - 0x4d, 0x85, 0xc0, //0x00001fb3 testq %r8, %r8 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001fb6 movq $24(%rsp), %r11 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001fbb movq $8(%rsp), %r15 - 0x0f, 0x8f, 0xda, 0xe3, 0xff, 0xff, //0x00001fc0 jg LBB0_3 - 0xe9, 0x61, 0x1b, 0x00, 0x00, //0x00001fc6 jmp LBB0_679 - //0x00001fcb LBB0_382 - 0x0f, 0xbc, 0xce, //0x00001fcb bsfl %esi, %ecx - 0x48, 0x29, 0xd1, //0x00001fce subq %rdx, %rcx - //0x00001fd1 LBB0_383 - 0x48, 0x8b, 0x1c, 0x24, //0x00001fd1 movq (%rsp), %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00001fd5 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00001fd9 testq %rbx, %rbx - 0x0f, 0x8f, 0xbe, 0xe3, 0xff, 0xff, //0x00001fdc jg LBB0_3 - 0xe9, 0xea, 0x1c, 0x00, 0x00, //0x00001fe2 jmp LBB0_698 - //0x00001fe7 LBB0_384 - 0x49, 0x8d, 0x41, 0xff, //0x00001fe7 leaq $-1(%r9), %rax - 0x48, 0x39, 0xc2, //0x00001feb cmpq %rax, %rdx - 0x49, 0xf7, 0xd1, //0x00001fee notq %r9 - 0x4d, 0x0f, 0x45, 0xcd, //0x00001ff1 cmovneq %r13, %r9 - 0x84, 0xc9, //0x00001ff5 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xe9, //0x00001ff7 cmovneq %r9, %r13 - 0xe9, 0x21, 0xf7, 0xff, 0xff, //0x00001ffb jmp LBB0_290 - //0x00002000 LBB0_385 - 0x4d, 0x29, 0xc8, //0x00002000 subq %r9, %r8 - 0x0f, 0x84, 0x5a, 0x1d, 0x00, 0x00, //0x00002003 je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00002009 cmpq $64, %r8 - 0x0f, 0x82, 0xdb, 0x0b, 0x00, 0x00, //0x0000200d jb LBB0_518 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002013 movq $-1, %r10 - 0x4c, 0x89, 0xc9, //0x0000201a movq %r9, %rcx - 0x45, 0x31, 0xdb, //0x0000201d xorl %r11d, %r11d - //0x00002020 .p2align 4, 0x90 - //0x00002020 LBB0_388 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00002020 vmovdqu (%r14,%rcx), %ymm0 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00002026 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000202d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00002031 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00002035 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00002039 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000203d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00002041 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00002045 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00002049 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000204d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002051 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00002056 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000205a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000205e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00002062 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00002065 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00002069 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000206d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002070 jne LBB0_399 - 0x4d, 0x85, 0xdb, //0x00002076 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002079 jne LBB0_401 - 0x45, 0x31, 0xdb, //0x0000207f xorl %r11d, %r11d - //0x00002082 LBB0_391 - 0xc5, 0xbd, 0x64, 0xc8, //0x00002082 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002086 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000208b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000208f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00002093 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00002096 testq %rdi, %rdi - 0x0f, 0x85, 0x87, 0x00, 0x00, 0x00, //0x00002099 jne LBB0_402 - 0x48, 0x85, 0xf6, //0x0000209f testq %rsi, %rsi - 0x0f, 0x85, 0x7c, 0x1c, 0x00, 0x00, //0x000020a2 jne LBB0_712 - 0x49, 0x83, 0xc0, 0xc0, //0x000020a8 addq $-64, %r8 - 0x48, 0x83, 0xc1, 0x40, //0x000020ac addq $64, %rcx - 0x49, 0x83, 0xf8, 0x3f, //0x000020b0 cmpq $63, %r8 - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000020b4 ja LBB0_388 - 0xe9, 0x39, 0x09, 0x00, 0x00, //0x000020ba jmp LBB0_394 - //0x000020bf LBB0_399 - 0x49, 0x83, 0xfa, 0xff, //0x000020bf cmpq $-1, %r10 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000020c3 jne LBB0_401 - 0x4c, 0x0f, 0xbc, 0xd2, //0x000020c9 bsfq %rdx, %r10 - 0x49, 0x01, 0xca, //0x000020cd addq %rcx, %r10 - //0x000020d0 LBB0_401 - 0x4c, 0x89, 0xd8, //0x000020d0 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x000020d3 notq %rax - 0x48, 0x21, 0xd0, //0x000020d6 andq %rdx, %rax - 0x48, 0x89, 0x0c, 0x24, //0x000020d9 movq %rcx, (%rsp) - 0x48, 0x8d, 0x0c, 0x00, //0x000020dd leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd9, //0x000020e1 orq %r11, %rcx - 0x48, 0x89, 0xcb, //0x000020e4 movq %rcx, %rbx - 0x48, 0xf7, 0xd3, //0x000020e7 notq %rbx - 0x48, 0x21, 0xd3, //0x000020ea andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020ed movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000020f7 andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000020fa xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000020fd addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x00002100 setb %r11b - 0x48, 0x01, 0xdb, //0x00002104 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002107 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00002111 xorq %rax, %rbx - 0x48, 0x21, 0xcb, //0x00002114 andq %rcx, %rbx - 0x48, 0x8b, 0x0c, 0x24, //0x00002117 movq (%rsp), %rcx - 0x48, 0xf7, 0xd3, //0x0000211b notq %rbx - 0x48, 0x21, 0xdf, //0x0000211e andq %rbx, %rdi - 0xe9, 0x5c, 0xff, 0xff, 0xff, //0x00002121 jmp LBB0_391 - //0x00002126 LBB0_402 - 0x48, 0x0f, 0xbc, 0xc7, //0x00002126 bsfq %rdi, %rax - 0x48, 0x85, 0xf6, //0x0000212a testq %rsi, %rsi - 0x0f, 0x84, 0x9f, 0x03, 0x00, 0x00, //0x0000212d je LBB0_458 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002133 bsfq %rsi, %rdx - 0xe9, 0x9b, 0x03, 0x00, 0x00, //0x00002137 jmp LBB0_459 - //0x0000213c LBB0_404 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x0000213c movq $56(%rsp), %rax - 0x8a, 0x48, 0x01, //0x00002141 movb $1(%rax), %cl - 0x80, 0xc1, 0xd2, //0x00002144 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00002147 cmpb $55, %cl - 0x0f, 0x87, 0x80, 0xf3, 0xff, 0xff, //0x0000214a ja LBB0_257 - 0x0f, 0xb6, 0xc1, //0x00002150 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002153 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000215d btq %rax, %rcx - 0x48, 0x8b, 0x0c, 0x24, //0x00002161 movq (%rsp), %rcx - 0x0f, 0x83, 0x1e, 0x08, 0x00, 0x00, //0x00002165 jae LBB0_498 - //0x0000216b LBB0_406 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000216b movq $-1, %r8 - 0x49, 0x83, 0xfa, 0x20, //0x00002172 cmpq $32, %r10 - 0x0f, 0x82, 0x1c, 0x0a, 0x00, 0x00, //0x00002176 jb LBB0_515 - 0x45, 0x31, 0xc9, //0x0000217c xorl %r9d, %r9d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000217f movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002186 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x0000218f movq $56(%rsp), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002194 .p2align 4, 0x90 - //0x000021a0 LBB0_408 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x0b, //0x000021a0 vmovdqu (%r11,%r9), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x000021a6 vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x000021ab vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x000021af vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x000021b3 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xa1, 0xe0, 0xff, 0xff, //0x000021b7 vpcmpeqb $-8031(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x000021bf vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x000021c3 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xb1, 0xe0, 0xff, 0xff, //0x000021c7 vpcmpeqb $-8015(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000021cf vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000021d3 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xfb, //0x000021d7 vpmovmskb %ymm3, %edi - 0xc5, 0xfd, 0xd7, 0xf2, //0x000021db vpmovmskb %ymm2, %esi - 0xc5, 0xf5, 0xeb, 0xc0, //0x000021df vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000021e3 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000021e7 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000021eb vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000021ef notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000021f2 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000021f6 cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000021f9 je LBB0_410 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000021ff movl $-1, %eax - 0xd3, 0xe0, //0x00002204 shll %cl, %eax - 0xf7, 0xd0, //0x00002206 notl %eax - 0x21, 0xc2, //0x00002208 andl %eax, %edx - 0x21, 0xc7, //0x0000220a andl %eax, %edi - 0x21, 0xf0, //0x0000220c andl %esi, %eax - 0x89, 0xc6, //0x0000220e movl %eax, %esi - //0x00002210 LBB0_410 - 0x8d, 0x5a, 0xff, //0x00002210 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00002213 andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xa3, 0xdf, 0xff, 0xff, //0x00002215 vmovdqu $-8285(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x12, 0x07, 0x00, 0x00, //0x0000221d jne LBB0_492 - 0x8d, 0x5f, 0xff, //0x00002223 leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x00002226 andl %edi, %ebx - 0x0f, 0x85, 0x07, 0x07, 0x00, 0x00, //0x00002228 jne LBB0_492 - 0x8d, 0x5e, 0xff, //0x0000222e leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00002231 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x06, 0x00, 0x00, //0x00002233 jne LBB0_492 - 0x85, 0xd2, //0x00002239 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000223b je LBB0_416 - 0x0f, 0xbc, 0xd2, //0x00002241 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00002244 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x0000224a jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002250 addq %r9, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00002253 movq %rdx, $40(%rsp) - //0x00002258 LBB0_416 - 0x85, 0xff, //0x00002258 testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000225a je LBB0_419 - 0x0f, 0xbc, 0xd7, //0x00002260 bsfl %edi, %edx - 0x49, 0x83, 0xff, 0xff, //0x00002263 cmpq $-1, %r15 - 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x00002267 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x0000226d addq %r9, %rdx - 0x49, 0x89, 0xd7, //0x00002270 movq %rdx, %r15 - //0x00002273 LBB0_419 - 0x85, 0xf6, //0x00002273 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002275 je LBB0_422 - 0x0f, 0xbc, 0xd6, //0x0000227b bsfl %esi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x0000227e cmpq $-1, %r8 - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x00002282 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002288 addq %r9, %rdx - 0x49, 0x89, 0xd0, //0x0000228b movq %rdx, %r8 - //0x0000228e LBB0_422 - 0x83, 0xf9, 0x20, //0x0000228e cmpl $32, %ecx - 0x0f, 0x85, 0xf9, 0x01, 0x00, 0x00, //0x00002291 jne LBB0_456 - 0x49, 0x83, 0xc2, 0xe0, //0x00002297 addq $-32, %r10 - 0x49, 0x83, 0xc1, 0x20, //0x0000229b addq $32, %r9 - 0x49, 0x83, 0xfa, 0x1f, //0x0000229f cmpq $31, %r10 - 0x0f, 0x87, 0xf7, 0xfe, 0xff, 0xff, //0x000022a3 ja LBB0_408 - 0xc5, 0xf8, 0x77, //0x000022a9 vzeroupper - 0x4d, 0x01, 0xd9, //0x000022ac addq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000022af movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x000022b4 cmpq $16, %r10 - 0x0f, 0x82, 0x35, 0x01, 0x00, 0x00, //0x000022b8 jb LBB0_443 - //0x000022be LBB0_425 - 0x4c, 0x89, 0xcb, //0x000022be movq %r9, %rbx - 0x4c, 0x29, 0xdb, //0x000022c1 subq %r11, %rbx - 0x45, 0x31, 0xed, //0x000022c4 xorl %r13d, %r13d - //0x000022c7 LBB0_426 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x29, //0x000022c7 vmovdqu (%r9,%r13), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x6b, 0xdd, 0xff, 0xff, //0x000022cd vpcmpgtb $-8853(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022d5 vmovdqu $-8845(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x000022dd vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x000022e1 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022e5 vpcmpeqb $-8845(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x7b, 0xdd, 0xff, 0xff, //0x000022ed vpcmpeqb $-8837(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x000022f5 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0x1f, 0xdd, 0xff, 0xff, //0x000022f9 vpand $-8929(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x77, 0xdd, 0xff, 0xff, //0x00002301 vpcmpeqb $-8841(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x7f, 0xdd, 0xff, 0xff, //0x00002309 vpcmpeqb $-8833(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00002311 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00002315 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00002319 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xd8, //0x0000231d vpmovmskb %xmm0, %r11d - 0xc5, 0xf9, 0xd7, 0xd3, //0x00002321 vpmovmskb %xmm3, %edx - 0xc5, 0xf9, 0xd7, 0xfa, //0x00002325 vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00002329 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x0000232d notl %eax - 0x0f, 0xbc, 0xc8, //0x0000232f bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00002332 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002335 je LBB0_428 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x0000233b movl $-1, %eax - 0xd3, 0xe0, //0x00002340 shll %cl, %eax - 0xf7, 0xd0, //0x00002342 notl %eax - 0x41, 0x21, 0xc3, //0x00002344 andl %eax, %r11d - 0x21, 0xc2, //0x00002347 andl %eax, %edx - 0x21, 0xf8, //0x00002349 andl %edi, %eax - 0x89, 0xc7, //0x0000234b movl %eax, %edi - //0x0000234d LBB0_428 - 0x41, 0x8d, 0x73, 0xff, //0x0000234d leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x00002351 andl %r11d, %esi - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x00002354 jne LBB0_499 - 0x8d, 0x72, 0xff, //0x0000235a leal $-1(%rdx), %esi - 0x21, 0xd6, //0x0000235d andl %edx, %esi - 0x0f, 0x85, 0xdd, 0x06, 0x00, 0x00, //0x0000235f jne LBB0_499 - 0x8d, 0x77, 0xff, //0x00002365 leal $-1(%rdi), %esi - 0x21, 0xfe, //0x00002368 andl %edi, %esi - 0x0f, 0x85, 0xd2, 0x06, 0x00, 0x00, //0x0000236a jne LBB0_499 - 0x45, 0x85, 0xdb, //0x00002370 testl %r11d, %r11d - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00002373 je LBB0_434 - 0x41, 0x0f, 0xbc, 0xf3, //0x00002379 bsfl %r11d, %esi - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000237d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x9d, 0x07, 0x00, 0x00, //0x00002383 jne LBB0_509 - 0x48, 0x01, 0xde, //0x00002389 addq %rbx, %rsi - 0x4c, 0x01, 0xee, //0x0000238c addq %r13, %rsi - 0x48, 0x89, 0x74, 0x24, 0x28, //0x0000238f movq %rsi, $40(%rsp) - //0x00002394 LBB0_434 - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002394 movq $56(%rsp), %r11 - 0x85, 0xd2, //0x00002399 testl %edx, %edx - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000239b je LBB0_437 - 0x0f, 0xbc, 0xd2, //0x000023a1 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000023a4 cmpq $-1, %r15 - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x000023a8 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023ae addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023b1 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000023b4 movq %rdx, %r15 - //0x000023b7 LBB0_437 - 0x85, 0xff, //0x000023b7 testl %edi, %edi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000023b9 je LBB0_440 - 0x0f, 0xbc, 0xd7, //0x000023bf bsfl %edi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x000023c2 cmpq $-1, %r8 - 0x0f, 0x85, 0xca, 0x06, 0x00, 0x00, //0x000023c6 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023cc addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023cf addq %r13, %rdx - 0x49, 0x89, 0xd0, //0x000023d2 movq %rdx, %r8 - //0x000023d5 LBB0_440 - 0x83, 0xf9, 0x10, //0x000023d5 cmpl $16, %ecx - 0x0f, 0x85, 0x82, 0x01, 0x00, 0x00, //0x000023d8 jne LBB0_466 - 0x49, 0x83, 0xc2, 0xf0, //0x000023de addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000023e2 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000023e6 cmpq $15, %r10 - 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x000023ea ja LBB0_426 - 0x4d, 0x01, 0xe9, //0x000023f0 addq %r13, %r9 - //0x000023f3 LBB0_443 - 0x4d, 0x85, 0xd2, //0x000023f3 testq %r10, %r10 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000023f6 movq $48(%rsp), %r13 - 0x0f, 0x84, 0x89, 0x01, 0x00, 0x00, //0x000023fb je LBB0_468 - 0x4b, 0x8d, 0x34, 0x11, //0x00002401 leaq (%r9,%r10), %rsi - 0x4c, 0x89, 0xcf, //0x00002405 movq %r9, %rdi - 0x4c, 0x29, 0xdf, //0x00002408 subq %r11, %rdi - 0x31, 0xc9, //0x0000240b xorl %ecx, %ecx - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x0000240d jmp LBB0_448 - //0x00002412 LBB0_445 - 0x49, 0x83, 0xf8, 0xff, //0x00002412 cmpq $-1, %r8 - 0x0f, 0x85, 0x2e, 0x06, 0x00, 0x00, //0x00002416 jne LBB0_500 - 0x4c, 0x8d, 0x04, 0x0f, //0x0000241c leaq (%rdi,%rcx), %r8 - //0x00002420 .p2align 4, 0x90 - //0x00002420 LBB0_447 - 0x48, 0x83, 0xc1, 0x01, //0x00002420 addq $1, %rcx - 0x49, 0x39, 0xca, //0x00002424 cmpq %rcx, %r10 - 0x0f, 0x84, 0xeb, 0x04, 0x00, 0x00, //0x00002427 je LBB0_491 - //0x0000242d LBB0_448 - 0x41, 0x0f, 0xbe, 0x14, 0x09, //0x0000242d movsbl (%r9,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00002432 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00002435 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002438 jb LBB0_447 - 0x8d, 0x5a, 0xd5, //0x0000243e leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00002441 cmpl $26, %ebx - 0x0f, 0x87, 0x2a, 0x00, 0x00, 0x00, //0x00002444 ja LBB0_453 - 0x48, 0x8d, 0x15, 0x97, 0x1b, 0x00, 0x00, //0x0000244a leaq $7063(%rip), %rdx /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00002451 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00002455 addq %rdx, %rax - 0xff, 0xe0, //0x00002458 jmpq *%rax - //0x0000245a LBB0_451 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000245a cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xe4, 0x05, 0x00, 0x00, //0x00002460 jne LBB0_500 - 0x48, 0x8d, 0x04, 0x0f, //0x00002466 leaq (%rdi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x0000246a movq %rax, $40(%rsp) - 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000246f jmp LBB0_447 - //0x00002474 LBB0_453 - 0x83, 0xfa, 0x65, //0x00002474 cmpl $101, %edx - 0x0f, 0x85, 0x0a, 0x01, 0x00, 0x00, //0x00002477 jne LBB0_467 - //0x0000247d LBB0_454 - 0x49, 0x83, 0xff, 0xff, //0x0000247d cmpq $-1, %r15 - 0x0f, 0x85, 0xc3, 0x05, 0x00, 0x00, //0x00002481 jne LBB0_500 - 0x4c, 0x8d, 0x3c, 0x0f, //0x00002487 leaq (%rdi,%rcx), %r15 - 0xe9, 0x90, 0xff, 0xff, 0xff, //0x0000248b jmp LBB0_447 - //0x00002490 LBB0_456 - 0x4c, 0x01, 0xc9, //0x00002490 addq %r9, %rcx - 0x4c, 0x01, 0xd9, //0x00002493 addq %r11, %rcx - 0xc5, 0xf8, 0x77, //0x00002496 vzeroupper - 0x49, 0x89, 0xc9, //0x00002499 movq %rcx, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000249c movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x000024a3 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x000024a8 testq %rdx, %rdx - 0x0f, 0x85, 0xee, 0x00, 0x00, 0x00, //0x000024ab jne LBB0_469 - 0xe9, 0x5a, 0x18, 0x00, 0x00, //0x000024b1 jmp LBB0_709 - //0x000024b6 LBB0_676 - 0x4d, 0x29, 0xf4, //0x000024b6 subq %r14, %r12 - 0x49, 0x01, 0xd4, //0x000024b9 addq %rdx, %r12 - 0x49, 0x39, 0xdc, //0x000024bc cmpq %rbx, %r12 - 0x0f, 0x82, 0xcd, 0xe0, 0xff, 0xff, //0x000024bf jb LBB0_35 - 0xe9, 0x48, 0x16, 0x00, 0x00, //0x000024c5 jmp LBB0_677 - //0x000024ca LBB0_457 - 0x4d, 0x89, 0xfd, //0x000024ca movq %r15, %r13 - 0xe9, 0x29, 0xf1, 0xff, 0xff, //0x000024cd jmp LBB0_279 - //0x000024d2 LBB0_458 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000024d2 movl $64, %edx - //0x000024d7 LBB0_459 - 0x4d, 0x89, 0xd3, //0x000024d7 movq %r10, %r11 - 0x48, 0x39, 0xc2, //0x000024da cmpq %rax, %rdx - 0x0f, 0x82, 0x88, 0x18, 0x00, 0x00, //0x000024dd jb LBB0_719 - 0xc5, 0x7d, 0x7f, 0xea, //0x000024e3 vmovdqa %ymm13, %ymm2 - 0x48, 0x01, 0xc1, //0x000024e7 addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000024ea addq $1, %rcx - //0x000024ee LBB0_461 - 0x48, 0x85, 0xc9, //0x000024ee testq %rcx, %rcx - 0x0f, 0x88, 0xfd, 0x17, 0x00, 0x00, //0x000024f1 js LBB0_706 - 0x49, 0x89, 0x4d, 0x00, //0x000024f7 movq %rcx, (%r13) - 0x4d, 0x85, 0xc9, //0x000024fb testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000024fe movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002503 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002508 movq $8(%rsp), %r15 - 0xc5, 0x7d, 0x6f, 0xea, //0x0000250d vmovdqa %ymm2, %ymm13 - 0x0f, 0x8f, 0x89, 0xde, 0xff, 0xff, //0x00002511 jg LBB0_3 - 0xe9, 0x1d, 0x16, 0x00, 0x00, //0x00002517 jmp LBB0_463 - //0x0000251c LBB0_156 - 0x4d, 0x85, 0xff, //0x0000251c testq %r15, %r15 - 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x0000251f jne LBB0_522 - 0x49, 0x01, 0xf1, //0x00002525 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002528 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000252b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002530 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002535 movq $8(%rsp), %r15 - //0x0000253a LBB0_158 - 0x4d, 0x85, 0xd2, //0x0000253a testq %r10, %r10 - 0x0f, 0x8f, 0x9d, 0x07, 0x00, 0x00, //0x0000253d jg LBB0_526 - 0xe9, 0x4d, 0x16, 0x00, 0x00, //0x00002543 jmp LBB0_711 - //0x00002548 LBB0_464 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002548 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x0000254c bsfl %ebx, %eax - 0xe9, 0xb9, 0x01, 0x00, 0x00, //0x0000254f jmp LBB0_484 - //0x00002554 LBB0_465 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002554 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002558 movzwl %ax, %ecx - 0xe9, 0xf7, 0xe9, 0xff, 0xff, //0x0000255b jmp LBB0_176 - //0x00002560 LBB0_466 - 0x89, 0xc8, //0x00002560 movl %ecx, %eax - 0x49, 0x01, 0xc1, //0x00002562 addq %rax, %r9 - 0x4d, 0x01, 0xe9, //0x00002565 addq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002568 movq $48(%rsp), %r13 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000256d movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002574 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002579 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000257c jne LBB0_469 - 0xe9, 0x89, 0x17, 0x00, 0x00, //0x00002582 jmp LBB0_709 - //0x00002587 LBB0_467 - 0x49, 0x01, 0xc9, //0x00002587 addq %rcx, %r9 - //0x0000258a LBB0_468 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000258a movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002591 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002596 testq %rdx, %rdx - 0x0f, 0x84, 0x71, 0x17, 0x00, 0x00, //0x00002599 je LBB0_709 - //0x0000259f LBB0_469 - 0x4d, 0x85, 0xc0, //0x0000259f testq %r8, %r8 - 0x0f, 0x84, 0x68, 0x17, 0x00, 0x00, //0x000025a2 je LBB0_709 - 0x4d, 0x85, 0xff, //0x000025a8 testq %r15, %r15 - 0x0f, 0x84, 0x5f, 0x17, 0x00, 0x00, //0x000025ab je LBB0_709 - 0x4d, 0x29, 0xd9, //0x000025b1 subq %r11, %r9 - 0x49, 0x8d, 0x49, 0xff, //0x000025b4 leaq $-1(%r9), %rcx - 0x48, 0x39, 0xca, //0x000025b8 cmpq %rcx, %rdx - 0x0f, 0x84, 0x97, 0x00, 0x00, 0x00, //0x000025bb je LBB0_477 - 0x49, 0x39, 0xc8, //0x000025c1 cmpq %rcx, %r8 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000025c4 je LBB0_477 - 0x49, 0x39, 0xcf, //0x000025ca cmpq %rcx, %r15 - 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x000025cd je LBB0_477 - 0x4d, 0x85, 0xc0, //0x000025d3 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x2d, 0xe2, 0xda, 0xff, 0xff, //0x000025d6 vmovdqu $-9502(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xfa, 0xda, 0xff, 0xff, //0x000025de vmovdqu $-9478(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x12, 0xdb, 0xff, 0xff, //0x000025e6 vmovdqu $-9454(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x2a, 0xdb, 0xff, 0xff, //0x000025ee vmovdqu $-9430(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000025f6 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xfd, 0xdb, 0xff, 0xff, //0x000025fb vmovdqu $-9219(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x15, 0xdc, 0xff, 0xff, //0x00002603 vmovdqu $-9195(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x2d, 0xdc, 0xff, 0xff, //0x0000260b vmovdqu $-9171(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xc5, 0xdb, 0xff, 0xff, //0x00002613 vmovdqu $-9275(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xdc, 0xff, 0xff, //0x0000261b vmovdqu $-9091(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xdb, 0xff, 0xff, //0x00002623 vmovdqu $-9323(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x8e, 0xa3, 0x00, 0x00, 0x00, //0x0000262b jle LBB0_480 - 0x49, 0x8d, 0x40, 0xff, //0x00002631 leaq $-1(%r8), %rax - 0x49, 0x39, 0xc7, //0x00002635 cmpq %rax, %r15 - 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x00002638 je LBB0_480 - 0x49, 0xf7, 0xd0, //0x0000263e notq %r8 - 0x4d, 0x89, 0xc1, //0x00002641 movq %r8, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002644 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002649 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000264e movq $8(%rsp), %r15 - 0xe9, 0x67, 0x00, 0x00, 0x00, //0x00002653 jmp LBB0_479 - //0x00002658 LBB0_477 - 0x49, 0xf7, 0xd9, //0x00002658 negq %r9 - //0x0000265b LBB0_478 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000265b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002660 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002665 movq $8(%rsp), %r15 - 0xc5, 0xfe, 0x6f, 0x2d, 0x4e, 0xda, 0xff, 0xff, //0x0000266a vmovdqu $-9650(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x66, 0xda, 0xff, 0xff, //0x00002672 vmovdqu $-9626(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x7e, 0xda, 0xff, 0xff, //0x0000267a vmovdqu $-9602(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x96, 0xda, 0xff, 0xff, //0x00002682 vmovdqu $-9578(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000268a vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x69, 0xdb, 0xff, 0xff, //0x0000268f vmovdqu $-9367(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x81, 0xdb, 0xff, 0xff, //0x00002697 vmovdqu $-9343(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x99, 0xdb, 0xff, 0xff, //0x0000269f vmovdqu $-9319(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x31, 0xdb, 0xff, 0xff, //0x000026a7 vmovdqu $-9423(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xe9, 0xdb, 0xff, 0xff, //0x000026af vmovdqu $-9239(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x01, 0xdb, 0xff, 0xff, //0x000026b7 vmovdqu $-9471(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - //0x000026bf LBB0_479 - 0xc5, 0x7e, 0x6f, 0x1d, 0x79, 0xda, 0xff, 0xff, //0x000026bf vmovdqu $-9607(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x91, 0xda, 0xff, 0xff, //0x000026c7 vmovdqu $-9583(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xe9, 0xa4, 0x02, 0x00, 0x00, //0x000026cf jmp LBB0_496 - //0x000026d4 LBB0_480 - 0x48, 0x89, 0xd0, //0x000026d4 movq %rdx, %rax - 0x4c, 0x09, 0xf8, //0x000026d7 orq %r15, %rax - 0x0f, 0x99, 0xc1, //0x000026da setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0x5b, 0xda, 0xff, 0xff, //0x000026dd vmovdqu $-9637(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x73, 0xda, 0xff, 0xff, //0x000026e5 vmovdqu $-9613(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0xf8, 0x00, 0x00, 0x00, //0x000026ed js LBB0_485 - 0x4c, 0x39, 0xfa, //0x000026f3 cmpq %r15, %rdx - 0x0f, 0x8c, 0xef, 0x00, 0x00, 0x00, //0x000026f6 jl LBB0_485 - 0x48, 0xf7, 0xd2, //0x000026fc notq %rdx - 0x49, 0x89, 0xd1, //0x000026ff movq %rdx, %r9 - 0xe9, 0x62, 0x02, 0x00, 0x00, //0x00002702 jmp LBB0_495 - //0x00002707 LBB0_483 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002707 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x0000270b movl %edx, %eax - //0x0000270d LBB0_484 - 0x49, 0xf7, 0xd5, //0x0000270d notq %r13 - 0x49, 0x29, 0xc5, //0x00002710 subq %rax, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002713 movq $8(%rsp), %r15 - 0xe9, 0x04, 0xf0, 0xff, 0xff, //0x00002718 jmp LBB0_290 - //0x0000271d LBB0_187 - 0x4d, 0x85, 0xff, //0x0000271d testq %r15, %r15 - 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x00002720 jne LBB0_547 - 0x49, 0x01, 0xf1, //0x00002726 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002729 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000272c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002731 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002736 movq $8(%rsp), %r15 - //0x0000273b LBB0_189 - 0x4d, 0x85, 0xd2, //0x0000273b testq %r10, %r10 - 0x0f, 0x8f, 0xfa, 0x07, 0x00, 0x00, //0x0000273e jg LBB0_551 - 0xe9, 0x4c, 0x14, 0x00, 0x00, //0x00002744 jmp LBB0_711 - //0x00002749 LBB0_54 - 0x4c, 0x01, 0xf1, //0x00002749 addq %r14, %rcx - 0x48, 0x83, 0xfb, 0x20, //0x0000274c cmpq $32, %rbx - 0x0f, 0x82, 0x5f, 0x03, 0x00, 0x00, //0x00002750 jb LBB0_505 - //0x00002756 LBB0_55 - 0xc5, 0xfe, 0x6f, 0x01, //0x00002756 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x0000275a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000275e vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x00002762 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002766 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x0000276a testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x0000276c movq %r11, %r15 - 0x0f, 0x85, 0xa6, 0x05, 0x00, 0x00, //0x0000276f jne LBB0_529 - 0x4d, 0x85, 0xd2, //0x00002775 testq %r10, %r10 - 0x0f, 0x85, 0xcb, 0x05, 0x00, 0x00, //0x00002778 jne LBB0_531 - 0x45, 0x31, 0xd2, //0x0000277e xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00002781 testq %rsi, %rsi - 0x0f, 0x84, 0x34, 0x06, 0x00, 0x00, //0x00002784 je LBB0_533 - //0x0000278a LBB0_58 - 0x48, 0x0f, 0xbc, 0xc6, //0x0000278a bsfq %rsi, %rax - 0x49, 0x89, 0xca, //0x0000278e movq %rcx, %r10 - 0x4d, 0x29, 0xf2, //0x00002791 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00002794 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002797 addq $1, %r10 - 0xe9, 0x80, 0xeb, 0xff, 0xff, //0x0000279b jmp LBB0_232 - //0x000027a0 LBB0_199 - 0x4d, 0x01, 0xf2, //0x000027a0 addq %r14, %r10 - 0x48, 0x83, 0xfb, 0x20, //0x000027a3 cmpq $32, %rbx - 0x0f, 0x82, 0xef, 0x08, 0x00, 0x00, //0x000027a7 jb LBB0_564 - //0x000027ad LBB0_200 - 0x4c, 0x89, 0xd1, //0x000027ad movq %r10, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000027b0 vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000027b5 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000027b9 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000027bd vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000027c1 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000027c5 testl %edx, %edx - 0x0f, 0x85, 0xc5, 0x07, 0x00, 0x00, //0x000027c7 jne LBB0_554 - 0x4d, 0x85, 0xdb, //0x000027cd testq %r11, %r11 - 0x0f, 0x85, 0xf2, 0x07, 0x00, 0x00, //0x000027d0 jne LBB0_556 - 0x45, 0x31, 0xdb, //0x000027d6 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x000027d9 testq %r10, %r10 - 0x0f, 0x84, 0x60, 0x08, 0x00, 0x00, //0x000027dc je LBB0_558 - //0x000027e2 LBB0_203 - 0x49, 0x0f, 0xbc, 0xd2, //0x000027e2 bsfq %r10, %rdx - 0xe9, 0x5c, 0x08, 0x00, 0x00, //0x000027e6 jmp LBB0_559 - //0x000027eb LBB0_485 - 0x49, 0x8d, 0x47, 0xff, //0x000027eb leaq $-1(%r15), %rax - 0x48, 0x39, 0xc2, //0x000027ef cmpq %rax, %rdx - 0x49, 0xf7, 0xd7, //0x000027f2 notq %r15 - 0x4d, 0x0f, 0x45, 0xf9, //0x000027f5 cmovneq %r9, %r15 - 0x84, 0xc9, //0x000027f9 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xcf, //0x000027fb cmovneq %r15, %r9 - 0xe9, 0x65, 0x01, 0x00, 0x00, //0x000027ff jmp LBB0_495 - //0x00002804 LBB0_486 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002804 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002808 bsfl %ebx, %eax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x0000280b jmp LBB0_490 - //0x00002810 LBB0_487 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002810 vmovdqa %ymm13, %ymm0 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00002814 movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x00002819 addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x0000281c subq %r13, %r14 - 0x49, 0x29, 0xce, //0x0000281f subq %rcx, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x00002822 addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x00002826 movq %r14, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002829 movq $8(%rsp), %r15 - 0xe9, 0xf3, 0xee, 0xff, 0xff, //0x0000282e jmp LBB0_291 - //0x00002833 LBB0_488 - 0x4d, 0x01, 0xf4, //0x00002833 addq %r14, %r12 - 0x48, 0x85, 0xc0, //0x00002836 testq %rax, %rax - 0x0f, 0x85, 0xe9, 0xdc, 0xff, 0xff, //0x00002839 jne LBB0_28 - 0xe9, 0x1e, 0xdd, 0xff, 0xff, //0x0000283f jmp LBB0_33 - //0x00002844 LBB0_489 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002844 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002848 movl %edx, %eax - //0x0000284a LBB0_490 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x0000284a movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x0000284f addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x00002852 subq %r13, %r14 - 0x49, 0x29, 0xc6, //0x00002855 subq %rax, %r14 - 0x4d, 0x29, 0xfe, //0x00002858 subq %r15, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x0000285b addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x0000285f movq %r14, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002862 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002867 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000286c movq $8(%rsp), %r15 - 0xe9, 0xb0, 0xee, 0xff, 0xff, //0x00002871 jmp LBB0_291 - //0x00002876 LBB0_139 - 0x4c, 0x01, 0xf3, //0x00002876 addq %r14, %rbx - 0x48, 0x83, 0xf9, 0x20, //0x00002879 cmpq $32, %rcx - 0x0f, 0x82, 0xda, 0x02, 0x00, 0x00, //0x0000287d jb LBB0_512 - //0x00002883 LBB0_140 - 0xc5, 0xfe, 0x6f, 0x03, //0x00002883 vmovdqu (%rbx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002887 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000288b vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x0000288f vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002893 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x00002897 testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x00002899 movq %r11, %r15 - 0x0f, 0x85, 0xc0, 0x08, 0x00, 0x00, //0x0000289c jne LBB0_575 - 0x4d, 0x85, 0xd2, //0x000028a2 testq %r10, %r10 - 0x0f, 0x85, 0xe5, 0x08, 0x00, 0x00, //0x000028a5 jne LBB0_577 - 0x45, 0x31, 0xd2, //0x000028ab xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x000028ae testq %rsi, %rsi - 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x000028b1 je LBB0_579 - //0x000028b7 LBB0_143 - 0x48, 0x0f, 0xbc, 0xc6, //0x000028b7 bsfq %rsi, %rax - 0x49, 0x89, 0xda, //0x000028bb movq %rbx, %r10 - 0x4d, 0x29, 0xf2, //0x000028be subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x000028c1 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000028c4 addq $1, %r10 - 0xe9, 0xbf, 0xee, 0xff, 0xff, //0x000028c8 jmp LBB0_298 - //0x000028cd LBB0_220 - 0x4d, 0x01, 0xf2, //0x000028cd addq %r14, %r10 - 0x48, 0x83, 0xf9, 0x20, //0x000028d0 cmpq $32, %rcx - 0x0f, 0x82, 0x3c, 0x0b, 0x00, 0x00, //0x000028d4 jb LBB0_603 - //0x000028da LBB0_221 - 0x4c, 0x89, 0xd3, //0x000028da movq %r10, %rbx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000028dd vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000028e2 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000028e6 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000028ea vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000028ee vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000028f2 testl %edx, %edx - 0x0f, 0x85, 0x12, 0x0a, 0x00, 0x00, //0x000028f4 jne LBB0_593 - 0x4d, 0x85, 0xdb, //0x000028fa testq %r11, %r11 - 0x0f, 0x85, 0x3f, 0x0a, 0x00, 0x00, //0x000028fd jne LBB0_595 - 0x45, 0x31, 0xdb, //0x00002903 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00002906 testq %r10, %r10 - 0x0f, 0x84, 0xad, 0x0a, 0x00, 0x00, //0x00002909 je LBB0_597 - //0x0000290f LBB0_224 - 0x49, 0x0f, 0xbc, 0xd2, //0x0000290f bsfq %r10, %rdx - 0xe9, 0xa9, 0x0a, 0x00, 0x00, //0x00002913 jmp LBB0_598 - //0x00002918 LBB0_491 - 0x49, 0x89, 0xf1, //0x00002918 movq %rsi, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000291b movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002922 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002927 testq %rdx, %rdx - 0x0f, 0x85, 0x6f, 0xfc, 0xff, 0xff, //0x0000292a jne LBB0_469 - 0xe9, 0xdb, 0x13, 0x00, 0x00, //0x00002930 jmp LBB0_709 - //0x00002935 LBB0_492 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002935 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002939 bsfl %ebx, %eax - 0xe9, 0x22, 0x00, 0x00, 0x00, //0x0000293c jmp LBB0_494 - //0x00002941 LBB0_697 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002941 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002945 movzwl %ax, %ecx - 0x48, 0x29, 0xd1, //0x00002948 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000294b movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x0000294f testq %rbx, %rbx - 0x0f, 0x8f, 0x48, 0xda, 0xff, 0xff, //0x00002952 jg LBB0_3 - 0xe9, 0x74, 0x13, 0x00, 0x00, //0x00002958 jmp LBB0_698 - //0x0000295d LBB0_493 - 0xc5, 0x7d, 0x7f, 0xe8, //0x0000295d vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002961 movl %edx, %eax - //0x00002963 LBB0_494 - 0x49, 0xf7, 0xd1, //0x00002963 notq %r9 - 0x49, 0x29, 0xc1, //0x00002966 subq %rax, %r9 - //0x00002969 LBB0_495 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002969 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000296e movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002973 movq $8(%rsp), %r15 - //0x00002978 LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002978 testq %r9, %r9 - 0x0f, 0x88, 0x8c, 0x13, 0x00, 0x00, //0x0000297b js LBB0_708 - 0x49, 0x8b, 0x4d, 0x00, //0x00002981 movq (%r13), %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x00002985 vmovdqa %ymm0, %ymm13 - //0x00002989 LBB0_498 - 0x4c, 0x01, 0xc9, //0x00002989 addq %r9, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000298c movq %rcx, (%r13) - 0x48, 0x83, 0x3c, 0x24, 0x00, //0x00002990 cmpq $0, (%rsp) - 0x0f, 0x8f, 0x05, 0xda, 0xff, 0xff, //0x00002995 jg LBB0_3 - 0xe9, 0x31, 0x13, 0x00, 0x00, //0x0000299b jmp LBB0_698 - //0x000029a0 LBB0_243 - 0x4c, 0x01, 0xf7, //0x000029a0 addq %r14, %rdi - 0x49, 0x83, 0xf8, 0x20, //0x000029a3 cmpq $32, %r8 - 0x0f, 0x82, 0x2f, 0x02, 0x00, 0x00, //0x000029a7 jb LBB0_517 - //0x000029ad LBB0_244 - 0xc5, 0xfe, 0x6f, 0x07, //0x000029ad vmovdqu (%rdi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000029b1 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000029b5 vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x000029b9 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000029bd vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x000029c1 testl %edx, %edx - 0x0f, 0x85, 0x68, 0x0d, 0x00, 0x00, //0x000029c3 jne LBB0_630 - 0x4d, 0x85, 0xd2, //0x000029c9 testq %r10, %r10 - 0x0f, 0x85, 0x95, 0x0d, 0x00, 0x00, //0x000029cc jne LBB0_632 - 0x45, 0x31, 0xd2, //0x000029d2 xorl %r10d, %r10d - 0xc5, 0x7d, 0x7f, 0xea, //0x000029d5 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000029d9 testq %rsi, %rsi - 0x0f, 0x84, 0x02, 0x0e, 0x00, 0x00, //0x000029dc je LBB0_634 - //0x000029e2 LBB0_247 - 0x48, 0x0f, 0xbc, 0xc6, //0x000029e2 bsfq %rsi, %rax - 0x48, 0x89, 0xf9, //0x000029e6 movq %rdi, %rcx - 0x4c, 0x29, 0xf1, //0x000029e9 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x000029ec addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000029ef addq $1, %rcx - 0xe9, 0xf6, 0xfa, 0xff, 0xff, //0x000029f3 jmp LBB0_461 - //0x000029f8 LBB0_394 - 0x4c, 0x01, 0xf1, //0x000029f8 addq %r14, %rcx - 0x49, 0x83, 0xf8, 0x20, //0x000029fb cmpq $32, %r8 - 0x0f, 0x82, 0x01, 0x02, 0x00, 0x00, //0x000029ff jb LBB0_519 - //0x00002a05 LBB0_395 - 0x48, 0x89, 0xcb, //0x00002a05 movq %rcx, %rbx - 0xc5, 0xfe, 0x6f, 0x01, //0x00002a08 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002a0c vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xc9, //0x00002a10 vpmovmskb %ymm1, %ecx - 0xc5, 0xfd, 0x74, 0xcf, //0x00002a14 vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a18 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x00002a1c testl %edx, %edx - 0x0f, 0x85, 0x86, 0x0e, 0x00, 0x00, //0x00002a1e jne LBB0_647 - 0x4d, 0x85, 0xdb, //0x00002a24 testq %r11, %r11 - 0x0f, 0x85, 0xab, 0x0e, 0x00, 0x00, //0x00002a27 jne LBB0_649 - 0x45, 0x31, 0xdb, //0x00002a2d xorl %r11d, %r11d - 0x48, 0x85, 0xc9, //0x00002a30 testq %rcx, %rcx - 0x0f, 0x84, 0x10, 0x0f, 0x00, 0x00, //0x00002a33 je LBB0_651 - //0x00002a39 LBB0_398 - 0x48, 0x0f, 0xbc, 0xd1, //0x00002a39 bsfq %rcx, %rdx - 0xe9, 0x0c, 0x0f, 0x00, 0x00, //0x00002a3d jmp LBB0_652 - //0x00002a42 LBB0_499 - 0x0f, 0xbc, 0xc6, //0x00002a42 bsfl %esi, %eax - 0xe9, 0xde, 0x00, 0x00, 0x00, //0x00002a45 jmp LBB0_510 - //0x00002a4a LBB0_500 - 0x4c, 0x03, 0x34, 0x24, //0x00002a4a addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002a4e subq %r9, %r14 - 0x48, 0xf7, 0xd1, //0x00002a51 notq %rcx - 0x4c, 0x01, 0xf1, //0x00002a54 addq %r14, %rcx - 0x49, 0x89, 0xc9, //0x00002a57 movq %rcx, %r9 - 0xe9, 0xfc, 0xfb, 0xff, 0xff, //0x00002a5a jmp LBB0_478 - //0x00002a5f LBB0_501 - 0x49, 0x8d, 0x0c, 0x1e, //0x00002a5f leaq (%r14,%rbx), %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002a63 cmpq $16, %rsi - 0x0f, 0x83, 0x49, 0xe4, 0xff, 0xff, //0x00002a67 jae LBB0_164 - 0xe9, 0x8c, 0xe4, 0xff, 0xff, //0x00002a6d jmp LBB0_167 - //0x00002a72 LBB0_502 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002a72 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002a79 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002a82 movq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x00002a87 cmpq $16, %r8 - 0x0f, 0x83, 0x5a, 0xdf, 0xff, 0xff, //0x00002a8b jae LBB0_95 - 0xe9, 0xac, 0xe0, 0xff, 0xff, //0x00002a91 jmp LBB0_113 - //0x00002a96 LBB0_503 - 0x89, 0xd0, //0x00002a96 movl %edx, %eax - 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x00002a98 jmp LBB0_510 - //0x00002a9d LBB0_504 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002a9d leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002aa1 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002aa8 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x00002aab cmpq $32, %rbx - 0x0f, 0x83, 0xa1, 0xfc, 0xff, 0xff, //0x00002aaf jae LBB0_55 - //0x00002ab5 LBB0_505 - 0x4d, 0x89, 0xdf, //0x00002ab5 movq %r11, %r15 - 0xe9, 0x09, 0x03, 0x00, 0x00, //0x00002ab8 jmp LBB0_534 - //0x00002abd LBB0_506 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002abd leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002ac1 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002ac8 xorl %r11d, %r11d - 0x48, 0x83, 0xfb, 0x20, //0x00002acb cmpq $32, %rbx - 0x0f, 0x83, 0xd8, 0xfc, 0xff, 0xff, //0x00002acf jae LBB0_200 - 0xe9, 0xc2, 0x05, 0x00, 0x00, //0x00002ad5 jmp LBB0_564 - //0x00002ada LBB0_507 - 0x4c, 0x29, 0xf1, //0x00002ada subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002add addq %rdx, %rcx - //0x00002ae0 LBB0_508 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ae0 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002ae5 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002aea movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002aef vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002af4 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xd7, 0xff, 0xff, //0x00002af9 vmovdqu $-10337(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xd6, 0xff, 0xff, //0x00002b01 vmovdqu $-10569(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002b09 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002b0d vmovdqa %ymm1, %ymm12 - 0x48, 0x89, 0xc3, //0x00002b11 movq %rax, %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00002b14 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00002b18 testq %rbx, %rbx - 0x0f, 0x8f, 0x7f, 0xd8, 0xff, 0xff, //0x00002b1b jg LBB0_3 - 0xe9, 0x45, 0x10, 0x00, 0x00, //0x00002b21 jmp LBB0_178 - //0x00002b26 LBB0_509 - 0x89, 0xf0, //0x00002b26 movl %esi, %eax - //0x00002b28 LBB0_510 - 0x4c, 0x03, 0x34, 0x24, //0x00002b28 addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002b2c subq %r9, %r14 - 0x49, 0x29, 0xc6, //0x00002b2f subq %rax, %r14 - 0x49, 0xf7, 0xd5, //0x00002b32 notq %r13 - 0x4d, 0x01, 0xf5, //0x00002b35 addq %r14, %r13 - 0x4d, 0x89, 0xe9, //0x00002b38 movq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002b3b movq $48(%rsp), %r13 - 0xe9, 0x16, 0xfb, 0xff, 0xff, //0x00002b40 jmp LBB0_478 - //0x00002b45 LBB0_511 - 0x4b, 0x8d, 0x1c, 0x0e, //0x00002b45 leaq (%r14,%r9), %rbx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002b49 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002b50 xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x20, //0x00002b53 cmpq $32, %rcx - 0x0f, 0x83, 0x26, 0xfd, 0xff, 0xff, //0x00002b57 jae LBB0_140 - //0x00002b5d LBB0_512 - 0x4d, 0x89, 0xdf, //0x00002b5d movq %r11, %r15 - 0xe9, 0xa8, 0x06, 0x00, 0x00, //0x00002b60 jmp LBB0_580 - //0x00002b65 LBB0_513 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002b65 leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b69 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002b70 xorl %r11d, %r11d - 0x48, 0x83, 0xf9, 0x20, //0x00002b73 cmpq $32, %rcx - 0x0f, 0x83, 0x5d, 0xfd, 0xff, 0xff, //0x00002b77 jae LBB0_221 - 0xe9, 0x94, 0x08, 0x00, 0x00, //0x00002b7d jmp LBB0_603 - //0x00002b82 LBB0_514 - 0x4c, 0x01, 0xf1, //0x00002b82 addq %r14, %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002b85 cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00002b89 movq (%rsp), %rbx - 0x0f, 0x83, 0x97, 0xed, 0xff, 0xff, //0x00002b8d jae LBB0_318 - 0xe9, 0xda, 0xed, 0xff, 0xff, //0x00002b93 jmp LBB0_321 - //0x00002b98 LBB0_515 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b98 movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002b9f movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002ba8 movq $56(%rsp), %r11 - 0x4d, 0x89, 0xd9, //0x00002bad movq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002bb0 movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x00002bb5 cmpq $16, %r10 - 0x0f, 0x83, 0xff, 0xf6, 0xff, 0xff, //0x00002bb9 jae LBB0_425 - 0xe9, 0x2f, 0xf8, 0xff, 0xff, //0x00002bbf jmp LBB0_443 - //0x00002bc4 LBB0_516 - 0x4b, 0x8d, 0x3c, 0x0e, //0x00002bc4 leaq (%r14,%r9), %rdi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002bc8 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002bcf xorl %r10d, %r10d - 0x49, 0x83, 0xf8, 0x20, //0x00002bd2 cmpq $32, %r8 - 0x0f, 0x83, 0xd1, 0xfd, 0xff, 0xff, //0x00002bd6 jae LBB0_244 - //0x00002bdc LBB0_517 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002bdc vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002be0 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002be4 vmovdqa %ymm13, %ymm11 - 0xe9, 0x0a, 0x0c, 0x00, 0x00, //0x00002be9 jmp LBB0_635 - //0x00002bee LBB0_518 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002bee leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002bf2 movq $-1, %r10 - 0x45, 0x31, 0xdb, //0x00002bf9 xorl %r11d, %r11d - 0x49, 0x83, 0xf8, 0x20, //0x00002bfc cmpq $32, %r8 - 0x0f, 0x83, 0xff, 0xfd, 0xff, 0xff, //0x00002c00 jae LBB0_395 - //0x00002c06 LBB0_519 - 0x48, 0x89, 0xcb, //0x00002c06 movq %rcx, %rbx - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c09 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c0d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c11 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002c16 vmovdqa %ymm15, %ymm12 - 0xe9, 0x99, 0x0d, 0x00, 0x00, //0x00002c1b jmp LBB0_657 - //0x00002c20 LBB0_520 - 0x4c, 0x29, 0xf1, //0x00002c20 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002c23 addq %rdx, %rcx - //0x00002c26 LBB0_521 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c26 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c2b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c30 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c35 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002c3a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x59, 0xd6, 0xff, 0xff, //0x00002c3f vmovdqu $-10663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x71, 0xd5, 0xff, 0xff, //0x00002c47 vmovdqu $-10895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002c4f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002c53 vmovdqa %ymm1, %ymm12 - 0xe9, 0x75, 0xf3, 0xff, 0xff, //0x00002c57 jmp LBB0_383 - //0x00002c5c LBB0_522 - 0x49, 0x39, 0xf2, //0x00002c5c cmpq %rsi, %r10 - 0x0f, 0x84, 0x30, 0x0f, 0x00, 0x00, //0x00002c5f je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c65 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c69 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c6d vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002c72 addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002c75 addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002c79 notq %rsi - 0x49, 0x01, 0xf2, //0x00002c7c addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c7f movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c84 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c89 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c8e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x05, 0xd6, 0xff, 0xff, //0x00002c93 vmovdqu $-10747(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x1d, 0xd5, 0xff, 0xff, //0x00002c9b vmovdqu $-10979(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ca3 vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002ca7 testq %r10, %r10 - 0x0f, 0x8f, 0x30, 0x00, 0x00, 0x00, //0x00002caa jg LBB0_526 - 0xe9, 0xe0, 0x0e, 0x00, 0x00, //0x00002cb0 jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002cb5 .p2align 4, 0x90 - //0x00002cc0 LBB0_524 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002cc0 movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002cc7 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002ccc addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002ccf movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002cd7 addq %rcx, %r10 - 0x0f, 0x8e, 0xb5, 0x0e, 0x00, 0x00, //0x00002cda jle LBB0_711 - //0x00002ce0 LBB0_526 - 0x41, 0x0f, 0xb6, 0x09, //0x00002ce0 movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002ce4 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002ce7 je LBB0_524 - 0x80, 0xf9, 0x22, //0x00002ced cmpb $34, %cl - 0x0f, 0x84, 0x22, 0x0a, 0x00, 0x00, //0x00002cf0 je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002cf6 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002cfd movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002d02 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002d05 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002d0d addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002d10 jg LBB0_526 - 0xe9, 0x7a, 0x0e, 0x00, 0x00, //0x00002d16 jmp LBB0_711 - //0x00002d1b LBB0_529 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d1b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d1f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d23 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d28 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00002d2d cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002d31 jne LBB0_532 - 0x48, 0x89, 0xc8, //0x00002d37 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002d3a subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00002d3d bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00002d41 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002d44 jmp LBB0_532 - //0x00002d49 LBB0_531 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d49 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d4d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d51 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d56 vmovdqa %ymm15, %ymm12 - //0x00002d5b LBB0_532 - 0x44, 0x89, 0xd0, //0x00002d5b movl %r10d, %eax - 0xf7, 0xd0, //0x00002d5e notl %eax - 0x21, 0xd0, //0x00002d60 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002d62 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x00002d65 leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x00002d69 notl %edi - 0x21, 0xd7, //0x00002d6b andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002d6d andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x00002d73 xorl %r10d, %r10d - 0x01, 0xc7, //0x00002d76 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x00002d78 setb %r10b - 0x01, 0xff, //0x00002d7c addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002d7e xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x00002d84 andl %r15d, %edi - 0xf7, 0xd7, //0x00002d87 notl %edi - 0x21, 0xfe, //0x00002d89 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002d8b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002d90 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002d95 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xfe, 0xd4, 0xff, 0xff, //0x00002d9a vmovdqu $-11010(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x16, 0xd4, 0xff, 0xff, //0x00002da2 vmovdqu $-11242(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002daa vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002dae vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x00002db2 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x00002db5 testq %rsi, %rsi - 0x0f, 0x85, 0xcc, 0xf9, 0xff, 0xff, //0x00002db8 jne LBB0_58 - //0x00002dbe LBB0_533 - 0x48, 0x83, 0xc1, 0x20, //0x00002dbe addq $32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00002dc2 addq $-32, %rbx - //0x00002dc6 LBB0_534 - 0x4d, 0x85, 0xd2, //0x00002dc6 testq %r10, %r10 - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x00002dc9 jne LBB0_614 - 0x4c, 0x89, 0xf7, //0x00002dcf movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x00002dd2 notq %rdi - 0x4c, 0x89, 0xfe, //0x00002dd5 movq %r15, %rsi - 0x49, 0x89, 0xca, //0x00002dd8 movq %rcx, %r10 - 0x48, 0x85, 0xdb, //0x00002ddb testq %rbx, %rbx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00002dde je LBB0_546 - //0x00002de4 LBB0_536 - 0x48, 0x83, 0xc7, 0x01, //0x00002de4 addq $1, %rdi - //0x00002de8 LBB0_537 - 0x31, 0xd2, //0x00002de8 xorl %edx, %edx - //0x00002dea LBB0_538 - 0x41, 0x0f, 0xb6, 0x0c, 0x12, //0x00002dea movzbl (%r10,%rdx), %ecx - 0x80, 0xf9, 0x22, //0x00002def cmpb $34, %cl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002df2 je LBB0_545 - 0x80, 0xf9, 0x5c, //0x00002df8 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002dfb je LBB0_543 - 0x48, 0x83, 0xc2, 0x01, //0x00002e01 addq $1, %rdx - 0x48, 0x39, 0xd3, //0x00002e05 cmpq %rdx, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002e08 jne LBB0_538 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002e0e jmp LBB0_541 - //0x00002e13 LBB0_543 - 0x48, 0x8d, 0x43, 0xff, //0x00002e13 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xd0, //0x00002e17 cmpq %rdx, %rax - 0x0f, 0x84, 0x30, 0x0d, 0x00, 0x00, //0x00002e1a je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e20 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e24 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e28 vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x17, //0x00002e2d leaq (%rdi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00002e31 addq %rdx, %rax - 0x48, 0x83, 0xfe, 0xff, //0x00002e34 cmpq $-1, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00002e38 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x00002e3c cmoveq %rax, %rsi - 0x49, 0x01, 0xd2, //0x00002e40 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x00002e43 addq $2, %r10 - 0x48, 0x89, 0xd8, //0x00002e47 movq %rbx, %rax - 0x48, 0x29, 0xd0, //0x00002e4a subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00002e4d addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002e51 addq $-2, %rbx - 0x48, 0x39, 0xd3, //0x00002e55 cmpq %rdx, %rbx - 0x48, 0x89, 0xc3, //0x00002e58 movq %rax, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e5b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x38, 0xd4, 0xff, 0xff, //0x00002e60 vmovdqu $-11208(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xd3, 0xff, 0xff, //0x00002e68 vmovdqu $-11440(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e70 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x00002e74 jne LBB0_537 - 0xe9, 0xd1, 0x0c, 0x00, 0x00, //0x00002e7a jmp LBB0_681 - //0x00002e7f LBB0_545 - 0x49, 0x01, 0xd2, //0x00002e7f addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002e82 addq $1, %r10 - //0x00002e86 LBB0_546 - 0x4d, 0x29, 0xf2, //0x00002e86 subq %r14, %r10 - 0xe9, 0x92, 0xe4, 0xff, 0xff, //0x00002e89 jmp LBB0_232 - //0x00002e8e LBB0_541 - 0x80, 0xf9, 0x22, //0x00002e8e cmpb $34, %cl - 0x0f, 0x85, 0xb9, 0x0c, 0x00, 0x00, //0x00002e91 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e97 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e9b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e9f vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xda, //0x00002ea4 addq %rbx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ea7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xec, 0xd3, 0xff, 0xff, //0x00002eac vmovdqu $-11284(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x04, 0xd3, 0xff, 0xff, //0x00002eb4 vmovdqu $-11516(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ebc vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00002ec0 jmp LBB0_546 - //0x00002ec5 LBB0_547 - 0x49, 0x39, 0xf2, //0x00002ec5 cmpq %rsi, %r10 - 0x0f, 0x84, 0xc7, 0x0c, 0x00, 0x00, //0x00002ec8 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ece vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ed2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ed6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002edb addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002ede addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002ee2 notq %rsi - 0x49, 0x01, 0xf2, //0x00002ee5 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ee8 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002eed movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002ef2 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ef7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x9c, 0xd3, 0xff, 0xff, //0x00002efc vmovdqu $-11364(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb4, 0xd2, 0xff, 0xff, //0x00002f04 vmovdqu $-11596(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f0c vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002f10 testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x00002f13 jg LBB0_551 - 0xe9, 0x77, 0x0c, 0x00, 0x00, //0x00002f19 jmp LBB0_711 - //0x00002f1e LBB0_549 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002f1e movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002f25 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002f2a addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f2d movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f35 addq %rcx, %r10 - 0x0f, 0x8e, 0x57, 0x0c, 0x00, 0x00, //0x00002f38 jle LBB0_711 - //0x00002f3e LBB0_551 - 0x41, 0x0f, 0xb6, 0x09, //0x00002f3e movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002f42 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002f45 je LBB0_549 - 0x80, 0xf9, 0x22, //0x00002f4b cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00002f4e je LBB0_678 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002f54 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002f5b movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002f60 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f63 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f6b addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002f6e jg LBB0_551 - 0xe9, 0x1c, 0x0c, 0x00, 0x00, //0x00002f74 jmp LBB0_711 - //0x00002f79 LBB0_678 - 0x4d, 0x29, 0xf1, //0x00002f79 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002f7c addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x00002f80 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00002f84 testq %r8, %r8 - 0x0f, 0x8f, 0x24, 0xe8, 0xff, 0xff, //0x00002f87 jg LBB0_300 - 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002f8d jmp LBB0_679 - //0x00002f92 LBB0_554 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002f92 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002f96 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f9a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f9f vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fa4 movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00002fa8 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00002fac jne LBB0_557 - 0x48, 0x89, 0xc8, //0x00002fb2 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002fb5 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00002fb8 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00002fbc addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00002fbf movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00002fc3 jmp LBB0_557 - //0x00002fc8 LBB0_556 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fc8 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002fcc vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002fd0 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002fd4 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002fd9 vmovdqa %ymm15, %ymm12 - //0x00002fde LBB0_557 - 0x44, 0x89, 0xd8, //0x00002fde movl %r11d, %eax - 0xf7, 0xd0, //0x00002fe1 notl %eax - 0x21, 0xd0, //0x00002fe3 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002fe5 leal (%rax,%rax), %edi - 0x41, 0x8d, 0x34, 0x43, //0x00002fe8 leal (%r11,%rax,2), %esi - 0xf7, 0xd7, //0x00002fec notl %edi - 0x21, 0xd7, //0x00002fee andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002ff0 andl $-1431655766, %edi - 0x45, 0x31, 0xdb, //0x00002ff6 xorl %r11d, %r11d - 0x01, 0xc7, //0x00002ff9 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc3, //0x00002ffb setb %r11b - 0x01, 0xff, //0x00002fff addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003001 xorl $1431655765, %edi - 0x21, 0xf7, //0x00003007 andl %esi, %edi - 0xf7, 0xd7, //0x00003009 notl %edi - 0x41, 0x21, 0xfa, //0x0000300b andl %edi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000300e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003013 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003018 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x7b, 0xd2, 0xff, 0xff, //0x0000301d vmovdqu $-11653(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x93, 0xd1, 0xff, 0xff, //0x00003025 vmovdqu $-11885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x0000302d vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00003031 vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x00003035 movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x00003039 testq %r10, %r10 - 0x0f, 0x85, 0xa0, 0xf7, 0xff, 0xff, //0x0000303c jne LBB0_203 - //0x00003042 LBB0_558 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003042 movl $64, %edx - //0x00003047 LBB0_559 - 0xc5, 0xbd, 0x64, 0xc8, //0x00003047 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000304b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003050 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00003054 vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x00003058 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x0000305b testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x0000305e je LBB0_562 - 0x85, 0xf6, //0x00003064 testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x00003066 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x0000306b cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x0000306e cmpq %rdi, %rdx - 0x49, 0x89, 0xca, //0x00003071 movq %rcx, %r10 - 0x0f, 0x87, 0x15, 0x0d, 0x00, 0x00, //0x00003074 ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x0000307a subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x0000307d addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003080 addq $1, %r10 - 0xe9, 0x97, 0xe2, 0xff, 0xff, //0x00003084 jmp LBB0_232 - //0x00003089 LBB0_562 - 0x85, 0xf6, //0x00003089 testl %esi, %esi - 0x49, 0x89, 0xca, //0x0000308b movq %rcx, %r10 - 0x0f, 0x85, 0x08, 0x0d, 0x00, 0x00, //0x0000308e jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x00003094 addq $32, %r10 - 0x48, 0x83, 0xc3, 0xe0, //0x00003098 addq $-32, %rbx - //0x0000309c LBB0_564 - 0x4d, 0x85, 0xdb, //0x0000309c testq %r11, %r11 - 0x0f, 0x85, 0x98, 0x04, 0x00, 0x00, //0x0000309f jne LBB0_616 - 0x4c, 0x89, 0xf9, //0x000030a5 movq %r15, %rcx - 0x48, 0x85, 0xdb, //0x000030a8 testq %rbx, %rbx - 0x0f, 0x84, 0x9f, 0x0a, 0x00, 0x00, //0x000030ab je LBB0_681 - //0x000030b1 LBB0_566 - 0x41, 0x0f, 0xb6, 0x12, //0x000030b1 movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x000030b5 cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000030b8 je LBB0_574 - 0x80, 0xfa, 0x5c, //0x000030be cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000030c1 je LBB0_570 - 0x80, 0xfa, 0x1f, //0x000030c7 cmpb $31, %dl - 0x0f, 0x86, 0xd7, 0x0c, 0x00, 0x00, //0x000030ca jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000030d0 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000030d7 movl $1, %esi - 0x49, 0x01, 0xf2, //0x000030dc addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x000030df addq %rdx, %rbx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x000030e2 jne LBB0_566 - 0xe9, 0x63, 0x0a, 0x00, 0x00, //0x000030e8 jmp LBB0_681 - //0x000030ed LBB0_570 - 0x48, 0x83, 0xfb, 0x01, //0x000030ed cmpq $1, %rbx - 0x0f, 0x84, 0x59, 0x0a, 0x00, 0x00, //0x000030f1 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000030f7 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000030fb vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030ff vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003104 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000310b movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00003110 cmpq $-1, %rcx - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003114 jne LBB0_573 - 0x4d, 0x89, 0xd7, //0x0000311a movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x0000311d subq %r14, %r15 - 0x4c, 0x89, 0xf9, //0x00003120 movq %r15, %rcx - //0x00003123 LBB0_573 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003123 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003128 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x6b, 0xd1, 0xff, 0xff, //0x0000312d vmovdqu $-11925(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x83, 0xd0, 0xff, 0xff, //0x00003135 vmovdqu $-12157(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000313d vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003141 vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xf2, //0x00003145 addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x00003148 addq %rdx, %rbx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000314b jne LBB0_566 - 0xe9, 0xfa, 0x09, 0x00, 0x00, //0x00003151 jmp LBB0_681 - //0x00003156 LBB0_574 - 0x4d, 0x29, 0xf2, //0x00003156 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003159 addq $1, %r10 - 0xe9, 0xbe, 0xe1, 0xff, 0xff, //0x0000315d jmp LBB0_232 - //0x00003162 LBB0_575 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003162 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003166 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000316a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316f vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00003174 cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003178 jne LBB0_578 - 0x48, 0x89, 0xd8, //0x0000317e movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x00003181 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00003184 bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00003188 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000318b jmp LBB0_578 - //0x00003190 LBB0_577 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003190 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003194 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003198 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319d vmovdqa %ymm15, %ymm12 - //0x000031a2 LBB0_578 - 0x44, 0x89, 0xd0, //0x000031a2 movl %r10d, %eax - 0xf7, 0xd0, //0x000031a5 notl %eax - 0x21, 0xd0, //0x000031a7 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x000031a9 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x000031ac leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x000031b0 notl %edi - 0x21, 0xd7, //0x000031b2 andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b4 andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x000031ba xorl %r10d, %r10d - 0x01, 0xc7, //0x000031bd addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x000031bf setb %r10b - 0x01, 0xff, //0x000031c3 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000031c5 xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x000031cb andl %r15d, %edi - 0xf7, 0xd7, //0x000031ce notl %edi - 0x21, 0xfe, //0x000031d0 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d7 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031dc vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xb7, 0xd0, 0xff, 0xff, //0x000031e1 vmovdqu $-12105(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xcf, 0xcf, 0xff, 0xff, //0x000031e9 vmovdqu $-12337(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000031f1 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000031f5 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x000031f9 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x000031fc testq %rsi, %rsi - 0x0f, 0x85, 0xb2, 0xf6, 0xff, 0xff, //0x000031ff jne LBB0_143 - //0x00003205 LBB0_579 - 0x48, 0x83, 0xc3, 0x20, //0x00003205 addq $32, %rbx - 0x48, 0x83, 0xc1, 0xe0, //0x00003209 addq $-32, %rcx - //0x0000320d LBB0_580 - 0x4d, 0x85, 0xd2, //0x0000320d testq %r10, %r10 - 0x0f, 0x85, 0x8a, 0x03, 0x00, 0x00, //0x00003210 jne LBB0_618 - 0x4c, 0x89, 0xf6, //0x00003216 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003219 notq %rsi - 0x4c, 0x89, 0xff, //0x0000321c movq %r15, %rdi - 0x49, 0x89, 0xda, //0x0000321f movq %rbx, %r10 - 0x48, 0x85, 0xc9, //0x00003222 testq %rcx, %rcx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00003225 je LBB0_592 - //0x0000322b LBB0_582 - 0x48, 0x83, 0xc6, 0x01, //0x0000322b addq $1, %rsi - //0x0000322f LBB0_583 - 0x31, 0xd2, //0x0000322f xorl %edx, %edx - //0x00003231 LBB0_584 - 0x41, 0x0f, 0xb6, 0x1c, 0x12, //0x00003231 movzbl (%r10,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003236 cmpb $34, %bl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00003239 je LBB0_591 - 0x80, 0xfb, 0x5c, //0x0000323f cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003242 je LBB0_589 - 0x48, 0x83, 0xc2, 0x01, //0x00003248 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x0000324c cmpq %rdx, %rcx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000324f jne LBB0_584 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00003255 jmp LBB0_587 - //0x0000325a LBB0_589 - 0x48, 0x8d, 0x41, 0xff, //0x0000325a leaq $-1(%rcx), %rax - 0x48, 0x39, 0xd0, //0x0000325e cmpq %rdx, %rax - 0x0f, 0x84, 0xe9, 0x08, 0x00, 0x00, //0x00003261 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003267 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000326b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000326f vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x16, //0x00003274 leaq (%rsi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00003278 addq %rdx, %rax - 0x48, 0x83, 0xff, 0xff, //0x0000327b cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x0000327f cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x00003283 cmoveq %rax, %rdi - 0x49, 0x01, 0xd2, //0x00003287 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x0000328a addq $2, %r10 - 0x48, 0x89, 0xc8, //0x0000328e movq %rcx, %rax - 0x48, 0x29, 0xd0, //0x00003291 subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003294 addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00003298 addq $-2, %rcx - 0x48, 0x39, 0xd1, //0x0000329c cmpq %rdx, %rcx - 0x48, 0x89, 0xc1, //0x0000329f movq %rax, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032a2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcf, 0xff, 0xff, //0x000032a7 vmovdqu $-12303(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcf, 0xff, 0xff, //0x000032af vmovdqu $-12535(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000032b7 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x000032bb jne LBB0_583 - 0xe9, 0x8a, 0x08, 0x00, 0x00, //0x000032c1 jmp LBB0_681 - //0x000032c6 LBB0_591 - 0x49, 0x01, 0xd2, //0x000032c6 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000032c9 addq $1, %r10 - //0x000032cd LBB0_592 - 0x4d, 0x29, 0xf2, //0x000032cd subq %r14, %r10 - 0xe9, 0xb7, 0xe4, 0xff, 0xff, //0x000032d0 jmp LBB0_298 - //0x000032d5 LBB0_587 - 0x80, 0xfb, 0x22, //0x000032d5 cmpb $34, %bl - 0x0f, 0x85, 0x72, 0x08, 0x00, 0x00, //0x000032d8 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000032de vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000032e2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032e6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xca, //0x000032eb addq %rcx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032ee vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xa5, 0xcf, 0xff, 0xff, //0x000032f3 vmovdqu $-12379(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xbd, 0xce, 0xff, 0xff, //0x000032fb vmovdqu $-12611(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003303 vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003307 jmp LBB0_592 - //0x0000330c LBB0_593 - 0xc5, 0x7d, 0x7f, 0xe2, //0x0000330c vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00003310 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003314 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003319 vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x0000331e movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00003322 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00003326 jne LBB0_596 - 0x48, 0x89, 0xd8, //0x0000332c movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x0000332f subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00003332 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00003336 addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00003339 movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x0000333d jmp LBB0_596 - //0x00003342 LBB0_595 - 0x4c, 0x89, 0x3c, 0x24, //0x00003342 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00003346 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x0000334a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000334e vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003353 vmovdqa %ymm15, %ymm12 - //0x00003358 LBB0_596 - 0x44, 0x89, 0xd8, //0x00003358 movl %r11d, %eax - 0xf7, 0xd0, //0x0000335b notl %eax - 0x21, 0xd0, //0x0000335d andl %edx, %eax - 0x8d, 0x34, 0x00, //0x0000335f leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x00003362 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x00003366 notl %esi - 0x21, 0xd6, //0x00003368 andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000336a andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003370 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003373 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003375 setb %r11b - 0x01, 0xf6, //0x00003379 addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000337b xorl $1431655765, %esi - 0x21, 0xfe, //0x00003381 andl %edi, %esi - 0xf7, 0xd6, //0x00003383 notl %esi - 0x41, 0x21, 0xf2, //0x00003385 andl %esi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003388 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000338d vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003392 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x01, 0xcf, 0xff, 0xff, //0x00003397 vmovdqu $-12543(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x19, 0xce, 0xff, 0xff, //0x0000339f vmovdqu $-12775(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x000033a7 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x000033ab vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x000033af movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000033b3 testq %r10, %r10 - 0x0f, 0x85, 0x53, 0xf5, 0xff, 0xff, //0x000033b6 jne LBB0_224 - //0x000033bc LBB0_597 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000033bc movl $64, %edx - //0x000033c1 LBB0_598 - 0xc5, 0xbd, 0x64, 0xc8, //0x000033c1 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000033c5 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000033ca vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000033ce vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x000033d2 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x000033d5 testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000033d8 je LBB0_601 - 0x85, 0xf6, //0x000033de testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x000033e0 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x000033e5 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x000033e8 cmpq %rdi, %rdx - 0x49, 0x89, 0xda, //0x000033eb movq %rbx, %r10 - 0x0f, 0x87, 0x9b, 0x09, 0x00, 0x00, //0x000033ee ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x000033f4 subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x000033f7 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033fa addq $1, %r10 - 0xe9, 0x89, 0xe3, 0xff, 0xff, //0x000033fe jmp LBB0_298 - //0x00003403 LBB0_601 - 0x85, 0xf6, //0x00003403 testl %esi, %esi - 0x49, 0x89, 0xda, //0x00003405 movq %rbx, %r10 - 0x0f, 0x85, 0x8e, 0x09, 0x00, 0x00, //0x00003408 jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x0000340e addq $32, %r10 - 0x48, 0x83, 0xc1, 0xe0, //0x00003412 addq $-32, %rcx - //0x00003416 LBB0_603 - 0x4d, 0x85, 0xdb, //0x00003416 testq %r11, %r11 - 0x0f, 0x85, 0xe2, 0x01, 0x00, 0x00, //0x00003419 jne LBB0_620 - 0x4c, 0x89, 0xfe, //0x0000341f movq %r15, %rsi - 0x48, 0x85, 0xc9, //0x00003422 testq %rcx, %rcx - 0x0f, 0x84, 0x25, 0x07, 0x00, 0x00, //0x00003425 je LBB0_681 - //0x0000342b LBB0_605 - 0x41, 0x0f, 0xb6, 0x12, //0x0000342b movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x0000342f cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x00003432 je LBB0_613 - 0x80, 0xfa, 0x5c, //0x00003438 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000343b je LBB0_609 - 0x80, 0xfa, 0x1f, //0x00003441 cmpb $31, %dl - 0x0f, 0x86, 0x5d, 0x09, 0x00, 0x00, //0x00003444 jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000344a movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003451 movl $1, %edi - 0x49, 0x01, 0xfa, //0x00003456 addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x00003459 addq %rdx, %rcx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x0000345c jne LBB0_605 - 0xe9, 0xe9, 0x06, 0x00, 0x00, //0x00003462 jmp LBB0_681 - //0x00003467 LBB0_609 - 0x48, 0x83, 0xf9, 0x01, //0x00003467 cmpq $1, %rcx - 0x0f, 0x84, 0xdf, 0x06, 0x00, 0x00, //0x0000346b je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003471 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003475 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003479 vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x0000347e movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003485 movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x0000348a cmpq $-1, %rsi - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x0000348e jne LBB0_612 - 0x4d, 0x89, 0xd7, //0x00003494 movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x00003497 subq %r14, %r15 - 0x4c, 0x89, 0xfe, //0x0000349a movq %r15, %rsi - //0x0000349d LBB0_612 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000349d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000034a2 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcd, 0xff, 0xff, //0x000034a7 vmovdqu $-12815(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcd, 0xff, 0xff, //0x000034af vmovdqu $-13047(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000034b7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000034bb vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xfa, //0x000034bf addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x000034c2 addq %rdx, %rcx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000034c5 jne LBB0_605 - 0xe9, 0x80, 0x06, 0x00, 0x00, //0x000034cb jmp LBB0_681 - //0x000034d0 LBB0_613 - 0x4d, 0x29, 0xf2, //0x000034d0 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000034d3 addq $1, %r10 - 0xe9, 0xb0, 0xe2, 0xff, 0xff, //0x000034d7 jmp LBB0_298 - //0x000034dc LBB0_614 - 0x48, 0x85, 0xdb, //0x000034dc testq %rbx, %rbx - 0x0f, 0x84, 0x6b, 0x06, 0x00, 0x00, //0x000034df je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000034e5 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000034e9 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034ed vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf7, //0x000034f2 movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x000034f5 notq %rdi - 0x49, 0x89, 0xca, //0x000034f8 movq %rcx, %r10 - 0x48, 0x8d, 0x04, 0x39, //0x000034fb leaq (%rcx,%rdi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000034ff cmpq $-1, %r15 - 0x4c, 0x89, 0xfe, //0x00003503 movq %r15, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00003506 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x0000350a cmoveq %rax, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x0000350e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003512 addq $-1, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003516 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xcd, 0xff, 0xff, //0x0000351b vmovdqu $-12931(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xcc, 0xff, 0xff, //0x00003523 vmovdqu $-13163(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000352b vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x0000352f testq %rbx, %rbx - 0x0f, 0x85, 0xac, 0xf8, 0xff, 0xff, //0x00003532 jne LBB0_536 - 0xe9, 0x49, 0xf9, 0xff, 0xff, //0x00003538 jmp LBB0_546 - //0x0000353d LBB0_616 - 0x48, 0x85, 0xdb, //0x0000353d testq %rbx, %rbx - 0x0f, 0x84, 0x0a, 0x06, 0x00, 0x00, //0x00003540 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003546 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000354a vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000354e vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf1, //0x00003553 movq %r14, %rcx - 0x48, 0xf7, 0xd1, //0x00003556 notq %rcx - 0x4c, 0x01, 0xd1, //0x00003559 addq %r10, %rcx - 0x4c, 0x89, 0xfa, //0x0000355c movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x0000355f cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003563 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc1, //0x00003566 cmoveq %rcx, %rax - 0x49, 0x0f, 0x45, 0xcf, //0x0000356a cmovneq %r15, %rcx - 0x49, 0x83, 0xc2, 0x01, //0x0000356e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003572 addq $-1, %rbx - 0x49, 0x89, 0xc7, //0x00003576 movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003579 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x1a, 0xcd, 0xff, 0xff, //0x0000357e vmovdqu $-13030(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x32, 0xcc, 0xff, 0xff, //0x00003586 vmovdqu $-13262(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000358e vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x00003592 testq %rbx, %rbx - 0x0f, 0x85, 0x16, 0xfb, 0xff, 0xff, //0x00003595 jne LBB0_566 - 0xe9, 0xb0, 0x05, 0x00, 0x00, //0x0000359b jmp LBB0_681 - //0x000035a0 LBB0_618 - 0x48, 0x85, 0xc9, //0x000035a0 testq %rcx, %rcx - 0x0f, 0x84, 0xa7, 0x05, 0x00, 0x00, //0x000035a3 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000035a9 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000035ad vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000035b1 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x000035b6 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x000035b9 notq %rsi - 0x49, 0x89, 0xda, //0x000035bc movq %rbx, %r10 - 0x48, 0x8d, 0x04, 0x33, //0x000035bf leaq (%rbx,%rsi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000035c3 cmpq $-1, %r15 - 0x4c, 0x89, 0xff, //0x000035c7 movq %r15, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x000035ca cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x000035ce cmoveq %rax, %rdi - 0x49, 0x83, 0xc2, 0x01, //0x000035d2 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x000035d6 addq $-1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000035da vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xcc, 0xff, 0xff, //0x000035df vmovdqu $-13127(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcb, 0xff, 0xff, //0x000035e7 vmovdqu $-13359(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000035ef vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x000035f3 testq %rcx, %rcx - 0x0f, 0x85, 0x2f, 0xfc, 0xff, 0xff, //0x000035f6 jne LBB0_582 - 0xe9, 0xcc, 0xfc, 0xff, 0xff, //0x000035fc jmp LBB0_592 - //0x00003601 LBB0_620 - 0x48, 0x85, 0xc9, //0x00003601 testq %rcx, %rcx - 0x0f, 0x84, 0x46, 0x05, 0x00, 0x00, //0x00003604 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000360a vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000360e vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003612 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x00003617 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x0000361a notq %rsi - 0x4c, 0x01, 0xd6, //0x0000361d addq %r10, %rsi - 0x4c, 0x89, 0xfa, //0x00003620 movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x00003623 cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003627 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x0000362a cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf7, //0x0000362e cmovneq %r15, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x00003632 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x00003636 addq $-1, %rcx - 0x49, 0x89, 0xc7, //0x0000363a movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000363d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x56, 0xcc, 0xff, 0xff, //0x00003642 vmovdqu $-13226(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x6e, 0xcb, 0xff, 0xff, //0x0000364a vmovdqu $-13458(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003652 vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x00003656 testq %rcx, %rcx - 0x0f, 0x85, 0xcc, 0xfd, 0xff, 0xff, //0x00003659 jne LBB0_605 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x0000365f jmp LBB0_681 - //0x00003664 LBB0_622 - 0x49, 0x39, 0xf2, //0x00003664 cmpq %rsi, %r10 - 0x0f, 0x84, 0x28, 0x05, 0x00, 0x00, //0x00003667 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000366d vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003671 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003675 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x0000367a addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000367d addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00003681 notq %rsi - 0x49, 0x01, 0xf2, //0x00003684 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00003687 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000368c movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003691 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003696 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xcb, 0xff, 0xff, //0x0000369b vmovdqu $-13315(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x15, 0xcb, 0xff, 0xff, //0x000036a3 vmovdqu $-13547(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000036ab vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x000036af testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x000036b2 jg LBB0_626 - 0xe9, 0xd8, 0x04, 0x00, 0x00, //0x000036b8 jmp LBB0_711 - //0x000036bd LBB0_624 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000036bd movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x000036c4 movl $2, %edx - 0x49, 0x01, 0xd1, //0x000036c9 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000036cc movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x000036d4 addq %rcx, %r10 - 0x0f, 0x8e, 0xb8, 0x04, 0x00, 0x00, //0x000036d7 jle LBB0_711 - //0x000036dd LBB0_626 - 0x41, 0x0f, 0xb6, 0x09, //0x000036dd movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x000036e1 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x000036e4 je LBB0_624 - 0x80, 0xf9, 0x22, //0x000036ea cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000036ed je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000036f3 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x000036fa movl $1, %edx - 0x49, 0x01, 0xd1, //0x000036ff addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003702 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x0000370a addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x0000370d jg LBB0_626 - 0xe9, 0x7d, 0x04, 0x00, 0x00, //0x00003713 jmp LBB0_711 - //0x00003718 LBB0_629 - 0x4d, 0x29, 0xf1, //0x00003718 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000371b addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x0000371f movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00003723 testq %r8, %r8 - 0x0f, 0x8f, 0x74, 0xcc, 0xff, 0xff, //0x00003726 jg LBB0_3 - 0xe9, 0xfb, 0x03, 0x00, 0x00, //0x0000372c jmp LBB0_679 - //0x00003731 LBB0_630 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003731 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003735 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003739 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000373e vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x1c, 0x24, //0x00003743 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x00003747 cmpq $-1, %r11 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000374b jne LBB0_633 - 0x48, 0x89, 0xf8, //0x00003751 movq %rdi, %rax - 0x4c, 0x29, 0xf0, //0x00003754 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00003757 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x0000375b addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x0000375e movq %rcx, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00003762 jmp LBB0_633 - //0x00003767 LBB0_632 - 0x4c, 0x89, 0x1c, 0x24, //0x00003767 movq %r11, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000376b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000376f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003773 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003778 vmovdqa %ymm15, %ymm12 - //0x0000377d LBB0_633 - 0x44, 0x89, 0xd0, //0x0000377d movl %r10d, %eax - 0xf7, 0xd0, //0x00003780 notl %eax - 0x21, 0xd0, //0x00003782 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00003784 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x1c, 0x42, //0x00003787 leal (%r10,%rax,2), %ebx - 0xf7, 0xd1, //0x0000378b notl %ecx - 0x21, 0xd1, //0x0000378d andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000378f andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00003795 xorl %r10d, %r10d - 0x01, 0xc1, //0x00003798 addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x0000379a setb %r10b - 0x01, 0xc9, //0x0000379e addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x000037a0 xorl $1431655765, %ecx - 0x21, 0xd9, //0x000037a6 andl %ebx, %ecx - 0xf7, 0xd1, //0x000037a8 notl %ecx - 0x21, 0xce, //0x000037aa andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ac vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000037b1 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000037b6 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xdd, 0xca, 0xff, 0xff, //0x000037bb vmovdqu $-13603(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf5, 0xc9, 0xff, 0xff, //0x000037c3 vmovdqu $-13835(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000037cb vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000037cf vmovdqa %ymm1, %ymm12 - 0x4c, 0x8b, 0x1c, 0x24, //0x000037d3 movq (%rsp), %r11 - 0xc5, 0x7d, 0x7f, 0xea, //0x000037d7 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000037db testq %rsi, %rsi - 0x0f, 0x85, 0xfe, 0xf1, 0xff, 0xff, //0x000037de jne LBB0_247 - //0x000037e4 LBB0_634 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000037e4 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e8 vmovdqa %ymm11, %ymm0 - 0xc5, 0x7d, 0x6f, 0xda, //0x000037ec vmovdqa %ymm2, %ymm11 - 0x48, 0x83, 0xc7, 0x20, //0x000037f0 addq $32, %rdi - 0x49, 0x83, 0xc0, 0xe0, //0x000037f4 addq $-32, %r8 - //0x000037f8 LBB0_635 - 0x4d, 0x85, 0xd2, //0x000037f8 testq %r10, %r10 - 0x0f, 0x85, 0x6e, 0x02, 0x00, 0x00, //0x000037fb jne LBB0_669 - 0x4c, 0x89, 0xf6, //0x00003801 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003804 notq %rsi - 0x4d, 0x89, 0xda, //0x00003807 movq %r11, %r10 - 0x4d, 0x85, 0xc0, //0x0000380a testq %r8, %r8 - 0x0f, 0x84, 0x95, 0x02, 0x00, 0x00, //0x0000380d je LBB0_671 - //0x00003813 LBB0_637 - 0x48, 0x83, 0xc6, 0x01, //0x00003813 addq $1, %rsi - //0x00003817 LBB0_638 - 0x31, 0xd2, //0x00003817 xorl %edx, %edx - 0x48, 0x89, 0xf9, //0x00003819 movq %rdi, %rcx - //0x0000381c LBB0_639 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000381c movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003820 cmpb $34, %bl - 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x00003823 je LBB0_646 - 0x80, 0xfb, 0x5c, //0x00003829 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000382c je LBB0_644 - 0x48, 0x83, 0xc2, 0x01, //0x00003832 addq $1, %rdx - 0x49, 0x39, 0xd0, //0x00003836 cmpq %rdx, %r8 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003839 jne LBB0_639 - 0xe9, 0x52, 0x00, 0x00, 0x00, //0x0000383f jmp LBB0_642 - //0x00003844 LBB0_644 - 0x49, 0x8d, 0x40, 0xff, //0x00003844 leaq $-1(%r8), %rax - 0x48, 0x39, 0xd0, //0x00003848 cmpq %rdx, %rax - 0x0f, 0x84, 0xad, 0x04, 0x00, 0x00, //0x0000384b je LBB0_707 - 0x48, 0x8d, 0x04, 0x3e, //0x00003851 leaq (%rsi,%rdi), %rax - 0x48, 0x01, 0xd0, //0x00003855 addq %rdx, %rax - 0x49, 0x83, 0xfa, 0xff, //0x00003858 cmpq $-1, %r10 - 0x4c, 0x0f, 0x44, 0xd8, //0x0000385c cmoveq %rax, %r11 - 0x4c, 0x0f, 0x44, 0xd0, //0x00003860 cmoveq %rax, %r10 - 0x48, 0x01, 0xd7, //0x00003864 addq %rdx, %rdi - 0x48, 0x83, 0xc7, 0x02, //0x00003867 addq $2, %rdi - 0x4c, 0x89, 0xc0, //0x0000386b movq %r8, %rax - 0x48, 0x29, 0xd0, //0x0000386e subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003871 addq $-2, %rax - 0x49, 0x83, 0xc0, 0xfe, //0x00003875 addq $-2, %r8 - 0x49, 0x39, 0xd0, //0x00003879 cmpq %rdx, %r8 - 0x49, 0x89, 0xc0, //0x0000387c movq %rax, %r8 - 0x0f, 0x85, 0x92, 0xff, 0xff, 0xff, //0x0000387f jne LBB0_638 - 0xe9, 0x74, 0x04, 0x00, 0x00, //0x00003885 jmp LBB0_707 - //0x0000388a LBB0_646 - 0x48, 0x01, 0xd1, //0x0000388a addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000388d addq $1, %rcx - 0xe9, 0x15, 0x02, 0x00, 0x00, //0x00003891 jmp LBB0_672 - //0x00003896 LBB0_642 - 0x80, 0xfb, 0x22, //0x00003896 cmpb $34, %bl - 0x0f, 0x85, 0x5f, 0x04, 0x00, 0x00, //0x00003899 jne LBB0_707 - 0x48, 0x89, 0xf9, //0x0000389f movq %rdi, %rcx - 0x4c, 0x01, 0xc1, //0x000038a2 addq %r8, %rcx - 0xe9, 0x01, 0x02, 0x00, 0x00, //0x000038a5 jmp LBB0_672 - //0x000038aa LBB0_647 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038aa vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038ae vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038b2 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038b7 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xfa, 0xff, //0x000038bc cmpq $-1, %r10 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000038c0 jne LBB0_650 - 0x48, 0x89, 0xd8, //0x000038c6 movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x000038c9 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xd2, //0x000038cc bsfq %rdx, %r10 - 0x49, 0x01, 0xc2, //0x000038d0 addq %rax, %r10 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x000038d3 jmp LBB0_650 - //0x000038d8 LBB0_649 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038d8 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038dc vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038e0 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038e5 vmovdqa %ymm15, %ymm12 - //0x000038ea LBB0_650 - 0x44, 0x89, 0xd8, //0x000038ea movl %r11d, %eax - 0xf7, 0xd0, //0x000038ed notl %eax - 0x21, 0xd0, //0x000038ef andl %edx, %eax - 0x8d, 0x34, 0x00, //0x000038f1 leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x000038f4 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x000038f8 notl %esi - 0x21, 0xd6, //0x000038fa andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000038fc andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003902 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003905 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003907 setb %r11b - 0x01, 0xf6, //0x0000390b addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000390d xorl $1431655765, %esi - 0x21, 0xfe, //0x00003913 andl %edi, %esi - 0xf7, 0xd6, //0x00003915 notl %esi - 0x21, 0xf1, //0x00003917 andl %esi, %ecx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003919 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000391e vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003923 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x70, 0xc9, 0xff, 0xff, //0x00003928 vmovdqu $-13968(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x88, 0xc8, 0xff, 0xff, //0x00003930 vmovdqu $-14200(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00003938 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x0000393c vmovdqa %ymm2, %ymm12 - 0x48, 0x85, 0xc9, //0x00003940 testq %rcx, %rcx - 0x0f, 0x85, 0xf0, 0xf0, 0xff, 0xff, //0x00003943 jne LBB0_398 - //0x00003949 LBB0_651 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003949 movl $64, %edx - //0x0000394e LBB0_652 - 0xc5, 0xbd, 0x64, 0xc8, //0x0000394e vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003952 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003957 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x0000395b vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x0000395f bsfl %esi, %edi - 0x48, 0x85, 0xc9, //0x00003962 testq %rcx, %rcx - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x00003965 je LBB0_655 - 0x85, 0xf6, //0x0000396b testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x0000396d movl $64, %eax - 0x0f, 0x44, 0xf8, //0x00003972 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x00003975 cmpq %rdi, %rdx - 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx - 0x0f, 0x87, 0x31, 0x04, 0x00, 0x00, //0x0000397b ja LBB0_725 - 0xc5, 0x7d, 0x7f, 0xea, //0x00003981 vmovdqa %ymm13, %ymm2 - 0x4c, 0x29, 0xf1, //0x00003985 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00003988 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000398b addq $1, %rcx - 0x4d, 0x89, 0xd3, //0x0000398f movq %r10, %r11 - 0xe9, 0x57, 0xeb, 0xff, 0xff, //0x00003992 jmp LBB0_461 - //0x00003997 LBB0_655 - 0x85, 0xf6, //0x00003997 testl %esi, %esi - 0x0f, 0x85, 0x23, 0x04, 0x00, 0x00, //0x00003999 jne LBB0_726 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000399f vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000039a3 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000039a7 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000039ac vmovdqa %ymm15, %ymm12 - 0x48, 0x83, 0xc3, 0x20, //0x000039b1 addq $32, %rbx - 0x49, 0x83, 0xc0, 0xe0, //0x000039b5 addq $-32, %r8 - //0x000039b9 LBB0_657 - 0x4d, 0x85, 0xdb, //0x000039b9 testq %r11, %r11 - 0x0f, 0x85, 0x12, 0x01, 0x00, 0x00, //0x000039bc jne LBB0_673 - 0x4c, 0x89, 0xd6, //0x000039c2 movq %r10, %rsi - 0x4d, 0x85, 0xc0, //0x000039c5 testq %r8, %r8 - 0x0f, 0x84, 0x30, 0x03, 0x00, 0x00, //0x000039c8 je LBB0_707 - //0x000039ce LBB0_659 - 0x48, 0x89, 0xd9, //0x000039ce movq %rbx, %rcx - //0x000039d1 LBB0_660 - 0x0f, 0xb6, 0x11, //0x000039d1 movzbl (%rcx), %edx - 0x80, 0xfa, 0x22, //0x000039d4 cmpb $34, %dl - 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x000039d7 je LBB0_668 - 0x80, 0xfa, 0x5c, //0x000039dd cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000039e0 je LBB0_665 - 0x80, 0xfa, 0x1f, //0x000039e6 cmpb $31, %dl - 0x0f, 0x86, 0xe1, 0x03, 0x00, 0x00, //0x000039e9 jbe LBB0_727 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000039ef movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x000039f6 movl $1, %edi - //0x000039fb LBB0_664 - 0x48, 0x01, 0xf9, //0x000039fb addq %rdi, %rcx - 0x49, 0x01, 0xd0, //0x000039fe addq %rdx, %r8 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003a01 jne LBB0_660 - 0xe9, 0xf2, 0x02, 0x00, 0x00, //0x00003a07 jmp LBB0_707 - //0x00003a0c LBB0_665 - 0x49, 0x83, 0xf8, 0x01, //0x00003a0c cmpq $1, %r8 - 0x0f, 0x84, 0xe8, 0x02, 0x00, 0x00, //0x00003a10 je LBB0_707 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003a16 movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003a1d movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x00003a22 cmpq $-1, %rsi - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003a26 jne LBB0_664 - 0x48, 0x89, 0xce, //0x00003a2c movq %rcx, %rsi - 0x4c, 0x29, 0xf6, //0x00003a2f subq %r14, %rsi - 0x49, 0x89, 0xf2, //0x00003a32 movq %rsi, %r10 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a35 jmp LBB0_664 - //0x00003a3a LBB0_668 - 0x4c, 0x29, 0xf1, //0x00003a3a subq %r14, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x00003a3d addq $1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a41 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003a46 vmovdqa %ymm11, %ymm2 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003a4a vmovdqa %ymm12, %ymm15 - 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xc8, 0xff, 0xff, //0x00003a4f vmovdqu $-14263(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xc7, 0xff, 0xff, //0x00003a57 vmovdqu $-14495(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003a5f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003a63 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xd3, //0x00003a67 movq %r10, %r11 - 0xe9, 0x7f, 0xea, 0xff, 0xff, //0x00003a6a jmp LBB0_461 - //0x00003a6f LBB0_669 - 0x4d, 0x85, 0xc0, //0x00003a6f testq %r8, %r8 - 0x0f, 0x84, 0x86, 0x02, 0x00, 0x00, //0x00003a72 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003a78 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003a7b notq %rsi - 0x48, 0x8d, 0x04, 0x37, //0x00003a7e leaq (%rdi,%rsi), %rax - 0x4c, 0x89, 0xd9, //0x00003a82 movq %r11, %rcx - 0x49, 0x83, 0xfb, 0xff, //0x00003a85 cmpq $-1, %r11 - 0x4d, 0x89, 0xda, //0x00003a89 movq %r11, %r10 - 0x48, 0x0f, 0x44, 0xc8, //0x00003a8c cmoveq %rax, %rcx - 0x4c, 0x0f, 0x44, 0xd0, //0x00003a90 cmoveq %rax, %r10 - 0x48, 0x83, 0xc7, 0x01, //0x00003a94 addq $1, %rdi - 0x49, 0x83, 0xc0, 0xff, //0x00003a98 addq $-1, %r8 - 0x49, 0x89, 0xcb, //0x00003a9c movq %rcx, %r11 - 0x4d, 0x85, 0xc0, //0x00003a9f testq %r8, %r8 - 0x0f, 0x85, 0x6b, 0xfd, 0xff, 0xff, //0x00003aa2 jne LBB0_637 - //0x00003aa8 LBB0_671 - 0x48, 0x89, 0xf9, //0x00003aa8 movq %rdi, %rcx - //0x00003aab LBB0_672 - 0x4c, 0x29, 0xf1, //0x00003aab subq %r14, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003aae vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003ab3 vmovdqa %ymm11, %ymm2 - 0xc5, 0xfe, 0x6f, 0x25, 0xe1, 0xc7, 0xff, 0xff, //0x00003ab7 vmovdqu $-14367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf9, 0xc6, 0xff, 0xff, //0x00003abf vmovdqu $-14599(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003ac7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003acb vmovdqa %ymm1, %ymm12 - 0xe9, 0x1a, 0xea, 0xff, 0xff, //0x00003acf jmp LBB0_461 - //0x00003ad4 LBB0_673 - 0x4d, 0x85, 0xc0, //0x00003ad4 testq %r8, %r8 - 0x0f, 0x84, 0x21, 0x02, 0x00, 0x00, //0x00003ad7 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003add movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003ae0 notq %rsi - 0x48, 0x01, 0xde, //0x00003ae3 addq %rbx, %rsi - 0x49, 0x83, 0xfa, 0xff, //0x00003ae6 cmpq $-1, %r10 - 0x4c, 0x89, 0xd0, //0x00003aea movq %r10, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x00003aed cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf2, //0x00003af1 cmovneq %r10, %rsi - 0x48, 0x83, 0xc3, 0x01, //0x00003af5 addq $1, %rbx - 0x49, 0x83, 0xc0, 0xff, //0x00003af9 addq $-1, %r8 - 0x49, 0x89, 0xc2, //0x00003afd movq %rax, %r10 - 0x4d, 0x85, 0xc0, //0x00003b00 testq %r8, %r8 - 0x0f, 0x85, 0xc5, 0xfe, 0xff, 0xff, //0x00003b03 jne LBB0_659 - 0xe9, 0xf0, 0x01, 0x00, 0x00, //0x00003b09 jmp LBB0_707 - //0x00003b0e LBB0_675 - 0x4d, 0x89, 0x65, 0x00, //0x00003b0e movq %r12, (%r13) - //0x00003b12 LBB0_677 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003b12 movq $-1, (%rsp) - 0xe9, 0x76, 0x00, 0x00, 0x00, //0x00003b1a jmp LBB0_711 - //0x00003b1f LBB0_705 - 0x48, 0xc7, 0x04, 0x24, 0xf9, 0xff, 0xff, 0xff, //0x00003b1f movq $-7, (%rsp) - 0xe9, 0x69, 0x00, 0x00, 0x00, //0x00003b27 jmp LBB0_711 - //0x00003b2c LBB0_679 - 0x49, 0x83, 0xc0, 0xff, //0x00003b2c addq $-1, %r8 - 0x4c, 0x89, 0x04, 0x24, //0x00003b30 movq %r8, (%rsp) - 0xe9, 0x5c, 0x00, 0x00, 0x00, //0x00003b34 jmp LBB0_711 - //0x00003b39 LBB0_463 - 0x49, 0x83, 0xc1, 0xff, //0x00003b39 addq $-1, %r9 - 0x4c, 0x89, 0x0c, 0x24, //0x00003b3d movq %r9, (%rsp) - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x00003b41 jmp LBB0_711 - //0x00003b46 LBB0_680 - 0x49, 0x83, 0xfa, 0xff, //0x00003b46 cmpq $-1, %r10 - 0x0f, 0x85, 0x7c, 0x00, 0x00, 0x00, //0x00003b4a jne LBB0_703 - //0x00003b50 LBB0_681 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003b50 movq $-1, %r10 - 0x4d, 0x89, 0xc7, //0x00003b57 movq %r8, %r15 - 0xe9, 0x6d, 0x00, 0x00, 0x00, //0x00003b5a jmp LBB0_703 - //0x00003b5f LBB0_682 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003b5f movq $-1, %rcx - 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00003b66 jmp LBB0_684 - //0x00003b6b LBB0_178 - 0x48, 0x83, 0xc3, 0xff, //0x00003b6b addq $-1, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00003b6f movq %rbx, (%rsp) - 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00003b73 jmp LBB0_711 - //0x00003b78 LBB0_683 - 0x4c, 0x89, 0xe9, //0x00003b78 movq %r13, %rcx - //0x00003b7b LBB0_684 - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00003b7b movq $48(%rsp), %rdx - 0x48, 0x8b, 0x02, //0x00003b80 movq (%rdx), %rax - 0x48, 0x29, 0xc8, //0x00003b83 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003b86 addq $-2, %rax - 0x48, 0x89, 0x02, //0x00003b8a movq %rax, (%rdx) - //0x00003b8d LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003b8d movq $-2, (%rsp) - //0x00003b95 LBB0_711 - 0x48, 0x8b, 0x04, 0x24, //0x00003b95 movq (%rsp), %rax - 0x48, 0x8d, 0x65, 0xd8, //0x00003b99 leaq $-40(%rbp), %rsp - 0x5b, //0x00003b9d popq %rbx - 0x41, 0x5c, //0x00003b9e popq %r12 - 0x41, 0x5d, //0x00003ba0 popq %r13 - 0x41, 0x5e, //0x00003ba2 popq %r14 - 0x41, 0x5f, //0x00003ba4 popq %r15 - 0x5d, //0x00003ba6 popq %rbp - 0xc5, 0xf8, 0x77, //0x00003ba7 vzeroupper - 0xc3, //0x00003baa retq - //0x00003bab LBB0_686 - 0x49, 0x89, 0x55, 0x00, //0x00003bab movq %rdx, (%r13) - 0xe9, 0xe1, 0xff, 0xff, 0xff, //0x00003baf jmp LBB0_711 - //0x00003bb4 LBB0_699 - 0x49, 0x83, 0xff, 0xff, //0x00003bb4 cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003bb8 jne LBB0_702 - 0x4c, 0x0f, 0xbc, 0xfe, //0x00003bbe bsfq %rsi, %r15 - //0x00003bc2 LBB0_701 - 0x4d, 0x01, 0xd7, //0x00003bc2 addq %r10, %r15 - //0x00003bc5 LBB0_702 - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003bc5 movq $-2, %r10 - //0x00003bcc LBB0_703 - 0x4c, 0x89, 0x14, 0x24, //0x00003bcc movq %r10, (%rsp) - 0x4d, 0x89, 0x7d, 0x00, //0x00003bd0 movq %r15, (%r13) - 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x00003bd4 jmp LBB0_711 - //0x00003bd9 LBB0_687 - 0x80, 0xfa, 0x61, //0x00003bd9 cmpb $97, %dl - 0x0f, 0x85, 0xab, 0xff, 0xff, 0xff, //0x00003bdc jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003be2 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003be6 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003bea cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x97, 0xff, 0xff, 0xff, //0x00003bf0 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003bf6 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003bfa movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003bfe cmpb $115, $2(%r14,%rcx) - 0x0f, 0x85, 0x83, 0xff, 0xff, 0xff, //0x00003c04 jne LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003c0a movq $-2, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x00003c12 leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c16 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003c1a cmpb $101, $3(%r14,%rcx) - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003c20 jne LBB0_711 - 0x48, 0x83, 0xc1, 0x04, //0x00003c26 addq $4, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003c2a movq %rcx, (%r13) - 0xe9, 0x62, 0xff, 0xff, 0xff, //0x00003c2e jmp LBB0_711 - //0x00003c33 LBB0_267 - 0x49, 0x89, 0x45, 0x00, //0x00003c33 movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003c37 cmpb $110, (%r14,%rax) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003c3c jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c42 movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003c46 cmpb $117, (%r14,%rcx) - 0x0f, 0x85, 0x3c, 0xff, 0xff, 0xff, //0x00003c4b jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c51 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c55 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003c59 cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x28, 0xff, 0xff, 0xff, //0x00003c5f jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003c65 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c69 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003c6d cmpb $108, $2(%r14,%rcx) - 0x0f, 0x84, 0x4b, 0x00, 0x00, 0x00, //0x00003c73 je LBB0_696 - 0xe9, 0x0f, 0xff, 0xff, 0xff, //0x00003c79 jmp LBB0_710 - //0x00003c7e LBB0_692 - 0x49, 0x89, 0x45, 0x00, //0x00003c7e movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003c82 cmpb $116, (%r14,%rax) - 0x0f, 0x85, 0x00, 0xff, 0xff, 0xff, //0x00003c87 jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c8d movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003c91 cmpb $114, (%r14,%rcx) - 0x0f, 0x85, 0xf1, 0xfe, 0xff, 0xff, //0x00003c96 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c9c leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003ca0 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003ca4 cmpb $117, $1(%r14,%rcx) - 0x0f, 0x85, 0xdd, 0xfe, 0xff, 0xff, //0x00003caa jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003cb0 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003cb4 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003cb8 cmpb $101, $2(%r14,%rcx) - 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003cbe jne LBB0_710 - //0x00003cc4 LBB0_696 - 0x48, 0x83, 0xc1, 0x03, //0x00003cc4 addq $3, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003cc8 movq %rcx, (%r13) - 0xe9, 0xbc, 0xfe, 0xff, 0xff, //0x00003ccc jmp LBB0_710 - //0x00003cd1 LBB0_698 - 0x48, 0x83, 0x04, 0x24, 0xff, //0x00003cd1 addq $-1, (%rsp) - 0xe9, 0xba, 0xfe, 0xff, 0xff, //0x00003cd6 jmp LBB0_711 - //0x00003cdb LBB0_264 - 0x48, 0x83, 0xc1, 0xff, //0x00003cdb addq $-1, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00003cdf movq %rcx, (%rsp) - 0xe9, 0xad, 0xfe, 0xff, 0xff, //0x00003ce3 jmp LBB0_711 - //0x00003ce8 LBB0_704 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003ce8 movq $-1, %rcx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00003cef jmp LBB0_709 - //0x00003cf4 LBB0_706 - 0x48, 0x83, 0xf9, 0xff, //0x00003cf4 cmpq $-1, %rcx - 0x0f, 0x85, 0x58, 0x00, 0x00, 0x00, //0x00003cf8 jne LBB0_716 + 0x48, 0x21, 0xcf, //0x00001e0f andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_340 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00001e18 jmp LBB0_343 + //0x00001e1d LBB0_342 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001e1d vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001e22 vmovdqa %ymm15, %ymm13 + //0x00001e27 LBB0_343 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e27 sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e2b popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e30 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e33 addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e37 addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e3b movq %r13, %r11 + 0x49, 0x83, 0xf9, 0x40, //0x00001e3e cmpq $64, %r9 + 0x0f, 0x8d, 0x7a, 0xfe, 0xff, 0xff, //0x00001e42 jge LBB0_335 + 0xe9, 0x1e, 0xfd, 0xff, 0xff, //0x00001e48 jmp LBB0_344 + //0x00001e4d LBB0_360 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001e4d movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001e52 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001e56 movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001e59 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001e5c addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001e5f xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001e62 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001e65 xorl %r15d, %r15d + 0x31, 0xdb, //0x00001e68 xorl %ebx, %ebx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001e6a jmp LBB0_362 + //0x00001e6f LBB0_361 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e6f sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e73 popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e78 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e7b addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e7f addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e83 movq %r13, %r11 + //0x00001e86 LBB0_362 + 0x49, 0x83, 0xf9, 0x40, //0x00001e86 cmpq $64, %r9 + 0x0f, 0x8c, 0x2d, 0x01, 0x00, 0x00, //0x00001e8a jl LBB0_370 + //0x00001e90 LBB0_363 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001e90 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001e95 vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001e9b vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001e9f vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001ea3 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001ea7 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001eab shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001eaf orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001eb2 movq %rdx, %rcx + 0x4c, 0x09, 0xd1, //0x00001eb5 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001eb8 jne LBB0_365 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001ebe movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001ec5 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001ec8 jmp LBB0_366 + //0x00001ecd LBB0_365 + 0x4c, 0x89, 0xd1, //0x00001ecd movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001ed0 notq %rcx + 0x48, 0x21, 0xd1, //0x00001ed3 andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001ed6 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001eda orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001edd movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001ee0 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001ee3 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001eed andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001ef0 andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001ef3 xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001ef6 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001ef9 setb %r10b + 0x48, 0x01, 0xd2, //0x00001efd addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001f00 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001f0a xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001f0d andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001f10 notq %rdx + //0x00001f13 LBB0_366 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001f13 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f17 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f1b shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001f1f vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f23 vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001f27 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001f2a andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001f2d vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x64, 0xe1, 0xff, 0xff, 0x00, //0x00001f32 vpclmulqdq $0, $-7836(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001f3c vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001f41 xorq %r11, %r13 + 0xc5, 0xa5, 0x74, 0xd1, //0x00001f44 vpcmpeqb %ymm1, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f48 vpmovmskb %ymm2, %esi + 0xc5, 0xa5, 0x74, 0xd0, //0x00001f4c vpcmpeqb %ymm0, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f50 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f54 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001f58 orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001f5b movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001f5e notq %rcx + 0x48, 0x21, 0xce, //0x00001f61 andq %rcx, %rsi + 0xc5, 0x9d, 0x74, 0xc9, //0x00001f64 vpcmpeqb %ymm1, %ymm12, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001f68 vpmovmskb %ymm1, %edi + 0xc5, 0x9d, 0x74, 0xc0, //0x00001f6c vpcmpeqb %ymm0, %ymm12, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001f70 vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001f74 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001f78 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001f7b andq %rcx, %rdi + 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001f7e je LBB0_361 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001f84 movq (%rsp), %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f88 .p2align 4, 0x90 + //0x00001f90 LBB0_368 + 0x48, 0x8d, 0x4f, 0xff, //0x00001f90 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001f94 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001f97 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001f9a popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001f9f addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001fa2 cmpq %rbx, %rdx + 0x0f, 0x86, 0x7a, 0x01, 0x00, 0x00, //0x00001fa5 jbe LBB0_386 + 0x48, 0x83, 0xc3, 0x01, //0x00001fab addq $1, %rbx + 0x48, 0x21, 0xcf, //0x00001faf andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001fb2 jne LBB0_368 + 0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00001fb8 jmp LBB0_361 + //0x00001fbd LBB0_370 + 0x4d, 0x85, 0xc9, //0x00001fbd testq %r9, %r9 + 0x0f, 0x8e, 0xd2, 0x1e, 0x00, 0x00, //0x00001fc0 jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00001fc6 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001fca vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001fce vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001fd3 vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001fd7 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001fdd vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001fe3 movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001fe6 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001fec cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001ff2 jb LBB0_374 + 0x49, 0x83, 0xf9, 0x20, //0x00001ff8 cmpq $32, %r9 + 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001ffc jb LBB0_375 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00002002 vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00002007 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x0000200d addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00002011 leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00002015 leaq $96(%rsp), %rsi + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x0000201a jmp LBB0_376 + //0x0000201f LBB0_374 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000201f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002024 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x6f, 0xe2, 0xff, 0xff, //0x00002029 vmovdqu $-7569(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x87, 0xe1, 0xff, 0xff, //0x00002031 vmovdqu $-7801(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002039 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000203d vmovdqa %ymm2, %ymm12 + 0xe9, 0x4a, 0xfe, 0xff, 0xff, //0x00002041 jmp LBB0_363 + //0x00002046 LBB0_375 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00002046 leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x0000204b movq %r9, %rdi + //0x0000204e LBB0_376 + 0x48, 0x83, 0xff, 0x10, //0x0000204e cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002052 jb LBB0_377 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00002058 vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x0000205d vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00002061 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00002065 addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00002069 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x0000206d cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00002071 jae LBB0_384 + //0x00002077 LBB0_378 + 0x48, 0x83, 0xff, 0x04, //0x00002077 cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x0000207b jl LBB0_379 + //0x00002081 LBB0_385 + 0x41, 0x8b, 0x0e, //0x00002081 movl (%r14), %ecx + 0x89, 0x0e, //0x00002084 movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00002086 addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x0000208a addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x0000208e addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00002092 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002096 jae LBB0_380 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x0000209c jmp LBB0_381 + //0x000020a1 LBB0_377 + 0x48, 0x83, 0xff, 0x08, //0x000020a1 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x000020a5 jb LBB0_378 + //0x000020ab LBB0_384 + 0x49, 0x8b, 0x0e, //0x000020ab movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x000020ae movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x000020b1 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x000020b5 addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x000020b9 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000020bd cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x000020c1 jge LBB0_385 + //0x000020c7 LBB0_379 + 0x48, 0x83, 0xff, 0x02, //0x000020c7 cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x000020cb jb LBB0_381 + //0x000020d1 LBB0_380 + 0x41, 0x0f, 0xb7, 0x0e, //0x000020d1 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x000020d5 movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x000020d8 addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x000020dc addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x000020e0 addq $-2, %rdi + //0x000020e4 LBB0_381 + 0x4c, 0x89, 0xf2, //0x000020e4 movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x000020e7 leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x000020ec testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000020ef vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000020f4 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xe1, 0xff, 0xff, //0x000020f9 vmovdqu $-7777(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xe0, 0xff, 0xff, //0x00002101 vmovdqu $-8009(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002109 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000210d vmovdqa %ymm2, %ymm12 + 0x0f, 0x84, 0x79, 0xfd, 0xff, 0xff, //0x00002111 je LBB0_363 + 0x8a, 0x0a, //0x00002117 movb (%rdx), %cl + 0x88, 0x0e, //0x00002119 movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x0000211b leaq $64(%rsp), %r14 + 0xe9, 0x6b, 0xfd, 0xff, 0xff, //0x00002120 jmp LBB0_363 + //0x00002125 LBB0_386 + 0x48, 0x8b, 0x74, 0x24, 0x20, //0x00002125 movq $32(%rsp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x0000212a movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd7, //0x0000212e bsfq %rdi, %rdx + 0x4c, 0x29, 0xca, //0x00002132 subq %r9, %rdx + 0x48, 0x01, 0xd1, //0x00002135 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00002138 addq $1, %rcx + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000213c movq $8(%rsp), %r15 + 0x49, 0x89, 0x0f, //0x00002141 movq %rcx, (%r15) + 0x48, 0x8b, 0x56, 0x08, //0x00002144 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x00002148 cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000214b cmovaq %rdx, %rcx + 0x49, 0x89, 0x0f, //0x0000214f movq %rcx, (%r15) + 0x0f, 0x86, 0x5d, 0xe9, 0xff, 0xff, //0x00002152 jbe LBB0_387 + 0xe9, 0xb8, 0x1b, 0x00, 0x00, //0x00002158 jmp LBB0_728 + //0x0000215d LBB0_388 + 0x0f, 0xbc, 0xd9, //0x0000215d bsfl %ecx, %ebx + 0x48, 0x89, 0xd9, //0x00002160 movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x00002163 subq %rdi, %rcx + 0x49, 0x89, 0x0f, //0x00002166 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002169 testq %rcx, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000216c movq (%rsp), %r11 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002170 movabsq $4294977024, %rdi + 0x0f, 0x8e, 0x40, 0x00, 0x00, 0x00, //0x0000217a jle LBB0_393 + 0x49, 0x01, 0xd8, //0x00002180 addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002183 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002186 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002189 .p2align 4, 0x90 + //0x00002190 LBB0_390 + 0x0f, 0xb6, 0x0e, //0x00002190 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002193 cmpq $32, %rcx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00002197 ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xcf, //0x0000219d btq %rcx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x000021a1 jae LBB0_393 + 0x49, 0x89, 0x17, //0x000021a7 movq %rdx, (%r15) + 0x49, 0x83, 0xc0, 0xff, //0x000021aa addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x000021ae addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x000021b2 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x000021b6 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000021ba jg LBB0_390 + //0x000021c0 LBB0_393 + 0x48, 0x85, 0xc0, //0x000021c0 testq %rax, %rax + 0x0f, 0x8f, 0xd7, 0xe1, 0xff, 0xff, //0x000021c3 jg LBB0_3 + 0xe9, 0x61, 0x1c, 0x00, 0x00, //0x000021c9 jmp LBB0_394 + //0x000021ce LBB0_395 + 0x49, 0x8d, 0x55, 0xff, //0x000021ce leaq $-1(%r13), %rdx + 0x48, 0x39, 0xd6, //0x000021d2 cmpq %rdx, %rsi + 0x49, 0xf7, 0xd5, //0x000021d5 notq %r13 + 0x4d, 0x0f, 0x45, 0xea, //0x000021d8 cmovneq %r10, %r13 + 0x84, 0xc9, //0x000021dc testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xd5, //0x000021de cmovneq %r13, %r10 + 0xe9, 0x2e, 0xf6, 0xff, 0xff, //0x000021e2 jmp LBB0_293 + //0x000021e7 LBB0_396 + 0x4d, 0x89, 0xc5, //0x000021e7 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x000021ea subq %r9, %r13 + 0x0f, 0x84, 0x8b, 0x1c, 0x00, 0x00, //0x000021ed je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x000021f3 cmpq $64, %r13 + 0x0f, 0x82, 0x13, 0x0c, 0x00, 0x00, //0x000021f7 jb LBB0_543 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000021fd movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00002204 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00002207 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000220a .p2align 4, 0x90 + //0x00002210 LBB0_399 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00002210 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00002216 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000221d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00002221 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00002225 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00002229 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x0000222d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00002231 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00002235 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00002239 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x0000223d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002241 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002246 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x0000224a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x0000224e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00002252 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00002255 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00002259 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x0000225d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002260 jne LBB0_410 + 0x4d, 0x85, 0xdb, //0x00002266 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002269 jne LBB0_412 + 0x45, 0x31, 0xdb, //0x0000226f xorl %r11d, %r11d + //0x00002272 LBB0_402 + 0xc5, 0xbd, 0x64, 0xc8, //0x00002272 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002276 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000227b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x0000227f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00002283 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00002286 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00002289 jne LBB0_413 + 0x48, 0x85, 0xf6, //0x0000228f testq %rsi, %rsi + 0x0f, 0x85, 0x97, 0x1a, 0x00, 0x00, //0x00002292 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00002298 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x0000229c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x000022a0 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000022a4 ja LBB0_399 + 0xe9, 0x93, 0x09, 0x00, 0x00, //0x000022aa jmp LBB0_405 + //0x000022af LBB0_410 + 0x49, 0x83, 0xff, 0xff, //0x000022af cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000022b3 jne LBB0_412 + 0x4c, 0x0f, 0xbc, 0xfa, //0x000022b9 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x000022bd addq %rax, %r15 + //0x000022c0 LBB0_412 + 0x4c, 0x89, 0xd9, //0x000022c0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x000022c3 notq %rcx + 0x48, 0x21, 0xd1, //0x000022c6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x000022c9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x000022cd orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x000022d0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x000022d3 notq %rbx + 0x48, 0x21, 0xd3, //0x000022d6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000022d9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x000022e3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x000022e6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x000022e9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x000022ec setb %r11b + 0x48, 0x01, 0xdb, //0x000022f0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000022f3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000022fd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00002300 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00002303 notq %rbx + 0x48, 0x21, 0xdf, //0x00002306 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00002309 jmp LBB0_402 + //0x0000230e LBB0_413 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000230e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00002312 testq %rsi, %rsi + 0x0f, 0x84, 0xa4, 0x03, 0x00, 0x00, //0x00002315 je LBB0_470 + 0x48, 0x0f, 0xbc, 0xd6, //0x0000231b bsfq %rsi, %rdx + 0xe9, 0xa0, 0x03, 0x00, 0x00, //0x0000231f jmp LBB0_471 + //0x00002324 LBB0_415 + 0x41, 0x8a, 0x4d, 0x01, //0x00002324 movb $1(%r13), %cl + 0x80, 0xc1, 0xd2, //0x00002328 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000232b cmpb $55, %cl + 0x0f, 0x87, 0x84, 0xf2, 0xff, 0xff, //0x0000232e ja LBB0_260 + 0x0f, 0xb6, 0xc9, //0x00002334 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002337 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00002341 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00002345 movq %rax, %rcx + 0x0f, 0x83, 0x00, 0x08, 0x00, 0x00, //0x00002348 jae LBB0_514 + //0x0000234e LBB0_417 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000234e movq $-1, %r15 + 0x49, 0x83, 0xfb, 0x20, //0x00002355 cmpq $32, %r11 + 0x0f, 0x82, 0x5d, 0x0a, 0x00, 0x00, //0x00002359 jb LBB0_540 + 0x45, 0x31, 0xc0, //0x0000235f xorl %r8d, %r8d + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002362 movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002369 movq $-1, %r9 + //0x00002370 .p2align 4, 0x90 + //0x00002370 LBB0_419 + 0xc4, 0x81, 0x7e, 0x6f, 0x44, 0x05, 0x00, //0x00002370 vmovdqu (%r13,%r8), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00002377 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000237c vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002380 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00002384 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd0, 0xde, 0xff, 0xff, //0x00002388 vpcmpeqb $-8496(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x00002390 vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00002394 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe0, 0xde, 0xff, 0xff, //0x00002398 vpcmpeqb $-8480(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x000023a0 vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000023a4 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000023a8 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000023ac vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000023b0 vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000023b4 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000023b8 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000023bc vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000023c0 notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000023c3 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000023c7 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000023ca je LBB0_421 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000023d0 movl $-1, %ebx + 0xd3, 0xe3, //0x000023d5 shll %cl, %ebx + 0xf7, 0xd3, //0x000023d7 notl %ebx + 0x21, 0xdf, //0x000023d9 andl %ebx, %edi + 0x21, 0xde, //0x000023db andl %ebx, %esi + 0x21, 0xd3, //0x000023dd andl %edx, %ebx + 0x89, 0xda, //0x000023df movl %ebx, %edx + //0x000023e1 LBB0_421 + 0x8d, 0x5f, 0xff, //0x000023e1 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000023e4 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd2, 0xdd, 0xff, 0xff, //0x000023e6 vmovdqu $-8750(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x38, 0x07, 0x00, 0x00, //0x000023ee jne LBB0_509 + 0x8d, 0x5e, 0xff, //0x000023f4 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000023f7 andl %esi, %ebx + 0x0f, 0x85, 0x2d, 0x07, 0x00, 0x00, //0x000023f9 jne LBB0_509 + 0x8d, 0x5a, 0xff, //0x000023ff leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00002402 andl %edx, %ebx + 0x0f, 0x85, 0x22, 0x07, 0x00, 0x00, //0x00002404 jne LBB0_509 + 0x85, 0xff, //0x0000240a testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000240c je LBB0_427 + 0x0f, 0xbc, 0xff, //0x00002412 bsfl %edi, %edi + 0x49, 0x83, 0xf9, 0xff, //0x00002415 cmpq $-1, %r9 + 0x0f, 0x85, 0xd6, 0x08, 0x00, 0x00, //0x00002419 jne LBB0_528 + 0x4c, 0x01, 0xc7, //0x0000241f addq %r8, %rdi + 0x49, 0x89, 0xf9, //0x00002422 movq %rdi, %r9 + //0x00002425 LBB0_427 + 0x85, 0xf6, //0x00002425 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002427 je LBB0_430 + 0x0f, 0xbc, 0xf6, //0x0000242d bsfl %esi, %esi + 0x49, 0x83, 0xfa, 0xff, //0x00002430 cmpq $-1, %r10 + 0x0f, 0x85, 0xc6, 0x08, 0x00, 0x00, //0x00002434 jne LBB0_529 + 0x4c, 0x01, 0xc6, //0x0000243a addq %r8, %rsi + 0x49, 0x89, 0xf2, //0x0000243d movq %rsi, %r10 + //0x00002440 LBB0_430 + 0x85, 0xd2, //0x00002440 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002442 je LBB0_433 + 0x0f, 0xbc, 0xd2, //0x00002448 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x0000244b cmpq $-1, %r15 + 0x0f, 0x85, 0xb6, 0x08, 0x00, 0x00, //0x0000244f jne LBB0_530 + 0x4c, 0x01, 0xc2, //0x00002455 addq %r8, %rdx + 0x49, 0x89, 0xd7, //0x00002458 movq %rdx, %r15 + //0x0000245b LBB0_433 + 0x83, 0xf9, 0x20, //0x0000245b cmpl $32, %ecx + 0x0f, 0x85, 0x1c, 0x02, 0x00, 0x00, //0x0000245e jne LBB0_467 + 0x49, 0x83, 0xc3, 0xe0, //0x00002464 addq $-32, %r11 + 0x49, 0x83, 0xc0, 0x20, //0x00002468 addq $32, %r8 + 0x49, 0x83, 0xfb, 0x1f, //0x0000246c cmpq $31, %r11 + 0x0f, 0x87, 0xfa, 0xfe, 0xff, 0xff, //0x00002470 ja LBB0_419 + 0xc5, 0xf8, 0x77, //0x00002476 vzeroupper + 0x4d, 0x01, 0xe8, //0x00002479 addq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x0000247c movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002481 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002485 movq %r13, $48(%rsp) + 0x0f, 0x82, 0x48, 0x01, 0x00, 0x00, //0x0000248a jb LBB0_454 + //0x00002490 LBB0_436 + 0x4d, 0x89, 0xc2, //0x00002490 movq %r8, %r10 + 0x4d, 0x29, 0xea, //0x00002493 subq %r13, %r10 + 0x45, 0x31, 0xed, //0x00002496 xorl %r13d, %r13d + //0x00002499 LBB0_437 + 0x4c, 0x89, 0xce, //0x00002499 movq %r9, %rsi + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x28, //0x0000249c vmovdqu (%r8,%r13), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x96, 0xdb, 0xff, 0xff, //0x000024a2 vpcmpgtb $-9322(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024aa vmovdqu $-9314(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x000024b2 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x000024b6 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024ba vpcmpeqb $-9314(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xa6, 0xdb, 0xff, 0xff, //0x000024c2 vpcmpeqb $-9306(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x000024ca vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x4a, 0xdb, 0xff, 0xff, //0x000024ce vpand $-9398(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa2, 0xdb, 0xff, 0xff, //0x000024d6 vpcmpeqb $-9310(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0xaa, 0xdb, 0xff, 0xff, //0x000024de vpcmpeqb $-9302(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x000024e6 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x000024ea vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x000024ee vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc8, //0x000024f2 vpmovmskb %xmm0, %r9d + 0xc5, 0xf9, 0xd7, 0xfb, //0x000024f6 vpmovmskb %xmm3, %edi + 0xc5, 0xf9, 0xd7, 0xd2, //0x000024fa vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x000024fe vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x00002502 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00002504 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00002507 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000250a je LBB0_439 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x00002510 movl $-1, %ebx + 0xd3, 0xe3, //0x00002515 shll %cl, %ebx + 0xf7, 0xd3, //0x00002517 notl %ebx + 0x41, 0x21, 0xd9, //0x00002519 andl %ebx, %r9d + 0x21, 0xdf, //0x0000251c andl %ebx, %edi + 0x21, 0xd3, //0x0000251e andl %edx, %ebx + 0x89, 0xda, //0x00002520 movl %ebx, %edx + //0x00002522 LBB0_439 + 0x41, 0x8d, 0x59, 0xff, //0x00002522 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00002526 andl %r9d, %ebx + 0x0f, 0x85, 0x5a, 0x07, 0x00, 0x00, //0x00002529 jne LBB0_523 + 0x8d, 0x5f, 0xff, //0x0000252f leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x00002532 andl %edi, %ebx + 0x0f, 0x85, 0x4f, 0x07, 0x00, 0x00, //0x00002534 jne LBB0_523 + 0x8d, 0x5a, 0xff, //0x0000253a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000253d andl %edx, %ebx + 0x0f, 0x85, 0x44, 0x07, 0x00, 0x00, //0x0000253f jne LBB0_523 + 0x45, 0x85, 0xc9, //0x00002545 testl %r9d, %r9d + 0x0f, 0x84, 0x43, 0x00, 0x00, 0x00, //0x00002548 je LBB0_446 + 0x45, 0x0f, 0xbc, 0xc9, //0x0000254e bsfl %r9d, %r9d + 0x48, 0x83, 0xfe, 0xff, //0x00002552 cmpq $-1, %rsi + 0x0f, 0x85, 0xf4, 0x07, 0x00, 0x00, //0x00002556 jne LBB0_533 + 0x4d, 0x01, 0xd1, //0x0000255c addq %r10, %r9 + 0x4d, 0x01, 0xe9, //0x0000255f addq %r13, %r9 + 0x85, 0xff, //0x00002562 testl %edi, %edi + 0x0f, 0x84, 0x32, 0x00, 0x00, 0x00, //0x00002564 je LBB0_445 + //0x0000256a LBB0_447 + 0x0f, 0xbc, 0xff, //0x0000256a bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000256d cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xdf, 0x07, 0x00, 0x00, //0x00002573 jne LBB0_534 + 0x4c, 0x01, 0xd7, //0x00002579 addq %r10, %rdi + 0x4c, 0x01, 0xef, //0x0000257c addq %r13, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x28, //0x0000257f movq %rdi, $40(%rsp) + 0x85, 0xd2, //0x00002584 testl %edx, %edx + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00002586 jne LBB0_449 + 0xe9, 0x29, 0x00, 0x00, 0x00, //0x0000258c jmp LBB0_451 + //0x00002591 LBB0_446 + 0x49, 0x89, 0xf1, //0x00002591 movq %rsi, %r9 + 0x85, 0xff, //0x00002594 testl %edi, %edi + 0x0f, 0x85, 0xce, 0xff, 0xff, 0xff, //0x00002596 jne LBB0_447 + //0x0000259c LBB0_445 + 0x85, 0xd2, //0x0000259c testl %edx, %edx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000259e je LBB0_451 + //0x000025a4 LBB0_449 + 0x0f, 0xbc, 0xd2, //0x000025a4 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x000025a7 cmpq $-1, %r15 + 0x0f, 0x85, 0xae, 0x07, 0x00, 0x00, //0x000025ab jne LBB0_535 + 0x4c, 0x01, 0xd2, //0x000025b1 addq %r10, %rdx + 0x4c, 0x01, 0xea, //0x000025b4 addq %r13, %rdx + 0x49, 0x89, 0xd7, //0x000025b7 movq %rdx, %r15 + //0x000025ba LBB0_451 + 0x83, 0xf9, 0x10, //0x000025ba cmpl $16, %ecx + 0x0f, 0x85, 0xd5, 0x01, 0x00, 0x00, //0x000025bd jne LBB0_483 + 0x49, 0x83, 0xc3, 0xf0, //0x000025c3 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000025c7 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000025cb cmpq $15, %r11 + 0x0f, 0x87, 0xc4, 0xfe, 0xff, 0xff, //0x000025cf ja LBB0_437 + 0x4d, 0x01, 0xe8, //0x000025d5 addq %r13, %r8 + //0x000025d8 LBB0_454 + 0x4d, 0x85, 0xdb, //0x000025d8 testq %r11, %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000025db movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000025e0 movq $40(%rsp), %r10 + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x000025e5 je LBB0_485 + 0x4b, 0x8d, 0x0c, 0x18, //0x000025eb leaq (%r8,%r11), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000025ef movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xc6, //0x000025f4 movq %r8, %rsi + 0x4c, 0x29, 0xee, //0x000025f7 subq %r13, %rsi + 0x31, 0xc9, //0x000025fa xorl %ecx, %ecx + 0xe9, 0x2c, 0x00, 0x00, 0x00, //0x000025fc jmp LBB0_460 + //0x00002601 LBB0_456 + 0x83, 0xff, 0x65, //0x00002601 cmpl $101, %edi + 0x0f, 0x85, 0xb5, 0x01, 0x00, 0x00, //0x00002604 jne LBB0_484 + //0x0000260a LBB0_457 + 0x49, 0x83, 0xfa, 0xff, //0x0000260a cmpq $-1, %r10 + 0x0f, 0x85, 0x8f, 0x06, 0x00, 0x00, //0x0000260e jne LBB0_525 + 0x4c, 0x8d, 0x14, 0x0e, //0x00002614 leaq (%rsi,%rcx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002618 .p2align 4, 0x90 + //0x00002620 LBB0_459 + 0x48, 0x83, 0xc1, 0x01, //0x00002620 addq $1, %rcx + 0x49, 0x39, 0xcb, //0x00002624 cmpq %rcx, %r11 + 0x0f, 0x84, 0xe5, 0x04, 0x00, 0x00, //0x00002627 je LBB0_508 + //0x0000262d LBB0_460 + 0x41, 0x0f, 0xbe, 0x3c, 0x08, //0x0000262d movsbl (%r8,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x00002632 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x00002635 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002638 jb LBB0_459 + 0x8d, 0x5f, 0xd5, //0x0000263e leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x00002641 cmpl $26, %ebx + 0x0f, 0x87, 0xb7, 0xff, 0xff, 0xff, //0x00002644 ja LBB0_456 + 0x48, 0x8d, 0x15, 0x8f, 0x1a, 0x00, 0x00, //0x0000264a leaq $6799(%rip), %rdx /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x00002651 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x00002655 addq %rdx, %rdi + 0xff, 0xe7, //0x00002658 jmpq *%rdi + //0x0000265a LBB0_463 + 0x49, 0x83, 0xff, 0xff, //0x0000265a cmpq $-1, %r15 + 0x0f, 0x85, 0x3f, 0x06, 0x00, 0x00, //0x0000265e jne LBB0_525 + 0x4c, 0x8d, 0x3c, 0x0e, //0x00002664 leaq (%rsi,%rcx), %r15 + 0xe9, 0xb3, 0xff, 0xff, 0xff, //0x00002668 jmp LBB0_459 + //0x0000266d LBB0_465 + 0x49, 0x83, 0xf9, 0xff, //0x0000266d cmpq $-1, %r9 + 0x0f, 0x85, 0x2c, 0x06, 0x00, 0x00, //0x00002671 jne LBB0_525 + 0x4c, 0x8d, 0x0c, 0x0e, //0x00002677 leaq (%rsi,%rcx), %r9 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x0000267b jmp LBB0_459 + //0x00002680 LBB0_467 + 0x4c, 0x01, 0xc1, //0x00002680 addq %r8, %rcx + 0x4c, 0x01, 0xe9, //0x00002683 addq %r13, %rcx + 0xc5, 0xf8, 0x77, //0x00002686 vzeroupper + 0x49, 0x89, 0xc8, //0x00002689 movq %rcx, %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000268c movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002693 testq %r9, %r9 + 0x0f, 0x85, 0x36, 0x01, 0x00, 0x00, //0x00002696 jne LBB0_486 + 0xe9, 0xcd, 0x17, 0x00, 0x00, //0x0000269c jmp LBB0_726 + //0x000026a1 LBB0_468 + 0x4d, 0x29, 0xf4, //0x000026a1 subq %r14, %r12 + 0x49, 0x01, 0xd4, //0x000026a4 addq %rdx, %r12 + 0x49, 0x39, 0xfc, //0x000026a7 cmpq %rdi, %r12 + 0x0f, 0x82, 0x22, 0xdf, 0xff, 0xff, //0x000026aa jb LBB0_35 + 0xe9, 0xe8, 0x15, 0x00, 0x00, //0x000026b0 jmp LBB0_698 + //0x000026b5 LBB0_469 + 0x4c, 0x8b, 0x54, 0x24, 0x38, //0x000026b5 movq $56(%rsp), %r10 + 0xe9, 0x32, 0xf0, 0xff, 0xff, //0x000026ba jmp LBB0_282 + //0x000026bf LBB0_470 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000026bf movl $64, %edx + //0x000026c4 LBB0_471 + 0x4c, 0x8b, 0x1c, 0x24, //0x000026c4 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x000026c8 cmpq %rcx, %rdx + 0x0f, 0x82, 0xb5, 0x17, 0x00, 0x00, //0x000026cb jb LBB0_162 + 0xc5, 0x7d, 0x7f, 0xea, //0x000026d1 vmovdqa %ymm13, %ymm2 + 0x48, 0x01, 0xc8, //0x000026d5 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000026d8 addq $1, %rax + //0x000026dc LBB0_473 + 0x48, 0x85, 0xc0, //0x000026dc testq %rax, %rax + 0x0f, 0x88, 0xdc, 0x15, 0x00, 0x00, //0x000026df js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000026e5 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x000026ea movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x000026ed testq %r9, %r9 + 0xc5, 0x7d, 0x6f, 0xea, //0x000026f0 vmovdqa %ymm2, %ymm13 + 0x0f, 0x8f, 0xa6, 0xdc, 0xff, 0xff, //0x000026f4 jg LBB0_3 + 0xe9, 0xdb, 0x15, 0x00, 0x00, //0x000026fa jmp LBB0_475 + //0x000026ff LBB0_108 + 0x4d, 0x85, 0xff, //0x000026ff testq %r15, %r15 + 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x00002702 jne LBB0_545 + 0x49, 0x01, 0xf1, //0x00002708 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x0000270b subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000270e movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002713 movq (%rsp), %r11 + //0x00002717 LBB0_110 + 0x4d, 0x85, 0xd2, //0x00002717 testq %r10, %r10 + 0x0f, 0x8f, 0x9f, 0x07, 0x00, 0x00, //0x0000271a jg LBB0_549 + 0xe9, 0xf0, 0x15, 0x00, 0x00, //0x00002720 jmp LBB0_728 + //0x00002725 LBB0_476 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002725 vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002729 bsfl %ebx, %ecx + //0x0000272c LBB0_477 + 0x49, 0xf7, 0xd2, //0x0000272c notq %r10 + 0x49, 0x29, 0xca, //0x0000272f subq %rcx, %r10 + 0xe9, 0xde, 0xf0, 0xff, 0xff, //0x00002732 jmp LBB0_293 + //0x00002737 LBB0_478 + 0x66, 0x0f, 0xbc, 0xc3, //0x00002737 bsfw %bx, %ax + 0x0f, 0xb7, 0xf8, //0x0000273b movzwl %ax, %edi + 0x48, 0x89, 0xf8, //0x0000273e movq %rdi, %rax + 0x4c, 0x29, 0xc8, //0x00002741 subq %r9, %rax + 0x49, 0x89, 0x07, //0x00002744 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00002747 testq %rax, %rax + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000274a movabsq $4294977024, %rbx + 0x0f, 0x8e, 0x90, 0xdc, 0xff, 0xff, //0x00002754 jle LBB0_2 + 0x48, 0x01, 0xf9, //0x0000275a addq %rdi, %rcx + 0x48, 0x01, 0xfe, //0x0000275d addq %rdi, %rsi + 0x48, 0x01, 0xfa, //0x00002760 addq %rdi, %rdx + //0x00002763 LBB0_480 + 0x0f, 0xb6, 0x02, //0x00002763 movzbl (%rdx), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00002766 cmpq $32, %rax + 0x0f, 0x87, 0x7a, 0xdc, 0xff, 0xff, //0x0000276a ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc3, //0x00002770 btq %rax, %rbx + 0x0f, 0x83, 0x70, 0xdc, 0xff, 0xff, //0x00002774 jae LBB0_2 + 0x49, 0x89, 0x37, //0x0000277a movq %rsi, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x0000277d addq $-1, %rcx + 0x48, 0x83, 0xc6, 0xff, //0x00002781 addq $-1, %rsi + 0x48, 0x83, 0xc2, 0xff, //0x00002785 addq $-1, %rdx + 0x48, 0x83, 0xf9, 0x01, //0x00002789 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000278d jg LBB0_480 + 0xe9, 0x52, 0xdc, 0xff, 0xff, //0x00002793 jmp LBB0_2 + //0x00002798 LBB0_483 + 0x89, 0xc9, //0x00002798 movl %ecx, %ecx + 0x49, 0x01, 0xc8, //0x0000279a addq %rcx, %r8 + 0x4d, 0x01, 0xe8, //0x0000279d addq %r13, %r8 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000027a0 movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000027a5 movq $40(%rsp), %r10 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027aa movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027b1 testq %r9, %r9 + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x000027b4 jne LBB0_486 + 0xe9, 0xaf, 0x16, 0x00, 0x00, //0x000027ba jmp LBB0_726 + //0x000027bf LBB0_484 + 0x49, 0x01, 0xc8, //0x000027bf addq %rcx, %r8 + //0x000027c2 LBB0_485 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027c2 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027c9 testq %r9, %r9 + 0x0f, 0x84, 0x9c, 0x16, 0x00, 0x00, //0x000027cc je LBB0_726 + //0x000027d2 LBB0_486 + 0x4d, 0x85, 0xff, //0x000027d2 testq %r15, %r15 + 0x0f, 0x84, 0x93, 0x16, 0x00, 0x00, //0x000027d5 je LBB0_726 + 0x4d, 0x85, 0xd2, //0x000027db testq %r10, %r10 + 0x0f, 0x84, 0x8a, 0x16, 0x00, 0x00, //0x000027de je LBB0_726 + 0x4d, 0x29, 0xe8, //0x000027e4 subq %r13, %r8 + 0x49, 0x8d, 0x48, 0xff, //0x000027e7 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xc9, //0x000027eb cmpq %rcx, %r9 + 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x000027ee je LBB0_494 + 0x49, 0x39, 0xcf, //0x000027f4 cmpq %rcx, %r15 + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000027f7 je LBB0_494 + 0x49, 0x39, 0xca, //0x000027fd cmpq %rcx, %r10 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00002800 je LBB0_494 + 0x4d, 0x85, 0xff, //0x00002806 testq %r15, %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0xaf, 0xd8, 0xff, 0xff, //0x00002809 vmovdqu $-10065(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xc7, 0xd8, 0xff, 0xff, //0x00002811 vmovdqu $-10041(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xdf, 0xd8, 0xff, 0xff, //0x00002819 vmovdqu $-10017(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xf7, 0xd8, 0xff, 0xff, //0x00002821 vmovdqu $-9993(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002829 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xca, 0xd9, 0xff, 0xff, //0x0000282e vmovdqu $-9782(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xe2, 0xd9, 0xff, 0xff, //0x00002836 vmovdqu $-9758(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xfa, 0xd9, 0xff, 0xff, //0x0000283e vmovdqu $-9734(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x92, 0xd9, 0xff, 0xff, //0x00002846 vmovdqu $-9838(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x4a, 0xda, 0xff, 0xff, //0x0000284e vmovdqu $-9654(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x62, 0xd9, 0xff, 0xff, //0x00002856 vmovdqu $-9886(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x8e, 0x8f, 0x00, 0x00, 0x00, //0x0000285e jle LBB0_497 + 0x49, 0x8d, 0x4f, 0xff, //0x00002864 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xca, //0x00002868 cmpq %rcx, %r10 + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x0000286b je LBB0_497 + 0x49, 0xf7, 0xd7, //0x00002871 notq %r15 + 0x4d, 0x89, 0xf8, //0x00002874 movq %r15, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002877 movq $8(%rsp), %r15 + 0xe9, 0x5d, 0x00, 0x00, 0x00, //0x0000287c jmp LBB0_496 + //0x00002881 LBB0_494 + 0x49, 0xf7, 0xd8, //0x00002881 negq %r8 + //0x00002884 LBB0_495 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002884 movq $8(%rsp), %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0x2f, 0xd8, 0xff, 0xff, //0x00002889 vmovdqu $-10193(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x47, 0xd8, 0xff, 0xff, //0x00002891 vmovdqu $-10169(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x5f, 0xd8, 0xff, 0xff, //0x00002899 vmovdqu $-10145(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x77, 0xd8, 0xff, 0xff, //0x000028a1 vmovdqu $-10121(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000028a9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x4a, 0xd9, 0xff, 0xff, //0x000028ae vmovdqu $-9910(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x62, 0xd9, 0xff, 0xff, //0x000028b6 vmovdqu $-9886(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x7a, 0xd9, 0xff, 0xff, //0x000028be vmovdqu $-9862(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x12, 0xd9, 0xff, 0xff, //0x000028c6 vmovdqu $-9966(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xca, 0xd9, 0xff, 0xff, //0x000028ce vmovdqu $-9782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe2, 0xd8, 0xff, 0xff, //0x000028d6 vmovdqu $-10014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + //0x000028de LBB0_496 + 0xc5, 0x7e, 0x6f, 0x1d, 0x5a, 0xd8, 0xff, 0xff, //0x000028de vmovdqu $-10150(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x72, 0xd8, 0xff, 0xff, //0x000028e6 vmovdqu $-10126(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xe9, 0x4b, 0x02, 0x00, 0x00, //0x000028ee jmp LBB0_512 + //0x000028f3 LBB0_497 + 0x4c, 0x89, 0xc9, //0x000028f3 movq %r9, %rcx + 0x4c, 0x09, 0xd1, //0x000028f6 orq %r10, %rcx + 0x0f, 0x99, 0xc1, //0x000028f9 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0x3c, 0xd8, 0xff, 0xff, //0x000028fc vmovdqu $-10180(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x54, 0xd8, 0xff, 0xff, //0x00002904 vmovdqu $-10156(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0xd2, 0x00, 0x00, 0x00, //0x0000290c js LBB0_500 + 0x4d, 0x39, 0xd1, //0x00002912 cmpq %r10, %r9 + 0x0f, 0x8c, 0xc9, 0x00, 0x00, 0x00, //0x00002915 jl LBB0_500 + 0x49, 0xf7, 0xd1, //0x0000291b notq %r9 + 0x4d, 0x89, 0xc8, //0x0000291e movq %r9, %r8 + 0xe9, 0x13, 0x02, 0x00, 0x00, //0x00002921 jmp LBB0_511 + //0x00002926 LBB0_140 + 0x4d, 0x85, 0xff, //0x00002926 testq %r15, %r15 + 0x0f, 0x85, 0x6a, 0x07, 0x00, 0x00, //0x00002929 jne LBB0_570 + 0x49, 0x01, 0xf1, //0x0000292f addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00002932 subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002935 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000293a movq (%rsp), %r11 + //0x0000293e LBB0_142 + 0x4d, 0x85, 0xd2, //0x0000293e testq %r10, %r10 + 0x0f, 0x8f, 0xc4, 0x07, 0x00, 0x00, //0x00002941 jg LBB0_574 + 0xe9, 0xc9, 0x13, 0x00, 0x00, //0x00002947 jmp LBB0_728 + //0x0000294c LBB0_54 + 0x4c, 0x01, 0xf0, //0x0000294c addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x0000294f cmpq $32, %r11 + 0x0f, 0x82, 0x45, 0x06, 0x00, 0x00, //0x00002953 jb LBB0_557 + //0x00002959 LBB0_55 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002959 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x0000295d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002961 vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002965 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002969 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x0000296d testl %esi, %esi + 0x0f, 0x85, 0x82, 0x05, 0x00, 0x00, //0x0000296f jne LBB0_552 + 0x4d, 0x85, 0xd2, //0x00002975 testq %r10, %r10 + 0x0f, 0x85, 0xa7, 0x05, 0x00, 0x00, //0x00002978 jne LBB0_554 + 0x45, 0x31, 0xd2, //0x0000297e xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002981 testq %rdx, %rdx + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x00002984 je LBB0_556 + //0x0000298a LBB0_58 + 0x48, 0x0f, 0xbc, 0xca, //0x0000298a bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x0000298e subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002991 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002994 addq $1, %rax + 0xe9, 0x0e, 0xde, 0xff, 0xff, //0x00002998 jmp LBB0_63 + //0x0000299d LBB0_152 + 0x4c, 0x01, 0xf0, //0x0000299d addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x000029a0 cmpq $32, %r13 + 0x0f, 0x82, 0xaa, 0x08, 0x00, 0x00, //0x000029a4 jb LBB0_587 + //0x000029aa LBB0_153 + 0xc5, 0xfe, 0x6f, 0x00, //0x000029aa vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x000029ae vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x000029b2 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x000029b6 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x000029ba vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x000029be testl %edx, %edx + 0x0f, 0x85, 0x9a, 0x07, 0x00, 0x00, //0x000029c0 jne LBB0_577 + 0x4d, 0x85, 0xdb, //0x000029c6 testq %r11, %r11 + 0x0f, 0x85, 0xbf, 0x07, 0x00, 0x00, //0x000029c9 jne LBB0_579 + 0x45, 0x31, 0xdb, //0x000029cf xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x000029d2 testq %r10, %r10 + 0x0f, 0x84, 0x25, 0x08, 0x00, 0x00, //0x000029d5 je LBB0_581 + //0x000029db LBB0_156 + 0x49, 0x0f, 0xbc, 0xd2, //0x000029db bsfq %r10, %rdx + 0xe9, 0x21, 0x08, 0x00, 0x00, //0x000029df jmp LBB0_582 + //0x000029e4 LBB0_500 + 0x49, 0x8d, 0x52, 0xff, //0x000029e4 leaq $-1(%r10), %rdx + 0x49, 0x39, 0xd1, //0x000029e8 cmpq %rdx, %r9 + 0x49, 0xf7, 0xd2, //0x000029eb notq %r10 + 0x4d, 0x0f, 0x45, 0xd0, //0x000029ee cmovneq %r8, %r10 + 0x84, 0xc9, //0x000029f2 testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xc2, //0x000029f4 cmovneq %r10, %r8 + 0xe9, 0x3c, 0x01, 0x00, 0x00, //0x000029f8 jmp LBB0_511 + //0x000029fd LBB0_501 + 0xc5, 0x7d, 0x7f, 0xe8, //0x000029fd vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcf, //0x00002a01 bsfl %edi, %ecx + //0x00002a04 LBB0_502 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a04 movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a09 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a0c subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a0f subq %rcx, %r14 + 0x4d, 0x29, 0xfe, //0x00002a12 subq %r15, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a15 addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a19 movq %r14, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002a1c movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002a21 movq (%rsp), %r11 + 0xe9, 0xf0, 0xed, 0xff, 0xff, //0x00002a25 jmp LBB0_294 + //0x00002a2a LBB0_503 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002a2a vmovdqa %ymm13, %ymm0 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a2e movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a33 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a36 subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a39 subq %rcx, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a3c addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a40 movq %r14, %r10 + 0xe9, 0xd2, 0xed, 0xff, 0xff, //0x00002a43 jmp LBB0_294 + //0x00002a48 LBB0_504 + 0x4d, 0x01, 0xf4, //0x00002a48 addq %r14, %r12 + 0x48, 0x85, 0xf6, //0x00002a4b testq %rsi, %rsi + 0x0f, 0x85, 0x14, 0xdb, 0xff, 0xff, //0x00002a4e jne LBB0_28 + 0xe9, 0x49, 0xdb, 0xff, 0xff, //0x00002a54 jmp LBB0_33 + //0x00002a59 LBB0_89 + 0x4c, 0x01, 0xf0, //0x00002a59 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002a5c cmpq $32, %r11 + 0x0f, 0x82, 0x6b, 0x09, 0x00, 0x00, //0x00002a60 jb LBB0_602 + //0x00002a66 LBB0_90 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002a66 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002a6a vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a6e vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002a72 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002a76 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002a7a testl %esi, %esi + 0x0f, 0x85, 0xa8, 0x08, 0x00, 0x00, //0x00002a7c jne LBB0_597 + 0x4d, 0x85, 0xd2, //0x00002a82 testq %r10, %r10 + 0x0f, 0x85, 0xcd, 0x08, 0x00, 0x00, //0x00002a85 jne LBB0_599 + 0x45, 0x31, 0xd2, //0x00002a8b xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002a8e testq %rdx, %rdx + 0x0f, 0x84, 0x32, 0x09, 0x00, 0x00, //0x00002a91 je LBB0_601 + //0x00002a97 LBB0_93 + 0x48, 0x0f, 0xbc, 0xca, //0x00002a97 bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002a9b subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002a9e addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002aa1 addq $1, %rax + 0xe9, 0x21, 0xdf, 0xff, 0xff, //0x00002aa5 jmp LBB0_98 + //0x00002aaa LBB0_172 + 0x4c, 0x01, 0xf0, //0x00002aaa addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002aad cmpq $32, %r13 + 0x0f, 0x82, 0xe4, 0x02, 0x00, 0x00, //0x00002ab1 jb LBB0_538 + //0x00002ab7 LBB0_173 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002ab7 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002abb vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002abf vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002ac3 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002ac7 vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002acb testl %edx, %edx + 0x0f, 0x85, 0x08, 0x0a, 0x00, 0x00, //0x00002acd jne LBB0_615 + 0x4d, 0x85, 0xdb, //0x00002ad3 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0x0a, 0x00, 0x00, //0x00002ad6 jne LBB0_617 + 0x45, 0x31, 0xdb, //0x00002adc xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002adf testq %r10, %r10 + 0x0f, 0x84, 0x93, 0x0a, 0x00, 0x00, //0x00002ae2 je LBB0_619 + //0x00002ae8 LBB0_176 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002ae8 bsfq %r10, %rdx + 0xe9, 0x8f, 0x0a, 0x00, 0x00, //0x00002aec jmp LBB0_620 + //0x00002af1 LBB0_505 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002af1 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002af5 movl %edi, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002af7 jmp LBB0_477 + //0x00002afc LBB0_506 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002afc vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002b00 movl %esi, %ecx + 0xe9, 0x25, 0xfc, 0xff, 0xff, //0x00002b02 jmp LBB0_477 + //0x00002b07 LBB0_507 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b07 vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002b0b movl %edx, %ecx + 0xe9, 0x1a, 0xfc, 0xff, 0xff, //0x00002b0d jmp LBB0_477 + //0x00002b12 LBB0_508 + 0x4c, 0x8b, 0x44, 0x24, 0x38, //0x00002b12 movq $56(%rsp), %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002b17 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002b1e testq %r9, %r9 + 0x0f, 0x85, 0xab, 0xfc, 0xff, 0xff, //0x00002b21 jne LBB0_486 + 0xe9, 0x42, 0x13, 0x00, 0x00, //0x00002b27 jmp LBB0_726 + //0x00002b2c LBB0_509 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b2c vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002b30 bsfl %ebx, %ecx + //0x00002b33 LBB0_510 + 0x49, 0xf7, 0xd0, //0x00002b33 notq %r8 + 0x49, 0x29, 0xc8, //0x00002b36 subq %rcx, %r8 + //0x00002b39 LBB0_511 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002b39 movq $8(%rsp), %r15 + //0x00002b3e LBB0_512 + 0x4d, 0x85, 0xc0, //0x00002b3e testq %r8, %r8 + 0x0f, 0x88, 0x24, 0x13, 0x00, 0x00, //0x00002b41 js LBB0_725 + 0x49, 0x8b, 0x0f, //0x00002b47 movq (%r15), %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x00002b4a vmovdqa %ymm0, %ymm13 + //0x00002b4e LBB0_514 + 0x4c, 0x01, 0xc1, //0x00002b4e addq %r8, %rcx + 0x49, 0x89, 0x0f, //0x00002b51 movq %rcx, (%r15) + 0x48, 0x85, 0xc0, //0x00002b54 testq %rax, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002b57 movq (%rsp), %r11 + 0x0f, 0x8f, 0x3f, 0xd8, 0xff, 0xff, //0x00002b5b jg LBB0_3 + 0xe9, 0xc9, 0x12, 0x00, 0x00, //0x00002b61 jmp LBB0_394 + //0x00002b66 LBB0_515 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002b66 bsfw %cx, %cx + 0x44, 0x0f, 0xb7, 0xc1, //0x00002b6a movzwl %cx, %r8d + 0x4c, 0x89, 0xc1, //0x00002b6e movq %r8, %rcx + 0x4c, 0x29, 0xc9, //0x00002b71 subq %r9, %rcx + 0x49, 0x89, 0x0f, //0x00002b74 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002b77 testq %rcx, %rcx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b7a movabsq $4294977024, %rsi + 0x0f, 0x8e, 0x36, 0xf6, 0xff, 0xff, //0x00002b84 jle LBB0_393 + 0x4c, 0x01, 0xc7, //0x00002b8a addq %r8, %rdi + 0x4c, 0x01, 0xc2, //0x00002b8d addq %r8, %rdx + 0x4c, 0x01, 0xc3, //0x00002b90 addq %r8, %rbx + //0x00002b93 LBB0_517 + 0x0f, 0xb6, 0x0b, //0x00002b93 movzbl (%rbx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002b96 cmpq $32, %rcx + 0x0f, 0x87, 0x20, 0xf6, 0xff, 0xff, //0x00002b9a ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xce, //0x00002ba0 btq %rcx, %rsi + 0x0f, 0x83, 0x16, 0xf6, 0xff, 0xff, //0x00002ba4 jae LBB0_393 + 0x49, 0x89, 0x17, //0x00002baa movq %rdx, (%r15) + 0x48, 0x83, 0xc7, 0xff, //0x00002bad addq $-1, %rdi + 0x48, 0x83, 0xc2, 0xff, //0x00002bb1 addq $-1, %rdx + 0x48, 0x83, 0xc3, 0xff, //0x00002bb5 addq $-1, %rbx + 0x48, 0x83, 0xff, 0x01, //0x00002bb9 cmpq $1, %rdi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00002bbd jg LBB0_517 + 0xe9, 0xf8, 0xf5, 0xff, 0xff, //0x00002bc3 jmp LBB0_393 + //0x00002bc8 LBB0_520 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bc8 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002bcc movl %edi, %ecx + 0xe9, 0x31, 0xfe, 0xff, 0xff, //0x00002bce jmp LBB0_502 + //0x00002bd3 LBB0_521 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bd3 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002bd7 movl %esi, %ecx + 0xe9, 0x26, 0xfe, 0xff, 0xff, //0x00002bd9 jmp LBB0_502 + //0x00002bde LBB0_522 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bde vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002be2 movl %edx, %ecx + 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00002be4 jmp LBB0_502 + //0x00002be9 LBB0_247 + 0x4c, 0x01, 0xf0, //0x00002be9 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002bec cmpq $32, %r11 + 0x0f, 0x82, 0x08, 0x02, 0x00, 0x00, //0x00002bf0 jb LBB0_542 + //0x00002bf6 LBB0_248 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002bf6 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002bfa vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002bfe vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002c02 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002c06 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002c0a testl %esi, %esi + 0x0f, 0x85, 0xe1, 0x0c, 0x00, 0x00, //0x00002c0c jne LBB0_653 + 0x4d, 0x85, 0xd2, //0x00002c12 testq %r10, %r10 + 0x0f, 0x85, 0x06, 0x0d, 0x00, 0x00, //0x00002c15 jne LBB0_655 + 0x45, 0x31, 0xd2, //0x00002c1b xorl %r10d, %r10d + 0xc5, 0x7d, 0x7f, 0xea, //0x00002c1e vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x00002c22 testq %rdx, %rdx + 0x0f, 0x84, 0x6b, 0x0d, 0x00, 0x00, //0x00002c25 je LBB0_657 + //0x00002c2b LBB0_251 + 0x48, 0x0f, 0xbc, 0xca, //0x00002c2b bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002c2f subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002c32 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c35 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002c39 movq (%rsp), %r11 + 0xe9, 0x9a, 0xfa, 0xff, 0xff, //0x00002c3d jmp LBB0_473 + //0x00002c42 LBB0_405 + 0x4c, 0x01, 0xf0, //0x00002c42 addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002c45 cmpq $32, %r13 + 0x0f, 0x82, 0xd9, 0x01, 0x00, 0x00, //0x00002c49 jb LBB0_544 + //0x00002c4f LBB0_406 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002c4f vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002c53 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002c57 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002c5b vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002c5f vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002c63 testl %edx, %edx + 0x0f, 0x85, 0xfb, 0x0d, 0x00, 0x00, //0x00002c65 jne LBB0_671 + 0x4d, 0x85, 0xdb, //0x00002c6b testq %r11, %r11 + 0x0f, 0x85, 0x20, 0x0e, 0x00, 0x00, //0x00002c6e jne LBB0_673 + 0x45, 0x31, 0xdb, //0x00002c74 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002c77 testq %r10, %r10 + 0x0f, 0x84, 0x86, 0x0e, 0x00, 0x00, //0x00002c7a je LBB0_675 + //0x00002c80 LBB0_409 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002c80 bsfq %r10, %rdx + 0xe9, 0x82, 0x0e, 0x00, 0x00, //0x00002c84 jmp LBB0_676 + //0x00002c89 LBB0_523 + 0x0f, 0xbc, 0xcb, //0x00002c89 bsfl %ebx, %ecx + //0x00002c8c LBB0_524 + 0x49, 0x01, 0xc6, //0x00002c8c addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002c8f subq %r8, %r14 + 0x49, 0x29, 0xce, //0x00002c92 subq %rcx, %r14 + 0x49, 0xf7, 0xd5, //0x00002c95 notq %r13 + 0x4d, 0x01, 0xf5, //0x00002c98 addq %r14, %r13 + 0x4d, 0x89, 0xe8, //0x00002c9b movq %r13, %r8 + 0xe9, 0xe1, 0xfb, 0xff, 0xff, //0x00002c9e jmp LBB0_495 + //0x00002ca3 LBB0_525 + 0x49, 0x01, 0xc6, //0x00002ca3 addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002ca6 subq %r8, %r14 + 0x48, 0xf7, 0xd1, //0x00002ca9 notq %rcx + 0x4c, 0x01, 0xf1, //0x00002cac addq %r14, %rcx + 0x49, 0x89, 0xc8, //0x00002caf movq %rcx, %r8 + 0xe9, 0xcd, 0xfb, 0xff, 0xff, //0x00002cb2 jmp LBB0_495 + //0x00002cb7 LBB0_526 + 0x4f, 0x8d, 0x04, 0x2e, //0x00002cb7 leaq (%r14,%r13), %r8 + 0x48, 0x83, 0xff, 0x10, //0x00002cbb cmpq $16, %rdi + 0x0f, 0x83, 0x8d, 0xde, 0xff, 0xff, //0x00002cbf jae LBB0_116 + 0xe9, 0xf1, 0xde, 0xff, 0xff, //0x00002cc5 jmp LBB0_119 + //0x00002cca LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002cca movq $-1, $40(%rsp) + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00002cd3 movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00002cda movq $-1, $48(%rsp) + 0x4d, 0x89, 0xc2, //0x00002ce3 movq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x00002ce6 cmpq $16, %r9 + 0x0f, 0x83, 0xf2, 0xe4, 0xff, 0xff, //0x00002cea jae LBB0_203 + 0xe9, 0x7c, 0xe6, 0xff, 0xff, //0x00002cf0 jmp LBB0_221 + //0x00002cf5 LBB0_528 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002cf5 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002cf9 movl %edi, %ecx + 0xe9, 0x33, 0xfe, 0xff, 0xff, //0x00002cfb jmp LBB0_510 + //0x00002d00 LBB0_529 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d00 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002d04 movl %esi, %ecx + 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00002d06 jmp LBB0_510 + //0x00002d0b LBB0_530 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d0b vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002d0f movl %edx, %ecx + 0xe9, 0x1d, 0xfe, 0xff, 0xff, //0x00002d11 jmp LBB0_510 + //0x00002d16 LBB0_531 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d16 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d1a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d21 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d24 cmpq $32, %r11 + 0x0f, 0x83, 0x2b, 0xfc, 0xff, 0xff, //0x00002d28 jae LBB0_55 + 0xe9, 0x6b, 0x02, 0x00, 0x00, //0x00002d2e jmp LBB0_557 + //0x00002d33 LBB0_532 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d33 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d37 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d3e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d41 cmpq $32, %r13 + 0x0f, 0x83, 0x5f, 0xfc, 0xff, 0xff, //0x00002d45 jae LBB0_153 + 0xe9, 0x04, 0x05, 0x00, 0x00, //0x00002d4b jmp LBB0_587 + //0x00002d50 LBB0_533 + 0x44, 0x89, 0xc9, //0x00002d50 movl %r9d, %ecx + 0xe9, 0x34, 0xff, 0xff, 0xff, //0x00002d53 jmp LBB0_524 + //0x00002d58 LBB0_534 + 0x89, 0xf9, //0x00002d58 movl %edi, %ecx + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00002d5a jmp LBB0_524 + //0x00002d5f LBB0_535 + 0x89, 0xd1, //0x00002d5f movl %edx, %ecx + 0xe9, 0x26, 0xff, 0xff, 0xff, //0x00002d61 jmp LBB0_524 + //0x00002d66 LBB0_536 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d66 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d6a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d71 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d74 cmpq $32, %r11 + 0x0f, 0x83, 0xe8, 0xfc, 0xff, 0xff, //0x00002d78 jae LBB0_90 + 0xe9, 0x4e, 0x06, 0x00, 0x00, //0x00002d7e jmp LBB0_602 + //0x00002d83 LBB0_537 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d83 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d87 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d8e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d91 cmpq $32, %r13 + 0x0f, 0x83, 0x1c, 0xfd, 0xff, 0xff, //0x00002d95 jae LBB0_173 + //0x00002d9b LBB0_538 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002d9b movq $24(%rsp), %r10 + 0xe9, 0x38, 0x08, 0x00, 0x00, //0x00002da0 jmp LBB0_626 + //0x00002da5 LBB0_539 + 0x4d, 0x8d, 0x04, 0x06, //0x00002da5 leaq (%r14,%rax), %r8 + 0x48, 0x83, 0xfe, 0x10, //0x00002da9 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00002dad movq (%rsp), %r11 + 0x0f, 0x83, 0x8f, 0xec, 0xff, 0xff, //0x00002db1 jae LBB0_322 + 0xe9, 0xf3, 0xec, 0xff, 0xff, //0x00002db7 jmp LBB0_325 + //0x00002dbc LBB0_540 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002dbc movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dc3 movq $-1, %r9 + 0x4d, 0x89, 0xe8, //0x00002dca movq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x00002dcd movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002dd2 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002dd6 movq %r13, $48(%rsp) + 0x0f, 0x83, 0xaf, 0xf6, 0xff, 0xff, //0x00002ddb jae LBB0_436 + 0xe9, 0xf2, 0xf7, 0xff, 0xff, //0x00002de1 jmp LBB0_454 + //0x00002de6 LBB0_541 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002de6 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002df1 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002df4 cmpq $32, %r11 + 0x0f, 0x83, 0xf8, 0xfd, 0xff, 0xff, //0x00002df8 jae LBB0_248 + //0x00002dfe LBB0_542 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002dfe vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e02 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e06 vmovdqa %ymm13, %ymm11 + 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002e0b jmp LBB0_658 + //0x00002e10 LBB0_543 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002e10 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e14 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002e1b xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002e1e cmpq $32, %r13 + 0x0f, 0x83, 0x27, 0xfe, 0xff, 0xff, //0x00002e22 jae LBB0_406 + //0x00002e28 LBB0_544 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e28 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e2c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e30 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002e35 vmovdqa %ymm15, %ymm12 + 0xe9, 0x35, 0x0d, 0x00, 0x00, //0x00002e3a jmp LBB0_681 + //0x00002e3f LBB0_545 + 0x49, 0x39, 0xf2, //0x00002e3f cmpq %rsi, %r10 + 0x0f, 0x84, 0xcd, 0x0e, 0x00, 0x00, //0x00002e42 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e48 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e4c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e50 vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00002e55 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00002e58 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x00002e5c notq %rsi + 0x49, 0x01, 0xf2, //0x00002e5f addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002e62 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002e67 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e6b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x28, 0xd4, 0xff, 0xff, //0x00002e70 vmovdqu $-11224(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x40, 0xd3, 0xff, 0xff, //0x00002e78 vmovdqu $-11456(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e80 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00002e84 testq %r10, %r10 + 0x0f, 0x8f, 0x32, 0x00, 0x00, 0x00, //0x00002e87 jg LBB0_549 + 0xe9, 0x83, 0x0e, 0x00, 0x00, //0x00002e8d jmp LBB0_728 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e92 .p2align 4, 0x90 + //0x00002ea0 LBB0_547 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002ea0 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002ea7 movl $2, %edx + 0x49, 0x01, 0xd1, //0x00002eac addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002eaf movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002eb6 addq %rcx, %r10 + 0x0f, 0x8e, 0x56, 0x0e, 0x00, 0x00, //0x00002eb9 jle LBB0_728 + //0x00002ebf LBB0_549 + 0x41, 0x0f, 0xb6, 0x01, //0x00002ebf movzbl (%r9), %eax + 0x3c, 0x5c, //0x00002ec3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00002ec5 je LBB0_547 + 0x3c, 0x22, //0x00002ecb cmpb $34, %al + 0x0f, 0x84, 0x14, 0x0a, 0x00, 0x00, //0x00002ecd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002ed3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002eda movl $1, %edx + 0x49, 0x01, 0xd1, //0x00002edf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002ee2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002ee9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00002eec jg LBB0_549 + 0xe9, 0x1e, 0x0e, 0x00, 0x00, //0x00002ef2 jmp LBB0_728 + //0x00002ef7 LBB0_552 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ef7 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002efb vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002eff vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f04 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00002f09 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002f0d jne LBB0_555 + 0x48, 0x89, 0xc1, //0x00002f13 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00002f16 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00002f19 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00002f1d addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002f20 jmp LBB0_555 + //0x00002f25 LBB0_554 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002f25 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002f29 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f2d vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f32 vmovdqa %ymm15, %ymm12 + //0x00002f37 LBB0_555 + 0x44, 0x89, 0xd1, //0x00002f37 movl %r10d, %ecx + 0xf7, 0xd1, //0x00002f3a notl %ecx + 0x21, 0xf1, //0x00002f3c andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00002f3e leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00002f41 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00002f45 notl %edi + 0x21, 0xf7, //0x00002f47 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002f49 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00002f4f xorl %r10d, %r10d + 0x01, 0xcf, //0x00002f52 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00002f54 setb %r10b + 0x01, 0xff, //0x00002f58 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002f5a xorl $1431655765, %edi + 0x21, 0xdf, //0x00002f60 andl %ebx, %edi + 0xf7, 0xd7, //0x00002f62 notl %edi + 0x21, 0xfa, //0x00002f64 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002f66 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002f6b vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002f70 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x23, 0xd3, 0xff, 0xff, //0x00002f75 vmovdqu $-11485(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3b, 0xd2, 0xff, 0xff, //0x00002f7d vmovdqu $-11717(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f85 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00002f89 vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x00002f8d testq %rdx, %rdx + 0x0f, 0x85, 0xf4, 0xf9, 0xff, 0xff, //0x00002f90 jne LBB0_58 + //0x00002f96 LBB0_556 + 0x48, 0x83, 0xc0, 0x20, //0x00002f96 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x00002f9a addq $-32, %r11 + //0x00002f9e LBB0_557 + 0x4d, 0x85, 0xd2, //0x00002f9e testq %r10, %r10 + 0x0f, 0x85, 0x08, 0x07, 0x00, 0x00, //0x00002fa1 jne LBB0_637 + 0x4c, 0x89, 0xf1, //0x00002fa7 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00002faa notq %rcx + 0x4c, 0x89, 0xff, //0x00002fad movq %r15, %rdi + 0x4d, 0x85, 0xdb, //0x00002fb0 testq %r11, %r11 + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x00002fb3 je LBB0_569 + //0x00002fb9 LBB0_559 + 0x48, 0x83, 0xc1, 0x01, //0x00002fb9 addq $1, %rcx + //0x00002fbd LBB0_560 + 0x31, 0xf6, //0x00002fbd xorl %esi, %esi + //0x00002fbf LBB0_561 + 0x0f, 0xb6, 0x14, 0x30, //0x00002fbf movzbl (%rax,%rsi), %edx + 0x80, 0xfa, 0x22, //0x00002fc3 cmpb $34, %dl + 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002fc6 je LBB0_568 + 0x80, 0xfa, 0x5c, //0x00002fcc cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002fcf je LBB0_566 + 0x48, 0x83, 0xc6, 0x01, //0x00002fd5 addq $1, %rsi + 0x49, 0x39, 0xf3, //0x00002fd9 cmpq %rsi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002fdc jne LBB0_561 + 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002fe2 jmp LBB0_564 + //0x00002fe7 LBB0_566 + 0x49, 0x8d, 0x53, 0xff, //0x00002fe7 leaq $-1(%r11), %rdx + 0x48, 0x39, 0xf2, //0x00002feb cmpq %rsi, %rdx + 0x0f, 0x84, 0xd7, 0x0c, 0x00, 0x00, //0x00002fee je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ff4 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ff8 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ffc vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x14, 0x01, //0x00003001 leaq (%rcx,%rax), %rdx + 0x48, 0x01, 0xf2, //0x00003005 addq %rsi, %rdx + 0x48, 0x83, 0xff, 0xff, //0x00003008 cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x0000300c cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x00003010 cmoveq %rdx, %rdi + 0x48, 0x01, 0xf0, //0x00003014 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003017 addq $2, %rax + 0x4c, 0x89, 0xda, //0x0000301b movq %r11, %rdx + 0x48, 0x29, 0xf2, //0x0000301e subq %rsi, %rdx + 0x48, 0x83, 0xc2, 0xfe, //0x00003021 addq $-2, %rdx + 0x49, 0x83, 0xc3, 0xfe, //0x00003025 addq $-2, %r11 + 0x49, 0x39, 0xf3, //0x00003029 cmpq %rsi, %r11 + 0x49, 0x89, 0xd3, //0x0000302c movq %rdx, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000302f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x64, 0xd2, 0xff, 0xff, //0x00003034 vmovdqu $-11676(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x7c, 0xd1, 0xff, 0xff, //0x0000303c vmovdqu $-11908(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003044 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003048 jne LBB0_560 + 0xe9, 0x78, 0x0c, 0x00, 0x00, //0x0000304e jmp LBB0_703 + //0x00003053 LBB0_568 + 0x48, 0x01, 0xf0, //0x00003053 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003056 addq $1, %rax + //0x0000305a LBB0_569 + 0x4c, 0x29, 0xf0, //0x0000305a subq %r14, %rax + 0xe9, 0x49, 0xd7, 0xff, 0xff, //0x0000305d jmp LBB0_63 + //0x00003062 LBB0_564 + 0x80, 0xfa, 0x22, //0x00003062 cmpb $34, %dl + 0x0f, 0x85, 0x60, 0x0c, 0x00, 0x00, //0x00003065 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000306b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000306f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003073 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x00003078 addq %r11, %rax + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000307b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x18, 0xd2, 0xff, 0xff, //0x00003080 vmovdqu $-11752(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x30, 0xd1, 0xff, 0xff, //0x00003088 vmovdqu $-11984(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003090 vmovdqa %ymm0, %ymm11 + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003094 jmp LBB0_569 + //0x00003099 LBB0_570 + 0x49, 0x39, 0xf2, //0x00003099 cmpq %rsi, %r10 + 0x0f, 0x84, 0x73, 0x0c, 0x00, 0x00, //0x0000309c je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000030a2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000030a6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030aa vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x000030af addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000030b2 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x000030b6 notq %rsi + 0x49, 0x01, 0xf2, //0x000030b9 addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000030bc movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000030c1 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000030c5 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xce, 0xd1, 0xff, 0xff, //0x000030ca vmovdqu $-11826(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe6, 0xd0, 0xff, 0xff, //0x000030d2 vmovdqu $-12058(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000030da vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x000030de testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000030e1 jg LBB0_574 + 0xe9, 0x29, 0x0c, 0x00, 0x00, //0x000030e7 jmp LBB0_728 + //0x000030ec LBB0_572 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000030ec movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x000030f3 movl $2, %edx + 0x49, 0x01, 0xd1, //0x000030f8 addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030fb movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003102 addq %rcx, %r10 + 0x0f, 0x8e, 0x0a, 0x0c, 0x00, 0x00, //0x00003105 jle LBB0_728 + //0x0000310b LBB0_574 + 0x41, 0x0f, 0xb6, 0x01, //0x0000310b movzbl (%r9), %eax + 0x3c, 0x5c, //0x0000310f cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003111 je LBB0_572 + 0x3c, 0x22, //0x00003117 cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003119 je LBB0_699 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000311f movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00003126 movl $1, %edx + 0x49, 0x01, 0xd1, //0x0000312b addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000312e movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003135 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003138 jg LBB0_574 + 0xe9, 0xd2, 0x0b, 0x00, 0x00, //0x0000313e jmp LBB0_728 + //0x00003143 LBB0_699 + 0x4d, 0x29, 0xf1, //0x00003143 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003146 addq $1, %r9 + 0x4d, 0x89, 0x0f, //0x0000314a movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x0000314d testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003150 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x4d, 0xe7, 0xff, 0xff, //0x00003155 jg LBB0_304 + 0xe9, 0x55, 0x0b, 0x00, 0x00, //0x0000315b jmp LBB0_700 + //0x00003160 LBB0_577 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003160 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003164 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003168 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316d vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003172 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003176 jne LBB0_580 + 0x48, 0x89, 0xc1, //0x0000317c movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x0000317f subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003182 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003186 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003189 jmp LBB0_580 + //0x0000318e LBB0_579 + 0xc5, 0x7d, 0x7f, 0xe2, //0x0000318e vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003192 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003196 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319b vmovdqa %ymm15, %ymm12 + //0x000031a0 LBB0_580 + 0x44, 0x89, 0xd9, //0x000031a0 movl %r11d, %ecx + 0xf7, 0xd1, //0x000031a3 notl %ecx + 0x21, 0xd1, //0x000031a5 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x000031a7 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x000031aa leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x000031ae notl %esi + 0x21, 0xd6, //0x000031b0 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b2 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x000031b8 xorl %r11d, %r11d + 0x01, 0xce, //0x000031bb addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x000031bd setb %r11b + 0x01, 0xf6, //0x000031c1 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x000031c3 xorl $1431655765, %esi + 0x21, 0xfe, //0x000031c9 andl %edi, %esi + 0xf7, 0xd6, //0x000031cb notl %esi + 0x41, 0x21, 0xf2, //0x000031cd andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d5 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031da vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xd0, 0xff, 0xff, //0x000031df vmovdqu $-12103(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcf, 0xff, 0xff, //0x000031e7 vmovdqu $-12335(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x000031ef vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x000031f3 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x000031f7 testq %r10, %r10 + 0x0f, 0x85, 0xdb, 0xf7, 0xff, 0xff, //0x000031fa jne LBB0_156 + //0x00003200 LBB0_581 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003200 movl $64, %edx + //0x00003205 LBB0_582 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003205 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003209 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000320e vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003212 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003216 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003219 testq %r10, %r10 + 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x0000321c je LBB0_585 + 0x85, 0xf6, //0x00003222 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003224 movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003229 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x0000322c cmpq %rdi, %rdx + 0x0f, 0x87, 0x79, 0x0c, 0x00, 0x00, //0x0000322f ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x00003235 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003238 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000323b addq $1, %rax + 0xe9, 0x67, 0xd5, 0xff, 0xff, //0x0000323f jmp LBB0_63 + //0x00003244 LBB0_585 + 0x85, 0xf6, //0x00003244 testl %esi, %esi + 0x0f, 0x85, 0x6f, 0x0c, 0x00, 0x00, //0x00003246 jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x0000324c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003250 addq $-32, %r13 + //0x00003254 LBB0_587 + 0x4d, 0x85, 0xdb, //0x00003254 testq %r11, %r11 + 0x0f, 0x85, 0xb0, 0x04, 0x00, 0x00, //0x00003257 jne LBB0_639 + 0x4c, 0x89, 0xf9, //0x0000325d movq %r15, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x00003260 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x00003264 testq %r13, %r13 + 0x0f, 0x84, 0x5e, 0x0a, 0x00, 0x00, //0x00003267 je LBB0_703 + //0x0000326d LBB0_589 + 0x0f, 0xb6, 0x10, //0x0000326d movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00003270 cmpb $34, %dl + 0x0f, 0x84, 0x9c, 0x00, 0x00, 0x00, //0x00003273 je LBB0_701 + 0x80, 0xfa, 0x5c, //0x00003279 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000327c je LBB0_593 + 0x80, 0xfa, 0x1f, //0x00003282 cmpb $31, %dl + 0x0f, 0x86, 0x3b, 0x0c, 0x00, 0x00, //0x00003285 jbe LBB0_736 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000328b movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00003292 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00003297 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x0000329a addq %rdx, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x0000329d jne LBB0_589 + 0xe9, 0x23, 0x0a, 0x00, 0x00, //0x000032a3 jmp LBB0_703 + //0x000032a8 LBB0_593 + 0x49, 0x83, 0xfd, 0x01, //0x000032a8 cmpq $1, %r13 + 0x0f, 0x84, 0x19, 0x0a, 0x00, 0x00, //0x000032ac je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000032b2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000032b6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032ba vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000032bf movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000032c6 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x000032cb cmpq $-1, %rcx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x000032cf jne LBB0_596 + 0x49, 0x89, 0xc7, //0x000032d5 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x000032d8 subq %r14, %r15 + 0x4c, 0x89, 0xf9, //0x000032db movq %r15, %rcx + //0x000032de LBB0_596 + 0x4c, 0x8b, 0x1c, 0x24, //0x000032de movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032e2 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000032e7 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xac, 0xcf, 0xff, 0xff, //0x000032ec vmovdqu $-12372(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc4, 0xce, 0xff, 0xff, //0x000032f4 vmovdqu $-12604(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000032fc vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003300 vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf0, //0x00003304 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x00003307 addq %rdx, %r13 + 0x0f, 0x85, 0x5d, 0xff, 0xff, 0xff, //0x0000330a jne LBB0_589 + 0xe9, 0xb6, 0x09, 0x00, 0x00, //0x00003310 jmp LBB0_703 + //0x00003315 LBB0_701 + 0x4c, 0x29, 0xf0, //0x00003315 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003318 addq $1, %rax + 0x48, 0x85, 0xc0, //0x0000331c testq %rax, %rax + 0x0f, 0x89, 0x67, 0xd0, 0xff, 0xff, //0x0000331f jns LBB0_237 + 0xe9, 0x97, 0x09, 0x00, 0x00, //0x00003325 jmp LBB0_702 + //0x0000332a LBB0_597 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000332a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000332e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003332 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003337 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x0000333c cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003340 jne LBB0_600 + 0x48, 0x89, 0xc1, //0x00003346 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003349 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x0000334c bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003350 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003353 jmp LBB0_600 + //0x00003358 LBB0_599 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003358 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000335c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003360 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003365 vmovdqa %ymm15, %ymm12 + //0x0000336a LBB0_600 + 0x44, 0x89, 0xd1, //0x0000336a movl %r10d, %ecx + 0xf7, 0xd1, //0x0000336d notl %ecx + 0x21, 0xf1, //0x0000336f andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00003371 leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00003374 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003378 notl %edi + 0x21, 0xf7, //0x0000337a andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000337c andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00003382 xorl %r10d, %r10d + 0x01, 0xcf, //0x00003385 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003387 setb %r10b + 0x01, 0xff, //0x0000338b addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x0000338d xorl $1431655765, %edi + 0x21, 0xdf, //0x00003393 andl %ebx, %edi + 0xf7, 0xd7, //0x00003395 notl %edi + 0x21, 0xfa, //0x00003397 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003399 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000339e vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000033a3 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf0, 0xce, 0xff, 0xff, //0x000033a8 vmovdqu $-12560(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x08, 0xce, 0xff, 0xff, //0x000033b0 vmovdqu $-12792(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000033b8 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000033bc vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x000033c0 testq %rdx, %rdx + 0x0f, 0x85, 0xce, 0xf6, 0xff, 0xff, //0x000033c3 jne LBB0_93 + //0x000033c9 LBB0_601 + 0x48, 0x83, 0xc0, 0x20, //0x000033c9 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000033cd addq $-32, %r11 + //0x000033d1 LBB0_602 + 0x4d, 0x85, 0xd2, //0x000033d1 testq %r10, %r10 + 0x0f, 0x85, 0x97, 0x03, 0x00, 0x00, //0x000033d4 jne LBB0_641 + 0x4c, 0x89, 0xf2, //0x000033da movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000033dd notq %rdx + 0x4c, 0x89, 0xfe, //0x000033e0 movq %r15, %rsi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000033e3 movq $24(%rsp), %r10 + 0x4d, 0x85, 0xdb, //0x000033e8 testq %r11, %r11 + 0x0f, 0x84, 0xa6, 0x00, 0x00, 0x00, //0x000033eb je LBB0_614 + //0x000033f1 LBB0_604 + 0x48, 0x83, 0xc2, 0x01, //0x000033f1 addq $1, %rdx + //0x000033f5 LBB0_605 + 0x31, 0xff, //0x000033f5 xorl %edi, %edi + //0x000033f7 LBB0_606 + 0x0f, 0xb6, 0x1c, 0x38, //0x000033f7 movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000033fb cmpb $34, %bl + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000033fe je LBB0_613 + 0x80, 0xfb, 0x5c, //0x00003404 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003407 je LBB0_611 + 0x48, 0x83, 0xc7, 0x01, //0x0000340d addq $1, %rdi + 0x49, 0x39, 0xfb, //0x00003411 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003414 jne LBB0_606 + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x0000341a jmp LBB0_609 + //0x0000341f LBB0_611 + 0x49, 0x8d, 0x4b, 0xff, //0x0000341f leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x00003423 cmpq %rdi, %rcx + 0x0f, 0x84, 0x9f, 0x08, 0x00, 0x00, //0x00003426 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000342c vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003430 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003434 vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x0c, 0x02, //0x00003439 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x0000343d addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003440 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003444 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003448 cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x0000344c addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000344f addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003453 movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003456 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003459 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x0000345d addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003461 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003464 movq %rcx, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003467 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000346c vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xce, 0xff, 0xff, //0x00003471 vmovdqu $-12761(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xcd, 0xff, 0xff, //0x00003479 vmovdqu $-12993(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003481 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6a, 0xff, 0xff, 0xff, //0x00003485 jne LBB0_605 + 0xe9, 0x3b, 0x08, 0x00, 0x00, //0x0000348b jmp LBB0_703 + //0x00003490 LBB0_613 + 0x48, 0x01, 0xf8, //0x00003490 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003493 addq $1, %rax + //0x00003497 LBB0_614 + 0x4c, 0x29, 0xf0, //0x00003497 subq %r14, %rax + 0xe9, 0x20, 0x01, 0x00, 0x00, //0x0000349a jmp LBB0_623 + //0x0000349f LBB0_609 + 0x80, 0xfb, 0x22, //0x0000349f cmpb $34, %bl + 0x0f, 0x85, 0x23, 0x08, 0x00, 0x00, //0x000034a2 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000034a8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000034ac vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034b0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x000034b5 addq %r11, %rax + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000034b8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000034bd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xd6, 0xcd, 0xff, 0xff, //0x000034c2 vmovdqu $-12842(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xee, 0xcc, 0xff, 0xff, //0x000034ca vmovdqu $-13074(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000034d2 vmovdqa %ymm0, %ymm11 + 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x000034d6 jmp LBB0_614 + //0x000034db LBB0_615 + 0xc5, 0x7d, 0x7f, 0xe2, //0x000034db vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x000034df vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034e3 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000034e8 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x000034ed cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000034f1 jne LBB0_618 + 0x48, 0x89, 0xc1, //0x000034f7 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x000034fa subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x000034fd bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003501 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003504 jmp LBB0_618 + //0x00003509 LBB0_617 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003509 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x0000350d vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003511 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003516 vmovdqa %ymm15, %ymm12 + //0x0000351b LBB0_618 + 0x44, 0x89, 0xd9, //0x0000351b movl %r11d, %ecx + 0xf7, 0xd1, //0x0000351e notl %ecx + 0x21, 0xd1, //0x00003520 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003522 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003525 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003529 notl %esi + 0x21, 0xd6, //0x0000352b andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000352d andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003533 xorl %r11d, %r11d + 0x01, 0xce, //0x00003536 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003538 setb %r11b + 0x01, 0xf6, //0x0000353c addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000353e xorl $1431655765, %esi + 0x21, 0xfe, //0x00003544 andl %edi, %esi + 0xf7, 0xd6, //0x00003546 notl %esi + 0x41, 0x21, 0xf2, //0x00003548 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000354b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003550 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003555 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x3e, 0xcd, 0xff, 0xff, //0x0000355a vmovdqu $-12994(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x56, 0xcc, 0xff, 0xff, //0x00003562 vmovdqu $-13226(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x0000356a vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000356e vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003572 testq %r10, %r10 + 0x0f, 0x85, 0x6d, 0xf5, 0xff, 0xff, //0x00003575 jne LBB0_176 + //0x0000357b LBB0_619 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000357b movl $64, %edx + //0x00003580 LBB0_620 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003580 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003584 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003589 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000358d vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003591 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003594 testq %r10, %r10 + 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00003597 je LBB0_624 + 0x85, 0xf6, //0x0000359d testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x0000359f movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x000035a4 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x000035a7 cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035aa movq $24(%rsp), %r10 + 0x0f, 0x87, 0xf9, 0x08, 0x00, 0x00, //0x000035af ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x000035b5 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x000035b8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035bb addq $1, %rax + //0x000035bf LBB0_623 + 0x4c, 0x8b, 0x1c, 0x24, //0x000035bf movq (%rsp), %r11 + 0xe9, 0xc6, 0xe2, 0xff, 0xff, //0x000035c3 jmp LBB0_302 + //0x000035c8 LBB0_624 + 0x85, 0xf6, //0x000035c8 testl %esi, %esi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035ca movq $24(%rsp), %r10 + 0x0f, 0x85, 0xe6, 0x08, 0x00, 0x00, //0x000035cf jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x000035d5 addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x000035d9 addq $-32, %r13 + //0x000035dd LBB0_626 + 0x4d, 0x85, 0xdb, //0x000035dd testq %r11, %r11 + 0x0f, 0x85, 0xee, 0x01, 0x00, 0x00, //0x000035e0 jne LBB0_643 + 0x4c, 0x89, 0xfa, //0x000035e6 movq %r15, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x000035e9 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x000035ed testq %r13, %r13 + 0x0f, 0x84, 0xd5, 0x06, 0x00, 0x00, //0x000035f0 je LBB0_703 + //0x000035f6 LBB0_628 + 0x0f, 0xb6, 0x18, //0x000035f6 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x000035f9 cmpb $34, %bl + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x000035fc je LBB0_636 + 0x80, 0xfb, 0x5c, //0x00003602 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003605 je LBB0_632 + 0x80, 0xfb, 0x1f, //0x0000360b cmpb $31, %bl + 0x0f, 0x86, 0xb2, 0x08, 0x00, 0x00, //0x0000360e jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003614 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x0000361b movl $1, %edi + 0x48, 0x01, 0xf8, //0x00003620 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003623 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003626 jne LBB0_628 + 0xe9, 0x9a, 0x06, 0x00, 0x00, //0x0000362c jmp LBB0_703 + //0x00003631 LBB0_632 + 0x49, 0x83, 0xfd, 0x01, //0x00003631 cmpq $1, %r13 + 0x0f, 0x84, 0x90, 0x06, 0x00, 0x00, //0x00003635 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000363b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000363f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003643 vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003648 movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x0000364f movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003654 cmpq $-1, %rdx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003658 jne LBB0_635 + 0x49, 0x89, 0xc7, //0x0000365e movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003661 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003664 movq %r15, %rdx + //0x00003667 LBB0_635 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003667 movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000366b movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003670 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003675 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x1e, 0xcc, 0xff, 0xff, //0x0000367a vmovdqu $-13282(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x36, 0xcb, 0xff, 0xff, //0x00003682 vmovdqu $-13514(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000368a vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x0000368e vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf8, //0x00003692 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003695 addq %rsi, %r13 + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003698 jne LBB0_628 + 0xe9, 0x28, 0x06, 0x00, 0x00, //0x0000369e jmp LBB0_703 + //0x000036a3 LBB0_636 + 0x4c, 0x29, 0xf0, //0x000036a3 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000036a6 addq $1, %rax + 0xe9, 0xdf, 0xe1, 0xff, 0xff, //0x000036aa jmp LBB0_302 + //0x000036af LBB0_637 + 0x4d, 0x85, 0xdb, //0x000036af testq %r11, %r11 + 0x0f, 0x84, 0x13, 0x06, 0x00, 0x00, //0x000036b2 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000036b8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000036bc vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000036c0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x000036c5 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x000036c8 notq %rcx + 0x48, 0x8d, 0x14, 0x08, //0x000036cb leaq (%rax,%rcx), %rdx + 0x49, 0x83, 0xff, 0xff, //0x000036cf cmpq $-1, %r15 + 0x4c, 0x89, 0xff, //0x000036d3 movq %r15, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x000036d6 cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x000036da cmoveq %rdx, %rdi + 0x48, 0x83, 0xc0, 0x01, //0x000036de addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000036e2 addq $-1, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000036e6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xad, 0xcb, 0xff, 0xff, //0x000036eb vmovdqu $-13395(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc5, 0xca, 0xff, 0xff, //0x000036f3 vmovdqu $-13627(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000036fb vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000036ff testq %r11, %r11 + 0x0f, 0x85, 0xb1, 0xf8, 0xff, 0xff, //0x00003702 jne LBB0_559 + 0xe9, 0x4d, 0xf9, 0xff, 0xff, //0x00003708 jmp LBB0_569 + //0x0000370d LBB0_639 + 0x4d, 0x85, 0xed, //0x0000370d testq %r13, %r13 + 0x0f, 0x84, 0xb5, 0x05, 0x00, 0x00, //0x00003710 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003716 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000371a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000371e vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x00003723 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00003726 notq %rcx + 0x48, 0x01, 0xc1, //0x00003729 addq %rax, %rcx + 0x49, 0x83, 0xff, 0xff, //0x0000372c cmpq $-1, %r15 + 0x4c, 0x89, 0xfa, //0x00003730 movq %r15, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00003733 cmoveq %rcx, %rdx + 0x49, 0x0f, 0x45, 0xcf, //0x00003737 cmovneq %r15, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x0000373b addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x0000373f addq $-1, %r13 + 0x49, 0x89, 0xd7, //0x00003743 movq %rdx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003746 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000374a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xcb, 0xff, 0xff, //0x0000374f vmovdqu $-13495(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xca, 0xff, 0xff, //0x00003757 vmovdqu $-13727(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000375f vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x00003763 testq %r13, %r13 + 0x0f, 0x85, 0x01, 0xfb, 0xff, 0xff, //0x00003766 jne LBB0_589 + 0xe9, 0x5a, 0x05, 0x00, 0x00, //0x0000376c jmp LBB0_703 + //0x00003771 LBB0_641 + 0x4d, 0x85, 0xdb, //0x00003771 testq %r11, %r11 + 0x0f, 0x84, 0x51, 0x05, 0x00, 0x00, //0x00003774 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000377a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000377e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003782 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x00003787 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x0000378a notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x0000378d leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003791 cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003795 movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003798 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x0000379c cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x000037a0 addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000037a4 addq $-1, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000037a8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ad vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xe6, 0xca, 0xff, 0xff, //0x000037b2 vmovdqu $-13594(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xfe, 0xc9, 0xff, 0xff, //0x000037ba vmovdqu $-13826(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000037c2 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000037c6 testq %r11, %r11 + 0x0f, 0x85, 0x22, 0xfc, 0xff, 0xff, //0x000037c9 jne LBB0_604 + 0xe9, 0xc3, 0xfc, 0xff, 0xff, //0x000037cf jmp LBB0_614 + //0x000037d4 LBB0_643 + 0x4d, 0x85, 0xed, //0x000037d4 testq %r13, %r13 + 0x0f, 0x84, 0xee, 0x04, 0x00, 0x00, //0x000037d7 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000037dd vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e1 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000037e5 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x000037ea movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000037ed notq %rdx + 0x48, 0x01, 0xc2, //0x000037f0 addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x000037f3 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x000037f7 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x000037fa cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x000037fe cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003802 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003806 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x0000380a movq %rcx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000380d movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003811 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003816 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xca, 0xff, 0xff, //0x0000381b vmovdqu $-13699(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xc9, 0xff, 0xff, //0x00003823 vmovdqu $-13931(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000382b vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x0000382f testq %r13, %r13 + 0x0f, 0x85, 0xbe, 0xfd, 0xff, 0xff, //0x00003832 jne LBB0_628 + 0xe9, 0x8e, 0x04, 0x00, 0x00, //0x00003838 jmp LBB0_703 + //0x0000383d LBB0_645 + 0x49, 0x39, 0xf2, //0x0000383d cmpq %rsi, %r10 + 0x0f, 0x84, 0xcf, 0x04, 0x00, 0x00, //0x00003840 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003846 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000384a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000384e vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00003853 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003856 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x0000385a notq %rsi + 0x49, 0x01, 0xf2, //0x0000385d addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003860 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003865 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003869 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x2a, 0xca, 0xff, 0xff, //0x0000386e vmovdqu $-13782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x42, 0xc9, 0xff, 0xff, //0x00003876 vmovdqu $-14014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000387e vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00003882 testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003885 jg LBB0_649 + 0xe9, 0x85, 0x04, 0x00, 0x00, //0x0000388b jmp LBB0_728 + //0x00003890 LBB0_647 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003890 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00003897 movl $2, %edx + 0x49, 0x01, 0xd1, //0x0000389c addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000389f movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038a6 addq %rcx, %r10 + 0x0f, 0x8e, 0x66, 0x04, 0x00, 0x00, //0x000038a9 jle LBB0_728 + //0x000038af LBB0_649 + 0x41, 0x0f, 0xb6, 0x01, //0x000038af movzbl (%r9), %eax + 0x3c, 0x5c, //0x000038b3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000038b5 je LBB0_647 + 0x3c, 0x22, //0x000038bb cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000038bd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000038c3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x000038ca movl $1, %edx + 0x49, 0x01, 0xd1, //0x000038cf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000038d2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038d9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000038dc jg LBB0_649 + 0xe9, 0x2e, 0x04, 0x00, 0x00, //0x000038e2 jmp LBB0_728 + //0x000038e7 LBB0_652 + 0x4d, 0x29, 0xf1, //0x000038e7 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000038ea addq $1, %r9 + 0xe9, 0xbf, 0xd1, 0xff, 0xff, //0x000038ee jmp LBB0_105 + //0x000038f3 LBB0_653 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000038f3 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000038f7 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038fb vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003900 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003905 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003909 jne LBB0_656 + 0x48, 0x89, 0xc1, //0x0000390f movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003912 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003915 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003919 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000391c jmp LBB0_656 + //0x00003921 LBB0_655 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003921 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003925 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003929 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000392e vmovdqa %ymm15, %ymm12 + //0x00003933 LBB0_656 + 0x44, 0x89, 0xd1, //0x00003933 movl %r10d, %ecx + 0xf7, 0xd1, //0x00003936 notl %ecx + 0x21, 0xf1, //0x00003938 andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x0000393a leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x0000393d leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003941 notl %edi + 0x21, 0xf7, //0x00003943 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003945 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x0000394b xorl %r10d, %r10d + 0x01, 0xcf, //0x0000394e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003950 setb %r10b + 0x01, 0xff, //0x00003954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003956 xorl $1431655765, %edi + 0x21, 0xdf, //0x0000395c andl %ebx, %edi + 0xf7, 0xd7, //0x0000395e notl %edi + 0x21, 0xfa, //0x00003960 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003962 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003967 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x0000396c vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xc9, 0xff, 0xff, //0x00003971 vmovdqu $-14041(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xc8, 0xff, 0xff, //0x00003979 vmovdqu $-14273(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003981 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003985 vmovdqa %ymm1, %ymm12 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003989 vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x0000398d testq %rdx, %rdx + 0x0f, 0x85, 0x95, 0xf2, 0xff, 0xff, //0x00003990 jne LBB0_251 + //0x00003996 LBB0_657 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003996 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000399a vmovdqa %ymm11, %ymm0 + 0xc5, 0x7d, 0x6f, 0xda, //0x0000399e vmovdqa %ymm2, %ymm11 + 0x48, 0x83, 0xc0, 0x20, //0x000039a2 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000039a6 addq $-32, %r11 + //0x000039aa LBB0_658 + 0x4d, 0x85, 0xd2, //0x000039aa testq %r10, %r10 + 0x0f, 0x85, 0x75, 0x02, 0x00, 0x00, //0x000039ad jne LBB0_693 + 0x4c, 0x89, 0xf2, //0x000039b3 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000039b6 notq %rdx + 0x4c, 0x89, 0xfe, //0x000039b9 movq %r15, %rsi + 0x4d, 0x85, 0xdb, //0x000039bc testq %r11, %r11 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000039bf je LBB0_670 + //0x000039c5 LBB0_660 + 0x48, 0x83, 0xc2, 0x01, //0x000039c5 addq $1, %rdx + //0x000039c9 LBB0_661 + 0x31, 0xff, //0x000039c9 xorl %edi, %edi + //0x000039cb LBB0_662 + 0x0f, 0xb6, 0x1c, 0x38, //0x000039cb movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000039cf cmpb $34, %bl + 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x000039d2 je LBB0_669 + 0x80, 0xfb, 0x5c, //0x000039d8 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000039db je LBB0_667 + 0x48, 0x83, 0xc7, 0x01, //0x000039e1 addq $1, %rdi + 0x49, 0x39, 0xfb, //0x000039e5 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000039e8 jne LBB0_662 + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x000039ee jmp LBB0_665 + //0x000039f3 LBB0_667 + 0x49, 0x8d, 0x4b, 0xff, //0x000039f3 leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x000039f7 cmpq %rdi, %rcx + 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000039fa je LBB0_703 + 0x48, 0x8d, 0x0c, 0x02, //0x00003a00 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x00003a04 addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003a07 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003a0b cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003a0f cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x00003a13 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003a16 addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003a1a movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003a1d subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a20 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x00003a24 addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003a28 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003a2b movq %rcx, %r11 + 0x0f, 0x85, 0x95, 0xff, 0xff, 0xff, //0x00003a2e jne LBB0_661 + 0xe9, 0x92, 0x02, 0x00, 0x00, //0x00003a34 jmp LBB0_703 + //0x00003a39 LBB0_669 + 0x48, 0x01, 0xf8, //0x00003a39 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003a3c addq $1, %rax + //0x00003a40 LBB0_670 + 0x4c, 0x29, 0xf0, //0x00003a40 subq %r14, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003a43 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a47 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003a4c vmovdqa %ymm11, %ymm2 + 0xe9, 0xb6, 0x01, 0x00, 0x00, //0x00003a50 jmp LBB0_692 + //0x00003a55 LBB0_665 + 0x80, 0xfb, 0x22, //0x00003a55 cmpb $34, %bl + 0x0f, 0x85, 0x6d, 0x02, 0x00, 0x00, //0x00003a58 jne LBB0_703 + 0x4c, 0x01, 0xd8, //0x00003a5e addq %r11, %rax + 0xe9, 0xda, 0xff, 0xff, 0xff, //0x00003a61 jmp LBB0_670 + //0x00003a66 LBB0_671 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a66 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a6a vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a6e vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003a73 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003a78 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003a7c jne LBB0_674 + 0x48, 0x89, 0xc1, //0x00003a82 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003a85 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003a88 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003a8c addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003a8f jmp LBB0_674 + //0x00003a94 LBB0_673 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a94 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a98 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a9c vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003aa1 vmovdqa %ymm15, %ymm12 + //0x00003aa6 LBB0_674 + 0x44, 0x89, 0xd9, //0x00003aa6 movl %r11d, %ecx + 0xf7, 0xd1, //0x00003aa9 notl %ecx + 0x21, 0xd1, //0x00003aab andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003aad leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003ab0 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003ab4 notl %esi + 0x21, 0xd6, //0x00003ab6 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003ab8 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003abe xorl %r11d, %r11d + 0x01, 0xce, //0x00003ac1 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003ac3 setb %r11b + 0x01, 0xf6, //0x00003ac7 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x00003ac9 xorl $1431655765, %esi + 0x21, 0xfe, //0x00003acf andl %edi, %esi + 0xf7, 0xd6, //0x00003ad1 notl %esi + 0x41, 0x21, 0xf2, //0x00003ad3 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003ad6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003adb vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003ae0 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb3, 0xc7, 0xff, 0xff, //0x00003ae5 vmovdqu $-14413(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xcb, 0xc6, 0xff, 0xff, //0x00003aed vmovdqu $-14645(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00003af5 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x00003af9 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003afd testq %r10, %r10 + 0x0f, 0x85, 0x7a, 0xf1, 0xff, 0xff, //0x00003b00 jne LBB0_409 + //0x00003b06 LBB0_675 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003b06 movl $64, %edx + //0x00003b0b LBB0_676 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003b0b vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003b0f vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003b14 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003b18 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003b1c bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003b1f testq %r10, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00003b22 je LBB0_679 + 0x85, 0xf6, //0x00003b28 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003b2a movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003b2f cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x00003b32 cmpq %rdi, %rdx + 0x0f, 0x87, 0x73, 0x03, 0x00, 0x00, //0x00003b35 ja LBB0_734 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003b3b vmovdqa %ymm13, %ymm2 + 0x4c, 0x29, 0xf0, //0x00003b3f subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003b42 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003b45 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003b49 movq (%rsp), %r11 + 0xe9, 0x8a, 0xeb, 0xff, 0xff, //0x00003b4d jmp LBB0_473 + //0x00003b52 LBB0_679 + 0x85, 0xf6, //0x00003b52 testl %esi, %esi + 0x0f, 0x85, 0x61, 0x03, 0x00, 0x00, //0x00003b54 jne LBB0_735 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003b5a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003b5e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003b62 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003b67 vmovdqa %ymm15, %ymm12 + 0x48, 0x83, 0xc0, 0x20, //0x00003b6c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003b70 addq $-32, %r13 + //0x00003b74 LBB0_681 + 0x4d, 0x85, 0xdb, //0x00003b74 testq %r11, %r11 + 0x0f, 0x85, 0xe3, 0x00, 0x00, 0x00, //0x00003b77 jne LBB0_695 + 0x4c, 0x89, 0xfa, //0x00003b7d movq %r15, %rdx + 0x4d, 0x85, 0xed, //0x00003b80 testq %r13, %r13 + 0x0f, 0x84, 0x42, 0x01, 0x00, 0x00, //0x00003b83 je LBB0_703 + //0x00003b89 LBB0_683 + 0x0f, 0xb6, 0x18, //0x00003b89 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x00003b8c cmpb $34, %bl + 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x00003b8f je LBB0_691 + 0x80, 0xfb, 0x5c, //0x00003b95 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003b98 je LBB0_688 + 0x80, 0xfb, 0x1f, //0x00003b9e cmpb $31, %bl + 0x0f, 0x86, 0x1f, 0x03, 0x00, 0x00, //0x00003ba1 jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003ba7 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003bae movl $1, %edi + //0x00003bb3 LBB0_687 + 0x48, 0x01, 0xf8, //0x00003bb3 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003bb6 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003bb9 jne LBB0_683 + 0xe9, 0x07, 0x01, 0x00, 0x00, //0x00003bbf jmp LBB0_703 + //0x00003bc4 LBB0_688 + 0x49, 0x83, 0xfd, 0x01, //0x00003bc4 cmpq $1, %r13 + 0x0f, 0x84, 0xfd, 0x00, 0x00, 0x00, //0x00003bc8 je LBB0_703 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003bce movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003bd5 movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003bda cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003bde jne LBB0_687 + 0x49, 0x89, 0xc7, //0x00003be4 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003be7 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003bea movq %r15, %rdx + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003bed jmp LBB0_687 + //0x00003bf2 LBB0_691 + 0x4c, 0x29, 0xf0, //0x00003bf2 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003bf5 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003bf9 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003bfd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003c02 vmovdqa %ymm11, %ymm2 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003c06 vmovdqa %ymm12, %ymm15 + //0x00003c0b LBB0_692 + 0xc5, 0xfe, 0x6f, 0x25, 0x8d, 0xc6, 0xff, 0xff, //0x00003c0b vmovdqu $-14707(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xa5, 0xc5, 0xff, 0xff, //0x00003c13 vmovdqu $-14939(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003c1b vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003c1f vmovdqa %ymm1, %ymm12 + 0xe9, 0xb4, 0xea, 0xff, 0xff, //0x00003c23 jmp LBB0_473 + //0x00003c28 LBB0_693 + 0x4d, 0x85, 0xdb, //0x00003c28 testq %r11, %r11 + 0x0f, 0x84, 0x9a, 0x00, 0x00, 0x00, //0x00003c2b je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c31 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c34 notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003c37 leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003c3b cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003c3f movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003c42 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003c46 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003c4a addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x00003c4e addq $-1, %r11 + 0x4d, 0x85, 0xdb, //0x00003c52 testq %r11, %r11 + 0x0f, 0x85, 0x6a, 0xfd, 0xff, 0xff, //0x00003c55 jne LBB0_660 + 0xe9, 0xe0, 0xfd, 0xff, 0xff, //0x00003c5b jmp LBB0_670 + //0x00003c60 LBB0_695 + 0x4d, 0x85, 0xed, //0x00003c60 testq %r13, %r13 + 0x0f, 0x84, 0x62, 0x00, 0x00, 0x00, //0x00003c63 je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c69 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c6c notq %rdx + 0x48, 0x01, 0xc2, //0x00003c6f addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x00003c72 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x00003c76 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003c79 cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x00003c7d cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003c81 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003c85 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x00003c89 movq %rcx, %r15 + 0x4d, 0x85, 0xed, //0x00003c8c testq %r13, %r13 + 0x0f, 0x85, 0xf4, 0xfe, 0xff, 0xff, //0x00003c8f jne LBB0_683 + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00003c95 jmp LBB0_703 + //0x00003c9a LBB0_697 + 0x4d, 0x89, 0x27, //0x00003c9a movq %r12, (%r15) + //0x00003c9d LBB0_698 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003c9d movq $-1, %rax + 0xe9, 0x6c, 0x00, 0x00, 0x00, //0x00003ca4 jmp LBB0_728 + //0x00003ca9 LBB0_724 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003ca9 movq $-7, %rax + 0xe9, 0x60, 0x00, 0x00, 0x00, //0x00003cb0 jmp LBB0_728 + //0x00003cb5 LBB0_700 + 0x49, 0x83, 0xc0, 0xff, //0x00003cb5 addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003cb9 movq %r8, %rax + 0xe9, 0x54, 0x00, 0x00, 0x00, //0x00003cbc jmp LBB0_728 + //0x00003cc1 LBB0_702 + 0x48, 0x83, 0xf8, 0xff, //0x00003cc1 cmpq $-1, %rax + 0x0f, 0x85, 0x87, 0x01, 0x00, 0x00, //0x00003cc5 jne LBB0_704 + //0x00003ccb LBB0_703 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003ccb movq $-1, %rax + 0x4d, 0x89, 0xc7, //0x00003cd2 movq %r8, %r15 + 0xe9, 0x78, 0x01, 0x00, 0x00, //0x00003cd5 jmp LBB0_704 + //0x00003cda LBB0_475 + 0x49, 0x83, 0xc1, 0xff, //0x00003cda addq $-1, %r9 + 0x4c, 0x89, 0xc8, //0x00003cde movq %r9, %rax + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00003ce1 jmp LBB0_728 + //0x00003ce6 LBB0_705 + 0x49, 0x83, 0xc5, 0xff, //0x00003ce6 addq $-1, %r13 + 0x4c, 0x89, 0xe8, //0x00003cea movq %r13, %rax + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00003ced jmp LBB0_728 + //0x00003cf2 LBB0_706 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cf2 movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cf9 jmp LBB0_708 //0x00003cfe LBB0_707 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cfe movq $-1, %rcx - 0x4d, 0x89, 0xfb, //0x00003d05 movq %r15, %r11 - 0xe9, 0x49, 0x00, 0x00, 0x00, //0x00003d08 jmp LBB0_716 - //0x00003d0d LBB0_708 - 0x4c, 0x89, 0xc9, //0x00003d0d movq %r9, %rcx - //0x00003d10 LBB0_709 - 0x48, 0xf7, 0xd1, //0x00003d10 notq %rcx - 0x49, 0x01, 0x4d, 0x00, //0x00003d13 addq %rcx, (%r13) - 0xe9, 0x71, 0xfe, 0xff, 0xff, //0x00003d17 jmp LBB0_710 - //0x00003d1c LBB0_717 - 0x4d, 0x89, 0xc8, //0x00003d1c movq %r9, %r8 - 0xe9, 0x2c, 0xfe, 0xff, 0xff, //0x00003d1f jmp LBB0_681 - //0x00003d24 LBB0_712 - 0x49, 0x83, 0xfa, 0xff, //0x00003d24 cmpq $-1, %r10 - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00003d28 je LBB0_714 - 0x4d, 0x89, 0xd3, //0x00003d2e movq %r10, %r11 - 0xe9, 0x19, 0x00, 0x00, 0x00, //0x00003d31 jmp LBB0_715 - //0x00003d36 LBB0_209 - 0x4c, 0x01, 0xd2, //0x00003d36 addq %r10, %rdx - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %r10 - 0x49, 0x89, 0xd7, //0x00003d40 movq %rdx, %r15 - 0xe9, 0x84, 0xfe, 0xff, 0xff, //0x00003d43 jmp LBB0_703 - //0x00003d48 LBB0_714 - 0x4c, 0x0f, 0xbc, 0xde, //0x00003d48 bsfq %rsi, %r11 - 0x49, 0x01, 0xcb, //0x00003d4c addq %rcx, %r11 - //0x00003d4f LBB0_715 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d4f movq $-2, %rcx - //0x00003d56 LBB0_716 - 0x48, 0x89, 0x0c, 0x24, //0x00003d56 movq %rcx, (%rsp) - 0x4d, 0x89, 0x5d, 0x00, //0x00003d5a movq %r11, (%r13) - 0xe9, 0x32, 0xfe, 0xff, 0xff, //0x00003d5e jmp LBB0_711 - //0x00003d63 LBB0_718 - 0x4d, 0x89, 0xcf, //0x00003d63 movq %r9, %r15 - 0xe9, 0x93, 0xff, 0xff, 0xff, //0x00003d66 jmp LBB0_707 - //0x00003d6b LBB0_719 - 0x48, 0x01, 0xca, //0x00003d6b addq %rcx, %rdx - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d6e movq $-2, %rcx - 0x49, 0x89, 0xd3, //0x00003d75 movq %rdx, %r11 - 0xe9, 0xd9, 0xff, 0xff, 0xff, //0x00003d78 jmp LBB0_716 - //0x00003d7d LBB0_720 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00003d7d movq $16(%rsp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00003d82 movq $8(%rax), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003d86 movq %rax, (%r13) - 0xe9, 0x06, 0xfe, 0xff, 0xff, //0x00003d8a jmp LBB0_711 - //0x00003d8f LBB0_721 - 0x89, 0xf8, //0x00003d8f movl %edi, %eax - 0x4d, 0x29, 0xf2, //0x00003d91 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00003d94 addq %rax, %r10 - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003d97 jmp LBB0_724 - //0x00003d9c LBB0_722 - 0x4d, 0x29, 0xf2, //0x00003d9c subq %r14, %r10 - 0x41, 0x89, 0xff, //0x00003d9f movl %edi, %r15d - 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00003da2 jmp LBB0_701 - //0x00003da7 LBB0_723 - 0x4d, 0x29, 0xf2, //0x00003da7 subq %r14, %r10 - //0x00003daa LBB0_724 - 0x4d, 0x89, 0xd7, //0x00003daa movq %r10, %r15 - 0xe9, 0x13, 0xfe, 0xff, 0xff, //0x00003dad jmp LBB0_702 - //0x00003db2 LBB0_725 - 0x89, 0xf8, //0x00003db2 movl %edi, %eax - 0x4c, 0x29, 0xf1, //0x00003db4 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x00003db7 addq %rax, %rcx - 0x49, 0x89, 0xcb, //0x00003dba movq %rcx, %r11 - 0xe9, 0x8d, 0xff, 0xff, 0xff, //0x00003dbd jmp LBB0_715 - //0x00003dc2 LBB0_726 - 0x4c, 0x29, 0xf3, //0x00003dc2 subq %r14, %rbx - 0x41, 0x89, 0xfb, //0x00003dc5 movl %edi, %r11d - 0x49, 0x01, 0xdb, //0x00003dc8 addq %rbx, %r11 - 0xe9, 0x7f, 0xff, 0xff, 0xff, //0x00003dcb jmp LBB0_715 - //0x00003dd0 LBB0_727 - 0x48, 0x89, 0xc8, //0x00003dd0 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00003dd3 subq %r14, %rax - 0x49, 0x89, 0xc3, //0x00003dd6 movq %rax, %r11 - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00003dd9 jmp LBB0_715 - 0x90, 0x90, //0x00003dde .p2align 2, 0x90 + 0x4c, 0x89, 0xd1, //0x00003cfe movq %r10, %rcx + //0x00003d01 LBB0_708 + 0x49, 0x8b, 0x07, //0x00003d01 movq (%r15), %rax + 0x48, 0x29, 0xc8, //0x00003d04 subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00003d07 addq $-2, %rax + 0x49, 0x89, 0x07, //0x00003d0b movq %rax, (%r15) + //0x00003d0e LBB0_727 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d0e movq $-2, %rax + //0x00003d15 LBB0_728 + 0x48, 0x8d, 0x65, 0xd8, //0x00003d15 leaq $-40(%rbp), %rsp + 0x5b, //0x00003d19 popq %rbx + 0x41, 0x5c, //0x00003d1a popq %r12 + 0x41, 0x5d, //0x00003d1c popq %r13 + 0x41, 0x5e, //0x00003d1e popq %r14 + 0x41, 0x5f, //0x00003d20 popq %r15 + 0x5d, //0x00003d22 popq %rbp + 0xc5, 0xf8, 0x77, //0x00003d23 vzeroupper + 0xc3, //0x00003d26 retq + //0x00003d27 LBB0_711 + 0x49, 0x89, 0x17, //0x00003d27 movq %rdx, (%r15) + 0xe9, 0xe6, 0xff, 0xff, 0xff, //0x00003d2a jmp LBB0_728 + //0x00003d2f LBB0_709 + 0x49, 0x83, 0xff, 0xff, //0x00003d2f cmpq $-1, %r15 + 0x0f, 0x84, 0x0b, 0x01, 0x00, 0x00, //0x00003d33 je LBB0_730 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %rax + 0xe9, 0x0d, 0x01, 0x00, 0x00, //0x00003d40 jmp LBB0_704 + //0x00003d45 LBB0_712 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d45 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003d4c cmpb $97, %dl + 0x0f, 0x85, 0xc0, 0xff, 0xff, 0xff, //0x00003d4f jne LBB0_728 + 0x48, 0x8d, 0x51, 0x01, //0x00003d55 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d59 movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003d5c cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0xad, 0xff, 0xff, 0xff, //0x00003d62 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x02, //0x00003d68 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d6c movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003d6f cmpb $115, $2(%r14,%rcx) + 0x0f, 0x85, 0x9a, 0xff, 0xff, 0xff, //0x00003d75 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x03, //0x00003d7b leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d7f movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003d82 cmpb $101, $3(%r14,%rcx) + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00003d88 jne LBB0_728 + 0x48, 0x83, 0xc1, 0x04, //0x00003d8e addq $4, %rcx + 0x49, 0x89, 0x0f, //0x00003d92 movq %rcx, (%r15) + 0xe9, 0x7b, 0xff, 0xff, 0xff, //0x00003d95 jmp LBB0_728 + //0x00003d9a LBB0_270 + 0x49, 0x89, 0x07, //0x00003d9a movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003d9d cmpb $110, (%r14,%rax) + 0x0f, 0x85, 0x66, 0xff, 0xff, 0xff, //0x00003da2 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003da8 movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003dab cmpb $117, (%r14,%rcx) + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003db0 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003db6 leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dba movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003dbd cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0x45, 0xff, 0xff, 0xff, //0x00003dc3 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003dc9 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dcd movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003dd0 cmpb $108, $2(%r14,%rcx) + 0x0f, 0x84, 0x47, 0x00, 0x00, 0x00, //0x00003dd6 je LBB0_721 + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00003ddc jmp LBB0_727 + //0x00003de1 LBB0_717 + 0x49, 0x89, 0x07, //0x00003de1 movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003de4 cmpb $116, (%r14,%rax) + 0x0f, 0x85, 0x1f, 0xff, 0xff, 0xff, //0x00003de9 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003def movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003df2 cmpb $114, (%r14,%rcx) + 0x0f, 0x85, 0x11, 0xff, 0xff, 0xff, //0x00003df7 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003dfd leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e01 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003e04 cmpb $117, $1(%r14,%rcx) + 0x0f, 0x85, 0xfe, 0xfe, 0xff, 0xff, //0x00003e0a jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003e10 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e14 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003e17 cmpb $101, $2(%r14,%rcx) + 0x0f, 0x85, 0xeb, 0xfe, 0xff, 0xff, //0x00003e1d jne LBB0_727 + //0x00003e23 LBB0_721 + 0x48, 0x83, 0xc1, 0x03, //0x00003e23 addq $3, %rcx + 0x49, 0x89, 0x0f, //0x00003e27 movq %rcx, (%r15) + 0xe9, 0xdf, 0xfe, 0xff, 0xff, //0x00003e2a jmp LBB0_727 + //0x00003e2f LBB0_394 + 0x48, 0x83, 0xc0, 0xff, //0x00003e2f addq $-1, %rax + 0xe9, 0xdd, 0xfe, 0xff, 0xff, //0x00003e33 jmp LBB0_728 + //0x00003e38 LBB0_267 + 0x48, 0x83, 0xc1, 0xff, //0x00003e38 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003e3c movq %rcx, %rax + 0xe9, 0xd1, 0xfe, 0xff, 0xff, //0x00003e3f jmp LBB0_728 + //0x00003e44 LBB0_730 + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003e44 bsfq %rsi, %r15 + //0x00003e48 LBB0_731 + 0x49, 0x01, 0xc7, //0x00003e48 addq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e4b movq $-2, %rax + //0x00003e52 LBB0_704 + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00003e52 movq $8(%rsp), %rcx + 0x4c, 0x89, 0x39, //0x00003e57 movq %r15, (%rcx) + 0xe9, 0xb6, 0xfe, 0xff, 0xff, //0x00003e5a jmp LBB0_728 + //0x00003e5f LBB0_723 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003e5f movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003e66 jmp LBB0_726 + //0x00003e6b LBB0_725 + 0x4c, 0x89, 0xc1, //0x00003e6b movq %r8, %rcx + //0x00003e6e LBB0_726 + 0x48, 0xf7, 0xd1, //0x00003e6e notq %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00003e71 movq $8(%rsp), %rax + 0x48, 0x01, 0x08, //0x00003e76 addq %rcx, (%rax) + 0xe9, 0x90, 0xfe, 0xff, 0xff, //0x00003e79 jmp LBB0_727 + //0x00003e7e LBB0_732 + 0x4d, 0x89, 0xc8, //0x00003e7e movq %r9, %r8 + 0xe9, 0x45, 0xfe, 0xff, 0xff, //0x00003e81 jmp LBB0_703 + //0x00003e86 LBB0_162 + 0x48, 0x01, 0xc2, //0x00003e86 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e89 movq $-2, %rax + 0x49, 0x89, 0xd7, //0x00003e90 movq %rdx, %r15 + 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00003e93 jmp LBB0_704 + //0x00003e98 LBB0_733 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00003e98 movq $32(%rsp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003e9d movq $8(%rcx), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x08, //0x00003ea1 movq $8(%rsp), %rdx + 0x48, 0x89, 0x0a, //0x00003ea6 movq %rcx, (%rdx) + 0xe9, 0x67, 0xfe, 0xff, 0xff, //0x00003ea9 jmp LBB0_728 + //0x00003eae LBB0_734 + 0x89, 0xf9, //0x00003eae movl %edi, %ecx + 0x4c, 0x29, 0xf0, //0x00003eb0 subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00003eb3 addq %rcx, %rax + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003eb6 jmp LBB0_737 + //0x00003ebb LBB0_735 + 0x4c, 0x29, 0xf0, //0x00003ebb subq %r14, %rax + 0x41, 0x89, 0xff, //0x00003ebe movl %edi, %r15d + 0xe9, 0x82, 0xff, 0xff, 0xff, //0x00003ec1 jmp LBB0_731 + //0x00003ec6 LBB0_736 + 0x4c, 0x29, 0xf0, //0x00003ec6 subq %r14, %rax + //0x00003ec9 LBB0_737 + 0x49, 0x89, 0xc7, //0x00003ec9 movq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ecc movq $-2, %rax + 0xe9, 0x7a, 0xff, 0xff, 0xff, //0x00003ed3 jmp LBB0_704 + //0x00003ed8 .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_44, LBB0_44-LJTI0_0 - // // .set L0_0_set_63, LBB0_63-LJTI0_0 - // // .set L0_0_set_65, LBB0_65-LJTI0_0 - // // .set L0_0_set_68, LBB0_68-LJTI0_0 - //0x00003de0 LJTI0_0 - 0xf7, 0xc7, 0xff, 0xff, //0x00003de0 .long L0_0_set_38 - 0x27, 0xc8, 0xff, 0xff, //0x00003de4 .long L0_0_set_42 - 0x52, 0xc8, 0xff, 0xff, //0x00003de8 .long L0_0_set_44 - 0x9b, 0xc9, 0xff, 0xff, //0x00003dec .long L0_0_set_63 - 0xb0, 0xc9, 0xff, 0xff, //0x00003df0 .long L0_0_set_65 - 0x1a, 0xce, 0xff, 0xff, //0x00003df4 .long L0_0_set_68 - // // .set L0_1_set_711, LBB0_711-LJTI0_1 - // // .set L0_1_set_710, LBB0_710-LJTI0_1 - // // .set L0_1_set_234, LBB0_234-LJTI0_1 - // // .set L0_1_set_253, LBB0_253-LJTI0_1 - // // .set L0_1_set_70, LBB0_70-LJTI0_1 - // // .set L0_1_set_258, LBB0_258-LJTI0_1 + // // .set L0_0_set_64, LBB0_64-LJTI0_0 + // // .set L0_0_set_66, LBB0_66-LJTI0_0 + // // .set L0_0_set_69, LBB0_69-LJTI0_0 + //0x00003ed8 LJTI0_0 + 0x45, 0xc7, 0xff, 0xff, //0x00003ed8 .long L0_0_set_38 + 0x6d, 0xc7, 0xff, 0xff, //0x00003edc .long L0_0_set_42 + 0x98, 0xc7, 0xff, 0xff, //0x00003ee0 .long L0_0_set_44 + 0xe5, 0xc8, 0xff, 0xff, //0x00003ee4 .long L0_0_set_64 + 0xfc, 0xc8, 0xff, 0xff, //0x00003ee8 .long L0_0_set_66 + 0x76, 0xc9, 0xff, 0xff, //0x00003eec .long L0_0_set_69 + // // .set L0_1_set_728, LBB0_728-LJTI0_1 + // // .set L0_1_set_727, LBB0_727-LJTI0_1 + // // .set L0_1_set_238, LBB0_238-LJTI0_1 + // // .set L0_1_set_256, LBB0_256-LJTI0_1 + // // .set L0_1_set_71, LBB0_71-LJTI0_1 // // .set L0_1_set_261, LBB0_261-LJTI0_1 - // // .set L0_1_set_265, LBB0_265-LJTI0_1 - // // .set L0_1_set_271, LBB0_271-LJTI0_1 + // // .set L0_1_set_264, LBB0_264-LJTI0_1 + // // .set L0_1_set_268, LBB0_268-LJTI0_1 // // .set L0_1_set_274, LBB0_274-LJTI0_1 - //0x00003df8 LJTI0_1 - 0x9d, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_711 - 0x95, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_710 - 0x52, 0xd5, 0xff, 0xff, //0x00003e80 .long L0_1_set_234 - 0x95, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_710 - 0x97, 0xd6, 0xff, 0xff, //0x00003eac .long L0_1_set_253 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_710 - 0xcb, 0xc9, 0xff, 0xff, //0x00003eb8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ebc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ecc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003edc .long L0_1_set_70 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003efc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f60 .long L0_1_set_710 - 0xe1, 0xd6, 0xff, 0xff, //0x00003f64 .long L0_1_set_258 - 0x95, 0xfd, 0xff, 0xff, //0x00003f68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f7c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f80 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f8c .long L0_1_set_710 - 0x10, 0xd7, 0xff, 0xff, //0x00003f90 .long L0_1_set_261 - 0x95, 0xfd, 0xff, 0xff, //0x00003f94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fac .long L0_1_set_710 - 0x4b, 0xd7, 0xff, 0xff, //0x00003fb0 .long L0_1_set_265 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fbc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc4 .long L0_1_set_710 - 0x78, 0xd7, 0xff, 0xff, //0x00003fc8 .long L0_1_set_271 - 0x95, 0xfd, 0xff, 0xff, //0x00003fcc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fdc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fe0 .long L0_1_set_710 - 0xba, 0xd7, 0xff, 0xff, //0x00003fe4 .long L0_1_set_274 - // // .set L0_2_set_445, LBB0_445-LJTI0_2 - // // .set L0_2_set_467, LBB0_467-LJTI0_2 - // // .set L0_2_set_451, LBB0_451-LJTI0_2 - // // .set L0_2_set_454, LBB0_454-LJTI0_2 - //0x00003fe8 LJTI0_2 - 0x2a, 0xe4, 0xff, 0xff, //0x00003fe8 .long L0_2_set_445 - 0x9f, 0xe5, 0xff, 0xff, //0x00003fec .long L0_2_set_467 - 0x2a, 0xe4, 0xff, 0xff, //0x00003ff0 .long L0_2_set_445 - 0x72, 0xe4, 0xff, 0xff, //0x00003ff4 .long L0_2_set_451 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ff8 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ffc .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004000 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004004 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004008 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000400c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004010 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004014 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004018 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000401c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004020 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004024 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004028 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000402c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004030 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004034 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004038 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000403c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004040 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004044 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004048 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000404c .long L0_2_set_467 - 0x95, 0xe4, 0xff, 0xff, //0x00004050 .long L0_2_set_454 - // // .set L0_3_set_121, LBB0_121-LJTI0_3 - // // .set L0_3_set_278, LBB0_278-LJTI0_3 - // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_124, LBB0_124-LJTI0_3 - //0x00004054 LJTI0_3 - 0x77, 0xcb, 0xff, 0xff, //0x00004054 .long L0_3_set_121 - 0xa4, 0xd5, 0xff, 0xff, //0x00004058 .long L0_3_set_278 - 0x77, 0xcb, 0xff, 0xff, //0x0000405c .long L0_3_set_121 - 0x21, 0xcb, 0xff, 0xff, //0x00004060 .long L0_3_set_115 - 0xa4, 0xd5, 0xff, 0xff, //0x00004064 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004068 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000406c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004070 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004074 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004078 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000407c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004080 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004084 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004088 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000408c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004090 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004094 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004098 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000409c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a8 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040ac .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b8 .long L0_3_set_278 - 0x93, 0xcb, 0xff, 0xff, //0x000040bc .long L0_3_set_124 - //0x000040c0 .p2align 2, 0x00 - //0x000040c0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x000040c0 .long 2 + // // .set L0_1_set_277, LBB0_277-LJTI0_1 + //0x00003ef0 LJTI0_1 + 0x25, 0xfe, 0xff, 0xff, //0x00003ef0 .long L0_1_set_728 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003efc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f00 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f04 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f08 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f0c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f10 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f14 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f18 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f1c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f20 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f24 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f28 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f2c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f30 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f34 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f38 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f3c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f40 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f44 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f48 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f4c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f50 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f54 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f58 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f5c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f60 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f64 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f68 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f6c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f70 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f74 .long L0_1_set_727 + 0x4f, 0xd5, 0xff, 0xff, //0x00003f78 .long L0_1_set_238 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f7c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f80 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f84 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f88 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f8c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f90 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f94 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f98 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f9c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa0 .long L0_1_set_727 + 0x88, 0xd6, 0xff, 0xff, //0x00003fa4 .long L0_1_set_256 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fac .long L0_1_set_727 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fbc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fcc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd4 .long L0_1_set_71 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fd8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fdc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fec .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ffc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004000 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004004 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004008 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000400c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004010 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004014 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004018 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000401c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004020 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004024 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004028 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000402c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004030 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004034 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004038 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000403c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004040 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004044 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004048 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000404c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004050 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004054 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004058 .long L0_1_set_727 + 0xd0, 0xd6, 0xff, 0xff, //0x0000405c .long L0_1_set_261 + 0x1e, 0xfe, 0xff, 0xff, //0x00004060 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004064 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004068 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000406c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004070 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004074 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004078 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000407c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004080 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004084 .long L0_1_set_727 + 0x04, 0xd7, 0xff, 0xff, //0x00004088 .long L0_1_set_264 + 0x1e, 0xfe, 0xff, 0xff, //0x0000408c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004090 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004094 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004098 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000409c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a4 .long L0_1_set_727 + 0x42, 0xd7, 0xff, 0xff, //0x000040a8 .long L0_1_set_268 + 0x1e, 0xfe, 0xff, 0xff, //0x000040ac .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040bc .long L0_1_set_727 + 0x73, 0xd7, 0xff, 0xff, //0x000040c0 .long L0_1_set_274 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040cc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d8 .long L0_1_set_727 + 0xb4, 0xd7, 0xff, 0xff, //0x000040dc .long L0_1_set_277 + // // .set L0_2_set_463, LBB0_463-LJTI0_2 + // // .set L0_2_set_484, LBB0_484-LJTI0_2 + // // .set L0_2_set_465, LBB0_465-LJTI0_2 + // // .set L0_2_set_457, LBB0_457-LJTI0_2 + //0x000040e0 LJTI0_2 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e0 .long L0_2_set_463 + 0xdf, 0xe6, 0xff, 0xff, //0x000040e4 .long L0_2_set_484 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e8 .long L0_2_set_463 + 0x8d, 0xe5, 0xff, 0xff, //0x000040ec .long L0_2_set_465 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f0 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f4 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f8 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040fc .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004100 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004104 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004108 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000410c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004110 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004114 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004118 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000411c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004120 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004124 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004128 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000412c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004130 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004134 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004138 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000413c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004140 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004144 .long L0_2_set_484 + 0x2a, 0xe5, 0xff, 0xff, //0x00004148 .long L0_2_set_457 + // // .set L0_3_set_230, LBB0_230-LJTI0_3 + // // .set L0_3_set_281, LBB0_281-LJTI0_3 + // // .set L0_3_set_232, LBB0_232-LJTI0_3 + // // .set L0_3_set_224, LBB0_224-LJTI0_3 + //0x0000414c LJTI0_3 + 0xae, 0xd2, 0xff, 0xff, //0x0000414c .long L0_3_set_230 + 0xa2, 0xd5, 0xff, 0xff, //0x00004150 .long L0_3_set_281 + 0xae, 0xd2, 0xff, 0xff, //0x00004154 .long L0_3_set_230 + 0xc8, 0xd2, 0xff, 0xff, //0x00004158 .long L0_3_set_232 + 0xa2, 0xd5, 0xff, 0xff, //0x0000415c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004160 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004164 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004168 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000416c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004170 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004174 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004178 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000417c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004180 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004184 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004188 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000418c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004190 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004194 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004198 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000419c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a0 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a4 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a8 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041ac .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041b0 .long L0_3_set_281 + 0x66, 0xd2, 0xff, 0xff, //0x000041b4 .long L0_3_set_224 + //0x000041b8 .p2align 2, 0x00 + //0x000041b8 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x000041b8 .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_subr.go index 8ac7e1af5..8f26262b2 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_one_fast = 2824 + _size__skip_one_fast = 3052 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x32c, 176}, - {0x32d, 48}, - {0x32f, 40}, - {0x331, 32}, - {0x333, 24}, - {0x335, 16}, - {0x336, 8}, - {0x33a, 0}, - {0xb08, 176}, + {0xa8c, 176}, + {0xa8d, 48}, + {0xa8f, 40}, + {0xa91, 32}, + {0xa93, 24}, + {0xa95, 16}, + {0xa96, 8}, + {0xa9a, 0}, + {0xbec, 176}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_text_amd64.go index afc561827..94b81acbe 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_fast_text_amd64.go @@ -80,9 +80,9 @@ var _text_skip_one_fast = []byte{ 0x53, //0x0000015c pushq %rbx 0x48, 0x81, 0xec, 0x80, 0x00, 0x00, 0x00, //0x0000015d subq $128, %rsp 0x4c, 0x8b, 0x37, //0x00000164 movq (%rdi), %r14 - 0x48, 0x8b, 0x5f, 0x08, //0x00000167 movq $8(%rdi), %rbx + 0x48, 0x8b, 0x57, 0x08, //0x00000167 movq $8(%rdi), %rdx 0x48, 0x8b, 0x06, //0x0000016b movq (%rsi), %rax - 0x48, 0x39, 0xd8, //0x0000016e cmpq %rbx, %rax + 0x48, 0x39, 0xd0, //0x0000016e cmpq %rdx, %rax 0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x00000171 jae LBB0_5 0x41, 0x8a, 0x0c, 0x06, //0x00000177 movb (%r14,%rax), %cl 0x80, 0xf9, 0x0d, //0x0000017b cmpb $13, %cl @@ -93,55 +93,55 @@ var _text_skip_one_fast = []byte{ 0x80, 0xf9, 0x01, //0x00000190 cmpb $1, %cl 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00000193 jbe LBB0_5 0x48, 0x89, 0xc1, //0x00000199 movq %rax, %rcx - 0xe9, 0x7f, 0x01, 0x00, 0x00, //0x0000019c jmp LBB0_35 + 0xe9, 0x7f, 0x01, 0x00, 0x00, //0x0000019c jmp LBB0_31 //0x000001a1 LBB0_5 0x48, 0x8d, 0x48, 0x01, //0x000001a1 leaq $1(%rax), %rcx - 0x48, 0x39, 0xd9, //0x000001a5 cmpq %rbx, %rcx + 0x48, 0x39, 0xd1, //0x000001a5 cmpq %rdx, %rcx 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x000001a8 jae LBB0_9 - 0x41, 0x8a, 0x14, 0x0e, //0x000001ae movb (%r14,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x000001b2 cmpb $13, %dl + 0x41, 0x8a, 0x1c, 0x0e, //0x000001ae movb (%r14,%rcx), %bl + 0x80, 0xfb, 0x0d, //0x000001b2 cmpb $13, %bl 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000001b5 je LBB0_9 - 0x80, 0xfa, 0x20, //0x000001bb cmpb $32, %dl + 0x80, 0xfb, 0x20, //0x000001bb cmpb $32, %bl 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000001be je LBB0_9 - 0x80, 0xc2, 0xf7, //0x000001c4 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000001c7 cmpb $1, %dl - 0x0f, 0x87, 0x50, 0x01, 0x00, 0x00, //0x000001ca ja LBB0_35 + 0x80, 0xc3, 0xf7, //0x000001c4 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000001c7 cmpb $1, %bl + 0x0f, 0x87, 0x50, 0x01, 0x00, 0x00, //0x000001ca ja LBB0_31 //0x000001d0 LBB0_9 0x48, 0x8d, 0x48, 0x02, //0x000001d0 leaq $2(%rax), %rcx - 0x48, 0x39, 0xd9, //0x000001d4 cmpq %rbx, %rcx + 0x48, 0x39, 0xd1, //0x000001d4 cmpq %rdx, %rcx 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x000001d7 jae LBB0_13 - 0x41, 0x8a, 0x14, 0x0e, //0x000001dd movb (%r14,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x000001e1 cmpb $13, %dl + 0x41, 0x8a, 0x1c, 0x0e, //0x000001dd movb (%r14,%rcx), %bl + 0x80, 0xfb, 0x0d, //0x000001e1 cmpb $13, %bl 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000001e4 je LBB0_13 - 0x80, 0xfa, 0x20, //0x000001ea cmpb $32, %dl + 0x80, 0xfb, 0x20, //0x000001ea cmpb $32, %bl 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000001ed je LBB0_13 - 0x80, 0xc2, 0xf7, //0x000001f3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000001f6 cmpb $1, %dl - 0x0f, 0x87, 0x21, 0x01, 0x00, 0x00, //0x000001f9 ja LBB0_35 + 0x80, 0xc3, 0xf7, //0x000001f3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000001f6 cmpb $1, %bl + 0x0f, 0x87, 0x21, 0x01, 0x00, 0x00, //0x000001f9 ja LBB0_31 //0x000001ff LBB0_13 0x48, 0x8d, 0x48, 0x03, //0x000001ff leaq $3(%rax), %rcx - 0x48, 0x39, 0xd9, //0x00000203 cmpq %rbx, %rcx + 0x48, 0x39, 0xd1, //0x00000203 cmpq %rdx, %rcx 0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00000206 jae LBB0_17 - 0x41, 0x8a, 0x14, 0x0e, //0x0000020c movb (%r14,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x00000210 cmpb $13, %dl + 0x41, 0x8a, 0x1c, 0x0e, //0x0000020c movb (%r14,%rcx), %bl + 0x80, 0xfb, 0x0d, //0x00000210 cmpb $13, %bl 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000213 je LBB0_17 - 0x80, 0xfa, 0x20, //0x00000219 cmpb $32, %dl + 0x80, 0xfb, 0x20, //0x00000219 cmpb $32, %bl 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000021c je LBB0_17 - 0x80, 0xc2, 0xf7, //0x00000222 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000225 cmpb $1, %dl - 0x0f, 0x87, 0xf2, 0x00, 0x00, 0x00, //0x00000228 ja LBB0_35 + 0x80, 0xc3, 0xf7, //0x00000222 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000225 cmpb $1, %bl + 0x0f, 0x87, 0xf2, 0x00, 0x00, 0x00, //0x00000228 ja LBB0_31 //0x0000022e LBB0_17 0x48, 0x8d, 0x48, 0x04, //0x0000022e leaq $4(%rax), %rcx - 0x48, 0x89, 0xda, //0x00000232 movq %rbx, %rdx - 0x48, 0x29, 0xca, //0x00000235 subq %rcx, %rdx - 0x0f, 0x86, 0xbb, 0x00, 0x00, 0x00, //0x00000238 jbe LBB0_18 - 0x48, 0x83, 0xfa, 0x20, //0x0000023e cmpq $32, %rdx - 0x0f, 0x82, 0xa8, 0x09, 0x00, 0x00, //0x00000242 jb LBB0_20 - 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x00000248 movq $-4, %rdx - 0x48, 0x29, 0xc2, //0x0000024f subq %rax, %rdx + 0x48, 0x89, 0xd3, //0x00000232 movq %rdx, %rbx + 0x48, 0x29, 0xcb, //0x00000235 subq %rcx, %rbx + 0x0f, 0x86, 0xbb, 0x00, 0x00, 0x00, //0x00000238 jbe LBB0_29 + 0x48, 0x83, 0xfb, 0x20, //0x0000023e cmpq $32, %rbx + 0x0f, 0x82, 0x97, 0x0a, 0x00, 0x00, //0x00000242 jb LBB0_135 + 0x48, 0xc7, 0xc3, 0xfc, 0xff, 0xff, 0xff, //0x00000248 movq $-4, %rbx + 0x48, 0x29, 0xc3, //0x0000024f subq %rax, %rbx 0xc5, 0xfe, 0x6f, 0x05, 0xa6, 0xfd, 0xff, 0xff, //0x00000252 vmovdqu $-602(%rip), %ymm0 /* LCPI0_0+0(%rip) */ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000025a .p2align 4, 0x90 - //0x00000260 LBB0_29 + //0x00000260 LBB0_20 0xc4, 0xc1, 0x7e, 0x6f, 0x0c, 0x0e, //0x00000260 vmovdqu (%r14,%rcx), %ymm1 0xc4, 0xe2, 0x7d, 0x00, 0xd1, //0x00000266 vpshufb %ymm1, %ymm0, %ymm2 0xc5, 0xf5, 0x74, 0xca, //0x0000026b vpcmpeqb %ymm2, %ymm1, %ymm1 @@ -149,808 +149,855 @@ var _text_skip_one_fast = []byte{ 0x83, 0xf8, 0xff, //0x00000273 cmpl $-1, %eax 0x0f, 0x85, 0x8c, 0x00, 0x00, 0x00, //0x00000276 jne LBB0_30 0x48, 0x83, 0xc1, 0x20, //0x0000027c addq $32, %rcx - 0x48, 0x8d, 0x04, 0x13, //0x00000280 leaq (%rbx,%rdx), %rax + 0x48, 0x8d, 0x04, 0x1a, //0x00000280 leaq (%rdx,%rbx), %rax 0x48, 0x83, 0xc0, 0xe0, //0x00000284 addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00000288 addq $-32, %rdx + 0x48, 0x83, 0xc3, 0xe0, //0x00000288 addq $-32, %rbx 0x48, 0x83, 0xf8, 0x1f, //0x0000028c cmpq $31, %rax - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000290 ja LBB0_29 + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000290 ja LBB0_20 0x4c, 0x89, 0xf1, //0x00000296 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00000299 subq %rdx, %rcx - 0x48, 0x01, 0xda, //0x0000029c addq %rbx, %rdx - 0x48, 0x85, 0xd2, //0x0000029f testq %rdx, %rdx - 0x0f, 0x84, 0x39, 0x00, 0x00, 0x00, //0x000002a2 je LBB0_33 - //0x000002a8 LBB0_24 - 0x4c, 0x8d, 0x04, 0x11, //0x000002a8 leaq (%rcx,%rdx), %r8 + 0x48, 0x29, 0xd9, //0x00000299 subq %rbx, %rcx + 0x48, 0x01, 0xd3, //0x0000029c addq %rdx, %rbx + 0x48, 0x85, 0xdb, //0x0000029f testq %rbx, %rbx + 0x0f, 0x84, 0x39, 0x00, 0x00, 0x00, //0x000002a2 je LBB0_28 + //0x000002a8 LBB0_23 + 0x4c, 0x8d, 0x04, 0x19, //0x000002a8 leaq (%rcx,%rbx), %r8 0x45, 0x31, 0xd2, //0x000002ac xorl %r10d, %r10d 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000002af movabsq $4294977024, %r9 - //0x000002b9 LBB0_25 + //0x000002b9 LBB0_24 0x42, 0x0f, 0xbe, 0x04, 0x11, //0x000002b9 movsbl (%rcx,%r10), %eax 0x83, 0xf8, 0x20, //0x000002be cmpl $32, %eax - 0x0f, 0x87, 0x02, 0x09, 0x00, 0x00, //0x000002c1 ja LBB0_27 + 0x0f, 0x87, 0xee, 0x09, 0x00, 0x00, //0x000002c1 ja LBB0_133 0x49, 0x0f, 0xa3, 0xc1, //0x000002c7 btq %rax, %r9 - 0x0f, 0x83, 0xf8, 0x08, 0x00, 0x00, //0x000002cb jae LBB0_27 + 0x0f, 0x83, 0xe4, 0x09, 0x00, 0x00, //0x000002cb jae LBB0_133 0x49, 0x83, 0xc2, 0x01, //0x000002d1 addq $1, %r10 - 0x4c, 0x39, 0xd2, //0x000002d5 cmpq %r10, %rdx - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002d8 jne LBB0_25 + 0x4c, 0x39, 0xd3, //0x000002d5 cmpq %r10, %rbx + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002d8 jne LBB0_24 0x4c, 0x89, 0xc1, //0x000002de movq %r8, %rcx - //0x000002e1 LBB0_33 + //0x000002e1 LBB0_28 0x4c, 0x29, 0xf1, //0x000002e1 subq %r14, %rcx 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000002e4 movq $-1, %rax - 0x48, 0x39, 0xd9, //0x000002eb cmpq %rbx, %rcx - 0x0f, 0x82, 0x2c, 0x00, 0x00, 0x00, //0x000002ee jb LBB0_35 - 0xe9, 0x7f, 0x01, 0x00, 0x00, //0x000002f4 jmp LBB0_138 - //0x000002f9 LBB0_18 + 0x48, 0x39, 0xd1, //0x000002eb cmpq %rdx, %rcx + 0x0f, 0x82, 0x2c, 0x00, 0x00, 0x00, //0x000002ee jb LBB0_31 + 0xe9, 0xdf, 0x08, 0x00, 0x00, //0x000002f4 jmp LBB0_96 + //0x000002f9 LBB0_29 0x48, 0x89, 0x0e, //0x000002f9 movq %rcx, (%rsi) 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000002fc movq $-1, %rax - 0xe9, 0x70, 0x01, 0x00, 0x00, //0x00000303 jmp LBB0_138 + 0xe9, 0xd0, 0x08, 0x00, 0x00, //0x00000303 jmp LBB0_96 //0x00000308 LBB0_30 0xf7, 0xd0, //0x00000308 notl %eax 0x0f, 0xbc, 0xc8, //0x0000030a bsfl %eax, %ecx - 0x48, 0x29, 0xd1, //0x0000030d subq %rdx, %rcx + 0x48, 0x29, 0xd9, //0x0000030d subq %rbx, %rcx 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000310 movq $-1, %rax - 0x48, 0x39, 0xd9, //0x00000317 cmpq %rbx, %rcx - 0x0f, 0x83, 0x58, 0x01, 0x00, 0x00, //0x0000031a jae LBB0_138 - //0x00000320 LBB0_35 - 0x48, 0x8d, 0x51, 0x01, //0x00000320 leaq $1(%rcx), %rdx - 0x48, 0x89, 0x16, //0x00000324 movq %rdx, (%rsi) - 0x41, 0x0f, 0xbe, 0x1c, 0x0e, //0x00000327 movsbl (%r14,%rcx), %ebx - 0x83, 0xfb, 0x7b, //0x0000032c cmpl $123, %ebx - 0x0f, 0x87, 0x68, 0x01, 0x00, 0x00, //0x0000032f ja LBB0_134 + 0x48, 0x39, 0xd1, //0x00000317 cmpq %rdx, %rcx + 0x0f, 0x83, 0xb8, 0x08, 0x00, 0x00, //0x0000031a jae LBB0_96 + //0x00000320 LBB0_31 + 0x4c, 0x8d, 0x79, 0x01, //0x00000320 leaq $1(%rcx), %r15 + 0x4c, 0x89, 0x3e, //0x00000324 movq %r15, (%rsi) + 0x41, 0x0f, 0xbe, 0x14, 0x0e, //0x00000327 movsbl (%r14,%rcx), %edx + 0x83, 0xfa, 0x7b, //0x0000032c cmpl $123, %edx + 0x0f, 0x87, 0xc3, 0x01, 0x00, 0x00, //0x0000032f ja LBB0_57 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000335 movq $-1, %rax - 0x4c, 0x8d, 0x05, 0x15, 0x09, 0x00, 0x00, //0x0000033c leaq $2325(%rip), %r8 /* LJTI0_0+0(%rip) */ - 0x49, 0x63, 0x1c, 0x98, //0x00000343 movslq (%r8,%rbx,4), %rbx - 0x4c, 0x01, 0xc3, //0x00000347 addq %r8, %rbx - 0xff, 0xe3, //0x0000034a jmpq *%rbx - //0x0000034c LBB0_110 - 0x48, 0x8b, 0x7f, 0x08, //0x0000034c movq $8(%rdi), %rdi - 0x48, 0x89, 0xf8, //0x00000350 movq %rdi, %rax - 0x48, 0x29, 0xd0, //0x00000353 subq %rdx, %rax - 0x48, 0x83, 0xf8, 0x20, //0x00000356 cmpq $32, %rax - 0x0f, 0x82, 0xa1, 0x08, 0x00, 0x00, //0x0000035a jb LBB0_111 - 0x48, 0x89, 0xc8, //0x00000360 movq %rcx, %rax - 0x48, 0xf7, 0xd0, //0x00000363 notq %rax - 0xc5, 0xfe, 0x6f, 0x05, 0xb2, 0xfc, 0xff, 0xff, //0x00000366 vmovdqu $-846(%rip), %ymm0 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xca, 0xfc, 0xff, 0xff, //0x0000036e vmovdqu $-822(%rip), %ymm1 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x15, 0xe2, 0xfc, 0xff, 0xff, //0x00000376 vmovdqu $-798(%rip), %ymm2 /* LCPI0_3+0(%rip) */ - 0x90, 0x90, //0x0000037e .p2align 4, 0x90 - //0x00000380 LBB0_119 - 0xc4, 0xc1, 0x7e, 0x6f, 0x1c, 0x16, //0x00000380 vmovdqu (%r14,%rdx), %ymm3 + 0x48, 0x8d, 0x1d, 0xf9, 0x09, 0x00, 0x00, //0x0000033c leaq $2553(%rip), %rbx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x14, 0x93, //0x00000343 movslq (%rbx,%rdx,4), %rdx + 0x48, 0x01, 0xda, //0x00000347 addq %rbx, %rdx + 0xff, 0xe2, //0x0000034a jmpq *%rdx + //0x0000034c LBB0_33 + 0x48, 0x8b, 0x47, 0x08, //0x0000034c movq $8(%rdi), %rax + 0x4c, 0x29, 0xf8, //0x00000350 subq %r15, %rax + 0x48, 0x83, 0xf8, 0x20, //0x00000353 cmpq $32, %rax + 0x0f, 0x82, 0x93, 0x09, 0x00, 0x00, //0x00000357 jb LBB0_136 + 0x31, 0xff, //0x0000035d xorl %edi, %edi + 0xc5, 0xfe, 0x6f, 0x05, 0xb9, 0xfc, 0xff, 0xff, //0x0000035f vmovdqu $-839(%rip), %ymm0 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0xd1, 0xfc, 0xff, 0xff, //0x00000367 vmovdqu $-815(%rip), %ymm1 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x15, 0xe9, 0xfc, 0xff, 0xff, //0x0000036f vmovdqu $-791(%rip), %ymm2 /* LCPI0_3+0(%rip) */ + 0x4c, 0x89, 0xf2, //0x00000377 movq %r14, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000037a .p2align 4, 0x90 + //0x00000380 LBB0_35 + 0xc5, 0xfe, 0x6f, 0x5c, 0x0a, 0x01, //0x00000380 vmovdqu $1(%rdx,%rcx), %ymm3 0xc5, 0xe5, 0x74, 0xe0, //0x00000386 vpcmpeqb %ymm0, %ymm3, %ymm4 0xc5, 0xe5, 0xdb, 0xd9, //0x0000038a vpand %ymm1, %ymm3, %ymm3 0xc5, 0xe5, 0x74, 0xda, //0x0000038e vpcmpeqb %ymm2, %ymm3, %ymm3 0xc5, 0xe5, 0xeb, 0xdc, //0x00000392 vpor %ymm4, %ymm3, %ymm3 0xc5, 0xfd, 0xd7, 0xdb, //0x00000396 vpmovmskb %ymm3, %ebx 0x85, 0xdb, //0x0000039a testl %ebx, %ebx - 0x0f, 0x85, 0xca, 0x00, 0x00, 0x00, //0x0000039c jne LBB0_120 + 0x0f, 0x85, 0xe1, 0x00, 0x00, 0x00, //0x0000039c jne LBB0_51 0x48, 0x83, 0xc2, 0x20, //0x000003a2 addq $32, %rdx - 0x48, 0x8d, 0x1c, 0x07, //0x000003a6 leaq (%rdi,%rax), %rbx + 0x48, 0x8d, 0x1c, 0x38, //0x000003a6 leaq (%rax,%rdi), %rbx 0x48, 0x83, 0xc3, 0xe0, //0x000003aa addq $-32, %rbx - 0x48, 0x83, 0xc0, 0xe0, //0x000003ae addq $-32, %rax + 0x48, 0x83, 0xc7, 0xe0, //0x000003ae addq $-32, %rdi 0x48, 0x83, 0xfb, 0x1f, //0x000003b2 cmpq $31, %rbx - 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x000003b6 ja LBB0_119 - 0x4c, 0x89, 0xf2, //0x000003bc movq %r14, %rdx - 0x48, 0x29, 0xc2, //0x000003bf subq %rax, %rdx - 0x48, 0x01, 0xc7, //0x000003c2 addq %rax, %rdi - 0x48, 0x89, 0xf8, //0x000003c5 movq %rdi, %rax - 0x48, 0x83, 0xf8, 0x10, //0x000003c8 cmpq $16, %rax - 0x0f, 0x82, 0x54, 0x00, 0x00, 0x00, //0x000003cc jb LBB0_122 - //0x000003d2 LBB0_115 - 0x4c, 0x89, 0xf7, //0x000003d2 movq %r14, %rdi - 0x48, 0x29, 0xd7, //0x000003d5 subq %rdx, %rdi - 0xc5, 0xfa, 0x6f, 0x05, 0x40, 0xfd, 0xff, 0xff, //0x000003d8 vmovdqu $-704(%rip), %xmm0 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x0d, 0x48, 0xfd, 0xff, 0xff, //0x000003e0 vmovdqu $-696(%rip), %xmm1 /* LCPI0_5+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x50, 0xfd, 0xff, 0xff, //0x000003e8 vmovdqu $-688(%rip), %xmm2 /* LCPI0_6+0(%rip) */ - //0x000003f0 LBB0_116 - 0xc5, 0xfa, 0x6f, 0x1a, //0x000003f0 vmovdqu (%rdx), %xmm3 - 0xc5, 0xe1, 0x74, 0xe0, //0x000003f4 vpcmpeqb %xmm0, %xmm3, %xmm4 - 0xc5, 0xe1, 0xdb, 0xd9, //0x000003f8 vpand %xmm1, %xmm3, %xmm3 - 0xc5, 0xe1, 0x74, 0xda, //0x000003fc vpcmpeqb %xmm2, %xmm3, %xmm3 - 0xc5, 0xe1, 0xeb, 0xdc, //0x00000400 vpor %xmm4, %xmm3, %xmm3 - 0xc5, 0xf9, 0xd7, 0xdb, //0x00000404 vpmovmskb %xmm3, %ebx - 0x85, 0xdb, //0x00000408 testl %ebx, %ebx - 0x0f, 0x85, 0xa7, 0x07, 0x00, 0x00, //0x0000040a jne LBB0_117 - 0x48, 0x83, 0xc2, 0x10, //0x00000410 addq $16, %rdx - 0x48, 0x83, 0xc0, 0xf0, //0x00000414 addq $-16, %rax - 0x48, 0x83, 0xc7, 0xf0, //0x00000418 addq $-16, %rdi - 0x48, 0x83, 0xf8, 0x0f, //0x0000041c cmpq $15, %rax - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000420 ja LBB0_116 - //0x00000426 LBB0_122 + 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x000003b6 ja LBB0_35 + 0x4c, 0x8d, 0x3c, 0x0a, //0x000003bc leaq (%rdx,%rcx), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000003c0 addq $1, %r15 + 0x48, 0x01, 0xf8, //0x000003c4 addq %rdi, %rax + 0x48, 0x83, 0xf8, 0x10, //0x000003c7 cmpq $16, %rax + 0x0f, 0x82, 0x55, 0x00, 0x00, 0x00, //0x000003cb jb LBB0_42 + //0x000003d1 LBB0_38 + 0x4d, 0x8d, 0x4f, 0xff, //0x000003d1 leaq $-1(%r15), %r9 + 0x31, 0xff, //0x000003d5 xorl %edi, %edi + 0xc5, 0xfa, 0x6f, 0x05, 0x41, 0xfd, 0xff, 0xff, //0x000003d7 vmovdqu $-703(%rip), %xmm0 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x0d, 0x49, 0xfd, 0xff, 0xff, //0x000003df vmovdqu $-695(%rip), %xmm1 /* LCPI0_5+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x51, 0xfd, 0xff, 0xff, //0x000003e7 vmovdqu $-687(%rip), %xmm2 /* LCPI0_6+0(%rip) */ + //0x000003ef LBB0_39 + 0xc4, 0xc1, 0x7a, 0x6f, 0x1c, 0x3f, //0x000003ef vmovdqu (%r15,%rdi), %xmm3 + 0xc5, 0xe1, 0x74, 0xe0, //0x000003f5 vpcmpeqb %xmm0, %xmm3, %xmm4 + 0xc5, 0xe1, 0xdb, 0xd9, //0x000003f9 vpand %xmm1, %xmm3, %xmm3 + 0xc5, 0xe1, 0x74, 0xda, //0x000003fd vpcmpeqb %xmm2, %xmm3, %xmm3 + 0xc5, 0xe1, 0xeb, 0xdc, //0x00000401 vpor %xmm4, %xmm3, %xmm3 + 0xc5, 0xf9, 0xd7, 0xd3, //0x00000405 vpmovmskb %xmm3, %edx + 0x85, 0xd2, //0x00000409 testl %edx, %edx + 0x0f, 0x85, 0x30, 0x08, 0x00, 0x00, //0x0000040b jne LBB0_128 + 0x48, 0x83, 0xc0, 0xf0, //0x00000411 addq $-16, %rax + 0x48, 0x83, 0xc7, 0x10, //0x00000415 addq $16, %rdi + 0x48, 0x83, 0xf8, 0x0f, //0x00000419 cmpq $15, %rax + 0x0f, 0x87, 0xcc, 0xff, 0xff, 0xff, //0x0000041d ja LBB0_39 + 0x49, 0x01, 0xff, //0x00000423 addq %rdi, %r15 + //0x00000426 LBB0_42 0x48, 0x85, 0xc0, //0x00000426 testq %rax, %rax - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000429 je LBB0_130 - 0x4c, 0x8d, 0x04, 0x02, //0x0000042f leaq (%rdx,%rax), %r8 - 0x31, 0xff, //0x00000433 xorl %edi, %edi - //0x00000435 LBB0_124 - 0x0f, 0xb6, 0x1c, 0x3a, //0x00000435 movzbl (%rdx,%rdi), %ebx - 0x80, 0xfb, 0x2c, //0x00000439 cmpb $44, %bl - 0x0f, 0x84, 0xd1, 0x07, 0x00, 0x00, //0x0000043c je LBB0_127 - 0x80, 0xfb, 0x7d, //0x00000442 cmpb $125, %bl - 0x0f, 0x84, 0xc8, 0x07, 0x00, 0x00, //0x00000445 je LBB0_127 - 0x80, 0xfb, 0x5d, //0x0000044b cmpb $93, %bl - 0x0f, 0x84, 0xbf, 0x07, 0x00, 0x00, //0x0000044e je LBB0_127 - 0x48, 0x83, 0xc7, 0x01, //0x00000454 addq $1, %rdi - 0x48, 0x39, 0xf8, //0x00000458 cmpq %rdi, %rax - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x0000045b jne LBB0_124 - 0x4c, 0x89, 0xc2, //0x00000461 movq %r8, %rdx - //0x00000464 LBB0_130 - 0x4c, 0x29, 0xf2, //0x00000464 subq %r14, %rdx - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00000467 jmp LBB0_136 - //0x0000046c LBB0_120 - 0x0f, 0xbc, 0xd3, //0x0000046c bsfl %ebx, %edx - 0x48, 0x29, 0xc2, //0x0000046f subq %rax, %rdx - //0x00000472 LBB0_136 - 0x48, 0x89, 0x16, //0x00000472 movq %rdx, (%rsi) - //0x00000475 LBB0_137 - 0x48, 0x89, 0xc8, //0x00000475 movq %rcx, %rax - //0x00000478 LBB0_138 - 0x48, 0x8d, 0x65, 0xd8, //0x00000478 leaq $-40(%rbp), %rsp - 0x5b, //0x0000047c popq %rbx - 0x41, 0x5c, //0x0000047d popq %r12 - 0x41, 0x5d, //0x0000047f popq %r13 - 0x41, 0x5e, //0x00000481 popq %r14 - 0x41, 0x5f, //0x00000483 popq %r15 - 0x5d, //0x00000485 popq %rbp - 0xc5, 0xf8, 0x77, //0x00000486 vzeroupper - 0xc3, //0x00000489 retq - //0x0000048a LBB0_131 - 0x48, 0x8d, 0x51, 0x04, //0x0000048a leaq $4(%rcx), %rdx - 0x48, 0x3b, 0x57, 0x08, //0x0000048e cmpq $8(%rdi), %rdx - 0x0f, 0x86, 0xda, 0xff, 0xff, 0xff, //0x00000492 jbe LBB0_136 - 0xe9, 0xdb, 0xff, 0xff, 0xff, //0x00000498 jmp LBB0_138 - //0x0000049d LBB0_134 - 0x48, 0x89, 0x0e, //0x0000049d movq %rcx, (%rsi) - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000004a0 movq $-2, %rax - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x000004a7 jmp LBB0_138 - //0x000004ac LBB0_89 - 0x4c, 0x8b, 0x47, 0x08, //0x000004ac movq $8(%rdi), %r8 - 0x4d, 0x89, 0xc3, //0x000004b0 movq %r8, %r11 - 0x49, 0x29, 0xd3, //0x000004b3 subq %rdx, %r11 - 0x49, 0x83, 0xfb, 0x20, //0x000004b6 cmpq $32, %r11 - 0x0f, 0x8c, 0x5e, 0x07, 0x00, 0x00, //0x000004ba jl LBB0_90 - 0x4d, 0x8d, 0x0c, 0x0e, //0x000004c0 leaq (%r14,%rcx), %r9 - 0x49, 0x29, 0xc8, //0x000004c4 subq %rcx, %r8 - 0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x000004c7 movl $31, %r13d - 0x45, 0x31, 0xdb, //0x000004cd xorl %r11d, %r11d - 0xc5, 0xfe, 0x6f, 0x05, 0xa8, 0xfb, 0xff, 0xff, //0x000004d0 vmovdqu $-1112(%rip), %ymm0 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xc0, 0xfb, 0xff, 0xff, //0x000004d8 vmovdqu $-1088(%rip), %ymm1 /* LCPI0_8+0(%rip) */ - 0x45, 0x31, 0xff, //0x000004e0 xorl %r15d, %r15d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004e3 .p2align 4, 0x90 - //0x000004f0 LBB0_92 - 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x19, 0x01, //0x000004f0 vmovdqu $1(%r9,%r11), %ymm2 - 0xc5, 0xed, 0x74, 0xd8, //0x000004f7 vpcmpeqb %ymm0, %ymm2, %ymm3 - 0xc5, 0x7d, 0xd7, 0xd3, //0x000004fb vpmovmskb %ymm3, %r10d - 0xc5, 0xed, 0x74, 0xd1, //0x000004ff vpcmpeqb %ymm1, %ymm2, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00000503 vpmovmskb %ymm2, %edi - 0x85, 0xff, //0x00000507 testl %edi, %edi - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00000509 jne LBB0_95 - 0x4d, 0x85, 0xff, //0x0000050f testq %r15, %r15 - 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00000512 jne LBB0_95 - 0x45, 0x31, 0xff, //0x00000518 xorl %r15d, %r15d - 0xe9, 0x34, 0x00, 0x00, 0x00, //0x0000051b jmp LBB0_96 - //0x00000520 .p2align 4, 0x90 - //0x00000520 LBB0_95 - 0x44, 0x89, 0xfb, //0x00000520 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000523 notl %ebx - 0x21, 0xfb, //0x00000525 andl %edi, %ebx - 0x44, 0x8d, 0x24, 0x1b, //0x00000527 leal (%rbx,%rbx), %r12d - 0x45, 0x09, 0xfc, //0x0000052b orl %r15d, %r12d - 0x44, 0x89, 0xe2, //0x0000052e movl %r12d, %edx - 0xf7, 0xd2, //0x00000531 notl %edx - 0x21, 0xfa, //0x00000533 andl %edi, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000535 andl $-1431655766, %edx + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00000429 je LBB0_50 + 0x4d, 0x8d, 0x04, 0x07, //0x0000042f leaq (%r15,%rax), %r8 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000433 movabsq $17596481021440, %rdi + //0x0000043d LBB0_44 + 0x41, 0x0f, 0xb6, 0x17, //0x0000043d movzbl (%r15), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000441 cmpq $44, %rdx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000445 ja LBB0_46 + 0x48, 0x0f, 0xa3, 0xd7, //0x0000044b btq %rdx, %rdi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x0000044f jb LBB0_50 + //0x00000455 LBB0_46 + 0x80, 0xfa, 0x5d, //0x00000455 cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000458 je LBB0_50 + 0x80, 0xfa, 0x7d, //0x0000045e cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000461 je LBB0_50 + 0x49, 0x83, 0xc7, 0x01, //0x00000467 addq $1, %r15 + 0x48, 0x83, 0xc0, 0xff, //0x0000046b addq $-1, %rax + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x0000046f jne LBB0_44 + 0x4d, 0x89, 0xc7, //0x00000475 movq %r8, %r15 + //0x00000478 LBB0_50 + 0x4d, 0x29, 0xf7, //0x00000478 subq %r14, %r15 + 0x4c, 0x89, 0x3e, //0x0000047b movq %r15, (%rsi) + 0xe9, 0x52, 0x07, 0x00, 0x00, //0x0000047e jmp LBB0_95 + //0x00000483 LBB0_51 + 0x0f, 0xbc, 0xdb, //0x00000483 bsfl %ebx, %ebx + 0x48, 0x01, 0xcb, //0x00000486 addq %rcx, %rbx + 0x48, 0x89, 0xd8, //0x00000489 movq %rbx, %rax + 0x48, 0x29, 0xf8, //0x0000048c subq %rdi, %rax + 0x48, 0x8d, 0x78, 0x01, //0x0000048f leaq $1(%rax), %rdi + 0x48, 0x89, 0x3e, //0x00000493 movq %rdi, (%rsi) + 0x48, 0x85, 0xff, //0x00000496 testq %rdi, %rdi + 0x0f, 0x8e, 0x36, 0x07, 0x00, 0x00, //0x00000499 jle LBB0_95 + 0x48, 0x8d, 0x78, 0x02, //0x0000049f leaq $2(%rax), %rdi + 0x48, 0x01, 0xda, //0x000004a3 addq %rbx, %rdx + 0x49, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000004a6 movabsq $4294977024, %r8 + //0x000004b0 .p2align 4, 0x90 + //0x000004b0 LBB0_53 + 0x0f, 0xb6, 0x1a, //0x000004b0 movzbl (%rdx), %ebx + 0x48, 0x83, 0xfb, 0x20, //0x000004b3 cmpq $32, %rbx + 0x0f, 0x87, 0x18, 0x07, 0x00, 0x00, //0x000004b7 ja LBB0_95 + 0x49, 0x0f, 0xa3, 0xd8, //0x000004bd btq %rbx, %r8 + 0x0f, 0x83, 0x0e, 0x07, 0x00, 0x00, //0x000004c1 jae LBB0_95 + 0x48, 0x89, 0x06, //0x000004c7 movq %rax, (%rsi) + 0x48, 0x83, 0xc7, 0xff, //0x000004ca addq $-1, %rdi + 0x48, 0x83, 0xc0, 0xff, //0x000004ce addq $-1, %rax + 0x48, 0x83, 0xc2, 0xff, //0x000004d2 addq $-1, %rdx + 0x48, 0x83, 0xff, 0x01, //0x000004d6 cmpq $1, %rdi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000004da jg LBB0_53 + 0xe9, 0xf0, 0x06, 0x00, 0x00, //0x000004e0 jmp LBB0_95 + //0x000004e5 LBB0_56 + 0x48, 0x8d, 0x51, 0x04, //0x000004e5 leaq $4(%rcx), %rdx + 0x48, 0x3b, 0x57, 0x08, //0x000004e9 cmpq $8(%rdi), %rdx + 0x0f, 0x86, 0xca, 0x03, 0x00, 0x00, //0x000004ed jbe LBB0_94 + 0xe9, 0xe0, 0x06, 0x00, 0x00, //0x000004f3 jmp LBB0_96 + //0x000004f8 LBB0_57 + 0x48, 0x89, 0x0e, //0x000004f8 movq %rcx, (%rsi) + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000004fb movq $-2, %rax + 0xe9, 0xd1, 0x06, 0x00, 0x00, //0x00000502 jmp LBB0_96 + //0x00000507 LBB0_58 + 0x4c, 0x8b, 0x47, 0x08, //0x00000507 movq $8(%rdi), %r8 + 0x4d, 0x89, 0xc3, //0x0000050b movq %r8, %r11 + 0x4d, 0x29, 0xfb, //0x0000050e subq %r15, %r11 + 0x49, 0x83, 0xfb, 0x20, //0x00000511 cmpq $32, %r11 + 0x0f, 0x8c, 0xe7, 0x07, 0x00, 0x00, //0x00000515 jl LBB0_137 + 0x4d, 0x8d, 0x0c, 0x0e, //0x0000051b leaq (%r14,%rcx), %r9 + 0x49, 0x29, 0xc8, //0x0000051f subq %rcx, %r8 + 0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x00000522 movl $31, %r13d + 0x45, 0x31, 0xdb, //0x00000528 xorl %r11d, %r11d + 0xc5, 0xfe, 0x6f, 0x05, 0x4d, 0xfb, 0xff, 0xff, //0x0000052b vmovdqu $-1203(%rip), %ymm0 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x65, 0xfb, 0xff, 0xff, //0x00000533 vmovdqu $-1179(%rip), %ymm1 /* LCPI0_8+0(%rip) */ 0x45, 0x31, 0xff, //0x0000053b xorl %r15d, %r15d - 0x01, 0xda, //0x0000053e addl %ebx, %edx - 0x41, 0x0f, 0x92, 0xc7, //0x00000540 setb %r15b - 0x01, 0xd2, //0x00000544 addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000546 xorl $1431655765, %edx - 0x44, 0x21, 0xe2, //0x0000054c andl %r12d, %edx - 0xf7, 0xd2, //0x0000054f notl %edx - 0x41, 0x21, 0xd2, //0x00000551 andl %edx, %r10d - //0x00000554 LBB0_96 - 0x4d, 0x85, 0xd2, //0x00000554 testq %r10, %r10 - 0x0f, 0x85, 0x01, 0x06, 0x00, 0x00, //0x00000557 jne LBB0_97 - 0x49, 0x83, 0xc3, 0x20, //0x0000055d addq $32, %r11 - 0x4b, 0x8d, 0x14, 0x28, //0x00000561 leaq (%r8,%r13), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000565 addq $-32, %rdx - 0x49, 0x83, 0xc5, 0xe0, //0x00000569 addq $-32, %r13 - 0x48, 0x83, 0xfa, 0x3f, //0x0000056d cmpq $63, %rdx - 0x0f, 0x8f, 0x79, 0xff, 0xff, 0xff, //0x00000571 jg LBB0_92 - 0x4d, 0x85, 0xff, //0x00000577 testq %r15, %r15 - 0x0f, 0x85, 0xb2, 0x06, 0x00, 0x00, //0x0000057a jne LBB0_102 - 0x4b, 0x8d, 0x14, 0x0b, //0x00000580 leaq (%r11,%r9), %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00000584 addq $1, %rdx - 0x49, 0xf7, 0xd3, //0x00000588 notq %r11 - 0x4d, 0x01, 0xc3, //0x0000058b addq %r8, %r11 - //0x0000058e LBB0_104 - 0x4d, 0x85, 0xdb, //0x0000058e testq %r11, %r11 - 0x0f, 0x8f, 0xfc, 0x05, 0x00, 0x00, //0x00000591 jg LBB0_105 - 0xe9, 0xdc, 0xfe, 0xff, 0xff, //0x00000597 jmp LBB0_138 - //0x0000059c LBB0_37 - 0x48, 0x8b, 0x5f, 0x08, //0x0000059c movq $8(%rdi), %rbx - 0x48, 0x29, 0xd3, //0x000005a0 subq %rdx, %rbx - 0x49, 0x01, 0xd6, //0x000005a3 addq %rdx, %r14 - 0x45, 0x31, 0xdb, //0x000005a6 xorl %r11d, %r11d - 0xc5, 0xfe, 0x6f, 0x05, 0xef, 0xfa, 0xff, 0xff, //0x000005a9 vmovdqu $-1297(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xc7, 0xfa, 0xff, 0xff, //0x000005b1 vmovdqu $-1337(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x000005b9 vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0x3b, 0xfb, 0xff, 0xff, //0x000005bd vmovdqu $-1221(%rip), %ymm3 /* LCPI0_11+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x93, 0xfa, 0xff, 0xff, //0x000005c5 vmovdqu $-1389(%rip), %ymm4 /* LCPI0_3+0(%rip) */ - 0xc4, 0x41, 0x30, 0x57, 0xc9, //0x000005cd vxorps %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xe4, //0x000005d2 xorl %r12d, %r12d - 0x45, 0x31, 0xff, //0x000005d5 xorl %r15d, %r15d - 0x45, 0x31, 0xc0, //0x000005d8 xorl %r8d, %r8d - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x000005db jmp LBB0_38 - //0x000005e0 LBB0_47 - 0x49, 0xc1, 0xfd, 0x3f, //0x000005e0 sarq $63, %r13 - 0xf3, 0x49, 0x0f, 0xb8, 0xd3, //0x000005e4 popcntq %r11, %rdx - 0x49, 0x01, 0xd7, //0x000005e9 addq %rdx, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x000005ec addq $64, %r14 - 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x000005f0 movq $24(%rsp), %rbx - 0x48, 0x83, 0xc3, 0xc0, //0x000005f5 addq $-64, %rbx - 0x4d, 0x89, 0xeb, //0x000005f9 movq %r13, %r11 - //0x000005fc LBB0_38 - 0x48, 0x83, 0xfb, 0x40, //0x000005fc cmpq $64, %rbx - 0x48, 0x89, 0x5c, 0x24, 0x18, //0x00000600 movq %rbx, $24(%rsp) - 0x0f, 0x8c, 0x22, 0x01, 0x00, 0x00, //0x00000605 jl LBB0_48 - //0x0000060b LBB0_39 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3e, //0x0000060b vmovdqu (%r14), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x76, 0x20, //0x00000610 vmovdqu $32(%r14), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x00000616 vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0x41, 0x7d, 0xd7, 0xc8, //0x0000061a vpmovmskb %ymm8, %r9d - 0xc5, 0x4d, 0x74, 0xc0, //0x0000061f vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd8, //0x00000623 vpmovmskb %ymm8, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x00000628 shlq $32, %rbx - 0x49, 0x09, 0xd9, //0x0000062c orq %rbx, %r9 - 0x4c, 0x89, 0xcb, //0x0000062f movq %r9, %rbx - 0x4c, 0x09, 0xe3, //0x00000632 orq %r12, %rbx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00000635 jne LBB0_41 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000063b movq $-1, %r9 - 0x45, 0x31, 0xe4, //0x00000642 xorl %r12d, %r12d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00000645 jmp LBB0_42 - //0x0000064a LBB0_41 - 0x4c, 0x89, 0xe3, //0x0000064a movq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x0000064d notq %rbx - 0x4c, 0x21, 0xcb, //0x00000650 andq %r9, %rbx - 0x4c, 0x8d, 0x2c, 0x1b, //0x00000653 leaq (%rbx,%rbx), %r13 - 0x4d, 0x09, 0xe5, //0x00000657 orq %r12, %r13 - 0x4d, 0x89, 0xec, //0x0000065a movq %r13, %r12 - 0x49, 0xf7, 0xd4, //0x0000065d notq %r12 - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000660 movabsq $-6148914691236517206, %rdx - 0x49, 0x21, 0xd1, //0x0000066a andq %rdx, %r9 - 0x4d, 0x21, 0xe1, //0x0000066d andq %r12, %r9 - 0x45, 0x31, 0xe4, //0x00000670 xorl %r12d, %r12d - 0x49, 0x01, 0xd9, //0x00000673 addq %rbx, %r9 - 0x41, 0x0f, 0x92, 0xc4, //0x00000676 setb %r12b - 0x4d, 0x01, 0xc9, //0x0000067a addq %r9, %r9 - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000067d movabsq $6148914691236517205, %rdx - 0x49, 0x31, 0xd1, //0x00000687 xorq %rdx, %r9 - 0x4d, 0x21, 0xe9, //0x0000068a andq %r13, %r9 - 0x49, 0xf7, 0xd1, //0x0000068d notq %r9 - //0x00000690 LBB0_42 - 0xc5, 0x4d, 0x74, 0xc1, //0x00000690 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0x41, 0x7d, 0xd7, 0xe8, //0x00000694 vpmovmskb %ymm8, %r13d - 0x49, 0xc1, 0xe5, 0x20, //0x00000699 shlq $32, %r13 - 0xc5, 0x45, 0x74, 0xc1, //0x0000069d vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd8, //0x000006a1 vpmovmskb %ymm8, %ebx - 0x4c, 0x09, 0xeb, //0x000006a6 orq %r13, %rbx - 0x4c, 0x21, 0xcb, //0x000006a9 andq %r9, %rbx - 0xc4, 0xe1, 0xf9, 0x6e, 0xeb, //0x000006ac vmovq %rbx, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000006b1 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x000006b7 vmovq %xmm5, %r13 - 0x4d, 0x31, 0xdd, //0x000006bc xorq %r11, %r13 - 0xc5, 0xc5, 0x74, 0xeb, //0x000006bf vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0x7d, 0xd7, 0xdd, //0x000006c3 vpmovmskb %ymm5, %r11d - 0xc5, 0xcd, 0x74, 0xeb, //0x000006c7 vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x000006cb vpmovmskb %ymm5, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x000006cf shlq $32, %rbx - 0x49, 0x09, 0xdb, //0x000006d3 orq %rbx, %r11 - 0x4d, 0x89, 0xe9, //0x000006d6 movq %r13, %r9 - 0x49, 0xf7, 0xd1, //0x000006d9 notq %r9 - 0x4d, 0x21, 0xcb, //0x000006dc andq %r9, %r11 - 0xc5, 0xc5, 0x74, 0xec, //0x000006df vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x000006e3 vpmovmskb %ymm5, %ebx - 0xc5, 0xcd, 0x74, 0xec, //0x000006e7 vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0x7d, 0xd7, 0xd5, //0x000006eb vpmovmskb %ymm5, %r10d - 0x49, 0xc1, 0xe2, 0x20, //0x000006ef shlq $32, %r10 - 0x4c, 0x09, 0xd3, //0x000006f3 orq %r10, %rbx - 0x4c, 0x21, 0xcb, //0x000006f6 andq %r9, %rbx - 0x0f, 0x84, 0xe1, 0xfe, 0xff, 0xff, //0x000006f9 je LBB0_47 - 0x90, //0x000006ff .p2align 4, 0x90 - //0x00000700 LBB0_44 - 0x4c, 0x8d, 0x4b, 0xff, //0x00000700 leaq $-1(%rbx), %r9 - 0x4c, 0x89, 0xca, //0x00000704 movq %r9, %rdx - 0x4c, 0x21, 0xda, //0x00000707 andq %r11, %rdx - 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x0000070a popcntq %rdx, %rdx - 0x4c, 0x01, 0xfa, //0x0000070f addq %r15, %rdx - 0x4c, 0x39, 0xc2, //0x00000712 cmpq %r8, %rdx - 0x0f, 0x86, 0x0e, 0x04, 0x00, 0x00, //0x00000715 jbe LBB0_45 - 0x49, 0x83, 0xc0, 0x01, //0x0000071b addq $1, %r8 - 0x4c, 0x21, 0xcb, //0x0000071f andq %r9, %rbx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00000722 jne LBB0_44 - 0xe9, 0xb3, 0xfe, 0xff, 0xff, //0x00000728 jmp LBB0_47 - //0x0000072d LBB0_48 - 0x48, 0x85, 0xdb, //0x0000072d testq %rbx, %rbx - 0x0f, 0x8e, 0xf0, 0x04, 0x00, 0x00, //0x00000730 jle LBB0_49 - 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x40, //0x00000736 vmovups %ymm9, $64(%rsp) - 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x20, //0x0000073c vmovups %ymm9, $32(%rsp) - 0x44, 0x89, 0xf2, //0x00000742 movl %r14d, %edx - 0x81, 0xe2, 0xff, 0x0f, 0x00, 0x00, //0x00000745 andl $4095, %edx - 0x81, 0xfa, 0xc1, 0x0f, 0x00, 0x00, //0x0000074b cmpl $4033, %edx - 0x0f, 0x82, 0xb4, 0xfe, 0xff, 0xff, //0x00000751 jb LBB0_39 - 0x48, 0x83, 0x7c, 0x24, 0x18, 0x20, //0x00000757 cmpq $32, $24(%rsp) - 0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x0000075d jb LBB0_52 - 0xc4, 0xc1, 0x7c, 0x10, 0x2e, //0x00000763 vmovups (%r14), %ymm5 - 0xc5, 0xfc, 0x11, 0x6c, 0x24, 0x20, //0x00000768 vmovups %ymm5, $32(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x0000076e addq $32, %r14 - 0x48, 0x8b, 0x54, 0x24, 0x18, //0x00000772 movq $24(%rsp), %rdx - 0x48, 0x8d, 0x5a, 0xe0, //0x00000777 leaq $-32(%rdx), %rbx - 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x0000077b leaq $64(%rsp), %r9 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000780 jmp LBB0_54 - //0x00000785 LBB0_52 - 0x4c, 0x8d, 0x4c, 0x24, 0x20, //0x00000785 leaq $32(%rsp), %r9 - 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x0000078a movq $24(%rsp), %rbx - //0x0000078f LBB0_54 - 0x48, 0x83, 0xfb, 0x10, //0x0000078f cmpq $16, %rbx - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00000793 jae LBB0_55 - 0x48, 0x83, 0xfb, 0x08, //0x00000799 cmpq $8, %rbx - 0x0f, 0x83, 0x4a, 0x00, 0x00, 0x00, //0x0000079d jae LBB0_57 - //0x000007a3 LBB0_58 - 0x48, 0x83, 0xfb, 0x04, //0x000007a3 cmpq $4, %rbx - 0x0f, 0x8d, 0x5c, 0x00, 0x00, 0x00, //0x000007a7 jge LBB0_59 - //0x000007ad LBB0_60 - 0x48, 0x83, 0xfb, 0x02, //0x000007ad cmpq $2, %rbx - 0x0f, 0x83, 0x6e, 0x00, 0x00, 0x00, //0x000007b1 jae LBB0_61 - //0x000007b7 LBB0_62 - 0x4c, 0x89, 0xf2, //0x000007b7 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000007ba leaq $32(%rsp), %r14 - 0x48, 0x85, 0xdb, //0x000007bf testq %rbx, %rbx - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x000007c2 jne LBB0_63 - 0xe9, 0x3e, 0xfe, 0xff, 0xff, //0x000007c8 jmp LBB0_39 - //0x000007cd LBB0_55 - 0xc4, 0xc1, 0x78, 0x10, 0x2e, //0x000007cd vmovups (%r14), %xmm5 - 0xc4, 0xc1, 0x78, 0x11, 0x29, //0x000007d2 vmovups %xmm5, (%r9) - 0x49, 0x83, 0xc6, 0x10, //0x000007d7 addq $16, %r14 - 0x49, 0x83, 0xc1, 0x10, //0x000007db addq $16, %r9 - 0x48, 0x83, 0xc3, 0xf0, //0x000007df addq $-16, %rbx - 0x48, 0x83, 0xfb, 0x08, //0x000007e3 cmpq $8, %rbx - 0x0f, 0x82, 0xb6, 0xff, 0xff, 0xff, //0x000007e7 jb LBB0_58 - //0x000007ed LBB0_57 - 0x49, 0x8b, 0x16, //0x000007ed movq (%r14), %rdx - 0x49, 0x89, 0x11, //0x000007f0 movq %rdx, (%r9) - 0x49, 0x83, 0xc6, 0x08, //0x000007f3 addq $8, %r14 - 0x49, 0x83, 0xc1, 0x08, //0x000007f7 addq $8, %r9 - 0x48, 0x83, 0xc3, 0xf8, //0x000007fb addq $-8, %rbx - 0x48, 0x83, 0xfb, 0x04, //0x000007ff cmpq $4, %rbx - 0x0f, 0x8c, 0xa4, 0xff, 0xff, 0xff, //0x00000803 jl LBB0_60 - //0x00000809 LBB0_59 - 0x41, 0x8b, 0x16, //0x00000809 movl (%r14), %edx - 0x41, 0x89, 0x11, //0x0000080c movl %edx, (%r9) - 0x49, 0x83, 0xc6, 0x04, //0x0000080f addq $4, %r14 - 0x49, 0x83, 0xc1, 0x04, //0x00000813 addq $4, %r9 - 0x48, 0x83, 0xc3, 0xfc, //0x00000817 addq $-4, %rbx - 0x48, 0x83, 0xfb, 0x02, //0x0000081b cmpq $2, %rbx - 0x0f, 0x82, 0x92, 0xff, 0xff, 0xff, //0x0000081f jb LBB0_62 - //0x00000825 LBB0_61 - 0x41, 0x0f, 0xb7, 0x16, //0x00000825 movzwl (%r14), %edx - 0x66, 0x41, 0x89, 0x11, //0x00000829 movw %dx, (%r9) - 0x49, 0x83, 0xc6, 0x02, //0x0000082d addq $2, %r14 - 0x49, 0x83, 0xc1, 0x02, //0x00000831 addq $2, %r9 - 0x48, 0x83, 0xc3, 0xfe, //0x00000835 addq $-2, %rbx - 0x4c, 0x89, 0xf2, //0x00000839 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x0000083c leaq $32(%rsp), %r14 - 0x48, 0x85, 0xdb, //0x00000841 testq %rbx, %rbx - 0x0f, 0x84, 0xc1, 0xfd, 0xff, 0xff, //0x00000844 je LBB0_39 - //0x0000084a LBB0_63 - 0x8a, 0x12, //0x0000084a movb (%rdx), %dl - 0x41, 0x88, 0x11, //0x0000084c movb %dl, (%r9) - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x0000084f leaq $32(%rsp), %r14 - 0xe9, 0xb2, 0xfd, 0xff, 0xff, //0x00000854 jmp LBB0_39 - //0x00000859 LBB0_133 - 0x48, 0x8d, 0x51, 0x05, //0x00000859 leaq $5(%rcx), %rdx - 0x48, 0x3b, 0x57, 0x08, //0x0000085d cmpq $8(%rdi), %rdx - 0x0f, 0x86, 0x0b, 0xfc, 0xff, 0xff, //0x00000861 jbe LBB0_136 - 0xe9, 0x0c, 0xfc, 0xff, 0xff, //0x00000867 jmp LBB0_138 - //0x0000086c LBB0_64 - 0x48, 0x8b, 0x5f, 0x08, //0x0000086c movq $8(%rdi), %rbx - 0x48, 0x29, 0xd3, //0x00000870 subq %rdx, %rbx - 0x49, 0x01, 0xd6, //0x00000873 addq %rdx, %r14 - 0x45, 0x31, 0xdb, //0x00000876 xorl %r11d, %r11d - 0xc5, 0xfe, 0x6f, 0x05, 0x1f, 0xf8, 0xff, 0xff, //0x00000879 vmovdqu $-2017(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xf7, 0xf7, 0xff, 0xff, //0x00000881 vmovdqu $-2057(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x00000889 vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0x2b, 0xf8, 0xff, 0xff, //0x0000088d vmovdqu $-2005(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x43, 0xf8, 0xff, 0xff, //0x00000895 vmovdqu $-1981(%rip), %ymm4 /* LCPI0_10+0(%rip) */ - 0xc4, 0x41, 0x30, 0x57, 0xc9, //0x0000089d vxorps %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xe4, //0x000008a2 xorl %r12d, %r12d - 0x45, 0x31, 0xff, //0x000008a5 xorl %r15d, %r15d - 0x45, 0x31, 0xc0, //0x000008a8 xorl %r8d, %r8d - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x000008ab jmp LBB0_65 - //0x000008b0 LBB0_73 - 0x49, 0xc1, 0xfd, 0x3f, //0x000008b0 sarq $63, %r13 - 0xf3, 0x49, 0x0f, 0xb8, 0xd3, //0x000008b4 popcntq %r11, %rdx - 0x49, 0x01, 0xd7, //0x000008b9 addq %rdx, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x000008bc addq $64, %r14 - 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x000008c0 movq $24(%rsp), %rbx - 0x48, 0x83, 0xc3, 0xc0, //0x000008c5 addq $-64, %rbx - 0x4d, 0x89, 0xeb, //0x000008c9 movq %r13, %r11 - //0x000008cc LBB0_65 - 0x48, 0x83, 0xfb, 0x40, //0x000008cc cmpq $64, %rbx - 0x48, 0x89, 0x5c, 0x24, 0x18, //0x000008d0 movq %rbx, $24(%rsp) - 0x0f, 0x8c, 0x22, 0x01, 0x00, 0x00, //0x000008d5 jl LBB0_74 - //0x000008db LBB0_66 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3e, //0x000008db vmovdqu (%r14), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x76, 0x20, //0x000008e0 vmovdqu $32(%r14), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x000008e6 vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0x41, 0x7d, 0xd7, 0xc8, //0x000008ea vpmovmskb %ymm8, %r9d - 0xc5, 0x4d, 0x74, 0xc0, //0x000008ef vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd8, //0x000008f3 vpmovmskb %ymm8, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x000008f8 shlq $32, %rbx - 0x49, 0x09, 0xd9, //0x000008fc orq %rbx, %r9 - 0x4c, 0x89, 0xcb, //0x000008ff movq %r9, %rbx - 0x4c, 0x09, 0xe3, //0x00000902 orq %r12, %rbx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00000905 jne LBB0_68 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000090b movq $-1, %r9 - 0x45, 0x31, 0xe4, //0x00000912 xorl %r12d, %r12d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00000915 jmp LBB0_69 - //0x0000091a LBB0_68 - 0x4c, 0x89, 0xe3, //0x0000091a movq %r12, %rbx - 0x48, 0xf7, 0xd3, //0x0000091d notq %rbx - 0x4c, 0x21, 0xcb, //0x00000920 andq %r9, %rbx - 0x4c, 0x8d, 0x2c, 0x1b, //0x00000923 leaq (%rbx,%rbx), %r13 - 0x4d, 0x09, 0xe5, //0x00000927 orq %r12, %r13 - 0x4d, 0x89, 0xec, //0x0000092a movq %r13, %r12 - 0x49, 0xf7, 0xd4, //0x0000092d notq %r12 - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000930 movabsq $-6148914691236517206, %rdx - 0x49, 0x21, 0xd1, //0x0000093a andq %rdx, %r9 - 0x4d, 0x21, 0xe1, //0x0000093d andq %r12, %r9 - 0x45, 0x31, 0xe4, //0x00000940 xorl %r12d, %r12d - 0x49, 0x01, 0xd9, //0x00000943 addq %rbx, %r9 - 0x41, 0x0f, 0x92, 0xc4, //0x00000946 setb %r12b - 0x4d, 0x01, 0xc9, //0x0000094a addq %r9, %r9 - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000094d movabsq $6148914691236517205, %rdx - 0x49, 0x31, 0xd1, //0x00000957 xorq %rdx, %r9 - 0x4d, 0x21, 0xe9, //0x0000095a andq %r13, %r9 - 0x49, 0xf7, 0xd1, //0x0000095d notq %r9 - //0x00000960 LBB0_69 - 0xc5, 0x4d, 0x74, 0xc1, //0x00000960 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0x41, 0x7d, 0xd7, 0xe8, //0x00000964 vpmovmskb %ymm8, %r13d - 0x49, 0xc1, 0xe5, 0x20, //0x00000969 shlq $32, %r13 - 0xc5, 0x45, 0x74, 0xc1, //0x0000096d vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xd8, //0x00000971 vpmovmskb %ymm8, %ebx - 0x4c, 0x09, 0xeb, //0x00000976 orq %r13, %rbx - 0x4c, 0x21, 0xcb, //0x00000979 andq %r9, %rbx - 0xc4, 0xe1, 0xf9, 0x6e, 0xeb, //0x0000097c vmovq %rbx, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x00000981 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x00000987 vmovq %xmm5, %r13 - 0x4d, 0x31, 0xdd, //0x0000098c xorq %r11, %r13 - 0xc5, 0xc5, 0x74, 0xeb, //0x0000098f vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0x7d, 0xd7, 0xdd, //0x00000993 vpmovmskb %ymm5, %r11d - 0xc5, 0xcd, 0x74, 0xeb, //0x00000997 vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x0000099b vpmovmskb %ymm5, %ebx - 0x48, 0xc1, 0xe3, 0x20, //0x0000099f shlq $32, %rbx - 0x49, 0x09, 0xdb, //0x000009a3 orq %rbx, %r11 - 0x4d, 0x89, 0xe9, //0x000009a6 movq %r13, %r9 - 0x49, 0xf7, 0xd1, //0x000009a9 notq %r9 - 0x4d, 0x21, 0xcb, //0x000009ac andq %r9, %r11 - 0xc5, 0xc5, 0x74, 0xec, //0x000009af vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x000009b3 vpmovmskb %ymm5, %ebx - 0xc5, 0xcd, 0x74, 0xec, //0x000009b7 vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0x7d, 0xd7, 0xd5, //0x000009bb vpmovmskb %ymm5, %r10d - 0x49, 0xc1, 0xe2, 0x20, //0x000009bf shlq $32, %r10 - 0x4c, 0x09, 0xd3, //0x000009c3 orq %r10, %rbx - 0x4c, 0x21, 0xcb, //0x000009c6 andq %r9, %rbx - 0x0f, 0x84, 0xe1, 0xfe, 0xff, 0xff, //0x000009c9 je LBB0_73 - 0x90, //0x000009cf .p2align 4, 0x90 - //0x000009d0 LBB0_71 - 0x4c, 0x8d, 0x4b, 0xff, //0x000009d0 leaq $-1(%rbx), %r9 - 0x4c, 0x89, 0xca, //0x000009d4 movq %r9, %rdx - 0x4c, 0x21, 0xda, //0x000009d7 andq %r11, %rdx - 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x000009da popcntq %rdx, %rdx - 0x4c, 0x01, 0xfa, //0x000009df addq %r15, %rdx - 0x4c, 0x39, 0xc2, //0x000009e2 cmpq %r8, %rdx - 0x0f, 0x86, 0x3e, 0x01, 0x00, 0x00, //0x000009e5 jbe LBB0_45 - 0x49, 0x83, 0xc0, 0x01, //0x000009eb addq $1, %r8 - 0x4c, 0x21, 0xcb, //0x000009ef andq %r9, %rbx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x000009f2 jne LBB0_71 - 0xe9, 0xb3, 0xfe, 0xff, 0xff, //0x000009f8 jmp LBB0_73 - //0x000009fd LBB0_74 - 0x48, 0x85, 0xdb, //0x000009fd testq %rbx, %rbx - 0x0f, 0x8e, 0x20, 0x02, 0x00, 0x00, //0x00000a00 jle LBB0_49 - 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x40, //0x00000a06 vmovups %ymm9, $64(%rsp) - 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x20, //0x00000a0c vmovups %ymm9, $32(%rsp) - 0x44, 0x89, 0xf2, //0x00000a12 movl %r14d, %edx - 0x81, 0xe2, 0xff, 0x0f, 0x00, 0x00, //0x00000a15 andl $4095, %edx - 0x81, 0xfa, 0xc1, 0x0f, 0x00, 0x00, //0x00000a1b cmpl $4033, %edx - 0x0f, 0x82, 0xb4, 0xfe, 0xff, 0xff, //0x00000a21 jb LBB0_66 - 0x48, 0x83, 0x7c, 0x24, 0x18, 0x20, //0x00000a27 cmpq $32, $24(%rsp) - 0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x00000a2d jb LBB0_77 - 0xc4, 0xc1, 0x7c, 0x10, 0x2e, //0x00000a33 vmovups (%r14), %ymm5 - 0xc5, 0xfc, 0x11, 0x6c, 0x24, 0x20, //0x00000a38 vmovups %ymm5, $32(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00000a3e addq $32, %r14 - 0x48, 0x8b, 0x54, 0x24, 0x18, //0x00000a42 movq $24(%rsp), %rdx - 0x48, 0x8d, 0x5a, 0xe0, //0x00000a47 leaq $-32(%rdx), %rbx - 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x00000a4b leaq $64(%rsp), %r9 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000a50 jmp LBB0_79 - //0x00000a55 LBB0_77 - 0x4c, 0x8d, 0x4c, 0x24, 0x20, //0x00000a55 leaq $32(%rsp), %r9 - 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x00000a5a movq $24(%rsp), %rbx - //0x00000a5f LBB0_79 - 0x48, 0x83, 0xfb, 0x10, //0x00000a5f cmpq $16, %rbx - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00000a63 jae LBB0_80 - 0x48, 0x83, 0xfb, 0x08, //0x00000a69 cmpq $8, %rbx - 0x0f, 0x83, 0x4a, 0x00, 0x00, 0x00, //0x00000a6d jae LBB0_82 - //0x00000a73 LBB0_83 - 0x48, 0x83, 0xfb, 0x04, //0x00000a73 cmpq $4, %rbx - 0x0f, 0x8d, 0x5c, 0x00, 0x00, 0x00, //0x00000a77 jge LBB0_84 - //0x00000a7d LBB0_85 - 0x48, 0x83, 0xfb, 0x02, //0x00000a7d cmpq $2, %rbx - 0x0f, 0x83, 0x6e, 0x00, 0x00, 0x00, //0x00000a81 jae LBB0_86 - //0x00000a87 LBB0_87 - 0x4c, 0x89, 0xf2, //0x00000a87 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000a8a leaq $32(%rsp), %r14 - 0x48, 0x85, 0xdb, //0x00000a8f testq %rbx, %rbx - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000a92 jne LBB0_88 - 0xe9, 0x3e, 0xfe, 0xff, 0xff, //0x00000a98 jmp LBB0_66 - //0x00000a9d LBB0_80 - 0xc4, 0xc1, 0x78, 0x10, 0x2e, //0x00000a9d vmovups (%r14), %xmm5 - 0xc4, 0xc1, 0x78, 0x11, 0x29, //0x00000aa2 vmovups %xmm5, (%r9) - 0x49, 0x83, 0xc6, 0x10, //0x00000aa7 addq $16, %r14 - 0x49, 0x83, 0xc1, 0x10, //0x00000aab addq $16, %r9 - 0x48, 0x83, 0xc3, 0xf0, //0x00000aaf addq $-16, %rbx - 0x48, 0x83, 0xfb, 0x08, //0x00000ab3 cmpq $8, %rbx - 0x0f, 0x82, 0xb6, 0xff, 0xff, 0xff, //0x00000ab7 jb LBB0_83 - //0x00000abd LBB0_82 - 0x49, 0x8b, 0x16, //0x00000abd movq (%r14), %rdx - 0x49, 0x89, 0x11, //0x00000ac0 movq %rdx, (%r9) - 0x49, 0x83, 0xc6, 0x08, //0x00000ac3 addq $8, %r14 - 0x49, 0x83, 0xc1, 0x08, //0x00000ac7 addq $8, %r9 - 0x48, 0x83, 0xc3, 0xf8, //0x00000acb addq $-8, %rbx - 0x48, 0x83, 0xfb, 0x04, //0x00000acf cmpq $4, %rbx - 0x0f, 0x8c, 0xa4, 0xff, 0xff, 0xff, //0x00000ad3 jl LBB0_85 - //0x00000ad9 LBB0_84 - 0x41, 0x8b, 0x16, //0x00000ad9 movl (%r14), %edx - 0x41, 0x89, 0x11, //0x00000adc movl %edx, (%r9) - 0x49, 0x83, 0xc6, 0x04, //0x00000adf addq $4, %r14 - 0x49, 0x83, 0xc1, 0x04, //0x00000ae3 addq $4, %r9 - 0x48, 0x83, 0xc3, 0xfc, //0x00000ae7 addq $-4, %rbx - 0x48, 0x83, 0xfb, 0x02, //0x00000aeb cmpq $2, %rbx - 0x0f, 0x82, 0x92, 0xff, 0xff, 0xff, //0x00000aef jb LBB0_87 - //0x00000af5 LBB0_86 - 0x41, 0x0f, 0xb7, 0x16, //0x00000af5 movzwl (%r14), %edx - 0x66, 0x41, 0x89, 0x11, //0x00000af9 movw %dx, (%r9) - 0x49, 0x83, 0xc6, 0x02, //0x00000afd addq $2, %r14 - 0x49, 0x83, 0xc1, 0x02, //0x00000b01 addq $2, %r9 - 0x48, 0x83, 0xc3, 0xfe, //0x00000b05 addq $-2, %rbx - 0x4c, 0x89, 0xf2, //0x00000b09 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000b0c leaq $32(%rsp), %r14 - 0x48, 0x85, 0xdb, //0x00000b11 testq %rbx, %rbx - 0x0f, 0x84, 0xc1, 0xfd, 0xff, 0xff, //0x00000b14 je LBB0_66 - //0x00000b1a LBB0_88 - 0x8a, 0x12, //0x00000b1a movb (%rdx), %dl - 0x41, 0x88, 0x11, //0x00000b1c movb %dl, (%r9) - 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000b1f leaq $32(%rsp), %r14 - 0xe9, 0xb2, 0xfd, 0xff, 0xff, //0x00000b24 jmp LBB0_66 - //0x00000b29 LBB0_45 - 0x48, 0x8b, 0x47, 0x08, //0x00000b29 movq $8(%rdi), %rax - 0x48, 0x0f, 0xbc, 0xd3, //0x00000b2d bsfq %rbx, %rdx - 0x48, 0x2b, 0x54, 0x24, 0x18, //0x00000b31 subq $24(%rsp), %rdx - 0x48, 0x01, 0xd0, //0x00000b36 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00000b39 addq $1, %rax - 0x48, 0x89, 0x06, //0x00000b3d movq %rax, (%rsi) - 0x48, 0x8b, 0x57, 0x08, //0x00000b40 movq $8(%rdi), %rdx - 0x48, 0x39, 0xd0, //0x00000b44 cmpq %rdx, %rax - 0x48, 0x0f, 0x47, 0xc2, //0x00000b47 cmovaq %rdx, %rax - 0x48, 0x89, 0x06, //0x00000b4b movq %rax, (%rsi) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000b4e movq $-1, %rax - 0x48, 0x0f, 0x47, 0xc8, //0x00000b55 cmovaq %rax, %rcx - 0xe9, 0x17, 0xf9, 0xff, 0xff, //0x00000b59 jmp LBB0_137 - //0x00000b5e LBB0_97 - 0x41, 0x0f, 0xbc, 0xc2, //0x00000b5e bsfl %r10d, %eax - 0x48, 0x01, 0xc8, //0x00000b62 addq %rcx, %rax - 0x4c, 0x01, 0xd8, //0x00000b65 addq %r11, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00000b68 addq $2, %rax - 0x48, 0x89, 0x06, //0x00000b6c movq %rax, (%rsi) - 0xe9, 0x01, 0xf9, 0xff, 0xff, //0x00000b6f jmp LBB0_137 - //0x00000b74 LBB0_108 - 0x48, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x00000b74 movq $-2, %rdi - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00000b7b movl $2, %eax - //0x00000b80 LBB0_109 - 0x48, 0x01, 0xc2, //0x00000b80 addq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000b83 movq $-1, %rax - 0x49, 0x01, 0xfb, //0x00000b8a addq %rdi, %r11 - 0x0f, 0x8e, 0xe5, 0xf8, 0xff, 0xff, //0x00000b8d jle LBB0_138 - //0x00000b93 LBB0_105 - 0x0f, 0xb6, 0x02, //0x00000b93 movzbl (%rdx), %eax - 0x3c, 0x5c, //0x00000b96 cmpb $92, %al - 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x00000b98 je LBB0_108 - 0x3c, 0x22, //0x00000b9e cmpb $34, %al - 0x0f, 0x84, 0x3e, 0x00, 0x00, 0x00, //0x00000ba0 je LBB0_135 - 0x48, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000ba6 movq $-1, %rdi - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000bad movl $1, %eax - 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00000bb2 jmp LBB0_109 - //0x00000bb7 LBB0_117 - 0x66, 0x0f, 0xbc, 0xc3, //0x00000bb7 bsfw %bx, %ax - 0x0f, 0xb7, 0xc0, //0x00000bbb movzwl %ax, %eax - 0x48, 0x29, 0xf8, //0x00000bbe subq %rdi, %rax - 0x48, 0x89, 0x06, //0x00000bc1 movq %rax, (%rsi) - 0xe9, 0xac, 0xf8, 0xff, 0xff, //0x00000bc4 jmp LBB0_137 - //0x00000bc9 LBB0_27 - 0x4c, 0x29, 0xf1, //0x00000bc9 subq %r14, %rcx - 0x4c, 0x01, 0xd1, //0x00000bcc addq %r10, %rcx - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bcf movq $-1, %rax - 0x48, 0x39, 0xd9, //0x00000bd6 cmpq %rbx, %rcx - 0x0f, 0x82, 0x41, 0xf7, 0xff, 0xff, //0x00000bd9 jb LBB0_35 - 0xe9, 0x94, 0xf8, 0xff, 0xff, //0x00000bdf jmp LBB0_138 - //0x00000be4 LBB0_135 - 0x4c, 0x29, 0xf2, //0x00000be4 subq %r14, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00000be7 addq $1, %rdx - 0xe9, 0x82, 0xf8, 0xff, 0xff, //0x00000beb jmp LBB0_136 - //0x00000bf0 LBB0_20 - 0x4c, 0x01, 0xf1, //0x00000bf0 addq %r14, %rcx - 0x48, 0x85, 0xd2, //0x00000bf3 testq %rdx, %rdx - 0x0f, 0x85, 0xac, 0xf6, 0xff, 0xff, //0x00000bf6 jne LBB0_24 - 0xe9, 0xe0, 0xf6, 0xff, 0xff, //0x00000bfc jmp LBB0_33 - //0x00000c01 LBB0_111 - 0x4c, 0x01, 0xf2, //0x00000c01 addq %r14, %rdx - 0x48, 0x83, 0xf8, 0x10, //0x00000c04 cmpq $16, %rax - 0x0f, 0x83, 0xc4, 0xf7, 0xff, 0xff, //0x00000c08 jae LBB0_115 - 0xe9, 0x13, 0xf8, 0xff, 0xff, //0x00000c0e jmp LBB0_122 - //0x00000c13 LBB0_127 - 0x4c, 0x29, 0xf2, //0x00000c13 subq %r14, %rdx - 0x48, 0x01, 0xfa, //0x00000c16 addq %rdi, %rdx - 0xe9, 0x54, 0xf8, 0xff, 0xff, //0x00000c19 jmp LBB0_136 - //0x00000c1e LBB0_90 - 0x4c, 0x01, 0xf2, //0x00000c1e addq %r14, %rdx - 0xe9, 0x68, 0xf9, 0xff, 0xff, //0x00000c21 jmp LBB0_104 - //0x00000c26 LBB0_49 - 0x48, 0x8b, 0x4f, 0x08, //0x00000c26 movq $8(%rdi), %rcx - 0x48, 0x89, 0x0e, //0x00000c2a movq %rcx, (%rsi) - 0xe9, 0x46, 0xf8, 0xff, 0xff, //0x00000c2d jmp LBB0_138 - //0x00000c32 LBB0_102 - 0x49, 0x8d, 0x50, 0xff, //0x00000c32 leaq $-1(%r8), %rdx - 0x4c, 0x39, 0xda, //0x00000c36 cmpq %r11, %rdx - 0x0f, 0x84, 0x39, 0xf8, 0xff, 0xff, //0x00000c39 je LBB0_138 - 0x4b, 0x8d, 0x14, 0x0b, //0x00000c3f leaq (%r11,%r9), %rdx - 0x48, 0x83, 0xc2, 0x02, //0x00000c43 addq $2, %rdx - 0x4d, 0x29, 0xd8, //0x00000c47 subq %r11, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00000c4a addq $-2, %r8 - 0x4d, 0x89, 0xc3, //0x00000c4e movq %r8, %r11 - 0xe9, 0x38, 0xf9, 0xff, 0xff, //0x00000c51 jmp LBB0_104 - 0x90, 0x90, //0x00000c56 .p2align 2, 0x90 - // // .set L0_0_set_138, LBB0_138-LJTI0_0 - // // .set L0_0_set_134, LBB0_134-LJTI0_0 - // // .set L0_0_set_89, LBB0_89-LJTI0_0 - // // .set L0_0_set_110, LBB0_110-LJTI0_0 - // // .set L0_0_set_37, LBB0_37-LJTI0_0 - // // .set L0_0_set_133, LBB0_133-LJTI0_0 - // // .set L0_0_set_131, LBB0_131-LJTI0_0 - // // .set L0_0_set_64, LBB0_64-LJTI0_0 - //0x00000c58 LJTI0_0 - 0x20, 0xf8, 0xff, 0xff, //0x00000c58 .long L0_0_set_138 - 0x45, 0xf8, 0xff, 0xff, //0x00000c5c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c60 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c64 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c68 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c6c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c70 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c74 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c78 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c7c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c80 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c84 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c88 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c8c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c90 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c94 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c98 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000c9c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ca0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ca4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ca8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cac .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cb0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cb4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cb8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cbc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cc0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cc4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cc8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ccc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cd0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cd4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cd8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cdc .long L0_0_set_134 - 0x54, 0xf8, 0xff, 0xff, //0x00000ce0 .long L0_0_set_89 - 0x45, 0xf8, 0xff, 0xff, //0x00000ce4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ce8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cec .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cf0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cf4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cf8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000cfc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d00 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d04 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d08 .long L0_0_set_134 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d0c .long L0_0_set_110 - 0x45, 0xf8, 0xff, 0xff, //0x00000d10 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d14 .long L0_0_set_134 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d18 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d1c .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d20 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d24 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d28 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d2c .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d30 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d34 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d38 .long L0_0_set_110 - 0xf4, 0xf6, 0xff, 0xff, //0x00000d3c .long L0_0_set_110 - 0x45, 0xf8, 0xff, 0xff, //0x00000d40 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d44 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d48 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d4c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d50 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d54 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d58 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d5c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d60 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d64 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d68 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d6c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d70 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d74 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d78 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d7c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d80 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d84 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d88 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d8c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d90 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d94 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d98 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000d9c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000da0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000da4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000da8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dac .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000db0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000db4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000db8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dbc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dc0 .long L0_0_set_134 - 0x44, 0xf9, 0xff, 0xff, //0x00000dc4 .long L0_0_set_37 - 0x45, 0xf8, 0xff, 0xff, //0x00000dc8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dcc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dd0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dd4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dd8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000ddc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000de0 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000de4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000de8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dec .long L0_0_set_134 - 0x01, 0xfc, 0xff, 0xff, //0x00000df0 .long L0_0_set_133 - 0x45, 0xf8, 0xff, 0xff, //0x00000df4 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000df8 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000dfc .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e00 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e04 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e08 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e0c .long L0_0_set_134 - 0x32, 0xf8, 0xff, 0xff, //0x00000e10 .long L0_0_set_131 - 0x45, 0xf8, 0xff, 0xff, //0x00000e14 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e18 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e1c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e20 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e24 .long L0_0_set_134 - 0x32, 0xf8, 0xff, 0xff, //0x00000e28 .long L0_0_set_131 - 0x45, 0xf8, 0xff, 0xff, //0x00000e2c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e30 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e34 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e38 .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e3c .long L0_0_set_134 - 0x45, 0xf8, 0xff, 0xff, //0x00000e40 .long L0_0_set_134 - 0x14, 0xfc, 0xff, 0xff, //0x00000e44 .long L0_0_set_64 - //0x00000e48 .p2align 2, 0x00 - //0x00000e48 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00000e48 .long 2 + 0x90, 0x90, //0x0000053e .p2align 4, 0x90 + //0x00000540 LBB0_60 + 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x19, 0x01, //0x00000540 vmovdqu $1(%r9,%r11), %ymm2 + 0xc5, 0xed, 0x74, 0xd8, //0x00000547 vpcmpeqb %ymm0, %ymm2, %ymm3 + 0xc5, 0x7d, 0xd7, 0xd3, //0x0000054b vpmovmskb %ymm3, %r10d + 0xc5, 0xed, 0x74, 0xd1, //0x0000054f vpcmpeqb %ymm1, %ymm2, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000553 vpmovmskb %ymm2, %edi + 0x85, 0xff, //0x00000557 testl %edi, %edi + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00000559 jne LBB0_63 + 0x4d, 0x85, 0xff, //0x0000055f testq %r15, %r15 + 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00000562 jne LBB0_63 + 0x45, 0x31, 0xff, //0x00000568 xorl %r15d, %r15d + 0xe9, 0x34, 0x00, 0x00, 0x00, //0x0000056b jmp LBB0_64 + //0x00000570 .p2align 4, 0x90 + //0x00000570 LBB0_63 + 0x44, 0x89, 0xfa, //0x00000570 movl %r15d, %edx + 0xf7, 0xd2, //0x00000573 notl %edx + 0x21, 0xfa, //0x00000575 andl %edi, %edx + 0x44, 0x8d, 0x24, 0x12, //0x00000577 leal (%rdx,%rdx), %r12d + 0x45, 0x09, 0xfc, //0x0000057b orl %r15d, %r12d + 0x44, 0x89, 0xe3, //0x0000057e movl %r12d, %ebx + 0xf7, 0xd3, //0x00000581 notl %ebx + 0x21, 0xfb, //0x00000583 andl %edi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000585 andl $-1431655766, %ebx + 0x45, 0x31, 0xff, //0x0000058b xorl %r15d, %r15d + 0x01, 0xd3, //0x0000058e addl %edx, %ebx + 0x41, 0x0f, 0x92, 0xc7, //0x00000590 setb %r15b + 0x01, 0xdb, //0x00000594 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000596 xorl $1431655765, %ebx + 0x44, 0x21, 0xe3, //0x0000059c andl %r12d, %ebx + 0xf7, 0xd3, //0x0000059f notl %ebx + 0x41, 0x21, 0xda, //0x000005a1 andl %ebx, %r10d + //0x000005a4 LBB0_64 + 0x4d, 0x85, 0xd2, //0x000005a4 testq %r10, %r10 + 0x0f, 0x85, 0x17, 0x06, 0x00, 0x00, //0x000005a7 jne LBB0_122 + 0x49, 0x83, 0xc3, 0x20, //0x000005ad addq $32, %r11 + 0x4b, 0x8d, 0x14, 0x28, //0x000005b1 leaq (%r8,%r13), %rdx + 0x48, 0x83, 0xc2, 0xe0, //0x000005b5 addq $-32, %rdx + 0x49, 0x83, 0xc5, 0xe0, //0x000005b9 addq $-32, %r13 + 0x48, 0x83, 0xfa, 0x3f, //0x000005bd cmpq $63, %rdx + 0x0f, 0x8f, 0x79, 0xff, 0xff, 0xff, //0x000005c1 jg LBB0_60 + 0x4d, 0x85, 0xff, //0x000005c7 testq %r15, %r15 + 0x0f, 0x85, 0x46, 0x07, 0x00, 0x00, //0x000005ca jne LBB0_139 + 0x4f, 0x8d, 0x3c, 0x0b, //0x000005d0 leaq (%r11,%r9), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000005d4 addq $1, %r15 + 0x49, 0xf7, 0xd3, //0x000005d8 notq %r11 + 0x4d, 0x01, 0xc3, //0x000005db addq %r8, %r11 + //0x000005de LBB0_68 + 0x4d, 0x85, 0xdb, //0x000005de testq %r11, %r11 + 0x0f, 0x8f, 0x22, 0x06, 0x00, 0x00, //0x000005e1 jg LBB0_125 + 0xe9, 0xec, 0x05, 0x00, 0x00, //0x000005e7 jmp LBB0_96 + //0x000005ec LBB0_69 + 0x48, 0x8b, 0x57, 0x08, //0x000005ec movq $8(%rdi), %rdx + 0x4c, 0x29, 0xfa, //0x000005f0 subq %r15, %rdx + 0x4d, 0x01, 0xfe, //0x000005f3 addq %r15, %r14 + 0x45, 0x31, 0xdb, //0x000005f6 xorl %r11d, %r11d + 0xc5, 0xfe, 0x6f, 0x05, 0x9f, 0xfa, 0xff, 0xff, //0x000005f9 vmovdqu $-1377(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x77, 0xfa, 0xff, 0xff, //0x00000601 vmovdqu $-1417(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x00000609 vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0xeb, 0xfa, 0xff, 0xff, //0x0000060d vmovdqu $-1301(%rip), %ymm3 /* LCPI0_11+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x43, 0xfa, 0xff, 0xff, //0x00000615 vmovdqu $-1469(%rip), %ymm4 /* LCPI0_3+0(%rip) */ + 0xc4, 0x41, 0x30, 0x57, 0xc9, //0x0000061d vxorps %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xe4, //0x00000622 xorl %r12d, %r12d + 0x45, 0x31, 0xff, //0x00000625 xorl %r15d, %r15d + 0x45, 0x31, 0xc0, //0x00000628 xorl %r8d, %r8d + 0x48, 0x83, 0xfa, 0x40, //0x0000062b cmpq $64, %rdx + 0x48, 0x89, 0x54, 0x24, 0x18, //0x0000062f movq %rdx, $24(%rsp) + 0x0f, 0x8c, 0x49, 0x01, 0x00, 0x00, //0x00000634 jl LBB0_78 + //0x0000063a LBB0_72 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3e, //0x0000063a vmovdqu (%r14), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x76, 0x20, //0x0000063f vmovdqu $32(%r14), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x00000645 vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0x41, 0x7d, 0xd7, 0xc8, //0x00000649 vpmovmskb %ymm8, %r9d + 0xc5, 0x4d, 0x74, 0xc0, //0x0000064e vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x00000652 vpmovmskb %ymm8, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00000657 shlq $32, %rdx + 0x49, 0x09, 0xd1, //0x0000065b orq %rdx, %r9 + 0x4c, 0x89, 0xca, //0x0000065e movq %r9, %rdx + 0x4c, 0x09, 0xe2, //0x00000661 orq %r12, %rdx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00000664 jne LBB0_74 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000066a movq $-1, %r9 + 0x45, 0x31, 0xe4, //0x00000671 xorl %r12d, %r12d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00000674 jmp LBB0_75 + //0x00000679 LBB0_74 + 0x4c, 0x89, 0xe2, //0x00000679 movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x0000067c notq %rdx + 0x4c, 0x21, 0xca, //0x0000067f andq %r9, %rdx + 0x4c, 0x8d, 0x2c, 0x12, //0x00000682 leaq (%rdx,%rdx), %r13 + 0x4d, 0x09, 0xe5, //0x00000686 orq %r12, %r13 + 0x4d, 0x89, 0xec, //0x00000689 movq %r13, %r12 + 0x49, 0xf7, 0xd4, //0x0000068c notq %r12 + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000068f movabsq $-6148914691236517206, %rbx + 0x49, 0x21, 0xd9, //0x00000699 andq %rbx, %r9 + 0x4d, 0x21, 0xe1, //0x0000069c andq %r12, %r9 + 0x45, 0x31, 0xe4, //0x0000069f xorl %r12d, %r12d + 0x49, 0x01, 0xd1, //0x000006a2 addq %rdx, %r9 + 0x41, 0x0f, 0x92, 0xc4, //0x000006a5 setb %r12b + 0x4d, 0x01, 0xc9, //0x000006a9 addq %r9, %r9 + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000006ac movabsq $6148914691236517205, %rdx + 0x49, 0x31, 0xd1, //0x000006b6 xorq %rdx, %r9 + 0x4d, 0x21, 0xe9, //0x000006b9 andq %r13, %r9 + 0x49, 0xf7, 0xd1, //0x000006bc notq %r9 + //0x000006bf LBB0_75 + 0xc5, 0x4d, 0x74, 0xc1, //0x000006bf vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0x41, 0x7d, 0xd7, 0xe8, //0x000006c3 vpmovmskb %ymm8, %r13d + 0x49, 0xc1, 0xe5, 0x20, //0x000006c8 shlq $32, %r13 + 0xc5, 0x45, 0x74, 0xc1, //0x000006cc vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x000006d0 vpmovmskb %ymm8, %edx + 0x4c, 0x09, 0xea, //0x000006d5 orq %r13, %rdx + 0x4c, 0x21, 0xca, //0x000006d8 andq %r9, %rdx + 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x000006db vmovq %rdx, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000006e0 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x000006e6 vmovq %xmm5, %r13 + 0x4d, 0x31, 0xdd, //0x000006eb xorq %r11, %r13 + 0xc5, 0xc5, 0x74, 0xeb, //0x000006ee vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0x7d, 0xd7, 0xdd, //0x000006f2 vpmovmskb %ymm5, %r11d + 0xc5, 0xcd, 0x74, 0xeb, //0x000006f6 vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x000006fa vpmovmskb %ymm5, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x000006fe shlq $32, %rdx + 0x49, 0x09, 0xd3, //0x00000702 orq %rdx, %r11 + 0x4d, 0x89, 0xe9, //0x00000705 movq %r13, %r9 + 0x49, 0xf7, 0xd1, //0x00000708 notq %r9 + 0x4d, 0x21, 0xcb, //0x0000070b andq %r9, %r11 + 0xc5, 0xc5, 0x74, 0xec, //0x0000070e vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x00000712 vpmovmskb %ymm5, %edx + 0xc5, 0xcd, 0x74, 0xec, //0x00000716 vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0x7d, 0xd7, 0xd5, //0x0000071a vpmovmskb %ymm5, %r10d + 0x49, 0xc1, 0xe2, 0x20, //0x0000071e shlq $32, %r10 + 0x4c, 0x09, 0xd2, //0x00000722 orq %r10, %rdx + 0x4c, 0x21, 0xca, //0x00000725 andq %r9, %rdx + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00000728 je LBB0_70 + 0x90, 0x90, //0x0000072e .p2align 4, 0x90 + //0x00000730 LBB0_76 + 0x4c, 0x8d, 0x4a, 0xff, //0x00000730 leaq $-1(%rdx), %r9 + 0x4c, 0x89, 0xcb, //0x00000734 movq %r9, %rbx + 0x4c, 0x21, 0xdb, //0x00000737 andq %r11, %rbx + 0xf3, 0x48, 0x0f, 0xb8, 0xdb, //0x0000073a popcntq %rbx, %rbx + 0x4c, 0x01, 0xfb, //0x0000073f addq %r15, %rbx + 0x4c, 0x39, 0xc3, //0x00000742 cmpq %r8, %rbx + 0x0f, 0x86, 0x44, 0x04, 0x00, 0x00, //0x00000745 jbe LBB0_121 + 0x49, 0x83, 0xc0, 0x01, //0x0000074b addq $1, %r8 + 0x4c, 0x21, 0xca, //0x0000074f andq %r9, %rdx + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00000752 jne LBB0_76 + //0x00000758 LBB0_70 + 0x49, 0xc1, 0xfd, 0x3f, //0x00000758 sarq $63, %r13 + 0xf3, 0x49, 0x0f, 0xb8, 0xd3, //0x0000075c popcntq %r11, %rdx + 0x49, 0x01, 0xd7, //0x00000761 addq %rdx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00000764 addq $64, %r14 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x00000768 movq $24(%rsp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x0000076d addq $-64, %rdx + 0x4d, 0x89, 0xeb, //0x00000771 movq %r13, %r11 + 0x48, 0x83, 0xfa, 0x40, //0x00000774 cmpq $64, %rdx + 0x48, 0x89, 0x54, 0x24, 0x18, //0x00000778 movq %rdx, $24(%rsp) + 0x0f, 0x8d, 0xb7, 0xfe, 0xff, 0xff, //0x0000077d jge LBB0_72 + //0x00000783 LBB0_78 + 0x48, 0x85, 0xd2, //0x00000783 testq %rdx, %rdx + 0x0f, 0x8e, 0x7e, 0x05, 0x00, 0x00, //0x00000786 jle LBB0_138 + 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x40, //0x0000078c vmovups %ymm9, $64(%rsp) + 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x20, //0x00000792 vmovups %ymm9, $32(%rsp) + 0x44, 0x89, 0xf2, //0x00000798 movl %r14d, %edx + 0x81, 0xe2, 0xff, 0x0f, 0x00, 0x00, //0x0000079b andl $4095, %edx + 0x81, 0xfa, 0xc1, 0x0f, 0x00, 0x00, //0x000007a1 cmpl $4033, %edx + 0x0f, 0x82, 0x8d, 0xfe, 0xff, 0xff, //0x000007a7 jb LBB0_72 + 0x48, 0x83, 0x7c, 0x24, 0x18, 0x20, //0x000007ad cmpq $32, $24(%rsp) + 0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x000007b3 jb LBB0_82 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2e, //0x000007b9 vmovdqu (%r14), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x20, //0x000007be vmovdqu %ymm5, $32(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x000007c4 addq $32, %r14 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000007c8 movq $24(%rsp), %rdx + 0x48, 0x8d, 0x5a, 0xe0, //0x000007cd leaq $-32(%rdx), %rbx + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x000007d1 leaq $64(%rsp), %r9 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x000007d6 jmp LBB0_83 + //0x000007db LBB0_82 + 0x4c, 0x8d, 0x4c, 0x24, 0x20, //0x000007db leaq $32(%rsp), %r9 + 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x000007e0 movq $24(%rsp), %rbx + //0x000007e5 LBB0_83 + 0x48, 0x83, 0xfb, 0x10, //0x000007e5 cmpq $16, %rbx + 0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x000007e9 jb LBB0_84 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2e, //0x000007ef vmovdqu (%r14), %xmm5 + 0xc4, 0xc1, 0x7a, 0x7f, 0x29, //0x000007f4 vmovdqu %xmm5, (%r9) + 0x49, 0x83, 0xc6, 0x10, //0x000007f9 addq $16, %r14 + 0x49, 0x83, 0xc1, 0x10, //0x000007fd addq $16, %r9 + 0x48, 0x83, 0xc3, 0xf0, //0x00000801 addq $-16, %rbx + 0x48, 0x83, 0xfb, 0x08, //0x00000805 cmpq $8, %rbx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x00000809 jae LBB0_89 + //0x0000080f LBB0_85 + 0x48, 0x83, 0xfb, 0x04, //0x0000080f cmpq $4, %rbx + 0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x00000813 jl LBB0_86 + //0x00000819 LBB0_90 + 0x41, 0x8b, 0x16, //0x00000819 movl (%r14), %edx + 0x41, 0x89, 0x11, //0x0000081c movl %edx, (%r9) + 0x49, 0x83, 0xc6, 0x04, //0x0000081f addq $4, %r14 + 0x49, 0x83, 0xc1, 0x04, //0x00000823 addq $4, %r9 + 0x48, 0x83, 0xc3, 0xfc, //0x00000827 addq $-4, %rbx + 0x48, 0x83, 0xfb, 0x02, //0x0000082b cmpq $2, %rbx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000082f jae LBB0_91 + //0x00000835 LBB0_87 + 0x4c, 0x89, 0xf2, //0x00000835 movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000838 leaq $32(%rsp), %r14 + 0x48, 0x85, 0xdb, //0x0000083d testq %rbx, %rbx + 0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x00000840 jne LBB0_92 + 0xe9, 0xef, 0xfd, 0xff, 0xff, //0x00000846 jmp LBB0_72 + //0x0000084b LBB0_84 + 0x48, 0x83, 0xfb, 0x08, //0x0000084b cmpq $8, %rbx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000084f jb LBB0_85 + //0x00000855 LBB0_89 + 0x49, 0x8b, 0x16, //0x00000855 movq (%r14), %rdx + 0x49, 0x89, 0x11, //0x00000858 movq %rdx, (%r9) + 0x49, 0x83, 0xc6, 0x08, //0x0000085b addq $8, %r14 + 0x49, 0x83, 0xc1, 0x08, //0x0000085f addq $8, %r9 + 0x48, 0x83, 0xc3, 0xf8, //0x00000863 addq $-8, %rbx + 0x48, 0x83, 0xfb, 0x04, //0x00000867 cmpq $4, %rbx + 0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x0000086b jge LBB0_90 + //0x00000871 LBB0_86 + 0x48, 0x83, 0xfb, 0x02, //0x00000871 cmpq $2, %rbx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00000875 jb LBB0_87 + //0x0000087b LBB0_91 + 0x41, 0x0f, 0xb7, 0x16, //0x0000087b movzwl (%r14), %edx + 0x66, 0x41, 0x89, 0x11, //0x0000087f movw %dx, (%r9) + 0x49, 0x83, 0xc6, 0x02, //0x00000883 addq $2, %r14 + 0x49, 0x83, 0xc1, 0x02, //0x00000887 addq $2, %r9 + 0x48, 0x83, 0xc3, 0xfe, //0x0000088b addq $-2, %rbx + 0x4c, 0x89, 0xf2, //0x0000088f movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000892 leaq $32(%rsp), %r14 + 0x48, 0x85, 0xdb, //0x00000897 testq %rbx, %rbx + 0x0f, 0x84, 0x9a, 0xfd, 0xff, 0xff, //0x0000089a je LBB0_72 + //0x000008a0 LBB0_92 + 0x8a, 0x12, //0x000008a0 movb (%rdx), %dl + 0x41, 0x88, 0x11, //0x000008a2 movb %dl, (%r9) + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000008a5 leaq $32(%rsp), %r14 + 0xe9, 0x8b, 0xfd, 0xff, 0xff, //0x000008aa jmp LBB0_72 + //0x000008af LBB0_93 + 0x48, 0x8d, 0x51, 0x05, //0x000008af leaq $5(%rcx), %rdx + 0x48, 0x3b, 0x57, 0x08, //0x000008b3 cmpq $8(%rdi), %rdx + 0x0f, 0x87, 0x1b, 0x03, 0x00, 0x00, //0x000008b7 ja LBB0_96 + //0x000008bd LBB0_94 + 0x48, 0x89, 0x16, //0x000008bd movq %rdx, (%rsi) + 0xe9, 0x10, 0x03, 0x00, 0x00, //0x000008c0 jmp LBB0_95 + //0x000008c5 LBB0_97 + 0x48, 0x8b, 0x57, 0x08, //0x000008c5 movq $8(%rdi), %rdx + 0x4c, 0x29, 0xfa, //0x000008c9 subq %r15, %rdx + 0x4d, 0x01, 0xfe, //0x000008cc addq %r15, %r14 + 0x45, 0x31, 0xdb, //0x000008cf xorl %r11d, %r11d + 0xc5, 0xfe, 0x6f, 0x05, 0xc6, 0xf7, 0xff, 0xff, //0x000008d2 vmovdqu $-2106(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x9e, 0xf7, 0xff, 0xff, //0x000008da vmovdqu $-2146(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x000008e2 vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0xd2, 0xf7, 0xff, 0xff, //0x000008e6 vmovdqu $-2094(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xea, 0xf7, 0xff, 0xff, //0x000008ee vmovdqu $-2070(%rip), %ymm4 /* LCPI0_10+0(%rip) */ + 0xc4, 0x41, 0x30, 0x57, 0xc9, //0x000008f6 vxorps %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xe4, //0x000008fb xorl %r12d, %r12d + 0x45, 0x31, 0xff, //0x000008fe xorl %r15d, %r15d + 0x45, 0x31, 0xc0, //0x00000901 xorl %r8d, %r8d + 0x48, 0x83, 0xfa, 0x40, //0x00000904 cmpq $64, %rdx + 0x48, 0x89, 0x54, 0x24, 0x18, //0x00000908 movq %rdx, $24(%rsp) + 0x0f, 0x8c, 0x50, 0x01, 0x00, 0x00, //0x0000090d jl LBB0_106 + //0x00000913 LBB0_100 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3e, //0x00000913 vmovdqu (%r14), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x76, 0x20, //0x00000918 vmovdqu $32(%r14), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x0000091e vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0x41, 0x7d, 0xd7, 0xc8, //0x00000922 vpmovmskb %ymm8, %r9d + 0xc5, 0x4d, 0x74, 0xc0, //0x00000927 vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x0000092b vpmovmskb %ymm8, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00000930 shlq $32, %rdx + 0x49, 0x09, 0xd1, //0x00000934 orq %rdx, %r9 + 0x4c, 0x89, 0xca, //0x00000937 movq %r9, %rdx + 0x4c, 0x09, 0xe2, //0x0000093a orq %r12, %rdx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000093d jne LBB0_102 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000943 movq $-1, %r9 + 0x45, 0x31, 0xe4, //0x0000094a xorl %r12d, %r12d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000094d jmp LBB0_103 + //0x00000952 LBB0_102 + 0x4c, 0x89, 0xe2, //0x00000952 movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00000955 notq %rdx + 0x4c, 0x21, 0xca, //0x00000958 andq %r9, %rdx + 0x4c, 0x8d, 0x2c, 0x12, //0x0000095b leaq (%rdx,%rdx), %r13 + 0x4d, 0x09, 0xe5, //0x0000095f orq %r12, %r13 + 0x4d, 0x89, 0xec, //0x00000962 movq %r13, %r12 + 0x49, 0xf7, 0xd4, //0x00000965 notq %r12 + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000968 movabsq $-6148914691236517206, %rbx + 0x49, 0x21, 0xd9, //0x00000972 andq %rbx, %r9 + 0x4d, 0x21, 0xe1, //0x00000975 andq %r12, %r9 + 0x45, 0x31, 0xe4, //0x00000978 xorl %r12d, %r12d + 0x49, 0x01, 0xd1, //0x0000097b addq %rdx, %r9 + 0x41, 0x0f, 0x92, 0xc4, //0x0000097e setb %r12b + 0x4d, 0x01, 0xc9, //0x00000982 addq %r9, %r9 + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000985 movabsq $6148914691236517205, %rdx + 0x49, 0x31, 0xd1, //0x0000098f xorq %rdx, %r9 + 0x4d, 0x21, 0xe9, //0x00000992 andq %r13, %r9 + 0x49, 0xf7, 0xd1, //0x00000995 notq %r9 + //0x00000998 LBB0_103 + 0xc5, 0x4d, 0x74, 0xc1, //0x00000998 vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0x41, 0x7d, 0xd7, 0xe8, //0x0000099c vpmovmskb %ymm8, %r13d + 0x49, 0xc1, 0xe5, 0x20, //0x000009a1 shlq $32, %r13 + 0xc5, 0x45, 0x74, 0xc1, //0x000009a5 vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xd0, //0x000009a9 vpmovmskb %ymm8, %edx + 0x4c, 0x09, 0xea, //0x000009ae orq %r13, %rdx + 0x4c, 0x21, 0xca, //0x000009b1 andq %r9, %rdx + 0xc4, 0xe1, 0xf9, 0x6e, 0xea, //0x000009b4 vmovq %rdx, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000009b9 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x000009bf vmovq %xmm5, %r13 + 0x4d, 0x31, 0xdd, //0x000009c4 xorq %r11, %r13 + 0xc5, 0xc5, 0x74, 0xeb, //0x000009c7 vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0x7d, 0xd7, 0xdd, //0x000009cb vpmovmskb %ymm5, %r11d + 0xc5, 0xcd, 0x74, 0xeb, //0x000009cf vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x000009d3 vpmovmskb %ymm5, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x000009d7 shlq $32, %rdx + 0x49, 0x09, 0xd3, //0x000009db orq %rdx, %r11 + 0x4d, 0x89, 0xe9, //0x000009de movq %r13, %r9 + 0x49, 0xf7, 0xd1, //0x000009e1 notq %r9 + 0x4d, 0x21, 0xcb, //0x000009e4 andq %r9, %r11 + 0xc5, 0xc5, 0x74, 0xec, //0x000009e7 vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xd5, //0x000009eb vpmovmskb %ymm5, %edx + 0xc5, 0xcd, 0x74, 0xec, //0x000009ef vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0x7d, 0xd7, 0xd5, //0x000009f3 vpmovmskb %ymm5, %r10d + 0x49, 0xc1, 0xe2, 0x20, //0x000009f7 shlq $32, %r10 + 0x4c, 0x09, 0xd2, //0x000009fb orq %r10, %rdx + 0x4c, 0x21, 0xca, //0x000009fe andq %r9, %rdx + 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00000a01 je LBB0_98 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000a07 .p2align 4, 0x90 + //0x00000a10 LBB0_104 + 0x4c, 0x8d, 0x4a, 0xff, //0x00000a10 leaq $-1(%rdx), %r9 + 0x4c, 0x89, 0xcb, //0x00000a14 movq %r9, %rbx + 0x4c, 0x21, 0xdb, //0x00000a17 andq %r11, %rbx + 0xf3, 0x48, 0x0f, 0xb8, 0xdb, //0x00000a1a popcntq %rbx, %rbx + 0x4c, 0x01, 0xfb, //0x00000a1f addq %r15, %rbx + 0x4c, 0x39, 0xc3, //0x00000a22 cmpq %r8, %rbx + 0x0f, 0x86, 0x64, 0x01, 0x00, 0x00, //0x00000a25 jbe LBB0_121 + 0x49, 0x83, 0xc0, 0x01, //0x00000a2b addq $1, %r8 + 0x4c, 0x21, 0xca, //0x00000a2f andq %r9, %rdx + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00000a32 jne LBB0_104 + //0x00000a38 LBB0_98 + 0x49, 0xc1, 0xfd, 0x3f, //0x00000a38 sarq $63, %r13 + 0xf3, 0x49, 0x0f, 0xb8, 0xd3, //0x00000a3c popcntq %r11, %rdx + 0x49, 0x01, 0xd7, //0x00000a41 addq %rdx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00000a44 addq $64, %r14 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x00000a48 movq $24(%rsp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x00000a4d addq $-64, %rdx + 0x4d, 0x89, 0xeb, //0x00000a51 movq %r13, %r11 + 0x48, 0x83, 0xfa, 0x40, //0x00000a54 cmpq $64, %rdx + 0x48, 0x89, 0x54, 0x24, 0x18, //0x00000a58 movq %rdx, $24(%rsp) + 0x0f, 0x8d, 0xb0, 0xfe, 0xff, 0xff, //0x00000a5d jge LBB0_100 + //0x00000a63 LBB0_106 + 0x48, 0x85, 0xd2, //0x00000a63 testq %rdx, %rdx + 0x0f, 0x8e, 0x9e, 0x02, 0x00, 0x00, //0x00000a66 jle LBB0_138 + 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x40, //0x00000a6c vmovups %ymm9, $64(%rsp) + 0xc5, 0x7c, 0x11, 0x4c, 0x24, 0x20, //0x00000a72 vmovups %ymm9, $32(%rsp) + 0x44, 0x89, 0xf2, //0x00000a78 movl %r14d, %edx + 0x81, 0xe2, 0xff, 0x0f, 0x00, 0x00, //0x00000a7b andl $4095, %edx + 0x81, 0xfa, 0xc1, 0x0f, 0x00, 0x00, //0x00000a81 cmpl $4033, %edx + 0x0f, 0x82, 0x86, 0xfe, 0xff, 0xff, //0x00000a87 jb LBB0_100 + 0x48, 0x83, 0x7c, 0x24, 0x18, 0x20, //0x00000a8d cmpq $32, $24(%rsp) + 0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x00000a93 jb LBB0_110 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2e, //0x00000a99 vmovdqu (%r14), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x20, //0x00000a9e vmovdqu %ymm5, $32(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x00000aa4 addq $32, %r14 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x00000aa8 movq $24(%rsp), %rdx + 0x48, 0x8d, 0x5a, 0xe0, //0x00000aad leaq $-32(%rdx), %rbx + 0x4c, 0x8d, 0x4c, 0x24, 0x40, //0x00000ab1 leaq $64(%rsp), %r9 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000ab6 jmp LBB0_111 + //0x00000abb LBB0_110 + 0x4c, 0x8d, 0x4c, 0x24, 0x20, //0x00000abb leaq $32(%rsp), %r9 + 0x48, 0x8b, 0x5c, 0x24, 0x18, //0x00000ac0 movq $24(%rsp), %rbx + //0x00000ac5 LBB0_111 + 0x48, 0x83, 0xfb, 0x10, //0x00000ac5 cmpq $16, %rbx + 0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x00000ac9 jb LBB0_112 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2e, //0x00000acf vmovdqu (%r14), %xmm5 + 0xc4, 0xc1, 0x7a, 0x7f, 0x29, //0x00000ad4 vmovdqu %xmm5, (%r9) + 0x49, 0x83, 0xc6, 0x10, //0x00000ad9 addq $16, %r14 + 0x49, 0x83, 0xc1, 0x10, //0x00000add addq $16, %r9 + 0x48, 0x83, 0xc3, 0xf0, //0x00000ae1 addq $-16, %rbx + 0x48, 0x83, 0xfb, 0x08, //0x00000ae5 cmpq $8, %rbx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x00000ae9 jae LBB0_117 + //0x00000aef LBB0_113 + 0x48, 0x83, 0xfb, 0x04, //0x00000aef cmpq $4, %rbx + 0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x00000af3 jl LBB0_114 + //0x00000af9 LBB0_118 + 0x41, 0x8b, 0x16, //0x00000af9 movl (%r14), %edx + 0x41, 0x89, 0x11, //0x00000afc movl %edx, (%r9) + 0x49, 0x83, 0xc6, 0x04, //0x00000aff addq $4, %r14 + 0x49, 0x83, 0xc1, 0x04, //0x00000b03 addq $4, %r9 + 0x48, 0x83, 0xc3, 0xfc, //0x00000b07 addq $-4, %rbx + 0x48, 0x83, 0xfb, 0x02, //0x00000b0b cmpq $2, %rbx + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x00000b0f jae LBB0_119 + //0x00000b15 LBB0_115 + 0x4c, 0x89, 0xf2, //0x00000b15 movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000b18 leaq $32(%rsp), %r14 + 0x48, 0x85, 0xdb, //0x00000b1d testq %rbx, %rbx + 0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x00000b20 jne LBB0_120 + 0xe9, 0xe8, 0xfd, 0xff, 0xff, //0x00000b26 jmp LBB0_100 + //0x00000b2b LBB0_112 + 0x48, 0x83, 0xfb, 0x08, //0x00000b2b cmpq $8, %rbx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00000b2f jb LBB0_113 + //0x00000b35 LBB0_117 + 0x49, 0x8b, 0x16, //0x00000b35 movq (%r14), %rdx + 0x49, 0x89, 0x11, //0x00000b38 movq %rdx, (%r9) + 0x49, 0x83, 0xc6, 0x08, //0x00000b3b addq $8, %r14 + 0x49, 0x83, 0xc1, 0x08, //0x00000b3f addq $8, %r9 + 0x48, 0x83, 0xc3, 0xf8, //0x00000b43 addq $-8, %rbx + 0x48, 0x83, 0xfb, 0x04, //0x00000b47 cmpq $4, %rbx + 0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x00000b4b jge LBB0_118 + //0x00000b51 LBB0_114 + 0x48, 0x83, 0xfb, 0x02, //0x00000b51 cmpq $2, %rbx + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00000b55 jb LBB0_115 + //0x00000b5b LBB0_119 + 0x41, 0x0f, 0xb7, 0x16, //0x00000b5b movzwl (%r14), %edx + 0x66, 0x41, 0x89, 0x11, //0x00000b5f movw %dx, (%r9) + 0x49, 0x83, 0xc6, 0x02, //0x00000b63 addq $2, %r14 + 0x49, 0x83, 0xc1, 0x02, //0x00000b67 addq $2, %r9 + 0x48, 0x83, 0xc3, 0xfe, //0x00000b6b addq $-2, %rbx + 0x4c, 0x89, 0xf2, //0x00000b6f movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000b72 leaq $32(%rsp), %r14 + 0x48, 0x85, 0xdb, //0x00000b77 testq %rbx, %rbx + 0x0f, 0x84, 0x93, 0xfd, 0xff, 0xff, //0x00000b7a je LBB0_100 + //0x00000b80 LBB0_120 + 0x8a, 0x12, //0x00000b80 movb (%rdx), %dl + 0x41, 0x88, 0x11, //0x00000b82 movb %dl, (%r9) + 0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000b85 leaq $32(%rsp), %r14 + 0xe9, 0x84, 0xfd, 0xff, 0xff, //0x00000b8a jmp LBB0_100 + //0x00000b8f LBB0_121 + 0x48, 0x8b, 0x47, 0x08, //0x00000b8f movq $8(%rdi), %rax + 0x48, 0x0f, 0xbc, 0xd2, //0x00000b93 bsfq %rdx, %rdx + 0x48, 0x2b, 0x54, 0x24, 0x18, //0x00000b97 subq $24(%rsp), %rdx + 0x48, 0x01, 0xd0, //0x00000b9c addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00000b9f addq $1, %rax + 0x48, 0x89, 0x06, //0x00000ba3 movq %rax, (%rsi) + 0x48, 0x8b, 0x57, 0x08, //0x00000ba6 movq $8(%rdi), %rdx + 0x48, 0x39, 0xd0, //0x00000baa cmpq %rdx, %rax + 0x48, 0x0f, 0x47, 0xc2, //0x00000bad cmovaq %rdx, %rax + 0x48, 0x89, 0x06, //0x00000bb1 movq %rax, (%rsi) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bb4 movq $-1, %rax + 0x48, 0x0f, 0x47, 0xc8, //0x00000bbb cmovaq %rax, %rcx + 0xe9, 0x11, 0x00, 0x00, 0x00, //0x00000bbf jmp LBB0_95 + //0x00000bc4 LBB0_122 + 0x41, 0x0f, 0xbc, 0xc2, //0x00000bc4 bsfl %r10d, %eax + 0x48, 0x01, 0xc8, //0x00000bc8 addq %rcx, %rax + 0x4c, 0x01, 0xd8, //0x00000bcb addq %r11, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00000bce addq $2, %rax + 0x48, 0x89, 0x06, //0x00000bd2 movq %rax, (%rsi) + //0x00000bd5 LBB0_95 + 0x48, 0x89, 0xc8, //0x00000bd5 movq %rcx, %rax + //0x00000bd8 LBB0_96 + 0x48, 0x8d, 0x65, 0xd8, //0x00000bd8 leaq $-40(%rbp), %rsp + 0x5b, //0x00000bdc popq %rbx + 0x41, 0x5c, //0x00000bdd popq %r12 + 0x41, 0x5d, //0x00000bdf popq %r13 + 0x41, 0x5e, //0x00000be1 popq %r14 + 0x41, 0x5f, //0x00000be3 popq %r15 + 0x5d, //0x00000be5 popq %rbp + 0xc5, 0xf8, 0x77, //0x00000be6 vzeroupper + 0xc3, //0x00000be9 retq + //0x00000bea LBB0_123 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00000bea movq $-2, %rdx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00000bf1 movl $2, %eax + 0x49, 0x01, 0xc7, //0x00000bf6 addq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bf9 movq $-1, %rax + 0x49, 0x01, 0xd3, //0x00000c00 addq %rdx, %r11 + 0x0f, 0x8e, 0xcf, 0xff, 0xff, 0xff, //0x00000c03 jle LBB0_96 + //0x00000c09 LBB0_125 + 0x41, 0x0f, 0xb6, 0x07, //0x00000c09 movzbl (%r15), %eax + 0x3c, 0x5c, //0x00000c0d cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00000c0f je LBB0_123 + 0x3c, 0x22, //0x00000c15 cmpb $34, %al + 0x0f, 0x84, 0xb3, 0x00, 0x00, 0x00, //0x00000c17 je LBB0_134 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000c1d movq $-1, %rdx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000c24 movl $1, %eax + 0x49, 0x01, 0xc7, //0x00000c29 addq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000c2c movq $-1, %rax + 0x49, 0x01, 0xd3, //0x00000c33 addq %rdx, %r11 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00000c36 jg LBB0_125 + 0xe9, 0x97, 0xff, 0xff, 0xff, //0x00000c3c jmp LBB0_96 + //0x00000c41 LBB0_128 + 0x66, 0x0f, 0xbc, 0xc2, //0x00000c41 bsfw %dx, %ax + 0x44, 0x0f, 0xb7, 0xc0, //0x00000c45 movzwl %ax, %r8d + 0x4d, 0x29, 0xf7, //0x00000c49 subq %r14, %r15 + 0x4d, 0x01, 0xc7, //0x00000c4c addq %r8, %r15 + 0x49, 0x8d, 0x04, 0x3f, //0x00000c4f leaq (%r15,%rdi), %rax + 0x48, 0x89, 0x06, //0x00000c53 movq %rax, (%rsi) + 0x48, 0x85, 0xc0, //0x00000c56 testq %rax, %rax + 0x0f, 0x8e, 0x76, 0xff, 0xff, 0xff, //0x00000c59 jle LBB0_95 + 0x4a, 0x8d, 0x04, 0x3f, //0x00000c5f leaq (%rdi,%r15), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00000c63 addq $1, %rax + 0x4a, 0x8d, 0x1c, 0x3f, //0x00000c67 leaq (%rdi,%r15), %rbx + 0x48, 0x83, 0xc3, 0xff, //0x00000c6b addq $-1, %rbx + 0x4d, 0x01, 0xc1, //0x00000c6f addq %r8, %r9 + 0x49, 0x01, 0xf9, //0x00000c72 addq %rdi, %r9 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c75 movabsq $4294977024, %rdi + //0x00000c7f LBB0_130 + 0x41, 0x0f, 0xb6, 0x11, //0x00000c7f movzbl (%r9), %edx + 0x48, 0x83, 0xfa, 0x20, //0x00000c83 cmpq $32, %rdx + 0x0f, 0x87, 0x48, 0xff, 0xff, 0xff, //0x00000c87 ja LBB0_95 + 0x48, 0x0f, 0xa3, 0xd7, //0x00000c8d btq %rdx, %rdi + 0x0f, 0x83, 0x3e, 0xff, 0xff, 0xff, //0x00000c91 jae LBB0_95 + 0x48, 0x89, 0x1e, //0x00000c97 movq %rbx, (%rsi) + 0x48, 0x83, 0xc0, 0xff, //0x00000c9a addq $-1, %rax + 0x48, 0x83, 0xc3, 0xff, //0x00000c9e addq $-1, %rbx + 0x49, 0x83, 0xc1, 0xff, //0x00000ca2 addq $-1, %r9 + 0x48, 0x83, 0xf8, 0x01, //0x00000ca6 cmpq $1, %rax + 0x0f, 0x8f, 0xcf, 0xff, 0xff, 0xff, //0x00000caa jg LBB0_130 + 0xe9, 0x20, 0xff, 0xff, 0xff, //0x00000cb0 jmp LBB0_95 + //0x00000cb5 LBB0_133 + 0x4c, 0x29, 0xf1, //0x00000cb5 subq %r14, %rcx + 0x4c, 0x01, 0xd1, //0x00000cb8 addq %r10, %rcx + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000cbb movq $-1, %rax + 0x48, 0x39, 0xd1, //0x00000cc2 cmpq %rdx, %rcx + 0x0f, 0x82, 0x55, 0xf6, 0xff, 0xff, //0x00000cc5 jb LBB0_31 + 0xe9, 0x08, 0xff, 0xff, 0xff, //0x00000ccb jmp LBB0_96 + //0x00000cd0 LBB0_134 + 0x4d, 0x29, 0xf7, //0x00000cd0 subq %r14, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00000cd3 addq $1, %r15 + 0x4c, 0x89, 0x3e, //0x00000cd7 movq %r15, (%rsi) + 0xe9, 0xf6, 0xfe, 0xff, 0xff, //0x00000cda jmp LBB0_95 + //0x00000cdf LBB0_135 + 0x4c, 0x01, 0xf1, //0x00000cdf addq %r14, %rcx + 0x48, 0x85, 0xdb, //0x00000ce2 testq %rbx, %rbx + 0x0f, 0x85, 0xbd, 0xf5, 0xff, 0xff, //0x00000ce5 jne LBB0_23 + 0xe9, 0xf1, 0xf5, 0xff, 0xff, //0x00000ceb jmp LBB0_28 + //0x00000cf0 LBB0_136 + 0x4d, 0x01, 0xf7, //0x00000cf0 addq %r14, %r15 + 0x48, 0x83, 0xf8, 0x10, //0x00000cf3 cmpq $16, %rax + 0x0f, 0x83, 0xd4, 0xf6, 0xff, 0xff, //0x00000cf7 jae LBB0_38 + 0xe9, 0x24, 0xf7, 0xff, 0xff, //0x00000cfd jmp LBB0_42 + //0x00000d02 LBB0_137 + 0x4d, 0x01, 0xf7, //0x00000d02 addq %r14, %r15 + 0xe9, 0xd4, 0xf8, 0xff, 0xff, //0x00000d05 jmp LBB0_68 + //0x00000d0a LBB0_138 + 0x48, 0x8b, 0x4f, 0x08, //0x00000d0a movq $8(%rdi), %rcx + 0x48, 0x89, 0x0e, //0x00000d0e movq %rcx, (%rsi) + 0xe9, 0xc2, 0xfe, 0xff, 0xff, //0x00000d11 jmp LBB0_96 + //0x00000d16 LBB0_139 + 0x49, 0x8d, 0x50, 0xff, //0x00000d16 leaq $-1(%r8), %rdx + 0x4c, 0x39, 0xda, //0x00000d1a cmpq %r11, %rdx + 0x0f, 0x84, 0xb5, 0xfe, 0xff, 0xff, //0x00000d1d je LBB0_96 + 0x4f, 0x8d, 0x3c, 0x0b, //0x00000d23 leaq (%r11,%r9), %r15 + 0x49, 0x83, 0xc7, 0x02, //0x00000d27 addq $2, %r15 + 0x4d, 0x29, 0xd8, //0x00000d2b subq %r11, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00000d2e addq $-2, %r8 + 0x4d, 0x89, 0xc3, //0x00000d32 movq %r8, %r11 + 0xe9, 0xa4, 0xf8, 0xff, 0xff, //0x00000d35 jmp LBB0_68 + 0x90, 0x90, //0x00000d3a .p2align 2, 0x90 + // // .set L0_0_set_96, LBB0_96-LJTI0_0 + // // .set L0_0_set_57, LBB0_57-LJTI0_0 + // // .set L0_0_set_58, LBB0_58-LJTI0_0 + // // .set L0_0_set_33, LBB0_33-LJTI0_0 + // // .set L0_0_set_69, LBB0_69-LJTI0_0 + // // .set L0_0_set_93, LBB0_93-LJTI0_0 + // // .set L0_0_set_56, LBB0_56-LJTI0_0 + // // .set L0_0_set_97, LBB0_97-LJTI0_0 + //0x00000d3c LJTI0_0 + 0x9c, 0xfe, 0xff, 0xff, //0x00000d3c .long L0_0_set_96 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d40 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d44 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d48 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d4c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d50 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d54 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d58 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d5c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d60 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d64 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d68 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d6c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d70 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d74 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d78 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d7c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d80 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d84 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d88 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d8c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d90 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d94 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d98 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000d9c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000da0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000da4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000da8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dac .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000db0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000db4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000db8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dbc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dc0 .long L0_0_set_57 + 0xcb, 0xf7, 0xff, 0xff, //0x00000dc4 .long L0_0_set_58 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dc8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dcc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dd0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dd4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dd8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ddc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000de0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000de4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000de8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000dec .long L0_0_set_57 + 0x10, 0xf6, 0xff, 0xff, //0x00000df0 .long L0_0_set_33 + 0xbc, 0xf7, 0xff, 0xff, //0x00000df4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000df8 .long L0_0_set_57 + 0x10, 0xf6, 0xff, 0xff, //0x00000dfc .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e00 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e04 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e08 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e0c .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e10 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e14 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e18 .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e1c .long L0_0_set_33 + 0x10, 0xf6, 0xff, 0xff, //0x00000e20 .long L0_0_set_33 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e24 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e28 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e2c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e30 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e34 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e38 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e3c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e40 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e44 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e48 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e4c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e50 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e54 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e58 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e5c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e60 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e64 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e68 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e6c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e70 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e74 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e78 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e7c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e80 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e84 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e88 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e8c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e90 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e94 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e98 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000e9c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ea0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ea4 .long L0_0_set_57 + 0xb0, 0xf8, 0xff, 0xff, //0x00000ea8 .long L0_0_set_69 + 0xbc, 0xf7, 0xff, 0xff, //0x00000eac .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000eb0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000eb4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000eb8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ebc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ec0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ec4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ec8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ecc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ed0 .long L0_0_set_57 + 0x73, 0xfb, 0xff, 0xff, //0x00000ed4 .long L0_0_set_93 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ed8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000edc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ee0 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ee4 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ee8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000eec .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ef0 .long L0_0_set_57 + 0xa9, 0xf7, 0xff, 0xff, //0x00000ef4 .long L0_0_set_56 + 0xbc, 0xf7, 0xff, 0xff, //0x00000ef8 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000efc .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f00 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f04 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f08 .long L0_0_set_57 + 0xa9, 0xf7, 0xff, 0xff, //0x00000f0c .long L0_0_set_56 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f10 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f14 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f18 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f1c .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f20 .long L0_0_set_57 + 0xbc, 0xf7, 0xff, 0xff, //0x00000f24 .long L0_0_set_57 + 0x89, 0xfb, 0xff, 0xff, //0x00000f28 .long L0_0_set_97 + //0x00000f2c .p2align 2, 0x00 + //0x00000f2c _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00000f2c .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_subr.go index a942e12d3..9272404c7 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_one = 13564 + _size__skip_one = 13740 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x323f, 208}, - {0x3240, 48}, - {0x3242, 40}, - {0x3244, 32}, - {0x3246, 24}, - {0x3248, 16}, - {0x3249, 8}, - {0x324d, 0}, - {0x34fc, 208}, + {0x329f, 208}, + {0x32a0, 48}, + {0x32a2, 40}, + {0x32a4, 32}, + {0x32a6, 24}, + {0x32a8, 16}, + {0x32a9, 8}, + {0x32ad, 0}, + {0x35ac, 208}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_text_amd64.go index 8fd13dec7..72e798f36 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/skip_one_text_amd64.go @@ -140,7 +140,7 @@ var _text_skip_one = []byte{ 0xc5, 0xfe, 0x6f, 0x25, 0xa6, 0xfe, 0xff, 0xff, //0x00000332 vmovdqu $-346(%rip), %ymm4 /* LCPI0_19+0(%rip) */ 0x4c, 0x89, 0x54, 0x24, 0x18, //0x0000033a movq %r10, $24(%rsp) 0x4c, 0x89, 0x5c, 0x24, 0x08, //0x0000033f movq %r11, $8(%rsp) - 0xe9, 0xc7, 0x03, 0x00, 0x00, //0x00000344 jmp LBB0_57 + 0xe9, 0x37, 0x04, 0x00, 0x00, //0x00000344 jmp LBB0_63 //0x00000349 LBB0_2 0x4d, 0x8b, 0x55, 0x00, //0x00000349 movq (%r13), %r10 0x49, 0x8b, 0x55, 0x08, //0x0000034d movq $8(%r13), %rdx @@ -199,7 +199,7 @@ var _text_skip_one = []byte{ 0x48, 0x29, 0xc7, //0x00000417 subq %rax, %rdi 0x0f, 0x86, 0xb7, 0x00, 0x00, 0x00, //0x0000041a jbe LBB0_31 0x48, 0x83, 0xff, 0x20, //0x00000420 cmpq $32, %rdi - 0x0f, 0x82, 0xab, 0x32, 0x00, 0x00, //0x00000424 jb LBB0_666 + 0x0f, 0x82, 0x6d, 0x33, 0x00, 0x00, //0x00000424 jb LBB0_678 0x48, 0xc7, 0xc7, 0xfc, 0xff, 0xff, 0xff, //0x0000042a movq $-4, %rdi 0x48, 0x29, 0xf7, //0x00000431 subq %rsi, %rdi 0xc5, 0xfe, 0x6f, 0x05, 0xc4, 0xfb, 0xff, 0xff, //0x00000434 vmovdqu $-1084(%rip), %ymm0 /* LCPI0_0+0(%rip) */ @@ -229,9 +229,9 @@ var _text_skip_one = []byte{ //0x00000498 LBB0_26 0x0f, 0xbe, 0x1c, 0x30, //0x00000498 movsbl (%rax,%rsi), %ebx 0x83, 0xfb, 0x20, //0x0000049c cmpl $32, %ebx - 0x0f, 0x87, 0xe8, 0x31, 0x00, 0x00, //0x0000049f ja LBB0_663 + 0x0f, 0x87, 0xaa, 0x32, 0x00, 0x00, //0x0000049f ja LBB0_675 0x48, 0x0f, 0xa3, 0xd9, //0x000004a5 btq %rbx, %rcx - 0x0f, 0x83, 0xde, 0x31, 0x00, 0x00, //0x000004a9 jae LBB0_663 + 0x0f, 0x83, 0xa0, 0x32, 0x00, 0x00, //0x000004a9 jae LBB0_675 0x48, 0x83, 0xc6, 0x01, //0x000004af addq $1, %rsi 0x48, 0x39, 0xf7, //0x000004b3 cmpq %rsi, %rdi 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000004b6 jne LBB0_26 @@ -241,3717 +241,3759 @@ var _text_skip_one = []byte{ 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000004c2 movq $-1, %r15 0x48, 0x39, 0xd0, //0x000004c9 cmpq %rdx, %rax 0x0f, 0x82, 0x2c, 0x00, 0x00, 0x00, //0x000004cc jb LBB0_33 - 0xe9, 0x01, 0x30, 0x00, 0x00, //0x000004d2 jmp LBB0_638 + 0xe9, 0x61, 0x30, 0x00, 0x00, //0x000004d2 jmp LBB0_646 //0x000004d7 LBB0_31 0x49, 0x89, 0x03, //0x000004d7 movq %rax, (%r11) 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000004da movq $-1, %r15 - 0xe9, 0xf2, 0x2f, 0x00, 0x00, //0x000004e1 jmp LBB0_638 + 0xe9, 0x52, 0x30, 0x00, 0x00, //0x000004e1 jmp LBB0_646 //0x000004e6 LBB0_32 0xf7, 0xd1, //0x000004e6 notl %ecx 0x0f, 0xbc, 0xc1, //0x000004e8 bsfl %ecx, %eax 0x48, 0x29, 0xf8, //0x000004eb subq %rdi, %rax 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000004ee movq $-1, %r15 0x48, 0x39, 0xd0, //0x000004f5 cmpq %rdx, %rax - 0x0f, 0x83, 0xda, 0x2f, 0x00, 0x00, //0x000004f8 jae LBB0_638 + 0x0f, 0x83, 0x3a, 0x30, 0x00, 0x00, //0x000004f8 jae LBB0_646 //0x000004fe LBB0_33 0x48, 0x8d, 0x50, 0x01, //0x000004fe leaq $1(%rax), %rdx 0x49, 0x89, 0x13, //0x00000502 movq %rdx, (%r11) 0x41, 0x0f, 0xbe, 0x0c, 0x02, //0x00000505 movsbl (%r10,%rax), %ecx 0x83, 0xf9, 0x7b, //0x0000050a cmpl $123, %ecx - 0x0f, 0x87, 0xcd, 0x28, 0x00, 0x00, //0x0000050d ja LBB0_569 + 0x0f, 0x87, 0x33, 0x29, 0x00, 0x00, //0x0000050d ja LBB0_575 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000513 movq $-1, %r15 - 0x48, 0x8d, 0x35, 0x7b, 0x32, 0x00, 0x00, //0x0000051a leaq $12923(%rip), %rsi /* LJTI0_0+0(%rip) */ + 0x48, 0x8d, 0x35, 0x2b, 0x33, 0x00, 0x00, //0x0000051a leaq $13099(%rip), %rsi /* LJTI0_0+0(%rip) */ 0x48, 0x63, 0x0c, 0x8e, //0x00000521 movslq (%rsi,%rcx,4), %rcx 0x48, 0x01, 0xf1, //0x00000525 addq %rsi, %rcx 0xff, 0xe1, //0x00000528 jmpq *%rcx //0x0000052a LBB0_35 - 0x49, 0x8b, 0x7d, 0x08, //0x0000052a movq $8(%r13), %rdi - 0x48, 0x89, 0xfe, //0x0000052e movq %rdi, %rsi - 0x48, 0x29, 0xd6, //0x00000531 subq %rdx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x00000534 cmpq $32, %rsi - 0x0f, 0x82, 0xa8, 0x31, 0x00, 0x00, //0x00000538 jb LBB0_667 - 0x48, 0x89, 0xc6, //0x0000053e movq %rax, %rsi - 0x48, 0xf7, 0xd6, //0x00000541 notq %rsi - 0xc5, 0xfe, 0x6f, 0x05, 0xd4, 0xfa, 0xff, 0xff, //0x00000544 vmovdqu $-1324(%rip), %ymm0 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xec, 0xfa, 0xff, 0xff, //0x0000054c vmovdqu $-1300(%rip), %ymm1 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x15, 0x04, 0xfb, 0xff, 0xff, //0x00000554 vmovdqu $-1276(%rip), %ymm2 /* LCPI0_3+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, //0x0000055c .p2align 4, 0x90 + 0x49, 0x8b, 0x75, 0x08, //0x0000052a movq $8(%r13), %rsi + 0x48, 0x29, 0xd6, //0x0000052e subq %rdx, %rsi + 0x48, 0x83, 0xfe, 0x20, //0x00000531 cmpq $32, %rsi + 0x0f, 0x82, 0x6d, 0x32, 0x00, 0x00, //0x00000535 jb LBB0_679 + 0x31, 0xff, //0x0000053b xorl %edi, %edi + 0xc5, 0xfe, 0x6f, 0x05, 0xdb, 0xfa, 0xff, 0xff, //0x0000053d vmovdqu $-1317(%rip), %ymm0 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0xf3, 0xfa, 0xff, 0xff, //0x00000545 vmovdqu $-1293(%rip), %ymm1 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x15, 0x0b, 0xfb, 0xff, 0xff, //0x0000054d vmovdqu $-1269(%rip), %ymm2 /* LCPI0_3+0(%rip) */ + 0x4c, 0x89, 0xd2, //0x00000555 movq %r10, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000558 .p2align 4, 0x90 //0x00000560 LBB0_37 - 0xc4, 0xc1, 0x7e, 0x6f, 0x1c, 0x12, //0x00000560 vmovdqu (%r10,%rdx), %ymm3 + 0xc5, 0xfe, 0x6f, 0x5c, 0x02, 0x01, //0x00000560 vmovdqu $1(%rdx,%rax), %ymm3 0xc5, 0xe5, 0x74, 0xe0, //0x00000566 vpcmpeqb %ymm0, %ymm3, %ymm4 0xc5, 0xe5, 0xdb, 0xd9, //0x0000056a vpand %ymm1, %ymm3, %ymm3 0xc5, 0xe5, 0x74, 0xda, //0x0000056e vpcmpeqb %ymm2, %ymm3, %ymm3 0xc5, 0xe5, 0xeb, 0xdc, //0x00000572 vpor %ymm4, %ymm3, %ymm3 0xc5, 0xfd, 0xd7, 0xcb, //0x00000576 vpmovmskb %ymm3, %ecx 0x85, 0xc9, //0x0000057a testl %ecx, %ecx - 0x0f, 0x85, 0xca, 0x00, 0x00, 0x00, //0x0000057c jne LBB0_51 + 0x0f, 0x85, 0xe1, 0x00, 0x00, 0x00, //0x0000057c jne LBB0_53 0x48, 0x83, 0xc2, 0x20, //0x00000582 addq $32, %rdx - 0x48, 0x8d, 0x0c, 0x37, //0x00000586 leaq (%rdi,%rsi), %rcx + 0x48, 0x8d, 0x0c, 0x3e, //0x00000586 leaq (%rsi,%rdi), %rcx 0x48, 0x83, 0xc1, 0xe0, //0x0000058a addq $-32, %rcx - 0x48, 0x83, 0xc6, 0xe0, //0x0000058e addq $-32, %rsi + 0x48, 0x83, 0xc7, 0xe0, //0x0000058e addq $-32, %rdi 0x48, 0x83, 0xf9, 0x1f, //0x00000592 cmpq $31, %rcx 0x0f, 0x87, 0xc4, 0xff, 0xff, 0xff, //0x00000596 ja LBB0_37 - 0x4c, 0x89, 0xd2, //0x0000059c movq %r10, %rdx - 0x48, 0x29, 0xf2, //0x0000059f subq %rsi, %rdx - 0x48, 0x01, 0xf7, //0x000005a2 addq %rsi, %rdi - 0x48, 0x89, 0xfe, //0x000005a5 movq %rdi, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x000005a8 cmpq $16, %rsi - 0x0f, 0x82, 0x54, 0x00, 0x00, 0x00, //0x000005ac jb LBB0_43 - //0x000005b2 LBB0_40 - 0x4c, 0x89, 0xd7, //0x000005b2 movq %r10, %rdi - 0x48, 0x29, 0xd7, //0x000005b5 subq %rdx, %rdi - 0xc5, 0xfa, 0x6f, 0x05, 0x40, 0xfc, 0xff, 0xff, //0x000005b8 vmovdqu $-960(%rip), %xmm0 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x0d, 0x48, 0xfc, 0xff, 0xff, //0x000005c0 vmovdqu $-952(%rip), %xmm1 /* LCPI0_5+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x50, 0xfc, 0xff, 0xff, //0x000005c8 vmovdqu $-944(%rip), %xmm2 /* LCPI0_6+0(%rip) */ - //0x000005d0 LBB0_41 - 0xc5, 0xfa, 0x6f, 0x1a, //0x000005d0 vmovdqu (%rdx), %xmm3 - 0xc5, 0xe1, 0x74, 0xe0, //0x000005d4 vpcmpeqb %xmm0, %xmm3, %xmm4 - 0xc5, 0xe1, 0xdb, 0xd9, //0x000005d8 vpand %xmm1, %xmm3, %xmm3 - 0xc5, 0xe1, 0x74, 0xda, //0x000005dc vpcmpeqb %xmm2, %xmm3, %xmm3 - 0xc5, 0xe1, 0xeb, 0xdc, //0x000005e0 vpor %xmm4, %xmm3, %xmm3 - 0xc5, 0xf9, 0xd7, 0xcb, //0x000005e4 vpmovmskb %xmm3, %ecx - 0x85, 0xc9, //0x000005e8 testl %ecx, %ecx - 0x0f, 0x85, 0x70, 0x2f, 0x00, 0x00, //0x000005ea jne LBB0_647 - 0x48, 0x83, 0xc2, 0x10, //0x000005f0 addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x000005f4 addq $-16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x000005f8 addq $-16, %rdi - 0x48, 0x83, 0xfe, 0x0f, //0x000005fc cmpq $15, %rsi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000600 ja LBB0_41 - //0x00000606 LBB0_43 - 0x48, 0x85, 0xf6, //0x00000606 testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000609 je LBB0_50 - 0x48, 0x8d, 0x1c, 0x32, //0x0000060f leaq (%rdx,%rsi), %rbx - 0x31, 0xff, //0x00000613 xorl %edi, %edi - //0x00000615 LBB0_45 - 0x0f, 0xb6, 0x0c, 0x3a, //0x00000615 movzbl (%rdx,%rdi), %ecx - 0x80, 0xf9, 0x2c, //0x00000619 cmpb $44, %cl - 0x0f, 0x84, 0xd6, 0x30, 0x00, 0x00, //0x0000061c je LBB0_668 - 0x80, 0xf9, 0x7d, //0x00000622 cmpb $125, %cl - 0x0f, 0x84, 0xcd, 0x30, 0x00, 0x00, //0x00000625 je LBB0_668 - 0x80, 0xf9, 0x5d, //0x0000062b cmpb $93, %cl - 0x0f, 0x84, 0xc4, 0x30, 0x00, 0x00, //0x0000062e je LBB0_668 - 0x48, 0x83, 0xc7, 0x01, //0x00000634 addq $1, %rdi - 0x48, 0x39, 0xfe, //0x00000638 cmpq %rdi, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x0000063b jne LBB0_45 - 0x48, 0x89, 0xda, //0x00000641 movq %rbx, %rdx - //0x00000644 LBB0_50 - 0x4c, 0x29, 0xd2, //0x00000644 subq %r10, %rdx - 0xe9, 0xb2, 0x30, 0x00, 0x00, //0x00000647 jmp LBB0_669 - //0x0000064c LBB0_51 - 0x0f, 0xbc, 0xc9, //0x0000064c bsfl %ecx, %ecx - 0x48, 0x29, 0xf1, //0x0000064f subq %rsi, %rcx - //0x00000652 LBB0_52 - 0x49, 0x89, 0x0b, //0x00000652 movq %rcx, (%r11) - 0x49, 0x89, 0xc7, //0x00000655 movq %rax, %r15 - 0xe9, 0x7b, 0x2e, 0x00, 0x00, //0x00000658 jmp LBB0_638 - //0x0000065d LBB0_634 - 0x49, 0xf7, 0xd8, //0x0000065d negq %r8 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00000660 movq $8(%rsp), %r11 - 0xc5, 0xfe, 0x6f, 0x2d, 0x93, 0xf9, 0xff, 0xff, //0x00000665 vmovdqu $-1645(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0b, 0xfa, 0xff, 0xff, //0x0000066d vmovdqu $-1525(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x23, 0xfa, 0xff, 0xff, //0x00000675 vmovdqu $-1501(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x9b, 0xfa, 0xff, 0xff, //0x0000067d vmovdqu $-1381(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000685 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xae, 0xfa, 0xff, 0xff, //0x0000068a vmovdqu $-1362(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xc6, 0xfa, 0xff, 0xff, //0x00000692 vmovdqu $-1338(%rip), %ymm11 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xde, 0xfa, 0xff, 0xff, //0x0000069a vmovdqu $-1314(%rip), %ymm12 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xf6, 0xfa, 0xff, 0xff, //0x000006a2 vmovdqu $-1290(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x8e, 0xf9, 0xff, 0xff, //0x000006aa vmovdqu $-1650(%rip), %ymm14 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x06, 0xfb, 0xff, 0xff, //0x000006b2 vmovdqu $-1274(%rip), %ymm15 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x1e, 0xfb, 0xff, 0xff, //0x000006ba vmovdqu $-1250(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x4d, 0x85, 0xc0, //0x000006c2 testq %r8, %r8 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000006c5 movq $24(%rsp), %r10 - 0x0f, 0x88, 0xec, 0x2d, 0x00, 0x00, //0x000006ca js LBB0_635 - //0x000006d0 LBB0_408 - 0x49, 0x8b, 0x0b, //0x000006d0 movq (%r11), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x000006d3 addq $-1, %rcx - //0x000006d7 LBB0_54 - 0x4c, 0x01, 0xc1, //0x000006d7 addq %r8, %rcx - 0x49, 0x89, 0x0b, //0x000006da movq %rcx, (%r11) - 0x48, 0x83, 0x7c, 0x24, 0x28, 0x00, //0x000006dd cmpq $0, $40(%rsp) - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x000006e3 movq $56(%rsp), %r13 - 0x0f, 0x8e, 0xea, 0x2d, 0x00, 0x00, //0x000006e8 jle LBB0_638 - 0x90, 0x90, //0x000006ee .p2align 4, 0x90 - //0x000006f0 LBB0_55 - 0x49, 0x8b, 0x11, //0x000006f0 movq (%r9), %rdx - 0x4d, 0x89, 0xf7, //0x000006f3 movq %r14, %r15 - 0x48, 0x85, 0xd2, //0x000006f6 testq %rdx, %rdx - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x000006f9 jne LBB0_57 - 0xe9, 0xd4, 0x2d, 0x00, 0x00, //0x000006ff jmp LBB0_638 - //0x00000704 LBB0_53 - 0x4c, 0x89, 0xf9, //0x00000704 movq %r15, %rcx - 0xe9, 0xcb, 0xff, 0xff, 0xff, //0x00000707 jmp LBB0_54 - 0x90, 0x90, 0x90, 0x90, //0x0000070c .p2align 4, 0x90 - //0x00000710 LBB0_57 - 0x4c, 0x89, 0xf1, //0x00000710 movq %r14, %rcx - 0x4d, 0x8b, 0x45, 0x00, //0x00000713 movq (%r13), %r8 - 0x49, 0x8b, 0x75, 0x08, //0x00000717 movq $8(%r13), %rsi - 0x49, 0x8b, 0x3b, //0x0000071b movq (%r11), %rdi - 0x48, 0x39, 0xf7, //0x0000071e cmpq %rsi, %rdi - 0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000721 movq %r8, $16(%rsp) - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00000726 jae LBB0_62 - 0x41, 0x8a, 0x04, 0x38, //0x0000072c movb (%r8,%rdi), %al - 0x3c, 0x0d, //0x00000730 cmpb $13, %al - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00000732 je LBB0_62 - 0x3c, 0x20, //0x00000738 cmpb $32, %al - 0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x0000073a je LBB0_62 - 0x04, 0xf7, //0x00000740 addb $-9, %al - 0x3c, 0x01, //0x00000742 cmpb $1, %al - 0x0f, 0x86, 0x16, 0x00, 0x00, 0x00, //0x00000744 jbe LBB0_62 - 0x49, 0x89, 0xfe, //0x0000074a movq %rdi, %r14 - 0xe9, 0x80, 0x01, 0x00, 0x00, //0x0000074d jmp LBB0_87 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000752 .p2align 4, 0x90 - //0x00000760 LBB0_62 - 0x4c, 0x8d, 0x77, 0x01, //0x00000760 leaq $1(%rdi), %r14 - 0x49, 0x39, 0xf6, //0x00000764 cmpq %rsi, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000767 jae LBB0_66 - 0x43, 0x8a, 0x14, 0x30, //0x0000076d movb (%r8,%r14), %dl - 0x80, 0xfa, 0x0d, //0x00000771 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000774 je LBB0_66 - 0x80, 0xfa, 0x20, //0x0000077a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000077d je LBB0_66 - 0x80, 0xc2, 0xf7, //0x00000783 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000786 cmpb $1, %dl - 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x00000789 ja LBB0_87 - 0x90, //0x0000078f .p2align 4, 0x90 - //0x00000790 LBB0_66 - 0x4c, 0x8d, 0x77, 0x02, //0x00000790 leaq $2(%rdi), %r14 - 0x49, 0x39, 0xf6, //0x00000794 cmpq %rsi, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000797 jae LBB0_70 - 0x43, 0x8a, 0x14, 0x30, //0x0000079d movb (%r8,%r14), %dl - 0x80, 0xfa, 0x0d, //0x000007a1 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000007a4 je LBB0_70 - 0x80, 0xfa, 0x20, //0x000007aa cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000007ad je LBB0_70 - 0x80, 0xc2, 0xf7, //0x000007b3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000007b6 cmpb $1, %dl - 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x000007b9 ja LBB0_87 - 0x90, //0x000007bf .p2align 4, 0x90 - //0x000007c0 LBB0_70 - 0x4c, 0x8d, 0x77, 0x03, //0x000007c0 leaq $3(%rdi), %r14 - 0x49, 0x39, 0xf6, //0x000007c4 cmpq %rsi, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000007c7 jae LBB0_74 - 0x43, 0x8a, 0x14, 0x30, //0x000007cd movb (%r8,%r14), %dl - 0x80, 0xfa, 0x0d, //0x000007d1 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000007d4 je LBB0_74 - 0x80, 0xfa, 0x20, //0x000007da cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000007dd je LBB0_74 - 0x80, 0xc2, 0xf7, //0x000007e3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000007e6 cmpb $1, %dl - 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000007e9 ja LBB0_87 - 0x90, //0x000007ef .p2align 4, 0x90 - //0x000007f0 LBB0_74 - 0x4c, 0x8d, 0x77, 0x04, //0x000007f0 leaq $4(%rdi), %r14 - 0x48, 0x89, 0xf2, //0x000007f4 movq %rsi, %rdx - 0x4c, 0x29, 0xf2, //0x000007f7 subq %r14, %rdx - 0x0f, 0x86, 0x86, 0x25, 0x00, 0x00, //0x000007fa jbe LBB0_566 - 0x48, 0x83, 0xfa, 0x20, //0x00000800 cmpq $32, %rdx - 0x0f, 0x82, 0x58, 0x18, 0x00, 0x00, //0x00000804 jb LBB0_410 - 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x0000080a movq $-4, %rdx - 0x48, 0x29, 0xfa, //0x00000811 subq %rdi, %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000814 .p2align 4, 0x90 - //0x00000820 LBB0_77 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x30, //0x00000820 vmovdqu (%r8,%r14), %ymm0 - 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00000826 vpshufb %ymm0, %ymm5, %ymm1 - 0xc5, 0xfd, 0x74, 0xc1, //0x0000082b vpcmpeqb %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf8, //0x0000082f vpmovmskb %ymm0, %edi - 0x83, 0xff, 0xff, //0x00000833 cmpl $-1, %edi - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000836 jne LBB0_86 - 0x49, 0x83, 0xc6, 0x20, //0x0000083c addq $32, %r14 - 0x48, 0x8d, 0x3c, 0x16, //0x00000840 leaq (%rsi,%rdx), %rdi - 0x48, 0x83, 0xc7, 0xe0, //0x00000844 addq $-32, %rdi - 0x48, 0x83, 0xc2, 0xe0, //0x00000848 addq $-32, %rdx - 0x48, 0x83, 0xff, 0x1f, //0x0000084c cmpq $31, %rdi - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000850 ja LBB0_77 - 0x4d, 0x89, 0xc6, //0x00000856 movq %r8, %r14 - 0x49, 0x29, 0xd6, //0x00000859 subq %rdx, %r14 - 0x48, 0x01, 0xf2, //0x0000085c addq %rsi, %rdx - 0x48, 0x85, 0xd2, //0x0000085f testq %rdx, %rdx - 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000862 je LBB0_85 - //0x00000868 LBB0_80 - 0x4d, 0x8d, 0x04, 0x16, //0x00000868 leaq (%r14,%rdx), %r8 - 0x31, 0xff, //0x0000086c xorl %edi, %edi - 0x90, 0x90, //0x0000086e .p2align 4, 0x90 - //0x00000870 LBB0_81 - 0x41, 0x0f, 0xbe, 0x1c, 0x3e, //0x00000870 movsbl (%r14,%rdi), %ebx - 0x83, 0xfb, 0x20, //0x00000875 cmpl $32, %ebx - 0x0f, 0x87, 0x1d, 0x16, 0x00, 0x00, //0x00000878 ja LBB0_401 - 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000087e movabsq $4294977024, %rax - 0x48, 0x0f, 0xa3, 0xd8, //0x00000888 btq %rbx, %rax - 0x0f, 0x83, 0x09, 0x16, 0x00, 0x00, //0x0000088c jae LBB0_401 - 0x48, 0x83, 0xc7, 0x01, //0x00000892 addq $1, %rdi - 0x48, 0x39, 0xfa, //0x00000896 cmpq %rdi, %rdx - 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000899 jne LBB0_81 - 0x4d, 0x89, 0xc6, //0x0000089f movq %r8, %r14 - 0x4c, 0x8b, 0x44, 0x24, 0x10, //0x000008a2 movq $16(%rsp), %r8 - //0x000008a7 LBB0_85 - 0x4d, 0x29, 0xc6, //0x000008a7 subq %r8, %r14 - 0x49, 0x39, 0xf6, //0x000008aa cmpq %rsi, %r14 - 0x0f, 0x82, 0x1f, 0x00, 0x00, 0x00, //0x000008ad jb LBB0_87 - 0xe9, 0xd1, 0x24, 0x00, 0x00, //0x000008b3 jmp LBB0_567 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008b8 .p2align 4, 0x90 - //0x000008c0 LBB0_86 - 0xf7, 0xd7, //0x000008c0 notl %edi - 0x44, 0x0f, 0xbc, 0xf7, //0x000008c2 bsfl %edi, %r14d - 0x49, 0x29, 0xd6, //0x000008c6 subq %rdx, %r14 - 0x49, 0x39, 0xf6, //0x000008c9 cmpq %rsi, %r14 - 0x0f, 0x83, 0xb7, 0x24, 0x00, 0x00, //0x000008cc jae LBB0_567 - //0x000008d2 LBB0_87 - 0x49, 0x8d, 0x56, 0x01, //0x000008d2 leaq $1(%r14), %rdx - 0x49, 0x89, 0x13, //0x000008d6 movq %rdx, (%r11) - 0x43, 0x0f, 0xbe, 0x3c, 0x30, //0x000008d9 movsbl (%r8,%r14), %edi - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000008de movq $-1, %r15 - 0x85, 0xff, //0x000008e5 testl %edi, %edi - 0x0f, 0x84, 0xeb, 0x2b, 0x00, 0x00, //0x000008e7 je LBB0_638 - 0x49, 0x8b, 0x31, //0x000008ed movq (%r9), %rsi - 0x48, 0x8d, 0x56, 0xff, //0x000008f0 leaq $-1(%rsi), %rdx - 0x41, 0x8b, 0x1c, 0xf1, //0x000008f4 movl (%r9,%rsi,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x000008f8 cmpq $-1, %rcx - 0x4c, 0x0f, 0x45, 0xf1, //0x000008fc cmovneq %rcx, %r14 - 0x83, 0xc3, 0xff, //0x00000900 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x00000903 cmpl $5, %ebx - 0x0f, 0x87, 0xeb, 0x01, 0x00, 0x00, //0x00000906 ja LBB0_119 - 0x48, 0x8d, 0x05, 0x79, 0x30, 0x00, 0x00, //0x0000090c leaq $12409(%rip), %rax /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x0c, 0x98, //0x00000913 movslq (%rax,%rbx,4), %rcx - 0x48, 0x01, 0xc1, //0x00000917 addq %rax, %rcx - 0xff, 0xe1, //0x0000091a jmpq *%rcx - //0x0000091c LBB0_90 - 0x83, 0xff, 0x2c, //0x0000091c cmpl $44, %edi - 0x0f, 0x84, 0x4f, 0x06, 0x00, 0x00, //0x0000091f je LBB0_189 - 0x83, 0xff, 0x5d, //0x00000925 cmpl $93, %edi - 0x0f, 0x84, 0x32, 0x06, 0x00, 0x00, //0x00000928 je LBB0_92 - 0xe9, 0x9e, 0x2b, 0x00, 0x00, //0x0000092e jmp LBB0_637 - //0x00000933 LBB0_93 - 0x40, 0x80, 0xff, 0x5d, //0x00000933 cmpb $93, %dil - 0x0f, 0x84, 0x23, 0x06, 0x00, 0x00, //0x00000937 je LBB0_92 - 0x49, 0xc7, 0x04, 0xf1, 0x01, 0x00, 0x00, 0x00, //0x0000093d movq $1, (%r9,%rsi,8) - 0x83, 0xff, 0x7b, //0x00000945 cmpl $123, %edi - 0x0f, 0x86, 0xb5, 0x01, 0x00, 0x00, //0x00000948 jbe LBB0_95 - 0xe9, 0x7e, 0x2b, 0x00, 0x00, //0x0000094e jmp LBB0_637 - //0x00000953 LBB0_96 - 0x40, 0x80, 0xff, 0x22, //0x00000953 cmpb $34, %dil - 0x0f, 0x85, 0x74, 0x2b, 0x00, 0x00, //0x00000957 jne LBB0_637 - 0x49, 0xc7, 0x04, 0xf1, 0x04, 0x00, 0x00, 0x00, //0x0000095d movq $4, (%r9,%rsi,8) - 0x4d, 0x8b, 0x03, //0x00000965 movq (%r11), %r8 - 0x4d, 0x8b, 0x65, 0x08, //0x00000968 movq $8(%r13), %r12 - 0x41, 0xf6, 0xc2, 0x20, //0x0000096c testb $32, %r10b - 0x0f, 0x85, 0x7f, 0x07, 0x00, 0x00, //0x00000970 jne LBB0_198 - 0x4c, 0x89, 0xe3, //0x00000976 movq %r12, %rbx - 0x4c, 0x29, 0xc3, //0x00000979 subq %r8, %rbx - 0x0f, 0x84, 0x26, 0x2d, 0x00, 0x00, //0x0000097c je LBB0_670 - 0x48, 0x83, 0xfb, 0x40, //0x00000982 cmpq $64, %rbx - 0x0f, 0x82, 0x94, 0x18, 0x00, 0x00, //0x00000986 jb LBB0_427 - 0x4c, 0x89, 0xc6, //0x0000098c movq %r8, %rsi - 0x48, 0xf7, 0xd6, //0x0000098f notq %rsi - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000992 movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x0000099a movq %r8, %r15 - 0x45, 0x31, 0xd2, //0x0000099d xorl %r10d, %r10d - //0x000009a0 .p2align 4, 0x90 - //0x000009a0 LBB0_101 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000009a0 movq $16(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x000009a5 vmovdqu (%rax,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x000009ab vmovdqu $32(%rax,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000009b2 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000009b6 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000009ba vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x000009be vpmovmskb %ymm2, %ecx - 0xc5, 0xfd, 0x74, 0xc7, //0x000009c2 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000009c6 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000009ca vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000009ce vpmovmskb %ymm0, %eax - 0x48, 0xc1, 0xe1, 0x20, //0x000009d2 shlq $32, %rcx - 0x48, 0x09, 0xcf, //0x000009d6 orq %rcx, %rdi - 0x48, 0xc1, 0xe0, 0x20, //0x000009d9 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x000009dd orq %rax, %rdx - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000009e0 jne LBB0_110 - 0x4d, 0x85, 0xd2, //0x000009e6 testq %r10, %r10 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x000009e9 jne LBB0_112 - 0x45, 0x31, 0xd2, //0x000009ef xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000009f2 testq %rdi, %rdi - 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x000009f5 jne LBB0_114 - //0x000009fb LBB0_104 - 0x48, 0x83, 0xc3, 0xc0, //0x000009fb addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x000009ff addq $-64, %rsi - 0x49, 0x83, 0xc7, 0x40, //0x00000a03 addq $64, %r15 - 0x48, 0x83, 0xfb, 0x3f, //0x00000a07 cmpq $63, %rbx - 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x00000a0b ja LBB0_101 - 0xe9, 0xab, 0x14, 0x00, 0x00, //0x00000a11 jmp LBB0_105 - //0x00000a16 LBB0_110 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000a16 movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x00000a1b movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x00000a1e movq %r11, %r13 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000a21 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00000a26 jne LBB0_113 - 0x48, 0x0f, 0xbc, 0xc2, //0x00000a2c bsfq %rdx, %rax - 0x4c, 0x01, 0xf8, //0x00000a30 addq %r15, %rax - 0x48, 0x89, 0x04, 0x24, //0x00000a33 movq %rax, (%rsp) - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000a37 jmp LBB0_113 - //0x00000a3c LBB0_112 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000a3c movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x00000a41 movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x00000a44 movq %r11, %r13 - //0x00000a47 LBB0_113 - 0x4c, 0x89, 0xd0, //0x00000a47 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00000a4a notq %rax - 0x48, 0x21, 0xd0, //0x00000a4d andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00000a50 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00000a54 orq %r10, %r11 - 0x4c, 0x89, 0xd9, //0x00000a57 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00000a5a notq %rcx - 0x48, 0x21, 0xd1, //0x00000a5d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a60 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x00000a6a andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x00000a6d xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x00000a70 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x00000a73 setb %r10b - 0x48, 0x01, 0xc9, //0x00000a77 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a7a movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00000a84 xorq %rax, %rcx - 0x4c, 0x21, 0xd9, //0x00000a87 andq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00000a8a notq %rcx - 0x48, 0x21, 0xcf, //0x00000a8d andq %rcx, %rdi - 0x4d, 0x89, 0xeb, //0x00000a90 movq %r13, %r11 - 0x4d, 0x89, 0xcd, //0x00000a93 movq %r9, %r13 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00000a96 movq $32(%rsp), %r9 - 0x48, 0x85, 0xff, //0x00000a9b testq %rdi, %rdi - 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x00000a9e je LBB0_104 - //0x00000aa4 LBB0_114 - 0x4c, 0x0f, 0xbc, 0xff, //0x00000aa4 bsfq %rdi, %r15 - 0x49, 0x29, 0xf7, //0x00000aa8 subq %rsi, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000aab movq $24(%rsp), %r10 - 0xe9, 0x3c, 0x09, 0x00, 0x00, //0x00000ab0 jmp LBB0_240 - //0x00000ab5 LBB0_115 - 0x40, 0x80, 0xff, 0x3a, //0x00000ab5 cmpb $58, %dil - 0x0f, 0x85, 0x12, 0x2a, 0x00, 0x00, //0x00000ab9 jne LBB0_637 - 0x49, 0xc7, 0x04, 0xf1, 0x00, 0x00, 0x00, 0x00, //0x00000abf movq $0, (%r9,%rsi,8) - 0xe9, 0x24, 0xfc, 0xff, 0xff, //0x00000ac7 jmp LBB0_55 - //0x00000acc LBB0_117 - 0x83, 0xff, 0x2c, //0x00000acc cmpl $44, %edi - 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x00000acf jne LBB0_118 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000ad5 cmpq $4095, %rsi - 0x0f, 0x8f, 0xc6, 0x22, 0x00, 0x00, //0x00000adc jg LBB0_650 - 0x48, 0x8d, 0x4e, 0x01, //0x00000ae2 leaq $1(%rsi), %rcx - 0x49, 0x89, 0x09, //0x00000ae6 movq %rcx, (%r9) - 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000ae9 movq $3, $8(%r9,%rsi,8) - 0xe9, 0xf9, 0xfb, 0xff, 0xff, //0x00000af2 jmp LBB0_55 - //0x00000af7 LBB0_119 - 0x49, 0x89, 0x11, //0x00000af7 movq %rdx, (%r9) - 0x83, 0xff, 0x7b, //0x00000afa cmpl $123, %edi - 0x0f, 0x87, 0xce, 0x29, 0x00, 0x00, //0x00000afd ja LBB0_637 - //0x00000b03 LBB0_95 - 0x89, 0xf8, //0x00000b03 movl %edi, %eax - 0x48, 0x8d, 0x0d, 0x98, 0x2e, 0x00, 0x00, //0x00000b05 leaq $11928(%rip), %rcx /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x04, 0x81, //0x00000b0c movslq (%rcx,%rax,4), %rax - 0x48, 0x01, 0xc8, //0x00000b10 addq %rcx, %rax - 0xff, 0xe0, //0x00000b13 jmpq *%rax - //0x00000b15 LBB0_134 - 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00000b15 movq %r13, $56(%rsp) - 0x4d, 0x8b, 0x6d, 0x08, //0x00000b1a movq $8(%r13), %r13 - 0x49, 0x8b, 0x03, //0x00000b1e movq (%r11), %rax - 0x4c, 0x8d, 0x78, 0xff, //0x00000b21 leaq $-1(%rax), %r15 - 0x4d, 0x29, 0xfd, //0x00000b25 subq %r15, %r13 - 0x0f, 0x84, 0x82, 0x29, 0x00, 0x00, //0x00000b28 je LBB0_633 - 0x48, 0x89, 0x44, 0x24, 0x28, //0x00000b2e movq %rax, $40(%rsp) - 0x4d, 0x8d, 0x24, 0x00, //0x00000b33 leaq (%r8,%rax), %r12 - 0x49, 0x83, 0xc4, 0xff, //0x00000b37 addq $-1, %r12 - 0x41, 0x80, 0x3c, 0x24, 0x30, //0x00000b3b cmpb $48, (%r12) - 0x0f, 0x85, 0x43, 0x00, 0x00, 0x00, //0x00000b40 jne LBB0_139 - 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000b46 movl $1, %r8d - 0x49, 0x83, 0xfd, 0x01, //0x00000b4c cmpq $1, %r13 - 0x0f, 0x84, 0xae, 0xfb, 0xff, 0xff, //0x00000b50 je LBB0_53 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00000b56 movq $16(%rsp), %rax - 0x48, 0x8b, 0x4c, 0x24, 0x28, //0x00000b5b movq $40(%rsp), %rcx - 0x8a, 0x0c, 0x08, //0x00000b60 movb (%rax,%rcx), %cl - 0x80, 0xc1, 0xd2, //0x00000b63 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000b66 cmpb $55, %cl - 0x0f, 0x87, 0x95, 0xfb, 0xff, 0xff, //0x00000b69 ja LBB0_53 - 0x0f, 0xb6, 0xc1, //0x00000b6f movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000b72 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x00000b7c btq %rax, %rcx - 0x4c, 0x89, 0xf9, //0x00000b80 movq %r15, %rcx - 0x0f, 0x83, 0x4e, 0xfb, 0xff, 0xff, //0x00000b83 jae LBB0_54 - //0x00000b89 LBB0_139 - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000b89 movq $-1, %r11 - 0x49, 0x83, 0xfd, 0x20, //0x00000b90 cmpq $32, %r13 - 0x0f, 0x82, 0x29, 0x16, 0x00, 0x00, //0x00000b94 jb LBB0_419 - 0x45, 0x31, 0xc0, //0x00000b9a xorl %r8d, %r8d - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000b9d movq $-1, %r10 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000ba4 movq $-1, (%rsp) - 0x90, 0x90, 0x90, 0x90, //0x00000bac .p2align 4, 0x90 - //0x00000bb0 LBB0_141 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x04, //0x00000bb0 vmovdqu (%r12,%r8), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00000bb6 vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0xa5, 0x64, 0xd0, //0x00000bbb vpcmpgtb %ymm0, %ymm11, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00000bbf vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x9d, 0x74, 0xd0, //0x00000bc3 vpcmpeqb %ymm0, %ymm12, %ymm2 - 0xc5, 0x95, 0x74, 0xd8, //0x00000bc7 vpcmpeqb %ymm0, %ymm13, %ymm3 - 0xc5, 0xe5, 0xeb, 0xd2, //0x00000bcb vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x00000bcf vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0x85, 0x74, 0xc0, //0x00000bd3 vpcmpeqb %ymm0, %ymm15, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00000bd7 vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x00000bdb vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xfb, //0x00000bdf vpmovmskb %ymm3, %edi - 0xc5, 0xfd, 0xd7, 0xf2, //0x00000be3 vpmovmskb %ymm2, %esi - 0xc5, 0xf5, 0xeb, 0xc0, //0x00000be7 vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x00000beb vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x00000bef vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x00000bf3 vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x00000bf7 notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x00000bfa bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x00000bfe cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000c01 je LBB0_143 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000c07 movl $-1, %eax - 0xd3, 0xe0, //0x00000c0c shll %cl, %eax - 0xf7, 0xd0, //0x00000c0e notl %eax - 0x21, 0xc2, //0x00000c10 andl %eax, %edx - 0x21, 0xc7, //0x00000c12 andl %eax, %edi - 0x21, 0xf0, //0x00000c14 andl %esi, %eax - 0x89, 0xc6, //0x00000c16 movl %eax, %esi - //0x00000c18 LBB0_143 - 0x8d, 0x5a, 0xff, //0x00000c18 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00000c1b andl %edx, %ebx - 0x0f, 0x85, 0xf1, 0x10, 0x00, 0x00, //0x00000c1d jne LBB0_383 - 0x8d, 0x5f, 0xff, //0x00000c23 leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x00000c26 andl %edi, %ebx - 0x0f, 0x85, 0xe6, 0x10, 0x00, 0x00, //0x00000c28 jne LBB0_383 - 0x8d, 0x5e, 0xff, //0x00000c2e leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000c31 andl %esi, %ebx - 0x0f, 0x85, 0xdb, 0x10, 0x00, 0x00, //0x00000c33 jne LBB0_383 - 0x85, 0xd2, //0x00000c39 testl %edx, %edx - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000c3b je LBB0_149 - 0x0f, 0xbc, 0xd2, //0x00000c41 bsfl %edx, %edx - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000c44 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x65, 0x12, 0x00, 0x00, //0x00000c49 jne LBB0_402 - 0x4c, 0x01, 0xc2, //0x00000c4f addq %r8, %rdx - 0x48, 0x89, 0x14, 0x24, //0x00000c52 movq %rdx, (%rsp) - //0x00000c56 LBB0_149 - 0x85, 0xff, //0x00000c56 testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000c58 je LBB0_152 - 0x0f, 0xbc, 0xd7, //0x00000c5e bsfl %edi, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000c61 cmpq $-1, %r10 - 0x0f, 0x85, 0x49, 0x12, 0x00, 0x00, //0x00000c65 jne LBB0_402 - 0x4c, 0x01, 0xc2, //0x00000c6b addq %r8, %rdx - 0x49, 0x89, 0xd2, //0x00000c6e movq %rdx, %r10 - //0x00000c71 LBB0_152 - 0x85, 0xf6, //0x00000c71 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000c73 je LBB0_155 - 0x0f, 0xbc, 0xd6, //0x00000c79 bsfl %esi, %edx - 0x49, 0x83, 0xfb, 0xff, //0x00000c7c cmpq $-1, %r11 - 0x0f, 0x85, 0x2e, 0x12, 0x00, 0x00, //0x00000c80 jne LBB0_402 - 0x4c, 0x01, 0xc2, //0x00000c86 addq %r8, %rdx - 0x49, 0x89, 0xd3, //0x00000c89 movq %rdx, %r11 - //0x00000c8c LBB0_155 - 0x83, 0xf9, 0x20, //0x00000c8c cmpl $32, %ecx - 0x0f, 0x85, 0xbf, 0x05, 0x00, 0x00, //0x00000c8f jne LBB0_218 - 0x49, 0x83, 0xc5, 0xe0, //0x00000c95 addq $-32, %r13 - 0x49, 0x83, 0xc0, 0x20, //0x00000c99 addq $32, %r8 - 0x49, 0x83, 0xfd, 0x1f, //0x00000c9d cmpq $31, %r13 - 0x0f, 0x87, 0x09, 0xff, 0xff, 0xff, //0x00000ca1 ja LBB0_141 - 0xc5, 0xf8, 0x77, //0x00000ca7 vzeroupper - 0xc5, 0x7e, 0x6f, 0x3d, 0x0e, 0xf5, 0xff, 0xff, //0x00000caa vmovdqu $-2802(%rip), %ymm15 /* LCPI0_18+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x86, 0xf3, 0xff, 0xff, //0x00000cb2 vmovdqu $-3194(%rip), %ymm14 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xde, 0xf4, 0xff, 0xff, //0x00000cba vmovdqu $-2850(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xb6, 0xf4, 0xff, 0xff, //0x00000cc2 vmovdqu $-2890(%rip), %ymm12 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x8e, 0xf4, 0xff, 0xff, //0x00000cca vmovdqu $-2930(%rip), %ymm11 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x66, 0xf4, 0xff, 0xff, //0x00000cd2 vmovdqu $-2970(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000cda vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x05, 0x39, 0xf4, 0xff, 0xff, //0x00000cdf vmovdqu $-3015(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xb1, 0xf3, 0xff, 0xff, //0x00000ce7 vmovdqu $-3151(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x89, 0xf3, 0xff, 0xff, //0x00000cef vmovdqu $-3191(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0x01, 0xf3, 0xff, 0xff, //0x00000cf7 vmovdqu $-3327(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0x4d, 0x01, 0xe0, //0x00000cff addq %r12, %r8 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000d02 movq %r9, $32(%rsp) - 0x49, 0x83, 0xfd, 0x10, //0x00000d07 cmpq $16, %r13 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00000d0b movq $40(%rsp), %rax - 0x0f, 0x82, 0x81, 0x01, 0x00, 0x00, //0x00000d10 jb LBB0_176 - //0x00000d16 LBB0_158 - 0x4c, 0x89, 0xc1, //0x00000d16 movq %r8, %rcx - 0x48, 0x29, 0xc1, //0x00000d19 subq %rax, %rcx - 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00000d1c subq $16(%rsp), %rcx - 0x48, 0x83, 0xc1, 0x01, //0x00000d21 addq $1, %rcx - 0x48, 0x89, 0x4c, 0x24, 0x30, //0x00000d25 movq %rcx, $48(%rsp) - 0x45, 0x31, 0xc9, //0x00000d2a xorl %r9d, %r9d - 0x90, 0x90, 0x90, //0x00000d2d .p2align 4, 0x90 - //0x00000d30 LBB0_159 - 0x4c, 0x89, 0xdb, //0x00000d30 movq %r11, %rbx - 0x4d, 0x89, 0xd3, //0x00000d33 movq %r10, %r11 - 0x4d, 0x89, 0xe2, //0x00000d36 movq %r12, %r10 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x08, //0x00000d39 vmovdqu (%r8,%r9), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0xf9, 0xf4, 0xff, 0xff, //0x00000d3f vpcmpgtb $-2823(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x01, 0xf5, 0xff, 0xff, //0x00000d47 vmovdqu $-2815(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00000d4f vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00000d53 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x01, 0xf5, 0xff, 0xff, //0x00000d57 vpcmpeqb $-2815(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x09, 0xf5, 0xff, 0xff, //0x00000d5f vpcmpeqb $-2807(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00000d67 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0x9d, 0xf4, 0xff, 0xff, //0x00000d6b vpand $-2915(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x05, 0xf5, 0xff, 0xff, //0x00000d73 vpcmpeqb $-2811(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x0d, 0xf5, 0xff, 0xff, //0x00000d7b vpcmpeqb $-2803(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00000d83 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00000d87 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00000d8b vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xe0, //0x00000d8f vpmovmskb %xmm0, %r12d - 0xc5, 0xf9, 0xd7, 0xd3, //0x00000d93 vpmovmskb %xmm3, %edx - 0xc5, 0xf9, 0xd7, 0xfa, //0x00000d97 vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00000d9b vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x00000d9f notl %eax - 0x0f, 0xbc, 0xc8, //0x00000da1 bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00000da4 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000da7 je LBB0_161 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000dad movl $-1, %eax - 0xd3, 0xe0, //0x00000db2 shll %cl, %eax - 0xf7, 0xd0, //0x00000db4 notl %eax - 0x41, 0x21, 0xc4, //0x00000db6 andl %eax, %r12d - 0x21, 0xc2, //0x00000db9 andl %eax, %edx - 0x21, 0xf8, //0x00000dbb andl %edi, %eax - 0x89, 0xc7, //0x00000dbd movl %eax, %edi - //0x00000dbf LBB0_161 - 0xc5, 0xfe, 0x6f, 0x25, 0x19, 0xf4, 0xff, 0xff, //0x00000dbf vmovdqu $-3047(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x41, 0x8d, 0x74, 0x24, 0xff, //0x00000dc7 leal $-1(%r12), %esi - 0x44, 0x21, 0xe6, //0x00000dcc andl %r12d, %esi - 0x0f, 0x85, 0xaa, 0x11, 0x00, 0x00, //0x00000dcf jne LBB0_405 - 0x8d, 0x72, 0xff, //0x00000dd5 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x00000dd8 andl %edx, %esi - 0x0f, 0x85, 0x9f, 0x11, 0x00, 0x00, //0x00000dda jne LBB0_405 - 0x8d, 0x77, 0xff, //0x00000de0 leal $-1(%rdi), %esi - 0x21, 0xfe, //0x00000de3 andl %edi, %esi - 0x0f, 0x85, 0x94, 0x11, 0x00, 0x00, //0x00000de5 jne LBB0_405 - 0x45, 0x85, 0xe4, //0x00000deb testl %r12d, %r12d - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x00000dee je LBB0_167 - 0x41, 0x0f, 0xbc, 0xf4, //0x00000df4 bsfl %r12d, %esi - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000df8 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x94, 0x12, 0x00, 0x00, //0x00000dfd jne LBB0_413 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000e03 movq $48(%rsp), %rax - 0x4c, 0x01, 0xc8, //0x00000e08 addq %r9, %rax - 0x48, 0x01, 0xc6, //0x00000e0b addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00000e0e movq %rsi, (%rsp) - //0x00000e12 LBB0_167 - 0x85, 0xd2, //0x00000e12 testl %edx, %edx - 0x4d, 0x89, 0xd4, //0x00000e14 movq %r10, %r12 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000e17 je LBB0_170 - 0x0f, 0xbc, 0xd2, //0x00000e1d bsfl %edx, %edx - 0x49, 0x83, 0xfb, 0xff, //0x00000e20 cmpq $-1, %r11 - 0x0f, 0x85, 0x31, 0x12, 0x00, 0x00, //0x00000e24 jne LBB0_409 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000e2a movq $48(%rsp), %rax - 0x4c, 0x01, 0xc8, //0x00000e2f addq %r9, %rax - 0x48, 0x01, 0xc2, //0x00000e32 addq %rax, %rdx - 0x49, 0x89, 0xd2, //0x00000e35 movq %rdx, %r10 - 0x85, 0xff, //0x00000e38 testl %edi, %edi - 0x49, 0x89, 0xdb, //0x00000e3a movq %rbx, %r11 - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00000e3d jne LBB0_171 - 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00000e43 jmp LBB0_173 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e48 .p2align 4, 0x90 - //0x00000e50 LBB0_170 - 0x4d, 0x89, 0xda, //0x00000e50 movq %r11, %r10 - 0x85, 0xff, //0x00000e53 testl %edi, %edi - 0x49, 0x89, 0xdb, //0x00000e55 movq %rbx, %r11 - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000e58 je LBB0_173 - //0x00000e5e LBB0_171 - 0x0f, 0xbc, 0xd7, //0x00000e5e bsfl %edi, %edx - 0x49, 0x83, 0xfb, 0xff, //0x00000e61 cmpq $-1, %r11 - 0x0f, 0x85, 0xf0, 0x11, 0x00, 0x00, //0x00000e65 jne LBB0_409 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000e6b movq $48(%rsp), %rax - 0x4c, 0x01, 0xc8, //0x00000e70 addq %r9, %rax - 0x48, 0x01, 0xc2, //0x00000e73 addq %rax, %rdx - 0x49, 0x89, 0xd3, //0x00000e76 movq %rdx, %r11 - //0x00000e79 LBB0_173 - 0x83, 0xf9, 0x10, //0x00000e79 cmpl $16, %ecx - 0x0f, 0x85, 0x89, 0x05, 0x00, 0x00, //0x00000e7c jne LBB0_243 - 0x49, 0x83, 0xc5, 0xf0, //0x00000e82 addq $-16, %r13 - 0x49, 0x83, 0xc1, 0x10, //0x00000e86 addq $16, %r9 - 0x49, 0x83, 0xfd, 0x0f, //0x00000e8a cmpq $15, %r13 - 0x0f, 0x87, 0x9c, 0xfe, 0xff, 0xff, //0x00000e8e ja LBB0_159 - 0x4d, 0x01, 0xc8, //0x00000e94 addq %r9, %r8 - //0x00000e97 LBB0_176 - 0x4d, 0x85, 0xed, //0x00000e97 testq %r13, %r13 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00000e9a movq $32(%rsp), %r9 - 0xc5, 0xfe, 0x6f, 0x25, 0x39, 0xf3, 0xff, 0xff, //0x00000e9f vmovdqu $-3271(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00000ea7 movq $40(%rsp), %rax - 0x0f, 0x84, 0x82, 0x05, 0x00, 0x00, //0x00000eac je LBB0_245 - 0x4b, 0x8d, 0x34, 0x28, //0x00000eb2 leaq (%r8,%r13), %rsi - 0x4c, 0x89, 0xc7, //0x00000eb6 movq %r8, %rdi - 0x48, 0x29, 0xc7, //0x00000eb9 subq %rax, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x10, //0x00000ebc subq $16(%rsp), %rdi - 0x48, 0x83, 0xc7, 0x01, //0x00000ec1 addq $1, %rdi - 0x31, 0xc9, //0x00000ec5 xorl %ecx, %ecx - 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00000ec7 jmp LBB0_181 - //0x00000ecc LBB0_178 - 0x49, 0x83, 0xfb, 0xff, //0x00000ecc cmpq $-1, %r11 - 0x0f, 0x85, 0xb1, 0x10, 0x00, 0x00, //0x00000ed0 jne LBB0_406 - 0x4c, 0x8d, 0x1c, 0x0f, //0x00000ed6 leaq (%rdi,%rcx), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000eda .p2align 4, 0x90 - //0x00000ee0 LBB0_180 - 0x48, 0x83, 0xc1, 0x01, //0x00000ee0 addq $1, %rcx - 0x49, 0x39, 0xcd, //0x00000ee4 cmpq %rcx, %r13 - 0x0f, 0x84, 0xe3, 0x0d, 0x00, 0x00, //0x00000ee7 je LBB0_375 - //0x00000eed LBB0_181 - 0x41, 0x0f, 0xbe, 0x14, 0x08, //0x00000eed movsbl (%r8,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00000ef2 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00000ef5 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00000ef8 jb LBB0_180 - 0x8d, 0x5a, 0xd5, //0x00000efe leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00000f01 cmpl $26, %ebx - 0x0f, 0x87, 0x28, 0x00, 0x00, 0x00, //0x00000f04 ja LBB0_186 - 0x48, 0x8d, 0x15, 0xef, 0x2c, 0x00, 0x00, //0x00000f0a leaq $11503(%rip), %rdx /* LJTI0_4+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00000f11 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00000f15 addq %rdx, %rax - 0xff, 0xe0, //0x00000f18 jmpq *%rax - //0x00000f1a LBB0_184 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000f1a cmpq $-1, (%rsp) - 0x0f, 0x85, 0x62, 0x10, 0x00, 0x00, //0x00000f1f jne LBB0_406 - 0x48, 0x8d, 0x04, 0x0f, //0x00000f25 leaq (%rdi,%rcx), %rax - 0x48, 0x89, 0x04, 0x24, //0x00000f29 movq %rax, (%rsp) - 0xe9, 0xae, 0xff, 0xff, 0xff, //0x00000f2d jmp LBB0_180 - //0x00000f32 LBB0_186 - 0x83, 0xfa, 0x65, //0x00000f32 cmpl $101, %edx - 0x0f, 0x85, 0xf6, 0x04, 0x00, 0x00, //0x00000f35 jne LBB0_244 - //0x00000f3b LBB0_187 - 0x49, 0x83, 0xfa, 0xff, //0x00000f3b cmpq $-1, %r10 - 0x0f, 0x85, 0x42, 0x10, 0x00, 0x00, //0x00000f3f jne LBB0_406 - 0x4c, 0x8d, 0x14, 0x0f, //0x00000f45 leaq (%rdi,%rcx), %r10 - 0xe9, 0x92, 0xff, 0xff, 0xff, //0x00000f49 jmp LBB0_180 - //0x00000f4e LBB0_120 - 0x83, 0xff, 0x22, //0x00000f4e cmpl $34, %edi - 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000f51 je LBB0_121 - //0x00000f57 LBB0_118 - 0x83, 0xff, 0x7d, //0x00000f57 cmpl $125, %edi - 0x0f, 0x85, 0x71, 0x25, 0x00, 0x00, //0x00000f5a jne LBB0_637 - //0x00000f60 LBB0_92 - 0x49, 0x89, 0x11, //0x00000f60 movq %rdx, (%r9) - 0x4d, 0x89, 0xf7, //0x00000f63 movq %r14, %r15 - 0x48, 0x85, 0xd2, //0x00000f66 testq %rdx, %rdx - 0x0f, 0x85, 0xa1, 0xf7, 0xff, 0xff, //0x00000f69 jne LBB0_57 - 0xe9, 0x64, 0x25, 0x00, 0x00, //0x00000f6f jmp LBB0_638 - //0x00000f74 LBB0_189 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000f74 cmpq $4095, %rsi - 0x0f, 0x8f, 0x27, 0x1e, 0x00, 0x00, //0x00000f7b jg LBB0_650 - 0x48, 0x8d, 0x4e, 0x01, //0x00000f81 leaq $1(%rsi), %rcx - 0x49, 0x89, 0x09, //0x00000f85 movq %rcx, (%r9) - 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000f88 movq $0, $8(%r9,%rsi,8) - 0xe9, 0x5a, 0xf7, 0xff, 0xff, //0x00000f91 jmp LBB0_55 - //0x00000f96 LBB0_121 - 0x49, 0xc7, 0x04, 0xf1, 0x02, 0x00, 0x00, 0x00, //0x00000f96 movq $2, (%r9,%rsi,8) - 0x4d, 0x8b, 0x03, //0x00000f9e movq (%r11), %r8 - 0x4d, 0x8b, 0x65, 0x08, //0x00000fa1 movq $8(%r13), %r12 - 0x4c, 0x89, 0xe3, //0x00000fa5 movq %r12, %rbx - 0x41, 0xf6, 0xc2, 0x20, //0x00000fa8 testb $32, %r10b - 0x0f, 0x85, 0xc7, 0x02, 0x00, 0x00, //0x00000fac jne LBB0_219 - 0x4c, 0x29, 0xc3, //0x00000fb2 subq %r8, %rbx - 0x0f, 0x84, 0xed, 0x26, 0x00, 0x00, //0x00000fb5 je LBB0_670 - 0x48, 0x83, 0xfb, 0x40, //0x00000fbb cmpq $64, %rbx - 0x0f, 0x82, 0xdc, 0x12, 0x00, 0x00, //0x00000fbf jb LBB0_434 - 0x4c, 0x89, 0xc6, //0x00000fc5 movq %r8, %rsi - 0x48, 0xf7, 0xd6, //0x00000fc8 notq %rsi - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000fcb movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x00000fd3 movq %r8, %r15 - 0x45, 0x31, 0xd2, //0x00000fd6 xorl %r10d, %r10d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000fd9 .p2align 4, 0x90 - //0x00000fe0 LBB0_125 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00000fe0 movq $16(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00000fe5 vmovdqu (%rax,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x00000feb vmovdqu $32(%rax,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00000ff2 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00000ff6 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00000ffa vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00000ffe vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x00001002 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00001006 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x0000100a vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x0000100e vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe0, 0x20, //0x00001012 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00001016 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x00001019 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x0000101d orq %rcx, %rdx - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00001020 jne LBB0_193 - 0x4d, 0x85, 0xd2, //0x00001026 testq %r10, %r10 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00001029 jne LBB0_195 - 0x45, 0x31, 0xd2, //0x0000102f xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x00001032 testq %rdi, %rdi - 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x00001035 jne LBB0_197 - //0x0000103b LBB0_128 - 0x48, 0x83, 0xc3, 0xc0, //0x0000103b addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x0000103f addq $-64, %rsi - 0x49, 0x83, 0xc7, 0x40, //0x00001043 addq $64, %r15 - 0x48, 0x83, 0xfb, 0x3f, //0x00001047 cmpq $63, %rbx - 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x0000104b ja LBB0_125 - 0xe9, 0x60, 0x0f, 0x00, 0x00, //0x00001051 jmp LBB0_129 - //0x00001056 LBB0_193 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00001056 movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x0000105b movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x0000105e movq %r11, %r13 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001061 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00001066 jne LBB0_196 - 0x48, 0x0f, 0xbc, 0xc2, //0x0000106c bsfq %rdx, %rax - 0x4c, 0x01, 0xf8, //0x00001070 addq %r15, %rax - 0x48, 0x89, 0x04, 0x24, //0x00001073 movq %rax, (%rsp) - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00001077 jmp LBB0_196 - //0x0000107c LBB0_195 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x0000107c movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x00001081 movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x00001084 movq %r11, %r13 - //0x00001087 LBB0_196 - 0x4c, 0x89, 0xd0, //0x00001087 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000108a notq %rax - 0x48, 0x21, 0xd0, //0x0000108d andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00001090 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00001094 orq %r10, %r11 - 0x4c, 0x89, 0xd9, //0x00001097 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x0000109a notq %rcx - 0x48, 0x21, 0xd1, //0x0000109d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000010a0 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x000010aa andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x000010ad xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x000010b0 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x000010b3 setb %r10b - 0x48, 0x01, 0xc9, //0x000010b7 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000010ba movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x000010c4 xorq %rax, %rcx - 0x4c, 0x21, 0xd9, //0x000010c7 andq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x000010ca notq %rcx - 0x48, 0x21, 0xcf, //0x000010cd andq %rcx, %rdi - 0x4d, 0x89, 0xeb, //0x000010d0 movq %r13, %r11 - 0x4d, 0x89, 0xcd, //0x000010d3 movq %r9, %r13 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x000010d6 movq $32(%rsp), %r9 - 0x48, 0x85, 0xff, //0x000010db testq %rdi, %rdi - 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x000010de je LBB0_128 - //0x000010e4 LBB0_197 - 0x4c, 0x0f, 0xbc, 0xff, //0x000010e4 bsfq %rdi, %r15 - 0x49, 0x29, 0xf7, //0x000010e8 subq %rsi, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000010eb movq $24(%rsp), %r10 - 0xe9, 0x42, 0x04, 0x00, 0x00, //0x000010f0 jmp LBB0_259 - //0x000010f5 LBB0_198 - 0x4c, 0x89, 0xc8, //0x000010f5 movq %r9, %rax - 0x4d, 0x89, 0xe9, //0x000010f8 movq %r13, %r9 - 0x4d, 0x89, 0xe5, //0x000010fb movq %r12, %r13 - 0x4d, 0x29, 0xc5, //0x000010fe subq %r8, %r13 - 0x0f, 0x84, 0xa1, 0x25, 0x00, 0x00, //0x00001101 je LBB0_670 - 0x49, 0x83, 0xfd, 0x40, //0x00001107 cmpq $64, %r13 - 0x0f, 0x82, 0x32, 0x11, 0x00, 0x00, //0x0000110b jb LBB0_428 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00001111 movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x00001119 movq %r8, %r15 - 0x45, 0x31, 0xdb, //0x0000111c xorl %r11d, %r11d - 0x90, //0x0000111f .p2align 4, 0x90 - //0x00001120 LBB0_201 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00001120 movq $16(%rsp), %rcx - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x39, //0x00001125 vmovdqu (%rcx,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x39, 0x20, //0x0000112b vmovdqu $32(%rcx,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001132 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00001136 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x0000113a vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x0000113e vpmovmskb %ymm2, %ecx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001142 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001146 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x0000114a vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x0000114e vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x00001152 vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001156 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x0000115b vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000115f vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe1, 0x20, //0x00001163 shlq $32, %rcx - 0x48, 0x09, 0xcf, //0x00001167 orq %rcx, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x0000116a shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x0000116e shlq $32, %rsi - 0x48, 0x09, 0xda, //0x00001172 orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001175 jne LBB0_212 - 0x4d, 0x85, 0xdb, //0x0000117b testq %r11, %r11 - 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x0000117e jne LBB0_214 - 0x45, 0x31, 0xdb, //0x00001184 xorl %r11d, %r11d - //0x00001187 LBB0_204 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001187 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000118b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00001190 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001194 vpmovmskb %ymm0, %ecx - 0x48, 0x09, 0xce, //0x00001198 orq %rcx, %rsi - 0x48, 0x85, 0xff, //0x0000119b testq %rdi, %rdi - 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x0000119e jne LBB0_215 - 0x48, 0x85, 0xf6, //0x000011a4 testq %rsi, %rsi - 0x0f, 0x85, 0x8a, 0x23, 0x00, 0x00, //0x000011a7 jne LBB0_643 - 0x49, 0x83, 0xc5, 0xc0, //0x000011ad addq $-64, %r13 - 0x49, 0x83, 0xc7, 0x40, //0x000011b1 addq $64, %r15 - 0x49, 0x83, 0xfd, 0x3f, //0x000011b5 cmpq $63, %r13 - 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x000011b9 ja LBB0_201 - 0xe9, 0x58, 0x0d, 0x00, 0x00, //0x000011bf jmp LBB0_207 - //0x000011c4 LBB0_212 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000011c4 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000011c9 jne LBB0_214 - 0x48, 0x0f, 0xbc, 0xca, //0x000011cf bsfq %rdx, %rcx - 0x4c, 0x01, 0xf9, //0x000011d3 addq %r15, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x000011d6 movq %rcx, (%rsp) - //0x000011da LBB0_214 - 0x4c, 0x89, 0xd9, //0x000011da movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x000011dd notq %rcx - 0x48, 0x21, 0xd1, //0x000011e0 andq %rdx, %rcx - 0x4c, 0x8d, 0x14, 0x09, //0x000011e3 leaq (%rcx,%rcx), %r10 - 0x4d, 0x09, 0xda, //0x000011e7 orq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x000011ea movq %r10, %rbx - 0x48, 0xf7, 0xd3, //0x000011ed notq %rbx - 0x48, 0x21, 0xd3, //0x000011f0 andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000011f3 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000011fd andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x00001200 xorl %r11d, %r11d - 0x48, 0x01, 0xcb, //0x00001203 addq %rcx, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x00001206 setb %r11b - 0x48, 0x01, 0xdb, //0x0000120a addq %rbx, %rbx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000120d movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xcb, //0x00001217 xorq %rcx, %rbx - 0x4c, 0x21, 0xd3, //0x0000121a andq %r10, %rbx - 0x48, 0xf7, 0xd3, //0x0000121d notq %rbx - 0x48, 0x21, 0xdf, //0x00001220 andq %rbx, %rdi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001223 movq $24(%rsp), %r10 - 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x00001228 jmp LBB0_204 - //0x0000122d LBB0_215 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000122d bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x00001231 testq %rsi, %rsi - 0x0f, 0x84, 0x97, 0x01, 0x00, 0x00, //0x00001234 je LBB0_238 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000123a bsfq %rsi, %rdx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000123e movq $8(%rsp), %r11 - 0x4d, 0x89, 0xcd, //0x00001243 movq %r9, %r13 - 0x48, 0x39, 0xca, //0x00001246 cmpq %rcx, %rdx - 0x0f, 0x83, 0x98, 0x01, 0x00, 0x00, //0x00001249 jae LBB0_239 - 0xe9, 0x6f, 0x24, 0x00, 0x00, //0x0000124f jmp LBB0_217 - //0x00001254 LBB0_218 - 0x4c, 0x01, 0xc1, //0x00001254 addq %r8, %rcx - 0x4c, 0x01, 0xe1, //0x00001257 addq %r12, %rcx - 0xc5, 0xf8, 0x77, //0x0000125a vzeroupper - 0x49, 0x89, 0xc8, //0x0000125d movq %rcx, %r8 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001260 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00001267 movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x0000126b testq %rdx, %rdx - 0x0f, 0x85, 0xd4, 0x01, 0x00, 0x00, //0x0000126e jne LBB0_246 - 0xe9, 0x46, 0x22, 0x00, 0x00, //0x00001274 jmp LBB0_636 - //0x00001279 LBB0_219 - 0x4c, 0x29, 0xc3, //0x00001279 subq %r8, %rbx - 0x0f, 0x84, 0x26, 0x24, 0x00, 0x00, //0x0000127c je LBB0_670 - 0x48, 0x83, 0xfb, 0x40, //0x00001282 cmpq $64, %rbx - 0x0f, 0x82, 0x38, 0x10, 0x00, 0x00, //0x00001286 jb LBB0_435 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000128c movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x00001294 movq %r8, %r15 - 0x45, 0x31, 0xdb, //0x00001297 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000129a .p2align 4, 0x90 - //0x000012a0 LBB0_222 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000012a0 movq $16(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x000012a5 vmovdqu (%rax,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x000012ab vmovdqu $32(%rax,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000012b2 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000012b6 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000012ba vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000012be vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x000012c2 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x000012c6 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x000012ca vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x000012ce vpmovmskb %ymm2, %ecx - 0xc5, 0xbd, 0x64, 0xd1, //0x000012d2 vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000012d6 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x000012db vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000012df vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x000012e3 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000012e7 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000012ea shlq $32, %rcx - 0x48, 0xc1, 0xe6, 0x20, //0x000012ee shlq $32, %rsi - 0x48, 0x09, 0xca, //0x000012f2 orq %rcx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000012f5 jne LBB0_233 - 0x4d, 0x85, 0xdb, //0x000012fb testq %r11, %r11 - 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x000012fe jne LBB0_235 - 0x45, 0x31, 0xdb, //0x00001304 xorl %r11d, %r11d - //0x00001307 LBB0_225 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001307 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000130b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00001310 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x00001314 vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00001318 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x0000131b testq %rdi, %rdi - 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x0000131e jne LBB0_236 - 0x48, 0x85, 0xf6, //0x00001324 testq %rsi, %rsi - 0x0f, 0x85, 0x0a, 0x22, 0x00, 0x00, //0x00001327 jne LBB0_643 - 0x48, 0x83, 0xc3, 0xc0, //0x0000132d addq $-64, %rbx - 0x49, 0x83, 0xc7, 0x40, //0x00001331 addq $64, %r15 - 0x48, 0x83, 0xfb, 0x3f, //0x00001335 cmpq $63, %rbx - 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x00001339 ja LBB0_222 - 0xe9, 0xcd, 0x0c, 0x00, 0x00, //0x0000133f jmp LBB0_228 - //0x00001344 LBB0_233 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001344 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00001349 jne LBB0_235 - 0x48, 0x0f, 0xbc, 0xc2, //0x0000134f bsfq %rdx, %rax - 0x4c, 0x01, 0xf8, //0x00001353 addq %r15, %rax - 0x48, 0x89, 0x04, 0x24, //0x00001356 movq %rax, (%rsp) - //0x0000135a LBB0_235 - 0x4c, 0x89, 0xd8, //0x0000135a movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x0000135d notq %rax - 0x48, 0x21, 0xd0, //0x00001360 andq %rdx, %rax - 0x4c, 0x8d, 0x14, 0x00, //0x00001363 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x00001367 orq %r11, %r10 - 0x4c, 0x89, 0xd1, //0x0000136a movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000136d notq %rcx - 0x48, 0x21, 0xd1, //0x00001370 andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001373 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000137d andq %rdx, %rcx - 0x45, 0x31, 0xdb, //0x00001380 xorl %r11d, %r11d - 0x48, 0x01, 0xc1, //0x00001383 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc3, //0x00001386 setb %r11b - 0x48, 0x01, 0xc9, //0x0000138a addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000138d movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001397 xorq %rax, %rcx - 0x4c, 0x21, 0xd1, //0x0000139a andq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000139d notq %rcx - 0x48, 0x21, 0xcf, //0x000013a0 andq %rcx, %rdi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000013a3 movq $24(%rsp), %r10 - 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x000013a8 jmp LBB0_225 - //0x000013ad LBB0_236 - 0x48, 0x0f, 0xbc, 0xcf, //0x000013ad bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x000013b1 testq %rsi, %rsi - 0x0f, 0x84, 0x63, 0x01, 0x00, 0x00, //0x000013b4 je LBB0_257 - 0x48, 0x0f, 0xbc, 0xd6, //0x000013ba bsfq %rsi, %rdx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000013be movq $8(%rsp), %r11 - 0x48, 0x39, 0xca, //0x000013c3 cmpq %rcx, %rdx - 0x0f, 0x83, 0x64, 0x01, 0x00, 0x00, //0x000013c6 jae LBB0_258 - 0xe9, 0xf2, 0x22, 0x00, 0x00, //0x000013cc jmp LBB0_217 - //0x000013d1 LBB0_238 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000013d1 movl $64, %edx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000013d6 movq $8(%rsp), %r11 - 0x4d, 0x89, 0xcd, //0x000013db movq %r9, %r13 - 0x48, 0x39, 0xca, //0x000013de cmpq %rcx, %rdx - 0x0f, 0x82, 0xdc, 0x22, 0x00, 0x00, //0x000013e1 jb LBB0_217 - //0x000013e7 LBB0_239 - 0x49, 0x89, 0xc1, //0x000013e7 movq %rax, %r9 - 0x49, 0x01, 0xcf, //0x000013ea addq %rcx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x000013ed addq $1, %r15 - //0x000013f1 LBB0_240 - 0x4d, 0x85, 0xff, //0x000013f1 testq %r15, %r15 - 0x0f, 0x88, 0xba, 0x19, 0x00, 0x00, //0x000013f4 js LBB0_380 - //0x000013fa LBB0_241 - 0x4d, 0x89, 0x3b, //0x000013fa movq %r15, (%r11) - 0x4d, 0x85, 0xc0, //0x000013fd testq %r8, %r8 - 0x0f, 0x8f, 0xea, 0xf2, 0xff, 0xff, //0x00001400 jg LBB0_55 - 0xe9, 0xc9, 0x19, 0x00, 0x00, //0x00001406 jmp LBB0_242 - //0x0000140b LBB0_243 - 0x89, 0xc8, //0x0000140b movl %ecx, %eax - 0x49, 0x01, 0xc0, //0x0000140d addq %rax, %r8 - 0x4d, 0x01, 0xc8, //0x00001410 addq %r9, %r8 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001413 movq $32(%rsp), %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001418 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x0000141f movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001423 testq %rdx, %rdx - 0x0f, 0x85, 0x1c, 0x00, 0x00, 0x00, //0x00001426 jne LBB0_246 - 0xe9, 0x8e, 0x20, 0x00, 0x00, //0x0000142c jmp LBB0_636 - //0x00001431 LBB0_244 - 0x49, 0x01, 0xc8, //0x00001431 addq %rcx, %r8 - //0x00001434 LBB0_245 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001434 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x0000143b movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x0000143f testq %rdx, %rdx - 0x0f, 0x84, 0x77, 0x20, 0x00, 0x00, //0x00001442 je LBB0_636 - //0x00001448 LBB0_246 - 0x4d, 0x85, 0xdb, //0x00001448 testq %r11, %r11 - 0x0f, 0x84, 0x6e, 0x20, 0x00, 0x00, //0x0000144b je LBB0_636 - 0x4d, 0x85, 0xd2, //0x00001451 testq %r10, %r10 - 0x0f, 0x84, 0x65, 0x20, 0x00, 0x00, //0x00001454 je LBB0_636 - 0x4d, 0x29, 0xe0, //0x0000145a subq %r12, %r8 - 0x49, 0x8d, 0x48, 0xff, //0x0000145d leaq $-1(%r8), %rcx - 0x48, 0x39, 0xca, //0x00001461 cmpq %rcx, %rdx - 0x0f, 0x84, 0xf3, 0xf1, 0xff, 0xff, //0x00001464 je LBB0_634 - 0x49, 0x39, 0xcb, //0x0000146a cmpq %rcx, %r11 - 0x0f, 0x84, 0xea, 0xf1, 0xff, 0xff, //0x0000146d je LBB0_634 - 0x49, 0x39, 0xca, //0x00001473 cmpq %rcx, %r10 - 0x0f, 0x84, 0xe1, 0xf1, 0xff, 0xff, //0x00001476 je LBB0_634 - 0x4d, 0x85, 0xdb, //0x0000147c testq %r11, %r11 - 0xc5, 0xfe, 0x6f, 0x2d, 0x79, 0xeb, 0xff, 0xff, //0x0000147f vmovdqu $-5255(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xf1, 0xeb, 0xff, 0xff, //0x00001487 vmovdqu $-5135(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x09, 0xec, 0xff, 0xff, //0x0000148f vmovdqu $-5111(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x81, 0xec, 0xff, 0xff, //0x00001497 vmovdqu $-4991(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000149f vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x94, 0xec, 0xff, 0xff, //0x000014a4 vmovdqu $-4972(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xac, 0xec, 0xff, 0xff, //0x000014ac vmovdqu $-4948(%rip), %ymm11 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xc4, 0xec, 0xff, 0xff, //0x000014b4 vmovdqu $-4924(%rip), %ymm12 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xdc, 0xec, 0xff, 0xff, //0x000014bc vmovdqu $-4900(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x74, 0xeb, 0xff, 0xff, //0x000014c4 vmovdqu $-5260(%rip), %ymm14 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xec, 0xec, 0xff, 0xff, //0x000014cc vmovdqu $-4884(%rip), %ymm15 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x04, 0xed, 0xff, 0xff, //0x000014d4 vmovdqu $-4860(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x8e, 0x18, 0x00, 0x00, 0x00, //0x000014dc jle LBB0_254 - 0x49, 0x8d, 0x43, 0xff, //0x000014e2 leaq $-1(%r11), %rax - 0x49, 0x39, 0xc2, //0x000014e6 cmpq %rax, %r10 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x000014e9 je LBB0_254 - 0x49, 0xf7, 0xd3, //0x000014ef notq %r11 - 0x4d, 0x89, 0xd8, //0x000014f2 movq %r11, %r8 - 0xe9, 0xa4, 0x0a, 0x00, 0x00, //0x000014f5 jmp LBB0_407 - //0x000014fa LBB0_254 - 0x48, 0x89, 0xd0, //0x000014fa movq %rdx, %rax - 0x4c, 0x09, 0xd0, //0x000014fd orq %r10, %rax - 0x0f, 0x99, 0xc1, //0x00001500 setns %cl - 0x0f, 0x88, 0xe1, 0x02, 0x00, 0x00, //0x00001503 js LBB0_302 - 0x4c, 0x39, 0xd2, //0x00001509 cmpq %r10, %rdx - 0x0f, 0x8c, 0xd8, 0x02, 0x00, 0x00, //0x0000150c jl LBB0_302 - 0x48, 0xf7, 0xd2, //0x00001512 notq %rdx - 0x49, 0x89, 0xd0, //0x00001515 movq %rdx, %r8 - 0xe9, 0x81, 0x0a, 0x00, 0x00, //0x00001518 jmp LBB0_407 - //0x0000151d LBB0_257 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000151d movl $64, %edx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001522 movq $8(%rsp), %r11 - 0x48, 0x39, 0xca, //0x00001527 cmpq %rcx, %rdx - 0x0f, 0x82, 0x93, 0x21, 0x00, 0x00, //0x0000152a jb LBB0_217 - //0x00001530 LBB0_258 - 0x49, 0x01, 0xcf, //0x00001530 addq %rcx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00001533 addq $1, %r15 - //0x00001537 LBB0_259 - 0x4d, 0x85, 0xff, //0x00001537 testq %r15, %r15 - 0x0f, 0x88, 0x74, 0x18, 0x00, 0x00, //0x0000153a js LBB0_380 - 0x4d, 0x89, 0x3b, //0x00001540 movq %r15, (%r11) - 0x4d, 0x85, 0xc0, //0x00001543 testq %r8, %r8 - 0x0f, 0x8e, 0x88, 0x18, 0x00, 0x00, //0x00001546 jle LBB0_242 - 0x49, 0x8b, 0x09, //0x0000154c movq (%r9), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x0000154f cmpq $4095, %rcx - 0x0f, 0x8f, 0x4c, 0x18, 0x00, 0x00, //0x00001556 jg LBB0_650 - 0x48, 0x8d, 0x41, 0x01, //0x0000155c leaq $1(%rcx), %rax - 0x49, 0x89, 0x01, //0x00001560 movq %rax, (%r9) - 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001563 movq $4, $8(%r9,%rcx,8) - 0xe9, 0x7f, 0xf1, 0xff, 0xff, //0x0000156c jmp LBB0_55 - //0x00001571 LBB0_263 - 0x4d, 0x8b, 0x03, //0x00001571 movq (%r11), %r8 - 0x4d, 0x8b, 0x65, 0x08, //0x00001574 movq $8(%r13), %r12 - 0x4c, 0x89, 0xe3, //0x00001578 movq %r12, %rbx - 0x41, 0xf6, 0xc2, 0x20, //0x0000157b testb $32, %r10b - 0x0f, 0x85, 0x7e, 0x02, 0x00, 0x00, //0x0000157f jne LBB0_303 - 0x4c, 0x29, 0xc3, //0x00001585 subq %r8, %rbx - 0x0f, 0x84, 0x1a, 0x21, 0x00, 0x00, //0x00001588 je LBB0_670 - 0x48, 0x83, 0xfb, 0x40, //0x0000158e cmpq $64, %rbx - 0x0f, 0x82, 0x7c, 0x0d, 0x00, 0x00, //0x00001592 jb LBB0_438 - 0x4c, 0x89, 0xc6, //0x00001598 movq %r8, %rsi - 0x48, 0xf7, 0xd6, //0x0000159b notq %rsi - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000159e movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x000015a6 movq %r8, %r15 - 0x45, 0x31, 0xd2, //0x000015a9 xorl %r10d, %r10d - 0x90, 0x90, 0x90, 0x90, //0x000015ac .p2align 4, 0x90 - //0x000015b0 LBB0_267 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000015b0 movq $16(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x000015b5 vmovdqu (%rax,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x000015bb vmovdqu $32(%rax,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000015c2 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000015c6 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000015ca vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000015ce vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000015d2 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000015d6 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000015da vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x000015de vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe0, 0x20, //0x000015e2 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000015e6 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000015e9 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x000015ed orq %rcx, %rdx - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000015f0 jne LBB0_276 - 0x4d, 0x85, 0xd2, //0x000015f6 testq %r10, %r10 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x000015f9 jne LBB0_278 - 0x45, 0x31, 0xd2, //0x000015ff xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x00001602 testq %rdi, %rdi - 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x00001605 jne LBB0_280 - //0x0000160b LBB0_270 - 0x48, 0x83, 0xc3, 0xc0, //0x0000160b addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x0000160f addq $-64, %rsi - 0x49, 0x83, 0xc7, 0x40, //0x00001613 addq $64, %r15 - 0x48, 0x83, 0xfb, 0x3f, //0x00001617 cmpq $63, %rbx - 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x0000161b ja LBB0_267 - 0xe9, 0xaa, 0x0a, 0x00, 0x00, //0x00001621 jmp LBB0_271 - //0x00001626 LBB0_276 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00001626 movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x0000162b movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x0000162e movq %r11, %r13 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001631 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00001636 jne LBB0_279 - 0x48, 0x0f, 0xbc, 0xc2, //0x0000163c bsfq %rdx, %rax - 0x4c, 0x01, 0xf8, //0x00001640 addq %r15, %rax - 0x48, 0x89, 0x04, 0x24, //0x00001643 movq %rax, (%rsp) - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00001647 jmp LBB0_279 - //0x0000164c LBB0_278 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x0000164c movq %r9, $32(%rsp) - 0x4d, 0x89, 0xe9, //0x00001651 movq %r13, %r9 - 0x4d, 0x89, 0xdd, //0x00001654 movq %r11, %r13 - //0x00001657 LBB0_279 - 0x4c, 0x89, 0xd0, //0x00001657 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000165a notq %rax - 0x48, 0x21, 0xd0, //0x0000165d andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00001660 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00001664 orq %r10, %r11 - 0x4c, 0x89, 0xd9, //0x00001667 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x0000166a notq %rcx - 0x48, 0x21, 0xd1, //0x0000166d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001670 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000167a andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x0000167d xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x00001680 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x00001683 setb %r10b - 0x48, 0x01, 0xc9, //0x00001687 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000168a movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001694 xorq %rax, %rcx - 0x4c, 0x21, 0xd9, //0x00001697 andq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x0000169a notq %rcx - 0x48, 0x21, 0xcf, //0x0000169d andq %rcx, %rdi - 0x4d, 0x89, 0xeb, //0x000016a0 movq %r13, %r11 - 0x4d, 0x89, 0xcd, //0x000016a3 movq %r9, %r13 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x000016a6 movq $32(%rsp), %r9 - 0x48, 0x85, 0xff, //0x000016ab testq %rdi, %rdi - 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x000016ae je LBB0_270 - //0x000016b4 LBB0_280 - 0x4c, 0x0f, 0xbc, 0xff, //0x000016b4 bsfq %rdi, %r15 - 0x49, 0x29, 0xf7, //0x000016b8 subq %rsi, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000016bb movq $24(%rsp), %r10 - 0xe9, 0x41, 0x06, 0x00, 0x00, //0x000016c0 jmp LBB0_379 - //0x000016c5 LBB0_281 - 0x4d, 0x8b, 0x55, 0x08, //0x000016c5 movq $8(%r13), %r10 - 0x4d, 0x8b, 0x3b, //0x000016c9 movq (%r11), %r15 - 0x4d, 0x29, 0xfa, //0x000016cc subq %r15, %r10 - 0x0f, 0x84, 0x9a, 0x1e, 0x00, 0x00, //0x000016cf je LBB0_649 - 0x4b, 0x8d, 0x04, 0x38, //0x000016d5 leaq (%r8,%r15), %rax - 0x48, 0x89, 0x44, 0x24, 0x30, //0x000016d9 movq %rax, $48(%rsp) - 0x80, 0x38, 0x30, //0x000016de cmpb $48, (%rax) - 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x00, //0x000016e1 jne LBB0_324 - 0x41, 0xbc, 0x01, 0x00, 0x00, 0x00, //0x000016e7 movl $1, %r12d - 0x49, 0x83, 0xfa, 0x01, //0x000016ed cmpq $1, %r10 - 0x0f, 0x85, 0x5c, 0x02, 0x00, 0x00, //0x000016f1 jne LBB0_322 - //0x000016f7 LBB0_284 - 0x4c, 0x89, 0xf9, //0x000016f7 movq %r15, %rcx - 0xe9, 0x08, 0x0b, 0x00, 0x00, //0x000016fa jmp LBB0_425 - //0x000016ff LBB0_285 - 0x49, 0x8b, 0x09, //0x000016ff movq (%r9), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00001702 cmpq $4095, %rcx - 0x0f, 0x8f, 0x99, 0x16, 0x00, 0x00, //0x00001709 jg LBB0_650 - 0x48, 0x8d, 0x41, 0x01, //0x0000170f leaq $1(%rcx), %rax - 0x49, 0x89, 0x01, //0x00001713 movq %rax, (%r9) - 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00001716 movq $5, $8(%r9,%rcx,8) - 0xe9, 0xcc, 0xef, 0xff, 0xff, //0x0000171f jmp LBB0_55 - //0x00001724 LBB0_287 - 0x49, 0x8b, 0x0b, //0x00001724 movq (%r11), %rcx - 0x49, 0x8b, 0x55, 0x08, //0x00001727 movq $8(%r13), %rdx - 0x48, 0x8d, 0x42, 0xfc, //0x0000172b leaq $-4(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000172f cmpq %rax, %rcx - 0x0f, 0x87, 0x94, 0x16, 0x00, 0x00, //0x00001732 ja LBB0_382 - 0x41, 0x8b, 0x14, 0x08, //0x00001738 movl (%r8,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x0000173c cmpl $1702063201, %edx - 0x0f, 0x85, 0x33, 0x1e, 0x00, 0x00, //0x00001742 jne LBB0_651 - 0x48, 0x8d, 0x41, 0x04, //0x00001748 leaq $4(%rcx), %rax - 0x49, 0x89, 0x03, //0x0000174c movq %rax, (%r11) - 0x48, 0x85, 0xc9, //0x0000174f testq %rcx, %rcx - 0x0f, 0x8f, 0x98, 0xef, 0xff, 0xff, //0x00001752 jg LBB0_55 - 0xe9, 0x08, 0x1f, 0x00, 0x00, //0x00001758 jmp LBB0_290 - //0x0000175d LBB0_291 - 0x49, 0x8b, 0x0b, //0x0000175d movq (%r11), %rcx - 0x49, 0x8b, 0x55, 0x08, //0x00001760 movq $8(%r13), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00001764 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00001768 cmpq %rax, %rcx - 0x0f, 0x87, 0x5b, 0x16, 0x00, 0x00, //0x0000176b ja LBB0_382 - 0x4c, 0x8d, 0x79, 0xff, //0x00001771 leaq $-1(%rcx), %r15 - 0x41, 0x81, 0x7c, 0x08, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001775 cmpl $1819047278, $-1(%r8,%rcx) - 0x0f, 0x84, 0x51, 0x00, 0x00, 0x00, //0x0000177e je LBB0_301 - 0xe9, 0x47, 0x1e, 0x00, 0x00, //0x00001784 jmp LBB0_293 - //0x00001789 LBB0_297 - 0x49, 0x8b, 0x09, //0x00001789 movq (%r9), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x0000178c cmpq $4095, %rcx - 0x0f, 0x8f, 0x0f, 0x16, 0x00, 0x00, //0x00001793 jg LBB0_650 - 0x48, 0x8d, 0x41, 0x01, //0x00001799 leaq $1(%rcx), %rax - 0x49, 0x89, 0x01, //0x0000179d movq %rax, (%r9) - 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000017a0 movq $6, $8(%r9,%rcx,8) - 0xe9, 0x42, 0xef, 0xff, 0xff, //0x000017a9 jmp LBB0_55 - //0x000017ae LBB0_299 - 0x49, 0x8b, 0x0b, //0x000017ae movq (%r11), %rcx - 0x49, 0x8b, 0x55, 0x08, //0x000017b1 movq $8(%r13), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x000017b5 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x000017b9 cmpq %rax, %rcx - 0x0f, 0x87, 0x0a, 0x16, 0x00, 0x00, //0x000017bc ja LBB0_382 - 0x4c, 0x8d, 0x79, 0xff, //0x000017c2 leaq $-1(%rcx), %r15 - 0x41, 0x81, 0x7c, 0x08, 0xff, 0x74, 0x72, 0x75, 0x65, //0x000017c6 cmpl $1702195828, $-1(%r8,%rcx) - 0x0f, 0x85, 0x42, 0x1e, 0x00, 0x00, //0x000017cf jne LBB0_656 - //0x000017d5 LBB0_301 - 0x48, 0x8d, 0x41, 0x03, //0x000017d5 leaq $3(%rcx), %rax - 0x49, 0x89, 0x03, //0x000017d9 movq %rax, (%r11) - 0x48, 0x85, 0xc9, //0x000017dc testq %rcx, %rcx - 0x0f, 0x8f, 0x0b, 0xef, 0xff, 0xff, //0x000017df jg LBB0_55 - 0xe9, 0xee, 0x1c, 0x00, 0x00, //0x000017e5 jmp LBB0_638 - //0x000017ea LBB0_302 - 0x49, 0x8d, 0x42, 0xff, //0x000017ea leaq $-1(%r10), %rax - 0x48, 0x39, 0xc2, //0x000017ee cmpq %rax, %rdx - 0x49, 0xf7, 0xd2, //0x000017f1 notq %r10 - 0x4d, 0x0f, 0x45, 0xd0, //0x000017f4 cmovneq %r8, %r10 - 0x84, 0xc9, //0x000017f8 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xc2, //0x000017fa cmovneq %r10, %r8 - 0xe9, 0x9b, 0x07, 0x00, 0x00, //0x000017fe jmp LBB0_407 - //0x00001803 LBB0_303 - 0x4c, 0x29, 0xc3, //0x00001803 subq %r8, %rbx - 0x0f, 0x84, 0x9c, 0x1e, 0x00, 0x00, //0x00001806 je LBB0_670 - 0x48, 0x83, 0xfb, 0x40, //0x0000180c cmpq $64, %rbx - 0x0f, 0x82, 0x21, 0x0b, 0x00, 0x00, //0x00001810 jb LBB0_439 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00001816 movq $-1, (%rsp) - 0x4d, 0x89, 0xc7, //0x0000181e movq %r8, %r15 - 0x45, 0x31, 0xdb, //0x00001821 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001824 .p2align 4, 0x90 - //0x00001830 LBB0_306 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001830 movq $16(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00001835 vmovdqu (%rax,%r15), %ymm0 - 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x0000183b vmovdqu $32(%rax,%r15), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001842 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00001846 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x0000184a vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x0000184e vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x00001852 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001856 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x0000185a vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x0000185e vpmovmskb %ymm2, %ecx - 0xc5, 0xbd, 0x64, 0xd1, //0x00001862 vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001866 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x0000186b vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000186f vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x00001873 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00001877 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x0000187a shlq $32, %rcx - 0x48, 0xc1, 0xe6, 0x20, //0x0000187e shlq $32, %rsi - 0x48, 0x09, 0xca, //0x00001882 orq %rcx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001885 jne LBB0_317 - 0x4d, 0x85, 0xdb, //0x0000188b testq %r11, %r11 - 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x0000188e jne LBB0_319 - 0x45, 0x31, 0xdb, //0x00001894 xorl %r11d, %r11d - //0x00001897 LBB0_309 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001897 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000189b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000018a0 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000018a4 vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x000018a8 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x000018ab testq %rdi, %rdi - 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x000018ae jne LBB0_320 - 0x48, 0x85, 0xf6, //0x000018b4 testq %rsi, %rsi - 0x0f, 0x85, 0x7a, 0x1c, 0x00, 0x00, //0x000018b7 jne LBB0_643 - 0x48, 0x83, 0xc3, 0xc0, //0x000018bd addq $-64, %rbx - 0x49, 0x83, 0xc7, 0x40, //0x000018c1 addq $64, %r15 - 0x48, 0x83, 0xfb, 0x3f, //0x000018c5 cmpq $63, %rbx - 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x000018c9 ja LBB0_306 - 0xe9, 0x57, 0x08, 0x00, 0x00, //0x000018cf jmp LBB0_312 - //0x000018d4 LBB0_317 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000018d4 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000018d9 jne LBB0_319 - 0x48, 0x0f, 0xbc, 0xc2, //0x000018df bsfq %rdx, %rax - 0x4c, 0x01, 0xf8, //0x000018e3 addq %r15, %rax - 0x48, 0x89, 0x04, 0x24, //0x000018e6 movq %rax, (%rsp) - //0x000018ea LBB0_319 - 0x4c, 0x89, 0xd8, //0x000018ea movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x000018ed notq %rax - 0x48, 0x21, 0xd0, //0x000018f0 andq %rdx, %rax - 0x4c, 0x8d, 0x14, 0x00, //0x000018f3 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x000018f7 orq %r11, %r10 - 0x4c, 0x89, 0xd1, //0x000018fa movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x000018fd notq %rcx - 0x48, 0x21, 0xd1, //0x00001900 andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001903 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000190d andq %rdx, %rcx - 0x45, 0x31, 0xdb, //0x00001910 xorl %r11d, %r11d - 0x48, 0x01, 0xc1, //0x00001913 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc3, //0x00001916 setb %r11b - 0x48, 0x01, 0xc9, //0x0000191a addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000191d movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001927 xorq %rax, %rcx - 0x4c, 0x21, 0xd1, //0x0000192a andq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000192d notq %rcx - 0x48, 0x21, 0xcf, //0x00001930 andq %rcx, %rdi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001933 movq $24(%rsp), %r10 - 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x00001938 jmp LBB0_309 - //0x0000193d LBB0_320 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000193d bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x00001941 testq %rsi, %rsi - 0x0f, 0x84, 0xa2, 0x03, 0x00, 0x00, //0x00001944 je LBB0_376 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000194a bsfq %rsi, %rdx - 0xe9, 0x9e, 0x03, 0x00, 0x00, //0x0000194e jmp LBB0_377 - //0x00001953 LBB0_322 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00001953 movq $48(%rsp), %rax - 0x8a, 0x48, 0x01, //0x00001958 movb $1(%rax), %cl - 0x80, 0xc1, 0xd2, //0x0000195b addb $-46, %cl - 0x80, 0xf9, 0x37, //0x0000195e cmpb $55, %cl - 0x0f, 0x87, 0x90, 0xfd, 0xff, 0xff, //0x00001961 ja LBB0_284 - 0x0f, 0xb6, 0xc1, //0x00001967 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x0000196a movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x00001974 btq %rax, %rcx - 0x4c, 0x89, 0xf9, //0x00001978 movq %r15, %rcx - 0x0f, 0x83, 0x86, 0x08, 0x00, 0x00, //0x0000197b jae LBB0_425 - //0x00001981 LBB0_324 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00001981 movq $-1, %r8 - 0x49, 0x83, 0xfa, 0x20, //0x00001988 cmpq $32, %r10 - 0x0f, 0x82, 0x5a, 0x09, 0x00, 0x00, //0x0000198c jb LBB0_437 - 0x45, 0x31, 0xe4, //0x00001992 xorl %r12d, %r12d - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00001995 movq $-1, %r11 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000199c movq $-1, (%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000019a4 .p2align 4, 0x90 - //0x000019b0 LBB0_326 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x000019b0 movq $48(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x20, //0x000019b5 vmovdqu (%rax,%r12), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x000019bb vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0xa5, 0x64, 0xd0, //0x000019c0 vpcmpgtb %ymm0, %ymm11, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x000019c4 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x9d, 0x74, 0xd0, //0x000019c8 vpcmpeqb %ymm0, %ymm12, %ymm2 - 0xc5, 0x95, 0x74, 0xd8, //0x000019cc vpcmpeqb %ymm0, %ymm13, %ymm3 - 0xc5, 0xe5, 0xeb, 0xd2, //0x000019d0 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x000019d4 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0x85, 0x74, 0xc0, //0x000019d8 vpcmpeqb %ymm0, %ymm15, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf8, //0x000019dc vpmovmskb %ymm0, %edi - 0xc5, 0xe5, 0x74, 0xdc, //0x000019e0 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xd3, //0x000019e4 vpmovmskb %ymm3, %edx - 0xc5, 0xfd, 0xd7, 0xf2, //0x000019e8 vpmovmskb %ymm2, %esi - 0xc5, 0xf5, 0xeb, 0xc0, //0x000019ec vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000019f0 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000019f4 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000019f8 vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000019fc notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000019ff bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x00001a03 cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001a06 je LBB0_328 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00001a0c movl $-1, %eax - 0xd3, 0xe0, //0x00001a11 shll %cl, %eax - 0xf7, 0xd0, //0x00001a13 notl %eax - 0x21, 0xc7, //0x00001a15 andl %eax, %edi - 0x21, 0xc2, //0x00001a17 andl %eax, %edx - 0x21, 0xf0, //0x00001a19 andl %esi, %eax - 0x89, 0xc6, //0x00001a1b movl %eax, %esi - //0x00001a1d LBB0_328 - 0x8d, 0x5f, 0xff, //0x00001a1d leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x00001a20 andl %edi, %ebx - 0x0f, 0x85, 0x67, 0x06, 0x00, 0x00, //0x00001a22 jne LBB0_412 - 0x8d, 0x5a, 0xff, //0x00001a28 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00001a2b andl %edx, %ebx - 0x0f, 0x85, 0x5c, 0x06, 0x00, 0x00, //0x00001a2d jne LBB0_412 - 0x8d, 0x5e, 0xff, //0x00001a33 leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00001a36 andl %esi, %ebx - 0x0f, 0x85, 0x51, 0x06, 0x00, 0x00, //0x00001a38 jne LBB0_412 - 0x85, 0xff, //0x00001a3e testl %edi, %edi - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00001a40 je LBB0_334 - 0x0f, 0xbc, 0xff, //0x00001a46 bsfl %edi, %edi - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001a49 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x9a, 0x07, 0x00, 0x00, //0x00001a4e jne LBB0_420 - 0x4c, 0x01, 0xe7, //0x00001a54 addq %r12, %rdi - 0x48, 0x89, 0x3c, 0x24, //0x00001a57 movq %rdi, (%rsp) - //0x00001a5b LBB0_334 - 0x85, 0xd2, //0x00001a5b testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001a5d je LBB0_337 - 0x0f, 0xbc, 0xd2, //0x00001a63 bsfl %edx, %edx - 0x49, 0x83, 0xfb, 0xff, //0x00001a66 cmpq $-1, %r11 - 0x0f, 0x85, 0x4c, 0x07, 0x00, 0x00, //0x00001a6a jne LBB0_418 - 0x4c, 0x01, 0xe2, //0x00001a70 addq %r12, %rdx - 0x49, 0x89, 0xd3, //0x00001a73 movq %rdx, %r11 - //0x00001a76 LBB0_337 - 0x85, 0xf6, //0x00001a76 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001a78 je LBB0_340 - 0x0f, 0xbc, 0xd6, //0x00001a7e bsfl %esi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x00001a81 cmpq $-1, %r8 - 0x0f, 0x85, 0x31, 0x07, 0x00, 0x00, //0x00001a85 jne LBB0_418 - 0x4c, 0x01, 0xe2, //0x00001a8b addq %r12, %rdx - 0x49, 0x89, 0xd0, //0x00001a8e movq %rdx, %r8 - //0x00001a91 LBB0_340 - 0x83, 0xf9, 0x20, //0x00001a91 cmpl $32, %ecx - 0x0f, 0x85, 0x0f, 0x02, 0x00, 0x00, //0x00001a94 jne LBB0_374 - 0x49, 0x83, 0xc2, 0xe0, //0x00001a9a addq $-32, %r10 - 0x49, 0x83, 0xc4, 0x20, //0x00001a9e addq $32, %r12 - 0x49, 0x83, 0xfa, 0x1f, //0x00001aa2 cmpq $31, %r10 - 0x0f, 0x87, 0x04, 0xff, 0xff, 0xff, //0x00001aa6 ja LBB0_326 - 0xc5, 0xf8, 0x77, //0x00001aac vzeroupper - 0x4c, 0x03, 0x64, 0x24, 0x30, //0x00001aaf addq $48(%rsp), %r12 - 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00001ab4 movq %r13, $56(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x00001ab9 cmpq $16, %r10 - 0x0f, 0x82, 0x3a, 0x01, 0x00, 0x00, //0x00001abd jb LBB0_361 - //0x00001ac3 LBB0_343 - 0x4c, 0x89, 0xe3, //0x00001ac3 movq %r12, %rbx - 0x48, 0x2b, 0x5c, 0x24, 0x30, //0x00001ac6 subq $48(%rsp), %rbx - 0x45, 0x31, 0xed, //0x00001acb xorl %r13d, %r13d - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00001ace movq %r9, $32(%rsp) - //0x00001ad3 LBB0_344 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x2c, //0x00001ad3 vmovdqu (%r12,%r13), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x5f, 0xe7, 0xff, 0xff, //0x00001ad9 vpcmpgtb $-6305(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x67, 0xe7, 0xff, 0xff, //0x00001ae1 vmovdqu $-6297(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00001ae9 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00001aed vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x67, 0xe7, 0xff, 0xff, //0x00001af1 vpcmpeqb $-6297(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x6f, 0xe7, 0xff, 0xff, //0x00001af9 vpcmpeqb $-6289(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00001b01 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0x03, 0xe7, 0xff, 0xff, //0x00001b05 vpand $-6397(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x6b, 0xe7, 0xff, 0xff, //0x00001b0d vpcmpeqb $-6293(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x73, 0xe7, 0xff, 0xff, //0x00001b15 vpcmpeqb $-6285(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00001b1d vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00001b21 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00001b25 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xc8, //0x00001b29 vpmovmskb %xmm0, %r9d - 0xc5, 0xf9, 0xd7, 0xfb, //0x00001b2d vpmovmskb %xmm3, %edi - 0xc5, 0xf9, 0xd7, 0xd2, //0x00001b31 vpmovmskb %xmm2, %edx - 0xc5, 0xf9, 0xd7, 0xc1, //0x00001b35 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x00001b39 notl %eax - 0x0f, 0xbc, 0xc8, //0x00001b3b bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00001b3e cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001b41 je LBB0_346 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00001b47 movl $-1, %eax - 0xd3, 0xe0, //0x00001b4c shll %cl, %eax - 0xf7, 0xd0, //0x00001b4e notl %eax - 0x41, 0x21, 0xc1, //0x00001b50 andl %eax, %r9d - 0x21, 0xc7, //0x00001b53 andl %eax, %edi - 0x21, 0xd0, //0x00001b55 andl %edx, %eax - 0x89, 0xc2, //0x00001b57 movl %eax, %edx - //0x00001b59 LBB0_346 - 0x41, 0x8d, 0x71, 0xff, //0x00001b59 leal $-1(%r9), %esi - 0x44, 0x21, 0xce, //0x00001b5d andl %r9d, %esi - 0x0f, 0x85, 0x0f, 0x06, 0x00, 0x00, //0x00001b60 jne LBB0_415 - 0x8d, 0x77, 0xff, //0x00001b66 leal $-1(%rdi), %esi - 0x21, 0xfe, //0x00001b69 andl %edi, %esi - 0x0f, 0x85, 0x04, 0x06, 0x00, 0x00, //0x00001b6b jne LBB0_415 - 0x8d, 0x72, 0xff, //0x00001b71 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x00001b74 andl %edx, %esi - 0x0f, 0x85, 0xf9, 0x05, 0x00, 0x00, //0x00001b76 jne LBB0_415 - 0x45, 0x85, 0xc9, //0x00001b7c testl %r9d, %r9d - 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00001b7f je LBB0_352 - 0x41, 0x0f, 0xbc, 0xf1, //0x00001b85 bsfl %r9d, %esi - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001b89 cmpq $-1, (%rsp) - 0x0f, 0x85, 0xd7, 0x06, 0x00, 0x00, //0x00001b8e jne LBB0_430 - 0x48, 0x01, 0xde, //0x00001b94 addq %rbx, %rsi - 0x4c, 0x01, 0xee, //0x00001b97 addq %r13, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00001b9a movq %rsi, (%rsp) - //0x00001b9e LBB0_352 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001b9e movq $32(%rsp), %r9 - 0x85, 0xff, //0x00001ba3 testl %edi, %edi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001ba5 je LBB0_355 - 0x0f, 0xbc, 0xf7, //0x00001bab bsfl %edi, %esi - 0x49, 0x83, 0xfb, 0xff, //0x00001bae cmpq $-1, %r11 - 0x0f, 0x85, 0xba, 0x06, 0x00, 0x00, //0x00001bb2 jne LBB0_431 - 0x48, 0x01, 0xde, //0x00001bb8 addq %rbx, %rsi - 0x4c, 0x01, 0xee, //0x00001bbb addq %r13, %rsi - 0x49, 0x89, 0xf3, //0x00001bbe movq %rsi, %r11 - //0x00001bc1 LBB0_355 - 0x85, 0xd2, //0x00001bc1 testl %edx, %edx - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001bc3 je LBB0_358 - 0x0f, 0xbc, 0xd2, //0x00001bc9 bsfl %edx, %edx - 0x49, 0x83, 0xf8, 0xff, //0x00001bcc cmpq $-1, %r8 - 0x0f, 0x85, 0xa3, 0x06, 0x00, 0x00, //0x00001bd0 jne LBB0_432 - 0x48, 0x01, 0xda, //0x00001bd6 addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x00001bd9 addq %r13, %rdx - 0x49, 0x89, 0xd0, //0x00001bdc movq %rdx, %r8 - //0x00001bdf LBB0_358 - 0x83, 0xf9, 0x10, //0x00001bdf cmpl $16, %ecx - 0x0f, 0x85, 0x34, 0x01, 0x00, 0x00, //0x00001be2 jne LBB0_384 - 0x49, 0x83, 0xc2, 0xf0, //0x00001be8 addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x00001bec addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x00001bf0 cmpq $15, %r10 - 0x0f, 0x87, 0xd9, 0xfe, 0xff, 0xff, //0x00001bf4 ja LBB0_344 - 0x4d, 0x01, 0xec, //0x00001bfa addq %r13, %r12 - //0x00001bfd LBB0_361 - 0x4d, 0x85, 0xd2, //0x00001bfd testq %r10, %r10 - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00001c00 movq $56(%rsp), %r13 - 0x0f, 0x84, 0x3a, 0x01, 0x00, 0x00, //0x00001c05 je LBB0_386 - 0x4b, 0x8d, 0x14, 0x14, //0x00001c0b leaq (%r12,%r10), %rdx - 0x4c, 0x89, 0xe6, //0x00001c0f movq %r12, %rsi - 0x48, 0x2b, 0x74, 0x24, 0x30, //0x00001c12 subq $48(%rsp), %rsi - 0x31, 0xc9, //0x00001c17 xorl %ecx, %ecx - 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001c19 jmp LBB0_366 - //0x00001c1e LBB0_363 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001c1e cmpq $-1, (%rsp) - 0x0f, 0x85, 0x7a, 0x05, 0x00, 0x00, //0x00001c23 jne LBB0_417 - 0x48, 0x8d, 0x04, 0x0e, //0x00001c29 leaq (%rsi,%rcx), %rax - 0x48, 0x89, 0x04, 0x24, //0x00001c2d movq %rax, (%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001c31 .p2align 4, 0x90 - //0x00001c40 LBB0_365 - 0x48, 0x83, 0xc1, 0x01, //0x00001c40 addq $1, %rcx - 0x49, 0x39, 0xca, //0x00001c44 cmpq %rcx, %r10 - 0x0f, 0x84, 0x26, 0x04, 0x00, 0x00, //0x00001c47 je LBB0_411 - //0x00001c4d LBB0_366 - 0x41, 0x0f, 0xbe, 0x3c, 0x0c, //0x00001c4d movsbl (%r12,%rcx), %edi - 0x8d, 0x47, 0xd0, //0x00001c52 leal $-48(%rdi), %eax - 0x83, 0xf8, 0x0a, //0x00001c55 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00001c58 jb LBB0_365 - 0x8d, 0x5f, 0xd5, //0x00001c5e leal $-43(%rdi), %ebx - 0x83, 0xfb, 0x1a, //0x00001c61 cmpl $26, %ebx - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00001c64 ja LBB0_371 - 0x48, 0x8d, 0x3d, 0x23, 0x1f, 0x00, 0x00, //0x00001c6a leaq $7971(%rip), %rdi /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x04, 0x9f, //0x00001c71 movslq (%rdi,%rbx,4), %rax - 0x48, 0x01, 0xf8, //0x00001c75 addq %rdi, %rax - 0xff, 0xe0, //0x00001c78 jmpq *%rax - //0x00001c7a LBB0_369 - 0x49, 0x83, 0xf8, 0xff, //0x00001c7a cmpq $-1, %r8 - 0x0f, 0x85, 0x1f, 0x05, 0x00, 0x00, //0x00001c7e jne LBB0_417 - 0x4c, 0x8d, 0x04, 0x0e, //0x00001c84 leaq (%rsi,%rcx), %r8 - 0xe9, 0xb3, 0xff, 0xff, 0xff, //0x00001c88 jmp LBB0_365 - //0x00001c8d LBB0_371 - 0x83, 0xff, 0x65, //0x00001c8d cmpl $101, %edi - 0x0f, 0x85, 0xac, 0x00, 0x00, 0x00, //0x00001c90 jne LBB0_385 - //0x00001c96 LBB0_372 - 0x49, 0x83, 0xfb, 0xff, //0x00001c96 cmpq $-1, %r11 - 0x0f, 0x85, 0x03, 0x05, 0x00, 0x00, //0x00001c9a jne LBB0_417 - 0x4c, 0x8d, 0x1c, 0x0e, //0x00001ca0 leaq (%rsi,%rcx), %r11 - 0xe9, 0x97, 0xff, 0xff, 0xff, //0x00001ca4 jmp LBB0_365 - //0x00001ca9 LBB0_374 - 0x4c, 0x01, 0xe1, //0x00001ca9 addq %r12, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x30, //0x00001cac addq $48(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x00001cb1 vzeroupper - 0x49, 0x89, 0xcc, //0x00001cb4 movq %rcx, %r12 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001cb7 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00001cbe movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001cc2 testq %rdx, %rdx - 0x0f, 0x85, 0x8e, 0x00, 0x00, 0x00, //0x00001cc5 jne LBB0_387 - 0xe9, 0xad, 0x19, 0x00, 0x00, //0x00001ccb jmp LBB0_662 - //0x00001cd0 LBB0_375 - 0x49, 0x89, 0xf0, //0x00001cd0 movq %rsi, %r8 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001cd3 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00001cda movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001cde testq %rdx, %rdx - 0x0f, 0x85, 0x61, 0xf7, 0xff, 0xff, //0x00001ce1 jne LBB0_246 - 0xe9, 0xd3, 0x17, 0x00, 0x00, //0x00001ce7 jmp LBB0_636 - //0x00001cec LBB0_376 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001cec movl $64, %edx - //0x00001cf1 LBB0_377 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001cf1 movq $8(%rsp), %r11 - 0x48, 0x39, 0xca, //0x00001cf6 cmpq %rcx, %rdx - 0x0f, 0x82, 0xc4, 0x19, 0x00, 0x00, //0x00001cf9 jb LBB0_217 - 0x49, 0x01, 0xcf, //0x00001cff addq %rcx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00001d02 addq $1, %r15 - //0x00001d06 LBB0_379 - 0x4d, 0x85, 0xff, //0x00001d06 testq %r15, %r15 - 0x0f, 0x89, 0xeb, 0xf6, 0xff, 0xff, //0x00001d09 jns LBB0_241 - 0xe9, 0xa0, 0x10, 0x00, 0x00, //0x00001d0f jmp LBB0_380 - //0x00001d14 LBB0_383 - 0x0f, 0xbc, 0xc3, //0x00001d14 bsfl %ebx, %eax - 0xe9, 0x9a, 0x01, 0x00, 0x00, //0x00001d17 jmp LBB0_403 - //0x00001d1c LBB0_384 - 0x89, 0xc8, //0x00001d1c movl %ecx, %eax - 0x49, 0x01, 0xc4, //0x00001d1e addq %rax, %r12 - 0x4d, 0x01, 0xec, //0x00001d21 addq %r13, %r12 - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00001d24 movq $56(%rsp), %r13 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d29 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00001d30 movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001d34 testq %rdx, %rdx - 0x0f, 0x85, 0x1c, 0x00, 0x00, 0x00, //0x00001d37 jne LBB0_387 - 0xe9, 0x3b, 0x19, 0x00, 0x00, //0x00001d3d jmp LBB0_662 - //0x00001d42 LBB0_385 - 0x49, 0x01, 0xcc, //0x00001d42 addq %rcx, %r12 - //0x00001d45 LBB0_386 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d45 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00001d4c movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001d50 testq %rdx, %rdx - 0x0f, 0x84, 0x24, 0x19, 0x00, 0x00, //0x00001d53 je LBB0_662 - //0x00001d59 LBB0_387 - 0x4d, 0x85, 0xc0, //0x00001d59 testq %r8, %r8 - 0x0f, 0x84, 0x1b, 0x19, 0x00, 0x00, //0x00001d5c je LBB0_662 - 0x4d, 0x85, 0xdb, //0x00001d62 testq %r11, %r11 - 0x0f, 0x84, 0x12, 0x19, 0x00, 0x00, //0x00001d65 je LBB0_662 - 0x4c, 0x2b, 0x64, 0x24, 0x30, //0x00001d6b subq $48(%rsp), %r12 - 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00001d70 leaq $-1(%r12), %rcx - 0x48, 0x39, 0xca, //0x00001d75 cmpq %rcx, %rdx - 0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, //0x00001d78 je LBB0_395 - 0x49, 0x39, 0xc8, //0x00001d7e cmpq %rcx, %r8 - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00001d81 je LBB0_395 - 0x49, 0x39, 0xcb, //0x00001d87 cmpq %rcx, %r11 - 0x0f, 0x84, 0x7e, 0x00, 0x00, 0x00, //0x00001d8a je LBB0_395 - 0x4d, 0x85, 0xc0, //0x00001d90 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x2d, 0x65, 0xe2, 0xff, 0xff, //0x00001d93 vmovdqu $-7579(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xdd, 0xe2, 0xff, 0xff, //0x00001d9b vmovdqu $-7459(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xf5, 0xe2, 0xff, 0xff, //0x00001da3 vmovdqu $-7435(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x6d, 0xe3, 0xff, 0xff, //0x00001dab vmovdqu $-7315(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001db3 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x80, 0xe3, 0xff, 0xff, //0x00001db8 vmovdqu $-7296(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x98, 0xe3, 0xff, 0xff, //0x00001dc0 vmovdqu $-7272(%rip), %ymm11 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xb0, 0xe3, 0xff, 0xff, //0x00001dc8 vmovdqu $-7248(%rip), %ymm12 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xc8, 0xe3, 0xff, 0xff, //0x00001dd0 vmovdqu $-7224(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x60, 0xe2, 0xff, 0xff, //0x00001dd8 vmovdqu $-7584(%rip), %ymm14 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xd8, 0xe3, 0xff, 0xff, //0x00001de0 vmovdqu $-7208(%rip), %ymm15 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xf0, 0xe3, 0xff, 0xff, //0x00001de8 vmovdqu $-7184(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x8e, 0x82, 0x00, 0x00, 0x00, //0x00001df0 jle LBB0_398 - 0x49, 0x8d, 0x40, 0xff, //0x00001df6 leaq $-1(%r8), %rax - 0x49, 0x39, 0xc3, //0x00001dfa cmpq %rax, %r11 - 0x0f, 0x84, 0x75, 0x00, 0x00, 0x00, //0x00001dfd je LBB0_398 - 0x49, 0xf7, 0xd0, //0x00001e03 notq %r8 - 0x4d, 0x89, 0xc4, //0x00001e06 movq %r8, %r12 - 0xe9, 0xe8, 0x03, 0x00, 0x00, //0x00001e09 jmp LBB0_422 - //0x00001e0e LBB0_395 - 0x49, 0xf7, 0xdc, //0x00001e0e negq %r12 - //0x00001e11 LBB0_396 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001e11 movq $8(%rsp), %r11 - //0x00001e16 LBB0_397 - 0xc5, 0xfe, 0x6f, 0x2d, 0xe2, 0xe1, 0xff, 0xff, //0x00001e16 vmovdqu $-7710(%rip), %ymm5 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x5a, 0xe2, 0xff, 0xff, //0x00001e1e vmovdqu $-7590(%rip), %ymm6 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x72, 0xe2, 0xff, 0xff, //0x00001e26 vmovdqu $-7566(%rip), %ymm7 /* LCPI0_8+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xea, 0xe2, 0xff, 0xff, //0x00001e2e vmovdqu $-7446(%rip), %ymm8 /* LCPI0_13+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001e36 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xfd, 0xe2, 0xff, 0xff, //0x00001e3b vmovdqu $-7427(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x15, 0xe3, 0xff, 0xff, //0x00001e43 vmovdqu $-7403(%rip), %ymm11 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x2d, 0xe3, 0xff, 0xff, //0x00001e4b vmovdqu $-7379(%rip), %ymm12 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x45, 0xe3, 0xff, 0xff, //0x00001e53 vmovdqu $-7355(%rip), %ymm13 /* LCPI0_17+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xdd, 0xe1, 0xff, 0xff, //0x00001e5b vmovdqu $-7715(%rip), %ymm14 /* LCPI0_2+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x55, 0xe3, 0xff, 0xff, //0x00001e63 vmovdqu $-7339(%rip), %ymm15 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x6d, 0xe3, 0xff, 0xff, //0x00001e6b vmovdqu $-7315(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xe9, 0x83, 0x03, 0x00, 0x00, //0x00001e73 jmp LBB0_423 - //0x00001e78 LBB0_398 - 0x48, 0x89, 0xd0, //0x00001e78 movq %rdx, %rax - 0x4c, 0x09, 0xd8, //0x00001e7b orq %r11, %rax - 0x0f, 0x99, 0xc1, //0x00001e7e setns %cl - 0x0f, 0x88, 0xdf, 0x00, 0x00, 0x00, //0x00001e81 js LBB0_404 - 0x4c, 0x39, 0xda, //0x00001e87 cmpq %r11, %rdx - 0x0f, 0x8c, 0xd6, 0x00, 0x00, 0x00, //0x00001e8a jl LBB0_404 - 0x48, 0xf7, 0xd2, //0x00001e90 notq %rdx - 0x49, 0x89, 0xd4, //0x00001e93 movq %rdx, %r12 - 0xe9, 0x5b, 0x03, 0x00, 0x00, //0x00001e96 jmp LBB0_422 - //0x00001e9b LBB0_401 - 0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00001e9b movq $16(%rsp), %r8 - 0x4d, 0x29, 0xc6, //0x00001ea0 subq %r8, %r14 - 0x49, 0x01, 0xfe, //0x00001ea3 addq %rdi, %r14 - 0x49, 0x39, 0xf6, //0x00001ea6 cmpq %rsi, %r14 - 0x0f, 0x82, 0x23, 0xea, 0xff, 0xff, //0x00001ea9 jb LBB0_87 - 0xe9, 0xd5, 0x0e, 0x00, 0x00, //0x00001eaf jmp LBB0_567 - //0x00001eb4 LBB0_402 - 0x89, 0xd0, //0x00001eb4 movl %edx, %eax - //0x00001eb6 LBB0_403 - 0x49, 0xf7, 0xd0, //0x00001eb6 notq %r8 - 0x49, 0x29, 0xc0, //0x00001eb9 subq %rax, %r8 - 0xe9, 0xdd, 0x00, 0x00, 0x00, //0x00001ebc jmp LBB0_407 - //0x00001ec1 LBB0_105 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00001ec1 addq $16(%rsp), %r15 - 0x48, 0x83, 0xfb, 0x20, //0x00001ec6 cmpq $32, %rbx - 0x0f, 0x82, 0xf5, 0x04, 0x00, 0x00, //0x00001eca jb LBB0_444 - //0x00001ed0 LBB0_106 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00001ed0 vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001ed5 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x00001ed9 vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x00001edd vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00001ee1 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x00001ee5 testl %edx, %edx - 0x0f, 0x85, 0x6d, 0x04, 0x00, 0x00, //0x00001ee7 jne LBB0_440 - 0x4d, 0x85, 0xd2, //0x00001eed testq %r10, %r10 - 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x00001ef0 jne LBB0_442 - 0x45, 0x31, 0xd2, //0x00001ef6 xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00001ef9 testq %rsi, %rsi - 0x0f, 0x84, 0xbb, 0x04, 0x00, 0x00, //0x00001efc je LBB0_443 - //0x00001f02 LBB0_109 - 0x48, 0x0f, 0xbc, 0xc6, //0x00001f02 bsfq %rsi, %rax - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00001f06 subq $16(%rsp), %r15 - 0x49, 0x01, 0xc7, //0x00001f0b addq %rax, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00001f0e addq $1, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001f12 movq $24(%rsp), %r10 - 0xe9, 0xd5, 0xf4, 0xff, 0xff, //0x00001f17 jmp LBB0_240 - //0x00001f1c LBB0_207 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00001f1c addq $16(%rsp), %r15 - 0x49, 0x83, 0xfd, 0x20, //0x00001f21 cmpq $32, %r13 - 0x0f, 0x82, 0x36, 0x03, 0x00, 0x00, //0x00001f25 jb LBB0_429 - //0x00001f2b LBB0_208 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00001f2b vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001f30 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x00001f34 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x00001f38 vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001f3c vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x00001f40 testl %edx, %edx - 0x0f, 0x85, 0x63, 0x05, 0x00, 0x00, //0x00001f42 jne LBB0_457 - 0x4d, 0x85, 0xdb, //0x00001f48 testq %r11, %r11 - 0x0f, 0x85, 0x78, 0x05, 0x00, 0x00, //0x00001f4b jne LBB0_459 - 0x45, 0x31, 0xdb, //0x00001f51 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00001f54 testq %r10, %r10 - 0x0f, 0x84, 0xb2, 0x05, 0x00, 0x00, //0x00001f57 je LBB0_460 - //0x00001f5d LBB0_211 - 0x49, 0x0f, 0xbc, 0xd2, //0x00001f5d bsfq %r10, %rdx - 0xe9, 0xae, 0x05, 0x00, 0x00, //0x00001f61 jmp LBB0_461 - //0x00001f66 LBB0_404 - 0x49, 0x8d, 0x43, 0xff, //0x00001f66 leaq $-1(%r11), %rax - 0x48, 0x39, 0xc2, //0x00001f6a cmpq %rax, %rdx - 0x49, 0xf7, 0xd3, //0x00001f6d notq %r11 - 0x4d, 0x0f, 0x45, 0xdc, //0x00001f70 cmovneq %r12, %r11 - 0x84, 0xc9, //0x00001f74 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xe3, //0x00001f76 cmovneq %r11, %r12 - 0xe9, 0x77, 0x02, 0x00, 0x00, //0x00001f7a jmp LBB0_422 - //0x00001f7f LBB0_405 - 0x0f, 0xbc, 0xc6, //0x00001f7f bsfl %esi, %eax - 0xe9, 0x12, 0x01, 0x00, 0x00, //0x00001f82 jmp LBB0_414 - //0x00001f87 LBB0_406 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001f87 movq $16(%rsp), %rax - 0x48, 0x03, 0x44, 0x24, 0x28, //0x00001f8c addq $40(%rsp), %rax - 0x4c, 0x29, 0xc0, //0x00001f91 subq %r8, %rax - 0x48, 0x29, 0xc8, //0x00001f94 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00001f97 addq $-2, %rax - 0x49, 0x89, 0xc0, //0x00001f9b movq %rax, %r8 - //0x00001f9e LBB0_407 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001f9e movq $8(%rsp), %r11 - 0x4d, 0x85, 0xc0, //0x00001fa3 testq %r8, %r8 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001fa6 movq $24(%rsp), %r10 - 0x0f, 0x89, 0x1f, 0xe7, 0xff, 0xff, //0x00001fab jns LBB0_408 - 0xe9, 0x06, 0x15, 0x00, 0x00, //0x00001fb1 jmp LBB0_635 - //0x00001fb6 LBB0_129 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00001fb6 addq $16(%rsp), %r15 - 0x48, 0x83, 0xfb, 0x20, //0x00001fbb cmpq $32, %rbx - 0x0f, 0x82, 0xd9, 0x06, 0x00, 0x00, //0x00001fbf jb LBB0_482 - //0x00001fc5 LBB0_130 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00001fc5 vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001fca vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x00001fce vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x00001fd2 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00001fd6 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x00001fda testl %edx, %edx - 0x0f, 0x85, 0x51, 0x06, 0x00, 0x00, //0x00001fdc jne LBB0_478 - 0x4d, 0x85, 0xd2, //0x00001fe2 testq %r10, %r10 - 0x0f, 0x85, 0x66, 0x06, 0x00, 0x00, //0x00001fe5 jne LBB0_480 - 0x45, 0x31, 0xd2, //0x00001feb xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00001fee testq %rsi, %rsi - 0x0f, 0x84, 0x9f, 0x06, 0x00, 0x00, //0x00001ff1 je LBB0_481 - //0x00001ff7 LBB0_133 - 0x48, 0x0f, 0xbc, 0xc6, //0x00001ff7 bsfq %rsi, %rax - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00001ffb subq $16(%rsp), %r15 - 0x49, 0x01, 0xc7, //0x00002000 addq %rax, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002003 addq $1, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002007 movq $24(%rsp), %r10 - 0xe9, 0x26, 0xf5, 0xff, 0xff, //0x0000200c jmp LBB0_259 - //0x00002011 LBB0_228 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00002011 addq $16(%rsp), %r15 - 0x48, 0x83, 0xfb, 0x20, //0x00002016 cmpq $32, %rbx - 0x0f, 0x82, 0xc2, 0x02, 0x00, 0x00, //0x0000201a jb LBB0_436 - //0x00002020 LBB0_229 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00002020 vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002025 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x00002029 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x0000202d vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00002031 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x00002035 testl %edx, %edx - 0x0f, 0x85, 0x47, 0x07, 0x00, 0x00, //0x00002037 jne LBB0_495 - 0x4d, 0x85, 0xdb, //0x0000203d testq %r11, %r11 - 0x0f, 0x85, 0x5c, 0x07, 0x00, 0x00, //0x00002040 jne LBB0_497 - 0x45, 0x31, 0xdb, //0x00002046 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00002049 testq %r10, %r10 - 0x0f, 0x84, 0x96, 0x07, 0x00, 0x00, //0x0000204c je LBB0_498 - //0x00002052 LBB0_232 - 0x49, 0x0f, 0xbc, 0xd2, //0x00002052 bsfq %r10, %rdx - 0xe9, 0x92, 0x07, 0x00, 0x00, //0x00002056 jmp LBB0_499 - //0x0000205b LBB0_409 - 0x89, 0xd0, //0x0000205b movl %edx, %eax - 0xe9, 0x37, 0x00, 0x00, 0x00, //0x0000205d jmp LBB0_414 - //0x00002062 LBB0_410 - 0x4d, 0x01, 0xc6, //0x00002062 addq %r8, %r14 - 0x48, 0x85, 0xd2, //0x00002065 testq %rdx, %rdx - 0x0f, 0x85, 0xfa, 0xe7, 0xff, 0xff, //0x00002068 jne LBB0_80 - 0xe9, 0x34, 0xe8, 0xff, 0xff, //0x0000206e jmp LBB0_85 - //0x00002073 LBB0_411 - 0x49, 0x89, 0xd4, //0x00002073 movq %rdx, %r12 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002076 movq $-1, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x0000207d movq (%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002081 testq %rdx, %rdx - 0x0f, 0x85, 0xcf, 0xfc, 0xff, 0xff, //0x00002084 jne LBB0_387 - 0xe9, 0xee, 0x15, 0x00, 0x00, //0x0000208a jmp LBB0_662 - //0x0000208f LBB0_412 - 0x0f, 0xbc, 0xc3, //0x0000208f bsfl %ebx, %eax - 0xe9, 0x59, 0x01, 0x00, 0x00, //0x00002092 jmp LBB0_421 - //0x00002097 LBB0_413 - 0x89, 0xf0, //0x00002097 movl %esi, %eax - //0x00002099 LBB0_414 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002099 movq $16(%rsp), %rcx - 0x48, 0x03, 0x4c, 0x24, 0x28, //0x0000209e addq $40(%rsp), %rcx - 0x4c, 0x29, 0xc1, //0x000020a3 subq %r8, %rcx - 0x48, 0x29, 0xc1, //0x000020a6 subq %rax, %rcx - 0x4c, 0x29, 0xc9, //0x000020a9 subq %r9, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000020ac addq $-2, %rcx - 0x49, 0x89, 0xc8, //0x000020b0 movq %rcx, %r8 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000020b3 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x000020b8 movq $32(%rsp), %r9 - 0x4d, 0x85, 0xc0, //0x000020bd testq %r8, %r8 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000020c0 movq $24(%rsp), %r10 - 0x0f, 0x89, 0x05, 0xe6, 0xff, 0xff, //0x000020c5 jns LBB0_408 - 0xe9, 0xec, 0x13, 0x00, 0x00, //0x000020cb jmp LBB0_635 - //0x000020d0 LBB0_271 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x000020d0 addq $16(%rsp), %r15 - 0x48, 0x83, 0xfb, 0x20, //0x000020d5 cmpq $32, %rbx - 0x0f, 0x82, 0xf6, 0x09, 0x00, 0x00, //0x000020d9 jb LBB0_527 - //0x000020df LBB0_272 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x000020df vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000020e4 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000020e8 vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x000020ec vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000020f0 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x000020f4 testl %edx, %edx - 0x0f, 0x85, 0x6e, 0x09, 0x00, 0x00, //0x000020f6 jne LBB0_523 - 0x4d, 0x85, 0xd2, //0x000020fc testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x09, 0x00, 0x00, //0x000020ff jne LBB0_525 - 0x45, 0x31, 0xd2, //0x00002105 xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00002108 testq %rsi, %rsi - 0x0f, 0x84, 0xbc, 0x09, 0x00, 0x00, //0x0000210b je LBB0_526 - //0x00002111 LBB0_275 - 0x48, 0x0f, 0xbc, 0xc6, //0x00002111 bsfq %rsi, %rax - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002115 subq $16(%rsp), %r15 - 0x49, 0x01, 0xc7, //0x0000211a addq %rax, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x0000211d addq $1, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002121 movq $24(%rsp), %r10 - 0xe9, 0xdb, 0xfb, 0xff, 0xff, //0x00002126 jmp LBB0_379 - //0x0000212b LBB0_312 - 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x0000212b addq $16(%rsp), %r15 - 0x48, 0x83, 0xfb, 0x20, //0x00002130 cmpq $32, %rbx - 0x0f, 0x82, 0x1c, 0x0b, 0x00, 0x00, //0x00002134 jb LBB0_549 - //0x0000213a LBB0_313 - 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x0000213a vmovdqu (%r15), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x0000213f vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x00002143 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x00002147 vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x0000214b vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x0000214f testl %edx, %edx - 0x0f, 0x85, 0x3b, 0x0a, 0x00, 0x00, //0x00002151 jne LBB0_540 - 0x4d, 0x85, 0xdb, //0x00002157 testq %r11, %r11 - 0x0f, 0x85, 0x50, 0x0a, 0x00, 0x00, //0x0000215a jne LBB0_542 - 0x45, 0x31, 0xdb, //0x00002160 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00002163 testq %r10, %r10 - 0x0f, 0x84, 0x8a, 0x0a, 0x00, 0x00, //0x00002166 je LBB0_543 - //0x0000216c LBB0_316 - 0x49, 0x0f, 0xbc, 0xd2, //0x0000216c bsfq %r10, %rdx - 0xe9, 0x86, 0x0a, 0x00, 0x00, //0x00002170 jmp LBB0_544 - //0x00002175 LBB0_415 - 0x0f, 0xbc, 0xc6, //0x00002175 bsfl %esi, %eax - //0x00002178 LBB0_416 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002178 movq $16(%rsp), %rcx - 0x4c, 0x01, 0xf9, //0x0000217d addq %r15, %rcx - 0x4c, 0x29, 0xe1, //0x00002180 subq %r12, %rcx - 0x48, 0x29, 0xc1, //0x00002183 subq %rax, %rcx - 0x49, 0xf7, 0xd5, //0x00002186 notq %r13 - 0x49, 0x01, 0xcd, //0x00002189 addq %rcx, %r13 - 0x4d, 0x89, 0xec, //0x0000218c movq %r13, %r12 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000218f movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002194 movq $56(%rsp), %r13 - 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00002199 movq $32(%rsp), %r9 - 0xe9, 0x73, 0xfc, 0xff, 0xff, //0x0000219e jmp LBB0_397 - //0x000021a3 LBB0_417 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000021a3 movq $16(%rsp), %rax - 0x4c, 0x01, 0xf8, //0x000021a8 addq %r15, %rax - 0x4c, 0x29, 0xe0, //0x000021ab subq %r12, %rax - 0x48, 0xf7, 0xd1, //0x000021ae notq %rcx - 0x48, 0x01, 0xc1, //0x000021b1 addq %rax, %rcx - 0x49, 0x89, 0xcc, //0x000021b4 movq %rcx, %r12 - 0xe9, 0x55, 0xfc, 0xff, 0xff, //0x000021b7 jmp LBB0_396 - //0x000021bc LBB0_418 - 0x89, 0xd0, //0x000021bc movl %edx, %eax - 0xe9, 0x2d, 0x00, 0x00, 0x00, //0x000021be jmp LBB0_421 - //0x000021c3 LBB0_419 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000021c3 movq $-1, %r10 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000021ca movq $-1, (%rsp) - 0x4d, 0x89, 0xe0, //0x000021d2 movq %r12, %r8 - 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x000021d5 movq %r9, $32(%rsp) - 0x49, 0x83, 0xfd, 0x10, //0x000021da cmpq $16, %r13 - 0x48, 0x8b, 0x44, 0x24, 0x28, //0x000021de movq $40(%rsp), %rax - 0x0f, 0x83, 0x2d, 0xeb, 0xff, 0xff, //0x000021e3 jae LBB0_158 - 0xe9, 0xa9, 0xec, 0xff, 0xff, //0x000021e9 jmp LBB0_176 - //0x000021ee LBB0_420 - 0x89, 0xf8, //0x000021ee movl %edi, %eax - //0x000021f0 LBB0_421 - 0x49, 0xf7, 0xd4, //0x000021f0 notq %r12 - 0x49, 0x29, 0xc4, //0x000021f3 subq %rax, %r12 - //0x000021f6 LBB0_422 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000021f6 movq $8(%rsp), %r11 - //0x000021fb LBB0_423 - 0x4d, 0x85, 0xe4, //0x000021fb testq %r12, %r12 - 0x0f, 0x88, 0x76, 0x14, 0x00, 0x00, //0x000021fe js LBB0_661 - 0x49, 0x8b, 0x0b, //0x00002204 movq (%r11), %rcx - //0x00002207 LBB0_425 - 0x4c, 0x01, 0xe1, //0x00002207 addq %r12, %rcx - 0x49, 0x89, 0x0b, //0x0000220a movq %rcx, (%r11) - 0x4d, 0x85, 0xff, //0x0000220d testq %r15, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002210 movq $24(%rsp), %r10 - 0x0f, 0x8f, 0xd5, 0xe4, 0xff, 0xff, //0x00002215 jg LBB0_55 - 0xe9, 0x51, 0x14, 0x00, 0x00, //0x0000221b jmp LBB0_426 - //0x00002220 LBB0_427 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002220 movq $16(%rsp), %rax - 0x4e, 0x8d, 0x3c, 0x00, //0x00002225 leaq (%rax,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002229 movq $-1, (%rsp) - 0x45, 0x31, 0xd2, //0x00002231 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x00002234 cmpq $32, %rbx - 0x0f, 0x83, 0x92, 0xfc, 0xff, 0xff, //0x00002238 jae LBB0_106 - 0xe9, 0x82, 0x01, 0x00, 0x00, //0x0000223e jmp LBB0_444 - //0x00002243 LBB0_428 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002243 movq $16(%rsp), %rcx - 0x4e, 0x8d, 0x3c, 0x01, //0x00002248 leaq (%rcx,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000224c movq $-1, (%rsp) - 0x45, 0x31, 0xdb, //0x00002254 xorl %r11d, %r11d - 0x49, 0x83, 0xfd, 0x20, //0x00002257 cmpq $32, %r13 - 0x0f, 0x83, 0xca, 0xfc, 0xff, 0xff, //0x0000225b jae LBB0_208 - //0x00002261 LBB0_429 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002261 movq $24(%rsp), %r10 - 0xe9, 0x09, 0x03, 0x00, 0x00, //0x00002266 jmp LBB0_466 - //0x0000226b LBB0_430 - 0x89, 0xf0, //0x0000226b movl %esi, %eax - 0xe9, 0x06, 0xff, 0xff, 0xff, //0x0000226d jmp LBB0_416 - //0x00002272 LBB0_431 - 0x89, 0xf0, //0x00002272 movl %esi, %eax - 0xe9, 0x02, 0x00, 0x00, 0x00, //0x00002274 jmp LBB0_433 - //0x00002279 LBB0_432 - 0x89, 0xd0, //0x00002279 movl %edx, %eax - //0x0000227b LBB0_433 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x0000227b movq $16(%rsp), %rcx - 0x4c, 0x01, 0xf9, //0x00002280 addq %r15, %rcx - 0x4c, 0x29, 0xe1, //0x00002283 subq %r12, %rcx - 0x48, 0x29, 0xc1, //0x00002286 subq %rax, %rcx - 0x49, 0xf7, 0xd5, //0x00002289 notq %r13 - 0x49, 0x01, 0xcd, //0x0000228c addq %rcx, %r13 - 0x4d, 0x89, 0xec, //0x0000228f movq %r13, %r12 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002292 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002297 movq $56(%rsp), %r13 - 0xe9, 0x75, 0xfb, 0xff, 0xff, //0x0000229c jmp LBB0_397 - //0x000022a1 LBB0_434 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000022a1 movq $16(%rsp), %rax - 0x4e, 0x8d, 0x3c, 0x00, //0x000022a6 leaq (%rax,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000022aa movq $-1, (%rsp) - 0x45, 0x31, 0xd2, //0x000022b2 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x000022b5 cmpq $32, %rbx - 0x0f, 0x83, 0x06, 0xfd, 0xff, 0xff, //0x000022b9 jae LBB0_130 - 0xe9, 0xda, 0x03, 0x00, 0x00, //0x000022bf jmp LBB0_482 - //0x000022c4 LBB0_435 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000022c4 movq $16(%rsp), %rax - 0x4e, 0x8d, 0x3c, 0x00, //0x000022c9 leaq (%rax,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000022cd movq $-1, (%rsp) - 0x45, 0x31, 0xdb, //0x000022d5 xorl %r11d, %r11d - 0x48, 0x83, 0xfb, 0x20, //0x000022d8 cmpq $32, %rbx - 0x0f, 0x83, 0x3e, 0xfd, 0xff, 0xff, //0x000022dc jae LBB0_229 - //0x000022e2 LBB0_436 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000022e2 movq $24(%rsp), %r10 - 0xe9, 0x61, 0x05, 0x00, 0x00, //0x000022e7 jmp LBB0_504 - //0x000022ec LBB0_437 - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000022ec movq $-1, %r11 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000022f3 movq $-1, (%rsp) - 0x4c, 0x8b, 0x64, 0x24, 0x30, //0x000022fb movq $48(%rsp), %r12 - 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00002300 movq %r13, $56(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x00002305 cmpq $16, %r10 - 0x0f, 0x83, 0xb4, 0xf7, 0xff, 0xff, //0x00002309 jae LBB0_343 - 0xe9, 0xe9, 0xf8, 0xff, 0xff, //0x0000230f jmp LBB0_361 - //0x00002314 LBB0_438 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002314 movq $16(%rsp), %rax - 0x4e, 0x8d, 0x3c, 0x00, //0x00002319 leaq (%rax,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000231d movq $-1, (%rsp) - 0x45, 0x31, 0xd2, //0x00002325 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x00002328 cmpq $32, %rbx - 0x0f, 0x83, 0xad, 0xfd, 0xff, 0xff, //0x0000232c jae LBB0_272 - 0xe9, 0x9e, 0x07, 0x00, 0x00, //0x00002332 jmp LBB0_527 - //0x00002337 LBB0_439 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002337 movq $16(%rsp), %rax - 0x4e, 0x8d, 0x3c, 0x00, //0x0000233c leaq (%rax,%r8), %r15 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002340 movq $-1, (%rsp) - 0x45, 0x31, 0xdb, //0x00002348 xorl %r11d, %r11d - 0x48, 0x83, 0xfb, 0x20, //0x0000234b cmpq $32, %rbx - 0x0f, 0x83, 0xe5, 0xfd, 0xff, 0xff, //0x0000234f jae LBB0_313 - 0xe9, 0xfc, 0x08, 0x00, 0x00, //0x00002355 jmp LBB0_549 - //0x0000235a LBB0_440 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x0000235a cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x0000235f jne LBB0_442 - 0x4c, 0x89, 0xf8, //0x00002365 movq %r15, %rax - 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002368 subq $16(%rsp), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x0000236d bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x00002371 addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00002374 movq %rcx, (%rsp) - //0x00002378 LBB0_442 - 0x44, 0x89, 0xd0, //0x00002378 movl %r10d, %eax - 0xf7, 0xd0, //0x0000237b notl %eax - 0x21, 0xd0, //0x0000237d andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x0000237f leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x3c, 0x42, //0x00002382 leal (%r10,%rax,2), %edi - 0xf7, 0xd1, //0x00002386 notl %ecx - 0x21, 0xd1, //0x00002388 andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000238a andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00002390 xorl %r10d, %r10d - 0x01, 0xc1, //0x00002393 addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x00002395 setb %r10b - 0x01, 0xc9, //0x00002399 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x0000239b xorl $1431655765, %ecx - 0x21, 0xf9, //0x000023a1 andl %edi, %ecx - 0xf7, 0xd1, //0x000023a3 notl %ecx - 0x21, 0xce, //0x000023a5 andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000023a7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x2c, 0xde, 0xff, 0xff, //0x000023ac vmovdqu $-8660(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xf6, //0x000023b4 testq %rsi, %rsi - 0x0f, 0x85, 0x45, 0xfb, 0xff, 0xff, //0x000023b7 jne LBB0_109 - //0x000023bd LBB0_443 - 0x49, 0x83, 0xc7, 0x20, //0x000023bd addq $32, %r15 - 0x48, 0x83, 0xc3, 0xe0, //0x000023c1 addq $-32, %rbx - //0x000023c5 LBB0_444 - 0x4d, 0x85, 0xd2, //0x000023c5 testq %r10, %r10 - 0x0f, 0x85, 0x38, 0x05, 0x00, 0x00, //0x000023c8 jne LBB0_515 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000023ce movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x000023d3 notq %rcx - 0x48, 0x8b, 0x3c, 0x24, //0x000023d6 movq (%rsp), %rdi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000023da movq $24(%rsp), %r10 - 0x48, 0x85, 0xdb, //0x000023df testq %rbx, %rbx - 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x000023e2 je LBB0_456 - //0x000023e8 LBB0_446 - 0x48, 0x83, 0xc1, 0x01, //0x000023e8 addq $1, %rcx - //0x000023ec LBB0_447 - 0x31, 0xf6, //0x000023ec xorl %esi, %esi - //0x000023ee LBB0_448 - 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x000023ee movzbl (%r15,%rsi), %edx - 0x80, 0xfa, 0x22, //0x000023f3 cmpb $34, %dl - 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000023f6 je LBB0_455 - 0x80, 0xfa, 0x5c, //0x000023fc cmpb $92, %dl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000023ff je LBB0_453 - 0x48, 0x83, 0xc6, 0x01, //0x00002405 addq $1, %rsi - 0x48, 0x39, 0xf3, //0x00002409 cmpq %rsi, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000240c jne LBB0_448 - 0xe9, 0x71, 0x00, 0x00, 0x00, //0x00002412 jmp LBB0_451 - //0x00002417 LBB0_453 - 0x48, 0x8d, 0x43, 0xff, //0x00002417 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xf0, //0x0000241b cmpq %rsi, %rax - 0x0f, 0x84, 0x9e, 0x09, 0x00, 0x00, //0x0000241e je LBB0_381 - 0x4a, 0x8d, 0x04, 0x39, //0x00002424 leaq (%rcx,%r15), %rax - 0x48, 0x01, 0xf0, //0x00002428 addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x0000242b cmpq $-1, %rdi - 0x48, 0x8b, 0x14, 0x24, //0x0000242f movq (%rsp), %rdx - 0x48, 0x0f, 0x44, 0xd0, //0x00002433 cmoveq %rax, %rdx - 0x48, 0x89, 0x14, 0x24, //0x00002437 movq %rdx, (%rsp) - 0x48, 0x0f, 0x44, 0xf8, //0x0000243b cmoveq %rax, %rdi - 0x49, 0x01, 0xf7, //0x0000243f addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x02, //0x00002442 addq $2, %r15 - 0x48, 0x89, 0xd8, //0x00002446 movq %rbx, %rax - 0x48, 0x29, 0xf0, //0x00002449 subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x0000244c addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002450 addq $-2, %rbx - 0x48, 0x39, 0xf3, //0x00002454 cmpq %rsi, %rbx - 0x48, 0x89, 0xc3, //0x00002457 movq %rax, %rbx - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000245a movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000245f vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x74, 0xdd, 0xff, 0xff, //0x00002464 vmovdqu $-8844(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x85, 0x7a, 0xff, 0xff, 0xff, //0x0000246c jne LBB0_447 - 0xe9, 0x4b, 0x09, 0x00, 0x00, //0x00002472 jmp LBB0_381 - //0x00002477 LBB0_455 - 0x49, 0x01, 0xf7, //0x00002477 addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x0000247a addq $1, %r15 - //0x0000247e LBB0_456 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000247e subq $16(%rsp), %r15 - 0xe9, 0x69, 0xef, 0xff, 0xff, //0x00002483 jmp LBB0_240 - //0x00002488 LBB0_451 - 0x80, 0xfa, 0x22, //0x00002488 cmpb $34, %dl - 0x0f, 0x85, 0x31, 0x09, 0x00, 0x00, //0x0000248b jne LBB0_381 - 0x49, 0x01, 0xdf, //0x00002491 addq %rbx, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002494 movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002499 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x3a, 0xdd, 0xff, 0xff, //0x0000249e vmovdqu $-8902(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xe9, 0xd3, 0xff, 0xff, 0xff, //0x000024a6 jmp LBB0_456 - //0x000024ab LBB0_457 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000024ab cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x000024b0 jne LBB0_459 - 0x4c, 0x89, 0xf9, //0x000024b6 movq %r15, %rcx - 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000024b9 subq $16(%rsp), %rcx - 0x48, 0x0f, 0xbc, 0xf2, //0x000024be bsfq %rdx, %rsi - 0x48, 0x01, 0xce, //0x000024c2 addq %rcx, %rsi - 0x48, 0x89, 0x34, 0x24, //0x000024c5 movq %rsi, (%rsp) - //0x000024c9 LBB0_459 - 0x44, 0x89, 0xd9, //0x000024c9 movl %r11d, %ecx - 0xf7, 0xd1, //0x000024cc notl %ecx - 0x21, 0xd1, //0x000024ce andl %edx, %ecx - 0x8d, 0x34, 0x09, //0x000024d0 leal (%rcx,%rcx), %esi - 0x41, 0x8d, 0x3c, 0x4b, //0x000024d3 leal (%r11,%rcx,2), %edi - 0xf7, 0xd6, //0x000024d7 notl %esi - 0x21, 0xd6, //0x000024d9 andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000024db andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x000024e1 xorl %r11d, %r11d - 0x01, 0xce, //0x000024e4 addl %ecx, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x000024e6 setb %r11b - 0x01, 0xf6, //0x000024ea addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x000024ec xorl $1431655765, %esi - 0x21, 0xfe, //0x000024f2 andl %edi, %esi - 0xf7, 0xd6, //0x000024f4 notl %esi - 0x41, 0x21, 0xf2, //0x000024f6 andl %esi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000024f9 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xda, 0xdc, 0xff, 0xff, //0x000024fe vmovdqu $-8998(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x4d, 0x85, 0xd2, //0x00002506 testq %r10, %r10 - 0x0f, 0x85, 0x4e, 0xfa, 0xff, 0xff, //0x00002509 jne LBB0_211 - //0x0000250f LBB0_460 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000250f movl $64, %edx - //0x00002514 LBB0_461 - 0xc5, 0xbd, 0x64, 0xc8, //0x00002514 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002518 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000251d vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00002521 vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x00002525 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x00002528 testq %r10, %r10 - 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x0000252b je LBB0_464 - 0x85, 0xf6, //0x00002531 testl %esi, %esi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002533 movl $64, %ecx - 0x0f, 0x44, 0xf9, //0x00002538 cmovel %ecx, %edi - 0x48, 0x39, 0xfa, //0x0000253b cmpq %rdi, %rdx - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000253e movq $24(%rsp), %r10 - 0x0f, 0x87, 0xd9, 0x11, 0x00, 0x00, //0x00002543 ja LBB0_673 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002549 subq $16(%rsp), %r15 - 0x49, 0x01, 0xd7, //0x0000254e addq %rdx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002551 addq $1, %r15 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002555 movq $8(%rsp), %r11 - 0xe9, 0xc9, 0x00, 0x00, 0x00, //0x0000255a jmp LBB0_477 - //0x0000255f LBB0_464 - 0x85, 0xf6, //0x0000255f testl %esi, %esi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002561 movq $24(%rsp), %r10 - 0x0f, 0x85, 0xc8, 0x11, 0x00, 0x00, //0x00002566 jne LBB0_678 - 0x49, 0x83, 0xc7, 0x20, //0x0000256c addq $32, %r15 - 0x49, 0x83, 0xc5, 0xe0, //0x00002570 addq $-32, %r13 - //0x00002574 LBB0_466 - 0x4d, 0x85, 0xdb, //0x00002574 testq %r11, %r11 - 0x0f, 0x85, 0xe3, 0x03, 0x00, 0x00, //0x00002577 jne LBB0_517 - 0x48, 0x8b, 0x0c, 0x24, //0x0000257d movq (%rsp), %rcx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002581 movq $8(%rsp), %r11 - 0x4d, 0x85, 0xed, //0x00002586 testq %r13, %r13 - 0x0f, 0x84, 0x33, 0x08, 0x00, 0x00, //0x00002589 je LBB0_381 - //0x0000258f LBB0_468 - 0x41, 0x0f, 0xb6, 0x17, //0x0000258f movzbl (%r15), %edx - 0x80, 0xfa, 0x22, //0x00002593 cmpb $34, %dl - 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x00002596 je LBB0_476 - 0x80, 0xfa, 0x5c, //0x0000259c cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000259f je LBB0_472 - 0x80, 0xfa, 0x1f, //0x000025a5 cmpb $31, %dl - 0x0f, 0x86, 0x92, 0x11, 0x00, 0x00, //0x000025a8 jbe LBB0_674 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000025ae movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000025b5 movl $1, %esi - 0x49, 0x01, 0xf7, //0x000025ba addq %rsi, %r15 - 0x49, 0x01, 0xd5, //0x000025bd addq %rdx, %r13 - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x000025c0 jne LBB0_468 - 0xe9, 0xf7, 0x07, 0x00, 0x00, //0x000025c6 jmp LBB0_381 - //0x000025cb LBB0_472 - 0x49, 0x83, 0xfd, 0x01, //0x000025cb cmpq $1, %r13 - 0x0f, 0x84, 0xa7, 0x07, 0x00, 0x00, //0x000025cf je LBB0_565 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000025d5 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000025dc movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x000025e1 cmpq $-1, %rcx - 0x0f, 0x85, 0x0c, 0x00, 0x00, 0x00, //0x000025e5 jne LBB0_475 - 0x4c, 0x89, 0xf9, //0x000025eb movq %r15, %rcx - 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000025ee subq $16(%rsp), %rcx - 0x48, 0x89, 0x0c, 0x24, //0x000025f3 movq %rcx, (%rsp) - //0x000025f7 LBB0_475 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000025f7 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000025fc movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002601 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xd2, 0xdb, 0xff, 0xff, //0x00002606 vmovdqu $-9262(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x49, 0x01, 0xf7, //0x0000260e addq %rsi, %r15 - 0x49, 0x01, 0xd5, //0x00002611 addq %rdx, %r13 - 0x0f, 0x85, 0x75, 0xff, 0xff, 0xff, //0x00002614 jne LBB0_468 - 0xe9, 0xa3, 0x07, 0x00, 0x00, //0x0000261a jmp LBB0_381 - //0x0000261f LBB0_476 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000261f subq $16(%rsp), %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002624 addq $1, %r15 - //0x00002628 LBB0_477 - 0x4d, 0x89, 0xcd, //0x00002628 movq %r9, %r13 - 0x49, 0x89, 0xc1, //0x0000262b movq %rax, %r9 - 0xe9, 0xbe, 0xed, 0xff, 0xff, //0x0000262e jmp LBB0_240 - //0x00002633 LBB0_478 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002633 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002638 jne LBB0_480 - 0x4c, 0x89, 0xf8, //0x0000263e movq %r15, %rax - 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002641 subq $16(%rsp), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00002646 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x0000264a addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x0000264d movq %rcx, (%rsp) - //0x00002651 LBB0_480 - 0x44, 0x89, 0xd0, //0x00002651 movl %r10d, %eax - 0xf7, 0xd0, //0x00002654 notl %eax - 0x21, 0xd0, //0x00002656 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00002658 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x3c, 0x42, //0x0000265b leal (%r10,%rax,2), %edi - 0xf7, 0xd1, //0x0000265f notl %ecx - 0x21, 0xd1, //0x00002661 andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002663 andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00002669 xorl %r10d, %r10d - 0x01, 0xc1, //0x0000266c addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x0000266e setb %r10b - 0x01, 0xc9, //0x00002672 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002674 xorl $1431655765, %ecx - 0x21, 0xf9, //0x0000267a andl %edi, %ecx - 0xf7, 0xd1, //0x0000267c notl %ecx - 0x21, 0xce, //0x0000267e andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002680 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x53, 0xdb, 0xff, 0xff, //0x00002685 vmovdqu $-9389(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xf6, //0x0000268d testq %rsi, %rsi - 0x0f, 0x85, 0x61, 0xf9, 0xff, 0xff, //0x00002690 jne LBB0_133 - //0x00002696 LBB0_481 - 0x49, 0x83, 0xc7, 0x20, //0x00002696 addq $32, %r15 - 0x48, 0x83, 0xc3, 0xe0, //0x0000269a addq $-32, %rbx - //0x0000269e LBB0_482 - 0x4d, 0x85, 0xd2, //0x0000269e testq %r10, %r10 - 0x0f, 0x85, 0x11, 0x03, 0x00, 0x00, //0x000026a1 jne LBB0_519 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000026a7 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x000026ac notq %rcx - 0x48, 0x8b, 0x3c, 0x24, //0x000026af movq (%rsp), %rdi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000026b3 movq $24(%rsp), %r10 - 0x48, 0x85, 0xdb, //0x000026b8 testq %rbx, %rbx - 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x000026bb je LBB0_494 - //0x000026c1 LBB0_484 - 0x48, 0x83, 0xc1, 0x01, //0x000026c1 addq $1, %rcx - //0x000026c5 LBB0_485 - 0x31, 0xf6, //0x000026c5 xorl %esi, %esi - //0x000026c7 LBB0_486 - 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x000026c7 movzbl (%r15,%rsi), %edx - 0x80, 0xfa, 0x22, //0x000026cc cmpb $34, %dl - 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000026cf je LBB0_493 - 0x80, 0xfa, 0x5c, //0x000026d5 cmpb $92, %dl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000026d8 je LBB0_491 - 0x48, 0x83, 0xc6, 0x01, //0x000026de addq $1, %rsi - 0x48, 0x39, 0xf3, //0x000026e2 cmpq %rsi, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000026e5 jne LBB0_486 - 0xe9, 0x71, 0x00, 0x00, 0x00, //0x000026eb jmp LBB0_489 - //0x000026f0 LBB0_491 - 0x48, 0x8d, 0x43, 0xff, //0x000026f0 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xf0, //0x000026f4 cmpq %rsi, %rax - 0x0f, 0x84, 0xc5, 0x06, 0x00, 0x00, //0x000026f7 je LBB0_381 - 0x4a, 0x8d, 0x04, 0x39, //0x000026fd leaq (%rcx,%r15), %rax - 0x48, 0x01, 0xf0, //0x00002701 addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x00002704 cmpq $-1, %rdi - 0x48, 0x8b, 0x14, 0x24, //0x00002708 movq (%rsp), %rdx - 0x48, 0x0f, 0x44, 0xd0, //0x0000270c cmoveq %rax, %rdx - 0x48, 0x89, 0x14, 0x24, //0x00002710 movq %rdx, (%rsp) - 0x48, 0x0f, 0x44, 0xf8, //0x00002714 cmoveq %rax, %rdi - 0x49, 0x01, 0xf7, //0x00002718 addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x02, //0x0000271b addq $2, %r15 - 0x48, 0x89, 0xd8, //0x0000271f movq %rbx, %rax - 0x48, 0x29, 0xf0, //0x00002722 subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00002725 addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002729 addq $-2, %rbx - 0x48, 0x39, 0xf3, //0x0000272d cmpq %rsi, %rbx - 0x48, 0x89, 0xc3, //0x00002730 movq %rax, %rbx - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002733 movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002738 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x9b, 0xda, 0xff, 0xff, //0x0000273d vmovdqu $-9573(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x85, 0x7a, 0xff, 0xff, 0xff, //0x00002745 jne LBB0_485 - 0xe9, 0x72, 0x06, 0x00, 0x00, //0x0000274b jmp LBB0_381 - //0x00002750 LBB0_493 - 0x49, 0x01, 0xf7, //0x00002750 addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002753 addq $1, %r15 - //0x00002757 LBB0_494 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002757 subq $16(%rsp), %r15 - 0xe9, 0xd6, 0xed, 0xff, 0xff, //0x0000275c jmp LBB0_259 - //0x00002761 LBB0_489 - 0x80, 0xfa, 0x22, //0x00002761 cmpb $34, %dl - 0x0f, 0x85, 0x58, 0x06, 0x00, 0x00, //0x00002764 jne LBB0_381 - 0x49, 0x01, 0xdf, //0x0000276a addq %rbx, %r15 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000276d movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002772 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x61, 0xda, 0xff, 0xff, //0x00002777 vmovdqu $-9631(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xe9, 0xd3, 0xff, 0xff, 0xff, //0x0000277f jmp LBB0_494 - //0x00002784 LBB0_495 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002784 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002789 jne LBB0_497 - 0x4c, 0x89, 0xf8, //0x0000278f movq %r15, %rax - 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002792 subq $16(%rsp), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00002797 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x0000279b addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x0000279e movq %rcx, (%rsp) - //0x000027a2 LBB0_497 - 0x44, 0x89, 0xd8, //0x000027a2 movl %r11d, %eax - 0xf7, 0xd0, //0x000027a5 notl %eax - 0x21, 0xd0, //0x000027a7 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x000027a9 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x34, 0x43, //0x000027ac leal (%r11,%rax,2), %esi - 0xf7, 0xd1, //0x000027b0 notl %ecx - 0x21, 0xd1, //0x000027b2 andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x000027b4 andl $-1431655766, %ecx - 0x45, 0x31, 0xdb, //0x000027ba xorl %r11d, %r11d - 0x01, 0xc1, //0x000027bd addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc3, //0x000027bf setb %r11b - 0x01, 0xc9, //0x000027c3 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x000027c5 xorl $1431655765, %ecx - 0x21, 0xf1, //0x000027cb andl %esi, %ecx - 0xf7, 0xd1, //0x000027cd notl %ecx - 0x41, 0x21, 0xca, //0x000027cf andl %ecx, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000027d2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x01, 0xda, 0xff, 0xff, //0x000027d7 vmovdqu $-9727(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x4d, 0x85, 0xd2, //0x000027df testq %r10, %r10 - 0x0f, 0x85, 0x6a, 0xf8, 0xff, 0xff, //0x000027e2 jne LBB0_232 - //0x000027e8 LBB0_498 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000027e8 movl $64, %edx - //0x000027ed LBB0_499 - 0xc5, 0xbd, 0x64, 0xc8, //0x000027ed vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000027f1 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000027f6 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000027fa vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x000027fe bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x00002801 testq %r10, %r10 - 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x00002804 je LBB0_502 - 0x85, 0xf6, //0x0000280a testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x0000280c movl $64, %eax - 0x0f, 0x44, 0xf8, //0x00002811 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x00002814 cmpq %rdi, %rdx - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002817 movq $24(%rsp), %r10 - 0x0f, 0x87, 0x35, 0x0f, 0x00, 0x00, //0x0000281c ja LBB0_677 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002822 subq $16(%rsp), %r15 - 0x49, 0x01, 0xd7, //0x00002827 addq %rdx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x0000282a addq $1, %r15 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000282e movq $8(%rsp), %r11 - 0xe9, 0xff, 0xec, 0xff, 0xff, //0x00002833 jmp LBB0_259 - //0x00002838 LBB0_502 - 0x85, 0xf6, //0x00002838 testl %esi, %esi - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000283a movq $24(%rsp), %r10 - 0x0f, 0x85, 0xef, 0x0e, 0x00, 0x00, //0x0000283f jne LBB0_678 - 0x49, 0x83, 0xc7, 0x20, //0x00002845 addq $32, %r15 - 0x48, 0x83, 0xc3, 0xe0, //0x00002849 addq $-32, %rbx - //0x0000284d LBB0_504 - 0x4d, 0x85, 0xdb, //0x0000284d testq %r11, %r11 - 0x0f, 0x85, 0xbc, 0x01, 0x00, 0x00, //0x00002850 jne LBB0_521 - 0x48, 0x8b, 0x0c, 0x24, //0x00002856 movq (%rsp), %rcx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000285a movq $8(%rsp), %r11 - 0x48, 0x85, 0xdb, //0x0000285f testq %rbx, %rbx - 0x0f, 0x84, 0x5a, 0x05, 0x00, 0x00, //0x00002862 je LBB0_381 - //0x00002868 LBB0_506 - 0x41, 0x0f, 0xb6, 0x17, //0x00002868 movzbl (%r15), %edx - 0x80, 0xfa, 0x22, //0x0000286c cmpb $34, %dl - 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x0000286f je LBB0_514 - 0x80, 0xfa, 0x5c, //0x00002875 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002878 je LBB0_510 - 0x80, 0xfa, 0x1f, //0x0000287e cmpb $31, %dl - 0x0f, 0x86, 0xb9, 0x0e, 0x00, 0x00, //0x00002881 jbe LBB0_674 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002887 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x0000288e movl $1, %esi - 0x49, 0x01, 0xf7, //0x00002893 addq %rsi, %r15 - 0x48, 0x01, 0xd3, //0x00002896 addq %rdx, %rbx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00002899 jne LBB0_506 - 0xe9, 0x1e, 0x05, 0x00, 0x00, //0x0000289f jmp LBB0_381 - //0x000028a4 LBB0_510 - 0x48, 0x83, 0xfb, 0x01, //0x000028a4 cmpq $1, %rbx - 0x0f, 0x84, 0xce, 0x04, 0x00, 0x00, //0x000028a8 je LBB0_565 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000028ae movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000028b5 movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x000028ba cmpq $-1, %rcx - 0x0f, 0x85, 0x0c, 0x00, 0x00, 0x00, //0x000028be jne LBB0_513 - 0x4c, 0x89, 0xf9, //0x000028c4 movq %r15, %rcx - 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000028c7 subq $16(%rsp), %rcx - 0x48, 0x89, 0x0c, 0x24, //0x000028cc movq %rcx, (%rsp) - //0x000028d0 LBB0_513 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000028d0 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000028d5 movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000028da vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xf9, 0xd8, 0xff, 0xff, //0x000028df vmovdqu $-9991(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x49, 0x01, 0xf7, //0x000028e7 addq %rsi, %r15 - 0x48, 0x01, 0xd3, //0x000028ea addq %rdx, %rbx - 0x0f, 0x85, 0x75, 0xff, 0xff, 0xff, //0x000028ed jne LBB0_506 - 0xe9, 0xca, 0x04, 0x00, 0x00, //0x000028f3 jmp LBB0_381 - //0x000028f8 LBB0_514 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000028f8 subq $16(%rsp), %r15 - 0x49, 0x83, 0xc7, 0x01, //0x000028fd addq $1, %r15 - 0xe9, 0x31, 0xec, 0xff, 0xff, //0x00002901 jmp LBB0_259 - //0x00002906 LBB0_515 - 0x48, 0x85, 0xdb, //0x00002906 testq %rbx, %rbx - 0x0f, 0x84, 0xb3, 0x04, 0x00, 0x00, //0x00002909 je LBB0_381 - 0x4c, 0x89, 0xca, //0x0000290f movq %r9, %rdx - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002912 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x00002917 notq %rcx - 0x49, 0x8d, 0x04, 0x0f, //0x0000291a leaq (%r15,%rcx), %rax - 0x4c, 0x8b, 0x0c, 0x24, //0x0000291e movq (%rsp), %r9 - 0x49, 0x83, 0xf9, 0xff, //0x00002922 cmpq $-1, %r9 - 0x4c, 0x89, 0xcf, //0x00002926 movq %r9, %rdi - 0x4c, 0x0f, 0x44, 0xc8, //0x00002929 cmoveq %rax, %r9 - 0x48, 0x0f, 0x44, 0xf8, //0x0000292d cmoveq %rax, %rdi - 0x49, 0x83, 0xc7, 0x01, //0x00002931 addq $1, %r15 - 0x48, 0x83, 0xc3, 0xff, //0x00002935 addq $-1, %rbx - 0x4c, 0x89, 0x0c, 0x24, //0x00002939 movq %r9, (%rsp) - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000293d movq $24(%rsp), %r10 - 0x49, 0x89, 0xd1, //0x00002942 movq %rdx, %r9 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002945 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x8e, 0xd8, 0xff, 0xff, //0x0000294a vmovdqu $-10098(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xdb, //0x00002952 testq %rbx, %rbx - 0x0f, 0x85, 0x8d, 0xfa, 0xff, 0xff, //0x00002955 jne LBB0_446 - 0xe9, 0x1e, 0xfb, 0xff, 0xff, //0x0000295b jmp LBB0_456 - //0x00002960 LBB0_517 - 0x4d, 0x85, 0xed, //0x00002960 testq %r13, %r13 - 0x0f, 0x84, 0x13, 0x04, 0x00, 0x00, //0x00002963 je LBB0_565 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002969 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x0000296e notq %rcx - 0x4c, 0x01, 0xf9, //0x00002971 addq %r15, %rcx - 0x48, 0x8b, 0x34, 0x24, //0x00002974 movq (%rsp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002978 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x0000297c movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x0000297f cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002983 cmovneq %rsi, %rcx - 0x49, 0x83, 0xc7, 0x01, //0x00002987 addq $1, %r15 - 0x49, 0x83, 0xc5, 0xff, //0x0000298b addq $-1, %r13 - 0x48, 0x89, 0x14, 0x24, //0x0000298f movq %rdx, (%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002993 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002998 movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000299d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x36, 0xd8, 0xff, 0xff, //0x000029a2 vmovdqu $-10186(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x4d, 0x85, 0xed, //0x000029aa testq %r13, %r13 - 0x0f, 0x85, 0xdc, 0xfb, 0xff, 0xff, //0x000029ad jne LBB0_468 - 0xe9, 0x0a, 0x04, 0x00, 0x00, //0x000029b3 jmp LBB0_381 - //0x000029b8 LBB0_519 - 0x48, 0x85, 0xdb, //0x000029b8 testq %rbx, %rbx - 0x0f, 0x84, 0x01, 0x04, 0x00, 0x00, //0x000029bb je LBB0_381 - 0x4c, 0x89, 0xca, //0x000029c1 movq %r9, %rdx - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000029c4 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x000029c9 notq %rcx - 0x49, 0x8d, 0x04, 0x0f, //0x000029cc leaq (%r15,%rcx), %rax - 0x4c, 0x8b, 0x0c, 0x24, //0x000029d0 movq (%rsp), %r9 - 0x49, 0x83, 0xf9, 0xff, //0x000029d4 cmpq $-1, %r9 - 0x4c, 0x89, 0xcf, //0x000029d8 movq %r9, %rdi - 0x4c, 0x0f, 0x44, 0xc8, //0x000029db cmoveq %rax, %r9 - 0x48, 0x0f, 0x44, 0xf8, //0x000029df cmoveq %rax, %rdi - 0x49, 0x83, 0xc7, 0x01, //0x000029e3 addq $1, %r15 - 0x48, 0x83, 0xc3, 0xff, //0x000029e7 addq $-1, %rbx - 0x4c, 0x89, 0x0c, 0x24, //0x000029eb movq %r9, (%rsp) - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000029ef movq $24(%rsp), %r10 - 0x49, 0x89, 0xd1, //0x000029f4 movq %rdx, %r9 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000029f7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xdc, 0xd7, 0xff, 0xff, //0x000029fc vmovdqu $-10276(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xdb, //0x00002a04 testq %rbx, %rbx - 0x0f, 0x85, 0xb4, 0xfc, 0xff, 0xff, //0x00002a07 jne LBB0_484 - 0xe9, 0x45, 0xfd, 0xff, 0xff, //0x00002a0d jmp LBB0_494 - //0x00002a12 LBB0_521 - 0x48, 0x85, 0xdb, //0x00002a12 testq %rbx, %rbx - 0x0f, 0x84, 0x61, 0x03, 0x00, 0x00, //0x00002a15 je LBB0_565 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002a1b movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x00002a20 notq %rcx - 0x4c, 0x01, 0xf9, //0x00002a23 addq %r15, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00002a26 movq (%rsp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00002a2a cmpq $-1, %rdx - 0x48, 0x89, 0xd0, //0x00002a2e movq %rdx, %rax - 0x48, 0x0f, 0x44, 0xc1, //0x00002a31 cmoveq %rcx, %rax - 0x48, 0x0f, 0x45, 0xca, //0x00002a35 cmovneq %rdx, %rcx - 0x49, 0x83, 0xc7, 0x01, //0x00002a39 addq $1, %r15 - 0x48, 0x83, 0xc3, 0xff, //0x00002a3d addq $-1, %rbx - 0x48, 0x89, 0x04, 0x24, //0x00002a41 movq %rax, (%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002a45 movq $8(%rsp), %r11 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002a4a movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002a4f vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x84, 0xd7, 0xff, 0xff, //0x00002a54 vmovdqu $-10364(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xdb, //0x00002a5c testq %rbx, %rbx - 0x0f, 0x85, 0x03, 0xfe, 0xff, 0xff, //0x00002a5f jne LBB0_506 - 0xe9, 0x58, 0x03, 0x00, 0x00, //0x00002a65 jmp LBB0_381 - //0x00002a6a LBB0_523 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002a6a cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002a6f jne LBB0_525 - 0x4c, 0x89, 0xf8, //0x00002a75 movq %r15, %rax - 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002a78 subq $16(%rsp), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00002a7d bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x00002a81 addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00002a84 movq %rcx, (%rsp) - //0x00002a88 LBB0_525 - 0x44, 0x89, 0xd0, //0x00002a88 movl %r10d, %eax - 0xf7, 0xd0, //0x00002a8b notl %eax - 0x21, 0xd0, //0x00002a8d andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00002a8f leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x3c, 0x42, //0x00002a92 leal (%r10,%rax,2), %edi - 0xf7, 0xd1, //0x00002a96 notl %ecx - 0x21, 0xd1, //0x00002a98 andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002a9a andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00002aa0 xorl %r10d, %r10d - 0x01, 0xc1, //0x00002aa3 addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x00002aa5 setb %r10b - 0x01, 0xc9, //0x00002aa9 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002aab xorl $1431655765, %ecx - 0x21, 0xf9, //0x00002ab1 andl %edi, %ecx - 0xf7, 0xd1, //0x00002ab3 notl %ecx - 0x21, 0xce, //0x00002ab5 andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ab7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x1c, 0xd7, 0xff, 0xff, //0x00002abc vmovdqu $-10468(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x48, 0x85, 0xf6, //0x00002ac4 testq %rsi, %rsi - 0x0f, 0x85, 0x44, 0xf6, 0xff, 0xff, //0x00002ac7 jne LBB0_275 - //0x00002acd LBB0_526 - 0x49, 0x83, 0xc7, 0x20, //0x00002acd addq $32, %r15 - 0x48, 0x83, 0xc3, 0xe0, //0x00002ad1 addq $-32, %rbx - //0x00002ad5 LBB0_527 - 0x4d, 0x85, 0xd2, //0x00002ad5 testq %r10, %r10 - 0x0f, 0x85, 0x20, 0x02, 0x00, 0x00, //0x00002ad8 jne LBB0_561 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002ade movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x00002ae3 notq %rcx - 0x48, 0x8b, 0x3c, 0x24, //0x00002ae6 movq (%rsp), %rdi - 0x48, 0x85, 0xdb, //0x00002aea testq %rbx, %rbx - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x00002aed je LBB0_539 - //0x00002af3 LBB0_529 - 0x48, 0x83, 0xc1, 0x01, //0x00002af3 addq $1, %rcx - //0x00002af7 LBB0_530 - 0x31, 0xf6, //0x00002af7 xorl %esi, %esi - //0x00002af9 LBB0_531 - 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x00002af9 movzbl (%r15,%rsi), %edx - 0x80, 0xfa, 0x22, //0x00002afe cmpb $34, %dl - 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x00002b01 je LBB0_538 - 0x80, 0xfa, 0x5c, //0x00002b07 cmpb $92, %dl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002b0a je LBB0_536 - 0x48, 0x83, 0xc6, 0x01, //0x00002b10 addq $1, %rsi - 0x48, 0x39, 0xf3, //0x00002b14 cmpq %rsi, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002b17 jne LBB0_531 - 0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00002b1d jmp LBB0_534 - //0x00002b22 LBB0_536 - 0x48, 0x8d, 0x43, 0xff, //0x00002b22 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xf0, //0x00002b26 cmpq %rsi, %rax - 0x0f, 0x84, 0x93, 0x02, 0x00, 0x00, //0x00002b29 je LBB0_381 - 0x4a, 0x8d, 0x04, 0x39, //0x00002b2f leaq (%rcx,%r15), %rax - 0x48, 0x01, 0xf0, //0x00002b33 addq %rsi, %rax - 0x48, 0x83, 0xff, 0xff, //0x00002b36 cmpq $-1, %rdi - 0x48, 0x8b, 0x14, 0x24, //0x00002b3a movq (%rsp), %rdx - 0x48, 0x0f, 0x44, 0xd0, //0x00002b3e cmoveq %rax, %rdx - 0x48, 0x89, 0x14, 0x24, //0x00002b42 movq %rdx, (%rsp) - 0x48, 0x0f, 0x44, 0xf8, //0x00002b46 cmoveq %rax, %rdi - 0x49, 0x01, 0xf7, //0x00002b4a addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x02, //0x00002b4d addq $2, %r15 - 0x48, 0x89, 0xd8, //0x00002b51 movq %rbx, %rax - 0x48, 0x29, 0xf0, //0x00002b54 subq %rsi, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00002b57 addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002b5b addq $-2, %rbx - 0x48, 0x39, 0xf3, //0x00002b5f cmpq %rsi, %rbx - 0x48, 0x89, 0xc3, //0x00002b62 movq %rax, %rbx - 0x0f, 0x85, 0x8c, 0xff, 0xff, 0xff, //0x00002b65 jne LBB0_530 - 0xe9, 0x52, 0x02, 0x00, 0x00, //0x00002b6b jmp LBB0_381 - //0x00002b70 LBB0_538 - 0x49, 0x01, 0xf7, //0x00002b70 addq %rsi, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002b73 addq $1, %r15 - //0x00002b77 LBB0_539 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002b77 subq $16(%rsp), %r15 - 0xe9, 0x66, 0x01, 0x00, 0x00, //0x00002b7c jmp LBB0_560 - //0x00002b81 LBB0_534 - 0x80, 0xfa, 0x22, //0x00002b81 cmpb $34, %dl - 0x0f, 0x85, 0x38, 0x02, 0x00, 0x00, //0x00002b84 jne LBB0_381 - 0x49, 0x01, 0xdf, //0x00002b8a addq %rbx, %r15 - 0xe9, 0xe5, 0xff, 0xff, 0xff, //0x00002b8d jmp LBB0_539 - //0x00002b92 LBB0_540 - 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002b92 cmpq $-1, (%rsp) - 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002b97 jne LBB0_542 - 0x4c, 0x89, 0xf8, //0x00002b9d movq %r15, %rax - 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002ba0 subq $16(%rsp), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00002ba5 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x00002ba9 addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00002bac movq %rcx, (%rsp) - //0x00002bb0 LBB0_542 - 0x44, 0x89, 0xd8, //0x00002bb0 movl %r11d, %eax - 0xf7, 0xd0, //0x00002bb3 notl %eax - 0x21, 0xd0, //0x00002bb5 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00002bb7 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x34, 0x43, //0x00002bba leal (%r11,%rax,2), %esi - 0xf7, 0xd1, //0x00002bbe notl %ecx - 0x21, 0xd1, //0x00002bc0 andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002bc2 andl $-1431655766, %ecx - 0x45, 0x31, 0xdb, //0x00002bc8 xorl %r11d, %r11d - 0x01, 0xc1, //0x00002bcb addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc3, //0x00002bcd setb %r11b - 0x01, 0xc9, //0x00002bd1 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002bd3 xorl $1431655765, %ecx - 0x21, 0xf1, //0x00002bd9 andl %esi, %ecx - 0xf7, 0xd1, //0x00002bdb notl %ecx - 0x41, 0x21, 0xca, //0x00002bdd andl %ecx, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002be0 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xf3, 0xd5, 0xff, 0xff, //0x00002be5 vmovdqu $-10765(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x4d, 0x85, 0xd2, //0x00002bed testq %r10, %r10 - 0x0f, 0x85, 0x76, 0xf5, 0xff, 0xff, //0x00002bf0 jne LBB0_316 - //0x00002bf6 LBB0_543 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002bf6 movl $64, %edx - //0x00002bfb LBB0_544 - 0xc5, 0xbd, 0x64, 0xc8, //0x00002bfb vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002bff vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00002c04 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00002c08 vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x00002c0c bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x00002c0f testq %r10, %r10 - 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x00002c12 je LBB0_547 - 0x85, 0xf6, //0x00002c18 testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x00002c1a movl $64, %eax - 0x0f, 0x44, 0xf8, //0x00002c1f cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x00002c22 cmpq %rdi, %rdx - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002c25 movq $24(%rsp), %r10 - 0x0f, 0x87, 0x27, 0x0b, 0x00, 0x00, //0x00002c2a ja LBB0_677 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002c30 subq $16(%rsp), %r15 - 0x49, 0x01, 0xd7, //0x00002c35 addq %rdx, %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002c38 addq $1, %r15 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002c3c movq $8(%rsp), %r11 - 0xe9, 0xc0, 0xf0, 0xff, 0xff, //0x00002c41 jmp LBB0_379 - //0x00002c46 LBB0_547 - 0x85, 0xf6, //0x00002c46 testl %esi, %esi - 0x0f, 0x85, 0xe6, 0x0a, 0x00, 0x00, //0x00002c48 jne LBB0_678 - 0x49, 0x83, 0xc7, 0x20, //0x00002c4e addq $32, %r15 - 0x48, 0x83, 0xc3, 0xe0, //0x00002c52 addq $-32, %rbx - //0x00002c56 LBB0_549 - 0x4d, 0x85, 0xdb, //0x00002c56 testq %r11, %r11 - 0x0f, 0x85, 0xe1, 0x00, 0x00, 0x00, //0x00002c59 jne LBB0_563 - 0x48, 0x8b, 0x0c, 0x24, //0x00002c5f movq (%rsp), %rcx - 0x48, 0x85, 0xdb, //0x00002c63 testq %rbx, %rbx - 0x0f, 0x84, 0x10, 0x01, 0x00, 0x00, //0x00002c66 je LBB0_565 - //0x00002c6c LBB0_551 - 0x41, 0x0f, 0xb6, 0x17, //0x00002c6c movzbl (%r15), %edx - 0x80, 0xfa, 0x22, //0x00002c70 cmpb $34, %dl - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x00002c73 je LBB0_559 - 0x80, 0xfa, 0x5c, //0x00002c79 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002c7c je LBB0_556 - 0x80, 0xfa, 0x1f, //0x00002c82 cmpb $31, %dl - 0x0f, 0x86, 0x02, 0x0b, 0x00, 0x00, //0x00002c85 jbe LBB0_679 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002c8b movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002c92 movl $1, %esi - //0x00002c97 LBB0_555 - 0x49, 0x01, 0xf7, //0x00002c97 addq %rsi, %r15 - 0x48, 0x01, 0xd3, //0x00002c9a addq %rdx, %rbx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00002c9d jne LBB0_551 - 0xe9, 0xd4, 0x00, 0x00, 0x00, //0x00002ca3 jmp LBB0_565 - //0x00002ca8 LBB0_556 - 0x48, 0x83, 0xfb, 0x01, //0x00002ca8 cmpq $1, %rbx - 0x0f, 0x84, 0xca, 0x00, 0x00, 0x00, //0x00002cac je LBB0_565 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002cb2 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002cb9 movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002cbe cmpq $-1, %rcx - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002cc2 jne LBB0_555 - 0x4c, 0x89, 0xf9, //0x00002cc8 movq %r15, %rcx - 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00002ccb subq $16(%rsp), %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00002cd0 movq %rcx, (%rsp) - 0xe9, 0xbe, 0xff, 0xff, 0xff, //0x00002cd4 jmp LBB0_555 - //0x00002cd9 LBB0_559 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002cd9 subq $16(%rsp), %r15 - 0x49, 0x83, 0xc7, 0x01, //0x00002cde addq $1, %r15 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002ce2 movq $8(%rsp), %r11 - //0x00002ce7 LBB0_560 - 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002ce7 movq $24(%rsp), %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002cec vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xe7, 0xd4, 0xff, 0xff, //0x00002cf1 vmovdqu $-11033(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xe9, 0x08, 0xf0, 0xff, 0xff, //0x00002cf9 jmp LBB0_379 - //0x00002cfe LBB0_561 - 0x48, 0x85, 0xdb, //0x00002cfe testq %rbx, %rbx - 0x0f, 0x84, 0xbb, 0x00, 0x00, 0x00, //0x00002d01 je LBB0_381 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002d07 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x00002d0c notq %rcx - 0x49, 0x8d, 0x04, 0x0f, //0x00002d0f leaq (%r15,%rcx), %rax - 0x48, 0x8b, 0x14, 0x24, //0x00002d13 movq (%rsp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00002d17 cmpq $-1, %rdx - 0x48, 0x89, 0xd7, //0x00002d1b movq %rdx, %rdi - 0x48, 0x0f, 0x44, 0xd0, //0x00002d1e cmoveq %rax, %rdx - 0x48, 0x0f, 0x44, 0xf8, //0x00002d22 cmoveq %rax, %rdi - 0x49, 0x83, 0xc7, 0x01, //0x00002d26 addq $1, %r15 - 0x48, 0x83, 0xc3, 0xff, //0x00002d2a addq $-1, %rbx - 0x48, 0x89, 0x14, 0x24, //0x00002d2e movq %rdx, (%rsp) - 0x48, 0x85, 0xdb, //0x00002d32 testq %rbx, %rbx - 0x0f, 0x85, 0xb8, 0xfd, 0xff, 0xff, //0x00002d35 jne LBB0_529 - 0xe9, 0x37, 0xfe, 0xff, 0xff, //0x00002d3b jmp LBB0_539 - //0x00002d40 LBB0_563 - 0x48, 0x85, 0xdb, //0x00002d40 testq %rbx, %rbx - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00002d43 je LBB0_565 - 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002d49 movq $16(%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x00002d4e notq %rcx - 0x4c, 0x01, 0xf9, //0x00002d51 addq %r15, %rcx - 0x48, 0x8b, 0x14, 0x24, //0x00002d54 movq (%rsp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00002d58 cmpq $-1, %rdx - 0x48, 0x89, 0xd0, //0x00002d5c movq %rdx, %rax - 0x48, 0x0f, 0x44, 0xc1, //0x00002d5f cmoveq %rcx, %rax - 0x48, 0x0f, 0x45, 0xca, //0x00002d63 cmovneq %rdx, %rcx - 0x49, 0x83, 0xc7, 0x01, //0x00002d67 addq $1, %r15 - 0x48, 0x83, 0xc3, 0xff, //0x00002d6b addq $-1, %rbx - 0x48, 0x89, 0x04, 0x24, //0x00002d6f movq %rax, (%rsp) - 0x48, 0x85, 0xdb, //0x00002d73 testq %rbx, %rbx - 0x0f, 0x85, 0xf0, 0xfe, 0xff, 0xff, //0x00002d76 jne LBB0_551 - //0x00002d7c LBB0_565 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002d7c movq $8(%rsp), %r11 - 0xe9, 0x3c, 0x00, 0x00, 0x00, //0x00002d81 jmp LBB0_381 - //0x00002d86 LBB0_566 - 0x4d, 0x89, 0x33, //0x00002d86 movq %r14, (%r11) - //0x00002d89 LBB0_567 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d89 movq $-1, %r15 - 0xe9, 0x43, 0x07, 0x00, 0x00, //0x00002d90 jmp LBB0_638 - //0x00002d95 LBB0_568 - 0x48, 0x8d, 0x48, 0x04, //0x00002d95 leaq $4(%rax), %rcx - 0x49, 0x3b, 0x4d, 0x08, //0x00002d99 cmpq $8(%r13), %rcx - 0x0f, 0x86, 0xaf, 0xd8, 0xff, 0xff, //0x00002d9d jbe LBB0_52 - 0xe9, 0x30, 0x07, 0x00, 0x00, //0x00002da3 jmp LBB0_638 - //0x00002da8 LBB0_650 - 0x49, 0xc7, 0xc7, 0xf9, 0xff, 0xff, 0xff, //0x00002da8 movq $-7, %r15 - 0xe9, 0x24, 0x07, 0x00, 0x00, //0x00002daf jmp LBB0_638 - //0x00002db4 LBB0_380 - 0x49, 0x83, 0xff, 0xff, //0x00002db4 cmpq $-1, %r15 - 0x48, 0x8b, 0x14, 0x24, //0x00002db8 movq (%rsp), %rdx - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002dbc jne LBB0_382 - //0x00002dc2 LBB0_381 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002dc2 movq $-1, %r15 - 0x4c, 0x89, 0xe2, //0x00002dc9 movq %r12, %rdx - //0x00002dcc LBB0_382 - 0x49, 0x89, 0x13, //0x00002dcc movq %rdx, (%r11) - 0xe9, 0x04, 0x07, 0x00, 0x00, //0x00002dcf jmp LBB0_638 - //0x00002dd4 LBB0_242 - 0x49, 0x83, 0xc0, 0xff, //0x00002dd4 addq $-1, %r8 - 0x4d, 0x89, 0xc7, //0x00002dd8 movq %r8, %r15 - 0xe9, 0xf8, 0x06, 0x00, 0x00, //0x00002ddb jmp LBB0_638 - //0x00002de0 LBB0_569 - 0x49, 0x89, 0x03, //0x00002de0 movq %rax, (%r11) - 0xe9, 0xe9, 0x06, 0x00, 0x00, //0x00002de3 jmp LBB0_637 - //0x00002de8 LBB0_570 - 0x4c, 0x89, 0xe9, //0x00002de8 movq %r13, %rcx - 0x4d, 0x89, 0xdd, //0x00002deb movq %r11, %r13 - 0x4c, 0x8b, 0x41, 0x08, //0x00002dee movq $8(%rcx), %r8 - 0x4d, 0x89, 0xc6, //0x00002df2 movq %r8, %r14 - 0x49, 0x29, 0xd6, //0x00002df5 subq %rdx, %r14 - 0x49, 0x83, 0xfe, 0x20, //0x00002df8 cmpq $32, %r14 - 0x0f, 0x8c, 0x07, 0x09, 0x00, 0x00, //0x00002dfc jl LBB0_671 - 0x4d, 0x8d, 0x0c, 0x02, //0x00002e02 leaq (%r10,%rax), %r9 - 0x49, 0x29, 0xc0, //0x00002e06 subq %rax, %r8 - 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x00002e09 movl $31, %ebx - 0x45, 0x31, 0xf6, //0x00002e0e xorl %r14d, %r14d - 0xc5, 0xfe, 0x6f, 0x05, 0x67, 0xd2, 0xff, 0xff, //0x00002e11 vmovdqu $-11673(%rip), %ymm0 /* LCPI0_7+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0x7f, 0xd2, 0xff, 0xff, //0x00002e19 vmovdqu $-11649(%rip), %ymm1 /* LCPI0_8+0(%rip) */ - 0x45, 0x31, 0xe4, //0x00002e21 xorl %r12d, %r12d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e24 .p2align 4, 0x90 - //0x00002e30 LBB0_572 - 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x31, 0x01, //0x00002e30 vmovdqu $1(%r9,%r14), %ymm2 - 0xc5, 0xed, 0x74, 0xd8, //0x00002e37 vpcmpeqb %ymm0, %ymm2, %ymm3 - 0xc5, 0x7d, 0xd7, 0xdb, //0x00002e3b vpmovmskb %ymm3, %r11d - 0xc5, 0xed, 0x74, 0xd1, //0x00002e3f vpcmpeqb %ymm1, %ymm2, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00002e43 vpmovmskb %ymm2, %ecx - 0x85, 0xc9, //0x00002e47 testl %ecx, %ecx - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00002e49 jne LBB0_575 - 0x4d, 0x85, 0xe4, //0x00002e4f testq %r12, %r12 - 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00002e52 jne LBB0_575 - 0x45, 0x31, 0xe4, //0x00002e58 xorl %r12d, %r12d - 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00002e5b jmp LBB0_576 - //0x00002e60 LBB0_575 - 0x44, 0x89, 0xe7, //0x00002e60 movl %r12d, %edi - 0xf7, 0xd7, //0x00002e63 notl %edi - 0x21, 0xcf, //0x00002e65 andl %ecx, %edi - 0x8d, 0x14, 0x3f, //0x00002e67 leal (%rdi,%rdi), %edx - 0x44, 0x09, 0xe2, //0x00002e6a orl %r12d, %edx - 0x89, 0xd6, //0x00002e6d movl %edx, %esi - 0xf7, 0xd6, //0x00002e6f notl %esi - 0x21, 0xce, //0x00002e71 andl %ecx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002e73 andl $-1431655766, %esi - 0x45, 0x31, 0xe4, //0x00002e79 xorl %r12d, %r12d - 0x01, 0xfe, //0x00002e7c addl %edi, %esi - 0x41, 0x0f, 0x92, 0xc4, //0x00002e7e setb %r12b - 0x01, 0xf6, //0x00002e82 addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x00002e84 xorl $1431655765, %esi - 0x21, 0xd6, //0x00002e8a andl %edx, %esi - 0xf7, 0xd6, //0x00002e8c notl %esi - 0x41, 0x21, 0xf3, //0x00002e8e andl %esi, %r11d - //0x00002e91 LBB0_576 - 0x4d, 0x85, 0xdb, //0x00002e91 testq %r11, %r11 - 0x0f, 0x85, 0xfc, 0x05, 0x00, 0x00, //0x00002e94 jne LBB0_632 - 0x49, 0x83, 0xc6, 0x20, //0x00002e9a addq $32, %r14 - 0x49, 0x8d, 0x0c, 0x18, //0x00002e9e leaq (%r8,%rbx), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00002ea2 addq $-32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00002ea6 addq $-32, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x00002eaa cmpq $63, %rcx - 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x00002eae jg LBB0_572 - 0x4d, 0x85, 0xe4, //0x00002eb4 testq %r12, %r12 - 0x0f, 0x85, 0xac, 0x08, 0x00, 0x00, //0x00002eb7 jne LBB0_675 - 0x4b, 0x8d, 0x14, 0x0e, //0x00002ebd leaq (%r14,%r9), %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00002ec1 addq $1, %rdx - 0x49, 0xf7, 0xd6, //0x00002ec5 notq %r14 - 0x4d, 0x01, 0xc6, //0x00002ec8 addq %r8, %r14 - //0x00002ecb LBB0_580 - 0x4d, 0x85, 0xf6, //0x00002ecb testq %r14, %r14 - 0x0f, 0x8e, 0x04, 0x06, 0x00, 0x00, //0x00002ece jle LBB0_638 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002ed4 movq $-1, %r15 - 0xe9, 0x25, 0x06, 0x00, 0x00, //0x00002edb jmp LBB0_640 - //0x00002ee0 LBB0_582 - 0x48, 0x8d, 0x48, 0x05, //0x00002ee0 leaq $5(%rax), %rcx - 0x49, 0x3b, 0x4d, 0x08, //0x00002ee4 cmpq $8(%r13), %rcx - 0x0f, 0x86, 0x64, 0xd7, 0xff, 0xff, //0x00002ee8 jbe LBB0_52 - 0xe9, 0xe5, 0x05, 0x00, 0x00, //0x00002eee jmp LBB0_638 - //0x00002ef3 LBB0_583 - 0x4c, 0x89, 0x5c, 0x24, 0x08, //0x00002ef3 movq %r11, $8(%rsp) - 0x4d, 0x8b, 0x75, 0x08, //0x00002ef8 movq $8(%r13), %r14 - 0x49, 0x29, 0xd6, //0x00002efc subq %rdx, %r14 - 0x49, 0x01, 0xd2, //0x00002eff addq %rdx, %r10 - 0x45, 0x31, 0xdb, //0x00002f02 xorl %r11d, %r11d - 0xc5, 0xfe, 0x6f, 0x05, 0x93, 0xd1, 0xff, 0xff, //0x00002f05 vmovdqu $-11885(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0x6b, 0xd1, 0xff, 0xff, //0x00002f0d vmovdqu $-11925(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x00002f15 vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0x9f, 0xd1, 0xff, 0xff, //0x00002f19 vmovdqu $-11873(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xb7, 0xd1, 0xff, 0xff, //0x00002f21 vmovdqu $-11849(%rip), %ymm4 /* LCPI0_10+0(%rip) */ - 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x00002f29 vpxor %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xe4, //0x00002f2e xorl %r12d, %r12d - 0x45, 0x31, 0xc9, //0x00002f31 xorl %r9d, %r9d - 0x31, 0xd2, //0x00002f34 xorl %edx, %edx - 0x49, 0x83, 0xfe, 0x40, //0x00002f36 cmpq $64, %r14 - 0x0f, 0x8c, 0x4c, 0x01, 0x00, 0x00, //0x00002f3a jl LBB0_592 - //0x00002f40 LBB0_586 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3a, //0x00002f40 vmovdqu (%r10), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x72, 0x20, //0x00002f45 vmovdqu $32(%r10), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x00002f4b vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00002f4f vpmovmskb %ymm8, %esi - 0xc5, 0x4d, 0x74, 0xc0, //0x00002f54 vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00002f58 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00002f5d shlq $32, %rcx - 0x48, 0x09, 0xce, //0x00002f61 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00002f64 movq %rsi, %rcx - 0x4d, 0x89, 0xe8, //0x00002f67 movq %r13, %r8 - 0x4c, 0x09, 0xe1, //0x00002f6a orq %r12, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00002f6d jne LBB0_588 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00002f73 movq $-1, %rsi - 0x45, 0x31, 0xe4, //0x00002f7a xorl %r12d, %r12d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00002f7d jmp LBB0_589 - //0x00002f82 LBB0_588 - 0x4c, 0x89, 0xe1, //0x00002f82 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00002f85 notq %rcx - 0x48, 0x21, 0xf1, //0x00002f88 andq %rsi, %rcx - 0x4c, 0x8d, 0x2c, 0x09, //0x00002f8b leaq (%rcx,%rcx), %r13 - 0x4d, 0x09, 0xe5, //0x00002f8f orq %r12, %r13 - 0x4c, 0x89, 0xeb, //0x00002f92 movq %r13, %rbx - 0x48, 0xf7, 0xd3, //0x00002f95 notq %rbx - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002f98 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00002fa2 andq %rdi, %rsi - 0x48, 0x21, 0xde, //0x00002fa5 andq %rbx, %rsi - 0x45, 0x31, 0xe4, //0x00002fa8 xorl %r12d, %r12d - 0x48, 0x01, 0xce, //0x00002fab addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc4, //0x00002fae setb %r12b - 0x48, 0x01, 0xf6, //0x00002fb2 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002fb5 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00002fbf xorq %rcx, %rsi - 0x4c, 0x21, 0xee, //0x00002fc2 andq %r13, %rsi - 0x48, 0xf7, 0xd6, //0x00002fc5 notq %rsi - //0x00002fc8 LBB0_589 - 0xc5, 0x4d, 0x74, 0xc1, //0x00002fc8 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00002fcc vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00002fd1 shlq $32, %rcx - 0xc5, 0x45, 0x74, 0xc1, //0x00002fd5 vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf8, //0x00002fd9 vpmovmskb %ymm8, %edi - 0x48, 0x09, 0xcf, //0x00002fde orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x00002fe1 andq %rsi, %rdi - 0xc4, 0xe1, 0xf9, 0x6e, 0xef, //0x00002fe4 vmovq %rdi, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x00002fe9 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x00002fef vmovq %xmm5, %r13 - 0x4d, 0x31, 0xdd, //0x00002ff4 xorq %r11, %r13 - 0xc5, 0xc5, 0x74, 0xeb, //0x00002ff7 vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xfd, //0x00002ffb vpmovmskb %ymm5, %edi - 0xc5, 0xcd, 0x74, 0xeb, //0x00002fff vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xcd, //0x00003003 vpmovmskb %ymm5, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00003007 shlq $32, %rcx - 0x48, 0x09, 0xcf, //0x0000300b orq %rcx, %rdi - 0x4c, 0x89, 0xe9, //0x0000300e movq %r13, %rcx - 0x48, 0xf7, 0xd1, //0x00003011 notq %rcx - 0x48, 0x21, 0xcf, //0x00003014 andq %rcx, %rdi - 0xc5, 0xc5, 0x74, 0xec, //0x00003017 vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x0000301b vpmovmskb %ymm5, %ebx - 0xc5, 0xcd, 0x74, 0xec, //0x0000301f vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xf5, //0x00003023 vpmovmskb %ymm5, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x00003027 shlq $32, %rsi - 0x48, 0x09, 0xf3, //0x0000302b orq %rsi, %rbx - 0x48, 0x21, 0xcb, //0x0000302e andq %rcx, %rbx - 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00003031 je LBB0_584 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003037 .p2align 4, 0x90 - //0x00003040 LBB0_590 - 0x48, 0x8d, 0x4b, 0xff, //0x00003040 leaq $-1(%rbx), %rcx - 0x48, 0x89, 0xce, //0x00003044 movq %rcx, %rsi - 0x48, 0x21, 0xfe, //0x00003047 andq %rdi, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x0000304a popcntq %rsi, %rsi - 0x4c, 0x01, 0xce, //0x0000304f addq %r9, %rsi - 0x48, 0x39, 0xd6, //0x00003052 cmpq %rdx, %rsi - 0x0f, 0x86, 0x00, 0x04, 0x00, 0x00, //0x00003055 jbe LBB0_631 - 0x48, 0x83, 0xc2, 0x01, //0x0000305b addq $1, %rdx - 0x48, 0x21, 0xcb, //0x0000305f andq %rcx, %rbx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00003062 jne LBB0_590 - //0x00003068 LBB0_584 - 0x49, 0xc1, 0xfd, 0x3f, //0x00003068 sarq $63, %r13 - 0xf3, 0x48, 0x0f, 0xb8, 0xcf, //0x0000306c popcntq %rdi, %rcx - 0x49, 0x01, 0xc9, //0x00003071 addq %rcx, %r9 - 0x49, 0x83, 0xc2, 0x40, //0x00003074 addq $64, %r10 - 0x49, 0x83, 0xc6, 0xc0, //0x00003078 addq $-64, %r14 - 0x4d, 0x89, 0xeb, //0x0000307c movq %r13, %r11 - 0x4d, 0x89, 0xc5, //0x0000307f movq %r8, %r13 - 0x49, 0x83, 0xfe, 0x40, //0x00003082 cmpq $64, %r14 - 0x0f, 0x8d, 0xb4, 0xfe, 0xff, 0xff, //0x00003086 jge LBB0_586 - //0x0000308c LBB0_592 - 0x4d, 0x85, 0xf6, //0x0000308c testq %r14, %r14 - 0x0f, 0x8e, 0x7c, 0x06, 0x00, 0x00, //0x0000308f jle LBB0_672 - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x00003095 vmovdqu %ymm9, $96(%rsp) - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x0000309b vmovdqu %ymm9, $64(%rsp) - 0x44, 0x89, 0xd1, //0x000030a1 movl %r10d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000030a4 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000030aa cmpl $4033, %ecx - 0x0f, 0x82, 0x8a, 0xfe, 0xff, 0xff, //0x000030b0 jb LBB0_586 - 0x49, 0x83, 0xfe, 0x20, //0x000030b6 cmpq $32, %r14 - 0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x000030ba jb LBB0_596 - 0xc4, 0xc1, 0x7e, 0x6f, 0x2a, //0x000030c0 vmovdqu (%r10), %ymm5 - 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x000030c5 vmovdqu %ymm5, $64(%rsp) - 0x49, 0x83, 0xc2, 0x20, //0x000030cb addq $32, %r10 - 0x49, 0x8d, 0x7e, 0xe0, //0x000030cf leaq $-32(%r14), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x000030d3 leaq $96(%rsp), %rsi - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x000030d8 jmp LBB0_597 - //0x000030dd LBB0_596 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x000030dd leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xf7, //0x000030e2 movq %r14, %rdi - //0x000030e5 LBB0_597 - 0x48, 0x83, 0xff, 0x10, //0x000030e5 cmpq $16, %rdi - 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x000030e9 jb LBB0_598 - 0xc4, 0xc1, 0x7a, 0x6f, 0x2a, //0x000030ef vmovdqu (%r10), %xmm5 - 0xc5, 0xfa, 0x7f, 0x2e, //0x000030f4 vmovdqu %xmm5, (%rsi) - 0x49, 0x83, 0xc2, 0x10, //0x000030f8 addq $16, %r10 - 0x48, 0x83, 0xc6, 0x10, //0x000030fc addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00003100 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00003104 cmpq $8, %rdi - 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x00003108 jae LBB0_603 - //0x0000310e LBB0_599 - 0x48, 0x83, 0xff, 0x04, //0x0000310e cmpq $4, %rdi - 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x00003112 jl LBB0_600 - //0x00003118 LBB0_604 - 0x41, 0x8b, 0x0a, //0x00003118 movl (%r10), %ecx - 0x89, 0x0e, //0x0000311b movl %ecx, (%rsi) - 0x49, 0x83, 0xc2, 0x04, //0x0000311d addq $4, %r10 - 0x48, 0x83, 0xc6, 0x04, //0x00003121 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00003125 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00003129 cmpq $2, %rdi - 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000312d jae LBB0_605 - //0x00003133 LBB0_601 - 0x4c, 0x89, 0xd3, //0x00003133 movq %r10, %rbx - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x00003136 leaq $64(%rsp), %r10 - 0x48, 0x85, 0xff, //0x0000313b testq %rdi, %rdi - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x0000313e jne LBB0_606 - 0xe9, 0xf7, 0xfd, 0xff, 0xff, //0x00003144 jmp LBB0_586 - //0x00003149 LBB0_598 - 0x48, 0x83, 0xff, 0x08, //0x00003149 cmpq $8, %rdi - 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x0000314d jb LBB0_599 - //0x00003153 LBB0_603 - 0x49, 0x8b, 0x0a, //0x00003153 movq (%r10), %rcx - 0x48, 0x89, 0x0e, //0x00003156 movq %rcx, (%rsi) - 0x49, 0x83, 0xc2, 0x08, //0x00003159 addq $8, %r10 - 0x48, 0x83, 0xc6, 0x08, //0x0000315d addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00003161 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00003165 cmpq $4, %rdi - 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00003169 jge LBB0_604 - //0x0000316f LBB0_600 - 0x48, 0x83, 0xff, 0x02, //0x0000316f cmpq $2, %rdi - 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00003173 jb LBB0_601 - //0x00003179 LBB0_605 - 0x41, 0x0f, 0xb7, 0x0a, //0x00003179 movzwl (%r10), %ecx - 0x66, 0x89, 0x0e, //0x0000317d movw %cx, (%rsi) - 0x49, 0x83, 0xc2, 0x02, //0x00003180 addq $2, %r10 - 0x48, 0x83, 0xc6, 0x02, //0x00003184 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00003188 addq $-2, %rdi - 0x4c, 0x89, 0xd3, //0x0000318c movq %r10, %rbx - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x0000318f leaq $64(%rsp), %r10 - 0x48, 0x85, 0xff, //0x00003194 testq %rdi, %rdi - 0x0f, 0x84, 0xa3, 0xfd, 0xff, 0xff, //0x00003197 je LBB0_586 - //0x0000319d LBB0_606 - 0x8a, 0x0b, //0x0000319d movb (%rbx), %cl - 0x88, 0x0e, //0x0000319f movb %cl, (%rsi) - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x000031a1 leaq $64(%rsp), %r10 - 0xe9, 0x95, 0xfd, 0xff, 0xff, //0x000031a6 jmp LBB0_586 - //0x000031ab LBB0_607 - 0x4c, 0x89, 0x5c, 0x24, 0x08, //0x000031ab movq %r11, $8(%rsp) - 0x4d, 0x8b, 0x75, 0x08, //0x000031b0 movq $8(%r13), %r14 - 0x49, 0x29, 0xd6, //0x000031b4 subq %rdx, %r14 - 0x49, 0x01, 0xd2, //0x000031b7 addq %rdx, %r10 - 0x45, 0x31, 0xdb, //0x000031ba xorl %r11d, %r11d - 0xc5, 0xfe, 0x6f, 0x05, 0xdb, 0xce, 0xff, 0xff, //0x000031bd vmovdqu $-12581(%rip), %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x0d, 0xb3, 0xce, 0xff, 0xff, //0x000031c5 vmovdqu $-12621(%rip), %ymm1 /* LCPI0_7+0(%rip) */ - 0xc5, 0xe9, 0x76, 0xd2, //0x000031cd vpcmpeqd %xmm2, %xmm2, %xmm2 - 0xc5, 0xfe, 0x6f, 0x1d, 0x27, 0xcf, 0xff, 0xff, //0x000031d1 vmovdqu $-12505(%rip), %ymm3 /* LCPI0_11+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x7f, 0xce, 0xff, 0xff, //0x000031d9 vmovdqu $-12673(%rip), %ymm4 /* LCPI0_3+0(%rip) */ - 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x000031e1 vpxor %xmm9, %xmm9, %xmm9 - 0x45, 0x31, 0xe4, //0x000031e6 xorl %r12d, %r12d - 0x45, 0x31, 0xc9, //0x000031e9 xorl %r9d, %r9d - 0x31, 0xd2, //0x000031ec xorl %edx, %edx - 0x49, 0x83, 0xfe, 0x40, //0x000031ee cmpq $64, %r14 - 0x0f, 0x8c, 0x44, 0x01, 0x00, 0x00, //0x000031f2 jl LBB0_616 - //0x000031f8 LBB0_610 - 0xc4, 0xc1, 0x7e, 0x6f, 0x3a, //0x000031f8 vmovdqu (%r10), %ymm7 - 0xc4, 0xc1, 0x7e, 0x6f, 0x72, 0x20, //0x000031fd vmovdqu $32(%r10), %ymm6 - 0xc5, 0x45, 0x74, 0xc0, //0x00003203 vpcmpeqb %ymm0, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00003207 vpmovmskb %ymm8, %esi - 0xc5, 0x4d, 0x74, 0xc0, //0x0000320c vpcmpeqb %ymm0, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00003210 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00003215 shlq $32, %rcx - 0x48, 0x09, 0xce, //0x00003219 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x0000321c movq %rsi, %rcx - 0x4d, 0x89, 0xe8, //0x0000321f movq %r13, %r8 - 0x4c, 0x09, 0xe1, //0x00003222 orq %r12, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00003225 jne LBB0_612 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000322b movq $-1, %rsi - 0x45, 0x31, 0xe4, //0x00003232 xorl %r12d, %r12d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00003235 jmp LBB0_613 - //0x0000323a LBB0_612 - 0x4c, 0x89, 0xe1, //0x0000323a movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x0000323d notq %rcx - 0x48, 0x21, 0xf1, //0x00003240 andq %rsi, %rcx - 0x4c, 0x8d, 0x2c, 0x09, //0x00003243 leaq (%rcx,%rcx), %r13 - 0x4d, 0x09, 0xe5, //0x00003247 orq %r12, %r13 - 0x4c, 0x89, 0xeb, //0x0000324a movq %r13, %rbx - 0x48, 0xf7, 0xd3, //0x0000324d notq %rbx - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003250 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x0000325a andq %rdi, %rsi - 0x48, 0x21, 0xde, //0x0000325d andq %rbx, %rsi - 0x45, 0x31, 0xe4, //0x00003260 xorl %r12d, %r12d - 0x48, 0x01, 0xce, //0x00003263 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc4, //0x00003266 setb %r12b - 0x48, 0x01, 0xf6, //0x0000326a addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000326d movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00003277 xorq %rcx, %rsi - 0x4c, 0x21, 0xee, //0x0000327a andq %r13, %rsi - 0x48, 0xf7, 0xd6, //0x0000327d notq %rsi - //0x00003280 LBB0_613 - 0xc5, 0x4d, 0x74, 0xc1, //0x00003280 vpcmpeqb %ymm1, %ymm6, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00003284 vpmovmskb %ymm8, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00003289 shlq $32, %rcx - 0xc5, 0x45, 0x74, 0xc1, //0x0000328d vpcmpeqb %ymm1, %ymm7, %ymm8 - 0xc4, 0xc1, 0x7d, 0xd7, 0xf8, //0x00003291 vpmovmskb %ymm8, %edi - 0x48, 0x09, 0xcf, //0x00003296 orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x00003299 andq %rsi, %rdi - 0xc4, 0xe1, 0xf9, 0x6e, 0xef, //0x0000329c vmovq %rdi, %xmm5 - 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x000032a1 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 - 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x000032a7 vmovq %xmm5, %r13 - 0x4d, 0x31, 0xdd, //0x000032ac xorq %r11, %r13 - 0xc5, 0xc5, 0x74, 0xeb, //0x000032af vpcmpeqb %ymm3, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xfd, //0x000032b3 vpmovmskb %ymm5, %edi - 0xc5, 0xcd, 0x74, 0xeb, //0x000032b7 vpcmpeqb %ymm3, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xcd, //0x000032bb vpmovmskb %ymm5, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x000032bf shlq $32, %rcx - 0x48, 0x09, 0xcf, //0x000032c3 orq %rcx, %rdi - 0x4c, 0x89, 0xe9, //0x000032c6 movq %r13, %rcx - 0x48, 0xf7, 0xd1, //0x000032c9 notq %rcx - 0x48, 0x21, 0xcf, //0x000032cc andq %rcx, %rdi - 0xc5, 0xc5, 0x74, 0xec, //0x000032cf vpcmpeqb %ymm4, %ymm7, %ymm5 - 0xc5, 0xfd, 0xd7, 0xdd, //0x000032d3 vpmovmskb %ymm5, %ebx - 0xc5, 0xcd, 0x74, 0xec, //0x000032d7 vpcmpeqb %ymm4, %ymm6, %ymm5 - 0xc5, 0xfd, 0xd7, 0xf5, //0x000032db vpmovmskb %ymm5, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x000032df shlq $32, %rsi - 0x48, 0x09, 0xf3, //0x000032e3 orq %rsi, %rbx - 0x48, 0x21, 0xcb, //0x000032e6 andq %rcx, %rbx - 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x000032e9 je LBB0_608 - 0x90, //0x000032ef .p2align 4, 0x90 - //0x000032f0 LBB0_614 - 0x48, 0x8d, 0x4b, 0xff, //0x000032f0 leaq $-1(%rbx), %rcx - 0x48, 0x89, 0xce, //0x000032f4 movq %rcx, %rsi - 0x48, 0x21, 0xfe, //0x000032f7 andq %rdi, %rsi - 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000032fa popcntq %rsi, %rsi - 0x4c, 0x01, 0xce, //0x000032ff addq %r9, %rsi - 0x48, 0x39, 0xd6, //0x00003302 cmpq %rdx, %rsi - 0x0f, 0x86, 0x50, 0x01, 0x00, 0x00, //0x00003305 jbe LBB0_631 - 0x48, 0x83, 0xc2, 0x01, //0x0000330b addq $1, %rdx - 0x48, 0x21, 0xcb, //0x0000330f andq %rcx, %rbx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00003312 jne LBB0_614 - //0x00003318 LBB0_608 - 0x49, 0xc1, 0xfd, 0x3f, //0x00003318 sarq $63, %r13 - 0xf3, 0x48, 0x0f, 0xb8, 0xcf, //0x0000331c popcntq %rdi, %rcx - 0x49, 0x01, 0xc9, //0x00003321 addq %rcx, %r9 - 0x49, 0x83, 0xc2, 0x40, //0x00003324 addq $64, %r10 - 0x49, 0x83, 0xc6, 0xc0, //0x00003328 addq $-64, %r14 - 0x4d, 0x89, 0xeb, //0x0000332c movq %r13, %r11 - 0x4d, 0x89, 0xc5, //0x0000332f movq %r8, %r13 - 0x49, 0x83, 0xfe, 0x40, //0x00003332 cmpq $64, %r14 - 0x0f, 0x8d, 0xbc, 0xfe, 0xff, 0xff, //0x00003336 jge LBB0_610 - //0x0000333c LBB0_616 - 0x4d, 0x85, 0xf6, //0x0000333c testq %r14, %r14 - 0x0f, 0x8e, 0xcc, 0x03, 0x00, 0x00, //0x0000333f jle LBB0_672 - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x00003345 vmovdqu %ymm9, $96(%rsp) - 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x0000334b vmovdqu %ymm9, $64(%rsp) - 0x44, 0x89, 0xd1, //0x00003351 movl %r10d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00003354 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x0000335a cmpl $4033, %ecx - 0x0f, 0x82, 0x92, 0xfe, 0xff, 0xff, //0x00003360 jb LBB0_610 - 0x49, 0x83, 0xfe, 0x20, //0x00003366 cmpq $32, %r14 - 0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x0000336a jb LBB0_620 - 0xc4, 0xc1, 0x7e, 0x6f, 0x2a, //0x00003370 vmovdqu (%r10), %ymm5 - 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x00003375 vmovdqu %ymm5, $64(%rsp) - 0x49, 0x83, 0xc2, 0x20, //0x0000337b addq $32, %r10 - 0x49, 0x8d, 0x7e, 0xe0, //0x0000337f leaq $-32(%r14), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00003383 leaq $96(%rsp), %rsi - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00003388 jmp LBB0_621 - //0x0000338d LBB0_620 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x0000338d leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xf7, //0x00003392 movq %r14, %rdi - //0x00003395 LBB0_621 - 0x48, 0x83, 0xff, 0x10, //0x00003395 cmpq $16, %rdi - 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x00003399 jb LBB0_622 - 0xc4, 0xc1, 0x7a, 0x6f, 0x2a, //0x0000339f vmovdqu (%r10), %xmm5 - 0xc5, 0xfa, 0x7f, 0x2e, //0x000033a4 vmovdqu %xmm5, (%rsi) - 0x49, 0x83, 0xc2, 0x10, //0x000033a8 addq $16, %r10 - 0x48, 0x83, 0xc6, 0x10, //0x000033ac addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x000033b0 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x000033b4 cmpq $8, %rdi - 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x000033b8 jae LBB0_627 - //0x000033be LBB0_623 - 0x48, 0x83, 0xff, 0x04, //0x000033be cmpq $4, %rdi - 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x000033c2 jl LBB0_624 - //0x000033c8 LBB0_628 - 0x41, 0x8b, 0x0a, //0x000033c8 movl (%r10), %ecx - 0x89, 0x0e, //0x000033cb movl %ecx, (%rsi) - 0x49, 0x83, 0xc2, 0x04, //0x000033cd addq $4, %r10 - 0x48, 0x83, 0xc6, 0x04, //0x000033d1 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x000033d5 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x000033d9 cmpq $2, %rdi - 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000033dd jae LBB0_629 - //0x000033e3 LBB0_625 - 0x4c, 0x89, 0xd3, //0x000033e3 movq %r10, %rbx - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x000033e6 leaq $64(%rsp), %r10 - 0x48, 0x85, 0xff, //0x000033eb testq %rdi, %rdi - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000033ee jne LBB0_630 - 0xe9, 0xff, 0xfd, 0xff, 0xff, //0x000033f4 jmp LBB0_610 - //0x000033f9 LBB0_622 - 0x48, 0x83, 0xff, 0x08, //0x000033f9 cmpq $8, %rdi - 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x000033fd jb LBB0_623 - //0x00003403 LBB0_627 - 0x49, 0x8b, 0x0a, //0x00003403 movq (%r10), %rcx - 0x48, 0x89, 0x0e, //0x00003406 movq %rcx, (%rsi) - 0x49, 0x83, 0xc2, 0x08, //0x00003409 addq $8, %r10 - 0x48, 0x83, 0xc6, 0x08, //0x0000340d addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00003411 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00003415 cmpq $4, %rdi - 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00003419 jge LBB0_628 - //0x0000341f LBB0_624 - 0x48, 0x83, 0xff, 0x02, //0x0000341f cmpq $2, %rdi - 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00003423 jb LBB0_625 - //0x00003429 LBB0_629 - 0x41, 0x0f, 0xb7, 0x0a, //0x00003429 movzwl (%r10), %ecx - 0x66, 0x89, 0x0e, //0x0000342d movw %cx, (%rsi) - 0x49, 0x83, 0xc2, 0x02, //0x00003430 addq $2, %r10 - 0x48, 0x83, 0xc6, 0x02, //0x00003434 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00003438 addq $-2, %rdi - 0x4c, 0x89, 0xd3, //0x0000343c movq %r10, %rbx - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x0000343f leaq $64(%rsp), %r10 - 0x48, 0x85, 0xff, //0x00003444 testq %rdi, %rdi - 0x0f, 0x84, 0xab, 0xfd, 0xff, 0xff, //0x00003447 je LBB0_610 - //0x0000344d LBB0_630 - 0x8a, 0x0b, //0x0000344d movb (%rbx), %cl - 0x88, 0x0e, //0x0000344f movb %cl, (%rsi) - 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x00003451 leaq $64(%rsp), %r10 - 0xe9, 0x9d, 0xfd, 0xff, 0xff, //0x00003456 jmp LBB0_610 - //0x0000345b LBB0_631 - 0x49, 0x8b, 0x48, 0x08, //0x0000345b movq $8(%r8), %rcx - 0x48, 0x0f, 0xbc, 0xd3, //0x0000345f bsfq %rbx, %rdx - 0x4c, 0x29, 0xf2, //0x00003463 subq %r14, %rdx - 0x48, 0x01, 0xd1, //0x00003466 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x00003469 addq $1, %rcx - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000346d movq $8(%rsp), %r11 - 0x49, 0x89, 0x0b, //0x00003472 movq %rcx, (%r11) - 0x49, 0x8b, 0x50, 0x08, //0x00003475 movq $8(%r8), %rdx - 0x48, 0x39, 0xd1, //0x00003479 cmpq %rdx, %rcx - 0x48, 0x0f, 0x47, 0xca, //0x0000347c cmovaq %rdx, %rcx - 0x49, 0x89, 0x0b, //0x00003480 movq %rcx, (%r11) - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003483 movq $-1, %rcx - 0x48, 0x0f, 0x47, 0xc1, //0x0000348a cmovaq %rcx, %rax - 0x49, 0x89, 0xc7, //0x0000348e movq %rax, %r15 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003491 jmp LBB0_638 - //0x00003496 LBB0_632 - 0x41, 0x0f, 0xbc, 0xcb, //0x00003496 bsfl %r11d, %ecx - 0x48, 0x01, 0xc1, //0x0000349a addq %rax, %rcx - 0x4c, 0x01, 0xf1, //0x0000349d addq %r14, %rcx - 0x48, 0x83, 0xc1, 0x02, //0x000034a0 addq $2, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x000034a4 movq %rcx, (%r13) - 0x49, 0x89, 0xc7, //0x000034a8 movq %rax, %r15 - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x000034ab jmp LBB0_638 - //0x000034b0 LBB0_633 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000034b0 movq $-1, %rcx - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000034b7 jmp LBB0_636 - //0x000034bc LBB0_635 - 0x4c, 0x89, 0xc1, //0x000034bc movq %r8, %rcx - //0x000034bf LBB0_636 - 0x48, 0x8b, 0x54, 0x24, 0x08, //0x000034bf movq $8(%rsp), %rdx - 0x48, 0x8b, 0x02, //0x000034c4 movq (%rdx), %rax - 0x48, 0x29, 0xc8, //0x000034c7 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x000034ca addq $-2, %rax - 0x48, 0x89, 0x02, //0x000034ce movq %rax, (%rdx) - //0x000034d1 LBB0_637 - 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x000034d1 movq $-2, %r15 - //0x000034d8 LBB0_638 - 0x4c, 0x89, 0xf8, //0x000034d8 movq %r15, %rax - 0x48, 0x8d, 0x65, 0xd8, //0x000034db leaq $-40(%rbp), %rsp - 0x5b, //0x000034df popq %rbx - 0x41, 0x5c, //0x000034e0 popq %r12 - 0x41, 0x5d, //0x000034e2 popq %r13 - 0x41, 0x5e, //0x000034e4 popq %r14 - 0x41, 0x5f, //0x000034e6 popq %r15 - 0x5d, //0x000034e8 popq %rbp - 0xc5, 0xf8, 0x77, //0x000034e9 vzeroupper - 0xc3, //0x000034ec retq - //0x000034ed LBB0_639 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000034ed movq $-2, %rcx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x000034f4 movl $2, %edi - 0x48, 0x01, 0xfa, //0x000034f9 addq %rdi, %rdx - 0x49, 0x01, 0xce, //0x000034fc addq %rcx, %r14 - 0x0f, 0x8e, 0xd3, 0xff, 0xff, 0xff, //0x000034ff jle LBB0_638 - //0x00003505 LBB0_640 - 0x0f, 0xb6, 0x0a, //0x00003505 movzbl (%rdx), %ecx - 0x80, 0xf9, 0x5c, //0x00003508 cmpb $92, %cl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x0000350b je LBB0_639 - 0x80, 0xf9, 0x22, //0x00003511 cmpb $34, %cl - 0x0f, 0x84, 0x96, 0x01, 0x00, 0x00, //0x00003514 je LBB0_665 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000351a movq $-1, %rcx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003521 movl $1, %edi - 0x48, 0x01, 0xfa, //0x00003526 addq %rdi, %rdx - 0x49, 0x01, 0xce, //0x00003529 addq %rcx, %r14 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x0000352c jg LBB0_640 - 0xe9, 0xa1, 0xff, 0xff, 0xff, //0x00003532 jmp LBB0_638 - //0x00003537 LBB0_643 - 0x48, 0x8b, 0x14, 0x24, //0x00003537 movq (%rsp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x0000353b cmpq $-1, %rdx - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000353f jne LBB0_646 - 0x48, 0x0f, 0xbc, 0xd6, //0x00003545 bsfq %rsi, %rdx - //0x00003549 LBB0_645 - 0x4c, 0x01, 0xfa, //0x00003549 addq %r15, %rdx - //0x0000354c LBB0_646 - 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x0000354c movq $-2, %r15 - 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00003553 movq $8(%rsp), %r11 - 0x49, 0x89, 0x13, //0x00003558 movq %rdx, (%r11) - 0xe9, 0x78, 0xff, 0xff, 0xff, //0x0000355b jmp LBB0_638 - //0x00003560 LBB0_647 - 0x66, 0x0f, 0xbc, 0xc9, //0x00003560 bsfw %cx, %cx - 0x0f, 0xb7, 0xc9, //0x00003564 movzwl %cx, %ecx - 0x48, 0x29, 0xf9, //0x00003567 subq %rdi, %rcx - 0xe9, 0xe3, 0xd0, 0xff, 0xff, //0x0000356a jmp LBB0_52 - //0x0000356f LBB0_649 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000356f movq $-1, %rcx - 0xe9, 0x02, 0x01, 0x00, 0x00, //0x00003576 jmp LBB0_662 - //0x0000357b LBB0_651 - 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x0000357b movq $-2, %r15 - 0x80, 0xfa, 0x61, //0x00003582 cmpb $97, %dl - 0x0f, 0x85, 0x4d, 0xff, 0xff, 0xff, //0x00003585 jne LBB0_638 - 0x48, 0x8d, 0x41, 0x01, //0x0000358b leaq $1(%rcx), %rax - 0x49, 0x89, 0x03, //0x0000358f movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x01, 0x6c, //0x00003592 cmpb $108, $1(%r8,%rcx) - 0x0f, 0x85, 0x3a, 0xff, 0xff, 0xff, //0x00003598 jne LBB0_638 - 0x48, 0x8d, 0x41, 0x02, //0x0000359e leaq $2(%rcx), %rax - 0x49, 0x89, 0x03, //0x000035a2 movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x02, 0x73, //0x000035a5 cmpb $115, $2(%r8,%rcx) - 0x0f, 0x85, 0x27, 0xff, 0xff, 0xff, //0x000035ab jne LBB0_638 - 0x48, 0x8d, 0x41, 0x03, //0x000035b1 leaq $3(%rcx), %rax - 0x49, 0x89, 0x03, //0x000035b5 movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x03, 0x65, //0x000035b8 cmpb $101, $3(%r8,%rcx) - 0x0f, 0x85, 0x14, 0xff, 0xff, 0xff, //0x000035be jne LBB0_638 - 0x48, 0x83, 0xc1, 0x04, //0x000035c4 addq $4, %rcx - 0x49, 0x89, 0x0b, //0x000035c8 movq %rcx, (%r11) - 0xe9, 0x08, 0xff, 0xff, 0xff, //0x000035cb jmp LBB0_638 - //0x000035d0 LBB0_293 - 0x4d, 0x89, 0x3b, //0x000035d0 movq %r15, (%r11) - 0x43, 0x80, 0x3c, 0x38, 0x6e, //0x000035d3 cmpb $110, (%r8,%r15) - 0x0f, 0x85, 0xf3, 0xfe, 0xff, 0xff, //0x000035d8 jne LBB0_637 - 0x49, 0x89, 0x0b, //0x000035de movq %rcx, (%r11) - 0x41, 0x80, 0x3c, 0x08, 0x75, //0x000035e1 cmpb $117, (%r8,%rcx) - 0x0f, 0x85, 0xe5, 0xfe, 0xff, 0xff, //0x000035e6 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x000035ec leaq $1(%rcx), %rax - 0x49, 0x89, 0x03, //0x000035f0 movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x01, 0x6c, //0x000035f3 cmpb $108, $1(%r8,%rcx) - 0x0f, 0x85, 0xd2, 0xfe, 0xff, 0xff, //0x000035f9 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x000035ff leaq $2(%rcx), %rax - 0x49, 0x89, 0x03, //0x00003603 movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x02, 0x6c, //0x00003606 cmpb $108, $2(%r8,%rcx) - 0x0f, 0x85, 0xbf, 0xfe, 0xff, 0xff, //0x0000360c jne LBB0_637 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003612 jmp LBB0_660 - //0x00003617 LBB0_656 - 0x4d, 0x89, 0x3b, //0x00003617 movq %r15, (%r11) - 0x43, 0x80, 0x3c, 0x38, 0x74, //0x0000361a cmpb $116, (%r8,%r15) - 0x0f, 0x85, 0xac, 0xfe, 0xff, 0xff, //0x0000361f jne LBB0_637 - 0x49, 0x89, 0x0b, //0x00003625 movq %rcx, (%r11) - 0x41, 0x80, 0x3c, 0x08, 0x72, //0x00003628 cmpb $114, (%r8,%rcx) - 0x0f, 0x85, 0x9e, 0xfe, 0xff, 0xff, //0x0000362d jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003633 leaq $1(%rcx), %rax - 0x49, 0x89, 0x03, //0x00003637 movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x01, 0x75, //0x0000363a cmpb $117, $1(%r8,%rcx) - 0x0f, 0x85, 0x8b, 0xfe, 0xff, 0xff, //0x00003640 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003646 leaq $2(%rcx), %rax - 0x49, 0x89, 0x03, //0x0000364a movq %rax, (%r11) - 0x41, 0x80, 0x7c, 0x08, 0x02, 0x65, //0x0000364d cmpb $101, $2(%r8,%rcx) - 0x0f, 0x85, 0x78, 0xfe, 0xff, 0xff, //0x00003653 jne LBB0_637 - //0x00003659 LBB0_660 - 0x48, 0x83, 0xc1, 0x03, //0x00003659 addq $3, %rcx - 0x49, 0x89, 0x0b, //0x0000365d movq %rcx, (%r11) - 0xe9, 0x6c, 0xfe, 0xff, 0xff, //0x00003660 jmp LBB0_637 - //0x00003665 LBB0_290 - 0x48, 0x83, 0xc1, 0xff, //0x00003665 addq $-1, %rcx - 0x49, 0x89, 0xcf, //0x00003669 movq %rcx, %r15 - 0xe9, 0x67, 0xfe, 0xff, 0xff, //0x0000366c jmp LBB0_638 - //0x00003671 LBB0_426 - 0x49, 0x83, 0xc7, 0xff, //0x00003671 addq $-1, %r15 - 0xe9, 0x5e, 0xfe, 0xff, 0xff, //0x00003675 jmp LBB0_638 - //0x0000367a LBB0_661 - 0x4c, 0x89, 0xe1, //0x0000367a movq %r12, %rcx - //0x0000367d LBB0_662 - 0x48, 0xf7, 0xd1, //0x0000367d notq %rcx - 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00003680 movq $8(%rsp), %rax - 0x48, 0x01, 0x08, //0x00003685 addq %rcx, (%rax) - 0xe9, 0x44, 0xfe, 0xff, 0xff, //0x00003688 jmp LBB0_637 - //0x0000368d LBB0_663 - 0x4c, 0x29, 0xd0, //0x0000368d subq %r10, %rax - 0x48, 0x01, 0xf0, //0x00003690 addq %rsi, %rax - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00003693 movq $-1, %r15 - 0x48, 0x39, 0xd0, //0x0000369a cmpq %rdx, %rax - 0x0f, 0x82, 0x5b, 0xce, 0xff, 0xff, //0x0000369d jb LBB0_33 - 0xe9, 0x30, 0xfe, 0xff, 0xff, //0x000036a3 jmp LBB0_638 - //0x000036a8 LBB0_670 - 0x4d, 0x89, 0xc4, //0x000036a8 movq %r8, %r12 - 0xe9, 0x12, 0xf7, 0xff, 0xff, //0x000036ab jmp LBB0_381 - //0x000036b0 LBB0_665 - 0x4c, 0x29, 0xd2, //0x000036b0 subq %r10, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x000036b3 addq $1, %rdx - 0x49, 0x89, 0x55, 0x00, //0x000036b7 movq %rdx, (%r13) - 0x49, 0x89, 0xc7, //0x000036bb movq %rax, %r15 - 0xe9, 0x15, 0xfe, 0xff, 0xff, //0x000036be jmp LBB0_638 - //0x000036c3 LBB0_217 - 0x4c, 0x01, 0xfa, //0x000036c3 addq %r15, %rdx - 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x000036c6 movq $-2, %r15 - 0x49, 0x89, 0x13, //0x000036cd movq %rdx, (%r11) - 0xe9, 0x03, 0xfe, 0xff, 0xff, //0x000036d0 jmp LBB0_638 - //0x000036d5 LBB0_666 - 0x4c, 0x01, 0xd0, //0x000036d5 addq %r10, %rax - 0x48, 0x85, 0xff, //0x000036d8 testq %rdi, %rdi - 0x0f, 0x85, 0xa7, 0xcd, 0xff, 0xff, //0x000036db jne LBB0_25 - 0xe9, 0xd9, 0xcd, 0xff, 0xff, //0x000036e1 jmp LBB0_30 - //0x000036e6 LBB0_667 - 0x4c, 0x01, 0xd2, //0x000036e6 addq %r10, %rdx - 0x48, 0x83, 0xfe, 0x10, //0x000036e9 cmpq $16, %rsi - 0x0f, 0x83, 0xbf, 0xce, 0xff, 0xff, //0x000036ed jae LBB0_40 - 0xe9, 0x0e, 0xcf, 0xff, 0xff, //0x000036f3 jmp LBB0_43 - //0x000036f8 LBB0_668 - 0x4c, 0x29, 0xd2, //0x000036f8 subq %r10, %rdx - 0x48, 0x01, 0xfa, //0x000036fb addq %rdi, %rdx - //0x000036fe LBB0_669 - 0x49, 0x89, 0x13, //0x000036fe movq %rdx, (%r11) - 0x49, 0x89, 0xc7, //0x00003701 movq %rax, %r15 - 0xe9, 0xcf, 0xfd, 0xff, 0xff, //0x00003704 jmp LBB0_638 - //0x00003709 LBB0_671 - 0x4c, 0x01, 0xd2, //0x00003709 addq %r10, %rdx - 0xe9, 0xba, 0xf7, 0xff, 0xff, //0x0000370c jmp LBB0_580 - //0x00003711 LBB0_672 - 0x49, 0x8b, 0x45, 0x08, //0x00003711 movq $8(%r13), %rax - 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00003715 movq $8(%rsp), %rcx - 0x48, 0x89, 0x01, //0x0000371a movq %rax, (%rcx) - 0xe9, 0xb6, 0xfd, 0xff, 0xff, //0x0000371d jmp LBB0_638 - //0x00003722 LBB0_673 - 0x89, 0xf9, //0x00003722 movl %edi, %ecx - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00003724 subq $16(%rsp), %r15 - 0x49, 0x01, 0xcf, //0x00003729 addq %rcx, %r15 - 0x4c, 0x89, 0xfa, //0x0000372c movq %r15, %rdx - 0xe9, 0x18, 0xfe, 0xff, 0xff, //0x0000372f jmp LBB0_646 - //0x00003734 LBB0_678 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00003734 subq $16(%rsp), %r15 - 0x89, 0xfa, //0x00003739 movl %edi, %edx - 0xe9, 0x09, 0xfe, 0xff, 0xff, //0x0000373b jmp LBB0_645 - //0x00003740 LBB0_674 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00003740 subq $16(%rsp), %r15 - 0x4c, 0x89, 0xfa, //0x00003745 movq %r15, %rdx - 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x00003748 movq $-2, %r15 - 0x49, 0x89, 0x13, //0x0000374f movq %rdx, (%r11) - 0xe9, 0x81, 0xfd, 0xff, 0xff, //0x00003752 jmp LBB0_638 - //0x00003757 LBB0_677 - 0x89, 0xf8, //0x00003757 movl %edi, %eax - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00003759 subq $16(%rsp), %r15 - 0x49, 0x01, 0xc7, //0x0000375e addq %rax, %r15 - 0x4c, 0x89, 0xfa, //0x00003761 movq %r15, %rdx - 0xe9, 0xe3, 0xfd, 0xff, 0xff, //0x00003764 jmp LBB0_646 - //0x00003769 LBB0_675 - 0x49, 0x8d, 0x48, 0xff, //0x00003769 leaq $-1(%r8), %rcx - 0x4c, 0x39, 0xf1, //0x0000376d cmpq %r14, %rcx - 0x0f, 0x84, 0x62, 0xfd, 0xff, 0xff, //0x00003770 je LBB0_638 - 0x4b, 0x8d, 0x14, 0x0e, //0x00003776 leaq (%r14,%r9), %rdx - 0x48, 0x83, 0xc2, 0x02, //0x0000377a addq $2, %rdx - 0x4d, 0x29, 0xf0, //0x0000377e subq %r14, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00003781 addq $-2, %r8 - 0x4d, 0x89, 0xc6, //0x00003785 movq %r8, %r14 - 0xe9, 0x3e, 0xf7, 0xff, 0xff, //0x00003788 jmp LBB0_580 - //0x0000378d LBB0_679 - 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000378d subq $16(%rsp), %r15 - 0x4c, 0x89, 0xfa, //0x00003792 movq %r15, %rdx - 0xe9, 0xb2, 0xfd, 0xff, 0xff, //0x00003795 jmp LBB0_646 - 0x90, 0x90, //0x0000379a .p2align 2, 0x90 - // // .set L0_0_set_638, LBB0_638-LJTI0_0 - // // .set L0_0_set_569, LBB0_569-LJTI0_0 - // // .set L0_0_set_570, LBB0_570-LJTI0_0 + 0x48, 0x01, 0xc2, //0x0000059c addq %rax, %rdx + 0x48, 0x83, 0xc2, 0x01, //0x0000059f addq $1, %rdx + 0x48, 0x01, 0xfe, //0x000005a3 addq %rdi, %rsi + 0x48, 0x83, 0xfe, 0x10, //0x000005a6 cmpq $16, %rsi + 0x0f, 0x82, 0x54, 0x00, 0x00, 0x00, //0x000005aa jb LBB0_44 + //0x000005b0 LBB0_40 + 0x48, 0x8d, 0x7a, 0xff, //0x000005b0 leaq $-1(%rdx), %rdi + 0x31, 0xdb, //0x000005b4 xorl %ebx, %ebx + 0xc5, 0xfa, 0x6f, 0x05, 0x42, 0xfc, 0xff, 0xff, //0x000005b6 vmovdqu $-958(%rip), %xmm0 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x0d, 0x4a, 0xfc, 0xff, 0xff, //0x000005be vmovdqu $-950(%rip), %xmm1 /* LCPI0_5+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x52, 0xfc, 0xff, 0xff, //0x000005c6 vmovdqu $-942(%rip), %xmm2 /* LCPI0_6+0(%rip) */ + //0x000005ce LBB0_41 + 0xc5, 0xfa, 0x6f, 0x1c, 0x1a, //0x000005ce vmovdqu (%rdx,%rbx), %xmm3 + 0xc5, 0xe1, 0x74, 0xe0, //0x000005d3 vpcmpeqb %xmm0, %xmm3, %xmm4 + 0xc5, 0xe1, 0xdb, 0xd9, //0x000005d7 vpand %xmm1, %xmm3, %xmm3 + 0xc5, 0xe1, 0x74, 0xda, //0x000005db vpcmpeqb %xmm2, %xmm3, %xmm3 + 0xc5, 0xe1, 0xeb, 0xdc, //0x000005df vpor %xmm4, %xmm3, %xmm3 + 0xc5, 0xf9, 0xd7, 0xcb, //0x000005e3 vpmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x000005e7 testl %ecx, %ecx + 0x0f, 0x85, 0xd1, 0x2f, 0x00, 0x00, //0x000005e9 jne LBB0_655 + 0x48, 0x83, 0xc6, 0xf0, //0x000005ef addq $-16, %rsi + 0x48, 0x83, 0xc3, 0x10, //0x000005f3 addq $16, %rbx + 0x48, 0x83, 0xfe, 0x0f, //0x000005f7 cmpq $15, %rsi + 0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x000005fb ja LBB0_41 + 0x48, 0x01, 0xda, //0x00000601 addq %rbx, %rdx + //0x00000604 LBB0_44 + 0x48, 0x85, 0xf6, //0x00000604 testq %rsi, %rsi + 0x0f, 0x84, 0x48, 0x00, 0x00, 0x00, //0x00000607 je LBB0_52 + 0x48, 0x8d, 0x3c, 0x32, //0x0000060d leaq (%rdx,%rsi), %rdi + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000611 movabsq $17596481021440, %rbx + //0x0000061b LBB0_46 + 0x0f, 0xb6, 0x0a, //0x0000061b movzbl (%rdx), %ecx + 0x48, 0x83, 0xf9, 0x2c, //0x0000061e cmpq $44, %rcx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000622 ja LBB0_48 + 0x48, 0x0f, 0xa3, 0xcb, //0x00000628 btq %rcx, %rbx + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x0000062c jb LBB0_52 + //0x00000632 LBB0_48 + 0x80, 0xf9, 0x5d, //0x00000632 cmpb $93, %cl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000635 je LBB0_52 + 0x80, 0xf9, 0x7d, //0x0000063b cmpb $125, %cl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x0000063e je LBB0_52 + 0x48, 0x83, 0xc2, 0x01, //0x00000644 addq $1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00000648 addq $-1, %rsi + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x0000064c jne LBB0_46 + 0x48, 0x89, 0xfa, //0x00000652 movq %rdi, %rdx + //0x00000655 LBB0_52 + 0x4c, 0x29, 0xd2, //0x00000655 subq %r10, %rdx + 0x49, 0x89, 0x13, //0x00000658 movq %rdx, (%r11) + 0x49, 0x89, 0xc7, //0x0000065b movq %rax, %r15 + 0xe9, 0xd5, 0x2e, 0x00, 0x00, //0x0000065e jmp LBB0_646 + //0x00000663 LBB0_53 + 0x0f, 0xbc, 0xd9, //0x00000663 bsfl %ecx, %ebx + 0x48, 0x01, 0xc3, //0x00000666 addq %rax, %rbx + 0x48, 0x89, 0xd9, //0x00000669 movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x0000066c subq %rdi, %rcx + 0x48, 0x8d, 0x71, 0x01, //0x0000066f leaq $1(%rcx), %rsi + 0x49, 0x89, 0x33, //0x00000673 movq %rsi, (%r11) + 0x48, 0x85, 0xf6, //0x00000676 testq %rsi, %rsi + 0x0f, 0x8e, 0x41, 0x00, 0x00, 0x00, //0x00000679 jle LBB0_58 + 0x48, 0x8d, 0x71, 0x02, //0x0000067f leaq $2(%rcx), %rsi + 0x48, 0x01, 0xda, //0x00000683 addq %rbx, %rdx + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000686 movabsq $4294977024, %rdi + //0x00000690 .p2align 4, 0x90 + //0x00000690 LBB0_55 + 0x0f, 0xb6, 0x1a, //0x00000690 movzbl (%rdx), %ebx + 0x48, 0x83, 0xfb, 0x20, //0x00000693 cmpq $32, %rbx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000697 ja LBB0_58 + 0x48, 0x0f, 0xa3, 0xdf, //0x0000069d btq %rbx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x000006a1 jae LBB0_58 + 0x49, 0x89, 0x0b, //0x000006a7 movq %rcx, (%r11) + 0x48, 0x83, 0xc6, 0xff, //0x000006aa addq $-1, %rsi + 0x48, 0x83, 0xc1, 0xff, //0x000006ae addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x000006b2 addq $-1, %rdx + 0x48, 0x83, 0xfe, 0x01, //0x000006b6 cmpq $1, %rsi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000006ba jg LBB0_55 + //0x000006c0 LBB0_58 + 0x49, 0x89, 0xc7, //0x000006c0 movq %rax, %r15 + 0xe9, 0x70, 0x2e, 0x00, 0x00, //0x000006c3 jmp LBB0_646 + //0x000006c8 LBB0_642 + 0x49, 0xf7, 0xd8, //0x000006c8 negq %r8 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000006cb movq $8(%rsp), %r11 + 0xc5, 0xfe, 0x6f, 0x2d, 0x28, 0xf9, 0xff, 0xff, //0x000006d0 vmovdqu $-1752(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xa0, 0xf9, 0xff, 0xff, //0x000006d8 vmovdqu $-1632(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xb8, 0xf9, 0xff, 0xff, //0x000006e0 vmovdqu $-1608(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x30, 0xfa, 0xff, 0xff, //0x000006e8 vmovdqu $-1488(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000006f0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x43, 0xfa, 0xff, 0xff, //0x000006f5 vmovdqu $-1469(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x5b, 0xfa, 0xff, 0xff, //0x000006fd vmovdqu $-1445(%rip), %ymm11 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x73, 0xfa, 0xff, 0xff, //0x00000705 vmovdqu $-1421(%rip), %ymm12 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x8b, 0xfa, 0xff, 0xff, //0x0000070d vmovdqu $-1397(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x23, 0xf9, 0xff, 0xff, //0x00000715 vmovdqu $-1757(%rip), %ymm14 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x9b, 0xfa, 0xff, 0xff, //0x0000071d vmovdqu $-1381(%rip), %ymm15 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xb3, 0xfa, 0xff, 0xff, //0x00000725 vmovdqu $-1357(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x4d, 0x85, 0xc0, //0x0000072d testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000730 movq $24(%rsp), %r10 + 0x0f, 0x88, 0xe1, 0x2d, 0x00, 0x00, //0x00000735 js LBB0_643 + //0x0000073b LBB0_414 + 0x49, 0x8b, 0x0b, //0x0000073b movq (%r11), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x0000073e addq $-1, %rcx + //0x00000742 LBB0_60 + 0x4c, 0x01, 0xc1, //0x00000742 addq %r8, %rcx + 0x49, 0x89, 0x0b, //0x00000745 movq %rcx, (%r11) + 0x48, 0x83, 0x7c, 0x24, 0x28, 0x00, //0x00000748 cmpq $0, $40(%rsp) + 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x0000074e movq $56(%rsp), %r13 + 0x0f, 0x8e, 0xdf, 0x2d, 0x00, 0x00, //0x00000753 jle LBB0_646 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000759 .p2align 4, 0x90 + //0x00000760 LBB0_61 + 0x49, 0x8b, 0x11, //0x00000760 movq (%r9), %rdx + 0x4d, 0x89, 0xf7, //0x00000763 movq %r14, %r15 + 0x48, 0x85, 0xd2, //0x00000766 testq %rdx, %rdx + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00000769 jne LBB0_63 + 0xe9, 0xc4, 0x2d, 0x00, 0x00, //0x0000076f jmp LBB0_646 + //0x00000774 LBB0_59 + 0x4c, 0x89, 0xf9, //0x00000774 movq %r15, %rcx + 0xe9, 0xc6, 0xff, 0xff, 0xff, //0x00000777 jmp LBB0_60 + 0x90, 0x90, 0x90, 0x90, //0x0000077c .p2align 4, 0x90 + //0x00000780 LBB0_63 + 0x4c, 0x89, 0xf1, //0x00000780 movq %r14, %rcx + 0x4d, 0x8b, 0x45, 0x00, //0x00000783 movq (%r13), %r8 + 0x49, 0x8b, 0x7d, 0x08, //0x00000787 movq $8(%r13), %rdi + 0x49, 0x8b, 0x33, //0x0000078b movq (%r11), %rsi + 0x48, 0x39, 0xfe, //0x0000078e cmpq %rdi, %rsi + 0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000791 movq %r8, $16(%rsp) + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00000796 jae LBB0_68 + 0x41, 0x8a, 0x04, 0x30, //0x0000079c movb (%r8,%rsi), %al + 0x3c, 0x0d, //0x000007a0 cmpb $13, %al + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x000007a2 je LBB0_68 + 0x3c, 0x20, //0x000007a8 cmpb $32, %al + 0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x000007aa je LBB0_68 + 0x04, 0xf7, //0x000007b0 addb $-9, %al + 0x3c, 0x01, //0x000007b2 cmpb $1, %al + 0x0f, 0x86, 0x16, 0x00, 0x00, 0x00, //0x000007b4 jbe LBB0_68 + 0x49, 0x89, 0xf6, //0x000007ba movq %rsi, %r14 + 0xe9, 0x80, 0x01, 0x00, 0x00, //0x000007bd jmp LBB0_93 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000007c2 .p2align 4, 0x90 + //0x000007d0 LBB0_68 + 0x4c, 0x8d, 0x76, 0x01, //0x000007d0 leaq $1(%rsi), %r14 + 0x49, 0x39, 0xfe, //0x000007d4 cmpq %rdi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000007d7 jae LBB0_72 + 0x43, 0x8a, 0x14, 0x30, //0x000007dd movb (%r8,%r14), %dl + 0x80, 0xfa, 0x0d, //0x000007e1 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000007e4 je LBB0_72 + 0x80, 0xfa, 0x20, //0x000007ea cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000007ed je LBB0_72 + 0x80, 0xc2, 0xf7, //0x000007f3 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000007f6 cmpb $1, %dl + 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x000007f9 ja LBB0_93 + 0x90, //0x000007ff .p2align 4, 0x90 + //0x00000800 LBB0_72 + 0x4c, 0x8d, 0x76, 0x02, //0x00000800 leaq $2(%rsi), %r14 + 0x49, 0x39, 0xfe, //0x00000804 cmpq %rdi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000807 jae LBB0_76 + 0x43, 0x8a, 0x14, 0x30, //0x0000080d movb (%r8,%r14), %dl + 0x80, 0xfa, 0x0d, //0x00000811 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000814 je LBB0_76 + 0x80, 0xfa, 0x20, //0x0000081a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000081d je LBB0_76 + 0x80, 0xc2, 0xf7, //0x00000823 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000826 cmpb $1, %dl + 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00000829 ja LBB0_93 + 0x90, //0x0000082f .p2align 4, 0x90 + //0x00000830 LBB0_76 + 0x4c, 0x8d, 0x76, 0x03, //0x00000830 leaq $3(%rsi), %r14 + 0x49, 0x39, 0xfe, //0x00000834 cmpq %rdi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000837 jae LBB0_80 + 0x43, 0x8a, 0x14, 0x30, //0x0000083d movb (%r8,%r14), %dl + 0x80, 0xfa, 0x0d, //0x00000841 cmpb $13, %dl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000844 je LBB0_80 + 0x80, 0xfa, 0x20, //0x0000084a cmpb $32, %dl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000084d je LBB0_80 + 0x80, 0xc2, 0xf7, //0x00000853 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000856 cmpb $1, %dl + 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x00000859 ja LBB0_93 + 0x90, //0x0000085f .p2align 4, 0x90 + //0x00000860 LBB0_80 + 0x4c, 0x8d, 0x76, 0x04, //0x00000860 leaq $4(%rsi), %r14 + 0x48, 0x89, 0xfa, //0x00000864 movq %rdi, %rdx + 0x4c, 0x29, 0xf2, //0x00000867 subq %r14, %rdx + 0x0f, 0x86, 0x86, 0x25, 0x00, 0x00, //0x0000086a jbe LBB0_572 + 0x48, 0x83, 0xfa, 0x20, //0x00000870 cmpq $32, %rdx + 0x0f, 0x82, 0x58, 0x18, 0x00, 0x00, //0x00000874 jb LBB0_416 + 0x48, 0xc7, 0xc2, 0xfc, 0xff, 0xff, 0xff, //0x0000087a movq $-4, %rdx + 0x48, 0x29, 0xf2, //0x00000881 subq %rsi, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000884 .p2align 4, 0x90 + //0x00000890 LBB0_83 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x30, //0x00000890 vmovdqu (%r8,%r14), %ymm0 + 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00000896 vpshufb %ymm0, %ymm5, %ymm1 + 0xc5, 0xfd, 0x74, 0xc1, //0x0000089b vpcmpeqb %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000089f vpmovmskb %ymm0, %esi + 0x83, 0xfe, 0xff, //0x000008a3 cmpl $-1, %esi + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000008a6 jne LBB0_92 + 0x49, 0x83, 0xc6, 0x20, //0x000008ac addq $32, %r14 + 0x48, 0x8d, 0x34, 0x17, //0x000008b0 leaq (%rdi,%rdx), %rsi + 0x48, 0x83, 0xc6, 0xe0, //0x000008b4 addq $-32, %rsi + 0x48, 0x83, 0xc2, 0xe0, //0x000008b8 addq $-32, %rdx + 0x48, 0x83, 0xfe, 0x1f, //0x000008bc cmpq $31, %rsi + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x000008c0 ja LBB0_83 + 0x4d, 0x89, 0xc6, //0x000008c6 movq %r8, %r14 + 0x49, 0x29, 0xd6, //0x000008c9 subq %rdx, %r14 + 0x48, 0x01, 0xfa, //0x000008cc addq %rdi, %rdx + 0x48, 0x85, 0xd2, //0x000008cf testq %rdx, %rdx + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x000008d2 je LBB0_91 + //0x000008d8 LBB0_86 + 0x4d, 0x8d, 0x04, 0x16, //0x000008d8 leaq (%r14,%rdx), %r8 + 0x31, 0xf6, //0x000008dc xorl %esi, %esi + 0x90, 0x90, //0x000008de .p2align 4, 0x90 + //0x000008e0 LBB0_87 + 0x41, 0x0f, 0xbe, 0x1c, 0x36, //0x000008e0 movsbl (%r14,%rsi), %ebx + 0x83, 0xfb, 0x20, //0x000008e5 cmpl $32, %ebx + 0x0f, 0x87, 0x1d, 0x16, 0x00, 0x00, //0x000008e8 ja LBB0_407 + 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000008ee movabsq $4294977024, %rax + 0x48, 0x0f, 0xa3, 0xd8, //0x000008f8 btq %rbx, %rax + 0x0f, 0x83, 0x09, 0x16, 0x00, 0x00, //0x000008fc jae LBB0_407 + 0x48, 0x83, 0xc6, 0x01, //0x00000902 addq $1, %rsi + 0x48, 0x39, 0xf2, //0x00000906 cmpq %rsi, %rdx + 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000909 jne LBB0_87 + 0x4d, 0x89, 0xc6, //0x0000090f movq %r8, %r14 + 0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00000912 movq $16(%rsp), %r8 + //0x00000917 LBB0_91 + 0x4d, 0x29, 0xc6, //0x00000917 subq %r8, %r14 + 0x49, 0x39, 0xfe, //0x0000091a cmpq %rdi, %r14 + 0x0f, 0x82, 0x1f, 0x00, 0x00, 0x00, //0x0000091d jb LBB0_93 + 0xe9, 0xd1, 0x24, 0x00, 0x00, //0x00000923 jmp LBB0_573 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000928 .p2align 4, 0x90 + //0x00000930 LBB0_92 + 0xf7, 0xd6, //0x00000930 notl %esi + 0x44, 0x0f, 0xbc, 0xf6, //0x00000932 bsfl %esi, %r14d + 0x49, 0x29, 0xd6, //0x00000936 subq %rdx, %r14 + 0x49, 0x39, 0xfe, //0x00000939 cmpq %rdi, %r14 + 0x0f, 0x83, 0xb7, 0x24, 0x00, 0x00, //0x0000093c jae LBB0_573 + //0x00000942 LBB0_93 + 0x49, 0x8d, 0x56, 0x01, //0x00000942 leaq $1(%r14), %rdx + 0x49, 0x89, 0x13, //0x00000946 movq %rdx, (%r11) + 0x43, 0x0f, 0xbe, 0x3c, 0x30, //0x00000949 movsbl (%r8,%r14), %edi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000094e movq $-1, %r15 + 0x85, 0xff, //0x00000955 testl %edi, %edi + 0x0f, 0x84, 0xdb, 0x2b, 0x00, 0x00, //0x00000957 je LBB0_646 + 0x49, 0x8b, 0x31, //0x0000095d movq (%r9), %rsi + 0x48, 0x8d, 0x56, 0xff, //0x00000960 leaq $-1(%rsi), %rdx + 0x41, 0x8b, 0x1c, 0xf1, //0x00000964 movl (%r9,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x00000968 cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xf1, //0x0000096c cmovneq %rcx, %r14 + 0x83, 0xc3, 0xff, //0x00000970 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x00000973 cmpl $5, %ebx + 0x0f, 0x87, 0xeb, 0x01, 0x00, 0x00, //0x00000976 ja LBB0_125 + 0x48, 0x8d, 0x05, 0xb9, 0x30, 0x00, 0x00, //0x0000097c leaq $12473(%rip), %rax /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x98, //0x00000983 movslq (%rax,%rbx,4), %rcx + 0x48, 0x01, 0xc1, //0x00000987 addq %rax, %rcx + 0xff, 0xe1, //0x0000098a jmpq *%rcx + //0x0000098c LBB0_96 + 0x83, 0xff, 0x2c, //0x0000098c cmpl $44, %edi + 0x0f, 0x84, 0x4f, 0x06, 0x00, 0x00, //0x0000098f je LBB0_195 + 0x83, 0xff, 0x5d, //0x00000995 cmpl $93, %edi + 0x0f, 0x84, 0x32, 0x06, 0x00, 0x00, //0x00000998 je LBB0_98 + 0xe9, 0x8e, 0x2b, 0x00, 0x00, //0x0000099e jmp LBB0_645 + //0x000009a3 LBB0_99 + 0x40, 0x80, 0xff, 0x5d, //0x000009a3 cmpb $93, %dil + 0x0f, 0x84, 0x23, 0x06, 0x00, 0x00, //0x000009a7 je LBB0_98 + 0x49, 0xc7, 0x04, 0xf1, 0x01, 0x00, 0x00, 0x00, //0x000009ad movq $1, (%r9,%rsi,8) + 0x83, 0xff, 0x7b, //0x000009b5 cmpl $123, %edi + 0x0f, 0x86, 0xb5, 0x01, 0x00, 0x00, //0x000009b8 jbe LBB0_101 + 0xe9, 0x6e, 0x2b, 0x00, 0x00, //0x000009be jmp LBB0_645 + //0x000009c3 LBB0_102 + 0x40, 0x80, 0xff, 0x22, //0x000009c3 cmpb $34, %dil + 0x0f, 0x85, 0x64, 0x2b, 0x00, 0x00, //0x000009c7 jne LBB0_645 + 0x49, 0xc7, 0x04, 0xf1, 0x04, 0x00, 0x00, 0x00, //0x000009cd movq $4, (%r9,%rsi,8) + 0x4d, 0x8b, 0x03, //0x000009d5 movq (%r11), %r8 + 0x4d, 0x8b, 0x65, 0x08, //0x000009d8 movq $8(%r13), %r12 + 0x41, 0xf6, 0xc2, 0x20, //0x000009dc testb $32, %r10b + 0x0f, 0x85, 0x7f, 0x07, 0x00, 0x00, //0x000009e0 jne LBB0_204 + 0x4c, 0x89, 0xe3, //0x000009e6 movq %r12, %rbx + 0x4c, 0x29, 0xc3, //0x000009e9 subq %r8, %rbx + 0x0f, 0x84, 0x78, 0x2d, 0x00, 0x00, //0x000009ec je LBB0_680 + 0x48, 0x83, 0xfb, 0x40, //0x000009f2 cmpq $64, %rbx + 0x0f, 0x82, 0x94, 0x18, 0x00, 0x00, //0x000009f6 jb LBB0_433 + 0x4c, 0x89, 0xc6, //0x000009fc movq %r8, %rsi + 0x48, 0xf7, 0xd6, //0x000009ff notq %rsi + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000a02 movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x00000a0a movq %r8, %r15 + 0x45, 0x31, 0xd2, //0x00000a0d xorl %r10d, %r10d + //0x00000a10 .p2align 4, 0x90 + //0x00000a10 LBB0_107 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00000a10 movq $16(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00000a15 vmovdqu (%rax,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x00000a1b vmovdqu $32(%rax,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000a22 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000a26 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000a2a vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000a2e vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xc7, //0x00000a32 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00000a36 vpmovmskb %ymm0, %edx + 0xc5, 0xf5, 0x74, 0xc7, //0x00000a3a vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00000a3e vpmovmskb %ymm0, %eax + 0x48, 0xc1, 0xe1, 0x20, //0x00000a42 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000a46 orq %rcx, %rdi + 0x48, 0xc1, 0xe0, 0x20, //0x00000a49 shlq $32, %rax + 0x48, 0x09, 0xc2, //0x00000a4d orq %rax, %rdx + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000a50 jne LBB0_116 + 0x4d, 0x85, 0xd2, //0x00000a56 testq %r10, %r10 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000a59 jne LBB0_118 + 0x45, 0x31, 0xd2, //0x00000a5f xorl %r10d, %r10d + 0x48, 0x85, 0xff, //0x00000a62 testq %rdi, %rdi + 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x00000a65 jne LBB0_120 + //0x00000a6b LBB0_110 + 0x48, 0x83, 0xc3, 0xc0, //0x00000a6b addq $-64, %rbx + 0x48, 0x83, 0xc6, 0xc0, //0x00000a6f addq $-64, %rsi + 0x49, 0x83, 0xc7, 0x40, //0x00000a73 addq $64, %r15 + 0x48, 0x83, 0xfb, 0x3f, //0x00000a77 cmpq $63, %rbx + 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x00000a7b ja LBB0_107 + 0xe9, 0xab, 0x14, 0x00, 0x00, //0x00000a81 jmp LBB0_111 + //0x00000a86 LBB0_116 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000a86 movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x00000a8b movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x00000a8e movq %r11, %r13 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000a91 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00000a96 jne LBB0_119 + 0x48, 0x0f, 0xbc, 0xc2, //0x00000a9c bsfq %rdx, %rax + 0x4c, 0x01, 0xf8, //0x00000aa0 addq %r15, %rax + 0x48, 0x89, 0x04, 0x24, //0x00000aa3 movq %rax, (%rsp) + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000aa7 jmp LBB0_119 + //0x00000aac LBB0_118 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000aac movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x00000ab1 movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x00000ab4 movq %r11, %r13 + //0x00000ab7 LBB0_119 + 0x4c, 0x89, 0xd0, //0x00000ab7 movq %r10, %rax + 0x48, 0xf7, 0xd0, //0x00000aba notq %rax + 0x48, 0x21, 0xd0, //0x00000abd andq %rdx, %rax + 0x4c, 0x8d, 0x1c, 0x00, //0x00000ac0 leaq (%rax,%rax), %r11 + 0x4d, 0x09, 0xd3, //0x00000ac4 orq %r10, %r11 + 0x4c, 0x89, 0xd9, //0x00000ac7 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000aca notq %rcx + 0x48, 0x21, 0xd1, //0x00000acd andq %rdx, %rcx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000ad0 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd1, //0x00000ada andq %rdx, %rcx + 0x45, 0x31, 0xd2, //0x00000add xorl %r10d, %r10d + 0x48, 0x01, 0xc1, //0x00000ae0 addq %rax, %rcx + 0x41, 0x0f, 0x92, 0xc2, //0x00000ae3 setb %r10b + 0x48, 0x01, 0xc9, //0x00000ae7 addq %rcx, %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000aea movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc1, //0x00000af4 xorq %rax, %rcx + 0x4c, 0x21, 0xd9, //0x00000af7 andq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000afa notq %rcx + 0x48, 0x21, 0xcf, //0x00000afd andq %rcx, %rdi + 0x4d, 0x89, 0xeb, //0x00000b00 movq %r13, %r11 + 0x4d, 0x89, 0xcd, //0x00000b03 movq %r9, %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00000b06 movq $32(%rsp), %r9 + 0x48, 0x85, 0xff, //0x00000b0b testq %rdi, %rdi + 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x00000b0e je LBB0_110 + //0x00000b14 LBB0_120 + 0x4c, 0x0f, 0xbc, 0xff, //0x00000b14 bsfq %rdi, %r15 + 0x49, 0x29, 0xf7, //0x00000b18 subq %rsi, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000b1b movq $24(%rsp), %r10 + 0xe9, 0x3c, 0x09, 0x00, 0x00, //0x00000b20 jmp LBB0_246 + //0x00000b25 LBB0_121 + 0x40, 0x80, 0xff, 0x3a, //0x00000b25 cmpb $58, %dil + 0x0f, 0x85, 0x02, 0x2a, 0x00, 0x00, //0x00000b29 jne LBB0_645 + 0x49, 0xc7, 0x04, 0xf1, 0x00, 0x00, 0x00, 0x00, //0x00000b2f movq $0, (%r9,%rsi,8) + 0xe9, 0x24, 0xfc, 0xff, 0xff, //0x00000b37 jmp LBB0_61 + //0x00000b3c LBB0_123 + 0x83, 0xff, 0x2c, //0x00000b3c cmpl $44, %edi + 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x00000b3f jne LBB0_124 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000b45 cmpq $4095, %rsi + 0x0f, 0x8f, 0xbc, 0x22, 0x00, 0x00, //0x00000b4c jg LBB0_662 + 0x48, 0x8d, 0x4e, 0x01, //0x00000b52 leaq $1(%rsi), %rcx + 0x49, 0x89, 0x09, //0x00000b56 movq %rcx, (%r9) + 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000b59 movq $3, $8(%r9,%rsi,8) + 0xe9, 0xf9, 0xfb, 0xff, 0xff, //0x00000b62 jmp LBB0_61 + //0x00000b67 LBB0_125 + 0x49, 0x89, 0x11, //0x00000b67 movq %rdx, (%r9) + 0x83, 0xff, 0x7b, //0x00000b6a cmpl $123, %edi + 0x0f, 0x87, 0xbe, 0x29, 0x00, 0x00, //0x00000b6d ja LBB0_645 + //0x00000b73 LBB0_101 + 0x89, 0xf8, //0x00000b73 movl %edi, %eax + 0x48, 0x8d, 0x0d, 0xd8, 0x2e, 0x00, 0x00, //0x00000b75 leaq $11992(%rip), %rcx /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x04, 0x81, //0x00000b7c movslq (%rcx,%rax,4), %rax + 0x48, 0x01, 0xc8, //0x00000b80 addq %rcx, %rax + 0xff, 0xe0, //0x00000b83 jmpq *%rax + //0x00000b85 LBB0_140 + 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00000b85 movq %r13, $56(%rsp) + 0x4d, 0x8b, 0x6d, 0x08, //0x00000b8a movq $8(%r13), %r13 + 0x49, 0x8b, 0x03, //0x00000b8e movq (%r11), %rax + 0x4c, 0x8d, 0x78, 0xff, //0x00000b91 leaq $-1(%rax), %r15 + 0x4d, 0x29, 0xfd, //0x00000b95 subq %r15, %r13 + 0x0f, 0x84, 0x72, 0x29, 0x00, 0x00, //0x00000b98 je LBB0_641 + 0x48, 0x89, 0x44, 0x24, 0x28, //0x00000b9e movq %rax, $40(%rsp) + 0x4d, 0x8d, 0x24, 0x00, //0x00000ba3 leaq (%r8,%rax), %r12 + 0x49, 0x83, 0xc4, 0xff, //0x00000ba7 addq $-1, %r12 + 0x41, 0x80, 0x3c, 0x24, 0x30, //0x00000bab cmpb $48, (%r12) + 0x0f, 0x85, 0x43, 0x00, 0x00, 0x00, //0x00000bb0 jne LBB0_145 + 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000bb6 movl $1, %r8d + 0x49, 0x83, 0xfd, 0x01, //0x00000bbc cmpq $1, %r13 + 0x0f, 0x84, 0xae, 0xfb, 0xff, 0xff, //0x00000bc0 je LBB0_59 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00000bc6 movq $16(%rsp), %rax + 0x48, 0x8b, 0x4c, 0x24, 0x28, //0x00000bcb movq $40(%rsp), %rcx + 0x8a, 0x0c, 0x08, //0x00000bd0 movb (%rax,%rcx), %cl + 0x80, 0xc1, 0xd2, //0x00000bd3 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x00000bd6 cmpb $55, %cl + 0x0f, 0x87, 0x95, 0xfb, 0xff, 0xff, //0x00000bd9 ja LBB0_59 + 0x0f, 0xb6, 0xc1, //0x00000bdf movzbl %cl, %eax + 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000be2 movabsq $36028797027352577, %rcx + 0x48, 0x0f, 0xa3, 0xc1, //0x00000bec btq %rax, %rcx + 0x4c, 0x89, 0xf9, //0x00000bf0 movq %r15, %rcx + 0x0f, 0x83, 0x49, 0xfb, 0xff, 0xff, //0x00000bf3 jae LBB0_60 + //0x00000bf9 LBB0_145 + 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000bf9 movq $-1, %r11 + 0x49, 0x83, 0xfd, 0x20, //0x00000c00 cmpq $32, %r13 + 0x0f, 0x82, 0x29, 0x16, 0x00, 0x00, //0x00000c04 jb LBB0_425 + 0x45, 0x31, 0xc0, //0x00000c0a xorl %r8d, %r8d + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000c0d movq $-1, %r10 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000c14 movq $-1, (%rsp) + 0x90, 0x90, 0x90, 0x90, //0x00000c1c .p2align 4, 0x90 + //0x00000c20 LBB0_147 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x04, //0x00000c20 vmovdqu (%r12,%r8), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00000c26 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0xa5, 0x64, 0xd0, //0x00000c2b vpcmpgtb %ymm0, %ymm11, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000c2f vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x9d, 0x74, 0xd0, //0x00000c33 vpcmpeqb %ymm0, %ymm12, %ymm2 + 0xc5, 0x95, 0x74, 0xd8, //0x00000c37 vpcmpeqb %ymm0, %ymm13, %ymm3 + 0xc5, 0xe5, 0xeb, 0xd2, //0x00000c3b vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00000c3f vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0x85, 0x74, 0xc0, //0x00000c43 vpcmpeqb %ymm0, %ymm15, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00000c47 vpmovmskb %ymm0, %edx + 0xc5, 0xe5, 0x74, 0xdc, //0x00000c4b vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x00000c4f vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000c53 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0xeb, 0xc0, //0x00000c57 vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x00000c5b vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x00000c5f vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00000c63 vpmovmskb %ymm0, %eax + 0x48, 0xf7, 0xd0, //0x00000c67 notq %rax + 0x48, 0x0f, 0xbc, 0xc8, //0x00000c6a bsfq %rax, %rcx + 0x83, 0xf9, 0x20, //0x00000c6e cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000c71 je LBB0_149 + 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000c77 movl $-1, %eax + 0xd3, 0xe0, //0x00000c7c shll %cl, %eax + 0xf7, 0xd0, //0x00000c7e notl %eax + 0x21, 0xc2, //0x00000c80 andl %eax, %edx + 0x21, 0xc6, //0x00000c82 andl %eax, %esi + 0x21, 0xf8, //0x00000c84 andl %edi, %eax + 0x89, 0xc7, //0x00000c86 movl %eax, %edi + //0x00000c88 LBB0_149 + 0x8d, 0x5a, 0xff, //0x00000c88 leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00000c8b andl %edx, %ebx + 0x0f, 0x85, 0xf1, 0x10, 0x00, 0x00, //0x00000c8d jne LBB0_389 + 0x8d, 0x5e, 0xff, //0x00000c93 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x00000c96 andl %esi, %ebx + 0x0f, 0x85, 0xe6, 0x10, 0x00, 0x00, //0x00000c98 jne LBB0_389 + 0x8d, 0x5f, 0xff, //0x00000c9e leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x00000ca1 andl %edi, %ebx + 0x0f, 0x85, 0xdb, 0x10, 0x00, 0x00, //0x00000ca3 jne LBB0_389 + 0x85, 0xd2, //0x00000ca9 testl %edx, %edx + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000cab je LBB0_155 + 0x0f, 0xbc, 0xd2, //0x00000cb1 bsfl %edx, %edx + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000cb4 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x65, 0x12, 0x00, 0x00, //0x00000cb9 jne LBB0_408 + 0x4c, 0x01, 0xc2, //0x00000cbf addq %r8, %rdx + 0x48, 0x89, 0x14, 0x24, //0x00000cc2 movq %rdx, (%rsp) + //0x00000cc6 LBB0_155 + 0x85, 0xf6, //0x00000cc6 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000cc8 je LBB0_158 + 0x0f, 0xbc, 0xd6, //0x00000cce bsfl %esi, %edx + 0x49, 0x83, 0xfa, 0xff, //0x00000cd1 cmpq $-1, %r10 + 0x0f, 0x85, 0x49, 0x12, 0x00, 0x00, //0x00000cd5 jne LBB0_408 + 0x4c, 0x01, 0xc2, //0x00000cdb addq %r8, %rdx + 0x49, 0x89, 0xd2, //0x00000cde movq %rdx, %r10 + //0x00000ce1 LBB0_158 + 0x85, 0xff, //0x00000ce1 testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000ce3 je LBB0_161 + 0x0f, 0xbc, 0xd7, //0x00000ce9 bsfl %edi, %edx + 0x49, 0x83, 0xfb, 0xff, //0x00000cec cmpq $-1, %r11 + 0x0f, 0x85, 0x2e, 0x12, 0x00, 0x00, //0x00000cf0 jne LBB0_408 + 0x4c, 0x01, 0xc2, //0x00000cf6 addq %r8, %rdx + 0x49, 0x89, 0xd3, //0x00000cf9 movq %rdx, %r11 + //0x00000cfc LBB0_161 + 0x83, 0xf9, 0x20, //0x00000cfc cmpl $32, %ecx + 0x0f, 0x85, 0xbf, 0x05, 0x00, 0x00, //0x00000cff jne LBB0_224 + 0x49, 0x83, 0xc5, 0xe0, //0x00000d05 addq $-32, %r13 + 0x49, 0x83, 0xc0, 0x20, //0x00000d09 addq $32, %r8 + 0x49, 0x83, 0xfd, 0x1f, //0x00000d0d cmpq $31, %r13 + 0x0f, 0x87, 0x09, 0xff, 0xff, 0xff, //0x00000d11 ja LBB0_147 + 0xc5, 0xf8, 0x77, //0x00000d17 vzeroupper + 0xc5, 0x7e, 0x6f, 0x3d, 0x9e, 0xf4, 0xff, 0xff, //0x00000d1a vmovdqu $-2914(%rip), %ymm15 /* LCPI0_18+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x16, 0xf3, 0xff, 0xff, //0x00000d22 vmovdqu $-3306(%rip), %ymm14 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x6e, 0xf4, 0xff, 0xff, //0x00000d2a vmovdqu $-2962(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x46, 0xf4, 0xff, 0xff, //0x00000d32 vmovdqu $-3002(%rip), %ymm12 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x1e, 0xf4, 0xff, 0xff, //0x00000d3a vmovdqu $-3042(%rip), %ymm11 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0xf6, 0xf3, 0xff, 0xff, //0x00000d42 vmovdqu $-3082(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000d4a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x05, 0xc9, 0xf3, 0xff, 0xff, //0x00000d4f vmovdqu $-3127(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x41, 0xf3, 0xff, 0xff, //0x00000d57 vmovdqu $-3263(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x19, 0xf3, 0xff, 0xff, //0x00000d5f vmovdqu $-3303(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0x91, 0xf2, 0xff, 0xff, //0x00000d67 vmovdqu $-3439(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0x4d, 0x01, 0xe0, //0x00000d6f addq %r12, %r8 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00000d72 movq %r9, $32(%rsp) + 0x49, 0x83, 0xfd, 0x10, //0x00000d77 cmpq $16, %r13 + 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00000d7b movq $40(%rsp), %rax + 0x0f, 0x82, 0x81, 0x01, 0x00, 0x00, //0x00000d80 jb LBB0_182 + //0x00000d86 LBB0_164 + 0x4c, 0x89, 0xc1, //0x00000d86 movq %r8, %rcx + 0x48, 0x29, 0xc1, //0x00000d89 subq %rax, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00000d8c subq $16(%rsp), %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00000d91 addq $1, %rcx + 0x48, 0x89, 0x4c, 0x24, 0x30, //0x00000d95 movq %rcx, $48(%rsp) + 0x45, 0x31, 0xc9, //0x00000d9a xorl %r9d, %r9d + 0x90, 0x90, 0x90, //0x00000d9d .p2align 4, 0x90 + //0x00000da0 LBB0_165 + 0x4c, 0x89, 0xdb, //0x00000da0 movq %r11, %rbx + 0x4d, 0x89, 0xd3, //0x00000da3 movq %r10, %r11 + 0x4d, 0x89, 0xe2, //0x00000da6 movq %r12, %r10 + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x08, //0x00000da9 vmovdqu (%r8,%r9), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x89, 0xf4, 0xff, 0xff, //0x00000daf vpcmpgtb $-2935(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x91, 0xf4, 0xff, 0xff, //0x00000db7 vmovdqu $-2927(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x00000dbf vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00000dc3 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x91, 0xf4, 0xff, 0xff, //0x00000dc7 vpcmpeqb $-2927(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0x99, 0xf4, 0xff, 0xff, //0x00000dcf vpcmpeqb $-2919(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00000dd7 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x2d, 0xf4, 0xff, 0xff, //0x00000ddb vpand $-3027(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0x95, 0xf4, 0xff, 0xff, //0x00000de3 vpcmpeqb $-2923(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0x9d, 0xf4, 0xff, 0xff, //0x00000deb vpcmpeqb $-2915(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00000df3 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00000df7 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00000dfb vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xe0, //0x00000dff vpmovmskb %xmm0, %r12d + 0xc5, 0xf9, 0xd7, 0xd3, //0x00000e03 vpmovmskb %xmm3, %edx + 0xc5, 0xf9, 0xd7, 0xf2, //0x00000e07 vpmovmskb %xmm2, %esi + 0xc5, 0xf9, 0xd7, 0xc1, //0x00000e0b vpmovmskb %xmm1, %eax + 0xf7, 0xd0, //0x00000e0f notl %eax + 0x0f, 0xbc, 0xc8, //0x00000e11 bsfl %eax, %ecx + 0x83, 0xf9, 0x10, //0x00000e14 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000e17 je LBB0_167 + 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000e1d movl $-1, %eax + 0xd3, 0xe0, //0x00000e22 shll %cl, %eax + 0xf7, 0xd0, //0x00000e24 notl %eax + 0x41, 0x21, 0xc4, //0x00000e26 andl %eax, %r12d + 0x21, 0xc2, //0x00000e29 andl %eax, %edx + 0x21, 0xf0, //0x00000e2b andl %esi, %eax + 0x89, 0xc6, //0x00000e2d movl %eax, %esi + //0x00000e2f LBB0_167 + 0xc5, 0xfe, 0x6f, 0x25, 0xa9, 0xf3, 0xff, 0xff, //0x00000e2f vmovdqu $-3159(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x41, 0x8d, 0x7c, 0x24, 0xff, //0x00000e37 leal $-1(%r12), %edi + 0x44, 0x21, 0xe7, //0x00000e3c andl %r12d, %edi + 0x0f, 0x85, 0xaa, 0x11, 0x00, 0x00, //0x00000e3f jne LBB0_411 + 0x8d, 0x7a, 0xff, //0x00000e45 leal $-1(%rdx), %edi + 0x21, 0xd7, //0x00000e48 andl %edx, %edi + 0x0f, 0x85, 0x9f, 0x11, 0x00, 0x00, //0x00000e4a jne LBB0_411 + 0x8d, 0x7e, 0xff, //0x00000e50 leal $-1(%rsi), %edi + 0x21, 0xf7, //0x00000e53 andl %esi, %edi + 0x0f, 0x85, 0x94, 0x11, 0x00, 0x00, //0x00000e55 jne LBB0_411 + 0x45, 0x85, 0xe4, //0x00000e5b testl %r12d, %r12d + 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x00000e5e je LBB0_173 + 0x41, 0x0f, 0xbc, 0xfc, //0x00000e64 bsfl %r12d, %edi + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000e68 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x94, 0x12, 0x00, 0x00, //0x00000e6d jne LBB0_419 + 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000e73 movq $48(%rsp), %rax + 0x4c, 0x01, 0xc8, //0x00000e78 addq %r9, %rax + 0x48, 0x01, 0xc7, //0x00000e7b addq %rax, %rdi + 0x48, 0x89, 0x3c, 0x24, //0x00000e7e movq %rdi, (%rsp) + //0x00000e82 LBB0_173 + 0x85, 0xd2, //0x00000e82 testl %edx, %edx + 0x4d, 0x89, 0xd4, //0x00000e84 movq %r10, %r12 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000e87 je LBB0_176 + 0x0f, 0xbc, 0xd2, //0x00000e8d bsfl %edx, %edx + 0x49, 0x83, 0xfb, 0xff, //0x00000e90 cmpq $-1, %r11 + 0x0f, 0x85, 0x31, 0x12, 0x00, 0x00, //0x00000e94 jne LBB0_415 + 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000e9a movq $48(%rsp), %rax + 0x4c, 0x01, 0xc8, //0x00000e9f addq %r9, %rax + 0x48, 0x01, 0xc2, //0x00000ea2 addq %rax, %rdx + 0x49, 0x89, 0xd2, //0x00000ea5 movq %rdx, %r10 + 0x85, 0xf6, //0x00000ea8 testl %esi, %esi + 0x49, 0x89, 0xdb, //0x00000eaa movq %rbx, %r11 + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x00000ead jne LBB0_177 + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00000eb3 jmp LBB0_179 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000eb8 .p2align 4, 0x90 + //0x00000ec0 LBB0_176 + 0x4d, 0x89, 0xda, //0x00000ec0 movq %r11, %r10 + 0x85, 0xf6, //0x00000ec3 testl %esi, %esi + 0x49, 0x89, 0xdb, //0x00000ec5 movq %rbx, %r11 + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000ec8 je LBB0_179 + //0x00000ece LBB0_177 + 0x0f, 0xbc, 0xd6, //0x00000ece bsfl %esi, %edx + 0x49, 0x83, 0xfb, 0xff, //0x00000ed1 cmpq $-1, %r11 + 0x0f, 0x85, 0xf0, 0x11, 0x00, 0x00, //0x00000ed5 jne LBB0_415 + 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00000edb movq $48(%rsp), %rax + 0x4c, 0x01, 0xc8, //0x00000ee0 addq %r9, %rax + 0x48, 0x01, 0xc2, //0x00000ee3 addq %rax, %rdx + 0x49, 0x89, 0xd3, //0x00000ee6 movq %rdx, %r11 + //0x00000ee9 LBB0_179 + 0x83, 0xf9, 0x10, //0x00000ee9 cmpl $16, %ecx + 0x0f, 0x85, 0x89, 0x05, 0x00, 0x00, //0x00000eec jne LBB0_249 + 0x49, 0x83, 0xc5, 0xf0, //0x00000ef2 addq $-16, %r13 + 0x49, 0x83, 0xc1, 0x10, //0x00000ef6 addq $16, %r9 + 0x49, 0x83, 0xfd, 0x0f, //0x00000efa cmpq $15, %r13 + 0x0f, 0x87, 0x9c, 0xfe, 0xff, 0xff, //0x00000efe ja LBB0_165 + 0x4d, 0x01, 0xc8, //0x00000f04 addq %r9, %r8 + //0x00000f07 LBB0_182 + 0x4d, 0x85, 0xed, //0x00000f07 testq %r13, %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00000f0a movq $32(%rsp), %r9 + 0xc5, 0xfe, 0x6f, 0x25, 0xc9, 0xf2, 0xff, 0xff, //0x00000f0f vmovdqu $-3383(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x8b, 0x44, 0x24, 0x28, //0x00000f17 movq $40(%rsp), %rax + 0x0f, 0x84, 0x82, 0x05, 0x00, 0x00, //0x00000f1c je LBB0_251 + 0x4b, 0x8d, 0x3c, 0x28, //0x00000f22 leaq (%r8,%r13), %rdi + 0x4c, 0x89, 0xc6, //0x00000f26 movq %r8, %rsi + 0x48, 0x29, 0xc6, //0x00000f29 subq %rax, %rsi + 0x48, 0x2b, 0x74, 0x24, 0x10, //0x00000f2c subq $16(%rsp), %rsi + 0x48, 0x83, 0xc6, 0x01, //0x00000f31 addq $1, %rsi + 0x31, 0xc9, //0x00000f35 xorl %ecx, %ecx + 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00000f37 jmp LBB0_187 + //0x00000f3c LBB0_184 + 0x49, 0x83, 0xfb, 0xff, //0x00000f3c cmpq $-1, %r11 + 0x0f, 0x85, 0xb1, 0x10, 0x00, 0x00, //0x00000f40 jne LBB0_412 + 0x4c, 0x8d, 0x1c, 0x0e, //0x00000f46 leaq (%rsi,%rcx), %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000f4a .p2align 4, 0x90 + //0x00000f50 LBB0_186 + 0x48, 0x83, 0xc1, 0x01, //0x00000f50 addq $1, %rcx + 0x49, 0x39, 0xcd, //0x00000f54 cmpq %rcx, %r13 + 0x0f, 0x84, 0xe3, 0x0d, 0x00, 0x00, //0x00000f57 je LBB0_381 + //0x00000f5d LBB0_187 + 0x41, 0x0f, 0xbe, 0x14, 0x08, //0x00000f5d movsbl (%r8,%rcx), %edx + 0x8d, 0x42, 0xd0, //0x00000f62 leal $-48(%rdx), %eax + 0x83, 0xf8, 0x0a, //0x00000f65 cmpl $10, %eax + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00000f68 jb LBB0_186 + 0x8d, 0x5a, 0xd5, //0x00000f6e leal $-43(%rdx), %ebx + 0x83, 0xfb, 0x1a, //0x00000f71 cmpl $26, %ebx + 0x0f, 0x87, 0x28, 0x00, 0x00, 0x00, //0x00000f74 ja LBB0_192 + 0x48, 0x8d, 0x15, 0x2f, 0x2d, 0x00, 0x00, //0x00000f7a leaq $11567(%rip), %rdx /* LJTI0_4+0(%rip) */ + 0x48, 0x63, 0x04, 0x9a, //0x00000f81 movslq (%rdx,%rbx,4), %rax + 0x48, 0x01, 0xd0, //0x00000f85 addq %rdx, %rax + 0xff, 0xe0, //0x00000f88 jmpq *%rax + //0x00000f8a LBB0_190 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00000f8a cmpq $-1, (%rsp) + 0x0f, 0x85, 0x62, 0x10, 0x00, 0x00, //0x00000f8f jne LBB0_412 + 0x48, 0x8d, 0x04, 0x0e, //0x00000f95 leaq (%rsi,%rcx), %rax + 0x48, 0x89, 0x04, 0x24, //0x00000f99 movq %rax, (%rsp) + 0xe9, 0xae, 0xff, 0xff, 0xff, //0x00000f9d jmp LBB0_186 + //0x00000fa2 LBB0_192 + 0x83, 0xfa, 0x65, //0x00000fa2 cmpl $101, %edx + 0x0f, 0x85, 0xf6, 0x04, 0x00, 0x00, //0x00000fa5 jne LBB0_250 + //0x00000fab LBB0_193 + 0x49, 0x83, 0xfa, 0xff, //0x00000fab cmpq $-1, %r10 + 0x0f, 0x85, 0x42, 0x10, 0x00, 0x00, //0x00000faf jne LBB0_412 + 0x4c, 0x8d, 0x14, 0x0e, //0x00000fb5 leaq (%rsi,%rcx), %r10 + 0xe9, 0x92, 0xff, 0xff, 0xff, //0x00000fb9 jmp LBB0_186 + //0x00000fbe LBB0_126 + 0x83, 0xff, 0x22, //0x00000fbe cmpl $34, %edi + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000fc1 je LBB0_127 + //0x00000fc7 LBB0_124 + 0x83, 0xff, 0x7d, //0x00000fc7 cmpl $125, %edi + 0x0f, 0x85, 0x61, 0x25, 0x00, 0x00, //0x00000fca jne LBB0_645 + //0x00000fd0 LBB0_98 + 0x49, 0x89, 0x11, //0x00000fd0 movq %rdx, (%r9) + 0x4d, 0x89, 0xf7, //0x00000fd3 movq %r14, %r15 + 0x48, 0x85, 0xd2, //0x00000fd6 testq %rdx, %rdx + 0x0f, 0x85, 0xa1, 0xf7, 0xff, 0xff, //0x00000fd9 jne LBB0_63 + 0xe9, 0x54, 0x25, 0x00, 0x00, //0x00000fdf jmp LBB0_646 + //0x00000fe4 LBB0_195 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000fe4 cmpq $4095, %rsi + 0x0f, 0x8f, 0x1d, 0x1e, 0x00, 0x00, //0x00000feb jg LBB0_662 + 0x48, 0x8d, 0x4e, 0x01, //0x00000ff1 leaq $1(%rsi), %rcx + 0x49, 0x89, 0x09, //0x00000ff5 movq %rcx, (%r9) + 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000ff8 movq $0, $8(%r9,%rsi,8) + 0xe9, 0x5a, 0xf7, 0xff, 0xff, //0x00001001 jmp LBB0_61 + //0x00001006 LBB0_127 + 0x49, 0xc7, 0x04, 0xf1, 0x02, 0x00, 0x00, 0x00, //0x00001006 movq $2, (%r9,%rsi,8) + 0x4d, 0x8b, 0x03, //0x0000100e movq (%r11), %r8 + 0x4d, 0x8b, 0x65, 0x08, //0x00001011 movq $8(%r13), %r12 + 0x4c, 0x89, 0xe3, //0x00001015 movq %r12, %rbx + 0x41, 0xf6, 0xc2, 0x20, //0x00001018 testb $32, %r10b + 0x0f, 0x85, 0xc7, 0x02, 0x00, 0x00, //0x0000101c jne LBB0_225 + 0x4c, 0x29, 0xc3, //0x00001022 subq %r8, %rbx + 0x0f, 0x84, 0x3f, 0x27, 0x00, 0x00, //0x00001025 je LBB0_680 + 0x48, 0x83, 0xfb, 0x40, //0x0000102b cmpq $64, %rbx + 0x0f, 0x82, 0xdc, 0x12, 0x00, 0x00, //0x0000102f jb LBB0_440 + 0x4c, 0x89, 0xc6, //0x00001035 movq %r8, %rsi + 0x48, 0xf7, 0xd6, //0x00001038 notq %rsi + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000103b movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x00001043 movq %r8, %r15 + 0x45, 0x31, 0xd2, //0x00001046 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001049 .p2align 4, 0x90 + //0x00001050 LBB0_131 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001050 movq $16(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00001055 vmovdqu (%rax,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x0000105b vmovdqu $32(%rax,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001062 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00001066 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x0000106a vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xc2, //0x0000106e vpmovmskb %ymm2, %eax + 0xc5, 0xfd, 0x74, 0xc7, //0x00001072 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001076 vpmovmskb %ymm0, %edx + 0xc5, 0xf5, 0x74, 0xc7, //0x0000107a vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x0000107e vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe0, 0x20, //0x00001082 shlq $32, %rax + 0x48, 0x09, 0xc7, //0x00001086 orq %rax, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00001089 shlq $32, %rcx + 0x48, 0x09, 0xca, //0x0000108d orq %rcx, %rdx + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00001090 jne LBB0_199 + 0x4d, 0x85, 0xd2, //0x00001096 testq %r10, %r10 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00001099 jne LBB0_201 + 0x45, 0x31, 0xd2, //0x0000109f xorl %r10d, %r10d + 0x48, 0x85, 0xff, //0x000010a2 testq %rdi, %rdi + 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x000010a5 jne LBB0_203 + //0x000010ab LBB0_134 + 0x48, 0x83, 0xc3, 0xc0, //0x000010ab addq $-64, %rbx + 0x48, 0x83, 0xc6, 0xc0, //0x000010af addq $-64, %rsi + 0x49, 0x83, 0xc7, 0x40, //0x000010b3 addq $64, %r15 + 0x48, 0x83, 0xfb, 0x3f, //0x000010b7 cmpq $63, %rbx + 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x000010bb ja LBB0_131 + 0xe9, 0x60, 0x0f, 0x00, 0x00, //0x000010c1 jmp LBB0_135 + //0x000010c6 LBB0_199 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x000010c6 movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x000010cb movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x000010ce movq %r11, %r13 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000010d1 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x000010d6 jne LBB0_202 + 0x48, 0x0f, 0xbc, 0xc2, //0x000010dc bsfq %rdx, %rax + 0x4c, 0x01, 0xf8, //0x000010e0 addq %r15, %rax + 0x48, 0x89, 0x04, 0x24, //0x000010e3 movq %rax, (%rsp) + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x000010e7 jmp LBB0_202 + //0x000010ec LBB0_201 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x000010ec movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x000010f1 movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x000010f4 movq %r11, %r13 + //0x000010f7 LBB0_202 + 0x4c, 0x89, 0xd0, //0x000010f7 movq %r10, %rax + 0x48, 0xf7, 0xd0, //0x000010fa notq %rax + 0x48, 0x21, 0xd0, //0x000010fd andq %rdx, %rax + 0x4c, 0x8d, 0x1c, 0x00, //0x00001100 leaq (%rax,%rax), %r11 + 0x4d, 0x09, 0xd3, //0x00001104 orq %r10, %r11 + 0x4c, 0x89, 0xd9, //0x00001107 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x0000110a notq %rcx + 0x48, 0x21, 0xd1, //0x0000110d andq %rdx, %rcx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001110 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd1, //0x0000111a andq %rdx, %rcx + 0x45, 0x31, 0xd2, //0x0000111d xorl %r10d, %r10d + 0x48, 0x01, 0xc1, //0x00001120 addq %rax, %rcx + 0x41, 0x0f, 0x92, 0xc2, //0x00001123 setb %r10b + 0x48, 0x01, 0xc9, //0x00001127 addq %rcx, %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000112a movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc1, //0x00001134 xorq %rax, %rcx + 0x4c, 0x21, 0xd9, //0x00001137 andq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x0000113a notq %rcx + 0x48, 0x21, 0xcf, //0x0000113d andq %rcx, %rdi + 0x4d, 0x89, 0xeb, //0x00001140 movq %r13, %r11 + 0x4d, 0x89, 0xcd, //0x00001143 movq %r9, %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001146 movq $32(%rsp), %r9 + 0x48, 0x85, 0xff, //0x0000114b testq %rdi, %rdi + 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x0000114e je LBB0_134 + //0x00001154 LBB0_203 + 0x4c, 0x0f, 0xbc, 0xff, //0x00001154 bsfq %rdi, %r15 + 0x49, 0x29, 0xf7, //0x00001158 subq %rsi, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000115b movq $24(%rsp), %r10 + 0xe9, 0x42, 0x04, 0x00, 0x00, //0x00001160 jmp LBB0_265 + //0x00001165 LBB0_204 + 0x4c, 0x89, 0xc8, //0x00001165 movq %r9, %rax + 0x4d, 0x89, 0xe9, //0x00001168 movq %r13, %r9 + 0x4d, 0x89, 0xe5, //0x0000116b movq %r12, %r13 + 0x4d, 0x29, 0xc5, //0x0000116e subq %r8, %r13 + 0x0f, 0x84, 0xf3, 0x25, 0x00, 0x00, //0x00001171 je LBB0_680 + 0x49, 0x83, 0xfd, 0x40, //0x00001177 cmpq $64, %r13 + 0x0f, 0x82, 0x32, 0x11, 0x00, 0x00, //0x0000117b jb LBB0_434 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00001181 movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x00001189 movq %r8, %r15 + 0x45, 0x31, 0xdb, //0x0000118c xorl %r11d, %r11d + 0x90, //0x0000118f .p2align 4, 0x90 + //0x00001190 LBB0_207 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00001190 movq $16(%rsp), %rcx + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x39, //0x00001195 vmovdqu (%rcx,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x39, 0x20, //0x0000119b vmovdqu $32(%rcx,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000011a2 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x000011a6 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x000011aa vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x000011ae vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xd7, //0x000011b2 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000011b6 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x000011ba vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x000011be vpmovmskb %ymm2, %ebx + 0xc5, 0xbd, 0x64, 0xd1, //0x000011c2 vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000011c6 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x000011cb vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x000011cf vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe1, 0x20, //0x000011d3 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x000011d7 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x20, //0x000011da shlq $32, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x000011de shlq $32, %rsi + 0x48, 0x09, 0xda, //0x000011e2 orq %rbx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000011e5 jne LBB0_218 + 0x4d, 0x85, 0xdb, //0x000011eb testq %r11, %r11 + 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x000011ee jne LBB0_220 + 0x45, 0x31, 0xdb, //0x000011f4 xorl %r11d, %r11d + //0x000011f7 LBB0_210 + 0xc5, 0xbd, 0x64, 0xc8, //0x000011f7 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000011fb vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00001200 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00001204 vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00001208 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x0000120b testq %rdi, %rdi + 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x0000120e jne LBB0_221 + 0x48, 0x85, 0xf6, //0x00001214 testq %rsi, %rsi + 0x0f, 0x85, 0x7a, 0x23, 0x00, 0x00, //0x00001217 jne LBB0_651 + 0x49, 0x83, 0xc5, 0xc0, //0x0000121d addq $-64, %r13 + 0x49, 0x83, 0xc7, 0x40, //0x00001221 addq $64, %r15 + 0x49, 0x83, 0xfd, 0x3f, //0x00001225 cmpq $63, %r13 + 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x00001229 ja LBB0_207 + 0xe9, 0x58, 0x0d, 0x00, 0x00, //0x0000122f jmp LBB0_213 + //0x00001234 LBB0_218 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001234 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00001239 jne LBB0_220 + 0x48, 0x0f, 0xbc, 0xca, //0x0000123f bsfq %rdx, %rcx + 0x4c, 0x01, 0xf9, //0x00001243 addq %r15, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x00001246 movq %rcx, (%rsp) + //0x0000124a LBB0_220 + 0x4c, 0x89, 0xd9, //0x0000124a movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x0000124d notq %rcx + 0x48, 0x21, 0xd1, //0x00001250 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00001253 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00001257 orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x0000125a movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x0000125d notq %rbx + 0x48, 0x21, 0xd3, //0x00001260 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001263 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x0000126d andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00001270 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00001273 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00001276 setb %r11b + 0x48, 0x01, 0xdb, //0x0000127a addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000127d movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00001287 xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x0000128a andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x0000128d notq %rbx + 0x48, 0x21, 0xdf, //0x00001290 andq %rbx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001293 movq $24(%rsp), %r10 + 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x00001298 jmp LBB0_210 + //0x0000129d LBB0_221 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000129d bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x000012a1 testq %rsi, %rsi + 0x0f, 0x84, 0x97, 0x01, 0x00, 0x00, //0x000012a4 je LBB0_244 + 0x48, 0x0f, 0xbc, 0xd6, //0x000012aa bsfq %rsi, %rdx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000012ae movq $8(%rsp), %r11 + 0x4d, 0x89, 0xcd, //0x000012b3 movq %r9, %r13 + 0x48, 0x39, 0xca, //0x000012b6 cmpq %rcx, %rdx + 0x0f, 0x83, 0x98, 0x01, 0x00, 0x00, //0x000012b9 jae LBB0_245 + 0xe9, 0xc1, 0x24, 0x00, 0x00, //0x000012bf jmp LBB0_223 + //0x000012c4 LBB0_224 + 0x4c, 0x01, 0xc1, //0x000012c4 addq %r8, %rcx + 0x4c, 0x01, 0xe1, //0x000012c7 addq %r12, %rcx + 0xc5, 0xf8, 0x77, //0x000012ca vzeroupper + 0x49, 0x89, 0xc8, //0x000012cd movq %rcx, %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000012d0 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x000012d7 movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x000012db testq %rdx, %rdx + 0x0f, 0x85, 0xd4, 0x01, 0x00, 0x00, //0x000012de jne LBB0_252 + 0xe9, 0x36, 0x22, 0x00, 0x00, //0x000012e4 jmp LBB0_644 + //0x000012e9 LBB0_225 + 0x4c, 0x29, 0xc3, //0x000012e9 subq %r8, %rbx + 0x0f, 0x84, 0x78, 0x24, 0x00, 0x00, //0x000012ec je LBB0_680 + 0x48, 0x83, 0xfb, 0x40, //0x000012f2 cmpq $64, %rbx + 0x0f, 0x82, 0x38, 0x10, 0x00, 0x00, //0x000012f6 jb LBB0_441 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000012fc movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x00001304 movq %r8, %r15 + 0x45, 0x31, 0xdb, //0x00001307 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000130a .p2align 4, 0x90 + //0x00001310 LBB0_228 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001310 movq $16(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00001315 vmovdqu (%rax,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x0000131b vmovdqu $32(%rax,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001322 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00001326 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x0000132a vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xc2, //0x0000132e vpmovmskb %ymm2, %eax + 0xc5, 0xfd, 0x74, 0xd7, //0x00001332 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001336 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x0000133a vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x0000133e vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x00001342 vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001346 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x0000134b vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x0000134f vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe0, 0x20, //0x00001353 shlq $32, %rax + 0x48, 0x09, 0xc7, //0x00001357 orq %rax, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x0000135a shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x0000135e shlq $32, %rsi + 0x48, 0x09, 0xca, //0x00001362 orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001365 jne LBB0_239 + 0x4d, 0x85, 0xdb, //0x0000136b testq %r11, %r11 + 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x0000136e jne LBB0_241 + 0x45, 0x31, 0xdb, //0x00001374 xorl %r11d, %r11d + //0x00001377 LBB0_231 + 0xc5, 0xbd, 0x64, 0xc8, //0x00001377 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000137b vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00001380 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00001384 vpmovmskb %ymm0, %eax + 0x48, 0x09, 0xc6, //0x00001388 orq %rax, %rsi + 0x48, 0x85, 0xff, //0x0000138b testq %rdi, %rdi + 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x0000138e jne LBB0_242 + 0x48, 0x85, 0xf6, //0x00001394 testq %rsi, %rsi + 0x0f, 0x85, 0xfa, 0x21, 0x00, 0x00, //0x00001397 jne LBB0_651 + 0x48, 0x83, 0xc3, 0xc0, //0x0000139d addq $-64, %rbx + 0x49, 0x83, 0xc7, 0x40, //0x000013a1 addq $64, %r15 + 0x48, 0x83, 0xfb, 0x3f, //0x000013a5 cmpq $63, %rbx + 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x000013a9 ja LBB0_228 + 0xe9, 0xcd, 0x0c, 0x00, 0x00, //0x000013af jmp LBB0_234 + //0x000013b4 LBB0_239 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000013b4 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000013b9 jne LBB0_241 + 0x48, 0x0f, 0xbc, 0xc2, //0x000013bf bsfq %rdx, %rax + 0x4c, 0x01, 0xf8, //0x000013c3 addq %r15, %rax + 0x48, 0x89, 0x04, 0x24, //0x000013c6 movq %rax, (%rsp) + //0x000013ca LBB0_241 + 0x4c, 0x89, 0xd8, //0x000013ca movq %r11, %rax + 0x48, 0xf7, 0xd0, //0x000013cd notq %rax + 0x48, 0x21, 0xd0, //0x000013d0 andq %rdx, %rax + 0x4c, 0x8d, 0x14, 0x00, //0x000013d3 leaq (%rax,%rax), %r10 + 0x4d, 0x09, 0xda, //0x000013d7 orq %r11, %r10 + 0x4c, 0x89, 0xd1, //0x000013da movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x000013dd notq %rcx + 0x48, 0x21, 0xd1, //0x000013e0 andq %rdx, %rcx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000013e3 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd1, //0x000013ed andq %rdx, %rcx + 0x45, 0x31, 0xdb, //0x000013f0 xorl %r11d, %r11d + 0x48, 0x01, 0xc1, //0x000013f3 addq %rax, %rcx + 0x41, 0x0f, 0x92, 0xc3, //0x000013f6 setb %r11b + 0x48, 0x01, 0xc9, //0x000013fa addq %rcx, %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000013fd movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc1, //0x00001407 xorq %rax, %rcx + 0x4c, 0x21, 0xd1, //0x0000140a andq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000140d notq %rcx + 0x48, 0x21, 0xcf, //0x00001410 andq %rcx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001413 movq $24(%rsp), %r10 + 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x00001418 jmp LBB0_231 + //0x0000141d LBB0_242 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000141d bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00001421 testq %rsi, %rsi + 0x0f, 0x84, 0x63, 0x01, 0x00, 0x00, //0x00001424 je LBB0_263 + 0x48, 0x0f, 0xbc, 0xd6, //0x0000142a bsfq %rsi, %rdx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000142e movq $8(%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001433 cmpq %rcx, %rdx + 0x0f, 0x83, 0x64, 0x01, 0x00, 0x00, //0x00001436 jae LBB0_264 + 0xe9, 0x44, 0x23, 0x00, 0x00, //0x0000143c jmp LBB0_223 + //0x00001441 LBB0_244 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001441 movl $64, %edx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001446 movq $8(%rsp), %r11 + 0x4d, 0x89, 0xcd, //0x0000144b movq %r9, %r13 + 0x48, 0x39, 0xca, //0x0000144e cmpq %rcx, %rdx + 0x0f, 0x82, 0x2e, 0x23, 0x00, 0x00, //0x00001451 jb LBB0_223 + //0x00001457 LBB0_245 + 0x49, 0x89, 0xc1, //0x00001457 movq %rax, %r9 + 0x49, 0x01, 0xcf, //0x0000145a addq %rcx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x0000145d addq $1, %r15 + //0x00001461 LBB0_246 + 0x4d, 0x85, 0xff, //0x00001461 testq %r15, %r15 + 0x0f, 0x88, 0xb0, 0x19, 0x00, 0x00, //0x00001464 js LBB0_386 + //0x0000146a LBB0_247 + 0x4d, 0x89, 0x3b, //0x0000146a movq %r15, (%r11) + 0x4d, 0x85, 0xc0, //0x0000146d testq %r8, %r8 + 0x0f, 0x8f, 0xea, 0xf2, 0xff, 0xff, //0x00001470 jg LBB0_61 + 0xe9, 0xbf, 0x19, 0x00, 0x00, //0x00001476 jmp LBB0_248 + //0x0000147b LBB0_249 + 0x89, 0xc8, //0x0000147b movl %ecx, %eax + 0x49, 0x01, 0xc0, //0x0000147d addq %rax, %r8 + 0x4d, 0x01, 0xc8, //0x00001480 addq %r9, %r8 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001483 movq $32(%rsp), %r9 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001488 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x0000148f movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x00001493 testq %rdx, %rdx + 0x0f, 0x85, 0x1c, 0x00, 0x00, 0x00, //0x00001496 jne LBB0_252 + 0xe9, 0x7e, 0x20, 0x00, 0x00, //0x0000149c jmp LBB0_644 + //0x000014a1 LBB0_250 + 0x49, 0x01, 0xc8, //0x000014a1 addq %rcx, %r8 + //0x000014a4 LBB0_251 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000014a4 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x000014ab movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x000014af testq %rdx, %rdx + 0x0f, 0x84, 0x67, 0x20, 0x00, 0x00, //0x000014b2 je LBB0_644 + //0x000014b8 LBB0_252 + 0x4d, 0x85, 0xdb, //0x000014b8 testq %r11, %r11 + 0x0f, 0x84, 0x5e, 0x20, 0x00, 0x00, //0x000014bb je LBB0_644 + 0x4d, 0x85, 0xd2, //0x000014c1 testq %r10, %r10 + 0x0f, 0x84, 0x55, 0x20, 0x00, 0x00, //0x000014c4 je LBB0_644 + 0x4d, 0x29, 0xe0, //0x000014ca subq %r12, %r8 + 0x49, 0x8d, 0x48, 0xff, //0x000014cd leaq $-1(%r8), %rcx + 0x48, 0x39, 0xca, //0x000014d1 cmpq %rcx, %rdx + 0x0f, 0x84, 0xee, 0xf1, 0xff, 0xff, //0x000014d4 je LBB0_642 + 0x49, 0x39, 0xcb, //0x000014da cmpq %rcx, %r11 + 0x0f, 0x84, 0xe5, 0xf1, 0xff, 0xff, //0x000014dd je LBB0_642 + 0x49, 0x39, 0xca, //0x000014e3 cmpq %rcx, %r10 + 0x0f, 0x84, 0xdc, 0xf1, 0xff, 0xff, //0x000014e6 je LBB0_642 + 0x4d, 0x85, 0xdb, //0x000014ec testq %r11, %r11 + 0xc5, 0xfe, 0x6f, 0x2d, 0x09, 0xeb, 0xff, 0xff, //0x000014ef vmovdqu $-5367(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x81, 0xeb, 0xff, 0xff, //0x000014f7 vmovdqu $-5247(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x99, 0xeb, 0xff, 0xff, //0x000014ff vmovdqu $-5223(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x11, 0xec, 0xff, 0xff, //0x00001507 vmovdqu $-5103(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000150f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x24, 0xec, 0xff, 0xff, //0x00001514 vmovdqu $-5084(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x3c, 0xec, 0xff, 0xff, //0x0000151c vmovdqu $-5060(%rip), %ymm11 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x54, 0xec, 0xff, 0xff, //0x00001524 vmovdqu $-5036(%rip), %ymm12 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x6c, 0xec, 0xff, 0xff, //0x0000152c vmovdqu $-5012(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x04, 0xeb, 0xff, 0xff, //0x00001534 vmovdqu $-5372(%rip), %ymm14 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x7c, 0xec, 0xff, 0xff, //0x0000153c vmovdqu $-4996(%rip), %ymm15 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x94, 0xec, 0xff, 0xff, //0x00001544 vmovdqu $-4972(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x8e, 0x18, 0x00, 0x00, 0x00, //0x0000154c jle LBB0_260 + 0x49, 0x8d, 0x43, 0xff, //0x00001552 leaq $-1(%r11), %rax + 0x49, 0x39, 0xc2, //0x00001556 cmpq %rax, %r10 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00001559 je LBB0_260 + 0x49, 0xf7, 0xd3, //0x0000155f notq %r11 + 0x4d, 0x89, 0xd8, //0x00001562 movq %r11, %r8 + 0xe9, 0xa4, 0x0a, 0x00, 0x00, //0x00001565 jmp LBB0_413 + //0x0000156a LBB0_260 + 0x48, 0x89, 0xd0, //0x0000156a movq %rdx, %rax + 0x4c, 0x09, 0xd0, //0x0000156d orq %r10, %rax + 0x0f, 0x99, 0xc1, //0x00001570 setns %cl + 0x0f, 0x88, 0xe1, 0x02, 0x00, 0x00, //0x00001573 js LBB0_308 + 0x4c, 0x39, 0xd2, //0x00001579 cmpq %r10, %rdx + 0x0f, 0x8c, 0xd8, 0x02, 0x00, 0x00, //0x0000157c jl LBB0_308 + 0x48, 0xf7, 0xd2, //0x00001582 notq %rdx + 0x49, 0x89, 0xd0, //0x00001585 movq %rdx, %r8 + 0xe9, 0x81, 0x0a, 0x00, 0x00, //0x00001588 jmp LBB0_413 + //0x0000158d LBB0_263 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000158d movl $64, %edx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001592 movq $8(%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001597 cmpq %rcx, %rdx + 0x0f, 0x82, 0xe5, 0x21, 0x00, 0x00, //0x0000159a jb LBB0_223 + //0x000015a0 LBB0_264 + 0x49, 0x01, 0xcf, //0x000015a0 addq %rcx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000015a3 addq $1, %r15 + //0x000015a7 LBB0_265 + 0x4d, 0x85, 0xff, //0x000015a7 testq %r15, %r15 + 0x0f, 0x88, 0x6a, 0x18, 0x00, 0x00, //0x000015aa js LBB0_386 + 0x4d, 0x89, 0x3b, //0x000015b0 movq %r15, (%r11) + 0x4d, 0x85, 0xc0, //0x000015b3 testq %r8, %r8 + 0x0f, 0x8e, 0x7e, 0x18, 0x00, 0x00, //0x000015b6 jle LBB0_248 + 0x49, 0x8b, 0x09, //0x000015bc movq (%r9), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015bf cmpq $4095, %rcx + 0x0f, 0x8f, 0x42, 0x18, 0x00, 0x00, //0x000015c6 jg LBB0_662 + 0x48, 0x8d, 0x41, 0x01, //0x000015cc leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x000015d0 movq %rax, (%r9) + 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000015d3 movq $4, $8(%r9,%rcx,8) + 0xe9, 0x7f, 0xf1, 0xff, 0xff, //0x000015dc jmp LBB0_61 + //0x000015e1 LBB0_269 + 0x4d, 0x8b, 0x03, //0x000015e1 movq (%r11), %r8 + 0x4d, 0x8b, 0x65, 0x08, //0x000015e4 movq $8(%r13), %r12 + 0x4c, 0x89, 0xe3, //0x000015e8 movq %r12, %rbx + 0x41, 0xf6, 0xc2, 0x20, //0x000015eb testb $32, %r10b + 0x0f, 0x85, 0x7e, 0x02, 0x00, 0x00, //0x000015ef jne LBB0_309 + 0x4c, 0x29, 0xc3, //0x000015f5 subq %r8, %rbx + 0x0f, 0x84, 0x6c, 0x21, 0x00, 0x00, //0x000015f8 je LBB0_680 + 0x48, 0x83, 0xfb, 0x40, //0x000015fe cmpq $64, %rbx + 0x0f, 0x82, 0x7c, 0x0d, 0x00, 0x00, //0x00001602 jb LBB0_444 + 0x4c, 0x89, 0xc6, //0x00001608 movq %r8, %rsi + 0x48, 0xf7, 0xd6, //0x0000160b notq %rsi + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000160e movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x00001616 movq %r8, %r15 + 0x45, 0x31, 0xd2, //0x00001619 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, //0x0000161c .p2align 4, 0x90 + //0x00001620 LBB0_273 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001620 movq $16(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x00001625 vmovdqu (%rax,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x0000162b vmovdqu $32(%rax,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001632 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00001636 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x0000163a vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xc2, //0x0000163e vpmovmskb %ymm2, %eax + 0xc5, 0xfd, 0x74, 0xc7, //0x00001642 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001646 vpmovmskb %ymm0, %edx + 0xc5, 0xf5, 0x74, 0xc7, //0x0000164a vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x0000164e vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe0, 0x20, //0x00001652 shlq $32, %rax + 0x48, 0x09, 0xc7, //0x00001656 orq %rax, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00001659 shlq $32, %rcx + 0x48, 0x09, 0xca, //0x0000165d orq %rcx, %rdx + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00001660 jne LBB0_282 + 0x4d, 0x85, 0xd2, //0x00001666 testq %r10, %r10 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00001669 jne LBB0_284 + 0x45, 0x31, 0xd2, //0x0000166f xorl %r10d, %r10d + 0x48, 0x85, 0xff, //0x00001672 testq %rdi, %rdi + 0x0f, 0x85, 0xa9, 0x00, 0x00, 0x00, //0x00001675 jne LBB0_286 + //0x0000167b LBB0_276 + 0x48, 0x83, 0xc3, 0xc0, //0x0000167b addq $-64, %rbx + 0x48, 0x83, 0xc6, 0xc0, //0x0000167f addq $-64, %rsi + 0x49, 0x83, 0xc7, 0x40, //0x00001683 addq $64, %r15 + 0x48, 0x83, 0xfb, 0x3f, //0x00001687 cmpq $63, %rbx + 0x0f, 0x87, 0x8f, 0xff, 0xff, 0xff, //0x0000168b ja LBB0_273 + 0xe9, 0xaa, 0x0a, 0x00, 0x00, //0x00001691 jmp LBB0_277 + //0x00001696 LBB0_282 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00001696 movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x0000169b movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x0000169e movq %r11, %r13 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000016a1 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x000016a6 jne LBB0_285 + 0x48, 0x0f, 0xbc, 0xc2, //0x000016ac bsfq %rdx, %rax + 0x4c, 0x01, 0xf8, //0x000016b0 addq %r15, %rax + 0x48, 0x89, 0x04, 0x24, //0x000016b3 movq %rax, (%rsp) + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x000016b7 jmp LBB0_285 + //0x000016bc LBB0_284 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x000016bc movq %r9, $32(%rsp) + 0x4d, 0x89, 0xe9, //0x000016c1 movq %r13, %r9 + 0x4d, 0x89, 0xdd, //0x000016c4 movq %r11, %r13 + //0x000016c7 LBB0_285 + 0x4c, 0x89, 0xd0, //0x000016c7 movq %r10, %rax + 0x48, 0xf7, 0xd0, //0x000016ca notq %rax + 0x48, 0x21, 0xd0, //0x000016cd andq %rdx, %rax + 0x4c, 0x8d, 0x1c, 0x00, //0x000016d0 leaq (%rax,%rax), %r11 + 0x4d, 0x09, 0xd3, //0x000016d4 orq %r10, %r11 + 0x4c, 0x89, 0xd9, //0x000016d7 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x000016da notq %rcx + 0x48, 0x21, 0xd1, //0x000016dd andq %rdx, %rcx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000016e0 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd1, //0x000016ea andq %rdx, %rcx + 0x45, 0x31, 0xd2, //0x000016ed xorl %r10d, %r10d + 0x48, 0x01, 0xc1, //0x000016f0 addq %rax, %rcx + 0x41, 0x0f, 0x92, 0xc2, //0x000016f3 setb %r10b + 0x48, 0x01, 0xc9, //0x000016f7 addq %rcx, %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000016fa movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc1, //0x00001704 xorq %rax, %rcx + 0x4c, 0x21, 0xd9, //0x00001707 andq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x0000170a notq %rcx + 0x48, 0x21, 0xcf, //0x0000170d andq %rcx, %rdi + 0x4d, 0x89, 0xeb, //0x00001710 movq %r13, %r11 + 0x4d, 0x89, 0xcd, //0x00001713 movq %r9, %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001716 movq $32(%rsp), %r9 + 0x48, 0x85, 0xff, //0x0000171b testq %rdi, %rdi + 0x0f, 0x84, 0x57, 0xff, 0xff, 0xff, //0x0000171e je LBB0_276 + //0x00001724 LBB0_286 + 0x4c, 0x0f, 0xbc, 0xff, //0x00001724 bsfq %rdi, %r15 + 0x49, 0x29, 0xf7, //0x00001728 subq %rsi, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000172b movq $24(%rsp), %r10 + 0xe9, 0x41, 0x06, 0x00, 0x00, //0x00001730 jmp LBB0_385 + //0x00001735 LBB0_287 + 0x4d, 0x8b, 0x55, 0x08, //0x00001735 movq $8(%r13), %r10 + 0x4d, 0x8b, 0x3b, //0x00001739 movq (%r11), %r15 + 0x4d, 0x29, 0xfa, //0x0000173c subq %r15, %r10 + 0x0f, 0x84, 0xec, 0x1e, 0x00, 0x00, //0x0000173f je LBB0_661 + 0x4b, 0x8d, 0x04, 0x38, //0x00001745 leaq (%r8,%r15), %rax + 0x48, 0x89, 0x44, 0x24, 0x30, //0x00001749 movq %rax, $48(%rsp) + 0x80, 0x38, 0x30, //0x0000174e cmpb $48, (%rax) + 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x00, //0x00001751 jne LBB0_330 + 0x41, 0xbc, 0x01, 0x00, 0x00, 0x00, //0x00001757 movl $1, %r12d + 0x49, 0x83, 0xfa, 0x01, //0x0000175d cmpq $1, %r10 + 0x0f, 0x85, 0x5c, 0x02, 0x00, 0x00, //0x00001761 jne LBB0_328 + //0x00001767 LBB0_290 + 0x4c, 0x89, 0xf9, //0x00001767 movq %r15, %rcx + 0xe9, 0x08, 0x0b, 0x00, 0x00, //0x0000176a jmp LBB0_431 + //0x0000176f LBB0_291 + 0x49, 0x8b, 0x09, //0x0000176f movq (%r9), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00001772 cmpq $4095, %rcx + 0x0f, 0x8f, 0x8f, 0x16, 0x00, 0x00, //0x00001779 jg LBB0_662 + 0x48, 0x8d, 0x41, 0x01, //0x0000177f leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x00001783 movq %rax, (%r9) + 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00001786 movq $5, $8(%r9,%rcx,8) + 0xe9, 0xcc, 0xef, 0xff, 0xff, //0x0000178f jmp LBB0_61 + //0x00001794 LBB0_293 + 0x49, 0x8b, 0x0b, //0x00001794 movq (%r11), %rcx + 0x49, 0x8b, 0x55, 0x08, //0x00001797 movq $8(%r13), %rdx + 0x48, 0x8d, 0x42, 0xfc, //0x0000179b leaq $-4(%rdx), %rax + 0x48, 0x39, 0xc1, //0x0000179f cmpq %rax, %rcx + 0x0f, 0x87, 0x8a, 0x16, 0x00, 0x00, //0x000017a2 ja LBB0_388 + 0x41, 0x8b, 0x14, 0x08, //0x000017a8 movl (%r8,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000017ac cmpl $1702063201, %edx + 0x0f, 0x85, 0x85, 0x1e, 0x00, 0x00, //0x000017b2 jne LBB0_663 + 0x48, 0x8d, 0x41, 0x04, //0x000017b8 leaq $4(%rcx), %rax + 0x49, 0x89, 0x03, //0x000017bc movq %rax, (%r11) + 0x48, 0x85, 0xc9, //0x000017bf testq %rcx, %rcx + 0x0f, 0x8f, 0x98, 0xef, 0xff, 0xff, //0x000017c2 jg LBB0_61 + 0xe9, 0x5a, 0x1f, 0x00, 0x00, //0x000017c8 jmp LBB0_296 + //0x000017cd LBB0_297 + 0x49, 0x8b, 0x0b, //0x000017cd movq (%r11), %rcx + 0x49, 0x8b, 0x55, 0x08, //0x000017d0 movq $8(%r13), %rdx + 0x48, 0x8d, 0x42, 0xfd, //0x000017d4 leaq $-3(%rdx), %rax + 0x48, 0x39, 0xc1, //0x000017d8 cmpq %rax, %rcx + 0x0f, 0x87, 0x51, 0x16, 0x00, 0x00, //0x000017db ja LBB0_388 + 0x4c, 0x8d, 0x79, 0xff, //0x000017e1 leaq $-1(%rcx), %r15 + 0x41, 0x81, 0x7c, 0x08, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x000017e5 cmpl $1819047278, $-1(%r8,%rcx) + 0x0f, 0x84, 0x51, 0x00, 0x00, 0x00, //0x000017ee je LBB0_307 + 0xe9, 0x99, 0x1e, 0x00, 0x00, //0x000017f4 jmp LBB0_299 + //0x000017f9 LBB0_303 + 0x49, 0x8b, 0x09, //0x000017f9 movq (%r9), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000017fc cmpq $4095, %rcx + 0x0f, 0x8f, 0x05, 0x16, 0x00, 0x00, //0x00001803 jg LBB0_662 + 0x48, 0x8d, 0x41, 0x01, //0x00001809 leaq $1(%rcx), %rax + 0x49, 0x89, 0x01, //0x0000180d movq %rax, (%r9) + 0x49, 0xc7, 0x44, 0xc9, 0x08, 0x06, 0x00, 0x00, 0x00, //0x00001810 movq $6, $8(%r9,%rcx,8) + 0xe9, 0x42, 0xef, 0xff, 0xff, //0x00001819 jmp LBB0_61 + //0x0000181e LBB0_305 + 0x49, 0x8b, 0x0b, //0x0000181e movq (%r11), %rcx + 0x49, 0x8b, 0x55, 0x08, //0x00001821 movq $8(%r13), %rdx + 0x48, 0x8d, 0x42, 0xfd, //0x00001825 leaq $-3(%rdx), %rax + 0x48, 0x39, 0xc1, //0x00001829 cmpq %rax, %rcx + 0x0f, 0x87, 0x00, 0x16, 0x00, 0x00, //0x0000182c ja LBB0_388 + 0x4c, 0x8d, 0x79, 0xff, //0x00001832 leaq $-1(%rcx), %r15 + 0x41, 0x81, 0x7c, 0x08, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001836 cmpl $1702195828, $-1(%r8,%rcx) + 0x0f, 0x85, 0x94, 0x1e, 0x00, 0x00, //0x0000183f jne LBB0_668 + //0x00001845 LBB0_307 + 0x48, 0x8d, 0x41, 0x03, //0x00001845 leaq $3(%rcx), %rax + 0x49, 0x89, 0x03, //0x00001849 movq %rax, (%r11) + 0x48, 0x85, 0xc9, //0x0000184c testq %rcx, %rcx + 0x0f, 0x8f, 0x0b, 0xef, 0xff, 0xff, //0x0000184f jg LBB0_61 + 0xe9, 0xde, 0x1c, 0x00, 0x00, //0x00001855 jmp LBB0_646 + //0x0000185a LBB0_308 + 0x49, 0x8d, 0x42, 0xff, //0x0000185a leaq $-1(%r10), %rax + 0x48, 0x39, 0xc2, //0x0000185e cmpq %rax, %rdx + 0x49, 0xf7, 0xd2, //0x00001861 notq %r10 + 0x4d, 0x0f, 0x45, 0xd0, //0x00001864 cmovneq %r8, %r10 + 0x84, 0xc9, //0x00001868 testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xc2, //0x0000186a cmovneq %r10, %r8 + 0xe9, 0x9b, 0x07, 0x00, 0x00, //0x0000186e jmp LBB0_413 + //0x00001873 LBB0_309 + 0x4c, 0x29, 0xc3, //0x00001873 subq %r8, %rbx + 0x0f, 0x84, 0xee, 0x1e, 0x00, 0x00, //0x00001876 je LBB0_680 + 0x48, 0x83, 0xfb, 0x40, //0x0000187c cmpq $64, %rbx + 0x0f, 0x82, 0x21, 0x0b, 0x00, 0x00, //0x00001880 jb LBB0_445 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00001886 movq $-1, (%rsp) + 0x4d, 0x89, 0xc7, //0x0000188e movq %r8, %r15 + 0x45, 0x31, 0xdb, //0x00001891 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001894 .p2align 4, 0x90 + //0x000018a0 LBB0_312 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000018a0 movq $16(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x38, //0x000018a5 vmovdqu (%rax,%r15), %ymm0 + 0xc4, 0xa1, 0x7e, 0x6f, 0x4c, 0x38, 0x20, //0x000018ab vmovdqu $32(%rax,%r15), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000018b2 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x000018b6 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x000018ba vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xc2, //0x000018be vpmovmskb %ymm2, %eax + 0xc5, 0xfd, 0x74, 0xd7, //0x000018c2 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000018c6 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x000018ca vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x000018ce vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x000018d2 vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000018d6 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x000018db vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x000018df vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe0, 0x20, //0x000018e3 shlq $32, %rax + 0x48, 0x09, 0xc7, //0x000018e7 orq %rax, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x000018ea shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x000018ee shlq $32, %rsi + 0x48, 0x09, 0xca, //0x000018f2 orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000018f5 jne LBB0_323 + 0x4d, 0x85, 0xdb, //0x000018fb testq %r11, %r11 + 0x0f, 0x85, 0x56, 0x00, 0x00, 0x00, //0x000018fe jne LBB0_325 + 0x45, 0x31, 0xdb, //0x00001904 xorl %r11d, %r11d + //0x00001907 LBB0_315 + 0xc5, 0xbd, 0x64, 0xc8, //0x00001907 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000190b vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00001910 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00001914 vpmovmskb %ymm0, %eax + 0x48, 0x09, 0xc6, //0x00001918 orq %rax, %rsi + 0x48, 0x85, 0xff, //0x0000191b testq %rdi, %rdi + 0x0f, 0x85, 0x89, 0x00, 0x00, 0x00, //0x0000191e jne LBB0_326 + 0x48, 0x85, 0xf6, //0x00001924 testq %rsi, %rsi + 0x0f, 0x85, 0x6a, 0x1c, 0x00, 0x00, //0x00001927 jne LBB0_651 + 0x48, 0x83, 0xc3, 0xc0, //0x0000192d addq $-64, %rbx + 0x49, 0x83, 0xc7, 0x40, //0x00001931 addq $64, %r15 + 0x48, 0x83, 0xfb, 0x3f, //0x00001935 cmpq $63, %rbx + 0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, //0x00001939 ja LBB0_312 + 0xe9, 0x57, 0x08, 0x00, 0x00, //0x0000193f jmp LBB0_318 + //0x00001944 LBB0_323 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001944 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00001949 jne LBB0_325 + 0x48, 0x0f, 0xbc, 0xc2, //0x0000194f bsfq %rdx, %rax + 0x4c, 0x01, 0xf8, //0x00001953 addq %r15, %rax + 0x48, 0x89, 0x04, 0x24, //0x00001956 movq %rax, (%rsp) + //0x0000195a LBB0_325 + 0x4c, 0x89, 0xd8, //0x0000195a movq %r11, %rax + 0x48, 0xf7, 0xd0, //0x0000195d notq %rax + 0x48, 0x21, 0xd0, //0x00001960 andq %rdx, %rax + 0x4c, 0x8d, 0x14, 0x00, //0x00001963 leaq (%rax,%rax), %r10 + 0x4d, 0x09, 0xda, //0x00001967 orq %r11, %r10 + 0x4c, 0x89, 0xd1, //0x0000196a movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000196d notq %rcx + 0x48, 0x21, 0xd1, //0x00001970 andq %rdx, %rcx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001973 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd1, //0x0000197d andq %rdx, %rcx + 0x45, 0x31, 0xdb, //0x00001980 xorl %r11d, %r11d + 0x48, 0x01, 0xc1, //0x00001983 addq %rax, %rcx + 0x41, 0x0f, 0x92, 0xc3, //0x00001986 setb %r11b + 0x48, 0x01, 0xc9, //0x0000198a addq %rcx, %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000198d movabsq $6148914691236517205, %rax + 0x48, 0x31, 0xc1, //0x00001997 xorq %rax, %rcx + 0x4c, 0x21, 0xd1, //0x0000199a andq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000199d notq %rcx + 0x48, 0x21, 0xcf, //0x000019a0 andq %rcx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000019a3 movq $24(%rsp), %r10 + 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x000019a8 jmp LBB0_315 + //0x000019ad LBB0_326 + 0x48, 0x0f, 0xbc, 0xcf, //0x000019ad bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x000019b1 testq %rsi, %rsi + 0x0f, 0x84, 0xa2, 0x03, 0x00, 0x00, //0x000019b4 je LBB0_382 + 0x48, 0x0f, 0xbc, 0xd6, //0x000019ba bsfq %rsi, %rdx + 0xe9, 0x9e, 0x03, 0x00, 0x00, //0x000019be jmp LBB0_383 + //0x000019c3 LBB0_328 + 0x48, 0x8b, 0x44, 0x24, 0x30, //0x000019c3 movq $48(%rsp), %rax + 0x8a, 0x48, 0x01, //0x000019c8 movb $1(%rax), %cl + 0x80, 0xc1, 0xd2, //0x000019cb addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000019ce cmpb $55, %cl + 0x0f, 0x87, 0x90, 0xfd, 0xff, 0xff, //0x000019d1 ja LBB0_290 + 0x0f, 0xb6, 0xc1, //0x000019d7 movzbl %cl, %eax + 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000019da movabsq $36028797027352577, %rcx + 0x48, 0x0f, 0xa3, 0xc1, //0x000019e4 btq %rax, %rcx + 0x4c, 0x89, 0xf9, //0x000019e8 movq %r15, %rcx + 0x0f, 0x83, 0x86, 0x08, 0x00, 0x00, //0x000019eb jae LBB0_431 + //0x000019f1 LBB0_330 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000019f1 movq $-1, %r8 + 0x49, 0x83, 0xfa, 0x20, //0x000019f8 cmpq $32, %r10 + 0x0f, 0x82, 0x5a, 0x09, 0x00, 0x00, //0x000019fc jb LBB0_443 + 0x45, 0x31, 0xe4, //0x00001a02 xorl %r12d, %r12d + 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00001a05 movq $-1, %r11 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00001a0c movq $-1, (%rsp) + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001a14 .p2align 4, 0x90 + //0x00001a20 LBB0_332 + 0x48, 0x8b, 0x44, 0x24, 0x30, //0x00001a20 movq $48(%rsp), %rax + 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x20, //0x00001a25 vmovdqu (%rax,%r12), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00001a2b vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0xa5, 0x64, 0xd0, //0x00001a30 vpcmpgtb %ymm0, %ymm11, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00001a34 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x9d, 0x74, 0xd0, //0x00001a38 vpcmpeqb %ymm0, %ymm12, %ymm2 + 0xc5, 0x95, 0x74, 0xd8, //0x00001a3c vpcmpeqb %ymm0, %ymm13, %ymm3 + 0xc5, 0xe5, 0xeb, 0xd2, //0x00001a40 vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00001a44 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0x85, 0x74, 0xc0, //0x00001a48 vpcmpeqb %ymm0, %ymm15, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x00001a4c vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x00001a50 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xd3, //0x00001a54 vpmovmskb %ymm3, %edx + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001a58 vpmovmskb %ymm2, %esi + 0xc5, 0xf5, 0xeb, 0xc0, //0x00001a5c vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x00001a60 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x00001a64 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00001a68 vpmovmskb %ymm0, %eax + 0x48, 0xf7, 0xd0, //0x00001a6c notq %rax + 0x48, 0x0f, 0xbc, 0xc8, //0x00001a6f bsfq %rax, %rcx + 0x83, 0xf9, 0x20, //0x00001a73 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001a76 je LBB0_334 + 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00001a7c movl $-1, %eax + 0xd3, 0xe0, //0x00001a81 shll %cl, %eax + 0xf7, 0xd0, //0x00001a83 notl %eax + 0x21, 0xc7, //0x00001a85 andl %eax, %edi + 0x21, 0xc2, //0x00001a87 andl %eax, %edx + 0x21, 0xf0, //0x00001a89 andl %esi, %eax + 0x89, 0xc6, //0x00001a8b movl %eax, %esi + //0x00001a8d LBB0_334 + 0x8d, 0x5f, 0xff, //0x00001a8d leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x00001a90 andl %edi, %ebx + 0x0f, 0x85, 0x67, 0x06, 0x00, 0x00, //0x00001a92 jne LBB0_418 + 0x8d, 0x5a, 0xff, //0x00001a98 leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00001a9b andl %edx, %ebx + 0x0f, 0x85, 0x5c, 0x06, 0x00, 0x00, //0x00001a9d jne LBB0_418 + 0x8d, 0x5e, 0xff, //0x00001aa3 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x00001aa6 andl %esi, %ebx + 0x0f, 0x85, 0x51, 0x06, 0x00, 0x00, //0x00001aa8 jne LBB0_418 + 0x85, 0xff, //0x00001aae testl %edi, %edi + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00001ab0 je LBB0_340 + 0x0f, 0xbc, 0xff, //0x00001ab6 bsfl %edi, %edi + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001ab9 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x9a, 0x07, 0x00, 0x00, //0x00001abe jne LBB0_426 + 0x4c, 0x01, 0xe7, //0x00001ac4 addq %r12, %rdi + 0x48, 0x89, 0x3c, 0x24, //0x00001ac7 movq %rdi, (%rsp) + //0x00001acb LBB0_340 + 0x85, 0xd2, //0x00001acb testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001acd je LBB0_343 + 0x0f, 0xbc, 0xd2, //0x00001ad3 bsfl %edx, %edx + 0x49, 0x83, 0xfb, 0xff, //0x00001ad6 cmpq $-1, %r11 + 0x0f, 0x85, 0x4c, 0x07, 0x00, 0x00, //0x00001ada jne LBB0_424 + 0x4c, 0x01, 0xe2, //0x00001ae0 addq %r12, %rdx + 0x49, 0x89, 0xd3, //0x00001ae3 movq %rdx, %r11 + //0x00001ae6 LBB0_343 + 0x85, 0xf6, //0x00001ae6 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001ae8 je LBB0_346 + 0x0f, 0xbc, 0xd6, //0x00001aee bsfl %esi, %edx + 0x49, 0x83, 0xf8, 0xff, //0x00001af1 cmpq $-1, %r8 + 0x0f, 0x85, 0x31, 0x07, 0x00, 0x00, //0x00001af5 jne LBB0_424 + 0x4c, 0x01, 0xe2, //0x00001afb addq %r12, %rdx + 0x49, 0x89, 0xd0, //0x00001afe movq %rdx, %r8 + //0x00001b01 LBB0_346 + 0x83, 0xf9, 0x20, //0x00001b01 cmpl $32, %ecx + 0x0f, 0x85, 0x0f, 0x02, 0x00, 0x00, //0x00001b04 jne LBB0_380 + 0x49, 0x83, 0xc2, 0xe0, //0x00001b0a addq $-32, %r10 + 0x49, 0x83, 0xc4, 0x20, //0x00001b0e addq $32, %r12 + 0x49, 0x83, 0xfa, 0x1f, //0x00001b12 cmpq $31, %r10 + 0x0f, 0x87, 0x04, 0xff, 0xff, 0xff, //0x00001b16 ja LBB0_332 + 0xc5, 0xf8, 0x77, //0x00001b1c vzeroupper + 0x4c, 0x03, 0x64, 0x24, 0x30, //0x00001b1f addq $48(%rsp), %r12 + 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00001b24 movq %r13, $56(%rsp) + 0x49, 0x83, 0xfa, 0x10, //0x00001b29 cmpq $16, %r10 + 0x0f, 0x82, 0x3a, 0x01, 0x00, 0x00, //0x00001b2d jb LBB0_367 + //0x00001b33 LBB0_349 + 0x4c, 0x89, 0xe3, //0x00001b33 movq %r12, %rbx + 0x48, 0x2b, 0x5c, 0x24, 0x30, //0x00001b36 subq $48(%rsp), %rbx + 0x45, 0x31, 0xed, //0x00001b3b xorl %r13d, %r13d + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00001b3e movq %r9, $32(%rsp) + //0x00001b43 LBB0_350 + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x2c, //0x00001b43 vmovdqu (%r12,%r13), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0xef, 0xe6, 0xff, 0xff, //0x00001b49 vpcmpgtb $-6417(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0xf7, 0xe6, 0xff, 0xff, //0x00001b51 vmovdqu $-6409(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x00001b59 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00001b5d vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0xf7, 0xe6, 0xff, 0xff, //0x00001b61 vpcmpeqb $-6409(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xff, 0xe6, 0xff, 0xff, //0x00001b69 vpcmpeqb $-6401(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00001b71 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x93, 0xe6, 0xff, 0xff, //0x00001b75 vpand $-6509(%rip), %xmm0, %xmm3 /* LCPI0_5+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xfb, 0xe6, 0xff, 0xff, //0x00001b7d vpcmpeqb $-6405(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0x03, 0xe7, 0xff, 0xff, //0x00001b85 vpcmpeqb $-6397(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00001b8d vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00001b91 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00001b95 vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc8, //0x00001b99 vpmovmskb %xmm0, %r9d + 0xc5, 0xf9, 0xd7, 0xfb, //0x00001b9d vpmovmskb %xmm3, %edi + 0xc5, 0xf9, 0xd7, 0xd2, //0x00001ba1 vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc1, //0x00001ba5 vpmovmskb %xmm1, %eax + 0xf7, 0xd0, //0x00001ba9 notl %eax + 0x0f, 0xbc, 0xc8, //0x00001bab bsfl %eax, %ecx + 0x83, 0xf9, 0x10, //0x00001bae cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001bb1 je LBB0_352 + 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00001bb7 movl $-1, %eax + 0xd3, 0xe0, //0x00001bbc shll %cl, %eax + 0xf7, 0xd0, //0x00001bbe notl %eax + 0x41, 0x21, 0xc1, //0x00001bc0 andl %eax, %r9d + 0x21, 0xc7, //0x00001bc3 andl %eax, %edi + 0x21, 0xd0, //0x00001bc5 andl %edx, %eax + 0x89, 0xc2, //0x00001bc7 movl %eax, %edx + //0x00001bc9 LBB0_352 + 0x41, 0x8d, 0x71, 0xff, //0x00001bc9 leal $-1(%r9), %esi + 0x44, 0x21, 0xce, //0x00001bcd andl %r9d, %esi + 0x0f, 0x85, 0x0f, 0x06, 0x00, 0x00, //0x00001bd0 jne LBB0_421 + 0x8d, 0x77, 0xff, //0x00001bd6 leal $-1(%rdi), %esi + 0x21, 0xfe, //0x00001bd9 andl %edi, %esi + 0x0f, 0x85, 0x04, 0x06, 0x00, 0x00, //0x00001bdb jne LBB0_421 + 0x8d, 0x72, 0xff, //0x00001be1 leal $-1(%rdx), %esi + 0x21, 0xd6, //0x00001be4 andl %edx, %esi + 0x0f, 0x85, 0xf9, 0x05, 0x00, 0x00, //0x00001be6 jne LBB0_421 + 0x45, 0x85, 0xc9, //0x00001bec testl %r9d, %r9d + 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00001bef je LBB0_358 + 0x41, 0x0f, 0xbc, 0xf1, //0x00001bf5 bsfl %r9d, %esi + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001bf9 cmpq $-1, (%rsp) + 0x0f, 0x85, 0xd7, 0x06, 0x00, 0x00, //0x00001bfe jne LBB0_436 + 0x48, 0x01, 0xde, //0x00001c04 addq %rbx, %rsi + 0x4c, 0x01, 0xee, //0x00001c07 addq %r13, %rsi + 0x48, 0x89, 0x34, 0x24, //0x00001c0a movq %rsi, (%rsp) + //0x00001c0e LBB0_358 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00001c0e movq $32(%rsp), %r9 + 0x85, 0xff, //0x00001c13 testl %edi, %edi + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001c15 je LBB0_361 + 0x0f, 0xbc, 0xf7, //0x00001c1b bsfl %edi, %esi + 0x49, 0x83, 0xfb, 0xff, //0x00001c1e cmpq $-1, %r11 + 0x0f, 0x85, 0xba, 0x06, 0x00, 0x00, //0x00001c22 jne LBB0_437 + 0x48, 0x01, 0xde, //0x00001c28 addq %rbx, %rsi + 0x4c, 0x01, 0xee, //0x00001c2b addq %r13, %rsi + 0x49, 0x89, 0xf3, //0x00001c2e movq %rsi, %r11 + //0x00001c31 LBB0_361 + 0x85, 0xd2, //0x00001c31 testl %edx, %edx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001c33 je LBB0_364 + 0x0f, 0xbc, 0xd2, //0x00001c39 bsfl %edx, %edx + 0x49, 0x83, 0xf8, 0xff, //0x00001c3c cmpq $-1, %r8 + 0x0f, 0x85, 0xa3, 0x06, 0x00, 0x00, //0x00001c40 jne LBB0_438 + 0x48, 0x01, 0xda, //0x00001c46 addq %rbx, %rdx + 0x4c, 0x01, 0xea, //0x00001c49 addq %r13, %rdx + 0x49, 0x89, 0xd0, //0x00001c4c movq %rdx, %r8 + //0x00001c4f LBB0_364 + 0x83, 0xf9, 0x10, //0x00001c4f cmpl $16, %ecx + 0x0f, 0x85, 0x34, 0x01, 0x00, 0x00, //0x00001c52 jne LBB0_390 + 0x49, 0x83, 0xc2, 0xf0, //0x00001c58 addq $-16, %r10 + 0x49, 0x83, 0xc5, 0x10, //0x00001c5c addq $16, %r13 + 0x49, 0x83, 0xfa, 0x0f, //0x00001c60 cmpq $15, %r10 + 0x0f, 0x87, 0xd9, 0xfe, 0xff, 0xff, //0x00001c64 ja LBB0_350 + 0x4d, 0x01, 0xec, //0x00001c6a addq %r13, %r12 + //0x00001c6d LBB0_367 + 0x4d, 0x85, 0xd2, //0x00001c6d testq %r10, %r10 + 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00001c70 movq $56(%rsp), %r13 + 0x0f, 0x84, 0x3a, 0x01, 0x00, 0x00, //0x00001c75 je LBB0_392 + 0x4b, 0x8d, 0x14, 0x14, //0x00001c7b leaq (%r12,%r10), %rdx + 0x4c, 0x89, 0xe6, //0x00001c7f movq %r12, %rsi + 0x48, 0x2b, 0x74, 0x24, 0x30, //0x00001c82 subq $48(%rsp), %rsi + 0x31, 0xc9, //0x00001c87 xorl %ecx, %ecx + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001c89 jmp LBB0_372 + //0x00001c8e LBB0_369 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00001c8e cmpq $-1, (%rsp) + 0x0f, 0x85, 0x7a, 0x05, 0x00, 0x00, //0x00001c93 jne LBB0_423 + 0x48, 0x8d, 0x04, 0x0e, //0x00001c99 leaq (%rsi,%rcx), %rax + 0x48, 0x89, 0x04, 0x24, //0x00001c9d movq %rax, (%rsp) + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001ca1 .p2align 4, 0x90 + //0x00001cb0 LBB0_371 + 0x48, 0x83, 0xc1, 0x01, //0x00001cb0 addq $1, %rcx + 0x49, 0x39, 0xca, //0x00001cb4 cmpq %rcx, %r10 + 0x0f, 0x84, 0x26, 0x04, 0x00, 0x00, //0x00001cb7 je LBB0_417 + //0x00001cbd LBB0_372 + 0x41, 0x0f, 0xbe, 0x3c, 0x0c, //0x00001cbd movsbl (%r12,%rcx), %edi + 0x8d, 0x47, 0xd0, //0x00001cc2 leal $-48(%rdi), %eax + 0x83, 0xf8, 0x0a, //0x00001cc5 cmpl $10, %eax + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00001cc8 jb LBB0_371 + 0x8d, 0x5f, 0xd5, //0x00001cce leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x00001cd1 cmpl $26, %ebx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00001cd4 ja LBB0_377 + 0x48, 0x8d, 0x3d, 0x63, 0x1f, 0x00, 0x00, //0x00001cda leaq $8035(%rip), %rdi /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x04, 0x9f, //0x00001ce1 movslq (%rdi,%rbx,4), %rax + 0x48, 0x01, 0xf8, //0x00001ce5 addq %rdi, %rax + 0xff, 0xe0, //0x00001ce8 jmpq *%rax + //0x00001cea LBB0_375 + 0x49, 0x83, 0xf8, 0xff, //0x00001cea cmpq $-1, %r8 + 0x0f, 0x85, 0x1f, 0x05, 0x00, 0x00, //0x00001cee jne LBB0_423 + 0x4c, 0x8d, 0x04, 0x0e, //0x00001cf4 leaq (%rsi,%rcx), %r8 + 0xe9, 0xb3, 0xff, 0xff, 0xff, //0x00001cf8 jmp LBB0_371 + //0x00001cfd LBB0_377 + 0x83, 0xff, 0x65, //0x00001cfd cmpl $101, %edi + 0x0f, 0x85, 0xac, 0x00, 0x00, 0x00, //0x00001d00 jne LBB0_391 + //0x00001d06 LBB0_378 + 0x49, 0x83, 0xfb, 0xff, //0x00001d06 cmpq $-1, %r11 + 0x0f, 0x85, 0x03, 0x05, 0x00, 0x00, //0x00001d0a jne LBB0_423 + 0x4c, 0x8d, 0x1c, 0x0e, //0x00001d10 leaq (%rsi,%rcx), %r11 + 0xe9, 0x97, 0xff, 0xff, 0xff, //0x00001d14 jmp LBB0_371 + //0x00001d19 LBB0_380 + 0x4c, 0x01, 0xe1, //0x00001d19 addq %r12, %rcx + 0x48, 0x03, 0x4c, 0x24, 0x30, //0x00001d1c addq $48(%rsp), %rcx + 0xc5, 0xf8, 0x77, //0x00001d21 vzeroupper + 0x49, 0x89, 0xcc, //0x00001d24 movq %rcx, %r12 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d27 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00001d2e movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x00001d32 testq %rdx, %rdx + 0x0f, 0x85, 0x8e, 0x00, 0x00, 0x00, //0x00001d35 jne LBB0_393 + 0xe9, 0xff, 0x19, 0x00, 0x00, //0x00001d3b jmp LBB0_674 + //0x00001d40 LBB0_381 + 0x49, 0x89, 0xf8, //0x00001d40 movq %rdi, %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d43 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00001d4a movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x00001d4e testq %rdx, %rdx + 0x0f, 0x85, 0x61, 0xf7, 0xff, 0xff, //0x00001d51 jne LBB0_252 + 0xe9, 0xc3, 0x17, 0x00, 0x00, //0x00001d57 jmp LBB0_644 + //0x00001d5c LBB0_382 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001d5c movl $64, %edx + //0x00001d61 LBB0_383 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001d61 movq $8(%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001d66 cmpq %rcx, %rdx + 0x0f, 0x82, 0x16, 0x1a, 0x00, 0x00, //0x00001d69 jb LBB0_223 + 0x49, 0x01, 0xcf, //0x00001d6f addq %rcx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00001d72 addq $1, %r15 + //0x00001d76 LBB0_385 + 0x4d, 0x85, 0xff, //0x00001d76 testq %r15, %r15 + 0x0f, 0x89, 0xeb, 0xf6, 0xff, 0xff, //0x00001d79 jns LBB0_247 + 0xe9, 0x96, 0x10, 0x00, 0x00, //0x00001d7f jmp LBB0_386 + //0x00001d84 LBB0_389 + 0x0f, 0xbc, 0xc3, //0x00001d84 bsfl %ebx, %eax + 0xe9, 0x9a, 0x01, 0x00, 0x00, //0x00001d87 jmp LBB0_409 + //0x00001d8c LBB0_390 + 0x89, 0xc8, //0x00001d8c movl %ecx, %eax + 0x49, 0x01, 0xc4, //0x00001d8e addq %rax, %r12 + 0x4d, 0x01, 0xec, //0x00001d91 addq %r13, %r12 + 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00001d94 movq $56(%rsp), %r13 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d99 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00001da0 movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x00001da4 testq %rdx, %rdx + 0x0f, 0x85, 0x1c, 0x00, 0x00, 0x00, //0x00001da7 jne LBB0_393 + 0xe9, 0x8d, 0x19, 0x00, 0x00, //0x00001dad jmp LBB0_674 + //0x00001db2 LBB0_391 + 0x49, 0x01, 0xcc, //0x00001db2 addq %rcx, %r12 + //0x00001db5 LBB0_392 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001db5 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00001dbc movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x00001dc0 testq %rdx, %rdx + 0x0f, 0x84, 0x76, 0x19, 0x00, 0x00, //0x00001dc3 je LBB0_674 + //0x00001dc9 LBB0_393 + 0x4d, 0x85, 0xc0, //0x00001dc9 testq %r8, %r8 + 0x0f, 0x84, 0x6d, 0x19, 0x00, 0x00, //0x00001dcc je LBB0_674 + 0x4d, 0x85, 0xdb, //0x00001dd2 testq %r11, %r11 + 0x0f, 0x84, 0x64, 0x19, 0x00, 0x00, //0x00001dd5 je LBB0_674 + 0x4c, 0x2b, 0x64, 0x24, 0x30, //0x00001ddb subq $48(%rsp), %r12 + 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00001de0 leaq $-1(%r12), %rcx + 0x48, 0x39, 0xca, //0x00001de5 cmpq %rcx, %rdx + 0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, //0x00001de8 je LBB0_401 + 0x49, 0x39, 0xc8, //0x00001dee cmpq %rcx, %r8 + 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00001df1 je LBB0_401 + 0x49, 0x39, 0xcb, //0x00001df7 cmpq %rcx, %r11 + 0x0f, 0x84, 0x7e, 0x00, 0x00, 0x00, //0x00001dfa je LBB0_401 + 0x4d, 0x85, 0xc0, //0x00001e00 testq %r8, %r8 + 0xc5, 0xfe, 0x6f, 0x2d, 0xf5, 0xe1, 0xff, 0xff, //0x00001e03 vmovdqu $-7691(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x6d, 0xe2, 0xff, 0xff, //0x00001e0b vmovdqu $-7571(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x85, 0xe2, 0xff, 0xff, //0x00001e13 vmovdqu $-7547(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xfd, 0xe2, 0xff, 0xff, //0x00001e1b vmovdqu $-7427(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001e23 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x10, 0xe3, 0xff, 0xff, //0x00001e28 vmovdqu $-7408(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x28, 0xe3, 0xff, 0xff, //0x00001e30 vmovdqu $-7384(%rip), %ymm11 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x40, 0xe3, 0xff, 0xff, //0x00001e38 vmovdqu $-7360(%rip), %ymm12 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x58, 0xe3, 0xff, 0xff, //0x00001e40 vmovdqu $-7336(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xf0, 0xe1, 0xff, 0xff, //0x00001e48 vmovdqu $-7696(%rip), %ymm14 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x68, 0xe3, 0xff, 0xff, //0x00001e50 vmovdqu $-7320(%rip), %ymm15 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x80, 0xe3, 0xff, 0xff, //0x00001e58 vmovdqu $-7296(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x8e, 0x82, 0x00, 0x00, 0x00, //0x00001e60 jle LBB0_404 + 0x49, 0x8d, 0x40, 0xff, //0x00001e66 leaq $-1(%r8), %rax + 0x49, 0x39, 0xc3, //0x00001e6a cmpq %rax, %r11 + 0x0f, 0x84, 0x75, 0x00, 0x00, 0x00, //0x00001e6d je LBB0_404 + 0x49, 0xf7, 0xd0, //0x00001e73 notq %r8 + 0x4d, 0x89, 0xc4, //0x00001e76 movq %r8, %r12 + 0xe9, 0xe8, 0x03, 0x00, 0x00, //0x00001e79 jmp LBB0_428 + //0x00001e7e LBB0_401 + 0x49, 0xf7, 0xdc, //0x00001e7e negq %r12 + //0x00001e81 LBB0_402 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00001e81 movq $8(%rsp), %r11 + //0x00001e86 LBB0_403 + 0xc5, 0xfe, 0x6f, 0x2d, 0x72, 0xe1, 0xff, 0xff, //0x00001e86 vmovdqu $-7822(%rip), %ymm5 /* LCPI0_0+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xea, 0xe1, 0xff, 0xff, //0x00001e8e vmovdqu $-7702(%rip), %ymm6 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x02, 0xe2, 0xff, 0xff, //0x00001e96 vmovdqu $-7678(%rip), %ymm7 /* LCPI0_8+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x7a, 0xe2, 0xff, 0xff, //0x00001e9e vmovdqu $-7558(%rip), %ymm8 /* LCPI0_13+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001ea6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x8d, 0xe2, 0xff, 0xff, //0x00001eab vmovdqu $-7539(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xa5, 0xe2, 0xff, 0xff, //0x00001eb3 vmovdqu $-7515(%rip), %ymm11 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xbd, 0xe2, 0xff, 0xff, //0x00001ebb vmovdqu $-7491(%rip), %ymm12 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xd5, 0xe2, 0xff, 0xff, //0x00001ec3 vmovdqu $-7467(%rip), %ymm13 /* LCPI0_17+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x6d, 0xe1, 0xff, 0xff, //0x00001ecb vmovdqu $-7827(%rip), %ymm14 /* LCPI0_2+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xe5, 0xe2, 0xff, 0xff, //0x00001ed3 vmovdqu $-7451(%rip), %ymm15 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xe2, 0xff, 0xff, //0x00001edb vmovdqu $-7427(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xe9, 0x83, 0x03, 0x00, 0x00, //0x00001ee3 jmp LBB0_429 + //0x00001ee8 LBB0_404 + 0x48, 0x89, 0xd0, //0x00001ee8 movq %rdx, %rax + 0x4c, 0x09, 0xd8, //0x00001eeb orq %r11, %rax + 0x0f, 0x99, 0xc1, //0x00001eee setns %cl + 0x0f, 0x88, 0xdf, 0x00, 0x00, 0x00, //0x00001ef1 js LBB0_410 + 0x4c, 0x39, 0xda, //0x00001ef7 cmpq %r11, %rdx + 0x0f, 0x8c, 0xd6, 0x00, 0x00, 0x00, //0x00001efa jl LBB0_410 + 0x48, 0xf7, 0xd2, //0x00001f00 notq %rdx + 0x49, 0x89, 0xd4, //0x00001f03 movq %rdx, %r12 + 0xe9, 0x5b, 0x03, 0x00, 0x00, //0x00001f06 jmp LBB0_428 + //0x00001f0b LBB0_407 + 0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00001f0b movq $16(%rsp), %r8 + 0x4d, 0x29, 0xc6, //0x00001f10 subq %r8, %r14 + 0x49, 0x01, 0xf6, //0x00001f13 addq %rsi, %r14 + 0x49, 0x39, 0xfe, //0x00001f16 cmpq %rdi, %r14 + 0x0f, 0x82, 0x23, 0xea, 0xff, 0xff, //0x00001f19 jb LBB0_93 + 0xe9, 0xd5, 0x0e, 0x00, 0x00, //0x00001f1f jmp LBB0_573 + //0x00001f24 LBB0_408 + 0x89, 0xd0, //0x00001f24 movl %edx, %eax + //0x00001f26 LBB0_409 + 0x49, 0xf7, 0xd0, //0x00001f26 notq %r8 + 0x49, 0x29, 0xc0, //0x00001f29 subq %rax, %r8 + 0xe9, 0xdd, 0x00, 0x00, 0x00, //0x00001f2c jmp LBB0_413 + //0x00001f31 LBB0_111 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00001f31 addq $16(%rsp), %r15 + 0x48, 0x83, 0xfb, 0x20, //0x00001f36 cmpq $32, %rbx + 0x0f, 0x82, 0xf5, 0x04, 0x00, 0x00, //0x00001f3a jb LBB0_450 + //0x00001f40 LBB0_112 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00001f40 vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00001f45 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00001f49 vpmovmskb %ymm1, %esi + 0xc5, 0xfd, 0x74, 0xc7, //0x00001f4d vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001f51 vpmovmskb %ymm0, %edx + 0x85, 0xd2, //0x00001f55 testl %edx, %edx + 0x0f, 0x85, 0x6d, 0x04, 0x00, 0x00, //0x00001f57 jne LBB0_446 + 0x4d, 0x85, 0xd2, //0x00001f5d testq %r10, %r10 + 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x00001f60 jne LBB0_448 + 0x45, 0x31, 0xd2, //0x00001f66 xorl %r10d, %r10d + 0x48, 0x85, 0xf6, //0x00001f69 testq %rsi, %rsi + 0x0f, 0x84, 0xbb, 0x04, 0x00, 0x00, //0x00001f6c je LBB0_449 + //0x00001f72 LBB0_115 + 0x48, 0x0f, 0xbc, 0xc6, //0x00001f72 bsfq %rsi, %rax + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00001f76 subq $16(%rsp), %r15 + 0x49, 0x01, 0xc7, //0x00001f7b addq %rax, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00001f7e addq $1, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00001f82 movq $24(%rsp), %r10 + 0xe9, 0xd5, 0xf4, 0xff, 0xff, //0x00001f87 jmp LBB0_246 + //0x00001f8c LBB0_213 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00001f8c addq $16(%rsp), %r15 + 0x49, 0x83, 0xfd, 0x20, //0x00001f91 cmpq $32, %r13 + 0x0f, 0x82, 0x36, 0x03, 0x00, 0x00, //0x00001f95 jb LBB0_435 + //0x00001f9b LBB0_214 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00001f9b vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00001fa0 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00001fa4 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00001fa8 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00001fac vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00001fb0 testl %edx, %edx + 0x0f, 0x85, 0x63, 0x05, 0x00, 0x00, //0x00001fb2 jne LBB0_463 + 0x4d, 0x85, 0xdb, //0x00001fb8 testq %r11, %r11 + 0x0f, 0x85, 0x78, 0x05, 0x00, 0x00, //0x00001fbb jne LBB0_465 + 0x45, 0x31, 0xdb, //0x00001fc1 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00001fc4 testq %r10, %r10 + 0x0f, 0x84, 0xb2, 0x05, 0x00, 0x00, //0x00001fc7 je LBB0_466 + //0x00001fcd LBB0_217 + 0x49, 0x0f, 0xbc, 0xd2, //0x00001fcd bsfq %r10, %rdx + 0xe9, 0xae, 0x05, 0x00, 0x00, //0x00001fd1 jmp LBB0_467 + //0x00001fd6 LBB0_410 + 0x49, 0x8d, 0x43, 0xff, //0x00001fd6 leaq $-1(%r11), %rax + 0x48, 0x39, 0xc2, //0x00001fda cmpq %rax, %rdx + 0x49, 0xf7, 0xd3, //0x00001fdd notq %r11 + 0x4d, 0x0f, 0x45, 0xdc, //0x00001fe0 cmovneq %r12, %r11 + 0x84, 0xc9, //0x00001fe4 testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xe3, //0x00001fe6 cmovneq %r11, %r12 + 0xe9, 0x77, 0x02, 0x00, 0x00, //0x00001fea jmp LBB0_428 + //0x00001fef LBB0_411 + 0x0f, 0xbc, 0xc7, //0x00001fef bsfl %edi, %eax + 0xe9, 0x12, 0x01, 0x00, 0x00, //0x00001ff2 jmp LBB0_420 + //0x00001ff7 LBB0_412 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00001ff7 movq $16(%rsp), %rax + 0x48, 0x03, 0x44, 0x24, 0x28, //0x00001ffc addq $40(%rsp), %rax + 0x4c, 0x29, 0xc0, //0x00002001 subq %r8, %rax + 0x48, 0x29, 0xc8, //0x00002004 subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00002007 addq $-2, %rax + 0x49, 0x89, 0xc0, //0x0000200b movq %rax, %r8 + //0x0000200e LBB0_413 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000200e movq $8(%rsp), %r11 + 0x4d, 0x85, 0xc0, //0x00002013 testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002016 movq $24(%rsp), %r10 + 0x0f, 0x89, 0x1a, 0xe7, 0xff, 0xff, //0x0000201b jns LBB0_414 + 0xe9, 0xf6, 0x14, 0x00, 0x00, //0x00002021 jmp LBB0_643 + //0x00002026 LBB0_135 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00002026 addq $16(%rsp), %r15 + 0x48, 0x83, 0xfb, 0x20, //0x0000202b cmpq $32, %rbx + 0x0f, 0x82, 0xd9, 0x06, 0x00, 0x00, //0x0000202f jb LBB0_488 + //0x00002035 LBB0_136 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00002035 vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x0000203a vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x0000203e vpmovmskb %ymm1, %esi + 0xc5, 0xfd, 0x74, 0xc7, //0x00002042 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00002046 vpmovmskb %ymm0, %edx + 0x85, 0xd2, //0x0000204a testl %edx, %edx + 0x0f, 0x85, 0x51, 0x06, 0x00, 0x00, //0x0000204c jne LBB0_484 + 0x4d, 0x85, 0xd2, //0x00002052 testq %r10, %r10 + 0x0f, 0x85, 0x66, 0x06, 0x00, 0x00, //0x00002055 jne LBB0_486 + 0x45, 0x31, 0xd2, //0x0000205b xorl %r10d, %r10d + 0x48, 0x85, 0xf6, //0x0000205e testq %rsi, %rsi + 0x0f, 0x84, 0x9f, 0x06, 0x00, 0x00, //0x00002061 je LBB0_487 + //0x00002067 LBB0_139 + 0x48, 0x0f, 0xbc, 0xc6, //0x00002067 bsfq %rsi, %rax + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000206b subq $16(%rsp), %r15 + 0x49, 0x01, 0xc7, //0x00002070 addq %rax, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00002073 addq $1, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002077 movq $24(%rsp), %r10 + 0xe9, 0x26, 0xf5, 0xff, 0xff, //0x0000207c jmp LBB0_265 + //0x00002081 LBB0_234 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00002081 addq $16(%rsp), %r15 + 0x48, 0x83, 0xfb, 0x20, //0x00002086 cmpq $32, %rbx + 0x0f, 0x82, 0xc2, 0x02, 0x00, 0x00, //0x0000208a jb LBB0_442 + //0x00002090 LBB0_235 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x00002090 vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002095 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002099 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x0000209d vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x000020a1 vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x000020a5 testl %edx, %edx + 0x0f, 0x85, 0x47, 0x07, 0x00, 0x00, //0x000020a7 jne LBB0_501 + 0x4d, 0x85, 0xdb, //0x000020ad testq %r11, %r11 + 0x0f, 0x85, 0x5c, 0x07, 0x00, 0x00, //0x000020b0 jne LBB0_503 + 0x45, 0x31, 0xdb, //0x000020b6 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x000020b9 testq %r10, %r10 + 0x0f, 0x84, 0x96, 0x07, 0x00, 0x00, //0x000020bc je LBB0_504 + //0x000020c2 LBB0_238 + 0x49, 0x0f, 0xbc, 0xd2, //0x000020c2 bsfq %r10, %rdx + 0xe9, 0x92, 0x07, 0x00, 0x00, //0x000020c6 jmp LBB0_505 + //0x000020cb LBB0_415 + 0x89, 0xd0, //0x000020cb movl %edx, %eax + 0xe9, 0x37, 0x00, 0x00, 0x00, //0x000020cd jmp LBB0_420 + //0x000020d2 LBB0_416 + 0x4d, 0x01, 0xc6, //0x000020d2 addq %r8, %r14 + 0x48, 0x85, 0xd2, //0x000020d5 testq %rdx, %rdx + 0x0f, 0x85, 0xfa, 0xe7, 0xff, 0xff, //0x000020d8 jne LBB0_86 + 0xe9, 0x34, 0xe8, 0xff, 0xff, //0x000020de jmp LBB0_91 + //0x000020e3 LBB0_417 + 0x49, 0x89, 0xd4, //0x000020e3 movq %rdx, %r12 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000020e6 movq $-1, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x000020ed movq (%rsp), %rdx + 0x48, 0x85, 0xd2, //0x000020f1 testq %rdx, %rdx + 0x0f, 0x85, 0xcf, 0xfc, 0xff, 0xff, //0x000020f4 jne LBB0_393 + 0xe9, 0x40, 0x16, 0x00, 0x00, //0x000020fa jmp LBB0_674 + //0x000020ff LBB0_418 + 0x0f, 0xbc, 0xc3, //0x000020ff bsfl %ebx, %eax + 0xe9, 0x59, 0x01, 0x00, 0x00, //0x00002102 jmp LBB0_427 + //0x00002107 LBB0_419 + 0x89, 0xf8, //0x00002107 movl %edi, %eax + //0x00002109 LBB0_420 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002109 movq $16(%rsp), %rcx + 0x48, 0x03, 0x4c, 0x24, 0x28, //0x0000210e addq $40(%rsp), %rcx + 0x4c, 0x29, 0xc1, //0x00002113 subq %r8, %rcx + 0x48, 0x29, 0xc1, //0x00002116 subq %rax, %rcx + 0x4c, 0x29, 0xc9, //0x00002119 subq %r9, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x0000211c addq $-2, %rcx + 0x49, 0x89, 0xc8, //0x00002120 movq %rcx, %r8 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002123 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00002128 movq $32(%rsp), %r9 + 0x4d, 0x85, 0xc0, //0x0000212d testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002130 movq $24(%rsp), %r10 + 0x0f, 0x89, 0x00, 0xe6, 0xff, 0xff, //0x00002135 jns LBB0_414 + 0xe9, 0xdc, 0x13, 0x00, 0x00, //0x0000213b jmp LBB0_643 + //0x00002140 LBB0_277 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x00002140 addq $16(%rsp), %r15 + 0x48, 0x83, 0xfb, 0x20, //0x00002145 cmpq $32, %rbx + 0x0f, 0x82, 0xf6, 0x09, 0x00, 0x00, //0x00002149 jb LBB0_533 + //0x0000214f LBB0_278 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x0000214f vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002154 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00002158 vpmovmskb %ymm1, %esi + 0xc5, 0xfd, 0x74, 0xc7, //0x0000215c vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00002160 vpmovmskb %ymm0, %edx + 0x85, 0xd2, //0x00002164 testl %edx, %edx + 0x0f, 0x85, 0x6e, 0x09, 0x00, 0x00, //0x00002166 jne LBB0_529 + 0x4d, 0x85, 0xd2, //0x0000216c testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x09, 0x00, 0x00, //0x0000216f jne LBB0_531 + 0x45, 0x31, 0xd2, //0x00002175 xorl %r10d, %r10d + 0x48, 0x85, 0xf6, //0x00002178 testq %rsi, %rsi + 0x0f, 0x84, 0xbc, 0x09, 0x00, 0x00, //0x0000217b je LBB0_532 + //0x00002181 LBB0_281 + 0x48, 0x0f, 0xbc, 0xc6, //0x00002181 bsfq %rsi, %rax + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002185 subq $16(%rsp), %r15 + 0x49, 0x01, 0xc7, //0x0000218a addq %rax, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x0000218d addq $1, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002191 movq $24(%rsp), %r10 + 0xe9, 0xdb, 0xfb, 0xff, 0xff, //0x00002196 jmp LBB0_385 + //0x0000219b LBB0_318 + 0x4c, 0x03, 0x7c, 0x24, 0x10, //0x0000219b addq $16(%rsp), %r15 + 0x48, 0x83, 0xfb, 0x20, //0x000021a0 cmpq $32, %rbx + 0x0f, 0x82, 0x1c, 0x0b, 0x00, 0x00, //0x000021a4 jb LBB0_555 + //0x000021aa LBB0_319 + 0xc4, 0xc1, 0x7e, 0x6f, 0x07, //0x000021aa vmovdqu (%r15), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x000021af vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x000021b3 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x000021b7 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x000021bb vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x000021bf testl %edx, %edx + 0x0f, 0x85, 0x3b, 0x0a, 0x00, 0x00, //0x000021c1 jne LBB0_546 + 0x4d, 0x85, 0xdb, //0x000021c7 testq %r11, %r11 + 0x0f, 0x85, 0x50, 0x0a, 0x00, 0x00, //0x000021ca jne LBB0_548 + 0x45, 0x31, 0xdb, //0x000021d0 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x000021d3 testq %r10, %r10 + 0x0f, 0x84, 0x8a, 0x0a, 0x00, 0x00, //0x000021d6 je LBB0_549 + //0x000021dc LBB0_322 + 0x49, 0x0f, 0xbc, 0xd2, //0x000021dc bsfq %r10, %rdx + 0xe9, 0x86, 0x0a, 0x00, 0x00, //0x000021e0 jmp LBB0_550 + //0x000021e5 LBB0_421 + 0x0f, 0xbc, 0xc6, //0x000021e5 bsfl %esi, %eax + //0x000021e8 LBB0_422 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000021e8 movq $16(%rsp), %rcx + 0x4c, 0x01, 0xf9, //0x000021ed addq %r15, %rcx + 0x4c, 0x29, 0xe1, //0x000021f0 subq %r12, %rcx + 0x48, 0x29, 0xc1, //0x000021f3 subq %rax, %rcx + 0x49, 0xf7, 0xd5, //0x000021f6 notq %r13 + 0x49, 0x01, 0xcd, //0x000021f9 addq %rcx, %r13 + 0x4d, 0x89, 0xec, //0x000021fc movq %r13, %r12 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000021ff movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002204 movq $56(%rsp), %r13 + 0x4c, 0x8b, 0x4c, 0x24, 0x20, //0x00002209 movq $32(%rsp), %r9 + 0xe9, 0x73, 0xfc, 0xff, 0xff, //0x0000220e jmp LBB0_403 + //0x00002213 LBB0_423 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002213 movq $16(%rsp), %rax + 0x4c, 0x01, 0xf8, //0x00002218 addq %r15, %rax + 0x4c, 0x29, 0xe0, //0x0000221b subq %r12, %rax + 0x48, 0xf7, 0xd1, //0x0000221e notq %rcx + 0x48, 0x01, 0xc1, //0x00002221 addq %rax, %rcx + 0x49, 0x89, 0xcc, //0x00002224 movq %rcx, %r12 + 0xe9, 0x55, 0xfc, 0xff, 0xff, //0x00002227 jmp LBB0_402 + //0x0000222c LBB0_424 + 0x89, 0xd0, //0x0000222c movl %edx, %eax + 0xe9, 0x2d, 0x00, 0x00, 0x00, //0x0000222e jmp LBB0_427 + //0x00002233 LBB0_425 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002233 movq $-1, %r10 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000223a movq $-1, (%rsp) + 0x4d, 0x89, 0xe0, //0x00002242 movq %r12, %r8 + 0x4c, 0x89, 0x4c, 0x24, 0x20, //0x00002245 movq %r9, $32(%rsp) + 0x49, 0x83, 0xfd, 0x10, //0x0000224a cmpq $16, %r13 + 0x48, 0x8b, 0x44, 0x24, 0x28, //0x0000224e movq $40(%rsp), %rax + 0x0f, 0x83, 0x2d, 0xeb, 0xff, 0xff, //0x00002253 jae LBB0_164 + 0xe9, 0xa9, 0xec, 0xff, 0xff, //0x00002259 jmp LBB0_182 + //0x0000225e LBB0_426 + 0x89, 0xf8, //0x0000225e movl %edi, %eax + //0x00002260 LBB0_427 + 0x49, 0xf7, 0xd4, //0x00002260 notq %r12 + 0x49, 0x29, 0xc4, //0x00002263 subq %rax, %r12 + //0x00002266 LBB0_428 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002266 movq $8(%rsp), %r11 + //0x0000226b LBB0_429 + 0x4d, 0x85, 0xe4, //0x0000226b testq %r12, %r12 + 0x0f, 0x88, 0xc8, 0x14, 0x00, 0x00, //0x0000226e js LBB0_673 + 0x49, 0x8b, 0x0b, //0x00002274 movq (%r11), %rcx + //0x00002277 LBB0_431 + 0x4c, 0x01, 0xe1, //0x00002277 addq %r12, %rcx + 0x49, 0x89, 0x0b, //0x0000227a movq %rcx, (%r11) + 0x4d, 0x85, 0xff, //0x0000227d testq %r15, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002280 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0xd5, 0xe4, 0xff, 0xff, //0x00002285 jg LBB0_61 + 0xe9, 0xa3, 0x14, 0x00, 0x00, //0x0000228b jmp LBB0_432 + //0x00002290 LBB0_433 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002290 movq $16(%rsp), %rax + 0x4e, 0x8d, 0x3c, 0x00, //0x00002295 leaq (%rax,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002299 movq $-1, (%rsp) + 0x45, 0x31, 0xd2, //0x000022a1 xorl %r10d, %r10d + 0x48, 0x83, 0xfb, 0x20, //0x000022a4 cmpq $32, %rbx + 0x0f, 0x83, 0x92, 0xfc, 0xff, 0xff, //0x000022a8 jae LBB0_112 + 0xe9, 0x82, 0x01, 0x00, 0x00, //0x000022ae jmp LBB0_450 + //0x000022b3 LBB0_434 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000022b3 movq $16(%rsp), %rcx + 0x4e, 0x8d, 0x3c, 0x01, //0x000022b8 leaq (%rcx,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000022bc movq $-1, (%rsp) + 0x45, 0x31, 0xdb, //0x000022c4 xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x000022c7 cmpq $32, %r13 + 0x0f, 0x83, 0xca, 0xfc, 0xff, 0xff, //0x000022cb jae LBB0_214 + //0x000022d1 LBB0_435 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000022d1 movq $24(%rsp), %r10 + 0xe9, 0x09, 0x03, 0x00, 0x00, //0x000022d6 jmp LBB0_472 + //0x000022db LBB0_436 + 0x89, 0xf0, //0x000022db movl %esi, %eax + 0xe9, 0x06, 0xff, 0xff, 0xff, //0x000022dd jmp LBB0_422 + //0x000022e2 LBB0_437 + 0x89, 0xf0, //0x000022e2 movl %esi, %eax + 0xe9, 0x02, 0x00, 0x00, 0x00, //0x000022e4 jmp LBB0_439 + //0x000022e9 LBB0_438 + 0x89, 0xd0, //0x000022e9 movl %edx, %eax + //0x000022eb LBB0_439 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000022eb movq $16(%rsp), %rcx + 0x4c, 0x01, 0xf9, //0x000022f0 addq %r15, %rcx + 0x4c, 0x29, 0xe1, //0x000022f3 subq %r12, %rcx + 0x48, 0x29, 0xc1, //0x000022f6 subq %rax, %rcx + 0x49, 0xf7, 0xd5, //0x000022f9 notq %r13 + 0x49, 0x01, 0xcd, //0x000022fc addq %rcx, %r13 + 0x4d, 0x89, 0xec, //0x000022ff movq %r13, %r12 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002302 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002307 movq $56(%rsp), %r13 + 0xe9, 0x75, 0xfb, 0xff, 0xff, //0x0000230c jmp LBB0_403 + //0x00002311 LBB0_440 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002311 movq $16(%rsp), %rax + 0x4e, 0x8d, 0x3c, 0x00, //0x00002316 leaq (%rax,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000231a movq $-1, (%rsp) + 0x45, 0x31, 0xd2, //0x00002322 xorl %r10d, %r10d + 0x48, 0x83, 0xfb, 0x20, //0x00002325 cmpq $32, %rbx + 0x0f, 0x83, 0x06, 0xfd, 0xff, 0xff, //0x00002329 jae LBB0_136 + 0xe9, 0xda, 0x03, 0x00, 0x00, //0x0000232f jmp LBB0_488 + //0x00002334 LBB0_441 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002334 movq $16(%rsp), %rax + 0x4e, 0x8d, 0x3c, 0x00, //0x00002339 leaq (%rax,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000233d movq $-1, (%rsp) + 0x45, 0x31, 0xdb, //0x00002345 xorl %r11d, %r11d + 0x48, 0x83, 0xfb, 0x20, //0x00002348 cmpq $32, %rbx + 0x0f, 0x83, 0x3e, 0xfd, 0xff, 0xff, //0x0000234c jae LBB0_235 + //0x00002352 LBB0_442 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002352 movq $24(%rsp), %r10 + 0xe9, 0x61, 0x05, 0x00, 0x00, //0x00002357 jmp LBB0_510 + //0x0000235c LBB0_443 + 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x0000235c movq $-1, %r11 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002363 movq $-1, (%rsp) + 0x4c, 0x8b, 0x64, 0x24, 0x30, //0x0000236b movq $48(%rsp), %r12 + 0x4c, 0x89, 0x6c, 0x24, 0x38, //0x00002370 movq %r13, $56(%rsp) + 0x49, 0x83, 0xfa, 0x10, //0x00002375 cmpq $16, %r10 + 0x0f, 0x83, 0xb4, 0xf7, 0xff, 0xff, //0x00002379 jae LBB0_349 + 0xe9, 0xe9, 0xf8, 0xff, 0xff, //0x0000237f jmp LBB0_367 + //0x00002384 LBB0_444 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00002384 movq $16(%rsp), %rax + 0x4e, 0x8d, 0x3c, 0x00, //0x00002389 leaq (%rax,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x0000238d movq $-1, (%rsp) + 0x45, 0x31, 0xd2, //0x00002395 xorl %r10d, %r10d + 0x48, 0x83, 0xfb, 0x20, //0x00002398 cmpq $32, %rbx + 0x0f, 0x83, 0xad, 0xfd, 0xff, 0xff, //0x0000239c jae LBB0_278 + 0xe9, 0x9e, 0x07, 0x00, 0x00, //0x000023a2 jmp LBB0_533 + //0x000023a7 LBB0_445 + 0x48, 0x8b, 0x44, 0x24, 0x10, //0x000023a7 movq $16(%rsp), %rax + 0x4e, 0x8d, 0x3c, 0x00, //0x000023ac leaq (%rax,%r8), %r15 + 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000023b0 movq $-1, (%rsp) + 0x45, 0x31, 0xdb, //0x000023b8 xorl %r11d, %r11d + 0x48, 0x83, 0xfb, 0x20, //0x000023bb cmpq $32, %rbx + 0x0f, 0x83, 0xe5, 0xfd, 0xff, 0xff, //0x000023bf jae LBB0_319 + 0xe9, 0xfc, 0x08, 0x00, 0x00, //0x000023c5 jmp LBB0_555 + //0x000023ca LBB0_446 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000023ca cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x000023cf jne LBB0_448 + 0x4c, 0x89, 0xf8, //0x000023d5 movq %r15, %rax + 0x48, 0x2b, 0x44, 0x24, 0x10, //0x000023d8 subq $16(%rsp), %rax + 0x48, 0x0f, 0xbc, 0xca, //0x000023dd bsfq %rdx, %rcx + 0x48, 0x01, 0xc1, //0x000023e1 addq %rax, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x000023e4 movq %rcx, (%rsp) + //0x000023e8 LBB0_448 + 0x44, 0x89, 0xd0, //0x000023e8 movl %r10d, %eax + 0xf7, 0xd0, //0x000023eb notl %eax + 0x21, 0xd0, //0x000023ed andl %edx, %eax + 0x8d, 0x0c, 0x00, //0x000023ef leal (%rax,%rax), %ecx + 0x41, 0x8d, 0x3c, 0x42, //0x000023f2 leal (%r10,%rax,2), %edi + 0xf7, 0xd1, //0x000023f6 notl %ecx + 0x21, 0xd1, //0x000023f8 andl %edx, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x000023fa andl $-1431655766, %ecx + 0x45, 0x31, 0xd2, //0x00002400 xorl %r10d, %r10d + 0x01, 0xc1, //0x00002403 addl %eax, %ecx + 0x41, 0x0f, 0x92, 0xc2, //0x00002405 setb %r10b + 0x01, 0xc9, //0x00002409 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x0000240b xorl $1431655765, %ecx + 0x21, 0xf9, //0x00002411 andl %edi, %ecx + 0xf7, 0xd1, //0x00002413 notl %ecx + 0x21, 0xce, //0x00002415 andl %ecx, %esi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002417 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xbc, 0xdd, 0xff, 0xff, //0x0000241c vmovdqu $-8772(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xf6, //0x00002424 testq %rsi, %rsi + 0x0f, 0x85, 0x45, 0xfb, 0xff, 0xff, //0x00002427 jne LBB0_115 + //0x0000242d LBB0_449 + 0x49, 0x83, 0xc7, 0x20, //0x0000242d addq $32, %r15 + 0x48, 0x83, 0xc3, 0xe0, //0x00002431 addq $-32, %rbx + //0x00002435 LBB0_450 + 0x4d, 0x85, 0xd2, //0x00002435 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x05, 0x00, 0x00, //0x00002438 jne LBB0_521 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x0000243e movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002443 notq %rcx + 0x48, 0x8b, 0x3c, 0x24, //0x00002446 movq (%rsp), %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000244a movq $24(%rsp), %r10 + 0x48, 0x85, 0xdb, //0x0000244f testq %rbx, %rbx + 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x00002452 je LBB0_462 + //0x00002458 LBB0_452 + 0x48, 0x83, 0xc1, 0x01, //0x00002458 addq $1, %rcx + //0x0000245c LBB0_453 + 0x31, 0xf6, //0x0000245c xorl %esi, %esi + //0x0000245e LBB0_454 + 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x0000245e movzbl (%r15,%rsi), %edx + 0x80, 0xfa, 0x22, //0x00002463 cmpb $34, %dl + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00002466 je LBB0_461 + 0x80, 0xfa, 0x5c, //0x0000246c cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000246f je LBB0_459 + 0x48, 0x83, 0xc6, 0x01, //0x00002475 addq $1, %rsi + 0x48, 0x39, 0xf3, //0x00002479 cmpq %rsi, %rbx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000247c jne LBB0_454 + 0xe9, 0x71, 0x00, 0x00, 0x00, //0x00002482 jmp LBB0_457 + //0x00002487 LBB0_459 + 0x48, 0x8d, 0x43, 0xff, //0x00002487 leaq $-1(%rbx), %rax + 0x48, 0x39, 0xf0, //0x0000248b cmpq %rsi, %rax + 0x0f, 0x84, 0x94, 0x09, 0x00, 0x00, //0x0000248e je LBB0_387 + 0x4a, 0x8d, 0x04, 0x39, //0x00002494 leaq (%rcx,%r15), %rax + 0x48, 0x01, 0xf0, //0x00002498 addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x0000249b cmpq $-1, %rdi + 0x48, 0x8b, 0x14, 0x24, //0x0000249f movq (%rsp), %rdx + 0x48, 0x0f, 0x44, 0xd0, //0x000024a3 cmoveq %rax, %rdx + 0x48, 0x89, 0x14, 0x24, //0x000024a7 movq %rdx, (%rsp) + 0x48, 0x0f, 0x44, 0xf8, //0x000024ab cmoveq %rax, %rdi + 0x49, 0x01, 0xf7, //0x000024af addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x02, //0x000024b2 addq $2, %r15 + 0x48, 0x89, 0xd8, //0x000024b6 movq %rbx, %rax + 0x48, 0x29, 0xf0, //0x000024b9 subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x000024bc addq $-2, %rax + 0x48, 0x83, 0xc3, 0xfe, //0x000024c0 addq $-2, %rbx + 0x48, 0x39, 0xf3, //0x000024c4 cmpq %rsi, %rbx + 0x48, 0x89, 0xc3, //0x000024c7 movq %rax, %rbx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000024ca movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000024cf vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x04, 0xdd, 0xff, 0xff, //0x000024d4 vmovdqu $-8956(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x85, 0x7a, 0xff, 0xff, 0xff, //0x000024dc jne LBB0_453 + 0xe9, 0x41, 0x09, 0x00, 0x00, //0x000024e2 jmp LBB0_387 + //0x000024e7 LBB0_461 + 0x49, 0x01, 0xf7, //0x000024e7 addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000024ea addq $1, %r15 + //0x000024ee LBB0_462 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000024ee subq $16(%rsp), %r15 + 0xe9, 0x69, 0xef, 0xff, 0xff, //0x000024f3 jmp LBB0_246 + //0x000024f8 LBB0_457 + 0x80, 0xfa, 0x22, //0x000024f8 cmpb $34, %dl + 0x0f, 0x85, 0x27, 0x09, 0x00, 0x00, //0x000024fb jne LBB0_387 + 0x49, 0x01, 0xdf, //0x00002501 addq %rbx, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002504 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002509 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xca, 0xdc, 0xff, 0xff, //0x0000250e vmovdqu $-9014(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xe9, 0xd3, 0xff, 0xff, 0xff, //0x00002516 jmp LBB0_462 + //0x0000251b LBB0_463 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x0000251b cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002520 jne LBB0_465 + 0x4c, 0x89, 0xf9, //0x00002526 movq %r15, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00002529 subq $16(%rsp), %rcx + 0x48, 0x0f, 0xbc, 0xf2, //0x0000252e bsfq %rdx, %rsi + 0x48, 0x01, 0xce, //0x00002532 addq %rcx, %rsi + 0x48, 0x89, 0x34, 0x24, //0x00002535 movq %rsi, (%rsp) + //0x00002539 LBB0_465 + 0x44, 0x89, 0xd9, //0x00002539 movl %r11d, %ecx + 0xf7, 0xd1, //0x0000253c notl %ecx + 0x21, 0xd1, //0x0000253e andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00002540 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00002543 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00002547 notl %esi + 0x21, 0xd6, //0x00002549 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000254b andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00002551 xorl %r11d, %r11d + 0x01, 0xce, //0x00002554 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00002556 setb %r11b + 0x01, 0xf6, //0x0000255a addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000255c xorl $1431655765, %esi + 0x21, 0xfe, //0x00002562 andl %edi, %esi + 0xf7, 0xd6, //0x00002564 notl %esi + 0x41, 0x21, 0xf2, //0x00002566 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002569 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x6a, 0xdc, 0xff, 0xff, //0x0000256e vmovdqu $-9110(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x00002576 testq %r10, %r10 + 0x0f, 0x85, 0x4e, 0xfa, 0xff, 0xff, //0x00002579 jne LBB0_217 + //0x0000257f LBB0_466 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000257f movl $64, %edx + //0x00002584 LBB0_467 + 0xc5, 0xbd, 0x64, 0xc8, //0x00002584 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002588 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000258d vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002591 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00002595 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00002598 testq %r10, %r10 + 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x0000259b je LBB0_470 + 0x85, 0xf6, //0x000025a1 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x000025a3 movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x000025a8 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x000025ab cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000025ae movq $24(%rsp), %r10 + 0x0f, 0x87, 0x1a, 0x12, 0x00, 0x00, //0x000025b3 ja LBB0_683 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000025b9 subq $16(%rsp), %r15 + 0x49, 0x01, 0xd7, //0x000025be addq %rdx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000025c1 addq $1, %r15 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000025c5 movq $8(%rsp), %r11 + 0xe9, 0xc9, 0x00, 0x00, 0x00, //0x000025ca jmp LBB0_483 + //0x000025cf LBB0_470 + 0x85, 0xf6, //0x000025cf testl %esi, %esi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000025d1 movq $24(%rsp), %r10 + 0x0f, 0x85, 0x09, 0x12, 0x00, 0x00, //0x000025d6 jne LBB0_688 + 0x49, 0x83, 0xc7, 0x20, //0x000025dc addq $32, %r15 + 0x49, 0x83, 0xc5, 0xe0, //0x000025e0 addq $-32, %r13 + //0x000025e4 LBB0_472 + 0x4d, 0x85, 0xdb, //0x000025e4 testq %r11, %r11 + 0x0f, 0x85, 0xe3, 0x03, 0x00, 0x00, //0x000025e7 jne LBB0_523 + 0x48, 0x8b, 0x0c, 0x24, //0x000025ed movq (%rsp), %rcx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000025f1 movq $8(%rsp), %r11 + 0x4d, 0x85, 0xed, //0x000025f6 testq %r13, %r13 + 0x0f, 0x84, 0x29, 0x08, 0x00, 0x00, //0x000025f9 je LBB0_387 + //0x000025ff LBB0_474 + 0x41, 0x0f, 0xb6, 0x17, //0x000025ff movzbl (%r15), %edx + 0x80, 0xfa, 0x22, //0x00002603 cmpb $34, %dl + 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x00002606 je LBB0_482 + 0x80, 0xfa, 0x5c, //0x0000260c cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000260f je LBB0_478 + 0x80, 0xfa, 0x1f, //0x00002615 cmpb $31, %dl + 0x0f, 0x86, 0xd3, 0x11, 0x00, 0x00, //0x00002618 jbe LBB0_684 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000261e movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002625 movl $1, %esi + 0x49, 0x01, 0xf7, //0x0000262a addq %rsi, %r15 + 0x49, 0x01, 0xd5, //0x0000262d addq %rdx, %r13 + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00002630 jne LBB0_474 + 0xe9, 0xed, 0x07, 0x00, 0x00, //0x00002636 jmp LBB0_387 + //0x0000263b LBB0_478 + 0x49, 0x83, 0xfd, 0x01, //0x0000263b cmpq $1, %r13 + 0x0f, 0x84, 0xa7, 0x07, 0x00, 0x00, //0x0000263f je LBB0_571 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002645 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000264c movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002651 cmpq $-1, %rcx + 0x0f, 0x85, 0x0c, 0x00, 0x00, 0x00, //0x00002655 jne LBB0_481 + 0x4c, 0x89, 0xf9, //0x0000265b movq %r15, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x0000265e subq $16(%rsp), %rcx + 0x48, 0x89, 0x0c, 0x24, //0x00002663 movq %rcx, (%rsp) + //0x00002667 LBB0_481 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002667 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000266c movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002671 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x62, 0xdb, 0xff, 0xff, //0x00002676 vmovdqu $-9374(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x49, 0x01, 0xf7, //0x0000267e addq %rsi, %r15 + 0x49, 0x01, 0xd5, //0x00002681 addq %rdx, %r13 + 0x0f, 0x85, 0x75, 0xff, 0xff, 0xff, //0x00002684 jne LBB0_474 + 0xe9, 0x99, 0x07, 0x00, 0x00, //0x0000268a jmp LBB0_387 + //0x0000268f LBB0_482 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000268f subq $16(%rsp), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00002694 addq $1, %r15 + //0x00002698 LBB0_483 + 0x4d, 0x89, 0xcd, //0x00002698 movq %r9, %r13 + 0x49, 0x89, 0xc1, //0x0000269b movq %rax, %r9 + 0xe9, 0xbe, 0xed, 0xff, 0xff, //0x0000269e jmp LBB0_246 + //0x000026a3 LBB0_484 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000026a3 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x000026a8 jne LBB0_486 + 0x4c, 0x89, 0xf8, //0x000026ae movq %r15, %rax + 0x48, 0x2b, 0x44, 0x24, 0x10, //0x000026b1 subq $16(%rsp), %rax + 0x48, 0x0f, 0xbc, 0xca, //0x000026b6 bsfq %rdx, %rcx + 0x48, 0x01, 0xc1, //0x000026ba addq %rax, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x000026bd movq %rcx, (%rsp) + //0x000026c1 LBB0_486 + 0x44, 0x89, 0xd0, //0x000026c1 movl %r10d, %eax + 0xf7, 0xd0, //0x000026c4 notl %eax + 0x21, 0xd0, //0x000026c6 andl %edx, %eax + 0x8d, 0x0c, 0x00, //0x000026c8 leal (%rax,%rax), %ecx + 0x41, 0x8d, 0x3c, 0x42, //0x000026cb leal (%r10,%rax,2), %edi + 0xf7, 0xd1, //0x000026cf notl %ecx + 0x21, 0xd1, //0x000026d1 andl %edx, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x000026d3 andl $-1431655766, %ecx + 0x45, 0x31, 0xd2, //0x000026d9 xorl %r10d, %r10d + 0x01, 0xc1, //0x000026dc addl %eax, %ecx + 0x41, 0x0f, 0x92, 0xc2, //0x000026de setb %r10b + 0x01, 0xc9, //0x000026e2 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x000026e4 xorl $1431655765, %ecx + 0x21, 0xf9, //0x000026ea andl %edi, %ecx + 0xf7, 0xd1, //0x000026ec notl %ecx + 0x21, 0xce, //0x000026ee andl %ecx, %esi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000026f0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xe3, 0xda, 0xff, 0xff, //0x000026f5 vmovdqu $-9501(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xf6, //0x000026fd testq %rsi, %rsi + 0x0f, 0x85, 0x61, 0xf9, 0xff, 0xff, //0x00002700 jne LBB0_139 + //0x00002706 LBB0_487 + 0x49, 0x83, 0xc7, 0x20, //0x00002706 addq $32, %r15 + 0x48, 0x83, 0xc3, 0xe0, //0x0000270a addq $-32, %rbx + //0x0000270e LBB0_488 + 0x4d, 0x85, 0xd2, //0x0000270e testq %r10, %r10 + 0x0f, 0x85, 0x11, 0x03, 0x00, 0x00, //0x00002711 jne LBB0_525 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002717 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x0000271c notq %rcx + 0x48, 0x8b, 0x3c, 0x24, //0x0000271f movq (%rsp), %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002723 movq $24(%rsp), %r10 + 0x48, 0x85, 0xdb, //0x00002728 testq %rbx, %rbx + 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x0000272b je LBB0_500 + //0x00002731 LBB0_490 + 0x48, 0x83, 0xc1, 0x01, //0x00002731 addq $1, %rcx + //0x00002735 LBB0_491 + 0x31, 0xf6, //0x00002735 xorl %esi, %esi + //0x00002737 LBB0_492 + 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x00002737 movzbl (%r15,%rsi), %edx + 0x80, 0xfa, 0x22, //0x0000273c cmpb $34, %dl + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x0000273f je LBB0_499 + 0x80, 0xfa, 0x5c, //0x00002745 cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002748 je LBB0_497 + 0x48, 0x83, 0xc6, 0x01, //0x0000274e addq $1, %rsi + 0x48, 0x39, 0xf3, //0x00002752 cmpq %rsi, %rbx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002755 jne LBB0_492 + 0xe9, 0x71, 0x00, 0x00, 0x00, //0x0000275b jmp LBB0_495 + //0x00002760 LBB0_497 + 0x48, 0x8d, 0x43, 0xff, //0x00002760 leaq $-1(%rbx), %rax + 0x48, 0x39, 0xf0, //0x00002764 cmpq %rsi, %rax + 0x0f, 0x84, 0xbb, 0x06, 0x00, 0x00, //0x00002767 je LBB0_387 + 0x4a, 0x8d, 0x04, 0x39, //0x0000276d leaq (%rcx,%r15), %rax + 0x48, 0x01, 0xf0, //0x00002771 addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x00002774 cmpq $-1, %rdi + 0x48, 0x8b, 0x14, 0x24, //0x00002778 movq (%rsp), %rdx + 0x48, 0x0f, 0x44, 0xd0, //0x0000277c cmoveq %rax, %rdx + 0x48, 0x89, 0x14, 0x24, //0x00002780 movq %rdx, (%rsp) + 0x48, 0x0f, 0x44, 0xf8, //0x00002784 cmoveq %rax, %rdi + 0x49, 0x01, 0xf7, //0x00002788 addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x02, //0x0000278b addq $2, %r15 + 0x48, 0x89, 0xd8, //0x0000278f movq %rbx, %rax + 0x48, 0x29, 0xf0, //0x00002792 subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00002795 addq $-2, %rax + 0x48, 0x83, 0xc3, 0xfe, //0x00002799 addq $-2, %rbx + 0x48, 0x39, 0xf3, //0x0000279d cmpq %rsi, %rbx + 0x48, 0x89, 0xc3, //0x000027a0 movq %rax, %rbx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000027a3 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000027a8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x2b, 0xda, 0xff, 0xff, //0x000027ad vmovdqu $-9685(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x85, 0x7a, 0xff, 0xff, 0xff, //0x000027b5 jne LBB0_491 + 0xe9, 0x68, 0x06, 0x00, 0x00, //0x000027bb jmp LBB0_387 + //0x000027c0 LBB0_499 + 0x49, 0x01, 0xf7, //0x000027c0 addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x000027c3 addq $1, %r15 + //0x000027c7 LBB0_500 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000027c7 subq $16(%rsp), %r15 + 0xe9, 0xd6, 0xed, 0xff, 0xff, //0x000027cc jmp LBB0_265 + //0x000027d1 LBB0_495 + 0x80, 0xfa, 0x22, //0x000027d1 cmpb $34, %dl + 0x0f, 0x85, 0x4e, 0x06, 0x00, 0x00, //0x000027d4 jne LBB0_387 + 0x49, 0x01, 0xdf, //0x000027da addq %rbx, %r15 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000027dd movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000027e2 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xd9, 0xff, 0xff, //0x000027e7 vmovdqu $-9743(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xe9, 0xd3, 0xff, 0xff, 0xff, //0x000027ef jmp LBB0_500 + //0x000027f4 LBB0_501 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x000027f4 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x000027f9 jne LBB0_503 + 0x4c, 0x89, 0xf8, //0x000027ff movq %r15, %rax + 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002802 subq $16(%rsp), %rax + 0x48, 0x0f, 0xbc, 0xca, //0x00002807 bsfq %rdx, %rcx + 0x48, 0x01, 0xc1, //0x0000280b addq %rax, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x0000280e movq %rcx, (%rsp) + //0x00002812 LBB0_503 + 0x44, 0x89, 0xd8, //0x00002812 movl %r11d, %eax + 0xf7, 0xd0, //0x00002815 notl %eax + 0x21, 0xd0, //0x00002817 andl %edx, %eax + 0x8d, 0x0c, 0x00, //0x00002819 leal (%rax,%rax), %ecx + 0x41, 0x8d, 0x34, 0x43, //0x0000281c leal (%r11,%rax,2), %esi + 0xf7, 0xd1, //0x00002820 notl %ecx + 0x21, 0xd1, //0x00002822 andl %edx, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002824 andl $-1431655766, %ecx + 0x45, 0x31, 0xdb, //0x0000282a xorl %r11d, %r11d + 0x01, 0xc1, //0x0000282d addl %eax, %ecx + 0x41, 0x0f, 0x92, 0xc3, //0x0000282f setb %r11b + 0x01, 0xc9, //0x00002833 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002835 xorl $1431655765, %ecx + 0x21, 0xf1, //0x0000283b andl %esi, %ecx + 0xf7, 0xd1, //0x0000283d notl %ecx + 0x41, 0x21, 0xca, //0x0000283f andl %ecx, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002842 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x91, 0xd9, 0xff, 0xff, //0x00002847 vmovdqu $-9839(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x0000284f testq %r10, %r10 + 0x0f, 0x85, 0x6a, 0xf8, 0xff, 0xff, //0x00002852 jne LBB0_238 + //0x00002858 LBB0_504 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002858 movl $64, %edx + //0x0000285d LBB0_505 + 0xc5, 0xbd, 0x64, 0xc8, //0x0000285d vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002861 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00002866 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000286a vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x0000286e bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00002871 testq %r10, %r10 + 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x00002874 je LBB0_508 + 0x85, 0xf6, //0x0000287a testl %esi, %esi + 0xb8, 0x40, 0x00, 0x00, 0x00, //0x0000287c movl $64, %eax + 0x0f, 0x44, 0xf8, //0x00002881 cmovel %eax, %edi + 0x48, 0x39, 0xfa, //0x00002884 cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002887 movq $24(%rsp), %r10 + 0x0f, 0x87, 0x76, 0x0f, 0x00, 0x00, //0x0000288c ja LBB0_687 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002892 subq $16(%rsp), %r15 + 0x49, 0x01, 0xd7, //0x00002897 addq %rdx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x0000289a addq $1, %r15 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x0000289e movq $8(%rsp), %r11 + 0xe9, 0xff, 0xec, 0xff, 0xff, //0x000028a3 jmp LBB0_265 + //0x000028a8 LBB0_508 + 0x85, 0xf6, //0x000028a8 testl %esi, %esi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000028aa movq $24(%rsp), %r10 + 0x0f, 0x85, 0x30, 0x0f, 0x00, 0x00, //0x000028af jne LBB0_688 + 0x49, 0x83, 0xc7, 0x20, //0x000028b5 addq $32, %r15 + 0x48, 0x83, 0xc3, 0xe0, //0x000028b9 addq $-32, %rbx + //0x000028bd LBB0_510 + 0x4d, 0x85, 0xdb, //0x000028bd testq %r11, %r11 + 0x0f, 0x85, 0xbc, 0x01, 0x00, 0x00, //0x000028c0 jne LBB0_527 + 0x48, 0x8b, 0x0c, 0x24, //0x000028c6 movq (%rsp), %rcx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000028ca movq $8(%rsp), %r11 + 0x48, 0x85, 0xdb, //0x000028cf testq %rbx, %rbx + 0x0f, 0x84, 0x50, 0x05, 0x00, 0x00, //0x000028d2 je LBB0_387 + //0x000028d8 LBB0_512 + 0x41, 0x0f, 0xb6, 0x17, //0x000028d8 movzbl (%r15), %edx + 0x80, 0xfa, 0x22, //0x000028dc cmpb $34, %dl + 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x000028df je LBB0_520 + 0x80, 0xfa, 0x5c, //0x000028e5 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000028e8 je LBB0_516 + 0x80, 0xfa, 0x1f, //0x000028ee cmpb $31, %dl + 0x0f, 0x86, 0xfa, 0x0e, 0x00, 0x00, //0x000028f1 jbe LBB0_684 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000028f7 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000028fe movl $1, %esi + 0x49, 0x01, 0xf7, //0x00002903 addq %rsi, %r15 + 0x48, 0x01, 0xd3, //0x00002906 addq %rdx, %rbx + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00002909 jne LBB0_512 + 0xe9, 0x14, 0x05, 0x00, 0x00, //0x0000290f jmp LBB0_387 + //0x00002914 LBB0_516 + 0x48, 0x83, 0xfb, 0x01, //0x00002914 cmpq $1, %rbx + 0x0f, 0x84, 0xce, 0x04, 0x00, 0x00, //0x00002918 je LBB0_571 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x0000291e movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002925 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x0000292a cmpq $-1, %rcx + 0x0f, 0x85, 0x0c, 0x00, 0x00, 0x00, //0x0000292e jne LBB0_519 + 0x4c, 0x89, 0xf9, //0x00002934 movq %r15, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00002937 subq $16(%rsp), %rcx + 0x48, 0x89, 0x0c, 0x24, //0x0000293c movq %rcx, (%rsp) + //0x00002940 LBB0_519 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002940 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002945 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000294a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x89, 0xd8, 0xff, 0xff, //0x0000294f vmovdqu $-10103(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x49, 0x01, 0xf7, //0x00002957 addq %rsi, %r15 + 0x48, 0x01, 0xd3, //0x0000295a addq %rdx, %rbx + 0x0f, 0x85, 0x75, 0xff, 0xff, 0xff, //0x0000295d jne LBB0_512 + 0xe9, 0xc0, 0x04, 0x00, 0x00, //0x00002963 jmp LBB0_387 + //0x00002968 LBB0_520 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002968 subq $16(%rsp), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x0000296d addq $1, %r15 + 0xe9, 0x31, 0xec, 0xff, 0xff, //0x00002971 jmp LBB0_265 + //0x00002976 LBB0_521 + 0x48, 0x85, 0xdb, //0x00002976 testq %rbx, %rbx + 0x0f, 0x84, 0xa9, 0x04, 0x00, 0x00, //0x00002979 je LBB0_387 + 0x4c, 0x89, 0xca, //0x0000297f movq %r9, %rdx + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002982 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002987 notq %rcx + 0x49, 0x8d, 0x04, 0x0f, //0x0000298a leaq (%r15,%rcx), %rax + 0x4c, 0x8b, 0x0c, 0x24, //0x0000298e movq (%rsp), %r9 + 0x49, 0x83, 0xf9, 0xff, //0x00002992 cmpq $-1, %r9 + 0x4c, 0x89, 0xcf, //0x00002996 movq %r9, %rdi + 0x4c, 0x0f, 0x44, 0xc8, //0x00002999 cmoveq %rax, %r9 + 0x48, 0x0f, 0x44, 0xf8, //0x0000299d cmoveq %rax, %rdi + 0x49, 0x83, 0xc7, 0x01, //0x000029a1 addq $1, %r15 + 0x48, 0x83, 0xc3, 0xff, //0x000029a5 addq $-1, %rbx + 0x4c, 0x89, 0x0c, 0x24, //0x000029a9 movq %r9, (%rsp) + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000029ad movq $24(%rsp), %r10 + 0x49, 0x89, 0xd1, //0x000029b2 movq %rdx, %r9 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000029b5 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x1e, 0xd8, 0xff, 0xff, //0x000029ba vmovdqu $-10210(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xdb, //0x000029c2 testq %rbx, %rbx + 0x0f, 0x85, 0x8d, 0xfa, 0xff, 0xff, //0x000029c5 jne LBB0_452 + 0xe9, 0x1e, 0xfb, 0xff, 0xff, //0x000029cb jmp LBB0_462 + //0x000029d0 LBB0_523 + 0x4d, 0x85, 0xed, //0x000029d0 testq %r13, %r13 + 0x0f, 0x84, 0x13, 0x04, 0x00, 0x00, //0x000029d3 je LBB0_571 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x000029d9 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x000029de notq %rcx + 0x4c, 0x01, 0xf9, //0x000029e1 addq %r15, %rcx + 0x48, 0x8b, 0x34, 0x24, //0x000029e4 movq (%rsp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x000029e8 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x000029ec movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x000029ef cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x000029f3 cmovneq %rsi, %rcx + 0x49, 0x83, 0xc7, 0x01, //0x000029f7 addq $1, %r15 + 0x49, 0x83, 0xc5, 0xff, //0x000029fb addq $-1, %r13 + 0x48, 0x89, 0x14, 0x24, //0x000029ff movq %rdx, (%rsp) + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002a03 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002a08 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002a0d vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xc6, 0xd7, 0xff, 0xff, //0x00002a12 vmovdqu $-10298(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x4d, 0x85, 0xed, //0x00002a1a testq %r13, %r13 + 0x0f, 0x85, 0xdc, 0xfb, 0xff, 0xff, //0x00002a1d jne LBB0_474 + 0xe9, 0x00, 0x04, 0x00, 0x00, //0x00002a23 jmp LBB0_387 + //0x00002a28 LBB0_525 + 0x48, 0x85, 0xdb, //0x00002a28 testq %rbx, %rbx + 0x0f, 0x84, 0xf7, 0x03, 0x00, 0x00, //0x00002a2b je LBB0_387 + 0x4c, 0x89, 0xca, //0x00002a31 movq %r9, %rdx + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002a34 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002a39 notq %rcx + 0x49, 0x8d, 0x04, 0x0f, //0x00002a3c leaq (%r15,%rcx), %rax + 0x4c, 0x8b, 0x0c, 0x24, //0x00002a40 movq (%rsp), %r9 + 0x49, 0x83, 0xf9, 0xff, //0x00002a44 cmpq $-1, %r9 + 0x4c, 0x89, 0xcf, //0x00002a48 movq %r9, %rdi + 0x4c, 0x0f, 0x44, 0xc8, //0x00002a4b cmoveq %rax, %r9 + 0x48, 0x0f, 0x44, 0xf8, //0x00002a4f cmoveq %rax, %rdi + 0x49, 0x83, 0xc7, 0x01, //0x00002a53 addq $1, %r15 + 0x48, 0x83, 0xc3, 0xff, //0x00002a57 addq $-1, %rbx + 0x4c, 0x89, 0x0c, 0x24, //0x00002a5b movq %r9, (%rsp) + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002a5f movq $24(%rsp), %r10 + 0x49, 0x89, 0xd1, //0x00002a64 movq %rdx, %r9 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002a67 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x6c, 0xd7, 0xff, 0xff, //0x00002a6c vmovdqu $-10388(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xdb, //0x00002a74 testq %rbx, %rbx + 0x0f, 0x85, 0xb4, 0xfc, 0xff, 0xff, //0x00002a77 jne LBB0_490 + 0xe9, 0x45, 0xfd, 0xff, 0xff, //0x00002a7d jmp LBB0_500 + //0x00002a82 LBB0_527 + 0x48, 0x85, 0xdb, //0x00002a82 testq %rbx, %rbx + 0x0f, 0x84, 0x61, 0x03, 0x00, 0x00, //0x00002a85 je LBB0_571 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002a8b movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002a90 notq %rcx + 0x4c, 0x01, 0xf9, //0x00002a93 addq %r15, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00002a96 movq (%rsp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00002a9a cmpq $-1, %rdx + 0x48, 0x89, 0xd0, //0x00002a9e movq %rdx, %rax + 0x48, 0x0f, 0x44, 0xc1, //0x00002aa1 cmoveq %rcx, %rax + 0x48, 0x0f, 0x45, 0xca, //0x00002aa5 cmovneq %rdx, %rcx + 0x49, 0x83, 0xc7, 0x01, //0x00002aa9 addq $1, %r15 + 0x48, 0x83, 0xc3, 0xff, //0x00002aad addq $-1, %rbx + 0x48, 0x89, 0x04, 0x24, //0x00002ab1 movq %rax, (%rsp) + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002ab5 movq $8(%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002aba movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002abf vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x14, 0xd7, 0xff, 0xff, //0x00002ac4 vmovdqu $-10476(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xdb, //0x00002acc testq %rbx, %rbx + 0x0f, 0x85, 0x03, 0xfe, 0xff, 0xff, //0x00002acf jne LBB0_512 + 0xe9, 0x4e, 0x03, 0x00, 0x00, //0x00002ad5 jmp LBB0_387 + //0x00002ada LBB0_529 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002ada cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002adf jne LBB0_531 + 0x4c, 0x89, 0xf8, //0x00002ae5 movq %r15, %rax + 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002ae8 subq $16(%rsp), %rax + 0x48, 0x0f, 0xbc, 0xca, //0x00002aed bsfq %rdx, %rcx + 0x48, 0x01, 0xc1, //0x00002af1 addq %rax, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x00002af4 movq %rcx, (%rsp) + //0x00002af8 LBB0_531 + 0x44, 0x89, 0xd0, //0x00002af8 movl %r10d, %eax + 0xf7, 0xd0, //0x00002afb notl %eax + 0x21, 0xd0, //0x00002afd andl %edx, %eax + 0x8d, 0x0c, 0x00, //0x00002aff leal (%rax,%rax), %ecx + 0x41, 0x8d, 0x3c, 0x42, //0x00002b02 leal (%r10,%rax,2), %edi + 0xf7, 0xd1, //0x00002b06 notl %ecx + 0x21, 0xd1, //0x00002b08 andl %edx, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002b0a andl $-1431655766, %ecx + 0x45, 0x31, 0xd2, //0x00002b10 xorl %r10d, %r10d + 0x01, 0xc1, //0x00002b13 addl %eax, %ecx + 0x41, 0x0f, 0x92, 0xc2, //0x00002b15 setb %r10b + 0x01, 0xc9, //0x00002b19 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002b1b xorl $1431655765, %ecx + 0x21, 0xf9, //0x00002b21 andl %edi, %ecx + 0xf7, 0xd1, //0x00002b23 notl %ecx + 0x21, 0xce, //0x00002b25 andl %ecx, %esi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002b27 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xac, 0xd6, 0xff, 0xff, //0x00002b2c vmovdqu $-10580(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x48, 0x85, 0xf6, //0x00002b34 testq %rsi, %rsi + 0x0f, 0x85, 0x44, 0xf6, 0xff, 0xff, //0x00002b37 jne LBB0_281 + //0x00002b3d LBB0_532 + 0x49, 0x83, 0xc7, 0x20, //0x00002b3d addq $32, %r15 + 0x48, 0x83, 0xc3, 0xe0, //0x00002b41 addq $-32, %rbx + //0x00002b45 LBB0_533 + 0x4d, 0x85, 0xd2, //0x00002b45 testq %r10, %r10 + 0x0f, 0x85, 0x20, 0x02, 0x00, 0x00, //0x00002b48 jne LBB0_567 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002b4e movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002b53 notq %rcx + 0x48, 0x8b, 0x3c, 0x24, //0x00002b56 movq (%rsp), %rdi + 0x48, 0x85, 0xdb, //0x00002b5a testq %rbx, %rbx + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x00002b5d je LBB0_545 + //0x00002b63 LBB0_535 + 0x48, 0x83, 0xc1, 0x01, //0x00002b63 addq $1, %rcx + //0x00002b67 LBB0_536 + 0x31, 0xf6, //0x00002b67 xorl %esi, %esi + //0x00002b69 LBB0_537 + 0x41, 0x0f, 0xb6, 0x14, 0x37, //0x00002b69 movzbl (%r15,%rsi), %edx + 0x80, 0xfa, 0x22, //0x00002b6e cmpb $34, %dl + 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x00002b71 je LBB0_544 + 0x80, 0xfa, 0x5c, //0x00002b77 cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002b7a je LBB0_542 + 0x48, 0x83, 0xc6, 0x01, //0x00002b80 addq $1, %rsi + 0x48, 0x39, 0xf3, //0x00002b84 cmpq %rsi, %rbx + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002b87 jne LBB0_537 + 0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00002b8d jmp LBB0_540 + //0x00002b92 LBB0_542 + 0x48, 0x8d, 0x43, 0xff, //0x00002b92 leaq $-1(%rbx), %rax + 0x48, 0x39, 0xf0, //0x00002b96 cmpq %rsi, %rax + 0x0f, 0x84, 0x89, 0x02, 0x00, 0x00, //0x00002b99 je LBB0_387 + 0x4a, 0x8d, 0x04, 0x39, //0x00002b9f leaq (%rcx,%r15), %rax + 0x48, 0x01, 0xf0, //0x00002ba3 addq %rsi, %rax + 0x48, 0x83, 0xff, 0xff, //0x00002ba6 cmpq $-1, %rdi + 0x48, 0x8b, 0x14, 0x24, //0x00002baa movq (%rsp), %rdx + 0x48, 0x0f, 0x44, 0xd0, //0x00002bae cmoveq %rax, %rdx + 0x48, 0x89, 0x14, 0x24, //0x00002bb2 movq %rdx, (%rsp) + 0x48, 0x0f, 0x44, 0xf8, //0x00002bb6 cmoveq %rax, %rdi + 0x49, 0x01, 0xf7, //0x00002bba addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x02, //0x00002bbd addq $2, %r15 + 0x48, 0x89, 0xd8, //0x00002bc1 movq %rbx, %rax + 0x48, 0x29, 0xf0, //0x00002bc4 subq %rsi, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00002bc7 addq $-2, %rax + 0x48, 0x83, 0xc3, 0xfe, //0x00002bcb addq $-2, %rbx + 0x48, 0x39, 0xf3, //0x00002bcf cmpq %rsi, %rbx + 0x48, 0x89, 0xc3, //0x00002bd2 movq %rax, %rbx + 0x0f, 0x85, 0x8c, 0xff, 0xff, 0xff, //0x00002bd5 jne LBB0_536 + 0xe9, 0x48, 0x02, 0x00, 0x00, //0x00002bdb jmp LBB0_387 + //0x00002be0 LBB0_544 + 0x49, 0x01, 0xf7, //0x00002be0 addq %rsi, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00002be3 addq $1, %r15 + //0x00002be7 LBB0_545 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002be7 subq $16(%rsp), %r15 + 0xe9, 0x66, 0x01, 0x00, 0x00, //0x00002bec jmp LBB0_566 + //0x00002bf1 LBB0_540 + 0x80, 0xfa, 0x22, //0x00002bf1 cmpb $34, %dl + 0x0f, 0x85, 0x2e, 0x02, 0x00, 0x00, //0x00002bf4 jne LBB0_387 + 0x49, 0x01, 0xdf, //0x00002bfa addq %rbx, %r15 + 0xe9, 0xe5, 0xff, 0xff, 0xff, //0x00002bfd jmp LBB0_545 + //0x00002c02 LBB0_546 + 0x48, 0x83, 0x3c, 0x24, 0xff, //0x00002c02 cmpq $-1, (%rsp) + 0x0f, 0x85, 0x13, 0x00, 0x00, 0x00, //0x00002c07 jne LBB0_548 + 0x4c, 0x89, 0xf8, //0x00002c0d movq %r15, %rax + 0x48, 0x2b, 0x44, 0x24, 0x10, //0x00002c10 subq $16(%rsp), %rax + 0x48, 0x0f, 0xbc, 0xca, //0x00002c15 bsfq %rdx, %rcx + 0x48, 0x01, 0xc1, //0x00002c19 addq %rax, %rcx + 0x48, 0x89, 0x0c, 0x24, //0x00002c1c movq %rcx, (%rsp) + //0x00002c20 LBB0_548 + 0x44, 0x89, 0xd8, //0x00002c20 movl %r11d, %eax + 0xf7, 0xd0, //0x00002c23 notl %eax + 0x21, 0xd0, //0x00002c25 andl %edx, %eax + 0x8d, 0x0c, 0x00, //0x00002c27 leal (%rax,%rax), %ecx + 0x41, 0x8d, 0x34, 0x43, //0x00002c2a leal (%r11,%rax,2), %esi + 0xf7, 0xd1, //0x00002c2e notl %ecx + 0x21, 0xd1, //0x00002c30 andl %edx, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002c32 andl $-1431655766, %ecx + 0x45, 0x31, 0xdb, //0x00002c38 xorl %r11d, %r11d + 0x01, 0xc1, //0x00002c3b addl %eax, %ecx + 0x41, 0x0f, 0x92, 0xc3, //0x00002c3d setb %r11b + 0x01, 0xc9, //0x00002c41 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00002c43 xorl $1431655765, %ecx + 0x21, 0xf1, //0x00002c49 andl %esi, %ecx + 0xf7, 0xd1, //0x00002c4b notl %ecx + 0x41, 0x21, 0xca, //0x00002c4d andl %ecx, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c50 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x83, 0xd5, 0xff, 0xff, //0x00002c55 vmovdqu $-10877(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x00002c5d testq %r10, %r10 + 0x0f, 0x85, 0x76, 0xf5, 0xff, 0xff, //0x00002c60 jne LBB0_322 + //0x00002c66 LBB0_549 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002c66 movl $64, %edx + //0x00002c6b LBB0_550 + 0xc5, 0xbd, 0x64, 0xc8, //0x00002c6b vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002c6f vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00002c74 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002c78 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00002c7c bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00002c7f testq %r10, %r10 + 0x0f, 0x84, 0x2e, 0x00, 0x00, 0x00, //0x00002c82 je LBB0_553 + 0x85, 0xf6, //0x00002c88 testl %esi, %esi + 0xb8, 0x40, 0x00, 0x00, 0x00, //0x00002c8a movl $64, %eax + 0x0f, 0x44, 0xf8, //0x00002c8f cmovel %eax, %edi + 0x48, 0x39, 0xfa, //0x00002c92 cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002c95 movq $24(%rsp), %r10 + 0x0f, 0x87, 0x68, 0x0b, 0x00, 0x00, //0x00002c9a ja LBB0_687 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002ca0 subq $16(%rsp), %r15 + 0x49, 0x01, 0xd7, //0x00002ca5 addq %rdx, %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00002ca8 addq $1, %r15 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002cac movq $8(%rsp), %r11 + 0xe9, 0xc0, 0xf0, 0xff, 0xff, //0x00002cb1 jmp LBB0_385 + //0x00002cb6 LBB0_553 + 0x85, 0xf6, //0x00002cb6 testl %esi, %esi + 0x0f, 0x85, 0x27, 0x0b, 0x00, 0x00, //0x00002cb8 jne LBB0_688 + 0x49, 0x83, 0xc7, 0x20, //0x00002cbe addq $32, %r15 + 0x48, 0x83, 0xc3, 0xe0, //0x00002cc2 addq $-32, %rbx + //0x00002cc6 LBB0_555 + 0x4d, 0x85, 0xdb, //0x00002cc6 testq %r11, %r11 + 0x0f, 0x85, 0xe1, 0x00, 0x00, 0x00, //0x00002cc9 jne LBB0_569 + 0x48, 0x8b, 0x0c, 0x24, //0x00002ccf movq (%rsp), %rcx + 0x48, 0x85, 0xdb, //0x00002cd3 testq %rbx, %rbx + 0x0f, 0x84, 0x10, 0x01, 0x00, 0x00, //0x00002cd6 je LBB0_571 + //0x00002cdc LBB0_557 + 0x41, 0x0f, 0xb6, 0x17, //0x00002cdc movzbl (%r15), %edx + 0x80, 0xfa, 0x22, //0x00002ce0 cmpb $34, %dl + 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x00002ce3 je LBB0_565 + 0x80, 0xfa, 0x5c, //0x00002ce9 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002cec je LBB0_562 + 0x80, 0xfa, 0x1f, //0x00002cf2 cmpb $31, %dl + 0x0f, 0x86, 0x43, 0x0b, 0x00, 0x00, //0x00002cf5 jbe LBB0_689 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002cfb movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002d02 movl $1, %esi + //0x00002d07 LBB0_561 + 0x49, 0x01, 0xf7, //0x00002d07 addq %rsi, %r15 + 0x48, 0x01, 0xd3, //0x00002d0a addq %rdx, %rbx + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00002d0d jne LBB0_557 + 0xe9, 0xd4, 0x00, 0x00, 0x00, //0x00002d13 jmp LBB0_571 + //0x00002d18 LBB0_562 + 0x48, 0x83, 0xfb, 0x01, //0x00002d18 cmpq $1, %rbx + 0x0f, 0x84, 0xca, 0x00, 0x00, 0x00, //0x00002d1c je LBB0_571 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002d22 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002d29 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002d2e cmpq $-1, %rcx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002d32 jne LBB0_561 + 0x4c, 0x89, 0xf9, //0x00002d38 movq %r15, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x00002d3b subq $16(%rsp), %rcx + 0x48, 0x89, 0x0c, 0x24, //0x00002d40 movq %rcx, (%rsp) + 0xe9, 0xbe, 0xff, 0xff, 0xff, //0x00002d44 jmp LBB0_561 + //0x00002d49 LBB0_565 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x00002d49 subq $16(%rsp), %r15 + 0x49, 0x83, 0xc7, 0x01, //0x00002d4e addq $1, %r15 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002d52 movq $8(%rsp), %r11 + //0x00002d57 LBB0_566 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002d57 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002d5c vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x77, 0xd4, 0xff, 0xff, //0x00002d61 vmovdqu $-11145(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xe9, 0x08, 0xf0, 0xff, 0xff, //0x00002d69 jmp LBB0_385 + //0x00002d6e LBB0_567 + 0x48, 0x85, 0xdb, //0x00002d6e testq %rbx, %rbx + 0x0f, 0x84, 0xb1, 0x00, 0x00, 0x00, //0x00002d71 je LBB0_387 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002d77 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002d7c notq %rcx + 0x49, 0x8d, 0x04, 0x0f, //0x00002d7f leaq (%r15,%rcx), %rax + 0x48, 0x8b, 0x14, 0x24, //0x00002d83 movq (%rsp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00002d87 cmpq $-1, %rdx + 0x48, 0x89, 0xd7, //0x00002d8b movq %rdx, %rdi + 0x48, 0x0f, 0x44, 0xd0, //0x00002d8e cmoveq %rax, %rdx + 0x48, 0x0f, 0x44, 0xf8, //0x00002d92 cmoveq %rax, %rdi + 0x49, 0x83, 0xc7, 0x01, //0x00002d96 addq $1, %r15 + 0x48, 0x83, 0xc3, 0xff, //0x00002d9a addq $-1, %rbx + 0x48, 0x89, 0x14, 0x24, //0x00002d9e movq %rdx, (%rsp) + 0x48, 0x85, 0xdb, //0x00002da2 testq %rbx, %rbx + 0x0f, 0x85, 0xb8, 0xfd, 0xff, 0xff, //0x00002da5 jne LBB0_535 + 0xe9, 0x37, 0xfe, 0xff, 0xff, //0x00002dab jmp LBB0_545 + //0x00002db0 LBB0_569 + 0x48, 0x85, 0xdb, //0x00002db0 testq %rbx, %rbx + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00002db3 je LBB0_571 + 0x48, 0x8b, 0x4c, 0x24, 0x10, //0x00002db9 movq $16(%rsp), %rcx + 0x48, 0xf7, 0xd1, //0x00002dbe notq %rcx + 0x4c, 0x01, 0xf9, //0x00002dc1 addq %r15, %rcx + 0x48, 0x8b, 0x14, 0x24, //0x00002dc4 movq (%rsp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00002dc8 cmpq $-1, %rdx + 0x48, 0x89, 0xd0, //0x00002dcc movq %rdx, %rax + 0x48, 0x0f, 0x44, 0xc1, //0x00002dcf cmoveq %rcx, %rax + 0x48, 0x0f, 0x45, 0xca, //0x00002dd3 cmovneq %rdx, %rcx + 0x49, 0x83, 0xc7, 0x01, //0x00002dd7 addq $1, %r15 + 0x48, 0x83, 0xc3, 0xff, //0x00002ddb addq $-1, %rbx + 0x48, 0x89, 0x04, 0x24, //0x00002ddf movq %rax, (%rsp) + 0x48, 0x85, 0xdb, //0x00002de3 testq %rbx, %rbx + 0x0f, 0x85, 0xf0, 0xfe, 0xff, 0xff, //0x00002de6 jne LBB0_557 + //0x00002dec LBB0_571 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x00002dec movq $8(%rsp), %r11 + 0xe9, 0x32, 0x00, 0x00, 0x00, //0x00002df1 jmp LBB0_387 + //0x00002df6 LBB0_572 + 0x4d, 0x89, 0x33, //0x00002df6 movq %r14, (%r11) + //0x00002df9 LBB0_573 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002df9 movq $-1, %r15 + 0xe9, 0x33, 0x07, 0x00, 0x00, //0x00002e00 jmp LBB0_646 + //0x00002e05 LBB0_574 + 0x48, 0x8d, 0x48, 0x04, //0x00002e05 leaq $4(%rax), %rcx + 0xe9, 0x36, 0x01, 0x00, 0x00, //0x00002e09 jmp LBB0_589 + //0x00002e0e LBB0_662 + 0x49, 0xc7, 0xc7, 0xf9, 0xff, 0xff, 0xff, //0x00002e0e movq $-7, %r15 + 0xe9, 0x1e, 0x07, 0x00, 0x00, //0x00002e15 jmp LBB0_646 + //0x00002e1a LBB0_386 + 0x49, 0x83, 0xff, 0xff, //0x00002e1a cmpq $-1, %r15 + 0x48, 0x8b, 0x14, 0x24, //0x00002e1e movq (%rsp), %rdx + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002e22 jne LBB0_388 + //0x00002e28 LBB0_387 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e28 movq $-1, %r15 + 0x4c, 0x89, 0xe2, //0x00002e2f movq %r12, %rdx + //0x00002e32 LBB0_388 + 0x49, 0x89, 0x13, //0x00002e32 movq %rdx, (%r11) + 0xe9, 0xfe, 0x06, 0x00, 0x00, //0x00002e35 jmp LBB0_646 + //0x00002e3a LBB0_248 + 0x49, 0x83, 0xc0, 0xff, //0x00002e3a addq $-1, %r8 + 0x4d, 0x89, 0xc7, //0x00002e3e movq %r8, %r15 + 0xe9, 0xf2, 0x06, 0x00, 0x00, //0x00002e41 jmp LBB0_646 + //0x00002e46 LBB0_575 + 0x49, 0x89, 0x03, //0x00002e46 movq %rax, (%r11) + 0xe9, 0xe3, 0x06, 0x00, 0x00, //0x00002e49 jmp LBB0_645 + //0x00002e4e LBB0_576 + 0x4c, 0x89, 0xe9, //0x00002e4e movq %r13, %rcx + 0x4d, 0x89, 0xdd, //0x00002e51 movq %r11, %r13 + 0x4c, 0x8b, 0x41, 0x08, //0x00002e54 movq $8(%rcx), %r8 + 0x4d, 0x89, 0xc6, //0x00002e58 movq %r8, %r14 + 0x49, 0x29, 0xd6, //0x00002e5b subq %rdx, %r14 + 0x49, 0x83, 0xfe, 0x20, //0x00002e5e cmpq $32, %r14 + 0x0f, 0x8c, 0x52, 0x09, 0x00, 0x00, //0x00002e62 jl LBB0_681 + 0x4d, 0x8d, 0x0c, 0x02, //0x00002e68 leaq (%r10,%rax), %r9 + 0x49, 0x29, 0xc0, //0x00002e6c subq %rax, %r8 + 0xbb, 0x1f, 0x00, 0x00, 0x00, //0x00002e6f movl $31, %ebx + 0x45, 0x31, 0xf6, //0x00002e74 xorl %r14d, %r14d + 0xc5, 0xfe, 0x6f, 0x05, 0x01, 0xd2, 0xff, 0xff, //0x00002e77 vmovdqu $-11775(%rip), %ymm0 /* LCPI0_7+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x19, 0xd2, 0xff, 0xff, //0x00002e7f vmovdqu $-11751(%rip), %ymm1 /* LCPI0_8+0(%rip) */ + 0x45, 0x31, 0xe4, //0x00002e87 xorl %r12d, %r12d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e8a .p2align 4, 0x90 + //0x00002e90 LBB0_578 + 0xc4, 0x81, 0x7e, 0x6f, 0x54, 0x31, 0x01, //0x00002e90 vmovdqu $1(%r9,%r14), %ymm2 + 0xc5, 0xed, 0x74, 0xd8, //0x00002e97 vpcmpeqb %ymm0, %ymm2, %ymm3 + 0xc5, 0x7d, 0xd7, 0xdb, //0x00002e9b vpmovmskb %ymm3, %r11d + 0xc5, 0xed, 0x74, 0xd1, //0x00002e9f vpcmpeqb %ymm1, %ymm2, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00002ea3 vpmovmskb %ymm2, %ecx + 0x85, 0xc9, //0x00002ea7 testl %ecx, %ecx + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00002ea9 jne LBB0_581 + 0x4d, 0x85, 0xe4, //0x00002eaf testq %r12, %r12 + 0x0f, 0x85, 0x08, 0x00, 0x00, 0x00, //0x00002eb2 jne LBB0_581 + 0x45, 0x31, 0xe4, //0x00002eb8 xorl %r12d, %r12d + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00002ebb jmp LBB0_582 + //0x00002ec0 LBB0_581 + 0x44, 0x89, 0xe6, //0x00002ec0 movl %r12d, %esi + 0xf7, 0xd6, //0x00002ec3 notl %esi + 0x21, 0xce, //0x00002ec5 andl %ecx, %esi + 0x8d, 0x14, 0x36, //0x00002ec7 leal (%rsi,%rsi), %edx + 0x44, 0x09, 0xe2, //0x00002eca orl %r12d, %edx + 0x89, 0xd7, //0x00002ecd movl %edx, %edi + 0xf7, 0xd7, //0x00002ecf notl %edi + 0x21, 0xcf, //0x00002ed1 andl %ecx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002ed3 andl $-1431655766, %edi + 0x45, 0x31, 0xe4, //0x00002ed9 xorl %r12d, %r12d + 0x01, 0xf7, //0x00002edc addl %esi, %edi + 0x41, 0x0f, 0x92, 0xc4, //0x00002ede setb %r12b + 0x01, 0xff, //0x00002ee2 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002ee4 xorl $1431655765, %edi + 0x21, 0xd7, //0x00002eea andl %edx, %edi + 0xf7, 0xd7, //0x00002eec notl %edi + 0x41, 0x21, 0xfb, //0x00002eee andl %edi, %r11d + //0x00002ef1 LBB0_582 + 0x4d, 0x85, 0xdb, //0x00002ef1 testq %r11, %r11 + 0x0f, 0x85, 0xfc, 0x05, 0x00, 0x00, //0x00002ef4 jne LBB0_640 + 0x49, 0x83, 0xc6, 0x20, //0x00002efa addq $32, %r14 + 0x49, 0x8d, 0x0c, 0x18, //0x00002efe leaq (%r8,%rbx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00002f02 addq $-32, %rcx + 0x48, 0x83, 0xc3, 0xe0, //0x00002f06 addq $-32, %rbx + 0x48, 0x83, 0xf9, 0x3f, //0x00002f0a cmpq $63, %rcx + 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x00002f0e jg LBB0_578 + 0x4d, 0x85, 0xe4, //0x00002f14 testq %r12, %r12 + 0x0f, 0x85, 0xfd, 0x08, 0x00, 0x00, //0x00002f17 jne LBB0_685 + 0x4b, 0x8d, 0x14, 0x0e, //0x00002f1d leaq (%r14,%r9), %rdx + 0x48, 0x83, 0xc2, 0x01, //0x00002f21 addq $1, %rdx + 0x49, 0xf7, 0xd6, //0x00002f25 notq %r14 + 0x4d, 0x01, 0xc6, //0x00002f28 addq %r8, %r14 + //0x00002f2b LBB0_586 + 0x4d, 0x85, 0xf6, //0x00002f2b testq %r14, %r14 + 0x0f, 0x8e, 0x04, 0x06, 0x00, 0x00, //0x00002f2e jle LBB0_646 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002f34 movq $-1, %r15 + 0xe9, 0x25, 0x06, 0x00, 0x00, //0x00002f3b jmp LBB0_648 + //0x00002f40 LBB0_588 + 0x48, 0x8d, 0x48, 0x05, //0x00002f40 leaq $5(%rax), %rcx + //0x00002f44 LBB0_589 + 0x49, 0x3b, 0x4d, 0x08, //0x00002f44 cmpq $8(%r13), %rcx + 0x0f, 0x87, 0xea, 0x05, 0x00, 0x00, //0x00002f48 ja LBB0_646 + 0x49, 0x89, 0x0b, //0x00002f4e movq %rcx, (%r11) + 0x49, 0x89, 0xc7, //0x00002f51 movq %rax, %r15 + 0xe9, 0xdf, 0x05, 0x00, 0x00, //0x00002f54 jmp LBB0_646 + //0x00002f59 LBB0_591 + 0x4c, 0x89, 0x5c, 0x24, 0x08, //0x00002f59 movq %r11, $8(%rsp) + 0x4d, 0x8b, 0x75, 0x08, //0x00002f5e movq $8(%r13), %r14 + 0x49, 0x29, 0xd6, //0x00002f62 subq %rdx, %r14 + 0x49, 0x01, 0xd2, //0x00002f65 addq %rdx, %r10 + 0x45, 0x31, 0xdb, //0x00002f68 xorl %r11d, %r11d + 0xc5, 0xfe, 0x6f, 0x05, 0x2d, 0xd1, 0xff, 0xff, //0x00002f6b vmovdqu $-11987(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x05, 0xd1, 0xff, 0xff, //0x00002f73 vmovdqu $-12027(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x00002f7b vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0x39, 0xd1, 0xff, 0xff, //0x00002f7f vmovdqu $-11975(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x51, 0xd1, 0xff, 0xff, //0x00002f87 vmovdqu $-11951(%rip), %ymm4 /* LCPI0_10+0(%rip) */ + 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x00002f8f vpxor %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xe4, //0x00002f94 xorl %r12d, %r12d + 0x45, 0x31, 0xc9, //0x00002f97 xorl %r9d, %r9d + 0x31, 0xd2, //0x00002f9a xorl %edx, %edx + 0x49, 0x83, 0xfe, 0x40, //0x00002f9c cmpq $64, %r14 + 0x0f, 0x8c, 0x46, 0x01, 0x00, 0x00, //0x00002fa0 jl LBB0_600 + //0x00002fa6 LBB0_594 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3a, //0x00002fa6 vmovdqu (%r10), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x72, 0x20, //0x00002fab vmovdqu $32(%r10), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x00002fb1 vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00002fb5 vpmovmskb %ymm8, %esi + 0xc5, 0x4d, 0x74, 0xc0, //0x00002fba vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00002fbe vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00002fc3 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00002fc7 orq %rcx, %rsi + 0x48, 0x89, 0xf1, //0x00002fca movq %rsi, %rcx + 0x4d, 0x89, 0xe8, //0x00002fcd movq %r13, %r8 + 0x4c, 0x09, 0xe1, //0x00002fd0 orq %r12, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00002fd3 jne LBB0_596 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00002fd9 movq $-1, %rsi + 0x45, 0x31, 0xe4, //0x00002fe0 xorl %r12d, %r12d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00002fe3 jmp LBB0_597 + //0x00002fe8 LBB0_596 + 0x4c, 0x89, 0xe1, //0x00002fe8 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00002feb notq %rcx + 0x48, 0x21, 0xf1, //0x00002fee andq %rsi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00002ff1 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xe5, //0x00002ff5 orq %r12, %r13 + 0x4c, 0x89, 0xeb, //0x00002ff8 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00002ffb notq %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002ffe movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00003008 andq %rdi, %rsi + 0x48, 0x21, 0xde, //0x0000300b andq %rbx, %rsi + 0x45, 0x31, 0xe4, //0x0000300e xorl %r12d, %r12d + 0x48, 0x01, 0xce, //0x00003011 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc4, //0x00003014 setb %r12b + 0x48, 0x01, 0xf6, //0x00003018 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000301b movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00003025 xorq %rcx, %rsi + 0x4c, 0x21, 0xee, //0x00003028 andq %r13, %rsi + 0x48, 0xf7, 0xd6, //0x0000302b notq %rsi + //0x0000302e LBB0_597 + 0xc5, 0x4d, 0x74, 0xc1, //0x0000302e vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00003032 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00003037 shlq $32, %rcx + 0xc5, 0x45, 0x74, 0xc1, //0x0000303b vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf8, //0x0000303f vpmovmskb %ymm8, %edi + 0x48, 0x09, 0xcf, //0x00003044 orq %rcx, %rdi + 0x48, 0x21, 0xf7, //0x00003047 andq %rsi, %rdi + 0xc4, 0xe1, 0xf9, 0x6e, 0xef, //0x0000304a vmovq %rdi, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x0000304f vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x00003055 vmovq %xmm5, %r13 + 0x4d, 0x31, 0xdd, //0x0000305a xorq %r11, %r13 + 0xc5, 0xc5, 0x74, 0xeb, //0x0000305d vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xfd, //0x00003061 vpmovmskb %ymm5, %edi + 0xc5, 0xcd, 0x74, 0xeb, //0x00003065 vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xcd, //0x00003069 vpmovmskb %ymm5, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x0000306d shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00003071 orq %rcx, %rdi + 0x4c, 0x89, 0xe9, //0x00003074 movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00003077 notq %rcx + 0x48, 0x21, 0xcf, //0x0000307a andq %rcx, %rdi + 0xc5, 0xc5, 0x74, 0xec, //0x0000307d vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xdd, //0x00003081 vpmovmskb %ymm5, %ebx + 0xc5, 0xcd, 0x74, 0xec, //0x00003085 vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xf5, //0x00003089 vpmovmskb %ymm5, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x0000308d shlq $32, %rsi + 0x48, 0x09, 0xf3, //0x00003091 orq %rsi, %rbx + 0x48, 0x21, 0xcb, //0x00003094 andq %rcx, %rbx + 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00003097 je LBB0_592 + 0x90, 0x90, 0x90, //0x0000309d .p2align 4, 0x90 + //0x000030a0 LBB0_598 + 0x48, 0x8d, 0x4b, 0xff, //0x000030a0 leaq $-1(%rbx), %rcx + 0x48, 0x89, 0xce, //0x000030a4 movq %rcx, %rsi + 0x48, 0x21, 0xfe, //0x000030a7 andq %rdi, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x000030aa popcntq %rsi, %rsi + 0x4c, 0x01, 0xce, //0x000030af addq %r9, %rsi + 0x48, 0x39, 0xd6, //0x000030b2 cmpq %rdx, %rsi + 0x0f, 0x86, 0x00, 0x04, 0x00, 0x00, //0x000030b5 jbe LBB0_639 + 0x48, 0x83, 0xc2, 0x01, //0x000030bb addq $1, %rdx + 0x48, 0x21, 0xcb, //0x000030bf andq %rcx, %rbx + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x000030c2 jne LBB0_598 + //0x000030c8 LBB0_592 + 0x49, 0xc1, 0xfd, 0x3f, //0x000030c8 sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xcf, //0x000030cc popcntq %rdi, %rcx + 0x49, 0x01, 0xc9, //0x000030d1 addq %rcx, %r9 + 0x49, 0x83, 0xc2, 0x40, //0x000030d4 addq $64, %r10 + 0x49, 0x83, 0xc6, 0xc0, //0x000030d8 addq $-64, %r14 + 0x4d, 0x89, 0xeb, //0x000030dc movq %r13, %r11 + 0x4d, 0x89, 0xc5, //0x000030df movq %r8, %r13 + 0x49, 0x83, 0xfe, 0x40, //0x000030e2 cmpq $64, %r14 + 0x0f, 0x8d, 0xba, 0xfe, 0xff, 0xff, //0x000030e6 jge LBB0_594 + //0x000030ec LBB0_600 + 0x4d, 0x85, 0xf6, //0x000030ec testq %r14, %r14 + 0x0f, 0x8e, 0xcd, 0x06, 0x00, 0x00, //0x000030ef jle LBB0_682 + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x000030f5 vmovdqu %ymm9, $96(%rsp) + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x000030fb vmovdqu %ymm9, $64(%rsp) + 0x44, 0x89, 0xd1, //0x00003101 movl %r10d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00003104 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x0000310a cmpl $4033, %ecx + 0x0f, 0x82, 0x90, 0xfe, 0xff, 0xff, //0x00003110 jb LBB0_594 + 0x49, 0x83, 0xfe, 0x20, //0x00003116 cmpq $32, %r14 + 0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x0000311a jb LBB0_604 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2a, //0x00003120 vmovdqu (%r10), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x00003125 vmovdqu %ymm5, $64(%rsp) + 0x49, 0x83, 0xc2, 0x20, //0x0000312b addq $32, %r10 + 0x49, 0x8d, 0x7e, 0xe0, //0x0000312f leaq $-32(%r14), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00003133 leaq $96(%rsp), %rsi + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00003138 jmp LBB0_605 + //0x0000313d LBB0_604 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x0000313d leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xf7, //0x00003142 movq %r14, %rdi + //0x00003145 LBB0_605 + 0x48, 0x83, 0xff, 0x10, //0x00003145 cmpq $16, %rdi + 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x00003149 jb LBB0_606 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2a, //0x0000314f vmovdqu (%r10), %xmm5 + 0xc5, 0xfa, 0x7f, 0x2e, //0x00003154 vmovdqu %xmm5, (%rsi) + 0x49, 0x83, 0xc2, 0x10, //0x00003158 addq $16, %r10 + 0x48, 0x83, 0xc6, 0x10, //0x0000315c addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00003160 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00003164 cmpq $8, %rdi + 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x00003168 jae LBB0_611 + //0x0000316e LBB0_607 + 0x48, 0x83, 0xff, 0x04, //0x0000316e cmpq $4, %rdi + 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x00003172 jl LBB0_608 + //0x00003178 LBB0_612 + 0x41, 0x8b, 0x0a, //0x00003178 movl (%r10), %ecx + 0x89, 0x0e, //0x0000317b movl %ecx, (%rsi) + 0x49, 0x83, 0xc2, 0x04, //0x0000317d addq $4, %r10 + 0x48, 0x83, 0xc6, 0x04, //0x00003181 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00003185 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00003189 cmpq $2, %rdi + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000318d jae LBB0_613 + //0x00003193 LBB0_609 + 0x4c, 0x89, 0xd3, //0x00003193 movq %r10, %rbx + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x00003196 leaq $64(%rsp), %r10 + 0x48, 0x85, 0xff, //0x0000319b testq %rdi, %rdi + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x0000319e jne LBB0_614 + 0xe9, 0xfd, 0xfd, 0xff, 0xff, //0x000031a4 jmp LBB0_594 + //0x000031a9 LBB0_606 + 0x48, 0x83, 0xff, 0x08, //0x000031a9 cmpq $8, %rdi + 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x000031ad jb LBB0_607 + //0x000031b3 LBB0_611 + 0x49, 0x8b, 0x0a, //0x000031b3 movq (%r10), %rcx + 0x48, 0x89, 0x0e, //0x000031b6 movq %rcx, (%rsi) + 0x49, 0x83, 0xc2, 0x08, //0x000031b9 addq $8, %r10 + 0x48, 0x83, 0xc6, 0x08, //0x000031bd addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x000031c1 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000031c5 cmpq $4, %rdi + 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x000031c9 jge LBB0_612 + //0x000031cf LBB0_608 + 0x48, 0x83, 0xff, 0x02, //0x000031cf cmpq $2, %rdi + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x000031d3 jb LBB0_609 + //0x000031d9 LBB0_613 + 0x41, 0x0f, 0xb7, 0x0a, //0x000031d9 movzwl (%r10), %ecx + 0x66, 0x89, 0x0e, //0x000031dd movw %cx, (%rsi) + 0x49, 0x83, 0xc2, 0x02, //0x000031e0 addq $2, %r10 + 0x48, 0x83, 0xc6, 0x02, //0x000031e4 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x000031e8 addq $-2, %rdi + 0x4c, 0x89, 0xd3, //0x000031ec movq %r10, %rbx + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x000031ef leaq $64(%rsp), %r10 + 0x48, 0x85, 0xff, //0x000031f4 testq %rdi, %rdi + 0x0f, 0x84, 0xa9, 0xfd, 0xff, 0xff, //0x000031f7 je LBB0_594 + //0x000031fd LBB0_614 + 0x8a, 0x0b, //0x000031fd movb (%rbx), %cl + 0x88, 0x0e, //0x000031ff movb %cl, (%rsi) + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x00003201 leaq $64(%rsp), %r10 + 0xe9, 0x9b, 0xfd, 0xff, 0xff, //0x00003206 jmp LBB0_594 + //0x0000320b LBB0_615 + 0x4c, 0x89, 0x5c, 0x24, 0x08, //0x0000320b movq %r11, $8(%rsp) + 0x4d, 0x8b, 0x75, 0x08, //0x00003210 movq $8(%r13), %r14 + 0x49, 0x29, 0xd6, //0x00003214 subq %rdx, %r14 + 0x49, 0x01, 0xd2, //0x00003217 addq %rdx, %r10 + 0x45, 0x31, 0xdb, //0x0000321a xorl %r11d, %r11d + 0xc5, 0xfe, 0x6f, 0x05, 0x7b, 0xce, 0xff, 0xff, //0x0000321d vmovdqu $-12677(%rip), %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x0d, 0x53, 0xce, 0xff, 0xff, //0x00003225 vmovdqu $-12717(%rip), %ymm1 /* LCPI0_7+0(%rip) */ + 0xc5, 0xe9, 0x76, 0xd2, //0x0000322d vpcmpeqd %xmm2, %xmm2, %xmm2 + 0xc5, 0xfe, 0x6f, 0x1d, 0xc7, 0xce, 0xff, 0xff, //0x00003231 vmovdqu $-12601(%rip), %ymm3 /* LCPI0_11+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x1f, 0xce, 0xff, 0xff, //0x00003239 vmovdqu $-12769(%rip), %ymm4 /* LCPI0_3+0(%rip) */ + 0xc4, 0x41, 0x31, 0xef, 0xc9, //0x00003241 vpxor %xmm9, %xmm9, %xmm9 + 0x45, 0x31, 0xe4, //0x00003246 xorl %r12d, %r12d + 0x45, 0x31, 0xc9, //0x00003249 xorl %r9d, %r9d + 0x31, 0xd2, //0x0000324c xorl %edx, %edx + 0x49, 0x83, 0xfe, 0x40, //0x0000324e cmpq $64, %r14 + 0x0f, 0x8c, 0x44, 0x01, 0x00, 0x00, //0x00003252 jl LBB0_624 + //0x00003258 LBB0_618 + 0xc4, 0xc1, 0x7e, 0x6f, 0x3a, //0x00003258 vmovdqu (%r10), %ymm7 + 0xc4, 0xc1, 0x7e, 0x6f, 0x72, 0x20, //0x0000325d vmovdqu $32(%r10), %ymm6 + 0xc5, 0x45, 0x74, 0xc0, //0x00003263 vpcmpeqb %ymm0, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf0, //0x00003267 vpmovmskb %ymm8, %esi + 0xc5, 0x4d, 0x74, 0xc0, //0x0000326c vpcmpeqb %ymm0, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x00003270 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00003275 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00003279 orq %rcx, %rsi + 0x48, 0x89, 0xf1, //0x0000327c movq %rsi, %rcx + 0x4d, 0x89, 0xe8, //0x0000327f movq %r13, %r8 + 0x4c, 0x09, 0xe1, //0x00003282 orq %r12, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00003285 jne LBB0_620 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000328b movq $-1, %rsi + 0x45, 0x31, 0xe4, //0x00003292 xorl %r12d, %r12d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00003295 jmp LBB0_621 + //0x0000329a LBB0_620 + 0x4c, 0x89, 0xe1, //0x0000329a movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x0000329d notq %rcx + 0x48, 0x21, 0xf1, //0x000032a0 andq %rsi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x000032a3 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xe5, //0x000032a7 orq %r12, %r13 + 0x4c, 0x89, 0xeb, //0x000032aa movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x000032ad notq %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000032b0 movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x000032ba andq %rdi, %rsi + 0x48, 0x21, 0xde, //0x000032bd andq %rbx, %rsi + 0x45, 0x31, 0xe4, //0x000032c0 xorl %r12d, %r12d + 0x48, 0x01, 0xce, //0x000032c3 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc4, //0x000032c6 setb %r12b + 0x48, 0x01, 0xf6, //0x000032ca addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000032cd movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x000032d7 xorq %rcx, %rsi + 0x4c, 0x21, 0xee, //0x000032da andq %r13, %rsi + 0x48, 0xf7, 0xd6, //0x000032dd notq %rsi + //0x000032e0 LBB0_621 + 0xc5, 0x4d, 0x74, 0xc1, //0x000032e0 vpcmpeqb %ymm1, %ymm6, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xc8, //0x000032e4 vpmovmskb %ymm8, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x000032e9 shlq $32, %rcx + 0xc5, 0x45, 0x74, 0xc1, //0x000032ed vpcmpeqb %ymm1, %ymm7, %ymm8 + 0xc4, 0xc1, 0x7d, 0xd7, 0xf8, //0x000032f1 vpmovmskb %ymm8, %edi + 0x48, 0x09, 0xcf, //0x000032f6 orq %rcx, %rdi + 0x48, 0x21, 0xf7, //0x000032f9 andq %rsi, %rdi + 0xc4, 0xe1, 0xf9, 0x6e, 0xef, //0x000032fc vmovq %rdi, %xmm5 + 0xc4, 0xe3, 0x51, 0x44, 0xea, 0x00, //0x00003301 vpclmulqdq $0, %xmm2, %xmm5, %xmm5 + 0xc4, 0xc1, 0xf9, 0x7e, 0xed, //0x00003307 vmovq %xmm5, %r13 + 0x4d, 0x31, 0xdd, //0x0000330c xorq %r11, %r13 + 0xc5, 0xc5, 0x74, 0xeb, //0x0000330f vpcmpeqb %ymm3, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xfd, //0x00003313 vpmovmskb %ymm5, %edi + 0xc5, 0xcd, 0x74, 0xeb, //0x00003317 vpcmpeqb %ymm3, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xcd, //0x0000331b vpmovmskb %ymm5, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x0000331f shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00003323 orq %rcx, %rdi + 0x4c, 0x89, 0xe9, //0x00003326 movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00003329 notq %rcx + 0x48, 0x21, 0xcf, //0x0000332c andq %rcx, %rdi + 0xc5, 0xc5, 0x74, 0xec, //0x0000332f vpcmpeqb %ymm4, %ymm7, %ymm5 + 0xc5, 0xfd, 0xd7, 0xdd, //0x00003333 vpmovmskb %ymm5, %ebx + 0xc5, 0xcd, 0x74, 0xec, //0x00003337 vpcmpeqb %ymm4, %ymm6, %ymm5 + 0xc5, 0xfd, 0xd7, 0xf5, //0x0000333b vpmovmskb %ymm5, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x0000333f shlq $32, %rsi + 0x48, 0x09, 0xf3, //0x00003343 orq %rsi, %rbx + 0x48, 0x21, 0xcb, //0x00003346 andq %rcx, %rbx + 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x00003349 je LBB0_616 + 0x90, //0x0000334f .p2align 4, 0x90 + //0x00003350 LBB0_622 + 0x48, 0x8d, 0x4b, 0xff, //0x00003350 leaq $-1(%rbx), %rcx + 0x48, 0x89, 0xce, //0x00003354 movq %rcx, %rsi + 0x48, 0x21, 0xfe, //0x00003357 andq %rdi, %rsi + 0xf3, 0x48, 0x0f, 0xb8, 0xf6, //0x0000335a popcntq %rsi, %rsi + 0x4c, 0x01, 0xce, //0x0000335f addq %r9, %rsi + 0x48, 0x39, 0xd6, //0x00003362 cmpq %rdx, %rsi + 0x0f, 0x86, 0x50, 0x01, 0x00, 0x00, //0x00003365 jbe LBB0_639 + 0x48, 0x83, 0xc2, 0x01, //0x0000336b addq $1, %rdx + 0x48, 0x21, 0xcb, //0x0000336f andq %rcx, %rbx + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00003372 jne LBB0_622 + //0x00003378 LBB0_616 + 0x49, 0xc1, 0xfd, 0x3f, //0x00003378 sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xcf, //0x0000337c popcntq %rdi, %rcx + 0x49, 0x01, 0xc9, //0x00003381 addq %rcx, %r9 + 0x49, 0x83, 0xc2, 0x40, //0x00003384 addq $64, %r10 + 0x49, 0x83, 0xc6, 0xc0, //0x00003388 addq $-64, %r14 + 0x4d, 0x89, 0xeb, //0x0000338c movq %r13, %r11 + 0x4d, 0x89, 0xc5, //0x0000338f movq %r8, %r13 + 0x49, 0x83, 0xfe, 0x40, //0x00003392 cmpq $64, %r14 + 0x0f, 0x8d, 0xbc, 0xfe, 0xff, 0xff, //0x00003396 jge LBB0_618 + //0x0000339c LBB0_624 + 0x4d, 0x85, 0xf6, //0x0000339c testq %r14, %r14 + 0x0f, 0x8e, 0x1d, 0x04, 0x00, 0x00, //0x0000339f jle LBB0_682 + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x60, //0x000033a5 vmovdqu %ymm9, $96(%rsp) + 0xc5, 0x7e, 0x7f, 0x4c, 0x24, 0x40, //0x000033ab vmovdqu %ymm9, $64(%rsp) + 0x44, 0x89, 0xd1, //0x000033b1 movl %r10d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000033b4 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000033ba cmpl $4033, %ecx + 0x0f, 0x82, 0x92, 0xfe, 0xff, 0xff, //0x000033c0 jb LBB0_618 + 0x49, 0x83, 0xfe, 0x20, //0x000033c6 cmpq $32, %r14 + 0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x000033ca jb LBB0_628 + 0xc4, 0xc1, 0x7e, 0x6f, 0x2a, //0x000033d0 vmovdqu (%r10), %ymm5 + 0xc5, 0xfe, 0x7f, 0x6c, 0x24, 0x40, //0x000033d5 vmovdqu %ymm5, $64(%rsp) + 0x49, 0x83, 0xc2, 0x20, //0x000033db addq $32, %r10 + 0x49, 0x8d, 0x7e, 0xe0, //0x000033df leaq $-32(%r14), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x000033e3 leaq $96(%rsp), %rsi + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x000033e8 jmp LBB0_629 + //0x000033ed LBB0_628 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x000033ed leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xf7, //0x000033f2 movq %r14, %rdi + //0x000033f5 LBB0_629 + 0x48, 0x83, 0xff, 0x10, //0x000033f5 cmpq $16, %rdi + 0x0f, 0x82, 0x5a, 0x00, 0x00, 0x00, //0x000033f9 jb LBB0_630 + 0xc4, 0xc1, 0x7a, 0x6f, 0x2a, //0x000033ff vmovdqu (%r10), %xmm5 + 0xc5, 0xfa, 0x7f, 0x2e, //0x00003404 vmovdqu %xmm5, (%rsi) + 0x49, 0x83, 0xc2, 0x10, //0x00003408 addq $16, %r10 + 0x48, 0x83, 0xc6, 0x10, //0x0000340c addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00003410 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00003414 cmpq $8, %rdi + 0x0f, 0x83, 0x45, 0x00, 0x00, 0x00, //0x00003418 jae LBB0_635 + //0x0000341e LBB0_631 + 0x48, 0x83, 0xff, 0x04, //0x0000341e cmpq $4, %rdi + 0x0f, 0x8c, 0x57, 0x00, 0x00, 0x00, //0x00003422 jl LBB0_632 + //0x00003428 LBB0_636 + 0x41, 0x8b, 0x0a, //0x00003428 movl (%r10), %ecx + 0x89, 0x0e, //0x0000342b movl %ecx, (%rsi) + 0x49, 0x83, 0xc2, 0x04, //0x0000342d addq $4, %r10 + 0x48, 0x83, 0xc6, 0x04, //0x00003431 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00003435 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00003439 cmpq $2, %rdi + 0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000343d jae LBB0_637 + //0x00003443 LBB0_633 + 0x4c, 0x89, 0xd3, //0x00003443 movq %r10, %rbx + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x00003446 leaq $64(%rsp), %r10 + 0x48, 0x85, 0xff, //0x0000344b testq %rdi, %rdi + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x0000344e jne LBB0_638 + 0xe9, 0xff, 0xfd, 0xff, 0xff, //0x00003454 jmp LBB0_618 + //0x00003459 LBB0_630 + 0x48, 0x83, 0xff, 0x08, //0x00003459 cmpq $8, %rdi + 0x0f, 0x82, 0xbb, 0xff, 0xff, 0xff, //0x0000345d jb LBB0_631 + //0x00003463 LBB0_635 + 0x49, 0x8b, 0x0a, //0x00003463 movq (%r10), %rcx + 0x48, 0x89, 0x0e, //0x00003466 movq %rcx, (%rsi) + 0x49, 0x83, 0xc2, 0x08, //0x00003469 addq $8, %r10 + 0x48, 0x83, 0xc6, 0x08, //0x0000346d addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x00003471 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00003475 cmpq $4, %rdi + 0x0f, 0x8d, 0xa9, 0xff, 0xff, 0xff, //0x00003479 jge LBB0_636 + //0x0000347f LBB0_632 + 0x48, 0x83, 0xff, 0x02, //0x0000347f cmpq $2, %rdi + 0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00003483 jb LBB0_633 + //0x00003489 LBB0_637 + 0x41, 0x0f, 0xb7, 0x0a, //0x00003489 movzwl (%r10), %ecx + 0x66, 0x89, 0x0e, //0x0000348d movw %cx, (%rsi) + 0x49, 0x83, 0xc2, 0x02, //0x00003490 addq $2, %r10 + 0x48, 0x83, 0xc6, 0x02, //0x00003494 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x00003498 addq $-2, %rdi + 0x4c, 0x89, 0xd3, //0x0000349c movq %r10, %rbx + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x0000349f leaq $64(%rsp), %r10 + 0x48, 0x85, 0xff, //0x000034a4 testq %rdi, %rdi + 0x0f, 0x84, 0xab, 0xfd, 0xff, 0xff, //0x000034a7 je LBB0_618 + //0x000034ad LBB0_638 + 0x8a, 0x0b, //0x000034ad movb (%rbx), %cl + 0x88, 0x0e, //0x000034af movb %cl, (%rsi) + 0x4c, 0x8d, 0x54, 0x24, 0x40, //0x000034b1 leaq $64(%rsp), %r10 + 0xe9, 0x9d, 0xfd, 0xff, 0xff, //0x000034b6 jmp LBB0_618 + //0x000034bb LBB0_639 + 0x49, 0x8b, 0x48, 0x08, //0x000034bb movq $8(%r8), %rcx + 0x48, 0x0f, 0xbc, 0xd3, //0x000034bf bsfq %rbx, %rdx + 0x4c, 0x29, 0xf2, //0x000034c3 subq %r14, %rdx + 0x48, 0x01, 0xd1, //0x000034c6 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000034c9 addq $1, %rcx + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000034cd movq $8(%rsp), %r11 + 0x49, 0x89, 0x0b, //0x000034d2 movq %rcx, (%r11) + 0x49, 0x8b, 0x50, 0x08, //0x000034d5 movq $8(%r8), %rdx + 0x48, 0x39, 0xd1, //0x000034d9 cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x000034dc cmovaq %rdx, %rcx + 0x49, 0x89, 0x0b, //0x000034e0 movq %rcx, (%r11) + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000034e3 movq $-1, %rcx + 0x48, 0x0f, 0x47, 0xc1, //0x000034ea cmovaq %rcx, %rax + 0x49, 0x89, 0xc7, //0x000034ee movq %rax, %r15 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x000034f1 jmp LBB0_646 + //0x000034f6 LBB0_640 + 0x41, 0x0f, 0xbc, 0xcb, //0x000034f6 bsfl %r11d, %ecx + 0x48, 0x01, 0xc1, //0x000034fa addq %rax, %rcx + 0x4c, 0x01, 0xf1, //0x000034fd addq %r14, %rcx + 0x48, 0x83, 0xc1, 0x02, //0x00003500 addq $2, %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00003504 movq %rcx, (%r13) + 0x49, 0x89, 0xc7, //0x00003508 movq %rax, %r15 + 0xe9, 0x28, 0x00, 0x00, 0x00, //0x0000350b jmp LBB0_646 + //0x00003510 LBB0_641 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003510 movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003517 jmp LBB0_644 + //0x0000351c LBB0_643 + 0x4c, 0x89, 0xc1, //0x0000351c movq %r8, %rcx + //0x0000351f LBB0_644 + 0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000351f movq $8(%rsp), %rdx + 0x48, 0x8b, 0x02, //0x00003524 movq (%rdx), %rax + 0x48, 0x29, 0xc8, //0x00003527 subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x0000352a addq $-2, %rax + 0x48, 0x89, 0x02, //0x0000352e movq %rax, (%rdx) + //0x00003531 LBB0_645 + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x00003531 movq $-2, %r15 + //0x00003538 LBB0_646 + 0x4c, 0x89, 0xf8, //0x00003538 movq %r15, %rax + 0x48, 0x8d, 0x65, 0xd8, //0x0000353b leaq $-40(%rbp), %rsp + 0x5b, //0x0000353f popq %rbx + 0x41, 0x5c, //0x00003540 popq %r12 + 0x41, 0x5d, //0x00003542 popq %r13 + 0x41, 0x5e, //0x00003544 popq %r14 + 0x41, 0x5f, //0x00003546 popq %r15 + 0x5d, //0x00003548 popq %rbp + 0xc5, 0xf8, 0x77, //0x00003549 vzeroupper + 0xc3, //0x0000354c retq + //0x0000354d LBB0_647 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000354d movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00003554 movl $2, %esi + 0x48, 0x01, 0xf2, //0x00003559 addq %rsi, %rdx + 0x49, 0x01, 0xce, //0x0000355c addq %rcx, %r14 + 0x0f, 0x8e, 0xd3, 0xff, 0xff, 0xff, //0x0000355f jle LBB0_646 + //0x00003565 LBB0_648 + 0x0f, 0xb6, 0x0a, //0x00003565 movzbl (%rdx), %ecx + 0x80, 0xf9, 0x5c, //0x00003568 cmpb $92, %cl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x0000356b je LBB0_647 + 0x80, 0xf9, 0x22, //0x00003571 cmpb $34, %cl + 0x0f, 0x84, 0xf8, 0x01, 0x00, 0x00, //0x00003574 je LBB0_677 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000357a movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00003581 movl $1, %esi + 0x48, 0x01, 0xf2, //0x00003586 addq %rsi, %rdx + 0x49, 0x01, 0xce, //0x00003589 addq %rcx, %r14 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x0000358c jg LBB0_648 + 0xe9, 0xa1, 0xff, 0xff, 0xff, //0x00003592 jmp LBB0_646 + //0x00003597 LBB0_651 + 0x48, 0x8b, 0x14, 0x24, //0x00003597 movq (%rsp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x0000359b cmpq $-1, %rdx + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000359f jne LBB0_654 + 0x48, 0x0f, 0xbc, 0xd6, //0x000035a5 bsfq %rsi, %rdx + //0x000035a9 LBB0_653 + 0x4c, 0x01, 0xfa, //0x000035a9 addq %r15, %rdx + //0x000035ac LBB0_654 + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x000035ac movq $-2, %r15 + 0x4c, 0x8b, 0x5c, 0x24, 0x08, //0x000035b3 movq $8(%rsp), %r11 + 0x49, 0x89, 0x13, //0x000035b8 movq %rdx, (%r11) + 0xe9, 0x78, 0xff, 0xff, 0xff, //0x000035bb jmp LBB0_646 + //0x000035c0 LBB0_655 + 0x66, 0x0f, 0xbc, 0xc9, //0x000035c0 bsfw %cx, %cx + 0x0f, 0xb7, 0xf1, //0x000035c4 movzwl %cx, %esi + 0x4c, 0x29, 0xd2, //0x000035c7 subq %r10, %rdx + 0x48, 0x01, 0xf2, //0x000035ca addq %rsi, %rdx + 0x48, 0x8d, 0x0c, 0x1a, //0x000035cd leaq (%rdx,%rbx), %rcx + 0x49, 0x89, 0x0b, //0x000035d1 movq %rcx, (%r11) + 0x48, 0x85, 0xc9, //0x000035d4 testq %rcx, %rcx + 0x0f, 0x8e, 0xe3, 0xd0, 0xff, 0xff, //0x000035d7 jle LBB0_58 + 0x48, 0x8d, 0x0c, 0x13, //0x000035dd leaq (%rbx,%rdx), %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000035e1 addq $1, %rcx + 0x48, 0x01, 0xda, //0x000035e5 addq %rbx, %rdx + 0x48, 0x83, 0xc2, 0xff, //0x000035e8 addq $-1, %rdx + 0x48, 0x01, 0xf7, //0x000035ec addq %rsi, %rdi + 0x48, 0x01, 0xdf, //0x000035ef addq %rbx, %rdi + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035f2 movabsq $4294977024, %rsi + //0x000035fc LBB0_657 + 0x0f, 0xb6, 0x1f, //0x000035fc movzbl (%rdi), %ebx + 0x48, 0x83, 0xfb, 0x20, //0x000035ff cmpq $32, %rbx + 0x0f, 0x87, 0xb7, 0xd0, 0xff, 0xff, //0x00003603 ja LBB0_58 + 0x48, 0x0f, 0xa3, 0xde, //0x00003609 btq %rbx, %rsi + 0x0f, 0x83, 0xad, 0xd0, 0xff, 0xff, //0x0000360d jae LBB0_58 + 0x49, 0x89, 0x13, //0x00003613 movq %rdx, (%r11) + 0x48, 0x83, 0xc1, 0xff, //0x00003616 addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x0000361a addq $-1, %rdx + 0x48, 0x83, 0xc7, 0xff, //0x0000361e addq $-1, %rdi + 0x48, 0x83, 0xf9, 0x01, //0x00003622 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00003626 jg LBB0_657 + 0xe9, 0x8f, 0xd0, 0xff, 0xff, //0x0000362c jmp LBB0_58 + //0x00003631 LBB0_661 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003631 movq $-1, %rcx + 0xe9, 0x02, 0x01, 0x00, 0x00, //0x00003638 jmp LBB0_674 + //0x0000363d LBB0_663 + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x0000363d movq $-2, %r15 + 0x80, 0xfa, 0x61, //0x00003644 cmpb $97, %dl + 0x0f, 0x85, 0xeb, 0xfe, 0xff, 0xff, //0x00003647 jne LBB0_646 + 0x48, 0x8d, 0x41, 0x01, //0x0000364d leaq $1(%rcx), %rax + 0x49, 0x89, 0x03, //0x00003651 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x01, 0x6c, //0x00003654 cmpb $108, $1(%r8,%rcx) + 0x0f, 0x85, 0xd8, 0xfe, 0xff, 0xff, //0x0000365a jne LBB0_646 + 0x48, 0x8d, 0x41, 0x02, //0x00003660 leaq $2(%rcx), %rax + 0x49, 0x89, 0x03, //0x00003664 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x02, 0x73, //0x00003667 cmpb $115, $2(%r8,%rcx) + 0x0f, 0x85, 0xc5, 0xfe, 0xff, 0xff, //0x0000366d jne LBB0_646 + 0x48, 0x8d, 0x41, 0x03, //0x00003673 leaq $3(%rcx), %rax + 0x49, 0x89, 0x03, //0x00003677 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x03, 0x65, //0x0000367a cmpb $101, $3(%r8,%rcx) + 0x0f, 0x85, 0xb2, 0xfe, 0xff, 0xff, //0x00003680 jne LBB0_646 + 0x48, 0x83, 0xc1, 0x04, //0x00003686 addq $4, %rcx + 0x49, 0x89, 0x0b, //0x0000368a movq %rcx, (%r11) + 0xe9, 0xa6, 0xfe, 0xff, 0xff, //0x0000368d jmp LBB0_646 + //0x00003692 LBB0_299 + 0x4d, 0x89, 0x3b, //0x00003692 movq %r15, (%r11) + 0x43, 0x80, 0x3c, 0x38, 0x6e, //0x00003695 cmpb $110, (%r8,%r15) + 0x0f, 0x85, 0x91, 0xfe, 0xff, 0xff, //0x0000369a jne LBB0_645 + 0x49, 0x89, 0x0b, //0x000036a0 movq %rcx, (%r11) + 0x41, 0x80, 0x3c, 0x08, 0x75, //0x000036a3 cmpb $117, (%r8,%rcx) + 0x0f, 0x85, 0x83, 0xfe, 0xff, 0xff, //0x000036a8 jne LBB0_645 + 0x48, 0x8d, 0x41, 0x01, //0x000036ae leaq $1(%rcx), %rax + 0x49, 0x89, 0x03, //0x000036b2 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x01, 0x6c, //0x000036b5 cmpb $108, $1(%r8,%rcx) + 0x0f, 0x85, 0x70, 0xfe, 0xff, 0xff, //0x000036bb jne LBB0_645 + 0x48, 0x8d, 0x41, 0x02, //0x000036c1 leaq $2(%rcx), %rax + 0x49, 0x89, 0x03, //0x000036c5 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x02, 0x6c, //0x000036c8 cmpb $108, $2(%r8,%rcx) + 0x0f, 0x85, 0x5d, 0xfe, 0xff, 0xff, //0x000036ce jne LBB0_645 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x000036d4 jmp LBB0_672 + //0x000036d9 LBB0_668 + 0x4d, 0x89, 0x3b, //0x000036d9 movq %r15, (%r11) + 0x43, 0x80, 0x3c, 0x38, 0x74, //0x000036dc cmpb $116, (%r8,%r15) + 0x0f, 0x85, 0x4a, 0xfe, 0xff, 0xff, //0x000036e1 jne LBB0_645 + 0x49, 0x89, 0x0b, //0x000036e7 movq %rcx, (%r11) + 0x41, 0x80, 0x3c, 0x08, 0x72, //0x000036ea cmpb $114, (%r8,%rcx) + 0x0f, 0x85, 0x3c, 0xfe, 0xff, 0xff, //0x000036ef jne LBB0_645 + 0x48, 0x8d, 0x41, 0x01, //0x000036f5 leaq $1(%rcx), %rax + 0x49, 0x89, 0x03, //0x000036f9 movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x01, 0x75, //0x000036fc cmpb $117, $1(%r8,%rcx) + 0x0f, 0x85, 0x29, 0xfe, 0xff, 0xff, //0x00003702 jne LBB0_645 + 0x48, 0x8d, 0x41, 0x02, //0x00003708 leaq $2(%rcx), %rax + 0x49, 0x89, 0x03, //0x0000370c movq %rax, (%r11) + 0x41, 0x80, 0x7c, 0x08, 0x02, 0x65, //0x0000370f cmpb $101, $2(%r8,%rcx) + 0x0f, 0x85, 0x16, 0xfe, 0xff, 0xff, //0x00003715 jne LBB0_645 + //0x0000371b LBB0_672 + 0x48, 0x83, 0xc1, 0x03, //0x0000371b addq $3, %rcx + 0x49, 0x89, 0x0b, //0x0000371f movq %rcx, (%r11) + 0xe9, 0x0a, 0xfe, 0xff, 0xff, //0x00003722 jmp LBB0_645 + //0x00003727 LBB0_296 + 0x48, 0x83, 0xc1, 0xff, //0x00003727 addq $-1, %rcx + 0x49, 0x89, 0xcf, //0x0000372b movq %rcx, %r15 + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x0000372e jmp LBB0_646 + //0x00003733 LBB0_432 + 0x49, 0x83, 0xc7, 0xff, //0x00003733 addq $-1, %r15 + 0xe9, 0xfc, 0xfd, 0xff, 0xff, //0x00003737 jmp LBB0_646 + //0x0000373c LBB0_673 + 0x4c, 0x89, 0xe1, //0x0000373c movq %r12, %rcx + //0x0000373f LBB0_674 + 0x48, 0xf7, 0xd1, //0x0000373f notq %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00003742 movq $8(%rsp), %rax + 0x48, 0x01, 0x08, //0x00003747 addq %rcx, (%rax) + 0xe9, 0xe2, 0xfd, 0xff, 0xff, //0x0000374a jmp LBB0_645 + //0x0000374f LBB0_675 + 0x4c, 0x29, 0xd0, //0x0000374f subq %r10, %rax + 0x48, 0x01, 0xf0, //0x00003752 addq %rsi, %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00003755 movq $-1, %r15 + 0x48, 0x39, 0xd0, //0x0000375c cmpq %rdx, %rax + 0x0f, 0x82, 0x99, 0xcd, 0xff, 0xff, //0x0000375f jb LBB0_33 + 0xe9, 0xce, 0xfd, 0xff, 0xff, //0x00003765 jmp LBB0_646 + //0x0000376a LBB0_680 + 0x4d, 0x89, 0xc4, //0x0000376a movq %r8, %r12 + 0xe9, 0xb6, 0xf6, 0xff, 0xff, //0x0000376d jmp LBB0_387 + //0x00003772 LBB0_677 + 0x4c, 0x29, 0xd2, //0x00003772 subq %r10, %rdx + 0x48, 0x83, 0xc2, 0x01, //0x00003775 addq $1, %rdx + 0x49, 0x89, 0x55, 0x00, //0x00003779 movq %rdx, (%r13) + 0x49, 0x89, 0xc7, //0x0000377d movq %rax, %r15 + 0xe9, 0xb3, 0xfd, 0xff, 0xff, //0x00003780 jmp LBB0_646 + //0x00003785 LBB0_223 + 0x4c, 0x01, 0xfa, //0x00003785 addq %r15, %rdx + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x00003788 movq $-2, %r15 + 0x49, 0x89, 0x13, //0x0000378f movq %rdx, (%r11) + 0xe9, 0xa1, 0xfd, 0xff, 0xff, //0x00003792 jmp LBB0_646 + //0x00003797 LBB0_678 + 0x4c, 0x01, 0xd0, //0x00003797 addq %r10, %rax + 0x48, 0x85, 0xff, //0x0000379a testq %rdi, %rdi + 0x0f, 0x85, 0xe5, 0xcc, 0xff, 0xff, //0x0000379d jne LBB0_25 + 0xe9, 0x17, 0xcd, 0xff, 0xff, //0x000037a3 jmp LBB0_30 + //0x000037a8 LBB0_679 + 0x4c, 0x01, 0xd2, //0x000037a8 addq %r10, %rdx + 0x48, 0x83, 0xfe, 0x10, //0x000037ab cmpq $16, %rsi + 0x0f, 0x83, 0xfb, 0xcd, 0xff, 0xff, //0x000037af jae LBB0_40 + 0xe9, 0x4a, 0xce, 0xff, 0xff, //0x000037b5 jmp LBB0_44 + //0x000037ba LBB0_681 + 0x4c, 0x01, 0xd2, //0x000037ba addq %r10, %rdx + 0xe9, 0x69, 0xf7, 0xff, 0xff, //0x000037bd jmp LBB0_586 + //0x000037c2 LBB0_682 + 0x49, 0x8b, 0x45, 0x08, //0x000037c2 movq $8(%r13), %rax + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000037c6 movq $8(%rsp), %rcx + 0x48, 0x89, 0x01, //0x000037cb movq %rax, (%rcx) + 0xe9, 0x65, 0xfd, 0xff, 0xff, //0x000037ce jmp LBB0_646 + //0x000037d3 LBB0_683 + 0x89, 0xf9, //0x000037d3 movl %edi, %ecx + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000037d5 subq $16(%rsp), %r15 + 0x49, 0x01, 0xcf, //0x000037da addq %rcx, %r15 + 0x4c, 0x89, 0xfa, //0x000037dd movq %r15, %rdx + 0xe9, 0xc7, 0xfd, 0xff, 0xff, //0x000037e0 jmp LBB0_654 + //0x000037e5 LBB0_688 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000037e5 subq $16(%rsp), %r15 + 0x89, 0xfa, //0x000037ea movl %edi, %edx + 0xe9, 0xb8, 0xfd, 0xff, 0xff, //0x000037ec jmp LBB0_653 + //0x000037f1 LBB0_684 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x000037f1 subq $16(%rsp), %r15 + 0x4c, 0x89, 0xfa, //0x000037f6 movq %r15, %rdx + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x000037f9 movq $-2, %r15 + 0x49, 0x89, 0x13, //0x00003800 movq %rdx, (%r11) + 0xe9, 0x30, 0xfd, 0xff, 0xff, //0x00003803 jmp LBB0_646 + //0x00003808 LBB0_687 + 0x89, 0xf8, //0x00003808 movl %edi, %eax + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000380a subq $16(%rsp), %r15 + 0x49, 0x01, 0xc7, //0x0000380f addq %rax, %r15 + 0x4c, 0x89, 0xfa, //0x00003812 movq %r15, %rdx + 0xe9, 0x92, 0xfd, 0xff, 0xff, //0x00003815 jmp LBB0_654 + //0x0000381a LBB0_685 + 0x49, 0x8d, 0x48, 0xff, //0x0000381a leaq $-1(%r8), %rcx + 0x4c, 0x39, 0xf1, //0x0000381e cmpq %r14, %rcx + 0x0f, 0x84, 0x11, 0xfd, 0xff, 0xff, //0x00003821 je LBB0_646 + 0x4b, 0x8d, 0x14, 0x0e, //0x00003827 leaq (%r14,%r9), %rdx + 0x48, 0x83, 0xc2, 0x02, //0x0000382b addq $2, %rdx + 0x4d, 0x29, 0xf0, //0x0000382f subq %r14, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00003832 addq $-2, %r8 + 0x4d, 0x89, 0xc6, //0x00003836 movq %r8, %r14 + 0xe9, 0xed, 0xf6, 0xff, 0xff, //0x00003839 jmp LBB0_586 + //0x0000383e LBB0_689 + 0x4c, 0x2b, 0x7c, 0x24, 0x10, //0x0000383e subq $16(%rsp), %r15 + 0x4c, 0x89, 0xfa, //0x00003843 movq %r15, %rdx + 0xe9, 0x61, 0xfd, 0xff, 0xff, //0x00003846 jmp LBB0_654 + 0x90, //0x0000384b .p2align 2, 0x90 + // // .set L0_0_set_646, LBB0_646-LJTI0_0 + // // .set L0_0_set_575, LBB0_575-LJTI0_0 + // // .set L0_0_set_576, LBB0_576-LJTI0_0 // // .set L0_0_set_35, LBB0_35-LJTI0_0 - // // .set L0_0_set_607, LBB0_607-LJTI0_0 - // // .set L0_0_set_582, LBB0_582-LJTI0_0 - // // .set L0_0_set_568, LBB0_568-LJTI0_0 - // // .set L0_0_set_583, LBB0_583-LJTI0_0 - //0x0000379c LJTI0_0 - 0x3c, 0xfd, 0xff, 0xff, //0x0000379c .long L0_0_set_638 - 0x44, 0xf6, 0xff, 0xff, //0x000037a0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037a4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037a8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037ac .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037b0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037b4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037b8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037bc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037c0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037c4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037c8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037cc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037d0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037d4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037d8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037dc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037e0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037e4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037e8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037ec .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037f0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037f4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037f8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000037fc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003800 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003804 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003808 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000380c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003810 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003814 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003818 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000381c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003820 .long L0_0_set_569 - 0x4c, 0xf6, 0xff, 0xff, //0x00003824 .long L0_0_set_570 - 0x44, 0xf6, 0xff, 0xff, //0x00003828 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000382c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003830 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003834 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003838 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000383c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003840 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003844 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003848 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000384c .long L0_0_set_569 - 0x8e, 0xcd, 0xff, 0xff, //0x00003850 .long L0_0_set_35 - 0x44, 0xf6, 0xff, 0xff, //0x00003854 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003858 .long L0_0_set_569 - 0x8e, 0xcd, 0xff, 0xff, //0x0000385c .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003860 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003864 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003868 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x0000386c .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003870 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003874 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003878 .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x0000387c .long L0_0_set_35 - 0x8e, 0xcd, 0xff, 0xff, //0x00003880 .long L0_0_set_35 - 0x44, 0xf6, 0xff, 0xff, //0x00003884 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003888 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000388c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003890 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003894 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003898 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000389c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038a0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038a4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038a8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038ac .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038b0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038b4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038b8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038bc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038c0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038c4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038c8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038cc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038d0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038d4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038d8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038dc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038e0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038e4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038e8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038ec .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038f0 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038f4 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038f8 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x000038fc .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003900 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003904 .long L0_0_set_569 - 0x0f, 0xfa, 0xff, 0xff, //0x00003908 .long L0_0_set_607 - 0x44, 0xf6, 0xff, 0xff, //0x0000390c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003910 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003914 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003918 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000391c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003920 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003924 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003928 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000392c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003930 .long L0_0_set_569 - 0x44, 0xf7, 0xff, 0xff, //0x00003934 .long L0_0_set_582 - 0x44, 0xf6, 0xff, 0xff, //0x00003938 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000393c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003940 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003944 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003948 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000394c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003950 .long L0_0_set_569 - 0xf9, 0xf5, 0xff, 0xff, //0x00003954 .long L0_0_set_568 - 0x44, 0xf6, 0xff, 0xff, //0x00003958 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000395c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003960 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003964 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003968 .long L0_0_set_569 - 0xf9, 0xf5, 0xff, 0xff, //0x0000396c .long L0_0_set_568 - 0x44, 0xf6, 0xff, 0xff, //0x00003970 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003974 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003978 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x0000397c .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003980 .long L0_0_set_569 - 0x44, 0xf6, 0xff, 0xff, //0x00003984 .long L0_0_set_569 - 0x57, 0xf7, 0xff, 0xff, //0x00003988 .long L0_0_set_583 - // // .set L0_1_set_90, LBB0_90-LJTI0_1 - // // .set L0_1_set_117, LBB0_117-LJTI0_1 + // // .set L0_0_set_615, LBB0_615-LJTI0_0 + // // .set L0_0_set_588, LBB0_588-LJTI0_0 + // // .set L0_0_set_574, LBB0_574-LJTI0_0 + // // .set L0_0_set_591, LBB0_591-LJTI0_0 + //0x0000384c LJTI0_0 + 0xec, 0xfc, 0xff, 0xff, //0x0000384c .long L0_0_set_646 + 0xfa, 0xf5, 0xff, 0xff, //0x00003850 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003854 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003858 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000385c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003860 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003864 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003868 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000386c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003870 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003874 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003878 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000387c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003880 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003884 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003888 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000388c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003890 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003894 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003898 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000389c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038a0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038a4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038a8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038ac .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038b0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038b4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038b8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038bc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038c0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038c4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038c8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038cc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038d0 .long L0_0_set_575 + 0x02, 0xf6, 0xff, 0xff, //0x000038d4 .long L0_0_set_576 + 0xfa, 0xf5, 0xff, 0xff, //0x000038d8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038dc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038e0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038e4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038e8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038ec .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038f0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038f4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038f8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000038fc .long L0_0_set_575 + 0xde, 0xcc, 0xff, 0xff, //0x00003900 .long L0_0_set_35 + 0xfa, 0xf5, 0xff, 0xff, //0x00003904 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003908 .long L0_0_set_575 + 0xde, 0xcc, 0xff, 0xff, //0x0000390c .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003910 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003914 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003918 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x0000391c .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003920 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003924 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003928 .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x0000392c .long L0_0_set_35 + 0xde, 0xcc, 0xff, 0xff, //0x00003930 .long L0_0_set_35 + 0xfa, 0xf5, 0xff, 0xff, //0x00003934 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003938 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000393c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003940 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003944 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003948 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000394c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003950 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003954 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003958 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000395c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003960 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003964 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003968 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000396c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003970 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003974 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003978 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000397c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003980 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003984 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003988 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000398c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003990 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003994 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003998 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x0000399c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039a0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039a4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039a8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039ac .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039b0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039b4 .long L0_0_set_575 + 0xbf, 0xf9, 0xff, 0xff, //0x000039b8 .long L0_0_set_615 + 0xfa, 0xf5, 0xff, 0xff, //0x000039bc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039c0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039c4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039c8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039cc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039d0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039d4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039d8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039dc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039e0 .long L0_0_set_575 + 0xf4, 0xf6, 0xff, 0xff, //0x000039e4 .long L0_0_set_588 + 0xfa, 0xf5, 0xff, 0xff, //0x000039e8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039ec .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039f0 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039f4 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039f8 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x000039fc .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a00 .long L0_0_set_575 + 0xb9, 0xf5, 0xff, 0xff, //0x00003a04 .long L0_0_set_574 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a08 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a0c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a10 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a14 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a18 .long L0_0_set_575 + 0xb9, 0xf5, 0xff, 0xff, //0x00003a1c .long L0_0_set_574 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a20 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a24 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a28 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a2c .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a30 .long L0_0_set_575 + 0xfa, 0xf5, 0xff, 0xff, //0x00003a34 .long L0_0_set_575 + 0x0d, 0xf7, 0xff, 0xff, //0x00003a38 .long L0_0_set_591 // // .set L0_1_set_96, LBB0_96-LJTI0_1 - // // .set L0_1_set_115, LBB0_115-LJTI0_1 - // // .set L0_1_set_93, LBB0_93-LJTI0_1 - // // .set L0_1_set_120, LBB0_120-LJTI0_1 - //0x0000398c LJTI0_1 - 0x90, 0xcf, 0xff, 0xff, //0x0000398c .long L0_1_set_90 - 0x40, 0xd1, 0xff, 0xff, //0x00003990 .long L0_1_set_117 - 0xc7, 0xcf, 0xff, 0xff, //0x00003994 .long L0_1_set_96 - 0x29, 0xd1, 0xff, 0xff, //0x00003998 .long L0_1_set_115 - 0xa7, 0xcf, 0xff, 0xff, //0x0000399c .long L0_1_set_93 - 0xc2, 0xd5, 0xff, 0xff, //0x000039a0 .long L0_1_set_120 - // // .set L0_2_set_638, LBB0_638-LJTI0_2 - // // .set L0_2_set_637, LBB0_637-LJTI0_2 - // // .set L0_2_set_263, LBB0_263-LJTI0_2 - // // .set L0_2_set_281, LBB0_281-LJTI0_2 - // // .set L0_2_set_134, LBB0_134-LJTI0_2 - // // .set L0_2_set_285, LBB0_285-LJTI0_2 + // // .set L0_1_set_123, LBB0_123-LJTI0_1 + // // .set L0_1_set_102, LBB0_102-LJTI0_1 + // // .set L0_1_set_121, LBB0_121-LJTI0_1 + // // .set L0_1_set_99, LBB0_99-LJTI0_1 + // // .set L0_1_set_126, LBB0_126-LJTI0_1 + //0x00003a3c LJTI0_1 + 0x50, 0xcf, 0xff, 0xff, //0x00003a3c .long L0_1_set_96 + 0x00, 0xd1, 0xff, 0xff, //0x00003a40 .long L0_1_set_123 + 0x87, 0xcf, 0xff, 0xff, //0x00003a44 .long L0_1_set_102 + 0xe9, 0xd0, 0xff, 0xff, //0x00003a48 .long L0_1_set_121 + 0x67, 0xcf, 0xff, 0xff, //0x00003a4c .long L0_1_set_99 + 0x82, 0xd5, 0xff, 0xff, //0x00003a50 .long L0_1_set_126 + // // .set L0_2_set_646, LBB0_646-LJTI0_2 + // // .set L0_2_set_645, LBB0_645-LJTI0_2 + // // .set L0_2_set_269, LBB0_269-LJTI0_2 // // .set L0_2_set_287, LBB0_287-LJTI0_2 + // // .set L0_2_set_140, LBB0_140-LJTI0_2 // // .set L0_2_set_291, LBB0_291-LJTI0_2 - // // .set L0_2_set_299, LBB0_299-LJTI0_2 + // // .set L0_2_set_293, LBB0_293-LJTI0_2 // // .set L0_2_set_297, LBB0_297-LJTI0_2 - //0x000039a4 LJTI0_2 - 0x34, 0xfb, 0xff, 0xff, //0x000039a4 .long L0_2_set_638 - 0x2d, 0xfb, 0xff, 0xff, //0x000039a8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039ac .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039b0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039b4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039b8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039bc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039c0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039c4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039c8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039cc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039d0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039d4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039d8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039dc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039e0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039e4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039e8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039ec .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039f0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039f4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039f8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x000039fc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a00 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a04 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a08 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a0c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a10 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a14 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a18 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a1c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a20 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a24 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a28 .long L0_2_set_637 - 0xcd, 0xdb, 0xff, 0xff, //0x00003a2c .long L0_2_set_263 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a30 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a34 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a38 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a3c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a40 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a44 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a48 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a4c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a50 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a54 .long L0_2_set_637 - 0x21, 0xdd, 0xff, 0xff, //0x00003a58 .long L0_2_set_281 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a5c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a60 .long L0_2_set_637 - 0x71, 0xd1, 0xff, 0xff, //0x00003a64 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a68 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a6c .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a70 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a74 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a78 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a7c .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a80 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a84 .long L0_2_set_134 - 0x71, 0xd1, 0xff, 0xff, //0x00003a88 .long L0_2_set_134 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a8c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a90 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a94 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a98 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003a9c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003aa0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003aa4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003aa8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003aac .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ab0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ab4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ab8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003abc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ac0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ac4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ac8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003acc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ad0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ad4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ad8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003adc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ae0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ae4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003ae8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003aec .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003af0 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003af4 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003af8 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003afc .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b00 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b04 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b08 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b0c .long L0_2_set_637 - 0x5b, 0xdd, 0xff, 0xff, //0x00003b10 .long L0_2_set_285 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b14 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b18 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b1c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b20 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b24 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b28 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b2c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b30 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b34 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b38 .long L0_2_set_637 - 0x80, 0xdd, 0xff, 0xff, //0x00003b3c .long L0_2_set_287 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b40 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b44 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b48 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b4c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b50 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b54 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b58 .long L0_2_set_637 - 0xb9, 0xdd, 0xff, 0xff, //0x00003b5c .long L0_2_set_291 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b60 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b64 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b68 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b6c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b70 .long L0_2_set_637 - 0x0a, 0xde, 0xff, 0xff, //0x00003b74 .long L0_2_set_299 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b78 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b7c .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b80 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b84 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b88 .long L0_2_set_637 - 0x2d, 0xfb, 0xff, 0xff, //0x00003b8c .long L0_2_set_637 - 0xe5, 0xdd, 0xff, 0xff, //0x00003b90 .long L0_2_set_297 + // // .set L0_2_set_305, LBB0_305-LJTI0_2 + // // .set L0_2_set_303, LBB0_303-LJTI0_2 + //0x00003a54 LJTI0_2 + 0xe4, 0xfa, 0xff, 0xff, //0x00003a54 .long L0_2_set_646 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a58 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a5c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a60 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a64 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a68 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a6c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a70 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a74 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a78 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a7c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a80 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a84 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a88 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a8c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a90 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a94 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a98 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003a9c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003aa0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003aa4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003aa8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003aac .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ab0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ab4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ab8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003abc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ac0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ac4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ac8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003acc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ad0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ad4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ad8 .long L0_2_set_645 + 0x8d, 0xdb, 0xff, 0xff, //0x00003adc .long L0_2_set_269 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ae0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ae4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ae8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003aec .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003af0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003af4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003af8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003afc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b00 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b04 .long L0_2_set_645 + 0xe1, 0xdc, 0xff, 0xff, //0x00003b08 .long L0_2_set_287 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b0c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b10 .long L0_2_set_645 + 0x31, 0xd1, 0xff, 0xff, //0x00003b14 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b18 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b1c .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b20 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b24 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b28 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b2c .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b30 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b34 .long L0_2_set_140 + 0x31, 0xd1, 0xff, 0xff, //0x00003b38 .long L0_2_set_140 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b3c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b40 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b44 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b48 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b4c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b50 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b54 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b58 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b5c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b60 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b64 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b68 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b6c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b70 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b74 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b78 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b7c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b80 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b84 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b88 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b8c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b90 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b94 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b98 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003b9c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ba0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ba4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003ba8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bac .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bb0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bb4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bb8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bbc .long L0_2_set_645 + 0x1b, 0xdd, 0xff, 0xff, //0x00003bc0 .long L0_2_set_291 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bc4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bc8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bcc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bd0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bd4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bd8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bdc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003be0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003be4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003be8 .long L0_2_set_645 + 0x40, 0xdd, 0xff, 0xff, //0x00003bec .long L0_2_set_293 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bf0 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bf4 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bf8 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003bfc .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c00 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c04 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c08 .long L0_2_set_645 + 0x79, 0xdd, 0xff, 0xff, //0x00003c0c .long L0_2_set_297 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c10 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c14 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c18 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c1c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c20 .long L0_2_set_645 + 0xca, 0xdd, 0xff, 0xff, //0x00003c24 .long L0_2_set_305 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c28 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c2c .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c30 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c34 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c38 .long L0_2_set_645 + 0xdd, 0xfa, 0xff, 0xff, //0x00003c3c .long L0_2_set_645 + 0xa5, 0xdd, 0xff, 0xff, //0x00003c40 .long L0_2_set_303 + // // .set L0_3_set_375, LBB0_375-LJTI0_3 + // // .set L0_3_set_391, LBB0_391-LJTI0_3 // // .set L0_3_set_369, LBB0_369-LJTI0_3 - // // .set L0_3_set_385, LBB0_385-LJTI0_3 - // // .set L0_3_set_363, LBB0_363-LJTI0_3 - // // .set L0_3_set_372, LBB0_372-LJTI0_3 - //0x00003b94 LJTI0_3 - 0xe6, 0xe0, 0xff, 0xff, //0x00003b94 .long L0_3_set_369 - 0xae, 0xe1, 0xff, 0xff, //0x00003b98 .long L0_3_set_385 - 0xe6, 0xe0, 0xff, 0xff, //0x00003b9c .long L0_3_set_369 - 0x8a, 0xe0, 0xff, 0xff, //0x00003ba0 .long L0_3_set_363 - 0xae, 0xe1, 0xff, 0xff, //0x00003ba4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003ba8 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bac .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bb0 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bb4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bb8 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bbc .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bc0 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bc4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bc8 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bcc .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bd0 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bd4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bd8 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bdc .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003be0 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003be4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003be8 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bec .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bf0 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bf4 .long L0_3_set_385 - 0xae, 0xe1, 0xff, 0xff, //0x00003bf8 .long L0_3_set_385 - 0x02, 0xe1, 0xff, 0xff, //0x00003bfc .long L0_3_set_372 - // // .set L0_4_set_178, LBB0_178-LJTI0_4 - // // .set L0_4_set_244, LBB0_244-LJTI0_4 + // // .set L0_3_set_378, LBB0_378-LJTI0_3 + //0x00003c44 LJTI0_3 + 0xa6, 0xe0, 0xff, 0xff, //0x00003c44 .long L0_3_set_375 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c48 .long L0_3_set_391 + 0xa6, 0xe0, 0xff, 0xff, //0x00003c4c .long L0_3_set_375 + 0x4a, 0xe0, 0xff, 0xff, //0x00003c50 .long L0_3_set_369 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c54 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c58 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c5c .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c60 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c64 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c68 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c6c .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c70 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c74 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c78 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c7c .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c80 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c84 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c88 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c8c .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c90 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c94 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c98 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003c9c .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003ca0 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003ca4 .long L0_3_set_391 + 0x6e, 0xe1, 0xff, 0xff, //0x00003ca8 .long L0_3_set_391 + 0xc2, 0xe0, 0xff, 0xff, //0x00003cac .long L0_3_set_378 // // .set L0_4_set_184, LBB0_184-LJTI0_4 - // // .set L0_4_set_187, LBB0_187-LJTI0_4 - //0x00003c00 LJTI0_4 - 0xcc, 0xd2, 0xff, 0xff, //0x00003c00 .long L0_4_set_178 - 0x31, 0xd8, 0xff, 0xff, //0x00003c04 .long L0_4_set_244 - 0xcc, 0xd2, 0xff, 0xff, //0x00003c08 .long L0_4_set_178 - 0x1a, 0xd3, 0xff, 0xff, //0x00003c0c .long L0_4_set_184 - 0x31, 0xd8, 0xff, 0xff, //0x00003c10 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c14 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c18 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c1c .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c20 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c24 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c28 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c2c .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c30 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c34 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c38 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c3c .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c40 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c44 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c48 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c4c .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c50 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c54 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c58 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c5c .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c60 .long L0_4_set_244 - 0x31, 0xd8, 0xff, 0xff, //0x00003c64 .long L0_4_set_244 - 0x3b, 0xd3, 0xff, 0xff, //0x00003c68 .long L0_4_set_187 - //0x00003c6c .p2align 2, 0x00 - //0x00003c6c _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00003c6c .long 2 + // // .set L0_4_set_250, LBB0_250-LJTI0_4 + // // .set L0_4_set_190, LBB0_190-LJTI0_4 + // // .set L0_4_set_193, LBB0_193-LJTI0_4 + //0x00003cb0 LJTI0_4 + 0x8c, 0xd2, 0xff, 0xff, //0x00003cb0 .long L0_4_set_184 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cb4 .long L0_4_set_250 + 0x8c, 0xd2, 0xff, 0xff, //0x00003cb8 .long L0_4_set_184 + 0xda, 0xd2, 0xff, 0xff, //0x00003cbc .long L0_4_set_190 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cc0 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cc4 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cc8 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003ccc .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cd0 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cd4 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cd8 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cdc .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003ce0 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003ce4 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003ce8 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cec .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cf0 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cf4 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cf8 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003cfc .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d00 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d04 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d08 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d0c .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d10 .long L0_4_set_250 + 0xf1, 0xd7, 0xff, 0xff, //0x00003d14 .long L0_4_set_250 + 0xfb, 0xd2, 0xff, 0xff, //0x00003d18 .long L0_4_set_193 + //0x00003d1c .p2align 2, 0x00 + //0x00003d1c _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00003d1c .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_subr.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_subr.go index f590757a5..844ab1b62 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__validate_one = 15136 + _size__validate_one = 15384 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x38dd, 208}, - {0x38de, 48}, - {0x38e0, 40}, - {0x38e2, 32}, - {0x38e4, 24}, - {0x38e6, 16}, - {0x38e7, 8}, - {0x38eb, 0}, - {0x3b20, 208}, + {0x3a59, 208}, + {0x3a5a, 48}, + {0x3a5c, 40}, + {0x3a5e, 32}, + {0x3a60, 24}, + {0x3a62, 16}, + {0x3a63, 8}, + {0x3a67, 0}, + {0x3c18, 208}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_text_amd64.go index 035d8cda1..e3bae5c03 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/avx2/validate_one_text_amd64.go @@ -120,4081 +120,4142 @@ var _text_validate_one = []byte{ 0x53, //0x000002cc pushq %rbx 0x48, 0x81, 0xec, 0xa0, 0x00, 0x00, 0x00, //0x000002cd subq $160, %rsp 0x49, 0x89, 0xcb, //0x000002d4 movq %rcx, %r11 - 0x49, 0x89, 0xd7, //0x000002d7 movq %rdx, %r15 - 0x49, 0x89, 0xf5, //0x000002da movq %rsi, %r13 - 0xc5, 0xfa, 0x6f, 0x05, 0x1b, 0xfd, 0xff, 0xff, //0x000002dd vmovdqu $-741(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xc5, 0xfa, 0x7f, 0x02, //0x000002e5 vmovdqu %xmm0, (%rdx) - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002e9 movq $-1, %r12 - 0xc5, 0xfe, 0x6f, 0x2d, 0xc8, 0xfd, 0xff, 0xff, //0x000002f0 vmovdqu $-568(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xe0, 0xfd, 0xff, 0xff, //0x000002f8 vmovdqu $-544(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0xf8, 0xfd, 0xff, 0xff, //0x00000300 vmovdqu $-520(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x10, 0xfe, 0xff, 0xff, //0x00000308 vmovdqu $-496(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000310 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xe3, 0xfe, 0xff, 0xff, //0x00000315 vmovdqu $-285(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0xfb, 0xfe, 0xff, 0xff, //0x0000031d vmovdqu $-261(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x13, 0xff, 0xff, 0xff, //0x00000325 vmovdqu $-237(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xab, 0xfe, 0xff, 0xff, //0x0000032d vmovdqu $-341(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x63, 0xff, 0xff, 0xff, //0x00000335 vmovdqu $-157(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x7b, 0xfe, 0xff, 0xff, //0x0000033d vmovdqu $-389(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0xf3, 0xfd, 0xff, 0xff, //0x00000345 vmovdqu $-525(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x0b, 0xfe, 0xff, 0xff, //0x0000034d vmovdqu $-501(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x48, 0x89, 0x4c, 0x24, 0x18, //0x00000355 movq %rcx, $24(%rsp) - 0x48, 0x89, 0x7c, 0x24, 0x10, //0x0000035a movq %rdi, $16(%rsp) - 0x48, 0x89, 0x54, 0x24, 0x08, //0x0000035f movq %rdx, $8(%rsp) - 0xe9, 0x77, 0x00, 0x00, 0x00, //0x00000364 jmp LBB0_5 - //0x00000369 LBB0_153 - 0x41, 0x0f, 0xbc, 0xc3, //0x00000369 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000036d addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x00000370 leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00000374 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000378 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000037d movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000382 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00000387 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x0000038b testq %r8, %r8 - 0x0f, 0x8e, 0x98, 0x37, 0x00, 0x00, //0x0000038e jle LBB0_679 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000394 .p2align 4, 0x90 + 0x49, 0x89, 0xf7, //0x000002d7 movq %rsi, %r15 + 0x48, 0x89, 0x7c, 0x24, 0x20, //0x000002da movq %rdi, $32(%rsp) + 0xc5, 0xfa, 0x6f, 0x05, 0x19, 0xfd, 0xff, 0xff, //0x000002df vmovdqu $-743(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0x48, 0x89, 0x54, 0x24, 0x18, //0x000002e7 movq %rdx, $24(%rsp) + 0xc5, 0xfa, 0x7f, 0x02, //0x000002ec vmovdqu %xmm0, (%rdx) + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000002f0 movq $-1, %r12 + 0xc5, 0xfe, 0x6f, 0x2d, 0xc1, 0xfd, 0xff, 0xff, //0x000002f7 vmovdqu $-575(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xd9, 0xfd, 0xff, 0xff, //0x000002ff vmovdqu $-551(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xf1, 0xfd, 0xff, 0xff, //0x00000307 vmovdqu $-527(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x09, 0xfe, 0xff, 0xff, //0x0000030f vmovdqu $-503(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00000317 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xdc, 0xfe, 0xff, 0xff, //0x0000031c vmovdqu $-292(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0xf4, 0xfe, 0xff, 0xff, //0x00000324 vmovdqu $-268(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x0c, 0xff, 0xff, 0xff, //0x0000032c vmovdqu $-244(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xa4, 0xfe, 0xff, 0xff, //0x00000334 vmovdqu $-348(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x5c, 0xff, 0xff, 0xff, //0x0000033c vmovdqu $-164(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x74, 0xfe, 0xff, 0xff, //0x00000344 vmovdqu $-396(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0xec, 0xfd, 0xff, 0xff, //0x0000034c vmovdqu $-532(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x04, 0xfe, 0xff, 0xff, //0x00000354 vmovdqu $-508(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x48, 0x89, 0x74, 0x24, 0x08, //0x0000035c movq %rsi, $8(%rsp) + 0x48, 0x89, 0x0c, 0x24, //0x00000361 movq %rcx, (%rsp) + 0xe9, 0x96, 0x00, 0x00, 0x00, //0x00000365 jmp LBB0_5 + //0x0000036a LBB0_235 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000036a movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000036f movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000373 cmpq %rcx, %rdx + 0x0f, 0x82, 0x0a, 0x3b, 0x00, 0x00, //0x00000376 jb LBB0_162 + //0x0000037c LBB0_236 + 0x48, 0x01, 0xc8, //0x0000037c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000037f addq $1, %rax + 0x48, 0x85, 0xc0, //0x00000383 testq %rax, %rax + 0x0f, 0x88, 0x35, 0x39, 0x00, 0x00, //0x00000386 js LBB0_702 + //0x0000038c LBB0_237 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000038c movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x00000391 movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x00000394 testq %r9, %r9 + 0x0f, 0x8e, 0x3d, 0x39, 0x00, 0x00, //0x00000397 jle LBB0_475 + 0x90, 0x90, 0x90, //0x0000039d .p2align 4, 0x90 //0x000003a0 LBB0_3 - 0x4d, 0x8b, 0x07, //0x000003a0 movq (%r15), %r8 - 0x4c, 0x89, 0x24, 0x24, //0x000003a3 movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x000003a7 testq %r8, %r8 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000003aa jne LBB0_5 - 0xe9, 0xe0, 0x37, 0x00, 0x00, //0x000003b0 jmp LBB0_711 - //0x000003b5 LBB0_1 - 0x48, 0x89, 0xd1, //0x000003b5 movq %rdx, %rcx - //0x000003b8 LBB0_2 - 0x4c, 0x01, 0xe9, //0x000003b8 addq %r13, %rcx - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000003bb movq $48(%rsp), %r13 - 0x49, 0x89, 0x4d, 0x00, //0x000003c0 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x000003c4 testq %rbx, %rbx - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x000003c7 jg LBB0_3 - 0xe9, 0xc3, 0x37, 0x00, 0x00, //0x000003cd jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003d2 .p2align 4, 0x90 - //0x000003e0 LBB0_5 - 0x4d, 0x89, 0xe1, //0x000003e0 movq %r12, %r9 - 0x4c, 0x8b, 0x37, //0x000003e3 movq (%rdi), %r14 - 0x48, 0x8b, 0x5f, 0x08, //0x000003e6 movq $8(%rdi), %rbx - 0x49, 0x8b, 0x75, 0x00, //0x000003ea movq (%r13), %rsi - 0x48, 0x39, 0xde, //0x000003ee cmpq %rbx, %rsi - 0x0f, 0x83, 0x29, 0x00, 0x00, 0x00, //0x000003f1 jae LBB0_10 - 0x41, 0x8a, 0x04, 0x36, //0x000003f7 movb (%r14,%rsi), %al - 0x3c, 0x0d, //0x000003fb cmpb $13, %al - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000003fd je LBB0_10 - 0x3c, 0x20, //0x00000403 cmpb $32, %al - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000405 je LBB0_10 - 0x04, 0xf7, //0x0000040b addb $-9, %al - 0x3c, 0x01, //0x0000040d cmpb $1, %al - 0x0f, 0x86, 0x0b, 0x00, 0x00, 0x00, //0x0000040f jbe LBB0_10 - 0x49, 0x89, 0xf4, //0x00000415 movq %rsi, %r12 - 0xe9, 0x75, 0x01, 0x00, 0x00, //0x00000418 jmp LBB0_35 - 0x90, 0x90, 0x90, //0x0000041d .p2align 4, 0x90 - //0x00000420 LBB0_10 - 0x4c, 0x8d, 0x66, 0x01, //0x00000420 leaq $1(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000424 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000427 jae LBB0_14 - 0x43, 0x8a, 0x14, 0x26, //0x0000042d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000431 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000434 je LBB0_14 - 0x80, 0xfa, 0x20, //0x0000043a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000043d je LBB0_14 - 0x80, 0xc2, 0xf7, //0x00000443 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000446 cmpb $1, %dl - 0x0f, 0x87, 0x43, 0x01, 0x00, 0x00, //0x00000449 ja LBB0_35 - 0x90, //0x0000044f .p2align 4, 0x90 - //0x00000450 LBB0_14 - 0x4c, 0x8d, 0x66, 0x02, //0x00000450 leaq $2(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000454 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000457 jae LBB0_18 - 0x43, 0x8a, 0x14, 0x26, //0x0000045d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000461 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000464 je LBB0_18 - 0x80, 0xfa, 0x20, //0x0000046a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000046d je LBB0_18 - 0x80, 0xc2, 0xf7, //0x00000473 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000476 cmpb $1, %dl - 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x00000479 ja LBB0_35 - 0x90, //0x0000047f .p2align 4, 0x90 - //0x00000480 LBB0_18 - 0x4c, 0x8d, 0x66, 0x03, //0x00000480 leaq $3(%rsi), %r12 - 0x49, 0x39, 0xdc, //0x00000484 cmpq %rbx, %r12 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000487 jae LBB0_22 - 0x43, 0x8a, 0x14, 0x26, //0x0000048d movb (%r14,%r12), %dl - 0x80, 0xfa, 0x0d, //0x00000491 cmpb $13, %dl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000494 je LBB0_22 - 0x80, 0xfa, 0x20, //0x0000049a cmpb $32, %dl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000049d je LBB0_22 - 0x80, 0xc2, 0xf7, //0x000004a3 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000004a6 cmpb $1, %dl - 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004a9 ja LBB0_35 - 0x90, //0x000004af .p2align 4, 0x90 - //0x000004b0 LBB0_22 - 0x4c, 0x8d, 0x66, 0x04, //0x000004b0 leaq $4(%rsi), %r12 - 0x48, 0x89, 0xd8, //0x000004b4 movq %rbx, %rax - 0x4c, 0x29, 0xe0, //0x000004b7 subq %r12, %rax - 0x0f, 0x86, 0x4e, 0x36, 0x00, 0x00, //0x000004ba jbe LBB0_675 - 0x48, 0x83, 0xf8, 0x20, //0x000004c0 cmpq $32, %rax - 0x0f, 0x82, 0x69, 0x23, 0x00, 0x00, //0x000004c4 jb LBB0_488 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x000004ca movq $-4, %rax - 0x48, 0x29, 0xf0, //0x000004d1 subq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004d4 .p2align 4, 0x90 - //0x000004e0 LBB0_25 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x000004e0 vmovdqu (%r14,%r12), %ymm0 - 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x000004e6 vpshufb %ymm0, %ymm5, %ymm1 - 0xc5, 0xfd, 0x74, 0xc1, //0x000004eb vpcmpeqb %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000004ef vpmovmskb %ymm0, %edx - 0x83, 0xfa, 0xff, //0x000004f3 cmpl $-1, %edx - 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x000004f6 jne LBB0_34 - 0x49, 0x83, 0xc4, 0x20, //0x000004fc addq $32, %r12 - 0x48, 0x8d, 0x14, 0x03, //0x00000500 leaq (%rbx,%rax), %rdx - 0x48, 0x83, 0xc2, 0xe0, //0x00000504 addq $-32, %rdx - 0x48, 0x83, 0xc0, 0xe0, //0x00000508 addq $-32, %rax - 0x48, 0x83, 0xfa, 0x1f, //0x0000050c cmpq $31, %rdx - 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000510 ja LBB0_25 - 0x4d, 0x89, 0xf4, //0x00000516 movq %r14, %r12 - 0x49, 0x29, 0xc4, //0x00000519 subq %rax, %r12 - 0x48, 0x01, 0xd8, //0x0000051c addq %rbx, %rax - 0x48, 0x85, 0xc0, //0x0000051f testq %rax, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000522 je LBB0_33 - //0x00000528 LBB0_28 - 0x4d, 0x8d, 0x04, 0x04, //0x00000528 leaq (%r12,%rax), %r8 - 0x31, 0xd2, //0x0000052c xorl %edx, %edx - 0x90, 0x90, //0x0000052e .p2align 4, 0x90 - //0x00000530 LBB0_29 - 0x41, 0x0f, 0xbe, 0x34, 0x14, //0x00000530 movsbl (%r12,%rdx), %esi - 0x83, 0xfe, 0x20, //0x00000535 cmpl $32, %esi - 0x0f, 0x87, 0x78, 0x1f, 0x00, 0x00, //0x00000538 ja LBB0_676 - 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000053e movabsq $4294977024, %rcx - 0x48, 0x0f, 0xa3, 0xf1, //0x00000548 btq %rsi, %rcx - 0x0f, 0x83, 0x64, 0x1f, 0x00, 0x00, //0x0000054c jae LBB0_676 - 0x48, 0x83, 0xc2, 0x01, //0x00000552 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x00000556 cmpq %rdx, %rax - 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000559 jne LBB0_29 - 0x4d, 0x89, 0xc4, //0x0000055f movq %r8, %r12 - //0x00000562 LBB0_33 - 0x4d, 0x29, 0xf4, //0x00000562 subq %r14, %r12 - 0x49, 0x39, 0xdc, //0x00000565 cmpq %rbx, %r12 - 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x00000568 jb LBB0_35 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x0000056e jmp LBB0_677 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000573 .p2align 4, 0x90 - //0x00000580 LBB0_34 - 0xf7, 0xd2, //0x00000580 notl %edx - 0x44, 0x0f, 0xbc, 0xe2, //0x00000582 bsfl %edx, %r12d - 0x49, 0x29, 0xc4, //0x00000586 subq %rax, %r12 - 0x49, 0x39, 0xdc, //0x00000589 cmpq %rbx, %r12 - 0x0f, 0x83, 0x80, 0x35, 0x00, 0x00, //0x0000058c jae LBB0_677 - //0x00000592 LBB0_35 - 0x49, 0x8d, 0x54, 0x24, 0x01, //0x00000592 leaq $1(%r12), %rdx - 0x49, 0x89, 0x55, 0x00, //0x00000597 movq %rdx, (%r13) - 0x43, 0x0f, 0xbe, 0x04, 0x26, //0x0000059b movsbl (%r14,%r12), %eax - 0x85, 0xc0, //0x000005a0 testl %eax, %eax - 0x0f, 0x84, 0x6a, 0x35, 0x00, 0x00, //0x000005a2 je LBB0_677 - 0x49, 0x8b, 0x37, //0x000005a8 movq (%r15), %rsi - 0x4c, 0x8d, 0x46, 0xff, //0x000005ab leaq $-1(%rsi), %r8 - 0x41, 0x8b, 0x1c, 0xf7, //0x000005af movl (%r15,%rsi,8), %ebx - 0x49, 0x83, 0xf9, 0xff, //0x000005b3 cmpq $-1, %r9 - 0x4d, 0x0f, 0x45, 0xe1, //0x000005b7 cmovneq %r9, %r12 - 0x83, 0xc3, 0xff, //0x000005bb addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x000005be cmpl $5, %ebx - 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x000005c1 ja LBB0_41 - 0x48, 0x8d, 0x15, 0x12, 0x38, 0x00, 0x00, //0x000005c7 leaq $14354(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000005ce movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000005d2 addq %rdx, %rcx - 0xff, 0xe1, //0x000005d5 jmpq *%rcx - //0x000005d7 LBB0_38 - 0x83, 0xf8, 0x2c, //0x000005d7 cmpl $44, %eax - 0x0f, 0x84, 0x41, 0x06, 0x00, 0x00, //0x000005da je LBB0_126 - 0x83, 0xf8, 0x5d, //0x000005e0 cmpl $93, %eax - 0x0f, 0x84, 0x23, 0x06, 0x00, 0x00, //0x000005e3 je LBB0_40 - 0xe9, 0x9f, 0x35, 0x00, 0x00, //0x000005e9 jmp LBB0_710 - //0x000005ee LBB0_41 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000005ee movq $-1, (%rsp) - 0x4d, 0x89, 0x07, //0x000005f6 movq %r8, (%r15) - 0x83, 0xf8, 0x7b, //0x000005f9 cmpl $123, %eax - 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x000005fc jbe LBB0_67 - 0xe9, 0x86, 0x35, 0x00, 0x00, //0x00000602 jmp LBB0_710 - //0x00000607 LBB0_42 - 0x83, 0xf8, 0x2c, //0x00000607 cmpl $44, %eax - 0x0f, 0x85, 0xf3, 0x05, 0x00, 0x00, //0x0000060a jne LBB0_43 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000610 cmpq $4095, %rsi - 0x0f, 0x8f, 0x02, 0x35, 0x00, 0x00, //0x00000617 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x0000061d leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000621 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000624 movq $3, $8(%r15,%rsi,8) - 0xe9, 0x6e, 0xfd, 0xff, 0xff, //0x0000062d jmp LBB0_3 - //0x00000632 LBB0_44 - 0x3c, 0x22, //0x00000632 cmpb $34, %al - 0x0f, 0x85, 0x53, 0x35, 0x00, 0x00, //0x00000634 jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x04, 0x00, 0x00, 0x00, //0x0000063a movq $4, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000642 testb $64, %r11b - 0x0f, 0x85, 0x2f, 0x07, 0x00, 0x00, //0x00000646 jne LBB0_148 - 0x4d, 0x8b, 0x4d, 0x00, //0x0000064c movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000650 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc3, //0x00000654 movq %r8, %rbx - 0x41, 0xf6, 0xc3, 0x20, //0x00000657 testb $32, %r11b - 0x0f, 0x85, 0xf6, 0x09, 0x00, 0x00, //0x0000065b jne LBB0_190 - 0x4c, 0x29, 0xcb, //0x00000661 subq %r9, %rbx - 0x0f, 0x84, 0xb2, 0x36, 0x00, 0x00, //0x00000664 je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x0000066a cmpq $64, %rbx - 0x0f, 0x82, 0x29, 0x24, 0x00, 0x00, //0x0000066e jb LBB0_504 - 0x4c, 0x89, 0xce, //0x00000674 movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000677 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x0000067a movq $-1, %r11 - 0x4c, 0x89, 0xc9, //0x00000681 movq %r9, %rcx - 0x45, 0x31, 0xd2, //0x00000684 xorl %r10d, %r10d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000687 .p2align 4, 0x90 - //0x00000690 LBB0_50 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000690 vmovdqu (%r14,%rcx), %ymm0 - 0x49, 0x89, 0xcf, //0x00000696 movq %rcx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00000699 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000006a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000006a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000006a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000006ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000006b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000006b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000006b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x000006bc vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe0, 0x20, //0x000006c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000006c4 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000006c7 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x000006cb orq %rcx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000006ce jne LBB0_59 - 0x4d, 0x85, 0xd2, //0x000006d4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x000006d7 jne LBB0_61 - 0x45, 0x31, 0xd2, //0x000006dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000006e0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000006e3 jne LBB0_62 - //0x000006e9 LBB0_53 - 0x48, 0x83, 0xc3, 0xc0, //0x000006e9 addq $-64, %rbx - 0x48, 0x83, 0xc6, 0xc0, //0x000006ed addq $-64, %rsi - 0x4c, 0x89, 0xf9, //0x000006f1 movq %r15, %rcx - 0x48, 0x83, 0xc1, 0x40, //0x000006f4 addq $64, %rcx - 0x48, 0x83, 0xfb, 0x3f, //0x000006f8 cmpq $63, %rbx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000006fc ja LBB0_50 - 0xe9, 0x42, 0x20, 0x00, 0x00, //0x00000702 jmp LBB0_54 - //0x00000707 LBB0_59 - 0x49, 0x83, 0xfb, 0xff, //0x00000707 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_61 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000711 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000715 addq %r15, %r11 - //0x00000718 LBB0_61 - 0x4c, 0x89, 0xd0, //0x00000718 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000071b notq %rax - 0x48, 0x21, 0xd0, //0x0000071e andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00000721 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00000725 orq %r10, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00000728 movq %rcx, (%rsp) - 0x48, 0xf7, 0xd1, //0x0000072c notq %rcx - 0x48, 0x21, 0xd1, //0x0000072f andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000732 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000073c andq %rdx, %rcx - 0x45, 0x31, 0xd2, //0x0000073f xorl %r10d, %r10d - 0x48, 0x01, 0xc1, //0x00000742 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc2, //0x00000745 setb %r10b - 0x48, 0x01, 0xc9, //0x00000749 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000074c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00000756 xorq %rax, %rcx - 0x48, 0x23, 0x0c, 0x24, //0x00000759 andq (%rsp), %rcx - 0x48, 0xf7, 0xd1, //0x0000075d notq %rcx - 0x48, 0x21, 0xcf, //0x00000760 andq %rcx, %rdi - 0x48, 0x85, 0xff, //0x00000763 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000766 je LBB0_53 - //0x0000076c LBB0_62 - 0x4c, 0x0f, 0xbc, 0xd7, //0x0000076c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000770 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000773 movq %r11, %r15 - 0xe9, 0xa5, 0x0b, 0x00, 0x00, //0x00000776 jmp LBB0_232 - //0x0000077b LBB0_63 - 0x3c, 0x3a, //0x0000077b cmpb $58, %al - 0x0f, 0x85, 0x0a, 0x34, 0x00, 0x00, //0x0000077d jne LBB0_710 - 0x49, 0xc7, 0x04, 0xf7, 0x00, 0x00, 0x00, 0x00, //0x00000783 movq $0, (%r15,%rsi,8) - 0xe9, 0x10, 0xfc, 0xff, 0xff, //0x0000078b jmp LBB0_3 - //0x00000790 LBB0_65 - 0x3c, 0x5d, //0x00000790 cmpb $93, %al - 0x0f, 0x84, 0x74, 0x04, 0x00, 0x00, //0x00000792 je LBB0_40 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000798 movq $-1, (%rsp) - 0x49, 0xc7, 0x04, 0xf7, 0x01, 0x00, 0x00, 0x00, //0x000007a0 movq $1, (%r15,%rsi,8) - 0x83, 0xf8, 0x7b, //0x000007a8 cmpl $123, %eax - 0x0f, 0x87, 0xdc, 0x33, 0x00, 0x00, //0x000007ab ja LBB0_710 - //0x000007b1 LBB0_67 - 0x89, 0xc0, //0x000007b1 movl %eax, %eax - 0x48, 0x8d, 0x0d, 0x3e, 0x36, 0x00, 0x00, //0x000007b3 leaq $13886(%rip), %rcx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x04, 0x81, //0x000007ba movslq (%rcx,%rax,4), %rax - 0x48, 0x01, 0xc8, //0x000007be addq %rcx, %rax - 0xff, 0xe0, //0x000007c1 jmpq *%rax - //0x000007c3 LBB0_70 - 0x4c, 0x8b, 0x47, 0x08, //0x000007c3 movq $8(%rdi), %r8 - 0x49, 0x8b, 0x5d, 0x00, //0x000007c7 movq (%r13), %rbx - 0x41, 0xf6, 0xc3, 0x40, //0x000007cb testb $64, %r11b - 0x0f, 0x85, 0x67, 0x06, 0x00, 0x00, //0x000007cf jne LBB0_159 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000007d5 movq %r13, $48(%rsp) - 0x48, 0x8d, 0x53, 0xff, //0x000007da leaq $-1(%rbx), %rdx - 0x49, 0x29, 0xd0, //0x000007de subq %rdx, %r8 - 0x0f, 0x84, 0x78, 0x33, 0x00, 0x00, //0x000007e1 je LBB0_682 - 0x49, 0x8d, 0x04, 0x1e, //0x000007e7 leaq (%r14,%rbx), %rax - 0x48, 0x83, 0xc0, 0xff, //0x000007eb addq $-1, %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000007ef movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000007f4 cmpb $48, (%rax) - 0x48, 0x89, 0x14, 0x24, //0x000007f7 movq %rdx, (%rsp) - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000007fb jne LBB0_76 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000801 movl $1, %r13d - 0x49, 0x83, 0xf8, 0x01, //0x00000807 cmpq $1, %r8 - 0x0f, 0x84, 0xa4, 0xfb, 0xff, 0xff, //0x0000080b je LBB0_1 - 0x41, 0x8a, 0x0c, 0x1e, //0x00000811 movb (%r14,%rbx), %cl - 0x80, 0xc1, 0xd2, //0x00000815 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000818 cmpb $55, %cl - 0x0f, 0x87, 0x94, 0xfb, 0xff, 0xff, //0x0000081b ja LBB0_1 - 0x0f, 0xb6, 0xc1, //0x00000821 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000824 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000082e btq %rax, %rcx - 0x48, 0x89, 0xd1, //0x00000832 movq %rdx, %rcx - 0x0f, 0x83, 0x7d, 0xfb, 0xff, 0xff, //0x00000835 jae LBB0_2 - //0x0000083b LBB0_76 - 0x48, 0x89, 0x5c, 0x24, 0x20, //0x0000083b movq %rbx, $32(%rsp) - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000840 movq $-1, %r10 - 0x49, 0x83, 0xf8, 0x20, //0x00000847 cmpq $32, %r8 - 0x0f, 0x82, 0x21, 0x22, 0x00, 0x00, //0x0000084b jb LBB0_502 - 0x45, 0x31, 0xed, //0x00000851 xorl %r13d, %r13d - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000854 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000085b movq $-1, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000864 .p2align 4, 0x90 - //0x00000870 LBB0_78 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x00000870 movq $56(%rsp), %rax - 0xc4, 0xa1, 0x7e, 0x6f, 0x04, 0x28, //0x00000875 vmovdqu (%rax,%r13), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x0000087b vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x00000880 vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x00000884 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x00000888 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xcc, 0xf9, 0xff, 0xff, //0x0000088c vpcmpeqb $-1588(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x00000894 vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x00000898 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xdc, 0xf9, 0xff, 0xff, //0x0000089c vpcmpeqb $-1572(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000008a4 vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000008a8 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xf3, //0x000008ac vpmovmskb %ymm3, %esi - 0xc5, 0x7d, 0xd7, 0xfa, //0x000008b0 vpmovmskb %ymm2, %r15d - 0xc5, 0xf5, 0xeb, 0xc0, //0x000008b4 vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000008b8 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000008bc vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000008c0 vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000008c4 notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000008c7 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000008cb cmpl $32, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000008ce je LBB0_80 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000008d4 movl $-1, %eax - 0xd3, 0xe0, //0x000008d9 shll %cl, %eax - 0xf7, 0xd0, //0x000008db notl %eax - 0x21, 0xc2, //0x000008dd andl %eax, %edx - 0x21, 0xc6, //0x000008df andl %eax, %esi - 0x44, 0x21, 0xf8, //0x000008e1 andl %r15d, %eax - 0x41, 0x89, 0xc7, //0x000008e4 movl %eax, %r15d - //0x000008e7 LBB0_80 - 0x8d, 0x5a, 0xff, //0x000008e7 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x000008ea andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xcc, 0xf8, 0xff, 0xff, //0x000008ec vmovdqu $-1844(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x4e, 0x1c, 0x00, 0x00, //0x000008f4 jne LBB0_464 - 0x8d, 0x5e, 0xff, //0x000008fa leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x000008fd andl %esi, %ebx - 0x0f, 0x85, 0x43, 0x1c, 0x00, 0x00, //0x000008ff jne LBB0_464 - 0x41, 0x8d, 0x5f, 0xff, //0x00000905 leal $-1(%r15), %ebx - 0x44, 0x21, 0xfb, //0x00000909 andl %r15d, %ebx - 0x0f, 0x85, 0x36, 0x1c, 0x00, 0x00, //0x0000090c jne LBB0_464 - 0x85, 0xd2, //0x00000912 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000914 je LBB0_86 - 0x0f, 0xbc, 0xd2, //0x0000091a bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000091d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xde, 0x1d, 0x00, 0x00, //0x00000923 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000929 addq %r13, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000092c movq %rdx, $40(%rsp) - //0x00000931 LBB0_86 - 0x85, 0xf6, //0x00000931 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000933 je LBB0_89 - 0x0f, 0xbc, 0xd6, //0x00000939 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x0000093c cmpq $-1, %r9 - 0x0f, 0x85, 0xc1, 0x1d, 0x00, 0x00, //0x00000940 jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000946 addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x00000949 movq %rdx, %r9 - //0x0000094c LBB0_89 - 0x45, 0x85, 0xff, //0x0000094c testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000094f je LBB0_92 - 0x41, 0x0f, 0xbc, 0xd7, //0x00000955 bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000959 cmpq $-1, %r10 - 0x0f, 0x85, 0xa4, 0x1d, 0x00, 0x00, //0x0000095d jne LBB0_483 - 0x4c, 0x01, 0xea, //0x00000963 addq %r13, %rdx - 0x49, 0x89, 0xd2, //0x00000966 movq %rdx, %r10 - //0x00000969 LBB0_92 - 0x83, 0xf9, 0x20, //0x00000969 cmpl $32, %ecx - 0x0f, 0x85, 0x39, 0x08, 0x00, 0x00, //0x0000096c jne LBB0_210 - 0x49, 0x83, 0xc0, 0xe0, //0x00000972 addq $-32, %r8 - 0x49, 0x83, 0xc5, 0x20, //0x00000976 addq $32, %r13 - 0x49, 0x83, 0xf8, 0x1f, //0x0000097a cmpq $31, %r8 - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x0000097e ja LBB0_78 - 0xc5, 0xf8, 0x77, //0x00000984 vzeroupper - 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xf8, 0xff, 0xff, //0x00000987 vmovdqu $-1967(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xa9, 0xf8, 0xff, 0xff, //0x0000098f vmovdqu $-1879(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x2d, 0x81, 0xf8, 0xff, 0xff, //0x00000997 vmovdqu $-1919(%rip), %ymm13 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x15, 0x59, 0xf8, 0xff, 0xff, //0x0000099f vmovdqu $-1959(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0xb1, 0xf7, 0xff, 0xff, //0x000009a7 vmovdqu $-2127(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x1d, 0x89, 0xf7, 0xff, 0xff, //0x000009af vmovdqu $-2167(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000009b7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x05, 0x5c, 0xf7, 0xff, 0xff, //0x000009bc vmovdqu $-2212(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x34, 0xf7, 0xff, 0xff, //0x000009c4 vmovdqu $-2252(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xf7, 0xff, 0xff, //0x000009cc vmovdqu $-2292(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x2d, 0xe4, 0xf6, 0xff, 0xff, //0x000009d4 vmovdqu $-2332(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0x4c, 0x03, 0x6c, 0x24, 0x38, //0x000009dc addq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x000009e1 cmpq $16, %r8 - 0x0f, 0x82, 0x57, 0x01, 0x00, 0x00, //0x000009e5 jb LBB0_113 - //0x000009eb LBB0_95 - 0x4c, 0x89, 0xef, //0x000009eb movq %r13, %rdi - 0x48, 0x2b, 0x7c, 0x24, 0x20, //0x000009ee subq $32(%rsp), %rdi - 0x4c, 0x29, 0xf7, //0x000009f3 subq %r14, %rdi - 0x48, 0x83, 0xc7, 0x01, //0x000009f6 addq $1, %rdi - 0x45, 0x31, 0xff, //0x000009fa xorl %r15d, %r15d - 0x90, 0x90, 0x90, //0x000009fd .p2align 4, 0x90 - //0x00000a00 LBB0_96 - 0xc4, 0x81, 0x7a, 0x6f, 0x44, 0x3d, 0x00, //0x00000a00 vmovdqu (%r13,%r15), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x31, 0xf6, 0xff, 0xff, //0x00000a07 vpcmpgtb $-2511(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a0f vmovdqu $-2503(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x00000a17 vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x00000a1b vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x39, 0xf6, 0xff, 0xff, //0x00000a1f vpcmpeqb $-2503(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x41, 0xf6, 0xff, 0xff, //0x00000a27 vpcmpeqb $-2495(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x00000a2f vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0xe5, 0xf5, 0xff, 0xff, //0x00000a33 vpand $-2587(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x3d, 0xf6, 0xff, 0xff, //0x00000a3b vpcmpeqb $-2499(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x45, 0xf6, 0xff, 0xff, //0x00000a43 vpcmpeqb $-2491(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00000a4b vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00000a4f vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00000a53 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0xf9, 0xd7, 0xd0, //0x00000a57 vpmovmskb %xmm0, %edx - 0xc5, 0x79, 0xd7, 0xdb, //0x00000a5b vpmovmskb %xmm3, %r11d - 0xc5, 0xf9, 0xd7, 0xf2, //0x00000a5f vpmovmskb %xmm2, %esi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00000a63 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x00000a67 notl %eax - 0x0f, 0xbc, 0xc8, //0x00000a69 bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00000a6c cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000a6f je LBB0_98 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x00000a75 movl $-1, %eax - 0xd3, 0xe0, //0x00000a7a shll %cl, %eax - 0xf7, 0xd0, //0x00000a7c notl %eax - 0x21, 0xc2, //0x00000a7e andl %eax, %edx - 0x41, 0x21, 0xc3, //0x00000a80 andl %eax, %r11d - 0x21, 0xf0, //0x00000a83 andl %esi, %eax - 0x89, 0xc6, //0x00000a85 movl %eax, %esi - //0x00000a87 LBB0_98 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xf8, 0xff, 0xff, //0x00000a87 vmovdqu $-2031(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xf7, 0xff, 0xff, //0x00000a8f vmovdqu $-2263(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x8d, 0x5a, 0xff, //0x00000a97 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00000a9a andl %edx, %ebx - 0x0f, 0x85, 0x62, 0x1d, 0x00, 0x00, //0x00000a9c jne LBB0_486 - 0x41, 0x8d, 0x5b, 0xff, //0x00000aa2 leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000aa6 andl %r11d, %ebx - 0x0f, 0x85, 0x55, 0x1d, 0x00, 0x00, //0x00000aa9 jne LBB0_486 - 0x8d, 0x5e, 0xff, //0x00000aaf leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000ab2 andl %esi, %ebx - 0x0f, 0x85, 0x4a, 0x1d, 0x00, 0x00, //0x00000ab4 jne LBB0_486 - 0x85, 0xd2, //0x00000aba testl %edx, %edx - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000abc je LBB0_104 - 0x0f, 0xbc, 0xd2, //0x00000ac2 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000ac5 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x73, 0x1d, 0x00, 0x00, //0x00000acb jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000ad1 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000ad4 addq %r15, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00000ad7 movq %rdx, $40(%rsp) - //0x00000adc LBB0_104 - 0x45, 0x85, 0xdb, //0x00000adc testl %r11d, %r11d - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00000adf je LBB0_107 - 0x41, 0x0f, 0xbc, 0xd3, //0x00000ae5 bsfl %r11d, %edx - 0x49, 0x83, 0xf9, 0xff, //0x00000ae9 cmpq $-1, %r9 - 0x0f, 0x85, 0x51, 0x1d, 0x00, 0x00, //0x00000aed jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000af3 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000af6 addq %r15, %rdx - 0x49, 0x89, 0xd1, //0x00000af9 movq %rdx, %r9 - //0x00000afc LBB0_107 - 0x85, 0xf6, //0x00000afc testl %esi, %esi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000afe je LBB0_110 - 0x0f, 0xbc, 0xd6, //0x00000b04 bsfl %esi, %edx - 0x49, 0x83, 0xfa, 0xff, //0x00000b07 cmpq $-1, %r10 - 0x0f, 0x85, 0x33, 0x1d, 0x00, 0x00, //0x00000b0b jne LBB0_489 - 0x48, 0x01, 0xfa, //0x00000b11 addq %rdi, %rdx - 0x4c, 0x01, 0xfa, //0x00000b14 addq %r15, %rdx - 0x49, 0x89, 0xd2, //0x00000b17 movq %rdx, %r10 - //0x00000b1a LBB0_110 - 0x83, 0xf9, 0x10, //0x00000b1a cmpl $16, %ecx - 0x0f, 0x85, 0xbe, 0x0a, 0x00, 0x00, //0x00000b1d jne LBB0_277 - 0x49, 0x83, 0xc0, 0xf0, //0x00000b23 addq $-16, %r8 - 0x49, 0x83, 0xc7, 0x10, //0x00000b27 addq $16, %r15 - 0x49, 0x83, 0xf8, 0x0f, //0x00000b2b cmpq $15, %r8 - 0x0f, 0x87, 0xcb, 0xfe, 0xff, 0xff, //0x00000b2f ja LBB0_96 - 0x4d, 0x01, 0xfd, //0x00000b35 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00000b38 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00000b3d movq $16(%rsp), %rdi - //0x00000b42 LBB0_113 - 0x4d, 0x85, 0xc0, //0x00000b42 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x25, 0x53, 0xf7, 0xff, 0xff, //0x00000b45 vmovdqu $-2221(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x84, 0xa8, 0x0a, 0x00, 0x00, //0x00000b4d je LBB0_279 - 0x4f, 0x8d, 0x3c, 0x28, //0x00000b53 leaq (%r8,%r13), %r15 - 0x4c, 0x89, 0xee, //0x00000b57 movq %r13, %rsi - 0x48, 0x2b, 0x74, 0x24, 0x20, //0x00000b5a subq $32(%rsp), %rsi - 0x4c, 0x29, 0xf6, //0x00000b5f subq %r14, %rsi - 0x48, 0x83, 0xc6, 0x01, //0x00000b62 addq $1, %rsi - 0x31, 0xc9, //0x00000b66 xorl %ecx, %ecx - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xf6, 0xff, 0xff, //0x00000b68 vmovdqu $-2480(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00000b70 jmp LBB0_118 - //0x00000b75 LBB0_115 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00000b75 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x8f, 0x1c, 0x00, 0x00, //0x00000b7b jne LBB0_487 - 0x48, 0x8d, 0x04, 0x0e, //0x00000b81 leaq (%rsi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x00000b85 movq %rax, $40(%rsp) - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b8a .p2align 4, 0x90 - //0x00000b90 LBB0_117 - 0x48, 0x83, 0xc1, 0x01, //0x00000b90 addq $1, %rcx - 0x49, 0x39, 0xc8, //0x00000b94 cmpq %rcx, %r8 - 0x0f, 0x84, 0x2d, 0x19, 0x00, 0x00, //0x00000b97 je LBB0_457 - //0x00000b9d LBB0_118 - 0x41, 0x0f, 0xbe, 0x54, 0x0d, 0x00, //0x00000b9d movsbl (%r13,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00000ba3 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00000ba6 cmpl $10, %eax - 0x0f, 0x82, 0xe1, 0xff, 0xff, 0xff, //0x00000ba9 jb LBB0_117 - 0x8d, 0x5a, 0xd5, //0x00000baf leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00000bb2 cmpl $26, %ebx - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000bb5 ja LBB0_123 - 0x48, 0x8d, 0x15, 0x92, 0x34, 0x00, 0x00, //0x00000bbb leaq $13458(%rip), %rdx /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00000bc2 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00000bc6 addq %rdx, %rax - 0xff, 0xe0, //0x00000bc9 jmpq *%rax - //0x00000bcb LBB0_121 - 0x49, 0x83, 0xfa, 0xff, //0x00000bcb cmpq $-1, %r10 - 0x0f, 0x85, 0x3b, 0x1c, 0x00, 0x00, //0x00000bcf jne LBB0_487 - 0x4c, 0x8d, 0x14, 0x0e, //0x00000bd5 leaq (%rsi,%rcx), %r10 - 0xe9, 0xb2, 0xff, 0xff, 0xff, //0x00000bd9 jmp LBB0_117 - //0x00000bde LBB0_123 - 0x83, 0xfa, 0x65, //0x00000bde cmpl $101, %edx - 0x0f, 0x85, 0x11, 0x0a, 0x00, 0x00, //0x00000be1 jne LBB0_278 - //0x00000be7 LBB0_124 - 0x49, 0x83, 0xf9, 0xff, //0x00000be7 cmpq $-1, %r9 - 0x0f, 0x85, 0x1f, 0x1c, 0x00, 0x00, //0x00000beb jne LBB0_487 - 0x4c, 0x8d, 0x0c, 0x0e, //0x00000bf1 leaq (%rsi,%rcx), %r9 - 0xe9, 0x96, 0xff, 0xff, 0xff, //0x00000bf5 jmp LBB0_117 - //0x00000bfa LBB0_68 - 0x83, 0xf8, 0x22, //0x00000bfa cmpl $34, %eax - 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bfd je LBB0_130 - //0x00000c03 LBB0_43 - 0x83, 0xf8, 0x7d, //0x00000c03 cmpl $125, %eax - 0x0f, 0x85, 0x81, 0x2f, 0x00, 0x00, //0x00000c06 jne LBB0_710 - //0x00000c0c LBB0_40 - 0x4d, 0x89, 0x07, //0x00000c0c movq %r8, (%r15) - 0x4c, 0x89, 0x24, 0x24, //0x00000c0f movq %r12, (%rsp) - 0x4d, 0x85, 0xc0, //0x00000c13 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0xf7, 0xff, 0xff, //0x00000c16 jne LBB0_5 - 0xe9, 0x74, 0x2f, 0x00, 0x00, //0x00000c1c jmp LBB0_711 - //0x00000c21 LBB0_126 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000c21 cmpq $4095, %rsi - 0x0f, 0x8f, 0xf1, 0x2e, 0x00, 0x00, //0x00000c28 jg LBB0_705 - 0x48, 0x8d, 0x4e, 0x01, //0x00000c2e leaq $1(%rsi), %rcx - 0x49, 0x89, 0x0f, //0x00000c32 movq %rcx, (%r15) - 0x49, 0xc7, 0x44, 0xf7, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000c35 movq $0, $8(%r15,%rsi,8) - 0xe9, 0x5d, 0xf7, 0xff, 0xff, //0x00000c3e jmp LBB0_3 - //0x00000c43 LBB0_130 - 0x49, 0xc7, 0x04, 0xf7, 0x02, 0x00, 0x00, 0x00, //0x00000c43 movq $2, (%r15,%rsi,8) - 0x41, 0xf6, 0xc3, 0x40, //0x00000c4b testb $64, %r11b - 0x0f, 0x85, 0x17, 0x03, 0x00, 0x00, //0x00000c4f jne LBB0_179 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000c55 movq (%r13), %r9 - 0x4c, 0x8b, 0x47, 0x08, //0x00000c59 movq $8(%rdi), %r8 - 0x4c, 0x89, 0xc1, //0x00000c5d movq %r8, %rcx - 0x41, 0xf6, 0xc3, 0x20, //0x00000c60 testb $32, %r11b - 0x0f, 0x85, 0x54, 0x05, 0x00, 0x00, //0x00000c64 jne LBB0_211 - 0x4c, 0x29, 0xc9, //0x00000c6a subq %r9, %rcx - 0x0f, 0x84, 0xa9, 0x30, 0x00, 0x00, //0x00000c6d je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x00000c73 cmpq $64, %rcx - 0x0f, 0x82, 0xc8, 0x1e, 0x00, 0x00, //0x00000c77 jb LBB0_511 - 0x4c, 0x89, 0xce, //0x00000c7d movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x00000c80 notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000c83 movq $-1, %r11 - 0x4c, 0x89, 0xcb, //0x00000c8a movq %r9, %rbx - 0x45, 0x31, 0xd2, //0x00000c8d xorl %r10d, %r10d - //0x00000c90 .p2align 4, 0x90 - //0x00000c90 LBB0_135 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000c90 vmovdqu (%r14,%rbx), %ymm0 - 0x49, 0x89, 0xdf, //0x00000c96 movq %rbx, %r15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x1e, 0x20, //0x00000c99 vmovdqu $32(%r14,%rbx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x00000ca0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00000ca4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00000ca8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00000cac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x00000cb0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00000cb4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x00000cb8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000cbc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x00000cc0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00000cc4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00000cc7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x00000ccb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x00000cce jne LBB0_144 - 0x4d, 0x85, 0xd2, //0x00000cd4 testq %r10, %r10 - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x00000cd7 jne LBB0_146 - 0x45, 0x31, 0xd2, //0x00000cdd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x00000ce0 testq %rdi, %rdi - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00000ce3 jne LBB0_147 - //0x00000ce9 LBB0_138 - 0x48, 0x83, 0xc1, 0xc0, //0x00000ce9 addq $-64, %rcx - 0x48, 0x83, 0xc6, 0xc0, //0x00000ced addq $-64, %rsi - 0x4c, 0x89, 0xfb, //0x00000cf1 movq %r15, %rbx - 0x48, 0x83, 0xc3, 0x40, //0x00000cf4 addq $64, %rbx - 0x48, 0x83, 0xf9, 0x3f, //0x00000cf8 cmpq $63, %rcx - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x00000cfc ja LBB0_135 - 0xe9, 0x6f, 0x1b, 0x00, 0x00, //0x00000d02 jmp LBB0_139 - //0x00000d07 LBB0_144 - 0x49, 0x83, 0xfb, 0xff, //0x00000d07 cmpq $-1, %r11 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000d0b jne LBB0_146 - 0x4c, 0x0f, 0xbc, 0xda, //0x00000d11 bsfq %rdx, %r11 - 0x4d, 0x01, 0xfb, //0x00000d15 addq %r15, %r11 - //0x00000d18 LBB0_146 - 0x4c, 0x89, 0xd0, //0x00000d18 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00000d1b notq %rax - 0x48, 0x21, 0xd0, //0x00000d1e andq %rdx, %rax - 0x48, 0x8d, 0x1c, 0x00, //0x00000d21 leaq (%rax,%rax), %rbx - 0x4c, 0x09, 0xd3, //0x00000d25 orq %r10, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00000d28 movq %rbx, (%rsp) - 0x48, 0xf7, 0xd3, //0x00000d2c notq %rbx - 0x48, 0x21, 0xd3, //0x00000d2f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d32 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x00000d3c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x00000d3f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00000d42 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00000d45 setb %r10b - 0x48, 0x01, 0xdb, //0x00000d49 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000d4c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00000d56 xorq %rax, %rbx - 0x48, 0x23, 0x1c, 0x24, //0x00000d59 andq (%rsp), %rbx - 0x48, 0xf7, 0xd3, //0x00000d5d notq %rbx - 0x48, 0x21, 0xdf, //0x00000d60 andq %rbx, %rdi - 0x48, 0x85, 0xff, //0x00000d63 testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000d66 je LBB0_138 - //0x00000d6c LBB0_147 - 0x4c, 0x0f, 0xbc, 0xd7, //0x00000d6c bsfq %rdi, %r10 - 0x49, 0x29, 0xf2, //0x00000d70 subq %rsi, %r10 - 0x4d, 0x89, 0xdf, //0x00000d73 movq %r11, %r15 - 0xe9, 0x11, 0x0a, 0x00, 0x00, //0x00000d76 jmp LBB0_298 - //0x00000d7b LBB0_148 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000d7b movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000d83 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000d87 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000d8b leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000d8f subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000d92 cmpq $32, %r10 - 0x0f, 0x8c, 0x9e, 0x17, 0x00, 0x00, //0x00000d96 jl LBB0_158 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000d9c movl $32, %ecx - 0x31, 0xf6, //0x00000da1 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000da3 xorl %r15d, %r15d - 0xe9, 0x59, 0x00, 0x00, 0x00, //0x00000da6 jmp LBB0_150 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000dab .p2align 4, 0x90 - //0x00000db0 LBB0_154 - 0x44, 0x89, 0xfa, //0x00000db0 movl %r15d, %edx - 0xf7, 0xd2, //0x00000db3 notl %edx - 0x21, 0xda, //0x00000db5 andl %ebx, %edx - 0x8d, 0x04, 0x12, //0x00000db7 leal (%rdx,%rdx), %eax - 0x44, 0x09, 0xf8, //0x00000dba orl %r15d, %eax - 0x89, 0xc7, //0x00000dbd movl %eax, %edi - 0xf7, 0xd7, //0x00000dbf notl %edi - 0x21, 0xdf, //0x00000dc1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000dc3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000dc9 xorl %r15d, %r15d - 0x01, 0xd7, //0x00000dcc addl %edx, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000dce setb %r15b - 0x01, 0xff, //0x00000dd2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000dd4 xorl $1431655765, %edi - 0x21, 0xc7, //0x00000dda andl %eax, %edi - 0xf7, 0xd7, //0x00000ddc notl %edi - 0x41, 0x21, 0xfb, //0x00000dde andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000de1 testq %r11, %r11 - 0x0f, 0x85, 0x7f, 0xf5, 0xff, 0xff, //0x00000de4 jne LBB0_153 - //0x00000dea LBB0_155 - 0x48, 0x83, 0xc6, 0x20, //0x00000dea addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000dee leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000df2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000df6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000dfa cmpq $63, %rax - 0x0f, 0x8e, 0x18, 0x17, 0x00, 0x00, //0x00000dfe jle LBB0_156 - //0x00000e04 LBB0_150 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000e04 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000e0a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000e0e vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00000e12 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00000e16 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00000e1a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00000e1c jne LBB0_154 - 0x4d, 0x85, 0xff, //0x00000e22 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00000e25 jne LBB0_154 - 0x45, 0x31, 0xff, //0x00000e2b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x00000e2e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000e31 je LBB0_155 - 0xe9, 0x2d, 0xf5, 0xff, 0xff, //0x00000e37 jmp LBB0_153 - //0x00000e3c LBB0_159 - 0x4c, 0x89, 0xc6, //0x00000e3c movq %r8, %rsi - 0x48, 0x29, 0xde, //0x00000e3f subq %rbx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x00000e42 cmpq $32, %rsi - 0x0f, 0x82, 0x13, 0x1c, 0x00, 0x00, //0x00000e46 jb LBB0_501 - 0x48, 0x89, 0xda, //0x00000e4c movq %rbx, %rdx - 0x48, 0xf7, 0xda, //0x00000e4f negq %rdx - 0x48, 0x89, 0xd9, //0x00000e52 movq %rbx, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000e55 .p2align 4, 0x90 - //0x00000e60 LBB0_161 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00000e60 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x00000e66 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x00000e6a vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0x2a, 0xf3, 0xff, 0xff, //0x00000e6e vpcmpeqb $-3286(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x00000e76 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00000e7a vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x00000e7e testl %esi, %esi - 0x0f, 0x85, 0xce, 0x00, 0x00, 0x00, //0x00000e80 jne LBB0_175 - 0x48, 0x83, 0xc1, 0x20, //0x00000e86 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x10, //0x00000e8a leaq (%r8,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000e8e addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00000e92 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00000e96 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x00000e9a ja LBB0_161 - 0x4c, 0x89, 0xf1, //0x00000ea0 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00000ea3 subq %rdx, %rcx - 0x49, 0x01, 0xd0, //0x00000ea6 addq %rdx, %r8 - 0x4c, 0x89, 0xc6, //0x00000ea9 movq %r8, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x00000eac cmpq $16, %rsi - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00000eb0 jb LBB0_167 - //0x00000eb6 LBB0_164 - 0x4c, 0x89, 0xf2, //0x00000eb6 movq %r14, %rdx - 0x48, 0x29, 0xca, //0x00000eb9 subq %rcx, %rdx - //0x00000ebc LBB0_165 - 0xc5, 0xfa, 0x6f, 0x01, //0x00000ebc vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0x48, 0xf1, 0xff, 0xff, //0x00000ec0 vpcmpeqb $-3768(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0x50, 0xf1, 0xff, 0xff, //0x00000ec8 vpand $-3760(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x58, 0xf1, 0xff, 0xff, //0x00000ed0 vpcmpeqb $-3752(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x00000ed8 vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00000edc vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00000ee0 testl %eax, %eax - 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x00000ee2 jne LBB0_465 - 0x48, 0x83, 0xc1, 0x10, //0x00000ee8 addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00000eec addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00000ef0 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00000ef4 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000ef8 ja LBB0_165 - //0x00000efe LBB0_167 - 0x48, 0x89, 0xd8, //0x00000efe movq %rbx, %rax - 0xc5, 0x7d, 0x7f, 0xe1, //0x00000f01 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00000f05 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000f09 vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x00000f0e testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000f11 je LBB0_174 - 0x48, 0x8d, 0x3c, 0x31, //0x00000f17 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x00000f1b xorl %edx, %edx - //0x00000f1d LBB0_169 - 0x0f, 0xb6, 0x1c, 0x11, //0x00000f1d movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000f21 cmpb $44, %bl - 0x0f, 0x84, 0xb0, 0x1b, 0x00, 0x00, //0x00000f24 je LBB0_507 - 0x80, 0xfb, 0x7d, //0x00000f2a cmpb $125, %bl - 0x0f, 0x84, 0xa7, 0x1b, 0x00, 0x00, //0x00000f2d je LBB0_507 - 0x80, 0xfb, 0x5d, //0x00000f33 cmpb $93, %bl - 0x0f, 0x84, 0x9e, 0x1b, 0x00, 0x00, //0x00000f36 je LBB0_507 - 0x48, 0x83, 0xc2, 0x01, //0x00000f3c addq $1, %rdx - 0x48, 0x39, 0xd6, //0x00000f40 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000f43 jne LBB0_169 - 0x48, 0x89, 0xf9, //0x00000f49 movq %rdi, %rcx - //0x00000f4c LBB0_174 - 0x4c, 0x29, 0xf1, //0x00000f4c subq %r14, %rcx - 0xe9, 0x8c, 0x1b, 0x00, 0x00, //0x00000f4f jmp LBB0_508 - //0x00000f54 LBB0_175 - 0x0f, 0xbc, 0xce, //0x00000f54 bsfl %esi, %ecx - //0x00000f57 LBB0_176 - 0x48, 0x29, 0xd1, //0x00000f57 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00000f5a movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00000f5e testq %rbx, %rbx - 0x0f, 0x8f, 0x39, 0xf4, 0xff, 0xff, //0x00000f61 jg LBB0_3 - 0xe9, 0xff, 0x2b, 0x00, 0x00, //0x00000f67 jmp LBB0_178 - //0x00000f6c LBB0_179 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00000f6c movq $-1, (%rsp) - 0x4c, 0x8b, 0x57, 0x08, //0x00000f74 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x00000f78 movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x00000f7c leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x00000f80 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x00000f83 cmpq $32, %r10 - 0x0f, 0x8c, 0xae, 0x17, 0x00, 0x00, //0x00000f87 jl LBB0_189 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x00000f8d movl $32, %ecx - 0x31, 0xf6, //0x00000f92 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x00000f94 xorl %r15d, %r15d - 0xe9, 0x58, 0x00, 0x00, 0x00, //0x00000f97 jmp LBB0_181 - 0x90, 0x90, 0x90, 0x90, //0x00000f9c .p2align 4, 0x90 - //0x00000fa0 LBB0_185 - 0x44, 0x89, 0xf8, //0x00000fa0 movl %r15d, %eax - 0xf7, 0xd0, //0x00000fa3 notl %eax - 0x21, 0xd8, //0x00000fa5 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00000fa7 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x00000faa orl %r15d, %edx - 0x89, 0xd7, //0x00000fad movl %edx, %edi - 0xf7, 0xd7, //0x00000faf notl %edi - 0x21, 0xdf, //0x00000fb1 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb3 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00000fb9 xorl %r15d, %r15d - 0x01, 0xc7, //0x00000fbc addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x00000fbe setb %r15b - 0x01, 0xff, //0x00000fc2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000fc4 xorl $1431655765, %edi - 0x21, 0xd7, //0x00000fca andl %edx, %edi - 0xf7, 0xd7, //0x00000fcc notl %edi - 0x41, 0x21, 0xfb, //0x00000fce andl %edi, %r11d - 0x4d, 0x85, 0xdb, //0x00000fd1 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000fd4 jne LBB0_184 - //0x00000fda LBB0_186 - 0x48, 0x83, 0xc6, 0x20, //0x00000fda addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x00000fde leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00000fe2 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00000fe6 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x00000fea cmpq $63, %rax - 0x0f, 0x8e, 0x29, 0x17, 0x00, 0x00, //0x00000fee jle LBB0_187 - //0x00000ff4 LBB0_181 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000ff4 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00000ffa vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x00000ffe vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x00001002 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001006 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x0000100a testl %ebx, %ebx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000100c jne LBB0_185 - 0x4d, 0x85, 0xff, //0x00001012 testq %r15, %r15 - 0x0f, 0x85, 0x85, 0xff, 0xff, 0xff, //0x00001015 jne LBB0_185 - 0x45, 0x31, 0xff, //0x0000101b xorl %r15d, %r15d - 0x4d, 0x85, 0xdb, //0x0000101e testq %r11, %r11 - 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00001021 je LBB0_186 - //0x00001027 LBB0_184 - 0x41, 0x0f, 0xbc, 0xc3, //0x00001027 bsfl %r11d, %eax - 0x4c, 0x01, 0xc0, //0x0000102b addq %r8, %rax - 0x4c, 0x8d, 0x0c, 0x06, //0x0000102e leaq (%rsi,%rax), %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00001032 addq $1, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001036 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000103b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001040 movq $8(%rsp), %r15 - 0x4d, 0x89, 0x4d, 0x00, //0x00001045 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00001049 testq %r8, %r8 - 0x0f, 0x8f, 0x5f, 0x07, 0x00, 0x00, //0x0000104c jg LBB0_300 - 0xe9, 0xd5, 0x2a, 0x00, 0x00, //0x00001052 jmp LBB0_679 - //0x00001057 LBB0_190 - 0x4c, 0x29, 0xcb, //0x00001057 subq %r9, %rbx - 0x0f, 0x84, 0xbc, 0x2c, 0x00, 0x00, //0x0000105a je LBB0_717 - 0x48, 0x83, 0xfb, 0x40, //0x00001060 cmpq $64, %rbx - 0x0f, 0x82, 0x53, 0x1a, 0x00, 0x00, //0x00001064 jb LBB0_506 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000106a movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x00001071 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x00001074 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001077 .p2align 4, 0x90 - //0x00001080 LBB0_193 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x00001080 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x00001086 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000108d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00001091 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00001095 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001099 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000109d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x000010a1 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x000010a5 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x000010a9 vpmovmskb %ymm2, %ecx - 0xc5, 0xbd, 0x64, 0xd1, //0x000010ad vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x000010b1 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x000010b6 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000010ba vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x000010be shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000010c2 orq %rax, %rdi - 0x48, 0xc1, 0xe1, 0x20, //0x000010c5 shlq $32, %rcx - 0x48, 0xc1, 0xe6, 0x20, //0x000010c9 shlq $32, %rsi - 0x48, 0x09, 0xca, //0x000010cd orq %rcx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000010d0 jne LBB0_204 - 0x4d, 0x85, 0xdb, //0x000010d6 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x000010d9 jne LBB0_206 - 0x45, 0x31, 0xdb, //0x000010df xorl %r11d, %r11d - //0x000010e2 LBB0_196 - 0xc5, 0xbd, 0x64, 0xc8, //0x000010e2 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000010e6 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000010eb vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000010ef vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x000010f3 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x000010f6 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000010f9 jne LBB0_207 - 0x48, 0x85, 0xf6, //0x000010ff testq %rsi, %rsi - 0x0f, 0x85, 0xac, 0x2a, 0x00, 0x00, //0x00001102 jne LBB0_699 - 0x48, 0x83, 0xc3, 0xc0, //0x00001108 addq $-64, %rbx - 0x49, 0x83, 0xc2, 0x40, //0x0000110c addq $64, %r10 - 0x48, 0x83, 0xfb, 0x3f, //0x00001110 cmpq $63, %rbx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001114 ja LBB0_193 - 0xe9, 0x81, 0x16, 0x00, 0x00, //0x0000111a jmp LBB0_199 - //0x0000111f LBB0_204 - 0x49, 0x83, 0xff, 0xff, //0x0000111f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001123 jne LBB0_206 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001129 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000112d addq %r10, %r15 - //0x00001130 LBB0_206 - 0x4c, 0x89, 0x3c, 0x24, //0x00001130 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001134 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001137 notq %rax - 0x48, 0x21, 0xd0, //0x0000113a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000113d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x00001140 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x00001144 orq %r11, %r10 - 0x4c, 0x89, 0xd1, //0x00001147 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x0000114a notq %rcx - 0x48, 0x21, 0xd1, //0x0000114d andq %rdx, %rcx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001150 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd1, //0x0000115a andq %rdx, %rcx - 0x45, 0x31, 0xdb, //0x0000115d xorl %r11d, %r11d - 0x48, 0x01, 0xc1, //0x00001160 addq %rax, %rcx - 0x41, 0x0f, 0x92, 0xc3, //0x00001163 setb %r11b - 0x48, 0x01, 0xc9, //0x00001167 addq %rcx, %rcx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000116a movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc1, //0x00001174 xorq %rax, %rcx - 0x4c, 0x21, 0xd1, //0x00001177 andq %r10, %rcx - 0x4d, 0x89, 0xfa, //0x0000117a movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x0000117d movq (%rsp), %r15 - 0x48, 0xf7, 0xd1, //0x00001181 notq %rcx - 0x48, 0x21, 0xcf, //0x00001184 andq %rcx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x00001187 jmp LBB0_196 - //0x0000118c LBB0_207 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000118c bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x00001190 testq %rsi, %rsi - 0x0f, 0x84, 0x72, 0x01, 0x00, 0x00, //0x00001193 je LBB0_230 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001199 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x0000119d cmpq %rcx, %rdx - 0x0f, 0x83, 0x73, 0x01, 0x00, 0x00, //0x000011a0 jae LBB0_231 - 0xe9, 0x8b, 0x2b, 0x00, 0x00, //0x000011a6 jmp LBB0_209 - //0x000011ab LBB0_210 - 0x4c, 0x01, 0xe9, //0x000011ab addq %r13, %rcx - 0x48, 0x03, 0x4c, 0x24, 0x38, //0x000011ae addq $56(%rsp), %rcx - 0xc5, 0xf8, 0x77, //0x000011b3 vzeroupper - 0x49, 0x89, 0xcd, //0x000011b6 movq %rcx, %r13 - 0xe9, 0x3d, 0x04, 0x00, 0x00, //0x000011b9 jmp LBB0_279 - //0x000011be LBB0_211 - 0x4c, 0x29, 0xc9, //0x000011be subq %r9, %rcx - 0x0f, 0x84, 0x55, 0x2b, 0x00, 0x00, //0x000011c1 je LBB0_717 - 0x48, 0x83, 0xf9, 0x40, //0x000011c7 cmpq $64, %rcx - 0x0f, 0x82, 0x94, 0x19, 0x00, 0x00, //0x000011cb jb LBB0_513 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000011d1 movq $-1, %r15 - 0x4d, 0x89, 0xca, //0x000011d8 movq %r9, %r10 - 0x45, 0x31, 0xdb, //0x000011db xorl %r11d, %r11d - 0x90, 0x90, //0x000011de .p2align 4, 0x90 - //0x000011e0 LBB0_214 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x16, //0x000011e0 vmovdqu (%r14,%r10), %ymm0 - 0xc4, 0x81, 0x7e, 0x6f, 0x4c, 0x16, 0x20, //0x000011e6 vmovdqu $32(%r14,%r10), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000011ed vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000011f1 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000011f5 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000011f9 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x000011fd vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001201 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00001205 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00001209 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000120d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00001211 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00001216 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000121a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000121e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00001222 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00001225 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00001229 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000122d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00001230 jne LBB0_225 - 0x4d, 0x85, 0xdb, //0x00001236 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00001239 jne LBB0_227 - 0x45, 0x31, 0xdb, //0x0000123f xorl %r11d, %r11d - //0x00001242 LBB0_217 - 0xc5, 0xbd, 0x64, 0xc8, //0x00001242 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00001246 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000124b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000124f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00001253 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00001256 testq %rdi, %rdi - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001259 jne LBB0_228 - 0x48, 0x85, 0xf6, //0x0000125f testq %rsi, %rsi - 0x0f, 0x85, 0x4c, 0x29, 0x00, 0x00, //0x00001262 jne LBB0_699 - 0x48, 0x83, 0xc1, 0xc0, //0x00001268 addq $-64, %rcx - 0x49, 0x83, 0xc2, 0x40, //0x0000126c addq $64, %r10 - 0x48, 0x83, 0xf9, 0x3f, //0x00001270 cmpq $63, %rcx - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00001274 ja LBB0_214 - 0xe9, 0x4e, 0x16, 0x00, 0x00, //0x0000127a jmp LBB0_220 - //0x0000127f LBB0_225 - 0x49, 0x83, 0xff, 0xff, //0x0000127f cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001283 jne LBB0_227 - 0x4c, 0x0f, 0xbc, 0xfa, //0x00001289 bsfq %rdx, %r15 - 0x4d, 0x01, 0xd7, //0x0000128d addq %r10, %r15 - //0x00001290 LBB0_227 - 0x4c, 0x89, 0x3c, 0x24, //0x00001290 movq %r15, (%rsp) - 0x4c, 0x89, 0xd8, //0x00001294 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x00001297 notq %rax - 0x48, 0x21, 0xd0, //0x0000129a andq %rdx, %rax - 0x4d, 0x89, 0xd7, //0x0000129d movq %r10, %r15 - 0x4c, 0x8d, 0x14, 0x00, //0x000012a0 leaq (%rax,%rax), %r10 - 0x4d, 0x09, 0xda, //0x000012a4 orq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x000012a7 movq %r10, %rbx - 0x48, 0xf7, 0xd3, //0x000012aa notq %rbx - 0x48, 0x21, 0xd3, //0x000012ad andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000012b0 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000012ba andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000012bd xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000012c0 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x000012c3 setb %r11b - 0x48, 0x01, 0xdb, //0x000012c7 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000012ca movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x000012d4 xorq %rax, %rbx - 0x4c, 0x21, 0xd3, //0x000012d7 andq %r10, %rbx - 0x4d, 0x89, 0xfa, //0x000012da movq %r15, %r10 - 0x4c, 0x8b, 0x3c, 0x24, //0x000012dd movq (%rsp), %r15 - 0x48, 0xf7, 0xd3, //0x000012e1 notq %rbx - 0x48, 0x21, 0xdf, //0x000012e4 andq %rbx, %rdi - 0xe9, 0x56, 0xff, 0xff, 0xff, //0x000012e7 jmp LBB0_217 - //0x000012ec LBB0_228 - 0x48, 0x0f, 0xbc, 0xcf, //0x000012ec bsfq %rdi, %rcx - 0x48, 0x85, 0xf6, //0x000012f0 testq %rsi, %rsi - 0x0f, 0x84, 0x7e, 0x04, 0x00, 0x00, //0x000012f3 je LBB0_296 - 0x48, 0x0f, 0xbc, 0xd6, //0x000012f9 bsfq %rsi, %rdx - 0x48, 0x39, 0xca, //0x000012fd cmpq %rcx, %rdx - 0x0f, 0x83, 0x7f, 0x04, 0x00, 0x00, //0x00001300 jae LBB0_297 - 0xe9, 0x2b, 0x2a, 0x00, 0x00, //0x00001306 jmp LBB0_209 - //0x0000130b LBB0_230 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000130b movl $64, %edx - 0x48, 0x39, 0xca, //0x00001310 cmpq %rcx, %rdx - 0x0f, 0x82, 0x1d, 0x2a, 0x00, 0x00, //0x00001313 jb LBB0_209 - //0x00001319 LBB0_231 - 0x49, 0x01, 0xca, //0x00001319 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x0000131c addq $1, %r10 - //0x00001320 LBB0_232 - 0x4d, 0x85, 0xd2, //0x00001320 testq %r10, %r10 - 0x0f, 0x88, 0x1d, 0x28, 0x00, 0x00, //0x00001323 js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001329 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x0000132d testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001330 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001335 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000133a movq $8(%rsp), %r15 - 0x0f, 0x8f, 0x5b, 0xf0, 0xff, 0xff, //0x0000133f jg LBB0_3 - 0xe9, 0xef, 0x27, 0x00, 0x00, //0x00001345 jmp LBB0_463 - //0x0000134a LBB0_234 - 0x41, 0xf6, 0xc3, 0x40, //0x0000134a testb $64, %r11b - 0x0f, 0x85, 0x82, 0x04, 0x00, 0x00, //0x0000134e jne LBB0_302 - 0x4d, 0x8b, 0x4d, 0x00, //0x00001354 movq (%r13), %r9 - 0x4c, 0x8b, 0x7f, 0x08, //0x00001358 movq $8(%rdi), %r15 - 0x4d, 0x89, 0xf8, //0x0000135c movq %r15, %r8 - 0x41, 0xf6, 0xc3, 0x20, //0x0000135f testb $32, %r11b - 0x0f, 0x85, 0x97, 0x0c, 0x00, 0x00, //0x00001363 jne LBB0_385 - 0x4d, 0x29, 0xc8, //0x00001369 subq %r9, %r8 - 0x0f, 0x84, 0xf1, 0x29, 0x00, 0x00, //0x0000136c je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00001372 cmpq $64, %r8 - 0x0f, 0x82, 0x48, 0x18, 0x00, 0x00, //0x00001376 jb LBB0_516 - 0x4c, 0x89, 0xce, //0x0000137c movq %r9, %rsi - 0x48, 0xf7, 0xd6, //0x0000137f notq %rsi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00001382 movq $-1, %r11 - 0x4c, 0x89, 0xcf, //0x00001389 movq %r9, %rdi - 0x45, 0x31, 0xd2, //0x0000138c xorl %r10d, %r10d - 0x90, //0x0000138f .p2align 4, 0x90 - //0x00001390 LBB0_239 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x3e, //0x00001390 vmovdqu (%r14,%rdi), %ymm0 - 0x48, 0x89, 0xf9, //0x00001396 movq %rdi, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x3e, 0x20, //0x00001399 vmovdqu $32(%r14,%rdi), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x000013a0 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x000013a4 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x000013a8 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x000013ac vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xc7, //0x000013b0 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000013b4 vpmovmskb %ymm0, %edx - 0xc5, 0xf5, 0x74, 0xc7, //0x000013b8 vpcmpeqb %ymm7, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x000013bc vpmovmskb %ymm0, %ebx - 0x48, 0xc1, 0xe0, 0x20, //0x000013c0 shlq $32, %rax - 0x48, 0x09, 0xc7, //0x000013c4 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x000013c7 shlq $32, %rbx - 0x48, 0x09, 0xda, //0x000013cb orq %rbx, %rdx - 0x0f, 0x85, 0x33, 0x00, 0x00, 0x00, //0x000013ce jne LBB0_248 - 0x4d, 0x85, 0xd2, //0x000013d4 testq %r10, %r10 - 0x0f, 0x85, 0x48, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_250 - 0x45, 0x31, 0xd2, //0x000013dd xorl %r10d, %r10d - 0x48, 0x85, 0xff, //0x000013e0 testq %rdi, %rdi - 0x0f, 0x85, 0x96, 0x00, 0x00, 0x00, //0x000013e3 jne LBB0_252 - //0x000013e9 LBB0_242 - 0x49, 0x83, 0xc0, 0xc0, //0x000013e9 addq $-64, %r8 - 0x48, 0x83, 0xc6, 0xc0, //0x000013ed addq $-64, %rsi - 0x48, 0x89, 0xcf, //0x000013f1 movq %rcx, %rdi - 0x48, 0x83, 0xc7, 0x40, //0x000013f4 addq $64, %rdi - 0x49, 0x83, 0xf8, 0x3f, //0x000013f8 cmpq $63, %r8 - 0x0f, 0x87, 0x8e, 0xff, 0xff, 0xff, //0x000013fc ja LBB0_239 - 0xe9, 0x99, 0x15, 0x00, 0x00, //0x00001402 jmp LBB0_243 - //0x00001407 LBB0_248 - 0x4c, 0x89, 0x1c, 0x24, //0x00001407 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x0000140b cmpq $-1, %r11 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000140f jne LBB0_251 - 0x48, 0x0f, 0xbc, 0xc2, //0x00001415 bsfq %rdx, %rax - 0x48, 0x01, 0xc8, //0x00001419 addq %rcx, %rax - 0x48, 0x89, 0x04, 0x24, //0x0000141c movq %rax, (%rsp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00001420 jmp LBB0_251 - //0x00001425 LBB0_250 - 0x4c, 0x89, 0x1c, 0x24, //0x00001425 movq %r11, (%rsp) - //0x00001429 LBB0_251 - 0x4c, 0x89, 0xd0, //0x00001429 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x0000142c notq %rax - 0x48, 0x21, 0xd0, //0x0000142f andq %rdx, %rax - 0x4c, 0x8d, 0x1c, 0x00, //0x00001432 leaq (%rax,%rax), %r11 - 0x4d, 0x09, 0xd3, //0x00001436 orq %r10, %r11 - 0x4c, 0x89, 0xdb, //0x00001439 movq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000143c notq %rbx - 0x48, 0x21, 0xd3, //0x0000143f andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001442 movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x0000144c andq %rdx, %rbx - 0x45, 0x31, 0xd2, //0x0000144f xorl %r10d, %r10d - 0x48, 0x01, 0xc3, //0x00001452 addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc2, //0x00001455 setb %r10b - 0x48, 0x01, 0xdb, //0x00001459 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000145c movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00001466 xorq %rax, %rbx - 0x4c, 0x21, 0xdb, //0x00001469 andq %r11, %rbx - 0x48, 0xf7, 0xd3, //0x0000146c notq %rbx - 0x48, 0x21, 0xdf, //0x0000146f andq %rbx, %rdi - 0x4c, 0x8b, 0x1c, 0x24, //0x00001472 movq (%rsp), %r11 - 0x48, 0x85, 0xff, //0x00001476 testq %rdi, %rdi - 0x0f, 0x84, 0x6a, 0xff, 0xff, 0xff, //0x00001479 je LBB0_242 - //0x0000147f LBB0_252 - 0xc5, 0x7d, 0x7f, 0xea, //0x0000147f vmovdqa %ymm13, %ymm2 - 0x48, 0x0f, 0xbc, 0xcf, //0x00001483 bsfq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00001487 subq %rsi, %rcx - 0xe9, 0x5f, 0x10, 0x00, 0x00, //0x0000148a jmp LBB0_461 - //0x0000148f LBB0_253 - 0x4c, 0x8b, 0x57, 0x08, //0x0000148f movq $8(%rdi), %r10 - 0x49, 0x8b, 0x4d, 0x00, //0x00001493 movq (%r13), %rcx - 0x41, 0xf6, 0xc3, 0x40, //0x00001497 testb $64, %r11b - 0x48, 0x89, 0x0c, 0x24, //0x0000149b movq %rcx, (%rsp) - 0x0f, 0x85, 0x0b, 0x04, 0x00, 0x00, //0x0000149f jne LBB0_313 - 0x49, 0x29, 0xca, //0x000014a5 subq %rcx, %r10 - 0x0f, 0x84, 0x3a, 0x28, 0x00, 0x00, //0x000014a8 je LBB0_704 - 0x49, 0x8d, 0x04, 0x0e, //0x000014ae leaq (%r14,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x38, //0x000014b2 movq %rax, $56(%rsp) - 0x80, 0x38, 0x30, //0x000014b7 cmpb $48, (%rax) - 0x0f, 0x85, 0xab, 0x0c, 0x00, 0x00, //0x000014ba jne LBB0_406 - 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000014c0 movl $1, %r9d - 0x49, 0x83, 0xfa, 0x01, //0x000014c6 cmpq $1, %r10 - 0x0f, 0x85, 0x6c, 0x0c, 0x00, 0x00, //0x000014ca jne LBB0_404 - //0x000014d0 LBB0_257 - 0x48, 0x8b, 0x0c, 0x24, //0x000014d0 movq (%rsp), %rcx - 0xe9, 0xb0, 0x14, 0x00, 0x00, //0x000014d4 jmp LBB0_498 - //0x000014d9 LBB0_258 - 0x41, 0xf6, 0xc3, 0x40, //0x000014d9 testb $64, %r11b - 0x0f, 0x85, 0xe2, 0x04, 0x00, 0x00, //0x000014dd jne LBB0_329 - 0x49, 0x8b, 0x0f, //0x000014e3 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000014e6 cmpq $4095, %rcx - 0x0f, 0x8f, 0x2c, 0x26, 0x00, 0x00, //0x000014ed jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000014f3 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000014f7 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000014fa movq $5, $8(%r15,%rcx,8) - 0xe9, 0x98, 0xee, 0xff, 0xff, //0x00001503 jmp LBB0_3 - //0x00001508 LBB0_261 - 0x49, 0x8b, 0x4d, 0x00, //0x00001508 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x0000150c movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfc, //0x00001510 leaq $-4(%rdx), %rax - 0x48, 0x39, 0xc1, //0x00001514 cmpq %rax, %rcx - 0x0f, 0x87, 0x8e, 0x26, 0x00, 0x00, //0x00001517 ja LBB0_686 - 0x41, 0x8b, 0x14, 0x0e, //0x0000151d movl (%r14,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001521 cmpl $1702063201, %edx - 0x0f, 0x85, 0xac, 0x26, 0x00, 0x00, //0x00001527 jne LBB0_687 - 0x48, 0x8d, 0x41, 0x04, //0x0000152d leaq $4(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00001531 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x00001535 testq %rcx, %rcx - 0x0f, 0x8f, 0x62, 0xee, 0xff, 0xff, //0x00001538 jg LBB0_3 - 0xe9, 0x98, 0x27, 0x00, 0x00, //0x0000153e jmp LBB0_264 - //0x00001543 LBB0_265 - 0x49, 0x8b, 0x4d, 0x00, //0x00001543 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001547 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x0000154b leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000154f cmpq %rax, %rcx - 0x0f, 0x87, 0x53, 0x26, 0x00, 0x00, //0x00001552 ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001558 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000155c cmpl $1819047278, $-1(%r14,%rcx) - 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x00001565 je LBB0_273 - 0xe9, 0xc3, 0x26, 0x00, 0x00, //0x0000156b jmp LBB0_267 - //0x00001570 LBB0_271 - 0x49, 0x8b, 0x4d, 0x00, //0x00001570 movq (%r13), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001574 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x42, 0xfd, //0x00001578 leaq $-3(%rdx), %rax - 0x48, 0x39, 0xc1, //0x0000157c cmpq %rax, %rcx - 0x0f, 0x87, 0x26, 0x26, 0x00, 0x00, //0x0000157f ja LBB0_686 - 0x48, 0x8d, 0x41, 0xff, //0x00001585 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001589 cmpl $1702195828, $-1(%r14,%rcx) - 0x0f, 0x85, 0xe6, 0x26, 0x00, 0x00, //0x00001592 jne LBB0_692 - //0x00001598 LBB0_273 - 0x48, 0x89, 0x04, 0x24, //0x00001598 movq %rax, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x0000159c leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x000015a0 movq %rax, (%r13) - 0x48, 0x85, 0xc9, //0x000015a4 testq %rcx, %rcx - 0x0f, 0x8f, 0xf3, 0xed, 0xff, 0xff, //0x000015a7 jg LBB0_3 - 0xe9, 0xe3, 0x25, 0x00, 0x00, //0x000015ad jmp LBB0_711 - //0x000015b2 LBB0_274 - 0x41, 0xf6, 0xc3, 0x40, //0x000015b2 testb $64, %r11b - 0x0f, 0x85, 0xfb, 0x06, 0x00, 0x00, //0x000015b6 jne LBB0_355 - 0x49, 0x8b, 0x0f, //0x000015bc movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015bf cmpq $4095, %rcx - 0x0f, 0x8f, 0x53, 0x25, 0x00, 0x00, //0x000015c6 jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000015cc leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000015d0 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000015d3 movq $6, $8(%r15,%rcx,8) - 0xe9, 0xbf, 0xed, 0xff, 0xff, //0x000015dc jmp LBB0_3 - //0x000015e1 LBB0_277 - 0x89, 0xc8, //0x000015e1 movl %ecx, %eax - 0x49, 0x01, 0xc5, //0x000015e3 addq %rax, %r13 - 0x4d, 0x01, 0xfd, //0x000015e6 addq %r15, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000015e9 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000015ee movq $16(%rsp), %rdi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000015f3 jmp LBB0_279 - //0x000015f8 LBB0_278 - 0x49, 0x01, 0xcd, //0x000015f8 addq %rcx, %r13 - //0x000015fb LBB0_279 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000015fb movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001602 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00001607 testq %rdx, %rdx - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000160a movq $8(%rsp), %r15 - 0x0f, 0x84, 0x66, 0x25, 0x00, 0x00, //0x0000160f je LBB0_684 - 0x4d, 0x85, 0xd2, //0x00001615 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x1d, 0xa0, 0xeb, 0xff, 0xff, //0x00001618 vmovdqu $-5216(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x84, 0x55, 0x25, 0x00, 0x00, //0x00001620 je LBB0_684 - 0x4d, 0x85, 0xc9, //0x00001626 testq %r9, %r9 - 0x0f, 0x84, 0x4c, 0x25, 0x00, 0x00, //0x00001629 je LBB0_684 - 0x4c, 0x2b, 0x6c, 0x24, 0x38, //0x0000162f subq $56(%rsp), %r13 - 0x49, 0x8d, 0x4d, 0xff, //0x00001634 leaq $-1(%r13), %rcx - 0x48, 0x39, 0xca, //0x00001638 cmpq %rcx, %rdx - 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000163b je LBB0_288 - 0x49, 0x39, 0xca, //0x00001641 cmpq %rcx, %r10 - 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001644 je LBB0_288 - 0x49, 0x39, 0xc9, //0x0000164a cmpq %rcx, %r9 - 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x0000164d je LBB0_288 - 0x4d, 0x85, 0xd2, //0x00001653 testq %r10, %r10 - 0xc5, 0xfe, 0x6f, 0x2d, 0x62, 0xea, 0xff, 0xff, //0x00001656 vmovdqu $-5534(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x7a, 0xea, 0xff, 0xff, //0x0000165e vmovdqu $-5510(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x92, 0xea, 0xff, 0xff, //0x00001666 vmovdqu $-5486(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0xaa, 0xea, 0xff, 0xff, //0x0000166e vmovdqu $-5462(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001676 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x7d, 0xeb, 0xff, 0xff, //0x0000167b vmovdqu $-5251(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x95, 0xeb, 0xff, 0xff, //0x00001683 vmovdqu $-5227(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0xad, 0xeb, 0xff, 0xff, //0x0000168b vmovdqu $-5203(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x45, 0xeb, 0xff, 0xff, //0x00001693 vmovdqu $-5307(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xeb, 0xff, 0xff, //0x0000169b vmovdqu $-5123(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0x0f, 0x8e, 0x9b, 0x00, 0x00, 0x00, //0x000016a3 jle LBB0_293 - 0x49, 0x8d, 0x42, 0xff, //0x000016a9 leaq $-1(%r10), %rax - 0x49, 0x39, 0xc1, //0x000016ad cmpq %rax, %r9 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000016b0 je LBB0_293 - 0x49, 0xf7, 0xd2, //0x000016b6 notq %r10 - 0x4d, 0x89, 0xd5, //0x000016b9 movq %r10, %r13 - 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000016bc jmp LBB0_289 - //0x000016c1 LBB0_288 - 0x49, 0xf7, 0xdd, //0x000016c1 negq %r13 - 0xc5, 0xfe, 0x6f, 0x2d, 0xf4, 0xe9, 0xff, 0xff, //0x000016c4 vmovdqu $-5644(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x0c, 0xea, 0xff, 0xff, //0x000016cc vmovdqu $-5620(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x24, 0xea, 0xff, 0xff, //0x000016d4 vmovdqu $-5596(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x3c, 0xea, 0xff, 0xff, //0x000016dc vmovdqu $-5572(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000016e4 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x0f, 0xeb, 0xff, 0xff, //0x000016e9 vmovdqu $-5361(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x27, 0xeb, 0xff, 0xff, //0x000016f1 vmovdqu $-5337(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x3f, 0xeb, 0xff, 0xff, //0x000016f9 vmovdqu $-5313(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xd7, 0xea, 0xff, 0xff, //0x00001701 vmovdqu $-5417(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x8f, 0xeb, 0xff, 0xff, //0x00001709 vmovdqu $-5233(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - //0x00001711 LBB0_289 - 0xc5, 0x7e, 0x6f, 0x1d, 0x27, 0xea, 0xff, 0xff, //0x00001711 vmovdqu $-5593(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x3f, 0xea, 0xff, 0xff, //0x00001719 vmovdqu $-5569(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - //0x00001721 LBB0_290 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00001721 movq $32(%rsp), %rbx - //0x00001726 LBB0_291 - 0x4d, 0x85, 0xed, //0x00001726 testq %r13, %r13 - 0x0f, 0x88, 0x49, 0x24, 0x00, 0x00, //0x00001729 js LBB0_683 - 0x48, 0x8b, 0x44, 0x24, 0x30, //0x0000172f movq $48(%rsp), %rax - 0x48, 0x8b, 0x08, //0x00001734 movq (%rax), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x00001737 addq $-1, %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x0000173b vmovdqa %ymm0, %ymm13 - 0xe9, 0x74, 0xec, 0xff, 0xff, //0x0000173f jmp LBB0_2 - //0x00001744 LBB0_293 - 0x48, 0x89, 0xd0, //0x00001744 movq %rdx, %rax - 0x4c, 0x09, 0xc8, //0x00001747 orq %r9, %rax - 0x0f, 0x99, 0xc1, //0x0000174a setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0xeb, 0xe9, 0xff, 0xff, //0x0000174d vmovdqu $-5653(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x03, 0xea, 0xff, 0xff, //0x00001755 vmovdqu $-5629(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0x84, 0x08, 0x00, 0x00, //0x0000175d js LBB0_384 - 0x4c, 0x39, 0xca, //0x00001763 cmpq %r9, %rdx - 0x0f, 0x8c, 0x7b, 0x08, 0x00, 0x00, //0x00001766 jl LBB0_384 - 0x48, 0xf7, 0xd2, //0x0000176c notq %rdx - 0x49, 0x89, 0xd5, //0x0000176f movq %rdx, %r13 - 0xe9, 0xaa, 0xff, 0xff, 0xff, //0x00001772 jmp LBB0_290 - //0x00001777 LBB0_296 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001777 movl $64, %edx - 0x48, 0x39, 0xca, //0x0000177c cmpq %rcx, %rdx - 0x0f, 0x82, 0xb1, 0x25, 0x00, 0x00, //0x0000177f jb LBB0_209 - //0x00001785 LBB0_297 - 0x49, 0x01, 0xca, //0x00001785 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001788 addq $1, %r10 - //0x0000178c LBB0_298 - 0x4d, 0x85, 0xd2, //0x0000178c testq %r10, %r10 - 0x0f, 0x88, 0xb1, 0x23, 0x00, 0x00, //0x0000178f js LBB0_680 - 0x4d, 0x89, 0x55, 0x00, //0x00001795 movq %r10, (%r13) - 0x4d, 0x85, 0xc9, //0x00001799 testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000179c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x000017a1 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000017a6 movq $8(%rsp), %r15 - 0x0f, 0x8e, 0x88, 0x23, 0x00, 0x00, //0x000017ab jle LBB0_463 - //0x000017b1 LBB0_300 - 0x49, 0x8b, 0x0f, //0x000017b1 movq (%r15), %rcx - 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000017b4 cmpq $4095, %rcx - 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000017bb jg LBB0_705 - 0x48, 0x8d, 0x41, 0x01, //0x000017c1 leaq $1(%rcx), %rax - 0x49, 0x89, 0x07, //0x000017c5 movq %rax, (%r15) - 0x49, 0xc7, 0x44, 0xcf, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000017c8 movq $4, $8(%r15,%rcx,8) - 0xe9, 0xca, 0xeb, 0xff, 0xff, //0x000017d1 jmp LBB0_3 - //0x000017d6 LBB0_302 - 0x4c, 0x8b, 0x57, 0x08, //0x000017d6 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x45, 0x00, //0x000017da movq (%r13), %r8 - 0x4f, 0x8d, 0x0c, 0x06, //0x000017de leaq (%r14,%r8), %r9 - 0x4d, 0x29, 0xc2, //0x000017e2 subq %r8, %r10 - 0x49, 0x83, 0xfa, 0x20, //0x000017e5 cmpq $32, %r10 - 0x0f, 0x8c, 0xa4, 0x00, 0x00, 0x00, //0x000017e9 jl LBB0_312 - 0xb9, 0x20, 0x00, 0x00, 0x00, //0x000017ef movl $32, %ecx - 0x31, 0xf6, //0x000017f4 xorl %esi, %esi - 0x45, 0x31, 0xff, //0x000017f6 xorl %r15d, %r15d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000017f9 .p2align 4, 0x90 - //0x00001800 LBB0_304 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001800 vmovdqu (%r9,%rsi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00001806 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd9, //0x0000180a vpmovmskb %ymm1, %r11d - 0xc5, 0xfd, 0x74, 0xc7, //0x0000180e vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd8, //0x00001812 vpmovmskb %ymm0, %ebx - 0x85, 0xdb, //0x00001816 testl %ebx, %ebx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001818 jne LBB0_307 - 0x4d, 0x85, 0xff, //0x0000181e testq %r15, %r15 - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001821 jne LBB0_307 - 0x45, 0x31, 0xff, //0x00001827 xorl %r15d, %r15d - 0xe9, 0x32, 0x00, 0x00, 0x00, //0x0000182a jmp LBB0_308 - 0x90, //0x0000182f .p2align 4, 0x90 - //0x00001830 LBB0_307 - 0x44, 0x89, 0xf8, //0x00001830 movl %r15d, %eax - 0xf7, 0xd0, //0x00001833 notl %eax - 0x21, 0xd8, //0x00001835 andl %ebx, %eax - 0x8d, 0x14, 0x00, //0x00001837 leal (%rax,%rax), %edx - 0x44, 0x09, 0xfa, //0x0000183a orl %r15d, %edx - 0x89, 0xd7, //0x0000183d movl %edx, %edi - 0xf7, 0xd7, //0x0000183f notl %edi - 0x21, 0xdf, //0x00001841 andl %ebx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001843 andl $-1431655766, %edi - 0x45, 0x31, 0xff, //0x00001849 xorl %r15d, %r15d - 0x01, 0xc7, //0x0000184c addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc7, //0x0000184e setb %r15b - 0x01, 0xff, //0x00001852 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001854 xorl $1431655765, %edi - 0x21, 0xd7, //0x0000185a andl %edx, %edi - 0xf7, 0xd7, //0x0000185c notl %edi - 0x41, 0x21, 0xfb, //0x0000185e andl %edi, %r11d - //0x00001861 LBB0_308 - 0x4d, 0x85, 0xdb, //0x00001861 testq %r11, %r11 - 0x0f, 0x85, 0xff, 0xea, 0xff, 0xff, //0x00001864 jne LBB0_153 - 0x48, 0x83, 0xc6, 0x20, //0x0000186a addq $32, %rsi - 0x49, 0x8d, 0x04, 0x0a, //0x0000186e leaq (%r10,%rcx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x00001872 addq $-32, %rax - 0x48, 0x83, 0xc1, 0xe0, //0x00001876 addq $-32, %rcx - 0x48, 0x83, 0xf8, 0x3f, //0x0000187a cmpq $63, %rax - 0x0f, 0x8f, 0x7c, 0xff, 0xff, 0xff, //0x0000187e jg LBB0_304 - 0x4d, 0x85, 0xff, //0x00001884 testq %r15, %r15 - 0x0f, 0x85, 0xd7, 0x1d, 0x00, 0x00, //0x00001887 jne LBB0_622 - 0x49, 0x01, 0xf1, //0x0000188d addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00001890 subq %rsi, %r10 - //0x00001893 LBB0_312 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001893 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001898 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000189d movq $8(%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000018a2 testq %r10, %r10 - 0x0f, 0x8f, 0x32, 0x1e, 0x00, 0x00, //0x000018a5 jg LBB0_626 - 0xe9, 0xe5, 0x22, 0x00, 0x00, //0x000018ab jmp LBB0_711 - //0x000018b0 LBB0_313 - 0x4c, 0x89, 0xd6, //0x000018b0 movq %r10, %rsi - 0x48, 0x29, 0xce, //0x000018b3 subq %rcx, %rsi - 0x48, 0x83, 0xfe, 0x20, //0x000018b6 cmpq $32, %rsi - 0x0f, 0x82, 0xc2, 0x12, 0x00, 0x00, //0x000018ba jb LBB0_514 - 0x48, 0x89, 0xca, //0x000018c0 movq %rcx, %rdx - 0x48, 0xf7, 0xda, //0x000018c3 negq %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018c6 .p2align 4, 0x90 - //0x000018d0 LBB0_315 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x000018d0 vmovdqu (%r14,%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xcb, //0x000018d6 vpcmpeqb %ymm3, %ymm0, %ymm1 - 0xc5, 0x8d, 0xdb, 0xc0, //0x000018da vpand %ymm0, %ymm14, %ymm0 - 0xc5, 0xfd, 0x74, 0x05, 0xba, 0xe8, 0xff, 0xff, //0x000018de vpcmpeqb $-5958(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ - 0xc5, 0xfd, 0xeb, 0xc1, //0x000018e6 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000018ea vpmovmskb %ymm0, %esi - 0x85, 0xf6, //0x000018ee testl %esi, %esi - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x000018f0 jne LBB0_382 - 0x48, 0x83, 0xc1, 0x20, //0x000018f6 addq $32, %rcx - 0x49, 0x8d, 0x04, 0x12, //0x000018fa leaq (%r10,%rdx), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x000018fe addq $-32, %rax - 0x48, 0x83, 0xc2, 0xe0, //0x00001902 addq $-32, %rdx - 0x48, 0x83, 0xf8, 0x1f, //0x00001906 cmpq $31, %rax - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000190a ja LBB0_315 - 0x4c, 0x89, 0xf1, //0x00001910 movq %r14, %rcx - 0x48, 0x29, 0xd1, //0x00001913 subq %rdx, %rcx - 0x49, 0x01, 0xd2, //0x00001916 addq %rdx, %r10 - 0x4c, 0x89, 0xd6, //0x00001919 movq %r10, %rsi - 0x48, 0x83, 0xfe, 0x10, //0x0000191c cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00001920 movq (%rsp), %rbx - 0x0f, 0x82, 0x48, 0x00, 0x00, 0x00, //0x00001924 jb LBB0_321 - //0x0000192a LBB0_318 - 0x4c, 0x89, 0xf2, //0x0000192a movq %r14, %rdx - 0x48, 0x29, 0xca, //0x0000192d subq %rcx, %rdx - //0x00001930 LBB0_319 - 0xc5, 0xfa, 0x6f, 0x01, //0x00001930 vmovdqu (%rcx), %xmm0 - 0xc5, 0xf9, 0x74, 0x0d, 0xd4, 0xe6, 0xff, 0xff, //0x00001934 vpcmpeqb $-6444(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ - 0xc5, 0xf9, 0xdb, 0x05, 0xdc, 0xe6, 0xff, 0xff, //0x0000193c vpand $-6436(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0xe4, 0xe6, 0xff, 0xff, //0x00001944 vpcmpeqb $-6428(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ - 0xc5, 0xf9, 0xeb, 0xc1, //0x0000194c vpor %xmm1, %xmm0, %xmm0 - 0xc5, 0xf9, 0xd7, 0xc0, //0x00001950 vpmovmskb %xmm0, %eax - 0x85, 0xc0, //0x00001954 testl %eax, %eax - 0x0f, 0x85, 0xe5, 0x0f, 0x00, 0x00, //0x00001956 jne LBB0_697 - 0x48, 0x83, 0xc1, 0x10, //0x0000195c addq $16, %rcx - 0x48, 0x83, 0xc6, 0xf0, //0x00001960 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001964 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001968 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x0000196c ja LBB0_319 - //0x00001972 LBB0_321 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00001972 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00001976 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000197a vmovdqa %ymm13, %ymm11 - 0x48, 0x85, 0xf6, //0x0000197f testq %rsi, %rsi - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00001982 je LBB0_328 - 0x48, 0x8d, 0x3c, 0x31, //0x00001988 leaq (%rcx,%rsi), %rdi - 0x31, 0xd2, //0x0000198c xorl %edx, %edx - //0x0000198e LBB0_323 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000198e movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00001992 cmpb $44, %bl - 0x0f, 0x84, 0x85, 0x12, 0x00, 0x00, //0x00001995 je LBB0_520 - 0x80, 0xfb, 0x7d, //0x0000199b cmpb $125, %bl - 0x0f, 0x84, 0x7c, 0x12, 0x00, 0x00, //0x0000199e je LBB0_520 - 0x80, 0xfb, 0x5d, //0x000019a4 cmpb $93, %bl - 0x0f, 0x84, 0x73, 0x12, 0x00, 0x00, //0x000019a7 je LBB0_520 - 0x48, 0x83, 0xc2, 0x01, //0x000019ad addq $1, %rdx - 0x48, 0x39, 0xd6, //0x000019b1 cmpq %rdx, %rsi - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x000019b4 jne LBB0_323 - 0x48, 0x89, 0xf9, //0x000019ba movq %rdi, %rcx - //0x000019bd LBB0_328 - 0x4c, 0x29, 0xf1, //0x000019bd subq %r14, %rcx - 0xe9, 0x61, 0x12, 0x00, 0x00, //0x000019c0 jmp LBB0_521 - //0x000019c5 LBB0_329 - 0x4c, 0x8b, 0x4f, 0x08, //0x000019c5 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x000019c9 movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x000019cd subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x000019d0 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x000019d3 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x000019d6 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x000019d9 xorl %r15d, %r15d - 0x31, 0xdb, //0x000019dc xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000019de jmp LBB0_331 - //0x000019e3 LBB0_330 - 0x48, 0xc1, 0xff, 0x3f, //0x000019e3 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x000019e7 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x000019ec addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x000019ef addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x000019f3 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x000019f7 movq %rdi, %r11 - //0x000019fa LBB0_331 - 0x49, 0x83, 0xf9, 0x40, //0x000019fa cmpq $64, %r9 - 0x0f, 0x8c, 0x59, 0x01, 0x00, 0x00, //0x000019fe jl LBB0_339 - //0x00001a04 LBB0_332 - 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001a04 vmovdqa %ymm13, %ymm15 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001a09 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001a0e vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001a14 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001a18 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001a1c vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a20 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a24 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001a28 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001a2b movq %rdx, %rax - 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001a2e vmovdqa %ymm10, %ymm13 - 0x4c, 0x09, 0xd0, //0x00001a33 orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a36 jne LBB0_334 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a3c movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a46 jmp LBB0_335 - //0x00001a4b LBB0_334 - 0x4c, 0x89, 0xd0, //0x00001a4b movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001a4e notq %rax - 0x48, 0x21, 0xd0, //0x00001a51 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001a54 leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001a58 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001a5b movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001a5e notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a61 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001a6b andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001a6e andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001a71 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001a74 addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a77 setb %r10b - 0x48, 0x01, 0xd2, //0x00001a7b addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a7e movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001a88 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001a8b andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001a8e notq %rdx - //0x00001a91 LBB0_335 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001a91 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001a95 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001a99 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001a9d vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001aa1 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001aa5 orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001aa8 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001aab vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xe6, 0xe5, 0xff, 0xff, 0x00, //0x00001ab0 vpclmulqdq $0, $-6682(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001aba vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001abf xorq %r11, %rdi - 0xc5, 0x7e, 0x6f, 0x15, 0xb6, 0xe6, 0xff, 0xff, //0x00001ac2 vmovdqu $-6474(%rip), %ymm10 /* LCPI0_7+0(%rip) */ - 0xc5, 0xad, 0x74, 0xd1, //0x00001aca vpcmpeqb %ymm1, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001ace vpmovmskb %ymm2, %esi - 0xc5, 0xad, 0x74, 0xd0, //0x00001ad2 vpcmpeqb %ymm0, %ymm10, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001ad6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001ada shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001ade orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001ae1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001ae4 notq %rax - 0x48, 0x21, 0xc6, //0x00001ae7 andq %rax, %rsi - 0xc5, 0xfe, 0x6f, 0x15, 0xae, 0xe6, 0xff, 0xff, //0x00001aea vmovdqu $-6482(%rip), %ymm2 /* LCPI0_8+0(%rip) */ - 0xc5, 0xf5, 0x74, 0xca, //0x00001af2 vpcmpeqb %ymm2, %ymm1, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001af6 vpmovmskb %ymm1, %edx - 0xc5, 0xfd, 0x74, 0xc2, //0x00001afa vpcmpeqb %ymm2, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001afe vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001b02 shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001b06 orq %rcx, %rdx - 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001b09 vmovdqa %ymm13, %ymm10 - 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001b0e vmovdqa %ymm15, %ymm13 - 0x48, 0x21, 0xc2, //0x00001b13 andq %rax, %rdx - 0x0f, 0x84, 0xc7, 0xfe, 0xff, 0xff, //0x00001b16 je LBB0_330 - 0xc5, 0x7e, 0x6f, 0x3d, 0x1c, 0xe7, 0xff, 0xff, //0x00001b1c vmovdqu $-6372(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001b24 .p2align 4, 0x90 - //0x00001b30 LBB0_337 - 0x48, 0x8d, 0x4a, 0xff, //0x00001b30 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001b34 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001b37 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001b3a popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001b3f addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001b42 cmpq %rbx, %rax - 0x0f, 0x86, 0x38, 0x04, 0x00, 0x00, //0x00001b45 jbe LBB0_380 - 0x48, 0x83, 0xc3, 0x01, //0x00001b4b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001b4f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001b52 jne LBB0_337 - 0xe9, 0x86, 0xfe, 0xff, 0xff, //0x00001b58 jmp LBB0_330 - //0x00001b5d LBB0_339 - 0x4d, 0x85, 0xc9, //0x00001b5d testq %r9, %r9 - 0x0f, 0x8e, 0x17, 0x22, 0x00, 0x00, //0x00001b60 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b66 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b6a vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001b6f vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b73 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b79 vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001b7f movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001b82 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001b87 cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b8c jb LBB0_343 - 0x49, 0x83, 0xf9, 0x20, //0x00001b92 cmpq $32, %r9 - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001b96 jb LBB0_344 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001b9c vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001ba1 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001ba7 addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001bab leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001baf leaq $96(%rsp), %rsi - 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bb4 jmp LBB0_345 - //0x00001bb9 LBB0_343 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bb9 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bbe vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xd5, 0xe6, 0xff, 0xff, //0x00001bc3 vmovdqu $-6443(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xed, 0xe5, 0xff, 0xff, //0x00001bcb vmovdqu $-6675(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001bd3 vmovdqa %ymm1, %ymm11 - 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00001bd7 jmp LBB0_332 - //0x00001bdc LBB0_344 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bdc leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001be1 movq %r9, %rdi - //0x00001be4 LBB0_345 - 0x48, 0x83, 0xff, 0x10, //0x00001be4 cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001be8 jb LBB0_346 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bee vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001bf3 vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001bf7 addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001bfb addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001bff addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001c03 cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c07 jae LBB0_353 - //0x00001c0d LBB0_347 - 0x48, 0x83, 0xff, 0x04, //0x00001c0d cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c11 jl LBB0_348 - //0x00001c17 LBB0_354 - 0x41, 0x8b, 0x06, //0x00001c17 movl (%r14), %eax - 0x89, 0x06, //0x00001c1a movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001c1c addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001c20 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001c24 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001c28 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c2c jae LBB0_349 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_350 - //0x00001c37 LBB0_346 - 0x48, 0x83, 0xff, 0x08, //0x00001c37 cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c3b jb LBB0_347 - //0x00001c41 LBB0_353 - 0x49, 0x8b, 0x06, //0x00001c41 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001c44 movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001c47 addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001c4b addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001c4f addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001c53 cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c57 jge LBB0_354 - //0x00001c5d LBB0_348 - 0x48, 0x83, 0xff, 0x02, //0x00001c5d cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c61 jb LBB0_350 - //0x00001c67 LBB0_349 - 0x41, 0x0f, 0xb7, 0x06, //0x00001c67 movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001c6b movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001c6e addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001c72 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001c76 addq $-2, %rdi - //0x00001c7a LBB0_350 - 0x4c, 0x89, 0xf2, //0x00001c7a movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c7d leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001c82 testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c85 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c8a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xe6, 0xff, 0xff, //0x00001c8f vmovdqu $-6647(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x21, 0xe5, 0xff, 0xff, //0x00001c97 vmovdqu $-6879(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001c9f vmovdqa %ymm1, %ymm11 - 0x0f, 0x84, 0x5b, 0xfd, 0xff, 0xff, //0x00001ca3 je LBB0_332 - 0x8a, 0x02, //0x00001ca9 movb (%rdx), %al - 0x88, 0x06, //0x00001cab movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cad leaq $64(%rsp), %r14 - 0xe9, 0x4d, 0xfd, 0xff, 0xff, //0x00001cb2 jmp LBB0_332 - //0x00001cb7 LBB0_355 - 0x4c, 0x8b, 0x4f, 0x08, //0x00001cb7 movq $8(%rdi), %r9 - 0x4d, 0x8b, 0x45, 0x00, //0x00001cbb movq (%r13), %r8 - 0x4d, 0x29, 0xc1, //0x00001cbf subq %r8, %r9 - 0x4d, 0x01, 0xc6, //0x00001cc2 addq %r8, %r14 - 0x45, 0x31, 0xdb, //0x00001cc5 xorl %r11d, %r11d - 0x45, 0x31, 0xd2, //0x00001cc8 xorl %r10d, %r10d - 0x45, 0x31, 0xff, //0x00001ccb xorl %r15d, %r15d - 0x31, 0xdb, //0x00001cce xorl %ebx, %ebx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001cd0 jmp LBB0_357 - //0x00001cd5 LBB0_356 - 0x48, 0xc1, 0xff, 0x3f, //0x00001cd5 sarq $63, %rdi - 0xf3, 0x48, 0x0f, 0xb8, 0xc6, //0x00001cd9 popcntq %rsi, %rax - 0x49, 0x01, 0xc7, //0x00001cde addq %rax, %r15 - 0x49, 0x83, 0xc6, 0x40, //0x00001ce1 addq $64, %r14 - 0x49, 0x83, 0xc1, 0xc0, //0x00001ce5 addq $-64, %r9 - 0x49, 0x89, 0xfb, //0x00001ce9 movq %rdi, %r11 - //0x00001cec LBB0_357 - 0x49, 0x83, 0xf9, 0x40, //0x00001cec cmpq $64, %r9 - 0x0f, 0x8c, 0x27, 0x01, 0x00, 0x00, //0x00001cf0 jl LBB0_364 - //0x00001cf6 LBB0_358 - 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cf6 vmovdqu (%r14), %ymm1 - 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001cfb vmovdqu $32(%r14), %ymm0 - 0xc5, 0xf5, 0x74, 0xd7, //0x00001d01 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00001d05 vpmovmskb %ymm2, %edx - 0xc5, 0xfd, 0x74, 0xd7, //0x00001d09 vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d0d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d11 shlq $32, %rax - 0x48, 0x09, 0xc2, //0x00001d15 orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00001d18 movq %rdx, %rax - 0x4c, 0x09, 0xd0, //0x00001d1b orq %r10, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001d1e jne LBB0_360 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001d24 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001d2b xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d2e jmp LBB0_361 - //0x00001d33 LBB0_360 - 0x4c, 0x89, 0xd0, //0x00001d33 movq %r10, %rax - 0x48, 0xf7, 0xd0, //0x00001d36 notq %rax - 0x48, 0x21, 0xd0, //0x00001d39 andq %rdx, %rax - 0x48, 0x8d, 0x0c, 0x00, //0x00001d3c leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd1, //0x00001d40 orq %r10, %rcx - 0x48, 0x89, 0xce, //0x00001d43 movq %rcx, %rsi - 0x48, 0xf7, 0xd6, //0x00001d46 notq %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d49 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfa, //0x00001d53 andq %rdi, %rdx - 0x48, 0x21, 0xf2, //0x00001d56 andq %rsi, %rdx - 0x45, 0x31, 0xd2, //0x00001d59 xorl %r10d, %r10d - 0x48, 0x01, 0xc2, //0x00001d5c addq %rax, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001d5f setb %r10b - 0x48, 0x01, 0xd2, //0x00001d63 addq %rdx, %rdx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d66 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc2, //0x00001d70 xorq %rax, %rdx - 0x48, 0x21, 0xca, //0x00001d73 andq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x00001d76 notq %rdx - //0x00001d79 LBB0_361 - 0xc5, 0xfd, 0x74, 0xd6, //0x00001d79 vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001d7d vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001d81 shlq $32, %rax - 0xc5, 0xf5, 0x74, 0xd6, //0x00001d85 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xca, //0x00001d89 vpmovmskb %ymm2, %ecx - 0x48, 0x09, 0xc1, //0x00001d8d orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00001d90 andq %rdx, %rcx - 0xc4, 0xe1, 0xf9, 0x6e, 0xd1, //0x00001d93 vmovq %rcx, %xmm2 - 0xc4, 0xe3, 0x69, 0x44, 0x15, 0xfe, 0xe2, 0xff, 0xff, 0x00, //0x00001d98 vpclmulqdq $0, $-7426(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ - 0xc4, 0xe1, 0xf9, 0x7e, 0xd7, //0x00001da2 vmovq %xmm2, %rdi - 0x4c, 0x31, 0xdf, //0x00001da7 xorq %r11, %rdi - 0xc5, 0xa5, 0x74, 0xd1, //0x00001daa vpcmpeqb %ymm1, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xf2, //0x00001dae vpmovmskb %ymm2, %esi - 0xc5, 0xa5, 0x74, 0xd0, //0x00001db2 vpcmpeqb %ymm0, %ymm11, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00001db6 vpmovmskb %ymm2, %eax - 0x48, 0xc1, 0xe0, 0x20, //0x00001dba shlq $32, %rax - 0x48, 0x09, 0xc6, //0x00001dbe orq %rax, %rsi - 0x48, 0x89, 0xf8, //0x00001dc1 movq %rdi, %rax - 0x48, 0xf7, 0xd0, //0x00001dc4 notq %rax - 0x48, 0x21, 0xc6, //0x00001dc7 andq %rax, %rsi - 0xc5, 0x9d, 0x74, 0xc9, //0x00001dca vpcmpeqb %ymm1, %ymm12, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00001dce vpmovmskb %ymm1, %edx - 0xc5, 0x9d, 0x74, 0xc0, //0x00001dd2 vpcmpeqb %ymm0, %ymm12, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc8, //0x00001dd6 vpmovmskb %ymm0, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00001dda shlq $32, %rcx - 0x48, 0x09, 0xca, //0x00001dde orq %rcx, %rdx - 0x48, 0x21, 0xc2, //0x00001de1 andq %rax, %rdx - 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001de4 je LBB0_356 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_362 - 0x48, 0x8d, 0x4a, 0xff, //0x00001df0 leaq $-1(%rdx), %rcx - 0x48, 0x89, 0xc8, //0x00001df4 movq %rcx, %rax - 0x48, 0x21, 0xf0, //0x00001df7 andq %rsi, %rax - 0xf3, 0x48, 0x0f, 0xb8, 0xc0, //0x00001dfa popcntq %rax, %rax - 0x4c, 0x01, 0xf8, //0x00001dff addq %r15, %rax - 0x48, 0x39, 0xd8, //0x00001e02 cmpq %rbx, %rax - 0x0f, 0x86, 0x78, 0x01, 0x00, 0x00, //0x00001e05 jbe LBB0_380 + 0x48, 0x8b, 0x44, 0x24, 0x18, //0x000003a0 movq $24(%rsp), %rax + 0x4c, 0x8b, 0x00, //0x000003a5 movq (%rax), %r8 + 0x4c, 0x89, 0xe0, //0x000003a8 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x000003ab testq %r8, %r8 + 0x0f, 0x85, 0x4c, 0x00, 0x00, 0x00, //0x000003ae jne LBB0_5 + 0xe9, 0x5c, 0x39, 0x00, 0x00, //0x000003b4 jmp LBB0_728 + //0x000003b9 LBB0_1 + 0x4d, 0x29, 0xf0, //0x000003b9 subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000003bc movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x000003c1 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x000003c4 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000003c8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000003cd vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc6, 0xfe, 0xff, 0xff, //0x000003d2 vmovdqu $-314(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xde, 0xfd, 0xff, 0xff, //0x000003da vmovdqu $-546(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000003e2 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000003e6 vmovdqa %ymm1, %ymm12 + //0x000003ea LBB0_2 + 0x4d, 0x85, 0xed, //0x000003ea testq %r13, %r13 + 0x0f, 0x8f, 0xad, 0xff, 0xff, 0xff, //0x000003ed jg LBB0_3 + 0xe9, 0xee, 0x38, 0x00, 0x00, //0x000003f3 jmp LBB0_705 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003f8 .p2align 4, 0x90 + //0x00000400 LBB0_5 + 0x4c, 0x89, 0xe1, //0x00000400 movq %r12, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000403 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x30, //0x00000408 movq (%rax), %r14 + 0x48, 0x8b, 0x78, 0x08, //0x0000040b movq $8(%rax), %rdi + 0x49, 0x8b, 0x17, //0x0000040f movq (%r15), %rdx + 0x48, 0x39, 0xfa, //0x00000412 cmpq %rdi, %rdx + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000415 jae LBB0_10 + 0x41, 0x8a, 0x04, 0x16, //0x0000041b movb (%r14,%rdx), %al + 0x3c, 0x0d, //0x0000041f cmpb $13, %al + 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x00000421 je LBB0_10 + 0x3c, 0x20, //0x00000427 cmpb $32, %al + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000429 je LBB0_10 + 0x04, 0xf7, //0x0000042f addb $-9, %al + 0x3c, 0x01, //0x00000431 cmpb $1, %al + 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000433 jbe LBB0_10 + 0x49, 0x89, 0xd4, //0x00000439 movq %rdx, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000043c movq $24(%rsp), %r10 + 0xe9, 0x8c, 0x01, 0x00, 0x00, //0x00000441 jmp LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000446 .p2align 4, 0x90 + //0x00000450 LBB0_10 + 0x4c, 0x8d, 0x62, 0x01, //0x00000450 leaq $1(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000454 cmpq %rdi, %r12 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000457 movq $24(%rsp), %r10 + 0x0f, 0x83, 0x2e, 0x00, 0x00, 0x00, //0x0000045c jae LBB0_14 + 0x43, 0x8a, 0x1c, 0x26, //0x00000462 movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x00000466 cmpb $13, %bl + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000469 je LBB0_14 + 0x80, 0xfb, 0x20, //0x0000046f cmpb $32, %bl + 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x00000472 je LBB0_14 + 0x80, 0xc3, 0xf7, //0x00000478 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x0000047b cmpb $1, %bl + 0x0f, 0x87, 0x4e, 0x01, 0x00, 0x00, //0x0000047e ja LBB0_35 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000484 .p2align 4, 0x90 + //0x00000490 LBB0_14 + 0x4c, 0x8d, 0x62, 0x02, //0x00000490 leaq $2(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x00000494 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000497 jae LBB0_18 + 0x43, 0x8a, 0x1c, 0x26, //0x0000049d movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004a4 je LBB0_18 + 0x80, 0xfb, 0x20, //0x000004aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004ad je LBB0_18 + 0x80, 0xc3, 0xf7, //0x000004b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004b6 cmpb $1, %bl + 0x0f, 0x87, 0x13, 0x01, 0x00, 0x00, //0x000004b9 ja LBB0_35 + 0x90, //0x000004bf .p2align 4, 0x90 + //0x000004c0 LBB0_18 + 0x4c, 0x8d, 0x62, 0x03, //0x000004c0 leaq $3(%rdx), %r12 + 0x49, 0x39, 0xfc, //0x000004c4 cmpq %rdi, %r12 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000004c7 jae LBB0_22 + 0x43, 0x8a, 0x1c, 0x26, //0x000004cd movb (%r14,%r12), %bl + 0x80, 0xfb, 0x0d, //0x000004d1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000004d4 je LBB0_22 + 0x80, 0xfb, 0x20, //0x000004da cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000004dd je LBB0_22 + 0x80, 0xc3, 0xf7, //0x000004e3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000004e6 cmpb $1, %bl + 0x0f, 0x87, 0xe3, 0x00, 0x00, 0x00, //0x000004e9 ja LBB0_35 + 0x90, //0x000004ef .p2align 4, 0x90 + //0x000004f0 LBB0_22 + 0x4c, 0x8d, 0x62, 0x04, //0x000004f0 leaq $4(%rdx), %r12 + 0x48, 0x89, 0xfe, //0x000004f4 movq %rdi, %rsi + 0x4c, 0x29, 0xe6, //0x000004f7 subq %r12, %rsi + 0x0f, 0x86, 0x9a, 0x37, 0x00, 0x00, //0x000004fa jbe LBB0_697 + 0x48, 0x83, 0xfe, 0x20, //0x00000500 cmpq $32, %rsi + 0x0f, 0x82, 0x3e, 0x25, 0x00, 0x00, //0x00000504 jb LBB0_504 + 0x48, 0xc7, 0xc6, 0xfc, 0xff, 0xff, 0xff, //0x0000050a movq $-4, %rsi + 0x48, 0x29, 0xd6, //0x00000511 subq %rdx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000514 .p2align 4, 0x90 + //0x00000520 LBB0_25 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x26, //0x00000520 vmovdqu (%r14,%r12), %ymm0 + 0xc4, 0xe2, 0x55, 0x00, 0xc8, //0x00000526 vpshufb %ymm0, %ymm5, %ymm1 + 0xc5, 0xfd, 0x74, 0xc1, //0x0000052b vpcmpeqb %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x0000052f vpmovmskb %ymm0, %edx + 0x83, 0xfa, 0xff, //0x00000533 cmpl $-1, %edx + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000536 jne LBB0_34 + 0x49, 0x83, 0xc4, 0x20, //0x0000053c addq $32, %r12 + 0x48, 0x8d, 0x04, 0x37, //0x00000540 leaq (%rdi,%rsi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000544 addq $-32, %rax + 0x48, 0x83, 0xc6, 0xe0, //0x00000548 addq $-32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x0000054c cmpq $31, %rax + 0x0f, 0x87, 0xca, 0xff, 0xff, 0xff, //0x00000550 ja LBB0_25 + 0x4d, 0x89, 0xf4, //0x00000556 movq %r14, %r12 + 0x49, 0x29, 0xf4, //0x00000559 subq %rsi, %r12 + 0x48, 0x01, 0xfe, //0x0000055c addq %rdi, %rsi + 0x48, 0x85, 0xf6, //0x0000055f testq %rsi, %rsi + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000562 je LBB0_33 + //0x00000568 LBB0_28 + 0x4d, 0x8d, 0x04, 0x34, //0x00000568 leaq (%r12,%rsi), %r8 + 0x31, 0xd2, //0x0000056c xorl %edx, %edx + 0x90, 0x90, //0x0000056e .p2align 4, 0x90 + //0x00000570 LBB0_29 + 0x41, 0x0f, 0xbe, 0x04, 0x14, //0x00000570 movsbl (%r12,%rdx), %eax + 0x83, 0xf8, 0x20, //0x00000575 cmpl $32, %eax + 0x0f, 0x87, 0x23, 0x21, 0x00, 0x00, //0x00000578 ja LBB0_468 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000057e movabsq $4294977024, %rbx + 0x48, 0x0f, 0xa3, 0xc3, //0x00000588 btq %rax, %rbx + 0x0f, 0x83, 0x0f, 0x21, 0x00, 0x00, //0x0000058c jae LBB0_468 + 0x48, 0x83, 0xc2, 0x01, //0x00000592 addq $1, %rdx + 0x48, 0x39, 0xd6, //0x00000596 cmpq %rdx, %rsi + 0x0f, 0x85, 0xd1, 0xff, 0xff, 0xff, //0x00000599 jne LBB0_29 + 0x4d, 0x89, 0xc4, //0x0000059f movq %r8, %r12 + //0x000005a2 LBB0_33 + 0x4d, 0x29, 0xf4, //0x000005a2 subq %r14, %r12 + 0x49, 0x39, 0xfc, //0x000005a5 cmpq %rdi, %r12 + 0x0f, 0x82, 0x24, 0x00, 0x00, 0x00, //0x000005a8 jb LBB0_35 + 0xe9, 0xea, 0x36, 0x00, 0x00, //0x000005ae jmp LBB0_698 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000005b3 .p2align 4, 0x90 + //0x000005c0 LBB0_34 + 0xf7, 0xd2, //0x000005c0 notl %edx + 0x44, 0x0f, 0xbc, 0xe2, //0x000005c2 bsfl %edx, %r12d + 0x49, 0x29, 0xf4, //0x000005c6 subq %rsi, %r12 + 0x49, 0x39, 0xfc, //0x000005c9 cmpq %rdi, %r12 + 0x0f, 0x83, 0xcb, 0x36, 0x00, 0x00, //0x000005cc jae LBB0_698 + //0x000005d2 LBB0_35 + 0x49, 0x8d, 0x44, 0x24, 0x01, //0x000005d2 leaq $1(%r12), %rax + 0x49, 0x89, 0x07, //0x000005d7 movq %rax, (%r15) + 0x43, 0x0f, 0xbe, 0x3c, 0x26, //0x000005da movsbl (%r14,%r12), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000005df movq $-1, %rax + 0x85, 0xff, //0x000005e6 testl %edi, %edi + 0x0f, 0x84, 0x27, 0x37, 0x00, 0x00, //0x000005e8 je LBB0_728 + 0x49, 0x8b, 0x32, //0x000005ee movq (%r10), %rsi + 0x4c, 0x8d, 0x46, 0xff, //0x000005f1 leaq $-1(%rsi), %r8 + 0x41, 0x8b, 0x1c, 0xf2, //0x000005f5 movl (%r10,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x000005f9 cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xe1, //0x000005fd cmovneq %rcx, %r12 + 0x83, 0xc3, 0xff, //0x00000601 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x00000604 cmpl $5, %ebx + 0x0f, 0x87, 0x27, 0x00, 0x00, 0x00, //0x00000607 ja LBB0_41 + 0x48, 0x8d, 0x15, 0xc4, 0x38, 0x00, 0x00, //0x0000060d leaq $14532(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9a, //0x00000614 movslq (%rdx,%rbx,4), %rcx + 0x48, 0x01, 0xd1, //0x00000618 addq %rdx, %rcx + 0xff, 0xe1, //0x0000061b jmpq *%rcx + //0x0000061d LBB0_38 + 0x83, 0xff, 0x2c, //0x0000061d cmpl $44, %edi + 0x0f, 0x84, 0x4e, 0x02, 0x00, 0x00, //0x00000620 je LBB0_76 + 0x83, 0xff, 0x5d, //0x00000626 cmpl $93, %edi + 0x0f, 0x84, 0x31, 0x02, 0x00, 0x00, //0x00000629 je LBB0_40 + 0xe9, 0xda, 0x36, 0x00, 0x00, //0x0000062f jmp LBB0_727 + //0x00000634 LBB0_41 + 0x4d, 0x89, 0x02, //0x00000634 movq %r8, (%r10) + 0x83, 0xff, 0x7b, //0x00000637 cmpl $123, %edi + 0x0f, 0x86, 0xaf, 0x01, 0x00, 0x00, //0x0000063a jbe LBB0_68 + 0xe9, 0xc9, 0x36, 0x00, 0x00, //0x00000640 jmp LBB0_727 + //0x00000645 LBB0_42 + 0x83, 0xff, 0x2c, //0x00000645 cmpl $44, %edi + 0x0f, 0x85, 0x09, 0x02, 0x00, 0x00, //0x00000648 jne LBB0_43 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x0000064e cmpq $4095, %rsi + 0x0f, 0x8f, 0x4e, 0x36, 0x00, 0x00, //0x00000655 jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x0000065b leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x0000065f movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x03, 0x00, 0x00, 0x00, //0x00000662 movq $3, $8(%r10,%rsi,8) + 0xe9, 0x30, 0xfd, 0xff, 0xff, //0x0000066b jmp LBB0_3 + //0x00000670 LBB0_44 + 0x40, 0x80, 0xff, 0x22, //0x00000670 cmpb $34, %dil + 0x0f, 0x85, 0x94, 0x36, 0x00, 0x00, //0x00000674 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x04, 0x00, 0x00, 0x00, //0x0000067a movq $4, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x00000682 testb $64, %r11b + 0x0f, 0x85, 0x4d, 0x03, 0x00, 0x00, //0x00000686 jne LBB0_99 + 0x4d, 0x8b, 0x0f, //0x0000068c movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000068f movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00000694 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00000698 testb $32, %r11b + 0x0f, 0x85, 0xd6, 0x06, 0x00, 0x00, //0x0000069c jne LBB0_143 + 0x4d, 0x89, 0xc3, //0x000006a2 movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000006a5 subq %r9, %r11 + 0x0f, 0x84, 0xd0, 0x37, 0x00, 0x00, //0x000006a8 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000006ae cmpq $64, %r11 + 0x0f, 0x82, 0x5e, 0x26, 0x00, 0x00, //0x000006b2 jb LBB0_531 + 0x4c, 0x89, 0xce, //0x000006b8 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000006bb notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006be movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000006c5 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000006c8 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006cb .p2align 4, 0x90 + //0x000006d0 LBB0_50 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000006d0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000006d6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000006dd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000006e1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000006e5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x000006e9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xc7, //0x000006ed vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000006f1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000006f5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x000006f9 vpmovmskb %ymm0, %ebx + 0x48, 0xc1, 0xe1, 0x20, //0x000006fd shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00000701 orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x20, //0x00000704 shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000708 orq %rbx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000070b jne LBB0_59 + 0x4d, 0x85, 0xd2, //0x00000711 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000714 jne LBB0_61 + 0x45, 0x31, 0xd2, //0x0000071a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000071d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000720 jne LBB0_62 + //0x00000726 LBB0_53 + 0x49, 0x83, 0xc3, 0xc0, //0x00000726 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000072a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000072e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000732 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000736 ja LBB0_50 + 0xe9, 0x0b, 0x22, 0x00, 0x00, //0x0000073c jmp LBB0_54 + //0x00000741 LBB0_59 + 0x49, 0x83, 0xff, 0xff, //0x00000741 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000745 jne LBB0_61 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000074b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000074f addq %rax, %r15 + //0x00000752 LBB0_61 + 0x4c, 0x89, 0xd1, //0x00000752 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000755 notq %rcx + 0x48, 0x21, 0xf9, //0x00000758 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000075b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000075f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000762 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000765 notq %rbx + 0x48, 0x21, 0xfb, //0x00000768 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000076b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000775 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000778 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000077b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000077e setb %r10b + 0x48, 0x01, 0xdb, //0x00000782 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000785 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000078f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00000792 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000795 notq %rbx + 0x48, 0x21, 0xda, //0x00000798 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000079b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000079e je LBB0_53 + //0x000007a4 LBB0_62 + 0x48, 0x0f, 0xbc, 0xc2, //0x000007a4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000007a8 subq %rsi, %rax + //0x000007ab LBB0_63 + 0x4c, 0x8b, 0x1c, 0x24, //0x000007ab movq (%rsp), %r11 + 0x48, 0x85, 0xc0, //0x000007af testq %rax, %rax + 0x0f, 0x89, 0xd4, 0xfb, 0xff, 0xff, //0x000007b2 jns LBB0_237 + 0xe9, 0x04, 0x35, 0x00, 0x00, //0x000007b8 jmp LBB0_702 + //0x000007bd LBB0_64 + 0x40, 0x80, 0xff, 0x3a, //0x000007bd cmpb $58, %dil + 0x0f, 0x85, 0x47, 0x35, 0x00, 0x00, //0x000007c1 jne LBB0_727 + 0x49, 0xc7, 0x04, 0xf2, 0x00, 0x00, 0x00, 0x00, //0x000007c7 movq $0, (%r10,%rsi,8) + 0xe9, 0xcc, 0xfb, 0xff, 0xff, //0x000007cf jmp LBB0_3 + //0x000007d4 LBB0_66 + 0x40, 0x80, 0xff, 0x5d, //0x000007d4 cmpb $93, %dil + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x000007d8 je LBB0_40 + 0x49, 0xc7, 0x04, 0xf2, 0x01, 0x00, 0x00, 0x00, //0x000007de movq $1, (%r10,%rsi,8) + 0x83, 0xff, 0x7b, //0x000007e6 cmpl $123, %edi + 0x0f, 0x87, 0x1f, 0x35, 0x00, 0x00, //0x000007e9 ja LBB0_727 + //0x000007ef LBB0_68 + 0x89, 0xf9, //0x000007ef movl %edi, %ecx + 0x48, 0x8d, 0x15, 0xf8, 0x36, 0x00, 0x00, //0x000007f1 leaq $14072(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000007f8 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000007fc addq %rdx, %rcx + 0xff, 0xe1, //0x000007ff jmpq *%rcx + //0x00000801 LBB0_71 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x00000801 movq $32(%rsp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00000806 movq $8(%rax), %r9 + 0x4d, 0x8b, 0x2f, //0x0000080a movq (%r15), %r13 + 0x41, 0xf6, 0xc3, 0x40, //0x0000080d testb $64, %r11b + 0x0f, 0x85, 0xac, 0x02, 0x00, 0x00, //0x00000811 jne LBB0_111 + 0x49, 0x8d, 0x45, 0xff, //0x00000817 leaq $-1(%r13), %rax + 0x49, 0x29, 0xc1, //0x0000081b subq %rax, %r9 + 0x0f, 0x84, 0xce, 0x34, 0x00, 0x00, //0x0000081e je LBB0_706 + 0x4f, 0x8d, 0x04, 0x2e, //0x00000824 leaq (%r14,%r13), %r8 + 0x49, 0x83, 0xc0, 0xff, //0x00000828 addq $-1, %r8 + 0x41, 0x80, 0x38, 0x30, //0x0000082c cmpb $48, (%r8) + 0x0f, 0x85, 0x0a, 0x08, 0x00, 0x00, //0x00000830 jne LBB0_184 + 0x41, 0xba, 0x01, 0x00, 0x00, 0x00, //0x00000836 movl $1, %r10d + 0x49, 0x83, 0xf9, 0x01, //0x0000083c cmpq $1, %r9 + 0x0f, 0x85, 0xd0, 0x07, 0x00, 0x00, //0x00000840 jne LBB0_182 + //0x00000846 LBB0_75 + 0x48, 0x89, 0xc1, //0x00000846 movq %rax, %rcx + 0xe9, 0xe0, 0x0f, 0x00, 0x00, //0x00000849 jmp LBB0_296 + //0x0000084e LBB0_69 + 0x83, 0xff, 0x22, //0x0000084e cmpl $34, %edi + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000851 je LBB0_80 + //0x00000857 LBB0_43 + 0x83, 0xff, 0x7d, //0x00000857 cmpl $125, %edi + 0x0f, 0x85, 0xae, 0x34, 0x00, 0x00, //0x0000085a jne LBB0_727 + //0x00000860 LBB0_40 + 0x4d, 0x89, 0x02, //0x00000860 movq %r8, (%r10) + 0x4c, 0x89, 0xe0, //0x00000863 movq %r12, %rax + 0x4d, 0x85, 0xc0, //0x00000866 testq %r8, %r8 + 0x0f, 0x85, 0x91, 0xfb, 0xff, 0xff, //0x00000869 jne LBB0_5 + 0xe9, 0xa1, 0x34, 0x00, 0x00, //0x0000086f jmp LBB0_728 + //0x00000874 LBB0_76 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00000874 cmpq $4095, %rsi + 0x0f, 0x8f, 0x28, 0x34, 0x00, 0x00, //0x0000087b jg LBB0_724 + 0x48, 0x8d, 0x46, 0x01, //0x00000881 leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x00000885 movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000888 movq $0, $8(%r10,%rsi,8) + 0xe9, 0x0a, 0xfb, 0xff, 0xff, //0x00000891 jmp LBB0_3 + //0x00000896 LBB0_80 + 0x49, 0xc7, 0x04, 0xf2, 0x02, 0x00, 0x00, 0x00, //0x00000896 movq $2, (%r10,%rsi,8) + 0x41, 0xf6, 0xc3, 0x40, //0x0000089e testb $64, %r11b + 0x0f, 0x85, 0xdd, 0x03, 0x00, 0x00, //0x000008a2 jne LBB0_132 + 0x4d, 0x8b, 0x0f, //0x000008a8 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x000008ab movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x000008b0 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x000008b4 testb $32, %r11b + 0x0f, 0x85, 0x03, 0x06, 0x00, 0x00, //0x000008b8 jne LBB0_163 + 0x4d, 0x89, 0xc3, //0x000008be movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x000008c1 subq %r9, %r11 + 0x0f, 0x84, 0xb4, 0x35, 0x00, 0x00, //0x000008c4 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x000008ca cmpq $64, %r11 + 0x0f, 0x82, 0x92, 0x24, 0x00, 0x00, //0x000008ce jb LBB0_536 + 0x4c, 0x89, 0xce, //0x000008d4 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x000008d7 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000008da movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x000008e1 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x000008e4 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008e7 .p2align 4, 0x90 + //0x000008f0 LBB0_85 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x000008f0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x000008f6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x000008fd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000901 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x00000905 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000909 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x0000090d vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x00000911 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x00000915 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000919 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x0000091d shlq $32, %rbx + 0x48, 0x09, 0xda, //0x00000921 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x00000924 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000928 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000092b jne LBB0_94 + 0x4d, 0x85, 0xd2, //0x00000931 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x00000934 jne LBB0_96 + 0x45, 0x31, 0xd2, //0x0000093a xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x0000093d testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x00000940 jne LBB0_97 + //0x00000946 LBB0_88 + 0x49, 0x83, 0xc3, 0xc0, //0x00000946 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x0000094a addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x0000094e addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x00000952 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x00000956 ja LBB0_85 + 0xe9, 0xf8, 0x20, 0x00, 0x00, //0x0000095c jmp LBB0_89 + //0x00000961 LBB0_94 + 0x49, 0x83, 0xff, 0xff, //0x00000961 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000965 jne LBB0_96 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000096b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000096f addq %rax, %r15 + //0x00000972 LBB0_96 + 0x4c, 0x89, 0xd1, //0x00000972 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00000975 notq %rcx + 0x48, 0x21, 0xf9, //0x00000978 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000097b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000097f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00000982 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00000985 notq %rbx + 0x48, 0x21, 0xfb, //0x00000988 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000098b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00000995 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00000998 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000099b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000099e setb %r10b + 0x48, 0x01, 0xdb, //0x000009a2 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000009a5 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000009af xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x000009b2 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x000009b5 notq %rbx + 0x48, 0x21, 0xda, //0x000009b8 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x000009bb testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x000009be je LBB0_88 + //0x000009c4 LBB0_97 + 0x48, 0x0f, 0xbc, 0xc2, //0x000009c4 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x000009c8 subq %rsi, %rax + //0x000009cb LBB0_98 + 0x4c, 0x8b, 0x1c, 0x24, //0x000009cb movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000009cf movq $24(%rsp), %r10 + 0xe9, 0xb5, 0x0e, 0x00, 0x00, //0x000009d4 jmp LBB0_302 + //0x000009d9 LBB0_99 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000009d9 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000009de movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000009e2 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000009e5 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000009e9 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000009ec cmpq $32, %r10 + 0x0f, 0x8c, 0x21, 0x1d, 0x00, 0x00, //0x000009f0 jl LBB0_110 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000009f6 movl $32, %edx + 0x31, 0xf6, //0x000009fb xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000009fd xorl %r15d, %r15d + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x00000a00 jmp LBB0_101 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000a05 .p2align 4, 0x90 + //0x00000a10 LBB0_106 + 0x44, 0x89, 0xf9, //0x00000a10 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000a13 notl %ecx + 0x21, 0xd9, //0x00000a15 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000a17 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000a1b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000a1e movl %r13d, %edi + 0xf7, 0xd7, //0x00000a21 notl %edi + 0x21, 0xdf, //0x00000a23 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a25 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000a2b xorl %r15d, %r15d + 0x01, 0xcf, //0x00000a2e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000a30 setb %r15b + 0x01, 0xff, //0x00000a34 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000a36 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000a3c andl %r13d, %edi + 0xf7, 0xd7, //0x00000a3f notl %edi + 0x41, 0x21, 0xfb, //0x00000a41 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000a44 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000a47 jne LBB0_104 + //0x00000a4d LBB0_107 + 0x48, 0x83, 0xc6, 0x20, //0x00000a4d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000a51 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a55 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000a59 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000a5d cmpq $63, %rcx + 0x0f, 0x8e, 0x98, 0x1c, 0x00, 0x00, //0x00000a61 jle LBB0_108 + //0x00000a67 LBB0_101 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000a67 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000a6d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000a71 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000a75 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000a79 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000a7d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000a7f jne LBB0_106 + 0x4d, 0x85, 0xff, //0x00000a85 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000a88 jne LBB0_106 + 0x45, 0x31, 0xff, //0x00000a8e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000a91 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000a94 je LBB0_107 + //0x00000a9a LBB0_104 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000a9a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000a9e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000aa1 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000aa5 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000aa9 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000aae movq (%rsp), %r11 + //0x00000ab2 LBB0_105 + 0x4d, 0x89, 0x0f, //0x00000ab2 movq %r9, (%r15) + //0x00000ab5 LBB0_387 + 0x4d, 0x85, 0xc0, //0x00000ab5 testq %r8, %r8 + 0x0f, 0x8f, 0xe2, 0xf8, 0xff, 0xff, //0x00000ab8 jg LBB0_3 + 0xe9, 0xf2, 0x31, 0x00, 0x00, //0x00000abe jmp LBB0_700 + //0x00000ac3 LBB0_111 + 0x4c, 0x89, 0xcf, //0x00000ac3 movq %r9, %rdi + 0x4c, 0x29, 0xef, //0x00000ac6 subq %r13, %rdi + 0x48, 0x83, 0xff, 0x20, //0x00000ac9 cmpq $32, %rdi + 0x0f, 0x82, 0xe4, 0x21, 0x00, 0x00, //0x00000acd jb LBB0_526 + 0x4c, 0x89, 0xef, //0x00000ad3 movq %r13, %rdi + 0x48, 0xf7, 0xdf, //0x00000ad6 negq %rdi + 0x49, 0x8d, 0x4d, 0x01, //0x00000ad9 leaq $1(%r13), %rcx + 0x49, 0x8d, 0x55, 0xff, //0x00000add leaq $-1(%r13), %rdx + 0x4b, 0x8d, 0x34, 0x2e, //0x00000ae1 leaq (%r14,%r13), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00000ae5 addq $-1, %rsi + 0x4c, 0x89, 0xeb, //0x00000ae9 movq %r13, %rbx + 0x90, 0x90, 0x90, 0x90, //0x00000aec .p2align 4, 0x90 + //0x00000af0 LBB0_113 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x00000af0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x00000af6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x00000afa vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0x9a, 0xf6, 0xff, 0xff, //0x00000afe vpcmpeqb $-2406(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x00000b06 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc0, //0x00000b0a vpmovmskb %ymm0, %eax + 0x85, 0xc0, //0x00000b0e testl %eax, %eax + 0x0f, 0x85, 0x09, 0x01, 0x00, 0x00, //0x00000b10 jne LBB0_127 + 0x48, 0x83, 0xc3, 0x20, //0x00000b16 addq $32, %rbx + 0x49, 0x8d, 0x04, 0x39, //0x00000b1a leaq (%r9,%rdi), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000b1e addq $-32, %rax + 0x48, 0x83, 0xc7, 0xe0, //0x00000b22 addq $-32, %rdi + 0x48, 0x83, 0xc1, 0x20, //0x00000b26 addq $32, %rcx + 0x48, 0x83, 0xc2, 0x20, //0x00000b2a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00000b2e addq $32, %rsi + 0x48, 0x83, 0xf8, 0x1f, //0x00000b32 cmpq $31, %rax + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00000b36 ja LBB0_113 + 0x4d, 0x89, 0xf0, //0x00000b3c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00000b3f subq %rdi, %r8 + 0x49, 0x01, 0xf9, //0x00000b42 addq %rdi, %r9 + 0x4c, 0x89, 0xcf, //0x00000b45 movq %r9, %rdi + 0x48, 0x83, 0xff, 0x10, //0x00000b48 cmpq $16, %rdi + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00000b4c jb LBB0_119 + //0x00000b52 LBB0_116 + 0x4d, 0x89, 0xf1, //0x00000b52 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00000b55 subq %r8, %r9 + 0x4c, 0x89, 0xc1, //0x00000b58 movq %r8, %rcx + 0x4c, 0x29, 0xf1, //0x00000b5b subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00000b5e addq $1, %rcx + 0x49, 0x8d, 0x50, 0xff, //0x00000b62 leaq $-1(%r8), %rdx + 0x48, 0x89, 0xd6, //0x00000b66 movq %rdx, %rsi + 0x4c, 0x29, 0xf6, //0x00000b69 subq %r14, %rsi + //0x00000b6c LBB0_117 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00000b6c vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0x97, 0xf4, 0xff, 0xff, //0x00000b71 vpcmpeqb $-2921(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0x9f, 0xf4, 0xff, 0xff, //0x00000b79 vpand $-2913(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa7, 0xf4, 0xff, 0xff, //0x00000b81 vpcmpeqb $-2905(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00000b89 vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xd8, //0x00000b8d vpmovmskb %xmm0, %ebx + 0x85, 0xdb, //0x00000b91 testl %ebx, %ebx + 0x0f, 0x85, 0x9e, 0x1b, 0x00, 0x00, //0x00000b93 jne LBB0_478 + 0x49, 0x83, 0xc0, 0x10, //0x00000b99 addq $16, %r8 + 0x48, 0x83, 0xc7, 0xf0, //0x00000b9d addq $-16, %rdi + 0x49, 0x83, 0xc1, 0xf0, //0x00000ba1 addq $-16, %r9 + 0x48, 0x83, 0xc1, 0x10, //0x00000ba5 addq $16, %rcx + 0x48, 0x83, 0xc6, 0x10, //0x00000ba9 addq $16, %rsi + 0x48, 0x83, 0xc2, 0x10, //0x00000bad addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000bb1 cmpq $15, %rdi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00000bb5 ja LBB0_117 + //0x00000bbb LBB0_119 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00000bbb vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00000bbf vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00000bc3 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xff, //0x00000bc8 testq %rdi, %rdi + 0x0f, 0x84, 0xe8, 0xf7, 0xff, 0xff, //0x00000bcb je LBB0_1 + 0x49, 0x8d, 0x0c, 0x38, //0x00000bd1 leaq (%r8,%rdi), %rcx + 0x48, 0xb8, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bd5 movabsq $17596481021440, %rax + //0x00000bdf LBB0_121 + 0x41, 0x0f, 0xb6, 0x10, //0x00000bdf movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000be3 cmpq $44, %rdx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000be7 ja LBB0_123 + 0x48, 0x0f, 0xa3, 0xd0, //0x00000bed btq %rdx, %rax + 0x0f, 0x82, 0xc2, 0xf7, 0xff, 0xff, //0x00000bf1 jb LBB0_1 + //0x00000bf7 LBB0_123 + 0x80, 0xfa, 0x5d, //0x00000bf7 cmpb $93, %dl + 0x0f, 0x84, 0xb9, 0xf7, 0xff, 0xff, //0x00000bfa je LBB0_1 + 0x80, 0xfa, 0x7d, //0x00000c00 cmpb $125, %dl + 0x0f, 0x84, 0xb0, 0xf7, 0xff, 0xff, //0x00000c03 je LBB0_1 + 0x49, 0x83, 0xc0, 0x01, //0x00000c09 addq $1, %r8 + 0x48, 0x83, 0xc7, 0xff, //0x00000c0d addq $-1, %rdi + 0x0f, 0x85, 0xc8, 0xff, 0xff, 0xff, //0x00000c11 jne LBB0_121 + 0x49, 0x89, 0xc8, //0x00000c17 movq %rcx, %r8 + 0xe9, 0x9a, 0xf7, 0xff, 0xff, //0x00000c1a jmp LBB0_1 + //0x00000c1f LBB0_127 + 0x0f, 0xbc, 0xd8, //0x00000c1f bsfl %eax, %ebx + 0x48, 0x89, 0xd8, //0x00000c22 movq %rbx, %rax + 0x48, 0x29, 0xf8, //0x00000c25 subq %rdi, %rax + 0x49, 0x89, 0x07, //0x00000c28 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00000c2b testq %rax, %rax + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c2e movabsq $4294977024, %rdi + 0x0f, 0x8e, 0xac, 0xf7, 0xff, 0xff, //0x00000c38 jle LBB0_2 + 0x48, 0x01, 0xd9, //0x00000c3e addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c41 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00000c44 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c47 .p2align 4, 0x90 + //0x00000c50 LBB0_129 + 0x0f, 0xb6, 0x06, //0x00000c50 movzbl (%rsi), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00000c53 cmpq $32, %rax + 0x0f, 0x87, 0x8d, 0xf7, 0xff, 0xff, //0x00000c57 ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc7, //0x00000c5d btq %rax, %rdi + 0x0f, 0x83, 0x83, 0xf7, 0xff, 0xff, //0x00000c61 jae LBB0_2 + 0x49, 0x89, 0x17, //0x00000c67 movq %rdx, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x00000c6a addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c6e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00000c72 addq $-1, %rsi + 0x48, 0x83, 0xf9, 0x01, //0x00000c76 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c7a jg LBB0_129 + 0xe9, 0x65, 0xf7, 0xff, 0xff, //0x00000c80 jmp LBB0_2 + //0x00000c85 LBB0_132 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00000c85 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x00000c8a movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x00000c8e movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x00000c91 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x00000c95 subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x00000c98 cmpq $32, %r10 + 0x0f, 0x8c, 0x9c, 0x1c, 0x00, 0x00, //0x00000c9c jl LBB0_142 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x00000ca2 movl $32, %edx + 0x31, 0xf6, //0x00000ca7 xorl %esi, %esi + 0x45, 0x31, 0xff, //0x00000ca9 xorl %r15d, %r15d + 0xe9, 0x66, 0x00, 0x00, 0x00, //0x00000cac jmp LBB0_134 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000cb1 .p2align 4, 0x90 + //0x00000cc0 LBB0_138 + 0x44, 0x89, 0xf9, //0x00000cc0 movl %r15d, %ecx + 0xf7, 0xd1, //0x00000cc3 notl %ecx + 0x21, 0xd9, //0x00000cc5 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00000cc7 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x00000ccb orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x00000cce movl %r13d, %edi + 0xf7, 0xd7, //0x00000cd1 notl %edi + 0x21, 0xdf, //0x00000cd3 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000cd5 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x00000cdb xorl %r15d, %r15d + 0x01, 0xcf, //0x00000cde addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00000ce0 setb %r15b + 0x01, 0xff, //0x00000ce4 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000ce6 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x00000cec andl %r13d, %edi + 0xf7, 0xd7, //0x00000cef notl %edi + 0x41, 0x21, 0xfb, //0x00000cf1 andl %edi, %r11d + 0x4d, 0x85, 0xdb, //0x00000cf4 testq %r11, %r11 + 0x0f, 0x85, 0x4d, 0x00, 0x00, 0x00, //0x00000cf7 jne LBB0_137 + //0x00000cfd LBB0_139 + 0x48, 0x83, 0xc6, 0x20, //0x00000cfd addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00000d01 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000d05 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00000d09 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x00000d0d cmpq $63, %rcx + 0x0f, 0x8e, 0x0f, 0x1c, 0x00, 0x00, //0x00000d11 jle LBB0_140 + //0x00000d17 LBB0_134 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00000d17 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00000d1d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x00000d21 vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x00000d25 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00000d29 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00000d2d testl %ebx, %ebx + 0x0f, 0x85, 0x8b, 0xff, 0xff, 0xff, //0x00000d2f jne LBB0_138 + 0x4d, 0x85, 0xff, //0x00000d35 testq %r15, %r15 + 0x0f, 0x85, 0x82, 0xff, 0xff, 0xff, //0x00000d38 jne LBB0_138 + 0x45, 0x31, 0xff, //0x00000d3e xorl %r15d, %r15d + 0x4d, 0x85, 0xdb, //0x00000d41 testq %r11, %r11 + 0x0f, 0x84, 0xb3, 0xff, 0xff, 0xff, //0x00000d44 je LBB0_139 + //0x00000d4a LBB0_137 + 0x41, 0x0f, 0xbc, 0xc3, //0x00000d4a bsfl %r11d, %eax + 0x4c, 0x01, 0xc0, //0x00000d4e addq %r8, %rax + 0x4c, 0x8d, 0x0c, 0x06, //0x00000d51 leaq (%rsi,%rax), %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00000d55 addq $1, %r9 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00000d59 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00000d5e movq (%rsp), %r11 + 0x4d, 0x89, 0x0f, //0x00000d62 movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x00000d65 testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000d68 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x35, 0x0b, 0x00, 0x00, //0x00000d6d jg LBB0_304 + 0xe9, 0x3d, 0x2f, 0x00, 0x00, //0x00000d73 jmp LBB0_700 + //0x00000d78 LBB0_143 + 0x4d, 0x89, 0xc5, //0x00000d78 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000d7b subq %r9, %r13 + 0x0f, 0x84, 0xfa, 0x30, 0x00, 0x00, //0x00000d7e je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000d84 cmpq $64, %r13 + 0x0f, 0x82, 0xa5, 0x1f, 0x00, 0x00, //0x00000d88 jb LBB0_532 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000d8e movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000d95 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000d98 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d9b .p2align 4, 0x90 + //0x00000da0 LBB0_146 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000da0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000da6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000dad vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000db1 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000db5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000db9 vpmovmskb %ymm2, %ecx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000dbd vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000dc1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000dc5 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000dc9 vpmovmskb %ymm2, %ebx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000dcd vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000dd1 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000dd6 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000dda vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe1, 0x20, //0x00000dde shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x00000de2 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x20, //0x00000de5 shlq $32, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x00000de9 shlq $32, %rsi + 0x48, 0x09, 0xda, //0x00000ded orq %rbx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000df0 jne LBB0_157 + 0x4d, 0x85, 0xdb, //0x00000df6 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000df9 jne LBB0_159 + 0x45, 0x31, 0xdb, //0x00000dff xorl %r11d, %r11d + //0x00000e02 LBB0_149 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000e02 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000e06 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000e0b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000e0f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000e13 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000e16 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00000e19 jne LBB0_160 + 0x48, 0x85, 0xf6, //0x00000e1f testq %rsi, %rsi + 0x0f, 0x85, 0x07, 0x2f, 0x00, 0x00, //0x00000e22 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000e28 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000e2c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000e30 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000e34 ja LBB0_146 + 0xe9, 0x5e, 0x1b, 0x00, 0x00, //0x00000e3a jmp LBB0_152 + //0x00000e3f LBB0_157 + 0x49, 0x83, 0xff, 0xff, //0x00000e3f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000e43 jne LBB0_159 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000e49 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000e4d addq %rax, %r15 + //0x00000e50 LBB0_159 + 0x4c, 0x89, 0xd9, //0x00000e50 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000e53 notq %rcx + 0x48, 0x21, 0xd1, //0x00000e56 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000e59 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000e5d orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000e60 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e63 notq %rbx + 0x48, 0x21, 0xd3, //0x00000e66 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000e69 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000e73 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000e76 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000e79 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000e7c setb %r11b + 0x48, 0x01, 0xdb, //0x00000e80 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000e83 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000e8d xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000e90 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000e93 notq %rbx + 0x48, 0x21, 0xdf, //0x00000e96 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00000e99 jmp LBB0_149 + //0x00000e9e LBB0_160 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000e9e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ea2 testq %rsi, %rsi + 0x0f, 0x84, 0xbf, 0xf4, 0xff, 0xff, //0x00000ea5 je LBB0_235 + 0x48, 0x0f, 0xbc, 0xd6, //0x00000eab bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00000eaf movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00000eb3 cmpq %rcx, %rdx + 0x0f, 0x83, 0xc0, 0xf4, 0xff, 0xff, //0x00000eb6 jae LBB0_236 + 0xe9, 0xc5, 0x2f, 0x00, 0x00, //0x00000ebc jmp LBB0_162 + //0x00000ec1 LBB0_163 + 0x4d, 0x89, 0xc5, //0x00000ec1 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x00000ec4 subq %r9, %r13 + 0x0f, 0x84, 0xb1, 0x2f, 0x00, 0x00, //0x00000ec7 je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x00000ecd cmpq $64, %r13 + 0x0f, 0x82, 0xac, 0x1e, 0x00, 0x00, //0x00000ed1 jb LBB0_537 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000ed7 movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00000ede movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00000ee1 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ee4 .p2align 4, 0x90 + //0x00000ef0 LBB0_166 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00000ef0 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00000ef6 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x00000efd vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00000f01 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00000f05 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00000f09 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x00000f0d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00000f11 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00000f15 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00000f19 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x00000f1d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00000f21 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00000f26 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x00000f2a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x00000f2e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00000f32 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00000f35 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00000f39 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x00000f3d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00000f40 jne LBB0_177 + 0x4d, 0x85, 0xdb, //0x00000f46 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000f49 jne LBB0_179 + 0x45, 0x31, 0xdb, //0x00000f4f xorl %r11d, %r11d + //0x00000f52 LBB0_169 + 0xc5, 0xbd, 0x64, 0xc8, //0x00000f52 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00000f56 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00000f5b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x00000f5f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00000f63 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00000f66 testq %rdi, %rdi + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00000f69 jne LBB0_180 + 0x48, 0x85, 0xf6, //0x00000f6f testq %rsi, %rsi + 0x0f, 0x85, 0xb7, 0x2d, 0x00, 0x00, //0x00000f72 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00000f78 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x00000f7c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x00000f80 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x00000f84 ja LBB0_166 + 0xe9, 0x1b, 0x1b, 0x00, 0x00, //0x00000f8a jmp LBB0_172 + //0x00000f8f LBB0_177 + 0x49, 0x83, 0xff, 0xff, //0x00000f8f cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00000f93 jne LBB0_179 + 0x4c, 0x0f, 0xbc, 0xfa, //0x00000f99 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x00000f9d addq %rax, %r15 + //0x00000fa0 LBB0_179 + 0x4c, 0x89, 0xd9, //0x00000fa0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00000fa3 notq %rcx + 0x48, 0x21, 0xd1, //0x00000fa6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x00000fa9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x00000fad orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x00000fb0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fb3 notq %rbx + 0x48, 0x21, 0xd3, //0x00000fb6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000fb9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x00000fc3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x00000fc6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x00000fc9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x00000fcc setb %r11b + 0x48, 0x01, 0xdb, //0x00000fd0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000fd3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x00000fdd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00000fe0 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00000fe3 notq %rbx + 0x48, 0x21, 0xdf, //0x00000fe6 andq %rbx, %rdi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00000fe9 movq $24(%rsp), %r10 + 0xe9, 0x5f, 0xff, 0xff, 0xff, //0x00000fee jmp LBB0_169 + //0x00000ff3 LBB0_180 + 0x48, 0x0f, 0xbc, 0xcf, //0x00000ff3 bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00000ff7 testq %rsi, %rsi + 0x0f, 0x84, 0x75, 0x08, 0x00, 0x00, //0x00000ffa je LBB0_300 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001000 bsfq %rsi, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x00001004 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x00001008 cmpq %rcx, %rdx + 0x0f, 0x83, 0x76, 0x08, 0x00, 0x00, //0x0000100b jae LBB0_301 + 0xe9, 0x70, 0x2e, 0x00, 0x00, //0x00001011 jmp LBB0_162 + //0x00001016 LBB0_182 + 0x43, 0x8a, 0x0c, 0x2e, //0x00001016 movb (%r14,%r13), %cl + 0x80, 0xc1, 0xd2, //0x0000101a addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000101d cmpb $55, %cl + 0x0f, 0x87, 0x20, 0xf8, 0xff, 0xff, //0x00001020 ja LBB0_75 + 0x0f, 0xb6, 0xc9, //0x00001026 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001029 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00001033 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00001037 movq %rax, %rcx + 0x0f, 0x83, 0xee, 0x07, 0x00, 0x00, //0x0000103a jae LBB0_296 + //0x00001040 LBB0_184 + 0x4c, 0x89, 0x6c, 0x24, 0x10, //0x00001040 movq %r13, $16(%rsp) + 0x49, 0x83, 0xf9, 0x20, //0x00001045 cmpq $32, %r9 + 0x0f, 0x82, 0x7b, 0x1c, 0x00, 0x00, //0x00001049 jb LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x0000104f movq $-1, $40(%rsp) + 0x45, 0x31, 0xd2, //0x00001058 xorl %r10d, %r10d + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000105b movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00001062 movq $-1, $48(%rsp) + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000106b .p2align 4, 0x90 + //0x00001070 LBB0_186 + 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x10, //0x00001070 vmovdqu (%r8,%r10), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00001076 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000107b vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x0000107f vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00001083 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd1, 0xf1, 0xff, 0xff, //0x00001087 vpcmpeqb $-3631(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x0000108f vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00001093 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe1, 0xf1, 0xff, 0xff, //0x00001097 vpcmpeqb $-3615(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x0000109f vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000010a3 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000010a7 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000010ab vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000010af vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000010b3 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000010b7 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000010bb vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000010bf notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000010c2 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000010c6 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000010c9 je LBB0_188 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000010cf movl $-1, %ebx + 0xd3, 0xe3, //0x000010d4 shll %cl, %ebx + 0xf7, 0xd3, //0x000010d6 notl %ebx + 0x21, 0xdf, //0x000010d8 andl %ebx, %edi + 0x21, 0xde, //0x000010da andl %ebx, %esi + 0x21, 0xd3, //0x000010dc andl %edx, %ebx + 0x89, 0xda, //0x000010de movl %ebx, %edx + //0x000010e0 LBB0_188 + 0x8d, 0x5f, 0xff, //0x000010e0 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000010e3 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd3, 0xf0, 0xff, 0xff, //0x000010e5 vmovdqu $-3885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x32, 0x16, 0x00, 0x00, //0x000010ed jne LBB0_476 + 0x8d, 0x5e, 0xff, //0x000010f3 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000010f6 andl %esi, %ebx + 0x0f, 0x85, 0x27, 0x16, 0x00, 0x00, //0x000010f8 jne LBB0_476 + 0x8d, 0x5a, 0xff, //0x000010fe leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00001101 andl %edx, %ebx + 0x0f, 0x85, 0x1c, 0x16, 0x00, 0x00, //0x00001103 jne LBB0_476 + 0x85, 0xff, //0x00001109 testl %edi, %edi + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000110b je LBB0_194 + 0x0f, 0xbc, 0xff, //0x00001111 bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001114 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xd1, 0x19, 0x00, 0x00, //0x0000111a jne LBB0_505 + 0x4c, 0x01, 0xd7, //0x00001120 addq %r10, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x00001123 movq %rdi, $48(%rsp) + //0x00001128 LBB0_194 + 0x85, 0xf6, //0x00001128 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000112a je LBB0_197 + 0x0f, 0xbc, 0xf6, //0x00001130 bsfl %esi, %esi + 0x49, 0x83, 0xfd, 0xff, //0x00001133 cmpq $-1, %r13 + 0x0f, 0x85, 0xbf, 0x19, 0x00, 0x00, //0x00001137 jne LBB0_506 + 0x4c, 0x01, 0xd6, //0x0000113d addq %r10, %rsi + 0x49, 0x89, 0xf5, //0x00001140 movq %rsi, %r13 + //0x00001143 LBB0_197 + 0x85, 0xd2, //0x00001143 testl %edx, %edx + 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x00001145 je LBB0_200 + 0x0f, 0xbc, 0xd2, //0x0000114b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000114e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xad, 0x19, 0x00, 0x00, //0x00001154 jne LBB0_507 + 0x4c, 0x01, 0xd2, //0x0000115a addq %r10, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000115d movq %rdx, $40(%rsp) + //0x00001162 LBB0_200 + 0x83, 0xf9, 0x20, //0x00001162 cmpl $32, %ecx + 0x0f, 0x85, 0xc3, 0x02, 0x00, 0x00, //0x00001165 jne LBB0_234 + 0x49, 0x83, 0xc1, 0xe0, //0x0000116b addq $-32, %r9 + 0x49, 0x83, 0xc2, 0x20, //0x0000116f addq $32, %r10 + 0x49, 0x83, 0xf9, 0x1f, //0x00001173 cmpq $31, %r9 + 0x0f, 0x87, 0xf3, 0xfe, 0xff, 0xff, //0x00001177 ja LBB0_186 + 0xc5, 0xf8, 0x77, //0x0000117d vzeroupper + 0xc5, 0x7e, 0x6f, 0x35, 0x58, 0xf0, 0xff, 0xff, //0x00001180 vmovdqu $-4008(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb0, 0xf0, 0xff, 0xff, //0x00001188 vmovdqu $-3920(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x2d, 0x88, 0xf0, 0xff, 0xff, //0x00001190 vmovdqu $-3960(%rip), %ymm13 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x15, 0x60, 0xf0, 0xff, 0xff, //0x00001198 vmovdqu $-4000(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0xb8, 0xef, 0xff, 0xff, //0x000011a0 vmovdqu $-4168(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x1d, 0x90, 0xef, 0xff, 0xff, //0x000011a8 vmovdqu $-4208(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000011b0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x05, 0x63, 0xef, 0xff, 0xff, //0x000011b5 vmovdqu $-4253(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x3b, 0xef, 0xff, 0xff, //0x000011bd vmovdqu $-4293(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x13, 0xef, 0xff, 0xff, //0x000011c5 vmovdqu $-4333(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x2d, 0xeb, 0xee, 0xff, 0xff, //0x000011cd vmovdqu $-4373(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0x4d, 0x01, 0xc2, //0x000011d5 addq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x000011d8 cmpq $16, %r9 + 0x0f, 0x82, 0x8f, 0x01, 0x00, 0x00, //0x000011dc jb LBB0_221 + //0x000011e2 LBB0_203 + 0x4c, 0x89, 0xd1, //0x000011e2 movq %r10, %rcx + 0x48, 0x2b, 0x4c, 0x24, 0x10, //0x000011e5 subq $16(%rsp), %rcx + 0x4c, 0x29, 0xf1, //0x000011ea subq %r14, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000011ed addq $1, %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000011f1 movq %rcx, $56(%rsp) + 0x45, 0x31, 0xff, //0x000011f6 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000011f9 .p2align 4, 0x90 + //0x00001200 LBB0_204 + 0x4d, 0x89, 0xeb, //0x00001200 movq %r13, %r11 + 0x4d, 0x89, 0xc5, //0x00001203 movq %r8, %r13 + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x3a, //0x00001206 vmovdqu (%r10,%r15), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x2c, 0xee, 0xff, 0xff, //0x0000120c vpcmpgtb $-4564(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001214 vmovdqu $-4556(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x0000121c vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x00001220 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x34, 0xee, 0xff, 0xff, //0x00001224 vpcmpeqb $-4556(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0x3c, 0xee, 0xff, 0xff, //0x0000122c vpcmpeqb $-4548(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x00001234 vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0xe0, 0xed, 0xff, 0xff, //0x00001238 vpand $-4640(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0x38, 0xee, 0xff, 0xff, //0x00001240 vpcmpeqb $-4552(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0x40, 0xee, 0xff, 0xff, //0x00001248 vpcmpeqb $-4544(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x00001250 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x00001254 vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x00001258 vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc0, //0x0000125c vpmovmskb %xmm0, %r8d + 0xc5, 0xf9, 0xd7, 0xf3, //0x00001260 vpmovmskb %xmm3, %esi + 0xc5, 0xf9, 0xd7, 0xd2, //0x00001264 vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x00001268 vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x0000126c notl %ecx + 0x0f, 0xbc, 0xc9, //0x0000126e bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001271 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001274 je LBB0_206 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000127a movl $-1, %edi + 0xd3, 0xe7, //0x0000127f shll %cl, %edi + 0xf7, 0xd7, //0x00001281 notl %edi + 0x41, 0x21, 0xf8, //0x00001283 andl %edi, %r8d + 0x21, 0xfe, //0x00001286 andl %edi, %esi + 0x21, 0xd7, //0x00001288 andl %edx, %edi + 0x89, 0xfa, //0x0000128a movl %edi, %edx + //0x0000128c LBB0_206 + 0xc5, 0xfe, 0x6f, 0x25, 0x0c, 0xf0, 0xff, 0xff, //0x0000128c vmovdqu $-4084(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x24, 0xef, 0xff, 0xff, //0x00001294 vmovdqu $-4316(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x41, 0x8d, 0x78, 0xff, //0x0000129c leal $-1(%r8), %edi + 0x44, 0x21, 0xc7, //0x000012a0 andl %r8d, %edi + 0x0f, 0x85, 0x54, 0x17, 0x00, 0x00, //0x000012a3 jne LBB0_501 + 0x8d, 0x7e, 0xff, //0x000012a9 leal $-1(%rsi), %edi + 0x21, 0xf7, //0x000012ac andl %esi, %edi + 0x0f, 0x85, 0x49, 0x17, 0x00, 0x00, //0x000012ae jne LBB0_501 + 0x8d, 0x7a, 0xff, //0x000012b4 leal $-1(%rdx), %edi + 0x21, 0xd7, //0x000012b7 andl %edx, %edi + 0x0f, 0x85, 0x3e, 0x17, 0x00, 0x00, //0x000012b9 jne LBB0_501 + 0x45, 0x85, 0xc0, //0x000012bf testl %r8d, %r8d + 0x0f, 0x84, 0x20, 0x00, 0x00, 0x00, //0x000012c2 je LBB0_212 + 0x41, 0x0f, 0xbc, 0xf8, //0x000012c8 bsfl %r8d, %edi + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x000012cc cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0xf0, 0x18, 0x00, 0x00, //0x000012d2 jne LBB0_520 + 0x48, 0x8b, 0x5c, 0x24, 0x38, //0x000012d8 movq $56(%rsp), %rbx + 0x4c, 0x01, 0xfb, //0x000012dd addq %r15, %rbx + 0x48, 0x01, 0xdf, //0x000012e0 addq %rbx, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x30, //0x000012e3 movq %rdi, $48(%rsp) + //0x000012e8 LBB0_212 + 0x85, 0xf6, //0x000012e8 testl %esi, %esi + 0x4d, 0x89, 0xe8, //0x000012ea movq %r13, %r8 + 0x0f, 0x84, 0x2d, 0x00, 0x00, 0x00, //0x000012ed je LBB0_215 + 0x0f, 0xbc, 0xf6, //0x000012f3 bsfl %esi, %esi + 0x49, 0x83, 0xfb, 0xff, //0x000012f6 cmpq $-1, %r11 + 0x0f, 0x85, 0xd3, 0x18, 0x00, 0x00, //0x000012fa jne LBB0_521 + 0x48, 0x8b, 0x7c, 0x24, 0x38, //0x00001300 movq $56(%rsp), %rdi + 0x4c, 0x01, 0xff, //0x00001305 addq %r15, %rdi + 0x48, 0x01, 0xfe, //0x00001308 addq %rdi, %rsi + 0x49, 0x89, 0xf5, //0x0000130b movq %rsi, %r13 + 0x85, 0xd2, //0x0000130e testl %edx, %edx + 0x0f, 0x85, 0x15, 0x00, 0x00, 0x00, //0x00001310 jne LBB0_216 + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001316 jmp LBB0_218 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000131b .p2align 4, 0x90 + //0x00001320 LBB0_215 + 0x4d, 0x89, 0xdd, //0x00001320 movq %r11, %r13 + 0x85, 0xd2, //0x00001323 testl %edx, %edx + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x00001325 je LBB0_218 + //0x0000132b LBB0_216 + 0x0f, 0xbc, 0xd2, //0x0000132b bsfl %edx, %edx + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000132e cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xa4, 0x18, 0x00, 0x00, //0x00001334 jne LBB0_522 + 0x48, 0x8b, 0x74, 0x24, 0x38, //0x0000133a movq $56(%rsp), %rsi + 0x4c, 0x01, 0xfe, //0x0000133f addq %r15, %rsi + 0x48, 0x01, 0xf2, //0x00001342 addq %rsi, %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x00001345 movq %rdx, $40(%rsp) + //0x0000134a LBB0_218 + 0x83, 0xf9, 0x10, //0x0000134a cmpl $16, %ecx + 0x0f, 0x85, 0x85, 0x03, 0x00, 0x00, //0x0000134d jne LBB0_280 + 0x49, 0x83, 0xc1, 0xf0, //0x00001353 addq $-16, %r9 + 0x49, 0x83, 0xc7, 0x10, //0x00001357 addq $16, %r15 + 0x49, 0x83, 0xf9, 0x0f, //0x0000135b cmpq $15, %r9 + 0x0f, 0x87, 0x9b, 0xfe, 0xff, 0xff, //0x0000135f ja LBB0_204 + 0x4d, 0x01, 0xfa, //0x00001365 addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001368 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000136d movq (%rsp), %r11 + //0x00001371 LBB0_221 + 0x4d, 0x85, 0xc9, //0x00001371 testq %r9, %r9 + 0xc5, 0xfe, 0x6f, 0x25, 0x24, 0xef, 0xff, 0xff, //0x00001374 vmovdqu $-4316(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x84, 0x6f, 0x03, 0x00, 0x00, //0x0000137c je LBB0_282 + 0x4b, 0x8d, 0x0c, 0x0a, //0x00001382 leaq (%r10,%r9), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x00001386 movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xd6, //0x0000138b movq %r10, %rsi + 0x48, 0x2b, 0x74, 0x24, 0x10, //0x0000138e subq $16(%rsp), %rsi + 0x4c, 0x29, 0xf6, //0x00001393 subq %r14, %rsi + 0x48, 0x83, 0xc6, 0x01, //0x00001396 addq $1, %rsi + 0x31, 0xc9, //0x0000139a xorl %ecx, %ecx + 0xc5, 0xfe, 0x6f, 0x1d, 0x1c, 0xee, 0xff, 0xff, //0x0000139c vmovdqu $-4580(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xe9, 0x24, 0x00, 0x00, 0x00, //0x000013a4 jmp LBB0_227 + //0x000013a9 LBB0_223 + 0x83, 0xff, 0x65, //0x000013a9 cmpl $101, %edi + 0x0f, 0x85, 0x3c, 0x03, 0x00, 0x00, //0x000013ac jne LBB0_281 + //0x000013b2 LBB0_224 + 0x49, 0x83, 0xfd, 0xff, //0x000013b2 cmpq $-1, %r13 + 0x0f, 0x85, 0x6e, 0x16, 0x00, 0x00, //0x000013b6 jne LBB0_503 + 0x4c, 0x8d, 0x2c, 0x0e, //0x000013bc leaq (%rsi,%rcx), %r13 + //0x000013c0 .p2align 4, 0x90 + //0x000013c0 LBB0_226 + 0x48, 0x83, 0xc1, 0x01, //0x000013c0 addq $1, %rcx + 0x49, 0x39, 0xc9, //0x000013c4 cmpq %rcx, %r9 + 0x0f, 0x84, 0xe8, 0x12, 0x00, 0x00, //0x000013c7 je LBB0_469 + //0x000013cd LBB0_227 + 0x41, 0x0f, 0xbe, 0x3c, 0x0a, //0x000013cd movsbl (%r10,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x000013d2 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x000013d5 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x000013d8 jb LBB0_226 + 0x8d, 0x5f, 0xd5, //0x000013de leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x000013e1 cmpl $26, %ebx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x000013e4 ja LBB0_223 + 0x48, 0x8d, 0x15, 0x5b, 0x2d, 0x00, 0x00, //0x000013ea leaq $11611(%rip), %rdx /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x000013f1 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x000013f5 addq %rdx, %rdi + 0xff, 0xe7, //0x000013f8 jmpq *%rdi + //0x000013fa LBB0_230 + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x000013fa cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0x24, 0x16, 0x00, 0x00, //0x00001400 jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001406 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x28, //0x0000140a movq %rdx, $40(%rsp) + 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000140f jmp LBB0_226 + //0x00001414 LBB0_232 + 0x48, 0x83, 0x7c, 0x24, 0x30, 0xff, //0x00001414 cmpq $-1, $48(%rsp) + 0x0f, 0x85, 0x0a, 0x16, 0x00, 0x00, //0x0000141a jne LBB0_503 + 0x48, 0x8d, 0x14, 0x0e, //0x00001420 leaq (%rsi,%rcx), %rdx + 0x48, 0x89, 0x54, 0x24, 0x30, //0x00001424 movq %rdx, $48(%rsp) + 0xe9, 0x92, 0xff, 0xff, 0xff, //0x00001429 jmp LBB0_226 + //0x0000142e LBB0_234 + 0x4c, 0x01, 0xd1, //0x0000142e addq %r10, %rcx + 0x4c, 0x01, 0xc1, //0x00001431 addq %r8, %rcx + 0xc5, 0xf8, 0x77, //0x00001434 vzeroupper + 0x49, 0x89, 0xca, //0x00001437 movq %rcx, %r10 + 0xe9, 0xb2, 0x02, 0x00, 0x00, //0x0000143a jmp LBB0_282 + //0x0000143f LBB0_238 + 0x41, 0xf6, 0xc3, 0x40, //0x0000143f testb $64, %r11b + 0x0f, 0x85, 0x84, 0x04, 0x00, 0x00, //0x00001443 jne LBB0_306 + 0x4d, 0x8b, 0x0f, //0x00001449 movq (%r15), %r9 + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000144c movq $32(%rsp), %rax + 0x4c, 0x8b, 0x40, 0x08, //0x00001451 movq $8(%rax), %r8 + 0x41, 0xf6, 0xc3, 0x20, //0x00001455 testb $32, %r11b + 0x0f, 0x85, 0x88, 0x0d, 0x00, 0x00, //0x00001459 jne LBB0_396 + 0x4d, 0x89, 0xc3, //0x0000145f movq %r8, %r11 + 0x4d, 0x29, 0xcb, //0x00001462 subq %r9, %r11 + 0x0f, 0x84, 0x13, 0x2a, 0x00, 0x00, //0x00001465 je LBB0_732 + 0x49, 0x83, 0xfb, 0x40, //0x0000146b cmpq $64, %r11 + 0x0f, 0x82, 0x71, 0x19, 0x00, 0x00, //0x0000146f jb LBB0_541 + 0x4c, 0x89, 0xce, //0x00001475 movq %r9, %rsi + 0x48, 0xf7, 0xd6, //0x00001478 notq %rsi + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000147b movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00001482 movq %r9, %rax + 0x45, 0x31, 0xd2, //0x00001485 xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001488 .p2align 4, 0x90 + //0x00001490 LBB0_243 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00001490 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00001496 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000149d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x000014a1 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd6, //0x000014a5 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x000014a9 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xc7, //0x000014ad vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf8, //0x000014b1 vpmovmskb %ymm0, %edi + 0xc5, 0xf5, 0x74, 0xc7, //0x000014b5 vpcmpeqb %ymm7, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000014b9 vpmovmskb %ymm0, %ecx + 0x48, 0xc1, 0xe3, 0x20, //0x000014bd shlq $32, %rbx + 0x48, 0x09, 0xda, //0x000014c1 orq %rbx, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x000014c4 shlq $32, %rcx + 0x48, 0x09, 0xcf, //0x000014c8 orq %rcx, %rdi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000014cb jne LBB0_252 + 0x4d, 0x85, 0xd2, //0x000014d1 testq %r10, %r10 + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000014d4 jne LBB0_254 + 0x45, 0x31, 0xd2, //0x000014da xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x000014dd testq %rdx, %rdx + 0x0f, 0x85, 0x7e, 0x00, 0x00, 0x00, //0x000014e0 jne LBB0_255 + //0x000014e6 LBB0_246 + 0x49, 0x83, 0xc3, 0xc0, //0x000014e6 addq $-64, %r11 + 0x48, 0x83, 0xc6, 0xc0, //0x000014ea addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x000014ee addq $64, %rax + 0x49, 0x83, 0xfb, 0x3f, //0x000014f2 cmpq $63, %r11 + 0x0f, 0x87, 0x94, 0xff, 0xff, 0xff, //0x000014f6 ja LBB0_243 + 0xe9, 0xe8, 0x16, 0x00, 0x00, //0x000014fc jmp LBB0_247 + //0x00001501 LBB0_252 + 0x49, 0x83, 0xff, 0xff, //0x00001501 cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00001505 jne LBB0_254 + 0x4c, 0x0f, 0xbc, 0xff, //0x0000150b bsfq %rdi, %r15 + 0x49, 0x01, 0xc7, //0x0000150f addq %rax, %r15 + //0x00001512 LBB0_254 + 0x4c, 0x89, 0xd1, //0x00001512 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001515 notq %rcx + 0x48, 0x21, 0xf9, //0x00001518 andq %rdi, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x0000151b leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x0000151f orq %r10, %r13 + 0x4c, 0x89, 0xeb, //0x00001522 movq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001525 notq %rbx + 0x48, 0x21, 0xfb, //0x00001528 andq %rdi, %rbx + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000152b movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfb, //0x00001535 andq %rdi, %rbx + 0x45, 0x31, 0xd2, //0x00001538 xorl %r10d, %r10d + 0x48, 0x01, 0xcb, //0x0000153b addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc2, //0x0000153e setb %r10b + 0x48, 0x01, 0xdb, //0x00001542 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001545 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x0000154f xorq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00001552 andq %r13, %rbx + 0x48, 0xf7, 0xd3, //0x00001555 notq %rbx + 0x48, 0x21, 0xda, //0x00001558 andq %rbx, %rdx + 0x48, 0x85, 0xd2, //0x0000155b testq %rdx, %rdx + 0x0f, 0x84, 0x82, 0xff, 0xff, 0xff, //0x0000155e je LBB0_246 + //0x00001564 LBB0_255 + 0xc5, 0x7d, 0x7f, 0xea, //0x00001564 vmovdqa %ymm13, %ymm2 + 0x48, 0x0f, 0xbc, 0xc2, //0x00001568 bsfq %rdx, %rax + 0x48, 0x29, 0xf0, //0x0000156c subq %rsi, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x0000156f movq (%rsp), %r11 + 0xe9, 0x64, 0x11, 0x00, 0x00, //0x00001573 jmp LBB0_473 + //0x00001578 LBB0_256 + 0x4c, 0x89, 0xd9, //0x00001578 movq %r11, %rcx + 0x48, 0x8b, 0x44, 0x24, 0x20, //0x0000157b movq $32(%rsp), %rax + 0x4c, 0x8b, 0x58, 0x08, //0x00001580 movq $8(%rax), %r11 + 0x49, 0x8b, 0x07, //0x00001584 movq (%r15), %rax + 0xf6, 0xc1, 0x40, //0x00001587 testb $64, %cl + 0x0f, 0x85, 0x1d, 0x04, 0x00, 0x00, //0x0000158a jne LBB0_317 + 0x49, 0x29, 0xc3, //0x00001590 subq %rax, %r11 + 0x0f, 0x84, 0xc6, 0x28, 0x00, 0x00, //0x00001593 je LBB0_723 + 0x4d, 0x8d, 0x2c, 0x06, //0x00001599 leaq (%r14,%rax), %r13 + 0x41, 0x80, 0x7d, 0x00, 0x30, //0x0000159d cmpb $48, (%r13) + 0x0f, 0x85, 0xa6, 0x0d, 0x00, 0x00, //0x000015a2 jne LBB0_417 + 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000015a8 movl $1, %r8d + 0x49, 0x83, 0xfb, 0x01, //0x000015ae cmpq $1, %r11 + 0x0f, 0x85, 0x6c, 0x0d, 0x00, 0x00, //0x000015b2 jne LBB0_415 + //0x000015b8 LBB0_260 + 0x48, 0x89, 0xc1, //0x000015b8 movq %rax, %rcx + 0xe9, 0x8e, 0x15, 0x00, 0x00, //0x000015bb jmp LBB0_514 + //0x000015c0 LBB0_261 + 0x41, 0xf6, 0xc3, 0x40, //0x000015c0 testb $64, %r11b + 0x0f, 0x85, 0x7a, 0x05, 0x00, 0x00, //0x000015c4 jne LBB0_334 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000015ca movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000015cf movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000015d2 cmpq $4095, %rcx + 0x0f, 0x8f, 0xca, 0x26, 0x00, 0x00, //0x000015d9 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000015df leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000015e3 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000015e6 movq $5, $8(%rdx,%rcx,8) + 0xe9, 0xac, 0xed, 0xff, 0xff, //0x000015ef jmp LBB0_3 + //0x000015f4 LBB0_264 + 0x49, 0x8b, 0x0f, //0x000015f4 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x000015f7 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x000015fc movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001600 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001604 cmpq %rsi, %rcx + 0x0f, 0x87, 0x1a, 0x27, 0x00, 0x00, //0x00001607 ja LBB0_711 + 0x41, 0x8b, 0x14, 0x0e, //0x0000160d movl (%r14,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001611 cmpl $1702063201, %edx + 0x0f, 0x85, 0x28, 0x27, 0x00, 0x00, //0x00001617 jne LBB0_712 + 0x48, 0x8d, 0x41, 0x04, //0x0000161d leaq $4(%rcx), %rax + 0x49, 0x89, 0x07, //0x00001621 movq %rax, (%r15) + 0x48, 0x85, 0xc9, //0x00001624 testq %rcx, %rcx + 0x0f, 0x8f, 0x73, 0xed, 0xff, 0xff, //0x00001627 jg LBB0_3 + 0xe9, 0x06, 0x28, 0x00, 0x00, //0x0000162d jmp LBB0_267 + //0x00001632 LBB0_268 + 0x49, 0x8b, 0x0f, //0x00001632 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001635 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000163a movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000163e leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001642 cmpq %rsi, %rcx + 0x0f, 0x87, 0xdc, 0x26, 0x00, 0x00, //0x00001645 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000164b leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000164f cmpl $1819047278, $-1(%r14,%rcx) + 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00001658 je LBB0_276 + 0xe9, 0x37, 0x27, 0x00, 0x00, //0x0000165e jmp LBB0_270 + //0x00001663 LBB0_274 + 0x49, 0x8b, 0x0f, //0x00001663 movq (%r15), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x20, //0x00001666 movq $32(%rsp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000166b movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000166f leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001673 cmpq %rsi, %rcx + 0x0f, 0x87, 0xab, 0x26, 0x00, 0x00, //0x00001676 ja LBB0_711 + 0x48, 0x8d, 0x41, 0xff, //0x0000167c leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0e, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001680 cmpl $1702195828, $-1(%r14,%rcx) + 0x0f, 0x85, 0x52, 0x27, 0x00, 0x00, //0x00001689 jne LBB0_717 + //0x0000168f LBB0_276 + 0x48, 0x8d, 0x51, 0x03, //0x0000168f leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00001693 movq %rdx, (%r15) + 0x48, 0x85, 0xc9, //0x00001696 testq %rcx, %rcx + 0x0f, 0x8f, 0x01, 0xed, 0xff, 0xff, //0x00001699 jg LBB0_3 + 0xe9, 0x71, 0x26, 0x00, 0x00, //0x0000169f jmp LBB0_728 + //0x000016a4 LBB0_277 + 0x41, 0xf6, 0xc3, 0x40, //0x000016a4 testb $64, %r11b + 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x000016a8 jne LBB0_360 + 0x48, 0x8b, 0x54, 0x24, 0x18, //0x000016ae movq $24(%rsp), %rdx + 0x48, 0x8b, 0x0a, //0x000016b3 movq (%rdx), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000016b6 cmpq $4095, %rcx + 0x0f, 0x8f, 0xe6, 0x25, 0x00, 0x00, //0x000016bd jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000016c3 leaq $1(%rcx), %rax + 0x48, 0x89, 0x02, //0x000016c7 movq %rax, (%rdx) + 0x48, 0xc7, 0x44, 0xca, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000016ca movq $6, $8(%rdx,%rcx,8) + 0xe9, 0xc8, 0xec, 0xff, 0xff, //0x000016d3 jmp LBB0_3 + //0x000016d8 LBB0_280 + 0x89, 0xc9, //0x000016d8 movl %ecx, %ecx + 0x49, 0x01, 0xca, //0x000016da addq %rcx, %r10 + 0x4d, 0x01, 0xfa, //0x000016dd addq %r15, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000016e0 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000016e5 movq (%rsp), %r11 + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000016e9 jmp LBB0_282 + //0x000016ee LBB0_281 + 0x49, 0x01, 0xca, //0x000016ee addq %rcx, %r10 + //0x000016f1 LBB0_282 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000016f1 movq $-1, %rcx + 0x48, 0x8b, 0x74, 0x24, 0x30, //0x000016f8 movq $48(%rsp), %rsi + 0x48, 0x85, 0xf6, //0x000016fd testq %rsi, %rsi + 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00001700 movq $40(%rsp), %rdx + 0x0f, 0x84, 0xf6, 0x25, 0x00, 0x00, //0x00001705 je LBB0_708 + 0x48, 0x85, 0xd2, //0x0000170b testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x1d, 0xaa, 0xea, 0xff, 0xff, //0x0000170e vmovdqu $-5462(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x84, 0xe5, 0x25, 0x00, 0x00, //0x00001716 je LBB0_708 + 0x4d, 0x85, 0xed, //0x0000171c testq %r13, %r13 + 0x0f, 0x84, 0xdc, 0x25, 0x00, 0x00, //0x0000171f je LBB0_708 + 0x4d, 0x29, 0xc2, //0x00001725 subq %r8, %r10 + 0x49, 0x8d, 0x4a, 0xff, //0x00001728 leaq $-1(%r10), %rcx + 0x48, 0x39, 0xce, //0x0000172c cmpq %rcx, %rsi + 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, //0x0000172f je LBB0_291 + 0x48, 0x39, 0xca, //0x00001735 cmpq %rcx, %rdx + 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001738 je LBB0_291 + 0x49, 0x39, 0xcd, //0x0000173e cmpq %rcx, %r13 + 0x0f, 0x84, 0x6e, 0x00, 0x00, 0x00, //0x00001741 je LBB0_291 + 0x48, 0x85, 0xd2, //0x00001747 testq %rdx, %rdx + 0xc5, 0xfe, 0x6f, 0x2d, 0x6e, 0xe9, 0xff, 0xff, //0x0000174a vmovdqu $-5778(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x86, 0xe9, 0xff, 0xff, //0x00001752 vmovdqu $-5754(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x9e, 0xe9, 0xff, 0xff, //0x0000175a vmovdqu $-5730(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xb6, 0xe9, 0xff, 0xff, //0x00001762 vmovdqu $-5706(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000176a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x89, 0xea, 0xff, 0xff, //0x0000176f vmovdqu $-5495(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xa1, 0xea, 0xff, 0xff, //0x00001777 vmovdqu $-5471(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xb9, 0xea, 0xff, 0xff, //0x0000177f vmovdqu $-5447(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x51, 0xea, 0xff, 0xff, //0x00001787 vmovdqu $-5551(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x09, 0xeb, 0xff, 0xff, //0x0000178f vmovdqu $-5367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0x0f, 0x8e, 0xa5, 0x00, 0x00, 0x00, //0x00001797 jle LBB0_297 + 0x48, 0x8d, 0x4a, 0xff, //0x0000179d leaq $-1(%rdx), %rcx + 0x49, 0x39, 0xcd, //0x000017a1 cmpq %rcx, %r13 + 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000017a4 je LBB0_297 + 0x48, 0xf7, 0xd2, //0x000017aa notq %rdx + 0x49, 0x89, 0xd2, //0x000017ad movq %rdx, %r10 + 0xe9, 0x50, 0x00, 0x00, 0x00, //0x000017b0 jmp LBB0_292 + //0x000017b5 LBB0_291 + 0x49, 0xf7, 0xda, //0x000017b5 negq %r10 + 0xc5, 0xfe, 0x6f, 0x2d, 0x00, 0xe9, 0xff, 0xff, //0x000017b8 vmovdqu $-5888(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x18, 0xe9, 0xff, 0xff, //0x000017c0 vmovdqu $-5864(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x30, 0xe9, 0xff, 0xff, //0x000017c8 vmovdqu $-5840(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x48, 0xe9, 0xff, 0xff, //0x000017d0 vmovdqu $-5816(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000017d8 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x1b, 0xea, 0xff, 0xff, //0x000017dd vmovdqu $-5605(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x33, 0xea, 0xff, 0xff, //0x000017e5 vmovdqu $-5581(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x4b, 0xea, 0xff, 0xff, //0x000017ed vmovdqu $-5557(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0xe3, 0xe9, 0xff, 0xff, //0x000017f5 vmovdqu $-5661(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x9b, 0xea, 0xff, 0xff, //0x000017fd vmovdqu $-5477(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + //0x00001805 LBB0_292 + 0xc5, 0x7e, 0x6f, 0x1d, 0x33, 0xe9, 0xff, 0xff, //0x00001805 vmovdqu $-5837(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x4b, 0xe9, 0xff, 0xff, //0x0000180d vmovdqu $-5813(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + //0x00001815 LBB0_293 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00001815 movq $16(%rsp), %r13 + //0x0000181a LBB0_294 + 0x4d, 0x85, 0xd2, //0x0000181a testq %r10, %r10 + 0x0f, 0x88, 0xdb, 0x24, 0x00, 0x00, //0x0000181d js LBB0_707 + 0x49, 0x8b, 0x0f, //0x00001823 movq (%r15), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x00001826 addq $-1, %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x0000182a vmovdqa %ymm0, %ymm13 + //0x0000182e LBB0_296 + 0x4c, 0x01, 0xd1, //0x0000182e addq %r10, %rcx + 0x49, 0x89, 0x0f, //0x00001831 movq %rcx, (%r15) + 0x4d, 0x85, 0xed, //0x00001834 testq %r13, %r13 + 0x0f, 0x8f, 0x63, 0xeb, 0xff, 0xff, //0x00001837 jg LBB0_3 + 0xe9, 0xd3, 0x24, 0x00, 0x00, //0x0000183d jmp LBB0_728 + //0x00001842 LBB0_297 + 0x48, 0x89, 0xf1, //0x00001842 movq %rsi, %rcx + 0x4c, 0x09, 0xe9, //0x00001845 orq %r13, %rcx + 0x0f, 0x99, 0xc1, //0x00001848 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0xed, 0xe8, 0xff, 0xff, //0x0000184b vmovdqu $-5907(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x05, 0xe9, 0xff, 0xff, //0x00001853 vmovdqu $-5883(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0x6d, 0x09, 0x00, 0x00, //0x0000185b js LBB0_395 + 0x4c, 0x39, 0xee, //0x00001861 cmpq %r13, %rsi + 0x0f, 0x8c, 0x64, 0x09, 0x00, 0x00, //0x00001864 jl LBB0_395 + 0x48, 0xf7, 0xd6, //0x0000186a notq %rsi + 0x49, 0x89, 0xf2, //0x0000186d movq %rsi, %r10 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x00001870 jmp LBB0_293 + //0x00001875 LBB0_300 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001875 movl $64, %edx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000187a movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x0000187e cmpq %rcx, %rdx + 0x0f, 0x82, 0xff, 0x25, 0x00, 0x00, //0x00001881 jb LBB0_162 + //0x00001887 LBB0_301 + 0x48, 0x01, 0xc8, //0x00001887 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000188a addq $1, %rax + //0x0000188e LBB0_302 + 0x48, 0x85, 0xc0, //0x0000188e testq %rax, %rax + 0x0f, 0x88, 0x2a, 0x24, 0x00, 0x00, //0x00001891 js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001897 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x0000189c movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x0000189f testq %r9, %r9 + 0x0f, 0x8e, 0x32, 0x24, 0x00, 0x00, //0x000018a2 jle LBB0_475 + //0x000018a8 LBB0_304 + 0x49, 0x8b, 0x0a, //0x000018a8 movq (%r10), %rcx + 0x48, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000018ab cmpq $4095, %rcx + 0x0f, 0x8f, 0xf1, 0x23, 0x00, 0x00, //0x000018b2 jg LBB0_724 + 0x48, 0x8d, 0x41, 0x01, //0x000018b8 leaq $1(%rcx), %rax + 0x49, 0x89, 0x02, //0x000018bc movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xca, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000018bf movq $4, $8(%r10,%rcx,8) + 0xe9, 0xd3, 0xea, 0xff, 0xff, //0x000018c8 jmp LBB0_3 + //0x000018cd LBB0_306 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x000018cd movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x51, 0x08, //0x000018d2 movq $8(%rcx), %r10 + 0x4d, 0x8b, 0x07, //0x000018d6 movq (%r15), %r8 + 0x4f, 0x8d, 0x0c, 0x06, //0x000018d9 leaq (%r14,%r8), %r9 + 0x4d, 0x29, 0xc2, //0x000018dd subq %r8, %r10 + 0x49, 0x83, 0xfa, 0x20, //0x000018e0 cmpq $32, %r10 + 0x0f, 0x8c, 0xac, 0x00, 0x00, 0x00, //0x000018e4 jl LBB0_316 + 0xba, 0x20, 0x00, 0x00, 0x00, //0x000018ea movl $32, %edx + 0x31, 0xf6, //0x000018ef xorl %esi, %esi + 0x45, 0x31, 0xff, //0x000018f1 xorl %r15d, %r15d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018f4 .p2align 4, 0x90 + //0x00001900 LBB0_308 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x31, //0x00001900 vmovdqu (%r9,%rsi), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00001906 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd9, //0x0000190a vpmovmskb %ymm1, %r11d + 0xc5, 0xfd, 0x74, 0xc7, //0x0000190e vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd8, //0x00001912 vpmovmskb %ymm0, %ebx + 0x85, 0xdb, //0x00001916 testl %ebx, %ebx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00001918 jne LBB0_311 + 0x4d, 0x85, 0xff, //0x0000191e testq %r15, %r15 + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00001921 jne LBB0_311 + 0x45, 0x31, 0xff, //0x00001927 xorl %r15d, %r15d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x0000192a jmp LBB0_312 + 0x90, //0x0000192f .p2align 4, 0x90 + //0x00001930 LBB0_311 + 0x44, 0x89, 0xf9, //0x00001930 movl %r15d, %ecx + 0xf7, 0xd1, //0x00001933 notl %ecx + 0x21, 0xd9, //0x00001935 andl %ebx, %ecx + 0x44, 0x8d, 0x2c, 0x09, //0x00001937 leal (%rcx,%rcx), %r13d + 0x45, 0x09, 0xfd, //0x0000193b orl %r15d, %r13d + 0x44, 0x89, 0xef, //0x0000193e movl %r13d, %edi + 0xf7, 0xd7, //0x00001941 notl %edi + 0x21, 0xdf, //0x00001943 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001945 andl $-1431655766, %edi + 0x45, 0x31, 0xff, //0x0000194b xorl %r15d, %r15d + 0x01, 0xcf, //0x0000194e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc7, //0x00001950 setb %r15b + 0x01, 0xff, //0x00001954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00001956 xorl $1431655765, %edi + 0x44, 0x21, 0xef, //0x0000195c andl %r13d, %edi + 0xf7, 0xd7, //0x0000195f notl %edi + 0x41, 0x21, 0xfb, //0x00001961 andl %edi, %r11d + //0x00001964 LBB0_312 + 0x4d, 0x85, 0xdb, //0x00001964 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0xf1, 0xff, 0xff, //0x00001967 jne LBB0_104 + 0x48, 0x83, 0xc6, 0x20, //0x0000196d addq $32, %rsi + 0x49, 0x8d, 0x0c, 0x12, //0x00001971 leaq (%r10,%rdx), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001975 addq $-32, %rcx + 0x48, 0x83, 0xc2, 0xe0, //0x00001979 addq $-32, %rdx + 0x48, 0x83, 0xf9, 0x3f, //0x0000197d cmpq $63, %rcx + 0x0f, 0x8f, 0x79, 0xff, 0xff, 0xff, //0x00001981 jg LBB0_308 + 0x4d, 0x85, 0xff, //0x00001987 testq %r15, %r15 + 0x0f, 0x85, 0xad, 0x1e, 0x00, 0x00, //0x0000198a jne LBB0_645 + 0x49, 0x01, 0xf1, //0x00001990 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00001993 subq %rsi, %r10 + //0x00001996 LBB0_316 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001996 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000199b movq (%rsp), %r11 + 0x4d, 0x85, 0xd2, //0x0000199f testq %r10, %r10 + 0x0f, 0x8f, 0x07, 0x1f, 0x00, 0x00, //0x000019a2 jg LBB0_649 + 0xe9, 0x68, 0x23, 0x00, 0x00, //0x000019a8 jmp LBB0_728 + //0x000019ad LBB0_317 + 0x4c, 0x89, 0xde, //0x000019ad movq %r11, %rsi + 0x48, 0x29, 0xc6, //0x000019b0 subq %rax, %rsi + 0x48, 0x83, 0xfe, 0x20, //0x000019b3 cmpq $32, %rsi + 0x0f, 0x82, 0xe8, 0x13, 0x00, 0x00, //0x000019b7 jb LBB0_539 + 0x48, 0x89, 0xc7, //0x000019bd movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x000019c0 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x000019c3 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x000019c7 leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x06, //0x000019cb leaq (%r14,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x000019cf addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x000019d3 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000019d6 .p2align 4, 0x90 + //0x000019e0 LBB0_319 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x1e, //0x000019e0 vmovdqu (%r14,%rbx), %ymm0 + 0xc5, 0xfd, 0x74, 0xcb, //0x000019e6 vpcmpeqb %ymm3, %ymm0, %ymm1 + 0xc5, 0x8d, 0xdb, 0xc0, //0x000019ea vpand %ymm0, %ymm14, %ymm0 + 0xc5, 0xfd, 0x74, 0x05, 0xaa, 0xe7, 0xff, 0xff, //0x000019ee vpcmpeqb $-6230(%rip), %ymm0, %ymm0 /* LCPI0_8+0(%rip) */ + 0xc5, 0xfd, 0xeb, 0xc1, //0x000019f6 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000019fa vpmovmskb %ymm0, %ecx + 0x85, 0xc9, //0x000019fe testl %ecx, %ecx + 0x0f, 0x85, 0x57, 0x07, 0x00, 0x00, //0x00001a00 jne LBB0_388 + 0x48, 0x83, 0xc3, 0x20, //0x00001a06 addq $32, %rbx + 0x49, 0x8d, 0x0c, 0x3b, //0x00001a0a leaq (%r11,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001a0e addq $-32, %rcx + 0x48, 0x83, 0xc7, 0xe0, //0x00001a12 addq $-32, %rdi + 0x49, 0x83, 0xc0, 0x20, //0x00001a16 addq $32, %r8 + 0x48, 0x83, 0xc2, 0x20, //0x00001a1a addq $32, %rdx + 0x48, 0x83, 0xc6, 0x20, //0x00001a1e addq $32, %rsi + 0x48, 0x83, 0xf9, 0x1f, //0x00001a22 cmpq $31, %rcx + 0x0f, 0x87, 0xb4, 0xff, 0xff, 0xff, //0x00001a26 ja LBB0_319 + 0x4d, 0x89, 0xf0, //0x00001a2c movq %r14, %r8 + 0x49, 0x29, 0xf8, //0x00001a2f subq %rdi, %r8 + 0x49, 0x01, 0xfb, //0x00001a32 addq %rdi, %r11 + 0x4c, 0x89, 0xde, //0x00001a35 movq %r11, %rsi + 0x48, 0x83, 0xfe, 0x10, //0x00001a38 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00001a3c movq (%rsp), %r11 + 0x0f, 0x82, 0x69, 0x00, 0x00, 0x00, //0x00001a40 jb LBB0_325 + //0x00001a46 LBB0_322 + 0x4d, 0x89, 0xf1, //0x00001a46 movq %r14, %r9 + 0x4d, 0x29, 0xc1, //0x00001a49 subq %r8, %r9 + 0x4c, 0x89, 0xc7, //0x00001a4c movq %r8, %rdi + 0x4c, 0x29, 0xf7, //0x00001a4f subq %r14, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00001a52 addq $1, %rdi + 0x49, 0x8d, 0x58, 0xff, //0x00001a56 leaq $-1(%r8), %rbx + 0x48, 0x89, 0xda, //0x00001a5a movq %rbx, %rdx + 0x4c, 0x29, 0xf2, //0x00001a5d subq %r14, %rdx + //0x00001a60 LBB0_323 + 0xc4, 0xc1, 0x7a, 0x6f, 0x00, //0x00001a60 vmovdqu (%r8), %xmm0 + 0xc5, 0xf9, 0x74, 0x0d, 0xa3, 0xe5, 0xff, 0xff, //0x00001a65 vpcmpeqb $-6749(%rip), %xmm0, %xmm1 /* LCPI0_11+0(%rip) */ + 0xc5, 0xf9, 0xdb, 0x05, 0xab, 0xe5, 0xff, 0xff, //0x00001a6d vpand $-6741(%rip), %xmm0, %xmm0 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xb3, 0xe5, 0xff, 0xff, //0x00001a75 vpcmpeqb $-6733(%rip), %xmm0, %xmm0 /* LCPI0_13+0(%rip) */ + 0xc5, 0xf9, 0xeb, 0xc1, //0x00001a7d vpor %xmm1, %xmm0, %xmm0 + 0xc5, 0xf9, 0xd7, 0xc8, //0x00001a81 vpmovmskb %xmm0, %ecx + 0x85, 0xc9, //0x00001a85 testl %ecx, %ecx + 0x0f, 0x85, 0xd9, 0x10, 0x00, 0x00, //0x00001a87 jne LBB0_515 + 0x49, 0x83, 0xc0, 0x10, //0x00001a8d addq $16, %r8 + 0x48, 0x83, 0xc6, 0xf0, //0x00001a91 addq $-16, %rsi + 0x49, 0x83, 0xc1, 0xf0, //0x00001a95 addq $-16, %r9 + 0x48, 0x83, 0xc7, 0x10, //0x00001a99 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001a9d addq $16, %rdx + 0x48, 0x83, 0xc3, 0x10, //0x00001aa1 addq $16, %rbx + 0x48, 0x83, 0xfe, 0x0f, //0x00001aa5 cmpq $15, %rsi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00001aa9 ja LBB0_323 + //0x00001aaf LBB0_325 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00001aaf vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00001ab3 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001ab7 vmovdqa %ymm13, %ymm11 + 0x48, 0x85, 0xf6, //0x00001abc testq %rsi, %rsi + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00001abf je LBB0_333 + 0x49, 0x8d, 0x0c, 0x30, //0x00001ac5 leaq (%r8,%rsi), %rcx + //0x00001ac9 LBB0_327 + 0x41, 0x0f, 0xb6, 0x10, //0x00001ac9 movzbl (%r8), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00001acd cmpq $44, %rdx + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x00001ad1 ja LBB0_329 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00001ad7 movabsq $17596481021440, %rdi + 0x48, 0x0f, 0xa3, 0xd7, //0x00001ae1 btq %rdx, %rdi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00001ae5 jb LBB0_333 + //0x00001aeb LBB0_329 + 0x80, 0xfa, 0x5d, //0x00001aeb cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00001aee je LBB0_333 + 0x80, 0xfa, 0x7d, //0x00001af4 cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001af7 je LBB0_333 + 0x49, 0x83, 0xc0, 0x01, //0x00001afd addq $1, %r8 + 0x48, 0x83, 0xc6, 0xff, //0x00001b01 addq $-1, %rsi + 0x0f, 0x85, 0xbe, 0xff, 0xff, 0xff, //0x00001b05 jne LBB0_327 + 0x49, 0x89, 0xc8, //0x00001b0b movq %rcx, %r8 + //0x00001b0e LBB0_333 + 0x4d, 0x29, 0xf0, //0x00001b0e subq %r14, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001b11 movq $8(%rsp), %r15 + 0x4d, 0x89, 0x07, //0x00001b16 movq %r8, (%r15) + 0x4c, 0x8b, 0x1c, 0x24, //0x00001b19 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001b1d vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001b22 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x71, 0xe7, 0xff, 0xff, //0x00001b27 vmovdqu $-6287(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x89, 0xe6, 0xff, 0xff, //0x00001b2f vmovdqu $-6519(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00001b37 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00001b3b vmovdqa %ymm1, %ymm12 + 0xe9, 0x7c, 0x06, 0x00, 0x00, //0x00001b3f jmp LBB0_393 + //0x00001b44 LBB0_334 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001b44 movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001b49 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001b4d movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001b50 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001b53 addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001b56 xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001b59 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001b5c xorl %r15d, %r15d + 0x31, 0xdb, //0x00001b5f xorl %ebx, %ebx + 0x49, 0x83, 0xf9, 0x40, //0x00001b61 cmpq $64, %r9 + 0x0f, 0x8d, 0x57, 0x01, 0x00, 0x00, //0x00001b65 jge LBB0_335 + //0x00001b6b LBB0_344 + 0x4d, 0x85, 0xc9, //0x00001b6b testq %r9, %r9 + 0x0f, 0x8e, 0x24, 0x23, 0x00, 0x00, //0x00001b6e jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001b74 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001b78 vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001b7d vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001b81 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001b87 vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001b8d movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001b90 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001b96 cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001b9c jb LBB0_348 + 0x49, 0x83, 0xf9, 0x20, //0x00001ba2 cmpq $32, %r9 + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001ba6 jb LBB0_349 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001bac vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001bb1 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x00001bb7 addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00001bbb leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001bbf leaq $96(%rsp), %rsi + 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x00001bc4 jmp LBB0_350 + //0x00001bc9 LBB0_348 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001bc9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001bce vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xc5, 0xe6, 0xff, 0xff, //0x00001bd3 vmovdqu $-6459(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xdd, 0xe5, 0xff, 0xff, //0x00001bdb vmovdqu $-6691(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001be3 vmovdqa %ymm1, %ymm11 + 0xe9, 0xd6, 0x00, 0x00, 0x00, //0x00001be7 jmp LBB0_335 + //0x00001bec LBB0_349 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001bec leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x00001bf1 movq %r9, %rdi + //0x00001bf4 LBB0_350 + 0x48, 0x83, 0xff, 0x10, //0x00001bf4 cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001bf8 jb LBB0_351 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001bfe vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x00001c03 vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00001c07 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00001c0b addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00001c0f addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00001c13 cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001c17 jae LBB0_358 + //0x00001c1d LBB0_352 + 0x48, 0x83, 0xff, 0x04, //0x00001c1d cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001c21 jl LBB0_353 + //0x00001c27 LBB0_359 + 0x41, 0x8b, 0x0e, //0x00001c27 movl (%r14), %ecx + 0x89, 0x0e, //0x00001c2a movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00001c2c addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x00001c30 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00001c34 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00001c38 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001c3c jae LBB0_354 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001c42 jmp LBB0_355 + //0x00001c47 LBB0_351 + 0x48, 0x83, 0xff, 0x08, //0x00001c47 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001c4b jb LBB0_352 + //0x00001c51 LBB0_358 + 0x49, 0x8b, 0x0e, //0x00001c51 movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x00001c54 movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x00001c57 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x00001c5b addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x00001c5f addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00001c63 cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001c67 jge LBB0_359 + //0x00001c6d LBB0_353 + 0x48, 0x83, 0xff, 0x02, //0x00001c6d cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001c71 jb LBB0_355 + //0x00001c77 LBB0_354 + 0x41, 0x0f, 0xb7, 0x0e, //0x00001c77 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x00001c7b movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x00001c7e addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x00001c82 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x00001c86 addq $-2, %rdi + //0x00001c8a LBB0_355 + 0x4c, 0x89, 0xf2, //0x00001c8a movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001c8d leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x00001c92 testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001c95 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001c9a vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf9, 0xe5, 0xff, 0xff, //0x00001c9f vmovdqu $-6663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x11, 0xe5, 0xff, 0xff, //0x00001ca7 vmovdqu $-6895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00001caf vmovdqa %ymm1, %ymm11 + 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x00001cb3 je LBB0_335 + 0x8a, 0x0a, //0x00001cb9 movb (%rdx), %cl + 0x88, 0x0e, //0x00001cbb movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001cbd leaq $64(%rsp), %r14 + //0x00001cc2 LBB0_335 + 0xc4, 0x41, 0x7d, 0x6f, 0xfd, //0x00001cc2 vmovdqa %ymm13, %ymm15 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001cc7 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001ccc vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001cd2 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001cd6 vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001cda vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001cde vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001ce2 shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001ce6 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001ce9 movq %rdx, %rcx + 0xc4, 0x41, 0x7d, 0x6f, 0xea, //0x00001cec vmovdqa %ymm10, %ymm13 + 0x4c, 0x09, 0xd1, //0x00001cf1 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001cf4 jne LBB0_337 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001cfa movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001d01 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001d04 jmp LBB0_338 + //0x00001d09 LBB0_337 + 0x4c, 0x89, 0xd1, //0x00001d09 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001d0c notq %rcx + 0x48, 0x21, 0xd1, //0x00001d0f andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001d12 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001d16 orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001d19 movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001d1c notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d1f movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001d29 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001d2c andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001d2f xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001d32 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001d35 setb %r10b + 0x48, 0x01, 0xd2, //0x00001d39 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001d3c movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001d46 xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001d49 andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001d4c notq %rdx + //0x00001d4f LBB0_338 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001d4f vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d53 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d57 shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001d5b vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d5f vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001d63 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001d66 andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001d69 vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x28, 0xe3, 0xff, 0xff, 0x00, //0x00001d6e vpclmulqdq $0, $-7384(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001d78 vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001d7d xorq %r11, %r13 + 0xc5, 0x7e, 0x6f, 0x15, 0xf8, 0xe3, 0xff, 0xff, //0x00001d80 vmovdqu $-7176(%rip), %ymm10 /* LCPI0_7+0(%rip) */ + 0xc5, 0xad, 0x74, 0xd1, //0x00001d88 vpcmpeqb %ymm1, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001d8c vpmovmskb %ymm2, %esi + 0xc5, 0xad, 0x74, 0xd0, //0x00001d90 vpcmpeqb %ymm0, %ymm10, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001d94 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001d98 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001d9c orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001d9f movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001da2 notq %rcx + 0x48, 0x21, 0xce, //0x00001da5 andq %rcx, %rsi + 0xc5, 0xfe, 0x6f, 0x15, 0xf0, 0xe3, 0xff, 0xff, //0x00001da8 vmovdqu $-7184(%rip), %ymm2 /* LCPI0_8+0(%rip) */ + 0xc5, 0xf5, 0x74, 0xca, //0x00001db0 vpcmpeqb %ymm2, %ymm1, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001db4 vpmovmskb %ymm1, %edi + 0xc5, 0xfd, 0x74, 0xc2, //0x00001db8 vpcmpeqb %ymm2, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001dbc vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001dc0 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001dc4 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001dc7 andq %rcx, %rdi + 0x0f, 0x84, 0x4d, 0x00, 0x00, 0x00, //0x00001dca je LBB0_342 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001dd0 movq (%rsp), %r11 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001dd4 vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001dd9 vmovdqa %ymm15, %ymm13 + 0xc5, 0x7e, 0x6f, 0x3d, 0x5a, 0xe4, 0xff, 0xff, //0x00001dde vmovdqu $-7078(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001de6 .p2align 4, 0x90 + //0x00001df0 LBB0_340 + 0x48, 0x8d, 0x4f, 0xff, //0x00001df0 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001df4 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001df7 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001dfa popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001dff addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001e02 cmpq %rbx, %rdx + 0x0f, 0x86, 0x1a, 0x03, 0x00, 0x00, //0x00001e05 jbe LBB0_386 0x48, 0x83, 0xc3, 0x01, //0x00001e0b addq $1, %rbx - 0x48, 0x21, 0xca, //0x00001e0f andq %rcx, %rdx - 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_362 - 0xe9, 0xb8, 0xfe, 0xff, 0xff, //0x00001e18 jmp LBB0_356 - //0x00001e1d LBB0_364 - 0x4d, 0x85, 0xc9, //0x00001e1d testq %r9, %r9 - 0x0f, 0x8e, 0x57, 0x1f, 0x00, 0x00, //0x00001e20 jle LBB0_720 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00001e26 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00001e2a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001e2e vmovdqa %ymm13, %ymm11 - 0xc5, 0xf9, 0xef, 0xc0, //0x00001e33 vpxor %xmm0, %xmm0, %xmm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001e37 vmovdqu %ymm0, $96(%rsp) - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e3d vmovdqu %ymm0, $64(%rsp) - 0x44, 0x89, 0xf0, //0x00001e43 movl %r14d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001e46 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001e4b cmpl $4033, %eax - 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001e50 jb LBB0_368 - 0x49, 0x83, 0xf9, 0x20, //0x00001e56 cmpq $32, %r9 - 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001e5a jb LBB0_369 - 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00001e60 vmovdqu (%r14), %ymm0 - 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001e65 vmovdqu %ymm0, $64(%rsp) - 0x49, 0x83, 0xc6, 0x20, //0x00001e6b addq $32, %r14 - 0x49, 0x8d, 0x79, 0xe0, //0x00001e6f leaq $-32(%r9), %rdi - 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00001e73 leaq $96(%rsp), %rsi - 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00001e78 jmp LBB0_370 - //0x00001e7d LBB0_368 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001e7d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001e82 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x11, 0xe4, 0xff, 0xff, //0x00001e87 vmovdqu $-7151(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x29, 0xe3, 0xff, 0xff, //0x00001e8f vmovdqu $-7383(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001e97 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001e9b vmovdqa %ymm2, %ymm12 - 0xe9, 0x52, 0xfe, 0xff, 0xff, //0x00001e9f jmp LBB0_358 - //0x00001ea4 LBB0_369 - 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00001ea4 leaq $64(%rsp), %rsi - 0x4c, 0x89, 0xcf, //0x00001ea9 movq %r9, %rdi - //0x00001eac LBB0_370 - 0x48, 0x83, 0xff, 0x10, //0x00001eac cmpq $16, %rdi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00001eb0 jb LBB0_371 - 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00001eb6 vmovdqu (%r14), %xmm0 - 0xc5, 0xfa, 0x7f, 0x06, //0x00001ebb vmovdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc6, 0x10, //0x00001ebf addq $16, %r14 - 0x48, 0x83, 0xc6, 0x10, //0x00001ec3 addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00001ec7 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00001ecb cmpq $8, %rdi - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001ecf jae LBB0_378 - //0x00001ed5 LBB0_372 - 0x48, 0x83, 0xff, 0x04, //0x00001ed5 cmpq $4, %rdi - 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00001ed9 jl LBB0_373 - //0x00001edf LBB0_379 - 0x41, 0x8b, 0x06, //0x00001edf movl (%r14), %eax - 0x89, 0x06, //0x00001ee2 movl %eax, (%rsi) - 0x49, 0x83, 0xc6, 0x04, //0x00001ee4 addq $4, %r14 - 0x48, 0x83, 0xc6, 0x04, //0x00001ee8 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00001eec addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00001ef0 cmpq $2, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001ef4 jae LBB0_374 - 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00001efa jmp LBB0_375 - //0x00001eff LBB0_371 - 0x48, 0x83, 0xff, 0x08, //0x00001eff cmpq $8, %rdi - 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00001f03 jb LBB0_372 - //0x00001f09 LBB0_378 - 0x49, 0x8b, 0x06, //0x00001f09 movq (%r14), %rax - 0x48, 0x89, 0x06, //0x00001f0c movq %rax, (%rsi) - 0x49, 0x83, 0xc6, 0x08, //0x00001f0f addq $8, %r14 - 0x48, 0x83, 0xc6, 0x08, //0x00001f13 addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00001f17 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00001f1b cmpq $4, %rdi - 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00001f1f jge LBB0_379 - //0x00001f25 LBB0_373 - 0x48, 0x83, 0xff, 0x02, //0x00001f25 cmpq $2, %rdi - 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00001f29 jb LBB0_375 - //0x00001f2f LBB0_374 - 0x41, 0x0f, 0xb7, 0x06, //0x00001f2f movzwl (%r14), %eax - 0x66, 0x89, 0x06, //0x00001f33 movw %ax, (%rsi) - 0x49, 0x83, 0xc6, 0x02, //0x00001f36 addq $2, %r14 - 0x48, 0x83, 0xc6, 0x02, //0x00001f3a addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00001f3e addq $-2, %rdi - //0x00001f42 LBB0_375 - 0x4c, 0x89, 0xf2, //0x00001f42 movq %r14, %rdx - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f45 leaq $64(%rsp), %r14 - 0x48, 0x85, 0xff, //0x00001f4a testq %rdi, %rdi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00001f4d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00001f52 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x41, 0xe3, 0xff, 0xff, //0x00001f57 vmovdqu $-7359(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x59, 0xe2, 0xff, 0xff, //0x00001f5f vmovdqu $-7591(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00001f67 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00001f6b vmovdqa %ymm2, %ymm12 - 0x0f, 0x84, 0x81, 0xfd, 0xff, 0xff, //0x00001f6f je LBB0_358 - 0x8a, 0x02, //0x00001f75 movb (%rdx), %al - 0x88, 0x06, //0x00001f77 movb %al, (%rsi) - 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x00001f79 leaq $64(%rsp), %r14 - 0xe9, 0x73, 0xfd, 0xff, 0xff, //0x00001f7e jmp LBB0_358 - //0x00001f83 LBB0_380 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00001f83 movq $16(%rsp), %rdi - 0x48, 0x8b, 0x47, 0x08, //0x00001f88 movq $8(%rdi), %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00001f8c bsfq %rdx, %rcx - 0x4c, 0x29, 0xc9, //0x00001f90 subq %r9, %rcx - 0x48, 0x01, 0xc8, //0x00001f93 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001f96 addq $1, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001f9a movq %rax, (%r13) - 0x48, 0x8b, 0x4f, 0x08, //0x00001f9e movq $8(%rdi), %rcx - 0x48, 0x39, 0xc8, //0x00001fa2 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x00001fa5 cmovaq %rcx, %rax - 0x49, 0x89, 0x45, 0x00, //0x00001fa9 movq %rax, (%r13) - 0x0f, 0x87, 0xe2, 0x1b, 0x00, 0x00, //0x00001fad ja LBB0_711 - 0x4d, 0x85, 0xc0, //0x00001fb3 testq %r8, %r8 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00001fb6 movq $24(%rsp), %r11 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00001fbb movq $8(%rsp), %r15 - 0x0f, 0x8f, 0xda, 0xe3, 0xff, 0xff, //0x00001fc0 jg LBB0_3 - 0xe9, 0x61, 0x1b, 0x00, 0x00, //0x00001fc6 jmp LBB0_679 - //0x00001fcb LBB0_382 - 0x0f, 0xbc, 0xce, //0x00001fcb bsfl %esi, %ecx - 0x48, 0x29, 0xd1, //0x00001fce subq %rdx, %rcx - //0x00001fd1 LBB0_383 - 0x48, 0x8b, 0x1c, 0x24, //0x00001fd1 movq (%rsp), %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00001fd5 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00001fd9 testq %rbx, %rbx - 0x0f, 0x8f, 0xbe, 0xe3, 0xff, 0xff, //0x00001fdc jg LBB0_3 - 0xe9, 0xea, 0x1c, 0x00, 0x00, //0x00001fe2 jmp LBB0_698 - //0x00001fe7 LBB0_384 - 0x49, 0x8d, 0x41, 0xff, //0x00001fe7 leaq $-1(%r9), %rax - 0x48, 0x39, 0xc2, //0x00001feb cmpq %rax, %rdx - 0x49, 0xf7, 0xd1, //0x00001fee notq %r9 - 0x4d, 0x0f, 0x45, 0xcd, //0x00001ff1 cmovneq %r13, %r9 - 0x84, 0xc9, //0x00001ff5 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xe9, //0x00001ff7 cmovneq %r9, %r13 - 0xe9, 0x21, 0xf7, 0xff, 0xff, //0x00001ffb jmp LBB0_290 - //0x00002000 LBB0_385 - 0x4d, 0x29, 0xc8, //0x00002000 subq %r9, %r8 - 0x0f, 0x84, 0x5a, 0x1d, 0x00, 0x00, //0x00002003 je LBB0_718 - 0x49, 0x83, 0xf8, 0x40, //0x00002009 cmpq $64, %r8 - 0x0f, 0x82, 0xdb, 0x0b, 0x00, 0x00, //0x0000200d jb LBB0_518 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002013 movq $-1, %r10 - 0x4c, 0x89, 0xc9, //0x0000201a movq %r9, %rcx - 0x45, 0x31, 0xdb, //0x0000201d xorl %r11d, %r11d - //0x00002020 .p2align 4, 0x90 - //0x00002020 LBB0_388 - 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x0e, //0x00002020 vmovdqu (%r14,%rcx), %ymm0 - 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x0e, 0x20, //0x00002026 vmovdqu $32(%r14,%rcx), %ymm1 - 0xc5, 0xfd, 0x74, 0xd6, //0x0000202d vpcmpeqb %ymm6, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xfa, //0x00002031 vpmovmskb %ymm2, %edi - 0xc5, 0xf5, 0x74, 0xd6, //0x00002035 vpcmpeqb %ymm6, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xc2, //0x00002039 vpmovmskb %ymm2, %eax - 0xc5, 0xfd, 0x74, 0xd7, //0x0000203d vpcmpeqb %ymm7, %ymm0, %ymm2 - 0xc5, 0xfd, 0xd7, 0xd2, //0x00002041 vpmovmskb %ymm2, %edx - 0xc5, 0xf5, 0x74, 0xd7, //0x00002045 vpcmpeqb %ymm7, %ymm1, %ymm2 - 0xc5, 0xfd, 0xd7, 0xda, //0x00002049 vpmovmskb %ymm2, %ebx - 0xc5, 0xbd, 0x64, 0xd1, //0x0000204d vpcmpgtb %ymm1, %ymm8, %ymm2 - 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002051 vpcmpgtb %ymm9, %ymm1, %ymm1 - 0xc5, 0xed, 0xdb, 0xc9, //0x00002056 vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000205a vpmovmskb %ymm1, %esi - 0x48, 0xc1, 0xe0, 0x20, //0x0000205e shlq $32, %rax - 0x48, 0x09, 0xc7, //0x00002062 orq %rax, %rdi - 0x48, 0xc1, 0xe3, 0x20, //0x00002065 shlq $32, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00002069 shlq $32, %rsi - 0x48, 0x09, 0xda, //0x0000206d orq %rbx, %rdx - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002070 jne LBB0_399 - 0x4d, 0x85, 0xdb, //0x00002076 testq %r11, %r11 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002079 jne LBB0_401 - 0x45, 0x31, 0xdb, //0x0000207f xorl %r11d, %r11d - //0x00002082 LBB0_391 - 0xc5, 0xbd, 0x64, 0xc8, //0x00002082 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002086 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x0000208b vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x0000208f vpmovmskb %ymm0, %eax - 0x48, 0x09, 0xc6, //0x00002093 orq %rax, %rsi - 0x48, 0x85, 0xff, //0x00002096 testq %rdi, %rdi - 0x0f, 0x85, 0x87, 0x00, 0x00, 0x00, //0x00002099 jne LBB0_402 - 0x48, 0x85, 0xf6, //0x0000209f testq %rsi, %rsi - 0x0f, 0x85, 0x7c, 0x1c, 0x00, 0x00, //0x000020a2 jne LBB0_712 - 0x49, 0x83, 0xc0, 0xc0, //0x000020a8 addq $-64, %r8 - 0x48, 0x83, 0xc1, 0x40, //0x000020ac addq $64, %rcx - 0x49, 0x83, 0xf8, 0x3f, //0x000020b0 cmpq $63, %r8 - 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000020b4 ja LBB0_388 - 0xe9, 0x39, 0x09, 0x00, 0x00, //0x000020ba jmp LBB0_394 - //0x000020bf LBB0_399 - 0x49, 0x83, 0xfa, 0xff, //0x000020bf cmpq $-1, %r10 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000020c3 jne LBB0_401 - 0x4c, 0x0f, 0xbc, 0xd2, //0x000020c9 bsfq %rdx, %r10 - 0x49, 0x01, 0xca, //0x000020cd addq %rcx, %r10 - //0x000020d0 LBB0_401 - 0x4c, 0x89, 0xd8, //0x000020d0 movq %r11, %rax - 0x48, 0xf7, 0xd0, //0x000020d3 notq %rax - 0x48, 0x21, 0xd0, //0x000020d6 andq %rdx, %rax - 0x48, 0x89, 0x0c, 0x24, //0x000020d9 movq %rcx, (%rsp) - 0x48, 0x8d, 0x0c, 0x00, //0x000020dd leaq (%rax,%rax), %rcx - 0x4c, 0x09, 0xd9, //0x000020e1 orq %r11, %rcx - 0x48, 0x89, 0xcb, //0x000020e4 movq %rcx, %rbx - 0x48, 0xf7, 0xd3, //0x000020e7 notq %rbx - 0x48, 0x21, 0xd3, //0x000020ea andq %rdx, %rbx - 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020ed movabsq $-6148914691236517206, %rdx - 0x48, 0x21, 0xd3, //0x000020f7 andq %rdx, %rbx - 0x45, 0x31, 0xdb, //0x000020fa xorl %r11d, %r11d - 0x48, 0x01, 0xc3, //0x000020fd addq %rax, %rbx - 0x41, 0x0f, 0x92, 0xc3, //0x00002100 setb %r11b - 0x48, 0x01, 0xdb, //0x00002104 addq %rbx, %rbx - 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002107 movabsq $6148914691236517205, %rax - 0x48, 0x31, 0xc3, //0x00002111 xorq %rax, %rbx - 0x48, 0x21, 0xcb, //0x00002114 andq %rcx, %rbx - 0x48, 0x8b, 0x0c, 0x24, //0x00002117 movq (%rsp), %rcx - 0x48, 0xf7, 0xd3, //0x0000211b notq %rbx - 0x48, 0x21, 0xdf, //0x0000211e andq %rbx, %rdi - 0xe9, 0x5c, 0xff, 0xff, 0xff, //0x00002121 jmp LBB0_391 - //0x00002126 LBB0_402 - 0x48, 0x0f, 0xbc, 0xc7, //0x00002126 bsfq %rdi, %rax - 0x48, 0x85, 0xf6, //0x0000212a testq %rsi, %rsi - 0x0f, 0x84, 0x9f, 0x03, 0x00, 0x00, //0x0000212d je LBB0_458 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002133 bsfq %rsi, %rdx - 0xe9, 0x9b, 0x03, 0x00, 0x00, //0x00002137 jmp LBB0_459 - //0x0000213c LBB0_404 - 0x48, 0x8b, 0x44, 0x24, 0x38, //0x0000213c movq $56(%rsp), %rax - 0x8a, 0x48, 0x01, //0x00002141 movb $1(%rax), %cl - 0x80, 0xc1, 0xd2, //0x00002144 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00002147 cmpb $55, %cl - 0x0f, 0x87, 0x80, 0xf3, 0xff, 0xff, //0x0000214a ja LBB0_257 - 0x0f, 0xb6, 0xc1, //0x00002150 movzbl %cl, %eax - 0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002153 movabsq $36028797027352577, %rcx - 0x48, 0x0f, 0xa3, 0xc1, //0x0000215d btq %rax, %rcx - 0x48, 0x8b, 0x0c, 0x24, //0x00002161 movq (%rsp), %rcx - 0x0f, 0x83, 0x1e, 0x08, 0x00, 0x00, //0x00002165 jae LBB0_498 - //0x0000216b LBB0_406 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000216b movq $-1, %r8 - 0x49, 0x83, 0xfa, 0x20, //0x00002172 cmpq $32, %r10 - 0x0f, 0x82, 0x1c, 0x0a, 0x00, 0x00, //0x00002176 jb LBB0_515 - 0x45, 0x31, 0xc9, //0x0000217c xorl %r9d, %r9d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000217f movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002186 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x0000218f movq $56(%rsp), %r11 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002194 .p2align 4, 0x90 - //0x000021a0 LBB0_408 - 0xc4, 0x81, 0x7e, 0x6f, 0x04, 0x0b, //0x000021a0 vmovdqu (%r11,%r9), %ymm0 - 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x000021a6 vpcmpgtb %ymm10, %ymm0, %ymm1 - 0xc5, 0x95, 0x64, 0xd0, //0x000021ab vpcmpgtb %ymm0, %ymm13, %ymm2 - 0xc5, 0xed, 0xdb, 0xc9, //0x000021af vpand %ymm1, %ymm2, %ymm1 - 0xc5, 0x85, 0x74, 0xd0, //0x000021b3 vpcmpeqb %ymm0, %ymm15, %ymm2 - 0xc5, 0xfd, 0x74, 0x1d, 0xa1, 0xe0, 0xff, 0xff, //0x000021b7 vpcmpeqb $-8031(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ - 0xc5, 0xe5, 0xeb, 0xd2, //0x000021bf vpor %ymm2, %ymm3, %ymm2 - 0xc5, 0x8d, 0xdb, 0xd8, //0x000021c3 vpand %ymm0, %ymm14, %ymm3 - 0xc5, 0xfd, 0x74, 0x05, 0xb1, 0xe0, 0xff, 0xff, //0x000021c7 vpcmpeqb $-8015(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ - 0xc5, 0xfd, 0xd7, 0xd0, //0x000021cf vpmovmskb %ymm0, %edx - 0xc5, 0xe5, 0x74, 0xdc, //0x000021d3 vpcmpeqb %ymm4, %ymm3, %ymm3 - 0xc5, 0xfd, 0xd7, 0xfb, //0x000021d7 vpmovmskb %ymm3, %edi - 0xc5, 0xfd, 0xd7, 0xf2, //0x000021db vpmovmskb %ymm2, %esi - 0xc5, 0xf5, 0xeb, 0xc0, //0x000021df vpor %ymm0, %ymm1, %ymm0 - 0xc5, 0xe5, 0xeb, 0xca, //0x000021e3 vpor %ymm2, %ymm3, %ymm1 - 0xc5, 0xfd, 0xeb, 0xc1, //0x000021e7 vpor %ymm1, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xc0, //0x000021eb vpmovmskb %ymm0, %eax - 0x48, 0xf7, 0xd0, //0x000021ef notq %rax - 0x48, 0x0f, 0xbc, 0xc8, //0x000021f2 bsfq %rax, %rcx - 0x83, 0xf9, 0x20, //0x000021f6 cmpl $32, %ecx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000021f9 je LBB0_410 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000021ff movl $-1, %eax - 0xd3, 0xe0, //0x00002204 shll %cl, %eax - 0xf7, 0xd0, //0x00002206 notl %eax - 0x21, 0xc2, //0x00002208 andl %eax, %edx - 0x21, 0xc7, //0x0000220a andl %eax, %edi - 0x21, 0xf0, //0x0000220c andl %esi, %eax - 0x89, 0xc6, //0x0000220e movl %eax, %esi - //0x00002210 LBB0_410 - 0x8d, 0x5a, 0xff, //0x00002210 leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x00002213 andl %edx, %ebx - 0xc5, 0xfe, 0x6f, 0x1d, 0xa3, 0xdf, 0xff, 0xff, //0x00002215 vmovdqu $-8285(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x85, 0x12, 0x07, 0x00, 0x00, //0x0000221d jne LBB0_492 - 0x8d, 0x5f, 0xff, //0x00002223 leal $-1(%rdi), %ebx - 0x21, 0xfb, //0x00002226 andl %edi, %ebx - 0x0f, 0x85, 0x07, 0x07, 0x00, 0x00, //0x00002228 jne LBB0_492 - 0x8d, 0x5e, 0xff, //0x0000222e leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00002231 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x06, 0x00, 0x00, //0x00002233 jne LBB0_492 - 0x85, 0xd2, //0x00002239 testl %edx, %edx - 0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x0000223b je LBB0_416 - 0x0f, 0xbc, 0xd2, //0x00002241 bsfl %edx, %edx - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x00002244 cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x0000224a jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002250 addq %r9, %rdx - 0x48, 0x89, 0x54, 0x24, 0x28, //0x00002253 movq %rdx, $40(%rsp) - //0x00002258 LBB0_416 - 0x85, 0xff, //0x00002258 testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000225a je LBB0_419 - 0x0f, 0xbc, 0xd7, //0x00002260 bsfl %edi, %edx - 0x49, 0x83, 0xff, 0xff, //0x00002263 cmpq $-1, %r15 - 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x00002267 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x0000226d addq %r9, %rdx - 0x49, 0x89, 0xd7, //0x00002270 movq %rdx, %r15 - //0x00002273 LBB0_419 - 0x85, 0xf6, //0x00002273 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002275 je LBB0_422 - 0x0f, 0xbc, 0xd6, //0x0000227b bsfl %esi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x0000227e cmpq $-1, %r8 - 0x0f, 0x85, 0xd5, 0x06, 0x00, 0x00, //0x00002282 jne LBB0_493 - 0x4c, 0x01, 0xca, //0x00002288 addq %r9, %rdx - 0x49, 0x89, 0xd0, //0x0000228b movq %rdx, %r8 - //0x0000228e LBB0_422 - 0x83, 0xf9, 0x20, //0x0000228e cmpl $32, %ecx - 0x0f, 0x85, 0xf9, 0x01, 0x00, 0x00, //0x00002291 jne LBB0_456 - 0x49, 0x83, 0xc2, 0xe0, //0x00002297 addq $-32, %r10 - 0x49, 0x83, 0xc1, 0x20, //0x0000229b addq $32, %r9 - 0x49, 0x83, 0xfa, 0x1f, //0x0000229f cmpq $31, %r10 - 0x0f, 0x87, 0xf7, 0xfe, 0xff, 0xff, //0x000022a3 ja LBB0_408 - 0xc5, 0xf8, 0x77, //0x000022a9 vzeroupper - 0x4d, 0x01, 0xd9, //0x000022ac addq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x000022af movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x000022b4 cmpq $16, %r10 - 0x0f, 0x82, 0x35, 0x01, 0x00, 0x00, //0x000022b8 jb LBB0_443 - //0x000022be LBB0_425 - 0x4c, 0x89, 0xcb, //0x000022be movq %r9, %rbx - 0x4c, 0x29, 0xdb, //0x000022c1 subq %r11, %rbx - 0x45, 0x31, 0xed, //0x000022c4 xorl %r13d, %r13d - //0x000022c7 LBB0_426 - 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x29, //0x000022c7 vmovdqu (%r9,%r13), %xmm0 - 0xc5, 0xf9, 0x64, 0x0d, 0x6b, 0xdd, 0xff, 0xff, //0x000022cd vpcmpgtb $-8853(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ - 0xc5, 0xfa, 0x6f, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022d5 vmovdqu $-8845(%rip), %xmm2 /* LCPI0_21+0(%rip) */ - 0xc5, 0xe9, 0x64, 0xd0, //0x000022dd vpcmpgtb %xmm0, %xmm2, %xmm2 - 0xc5, 0xf1, 0xdb, 0xca, //0x000022e1 vpand %xmm2, %xmm1, %xmm1 - 0xc5, 0xf9, 0x74, 0x15, 0x73, 0xdd, 0xff, 0xff, //0x000022e5 vpcmpeqb $-8845(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x1d, 0x7b, 0xdd, 0xff, 0xff, //0x000022ed vpcmpeqb $-8837(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xd2, //0x000022f5 vpor %xmm2, %xmm3, %xmm2 - 0xc5, 0xf9, 0xdb, 0x1d, 0x1f, 0xdd, 0xff, 0xff, //0x000022f9 vpand $-8929(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ - 0xc5, 0xf9, 0x74, 0x05, 0x77, 0xdd, 0xff, 0xff, //0x00002301 vpcmpeqb $-8841(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ - 0xc5, 0xe1, 0x74, 0x1d, 0x7f, 0xdd, 0xff, 0xff, //0x00002309 vpcmpeqb $-8833(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ - 0xc5, 0xe1, 0xeb, 0xe0, //0x00002311 vpor %xmm0, %xmm3, %xmm4 - 0xc5, 0xe9, 0xeb, 0xc9, //0x00002315 vpor %xmm1, %xmm2, %xmm1 - 0xc5, 0xd9, 0xeb, 0xc9, //0x00002319 vpor %xmm1, %xmm4, %xmm1 - 0xc5, 0x79, 0xd7, 0xd8, //0x0000231d vpmovmskb %xmm0, %r11d - 0xc5, 0xf9, 0xd7, 0xd3, //0x00002321 vpmovmskb %xmm3, %edx - 0xc5, 0xf9, 0xd7, 0xfa, //0x00002325 vpmovmskb %xmm2, %edi - 0xc5, 0xf9, 0xd7, 0xc1, //0x00002329 vpmovmskb %xmm1, %eax - 0xf7, 0xd0, //0x0000232d notl %eax - 0x0f, 0xbc, 0xc8, //0x0000232f bsfl %eax, %ecx - 0x83, 0xf9, 0x10, //0x00002332 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002335 je LBB0_428 - 0xb8, 0xff, 0xff, 0xff, 0xff, //0x0000233b movl $-1, %eax - 0xd3, 0xe0, //0x00002340 shll %cl, %eax - 0xf7, 0xd0, //0x00002342 notl %eax - 0x41, 0x21, 0xc3, //0x00002344 andl %eax, %r11d - 0x21, 0xc2, //0x00002347 andl %eax, %edx - 0x21, 0xf8, //0x00002349 andl %edi, %eax - 0x89, 0xc7, //0x0000234b movl %eax, %edi - //0x0000234d LBB0_428 - 0x41, 0x8d, 0x73, 0xff, //0x0000234d leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x00002351 andl %r11d, %esi - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x00002354 jne LBB0_499 - 0x8d, 0x72, 0xff, //0x0000235a leal $-1(%rdx), %esi - 0x21, 0xd6, //0x0000235d andl %edx, %esi - 0x0f, 0x85, 0xdd, 0x06, 0x00, 0x00, //0x0000235f jne LBB0_499 - 0x8d, 0x77, 0xff, //0x00002365 leal $-1(%rdi), %esi - 0x21, 0xfe, //0x00002368 andl %edi, %esi - 0x0f, 0x85, 0xd2, 0x06, 0x00, 0x00, //0x0000236a jne LBB0_499 - 0x45, 0x85, 0xdb, //0x00002370 testl %r11d, %r11d - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00002373 je LBB0_434 - 0x41, 0x0f, 0xbc, 0xf3, //0x00002379 bsfl %r11d, %esi - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000237d cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0x9d, 0x07, 0x00, 0x00, //0x00002383 jne LBB0_509 - 0x48, 0x01, 0xde, //0x00002389 addq %rbx, %rsi - 0x4c, 0x01, 0xee, //0x0000238c addq %r13, %rsi - 0x48, 0x89, 0x74, 0x24, 0x28, //0x0000238f movq %rsi, $40(%rsp) - //0x00002394 LBB0_434 - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002394 movq $56(%rsp), %r11 - 0x85, 0xd2, //0x00002399 testl %edx, %edx - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000239b je LBB0_437 - 0x0f, 0xbc, 0xd2, //0x000023a1 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000023a4 cmpq $-1, %r15 - 0x0f, 0x85, 0xe8, 0x06, 0x00, 0x00, //0x000023a8 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023ae addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023b1 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000023b4 movq %rdx, %r15 - //0x000023b7 LBB0_437 - 0x85, 0xff, //0x000023b7 testl %edi, %edi - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000023b9 je LBB0_440 - 0x0f, 0xbc, 0xd7, //0x000023bf bsfl %edi, %edx - 0x49, 0x83, 0xf8, 0xff, //0x000023c2 cmpq $-1, %r8 - 0x0f, 0x85, 0xca, 0x06, 0x00, 0x00, //0x000023c6 jne LBB0_503 - 0x48, 0x01, 0xda, //0x000023cc addq %rbx, %rdx - 0x4c, 0x01, 0xea, //0x000023cf addq %r13, %rdx - 0x49, 0x89, 0xd0, //0x000023d2 movq %rdx, %r8 - //0x000023d5 LBB0_440 - 0x83, 0xf9, 0x10, //0x000023d5 cmpl $16, %ecx - 0x0f, 0x85, 0x82, 0x01, 0x00, 0x00, //0x000023d8 jne LBB0_466 - 0x49, 0x83, 0xc2, 0xf0, //0x000023de addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000023e2 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000023e6 cmpq $15, %r10 - 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x000023ea ja LBB0_426 - 0x4d, 0x01, 0xe9, //0x000023f0 addq %r13, %r9 - //0x000023f3 LBB0_443 - 0x4d, 0x85, 0xd2, //0x000023f3 testq %r10, %r10 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000023f6 movq $48(%rsp), %r13 - 0x0f, 0x84, 0x89, 0x01, 0x00, 0x00, //0x000023fb je LBB0_468 - 0x4b, 0x8d, 0x34, 0x11, //0x00002401 leaq (%r9,%r10), %rsi - 0x4c, 0x89, 0xcf, //0x00002405 movq %r9, %rdi - 0x4c, 0x29, 0xdf, //0x00002408 subq %r11, %rdi - 0x31, 0xc9, //0x0000240b xorl %ecx, %ecx - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x0000240d jmp LBB0_448 - //0x00002412 LBB0_445 - 0x49, 0x83, 0xf8, 0xff, //0x00002412 cmpq $-1, %r8 - 0x0f, 0x85, 0x2e, 0x06, 0x00, 0x00, //0x00002416 jne LBB0_500 - 0x4c, 0x8d, 0x04, 0x0f, //0x0000241c leaq (%rdi,%rcx), %r8 - //0x00002420 .p2align 4, 0x90 - //0x00002420 LBB0_447 - 0x48, 0x83, 0xc1, 0x01, //0x00002420 addq $1, %rcx - 0x49, 0x39, 0xca, //0x00002424 cmpq %rcx, %r10 - 0x0f, 0x84, 0xeb, 0x04, 0x00, 0x00, //0x00002427 je LBB0_491 - //0x0000242d LBB0_448 - 0x41, 0x0f, 0xbe, 0x14, 0x09, //0x0000242d movsbl (%r9,%rcx), %edx - 0x8d, 0x42, 0xd0, //0x00002432 leal $-48(%rdx), %eax - 0x83, 0xf8, 0x0a, //0x00002435 cmpl $10, %eax - 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002438 jb LBB0_447 - 0x8d, 0x5a, 0xd5, //0x0000243e leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00002441 cmpl $26, %ebx - 0x0f, 0x87, 0x2a, 0x00, 0x00, 0x00, //0x00002444 ja LBB0_453 - 0x48, 0x8d, 0x15, 0x97, 0x1b, 0x00, 0x00, //0x0000244a leaq $7063(%rip), %rdx /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x04, 0x9a, //0x00002451 movslq (%rdx,%rbx,4), %rax - 0x48, 0x01, 0xd0, //0x00002455 addq %rdx, %rax - 0xff, 0xe0, //0x00002458 jmpq *%rax - //0x0000245a LBB0_451 - 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000245a cmpq $-1, $40(%rsp) - 0x0f, 0x85, 0xe4, 0x05, 0x00, 0x00, //0x00002460 jne LBB0_500 - 0x48, 0x8d, 0x04, 0x0f, //0x00002466 leaq (%rdi,%rcx), %rax - 0x48, 0x89, 0x44, 0x24, 0x28, //0x0000246a movq %rax, $40(%rsp) - 0xe9, 0xac, 0xff, 0xff, 0xff, //0x0000246f jmp LBB0_447 - //0x00002474 LBB0_453 - 0x83, 0xfa, 0x65, //0x00002474 cmpl $101, %edx - 0x0f, 0x85, 0x0a, 0x01, 0x00, 0x00, //0x00002477 jne LBB0_467 - //0x0000247d LBB0_454 - 0x49, 0x83, 0xff, 0xff, //0x0000247d cmpq $-1, %r15 - 0x0f, 0x85, 0xc3, 0x05, 0x00, 0x00, //0x00002481 jne LBB0_500 - 0x4c, 0x8d, 0x3c, 0x0f, //0x00002487 leaq (%rdi,%rcx), %r15 - 0xe9, 0x90, 0xff, 0xff, 0xff, //0x0000248b jmp LBB0_447 - //0x00002490 LBB0_456 - 0x4c, 0x01, 0xc9, //0x00002490 addq %r9, %rcx - 0x4c, 0x01, 0xd9, //0x00002493 addq %r11, %rcx - 0xc5, 0xf8, 0x77, //0x00002496 vzeroupper - 0x49, 0x89, 0xc9, //0x00002499 movq %rcx, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000249c movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x000024a3 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x000024a8 testq %rdx, %rdx - 0x0f, 0x85, 0xee, 0x00, 0x00, 0x00, //0x000024ab jne LBB0_469 - 0xe9, 0x5a, 0x18, 0x00, 0x00, //0x000024b1 jmp LBB0_709 - //0x000024b6 LBB0_676 - 0x4d, 0x29, 0xf4, //0x000024b6 subq %r14, %r12 - 0x49, 0x01, 0xd4, //0x000024b9 addq %rdx, %r12 - 0x49, 0x39, 0xdc, //0x000024bc cmpq %rbx, %r12 - 0x0f, 0x82, 0xcd, 0xe0, 0xff, 0xff, //0x000024bf jb LBB0_35 - 0xe9, 0x48, 0x16, 0x00, 0x00, //0x000024c5 jmp LBB0_677 - //0x000024ca LBB0_457 - 0x4d, 0x89, 0xfd, //0x000024ca movq %r15, %r13 - 0xe9, 0x29, 0xf1, 0xff, 0xff, //0x000024cd jmp LBB0_279 - //0x000024d2 LBB0_458 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000024d2 movl $64, %edx - //0x000024d7 LBB0_459 - 0x4d, 0x89, 0xd3, //0x000024d7 movq %r10, %r11 - 0x48, 0x39, 0xc2, //0x000024da cmpq %rax, %rdx - 0x0f, 0x82, 0x88, 0x18, 0x00, 0x00, //0x000024dd jb LBB0_719 - 0xc5, 0x7d, 0x7f, 0xea, //0x000024e3 vmovdqa %ymm13, %ymm2 - 0x48, 0x01, 0xc1, //0x000024e7 addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000024ea addq $1, %rcx - //0x000024ee LBB0_461 - 0x48, 0x85, 0xc9, //0x000024ee testq %rcx, %rcx - 0x0f, 0x88, 0xfd, 0x17, 0x00, 0x00, //0x000024f1 js LBB0_706 - 0x49, 0x89, 0x4d, 0x00, //0x000024f7 movq %rcx, (%r13) - 0x4d, 0x85, 0xc9, //0x000024fb testq %r9, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x000024fe movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002503 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002508 movq $8(%rsp), %r15 - 0xc5, 0x7d, 0x6f, 0xea, //0x0000250d vmovdqa %ymm2, %ymm13 - 0x0f, 0x8f, 0x89, 0xde, 0xff, 0xff, //0x00002511 jg LBB0_3 - 0xe9, 0x1d, 0x16, 0x00, 0x00, //0x00002517 jmp LBB0_463 - //0x0000251c LBB0_156 - 0x4d, 0x85, 0xff, //0x0000251c testq %r15, %r15 - 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x0000251f jne LBB0_522 - 0x49, 0x01, 0xf1, //0x00002525 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002528 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000252b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002530 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002535 movq $8(%rsp), %r15 - //0x0000253a LBB0_158 - 0x4d, 0x85, 0xd2, //0x0000253a testq %r10, %r10 - 0x0f, 0x8f, 0x9d, 0x07, 0x00, 0x00, //0x0000253d jg LBB0_526 - 0xe9, 0x4d, 0x16, 0x00, 0x00, //0x00002543 jmp LBB0_711 - //0x00002548 LBB0_464 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002548 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x0000254c bsfl %ebx, %eax - 0xe9, 0xb9, 0x01, 0x00, 0x00, //0x0000254f jmp LBB0_484 - //0x00002554 LBB0_465 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002554 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002558 movzwl %ax, %ecx - 0xe9, 0xf7, 0xe9, 0xff, 0xff, //0x0000255b jmp LBB0_176 - //0x00002560 LBB0_466 - 0x89, 0xc8, //0x00002560 movl %ecx, %eax - 0x49, 0x01, 0xc1, //0x00002562 addq %rax, %r9 - 0x4d, 0x01, 0xe9, //0x00002565 addq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002568 movq $48(%rsp), %r13 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000256d movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002574 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002579 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000257c jne LBB0_469 - 0xe9, 0x89, 0x17, 0x00, 0x00, //0x00002582 jmp LBB0_709 - //0x00002587 LBB0_467 - 0x49, 0x01, 0xc9, //0x00002587 addq %rcx, %r9 - //0x0000258a LBB0_468 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000258a movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002591 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002596 testq %rdx, %rdx - 0x0f, 0x84, 0x71, 0x17, 0x00, 0x00, //0x00002599 je LBB0_709 - //0x0000259f LBB0_469 - 0x4d, 0x85, 0xc0, //0x0000259f testq %r8, %r8 - 0x0f, 0x84, 0x68, 0x17, 0x00, 0x00, //0x000025a2 je LBB0_709 - 0x4d, 0x85, 0xff, //0x000025a8 testq %r15, %r15 - 0x0f, 0x84, 0x5f, 0x17, 0x00, 0x00, //0x000025ab je LBB0_709 - 0x4d, 0x29, 0xd9, //0x000025b1 subq %r11, %r9 - 0x49, 0x8d, 0x49, 0xff, //0x000025b4 leaq $-1(%r9), %rcx - 0x48, 0x39, 0xca, //0x000025b8 cmpq %rcx, %rdx - 0x0f, 0x84, 0x97, 0x00, 0x00, 0x00, //0x000025bb je LBB0_477 - 0x49, 0x39, 0xc8, //0x000025c1 cmpq %rcx, %r8 - 0x0f, 0x84, 0x8e, 0x00, 0x00, 0x00, //0x000025c4 je LBB0_477 - 0x49, 0x39, 0xcf, //0x000025ca cmpq %rcx, %r15 - 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x000025cd je LBB0_477 - 0x4d, 0x85, 0xc0, //0x000025d3 testq %r8, %r8 - 0xc5, 0xfe, 0x6f, 0x2d, 0xe2, 0xda, 0xff, 0xff, //0x000025d6 vmovdqu $-9502(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0xfa, 0xda, 0xff, 0xff, //0x000025de vmovdqu $-9478(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x12, 0xdb, 0xff, 0xff, //0x000025e6 vmovdqu $-9454(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x2a, 0xdb, 0xff, 0xff, //0x000025ee vmovdqu $-9430(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000025f6 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0xfd, 0xdb, 0xff, 0xff, //0x000025fb vmovdqu $-9219(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x15, 0xdc, 0xff, 0xff, //0x00002603 vmovdqu $-9195(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x2d, 0xdc, 0xff, 0xff, //0x0000260b vmovdqu $-9171(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0xc5, 0xdb, 0xff, 0xff, //0x00002613 vmovdqu $-9275(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xdc, 0xff, 0xff, //0x0000261b vmovdqu $-9091(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xdb, 0xff, 0xff, //0x00002623 vmovdqu $-9323(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0x0f, 0x8e, 0xa3, 0x00, 0x00, 0x00, //0x0000262b jle LBB0_480 - 0x49, 0x8d, 0x40, 0xff, //0x00002631 leaq $-1(%r8), %rax - 0x49, 0x39, 0xc7, //0x00002635 cmpq %rax, %r15 - 0x0f, 0x84, 0x96, 0x00, 0x00, 0x00, //0x00002638 je LBB0_480 - 0x49, 0xf7, 0xd0, //0x0000263e notq %r8 - 0x4d, 0x89, 0xc1, //0x00002641 movq %r8, %r9 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002644 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002649 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000264e movq $8(%rsp), %r15 - 0xe9, 0x67, 0x00, 0x00, 0x00, //0x00002653 jmp LBB0_479 - //0x00002658 LBB0_477 - 0x49, 0xf7, 0xd9, //0x00002658 negq %r9 - //0x0000265b LBB0_478 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000265b movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002660 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002665 movq $8(%rsp), %r15 - 0xc5, 0xfe, 0x6f, 0x2d, 0x4e, 0xda, 0xff, 0xff, //0x0000266a vmovdqu $-9650(%rip), %ymm5 /* LCPI0_1+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x35, 0x66, 0xda, 0xff, 0xff, //0x00002672 vmovdqu $-9626(%rip), %ymm6 /* LCPI0_2+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x3d, 0x7e, 0xda, 0xff, 0xff, //0x0000267a vmovdqu $-9602(%rip), %ymm7 /* LCPI0_3+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x05, 0x96, 0xda, 0xff, 0xff, //0x00002682 vmovdqu $-9578(%rip), %ymm8 /* LCPI0_4+0(%rip) */ - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000268a vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7e, 0x6f, 0x15, 0x69, 0xdb, 0xff, 0xff, //0x0000268f vmovdqu $-9367(%rip), %ymm10 /* LCPI0_14+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x05, 0x81, 0xdb, 0xff, 0xff, //0x00002697 vmovdqu $-9343(%rip), %ymm0 /* LCPI0_15+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x3d, 0x99, 0xdb, 0xff, 0xff, //0x0000269f vmovdqu $-9319(%rip), %ymm15 /* LCPI0_16+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x35, 0x31, 0xdb, 0xff, 0xff, //0x000026a7 vmovdqu $-9423(%rip), %ymm14 /* LCPI0_10+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x25, 0xe9, 0xdb, 0xff, 0xff, //0x000026af vmovdqu $-9239(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x01, 0xdb, 0xff, 0xff, //0x000026b7 vmovdqu $-9471(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - //0x000026bf LBB0_479 - 0xc5, 0x7e, 0x6f, 0x1d, 0x79, 0xda, 0xff, 0xff, //0x000026bf vmovdqu $-9607(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x91, 0xda, 0xff, 0xff, //0x000026c7 vmovdqu $-9583(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0xe9, 0xa4, 0x02, 0x00, 0x00, //0x000026cf jmp LBB0_496 - //0x000026d4 LBB0_480 - 0x48, 0x89, 0xd0, //0x000026d4 movq %rdx, %rax - 0x4c, 0x09, 0xf8, //0x000026d7 orq %r15, %rax - 0x0f, 0x99, 0xc1, //0x000026da setns %cl - 0xc5, 0x7e, 0x6f, 0x1d, 0x5b, 0xda, 0xff, 0xff, //0x000026dd vmovdqu $-9637(%rip), %ymm11 /* LCPI0_5+0(%rip) */ - 0xc5, 0x7e, 0x6f, 0x25, 0x73, 0xda, 0xff, 0xff, //0x000026e5 vmovdqu $-9613(%rip), %ymm12 /* LCPI0_6+0(%rip) */ - 0x0f, 0x88, 0xf8, 0x00, 0x00, 0x00, //0x000026ed js LBB0_485 - 0x4c, 0x39, 0xfa, //0x000026f3 cmpq %r15, %rdx - 0x0f, 0x8c, 0xef, 0x00, 0x00, 0x00, //0x000026f6 jl LBB0_485 - 0x48, 0xf7, 0xd2, //0x000026fc notq %rdx - 0x49, 0x89, 0xd1, //0x000026ff movq %rdx, %r9 - 0xe9, 0x62, 0x02, 0x00, 0x00, //0x00002702 jmp LBB0_495 - //0x00002707 LBB0_483 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002707 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x0000270b movl %edx, %eax - //0x0000270d LBB0_484 - 0x49, 0xf7, 0xd5, //0x0000270d notq %r13 - 0x49, 0x29, 0xc5, //0x00002710 subq %rax, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002713 movq $8(%rsp), %r15 - 0xe9, 0x04, 0xf0, 0xff, 0xff, //0x00002718 jmp LBB0_290 - //0x0000271d LBB0_187 - 0x4d, 0x85, 0xff, //0x0000271d testq %r15, %r15 - 0x0f, 0x85, 0x9f, 0x07, 0x00, 0x00, //0x00002720 jne LBB0_547 - 0x49, 0x01, 0xf1, //0x00002726 addq %rsi, %r9 - 0x49, 0x29, 0xf2, //0x00002729 subq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x0000272c movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002731 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002736 movq $8(%rsp), %r15 - //0x0000273b LBB0_189 - 0x4d, 0x85, 0xd2, //0x0000273b testq %r10, %r10 - 0x0f, 0x8f, 0xfa, 0x07, 0x00, 0x00, //0x0000273e jg LBB0_551 - 0xe9, 0x4c, 0x14, 0x00, 0x00, //0x00002744 jmp LBB0_711 - //0x00002749 LBB0_54 - 0x4c, 0x01, 0xf1, //0x00002749 addq %r14, %rcx - 0x48, 0x83, 0xfb, 0x20, //0x0000274c cmpq $32, %rbx - 0x0f, 0x82, 0x5f, 0x03, 0x00, 0x00, //0x00002750 jb LBB0_505 - //0x00002756 LBB0_55 - 0xc5, 0xfe, 0x6f, 0x01, //0x00002756 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x0000275a vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000275e vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x00002762 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002766 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x0000276a testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x0000276c movq %r11, %r15 - 0x0f, 0x85, 0xa6, 0x05, 0x00, 0x00, //0x0000276f jne LBB0_529 - 0x4d, 0x85, 0xd2, //0x00002775 testq %r10, %r10 - 0x0f, 0x85, 0xcb, 0x05, 0x00, 0x00, //0x00002778 jne LBB0_531 - 0x45, 0x31, 0xd2, //0x0000277e xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x00002781 testq %rsi, %rsi - 0x0f, 0x84, 0x34, 0x06, 0x00, 0x00, //0x00002784 je LBB0_533 - //0x0000278a LBB0_58 - 0x48, 0x0f, 0xbc, 0xc6, //0x0000278a bsfq %rsi, %rax - 0x49, 0x89, 0xca, //0x0000278e movq %rcx, %r10 - 0x4d, 0x29, 0xf2, //0x00002791 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00002794 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002797 addq $1, %r10 - 0xe9, 0x80, 0xeb, 0xff, 0xff, //0x0000279b jmp LBB0_232 - //0x000027a0 LBB0_199 - 0x4d, 0x01, 0xf2, //0x000027a0 addq %r14, %r10 - 0x48, 0x83, 0xfb, 0x20, //0x000027a3 cmpq $32, %rbx - 0x0f, 0x82, 0xef, 0x08, 0x00, 0x00, //0x000027a7 jb LBB0_564 - //0x000027ad LBB0_200 - 0x4c, 0x89, 0xd1, //0x000027ad movq %r10, %rcx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000027b0 vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000027b5 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000027b9 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000027bd vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000027c1 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000027c5 testl %edx, %edx - 0x0f, 0x85, 0xc5, 0x07, 0x00, 0x00, //0x000027c7 jne LBB0_554 - 0x4d, 0x85, 0xdb, //0x000027cd testq %r11, %r11 - 0x0f, 0x85, 0xf2, 0x07, 0x00, 0x00, //0x000027d0 jne LBB0_556 - 0x45, 0x31, 0xdb, //0x000027d6 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x000027d9 testq %r10, %r10 - 0x0f, 0x84, 0x60, 0x08, 0x00, 0x00, //0x000027dc je LBB0_558 - //0x000027e2 LBB0_203 - 0x49, 0x0f, 0xbc, 0xd2, //0x000027e2 bsfq %r10, %rdx - 0xe9, 0x5c, 0x08, 0x00, 0x00, //0x000027e6 jmp LBB0_559 - //0x000027eb LBB0_485 - 0x49, 0x8d, 0x47, 0xff, //0x000027eb leaq $-1(%r15), %rax - 0x48, 0x39, 0xc2, //0x000027ef cmpq %rax, %rdx - 0x49, 0xf7, 0xd7, //0x000027f2 notq %r15 - 0x4d, 0x0f, 0x45, 0xf9, //0x000027f5 cmovneq %r9, %r15 - 0x84, 0xc9, //0x000027f9 testb %cl, %cl - 0x4d, 0x0f, 0x45, 0xcf, //0x000027fb cmovneq %r15, %r9 - 0xe9, 0x65, 0x01, 0x00, 0x00, //0x000027ff jmp LBB0_495 - //0x00002804 LBB0_486 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002804 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002808 bsfl %ebx, %eax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x0000280b jmp LBB0_490 - //0x00002810 LBB0_487 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002810 vmovdqa %ymm13, %ymm0 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x00002814 movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x00002819 addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x0000281c subq %r13, %r14 - 0x49, 0x29, 0xce, //0x0000281f subq %rcx, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x00002822 addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x00002826 movq %r14, %r13 - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002829 movq $8(%rsp), %r15 - 0xe9, 0xf3, 0xee, 0xff, 0xff, //0x0000282e jmp LBB0_291 - //0x00002833 LBB0_488 - 0x4d, 0x01, 0xf4, //0x00002833 addq %r14, %r12 - 0x48, 0x85, 0xc0, //0x00002836 testq %rax, %rax - 0x0f, 0x85, 0xe9, 0xdc, 0xff, 0xff, //0x00002839 jne LBB0_28 - 0xe9, 0x1e, 0xdd, 0xff, 0xff, //0x0000283f jmp LBB0_33 - //0x00002844 LBB0_489 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002844 vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002848 movl %edx, %eax - //0x0000284a LBB0_490 - 0x48, 0x8b, 0x5c, 0x24, 0x20, //0x0000284a movq $32(%rsp), %rbx - 0x49, 0x01, 0xde, //0x0000284f addq %rbx, %r14 - 0x4d, 0x29, 0xee, //0x00002852 subq %r13, %r14 - 0x49, 0x29, 0xc6, //0x00002855 subq %rax, %r14 - 0x4d, 0x29, 0xfe, //0x00002858 subq %r15, %r14 - 0x49, 0x83, 0xc6, 0xfe, //0x0000285b addq $-2, %r14 - 0x4d, 0x89, 0xf5, //0x0000285f movq %r14, %r13 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002862 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002867 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000286c movq $8(%rsp), %r15 - 0xe9, 0xb0, 0xee, 0xff, 0xff, //0x00002871 jmp LBB0_291 - //0x00002876 LBB0_139 - 0x4c, 0x01, 0xf3, //0x00002876 addq %r14, %rbx - 0x48, 0x83, 0xf9, 0x20, //0x00002879 cmpq $32, %rcx - 0x0f, 0x82, 0xda, 0x02, 0x00, 0x00, //0x0000287d jb LBB0_512 - //0x00002883 LBB0_140 - 0xc5, 0xfe, 0x6f, 0x03, //0x00002883 vmovdqu (%rbx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002887 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x0000288b vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x0000288f vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x00002893 vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x00002897 testl %edx, %edx - 0x4d, 0x89, 0xdf, //0x00002899 movq %r11, %r15 - 0x0f, 0x85, 0xc0, 0x08, 0x00, 0x00, //0x0000289c jne LBB0_575 - 0x4d, 0x85, 0xd2, //0x000028a2 testq %r10, %r10 - 0x0f, 0x85, 0xe5, 0x08, 0x00, 0x00, //0x000028a5 jne LBB0_577 - 0x45, 0x31, 0xd2, //0x000028ab xorl %r10d, %r10d - 0x48, 0x85, 0xf6, //0x000028ae testq %rsi, %rsi - 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x000028b1 je LBB0_579 - //0x000028b7 LBB0_143 - 0x48, 0x0f, 0xbc, 0xc6, //0x000028b7 bsfq %rsi, %rax - 0x49, 0x89, 0xda, //0x000028bb movq %rbx, %r10 - 0x4d, 0x29, 0xf2, //0x000028be subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x000028c1 addq %rax, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000028c4 addq $1, %r10 - 0xe9, 0xbf, 0xee, 0xff, 0xff, //0x000028c8 jmp LBB0_298 - //0x000028cd LBB0_220 - 0x4d, 0x01, 0xf2, //0x000028cd addq %r14, %r10 - 0x48, 0x83, 0xf9, 0x20, //0x000028d0 cmpq $32, %rcx - 0x0f, 0x82, 0x3c, 0x0b, 0x00, 0x00, //0x000028d4 jb LBB0_603 - //0x000028da LBB0_221 - 0x4c, 0x89, 0xd3, //0x000028da movq %r10, %rbx - 0xc4, 0xc1, 0x7e, 0x6f, 0x02, //0x000028dd vmovdqu (%r10), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000028e2 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0x7d, 0xd7, 0xd1, //0x000028e6 vpmovmskb %ymm1, %r10d - 0xc5, 0xfd, 0x74, 0xcf, //0x000028ea vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x000028ee vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x000028f2 testl %edx, %edx - 0x0f, 0x85, 0x12, 0x0a, 0x00, 0x00, //0x000028f4 jne LBB0_593 - 0x4d, 0x85, 0xdb, //0x000028fa testq %r11, %r11 - 0x0f, 0x85, 0x3f, 0x0a, 0x00, 0x00, //0x000028fd jne LBB0_595 - 0x45, 0x31, 0xdb, //0x00002903 xorl %r11d, %r11d - 0x4d, 0x85, 0xd2, //0x00002906 testq %r10, %r10 - 0x0f, 0x84, 0xad, 0x0a, 0x00, 0x00, //0x00002909 je LBB0_597 - //0x0000290f LBB0_224 - 0x49, 0x0f, 0xbc, 0xd2, //0x0000290f bsfq %r10, %rdx - 0xe9, 0xa9, 0x0a, 0x00, 0x00, //0x00002913 jmp LBB0_598 - //0x00002918 LBB0_491 - 0x49, 0x89, 0xf1, //0x00002918 movq %rsi, %r9 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000291b movq $-1, %rcx - 0x48, 0x8b, 0x54, 0x24, 0x28, //0x00002922 movq $40(%rsp), %rdx - 0x48, 0x85, 0xd2, //0x00002927 testq %rdx, %rdx - 0x0f, 0x85, 0x6f, 0xfc, 0xff, 0xff, //0x0000292a jne LBB0_469 - 0xe9, 0xdb, 0x13, 0x00, 0x00, //0x00002930 jmp LBB0_709 - //0x00002935 LBB0_492 - 0xc5, 0x7d, 0x7f, 0xe8, //0x00002935 vmovdqa %ymm13, %ymm0 - 0x0f, 0xbc, 0xc3, //0x00002939 bsfl %ebx, %eax - 0xe9, 0x22, 0x00, 0x00, 0x00, //0x0000293c jmp LBB0_494 - //0x00002941 LBB0_697 - 0x66, 0x0f, 0xbc, 0xc0, //0x00002941 bsfw %ax, %ax - 0x0f, 0xb7, 0xc8, //0x00002945 movzwl %ax, %ecx - 0x48, 0x29, 0xd1, //0x00002948 subq %rdx, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000294b movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x0000294f testq %rbx, %rbx - 0x0f, 0x8f, 0x48, 0xda, 0xff, 0xff, //0x00002952 jg LBB0_3 - 0xe9, 0x74, 0x13, 0x00, 0x00, //0x00002958 jmp LBB0_698 - //0x0000295d LBB0_493 - 0xc5, 0x7d, 0x7f, 0xe8, //0x0000295d vmovdqa %ymm13, %ymm0 - 0x89, 0xd0, //0x00002961 movl %edx, %eax - //0x00002963 LBB0_494 - 0x49, 0xf7, 0xd1, //0x00002963 notq %r9 - 0x49, 0x29, 0xc1, //0x00002966 subq %rax, %r9 - //0x00002969 LBB0_495 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002969 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000296e movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002973 movq $8(%rsp), %r15 - //0x00002978 LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002978 testq %r9, %r9 - 0x0f, 0x88, 0x8c, 0x13, 0x00, 0x00, //0x0000297b js LBB0_708 - 0x49, 0x8b, 0x4d, 0x00, //0x00002981 movq (%r13), %rcx - 0xc5, 0x7d, 0x6f, 0xe8, //0x00002985 vmovdqa %ymm0, %ymm13 - //0x00002989 LBB0_498 - 0x4c, 0x01, 0xc9, //0x00002989 addq %r9, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x0000298c movq %rcx, (%r13) - 0x48, 0x83, 0x3c, 0x24, 0x00, //0x00002990 cmpq $0, (%rsp) - 0x0f, 0x8f, 0x05, 0xda, 0xff, 0xff, //0x00002995 jg LBB0_3 - 0xe9, 0x31, 0x13, 0x00, 0x00, //0x0000299b jmp LBB0_698 - //0x000029a0 LBB0_243 - 0x4c, 0x01, 0xf7, //0x000029a0 addq %r14, %rdi - 0x49, 0x83, 0xf8, 0x20, //0x000029a3 cmpq $32, %r8 - 0x0f, 0x82, 0x2f, 0x02, 0x00, 0x00, //0x000029a7 jb LBB0_517 - //0x000029ad LBB0_244 - 0xc5, 0xfe, 0x6f, 0x07, //0x000029ad vmovdqu (%rdi), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x000029b1 vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xf1, //0x000029b5 vpmovmskb %ymm1, %esi - 0xc5, 0xfd, 0x74, 0xc7, //0x000029b9 vpcmpeqb %ymm7, %ymm0, %ymm0 - 0xc5, 0xfd, 0xd7, 0xd0, //0x000029bd vpmovmskb %ymm0, %edx - 0x85, 0xd2, //0x000029c1 testl %edx, %edx - 0x0f, 0x85, 0x68, 0x0d, 0x00, 0x00, //0x000029c3 jne LBB0_630 - 0x4d, 0x85, 0xd2, //0x000029c9 testq %r10, %r10 - 0x0f, 0x85, 0x95, 0x0d, 0x00, 0x00, //0x000029cc jne LBB0_632 - 0x45, 0x31, 0xd2, //0x000029d2 xorl %r10d, %r10d - 0xc5, 0x7d, 0x7f, 0xea, //0x000029d5 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000029d9 testq %rsi, %rsi - 0x0f, 0x84, 0x02, 0x0e, 0x00, 0x00, //0x000029dc je LBB0_634 - //0x000029e2 LBB0_247 - 0x48, 0x0f, 0xbc, 0xc6, //0x000029e2 bsfq %rsi, %rax - 0x48, 0x89, 0xf9, //0x000029e6 movq %rdi, %rcx - 0x4c, 0x29, 0xf1, //0x000029e9 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x000029ec addq %rax, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x000029ef addq $1, %rcx - 0xe9, 0xf6, 0xfa, 0xff, 0xff, //0x000029f3 jmp LBB0_461 - //0x000029f8 LBB0_394 - 0x4c, 0x01, 0xf1, //0x000029f8 addq %r14, %rcx - 0x49, 0x83, 0xf8, 0x20, //0x000029fb cmpq $32, %r8 - 0x0f, 0x82, 0x01, 0x02, 0x00, 0x00, //0x000029ff jb LBB0_519 - //0x00002a05 LBB0_395 - 0x48, 0x89, 0xcb, //0x00002a05 movq %rcx, %rbx - 0xc5, 0xfe, 0x6f, 0x01, //0x00002a08 vmovdqu (%rcx), %ymm0 - 0xc5, 0xfd, 0x74, 0xce, //0x00002a0c vpcmpeqb %ymm6, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xc9, //0x00002a10 vpmovmskb %ymm1, %ecx - 0xc5, 0xfd, 0x74, 0xcf, //0x00002a14 vpcmpeqb %ymm7, %ymm0, %ymm1 - 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a18 vpmovmskb %ymm1, %edx - 0x85, 0xd2, //0x00002a1c testl %edx, %edx - 0x0f, 0x85, 0x86, 0x0e, 0x00, 0x00, //0x00002a1e jne LBB0_647 - 0x4d, 0x85, 0xdb, //0x00002a24 testq %r11, %r11 - 0x0f, 0x85, 0xab, 0x0e, 0x00, 0x00, //0x00002a27 jne LBB0_649 - 0x45, 0x31, 0xdb, //0x00002a2d xorl %r11d, %r11d - 0x48, 0x85, 0xc9, //0x00002a30 testq %rcx, %rcx - 0x0f, 0x84, 0x10, 0x0f, 0x00, 0x00, //0x00002a33 je LBB0_651 - //0x00002a39 LBB0_398 - 0x48, 0x0f, 0xbc, 0xd1, //0x00002a39 bsfq %rcx, %rdx - 0xe9, 0x0c, 0x0f, 0x00, 0x00, //0x00002a3d jmp LBB0_652 - //0x00002a42 LBB0_499 - 0x0f, 0xbc, 0xc6, //0x00002a42 bsfl %esi, %eax - 0xe9, 0xde, 0x00, 0x00, 0x00, //0x00002a45 jmp LBB0_510 - //0x00002a4a LBB0_500 - 0x4c, 0x03, 0x34, 0x24, //0x00002a4a addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002a4e subq %r9, %r14 - 0x48, 0xf7, 0xd1, //0x00002a51 notq %rcx - 0x4c, 0x01, 0xf1, //0x00002a54 addq %r14, %rcx - 0x49, 0x89, 0xc9, //0x00002a57 movq %rcx, %r9 - 0xe9, 0xfc, 0xfb, 0xff, 0xff, //0x00002a5a jmp LBB0_478 - //0x00002a5f LBB0_501 - 0x49, 0x8d, 0x0c, 0x1e, //0x00002a5f leaq (%r14,%rbx), %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002a63 cmpq $16, %rsi - 0x0f, 0x83, 0x49, 0xe4, 0xff, 0xff, //0x00002a67 jae LBB0_164 - 0xe9, 0x8c, 0xe4, 0xff, 0xff, //0x00002a6d jmp LBB0_167 - //0x00002a72 LBB0_502 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002a72 movq $-1, %r9 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002a79 movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x6c, 0x24, 0x38, //0x00002a82 movq $56(%rsp), %r13 - 0x49, 0x83, 0xf8, 0x10, //0x00002a87 cmpq $16, %r8 - 0x0f, 0x83, 0x5a, 0xdf, 0xff, 0xff, //0x00002a8b jae LBB0_95 - 0xe9, 0xac, 0xe0, 0xff, 0xff, //0x00002a91 jmp LBB0_113 - //0x00002a96 LBB0_503 - 0x89, 0xd0, //0x00002a96 movl %edx, %eax - 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x00002a98 jmp LBB0_510 - //0x00002a9d LBB0_504 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002a9d leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002aa1 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002aa8 xorl %r10d, %r10d - 0x48, 0x83, 0xfb, 0x20, //0x00002aab cmpq $32, %rbx - 0x0f, 0x83, 0xa1, 0xfc, 0xff, 0xff, //0x00002aaf jae LBB0_55 - //0x00002ab5 LBB0_505 - 0x4d, 0x89, 0xdf, //0x00002ab5 movq %r11, %r15 - 0xe9, 0x09, 0x03, 0x00, 0x00, //0x00002ab8 jmp LBB0_534 - //0x00002abd LBB0_506 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002abd leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002ac1 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002ac8 xorl %r11d, %r11d - 0x48, 0x83, 0xfb, 0x20, //0x00002acb cmpq $32, %rbx - 0x0f, 0x83, 0xd8, 0xfc, 0xff, 0xff, //0x00002acf jae LBB0_200 - 0xe9, 0xc2, 0x05, 0x00, 0x00, //0x00002ad5 jmp LBB0_564 - //0x00002ada LBB0_507 - 0x4c, 0x29, 0xf1, //0x00002ada subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002add addq %rdx, %rcx - //0x00002ae0 LBB0_508 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ae0 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002ae5 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002aea movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002aef vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002af4 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xd7, 0xff, 0xff, //0x00002af9 vmovdqu $-10337(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xd6, 0xff, 0xff, //0x00002b01 vmovdqu $-10569(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002b09 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002b0d vmovdqa %ymm1, %ymm12 - 0x48, 0x89, 0xc3, //0x00002b11 movq %rax, %rbx - 0x49, 0x89, 0x4d, 0x00, //0x00002b14 movq %rcx, (%r13) - 0x48, 0x85, 0xdb, //0x00002b18 testq %rbx, %rbx - 0x0f, 0x8f, 0x7f, 0xd8, 0xff, 0xff, //0x00002b1b jg LBB0_3 - 0xe9, 0x45, 0x10, 0x00, 0x00, //0x00002b21 jmp LBB0_178 - //0x00002b26 LBB0_509 - 0x89, 0xf0, //0x00002b26 movl %esi, %eax - //0x00002b28 LBB0_510 - 0x4c, 0x03, 0x34, 0x24, //0x00002b28 addq (%rsp), %r14 - 0x4d, 0x29, 0xce, //0x00002b2c subq %r9, %r14 - 0x49, 0x29, 0xc6, //0x00002b2f subq %rax, %r14 - 0x49, 0xf7, 0xd5, //0x00002b32 notq %r13 - 0x4d, 0x01, 0xf5, //0x00002b35 addq %r14, %r13 - 0x4d, 0x89, 0xe9, //0x00002b38 movq %r13, %r9 - 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x00002b3b movq $48(%rsp), %r13 - 0xe9, 0x16, 0xfb, 0xff, 0xff, //0x00002b40 jmp LBB0_478 - //0x00002b45 LBB0_511 - 0x4b, 0x8d, 0x1c, 0x0e, //0x00002b45 leaq (%r14,%r9), %rbx - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002b49 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002b50 xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x20, //0x00002b53 cmpq $32, %rcx - 0x0f, 0x83, 0x26, 0xfd, 0xff, 0xff, //0x00002b57 jae LBB0_140 - //0x00002b5d LBB0_512 - 0x4d, 0x89, 0xdf, //0x00002b5d movq %r11, %r15 - 0xe9, 0xa8, 0x06, 0x00, 0x00, //0x00002b60 jmp LBB0_580 - //0x00002b65 LBB0_513 - 0x4f, 0x8d, 0x14, 0x0e, //0x00002b65 leaq (%r14,%r9), %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b69 movq $-1, %r15 - 0x45, 0x31, 0xdb, //0x00002b70 xorl %r11d, %r11d - 0x48, 0x83, 0xf9, 0x20, //0x00002b73 cmpq $32, %rcx - 0x0f, 0x83, 0x5d, 0xfd, 0xff, 0xff, //0x00002b77 jae LBB0_221 - 0xe9, 0x94, 0x08, 0x00, 0x00, //0x00002b7d jmp LBB0_603 - //0x00002b82 LBB0_514 - 0x4c, 0x01, 0xf1, //0x00002b82 addq %r14, %rcx - 0x48, 0x83, 0xfe, 0x10, //0x00002b85 cmpq $16, %rsi - 0x48, 0x8b, 0x1c, 0x24, //0x00002b89 movq (%rsp), %rbx - 0x0f, 0x83, 0x97, 0xed, 0xff, 0xff, //0x00002b8d jae LBB0_318 - 0xe9, 0xda, 0xed, 0xff, 0xff, //0x00002b93 jmp LBB0_321 - //0x00002b98 LBB0_515 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002b98 movq $-1, %r15 - 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002b9f movq $-1, $40(%rsp) - 0x4c, 0x8b, 0x5c, 0x24, 0x38, //0x00002ba8 movq $56(%rsp), %r11 - 0x4d, 0x89, 0xd9, //0x00002bad movq %r11, %r9 - 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002bb0 movq %r13, $48(%rsp) - 0x49, 0x83, 0xfa, 0x10, //0x00002bb5 cmpq $16, %r10 - 0x0f, 0x83, 0xff, 0xf6, 0xff, 0xff, //0x00002bb9 jae LBB0_425 - 0xe9, 0x2f, 0xf8, 0xff, 0xff, //0x00002bbf jmp LBB0_443 - //0x00002bc4 LBB0_516 - 0x4b, 0x8d, 0x3c, 0x0e, //0x00002bc4 leaq (%r14,%r9), %rdi - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00002bc8 movq $-1, %r11 - 0x45, 0x31, 0xd2, //0x00002bcf xorl %r10d, %r10d - 0x49, 0x83, 0xf8, 0x20, //0x00002bd2 cmpq $32, %r8 - 0x0f, 0x83, 0xd1, 0xfd, 0xff, 0xff, //0x00002bd6 jae LBB0_244 - //0x00002bdc LBB0_517 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002bdc vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002be0 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002be4 vmovdqa %ymm13, %ymm11 - 0xe9, 0x0a, 0x0c, 0x00, 0x00, //0x00002be9 jmp LBB0_635 - //0x00002bee LBB0_518 - 0x4b, 0x8d, 0x0c, 0x0e, //0x00002bee leaq (%r14,%r9), %rcx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002bf2 movq $-1, %r10 - 0x45, 0x31, 0xdb, //0x00002bf9 xorl %r11d, %r11d - 0x49, 0x83, 0xf8, 0x20, //0x00002bfc cmpq $32, %r8 - 0x0f, 0x83, 0xff, 0xfd, 0xff, 0xff, //0x00002c00 jae LBB0_395 - //0x00002c06 LBB0_519 - 0x48, 0x89, 0xcb, //0x00002c06 movq %rcx, %rbx - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c09 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c0d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c11 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002c16 vmovdqa %ymm15, %ymm12 - 0xe9, 0x99, 0x0d, 0x00, 0x00, //0x00002c1b jmp LBB0_657 - //0x00002c20 LBB0_520 - 0x4c, 0x29, 0xf1, //0x00002c20 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00002c23 addq %rdx, %rcx - //0x00002c26 LBB0_521 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c26 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c2b movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c30 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c35 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002c3a vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x59, 0xd6, 0xff, 0xff, //0x00002c3f vmovdqu $-10663(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x71, 0xd5, 0xff, 0xff, //0x00002c47 vmovdqu $-10895(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002c4f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002c53 vmovdqa %ymm1, %ymm12 - 0xe9, 0x75, 0xf3, 0xff, 0xff, //0x00002c57 jmp LBB0_383 - //0x00002c5c LBB0_522 - 0x49, 0x39, 0xf2, //0x00002c5c cmpq %rsi, %r10 - 0x0f, 0x84, 0x30, 0x0f, 0x00, 0x00, //0x00002c5f je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002c65 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002c69 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002c6d vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002c72 addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002c75 addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002c79 notq %rsi - 0x49, 0x01, 0xf2, //0x00002c7c addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002c7f movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002c84 movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002c89 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002c8e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x05, 0xd6, 0xff, 0xff, //0x00002c93 vmovdqu $-10747(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x1d, 0xd5, 0xff, 0xff, //0x00002c9b vmovdqu $-10979(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ca3 vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002ca7 testq %r10, %r10 - 0x0f, 0x8f, 0x30, 0x00, 0x00, 0x00, //0x00002caa jg LBB0_526 - 0xe9, 0xe0, 0x0e, 0x00, 0x00, //0x00002cb0 jmp LBB0_711 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002cb5 .p2align 4, 0x90 - //0x00002cc0 LBB0_524 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002cc0 movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002cc7 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002ccc addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002ccf movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002cd7 addq %rcx, %r10 - 0x0f, 0x8e, 0xb5, 0x0e, 0x00, 0x00, //0x00002cda jle LBB0_711 - //0x00002ce0 LBB0_526 - 0x41, 0x0f, 0xb6, 0x09, //0x00002ce0 movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002ce4 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002ce7 je LBB0_524 - 0x80, 0xf9, 0x22, //0x00002ced cmpb $34, %cl - 0x0f, 0x84, 0x22, 0x0a, 0x00, 0x00, //0x00002cf0 je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002cf6 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002cfd movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002d02 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002d05 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002d0d addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002d10 jg LBB0_526 - 0xe9, 0x7a, 0x0e, 0x00, 0x00, //0x00002d16 jmp LBB0_711 - //0x00002d1b LBB0_529 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d1b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d1f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d23 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d28 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00002d2d cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002d31 jne LBB0_532 - 0x48, 0x89, 0xc8, //0x00002d37 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002d3a subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00002d3d bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00002d41 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002d44 jmp LBB0_532 - //0x00002d49 LBB0_531 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002d49 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002d4d vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002d51 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002d56 vmovdqa %ymm15, %ymm12 - //0x00002d5b LBB0_532 - 0x44, 0x89, 0xd0, //0x00002d5b movl %r10d, %eax - 0xf7, 0xd0, //0x00002d5e notl %eax - 0x21, 0xd0, //0x00002d60 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002d62 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x00002d65 leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x00002d69 notl %edi - 0x21, 0xd7, //0x00002d6b andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002d6d andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x00002d73 xorl %r10d, %r10d - 0x01, 0xc7, //0x00002d76 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x00002d78 setb %r10b - 0x01, 0xff, //0x00002d7c addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002d7e xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x00002d84 andl %r15d, %edi - 0xf7, 0xd7, //0x00002d87 notl %edi - 0x21, 0xfe, //0x00002d89 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002d8b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002d90 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002d95 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xfe, 0xd4, 0xff, 0xff, //0x00002d9a vmovdqu $-11010(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x16, 0xd4, 0xff, 0xff, //0x00002da2 vmovdqu $-11242(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002daa vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00002dae vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x00002db2 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x00002db5 testq %rsi, %rsi - 0x0f, 0x85, 0xcc, 0xf9, 0xff, 0xff, //0x00002db8 jne LBB0_58 - //0x00002dbe LBB0_533 - 0x48, 0x83, 0xc1, 0x20, //0x00002dbe addq $32, %rcx - 0x48, 0x83, 0xc3, 0xe0, //0x00002dc2 addq $-32, %rbx - //0x00002dc6 LBB0_534 - 0x4d, 0x85, 0xd2, //0x00002dc6 testq %r10, %r10 - 0x0f, 0x85, 0x0d, 0x07, 0x00, 0x00, //0x00002dc9 jne LBB0_614 - 0x4c, 0x89, 0xf7, //0x00002dcf movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x00002dd2 notq %rdi - 0x4c, 0x89, 0xfe, //0x00002dd5 movq %r15, %rsi - 0x49, 0x89, 0xca, //0x00002dd8 movq %rcx, %r10 - 0x48, 0x85, 0xdb, //0x00002ddb testq %rbx, %rbx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00002dde je LBB0_546 - //0x00002de4 LBB0_536 - 0x48, 0x83, 0xc7, 0x01, //0x00002de4 addq $1, %rdi - //0x00002de8 LBB0_537 - 0x31, 0xd2, //0x00002de8 xorl %edx, %edx - //0x00002dea LBB0_538 - 0x41, 0x0f, 0xb6, 0x0c, 0x12, //0x00002dea movzbl (%r10,%rdx), %ecx - 0x80, 0xf9, 0x22, //0x00002def cmpb $34, %cl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002df2 je LBB0_545 - 0x80, 0xf9, 0x5c, //0x00002df8 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002dfb je LBB0_543 - 0x48, 0x83, 0xc2, 0x01, //0x00002e01 addq $1, %rdx - 0x48, 0x39, 0xd3, //0x00002e05 cmpq %rdx, %rbx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00002e08 jne LBB0_538 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002e0e jmp LBB0_541 - //0x00002e13 LBB0_543 - 0x48, 0x8d, 0x43, 0xff, //0x00002e13 leaq $-1(%rbx), %rax - 0x48, 0x39, 0xd0, //0x00002e17 cmpq %rdx, %rax - 0x0f, 0x84, 0x30, 0x0d, 0x00, 0x00, //0x00002e1a je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e20 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e24 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e28 vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x17, //0x00002e2d leaq (%rdi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00002e31 addq %rdx, %rax - 0x48, 0x83, 0xfe, 0xff, //0x00002e34 cmpq $-1, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00002e38 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x00002e3c cmoveq %rax, %rsi - 0x49, 0x01, 0xd2, //0x00002e40 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x00002e43 addq $2, %r10 - 0x48, 0x89, 0xd8, //0x00002e47 movq %rbx, %rax - 0x48, 0x29, 0xd0, //0x00002e4a subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00002e4d addq $-2, %rax - 0x48, 0x83, 0xc3, 0xfe, //0x00002e51 addq $-2, %rbx - 0x48, 0x39, 0xd3, //0x00002e55 cmpq %rdx, %rbx - 0x48, 0x89, 0xc3, //0x00002e58 movq %rax, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e5b vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x38, 0xd4, 0xff, 0xff, //0x00002e60 vmovdqu $-11208(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x50, 0xd3, 0xff, 0xff, //0x00002e68 vmovdqu $-11440(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e70 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x00002e74 jne LBB0_537 - 0xe9, 0xd1, 0x0c, 0x00, 0x00, //0x00002e7a jmp LBB0_681 - //0x00002e7f LBB0_545 - 0x49, 0x01, 0xd2, //0x00002e7f addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002e82 addq $1, %r10 - //0x00002e86 LBB0_546 - 0x4d, 0x29, 0xf2, //0x00002e86 subq %r14, %r10 - 0xe9, 0x92, 0xe4, 0xff, 0xff, //0x00002e89 jmp LBB0_232 - //0x00002e8e LBB0_541 - 0x80, 0xf9, 0x22, //0x00002e8e cmpb $34, %cl - 0x0f, 0x85, 0xb9, 0x0c, 0x00, 0x00, //0x00002e91 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e97 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e9b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e9f vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xda, //0x00002ea4 addq %rbx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ea7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xec, 0xd3, 0xff, 0xff, //0x00002eac vmovdqu $-11284(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x04, 0xd3, 0xff, 0xff, //0x00002eb4 vmovdqu $-11516(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002ebc vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00002ec0 jmp LBB0_546 - //0x00002ec5 LBB0_547 - 0x49, 0x39, 0xf2, //0x00002ec5 cmpq %rsi, %r10 - 0x0f, 0x84, 0xc7, 0x0c, 0x00, 0x00, //0x00002ec8 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ece vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ed2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ed6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x00002edb addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002ede addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00002ee2 notq %rsi - 0x49, 0x01, 0xf2, //0x00002ee5 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00002ee8 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x00002eed movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002ef2 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002ef7 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x9c, 0xd3, 0xff, 0xff, //0x00002efc vmovdqu $-11364(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xb4, 0xd2, 0xff, 0xff, //0x00002f04 vmovdqu $-11596(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f0c vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x00002f10 testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x00002f13 jg LBB0_551 - 0xe9, 0x77, 0x0c, 0x00, 0x00, //0x00002f19 jmp LBB0_711 - //0x00002f1e LBB0_549 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002f1e movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002f25 movl $2, %edx - 0x49, 0x01, 0xd1, //0x00002f2a addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f2d movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f35 addq %rcx, %r10 - 0x0f, 0x8e, 0x57, 0x0c, 0x00, 0x00, //0x00002f38 jle LBB0_711 - //0x00002f3e LBB0_551 - 0x41, 0x0f, 0xb6, 0x09, //0x00002f3e movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x00002f42 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x00002f45 je LBB0_549 - 0x80, 0xf9, 0x22, //0x00002f4b cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00002f4e je LBB0_678 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002f54 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002f5b movl $1, %edx - 0x49, 0x01, 0xd1, //0x00002f60 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00002f63 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x00002f6b addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x00002f6e jg LBB0_551 - 0xe9, 0x1c, 0x0c, 0x00, 0x00, //0x00002f74 jmp LBB0_711 - //0x00002f79 LBB0_678 - 0x4d, 0x29, 0xf1, //0x00002f79 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x00002f7c addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x00002f80 movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00002f84 testq %r8, %r8 - 0x0f, 0x8f, 0x24, 0xe8, 0xff, 0xff, //0x00002f87 jg LBB0_300 - 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002f8d jmp LBB0_679 - //0x00002f92 LBB0_554 - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002f92 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002f96 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f9a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f9f vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fa4 movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00002fa8 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00002fac jne LBB0_557 - 0x48, 0x89, 0xc8, //0x00002fb2 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00002fb5 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00002fb8 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00002fbc addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00002fbf movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00002fc3 jmp LBB0_557 - //0x00002fc8 LBB0_556 - 0x4c, 0x89, 0x3c, 0x24, //0x00002fc8 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00002fcc vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00002fd0 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002fd4 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002fd9 vmovdqa %ymm15, %ymm12 - //0x00002fde LBB0_557 - 0x44, 0x89, 0xd8, //0x00002fde movl %r11d, %eax - 0xf7, 0xd0, //0x00002fe1 notl %eax - 0x21, 0xd0, //0x00002fe3 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x00002fe5 leal (%rax,%rax), %edi - 0x41, 0x8d, 0x34, 0x43, //0x00002fe8 leal (%r11,%rax,2), %esi - 0xf7, 0xd7, //0x00002fec notl %edi - 0x21, 0xd7, //0x00002fee andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002ff0 andl $-1431655766, %edi - 0x45, 0x31, 0xdb, //0x00002ff6 xorl %r11d, %r11d - 0x01, 0xc7, //0x00002ff9 addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc3, //0x00002ffb setb %r11b - 0x01, 0xff, //0x00002fff addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003001 xorl $1431655765, %edi - 0x21, 0xf7, //0x00003007 andl %esi, %edi - 0xf7, 0xd7, //0x00003009 notl %edi - 0x41, 0x21, 0xfa, //0x0000300b andl %edi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000300e vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003013 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003018 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x7b, 0xd2, 0xff, 0xff, //0x0000301d vmovdqu $-11653(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x93, 0xd1, 0xff, 0xff, //0x00003025 vmovdqu $-11885(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x0000302d vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x00003031 vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x00003035 movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x00003039 testq %r10, %r10 - 0x0f, 0x85, 0xa0, 0xf7, 0xff, 0xff, //0x0000303c jne LBB0_203 - //0x00003042 LBB0_558 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003042 movl $64, %edx - //0x00003047 LBB0_559 - 0xc5, 0xbd, 0x64, 0xc8, //0x00003047 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x0000304b vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003050 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x00003054 vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x00003058 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x0000305b testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x0000305e je LBB0_562 - 0x85, 0xf6, //0x00003064 testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x00003066 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x0000306b cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x0000306e cmpq %rdi, %rdx - 0x49, 0x89, 0xca, //0x00003071 movq %rcx, %r10 - 0x0f, 0x87, 0x15, 0x0d, 0x00, 0x00, //0x00003074 ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x0000307a subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x0000307d addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003080 addq $1, %r10 - 0xe9, 0x97, 0xe2, 0xff, 0xff, //0x00003084 jmp LBB0_232 - //0x00003089 LBB0_562 - 0x85, 0xf6, //0x00003089 testl %esi, %esi - 0x49, 0x89, 0xca, //0x0000308b movq %rcx, %r10 - 0x0f, 0x85, 0x08, 0x0d, 0x00, 0x00, //0x0000308e jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x00003094 addq $32, %r10 - 0x48, 0x83, 0xc3, 0xe0, //0x00003098 addq $-32, %rbx - //0x0000309c LBB0_564 - 0x4d, 0x85, 0xdb, //0x0000309c testq %r11, %r11 - 0x0f, 0x85, 0x98, 0x04, 0x00, 0x00, //0x0000309f jne LBB0_616 - 0x4c, 0x89, 0xf9, //0x000030a5 movq %r15, %rcx - 0x48, 0x85, 0xdb, //0x000030a8 testq %rbx, %rbx - 0x0f, 0x84, 0x9f, 0x0a, 0x00, 0x00, //0x000030ab je LBB0_681 - //0x000030b1 LBB0_566 - 0x41, 0x0f, 0xb6, 0x12, //0x000030b1 movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x000030b5 cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x000030b8 je LBB0_574 - 0x80, 0xfa, 0x5c, //0x000030be cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000030c1 je LBB0_570 - 0x80, 0xfa, 0x1f, //0x000030c7 cmpb $31, %dl - 0x0f, 0x86, 0xd7, 0x0c, 0x00, 0x00, //0x000030ca jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000030d0 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000030d7 movl $1, %esi - 0x49, 0x01, 0xf2, //0x000030dc addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x000030df addq %rdx, %rbx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x000030e2 jne LBB0_566 - 0xe9, 0x63, 0x0a, 0x00, 0x00, //0x000030e8 jmp LBB0_681 - //0x000030ed LBB0_570 - 0x48, 0x83, 0xfb, 0x01, //0x000030ed cmpq $1, %rbx - 0x0f, 0x84, 0x59, 0x0a, 0x00, 0x00, //0x000030f1 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000030f7 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000030fb vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030ff vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003104 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000310b movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00003110 cmpq $-1, %rcx - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003114 jne LBB0_573 - 0x4d, 0x89, 0xd7, //0x0000311a movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x0000311d subq %r14, %r15 - 0x4c, 0x89, 0xf9, //0x00003120 movq %r15, %rcx - //0x00003123 LBB0_573 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003123 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003128 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x6b, 0xd1, 0xff, 0xff, //0x0000312d vmovdqu $-11925(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x83, 0xd0, 0xff, 0xff, //0x00003135 vmovdqu $-12157(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000313d vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003141 vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xf2, //0x00003145 addq %rsi, %r10 - 0x48, 0x01, 0xd3, //0x00003148 addq %rdx, %rbx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000314b jne LBB0_566 - 0xe9, 0xfa, 0x09, 0x00, 0x00, //0x00003151 jmp LBB0_681 - //0x00003156 LBB0_574 - 0x4d, 0x29, 0xf2, //0x00003156 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003159 addq $1, %r10 - 0xe9, 0xbe, 0xe1, 0xff, 0xff, //0x0000315d jmp LBB0_232 - //0x00003162 LBB0_575 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003162 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003166 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000316a vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316f vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xff, 0xff, //0x00003174 cmpq $-1, %r15 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003178 jne LBB0_578 - 0x48, 0x89, 0xd8, //0x0000317e movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x00003181 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xda, //0x00003184 bsfq %rdx, %r11 - 0x49, 0x01, 0xc3, //0x00003188 addq %rax, %r11 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000318b jmp LBB0_578 - //0x00003190 LBB0_577 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003190 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003194 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003198 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319d vmovdqa %ymm15, %ymm12 - //0x000031a2 LBB0_578 - 0x44, 0x89, 0xd0, //0x000031a2 movl %r10d, %eax - 0xf7, 0xd0, //0x000031a5 notl %eax - 0x21, 0xd0, //0x000031a7 andl %edx, %eax - 0x8d, 0x3c, 0x00, //0x000031a9 leal (%rax,%rax), %edi - 0x45, 0x8d, 0x3c, 0x42, //0x000031ac leal (%r10,%rax,2), %r15d - 0xf7, 0xd7, //0x000031b0 notl %edi - 0x21, 0xd7, //0x000031b2 andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b4 andl $-1431655766, %edi - 0x45, 0x31, 0xd2, //0x000031ba xorl %r10d, %r10d - 0x01, 0xc7, //0x000031bd addl %eax, %edi - 0x41, 0x0f, 0x92, 0xc2, //0x000031bf setb %r10b - 0x01, 0xff, //0x000031c3 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000031c5 xorl $1431655765, %edi - 0x44, 0x21, 0xff, //0x000031cb andl %r15d, %edi - 0xf7, 0xd7, //0x000031ce notl %edi - 0x21, 0xfe, //0x000031d0 andl %edi, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d7 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031dc vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xb7, 0xd0, 0xff, 0xff, //0x000031e1 vmovdqu $-12105(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xcf, 0xcf, 0xff, 0xff, //0x000031e9 vmovdqu $-12337(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000031f1 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000031f5 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xdf, //0x000031f9 movq %r11, %r15 - 0x48, 0x85, 0xf6, //0x000031fc testq %rsi, %rsi - 0x0f, 0x85, 0xb2, 0xf6, 0xff, 0xff, //0x000031ff jne LBB0_143 - //0x00003205 LBB0_579 - 0x48, 0x83, 0xc3, 0x20, //0x00003205 addq $32, %rbx - 0x48, 0x83, 0xc1, 0xe0, //0x00003209 addq $-32, %rcx - //0x0000320d LBB0_580 - 0x4d, 0x85, 0xd2, //0x0000320d testq %r10, %r10 - 0x0f, 0x85, 0x8a, 0x03, 0x00, 0x00, //0x00003210 jne LBB0_618 - 0x4c, 0x89, 0xf6, //0x00003216 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003219 notq %rsi - 0x4c, 0x89, 0xff, //0x0000321c movq %r15, %rdi - 0x49, 0x89, 0xda, //0x0000321f movq %rbx, %r10 - 0x48, 0x85, 0xc9, //0x00003222 testq %rcx, %rcx - 0x0f, 0x84, 0xa2, 0x00, 0x00, 0x00, //0x00003225 je LBB0_592 - //0x0000322b LBB0_582 - 0x48, 0x83, 0xc6, 0x01, //0x0000322b addq $1, %rsi - //0x0000322f LBB0_583 - 0x31, 0xd2, //0x0000322f xorl %edx, %edx - //0x00003231 LBB0_584 - 0x41, 0x0f, 0xb6, 0x1c, 0x12, //0x00003231 movzbl (%r10,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003236 cmpb $34, %bl - 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00003239 je LBB0_591 - 0x80, 0xfb, 0x5c, //0x0000323f cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003242 je LBB0_589 - 0x48, 0x83, 0xc2, 0x01, //0x00003248 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x0000324c cmpq %rdx, %rcx - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x0000324f jne LBB0_584 - 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00003255 jmp LBB0_587 - //0x0000325a LBB0_589 - 0x48, 0x8d, 0x41, 0xff, //0x0000325a leaq $-1(%rcx), %rax - 0x48, 0x39, 0xd0, //0x0000325e cmpq %rdx, %rax - 0x0f, 0x84, 0xe9, 0x08, 0x00, 0x00, //0x00003261 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003267 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000326b vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000326f vmovdqa %ymm13, %ymm11 - 0x4a, 0x8d, 0x04, 0x16, //0x00003274 leaq (%rsi,%r10), %rax - 0x48, 0x01, 0xd0, //0x00003278 addq %rdx, %rax - 0x48, 0x83, 0xff, 0xff, //0x0000327b cmpq $-1, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x0000327f cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x00003283 cmoveq %rax, %rdi - 0x49, 0x01, 0xd2, //0x00003287 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x0000328a addq $2, %r10 - 0x48, 0x89, 0xc8, //0x0000328e movq %rcx, %rax - 0x48, 0x29, 0xd0, //0x00003291 subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003294 addq $-2, %rax - 0x48, 0x83, 0xc1, 0xfe, //0x00003298 addq $-2, %rcx - 0x48, 0x39, 0xd1, //0x0000329c cmpq %rdx, %rcx - 0x48, 0x89, 0xc1, //0x0000329f movq %rax, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032a2 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcf, 0xff, 0xff, //0x000032a7 vmovdqu $-12303(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcf, 0xff, 0xff, //0x000032af vmovdqu $-12535(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000032b7 vmovdqa %ymm0, %ymm11 - 0x0f, 0x85, 0x6e, 0xff, 0xff, 0xff, //0x000032bb jne LBB0_583 - 0xe9, 0x8a, 0x08, 0x00, 0x00, //0x000032c1 jmp LBB0_681 - //0x000032c6 LBB0_591 - 0x49, 0x01, 0xd2, //0x000032c6 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000032c9 addq $1, %r10 - //0x000032cd LBB0_592 - 0x4d, 0x29, 0xf2, //0x000032cd subq %r14, %r10 - 0xe9, 0xb7, 0xe4, 0xff, 0xff, //0x000032d0 jmp LBB0_298 - //0x000032d5 LBB0_587 - 0x80, 0xfb, 0x22, //0x000032d5 cmpb $34, %bl - 0x0f, 0x85, 0x72, 0x08, 0x00, 0x00, //0x000032d8 jne LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000032de vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000032e2 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032e6 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xca, //0x000032eb addq %rcx, %r10 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032ee vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xa5, 0xcf, 0xff, 0xff, //0x000032f3 vmovdqu $-12379(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xbd, 0xce, 0xff, 0xff, //0x000032fb vmovdqu $-12611(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003303 vmovdqa %ymm0, %ymm11 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003307 jmp LBB0_592 - //0x0000330c LBB0_593 - 0xc5, 0x7d, 0x7f, 0xe2, //0x0000330c vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x00003310 vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003314 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003319 vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x3c, 0x24, //0x0000331e movq %r15, (%rsp) - 0x49, 0x83, 0xff, 0xff, //0x00003322 cmpq $-1, %r15 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x00003326 jne LBB0_596 - 0x48, 0x89, 0xd8, //0x0000332c movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x0000332f subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xf2, //0x00003332 bsfq %rdx, %rsi - 0x48, 0x01, 0xc6, //0x00003336 addq %rax, %rsi - 0x48, 0x89, 0x34, 0x24, //0x00003339 movq %rsi, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x0000333d jmp LBB0_596 - //0x00003342 LBB0_595 - 0x4c, 0x89, 0x3c, 0x24, //0x00003342 movq %r15, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe2, //0x00003346 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x0000334a vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000334e vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003353 vmovdqa %ymm15, %ymm12 - //0x00003358 LBB0_596 - 0x44, 0x89, 0xd8, //0x00003358 movl %r11d, %eax - 0xf7, 0xd0, //0x0000335b notl %eax - 0x21, 0xd0, //0x0000335d andl %edx, %eax - 0x8d, 0x34, 0x00, //0x0000335f leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x00003362 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x00003366 notl %esi - 0x21, 0xd6, //0x00003368 andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000336a andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003370 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003373 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003375 setb %r11b - 0x01, 0xf6, //0x00003379 addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000337b xorl $1431655765, %esi - 0x21, 0xfe, //0x00003381 andl %edi, %esi - 0xf7, 0xd6, //0x00003383 notl %esi - 0x41, 0x21, 0xf2, //0x00003385 andl %esi, %r10d - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003388 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000338d vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003392 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x01, 0xcf, 0xff, 0xff, //0x00003397 vmovdqu $-12543(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x19, 0xce, 0xff, 0xff, //0x0000339f vmovdqu $-12775(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x000033a7 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x000033ab vmovdqa %ymm2, %ymm12 - 0x4c, 0x8b, 0x3c, 0x24, //0x000033af movq (%rsp), %r15 - 0x4d, 0x85, 0xd2, //0x000033b3 testq %r10, %r10 - 0x0f, 0x85, 0x53, 0xf5, 0xff, 0xff, //0x000033b6 jne LBB0_224 - //0x000033bc LBB0_597 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000033bc movl $64, %edx - //0x000033c1 LBB0_598 - 0xc5, 0xbd, 0x64, 0xc8, //0x000033c1 vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x000033c5 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x000033ca vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x000033ce vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x000033d2 bsfl %esi, %edi - 0x4d, 0x85, 0xd2, //0x000033d5 testq %r10, %r10 - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000033d8 je LBB0_601 - 0x85, 0xf6, //0x000033de testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x000033e0 movl $64, %eax - 0x0f, 0x44, 0xf8, //0x000033e5 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x000033e8 cmpq %rdi, %rdx - 0x49, 0x89, 0xda, //0x000033eb movq %rbx, %r10 - 0x0f, 0x87, 0x9b, 0x09, 0x00, 0x00, //0x000033ee ja LBB0_721 - 0x4d, 0x29, 0xf2, //0x000033f4 subq %r14, %r10 - 0x49, 0x01, 0xd2, //0x000033f7 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033fa addq $1, %r10 - 0xe9, 0x89, 0xe3, 0xff, 0xff, //0x000033fe jmp LBB0_298 - //0x00003403 LBB0_601 - 0x85, 0xf6, //0x00003403 testl %esi, %esi - 0x49, 0x89, 0xda, //0x00003405 movq %rbx, %r10 - 0x0f, 0x85, 0x8e, 0x09, 0x00, 0x00, //0x00003408 jne LBB0_722 - 0x49, 0x83, 0xc2, 0x20, //0x0000340e addq $32, %r10 - 0x48, 0x83, 0xc1, 0xe0, //0x00003412 addq $-32, %rcx - //0x00003416 LBB0_603 - 0x4d, 0x85, 0xdb, //0x00003416 testq %r11, %r11 - 0x0f, 0x85, 0xe2, 0x01, 0x00, 0x00, //0x00003419 jne LBB0_620 - 0x4c, 0x89, 0xfe, //0x0000341f movq %r15, %rsi - 0x48, 0x85, 0xc9, //0x00003422 testq %rcx, %rcx - 0x0f, 0x84, 0x25, 0x07, 0x00, 0x00, //0x00003425 je LBB0_681 - //0x0000342b LBB0_605 - 0x41, 0x0f, 0xb6, 0x12, //0x0000342b movzbl (%r10), %edx - 0x80, 0xfa, 0x22, //0x0000342f cmpb $34, %dl - 0x0f, 0x84, 0x98, 0x00, 0x00, 0x00, //0x00003432 je LBB0_613 - 0x80, 0xfa, 0x5c, //0x00003438 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000343b je LBB0_609 - 0x80, 0xfa, 0x1f, //0x00003441 cmpb $31, %dl - 0x0f, 0x86, 0x5d, 0x09, 0x00, 0x00, //0x00003444 jbe LBB0_723 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000344a movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003451 movl $1, %edi - 0x49, 0x01, 0xfa, //0x00003456 addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x00003459 addq %rdx, %rcx - 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x0000345c jne LBB0_605 - 0xe9, 0xe9, 0x06, 0x00, 0x00, //0x00003462 jmp LBB0_681 - //0x00003467 LBB0_609 - 0x48, 0x83, 0xf9, 0x01, //0x00003467 cmpq $1, %rcx - 0x0f, 0x84, 0xdf, 0x06, 0x00, 0x00, //0x0000346b je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003471 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003475 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003479 vmovdqa %ymm13, %ymm11 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x0000347e movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003485 movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x0000348a cmpq $-1, %rsi - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x0000348e jne LBB0_612 - 0x4d, 0x89, 0xd7, //0x00003494 movq %r10, %r15 - 0x4d, 0x29, 0xf7, //0x00003497 subq %r14, %r15 - 0x4c, 0x89, 0xfe, //0x0000349a movq %r15, %rsi - //0x0000349d LBB0_612 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000349d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000034a2 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xf1, 0xcd, 0xff, 0xff, //0x000034a7 vmovdqu $-12815(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0xcd, 0xff, 0xff, //0x000034af vmovdqu $-13047(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000034b7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000034bb vmovdqa %ymm1, %ymm12 - 0x49, 0x01, 0xfa, //0x000034bf addq %rdi, %r10 - 0x48, 0x01, 0xd1, //0x000034c2 addq %rdx, %rcx - 0x0f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000034c5 jne LBB0_605 - 0xe9, 0x80, 0x06, 0x00, 0x00, //0x000034cb jmp LBB0_681 - //0x000034d0 LBB0_613 - 0x4d, 0x29, 0xf2, //0x000034d0 subq %r14, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000034d3 addq $1, %r10 - 0xe9, 0xb0, 0xe2, 0xff, 0xff, //0x000034d7 jmp LBB0_298 - //0x000034dc LBB0_614 - 0x48, 0x85, 0xdb, //0x000034dc testq %rbx, %rbx - 0x0f, 0x84, 0x6b, 0x06, 0x00, 0x00, //0x000034df je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000034e5 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000034e9 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034ed vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf7, //0x000034f2 movq %r14, %rdi - 0x48, 0xf7, 0xd7, //0x000034f5 notq %rdi - 0x49, 0x89, 0xca, //0x000034f8 movq %rcx, %r10 - 0x48, 0x8d, 0x04, 0x39, //0x000034fb leaq (%rcx,%rdi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000034ff cmpq $-1, %r15 - 0x4c, 0x89, 0xfe, //0x00003503 movq %r15, %rsi - 0x4c, 0x0f, 0x44, 0xf8, //0x00003506 cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf0, //0x0000350a cmoveq %rax, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x0000350e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003512 addq $-1, %rbx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003516 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xcd, 0xff, 0xff, //0x0000351b vmovdqu $-12931(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xcc, 0xff, 0xff, //0x00003523 vmovdqu $-13163(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000352b vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x0000352f testq %rbx, %rbx - 0x0f, 0x85, 0xac, 0xf8, 0xff, 0xff, //0x00003532 jne LBB0_536 - 0xe9, 0x49, 0xf9, 0xff, 0xff, //0x00003538 jmp LBB0_546 - //0x0000353d LBB0_616 - 0x48, 0x85, 0xdb, //0x0000353d testq %rbx, %rbx - 0x0f, 0x84, 0x0a, 0x06, 0x00, 0x00, //0x00003540 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003546 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000354a vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000354e vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf1, //0x00003553 movq %r14, %rcx - 0x48, 0xf7, 0xd1, //0x00003556 notq %rcx - 0x4c, 0x01, 0xd1, //0x00003559 addq %r10, %rcx - 0x4c, 0x89, 0xfa, //0x0000355c movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x0000355f cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003563 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc1, //0x00003566 cmoveq %rcx, %rax - 0x49, 0x0f, 0x45, 0xcf, //0x0000356a cmovneq %r15, %rcx - 0x49, 0x83, 0xc2, 0x01, //0x0000356e addq $1, %r10 - 0x48, 0x83, 0xc3, 0xff, //0x00003572 addq $-1, %rbx - 0x49, 0x89, 0xc7, //0x00003576 movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003579 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x1a, 0xcd, 0xff, 0xff, //0x0000357e vmovdqu $-13030(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x32, 0xcc, 0xff, 0xff, //0x00003586 vmovdqu $-13262(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x0000358e vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xdb, //0x00003592 testq %rbx, %rbx - 0x0f, 0x85, 0x16, 0xfb, 0xff, 0xff, //0x00003595 jne LBB0_566 - 0xe9, 0xb0, 0x05, 0x00, 0x00, //0x0000359b jmp LBB0_681 - //0x000035a0 LBB0_618 - 0x48, 0x85, 0xc9, //0x000035a0 testq %rcx, %rcx - 0x0f, 0x84, 0xa7, 0x05, 0x00, 0x00, //0x000035a3 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000035a9 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000035ad vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000035b1 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x000035b6 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x000035b9 notq %rsi - 0x49, 0x89, 0xda, //0x000035bc movq %rbx, %r10 - 0x48, 0x8d, 0x04, 0x33, //0x000035bf leaq (%rbx,%rsi), %rax - 0x49, 0x83, 0xff, 0xff, //0x000035c3 cmpq $-1, %r15 - 0x4c, 0x89, 0xff, //0x000035c7 movq %r15, %rdi - 0x4c, 0x0f, 0x44, 0xf8, //0x000035ca cmoveq %rax, %r15 - 0x48, 0x0f, 0x44, 0xf8, //0x000035ce cmoveq %rax, %rdi - 0x49, 0x83, 0xc2, 0x01, //0x000035d2 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x000035d6 addq $-1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000035da vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xcc, 0xff, 0xff, //0x000035df vmovdqu $-13127(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcb, 0xff, 0xff, //0x000035e7 vmovdqu $-13359(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000035ef vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x000035f3 testq %rcx, %rcx - 0x0f, 0x85, 0x2f, 0xfc, 0xff, 0xff, //0x000035f6 jne LBB0_582 - 0xe9, 0xcc, 0xfc, 0xff, 0xff, //0x000035fc jmp LBB0_592 - //0x00003601 LBB0_620 - 0x48, 0x85, 0xc9, //0x00003601 testq %rcx, %rcx - 0x0f, 0x84, 0x46, 0x05, 0x00, 0x00, //0x00003604 je LBB0_681 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000360a vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000360e vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003612 vmovdqa %ymm13, %ymm11 - 0x4c, 0x89, 0xf6, //0x00003617 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x0000361a notq %rsi - 0x4c, 0x01, 0xd6, //0x0000361d addq %r10, %rsi - 0x4c, 0x89, 0xfa, //0x00003620 movq %r15, %rdx - 0x49, 0x83, 0xff, 0xff, //0x00003623 cmpq $-1, %r15 - 0x4c, 0x89, 0xf8, //0x00003627 movq %r15, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x0000362a cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf7, //0x0000362e cmovneq %r15, %rsi - 0x49, 0x83, 0xc2, 0x01, //0x00003632 addq $1, %r10 - 0x48, 0x83, 0xc1, 0xff, //0x00003636 addq $-1, %rcx - 0x49, 0x89, 0xc7, //0x0000363a movq %rax, %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000363d vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0x56, 0xcc, 0xff, 0xff, //0x00003642 vmovdqu $-13226(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x6e, 0xcb, 0xff, 0xff, //0x0000364a vmovdqu $-13458(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003652 vmovdqa %ymm0, %ymm11 - 0x48, 0x85, 0xc9, //0x00003656 testq %rcx, %rcx - 0x0f, 0x85, 0xcc, 0xfd, 0xff, 0xff, //0x00003659 jne LBB0_605 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x0000365f jmp LBB0_681 - //0x00003664 LBB0_622 - 0x49, 0x39, 0xf2, //0x00003664 cmpq %rsi, %r10 - 0x0f, 0x84, 0x28, 0x05, 0x00, 0x00, //0x00003667 je LBB0_711 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000366d vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003671 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003675 vmovdqa %ymm13, %ymm11 - 0x49, 0x01, 0xf1, //0x0000367a addq %rsi, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000367d addq $1, %r9 - 0x48, 0xf7, 0xd6, //0x00003681 notq %rsi - 0x49, 0x01, 0xf2, //0x00003684 addq %rsi, %r10 - 0x4c, 0x8b, 0x5c, 0x24, 0x18, //0x00003687 movq $24(%rsp), %r11 - 0x48, 0x8b, 0x7c, 0x24, 0x10, //0x0000368c movq $16(%rsp), %rdi - 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003691 movq $8(%rsp), %r15 - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003696 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0xfe, 0x6f, 0x25, 0xfd, 0xcb, 0xff, 0xff, //0x0000369b vmovdqu $-13315(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x15, 0xcb, 0xff, 0xff, //0x000036a3 vmovdqu $-13547(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000036ab vmovdqa %ymm0, %ymm11 - 0x4d, 0x85, 0xd2, //0x000036af testq %r10, %r10 - 0x0f, 0x8f, 0x25, 0x00, 0x00, 0x00, //0x000036b2 jg LBB0_626 - 0xe9, 0xd8, 0x04, 0x00, 0x00, //0x000036b8 jmp LBB0_711 - //0x000036bd LBB0_624 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000036bd movq $-2, %rcx - 0xba, 0x02, 0x00, 0x00, 0x00, //0x000036c4 movl $2, %edx - 0x49, 0x01, 0xd1, //0x000036c9 addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x000036cc movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x000036d4 addq %rcx, %r10 - 0x0f, 0x8e, 0xb8, 0x04, 0x00, 0x00, //0x000036d7 jle LBB0_711 - //0x000036dd LBB0_626 - 0x41, 0x0f, 0xb6, 0x09, //0x000036dd movzbl (%r9), %ecx - 0x80, 0xf9, 0x5c, //0x000036e1 cmpb $92, %cl - 0x0f, 0x84, 0xd3, 0xff, 0xff, 0xff, //0x000036e4 je LBB0_624 - 0x80, 0xf9, 0x22, //0x000036ea cmpb $34, %cl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x000036ed je LBB0_629 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000036f3 movq $-1, %rcx - 0xba, 0x01, 0x00, 0x00, 0x00, //0x000036fa movl $1, %edx - 0x49, 0x01, 0xd1, //0x000036ff addq %rdx, %r9 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003702 movq $-1, (%rsp) - 0x49, 0x01, 0xca, //0x0000370a addq %rcx, %r10 - 0x0f, 0x8f, 0xca, 0xff, 0xff, 0xff, //0x0000370d jg LBB0_626 - 0xe9, 0x7d, 0x04, 0x00, 0x00, //0x00003713 jmp LBB0_711 - //0x00003718 LBB0_629 - 0x4d, 0x29, 0xf1, //0x00003718 subq %r14, %r9 - 0x49, 0x83, 0xc1, 0x01, //0x0000371b addq $1, %r9 - 0x4d, 0x89, 0x4d, 0x00, //0x0000371f movq %r9, (%r13) - 0x4d, 0x85, 0xc0, //0x00003723 testq %r8, %r8 - 0x0f, 0x8f, 0x74, 0xcc, 0xff, 0xff, //0x00003726 jg LBB0_3 - 0xe9, 0xfb, 0x03, 0x00, 0x00, //0x0000372c jmp LBB0_679 - //0x00003731 LBB0_630 - 0xc5, 0x7d, 0x7f, 0xe1, //0x00003731 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x00003735 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003739 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000373e vmovdqa %ymm15, %ymm12 - 0x4c, 0x89, 0x1c, 0x24, //0x00003743 movq %r11, (%rsp) - 0x49, 0x83, 0xfb, 0xff, //0x00003747 cmpq $-1, %r11 - 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000374b jne LBB0_633 - 0x48, 0x89, 0xf8, //0x00003751 movq %rdi, %rax - 0x4c, 0x29, 0xf0, //0x00003754 subq %r14, %rax - 0x48, 0x0f, 0xbc, 0xca, //0x00003757 bsfq %rdx, %rcx - 0x48, 0x01, 0xc1, //0x0000375b addq %rax, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x0000375e movq %rcx, (%rsp) - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00003762 jmp LBB0_633 - //0x00003767 LBB0_632 - 0x4c, 0x89, 0x1c, 0x24, //0x00003767 movq %r11, (%rsp) - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000376b vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x0000376f vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003773 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003778 vmovdqa %ymm15, %ymm12 - //0x0000377d LBB0_633 - 0x44, 0x89, 0xd0, //0x0000377d movl %r10d, %eax - 0xf7, 0xd0, //0x00003780 notl %eax - 0x21, 0xd0, //0x00003782 andl %edx, %eax - 0x8d, 0x0c, 0x00, //0x00003784 leal (%rax,%rax), %ecx - 0x41, 0x8d, 0x1c, 0x42, //0x00003787 leal (%r10,%rax,2), %ebx - 0xf7, 0xd1, //0x0000378b notl %ecx - 0x21, 0xd1, //0x0000378d andl %edx, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000378f andl $-1431655766, %ecx - 0x45, 0x31, 0xd2, //0x00003795 xorl %r10d, %r10d - 0x01, 0xc1, //0x00003798 addl %eax, %ecx - 0x41, 0x0f, 0x92, 0xc2, //0x0000379a setb %r10b - 0x01, 0xc9, //0x0000379e addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x000037a0 xorl $1431655765, %ecx - 0x21, 0xd9, //0x000037a6 andl %ebx, %ecx - 0xf7, 0xd1, //0x000037a8 notl %ecx - 0x21, 0xce, //0x000037aa andl %ecx, %esi - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ac vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000037b1 vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000037b6 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0xdd, 0xca, 0xff, 0xff, //0x000037bb vmovdqu $-13603(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf5, 0xc9, 0xff, 0xff, //0x000037c3 vmovdqu $-13835(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x000037cb vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x000037cf vmovdqa %ymm1, %ymm12 - 0x4c, 0x8b, 0x1c, 0x24, //0x000037d3 movq (%rsp), %r11 - 0xc5, 0x7d, 0x7f, 0xea, //0x000037d7 vmovdqa %ymm13, %ymm2 - 0x48, 0x85, 0xf6, //0x000037db testq %rsi, %rsi - 0x0f, 0x85, 0xfe, 0xf1, 0xff, 0xff, //0x000037de jne LBB0_247 - //0x000037e4 LBB0_634 - 0xc5, 0x7d, 0x7f, 0xe1, //0x000037e4 vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e8 vmovdqa %ymm11, %ymm0 - 0xc5, 0x7d, 0x6f, 0xda, //0x000037ec vmovdqa %ymm2, %ymm11 - 0x48, 0x83, 0xc7, 0x20, //0x000037f0 addq $32, %rdi - 0x49, 0x83, 0xc0, 0xe0, //0x000037f4 addq $-32, %r8 - //0x000037f8 LBB0_635 - 0x4d, 0x85, 0xd2, //0x000037f8 testq %r10, %r10 - 0x0f, 0x85, 0x6e, 0x02, 0x00, 0x00, //0x000037fb jne LBB0_669 - 0x4c, 0x89, 0xf6, //0x00003801 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003804 notq %rsi - 0x4d, 0x89, 0xda, //0x00003807 movq %r11, %r10 - 0x4d, 0x85, 0xc0, //0x0000380a testq %r8, %r8 - 0x0f, 0x84, 0x95, 0x02, 0x00, 0x00, //0x0000380d je LBB0_671 - //0x00003813 LBB0_637 - 0x48, 0x83, 0xc6, 0x01, //0x00003813 addq $1, %rsi - //0x00003817 LBB0_638 - 0x31, 0xd2, //0x00003817 xorl %edx, %edx - 0x48, 0x89, 0xf9, //0x00003819 movq %rdi, %rcx - //0x0000381c LBB0_639 - 0x0f, 0xb6, 0x1c, 0x11, //0x0000381c movzbl (%rcx,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00003820 cmpb $34, %bl - 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x00003823 je LBB0_646 - 0x80, 0xfb, 0x5c, //0x00003829 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000382c je LBB0_644 - 0x48, 0x83, 0xc2, 0x01, //0x00003832 addq $1, %rdx - 0x49, 0x39, 0xd0, //0x00003836 cmpq %rdx, %r8 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003839 jne LBB0_639 - 0xe9, 0x52, 0x00, 0x00, 0x00, //0x0000383f jmp LBB0_642 - //0x00003844 LBB0_644 - 0x49, 0x8d, 0x40, 0xff, //0x00003844 leaq $-1(%r8), %rax - 0x48, 0x39, 0xd0, //0x00003848 cmpq %rdx, %rax - 0x0f, 0x84, 0xad, 0x04, 0x00, 0x00, //0x0000384b je LBB0_707 - 0x48, 0x8d, 0x04, 0x3e, //0x00003851 leaq (%rsi,%rdi), %rax - 0x48, 0x01, 0xd0, //0x00003855 addq %rdx, %rax - 0x49, 0x83, 0xfa, 0xff, //0x00003858 cmpq $-1, %r10 - 0x4c, 0x0f, 0x44, 0xd8, //0x0000385c cmoveq %rax, %r11 - 0x4c, 0x0f, 0x44, 0xd0, //0x00003860 cmoveq %rax, %r10 - 0x48, 0x01, 0xd7, //0x00003864 addq %rdx, %rdi - 0x48, 0x83, 0xc7, 0x02, //0x00003867 addq $2, %rdi - 0x4c, 0x89, 0xc0, //0x0000386b movq %r8, %rax - 0x48, 0x29, 0xd0, //0x0000386e subq %rdx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003871 addq $-2, %rax - 0x49, 0x83, 0xc0, 0xfe, //0x00003875 addq $-2, %r8 - 0x49, 0x39, 0xd0, //0x00003879 cmpq %rdx, %r8 - 0x49, 0x89, 0xc0, //0x0000387c movq %rax, %r8 - 0x0f, 0x85, 0x92, 0xff, 0xff, 0xff, //0x0000387f jne LBB0_638 - 0xe9, 0x74, 0x04, 0x00, 0x00, //0x00003885 jmp LBB0_707 - //0x0000388a LBB0_646 - 0x48, 0x01, 0xd1, //0x0000388a addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000388d addq $1, %rcx - 0xe9, 0x15, 0x02, 0x00, 0x00, //0x00003891 jmp LBB0_672 - //0x00003896 LBB0_642 - 0x80, 0xfb, 0x22, //0x00003896 cmpb $34, %bl - 0x0f, 0x85, 0x5f, 0x04, 0x00, 0x00, //0x00003899 jne LBB0_707 - 0x48, 0x89, 0xf9, //0x0000389f movq %rdi, %rcx - 0x4c, 0x01, 0xc1, //0x000038a2 addq %r8, %rcx - 0xe9, 0x01, 0x02, 0x00, 0x00, //0x000038a5 jmp LBB0_672 - //0x000038aa LBB0_647 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038aa vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038ae vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038b2 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038b7 vmovdqa %ymm15, %ymm12 - 0x49, 0x83, 0xfa, 0xff, //0x000038bc cmpq $-1, %r10 - 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000038c0 jne LBB0_650 - 0x48, 0x89, 0xd8, //0x000038c6 movq %rbx, %rax - 0x4c, 0x29, 0xf0, //0x000038c9 subq %r14, %rax - 0x4c, 0x0f, 0xbc, 0xd2, //0x000038cc bsfq %rdx, %r10 - 0x49, 0x01, 0xc2, //0x000038d0 addq %rax, %r10 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x000038d3 jmp LBB0_650 - //0x000038d8 LBB0_649 - 0xc5, 0x7d, 0x7f, 0xe2, //0x000038d8 vmovdqa %ymm12, %ymm2 - 0xc5, 0x7d, 0x7f, 0xd9, //0x000038dc vmovdqa %ymm11, %ymm1 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038e0 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000038e5 vmovdqa %ymm15, %ymm12 - //0x000038ea LBB0_650 - 0x44, 0x89, 0xd8, //0x000038ea movl %r11d, %eax - 0xf7, 0xd0, //0x000038ed notl %eax - 0x21, 0xd0, //0x000038ef andl %edx, %eax - 0x8d, 0x34, 0x00, //0x000038f1 leal (%rax,%rax), %esi - 0x41, 0x8d, 0x3c, 0x43, //0x000038f4 leal (%r11,%rax,2), %edi - 0xf7, 0xd6, //0x000038f8 notl %esi - 0x21, 0xd6, //0x000038fa andl %edx, %esi - 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000038fc andl $-1431655766, %esi - 0x45, 0x31, 0xdb, //0x00003902 xorl %r11d, %r11d - 0x01, 0xc6, //0x00003905 addl %eax, %esi - 0x41, 0x0f, 0x92, 0xc3, //0x00003907 setb %r11b - 0x01, 0xf6, //0x0000390b addl %esi, %esi - 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000390d xorl $1431655765, %esi - 0x21, 0xfe, //0x00003913 andl %edi, %esi - 0xf7, 0xd6, //0x00003915 notl %esi - 0x21, 0xf1, //0x00003917 andl %esi, %ecx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003919 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000391e vmovdqa %ymm12, %ymm15 - 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003923 vmovdqa %ymm11, %ymm13 - 0xc5, 0xfe, 0x6f, 0x25, 0x70, 0xc9, 0xff, 0xff, //0x00003928 vmovdqu $-13968(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x88, 0xc8, 0xff, 0xff, //0x00003930 vmovdqu $-14200(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd9, //0x00003938 vmovdqa %ymm1, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe2, //0x0000393c vmovdqa %ymm2, %ymm12 - 0x48, 0x85, 0xc9, //0x00003940 testq %rcx, %rcx - 0x0f, 0x85, 0xf0, 0xf0, 0xff, 0xff, //0x00003943 jne LBB0_398 - //0x00003949 LBB0_651 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003949 movl $64, %edx - //0x0000394e LBB0_652 - 0xc5, 0xbd, 0x64, 0xc8, //0x0000394e vpcmpgtb %ymm0, %ymm8, %ymm1 - 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003952 vpcmpgtb %ymm9, %ymm0, %ymm0 - 0xc5, 0xf5, 0xdb, 0xc0, //0x00003957 vpand %ymm0, %ymm1, %ymm0 - 0xc5, 0xfd, 0xd7, 0xf0, //0x0000395b vpmovmskb %ymm0, %esi - 0x0f, 0xbc, 0xfe, //0x0000395f bsfl %esi, %edi - 0x48, 0x85, 0xc9, //0x00003962 testq %rcx, %rcx - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x00003965 je LBB0_655 - 0x85, 0xf6, //0x0000396b testl %esi, %esi - 0xb8, 0x40, 0x00, 0x00, 0x00, //0x0000396d movl $64, %eax - 0x0f, 0x44, 0xf8, //0x00003972 cmovel %eax, %edi - 0x48, 0x39, 0xfa, //0x00003975 cmpq %rdi, %rdx - 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx - 0x0f, 0x87, 0x31, 0x04, 0x00, 0x00, //0x0000397b ja LBB0_725 - 0xc5, 0x7d, 0x7f, 0xea, //0x00003981 vmovdqa %ymm13, %ymm2 - 0x4c, 0x29, 0xf1, //0x00003985 subq %r14, %rcx - 0x48, 0x01, 0xd1, //0x00003988 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000398b addq $1, %rcx - 0x4d, 0x89, 0xd3, //0x0000398f movq %r10, %r11 - 0xe9, 0x57, 0xeb, 0xff, 0xff, //0x00003992 jmp LBB0_461 - //0x00003997 LBB0_655 - 0x85, 0xf6, //0x00003997 testl %esi, %esi - 0x0f, 0x85, 0x23, 0x04, 0x00, 0x00, //0x00003999 jne LBB0_726 - 0xc5, 0x7d, 0x7f, 0xe1, //0x0000399f vmovdqa %ymm12, %ymm1 - 0xc5, 0x7d, 0x7f, 0xd8, //0x000039a3 vmovdqa %ymm11, %ymm0 - 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000039a7 vmovdqa %ymm13, %ymm11 - 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000039ac vmovdqa %ymm15, %ymm12 - 0x48, 0x83, 0xc3, 0x20, //0x000039b1 addq $32, %rbx - 0x49, 0x83, 0xc0, 0xe0, //0x000039b5 addq $-32, %r8 - //0x000039b9 LBB0_657 - 0x4d, 0x85, 0xdb, //0x000039b9 testq %r11, %r11 - 0x0f, 0x85, 0x12, 0x01, 0x00, 0x00, //0x000039bc jne LBB0_673 - 0x4c, 0x89, 0xd6, //0x000039c2 movq %r10, %rsi - 0x4d, 0x85, 0xc0, //0x000039c5 testq %r8, %r8 - 0x0f, 0x84, 0x30, 0x03, 0x00, 0x00, //0x000039c8 je LBB0_707 - //0x000039ce LBB0_659 - 0x48, 0x89, 0xd9, //0x000039ce movq %rbx, %rcx - //0x000039d1 LBB0_660 - 0x0f, 0xb6, 0x11, //0x000039d1 movzbl (%rcx), %edx - 0x80, 0xfa, 0x22, //0x000039d4 cmpb $34, %dl - 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x000039d7 je LBB0_668 - 0x80, 0xfa, 0x5c, //0x000039dd cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x000039e0 je LBB0_665 - 0x80, 0xfa, 0x1f, //0x000039e6 cmpb $31, %dl - 0x0f, 0x86, 0xe1, 0x03, 0x00, 0x00, //0x000039e9 jbe LBB0_727 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000039ef movq $-1, %rdx - 0xbf, 0x01, 0x00, 0x00, 0x00, //0x000039f6 movl $1, %edi - //0x000039fb LBB0_664 - 0x48, 0x01, 0xf9, //0x000039fb addq %rdi, %rcx - 0x49, 0x01, 0xd0, //0x000039fe addq %rdx, %r8 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003a01 jne LBB0_660 - 0xe9, 0xf2, 0x02, 0x00, 0x00, //0x00003a07 jmp LBB0_707 - //0x00003a0c LBB0_665 - 0x49, 0x83, 0xf8, 0x01, //0x00003a0c cmpq $1, %r8 - 0x0f, 0x84, 0xe8, 0x02, 0x00, 0x00, //0x00003a10 je LBB0_707 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003a16 movq $-2, %rdx - 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003a1d movl $2, %edi - 0x48, 0x83, 0xfe, 0xff, //0x00003a22 cmpq $-1, %rsi - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003a26 jne LBB0_664 - 0x48, 0x89, 0xce, //0x00003a2c movq %rcx, %rsi - 0x4c, 0x29, 0xf6, //0x00003a2f subq %r14, %rsi - 0x49, 0x89, 0xf2, //0x00003a32 movq %rsi, %r10 - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a35 jmp LBB0_664 - //0x00003a3a LBB0_668 - 0x4c, 0x29, 0xf1, //0x00003a3a subq %r14, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x00003a3d addq $1, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a41 vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003a46 vmovdqa %ymm11, %ymm2 - 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003a4a vmovdqa %ymm12, %ymm15 - 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xc8, 0xff, 0xff, //0x00003a4f vmovdqu $-14263(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xc7, 0xff, 0xff, //0x00003a57 vmovdqu $-14495(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003a5f vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003a63 vmovdqa %ymm1, %ymm12 - 0x4d, 0x89, 0xd3, //0x00003a67 movq %r10, %r11 - 0xe9, 0x7f, 0xea, 0xff, 0xff, //0x00003a6a jmp LBB0_461 - //0x00003a6f LBB0_669 - 0x4d, 0x85, 0xc0, //0x00003a6f testq %r8, %r8 - 0x0f, 0x84, 0x86, 0x02, 0x00, 0x00, //0x00003a72 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003a78 movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003a7b notq %rsi - 0x48, 0x8d, 0x04, 0x37, //0x00003a7e leaq (%rdi,%rsi), %rax - 0x4c, 0x89, 0xd9, //0x00003a82 movq %r11, %rcx - 0x49, 0x83, 0xfb, 0xff, //0x00003a85 cmpq $-1, %r11 - 0x4d, 0x89, 0xda, //0x00003a89 movq %r11, %r10 - 0x48, 0x0f, 0x44, 0xc8, //0x00003a8c cmoveq %rax, %rcx - 0x4c, 0x0f, 0x44, 0xd0, //0x00003a90 cmoveq %rax, %r10 - 0x48, 0x83, 0xc7, 0x01, //0x00003a94 addq $1, %rdi - 0x49, 0x83, 0xc0, 0xff, //0x00003a98 addq $-1, %r8 - 0x49, 0x89, 0xcb, //0x00003a9c movq %rcx, %r11 - 0x4d, 0x85, 0xc0, //0x00003a9f testq %r8, %r8 - 0x0f, 0x85, 0x6b, 0xfd, 0xff, 0xff, //0x00003aa2 jne LBB0_637 - //0x00003aa8 LBB0_671 - 0x48, 0x89, 0xf9, //0x00003aa8 movq %rdi, %rcx - //0x00003aab LBB0_672 - 0x4c, 0x29, 0xf1, //0x00003aab subq %r14, %rcx - 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003aae vpcmpeqd %ymm9, %ymm9, %ymm9 - 0xc5, 0x7d, 0x7f, 0xda, //0x00003ab3 vmovdqa %ymm11, %ymm2 - 0xc5, 0xfe, 0x6f, 0x25, 0xe1, 0xc7, 0xff, 0xff, //0x00003ab7 vmovdqu $-14367(%rip), %ymm4 /* LCPI0_19+0(%rip) */ - 0xc5, 0xfe, 0x6f, 0x1d, 0xf9, 0xc6, 0xff, 0xff, //0x00003abf vmovdqu $-14599(%rip), %ymm3 /* LCPI0_9+0(%rip) */ - 0xc5, 0x7d, 0x6f, 0xd8, //0x00003ac7 vmovdqa %ymm0, %ymm11 - 0xc5, 0x7d, 0x6f, 0xe1, //0x00003acb vmovdqa %ymm1, %ymm12 - 0xe9, 0x1a, 0xea, 0xff, 0xff, //0x00003acf jmp LBB0_461 - //0x00003ad4 LBB0_673 - 0x4d, 0x85, 0xc0, //0x00003ad4 testq %r8, %r8 - 0x0f, 0x84, 0x21, 0x02, 0x00, 0x00, //0x00003ad7 je LBB0_707 - 0x4c, 0x89, 0xf6, //0x00003add movq %r14, %rsi - 0x48, 0xf7, 0xd6, //0x00003ae0 notq %rsi - 0x48, 0x01, 0xde, //0x00003ae3 addq %rbx, %rsi - 0x49, 0x83, 0xfa, 0xff, //0x00003ae6 cmpq $-1, %r10 - 0x4c, 0x89, 0xd0, //0x00003aea movq %r10, %rax - 0x48, 0x0f, 0x44, 0xc6, //0x00003aed cmoveq %rsi, %rax - 0x49, 0x0f, 0x45, 0xf2, //0x00003af1 cmovneq %r10, %rsi - 0x48, 0x83, 0xc3, 0x01, //0x00003af5 addq $1, %rbx - 0x49, 0x83, 0xc0, 0xff, //0x00003af9 addq $-1, %r8 - 0x49, 0x89, 0xc2, //0x00003afd movq %rax, %r10 - 0x4d, 0x85, 0xc0, //0x00003b00 testq %r8, %r8 - 0x0f, 0x85, 0xc5, 0xfe, 0xff, 0xff, //0x00003b03 jne LBB0_659 - 0xe9, 0xf0, 0x01, 0x00, 0x00, //0x00003b09 jmp LBB0_707 - //0x00003b0e LBB0_675 - 0x4d, 0x89, 0x65, 0x00, //0x00003b0e movq %r12, (%r13) - //0x00003b12 LBB0_677 - 0x48, 0xc7, 0x04, 0x24, 0xff, 0xff, 0xff, 0xff, //0x00003b12 movq $-1, (%rsp) - 0xe9, 0x76, 0x00, 0x00, 0x00, //0x00003b1a jmp LBB0_711 - //0x00003b1f LBB0_705 - 0x48, 0xc7, 0x04, 0x24, 0xf9, 0xff, 0xff, 0xff, //0x00003b1f movq $-7, (%rsp) - 0xe9, 0x69, 0x00, 0x00, 0x00, //0x00003b27 jmp LBB0_711 - //0x00003b2c LBB0_679 - 0x49, 0x83, 0xc0, 0xff, //0x00003b2c addq $-1, %r8 - 0x4c, 0x89, 0x04, 0x24, //0x00003b30 movq %r8, (%rsp) - 0xe9, 0x5c, 0x00, 0x00, 0x00, //0x00003b34 jmp LBB0_711 - //0x00003b39 LBB0_463 - 0x49, 0x83, 0xc1, 0xff, //0x00003b39 addq $-1, %r9 - 0x4c, 0x89, 0x0c, 0x24, //0x00003b3d movq %r9, (%rsp) - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x00003b41 jmp LBB0_711 - //0x00003b46 LBB0_680 - 0x49, 0x83, 0xfa, 0xff, //0x00003b46 cmpq $-1, %r10 - 0x0f, 0x85, 0x7c, 0x00, 0x00, 0x00, //0x00003b4a jne LBB0_703 - //0x00003b50 LBB0_681 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003b50 movq $-1, %r10 - 0x4d, 0x89, 0xc7, //0x00003b57 movq %r8, %r15 - 0xe9, 0x6d, 0x00, 0x00, 0x00, //0x00003b5a jmp LBB0_703 - //0x00003b5f LBB0_682 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003b5f movq $-1, %rcx - 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00003b66 jmp LBB0_684 - //0x00003b6b LBB0_178 - 0x48, 0x83, 0xc3, 0xff, //0x00003b6b addq $-1, %rbx - 0x48, 0x89, 0x1c, 0x24, //0x00003b6f movq %rbx, (%rsp) - 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00003b73 jmp LBB0_711 - //0x00003b78 LBB0_683 - 0x4c, 0x89, 0xe9, //0x00003b78 movq %r13, %rcx - //0x00003b7b LBB0_684 - 0x48, 0x8b, 0x54, 0x24, 0x30, //0x00003b7b movq $48(%rsp), %rdx - 0x48, 0x8b, 0x02, //0x00003b80 movq (%rdx), %rax - 0x48, 0x29, 0xc8, //0x00003b83 subq %rcx, %rax - 0x48, 0x83, 0xc0, 0xfe, //0x00003b86 addq $-2, %rax - 0x48, 0x89, 0x02, //0x00003b8a movq %rax, (%rdx) - //0x00003b8d LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003b8d movq $-2, (%rsp) - //0x00003b95 LBB0_711 - 0x48, 0x8b, 0x04, 0x24, //0x00003b95 movq (%rsp), %rax - 0x48, 0x8d, 0x65, 0xd8, //0x00003b99 leaq $-40(%rbp), %rsp - 0x5b, //0x00003b9d popq %rbx - 0x41, 0x5c, //0x00003b9e popq %r12 - 0x41, 0x5d, //0x00003ba0 popq %r13 - 0x41, 0x5e, //0x00003ba2 popq %r14 - 0x41, 0x5f, //0x00003ba4 popq %r15 - 0x5d, //0x00003ba6 popq %rbp - 0xc5, 0xf8, 0x77, //0x00003ba7 vzeroupper - 0xc3, //0x00003baa retq - //0x00003bab LBB0_686 - 0x49, 0x89, 0x55, 0x00, //0x00003bab movq %rdx, (%r13) - 0xe9, 0xe1, 0xff, 0xff, 0xff, //0x00003baf jmp LBB0_711 - //0x00003bb4 LBB0_699 - 0x49, 0x83, 0xff, 0xff, //0x00003bb4 cmpq $-1, %r15 - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003bb8 jne LBB0_702 - 0x4c, 0x0f, 0xbc, 0xfe, //0x00003bbe bsfq %rsi, %r15 - //0x00003bc2 LBB0_701 - 0x4d, 0x01, 0xd7, //0x00003bc2 addq %r10, %r15 - //0x00003bc5 LBB0_702 - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003bc5 movq $-2, %r10 - //0x00003bcc LBB0_703 - 0x4c, 0x89, 0x14, 0x24, //0x00003bcc movq %r10, (%rsp) - 0x4d, 0x89, 0x7d, 0x00, //0x00003bd0 movq %r15, (%r13) - 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x00003bd4 jmp LBB0_711 - //0x00003bd9 LBB0_687 - 0x80, 0xfa, 0x61, //0x00003bd9 cmpb $97, %dl - 0x0f, 0x85, 0xab, 0xff, 0xff, 0xff, //0x00003bdc jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003be2 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003be6 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003bea cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x97, 0xff, 0xff, 0xff, //0x00003bf0 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003bf6 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003bfa movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003bfe cmpb $115, $2(%r14,%rcx) - 0x0f, 0x85, 0x83, 0xff, 0xff, 0xff, //0x00003c04 jne LBB0_710 - 0x48, 0xc7, 0x04, 0x24, 0xfe, 0xff, 0xff, 0xff, //0x00003c0a movq $-2, (%rsp) - 0x48, 0x8d, 0x41, 0x03, //0x00003c12 leaq $3(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c16 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003c1a cmpb $101, $3(%r14,%rcx) - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003c20 jne LBB0_711 - 0x48, 0x83, 0xc1, 0x04, //0x00003c26 addq $4, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003c2a movq %rcx, (%r13) - 0xe9, 0x62, 0xff, 0xff, 0xff, //0x00003c2e jmp LBB0_711 - //0x00003c33 LBB0_267 - 0x49, 0x89, 0x45, 0x00, //0x00003c33 movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003c37 cmpb $110, (%r14,%rax) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003c3c jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c42 movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003c46 cmpb $117, (%r14,%rcx) - 0x0f, 0x85, 0x3c, 0xff, 0xff, 0xff, //0x00003c4b jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c51 leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c55 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003c59 cmpb $108, $1(%r14,%rcx) - 0x0f, 0x85, 0x28, 0xff, 0xff, 0xff, //0x00003c5f jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003c65 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003c69 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003c6d cmpb $108, $2(%r14,%rcx) - 0x0f, 0x84, 0x4b, 0x00, 0x00, 0x00, //0x00003c73 je LBB0_696 - 0xe9, 0x0f, 0xff, 0xff, 0xff, //0x00003c79 jmp LBB0_710 - //0x00003c7e LBB0_692 - 0x49, 0x89, 0x45, 0x00, //0x00003c7e movq %rax, (%r13) - 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003c82 cmpb $116, (%r14,%rax) - 0x0f, 0x85, 0x00, 0xff, 0xff, 0xff, //0x00003c87 jne LBB0_710 - 0x49, 0x89, 0x4d, 0x00, //0x00003c8d movq %rcx, (%r13) - 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003c91 cmpb $114, (%r14,%rcx) - 0x0f, 0x85, 0xf1, 0xfe, 0xff, 0xff, //0x00003c96 jne LBB0_710 - 0x48, 0x8d, 0x41, 0x01, //0x00003c9c leaq $1(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003ca0 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003ca4 cmpb $117, $1(%r14,%rcx) - 0x0f, 0x85, 0xdd, 0xfe, 0xff, 0xff, //0x00003caa jne LBB0_710 - 0x48, 0x8d, 0x41, 0x02, //0x00003cb0 leaq $2(%rcx), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003cb4 movq %rax, (%r13) - 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003cb8 cmpb $101, $2(%r14,%rcx) - 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003cbe jne LBB0_710 - //0x00003cc4 LBB0_696 - 0x48, 0x83, 0xc1, 0x03, //0x00003cc4 addq $3, %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00003cc8 movq %rcx, (%r13) - 0xe9, 0xbc, 0xfe, 0xff, 0xff, //0x00003ccc jmp LBB0_710 - //0x00003cd1 LBB0_698 - 0x48, 0x83, 0x04, 0x24, 0xff, //0x00003cd1 addq $-1, (%rsp) - 0xe9, 0xba, 0xfe, 0xff, 0xff, //0x00003cd6 jmp LBB0_711 - //0x00003cdb LBB0_264 - 0x48, 0x83, 0xc1, 0xff, //0x00003cdb addq $-1, %rcx - 0x48, 0x89, 0x0c, 0x24, //0x00003cdf movq %rcx, (%rsp) - 0xe9, 0xad, 0xfe, 0xff, 0xff, //0x00003ce3 jmp LBB0_711 - //0x00003ce8 LBB0_704 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003ce8 movq $-1, %rcx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00003cef jmp LBB0_709 - //0x00003cf4 LBB0_706 - 0x48, 0x83, 0xf9, 0xff, //0x00003cf4 cmpq $-1, %rcx - 0x0f, 0x85, 0x58, 0x00, 0x00, 0x00, //0x00003cf8 jne LBB0_716 + 0x48, 0x21, 0xcf, //0x00001e0f andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001e12 jne LBB0_340 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00001e18 jmp LBB0_343 + //0x00001e1d LBB0_342 + 0xc4, 0x41, 0x7d, 0x6f, 0xd5, //0x00001e1d vmovdqa %ymm13, %ymm10 + 0xc4, 0x41, 0x7d, 0x6f, 0xef, //0x00001e22 vmovdqa %ymm15, %ymm13 + //0x00001e27 LBB0_343 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e27 sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e2b popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e30 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e33 addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e37 addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e3b movq %r13, %r11 + 0x49, 0x83, 0xf9, 0x40, //0x00001e3e cmpq $64, %r9 + 0x0f, 0x8d, 0x7a, 0xfe, 0xff, 0xff, //0x00001e42 jge LBB0_335 + 0xe9, 0x1e, 0xfd, 0xff, 0xff, //0x00001e48 jmp LBB0_344 + //0x00001e4d LBB0_360 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00001e4d movq $32(%rsp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001e52 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x07, //0x00001e56 movq (%r15), %r8 + 0x4d, 0x29, 0xc1, //0x00001e59 subq %r8, %r9 + 0x4d, 0x01, 0xc6, //0x00001e5c addq %r8, %r14 + 0x45, 0x31, 0xdb, //0x00001e5f xorl %r11d, %r11d + 0x45, 0x31, 0xd2, //0x00001e62 xorl %r10d, %r10d + 0x45, 0x31, 0xff, //0x00001e65 xorl %r15d, %r15d + 0x31, 0xdb, //0x00001e68 xorl %ebx, %ebx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001e6a jmp LBB0_362 + //0x00001e6f LBB0_361 + 0x49, 0xc1, 0xfd, 0x3f, //0x00001e6f sarq $63, %r13 + 0xf3, 0x48, 0x0f, 0xb8, 0xce, //0x00001e73 popcntq %rsi, %rcx + 0x49, 0x01, 0xcf, //0x00001e78 addq %rcx, %r15 + 0x49, 0x83, 0xc6, 0x40, //0x00001e7b addq $64, %r14 + 0x49, 0x83, 0xc1, 0xc0, //0x00001e7f addq $-64, %r9 + 0x4d, 0x89, 0xeb, //0x00001e83 movq %r13, %r11 + //0x00001e86 LBB0_362 + 0x49, 0x83, 0xf9, 0x40, //0x00001e86 cmpq $64, %r9 + 0x0f, 0x8c, 0x2d, 0x01, 0x00, 0x00, //0x00001e8a jl LBB0_370 + //0x00001e90 LBB0_363 + 0xc4, 0xc1, 0x7e, 0x6f, 0x0e, //0x00001e90 vmovdqu (%r14), %ymm1 + 0xc4, 0xc1, 0x7e, 0x6f, 0x46, 0x20, //0x00001e95 vmovdqu $32(%r14), %ymm0 + 0xc5, 0xf5, 0x74, 0xd7, //0x00001e9b vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00001e9f vpmovmskb %ymm2, %edx + 0xc5, 0xfd, 0x74, 0xd7, //0x00001ea3 vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001ea7 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001eab shlq $32, %rcx + 0x48, 0x09, 0xca, //0x00001eaf orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001eb2 movq %rdx, %rcx + 0x4c, 0x09, 0xd1, //0x00001eb5 orq %r10, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001eb8 jne LBB0_365 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001ebe movq $-1, %rdx + 0x45, 0x31, 0xd2, //0x00001ec5 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001ec8 jmp LBB0_366 + //0x00001ecd LBB0_365 + 0x4c, 0x89, 0xd1, //0x00001ecd movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x00001ed0 notq %rcx + 0x48, 0x21, 0xd1, //0x00001ed3 andq %rdx, %rcx + 0x4c, 0x8d, 0x2c, 0x09, //0x00001ed6 leaq (%rcx,%rcx), %r13 + 0x4d, 0x09, 0xd5, //0x00001eda orq %r10, %r13 + 0x4c, 0x89, 0xef, //0x00001edd movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001ee0 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001ee3 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001eed andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001ef0 andq %rdi, %rdx + 0x45, 0x31, 0xd2, //0x00001ef3 xorl %r10d, %r10d + 0x48, 0x01, 0xca, //0x00001ef6 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc2, //0x00001ef9 setb %r10b + 0x48, 0x01, 0xd2, //0x00001efd addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001f00 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001f0a xorq %rcx, %rdx + 0x4c, 0x21, 0xea, //0x00001f0d andq %r13, %rdx + 0x48, 0xf7, 0xd2, //0x00001f10 notq %rdx + //0x00001f13 LBB0_366 + 0xc5, 0xfd, 0x74, 0xd6, //0x00001f13 vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f17 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f1b shlq $32, %rcx + 0xc5, 0xf5, 0x74, 0xd6, //0x00001f1f vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f23 vpmovmskb %ymm2, %esi + 0x48, 0x09, 0xce, //0x00001f27 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001f2a andq %rdx, %rsi + 0xc4, 0xe1, 0xf9, 0x6e, 0xd6, //0x00001f2d vmovq %rsi, %xmm2 + 0xc4, 0xe3, 0x69, 0x44, 0x15, 0x64, 0xe1, 0xff, 0xff, 0x00, //0x00001f32 vpclmulqdq $0, $-7836(%rip), %xmm2, %xmm2 /* LCPI0_26+0(%rip) */ + 0xc4, 0xc1, 0xf9, 0x7e, 0xd5, //0x00001f3c vmovq %xmm2, %r13 + 0x4d, 0x31, 0xdd, //0x00001f41 xorq %r11, %r13 + 0xc5, 0xa5, 0x74, 0xd1, //0x00001f44 vpcmpeqb %ymm1, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xf2, //0x00001f48 vpmovmskb %ymm2, %esi + 0xc5, 0xa5, 0x74, 0xd0, //0x00001f4c vpcmpeqb %ymm0, %ymm11, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00001f50 vpmovmskb %ymm2, %ecx + 0x48, 0xc1, 0xe1, 0x20, //0x00001f54 shlq $32, %rcx + 0x48, 0x09, 0xce, //0x00001f58 orq %rcx, %rsi + 0x4c, 0x89, 0xe9, //0x00001f5b movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00001f5e notq %rcx + 0x48, 0x21, 0xce, //0x00001f61 andq %rcx, %rsi + 0xc5, 0x9d, 0x74, 0xc9, //0x00001f64 vpcmpeqb %ymm1, %ymm12, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf9, //0x00001f68 vpmovmskb %ymm1, %edi + 0xc5, 0x9d, 0x74, 0xc0, //0x00001f6c vpcmpeqb %ymm0, %ymm12, %ymm0 + 0xc5, 0xfd, 0xd7, 0xd0, //0x00001f70 vpmovmskb %ymm0, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00001f74 shlq $32, %rdx + 0x48, 0x09, 0xd7, //0x00001f78 orq %rdx, %rdi + 0x48, 0x21, 0xcf, //0x00001f7b andq %rcx, %rdi + 0x0f, 0x84, 0xeb, 0xfe, 0xff, 0xff, //0x00001f7e je LBB0_361 + 0x4c, 0x8b, 0x1c, 0x24, //0x00001f84 movq (%rsp), %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f88 .p2align 4, 0x90 + //0x00001f90 LBB0_368 + 0x48, 0x8d, 0x4f, 0xff, //0x00001f90 leaq $-1(%rdi), %rcx + 0x48, 0x89, 0xca, //0x00001f94 movq %rcx, %rdx + 0x48, 0x21, 0xf2, //0x00001f97 andq %rsi, %rdx + 0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00001f9a popcntq %rdx, %rdx + 0x4c, 0x01, 0xfa, //0x00001f9f addq %r15, %rdx + 0x48, 0x39, 0xda, //0x00001fa2 cmpq %rbx, %rdx + 0x0f, 0x86, 0x7a, 0x01, 0x00, 0x00, //0x00001fa5 jbe LBB0_386 + 0x48, 0x83, 0xc3, 0x01, //0x00001fab addq $1, %rbx + 0x48, 0x21, 0xcf, //0x00001faf andq %rcx, %rdi + 0x0f, 0x85, 0xd8, 0xff, 0xff, 0xff, //0x00001fb2 jne LBB0_368 + 0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00001fb8 jmp LBB0_361 + //0x00001fbd LBB0_370 + 0x4d, 0x85, 0xc9, //0x00001fbd testq %r9, %r9 + 0x0f, 0x8e, 0xd2, 0x1e, 0x00, 0x00, //0x00001fc0 jle LBB0_733 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00001fc6 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00001fca vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00001fce vmovdqa %ymm13, %ymm11 + 0xc5, 0xf9, 0xef, 0xc0, //0x00001fd3 vpxor %xmm0, %xmm0, %xmm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x60, //0x00001fd7 vmovdqu %ymm0, $96(%rsp) + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00001fdd vmovdqu %ymm0, $64(%rsp) + 0x44, 0x89, 0xf1, //0x00001fe3 movl %r14d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001fe6 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001fec cmpl $4033, %ecx + 0x0f, 0x82, 0x27, 0x00, 0x00, 0x00, //0x00001ff2 jb LBB0_374 + 0x49, 0x83, 0xf9, 0x20, //0x00001ff8 cmpq $32, %r9 + 0x0f, 0x82, 0x44, 0x00, 0x00, 0x00, //0x00001ffc jb LBB0_375 + 0xc4, 0xc1, 0x7e, 0x6f, 0x06, //0x00002002 vmovdqu (%r14), %ymm0 + 0xc5, 0xfe, 0x7f, 0x44, 0x24, 0x40, //0x00002007 vmovdqu %ymm0, $64(%rsp) + 0x49, 0x83, 0xc6, 0x20, //0x0000200d addq $32, %r14 + 0x49, 0x8d, 0x79, 0xe0, //0x00002011 leaq $-32(%r9), %rdi + 0x48, 0x8d, 0x74, 0x24, 0x60, //0x00002015 leaq $96(%rsp), %rsi + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x0000201a jmp LBB0_376 + //0x0000201f LBB0_374 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000201f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002024 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x6f, 0xe2, 0xff, 0xff, //0x00002029 vmovdqu $-7569(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x87, 0xe1, 0xff, 0xff, //0x00002031 vmovdqu $-7801(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002039 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000203d vmovdqa %ymm2, %ymm12 + 0xe9, 0x4a, 0xfe, 0xff, 0xff, //0x00002041 jmp LBB0_363 + //0x00002046 LBB0_375 + 0x48, 0x8d, 0x74, 0x24, 0x40, //0x00002046 leaq $64(%rsp), %rsi + 0x4c, 0x89, 0xcf, //0x0000204b movq %r9, %rdi + //0x0000204e LBB0_376 + 0x48, 0x83, 0xff, 0x10, //0x0000204e cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002052 jb LBB0_377 + 0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x00002058 vmovdqu (%r14), %xmm0 + 0xc5, 0xfa, 0x7f, 0x06, //0x0000205d vmovdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc6, 0x10, //0x00002061 addq $16, %r14 + 0x48, 0x83, 0xc6, 0x10, //0x00002065 addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00002069 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x0000206d cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00002071 jae LBB0_384 + //0x00002077 LBB0_378 + 0x48, 0x83, 0xff, 0x04, //0x00002077 cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x0000207b jl LBB0_379 + //0x00002081 LBB0_385 + 0x41, 0x8b, 0x0e, //0x00002081 movl (%r14), %ecx + 0x89, 0x0e, //0x00002084 movl %ecx, (%rsi) + 0x49, 0x83, 0xc6, 0x04, //0x00002086 addq $4, %r14 + 0x48, 0x83, 0xc6, 0x04, //0x0000208a addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x0000208e addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00002092 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002096 jae LBB0_380 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x0000209c jmp LBB0_381 + //0x000020a1 LBB0_377 + 0x48, 0x83, 0xff, 0x08, //0x000020a1 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x000020a5 jb LBB0_378 + //0x000020ab LBB0_384 + 0x49, 0x8b, 0x0e, //0x000020ab movq (%r14), %rcx + 0x48, 0x89, 0x0e, //0x000020ae movq %rcx, (%rsi) + 0x49, 0x83, 0xc6, 0x08, //0x000020b1 addq $8, %r14 + 0x48, 0x83, 0xc6, 0x08, //0x000020b5 addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x000020b9 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000020bd cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x000020c1 jge LBB0_385 + //0x000020c7 LBB0_379 + 0x48, 0x83, 0xff, 0x02, //0x000020c7 cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x000020cb jb LBB0_381 + //0x000020d1 LBB0_380 + 0x41, 0x0f, 0xb7, 0x0e, //0x000020d1 movzwl (%r14), %ecx + 0x66, 0x89, 0x0e, //0x000020d5 movw %cx, (%rsi) + 0x49, 0x83, 0xc6, 0x02, //0x000020d8 addq $2, %r14 + 0x48, 0x83, 0xc6, 0x02, //0x000020dc addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x000020e0 addq $-2, %rdi + //0x000020e4 LBB0_381 + 0x4c, 0x89, 0xf2, //0x000020e4 movq %r14, %rdx + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x000020e7 leaq $64(%rsp), %r14 + 0x48, 0x85, 0xff, //0x000020ec testq %rdi, %rdi + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000020ef vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000020f4 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x9f, 0xe1, 0xff, 0xff, //0x000020f9 vmovdqu $-7777(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xb7, 0xe0, 0xff, 0xff, //0x00002101 vmovdqu $-8009(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00002109 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000210d vmovdqa %ymm2, %ymm12 + 0x0f, 0x84, 0x79, 0xfd, 0xff, 0xff, //0x00002111 je LBB0_363 + 0x8a, 0x0a, //0x00002117 movb (%rdx), %cl + 0x88, 0x0e, //0x00002119 movb %cl, (%rsi) + 0x4c, 0x8d, 0x74, 0x24, 0x40, //0x0000211b leaq $64(%rsp), %r14 + 0xe9, 0x6b, 0xfd, 0xff, 0xff, //0x00002120 jmp LBB0_363 + //0x00002125 LBB0_386 + 0x48, 0x8b, 0x74, 0x24, 0x20, //0x00002125 movq $32(%rsp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x0000212a movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd7, //0x0000212e bsfq %rdi, %rdx + 0x4c, 0x29, 0xca, //0x00002132 subq %r9, %rdx + 0x48, 0x01, 0xd1, //0x00002135 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x00002138 addq $1, %rcx + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000213c movq $8(%rsp), %r15 + 0x49, 0x89, 0x0f, //0x00002141 movq %rcx, (%r15) + 0x48, 0x8b, 0x56, 0x08, //0x00002144 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x00002148 cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000214b cmovaq %rdx, %rcx + 0x49, 0x89, 0x0f, //0x0000214f movq %rcx, (%r15) + 0x0f, 0x86, 0x5d, 0xe9, 0xff, 0xff, //0x00002152 jbe LBB0_387 + 0xe9, 0xb8, 0x1b, 0x00, 0x00, //0x00002158 jmp LBB0_728 + //0x0000215d LBB0_388 + 0x0f, 0xbc, 0xd9, //0x0000215d bsfl %ecx, %ebx + 0x48, 0x89, 0xd9, //0x00002160 movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x00002163 subq %rdi, %rcx + 0x49, 0x89, 0x0f, //0x00002166 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002169 testq %rcx, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x0000216c movq (%rsp), %r11 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002170 movabsq $4294977024, %rdi + 0x0f, 0x8e, 0x40, 0x00, 0x00, 0x00, //0x0000217a jle LBB0_393 + 0x49, 0x01, 0xd8, //0x00002180 addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002183 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002186 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002189 .p2align 4, 0x90 + //0x00002190 LBB0_390 + 0x0f, 0xb6, 0x0e, //0x00002190 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002193 cmpq $32, %rcx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00002197 ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xcf, //0x0000219d btq %rcx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x000021a1 jae LBB0_393 + 0x49, 0x89, 0x17, //0x000021a7 movq %rdx, (%r15) + 0x49, 0x83, 0xc0, 0xff, //0x000021aa addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x000021ae addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x000021b2 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x000021b6 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x000021ba jg LBB0_390 + //0x000021c0 LBB0_393 + 0x48, 0x85, 0xc0, //0x000021c0 testq %rax, %rax + 0x0f, 0x8f, 0xd7, 0xe1, 0xff, 0xff, //0x000021c3 jg LBB0_3 + 0xe9, 0x61, 0x1c, 0x00, 0x00, //0x000021c9 jmp LBB0_394 + //0x000021ce LBB0_395 + 0x49, 0x8d, 0x55, 0xff, //0x000021ce leaq $-1(%r13), %rdx + 0x48, 0x39, 0xd6, //0x000021d2 cmpq %rdx, %rsi + 0x49, 0xf7, 0xd5, //0x000021d5 notq %r13 + 0x4d, 0x0f, 0x45, 0xea, //0x000021d8 cmovneq %r10, %r13 + 0x84, 0xc9, //0x000021dc testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xd5, //0x000021de cmovneq %r13, %r10 + 0xe9, 0x2e, 0xf6, 0xff, 0xff, //0x000021e2 jmp LBB0_293 + //0x000021e7 LBB0_396 + 0x4d, 0x89, 0xc5, //0x000021e7 movq %r8, %r13 + 0x4d, 0x29, 0xcd, //0x000021ea subq %r9, %r13 + 0x0f, 0x84, 0x8b, 0x1c, 0x00, 0x00, //0x000021ed je LBB0_732 + 0x49, 0x83, 0xfd, 0x40, //0x000021f3 cmpq $64, %r13 + 0x0f, 0x82, 0x13, 0x0c, 0x00, 0x00, //0x000021f7 jb LBB0_543 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000021fd movq $-1, %r15 + 0x4c, 0x89, 0xc8, //0x00002204 movq %r9, %rax + 0x45, 0x31, 0xdb, //0x00002207 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000220a .p2align 4, 0x90 + //0x00002210 LBB0_399 + 0xc4, 0xc1, 0x7e, 0x6f, 0x04, 0x06, //0x00002210 vmovdqu (%r14,%rax), %ymm0 + 0xc4, 0xc1, 0x7e, 0x6f, 0x4c, 0x06, 0x20, //0x00002216 vmovdqu $32(%r14,%rax), %ymm1 + 0xc5, 0xfd, 0x74, 0xd6, //0x0000221d vpcmpeqb %ymm6, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xfa, //0x00002221 vpmovmskb %ymm2, %edi + 0xc5, 0xf5, 0x74, 0xd6, //0x00002225 vpcmpeqb %ymm6, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xda, //0x00002229 vpmovmskb %ymm2, %ebx + 0xc5, 0xfd, 0x74, 0xd7, //0x0000222d vpcmpeqb %ymm7, %ymm0, %ymm2 + 0xc5, 0xfd, 0xd7, 0xd2, //0x00002231 vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0x74, 0xd7, //0x00002235 vpcmpeqb %ymm7, %ymm1, %ymm2 + 0xc5, 0xfd, 0xd7, 0xca, //0x00002239 vpmovmskb %ymm2, %ecx + 0xc5, 0xbd, 0x64, 0xd1, //0x0000223d vpcmpgtb %ymm1, %ymm8, %ymm2 + 0xc4, 0xc1, 0x75, 0x64, 0xc9, //0x00002241 vpcmpgtb %ymm9, %ymm1, %ymm1 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002246 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0xfd, 0xd7, 0xf1, //0x0000224a vpmovmskb %ymm1, %esi + 0x48, 0xc1, 0xe3, 0x20, //0x0000224e shlq $32, %rbx + 0x48, 0x09, 0xdf, //0x00002252 orq %rbx, %rdi + 0x48, 0xc1, 0xe1, 0x20, //0x00002255 shlq $32, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00002259 shlq $32, %rsi + 0x48, 0x09, 0xca, //0x0000225d orq %rcx, %rdx + 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x00002260 jne LBB0_410 + 0x4d, 0x85, 0xdb, //0x00002266 testq %r11, %r11 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00002269 jne LBB0_412 + 0x45, 0x31, 0xdb, //0x0000226f xorl %r11d, %r11d + //0x00002272 LBB0_402 + 0xc5, 0xbd, 0x64, 0xc8, //0x00002272 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00002276 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000227b vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x0000227f vpmovmskb %ymm0, %ecx + 0x48, 0x09, 0xce, //0x00002283 orq %rcx, %rsi + 0x48, 0x85, 0xff, //0x00002286 testq %rdi, %rdi + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00002289 jne LBB0_413 + 0x48, 0x85, 0xf6, //0x0000228f testq %rsi, %rsi + 0x0f, 0x85, 0x97, 0x1a, 0x00, 0x00, //0x00002292 jne LBB0_709 + 0x49, 0x83, 0xc5, 0xc0, //0x00002298 addq $-64, %r13 + 0x48, 0x83, 0xc0, 0x40, //0x0000229c addq $64, %rax + 0x49, 0x83, 0xfd, 0x3f, //0x000022a0 cmpq $63, %r13 + 0x0f, 0x87, 0x66, 0xff, 0xff, 0xff, //0x000022a4 ja LBB0_399 + 0xe9, 0x93, 0x09, 0x00, 0x00, //0x000022aa jmp LBB0_405 + //0x000022af LBB0_410 + 0x49, 0x83, 0xff, 0xff, //0x000022af cmpq $-1, %r15 + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x000022b3 jne LBB0_412 + 0x4c, 0x0f, 0xbc, 0xfa, //0x000022b9 bsfq %rdx, %r15 + 0x49, 0x01, 0xc7, //0x000022bd addq %rax, %r15 + //0x000022c0 LBB0_412 + 0x4c, 0x89, 0xd9, //0x000022c0 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x000022c3 notq %rcx + 0x48, 0x21, 0xd1, //0x000022c6 andq %rdx, %rcx + 0x4c, 0x8d, 0x14, 0x09, //0x000022c9 leaq (%rcx,%rcx), %r10 + 0x4d, 0x09, 0xda, //0x000022cd orq %r11, %r10 + 0x4c, 0x89, 0xd3, //0x000022d0 movq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x000022d3 notq %rbx + 0x48, 0x21, 0xd3, //0x000022d6 andq %rdx, %rbx + 0x48, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000022d9 movabsq $-6148914691236517206, %rdx + 0x48, 0x21, 0xd3, //0x000022e3 andq %rdx, %rbx + 0x45, 0x31, 0xdb, //0x000022e6 xorl %r11d, %r11d + 0x48, 0x01, 0xcb, //0x000022e9 addq %rcx, %rbx + 0x41, 0x0f, 0x92, 0xc3, //0x000022ec setb %r11b + 0x48, 0x01, 0xdb, //0x000022f0 addq %rbx, %rbx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000022f3 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcb, //0x000022fd xorq %rcx, %rbx + 0x4c, 0x21, 0xd3, //0x00002300 andq %r10, %rbx + 0x48, 0xf7, 0xd3, //0x00002303 notq %rbx + 0x48, 0x21, 0xdf, //0x00002306 andq %rbx, %rdi + 0xe9, 0x64, 0xff, 0xff, 0xff, //0x00002309 jmp LBB0_402 + //0x0000230e LBB0_413 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000230e bsfq %rdi, %rcx + 0x48, 0x85, 0xf6, //0x00002312 testq %rsi, %rsi + 0x0f, 0x84, 0xa4, 0x03, 0x00, 0x00, //0x00002315 je LBB0_470 + 0x48, 0x0f, 0xbc, 0xd6, //0x0000231b bsfq %rsi, %rdx + 0xe9, 0xa0, 0x03, 0x00, 0x00, //0x0000231f jmp LBB0_471 + //0x00002324 LBB0_415 + 0x41, 0x8a, 0x4d, 0x01, //0x00002324 movb $1(%r13), %cl + 0x80, 0xc1, 0xd2, //0x00002328 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000232b cmpb $55, %cl + 0x0f, 0x87, 0x84, 0xf2, 0xff, 0xff, //0x0000232e ja LBB0_260 + 0x0f, 0xb6, 0xc9, //0x00002334 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00002337 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00002341 btq %rcx, %rdx + 0x48, 0x89, 0xc1, //0x00002345 movq %rax, %rcx + 0x0f, 0x83, 0x00, 0x08, 0x00, 0x00, //0x00002348 jae LBB0_514 + //0x0000234e LBB0_417 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000234e movq $-1, %r15 + 0x49, 0x83, 0xfb, 0x20, //0x00002355 cmpq $32, %r11 + 0x0f, 0x82, 0x5d, 0x0a, 0x00, 0x00, //0x00002359 jb LBB0_540 + 0x45, 0x31, 0xc0, //0x0000235f xorl %r8d, %r8d + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002362 movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002369 movq $-1, %r9 + //0x00002370 .p2align 4, 0x90 + //0x00002370 LBB0_419 + 0xc4, 0x81, 0x7e, 0x6f, 0x44, 0x05, 0x00, //0x00002370 vmovdqu (%r13,%r8), %ymm0 + 0xc4, 0xc1, 0x7d, 0x64, 0xca, //0x00002377 vpcmpgtb %ymm10, %ymm0, %ymm1 + 0xc5, 0x95, 0x64, 0xd0, //0x0000237c vpcmpgtb %ymm0, %ymm13, %ymm2 + 0xc5, 0xed, 0xdb, 0xc9, //0x00002380 vpand %ymm1, %ymm2, %ymm1 + 0xc5, 0x85, 0x74, 0xd0, //0x00002384 vpcmpeqb %ymm0, %ymm15, %ymm2 + 0xc5, 0xfd, 0x74, 0x1d, 0xd0, 0xde, 0xff, 0xff, //0x00002388 vpcmpeqb $-8496(%rip), %ymm0, %ymm3 /* LCPI0_17+0(%rip) */ + 0xc5, 0xe5, 0xeb, 0xd2, //0x00002390 vpor %ymm2, %ymm3, %ymm2 + 0xc5, 0x8d, 0xdb, 0xd8, //0x00002394 vpand %ymm0, %ymm14, %ymm3 + 0xc5, 0xfd, 0x74, 0x05, 0xe0, 0xde, 0xff, 0xff, //0x00002398 vpcmpeqb $-8480(%rip), %ymm0, %ymm0 /* LCPI0_18+0(%rip) */ + 0xc5, 0xfd, 0xd7, 0xf8, //0x000023a0 vpmovmskb %ymm0, %edi + 0xc5, 0xe5, 0x74, 0xdc, //0x000023a4 vpcmpeqb %ymm4, %ymm3, %ymm3 + 0xc5, 0xfd, 0xd7, 0xf3, //0x000023a8 vpmovmskb %ymm3, %esi + 0xc5, 0xfd, 0xd7, 0xd2, //0x000023ac vpmovmskb %ymm2, %edx + 0xc5, 0xf5, 0xeb, 0xc0, //0x000023b0 vpor %ymm0, %ymm1, %ymm0 + 0xc5, 0xe5, 0xeb, 0xca, //0x000023b4 vpor %ymm2, %ymm3, %ymm1 + 0xc5, 0xfd, 0xeb, 0xc1, //0x000023b8 vpor %ymm1, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xc8, //0x000023bc vpmovmskb %ymm0, %ecx + 0x48, 0xf7, 0xd1, //0x000023c0 notq %rcx + 0x48, 0x0f, 0xbc, 0xc9, //0x000023c3 bsfq %rcx, %rcx + 0x83, 0xf9, 0x20, //0x000023c7 cmpl $32, %ecx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000023ca je LBB0_421 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x000023d0 movl $-1, %ebx + 0xd3, 0xe3, //0x000023d5 shll %cl, %ebx + 0xf7, 0xd3, //0x000023d7 notl %ebx + 0x21, 0xdf, //0x000023d9 andl %ebx, %edi + 0x21, 0xde, //0x000023db andl %ebx, %esi + 0x21, 0xd3, //0x000023dd andl %edx, %ebx + 0x89, 0xda, //0x000023df movl %ebx, %edx + //0x000023e1 LBB0_421 + 0x8d, 0x5f, 0xff, //0x000023e1 leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x000023e4 andl %edi, %ebx + 0xc5, 0xfe, 0x6f, 0x1d, 0xd2, 0xdd, 0xff, 0xff, //0x000023e6 vmovdqu $-8750(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x85, 0x38, 0x07, 0x00, 0x00, //0x000023ee jne LBB0_509 + 0x8d, 0x5e, 0xff, //0x000023f4 leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x000023f7 andl %esi, %ebx + 0x0f, 0x85, 0x2d, 0x07, 0x00, 0x00, //0x000023f9 jne LBB0_509 + 0x8d, 0x5a, 0xff, //0x000023ff leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x00002402 andl %edx, %ebx + 0x0f, 0x85, 0x22, 0x07, 0x00, 0x00, //0x00002404 jne LBB0_509 + 0x85, 0xff, //0x0000240a testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000240c je LBB0_427 + 0x0f, 0xbc, 0xff, //0x00002412 bsfl %edi, %edi + 0x49, 0x83, 0xf9, 0xff, //0x00002415 cmpq $-1, %r9 + 0x0f, 0x85, 0xd6, 0x08, 0x00, 0x00, //0x00002419 jne LBB0_528 + 0x4c, 0x01, 0xc7, //0x0000241f addq %r8, %rdi + 0x49, 0x89, 0xf9, //0x00002422 movq %rdi, %r9 + //0x00002425 LBB0_427 + 0x85, 0xf6, //0x00002425 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002427 je LBB0_430 + 0x0f, 0xbc, 0xf6, //0x0000242d bsfl %esi, %esi + 0x49, 0x83, 0xfa, 0xff, //0x00002430 cmpq $-1, %r10 + 0x0f, 0x85, 0xc6, 0x08, 0x00, 0x00, //0x00002434 jne LBB0_529 + 0x4c, 0x01, 0xc6, //0x0000243a addq %r8, %rsi + 0x49, 0x89, 0xf2, //0x0000243d movq %rsi, %r10 + //0x00002440 LBB0_430 + 0x85, 0xd2, //0x00002440 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002442 je LBB0_433 + 0x0f, 0xbc, 0xd2, //0x00002448 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x0000244b cmpq $-1, %r15 + 0x0f, 0x85, 0xb6, 0x08, 0x00, 0x00, //0x0000244f jne LBB0_530 + 0x4c, 0x01, 0xc2, //0x00002455 addq %r8, %rdx + 0x49, 0x89, 0xd7, //0x00002458 movq %rdx, %r15 + //0x0000245b LBB0_433 + 0x83, 0xf9, 0x20, //0x0000245b cmpl $32, %ecx + 0x0f, 0x85, 0x1c, 0x02, 0x00, 0x00, //0x0000245e jne LBB0_467 + 0x49, 0x83, 0xc3, 0xe0, //0x00002464 addq $-32, %r11 + 0x49, 0x83, 0xc0, 0x20, //0x00002468 addq $32, %r8 + 0x49, 0x83, 0xfb, 0x1f, //0x0000246c cmpq $31, %r11 + 0x0f, 0x87, 0xfa, 0xfe, 0xff, 0xff, //0x00002470 ja LBB0_419 + 0xc5, 0xf8, 0x77, //0x00002476 vzeroupper + 0x4d, 0x01, 0xe8, //0x00002479 addq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x0000247c movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002481 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002485 movq %r13, $48(%rsp) + 0x0f, 0x82, 0x48, 0x01, 0x00, 0x00, //0x0000248a jb LBB0_454 + //0x00002490 LBB0_436 + 0x4d, 0x89, 0xc2, //0x00002490 movq %r8, %r10 + 0x4d, 0x29, 0xea, //0x00002493 subq %r13, %r10 + 0x45, 0x31, 0xed, //0x00002496 xorl %r13d, %r13d + //0x00002499 LBB0_437 + 0x4c, 0x89, 0xce, //0x00002499 movq %r9, %rsi + 0xc4, 0x81, 0x7a, 0x6f, 0x04, 0x28, //0x0000249c vmovdqu (%r8,%r13), %xmm0 + 0xc5, 0xf9, 0x64, 0x0d, 0x96, 0xdb, 0xff, 0xff, //0x000024a2 vpcmpgtb $-9322(%rip), %xmm0, %xmm1 /* LCPI0_20+0(%rip) */ + 0xc5, 0xfa, 0x6f, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024aa vmovdqu $-9314(%rip), %xmm2 /* LCPI0_21+0(%rip) */ + 0xc5, 0xe9, 0x64, 0xd0, //0x000024b2 vpcmpgtb %xmm0, %xmm2, %xmm2 + 0xc5, 0xf1, 0xdb, 0xca, //0x000024b6 vpand %xmm2, %xmm1, %xmm1 + 0xc5, 0xf9, 0x74, 0x15, 0x9e, 0xdb, 0xff, 0xff, //0x000024ba vpcmpeqb $-9314(%rip), %xmm0, %xmm2 /* LCPI0_22+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x1d, 0xa6, 0xdb, 0xff, 0xff, //0x000024c2 vpcmpeqb $-9306(%rip), %xmm0, %xmm3 /* LCPI0_23+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xd2, //0x000024ca vpor %xmm2, %xmm3, %xmm2 + 0xc5, 0xf9, 0xdb, 0x1d, 0x4a, 0xdb, 0xff, 0xff, //0x000024ce vpand $-9398(%rip), %xmm0, %xmm3 /* LCPI0_12+0(%rip) */ + 0xc5, 0xf9, 0x74, 0x05, 0xa2, 0xdb, 0xff, 0xff, //0x000024d6 vpcmpeqb $-9310(%rip), %xmm0, %xmm0 /* LCPI0_24+0(%rip) */ + 0xc5, 0xe1, 0x74, 0x1d, 0xaa, 0xdb, 0xff, 0xff, //0x000024de vpcmpeqb $-9302(%rip), %xmm3, %xmm3 /* LCPI0_25+0(%rip) */ + 0xc5, 0xe1, 0xeb, 0xe0, //0x000024e6 vpor %xmm0, %xmm3, %xmm4 + 0xc5, 0xe9, 0xeb, 0xc9, //0x000024ea vpor %xmm1, %xmm2, %xmm1 + 0xc5, 0xd9, 0xeb, 0xc9, //0x000024ee vpor %xmm1, %xmm4, %xmm1 + 0xc5, 0x79, 0xd7, 0xc8, //0x000024f2 vpmovmskb %xmm0, %r9d + 0xc5, 0xf9, 0xd7, 0xfb, //0x000024f6 vpmovmskb %xmm3, %edi + 0xc5, 0xf9, 0xd7, 0xd2, //0x000024fa vpmovmskb %xmm2, %edx + 0xc5, 0xf9, 0xd7, 0xc9, //0x000024fe vpmovmskb %xmm1, %ecx + 0xf7, 0xd1, //0x00002502 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00002504 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00002507 cmpl $16, %ecx + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000250a je LBB0_439 + 0xbb, 0xff, 0xff, 0xff, 0xff, //0x00002510 movl $-1, %ebx + 0xd3, 0xe3, //0x00002515 shll %cl, %ebx + 0xf7, 0xd3, //0x00002517 notl %ebx + 0x41, 0x21, 0xd9, //0x00002519 andl %ebx, %r9d + 0x21, 0xdf, //0x0000251c andl %ebx, %edi + 0x21, 0xd3, //0x0000251e andl %edx, %ebx + 0x89, 0xda, //0x00002520 movl %ebx, %edx + //0x00002522 LBB0_439 + 0x41, 0x8d, 0x59, 0xff, //0x00002522 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00002526 andl %r9d, %ebx + 0x0f, 0x85, 0x5a, 0x07, 0x00, 0x00, //0x00002529 jne LBB0_523 + 0x8d, 0x5f, 0xff, //0x0000252f leal $-1(%rdi), %ebx + 0x21, 0xfb, //0x00002532 andl %edi, %ebx + 0x0f, 0x85, 0x4f, 0x07, 0x00, 0x00, //0x00002534 jne LBB0_523 + 0x8d, 0x5a, 0xff, //0x0000253a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000253d andl %edx, %ebx + 0x0f, 0x85, 0x44, 0x07, 0x00, 0x00, //0x0000253f jne LBB0_523 + 0x45, 0x85, 0xc9, //0x00002545 testl %r9d, %r9d + 0x0f, 0x84, 0x43, 0x00, 0x00, 0x00, //0x00002548 je LBB0_446 + 0x45, 0x0f, 0xbc, 0xc9, //0x0000254e bsfl %r9d, %r9d + 0x48, 0x83, 0xfe, 0xff, //0x00002552 cmpq $-1, %rsi + 0x0f, 0x85, 0xf4, 0x07, 0x00, 0x00, //0x00002556 jne LBB0_533 + 0x4d, 0x01, 0xd1, //0x0000255c addq %r10, %r9 + 0x4d, 0x01, 0xe9, //0x0000255f addq %r13, %r9 + 0x85, 0xff, //0x00002562 testl %edi, %edi + 0x0f, 0x84, 0x32, 0x00, 0x00, 0x00, //0x00002564 je LBB0_445 + //0x0000256a LBB0_447 + 0x0f, 0xbc, 0xff, //0x0000256a bsfl %edi, %edi + 0x48, 0x83, 0x7c, 0x24, 0x28, 0xff, //0x0000256d cmpq $-1, $40(%rsp) + 0x0f, 0x85, 0xdf, 0x07, 0x00, 0x00, //0x00002573 jne LBB0_534 + 0x4c, 0x01, 0xd7, //0x00002579 addq %r10, %rdi + 0x4c, 0x01, 0xef, //0x0000257c addq %r13, %rdi + 0x48, 0x89, 0x7c, 0x24, 0x28, //0x0000257f movq %rdi, $40(%rsp) + 0x85, 0xd2, //0x00002584 testl %edx, %edx + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00002586 jne LBB0_449 + 0xe9, 0x29, 0x00, 0x00, 0x00, //0x0000258c jmp LBB0_451 + //0x00002591 LBB0_446 + 0x49, 0x89, 0xf1, //0x00002591 movq %rsi, %r9 + 0x85, 0xff, //0x00002594 testl %edi, %edi + 0x0f, 0x85, 0xce, 0xff, 0xff, 0xff, //0x00002596 jne LBB0_447 + //0x0000259c LBB0_445 + 0x85, 0xd2, //0x0000259c testl %edx, %edx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x0000259e je LBB0_451 + //0x000025a4 LBB0_449 + 0x0f, 0xbc, 0xd2, //0x000025a4 bsfl %edx, %edx + 0x49, 0x83, 0xff, 0xff, //0x000025a7 cmpq $-1, %r15 + 0x0f, 0x85, 0xae, 0x07, 0x00, 0x00, //0x000025ab jne LBB0_535 + 0x4c, 0x01, 0xd2, //0x000025b1 addq %r10, %rdx + 0x4c, 0x01, 0xea, //0x000025b4 addq %r13, %rdx + 0x49, 0x89, 0xd7, //0x000025b7 movq %rdx, %r15 + //0x000025ba LBB0_451 + 0x83, 0xf9, 0x10, //0x000025ba cmpl $16, %ecx + 0x0f, 0x85, 0xd5, 0x01, 0x00, 0x00, //0x000025bd jne LBB0_483 + 0x49, 0x83, 0xc3, 0xf0, //0x000025c3 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000025c7 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000025cb cmpq $15, %r11 + 0x0f, 0x87, 0xc4, 0xfe, 0xff, 0xff, //0x000025cf ja LBB0_437 + 0x4d, 0x01, 0xe8, //0x000025d5 addq %r13, %r8 + //0x000025d8 LBB0_454 + 0x4d, 0x85, 0xdb, //0x000025d8 testq %r11, %r11 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000025db movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000025e0 movq $40(%rsp), %r10 + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x000025e5 je LBB0_485 + 0x4b, 0x8d, 0x0c, 0x18, //0x000025eb leaq (%r8,%r11), %rcx + 0x48, 0x89, 0x4c, 0x24, 0x38, //0x000025ef movq %rcx, $56(%rsp) + 0x4c, 0x89, 0xc6, //0x000025f4 movq %r8, %rsi + 0x4c, 0x29, 0xee, //0x000025f7 subq %r13, %rsi + 0x31, 0xc9, //0x000025fa xorl %ecx, %ecx + 0xe9, 0x2c, 0x00, 0x00, 0x00, //0x000025fc jmp LBB0_460 + //0x00002601 LBB0_456 + 0x83, 0xff, 0x65, //0x00002601 cmpl $101, %edi + 0x0f, 0x85, 0xb5, 0x01, 0x00, 0x00, //0x00002604 jne LBB0_484 + //0x0000260a LBB0_457 + 0x49, 0x83, 0xfa, 0xff, //0x0000260a cmpq $-1, %r10 + 0x0f, 0x85, 0x8f, 0x06, 0x00, 0x00, //0x0000260e jne LBB0_525 + 0x4c, 0x8d, 0x14, 0x0e, //0x00002614 leaq (%rsi,%rcx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002618 .p2align 4, 0x90 + //0x00002620 LBB0_459 + 0x48, 0x83, 0xc1, 0x01, //0x00002620 addq $1, %rcx + 0x49, 0x39, 0xcb, //0x00002624 cmpq %rcx, %r11 + 0x0f, 0x84, 0xe5, 0x04, 0x00, 0x00, //0x00002627 je LBB0_508 + //0x0000262d LBB0_460 + 0x41, 0x0f, 0xbe, 0x3c, 0x08, //0x0000262d movsbl (%r8,%rcx), %edi + 0x8d, 0x5f, 0xd0, //0x00002632 leal $-48(%rdi), %ebx + 0x83, 0xfb, 0x0a, //0x00002635 cmpl $10, %ebx + 0x0f, 0x82, 0xe2, 0xff, 0xff, 0xff, //0x00002638 jb LBB0_459 + 0x8d, 0x5f, 0xd5, //0x0000263e leal $-43(%rdi), %ebx + 0x83, 0xfb, 0x1a, //0x00002641 cmpl $26, %ebx + 0x0f, 0x87, 0xb7, 0xff, 0xff, 0xff, //0x00002644 ja LBB0_456 + 0x48, 0x8d, 0x15, 0x8f, 0x1a, 0x00, 0x00, //0x0000264a leaq $6799(%rip), %rdx /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x3c, 0x9a, //0x00002651 movslq (%rdx,%rbx,4), %rdi + 0x48, 0x01, 0xd7, //0x00002655 addq %rdx, %rdi + 0xff, 0xe7, //0x00002658 jmpq *%rdi + //0x0000265a LBB0_463 + 0x49, 0x83, 0xff, 0xff, //0x0000265a cmpq $-1, %r15 + 0x0f, 0x85, 0x3f, 0x06, 0x00, 0x00, //0x0000265e jne LBB0_525 + 0x4c, 0x8d, 0x3c, 0x0e, //0x00002664 leaq (%rsi,%rcx), %r15 + 0xe9, 0xb3, 0xff, 0xff, 0xff, //0x00002668 jmp LBB0_459 + //0x0000266d LBB0_465 + 0x49, 0x83, 0xf9, 0xff, //0x0000266d cmpq $-1, %r9 + 0x0f, 0x85, 0x2c, 0x06, 0x00, 0x00, //0x00002671 jne LBB0_525 + 0x4c, 0x8d, 0x0c, 0x0e, //0x00002677 leaq (%rsi,%rcx), %r9 + 0xe9, 0xa0, 0xff, 0xff, 0xff, //0x0000267b jmp LBB0_459 + //0x00002680 LBB0_467 + 0x4c, 0x01, 0xc1, //0x00002680 addq %r8, %rcx + 0x4c, 0x01, 0xe9, //0x00002683 addq %r13, %rcx + 0xc5, 0xf8, 0x77, //0x00002686 vzeroupper + 0x49, 0x89, 0xc8, //0x00002689 movq %rcx, %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000268c movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002693 testq %r9, %r9 + 0x0f, 0x85, 0x36, 0x01, 0x00, 0x00, //0x00002696 jne LBB0_486 + 0xe9, 0xcd, 0x17, 0x00, 0x00, //0x0000269c jmp LBB0_726 + //0x000026a1 LBB0_468 + 0x4d, 0x29, 0xf4, //0x000026a1 subq %r14, %r12 + 0x49, 0x01, 0xd4, //0x000026a4 addq %rdx, %r12 + 0x49, 0x39, 0xfc, //0x000026a7 cmpq %rdi, %r12 + 0x0f, 0x82, 0x22, 0xdf, 0xff, 0xff, //0x000026aa jb LBB0_35 + 0xe9, 0xe8, 0x15, 0x00, 0x00, //0x000026b0 jmp LBB0_698 + //0x000026b5 LBB0_469 + 0x4c, 0x8b, 0x54, 0x24, 0x38, //0x000026b5 movq $56(%rsp), %r10 + 0xe9, 0x32, 0xf0, 0xff, 0xff, //0x000026ba jmp LBB0_282 + //0x000026bf LBB0_470 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000026bf movl $64, %edx + //0x000026c4 LBB0_471 + 0x4c, 0x8b, 0x1c, 0x24, //0x000026c4 movq (%rsp), %r11 + 0x48, 0x39, 0xca, //0x000026c8 cmpq %rcx, %rdx + 0x0f, 0x82, 0xb5, 0x17, 0x00, 0x00, //0x000026cb jb LBB0_162 + 0xc5, 0x7d, 0x7f, 0xea, //0x000026d1 vmovdqa %ymm13, %ymm2 + 0x48, 0x01, 0xc8, //0x000026d5 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000026d8 addq $1, %rax + //0x000026dc LBB0_473 + 0x48, 0x85, 0xc0, //0x000026dc testq %rax, %rax + 0x0f, 0x88, 0xdc, 0x15, 0x00, 0x00, //0x000026df js LBB0_702 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000026e5 movq $8(%rsp), %r15 + 0x49, 0x89, 0x07, //0x000026ea movq %rax, (%r15) + 0x4d, 0x85, 0xc9, //0x000026ed testq %r9, %r9 + 0xc5, 0x7d, 0x6f, 0xea, //0x000026f0 vmovdqa %ymm2, %ymm13 + 0x0f, 0x8f, 0xa6, 0xdc, 0xff, 0xff, //0x000026f4 jg LBB0_3 + 0xe9, 0xdb, 0x15, 0x00, 0x00, //0x000026fa jmp LBB0_475 + //0x000026ff LBB0_108 + 0x4d, 0x85, 0xff, //0x000026ff testq %r15, %r15 + 0x0f, 0x85, 0x37, 0x07, 0x00, 0x00, //0x00002702 jne LBB0_545 + 0x49, 0x01, 0xf1, //0x00002708 addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x0000270b subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x0000270e movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002713 movq (%rsp), %r11 + //0x00002717 LBB0_110 + 0x4d, 0x85, 0xd2, //0x00002717 testq %r10, %r10 + 0x0f, 0x8f, 0x9f, 0x07, 0x00, 0x00, //0x0000271a jg LBB0_549 + 0xe9, 0xf0, 0x15, 0x00, 0x00, //0x00002720 jmp LBB0_728 + //0x00002725 LBB0_476 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002725 vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002729 bsfl %ebx, %ecx + //0x0000272c LBB0_477 + 0x49, 0xf7, 0xd2, //0x0000272c notq %r10 + 0x49, 0x29, 0xca, //0x0000272f subq %rcx, %r10 + 0xe9, 0xde, 0xf0, 0xff, 0xff, //0x00002732 jmp LBB0_293 + //0x00002737 LBB0_478 + 0x66, 0x0f, 0xbc, 0xc3, //0x00002737 bsfw %bx, %ax + 0x0f, 0xb7, 0xf8, //0x0000273b movzwl %ax, %edi + 0x48, 0x89, 0xf8, //0x0000273e movq %rdi, %rax + 0x4c, 0x29, 0xc8, //0x00002741 subq %r9, %rax + 0x49, 0x89, 0x07, //0x00002744 movq %rax, (%r15) + 0x48, 0x85, 0xc0, //0x00002747 testq %rax, %rax + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000274a movabsq $4294977024, %rbx + 0x0f, 0x8e, 0x90, 0xdc, 0xff, 0xff, //0x00002754 jle LBB0_2 + 0x48, 0x01, 0xf9, //0x0000275a addq %rdi, %rcx + 0x48, 0x01, 0xfe, //0x0000275d addq %rdi, %rsi + 0x48, 0x01, 0xfa, //0x00002760 addq %rdi, %rdx + //0x00002763 LBB0_480 + 0x0f, 0xb6, 0x02, //0x00002763 movzbl (%rdx), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00002766 cmpq $32, %rax + 0x0f, 0x87, 0x7a, 0xdc, 0xff, 0xff, //0x0000276a ja LBB0_2 + 0x48, 0x0f, 0xa3, 0xc3, //0x00002770 btq %rax, %rbx + 0x0f, 0x83, 0x70, 0xdc, 0xff, 0xff, //0x00002774 jae LBB0_2 + 0x49, 0x89, 0x37, //0x0000277a movq %rsi, (%r15) + 0x48, 0x83, 0xc1, 0xff, //0x0000277d addq $-1, %rcx + 0x48, 0x83, 0xc6, 0xff, //0x00002781 addq $-1, %rsi + 0x48, 0x83, 0xc2, 0xff, //0x00002785 addq $-1, %rdx + 0x48, 0x83, 0xf9, 0x01, //0x00002789 cmpq $1, %rcx + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000278d jg LBB0_480 + 0xe9, 0x52, 0xdc, 0xff, 0xff, //0x00002793 jmp LBB0_2 + //0x00002798 LBB0_483 + 0x89, 0xc9, //0x00002798 movl %ecx, %ecx + 0x49, 0x01, 0xc8, //0x0000279a addq %rcx, %r8 + 0x4d, 0x01, 0xe8, //0x0000279d addq %r13, %r8 + 0x4c, 0x8b, 0x6c, 0x24, 0x30, //0x000027a0 movq $48(%rsp), %r13 + 0x4c, 0x8b, 0x54, 0x24, 0x28, //0x000027a5 movq $40(%rsp), %r10 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027aa movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027b1 testq %r9, %r9 + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x000027b4 jne LBB0_486 + 0xe9, 0xaf, 0x16, 0x00, 0x00, //0x000027ba jmp LBB0_726 + //0x000027bf LBB0_484 + 0x49, 0x01, 0xc8, //0x000027bf addq %rcx, %r8 + //0x000027c2 LBB0_485 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000027c2 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x000027c9 testq %r9, %r9 + 0x0f, 0x84, 0x9c, 0x16, 0x00, 0x00, //0x000027cc je LBB0_726 + //0x000027d2 LBB0_486 + 0x4d, 0x85, 0xff, //0x000027d2 testq %r15, %r15 + 0x0f, 0x84, 0x93, 0x16, 0x00, 0x00, //0x000027d5 je LBB0_726 + 0x4d, 0x85, 0xd2, //0x000027db testq %r10, %r10 + 0x0f, 0x84, 0x8a, 0x16, 0x00, 0x00, //0x000027de je LBB0_726 + 0x4d, 0x29, 0xe8, //0x000027e4 subq %r13, %r8 + 0x49, 0x8d, 0x48, 0xff, //0x000027e7 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xc9, //0x000027eb cmpq %rcx, %r9 + 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x000027ee je LBB0_494 + 0x49, 0x39, 0xcf, //0x000027f4 cmpq %rcx, %r15 + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000027f7 je LBB0_494 + 0x49, 0x39, 0xca, //0x000027fd cmpq %rcx, %r10 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00002800 je LBB0_494 + 0x4d, 0x85, 0xff, //0x00002806 testq %r15, %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0xaf, 0xd8, 0xff, 0xff, //0x00002809 vmovdqu $-10065(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0xc7, 0xd8, 0xff, 0xff, //0x00002811 vmovdqu $-10041(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0xdf, 0xd8, 0xff, 0xff, //0x00002819 vmovdqu $-10017(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0xf7, 0xd8, 0xff, 0xff, //0x00002821 vmovdqu $-9993(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002829 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0xca, 0xd9, 0xff, 0xff, //0x0000282e vmovdqu $-9782(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0xe2, 0xd9, 0xff, 0xff, //0x00002836 vmovdqu $-9758(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0xfa, 0xd9, 0xff, 0xff, //0x0000283e vmovdqu $-9734(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x92, 0xd9, 0xff, 0xff, //0x00002846 vmovdqu $-9838(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0x4a, 0xda, 0xff, 0xff, //0x0000284e vmovdqu $-9654(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x62, 0xd9, 0xff, 0xff, //0x00002856 vmovdqu $-9886(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0x0f, 0x8e, 0x8f, 0x00, 0x00, 0x00, //0x0000285e jle LBB0_497 + 0x49, 0x8d, 0x4f, 0xff, //0x00002864 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xca, //0x00002868 cmpq %rcx, %r10 + 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x0000286b je LBB0_497 + 0x49, 0xf7, 0xd7, //0x00002871 notq %r15 + 0x4d, 0x89, 0xf8, //0x00002874 movq %r15, %r8 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002877 movq $8(%rsp), %r15 + 0xe9, 0x5d, 0x00, 0x00, 0x00, //0x0000287c jmp LBB0_496 + //0x00002881 LBB0_494 + 0x49, 0xf7, 0xd8, //0x00002881 negq %r8 + //0x00002884 LBB0_495 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002884 movq $8(%rsp), %r15 + 0xc5, 0xfe, 0x6f, 0x2d, 0x2f, 0xd8, 0xff, 0xff, //0x00002889 vmovdqu $-10193(%rip), %ymm5 /* LCPI0_1+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x35, 0x47, 0xd8, 0xff, 0xff, //0x00002891 vmovdqu $-10169(%rip), %ymm6 /* LCPI0_2+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x3d, 0x5f, 0xd8, 0xff, 0xff, //0x00002899 vmovdqu $-10145(%rip), %ymm7 /* LCPI0_3+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x05, 0x77, 0xd8, 0xff, 0xff, //0x000028a1 vmovdqu $-10121(%rip), %ymm8 /* LCPI0_4+0(%rip) */ + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000028a9 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7e, 0x6f, 0x15, 0x4a, 0xd9, 0xff, 0xff, //0x000028ae vmovdqu $-9910(%rip), %ymm10 /* LCPI0_14+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x05, 0x62, 0xd9, 0xff, 0xff, //0x000028b6 vmovdqu $-9886(%rip), %ymm0 /* LCPI0_15+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x3d, 0x7a, 0xd9, 0xff, 0xff, //0x000028be vmovdqu $-9862(%rip), %ymm15 /* LCPI0_16+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x35, 0x12, 0xd9, 0xff, 0xff, //0x000028c6 vmovdqu $-9966(%rip), %ymm14 /* LCPI0_10+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x25, 0xca, 0xd9, 0xff, 0xff, //0x000028ce vmovdqu $-9782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe2, 0xd8, 0xff, 0xff, //0x000028d6 vmovdqu $-10014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + //0x000028de LBB0_496 + 0xc5, 0x7e, 0x6f, 0x1d, 0x5a, 0xd8, 0xff, 0xff, //0x000028de vmovdqu $-10150(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x72, 0xd8, 0xff, 0xff, //0x000028e6 vmovdqu $-10126(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0xe9, 0x4b, 0x02, 0x00, 0x00, //0x000028ee jmp LBB0_512 + //0x000028f3 LBB0_497 + 0x4c, 0x89, 0xc9, //0x000028f3 movq %r9, %rcx + 0x4c, 0x09, 0xd1, //0x000028f6 orq %r10, %rcx + 0x0f, 0x99, 0xc1, //0x000028f9 setns %cl + 0xc5, 0x7e, 0x6f, 0x1d, 0x3c, 0xd8, 0xff, 0xff, //0x000028fc vmovdqu $-10180(%rip), %ymm11 /* LCPI0_5+0(%rip) */ + 0xc5, 0x7e, 0x6f, 0x25, 0x54, 0xd8, 0xff, 0xff, //0x00002904 vmovdqu $-10156(%rip), %ymm12 /* LCPI0_6+0(%rip) */ + 0x0f, 0x88, 0xd2, 0x00, 0x00, 0x00, //0x0000290c js LBB0_500 + 0x4d, 0x39, 0xd1, //0x00002912 cmpq %r10, %r9 + 0x0f, 0x8c, 0xc9, 0x00, 0x00, 0x00, //0x00002915 jl LBB0_500 + 0x49, 0xf7, 0xd1, //0x0000291b notq %r9 + 0x4d, 0x89, 0xc8, //0x0000291e movq %r9, %r8 + 0xe9, 0x13, 0x02, 0x00, 0x00, //0x00002921 jmp LBB0_511 + //0x00002926 LBB0_140 + 0x4d, 0x85, 0xff, //0x00002926 testq %r15, %r15 + 0x0f, 0x85, 0x6a, 0x07, 0x00, 0x00, //0x00002929 jne LBB0_570 + 0x49, 0x01, 0xf1, //0x0000292f addq %rsi, %r9 + 0x49, 0x29, 0xf2, //0x00002932 subq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002935 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000293a movq (%rsp), %r11 + //0x0000293e LBB0_142 + 0x4d, 0x85, 0xd2, //0x0000293e testq %r10, %r10 + 0x0f, 0x8f, 0xc4, 0x07, 0x00, 0x00, //0x00002941 jg LBB0_574 + 0xe9, 0xc9, 0x13, 0x00, 0x00, //0x00002947 jmp LBB0_728 + //0x0000294c LBB0_54 + 0x4c, 0x01, 0xf0, //0x0000294c addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x0000294f cmpq $32, %r11 + 0x0f, 0x82, 0x45, 0x06, 0x00, 0x00, //0x00002953 jb LBB0_557 + //0x00002959 LBB0_55 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002959 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x0000295d vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002961 vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002965 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002969 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x0000296d testl %esi, %esi + 0x0f, 0x85, 0x82, 0x05, 0x00, 0x00, //0x0000296f jne LBB0_552 + 0x4d, 0x85, 0xd2, //0x00002975 testq %r10, %r10 + 0x0f, 0x85, 0xa7, 0x05, 0x00, 0x00, //0x00002978 jne LBB0_554 + 0x45, 0x31, 0xd2, //0x0000297e xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002981 testq %rdx, %rdx + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x00002984 je LBB0_556 + //0x0000298a LBB0_58 + 0x48, 0x0f, 0xbc, 0xca, //0x0000298a bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x0000298e subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002991 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002994 addq $1, %rax + 0xe9, 0x0e, 0xde, 0xff, 0xff, //0x00002998 jmp LBB0_63 + //0x0000299d LBB0_152 + 0x4c, 0x01, 0xf0, //0x0000299d addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x000029a0 cmpq $32, %r13 + 0x0f, 0x82, 0xaa, 0x08, 0x00, 0x00, //0x000029a4 jb LBB0_587 + //0x000029aa LBB0_153 + 0xc5, 0xfe, 0x6f, 0x00, //0x000029aa vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x000029ae vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x000029b2 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x000029b6 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x000029ba vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x000029be testl %edx, %edx + 0x0f, 0x85, 0x9a, 0x07, 0x00, 0x00, //0x000029c0 jne LBB0_577 + 0x4d, 0x85, 0xdb, //0x000029c6 testq %r11, %r11 + 0x0f, 0x85, 0xbf, 0x07, 0x00, 0x00, //0x000029c9 jne LBB0_579 + 0x45, 0x31, 0xdb, //0x000029cf xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x000029d2 testq %r10, %r10 + 0x0f, 0x84, 0x25, 0x08, 0x00, 0x00, //0x000029d5 je LBB0_581 + //0x000029db LBB0_156 + 0x49, 0x0f, 0xbc, 0xd2, //0x000029db bsfq %r10, %rdx + 0xe9, 0x21, 0x08, 0x00, 0x00, //0x000029df jmp LBB0_582 + //0x000029e4 LBB0_500 + 0x49, 0x8d, 0x52, 0xff, //0x000029e4 leaq $-1(%r10), %rdx + 0x49, 0x39, 0xd1, //0x000029e8 cmpq %rdx, %r9 + 0x49, 0xf7, 0xd2, //0x000029eb notq %r10 + 0x4d, 0x0f, 0x45, 0xd0, //0x000029ee cmovneq %r8, %r10 + 0x84, 0xc9, //0x000029f2 testb %cl, %cl + 0x4d, 0x0f, 0x45, 0xc2, //0x000029f4 cmovneq %r10, %r8 + 0xe9, 0x3c, 0x01, 0x00, 0x00, //0x000029f8 jmp LBB0_511 + //0x000029fd LBB0_501 + 0xc5, 0x7d, 0x7f, 0xe8, //0x000029fd vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcf, //0x00002a01 bsfl %edi, %ecx + //0x00002a04 LBB0_502 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a04 movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a09 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a0c subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a0f subq %rcx, %r14 + 0x4d, 0x29, 0xfe, //0x00002a12 subq %r15, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a15 addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a19 movq %r14, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002a1c movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002a21 movq (%rsp), %r11 + 0xe9, 0xf0, 0xed, 0xff, 0xff, //0x00002a25 jmp LBB0_294 + //0x00002a2a LBB0_503 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002a2a vmovdqa %ymm13, %ymm0 + 0x4c, 0x8b, 0x6c, 0x24, 0x10, //0x00002a2e movq $16(%rsp), %r13 + 0x4d, 0x01, 0xee, //0x00002a33 addq %r13, %r14 + 0x4d, 0x29, 0xd6, //0x00002a36 subq %r10, %r14 + 0x49, 0x29, 0xce, //0x00002a39 subq %rcx, %r14 + 0x49, 0x83, 0xc6, 0xfe, //0x00002a3c addq $-2, %r14 + 0x4d, 0x89, 0xf2, //0x00002a40 movq %r14, %r10 + 0xe9, 0xd2, 0xed, 0xff, 0xff, //0x00002a43 jmp LBB0_294 + //0x00002a48 LBB0_504 + 0x4d, 0x01, 0xf4, //0x00002a48 addq %r14, %r12 + 0x48, 0x85, 0xf6, //0x00002a4b testq %rsi, %rsi + 0x0f, 0x85, 0x14, 0xdb, 0xff, 0xff, //0x00002a4e jne LBB0_28 + 0xe9, 0x49, 0xdb, 0xff, 0xff, //0x00002a54 jmp LBB0_33 + //0x00002a59 LBB0_89 + 0x4c, 0x01, 0xf0, //0x00002a59 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002a5c cmpq $32, %r11 + 0x0f, 0x82, 0x6b, 0x09, 0x00, 0x00, //0x00002a60 jb LBB0_602 + //0x00002a66 LBB0_90 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002a66 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002a6a vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002a6e vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002a72 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002a76 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002a7a testl %esi, %esi + 0x0f, 0x85, 0xa8, 0x08, 0x00, 0x00, //0x00002a7c jne LBB0_597 + 0x4d, 0x85, 0xd2, //0x00002a82 testq %r10, %r10 + 0x0f, 0x85, 0xcd, 0x08, 0x00, 0x00, //0x00002a85 jne LBB0_599 + 0x45, 0x31, 0xd2, //0x00002a8b xorl %r10d, %r10d + 0x48, 0x85, 0xd2, //0x00002a8e testq %rdx, %rdx + 0x0f, 0x84, 0x32, 0x09, 0x00, 0x00, //0x00002a91 je LBB0_601 + //0x00002a97 LBB0_93 + 0x48, 0x0f, 0xbc, 0xca, //0x00002a97 bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002a9b subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002a9e addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002aa1 addq $1, %rax + 0xe9, 0x21, 0xdf, 0xff, 0xff, //0x00002aa5 jmp LBB0_98 + //0x00002aaa LBB0_172 + 0x4c, 0x01, 0xf0, //0x00002aaa addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002aad cmpq $32, %r13 + 0x0f, 0x82, 0xe4, 0x02, 0x00, 0x00, //0x00002ab1 jb LBB0_538 + //0x00002ab7 LBB0_173 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002ab7 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002abb vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002abf vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002ac3 vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002ac7 vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002acb testl %edx, %edx + 0x0f, 0x85, 0x08, 0x0a, 0x00, 0x00, //0x00002acd jne LBB0_615 + 0x4d, 0x85, 0xdb, //0x00002ad3 testq %r11, %r11 + 0x0f, 0x85, 0x2d, 0x0a, 0x00, 0x00, //0x00002ad6 jne LBB0_617 + 0x45, 0x31, 0xdb, //0x00002adc xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002adf testq %r10, %r10 + 0x0f, 0x84, 0x93, 0x0a, 0x00, 0x00, //0x00002ae2 je LBB0_619 + //0x00002ae8 LBB0_176 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002ae8 bsfq %r10, %rdx + 0xe9, 0x8f, 0x0a, 0x00, 0x00, //0x00002aec jmp LBB0_620 + //0x00002af1 LBB0_505 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002af1 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002af5 movl %edi, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002af7 jmp LBB0_477 + //0x00002afc LBB0_506 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002afc vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002b00 movl %esi, %ecx + 0xe9, 0x25, 0xfc, 0xff, 0xff, //0x00002b02 jmp LBB0_477 + //0x00002b07 LBB0_507 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b07 vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002b0b movl %edx, %ecx + 0xe9, 0x1a, 0xfc, 0xff, 0xff, //0x00002b0d jmp LBB0_477 + //0x00002b12 LBB0_508 + 0x4c, 0x8b, 0x44, 0x24, 0x38, //0x00002b12 movq $56(%rsp), %r8 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002b17 movq $-1, %rcx + 0x4d, 0x85, 0xc9, //0x00002b1e testq %r9, %r9 + 0x0f, 0x85, 0xab, 0xfc, 0xff, 0xff, //0x00002b21 jne LBB0_486 + 0xe9, 0x42, 0x13, 0x00, 0x00, //0x00002b27 jmp LBB0_726 + //0x00002b2c LBB0_509 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002b2c vmovdqa %ymm13, %ymm0 + 0x0f, 0xbc, 0xcb, //0x00002b30 bsfl %ebx, %ecx + //0x00002b33 LBB0_510 + 0x49, 0xf7, 0xd0, //0x00002b33 notq %r8 + 0x49, 0x29, 0xc8, //0x00002b36 subq %rcx, %r8 + //0x00002b39 LBB0_511 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002b39 movq $8(%rsp), %r15 + //0x00002b3e LBB0_512 + 0x4d, 0x85, 0xc0, //0x00002b3e testq %r8, %r8 + 0x0f, 0x88, 0x24, 0x13, 0x00, 0x00, //0x00002b41 js LBB0_725 + 0x49, 0x8b, 0x0f, //0x00002b47 movq (%r15), %rcx + 0xc5, 0x7d, 0x6f, 0xe8, //0x00002b4a vmovdqa %ymm0, %ymm13 + //0x00002b4e LBB0_514 + 0x4c, 0x01, 0xc1, //0x00002b4e addq %r8, %rcx + 0x49, 0x89, 0x0f, //0x00002b51 movq %rcx, (%r15) + 0x48, 0x85, 0xc0, //0x00002b54 testq %rax, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002b57 movq (%rsp), %r11 + 0x0f, 0x8f, 0x3f, 0xd8, 0xff, 0xff, //0x00002b5b jg LBB0_3 + 0xe9, 0xc9, 0x12, 0x00, 0x00, //0x00002b61 jmp LBB0_394 + //0x00002b66 LBB0_515 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002b66 bsfw %cx, %cx + 0x44, 0x0f, 0xb7, 0xc1, //0x00002b6a movzwl %cx, %r8d + 0x4c, 0x89, 0xc1, //0x00002b6e movq %r8, %rcx + 0x4c, 0x29, 0xc9, //0x00002b71 subq %r9, %rcx + 0x49, 0x89, 0x0f, //0x00002b74 movq %rcx, (%r15) + 0x48, 0x85, 0xc9, //0x00002b77 testq %rcx, %rcx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b7a movabsq $4294977024, %rsi + 0x0f, 0x8e, 0x36, 0xf6, 0xff, 0xff, //0x00002b84 jle LBB0_393 + 0x4c, 0x01, 0xc7, //0x00002b8a addq %r8, %rdi + 0x4c, 0x01, 0xc2, //0x00002b8d addq %r8, %rdx + 0x4c, 0x01, 0xc3, //0x00002b90 addq %r8, %rbx + //0x00002b93 LBB0_517 + 0x0f, 0xb6, 0x0b, //0x00002b93 movzbl (%rbx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002b96 cmpq $32, %rcx + 0x0f, 0x87, 0x20, 0xf6, 0xff, 0xff, //0x00002b9a ja LBB0_393 + 0x48, 0x0f, 0xa3, 0xce, //0x00002ba0 btq %rcx, %rsi + 0x0f, 0x83, 0x16, 0xf6, 0xff, 0xff, //0x00002ba4 jae LBB0_393 + 0x49, 0x89, 0x17, //0x00002baa movq %rdx, (%r15) + 0x48, 0x83, 0xc7, 0xff, //0x00002bad addq $-1, %rdi + 0x48, 0x83, 0xc2, 0xff, //0x00002bb1 addq $-1, %rdx + 0x48, 0x83, 0xc3, 0xff, //0x00002bb5 addq $-1, %rbx + 0x48, 0x83, 0xff, 0x01, //0x00002bb9 cmpq $1, %rdi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00002bbd jg LBB0_517 + 0xe9, 0xf8, 0xf5, 0xff, 0xff, //0x00002bc3 jmp LBB0_393 + //0x00002bc8 LBB0_520 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bc8 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002bcc movl %edi, %ecx + 0xe9, 0x31, 0xfe, 0xff, 0xff, //0x00002bce jmp LBB0_502 + //0x00002bd3 LBB0_521 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bd3 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002bd7 movl %esi, %ecx + 0xe9, 0x26, 0xfe, 0xff, 0xff, //0x00002bd9 jmp LBB0_502 + //0x00002bde LBB0_522 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002bde vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002be2 movl %edx, %ecx + 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00002be4 jmp LBB0_502 + //0x00002be9 LBB0_247 + 0x4c, 0x01, 0xf0, //0x00002be9 addq %r14, %rax + 0x49, 0x83, 0xfb, 0x20, //0x00002bec cmpq $32, %r11 + 0x0f, 0x82, 0x08, 0x02, 0x00, 0x00, //0x00002bf0 jb LBB0_542 + //0x00002bf6 LBB0_248 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002bf6 vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002bfa vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002bfe vpmovmskb %ymm1, %edx + 0xc5, 0xfd, 0x74, 0xc7, //0x00002c02 vpcmpeqb %ymm7, %ymm0, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00002c06 vpmovmskb %ymm0, %esi + 0x85, 0xf6, //0x00002c0a testl %esi, %esi + 0x0f, 0x85, 0xe1, 0x0c, 0x00, 0x00, //0x00002c0c jne LBB0_653 + 0x4d, 0x85, 0xd2, //0x00002c12 testq %r10, %r10 + 0x0f, 0x85, 0x06, 0x0d, 0x00, 0x00, //0x00002c15 jne LBB0_655 + 0x45, 0x31, 0xd2, //0x00002c1b xorl %r10d, %r10d + 0xc5, 0x7d, 0x7f, 0xea, //0x00002c1e vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x00002c22 testq %rdx, %rdx + 0x0f, 0x84, 0x6b, 0x0d, 0x00, 0x00, //0x00002c25 je LBB0_657 + //0x00002c2b LBB0_251 + 0x48, 0x0f, 0xbc, 0xca, //0x00002c2b bsfq %rdx, %rcx + 0x4c, 0x29, 0xf0, //0x00002c2f subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00002c32 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c35 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00002c39 movq (%rsp), %r11 + 0xe9, 0x9a, 0xfa, 0xff, 0xff, //0x00002c3d jmp LBB0_473 + //0x00002c42 LBB0_405 + 0x4c, 0x01, 0xf0, //0x00002c42 addq %r14, %rax + 0x49, 0x83, 0xfd, 0x20, //0x00002c45 cmpq $32, %r13 + 0x0f, 0x82, 0xd9, 0x01, 0x00, 0x00, //0x00002c49 jb LBB0_544 + //0x00002c4f LBB0_406 + 0xc5, 0xfe, 0x6f, 0x00, //0x00002c4f vmovdqu (%rax), %ymm0 + 0xc5, 0xfd, 0x74, 0xce, //0x00002c53 vpcmpeqb %ymm6, %ymm0, %ymm1 + 0xc5, 0x7d, 0xd7, 0xd1, //0x00002c57 vpmovmskb %ymm1, %r10d + 0xc5, 0xfd, 0x74, 0xcf, //0x00002c5b vpcmpeqb %ymm7, %ymm0, %ymm1 + 0xc5, 0xfd, 0xd7, 0xd1, //0x00002c5f vpmovmskb %ymm1, %edx + 0x85, 0xd2, //0x00002c63 testl %edx, %edx + 0x0f, 0x85, 0xfb, 0x0d, 0x00, 0x00, //0x00002c65 jne LBB0_671 + 0x4d, 0x85, 0xdb, //0x00002c6b testq %r11, %r11 + 0x0f, 0x85, 0x20, 0x0e, 0x00, 0x00, //0x00002c6e jne LBB0_673 + 0x45, 0x31, 0xdb, //0x00002c74 xorl %r11d, %r11d + 0x4d, 0x85, 0xd2, //0x00002c77 testq %r10, %r10 + 0x0f, 0x84, 0x86, 0x0e, 0x00, 0x00, //0x00002c7a je LBB0_675 + //0x00002c80 LBB0_409 + 0x49, 0x0f, 0xbc, 0xd2, //0x00002c80 bsfq %r10, %rdx + 0xe9, 0x82, 0x0e, 0x00, 0x00, //0x00002c84 jmp LBB0_676 + //0x00002c89 LBB0_523 + 0x0f, 0xbc, 0xcb, //0x00002c89 bsfl %ebx, %ecx + //0x00002c8c LBB0_524 + 0x49, 0x01, 0xc6, //0x00002c8c addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002c8f subq %r8, %r14 + 0x49, 0x29, 0xce, //0x00002c92 subq %rcx, %r14 + 0x49, 0xf7, 0xd5, //0x00002c95 notq %r13 + 0x4d, 0x01, 0xf5, //0x00002c98 addq %r14, %r13 + 0x4d, 0x89, 0xe8, //0x00002c9b movq %r13, %r8 + 0xe9, 0xe1, 0xfb, 0xff, 0xff, //0x00002c9e jmp LBB0_495 + //0x00002ca3 LBB0_525 + 0x49, 0x01, 0xc6, //0x00002ca3 addq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00002ca6 subq %r8, %r14 + 0x48, 0xf7, 0xd1, //0x00002ca9 notq %rcx + 0x4c, 0x01, 0xf1, //0x00002cac addq %r14, %rcx + 0x49, 0x89, 0xc8, //0x00002caf movq %rcx, %r8 + 0xe9, 0xcd, 0xfb, 0xff, 0xff, //0x00002cb2 jmp LBB0_495 + //0x00002cb7 LBB0_526 + 0x4f, 0x8d, 0x04, 0x2e, //0x00002cb7 leaq (%r14,%r13), %r8 + 0x48, 0x83, 0xff, 0x10, //0x00002cbb cmpq $16, %rdi + 0x0f, 0x83, 0x8d, 0xde, 0xff, 0xff, //0x00002cbf jae LBB0_116 + 0xe9, 0xf1, 0xde, 0xff, 0xff, //0x00002cc5 jmp LBB0_119 + //0x00002cca LBB0_527 + 0x48, 0xc7, 0x44, 0x24, 0x28, 0xff, 0xff, 0xff, 0xff, //0x00002cca movq $-1, $40(%rsp) + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00002cd3 movq $-1, %r13 + 0x48, 0xc7, 0x44, 0x24, 0x30, 0xff, 0xff, 0xff, 0xff, //0x00002cda movq $-1, $48(%rsp) + 0x4d, 0x89, 0xc2, //0x00002ce3 movq %r8, %r10 + 0x49, 0x83, 0xf9, 0x10, //0x00002ce6 cmpq $16, %r9 + 0x0f, 0x83, 0xf2, 0xe4, 0xff, 0xff, //0x00002cea jae LBB0_203 + 0xe9, 0x7c, 0xe6, 0xff, 0xff, //0x00002cf0 jmp LBB0_221 + //0x00002cf5 LBB0_528 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002cf5 vmovdqa %ymm13, %ymm0 + 0x89, 0xf9, //0x00002cf9 movl %edi, %ecx + 0xe9, 0x33, 0xfe, 0xff, 0xff, //0x00002cfb jmp LBB0_510 + //0x00002d00 LBB0_529 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d00 vmovdqa %ymm13, %ymm0 + 0x89, 0xf1, //0x00002d04 movl %esi, %ecx + 0xe9, 0x28, 0xfe, 0xff, 0xff, //0x00002d06 jmp LBB0_510 + //0x00002d0b LBB0_530 + 0xc5, 0x7d, 0x7f, 0xe8, //0x00002d0b vmovdqa %ymm13, %ymm0 + 0x89, 0xd1, //0x00002d0f movl %edx, %ecx + 0xe9, 0x1d, 0xfe, 0xff, 0xff, //0x00002d11 jmp LBB0_510 + //0x00002d16 LBB0_531 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d16 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d1a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d21 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d24 cmpq $32, %r11 + 0x0f, 0x83, 0x2b, 0xfc, 0xff, 0xff, //0x00002d28 jae LBB0_55 + 0xe9, 0x6b, 0x02, 0x00, 0x00, //0x00002d2e jmp LBB0_557 + //0x00002d33 LBB0_532 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d33 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d37 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d3e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d41 cmpq $32, %r13 + 0x0f, 0x83, 0x5f, 0xfc, 0xff, 0xff, //0x00002d45 jae LBB0_153 + 0xe9, 0x04, 0x05, 0x00, 0x00, //0x00002d4b jmp LBB0_587 + //0x00002d50 LBB0_533 + 0x44, 0x89, 0xc9, //0x00002d50 movl %r9d, %ecx + 0xe9, 0x34, 0xff, 0xff, 0xff, //0x00002d53 jmp LBB0_524 + //0x00002d58 LBB0_534 + 0x89, 0xf9, //0x00002d58 movl %edi, %ecx + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00002d5a jmp LBB0_524 + //0x00002d5f LBB0_535 + 0x89, 0xd1, //0x00002d5f movl %edx, %ecx + 0xe9, 0x26, 0xff, 0xff, 0xff, //0x00002d61 jmp LBB0_524 + //0x00002d66 LBB0_536 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d66 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d6a movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002d71 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002d74 cmpq $32, %r11 + 0x0f, 0x83, 0xe8, 0xfc, 0xff, 0xff, //0x00002d78 jae LBB0_90 + 0xe9, 0x4e, 0x06, 0x00, 0x00, //0x00002d7e jmp LBB0_602 + //0x00002d83 LBB0_537 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d83 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002d87 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002d8e xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002d91 cmpq $32, %r13 + 0x0f, 0x83, 0x1c, 0xfd, 0xff, 0xff, //0x00002d95 jae LBB0_173 + //0x00002d9b LBB0_538 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00002d9b movq $24(%rsp), %r10 + 0xe9, 0x38, 0x08, 0x00, 0x00, //0x00002da0 jmp LBB0_626 + //0x00002da5 LBB0_539 + 0x4d, 0x8d, 0x04, 0x06, //0x00002da5 leaq (%r14,%rax), %r8 + 0x48, 0x83, 0xfe, 0x10, //0x00002da9 cmpq $16, %rsi + 0x4c, 0x8b, 0x1c, 0x24, //0x00002dad movq (%rsp), %r11 + 0x0f, 0x83, 0x8f, 0xec, 0xff, 0xff, //0x00002db1 jae LBB0_322 + 0xe9, 0xf3, 0xec, 0xff, 0xff, //0x00002db7 jmp LBB0_325 + //0x00002dbc LBB0_540 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002dbc movq $-1, %r10 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dc3 movq $-1, %r9 + 0x4d, 0x89, 0xe8, //0x00002dca movq %r13, %r8 + 0x4c, 0x89, 0x54, 0x24, 0x28, //0x00002dcd movq %r10, $40(%rsp) + 0x49, 0x83, 0xfb, 0x10, //0x00002dd2 cmpq $16, %r11 + 0x4c, 0x89, 0x6c, 0x24, 0x30, //0x00002dd6 movq %r13, $48(%rsp) + 0x0f, 0x83, 0xaf, 0xf6, 0xff, 0xff, //0x00002ddb jae LBB0_436 + 0xe9, 0xf2, 0xf7, 0xff, 0xff, //0x00002de1 jmp LBB0_454 + //0x00002de6 LBB0_541 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002de6 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r15 + 0x45, 0x31, 0xd2, //0x00002df1 xorl %r10d, %r10d + 0x49, 0x83, 0xfb, 0x20, //0x00002df4 cmpq $32, %r11 + 0x0f, 0x83, 0xf8, 0xfd, 0xff, 0xff, //0x00002df8 jae LBB0_248 + //0x00002dfe LBB0_542 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002dfe vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e02 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e06 vmovdqa %ymm13, %ymm11 + 0xe9, 0x9a, 0x0b, 0x00, 0x00, //0x00002e0b jmp LBB0_658 + //0x00002e10 LBB0_543 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002e10 leaq (%r14,%r9), %rax + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e14 movq $-1, %r15 + 0x45, 0x31, 0xdb, //0x00002e1b xorl %r11d, %r11d + 0x49, 0x83, 0xfd, 0x20, //0x00002e1e cmpq $32, %r13 + 0x0f, 0x83, 0x27, 0xfe, 0xff, 0xff, //0x00002e22 jae LBB0_406 + //0x00002e28 LBB0_544 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e28 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e2c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e30 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002e35 vmovdqa %ymm15, %ymm12 + 0xe9, 0x35, 0x0d, 0x00, 0x00, //0x00002e3a jmp LBB0_681 + //0x00002e3f LBB0_545 + 0x49, 0x39, 0xf2, //0x00002e3f cmpq %rsi, %r10 + 0x0f, 0x84, 0xcd, 0x0e, 0x00, 0x00, //0x00002e42 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002e48 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002e4c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002e50 vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00002e55 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00002e58 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x00002e5c notq %rsi + 0x49, 0x01, 0xf2, //0x00002e5f addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00002e62 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00002e67 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002e6b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x28, 0xd4, 0xff, 0xff, //0x00002e70 vmovdqu $-11224(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x40, 0xd3, 0xff, 0xff, //0x00002e78 vmovdqu $-11456(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002e80 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00002e84 testq %r10, %r10 + 0x0f, 0x8f, 0x32, 0x00, 0x00, 0x00, //0x00002e87 jg LBB0_549 + 0xe9, 0x83, 0x0e, 0x00, 0x00, //0x00002e8d jmp LBB0_728 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e92 .p2align 4, 0x90 + //0x00002ea0 LBB0_547 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002ea0 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00002ea7 movl $2, %edx + 0x49, 0x01, 0xd1, //0x00002eac addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002eaf movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002eb6 addq %rcx, %r10 + 0x0f, 0x8e, 0x56, 0x0e, 0x00, 0x00, //0x00002eb9 jle LBB0_728 + //0x00002ebf LBB0_549 + 0x41, 0x0f, 0xb6, 0x01, //0x00002ebf movzbl (%r9), %eax + 0x3c, 0x5c, //0x00002ec3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00002ec5 je LBB0_547 + 0x3c, 0x22, //0x00002ecb cmpb $34, %al + 0x0f, 0x84, 0x14, 0x0a, 0x00, 0x00, //0x00002ecd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002ed3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00002eda movl $1, %edx + 0x49, 0x01, 0xd1, //0x00002edf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002ee2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x00002ee9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00002eec jg LBB0_549 + 0xe9, 0x1e, 0x0e, 0x00, 0x00, //0x00002ef2 jmp LBB0_728 + //0x00002ef7 LBB0_552 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ef7 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002efb vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002eff vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f04 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00002f09 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00002f0d jne LBB0_555 + 0x48, 0x89, 0xc1, //0x00002f13 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00002f16 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00002f19 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00002f1d addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00002f20 jmp LBB0_555 + //0x00002f25 LBB0_554 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002f25 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002f29 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002f2d vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00002f32 vmovdqa %ymm15, %ymm12 + //0x00002f37 LBB0_555 + 0x44, 0x89, 0xd1, //0x00002f37 movl %r10d, %ecx + 0xf7, 0xd1, //0x00002f3a notl %ecx + 0x21, 0xf1, //0x00002f3c andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00002f3e leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00002f41 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00002f45 notl %edi + 0x21, 0xf7, //0x00002f47 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002f49 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00002f4f xorl %r10d, %r10d + 0x01, 0xcf, //0x00002f52 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00002f54 setb %r10b + 0x01, 0xff, //0x00002f58 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002f5a xorl $1431655765, %edi + 0x21, 0xdf, //0x00002f60 andl %ebx, %edi + 0xf7, 0xd7, //0x00002f62 notl %edi + 0x21, 0xfa, //0x00002f64 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00002f66 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00002f6b vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00002f70 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x23, 0xd3, 0xff, 0xff, //0x00002f75 vmovdqu $-11485(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3b, 0xd2, 0xff, 0xff, //0x00002f7d vmovdqu $-11717(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00002f85 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00002f89 vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x00002f8d testq %rdx, %rdx + 0x0f, 0x85, 0xf4, 0xf9, 0xff, 0xff, //0x00002f90 jne LBB0_58 + //0x00002f96 LBB0_556 + 0x48, 0x83, 0xc0, 0x20, //0x00002f96 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x00002f9a addq $-32, %r11 + //0x00002f9e LBB0_557 + 0x4d, 0x85, 0xd2, //0x00002f9e testq %r10, %r10 + 0x0f, 0x85, 0x08, 0x07, 0x00, 0x00, //0x00002fa1 jne LBB0_637 + 0x4c, 0x89, 0xf1, //0x00002fa7 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00002faa notq %rcx + 0x4c, 0x89, 0xff, //0x00002fad movq %r15, %rdi + 0x4d, 0x85, 0xdb, //0x00002fb0 testq %r11, %r11 + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x00002fb3 je LBB0_569 + //0x00002fb9 LBB0_559 + 0x48, 0x83, 0xc1, 0x01, //0x00002fb9 addq $1, %rcx + //0x00002fbd LBB0_560 + 0x31, 0xf6, //0x00002fbd xorl %esi, %esi + //0x00002fbf LBB0_561 + 0x0f, 0xb6, 0x14, 0x30, //0x00002fbf movzbl (%rax,%rsi), %edx + 0x80, 0xfa, 0x22, //0x00002fc3 cmpb $34, %dl + 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, //0x00002fc6 je LBB0_568 + 0x80, 0xfa, 0x5c, //0x00002fcc cmpb $92, %dl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002fcf je LBB0_566 + 0x48, 0x83, 0xc6, 0x01, //0x00002fd5 addq $1, %rsi + 0x49, 0x39, 0xf3, //0x00002fd9 cmpq %rsi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002fdc jne LBB0_561 + 0xe9, 0x7b, 0x00, 0x00, 0x00, //0x00002fe2 jmp LBB0_564 + //0x00002fe7 LBB0_566 + 0x49, 0x8d, 0x53, 0xff, //0x00002fe7 leaq $-1(%r11), %rdx + 0x48, 0x39, 0xf2, //0x00002feb cmpq %rsi, %rdx + 0x0f, 0x84, 0xd7, 0x0c, 0x00, 0x00, //0x00002fee je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00002ff4 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00002ff8 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00002ffc vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x14, 0x01, //0x00003001 leaq (%rcx,%rax), %rdx + 0x48, 0x01, 0xf2, //0x00003005 addq %rsi, %rdx + 0x48, 0x83, 0xff, 0xff, //0x00003008 cmpq $-1, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x0000300c cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x00003010 cmoveq %rdx, %rdi + 0x48, 0x01, 0xf0, //0x00003014 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003017 addq $2, %rax + 0x4c, 0x89, 0xda, //0x0000301b movq %r11, %rdx + 0x48, 0x29, 0xf2, //0x0000301e subq %rsi, %rdx + 0x48, 0x83, 0xc2, 0xfe, //0x00003021 addq $-2, %rdx + 0x49, 0x83, 0xc3, 0xfe, //0x00003025 addq $-2, %r11 + 0x49, 0x39, 0xf3, //0x00003029 cmpq %rsi, %r11 + 0x49, 0x89, 0xd3, //0x0000302c movq %rdx, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000302f vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x64, 0xd2, 0xff, 0xff, //0x00003034 vmovdqu $-11676(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x7c, 0xd1, 0xff, 0xff, //0x0000303c vmovdqu $-11908(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003044 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00003048 jne LBB0_560 + 0xe9, 0x78, 0x0c, 0x00, 0x00, //0x0000304e jmp LBB0_703 + //0x00003053 LBB0_568 + 0x48, 0x01, 0xf0, //0x00003053 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003056 addq $1, %rax + //0x0000305a LBB0_569 + 0x4c, 0x29, 0xf0, //0x0000305a subq %r14, %rax + 0xe9, 0x49, 0xd7, 0xff, 0xff, //0x0000305d jmp LBB0_63 + //0x00003062 LBB0_564 + 0x80, 0xfa, 0x22, //0x00003062 cmpb $34, %dl + 0x0f, 0x85, 0x60, 0x0c, 0x00, 0x00, //0x00003065 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000306b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000306f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003073 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x00003078 addq %r11, %rax + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000307b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x18, 0xd2, 0xff, 0xff, //0x00003080 vmovdqu $-11752(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x30, 0xd1, 0xff, 0xff, //0x00003088 vmovdqu $-11984(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003090 vmovdqa %ymm0, %ymm11 + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003094 jmp LBB0_569 + //0x00003099 LBB0_570 + 0x49, 0x39, 0xf2, //0x00003099 cmpq %rsi, %r10 + 0x0f, 0x84, 0x73, 0x0c, 0x00, 0x00, //0x0000309c je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000030a2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000030a6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000030aa vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x000030af addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000030b2 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x000030b6 notq %rsi + 0x49, 0x01, 0xf2, //0x000030b9 addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x000030bc movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x000030c1 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000030c5 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xce, 0xd1, 0xff, 0xff, //0x000030ca vmovdqu $-11826(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xe6, 0xd0, 0xff, 0xff, //0x000030d2 vmovdqu $-12058(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000030da vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x000030de testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000030e1 jg LBB0_574 + 0xe9, 0x29, 0x0c, 0x00, 0x00, //0x000030e7 jmp LBB0_728 + //0x000030ec LBB0_572 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000030ec movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x000030f3 movl $2, %edx + 0x49, 0x01, 0xd1, //0x000030f8 addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030fb movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003102 addq %rcx, %r10 + 0x0f, 0x8e, 0x0a, 0x0c, 0x00, 0x00, //0x00003105 jle LBB0_728 + //0x0000310b LBB0_574 + 0x41, 0x0f, 0xb6, 0x01, //0x0000310b movzbl (%r9), %eax + 0x3c, 0x5c, //0x0000310f cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003111 je LBB0_572 + 0x3c, 0x22, //0x00003117 cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003119 je LBB0_699 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000311f movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x00003126 movl $1, %edx + 0x49, 0x01, 0xd1, //0x0000312b addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000312e movq $-1, %rax + 0x49, 0x01, 0xca, //0x00003135 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003138 jg LBB0_574 + 0xe9, 0xd2, 0x0b, 0x00, 0x00, //0x0000313e jmp LBB0_728 + //0x00003143 LBB0_699 + 0x4d, 0x29, 0xf1, //0x00003143 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003146 addq $1, %r9 + 0x4d, 0x89, 0x0f, //0x0000314a movq %r9, (%r15) + 0x4d, 0x85, 0xc0, //0x0000314d testq %r8, %r8 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003150 movq $24(%rsp), %r10 + 0x0f, 0x8f, 0x4d, 0xe7, 0xff, 0xff, //0x00003155 jg LBB0_304 + 0xe9, 0x55, 0x0b, 0x00, 0x00, //0x0000315b jmp LBB0_700 + //0x00003160 LBB0_577 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003160 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003164 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003168 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000316d vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003172 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003176 jne LBB0_580 + 0x48, 0x89, 0xc1, //0x0000317c movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x0000317f subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003182 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003186 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003189 jmp LBB0_580 + //0x0000318e LBB0_579 + 0xc5, 0x7d, 0x7f, 0xe2, //0x0000318e vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003192 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003196 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000319b vmovdqa %ymm15, %ymm12 + //0x000031a0 LBB0_580 + 0x44, 0x89, 0xd9, //0x000031a0 movl %r11d, %ecx + 0xf7, 0xd1, //0x000031a3 notl %ecx + 0x21, 0xd1, //0x000031a5 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x000031a7 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x000031aa leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x000031ae notl %esi + 0x21, 0xd6, //0x000031b0 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031b2 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x000031b8 xorl %r11d, %r11d + 0x01, 0xce, //0x000031bb addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x000031bd setb %r11b + 0x01, 0xf6, //0x000031c1 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x000031c3 xorl $1431655765, %esi + 0x21, 0xfe, //0x000031c9 andl %edi, %esi + 0xf7, 0xd6, //0x000031cb notl %esi + 0x41, 0x21, 0xf2, //0x000031cd andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000031d0 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x000031d5 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000031da vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb9, 0xd0, 0xff, 0xff, //0x000031df vmovdqu $-12103(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xd1, 0xcf, 0xff, 0xff, //0x000031e7 vmovdqu $-12335(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x000031ef vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x000031f3 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x000031f7 testq %r10, %r10 + 0x0f, 0x85, 0xdb, 0xf7, 0xff, 0xff, //0x000031fa jne LBB0_156 + //0x00003200 LBB0_581 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003200 movl $64, %edx + //0x00003205 LBB0_582 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003205 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003209 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x0000320e vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003212 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003216 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003219 testq %r10, %r10 + 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x0000321c je LBB0_585 + 0x85, 0xf6, //0x00003222 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003224 movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003229 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x0000322c cmpq %rdi, %rdx + 0x0f, 0x87, 0x79, 0x0c, 0x00, 0x00, //0x0000322f ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x00003235 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003238 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000323b addq $1, %rax + 0xe9, 0x67, 0xd5, 0xff, 0xff, //0x0000323f jmp LBB0_63 + //0x00003244 LBB0_585 + 0x85, 0xf6, //0x00003244 testl %esi, %esi + 0x0f, 0x85, 0x6f, 0x0c, 0x00, 0x00, //0x00003246 jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x0000324c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003250 addq $-32, %r13 + //0x00003254 LBB0_587 + 0x4d, 0x85, 0xdb, //0x00003254 testq %r11, %r11 + 0x0f, 0x85, 0xb0, 0x04, 0x00, 0x00, //0x00003257 jne LBB0_639 + 0x4c, 0x89, 0xf9, //0x0000325d movq %r15, %rcx + 0x4c, 0x8b, 0x1c, 0x24, //0x00003260 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x00003264 testq %r13, %r13 + 0x0f, 0x84, 0x5e, 0x0a, 0x00, 0x00, //0x00003267 je LBB0_703 + //0x0000326d LBB0_589 + 0x0f, 0xb6, 0x10, //0x0000326d movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00003270 cmpb $34, %dl + 0x0f, 0x84, 0x9c, 0x00, 0x00, 0x00, //0x00003273 je LBB0_701 + 0x80, 0xfa, 0x5c, //0x00003279 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000327c je LBB0_593 + 0x80, 0xfa, 0x1f, //0x00003282 cmpb $31, %dl + 0x0f, 0x86, 0x3b, 0x0c, 0x00, 0x00, //0x00003285 jbe LBB0_736 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000328b movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00003292 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00003297 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x0000329a addq %rdx, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x0000329d jne LBB0_589 + 0xe9, 0x23, 0x0a, 0x00, 0x00, //0x000032a3 jmp LBB0_703 + //0x000032a8 LBB0_593 + 0x49, 0x83, 0xfd, 0x01, //0x000032a8 cmpq $1, %r13 + 0x0f, 0x84, 0x19, 0x0a, 0x00, 0x00, //0x000032ac je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000032b2 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000032b6 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000032ba vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x000032bf movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x000032c6 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x000032cb cmpq $-1, %rcx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x000032cf jne LBB0_596 + 0x49, 0x89, 0xc7, //0x000032d5 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x000032d8 subq %r14, %r15 + 0x4c, 0x89, 0xf9, //0x000032db movq %r15, %rcx + //0x000032de LBB0_596 + 0x4c, 0x8b, 0x1c, 0x24, //0x000032de movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000032e2 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000032e7 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xac, 0xcf, 0xff, 0xff, //0x000032ec vmovdqu $-12372(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc4, 0xce, 0xff, 0xff, //0x000032f4 vmovdqu $-12604(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000032fc vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003300 vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf0, //0x00003304 addq %rsi, %rax + 0x49, 0x01, 0xd5, //0x00003307 addq %rdx, %r13 + 0x0f, 0x85, 0x5d, 0xff, 0xff, 0xff, //0x0000330a jne LBB0_589 + 0xe9, 0xb6, 0x09, 0x00, 0x00, //0x00003310 jmp LBB0_703 + //0x00003315 LBB0_701 + 0x4c, 0x29, 0xf0, //0x00003315 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003318 addq $1, %rax + 0x48, 0x85, 0xc0, //0x0000331c testq %rax, %rax + 0x0f, 0x89, 0x67, 0xd0, 0xff, 0xff, //0x0000331f jns LBB0_237 + 0xe9, 0x97, 0x09, 0x00, 0x00, //0x00003325 jmp LBB0_702 + //0x0000332a LBB0_597 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000332a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000332e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003332 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003337 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x0000333c cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003340 jne LBB0_600 + 0x48, 0x89, 0xc1, //0x00003346 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003349 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x0000334c bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003350 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003353 jmp LBB0_600 + //0x00003358 LBB0_599 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003358 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000335c vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003360 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003365 vmovdqa %ymm15, %ymm12 + //0x0000336a LBB0_600 + 0x44, 0x89, 0xd1, //0x0000336a movl %r10d, %ecx + 0xf7, 0xd1, //0x0000336d notl %ecx + 0x21, 0xf1, //0x0000336f andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x00003371 leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x00003374 leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003378 notl %edi + 0x21, 0xf7, //0x0000337a andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000337c andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00003382 xorl %r10d, %r10d + 0x01, 0xcf, //0x00003385 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003387 setb %r10b + 0x01, 0xff, //0x0000338b addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x0000338d xorl $1431655765, %edi + 0x21, 0xdf, //0x00003393 andl %ebx, %edi + 0xf7, 0xd7, //0x00003395 notl %edi + 0x21, 0xfa, //0x00003397 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003399 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x0000339e vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x000033a3 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xf0, 0xce, 0xff, 0xff, //0x000033a8 vmovdqu $-12560(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x08, 0xce, 0xff, 0xff, //0x000033b0 vmovdqu $-12792(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000033b8 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x000033bc vmovdqa %ymm1, %ymm12 + 0x48, 0x85, 0xd2, //0x000033c0 testq %rdx, %rdx + 0x0f, 0x85, 0xce, 0xf6, 0xff, 0xff, //0x000033c3 jne LBB0_93 + //0x000033c9 LBB0_601 + 0x48, 0x83, 0xc0, 0x20, //0x000033c9 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000033cd addq $-32, %r11 + //0x000033d1 LBB0_602 + 0x4d, 0x85, 0xd2, //0x000033d1 testq %r10, %r10 + 0x0f, 0x85, 0x97, 0x03, 0x00, 0x00, //0x000033d4 jne LBB0_641 + 0x4c, 0x89, 0xf2, //0x000033da movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000033dd notq %rdx + 0x4c, 0x89, 0xfe, //0x000033e0 movq %r15, %rsi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000033e3 movq $24(%rsp), %r10 + 0x4d, 0x85, 0xdb, //0x000033e8 testq %r11, %r11 + 0x0f, 0x84, 0xa6, 0x00, 0x00, 0x00, //0x000033eb je LBB0_614 + //0x000033f1 LBB0_604 + 0x48, 0x83, 0xc2, 0x01, //0x000033f1 addq $1, %rdx + //0x000033f5 LBB0_605 + 0x31, 0xff, //0x000033f5 xorl %edi, %edi + //0x000033f7 LBB0_606 + 0x0f, 0xb6, 0x1c, 0x38, //0x000033f7 movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000033fb cmpb $34, %bl + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000033fe je LBB0_613 + 0x80, 0xfb, 0x5c, //0x00003404 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003407 je LBB0_611 + 0x48, 0x83, 0xc7, 0x01, //0x0000340d addq $1, %rdi + 0x49, 0x39, 0xfb, //0x00003411 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003414 jne LBB0_606 + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x0000341a jmp LBB0_609 + //0x0000341f LBB0_611 + 0x49, 0x8d, 0x4b, 0xff, //0x0000341f leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x00003423 cmpq %rdi, %rcx + 0x0f, 0x84, 0x9f, 0x08, 0x00, 0x00, //0x00003426 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000342c vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003430 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003434 vmovdqa %ymm13, %ymm11 + 0x48, 0x8d, 0x0c, 0x02, //0x00003439 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x0000343d addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003440 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003444 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003448 cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x0000344c addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000344f addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003453 movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003456 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003459 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x0000345d addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003461 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003464 movq %rcx, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003467 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000346c vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xce, 0xff, 0xff, //0x00003471 vmovdqu $-12761(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xcd, 0xff, 0xff, //0x00003479 vmovdqu $-12993(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003481 vmovdqa %ymm0, %ymm11 + 0x0f, 0x85, 0x6a, 0xff, 0xff, 0xff, //0x00003485 jne LBB0_605 + 0xe9, 0x3b, 0x08, 0x00, 0x00, //0x0000348b jmp LBB0_703 + //0x00003490 LBB0_613 + 0x48, 0x01, 0xf8, //0x00003490 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003493 addq $1, %rax + //0x00003497 LBB0_614 + 0x4c, 0x29, 0xf0, //0x00003497 subq %r14, %rax + 0xe9, 0x20, 0x01, 0x00, 0x00, //0x0000349a jmp LBB0_623 + //0x0000349f LBB0_609 + 0x80, 0xfb, 0x22, //0x0000349f cmpb $34, %bl + 0x0f, 0x85, 0x23, 0x08, 0x00, 0x00, //0x000034a2 jne LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000034a8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000034ac vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034b0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x01, 0xd8, //0x000034b5 addq %r11, %rax + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000034b8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000034bd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xd6, 0xcd, 0xff, 0xff, //0x000034c2 vmovdqu $-12842(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xee, 0xcc, 0xff, 0xff, //0x000034ca vmovdqu $-13074(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000034d2 vmovdqa %ymm0, %ymm11 + 0xe9, 0xbc, 0xff, 0xff, 0xff, //0x000034d6 jmp LBB0_614 + //0x000034db LBB0_615 + 0xc5, 0x7d, 0x7f, 0xe2, //0x000034db vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x000034df vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000034e3 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x000034e8 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x000034ed cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x000034f1 jne LBB0_618 + 0x48, 0x89, 0xc1, //0x000034f7 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x000034fa subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x000034fd bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003501 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003504 jmp LBB0_618 + //0x00003509 LBB0_617 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003509 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x0000350d vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003511 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003516 vmovdqa %ymm15, %ymm12 + //0x0000351b LBB0_618 + 0x44, 0x89, 0xd9, //0x0000351b movl %r11d, %ecx + 0xf7, 0xd1, //0x0000351e notl %ecx + 0x21, 0xd1, //0x00003520 andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003522 leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003525 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003529 notl %esi + 0x21, 0xd6, //0x0000352b andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000352d andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003533 xorl %r11d, %r11d + 0x01, 0xce, //0x00003536 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003538 setb %r11b + 0x01, 0xf6, //0x0000353c addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x0000353e xorl $1431655765, %esi + 0x21, 0xfe, //0x00003544 andl %edi, %esi + 0xf7, 0xd6, //0x00003546 notl %esi + 0x41, 0x21, 0xf2, //0x00003548 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000354b vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003550 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003555 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x3e, 0xcd, 0xff, 0xff, //0x0000355a vmovdqu $-12994(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x56, 0xcc, 0xff, 0xff, //0x00003562 vmovdqu $-13226(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x0000356a vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x0000356e vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003572 testq %r10, %r10 + 0x0f, 0x85, 0x6d, 0xf5, 0xff, 0xff, //0x00003575 jne LBB0_176 + //0x0000357b LBB0_619 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000357b movl $64, %edx + //0x00003580 LBB0_620 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003580 vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003584 vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003589 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x0000358d vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003591 bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003594 testq %r10, %r10 + 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00003597 je LBB0_624 + 0x85, 0xf6, //0x0000359d testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x0000359f movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x000035a4 cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x000035a7 cmpq %rdi, %rdx + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035aa movq $24(%rsp), %r10 + 0x0f, 0x87, 0xf9, 0x08, 0x00, 0x00, //0x000035af ja LBB0_734 + 0x4c, 0x29, 0xf0, //0x000035b5 subq %r14, %rax + 0x48, 0x01, 0xd0, //0x000035b8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035bb addq $1, %rax + //0x000035bf LBB0_623 + 0x4c, 0x8b, 0x1c, 0x24, //0x000035bf movq (%rsp), %r11 + 0xe9, 0xc6, 0xe2, 0xff, 0xff, //0x000035c3 jmp LBB0_302 + //0x000035c8 LBB0_624 + 0x85, 0xf6, //0x000035c8 testl %esi, %esi + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000035ca movq $24(%rsp), %r10 + 0x0f, 0x85, 0xe6, 0x08, 0x00, 0x00, //0x000035cf jne LBB0_735 + 0x48, 0x83, 0xc0, 0x20, //0x000035d5 addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x000035d9 addq $-32, %r13 + //0x000035dd LBB0_626 + 0x4d, 0x85, 0xdb, //0x000035dd testq %r11, %r11 + 0x0f, 0x85, 0xee, 0x01, 0x00, 0x00, //0x000035e0 jne LBB0_643 + 0x4c, 0x89, 0xfa, //0x000035e6 movq %r15, %rdx + 0x4c, 0x8b, 0x1c, 0x24, //0x000035e9 movq (%rsp), %r11 + 0x4d, 0x85, 0xed, //0x000035ed testq %r13, %r13 + 0x0f, 0x84, 0xd5, 0x06, 0x00, 0x00, //0x000035f0 je LBB0_703 + //0x000035f6 LBB0_628 + 0x0f, 0xb6, 0x18, //0x000035f6 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x000035f9 cmpb $34, %bl + 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x000035fc je LBB0_636 + 0x80, 0xfb, 0x5c, //0x00003602 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003605 je LBB0_632 + 0x80, 0xfb, 0x1f, //0x0000360b cmpb $31, %bl + 0x0f, 0x86, 0xb2, 0x08, 0x00, 0x00, //0x0000360e jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003614 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x0000361b movl $1, %edi + 0x48, 0x01, 0xf8, //0x00003620 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003623 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003626 jne LBB0_628 + 0xe9, 0x9a, 0x06, 0x00, 0x00, //0x0000362c jmp LBB0_703 + //0x00003631 LBB0_632 + 0x49, 0x83, 0xfd, 0x01, //0x00003631 cmpq $1, %r13 + 0x0f, 0x84, 0x90, 0x06, 0x00, 0x00, //0x00003635 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000363b vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000363f vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003643 vmovdqa %ymm13, %ymm11 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003648 movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x0000364f movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003654 cmpq $-1, %rdx + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00003658 jne LBB0_635 + 0x49, 0x89, 0xc7, //0x0000365e movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003661 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003664 movq %r15, %rdx + //0x00003667 LBB0_635 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003667 movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x0000366b movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003670 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003675 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x1e, 0xcc, 0xff, 0xff, //0x0000367a vmovdqu $-13282(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x36, 0xcb, 0xff, 0xff, //0x00003682 vmovdqu $-13514(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000368a vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x0000368e vmovdqa %ymm1, %ymm12 + 0x48, 0x01, 0xf8, //0x00003692 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003695 addq %rsi, %r13 + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003698 jne LBB0_628 + 0xe9, 0x28, 0x06, 0x00, 0x00, //0x0000369e jmp LBB0_703 + //0x000036a3 LBB0_636 + 0x4c, 0x29, 0xf0, //0x000036a3 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000036a6 addq $1, %rax + 0xe9, 0xdf, 0xe1, 0xff, 0xff, //0x000036aa jmp LBB0_302 + //0x000036af LBB0_637 + 0x4d, 0x85, 0xdb, //0x000036af testq %r11, %r11 + 0x0f, 0x84, 0x13, 0x06, 0x00, 0x00, //0x000036b2 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000036b8 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000036bc vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000036c0 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x000036c5 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x000036c8 notq %rcx + 0x48, 0x8d, 0x14, 0x08, //0x000036cb leaq (%rax,%rcx), %rdx + 0x49, 0x83, 0xff, 0xff, //0x000036cf cmpq $-1, %r15 + 0x4c, 0x89, 0xff, //0x000036d3 movq %r15, %rdi + 0x4c, 0x0f, 0x44, 0xfa, //0x000036d6 cmoveq %rdx, %r15 + 0x48, 0x0f, 0x44, 0xfa, //0x000036da cmoveq %rdx, %rdi + 0x48, 0x83, 0xc0, 0x01, //0x000036de addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000036e2 addq $-1, %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000036e6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xad, 0xcb, 0xff, 0xff, //0x000036eb vmovdqu $-13395(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xc5, 0xca, 0xff, 0xff, //0x000036f3 vmovdqu $-13627(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000036fb vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000036ff testq %r11, %r11 + 0x0f, 0x85, 0xb1, 0xf8, 0xff, 0xff, //0x00003702 jne LBB0_559 + 0xe9, 0x4d, 0xf9, 0xff, 0xff, //0x00003708 jmp LBB0_569 + //0x0000370d LBB0_639 + 0x4d, 0x85, 0xed, //0x0000370d testq %r13, %r13 + 0x0f, 0x84, 0xb5, 0x05, 0x00, 0x00, //0x00003710 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003716 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000371a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000371e vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf1, //0x00003723 movq %r14, %rcx + 0x48, 0xf7, 0xd1, //0x00003726 notq %rcx + 0x48, 0x01, 0xc1, //0x00003729 addq %rax, %rcx + 0x49, 0x83, 0xff, 0xff, //0x0000372c cmpq $-1, %r15 + 0x4c, 0x89, 0xfa, //0x00003730 movq %r15, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00003733 cmoveq %rcx, %rdx + 0x49, 0x0f, 0x45, 0xcf, //0x00003737 cmovneq %r15, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x0000373b addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x0000373f addq $-1, %r13 + 0x49, 0x89, 0xd7, //0x00003743 movq %rdx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003746 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x0000374a vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x49, 0xcb, 0xff, 0xff, //0x0000374f vmovdqu $-13495(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x61, 0xca, 0xff, 0xff, //0x00003757 vmovdqu $-13727(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000375f vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x00003763 testq %r13, %r13 + 0x0f, 0x85, 0x01, 0xfb, 0xff, 0xff, //0x00003766 jne LBB0_589 + 0xe9, 0x5a, 0x05, 0x00, 0x00, //0x0000376c jmp LBB0_703 + //0x00003771 LBB0_641 + 0x4d, 0x85, 0xdb, //0x00003771 testq %r11, %r11 + 0x0f, 0x84, 0x51, 0x05, 0x00, 0x00, //0x00003774 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x0000377a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000377e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003782 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x00003787 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x0000378a notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x0000378d leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003791 cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003795 movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003798 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x0000379c cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x000037a0 addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x000037a4 addq $-1, %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x000037a8 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x000037ad vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0xe6, 0xca, 0xff, 0xff, //0x000037b2 vmovdqu $-13594(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xfe, 0xc9, 0xff, 0xff, //0x000037ba vmovdqu $-13826(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x000037c2 vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xdb, //0x000037c6 testq %r11, %r11 + 0x0f, 0x85, 0x22, 0xfc, 0xff, 0xff, //0x000037c9 jne LBB0_604 + 0xe9, 0xc3, 0xfc, 0xff, 0xff, //0x000037cf jmp LBB0_614 + //0x000037d4 LBB0_643 + 0x4d, 0x85, 0xed, //0x000037d4 testq %r13, %r13 + 0x0f, 0x84, 0xee, 0x04, 0x00, 0x00, //0x000037d7 je LBB0_703 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000037dd vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000037e1 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000037e5 vmovdqa %ymm13, %ymm11 + 0x4c, 0x89, 0xf2, //0x000037ea movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000037ed notq %rdx + 0x48, 0x01, 0xc2, //0x000037f0 addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x000037f3 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x000037f7 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x000037fa cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x000037fe cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003802 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003806 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x0000380a movq %rcx, %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x0000380d movq (%rsp), %r11 + 0x4c, 0x8b, 0x54, 0x24, 0x18, //0x00003811 movq $24(%rsp), %r10 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003816 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x7d, 0xca, 0xff, 0xff, //0x0000381b vmovdqu $-13699(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x95, 0xc9, 0xff, 0xff, //0x00003823 vmovdqu $-13931(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000382b vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xed, //0x0000382f testq %r13, %r13 + 0x0f, 0x85, 0xbe, 0xfd, 0xff, 0xff, //0x00003832 jne LBB0_628 + 0xe9, 0x8e, 0x04, 0x00, 0x00, //0x00003838 jmp LBB0_703 + //0x0000383d LBB0_645 + 0x49, 0x39, 0xf2, //0x0000383d cmpq %rsi, %r10 + 0x0f, 0x84, 0xcf, 0x04, 0x00, 0x00, //0x00003840 je LBB0_728 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003846 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000384a vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x0000384e vmovdqa %ymm13, %ymm11 + 0x49, 0x01, 0xf1, //0x00003853 addq %rsi, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x00003856 addq $1, %r9 + 0x48, 0xf7, 0xd6, //0x0000385a notq %rsi + 0x49, 0x01, 0xf2, //0x0000385d addq %rsi, %r10 + 0x4c, 0x8b, 0x7c, 0x24, 0x08, //0x00003860 movq $8(%rsp), %r15 + 0x4c, 0x8b, 0x1c, 0x24, //0x00003865 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003869 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0xfe, 0x6f, 0x25, 0x2a, 0xca, 0xff, 0xff, //0x0000386e vmovdqu $-13782(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x42, 0xc9, 0xff, 0xff, //0x00003876 vmovdqu $-14014(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x0000387e vmovdqa %ymm0, %ymm11 + 0x4d, 0x85, 0xd2, //0x00003882 testq %r10, %r10 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003885 jg LBB0_649 + 0xe9, 0x85, 0x04, 0x00, 0x00, //0x0000388b jmp LBB0_728 + //0x00003890 LBB0_647 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003890 movq $-2, %rcx + 0xba, 0x02, 0x00, 0x00, 0x00, //0x00003897 movl $2, %edx + 0x49, 0x01, 0xd1, //0x0000389c addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000389f movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038a6 addq %rcx, %r10 + 0x0f, 0x8e, 0x66, 0x04, 0x00, 0x00, //0x000038a9 jle LBB0_728 + //0x000038af LBB0_649 + 0x41, 0x0f, 0xb6, 0x01, //0x000038af movzbl (%r9), %eax + 0x3c, 0x5c, //0x000038b3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000038b5 je LBB0_647 + 0x3c, 0x22, //0x000038bb cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000038bd je LBB0_652 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000038c3 movq $-1, %rcx + 0xba, 0x01, 0x00, 0x00, 0x00, //0x000038ca movl $1, %edx + 0x49, 0x01, 0xd1, //0x000038cf addq %rdx, %r9 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000038d2 movq $-1, %rax + 0x49, 0x01, 0xca, //0x000038d9 addq %rcx, %r10 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000038dc jg LBB0_649 + 0xe9, 0x2e, 0x04, 0x00, 0x00, //0x000038e2 jmp LBB0_728 + //0x000038e7 LBB0_652 + 0x4d, 0x29, 0xf1, //0x000038e7 subq %r14, %r9 + 0x49, 0x83, 0xc1, 0x01, //0x000038ea addq $1, %r9 + 0xe9, 0xbf, 0xd1, 0xff, 0xff, //0x000038ee jmp LBB0_105 + //0x000038f3 LBB0_653 + 0xc5, 0x7d, 0x7f, 0xe1, //0x000038f3 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x000038f7 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x000038fb vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003900 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003905 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003909 jne LBB0_656 + 0x48, 0x89, 0xc1, //0x0000390f movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003912 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003915 bsfq %rsi, %r15 + 0x49, 0x01, 0xcf, //0x00003919 addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x0000391c jmp LBB0_656 + //0x00003921 LBB0_655 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003921 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003925 vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003929 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x0000392e vmovdqa %ymm15, %ymm12 + //0x00003933 LBB0_656 + 0x44, 0x89, 0xd1, //0x00003933 movl %r10d, %ecx + 0xf7, 0xd1, //0x00003936 notl %ecx + 0x21, 0xf1, //0x00003938 andl %esi, %ecx + 0x8d, 0x3c, 0x09, //0x0000393a leal (%rcx,%rcx), %edi + 0x41, 0x8d, 0x1c, 0x4a, //0x0000393d leal (%r10,%rcx,2), %ebx + 0xf7, 0xd7, //0x00003941 notl %edi + 0x21, 0xf7, //0x00003943 andl %esi, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003945 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x0000394b xorl %r10d, %r10d + 0x01, 0xcf, //0x0000394e addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00003950 setb %r10b + 0x01, 0xff, //0x00003954 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00003956 xorl $1431655765, %edi + 0x21, 0xdf, //0x0000395c andl %ebx, %edi + 0xf7, 0xd7, //0x0000395e notl %edi + 0x21, 0xfa, //0x00003960 andl %edi, %edx + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003962 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003967 vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x0000396c vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0x27, 0xc9, 0xff, 0xff, //0x00003971 vmovdqu $-14041(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0x3f, 0xc8, 0xff, 0xff, //0x00003979 vmovdqu $-14273(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003981 vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003985 vmovdqa %ymm1, %ymm12 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003989 vmovdqa %ymm13, %ymm2 + 0x48, 0x85, 0xd2, //0x0000398d testq %rdx, %rdx + 0x0f, 0x85, 0x95, 0xf2, 0xff, 0xff, //0x00003990 jne LBB0_251 + //0x00003996 LBB0_657 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003996 vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x0000399a vmovdqa %ymm11, %ymm0 + 0xc5, 0x7d, 0x6f, 0xda, //0x0000399e vmovdqa %ymm2, %ymm11 + 0x48, 0x83, 0xc0, 0x20, //0x000039a2 addq $32, %rax + 0x49, 0x83, 0xc3, 0xe0, //0x000039a6 addq $-32, %r11 + //0x000039aa LBB0_658 + 0x4d, 0x85, 0xd2, //0x000039aa testq %r10, %r10 + 0x0f, 0x85, 0x75, 0x02, 0x00, 0x00, //0x000039ad jne LBB0_693 + 0x4c, 0x89, 0xf2, //0x000039b3 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x000039b6 notq %rdx + 0x4c, 0x89, 0xfe, //0x000039b9 movq %r15, %rsi + 0x4d, 0x85, 0xdb, //0x000039bc testq %r11, %r11 + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000039bf je LBB0_670 + //0x000039c5 LBB0_660 + 0x48, 0x83, 0xc2, 0x01, //0x000039c5 addq $1, %rdx + //0x000039c9 LBB0_661 + 0x31, 0xff, //0x000039c9 xorl %edi, %edi + //0x000039cb LBB0_662 + 0x0f, 0xb6, 0x1c, 0x38, //0x000039cb movzbl (%rax,%rdi), %ebx + 0x80, 0xfb, 0x22, //0x000039cf cmpb $34, %bl + 0x0f, 0x84, 0x61, 0x00, 0x00, 0x00, //0x000039d2 je LBB0_669 + 0x80, 0xfb, 0x5c, //0x000039d8 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000039db je LBB0_667 + 0x48, 0x83, 0xc7, 0x01, //0x000039e1 addq $1, %rdi + 0x49, 0x39, 0xfb, //0x000039e5 cmpq %rdi, %r11 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000039e8 jne LBB0_662 + 0xe9, 0x62, 0x00, 0x00, 0x00, //0x000039ee jmp LBB0_665 + //0x000039f3 LBB0_667 + 0x49, 0x8d, 0x4b, 0xff, //0x000039f3 leaq $-1(%r11), %rcx + 0x48, 0x39, 0xf9, //0x000039f7 cmpq %rdi, %rcx + 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000039fa je LBB0_703 + 0x48, 0x8d, 0x0c, 0x02, //0x00003a00 leaq (%rdx,%rax), %rcx + 0x48, 0x01, 0xf9, //0x00003a04 addq %rdi, %rcx + 0x48, 0x83, 0xfe, 0xff, //0x00003a07 cmpq $-1, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003a0b cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003a0f cmoveq %rcx, %rsi + 0x48, 0x01, 0xf8, //0x00003a13 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003a16 addq $2, %rax + 0x4c, 0x89, 0xd9, //0x00003a1a movq %r11, %rcx + 0x48, 0x29, 0xf9, //0x00003a1d subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a20 addq $-2, %rcx + 0x49, 0x83, 0xc3, 0xfe, //0x00003a24 addq $-2, %r11 + 0x49, 0x39, 0xfb, //0x00003a28 cmpq %rdi, %r11 + 0x49, 0x89, 0xcb, //0x00003a2b movq %rcx, %r11 + 0x0f, 0x85, 0x95, 0xff, 0xff, 0xff, //0x00003a2e jne LBB0_661 + 0xe9, 0x92, 0x02, 0x00, 0x00, //0x00003a34 jmp LBB0_703 + //0x00003a39 LBB0_669 + 0x48, 0x01, 0xf8, //0x00003a39 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003a3c addq $1, %rax + //0x00003a40 LBB0_670 + 0x4c, 0x29, 0xf0, //0x00003a40 subq %r14, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003a43 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003a47 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003a4c vmovdqa %ymm11, %ymm2 + 0xe9, 0xb6, 0x01, 0x00, 0x00, //0x00003a50 jmp LBB0_692 + //0x00003a55 LBB0_665 + 0x80, 0xfb, 0x22, //0x00003a55 cmpb $34, %bl + 0x0f, 0x85, 0x6d, 0x02, 0x00, 0x00, //0x00003a58 jne LBB0_703 + 0x4c, 0x01, 0xd8, //0x00003a5e addq %r11, %rax + 0xe9, 0xda, 0xff, 0xff, 0xff, //0x00003a61 jmp LBB0_670 + //0x00003a66 LBB0_671 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a66 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a6a vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a6e vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003a73 vmovdqa %ymm15, %ymm12 + 0x49, 0x83, 0xff, 0xff, //0x00003a78 cmpq $-1, %r15 + 0x0f, 0x85, 0x24, 0x00, 0x00, 0x00, //0x00003a7c jne LBB0_674 + 0x48, 0x89, 0xc1, //0x00003a82 movq %rax, %rcx + 0x4c, 0x29, 0xf1, //0x00003a85 subq %r14, %rcx + 0x4c, 0x0f, 0xbc, 0xfa, //0x00003a88 bsfq %rdx, %r15 + 0x49, 0x01, 0xcf, //0x00003a8c addq %rcx, %r15 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00003a8f jmp LBB0_674 + //0x00003a94 LBB0_673 + 0xc5, 0x7d, 0x7f, 0xe2, //0x00003a94 vmovdqa %ymm12, %ymm2 + 0xc5, 0x7d, 0x7f, 0xd9, //0x00003a98 vmovdqa %ymm11, %ymm1 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003a9c vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003aa1 vmovdqa %ymm15, %ymm12 + //0x00003aa6 LBB0_674 + 0x44, 0x89, 0xd9, //0x00003aa6 movl %r11d, %ecx + 0xf7, 0xd1, //0x00003aa9 notl %ecx + 0x21, 0xd1, //0x00003aab andl %edx, %ecx + 0x8d, 0x34, 0x09, //0x00003aad leal (%rcx,%rcx), %esi + 0x41, 0x8d, 0x3c, 0x4b, //0x00003ab0 leal (%r11,%rcx,2), %edi + 0xf7, 0xd6, //0x00003ab4 notl %esi + 0x21, 0xd6, //0x00003ab6 andl %edx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003ab8 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00003abe xorl %r11d, %r11d + 0x01, 0xce, //0x00003ac1 addl %ecx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00003ac3 setb %r11b + 0x01, 0xf6, //0x00003ac7 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x00003ac9 xorl $1431655765, %esi + 0x21, 0xfe, //0x00003acf andl %edi, %esi + 0xf7, 0xd6, //0x00003ad1 notl %esi + 0x41, 0x21, 0xf2, //0x00003ad3 andl %esi, %r10d + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003ad6 vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003adb vmovdqa %ymm12, %ymm15 + 0xc4, 0x41, 0x7d, 0x6f, 0xeb, //0x00003ae0 vmovdqa %ymm11, %ymm13 + 0xc5, 0xfe, 0x6f, 0x25, 0xb3, 0xc7, 0xff, 0xff, //0x00003ae5 vmovdqu $-14413(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xcb, 0xc6, 0xff, 0xff, //0x00003aed vmovdqu $-14645(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd9, //0x00003af5 vmovdqa %ymm1, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe2, //0x00003af9 vmovdqa %ymm2, %ymm12 + 0x4d, 0x85, 0xd2, //0x00003afd testq %r10, %r10 + 0x0f, 0x85, 0x7a, 0xf1, 0xff, 0xff, //0x00003b00 jne LBB0_409 + //0x00003b06 LBB0_675 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00003b06 movl $64, %edx + //0x00003b0b LBB0_676 + 0xc5, 0xbd, 0x64, 0xc8, //0x00003b0b vpcmpgtb %ymm0, %ymm8, %ymm1 + 0xc4, 0xc1, 0x7d, 0x64, 0xc1, //0x00003b0f vpcmpgtb %ymm9, %ymm0, %ymm0 + 0xc5, 0xf5, 0xdb, 0xc0, //0x00003b14 vpand %ymm0, %ymm1, %ymm0 + 0xc5, 0xfd, 0xd7, 0xf0, //0x00003b18 vpmovmskb %ymm0, %esi + 0x0f, 0xbc, 0xfe, //0x00003b1c bsfl %esi, %edi + 0x4d, 0x85, 0xd2, //0x00003b1f testq %r10, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00003b22 je LBB0_679 + 0x85, 0xf6, //0x00003b28 testl %esi, %esi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00003b2a movl $64, %ecx + 0x0f, 0x44, 0xf9, //0x00003b2f cmovel %ecx, %edi + 0x48, 0x39, 0xfa, //0x00003b32 cmpq %rdi, %rdx + 0x0f, 0x87, 0x73, 0x03, 0x00, 0x00, //0x00003b35 ja LBB0_734 + 0xc5, 0x7d, 0x7f, 0xea, //0x00003b3b vmovdqa %ymm13, %ymm2 + 0x4c, 0x29, 0xf0, //0x00003b3f subq %r14, %rax + 0x48, 0x01, 0xd0, //0x00003b42 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003b45 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003b49 movq (%rsp), %r11 + 0xe9, 0x8a, 0xeb, 0xff, 0xff, //0x00003b4d jmp LBB0_473 + //0x00003b52 LBB0_679 + 0x85, 0xf6, //0x00003b52 testl %esi, %esi + 0x0f, 0x85, 0x61, 0x03, 0x00, 0x00, //0x00003b54 jne LBB0_735 + 0xc5, 0x7d, 0x7f, 0xe1, //0x00003b5a vmovdqa %ymm12, %ymm1 + 0xc5, 0x7d, 0x7f, 0xd8, //0x00003b5e vmovdqa %ymm11, %ymm0 + 0xc4, 0x41, 0x7d, 0x6f, 0xdd, //0x00003b62 vmovdqa %ymm13, %ymm11 + 0xc4, 0x41, 0x7d, 0x6f, 0xe7, //0x00003b67 vmovdqa %ymm15, %ymm12 + 0x48, 0x83, 0xc0, 0x20, //0x00003b6c addq $32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00003b70 addq $-32, %r13 + //0x00003b74 LBB0_681 + 0x4d, 0x85, 0xdb, //0x00003b74 testq %r11, %r11 + 0x0f, 0x85, 0xe3, 0x00, 0x00, 0x00, //0x00003b77 jne LBB0_695 + 0x4c, 0x89, 0xfa, //0x00003b7d movq %r15, %rdx + 0x4d, 0x85, 0xed, //0x00003b80 testq %r13, %r13 + 0x0f, 0x84, 0x42, 0x01, 0x00, 0x00, //0x00003b83 je LBB0_703 + //0x00003b89 LBB0_683 + 0x0f, 0xb6, 0x18, //0x00003b89 movzbl (%rax), %ebx + 0x80, 0xfb, 0x22, //0x00003b8c cmpb $34, %bl + 0x0f, 0x84, 0x5d, 0x00, 0x00, 0x00, //0x00003b8f je LBB0_691 + 0x80, 0xfb, 0x5c, //0x00003b95 cmpb $92, %bl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00003b98 je LBB0_688 + 0x80, 0xfb, 0x1f, //0x00003b9e cmpb $31, %bl + 0x0f, 0x86, 0x1f, 0x03, 0x00, 0x00, //0x00003ba1 jbe LBB0_736 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003ba7 movq $-1, %rsi + 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003bae movl $1, %edi + //0x00003bb3 LBB0_687 + 0x48, 0x01, 0xf8, //0x00003bb3 addq %rdi, %rax + 0x49, 0x01, 0xf5, //0x00003bb6 addq %rsi, %r13 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00003bb9 jne LBB0_683 + 0xe9, 0x07, 0x01, 0x00, 0x00, //0x00003bbf jmp LBB0_703 + //0x00003bc4 LBB0_688 + 0x49, 0x83, 0xfd, 0x01, //0x00003bc4 cmpq $1, %r13 + 0x0f, 0x84, 0xfd, 0x00, 0x00, 0x00, //0x00003bc8 je LBB0_703 + 0x48, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x00003bce movq $-2, %rsi + 0xbf, 0x02, 0x00, 0x00, 0x00, //0x00003bd5 movl $2, %edi + 0x48, 0x83, 0xfa, 0xff, //0x00003bda cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00003bde jne LBB0_687 + 0x49, 0x89, 0xc7, //0x00003be4 movq %rax, %r15 + 0x4d, 0x29, 0xf7, //0x00003be7 subq %r14, %r15 + 0x4c, 0x89, 0xfa, //0x00003bea movq %r15, %rdx + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003bed jmp LBB0_687 + //0x00003bf2 LBB0_691 + 0x4c, 0x29, 0xf0, //0x00003bf2 subq %r14, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003bf5 addq $1, %rax + 0x4c, 0x8b, 0x1c, 0x24, //0x00003bf9 movq (%rsp), %r11 + 0xc4, 0x41, 0x35, 0x76, 0xc9, //0x00003bfd vpcmpeqd %ymm9, %ymm9, %ymm9 + 0xc5, 0x7d, 0x7f, 0xda, //0x00003c02 vmovdqa %ymm11, %ymm2 + 0xc4, 0x41, 0x7d, 0x6f, 0xfc, //0x00003c06 vmovdqa %ymm12, %ymm15 + //0x00003c0b LBB0_692 + 0xc5, 0xfe, 0x6f, 0x25, 0x8d, 0xc6, 0xff, 0xff, //0x00003c0b vmovdqu $-14707(%rip), %ymm4 /* LCPI0_19+0(%rip) */ + 0xc5, 0xfe, 0x6f, 0x1d, 0xa5, 0xc5, 0xff, 0xff, //0x00003c13 vmovdqu $-14939(%rip), %ymm3 /* LCPI0_9+0(%rip) */ + 0xc5, 0x7d, 0x6f, 0xd8, //0x00003c1b vmovdqa %ymm0, %ymm11 + 0xc5, 0x7d, 0x6f, 0xe1, //0x00003c1f vmovdqa %ymm1, %ymm12 + 0xe9, 0xb4, 0xea, 0xff, 0xff, //0x00003c23 jmp LBB0_473 + //0x00003c28 LBB0_693 + 0x4d, 0x85, 0xdb, //0x00003c28 testq %r11, %r11 + 0x0f, 0x84, 0x9a, 0x00, 0x00, 0x00, //0x00003c2b je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c31 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c34 notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003c37 leaq (%rax,%rdx), %rcx + 0x49, 0x83, 0xff, 0xff, //0x00003c3b cmpq $-1, %r15 + 0x4c, 0x89, 0xfe, //0x00003c3f movq %r15, %rsi + 0x4c, 0x0f, 0x44, 0xf9, //0x00003c42 cmoveq %rcx, %r15 + 0x48, 0x0f, 0x44, 0xf1, //0x00003c46 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003c4a addq $1, %rax + 0x49, 0x83, 0xc3, 0xff, //0x00003c4e addq $-1, %r11 + 0x4d, 0x85, 0xdb, //0x00003c52 testq %r11, %r11 + 0x0f, 0x85, 0x6a, 0xfd, 0xff, 0xff, //0x00003c55 jne LBB0_660 + 0xe9, 0xe0, 0xfd, 0xff, 0xff, //0x00003c5b jmp LBB0_670 + //0x00003c60 LBB0_695 + 0x4d, 0x85, 0xed, //0x00003c60 testq %r13, %r13 + 0x0f, 0x84, 0x62, 0x00, 0x00, 0x00, //0x00003c63 je LBB0_703 + 0x4c, 0x89, 0xf2, //0x00003c69 movq %r14, %rdx + 0x48, 0xf7, 0xd2, //0x00003c6c notq %rdx + 0x48, 0x01, 0xc2, //0x00003c6f addq %rax, %rdx + 0x49, 0x83, 0xff, 0xff, //0x00003c72 cmpq $-1, %r15 + 0x4c, 0x89, 0xf9, //0x00003c76 movq %r15, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003c79 cmoveq %rdx, %rcx + 0x49, 0x0f, 0x45, 0xd7, //0x00003c7d cmovneq %r15, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00003c81 addq $1, %rax + 0x49, 0x83, 0xc5, 0xff, //0x00003c85 addq $-1, %r13 + 0x49, 0x89, 0xcf, //0x00003c89 movq %rcx, %r15 + 0x4d, 0x85, 0xed, //0x00003c8c testq %r13, %r13 + 0x0f, 0x85, 0xf4, 0xfe, 0xff, 0xff, //0x00003c8f jne LBB0_683 + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00003c95 jmp LBB0_703 + //0x00003c9a LBB0_697 + 0x4d, 0x89, 0x27, //0x00003c9a movq %r12, (%r15) + //0x00003c9d LBB0_698 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003c9d movq $-1, %rax + 0xe9, 0x6c, 0x00, 0x00, 0x00, //0x00003ca4 jmp LBB0_728 + //0x00003ca9 LBB0_724 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003ca9 movq $-7, %rax + 0xe9, 0x60, 0x00, 0x00, 0x00, //0x00003cb0 jmp LBB0_728 + //0x00003cb5 LBB0_700 + 0x49, 0x83, 0xc0, 0xff, //0x00003cb5 addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003cb9 movq %r8, %rax + 0xe9, 0x54, 0x00, 0x00, 0x00, //0x00003cbc jmp LBB0_728 + //0x00003cc1 LBB0_702 + 0x48, 0x83, 0xf8, 0xff, //0x00003cc1 cmpq $-1, %rax + 0x0f, 0x85, 0x87, 0x01, 0x00, 0x00, //0x00003cc5 jne LBB0_704 + //0x00003ccb LBB0_703 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003ccb movq $-1, %rax + 0x4d, 0x89, 0xc7, //0x00003cd2 movq %r8, %r15 + 0xe9, 0x78, 0x01, 0x00, 0x00, //0x00003cd5 jmp LBB0_704 + //0x00003cda LBB0_475 + 0x49, 0x83, 0xc1, 0xff, //0x00003cda addq $-1, %r9 + 0x4c, 0x89, 0xc8, //0x00003cde movq %r9, %rax + 0xe9, 0x2f, 0x00, 0x00, 0x00, //0x00003ce1 jmp LBB0_728 + //0x00003ce6 LBB0_705 + 0x49, 0x83, 0xc5, 0xff, //0x00003ce6 addq $-1, %r13 + 0x4c, 0x89, 0xe8, //0x00003cea movq %r13, %rax + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00003ced jmp LBB0_728 + //0x00003cf2 LBB0_706 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cf2 movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cf9 jmp LBB0_708 //0x00003cfe LBB0_707 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003cfe movq $-1, %rcx - 0x4d, 0x89, 0xfb, //0x00003d05 movq %r15, %r11 - 0xe9, 0x49, 0x00, 0x00, 0x00, //0x00003d08 jmp LBB0_716 - //0x00003d0d LBB0_708 - 0x4c, 0x89, 0xc9, //0x00003d0d movq %r9, %rcx - //0x00003d10 LBB0_709 - 0x48, 0xf7, 0xd1, //0x00003d10 notq %rcx - 0x49, 0x01, 0x4d, 0x00, //0x00003d13 addq %rcx, (%r13) - 0xe9, 0x71, 0xfe, 0xff, 0xff, //0x00003d17 jmp LBB0_710 - //0x00003d1c LBB0_717 - 0x4d, 0x89, 0xc8, //0x00003d1c movq %r9, %r8 - 0xe9, 0x2c, 0xfe, 0xff, 0xff, //0x00003d1f jmp LBB0_681 - //0x00003d24 LBB0_712 - 0x49, 0x83, 0xfa, 0xff, //0x00003d24 cmpq $-1, %r10 - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00003d28 je LBB0_714 - 0x4d, 0x89, 0xd3, //0x00003d2e movq %r10, %r11 - 0xe9, 0x19, 0x00, 0x00, 0x00, //0x00003d31 jmp LBB0_715 - //0x00003d36 LBB0_209 - 0x4c, 0x01, 0xd2, //0x00003d36 addq %r10, %rdx - 0x49, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %r10 - 0x49, 0x89, 0xd7, //0x00003d40 movq %rdx, %r15 - 0xe9, 0x84, 0xfe, 0xff, 0xff, //0x00003d43 jmp LBB0_703 - //0x00003d48 LBB0_714 - 0x4c, 0x0f, 0xbc, 0xde, //0x00003d48 bsfq %rsi, %r11 - 0x49, 0x01, 0xcb, //0x00003d4c addq %rcx, %r11 - //0x00003d4f LBB0_715 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d4f movq $-2, %rcx - //0x00003d56 LBB0_716 - 0x48, 0x89, 0x0c, 0x24, //0x00003d56 movq %rcx, (%rsp) - 0x4d, 0x89, 0x5d, 0x00, //0x00003d5a movq %r11, (%r13) - 0xe9, 0x32, 0xfe, 0xff, 0xff, //0x00003d5e jmp LBB0_711 - //0x00003d63 LBB0_718 - 0x4d, 0x89, 0xcf, //0x00003d63 movq %r9, %r15 - 0xe9, 0x93, 0xff, 0xff, 0xff, //0x00003d66 jmp LBB0_707 - //0x00003d6b LBB0_719 - 0x48, 0x01, 0xca, //0x00003d6b addq %rcx, %rdx - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003d6e movq $-2, %rcx - 0x49, 0x89, 0xd3, //0x00003d75 movq %rdx, %r11 - 0xe9, 0xd9, 0xff, 0xff, 0xff, //0x00003d78 jmp LBB0_716 - //0x00003d7d LBB0_720 - 0x48, 0x8b, 0x44, 0x24, 0x10, //0x00003d7d movq $16(%rsp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00003d82 movq $8(%rax), %rax - 0x49, 0x89, 0x45, 0x00, //0x00003d86 movq %rax, (%r13) - 0xe9, 0x06, 0xfe, 0xff, 0xff, //0x00003d8a jmp LBB0_711 - //0x00003d8f LBB0_721 - 0x89, 0xf8, //0x00003d8f movl %edi, %eax - 0x4d, 0x29, 0xf2, //0x00003d91 subq %r14, %r10 - 0x49, 0x01, 0xc2, //0x00003d94 addq %rax, %r10 - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003d97 jmp LBB0_724 - //0x00003d9c LBB0_722 - 0x4d, 0x29, 0xf2, //0x00003d9c subq %r14, %r10 - 0x41, 0x89, 0xff, //0x00003d9f movl %edi, %r15d - 0xe9, 0x1b, 0xfe, 0xff, 0xff, //0x00003da2 jmp LBB0_701 - //0x00003da7 LBB0_723 - 0x4d, 0x29, 0xf2, //0x00003da7 subq %r14, %r10 - //0x00003daa LBB0_724 - 0x4d, 0x89, 0xd7, //0x00003daa movq %r10, %r15 - 0xe9, 0x13, 0xfe, 0xff, 0xff, //0x00003dad jmp LBB0_702 - //0x00003db2 LBB0_725 - 0x89, 0xf8, //0x00003db2 movl %edi, %eax - 0x4c, 0x29, 0xf1, //0x00003db4 subq %r14, %rcx - 0x48, 0x01, 0xc1, //0x00003db7 addq %rax, %rcx - 0x49, 0x89, 0xcb, //0x00003dba movq %rcx, %r11 - 0xe9, 0x8d, 0xff, 0xff, 0xff, //0x00003dbd jmp LBB0_715 - //0x00003dc2 LBB0_726 - 0x4c, 0x29, 0xf3, //0x00003dc2 subq %r14, %rbx - 0x41, 0x89, 0xfb, //0x00003dc5 movl %edi, %r11d - 0x49, 0x01, 0xdb, //0x00003dc8 addq %rbx, %r11 - 0xe9, 0x7f, 0xff, 0xff, 0xff, //0x00003dcb jmp LBB0_715 - //0x00003dd0 LBB0_727 - 0x48, 0x89, 0xc8, //0x00003dd0 movq %rcx, %rax - 0x4c, 0x29, 0xf0, //0x00003dd3 subq %r14, %rax - 0x49, 0x89, 0xc3, //0x00003dd6 movq %rax, %r11 - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00003dd9 jmp LBB0_715 - 0x90, 0x90, //0x00003dde .p2align 2, 0x90 + 0x4c, 0x89, 0xd1, //0x00003cfe movq %r10, %rcx + //0x00003d01 LBB0_708 + 0x49, 0x8b, 0x07, //0x00003d01 movq (%r15), %rax + 0x48, 0x29, 0xc8, //0x00003d04 subq %rcx, %rax + 0x48, 0x83, 0xc0, 0xfe, //0x00003d07 addq $-2, %rax + 0x49, 0x89, 0x07, //0x00003d0b movq %rax, (%r15) + //0x00003d0e LBB0_727 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d0e movq $-2, %rax + //0x00003d15 LBB0_728 + 0x48, 0x8d, 0x65, 0xd8, //0x00003d15 leaq $-40(%rbp), %rsp + 0x5b, //0x00003d19 popq %rbx + 0x41, 0x5c, //0x00003d1a popq %r12 + 0x41, 0x5d, //0x00003d1c popq %r13 + 0x41, 0x5e, //0x00003d1e popq %r14 + 0x41, 0x5f, //0x00003d20 popq %r15 + 0x5d, //0x00003d22 popq %rbp + 0xc5, 0xf8, 0x77, //0x00003d23 vzeroupper + 0xc3, //0x00003d26 retq + //0x00003d27 LBB0_711 + 0x49, 0x89, 0x17, //0x00003d27 movq %rdx, (%r15) + 0xe9, 0xe6, 0xff, 0xff, 0xff, //0x00003d2a jmp LBB0_728 + //0x00003d2f LBB0_709 + 0x49, 0x83, 0xff, 0xff, //0x00003d2f cmpq $-1, %r15 + 0x0f, 0x84, 0x0b, 0x01, 0x00, 0x00, //0x00003d33 je LBB0_730 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d39 movq $-2, %rax + 0xe9, 0x0d, 0x01, 0x00, 0x00, //0x00003d40 jmp LBB0_704 + //0x00003d45 LBB0_712 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d45 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003d4c cmpb $97, %dl + 0x0f, 0x85, 0xc0, 0xff, 0xff, 0xff, //0x00003d4f jne LBB0_728 + 0x48, 0x8d, 0x51, 0x01, //0x00003d55 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d59 movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003d5c cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0xad, 0xff, 0xff, 0xff, //0x00003d62 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x02, //0x00003d68 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d6c movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x73, //0x00003d6f cmpb $115, $2(%r14,%rcx) + 0x0f, 0x85, 0x9a, 0xff, 0xff, 0xff, //0x00003d75 jne LBB0_728 + 0x48, 0x8d, 0x51, 0x03, //0x00003d7b leaq $3(%rcx), %rdx + 0x49, 0x89, 0x17, //0x00003d7f movq %rdx, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x03, 0x65, //0x00003d82 cmpb $101, $3(%r14,%rcx) + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00003d88 jne LBB0_728 + 0x48, 0x83, 0xc1, 0x04, //0x00003d8e addq $4, %rcx + 0x49, 0x89, 0x0f, //0x00003d92 movq %rcx, (%r15) + 0xe9, 0x7b, 0xff, 0xff, 0xff, //0x00003d95 jmp LBB0_728 + //0x00003d9a LBB0_270 + 0x49, 0x89, 0x07, //0x00003d9a movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x6e, //0x00003d9d cmpb $110, (%r14,%rax) + 0x0f, 0x85, 0x66, 0xff, 0xff, 0xff, //0x00003da2 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003da8 movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x75, //0x00003dab cmpb $117, (%r14,%rcx) + 0x0f, 0x85, 0x58, 0xff, 0xff, 0xff, //0x00003db0 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003db6 leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dba movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x6c, //0x00003dbd cmpb $108, $1(%r14,%rcx) + 0x0f, 0x85, 0x45, 0xff, 0xff, 0xff, //0x00003dc3 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003dc9 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003dcd movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x6c, //0x00003dd0 cmpb $108, $2(%r14,%rcx) + 0x0f, 0x84, 0x47, 0x00, 0x00, 0x00, //0x00003dd6 je LBB0_721 + 0xe9, 0x2d, 0xff, 0xff, 0xff, //0x00003ddc jmp LBB0_727 + //0x00003de1 LBB0_717 + 0x49, 0x89, 0x07, //0x00003de1 movq %rax, (%r15) + 0x41, 0x80, 0x3c, 0x06, 0x74, //0x00003de4 cmpb $116, (%r14,%rax) + 0x0f, 0x85, 0x1f, 0xff, 0xff, 0xff, //0x00003de9 jne LBB0_727 + 0x49, 0x89, 0x0f, //0x00003def movq %rcx, (%r15) + 0x41, 0x80, 0x3c, 0x0e, 0x72, //0x00003df2 cmpb $114, (%r14,%rcx) + 0x0f, 0x85, 0x11, 0xff, 0xff, 0xff, //0x00003df7 jne LBB0_727 + 0x48, 0x8d, 0x41, 0x01, //0x00003dfd leaq $1(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e01 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x01, 0x75, //0x00003e04 cmpb $117, $1(%r14,%rcx) + 0x0f, 0x85, 0xfe, 0xfe, 0xff, 0xff, //0x00003e0a jne LBB0_727 + 0x48, 0x8d, 0x41, 0x02, //0x00003e10 leaq $2(%rcx), %rax + 0x49, 0x89, 0x07, //0x00003e14 movq %rax, (%r15) + 0x41, 0x80, 0x7c, 0x0e, 0x02, 0x65, //0x00003e17 cmpb $101, $2(%r14,%rcx) + 0x0f, 0x85, 0xeb, 0xfe, 0xff, 0xff, //0x00003e1d jne LBB0_727 + //0x00003e23 LBB0_721 + 0x48, 0x83, 0xc1, 0x03, //0x00003e23 addq $3, %rcx + 0x49, 0x89, 0x0f, //0x00003e27 movq %rcx, (%r15) + 0xe9, 0xdf, 0xfe, 0xff, 0xff, //0x00003e2a jmp LBB0_727 + //0x00003e2f LBB0_394 + 0x48, 0x83, 0xc0, 0xff, //0x00003e2f addq $-1, %rax + 0xe9, 0xdd, 0xfe, 0xff, 0xff, //0x00003e33 jmp LBB0_728 + //0x00003e38 LBB0_267 + 0x48, 0x83, 0xc1, 0xff, //0x00003e38 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003e3c movq %rcx, %rax + 0xe9, 0xd1, 0xfe, 0xff, 0xff, //0x00003e3f jmp LBB0_728 + //0x00003e44 LBB0_730 + 0x4c, 0x0f, 0xbc, 0xfe, //0x00003e44 bsfq %rsi, %r15 + //0x00003e48 LBB0_731 + 0x49, 0x01, 0xc7, //0x00003e48 addq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e4b movq $-2, %rax + //0x00003e52 LBB0_704 + 0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00003e52 movq $8(%rsp), %rcx + 0x4c, 0x89, 0x39, //0x00003e57 movq %r15, (%rcx) + 0xe9, 0xb6, 0xfe, 0xff, 0xff, //0x00003e5a jmp LBB0_728 + //0x00003e5f LBB0_723 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003e5f movq $-1, %rcx + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003e66 jmp LBB0_726 + //0x00003e6b LBB0_725 + 0x4c, 0x89, 0xc1, //0x00003e6b movq %r8, %rcx + //0x00003e6e LBB0_726 + 0x48, 0xf7, 0xd1, //0x00003e6e notq %rcx + 0x48, 0x8b, 0x44, 0x24, 0x08, //0x00003e71 movq $8(%rsp), %rax + 0x48, 0x01, 0x08, //0x00003e76 addq %rcx, (%rax) + 0xe9, 0x90, 0xfe, 0xff, 0xff, //0x00003e79 jmp LBB0_727 + //0x00003e7e LBB0_732 + 0x4d, 0x89, 0xc8, //0x00003e7e movq %r9, %r8 + 0xe9, 0x45, 0xfe, 0xff, 0xff, //0x00003e81 jmp LBB0_703 + //0x00003e86 LBB0_162 + 0x48, 0x01, 0xc2, //0x00003e86 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003e89 movq $-2, %rax + 0x49, 0x89, 0xd7, //0x00003e90 movq %rdx, %r15 + 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00003e93 jmp LBB0_704 + //0x00003e98 LBB0_733 + 0x48, 0x8b, 0x4c, 0x24, 0x20, //0x00003e98 movq $32(%rsp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003e9d movq $8(%rcx), %rcx + 0x48, 0x8b, 0x54, 0x24, 0x08, //0x00003ea1 movq $8(%rsp), %rdx + 0x48, 0x89, 0x0a, //0x00003ea6 movq %rcx, (%rdx) + 0xe9, 0x67, 0xfe, 0xff, 0xff, //0x00003ea9 jmp LBB0_728 + //0x00003eae LBB0_734 + 0x89, 0xf9, //0x00003eae movl %edi, %ecx + 0x4c, 0x29, 0xf0, //0x00003eb0 subq %r14, %rax + 0x48, 0x01, 0xc8, //0x00003eb3 addq %rcx, %rax + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00003eb6 jmp LBB0_737 + //0x00003ebb LBB0_735 + 0x4c, 0x29, 0xf0, //0x00003ebb subq %r14, %rax + 0x41, 0x89, 0xff, //0x00003ebe movl %edi, %r15d + 0xe9, 0x82, 0xff, 0xff, 0xff, //0x00003ec1 jmp LBB0_731 + //0x00003ec6 LBB0_736 + 0x4c, 0x29, 0xf0, //0x00003ec6 subq %r14, %rax + //0x00003ec9 LBB0_737 + 0x49, 0x89, 0xc7, //0x00003ec9 movq %rax, %r15 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ecc movq $-2, %rax + 0xe9, 0x7a, 0xff, 0xff, 0xff, //0x00003ed3 jmp LBB0_704 + //0x00003ed8 .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_44, LBB0_44-LJTI0_0 - // // .set L0_0_set_63, LBB0_63-LJTI0_0 - // // .set L0_0_set_65, LBB0_65-LJTI0_0 - // // .set L0_0_set_68, LBB0_68-LJTI0_0 - //0x00003de0 LJTI0_0 - 0xf7, 0xc7, 0xff, 0xff, //0x00003de0 .long L0_0_set_38 - 0x27, 0xc8, 0xff, 0xff, //0x00003de4 .long L0_0_set_42 - 0x52, 0xc8, 0xff, 0xff, //0x00003de8 .long L0_0_set_44 - 0x9b, 0xc9, 0xff, 0xff, //0x00003dec .long L0_0_set_63 - 0xb0, 0xc9, 0xff, 0xff, //0x00003df0 .long L0_0_set_65 - 0x1a, 0xce, 0xff, 0xff, //0x00003df4 .long L0_0_set_68 - // // .set L0_1_set_711, LBB0_711-LJTI0_1 - // // .set L0_1_set_710, LBB0_710-LJTI0_1 - // // .set L0_1_set_234, LBB0_234-LJTI0_1 - // // .set L0_1_set_253, LBB0_253-LJTI0_1 - // // .set L0_1_set_70, LBB0_70-LJTI0_1 - // // .set L0_1_set_258, LBB0_258-LJTI0_1 + // // .set L0_0_set_64, LBB0_64-LJTI0_0 + // // .set L0_0_set_66, LBB0_66-LJTI0_0 + // // .set L0_0_set_69, LBB0_69-LJTI0_0 + //0x00003ed8 LJTI0_0 + 0x45, 0xc7, 0xff, 0xff, //0x00003ed8 .long L0_0_set_38 + 0x6d, 0xc7, 0xff, 0xff, //0x00003edc .long L0_0_set_42 + 0x98, 0xc7, 0xff, 0xff, //0x00003ee0 .long L0_0_set_44 + 0xe5, 0xc8, 0xff, 0xff, //0x00003ee4 .long L0_0_set_64 + 0xfc, 0xc8, 0xff, 0xff, //0x00003ee8 .long L0_0_set_66 + 0x76, 0xc9, 0xff, 0xff, //0x00003eec .long L0_0_set_69 + // // .set L0_1_set_728, LBB0_728-LJTI0_1 + // // .set L0_1_set_727, LBB0_727-LJTI0_1 + // // .set L0_1_set_238, LBB0_238-LJTI0_1 + // // .set L0_1_set_256, LBB0_256-LJTI0_1 + // // .set L0_1_set_71, LBB0_71-LJTI0_1 // // .set L0_1_set_261, LBB0_261-LJTI0_1 - // // .set L0_1_set_265, LBB0_265-LJTI0_1 - // // .set L0_1_set_271, LBB0_271-LJTI0_1 + // // .set L0_1_set_264, LBB0_264-LJTI0_1 + // // .set L0_1_set_268, LBB0_268-LJTI0_1 // // .set L0_1_set_274, LBB0_274-LJTI0_1 - //0x00003df8 LJTI0_1 - 0x9d, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_711 - 0x95, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_710 - 0x52, 0xd5, 0xff, 0xff, //0x00003e80 .long L0_1_set_234 - 0x95, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_710 - 0x97, 0xd6, 0xff, 0xff, //0x00003eac .long L0_1_set_253 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_710 - 0xcb, 0xc9, 0xff, 0xff, //0x00003eb8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ebc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ec8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ecc .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed4 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003ed8 .long L0_1_set_70 - 0xcb, 0xc9, 0xff, 0xff, //0x00003edc .long L0_1_set_70 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003efc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f1c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f34 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f50 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f54 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f58 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f5c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f60 .long L0_1_set_710 - 0xe1, 0xd6, 0xff, 0xff, //0x00003f64 .long L0_1_set_258 - 0x95, 0xfd, 0xff, 0xff, //0x00003f68 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f6c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f70 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f74 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f78 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f7c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f80 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f84 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f88 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f8c .long L0_1_set_710 - 0x10, 0xd7, 0xff, 0xff, //0x00003f90 .long L0_1_set_261 - 0x95, 0xfd, 0xff, 0xff, //0x00003f94 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f98 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003f9c .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fa8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fac .long L0_1_set_710 - 0x4b, 0xd7, 0xff, 0xff, //0x00003fb0 .long L0_1_set_265 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fb8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fbc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fc4 .long L0_1_set_710 - 0x78, 0xd7, 0xff, 0xff, //0x00003fc8 .long L0_1_set_271 - 0x95, 0xfd, 0xff, 0xff, //0x00003fcc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd0 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd4 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fd8 .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fdc .long L0_1_set_710 - 0x95, 0xfd, 0xff, 0xff, //0x00003fe0 .long L0_1_set_710 - 0xba, 0xd7, 0xff, 0xff, //0x00003fe4 .long L0_1_set_274 - // // .set L0_2_set_445, LBB0_445-LJTI0_2 - // // .set L0_2_set_467, LBB0_467-LJTI0_2 - // // .set L0_2_set_451, LBB0_451-LJTI0_2 - // // .set L0_2_set_454, LBB0_454-LJTI0_2 - //0x00003fe8 LJTI0_2 - 0x2a, 0xe4, 0xff, 0xff, //0x00003fe8 .long L0_2_set_445 - 0x9f, 0xe5, 0xff, 0xff, //0x00003fec .long L0_2_set_467 - 0x2a, 0xe4, 0xff, 0xff, //0x00003ff0 .long L0_2_set_445 - 0x72, 0xe4, 0xff, 0xff, //0x00003ff4 .long L0_2_set_451 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ff8 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00003ffc .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004000 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004004 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004008 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000400c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004010 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004014 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004018 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000401c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004020 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004024 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004028 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000402c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004030 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004034 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004038 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000403c .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004040 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004044 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x00004048 .long L0_2_set_467 - 0x9f, 0xe5, 0xff, 0xff, //0x0000404c .long L0_2_set_467 - 0x95, 0xe4, 0xff, 0xff, //0x00004050 .long L0_2_set_454 - // // .set L0_3_set_121, LBB0_121-LJTI0_3 - // // .set L0_3_set_278, LBB0_278-LJTI0_3 - // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_124, LBB0_124-LJTI0_3 - //0x00004054 LJTI0_3 - 0x77, 0xcb, 0xff, 0xff, //0x00004054 .long L0_3_set_121 - 0xa4, 0xd5, 0xff, 0xff, //0x00004058 .long L0_3_set_278 - 0x77, 0xcb, 0xff, 0xff, //0x0000405c .long L0_3_set_121 - 0x21, 0xcb, 0xff, 0xff, //0x00004060 .long L0_3_set_115 - 0xa4, 0xd5, 0xff, 0xff, //0x00004064 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004068 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000406c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004070 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004074 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004078 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000407c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004080 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004084 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004088 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000408c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004090 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004094 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x00004098 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x0000409c .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040a8 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040ac .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b0 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b4 .long L0_3_set_278 - 0xa4, 0xd5, 0xff, 0xff, //0x000040b8 .long L0_3_set_278 - 0x93, 0xcb, 0xff, 0xff, //0x000040bc .long L0_3_set_124 - //0x000040c0 .p2align 2, 0x00 - //0x000040c0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x000040c0 .long 2 + // // .set L0_1_set_277, LBB0_277-LJTI0_1 + //0x00003ef0 LJTI0_1 + 0x25, 0xfe, 0xff, 0xff, //0x00003ef0 .long L0_1_set_728 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ef8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003efc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f00 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f04 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f08 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f0c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f10 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f14 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f18 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f1c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f20 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f24 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f28 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f2c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f30 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f34 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f38 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f3c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f40 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f44 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f48 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f4c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f50 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f54 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f58 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f5c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f60 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f64 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f68 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f6c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f70 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f74 .long L0_1_set_727 + 0x4f, 0xd5, 0xff, 0xff, //0x00003f78 .long L0_1_set_238 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f7c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f80 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f84 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f88 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f8c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f90 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f94 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f98 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003f9c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa0 .long L0_1_set_727 + 0x88, 0xd6, 0xff, 0xff, //0x00003fa4 .long L0_1_set_256 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fa8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fac .long L0_1_set_727 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fb8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fbc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc4 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fc8 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fcc .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd0 .long L0_1_set_71 + 0x11, 0xc9, 0xff, 0xff, //0x00003fd4 .long L0_1_set_71 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fd8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fdc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fe8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003fec .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ff8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00003ffc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004000 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004004 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004008 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000400c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004010 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004014 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004018 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000401c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004020 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004024 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004028 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000402c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004030 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004034 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004038 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000403c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004040 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004044 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004048 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000404c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004050 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004054 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004058 .long L0_1_set_727 + 0xd0, 0xd6, 0xff, 0xff, //0x0000405c .long L0_1_set_261 + 0x1e, 0xfe, 0xff, 0xff, //0x00004060 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004064 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004068 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000406c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004070 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004074 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004078 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000407c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004080 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004084 .long L0_1_set_727 + 0x04, 0xd7, 0xff, 0xff, //0x00004088 .long L0_1_set_264 + 0x1e, 0xfe, 0xff, 0xff, //0x0000408c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004090 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004094 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x00004098 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x0000409c .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040a4 .long L0_1_set_727 + 0x42, 0xd7, 0xff, 0xff, //0x000040a8 .long L0_1_set_268 + 0x1e, 0xfe, 0xff, 0xff, //0x000040ac .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040b8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040bc .long L0_1_set_727 + 0x73, 0xd7, 0xff, 0xff, //0x000040c0 .long L0_1_set_274 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040c8 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040cc .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d0 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d4 .long L0_1_set_727 + 0x1e, 0xfe, 0xff, 0xff, //0x000040d8 .long L0_1_set_727 + 0xb4, 0xd7, 0xff, 0xff, //0x000040dc .long L0_1_set_277 + // // .set L0_2_set_463, LBB0_463-LJTI0_2 + // // .set L0_2_set_484, LBB0_484-LJTI0_2 + // // .set L0_2_set_465, LBB0_465-LJTI0_2 + // // .set L0_2_set_457, LBB0_457-LJTI0_2 + //0x000040e0 LJTI0_2 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e0 .long L0_2_set_463 + 0xdf, 0xe6, 0xff, 0xff, //0x000040e4 .long L0_2_set_484 + 0x7a, 0xe5, 0xff, 0xff, //0x000040e8 .long L0_2_set_463 + 0x8d, 0xe5, 0xff, 0xff, //0x000040ec .long L0_2_set_465 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f0 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f4 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040f8 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x000040fc .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004100 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004104 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004108 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000410c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004110 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004114 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004118 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000411c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004120 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004124 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004128 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000412c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004130 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004134 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004138 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x0000413c .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004140 .long L0_2_set_484 + 0xdf, 0xe6, 0xff, 0xff, //0x00004144 .long L0_2_set_484 + 0x2a, 0xe5, 0xff, 0xff, //0x00004148 .long L0_2_set_457 + // // .set L0_3_set_230, LBB0_230-LJTI0_3 + // // .set L0_3_set_281, LBB0_281-LJTI0_3 + // // .set L0_3_set_232, LBB0_232-LJTI0_3 + // // .set L0_3_set_224, LBB0_224-LJTI0_3 + //0x0000414c LJTI0_3 + 0xae, 0xd2, 0xff, 0xff, //0x0000414c .long L0_3_set_230 + 0xa2, 0xd5, 0xff, 0xff, //0x00004150 .long L0_3_set_281 + 0xae, 0xd2, 0xff, 0xff, //0x00004154 .long L0_3_set_230 + 0xc8, 0xd2, 0xff, 0xff, //0x00004158 .long L0_3_set_232 + 0xa2, 0xd5, 0xff, 0xff, //0x0000415c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004160 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004164 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004168 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000416c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004170 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004174 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004178 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000417c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004180 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004184 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004188 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000418c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004190 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004194 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x00004198 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x0000419c .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a0 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a4 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041a8 .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041ac .long L0_3_set_281 + 0xa2, 0xd5, 0xff, 0xff, //0x000041b0 .long L0_3_set_281 + 0x66, 0xd2, 0xff, 0xff, //0x000041b4 .long L0_3_set_224 + //0x000041b8 .p2align 2, 0x00 + //0x000041b8 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x000041b8 .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/dispatch_arm64.go b/vendor/github.com/bytedance/sonic/internal/native/dispatch_arm64.go index f1d12cb20..b22e3f387 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/dispatch_arm64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/dispatch_arm64.go @@ -12,15 +12,15 @@ * 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 native import ( - `unsafe` + "unsafe" - neon `github.com/bytedance/sonic/internal/native/neon` - `github.com/bytedance/sonic/internal/native/types` + neon "github.com/bytedance/sonic/internal/native/neon" + "github.com/bytedance/sonic/internal/native/types" ) const ( diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/f32toa_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/f32toa_arm64.s index a9af5b089..fae37caae 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/f32toa_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/f32toa_arm64.s @@ -916,7 +916,7 @@ _Digits: WORD $0x37393639 // .ascii 4, '96979899' WORD $0x39393839 // .ascii 4, '9899' WORD $0x00000000 // .p2align 3, 0x00 -_LB_1382e0fe: // _pow10_ceil_sig_f32.g +_LB_0bc031a2: // _pow10_ceil_sig_f32.g WORD $0x4b43fcf5; WORD $0x81ceb32c // .quad -9093133594791772939 WORD $0x5e14fc32; WORD $0xa2425ff7 // .quad -6754730975062328270 WORD $0x359a3b3f; WORD $0xcad2f7f5 // .quad -3831727700400522433 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/f64toa_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/f64toa_arm64.s index abd952914..5b8a23452 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/f64toa_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/f64toa_arm64.s @@ -1232,7 +1232,7 @@ _Digits: WORD $0x37393639 // .ascii 4, '96979899' WORD $0x39393839 // .ascii 4, '9899' // .p2align 3, 0x00 -_LB_f1eb3d41: // _pow10_ceil_sig.g +_LB_826f2865: // _pow10_ceil_sig.g WORD $0xbebcdc4f; WORD $0xff77b1fc // .quad -38366372719436721 WORD $0x13bb0f7b; WORD $0x25e8e89c // .quad 2731688931043774331 WORD $0xf73609b1; WORD $0x9faacf3d // .quad -6941508010590729807 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_arm64.s index 011d53130..4d9aee734 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_arm64.s @@ -5,7 +5,7 @@ #include "funcdata.h" #include "textflag.h" -TEXT ·__get_by_path_entry__(SB), NOSPLIT, $192 +TEXT ·__get_by_path_entry__(SB), NOSPLIT, $208 NO_LOCAL_POINTERS WORD $0x100000a0 // adr x0, .+20 MOVD R0, ret(FP) @@ -60,27 +60,27 @@ lCPI0_2: WORD $0x00000000; WORD $0x00000000 // .quad 0 // .p2align 2, 0x00 _get_by_path: - WORD $0xd10343ff // sub sp, sp, #208 - WORD $0xa906effc // stp x28, x27, [sp, #104] - WORD $0xa907e7fa // stp x26, x25, [sp, #120] - WORD $0xa908dff8 // stp x24, x23, [sp, #136] - WORD $0xa909d7f6 // stp x22, x21, [sp, #152] - WORD $0xa90acff4 // stp x20, x19, [sp, #168] - WORD $0xa90bfbfd // stp fp, lr, [sp, #184] + WORD $0xd10383ff // sub sp, sp, #224 + WORD $0xa907effc // stp x28, x27, [sp, #120] + WORD $0xa908e7fa // stp x26, x25, [sp, #136] + WORD $0xa909dff8 // stp x24, x23, [sp, #152] + WORD $0xa90ad7f6 // stp x22, x21, [sp, #168] + WORD $0xa90bcff4 // stp x20, x19, [sp, #184] + WORD $0xa90cfbfd // stp fp, lr, [sp, #200] WORD $0xa93ffbfd // stp fp, lr, [sp, #-8] WORD $0xd10023fd // sub fp, sp, #8 WORD $0xf9400448 // ldr x8, [x2, #8] - WORD $0xb4013c88 // cbz x8, LBB0_499 $10128(%rip) + WORD $0xb4015708 // cbz x8, LBB0_511 $10976(%rip) WORD $0xf9400049 // ldr x9, [x2] - WORD $0x8b081130 // add x16, x9, x8, lsl #4 - WORD $0x910083e8 // add x8, sp, #32 + WORD $0x8b08113e // add lr, x9, x8, lsl #4 + WORD $0x9100c3e8 // add x8, sp, #48 WORD $0x9100810b // add x11, x8, #32 - WORD $0xf9400038 // ldr x24, [x1] + WORD $0xf9400039 // ldr x25, [x1] WORD $0x5280002c // mov w12, #1 WORD $0xd284c00d // mov x13, #9728 WORD $0xf2c0002d // movk x13, #1, lsl #32 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0x3201f3e6 // mov w6, #-1431655766 WORD $0x4f01e440 // movi.16b v0, #34 Lloh0: WORD $0x10fffbc8 // adr x8, lCPI0_0 $-136(%rip) @@ -91,23 +91,30 @@ Lloh2: Lloh3: WORD $0x3dc00102 // ldr q2, [x8, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 WORD $0x4f01e584 // movi.16b v4, #44 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 WORD $0x4f06e7e5 // movi.16b v5, #223 WORD $0x4f02e7a6 // movi.16b v6, #93 - WORD $0x529fffe8 // mov w8, #65535 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 WORD $0x4f02e767 // movi.16b v7, #91 + WORD $0x529ffff5 // mov w21, #65535 WORD $0x6f00e410 // movi.2d v16, #0000000000000000 WORD $0x4f03e771 // movi.16b v17, #123 WORD $0x4f03e7b2 // movi.16b v18, #125 Lloh4: - WORD $0x10024bca // adr x10, __UnquoteTab $18808(%rip) + WORD $0x1002695b // adr x27, __UnquoteTab $19752(%rip) Lloh5: - WORD $0x9100014a // add x10, x10, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) LBB0_2: - WORD $0xa9404c15 // ldp x21, x19, [x0] - WORD $0xeb13031f // cmp x24, x19 + WORD $0xa9404016 // ldp x22, x16, [x0] + WORD $0xeb10033f // cmp x25, x16 WORD $0x54000162 // b.hs LBB0_7 $44(%rip) - WORD $0x38786aa2 // ldrb w2, [x21, x24] + WORD $0x38796ac2 // ldrb w2, [x22, x25] WORD $0x7100345f // cmp w2, #13 WORD $0x54000100 // b.eq LBB0_7 $32(%rip) WORD $0x7100805f // cmp w2, #32 @@ -115,13 +122,13 @@ LBB0_2: WORD $0x51002c42 // sub w2, w2, #11 WORD $0x3100085f // cmn w2, #2 WORD $0x54000062 // b.hs LBB0_7 $12(%rip) - WORD $0xaa1803f9 // mov x25, x24 + WORD $0xaa1903f3 // mov x19, x25 WORD $0x1400003a // b LBB0_25 $232(%rip) LBB0_7: - WORD $0x91000719 // add x25, x24, #1 - WORD $0xeb13033f // cmp x25, x19 + WORD $0x91000733 // add x19, x25, #1 + WORD $0xeb10027f // cmp x19, x16 WORD $0x54000122 // b.hs LBB0_11 $36(%rip) - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_11 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -130,10 +137,10 @@ LBB0_7: WORD $0x3100085f // cmn w2, #2 WORD $0x540005e3 // b.lo LBB0_25 $188(%rip) LBB0_11: - WORD $0x91000b19 // add x25, x24, #2 - WORD $0xeb13033f // cmp x25, x19 + WORD $0x91000b33 // add x19, x25, #2 + WORD $0xeb10027f // cmp x19, x16 WORD $0x54000122 // b.hs LBB0_15 $36(%rip) - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_15 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -142,10 +149,10 @@ LBB0_11: WORD $0x3100085f // cmn w2, #2 WORD $0x54000483 // b.lo LBB0_25 $144(%rip) LBB0_15: - WORD $0x91000f19 // add x25, x24, #3 - WORD $0xeb13033f // cmp x25, x19 + WORD $0x91000f33 // add x19, x25, #3 + WORD $0xeb10027f // cmp x19, x16 WORD $0x54000122 // b.hs LBB0_19 $36(%rip) - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_19 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -154,55 +161,55 @@ LBB0_15: WORD $0x3100085f // cmn w2, #2 WORD $0x54000323 // b.lo LBB0_25 $100(%rip) LBB0_19: - WORD $0x91001319 // add x25, x24, #4 - WORD $0xeb13033f // cmp x25, x19 + WORD $0x91001333 // add x19, x25, #4 + WORD $0xeb10027f // cmp x19, x16 WORD $0x540001e2 // b.hs LBB0_23 $60(%rip) LBB0_20: - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100805f // cmp w2, #32 WORD $0x9ac22182 // lsl x2, x12, x2 WORD $0x8a0d0042 // and x2, x2, x13 WORD $0xfa409844 // ccmp x2, #0, #4, ls WORD $0x540001c0 // b.eq LBB0_24 $56(%rip) - WORD $0x91000739 // add x25, x25, #1 - WORD $0xeb19027f // cmp x19, x25 + WORD $0x91000673 // add x19, x19, #1 + WORD $0xeb13021f // cmp x16, x19 WORD $0x54ffff01 // b.ne LBB0_20 $-32(%rip) LBB0_22: - WORD $0x52800002 // mov w2, #0 - WORD $0xaa1803f9 // mov x25, x24 - WORD $0xf9400127 // ldr x7, [x9] - WORD $0xb50001e7 // cbnz x7, LBB0_26 $60(%rip) - WORD $0x14000ea6 // b LBB0_799 $15000(%rip) + WORD $0x52800010 // mov w16, #0 + WORD $0xaa1903f3 // mov x19, x25 + WORD $0xf9400122 // ldr x2, [x9] + WORD $0xb50001e2 // cbnz x2, LBB0_26 $60(%rip) + WORD $0x14000f73 // b LBB0_811 $15820(%rip) LBB0_23: - WORD $0x52800002 // mov w2, #0 - WORD $0xf9000039 // str x25, [x1] - WORD $0xf9400127 // ldr x7, [x9] - WORD $0xb5000147 // cbnz x7, LBB0_26 $40(%rip) - WORD $0x14000ea1 // b LBB0_799 $14980(%rip) + WORD $0x52800010 // mov w16, #0 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf9400122 // ldr x2, [x9] + WORD $0xb5000142 // cbnz x2, LBB0_26 $40(%rip) + WORD $0x14000f6e // b LBB0_811 $15800(%rip) LBB0_24: - WORD $0xeb13033f // cmp x25, x19 + WORD $0xeb10027f // cmp x19, x16 WORD $0x54fffea2 // b.hs LBB0_22 $-44(%rip) LBB0_25: - WORD $0x91000727 // add x7, x25, #1 - WORD $0xf9000027 // str x7, [x1] - WORD $0x38796aa2 // ldrb w2, [x21, x25] - WORD $0xaa0703f9 // mov x25, x7 - WORD $0xf9400127 // ldr x7, [x9] - WORD $0xb401d327 // cbz x7, LBB0_799 $14948(%rip) + WORD $0x91000662 // add x2, x19, #1 + WORD $0xf9000022 // str x2, [x1] + WORD $0x38736ad0 // ldrb w16, [x22, x19] + WORD $0xaa0203f3 // mov x19, x2 + WORD $0xf9400122 // ldr x2, [x9] + WORD $0xb401ecc2 // cbz x2, LBB0_811 $15768(%rip) LBB0_26: - WORD $0x39405ce7 // ldrb w7, [x7, #23] - WORD $0x120010e7 // and w7, w7, #0x1f - WORD $0x710008ff // cmp w7, #2 - WORD $0x5400b900 // b.eq LBB0_316 $5920(%rip) - WORD $0x710060ff // cmp w7, #24 - WORD $0x5401d261 // b.ne LBB0_799 $14924(%rip) - WORD $0x7101ec5f // cmp w2, #123 - WORD $0x5401e021 // b.ne LBB0_827 $15364(%rip) + WORD $0x39405c42 // ldrb w2, [x2, #23] + WORD $0x12001042 // and w2, w2, #0x1f + WORD $0x7100085f // cmp w2, #2 + WORD $0x5400c9c0 // b.eq LBB0_325 $6456(%rip) + WORD $0x7100605f // cmp w2, #24 + WORD $0x5401ec01 // b.ne LBB0_811 $15744(%rip) + WORD $0x7101ee1f // cmp w16, #123 + WORD $0x5401fd61 // b.ne LBB0_842 $16300(%rip) LBB0_29: - WORD $0xf9400413 // ldr x19, [x0, #8] - WORD $0xeb13033f // cmp x25, x19 + WORD $0xf9400410 // ldr x16, [x0, #8] + WORD $0xeb10027f // cmp x19, x16 WORD $0x54000162 // b.hs LBB0_34 $44(%rip) - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 WORD $0x54000100 // b.eq LBB0_34 $32(%rip) WORD $0x7100805f // cmp w2, #32 @@ -210,13 +217,13 @@ LBB0_29: WORD $0x51002c42 // sub w2, w2, #11 WORD $0x3100085f // cmn w2, #2 WORD $0x54000062 // b.hs LBB0_34 $12(%rip) - WORD $0xaa1903f7 // mov x23, x25 + WORD $0xaa1303f8 // mov x24, x19 WORD $0x14000031 // b LBB0_50 $196(%rip) LBB0_34: - WORD $0x91000737 // add x23, x25, #1 - WORD $0xeb1302ff // cmp x23, x19 + WORD $0x91000678 // add x24, x19, #1 + WORD $0xeb10031f // cmp x24, x16 WORD $0x54000122 // b.hs LBB0_38 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_38 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -225,10 +232,10 @@ LBB0_34: WORD $0x3100085f // cmn w2, #2 WORD $0x540004c3 // b.lo LBB0_50 $152(%rip) LBB0_38: - WORD $0x91000b37 // add x23, x25, #2 - WORD $0xeb1302ff // cmp x23, x19 + WORD $0x91000a78 // add x24, x19, #2 + WORD $0xeb10031f // cmp x24, x16 WORD $0x54000122 // b.hs LBB0_42 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_42 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -237,10 +244,10 @@ LBB0_38: WORD $0x3100085f // cmn w2, #2 WORD $0x54000363 // b.lo LBB0_50 $108(%rip) LBB0_42: - WORD $0x91000f37 // add x23, x25, #3 - WORD $0xeb1302ff // cmp x23, x19 + WORD $0x91000e78 // add x24, x19, #3 + WORD $0xeb10031f // cmp x24, x16 WORD $0x54000122 // b.hs LBB0_46 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 WORD $0x540000c0 // b.eq LBB0_46 $24(%rip) WORD $0x7100805f // cmp w2, #32 @@ -249,48 +256,47 @@ LBB0_42: WORD $0x3100085f // cmn w2, #2 WORD $0x54000203 // b.lo LBB0_50 $64(%rip) LBB0_46: - WORD $0x91001337 // add x23, x25, #4 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x5401cca2 // b.hs LBB0_800 $14740(%rip) + WORD $0x91001278 // add x24, x19, #4 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x5401e642 // b.hs LBB0_812 $15560(%rip) LBB0_47: - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100805f // cmp w2, #32 WORD $0x9ac22182 // lsl x2, x12, x2 WORD $0x8a0d0042 // and x2, x2, x13 WORD $0xfa409844 // ccmp x2, #0, #4, ls WORD $0x540000a0 // b.eq LBB0_49 $20(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17027f // cmp x19, x23 + WORD $0x91000718 // add x24, x24, #1 + WORD $0xeb18021f // cmp x16, x24 WORD $0x54ffff01 // b.ne LBB0_47 $-32(%rip) - WORD $0x14000ec6 // b LBB0_827 $15128(%rip) + WORD $0x14000fb0 // b LBB0_842 $16064(%rip) LBB0_49: - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x5401d882 // b.hs LBB0_827 $15120(%rip) + WORD $0xeb10031f // cmp x24, x16 + WORD $0x5401f5c2 // b.hs LBB0_842 $16056(%rip) LBB0_50: - WORD $0x910006fb // add x27, x23, #1 - WORD $0xf900003b // str x27, [x1] - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100885f // cmp w2, #34 - WORD $0x5401d7a1 // b.ne LBB0_826 $15092(%rip) - WORD $0xa900afe3 // stp x3, x11, [sp, #8] - WORD $0x3202c7e3 // mov w3, #-1061109568 - WORD $0x5299fa0a // mov w10, #53200 - WORD $0x72b9f9ea // movk w10, #53199, lsl #16 - WORD $0xf9000ff0 // str x16, [sp, #24] - WORD $0x3203cbeb // mov w11, #-522133280 - WORD $0xf9400414 // ldr x20, [x0, #8] - WORD $0xeb1b0293 // subs x19, x20, x27 - WORD $0x54022680 // b.eq LBB0_908 $17616(%rip) - WORD $0x3200f3e4 // mov w4, #1431655765 + WORD $0xa9027beb // stp x11, lr, [sp, #32] + WORD $0x3200f3eb // mov w11, #1431655765 + WORD $0x9100071e // add lr, x24, #1 + WORD $0xf900003e // str lr, [x1] + WORD $0x38786ad0 // ldrb w16, [x22, x24] + WORD $0x71008a1f // cmp w16, #34 + WORD $0x5401f4a1 // b.ne LBB0_841 $16020(%rip) + WORD $0xf9000fe3 // str x3, [sp, #24] + WORD $0x5299fa03 // mov w3, #53200 + WORD $0x72b9f9e3 // movk w3, #53199, lsl #16 + WORD $0x3203cbea // mov w10, #-522133280 + WORD $0xf9400410 // ldr x16, [x0, #8] + WORD $0xeb1e0214 // subs x20, x16, lr + WORD $0x54024400 // b.eq LBB0_924 $18560(%rip) WORD $0xf9400522 // ldr x2, [x9, #8] - WORD $0xa9406858 // ldp x24, x26, [x2] - WORD $0x8b1b02b6 // add x22, x21, x27 - WORD $0xf101027f // cmp x19, #64 - WORD $0x54005883 // b.lo LBB0_202 $2832(%rip) - WORD $0xd2800019 // mov x25, #0 - WORD $0x9280001e // mov lr, #-1 + WORD $0xa9406c59 // ldp x25, x27, [x2] + WORD $0x8b1e02d7 // add x23, x22, lr + WORD $0xf101029f // cmp x20, #64 + WORD $0x54001b83 // b.lo LBB0_86 $880(%rip) + WORD $0xd280001a // mov x26, #0 + WORD $0x92800013 // mov x19, #-1 LBB0_54: - WORD $0x8b1b02a2 // add x2, x21, x27 + WORD $0x8b1e02c2 // add x2, x22, lr WORD $0xad405053 // ldp q19, q20, [x2] WORD $0xad415855 // ldp q21, q22, [x2, #32] WORD $0x6e208e77 // cmeq.16b v23, v19, v0 @@ -308,344 +314,682 @@ LBB0_54: WORD $0x4e211f17 // and.16b v23, v24, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602e7 // fmov w7, s23 + WORD $0x1e2602e4 // fmov w4, s23 WORD $0x4e211f37 // and.16b v23, v25, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 + WORD $0x1e2602e7 // fmov w7, s23 WORD $0x4e211f57 // and.16b v23, v26, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602e6 // fmov w6, s23 + WORD $0x1e2602ee // fmov w14, s23 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e26026e // fmov w14, s19 + WORD $0x1e26026f // fmov w15, s19 WORD $0x4e211e93 // and.16b v19, v20, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e26026f // fmov w15, s19 + WORD $0x1e260271 // fmov w17, s19 WORD $0x4e211eb3 // and.16b v19, v21, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260270 // fmov w16, s19 + WORD $0x1e260266 // fmov w6, s19 WORD $0x4e211ed3 // and.16b v19, v22, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e260265 // fmov w5, s19 - WORD $0xd3607e31 // lsl x17, x17, #32 - WORD $0xaa06c231 // orr x17, x17, x6, lsl #48 - WORD $0x53103ce6 // lsl w6, w7, #16 - WORD $0xaa060231 // orr x17, x17, x6 - WORD $0xaa020222 // orr x2, x17, x2 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa05c210 // orr x16, x16, x5, lsl #48 - WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 - WORD $0xaa0e01e7 // orr x7, x15, x14 - WORD $0xb5000107 // cbnz x7, LBB0_58 $32(%rip) - WORD $0xb5000199 // cbnz x25, LBB0_59 $48(%rip) - WORD $0xb50002c2 // cbnz x2, LBB0_60 $88(%rip) + WORD $0xd3607ce7 // lsl x7, x7, #32 + WORD $0xaa0ec0ee // orr x14, x7, x14, lsl #48 + WORD $0x53103c84 // lsl w4, w4, #16 + WORD $0xaa0401ce // orr x14, x14, x4 + WORD $0xaa0201c4 // orr x4, x14, x2 + WORD $0xd3607cce // lsl x14, x6, #32 + WORD $0xaa05c1ce // orr x14, x14, x5, lsl #48 + WORD $0x53103e31 // lsl w17, w17, #16 + WORD $0xaa1101ce // orr x14, x14, x17 + WORD $0xaa0f01c2 // orr x2, x14, x15 + WORD $0xb5000102 // cbnz x2, LBB0_58 $32(%rip) + WORD $0xb500019a // cbnz x26, LBB0_59 $48(%rip) + WORD $0xb50002c4 // cbnz x4, LBB0_60 $88(%rip) LBB0_57: - WORD $0xd1010273 // sub x19, x19, #64 - WORD $0x9101037b // add x27, x27, #64 - WORD $0xf100fe7f // cmp x19, #63 + WORD $0xd1010294 // sub x20, x20, #64 + WORD $0x910103de // add lr, lr, #64 + WORD $0xf100fe9f // cmp x20, #63 WORD $0x54fff8a8 // b.hi LBB0_54 $-236(%rip) - WORD $0x1400027c // b LBB0_198 $2544(%rip) + WORD $0x14000098 // b LBB0_85 $608(%rip) LBB0_58: - WORD $0xb10007df // cmn lr, #1 - WORD $0xdac000ee // rbit x14, x7 + WORD $0xb100067f // cmn x19, #1 + WORD $0xdac0004e // rbit x14, x2 WORD $0xdac011ce // clz x14, x14 - WORD $0x8b1b01ce // add x14, x14, x27 - WORD $0x9a8e13de // csel lr, lr, x14, ne + WORD $0x8b1e01ce // add x14, x14, lr + WORD $0x9a8e1273 // csel x19, x19, x14, ne LBB0_59: - WORD $0x8a3900ee // bic x14, x7, x25 - WORD $0xaa0e072f // orr x15, x25, x14, lsl #1 - WORD $0x8a2f00f0 // bic x16, x7, x15 - WORD $0x9201f210 // and x16, x16, #0xaaaaaaaaaaaaaaaa - WORD $0xab0e020e // adds x14, x16, x14 - WORD $0x1a9f37f9 // cset w25, hs + WORD $0x8a3a004e // bic x14, x2, x26 + WORD $0xaa0e074f // orr x15, x26, x14, lsl #1 + WORD $0x8a2f0051 // bic x17, x2, x15 + WORD $0x9201f231 // and x17, x17, #0xaaaaaaaaaaaaaaaa + WORD $0xab0e022e // adds x14, x17, x14 + WORD $0x1a9f37fa // cset w26, hs WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a0f01ce // and x14, x14, x15 - WORD $0x8a2e0042 // bic x2, x2, x14 - WORD $0xb4fffd82 // cbz x2, LBB0_57 $-80(%rip) + WORD $0x8a2e0084 // bic x4, x4, x14 + WORD $0xb4fffd84 // cbz x4, LBB0_57 $-80(%rip) LBB0_60: - WORD $0xdac0004e // rbit x14, x2 + WORD $0xdac0008e // rbit x14, x4 WORD $0xdac011ce // clz x14, x14 - WORD $0x8b1b01ce // add x14, x14, x27 - WORD $0x910005d9 // add x25, x14, #1 - WORD $0x3201f3e4 // mov w4, #-1431655766 + WORD $0x8b1e01ce // add x14, x14, lr + WORD $0x910005da // add x26, x14, #1 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xb7fa383a // tbnz x26, #63, LBB0_925 $18180(%rip) LBB0_61: - WORD $0xb7fa1b59 // tbnz x25, #63, LBB0_909 $17256(%rip) - WORD $0xf9000039 // str x25, [x1] - WORD $0xb10007df // cmn lr, #1 - WORD $0x54000060 // b.eq LBB0_64 $12(%rip) - WORD $0xeb1903df // cmp lr, x25 - WORD $0x54007c0d // b.le LBB0_247 $3968(%rip) -LBB0_64: - WORD $0xcb17032e // sub x14, x25, x23 - WORD $0xd10009c2 // sub x2, x14, #2 - WORD $0xaa1a004e // orr x14, x2, x26 - WORD $0xb40003ae // cbz x14, LBB0_70 $116(%rip) - WORD $0xeb1a005f // cmp x2, x26 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0xa940afe3 // ldp x3, x11, [sp, #8] -Lloh6: - WORD $0x10022aca // adr x10, __UnquoteTab $17752(%rip) -Lloh7: - WORD $0x9100014a // add x10, x10, __UnquoteTab@PAGEOFF $0(%rip) - WORD $0x54000421 // b.ne LBB0_72 $132(%rip) - WORD $0xd2800002 // mov x2, #0 - WORD $0xaa1a03f3 // mov x19, x26 -LBB0_67: - WORD $0xf1004267 // subs x7, x19, #16 - WORD $0x54000463 // b.lo LBB0_73 $140(%rip) - WORD $0x3ce26ad3 // ldr q19, [x22, x2] - WORD $0x3ce26b14 // ldr q20, [x24, x2] + WORD $0xf900003a // str x26, [x1] + WORD $0xb100067f // cmn x19, #1 + WORD $0x54000060 // b.eq LBB0_63 $12(%rip) + WORD $0xeb1a027f // cmp x19, x26 + WORD $0x540014ed // b.le LBB0_92 $668(%rip) +LBB0_63: + WORD $0xcb18034e // sub x14, x26, x24 + WORD $0xd10009d0 // sub x16, x14, #2 + WORD $0xaa1b020e // orr x14, x16, x27 + WORD $0xb40003ae // cbz x14, LBB0_69 $116(%rip) + WORD $0xeb1b021f // cmp x16, x27 + WORD $0xf9400fe3 // ldr x3, [sp, #24] + WORD $0x54000481 // b.ne LBB0_71 $144(%rip) + WORD $0xd2800004 // mov x4, #0 + WORD $0xaa1b03f0 // mov x16, x27 +LBB0_66: + WORD $0xf1004202 // subs x2, x16, #16 + WORD $0x54000523 // b.lo LBB0_72 $164(%rip) + WORD $0x3ce46af3 // ldr q19, [x23, x4] + WORD $0x3ce46b34 // ldr q20, [x25, x4] WORD $0x6e338e93 // cmeq.16b v19, v20, v19 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x0a2e010e // bic w14, w8, w14 - WORD $0x91004042 // add x2, x2, #16 - WORD $0xaa0703f3 // mov x19, x7 - WORD $0x34fffe8e // cbz w14, LBB0_67 $-48(%rip) - WORD $0x52800002 // mov w2, #0 - WORD $0xf9400ff0 // ldr x16, [sp, #24] - WORD $0x2a1f03f3 // mov w19, wzr - WORD $0xf9400414 // ldr x20, [x0, #8] - WORD $0xeb14033f // cmp x25, x20 - WORD $0x54000902 // b.hs LBB0_85 $288(%rip) - WORD $0x1400003d // b LBB0_81 $244(%rip) + WORD $0x0a2e02ae // bic w14, w21, w14 + WORD $0x91004084 // add x4, x4, #16 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0x34fffe8e // cbz w14, LBB0_66 $-48(%rip) + WORD $0x52800004 // mov w4, #0 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +Lloh6: + WORD $0x1002457b // adr x27, __UnquoteTab $18604(%rip) +Lloh7: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0x2a1f03f0 // mov w16, wzr + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x540009c3 // b.lo LBB0_81 $312(%rip) + WORD $0x14000175 // b LBB0_135 $1492(%rip) +LBB0_69: + WORD $0x52800030 // mov w16, #1 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 LBB0_70: - WORD $0x52800033 // mov w19, #1 - WORD $0x3200f3f1 // mov w17, #1431655765 -LBB0_71: - WORD $0xa94143eb // ldp x11, x16, [sp, #16] - WORD $0xf94007e3 // ldr x3, [sp, #8] + WORD $0xf9400fe3 // ldr x3, [sp, #24] Lloh8: - WORD $0x1002272a // adr x10, __UnquoteTab $17636(%rip) + WORD $0x1002441b // adr x27, __UnquoteTab $18560(%rip) Lloh9: - WORD $0x9100014a // add x10, x10, __UnquoteTab@PAGEOFF $0(%rip) - WORD $0xf9400414 // ldr x20, [x0, #8] - WORD $0xeb14033f // cmp x25, x20 - WORD $0x540007c2 // b.hs LBB0_85 $248(%rip) - WORD $0x14000033 // b LBB0_81 $204(%rip) + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x54000883 // b.lo LBB0_81 $272(%rip) + WORD $0x1400016b // b LBB0_135 $1452(%rip) +LBB0_71: + WORD $0xd2800010 // mov x16, #0 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +Lloh10: + WORD $0x100242fb // adr x27, __UnquoteTab $18524(%rip) +Lloh11: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x54000763 // b.lo LBB0_81 $236(%rip) + WORD $0x14000162 // b LBB0_135 $1416(%rip) LBB0_72: - WORD $0xd2800013 // mov x19, #0 - WORD $0xf9400ff0 // ldr x16, [sp, #24] - WORD $0xf9400414 // ldr x20, [x0, #8] - WORD $0xeb14033f // cmp x25, x20 - WORD $0x54000702 // b.hs LBB0_85 $224(%rip) - WORD $0x1400002d // b LBB0_81 $180(%rip) -LBB0_73: - WORD $0x0b1502ee // add w14, w23, w21 - WORD $0x0b0201ce // add w14, w14, w2 + WORD $0x0b16030e // add w14, w24, w22 + WORD $0x0b0401ce // add w14, w14, w4 WORD $0x110005ce // add w14, w14, #1 WORD $0x92402dce // and x14, x14, #0xfff - WORD $0x8b020314 // add x20, x24, x2 - WORD $0x8b0202d6 // add x22, x22, x2 + WORD $0x8b040333 // add x19, x25, x4 + WORD $0x8b0402f4 // add x20, x23, x4 WORD $0xf13fc1df // cmp x14, #4080 - WORD $0x54000268 // b.hi LBB0_76 $76(%rip) - WORD $0x92402e8e // and x14, x20, #0xfff + WORD $0x54000248 // b.hi LBB0_75 $72(%rip) + WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13fc5df // cmp x14, #4081 - WORD $0x54000202 // b.hs LBB0_76 $64(%rip) - WORD $0x3dc002d3 // ldr q19, [x22] - WORD $0x3dc00294 // ldr q20, [x20] + WORD $0x540001e2 // b.hs LBB0_75 $60(%rip) + WORD $0x3dc00293 // ldr q19, [x20] + WORD $0x3dc00274 // ldr q20, [x19] WORD $0x6e338e93 // cmeq.16b v19, v20, v19 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x6a2e010e // bics w14, w8, w14 + WORD $0x6a2e02ae // bics w14, w21, w14 WORD $0x1a9f17ef // cset w15, eq WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 - WORD $0xeb1301df // cmp x14, x19 - WORD $0x1a9f35e2 // csinc w2, w15, wzr, lo - WORD $0xf9400ff0 // ldr x16, [sp, #24] - WORD $0x1400000f // b LBB0_80 $60(%rip) -LBB0_76: - WORD $0xeb02035f // cmp x26, x2 - WORD $0x54000081 // b.ne LBB0_78 $16(%rip) - WORD $0x52800022 // mov w2, #1 - WORD $0xf9400ff0 // ldr x16, [sp, #24] - WORD $0x1400000a // b LBB0_80 $40(%rip) + WORD $0xeb1001df // cmp x14, x16 + WORD $0x1a9f35e4 // csinc w4, w15, wzr, lo + WORD $0x14000004 // b LBB0_77 $16(%rip) +LBB0_75: + WORD $0xeb04037f // cmp x27, x4 + WORD $0x540001a1 // b.ne LBB0_78 $52(%rip) + WORD $0x52800024 // mov w4, #1 +LBB0_77: + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 +Lloh12: + WORD $0x10023e3b // adr x27, __UnquoteTab $18372(%rip) +Lloh13: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0x2a0403f0 // mov w16, w4 + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x54000283 // b.lo LBB0_81 $80(%rip) + WORD $0x1400013b // b LBB0_135 $1260(%rip) LBB0_78: WORD $0x52800037 // mov w23, #1 - WORD $0xf9400ff0 // ldr x16, [sp, #24] + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +Lloh14: + WORD $0x10023cfb // adr x27, __UnquoteTab $18332(%rip) +Lloh15: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) LBB0_79: - WORD $0x384016ce // ldrb w14, [x22], #1 - WORD $0x3840168f // ldrb w15, [x20], #1 + WORD $0x3840168e // ldrb w14, [x20], #1 + WORD $0x3840166f // ldrb w15, [x19], #1 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x1a9f17e2 // cset w2, eq - WORD $0xfa570264 // ccmp x19, x23, #4, eq + WORD $0x1a9f17e4 // cset w4, eq + WORD $0xfa570204 // ccmp x16, x23, #4, eq WORD $0x910006f7 // add x23, x23, #1 WORD $0x54ffff41 // b.ne LBB0_79 $-24(%rip) -LBB0_80: - WORD $0x2a0203f3 // mov w19, w2 - WORD $0xf9400414 // ldr x20, [x0, #8] - WORD $0xeb14033f // cmp x25, x20 - WORD $0x54000162 // b.hs LBB0_85 $44(%rip) + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x2a0403f0 // mov w16, w4 + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x54002522 // b.hs LBB0_135 $1188(%rip) LBB0_81: - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x387a6ac2 // ldrb w2, [x22, x26] WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_85 $32(%rip) + WORD $0x540024c0 // b.eq LBB0_135 $1176(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_85 $24(%rip) + WORD $0x54002480 // b.eq LBB0_135 $1168(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_85 $12(%rip) - WORD $0xaa1903f7 // mov x23, x25 - WORD $0x14000031 // b LBB0_101 $196(%rip) + WORD $0x54002422 // b.hs LBB0_135 $1156(%rip) + WORD $0xaa1a03f8 // mov x24, x26 + WORD $0x1400014f // b LBB0_151 $1340(%rip) LBB0_85: - WORD $0x91000737 // add x23, x25, #1 - WORD $0xeb1402ff // cmp x23, x20 - WORD $0x54000122 // b.hs LBB0_89 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x8b1e02d1 // add x17, x22, lr + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0x14000004 // b LBB0_87 $16(%rip) +LBB0_86: + WORD $0xd280001a // mov x26, #0 + WORD $0x92800013 // mov x19, #-1 + WORD $0xaa1703f1 // mov x17, x23 +LBB0_87: + WORD $0xf100829e // subs lr, x20, #32 + WORD $0x54009423 // b.lo LBB0_298 $4740(%rip) + WORD $0xad405233 // ldp q19, q20, [x17] + WORD $0x6e208e75 // cmeq.16b v21, v19, v0 + WORD $0x6e208e96 // cmeq.16b v22, v20, v0 + WORD $0x6e238e73 // cmeq.16b v19, v19, v3 + WORD $0x6e238e94 // cmeq.16b v20, v20, v3 + WORD $0x4e211eb5 // and.16b v21, v21, v1 + WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 + WORD $0x4e71bab5 // addv.8h h21, v21 + WORD $0x1e2602b4 // fmov w20, s21 + WORD $0x4e211ed5 // and.16b v21, v22, v1 + WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 + WORD $0x4e71bab5 // addv.8h h21, v21 + WORD $0x1e2602ae // fmov w14, s21 + WORD $0x4e211e73 // and.16b v19, v19, v1 + WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 + WORD $0x4e71ba73 // addv.8h h19, v19 + WORD $0x1e260264 // fmov w4, s19 + WORD $0x4e211e93 // and.16b v19, v20, v1 + WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 + WORD $0x4e71ba73 // addv.8h h19, v19 + WORD $0x1e26026f // fmov w15, s19 + WORD $0x33103dd4 // bfi w20, w14, #16, #16 + WORD $0x33103de4 // bfi w4, w15, #16, #16 + WORD $0x35009164 // cbnz w4, LBB0_299 $4652(%rip) + WORD $0xb500921a // cbnz x26, LBB0_300 $4672(%rip) + WORD $0xf94013eb // ldr x11, [sp, #32] + WORD $0xb4009414 // cbz x20, LBB0_301 $4736(%rip) +LBB0_91: + WORD $0xdac0028e // rbit x14, x20 + WORD $0xdac011ce // clz x14, x14 + WORD $0xcb16022f // sub x15, x17, x22 + WORD $0x8b0e01ee // add x14, x15, x14 + WORD $0x910005da // add x26, x14, #1 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xf94017fe // ldr lr, [sp, #40] + WORD $0xb6ffeafa // tbz x26, #63, LBB0_61 $-676(%rip) + WORD $0x14001116 // b LBB0_925 $17496(%rip) +LBB0_92: + WORD $0xf9001bff // str xzr, [sp, #48] + WORD $0x8b1a02c8 // add x8, x22, x26 + WORD $0xd1000513 // sub x19, x8, #1 + WORD $0x8b1b0335 // add x21, x25, x27 + WORD $0xeb1302ff // cmp x23, x19 + WORD $0x54001902 // b.hs LBB0_131 $800(%rip) + WORD $0xf100077f // cmp x27, #1 + WORD $0x540018cb // b.lt LBB0_131 $792(%rip) +Lloh16: + WORD $0x100232db // adr x27, __UnquoteTab $18008(%rip) +Lloh17: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) +LBB0_95: + WORD $0x394002e8 // ldrb w8, [x23] + WORD $0x7101711f // cmp w8, #92 + WORD $0x540001a1 // b.ne LBB0_100 $52(%rip) + WORD $0xcb170274 // sub x20, x19, x23 + WORD $0xf100069f // cmp x20, #1 + WORD $0x54022b8b // b.lt LBB0_951 $17776(%rip) + WORD $0x394006e8 // ldrb w8, [x23, #1] + WORD $0x38686b68 // ldrb w8, [x27, x8] + WORD $0x7103fd1f // cmp w8, #255 + WORD $0x54000180 // b.eq LBB0_102 $48(%rip) + WORD $0x34022a68 // cbz w8, LBB0_949 $17740(%rip) + WORD $0x3900c3e8 // strb w8, [sp, #48] + WORD $0x91000af7 // add x23, x23, #2 + WORD $0x52800028 // mov w8, #1 + WORD $0x14000046 // b LBB0_111 $280(%rip) +LBB0_100: + WORD $0x3940032e // ldrb w14, [x25] + WORD $0x6b0e011f // cmp w8, w14 + WORD $0x54001821 // b.ne LBB0_133 $772(%rip) + WORD $0x910006f7 // add x23, x23, #1 + WORD $0x91000739 // add x25, x25, #1 + WORD $0x14000053 // b LBB0_117 $332(%rip) +LBB0_102: + WORD $0xf100129f // cmp x20, #4 + WORD $0x54022943 // b.lo LBB0_950 $17704(%rip) + WORD $0xb84022e8 // ldur w8, [x23, #2] + WORD $0x0b03010e // add w14, w8, w3 + WORD $0x3201c3eb // mov w11, #-2139062144 + WORD $0x0a280170 // bic w16, w11, w8 + WORD $0x6a0e021f // tst w16, w14 + WORD $0x540227c1 // b.ne LBB0_947 $17656(%rip) + WORD $0x5283232e // mov w14, #6425 + WORD $0x72a3232e // movk w14, #6425, lsl #16 + WORD $0x0b0e010e // add w14, w8, w14 + WORD $0x2a0801ce // orr w14, w14, w8 + WORD $0x3201c3f1 // mov w17, #-2139062144 + WORD $0x6a0b01df // tst w14, w11 + WORD $0x540226e1 // b.ne LBB0_947 $17628(%rip) + WORD $0x3200dbeb // mov w11, #2139062143 + WORD $0x0a0b0102 // and w2, w8, w11 + WORD $0x3202c7eb // mov w11, #-1061109568 + WORD $0x4b02016e // sub w14, w11, w2 + WORD $0x5288c8cb // mov w11, #17990 + WORD $0x72a8c8cb // movk w11, #17990, lsl #16 + WORD $0x0b0b004f // add w15, w2, w11 + WORD $0x0a0e01ee // and w14, w15, w14 + WORD $0x6a1001df // tst w14, w16 + WORD $0x540225a1 // b.ne LBB0_947 $17588(%rip) + WORD $0x4b02014e // sub w14, w10, w2 + WORD $0x5287272b // mov w11, #14649 + WORD $0x72a7272b // movk w11, #14649, lsl #16 + WORD $0x0b0b004f // add w15, w2, w11 + WORD $0x0a0e01ee // and w14, w15, w14 + WORD $0x6a1001df // tst w14, w16 + WORD $0x540224c1 // b.ne LBB0_947 $17560(%rip) + WORD $0x5ac00908 // rev w8, w8 + WORD $0x3200c3eb // mov w11, #16843009 + WORD $0x0a68116e // bic w14, w11, w8, lsr #4 + WORD $0x0b0e0dce // add w14, w14, w14, lsl #3 + WORD $0x3200cfeb // mov w11, #252645135 + WORD $0x0a0b0108 // and w8, w8, w11 + WORD $0x0b0801c8 // add w8, w14, w8 + WORD $0x2a481108 // orr w8, w8, w8, lsr #4 + WORD $0x53087d0e // lsr w14, w8, #8 + WORD $0x12181dc2 // and w2, w14, #0xff00 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0x33001d10 // bfxil w16, w8, #0, #8 + WORD $0x91001af8 // add x24, x23, #6 + WORD $0x7101fe1f // cmp w16, #127 + WORD $0x54000529 // b.ls LBB0_119 $164(%rip) + WORD $0x711ffe1f // cmp w16, #2047 + WORD $0x54000569 // b.ls LBB0_120 $172(%rip) + WORD $0x5140384e // sub w14, w2, #14, lsl #12 + WORD $0x312005df // cmn w14, #2049 + WORD $0x54000628 // b.hi LBB0_121 $196(%rip) + WORD $0x530c7c4e // lsr w14, w2, #12 + WORD $0x321b09ce // orr w14, w14, #0xe0 + WORD $0x3900c3ee // strb w14, [sp, #48] + WORD $0x5280100e // mov w14, #128 + WORD $0x33062e0e // bfxil w14, w16, #6, #6 + WORD $0x3900c7ee // strb w14, [sp, #49] + WORD $0x5280100e // mov w14, #128 + WORD $0x3300150e // bfxil w14, w8, #0, #6 + WORD $0x3900cbee // strb w14, [sp, #50] + WORD $0xaa1803f7 // mov x23, x24 + WORD $0x52800068 // mov w8, #3 +LBB0_111: + WORD $0x9100c3f0 // add x16, sp, #48 + WORD $0xaa080208 // orr x8, x16, x8 + WORD $0xeb15033f // cmp x25, x21 + WORD $0x54000182 // b.hs LBB0_116 $48(%rip) + WORD $0x9100c3f0 // add x16, sp, #48 +LBB0_113: + WORD $0x3940032e // ldrb w14, [x25] + WORD $0x3940020f // ldrb w15, [x16] + WORD $0x6b0f01df // cmp w14, w15 + WORD $0x540000e1 // b.ne LBB0_116 $28(%rip) + WORD $0x91000739 // add x25, x25, #1 + WORD $0x91000610 // add x16, x16, #1 + WORD $0xeb15033f // cmp x25, x21 + WORD $0x54000062 // b.hs LBB0_116 $12(%rip) + WORD $0xeb08021f // cmp x16, x8 + WORD $0x54fffee3 // b.lo LBB0_113 $-36(%rip) +LBB0_116: + WORD $0xeb08021f // cmp x16, x8 +Lloh18: + WORD $0x1002261b // adr x27, __UnquoteTab $17600(%rip) +Lloh19: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0x54000dc1 // b.ne LBB0_134 $440(%rip) +LBB0_117: + WORD $0xeb1302ff // cmp x23, x19 + WORD $0x54000b62 // b.hs LBB0_131 $364(%rip) + WORD $0xeb15033f // cmp x25, x21 + WORD $0x54fff2c3 // b.lo LBB0_95 $-424(%rip) + WORD $0x14000058 // b LBB0_131 $352(%rip) +LBB0_119: + WORD $0x3900c3e8 // strb w8, [sp, #48] + WORD $0xaa1803f7 // mov x23, x24 + WORD $0x52800028 // mov w8, #1 + WORD $0x17ffffe5 // b LBB0_111 $-108(%rip) +LBB0_120: + WORD $0x53067e0e // lsr w14, w16, #6 + WORD $0x321a05ce // orr w14, w14, #0xc0 + WORD $0x3900c3ee // strb w14, [sp, #48] + WORD $0x5280100e // mov w14, #128 + WORD $0x3300150e // bfxil w14, w8, #0, #6 + WORD $0x3900c7ee // strb w14, [sp, #49] + WORD $0xaa1803f7 // mov x23, x24 + WORD $0x52800048 // mov w8, #2 + WORD $0x17ffffdc // b LBB0_111 $-144(%rip) +LBB0_121: + WORD $0x92800068 // mov x8, #-4 + WORD $0xf1001a9f // cmp x20, #6 + WORD $0x54022263 // b.lo LBB0_964 $17484(%rip) + WORD $0x530a7e0e // lsr w14, w16, #10 + WORD $0x7100d9df // cmp w14, #54 + WORD $0x54022208 // b.hi LBB0_964 $17472(%rip) + WORD $0x39400308 // ldrb w8, [x24] + WORD $0x7101711f // cmp w8, #92 + WORD $0x54022141 // b.ne LBB0_963 $17448(%rip) + WORD $0x39401ee8 // ldrb w8, [x23, #7] + WORD $0x7101d51f // cmp w8, #117 + WORD $0x540220e1 // b.ne LBB0_963 $17436(%rip) + WORD $0xb9400ae8 // ldr w8, [x23, #8] + WORD $0x0b03010e // add w14, w8, w3 + WORD $0x0a280224 // bic w4, w17, w8 + WORD $0x6a0e009f // tst w4, w14 + WORD $0x54022001 // b.ne LBB0_962 $17408(%rip) + WORD $0x5283232b // mov w11, #6425 + WORD $0x72a3232b // movk w11, #6425, lsl #16 + WORD $0x0b0b010e // add w14, w8, w11 + WORD $0x2a0801ce // orr w14, w14, w8 + WORD $0x6a1101df // tst w14, w17 + WORD $0x54021f41 // b.ne LBB0_962 $17384(%rip) + WORD $0x3200dbeb // mov w11, #2139062143 + WORD $0x0a0b0102 // and w2, w8, w11 + WORD $0x3202c7eb // mov w11, #-1061109568 + WORD $0x4b02016e // sub w14, w11, w2 + WORD $0x5288c8cb // mov w11, #17990 + WORD $0x72a8c8cb // movk w11, #17990, lsl #16 + WORD $0x0b0b004f // add w15, w2, w11 + WORD $0x0a0e01ee // and w14, w15, w14 + WORD $0x6a0401df // tst w14, w4 + WORD $0x54021e01 // b.ne LBB0_962 $17344(%rip) + WORD $0x4b02014e // sub w14, w10, w2 + WORD $0x5287272b // mov w11, #14649 + WORD $0x72a7272b // movk w11, #14649, lsl #16 + WORD $0x0b0b004f // add w15, w2, w11 + WORD $0x0a0e01ee // and w14, w15, w14 + WORD $0x6a0401df // tst w14, w4 + WORD $0x54021d21 // b.ne LBB0_962 $17316(%rip) + WORD $0x5ac00908 // rev w8, w8 + WORD $0x3200c3eb // mov w11, #16843009 + WORD $0x0a68116e // bic w14, w11, w8, lsr #4 + WORD $0x0b0e0dce // add w14, w14, w14, lsl #3 + WORD $0x3200cfeb // mov w11, #252645135 + WORD $0x0a0b0108 // and w8, w8, w11 + WORD $0x0b0801c8 // add w8, w14, w8 + WORD $0x2a481108 // orr w8, w8, w8, lsr #4 + WORD $0x53087d0e // lsr w14, w8, #8 + WORD $0x12181dc2 // and w2, w14, #0xff00 + WORD $0x5140384e // sub w14, w2, #14, lsl #12 + WORD $0x311001df // cmn w14, #1024 + WORD $0x54021c63 // b.lo LBB0_965 $17292(%rip) + WORD $0x12001d0e // and w14, w8, #0xff + WORD $0x2a1029ce // orr w14, w14, w16, lsl #10 + WORD $0x5284800b // mov w11, #9216 + WORD $0x72bf940b // movk w11, #64672, lsl #16 + WORD $0x0b0b004f // add w15, w2, w11 + WORD $0x0b0f01ce // add w14, w14, w15 + WORD $0x53127dcf // lsr w15, w14, #18 + WORD $0x321c0def // orr w15, w15, #0xf0 + WORD $0x3900c3ef // strb w15, [sp, #48] + WORD $0x5280100f // mov w15, #128 + WORD $0x330c45cf // bfxil w15, w14, #12, #6 + WORD $0x3900c7ef // strb w15, [sp, #49] + WORD $0x5280100f // mov w15, #128 + WORD $0x33062dcf // bfxil w15, w14, #6, #6 + WORD $0x3900cbef // strb w15, [sp, #50] + WORD $0x5280100e // mov w14, #128 + WORD $0x3300150e // bfxil w14, w8, #0, #6 + WORD $0x3900cfee // strb w14, [sp, #51] + WORD $0x910032f7 // add x23, x23, #12 + WORD $0x52800088 // mov w8, #4 + WORD $0x17ffff92 // b LBB0_111 $-440(%rip) +LBB0_131: + WORD $0xeb1302ff // cmp x23, x19 + WORD $0xfa550320 // ccmp x25, x21, #0, eq + WORD $0x1a9f17f0 // cset w16, eq +LBB0_132: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x17fffea2 // b LBB0_70 $-1400(%rip) +LBB0_133: + WORD $0xd2800010 // mov x16, #0 + WORD $0x17fffff3 // b LBB0_132 $-52(%rip) +LBB0_134: + WORD $0xd2800010 // mov x16, #0 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf9400fe3 // ldr x3, [sp, #24] + WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0xeb13035f // cmp x26, x19 + WORD $0x54ffdb23 // b.lo LBB0_81 $-1180(%rip) +LBB0_135: + WORD $0x91000758 // add x24, x26, #1 + WORD $0xeb13031f // cmp x24, x19 + WORD $0x54000122 // b.hs LBB0_139 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_89 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_139 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_89 $16(%rip) + WORD $0x54000080 // b.eq LBB0_139 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x540004c3 // b.lo LBB0_101 $152(%rip) -LBB0_89: - WORD $0x91000b37 // add x23, x25, #2 - WORD $0xeb1402ff // cmp x23, x20 - WORD $0x54000122 // b.hs LBB0_93 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x540004c3 // b.lo LBB0_151 $152(%rip) +LBB0_139: + WORD $0x91000b58 // add x24, x26, #2 + WORD $0xeb13031f // cmp x24, x19 + WORD $0x54000122 // b.hs LBB0_143 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_93 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_143 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_93 $16(%rip) + WORD $0x54000080 // b.eq LBB0_143 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000363 // b.lo LBB0_101 $108(%rip) -LBB0_93: - WORD $0x91000f37 // add x23, x25, #3 - WORD $0xeb1402ff // cmp x23, x20 - WORD $0x54000122 // b.hs LBB0_97 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x54000363 // b.lo LBB0_151 $108(%rip) +LBB0_143: + WORD $0x91000f58 // add x24, x26, #3 + WORD $0xeb13031f // cmp x24, x19 + WORD $0x54000122 // b.hs LBB0_147 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_97 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_147 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_97 $16(%rip) + WORD $0x54000080 // b.eq LBB0_147 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000203 // b.lo LBB0_101 $64(%rip) -LBB0_97: - WORD $0x91001337 // add x23, x25, #4 - WORD $0xeb1402ff // cmp x23, x20 - WORD $0x5401ac22 // b.hs LBB0_800 $13700(%rip) -LBB0_98: - WORD $0x38776aae // ldrb w14, [x21, x23] + WORD $0x54000203 // b.lo LBB0_151 $64(%rip) +LBB0_147: + WORD $0x91001358 // add x24, x26, #4 + WORD $0xeb13031f // cmp x24, x19 + WORD $0x54019f62 // b.hs LBB0_812 $13292(%rip) +LBB0_148: + WORD $0x38786ace // ldrb w14, [x22, x24] WORD $0x710081df // cmp w14, #32 WORD $0x9ace218e // lsl x14, x12, x14 WORD $0x8a0d01ce // and x14, x14, x13 WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_100 $20(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17029f // cmp x20, x23 - WORD $0x54ffff01 // b.ne LBB0_98 $-32(%rip) - WORD $0x14000dc2 // b LBB0_827 $14088(%rip) -LBB0_100: - WORD $0xeb1402ff // cmp x23, x20 - WORD $0x5401b802 // b.hs LBB0_827 $14080(%rip) -LBB0_101: - WORD $0x910006f8 // add x24, x23, #1 - WORD $0xf9000038 // str x24, [x1] - WORD $0x38776aae // ldrb w14, [x21, x23] - WORD $0x7100e9df // cmp w14, #58 - WORD $0x5401b761 // b.ne LBB0_827 $14060(%rip) - WORD $0xb5010593 // cbnz x19, LBB0_498 $8368(%rip) - WORD $0xf9400413 // ldr x19, [x0, #8] + WORD $0x540000a0 // b.eq LBB0_150 $20(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xeb18027f // cmp x19, x24 + WORD $0x54ffff01 // b.ne LBB0_148 $-32(%rip) + WORD $0x14000d79 // b LBB0_842 $13796(%rip) +LBB0_150: WORD $0xeb13031f // cmp x24, x19 - WORD $0x54000162 // b.hs LBB0_108 $44(%rip) - WORD $0x38786aa2 // ldrb w2, [x21, x24] + WORD $0x5401aee2 // b.hs LBB0_842 $13788(%rip) +LBB0_151: + WORD $0x91000719 // add x25, x24, #1 + WORD $0xf9000039 // str x25, [x1] + WORD $0x38786ace // ldrb w14, [x22, x24] + WORD $0x7100e9df // cmp w14, #58 + WORD $0x5401ae41 // b.ne LBB0_842 $13768(%rip) + WORD $0xb500f8d0 // cbnz x16, LBB0_510 $7960(%rip) + WORD $0xf9400410 // ldr x16, [x0, #8] + WORD $0xeb10033f // cmp x25, x16 + WORD $0x54000162 // b.hs LBB0_158 $44(%rip) + WORD $0x38796ac2 // ldrb w2, [x22, x25] WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_108 $32(%rip) + WORD $0x54000100 // b.eq LBB0_158 $32(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_108 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_158 $24(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_108 $12(%rip) - WORD $0xaa1803f6 // mov x22, x24 - WORD $0x14000031 // b LBB0_124 $196(%rip) -LBB0_108: - WORD $0x91000af6 // add x22, x23, #2 - WORD $0xeb1302df // cmp x22, x19 - WORD $0x54000122 // b.hs LBB0_112 $36(%rip) - WORD $0x38766aa2 // ldrb w2, [x21, x22] + WORD $0x54000062 // b.hs LBB0_158 $12(%rip) + WORD $0xaa1903f3 // mov x19, x25 + WORD $0x14000031 // b LBB0_174 $196(%rip) +LBB0_158: + WORD $0x91000b13 // add x19, x24, #2 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_162 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_112 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_162 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_112 $16(%rip) + WORD $0x54000080 // b.eq LBB0_162 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x540004c3 // b.lo LBB0_124 $152(%rip) -LBB0_112: - WORD $0x91000ef6 // add x22, x23, #3 - WORD $0xeb1302df // cmp x22, x19 - WORD $0x54000122 // b.hs LBB0_116 $36(%rip) - WORD $0x38766aa2 // ldrb w2, [x21, x22] + WORD $0x540004c3 // b.lo LBB0_174 $152(%rip) +LBB0_162: + WORD $0x91000f13 // add x19, x24, #3 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_166 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_116 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_166 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_116 $16(%rip) + WORD $0x54000080 // b.eq LBB0_166 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000363 // b.lo LBB0_124 $108(%rip) -LBB0_116: - WORD $0x910012f6 // add x22, x23, #4 - WORD $0xeb1302df // cmp x22, x19 - WORD $0x54000122 // b.hs LBB0_120 $36(%rip) - WORD $0x38766aa2 // ldrb w2, [x21, x22] + WORD $0x54000363 // b.lo LBB0_174 $108(%rip) +LBB0_166: + WORD $0x91001313 // add x19, x24, #4 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_170 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_120 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_170 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_120 $16(%rip) + WORD $0x54000080 // b.eq LBB0_170 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000203 // b.lo LBB0_124 $64(%rip) -LBB0_120: - WORD $0x910016f6 // add x22, x23, #5 - WORD $0xeb1302df // cmp x22, x19 - WORD $0x54000b82 // b.hs LBB0_150 $368(%rip) -LBB0_121: - WORD $0x38766aae // ldrb w14, [x21, x22] + WORD $0x54000203 // b.lo LBB0_174 $64(%rip) +LBB0_170: + WORD $0x91001713 // add x19, x24, #5 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54002ea2 // b.hs LBB0_231 $1492(%rip) +LBB0_171: + WORD $0x38736ace // ldrb w14, [x22, x19] WORD $0x710081df // cmp w14, #32 WORD $0x9ace218e // lsl x14, x12, x14 WORD $0x8a0d01ce // and x14, x14, x13 WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_123 $20(%rip) - WORD $0x910006d6 // add x22, x22, #1 - WORD $0xeb16027f // cmp x19, x22 - WORD $0x54ffff01 // b.ne LBB0_121 $-32(%rip) - WORD $0x14000054 // b LBB0_151 $336(%rip) -LBB0_123: - WORD $0xeb1302df // cmp x22, x19 - WORD $0x54000a42 // b.hs LBB0_151 $328(%rip) -LBB0_124: - WORD $0x910006d8 // add x24, x22, #1 - WORD $0xf9000038 // str x24, [x1] - WORD $0x38766aa2 // ldrb w2, [x21, x22] - WORD $0x7101685f // cmp w2, #90 - WORD $0x540005ec // b.gt LBB0_139 $188(%rip) - WORD $0x7100bc5f // cmp w2, #47 - WORD $0x540007ad // b.le LBB0_144 $244(%rip) - WORD $0x5100c04e // sub w14, w2, #48 + WORD $0x540000a0 // b.eq LBB0_173 $20(%rip) + WORD $0x91000673 // add x19, x19, #1 + WORD $0xeb13021f // cmp x16, x19 + WORD $0x54ffff01 // b.ne LBB0_171 $-32(%rip) + WORD $0x1400016d // b LBB0_232 $1460(%rip) +LBB0_173: + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54002d62 // b.hs LBB0_232 $1452(%rip) +LBB0_174: + WORD $0x91000679 // add x25, x19, #1 + WORD $0xf9000039 // str x25, [x1] + WORD $0x38736ad0 // ldrb w16, [x22, x19] + WORD $0x71016a1f // cmp w16, #90 + WORD $0x540008cc // b.gt LBB0_194 $280(%rip) + WORD $0x7100be1f // cmp w16, #47 + WORD $0x54002acd // b.le LBB0_225 $1368(%rip) + WORD $0x5100c20e // sub w14, w16, #48 WORD $0x710029df // cmp w14, #10 - WORD $0x540008c2 // b.hs LBB0_150 $280(%rip) -LBB0_127: + WORD $0x54002be2 // b.hs LBB0_231 $1404(%rip) +LBB0_177: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801d3 // sub x19, x14, x24 - WORD $0xf100427f // cmp x19, #16 - WORD $0x540001e3 // b.lo LBB0_130 $60(%rip) -LBB0_128: - WORD $0x3cf86ab3 // ldr q19, [x21, x24] + WORD $0xcb1901d0 // sub x16, x14, x25 + WORD $0xf100421f // cmp x16, #16 + WORD $0x54000223 // b.lo LBB0_181 $68(%rip) + WORD $0xd2800004 // mov x4, #0 +LBB0_179: + WORD $0x3cf96ad3 // ldr q19, [x22, x25] WORD $0x6e248e74 // cmeq.16b v20, v19, v4 WORD $0x4e251e73 // and.16b v19, v19, v5 WORD $0x6e268e73 // cmeq.16b v19, v19, v6 @@ -654,162 +998,153 @@ LBB0_128: WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e260262 // fmov w2, s19 - WORD $0x350002e2 // cbnz w2, LBB0_138 $92(%rip) - WORD $0xd1004273 // sub x19, x19, #16 - WORD $0x91004318 // add x24, x24, #16 - WORD $0xf1003e7f // cmp x19, #15 - WORD $0x54fffe68 // b.hi LBB0_128 $-52(%rip) -LBB0_130: - WORD $0x8b1802a2 // add x2, x21, x24 - WORD $0xb40001f3 // cbz x19, LBB0_137 $60(%rip) - WORD $0x8b130054 // add x20, x2, x19 - WORD $0xcb150058 // sub x24, x2, x21 -LBB0_132: - WORD $0x39400047 // ldrb w7, [x2] - WORD $0x7100b0ff // cmp w7, #44 - WORD $0x54005c40 // b.eq LBB0_246 $2952(%rip) - WORD $0x7101f4ff // cmp w7, #125 - WORD $0x54005c00 // b.eq LBB0_246 $2944(%rip) - WORD $0x710174ff // cmp w7, #93 - WORD $0x54005bc0 // b.eq LBB0_246 $2936(%rip) - WORD $0x91000442 // add x2, x2, #1 - WORD $0x91000718 // add x24, x24, #1 - WORD $0xf1000673 // subs x19, x19, #1 - WORD $0x54fffec1 // b.ne LBB0_132 $-40(%rip) - WORD $0xaa1403e2 // mov x2, x20 -LBB0_137: - WORD $0xcb150058 // sub x24, x2, x21 - WORD $0x1400040d // b LBB0_314 $4148(%rip) -LBB0_138: + WORD $0x35000362 // cbnz w2, LBB0_189 $108(%rip) + WORD $0xd1004210 // sub x16, x16, #16 + WORD $0x91004339 // add x25, x25, #16 + WORD $0x91004084 // add x4, x4, #16 + WORD $0xf1003e1f // cmp x16, #15 + WORD $0x54fffe48 // b.hi LBB0_179 $-56(%rip) +LBB0_181: + WORD $0x8b1902d3 // add x19, x22, x25 + WORD $0xb4000250 // cbz x16, LBB0_188 $72(%rip) + WORD $0x8b100264 // add x4, x19, x16 + WORD $0xcb160279 // sub x25, x19, x22 +LBB0_183: + WORD $0x39400262 // ldrb w2, [x19] + WORD $0x7100b05f // cmp w2, #44 + WORD $0x9ac2218e // lsl x14, x12, x2 + WORD $0x8a1101ce // and x14, x14, x17 + WORD $0xfa4099c4 // ccmp x14, #0, #4, ls + WORD $0x54005d81 // b.ne LBB0_296 $2992(%rip) + WORD $0x7101f45f // cmp w2, #125 + WORD $0x54005d40 // b.eq LBB0_296 $2984(%rip) + WORD $0x7101745f // cmp w2, #93 + WORD $0x54005d00 // b.eq LBB0_296 $2976(%rip) + WORD $0x91000673 // add x19, x19, #1 + WORD $0x91000739 // add x25, x25, #1 + WORD $0xf1000610 // subs x16, x16, #1 + WORD $0x54fffe61 // b.ne LBB0_183 $-52(%rip) + WORD $0xaa0403f3 // mov x19, x4 +LBB0_188: + WORD $0xcb160279 // sub x25, x19, x22 + WORD $0x14000357 // b LBB0_323 $3420(%rip) +LBB0_189: WORD $0x5ac0004e // rbit w14, w2 - WORD $0x5ac011ce // clz w14, w14 - WORD $0x8b1801d8 // add x24, x14, x24 - WORD $0xf9000038 // str x24, [x1] - WORD $0x1400001f // b LBB0_151 $124(%rip) -LBB0_139: - WORD $0x7101b45f // cmp w2, #109 - WORD $0x540002ad // b.le LBB0_147 $84(%rip) - WORD $0x7101b85f // cmp w2, #110 - WORD $0x54002a60 // b.eq LBB0_199 $1356(%rip) - WORD $0x7101d05f // cmp w2, #116 - WORD $0x54002a20 // b.eq LBB0_199 $1348(%rip) - WORD $0x7101ec5f // cmp w2, #123 - WORD $0x540002a1 // b.ne LBB0_150 $84(%rip) - WORD $0xd280001b // mov x27, #0 - WORD $0xd2800019 // mov x25, #0 - WORD $0xd2800016 // mov x22, #0 + WORD $0x5ac011d0 // clz w16, w14 + WORD $0x8b190219 // add x25, x16, x25 + WORD $0xf9000039 // str x25, [x1] + WORD $0xf100073f // cmp x25, #1 + WORD $0x5400264b // b.lt LBB0_232 $1224(%rip) + WORD $0x8b040210 // add x16, x16, x4 + WORD $0x8b1302c4 // add x4, x22, x19 +LBB0_191: + WORD $0x3870688e // ldrb w14, [x4, x16] + WORD $0x710081df // cmp w14, #32 + WORD $0x9ace218e // lsl x14, x12, x14 + WORD $0x8a0d01ce // and x14, x14, x13 + WORD $0xfa4099c4 // ccmp x14, #0, #4, ls + WORD $0x54002e80 // b.eq LBB0_257 $1488(%rip) + WORD $0x8b10026e // add x14, x19, x16 + WORD $0xf900002e // str x14, [x1] + WORD $0xd1000610 // sub x16, x16, #1 + WORD $0x8b100262 // add x2, x19, x16 + WORD $0x9100084e // add x14, x2, #2 + WORD $0xf10005df // cmp x14, #1 + WORD $0x54fffe8c // b.gt LBB0_191 $-48(%rip) + WORD $0x91000459 // add x25, x2, #1 + WORD $0x14000121 // b LBB0_232 $1156(%rip) +LBB0_194: + WORD $0x7101b61f // cmp w16, #109 + WORD $0x540022ed // b.le LBB0_228 $1116(%rip) + WORD $0x7101ba1f // cmp w16, #110 + WORD $0x54002c00 // b.eq LBB0_254 $1408(%rip) + WORD $0x7101d21f // cmp w16, #116 + WORD $0x54002bc0 // b.eq LBB0_254 $1400(%rip) + WORD $0x7101ee1f // cmp w16, #123 + WORD $0x540022e1 // b.ne LBB0_231 $1116(%rip) + WORD $0xd2800013 // mov x19, #0 + WORD $0xd280001a // mov x26, #0 WORD $0xd2800017 // mov x23, #0 + WORD $0xd2800018 // mov x24, #0 WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801da // sub x26, x14, x24 - WORD $0x8b1802b5 // add x21, x21, x24 - WORD $0x1400005a // b LBB0_174 $360(%rip) -LBB0_144: - WORD $0x340001c2 // cbz w2, LBB0_151 $56(%rip) - WORD $0x7100885f // cmp w2, #34 - WORD $0x54002e20 // b.eq LBB0_208 $1476(%rip) - WORD $0x7100b45f // cmp w2, #45 - WORD $0x54fff860 // b.eq LBB0_127 $-244(%rip) - WORD $0x14000007 // b LBB0_150 $28(%rip) -LBB0_147: - WORD $0x71016c5f // cmp w2, #91 - WORD $0x54003580 // b.eq LBB0_217 $1712(%rip) - WORD $0x7101985f // cmp w2, #102 - WORD $0x54000061 // b.ne LBB0_150 $12(%rip) - WORD $0x910016c2 // add x2, x22, #5 - WORD $0x1400013c // b LBB0_200 $1264(%rip) -LBB0_150: - WORD $0xf9000036 // str x22, [x1] - WORD $0xaa1603f8 // mov x24, x22 -LBB0_151: - WORD $0xa9404c15 // ldp x21, x19, [x0] - WORD $0xeb13031f // cmp x24, x19 - WORD $0x54000162 // b.hs LBB0_156 $44(%rip) - WORD $0x38786aa2 // ldrb w2, [x21, x24] - WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_156 $32(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_156 $24(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_156 $12(%rip) - WORD $0xaa1803f7 // mov x23, x24 - WORD $0x14000031 // b LBB0_172 $196(%rip) -LBB0_156: - WORD $0x91000717 // add x23, x24, #1 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_160 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_160 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_160 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x540004c3 // b.lo LBB0_172 $152(%rip) -LBB0_160: - WORD $0x91000b17 // add x23, x24, #2 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_164 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_164 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_164 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000363 // b.lo LBB0_172 $108(%rip) -LBB0_164: - WORD $0x91000f17 // add x23, x24, #3 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_168 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_168 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_168 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000203 // b.lo LBB0_172 $64(%rip) -LBB0_168: - WORD $0x91001317 // add x23, x24, #4 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54019202 // b.hs LBB0_800 $12864(%rip) -LBB0_169: - WORD $0x38776aae // ldrb w14, [x21, x23] - WORD $0x710081df // cmp w14, #32 - WORD $0x9ace218e // lsl x14, x12, x14 - WORD $0x8a0d01ce // and x14, x14, x13 - WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_171 $20(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17027f // cmp x19, x23 - WORD $0x54ffff01 // b.ne LBB0_169 $-32(%rip) - WORD $0x14000cf1 // b LBB0_827 $13252(%rip) -LBB0_171: - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54019de2 // b.hs LBB0_827 $13244(%rip) -LBB0_172: - WORD $0x910006f9 // add x25, x23, #1 - WORD $0xf9000039 // str x25, [x1] - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100b05f // cmp w2, #44 - WORD $0x54ffbd40 // b.eq LBB0_29 $-2136(%rip) - WORD $0x14000ce7 // b LBB0_826 $13212(%rip) -LBB0_173: - WORD $0x937ffe7b // asr x27, x19, #63 - WORD $0x9e670293 // fmov d19, x20 - WORD $0x0e205a73 // cnt.8b v19, v19 - WORD $0x2e303a73 // uaddlv.8b h19, v19 - WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1601d6 // add x22, x14, x22 - WORD $0x910102b5 // add x21, x21, #64 - WORD $0xaa0a03fa // mov x26, x10 -LBB0_174: - WORD $0xf101034a // subs x10, x26, #64 - WORD $0x5400170b // b.lt LBB0_181 $736(%rip) -LBB0_175: - WORD $0xad4056b6 // ldp q22, q21, [x21] - WORD $0xad414eb4 // ldp q20, q19, [x21, #32] + WORD $0xcb1901ce // sub x14, x14, x25 + WORD $0x8b1902d6 // add x22, x22, x25 + WORD $0xf10101ca // subs x10, x14, #64 + WORD $0xf9000bee // str x14, [sp, #16] + WORD $0x5400074a // b.ge LBB0_216 $232(%rip) +LBB0_199: + WORD $0xf10001df // cmp x14, #0 + WORD $0x540061ad // b.le LBB0_315 $3124(%rip) + WORD $0xad02c3f0 // stp q16, q16, [sp, #80] + WORD $0xad01c3f0 // stp q16, q16, [sp, #48] + WORD $0x92402ec8 // and x8, x22, #0xfff + WORD $0xf13f051f // cmp x8, #4033 + WORD $0x54000383 // b.lo LBB0_211 $112(%rip) + WORD $0xf9400be8 // ldr x8, [sp, #16] + WORD $0xf1008110 // subs x16, x8, #32 + WORD $0x540000a3 // b.lo LBB0_203 $20(%rip) + WORD $0xacc152d3 // ldp q19, q20, [x22], #32 + WORD $0xad01d3f3 // stp q19, q20, [sp, #48] + WORD $0xf94013e8 // ldr x8, [sp, #32] + WORD $0x14000003 // b LBB0_204 $12(%rip) +LBB0_203: + WORD $0x9100c3e8 // add x8, sp, #48 + WORD $0xf9400bf0 // ldr x16, [sp, #16] +LBB0_204: + WORD $0xf1004202 // subs x2, x16, #16 + WORD $0x54000343 // b.lo LBB0_212 $104(%rip) + WORD $0x3cc106d3 // ldr q19, [x22], #16 + WORD $0x3c810513 // str q19, [x8], #16 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1002042 // subs x2, x2, #8 + WORD $0x540002e2 // b.hs LBB0_213 $92(%rip) +LBB0_206: + WORD $0xf1001202 // subs x2, x16, #4 + WORD $0x54000343 // b.lo LBB0_214 $104(%rip) +LBB0_207: + WORD $0xb84046ce // ldr w14, [x22], #4 + WORD $0xb800450e // str w14, [x8], #4 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1000842 // subs x2, x2, #2 + WORD $0x540002e2 // b.hs LBB0_215 $92(%rip) +LBB0_208: + WORD $0xb4000070 // cbz x16, LBB0_210 $12(%rip) +LBB0_209: + WORD $0x394002ce // ldrb w14, [x22] + WORD $0x3900010e // strb w14, [x8] +LBB0_210: + WORD $0x9100c3f6 // add x22, sp, #48 +LBB0_211: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf9400fe3 // ldr x3, [sp, #24] + WORD $0x1400000f // b LBB0_216 $60(%rip) +LBB0_212: + WORD $0xf1002202 // subs x2, x16, #8 + WORD $0x54fffd63 // b.lo LBB0_206 $-84(%rip) +LBB0_213: + WORD $0xf84086ce // ldr x14, [x22], #8 + WORD $0xf800850e // str x14, [x8], #8 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1001042 // subs x2, x2, #4 + WORD $0x54fffd02 // b.hs LBB0_207 $-96(%rip) +LBB0_214: + WORD $0xf1000a02 // subs x2, x16, #2 + WORD $0x54fffd63 // b.lo LBB0_208 $-84(%rip) +LBB0_215: + WORD $0x784026ce // ldrh w14, [x22], #2 + WORD $0x7800250e // strh w14, [x8], #2 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xb5fffd02 // cbnz x2, LBB0_209 $-96(%rip) + WORD $0x17ffffe9 // b LBB0_210 $-92(%rip) +LBB0_216: + WORD $0xad4056d6 // ldp q22, q21, [x22] + WORD $0xad414ed4 // ldp q20, q19, [x22, #32] WORD $0x6e238ed7 // cmeq.16b v23, v22, v3 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -834,23 +1169,23 @@ LBB0_175: WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f020f // orr x15, x16, x15 - WORD $0xaa0e01e2 // orr x2, x15, x14 - WORD $0xaa19004e // orr x14, x2, x25 - WORD $0xb500008e // cbnz x14, LBB0_177 $16(%rip) - WORD $0xd2800019 // mov x25, #0 - WORD $0xd2800002 // mov x2, #0 - WORD $0x1400000a // b LBB0_178 $40(%rip) -LBB0_177: - WORD $0x8a39004e // bic x14, x2, x25 - WORD $0xaa0e072f // orr x15, x25, x14, lsl #1 - WORD $0x8a2f0050 // bic x16, x2, x15 + WORD $0xaa0e01f0 // orr x16, x15, x14 + WORD $0xaa1a020e // orr x14, x16, x26 + WORD $0xb500008e // cbnz x14, LBB0_218 $16(%rip) + WORD $0xd280001a // mov x26, #0 + WORD $0xd2800010 // mov x16, #0 + WORD $0x1400000a // b LBB0_219 $40(%rip) +LBB0_218: + WORD $0x8a3a020e // bic x14, x16, x26 + WORD $0xaa0e074f // orr x15, x26, x14, lsl #1 + WORD $0x8a2f0210 // bic x16, x16, x15 WORD $0x9201f210 // and x16, x16, #0xaaaaaaaaaaaaaaaa WORD $0xab0e020e // adds x14, x16, x14 - WORD $0x1a9f37f9 // cset w25, hs + WORD $0x1a9f37fa // cset w26, hs WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 - WORD $0x8a0f01c2 // and x2, x14, x15 -LBB0_178: + WORD $0x8a0f01d0 // and x16, x14, x15 +LBB0_219: WORD $0x6e208ed7 // cmeq.16b v23, v22, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -865,68 +1200,65 @@ LBB0_178: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e208e77 // cmeq.16b v23, v19, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a2201ce // bic x14, x14, x2 + WORD $0x8a3001ce // bic x14, x14, x16 WORD $0x9200e1cf // and x15, x14, #0x1111111111111111 WORD $0x9203e1d0 // and x16, x14, #0x2222222222222222 WORD $0x9202e1d1 // and x17, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f4 // mov x20, #1229782938247303441 - WORD $0x9b147de2 // mul x2, x15, x20 - WORD $0xb201e3e4 // mov x4, #-8608480567731124088 - WORD $0xf2e11104 // movk x4, #2184, lsl #48 - WORD $0x9b047e05 // mul x5, x16, x4 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb202e3e7 // mov x7, #4919131752989213764 - WORD $0xf2e08887 // movk x7, #1092, lsl #48 + WORD $0xb200e3f9 // mov x25, #1229782938247303441 + WORD $0x9b197de2 // mul x2, x15, x25 + WORD $0x9b077e04 // mul x4, x16, x7 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0x9b147e24 // mul x4, x17, x20 + WORD $0xb203e3e5 // mov x5, #2459565876494606882 + WORD $0xf2e04445 // movk x5, #546, lsl #48 + WORD $0x9b057dc5 // mul x5, x14, x5 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0xb203e3fb // mov x27, #2459565876494606882 + WORD $0x9b1b7de4 // mul x4, x15, x27 + WORD $0x9b197e05 // mul x5, x16, x25 + WORD $0xca050084 // eor x4, x4, x5 WORD $0x9b077e25 // mul x5, x17, x7 - WORD $0xb203e3e6 // mov x6, #2459565876494606882 - WORD $0xf2e04446 // movk x6, #546, lsl #48 - WORD $0x9b067dc6 // mul x6, x14, x6 + WORD $0x9b147dc6 // mul x6, x14, x20 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7de5 // mul x5, x15, lr - WORD $0x9b147e06 // mul x6, x16, x20 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0x9b147de5 // mul x5, x15, x20 + WORD $0x9b1b7e06 // mul x6, x16, x27 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0x9b047e26 // mul x6, x17, x4 + WORD $0x9b197e26 // mul x6, x17, x25 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 WORD $0x9b077dc7 // mul x7, x14, x7 WORD $0xca0700c6 // eor x6, x6, x7 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xb202e3f8 // mov x24, #4919131752989213764 - WORD $0x9b187de6 // mul x6, x15, x24 - WORD $0x9b1e7e07 // mul x7, x16, lr - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0x9b147e27 // mul x7, x17, x20 - WORD $0x9b047dd3 // mul x19, x14, x4 - WORD $0xca1300e7 // eor x7, x7, x19 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0xb201e3e4 // mov x4, #-8608480567731124088 - WORD $0x9b047def // mul x15, x15, x4 - WORD $0x9b187e10 // mul x16, x16, x24 + WORD $0x9b087def // mul x15, x15, x8 + WORD $0x9b147e10 // mul x16, x16, x20 WORD $0xca1001ef // eor x15, x15, x16 - WORD $0x9b1e7e30 // mul x16, x17, lr - WORD $0x9b147dce // mul x14, x14, x20 + WORD $0x9b1b7e30 // mul x16, x17, x27 + WORD $0x9b197dce // mul x14, x14, x25 WORD $0xca0e020e // eor x14, x16, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e04f // and x15, x2, #0x1111111111111111 - WORD $0x9203e0b0 // and x16, x5, #0x2222222222222222 - WORD $0x9202e0d1 // and x17, x6, #0x4444444444444444 + WORD $0x9203e090 // and x16, x4, #0x2222222222222222 + WORD $0x9202e0b1 // and x17, x5, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1001ef // orr x15, x15, x16 WORD $0xaa0e022e // orr x14, x17, x14 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xca1b01d3 // eor x19, x14, x27 + WORD $0xca1301d0 // eor x16, x14, x19 WORD $0x6e318ed7 // cmeq.16b v23, v22, v17 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -941,18 +1273,18 @@ LBB0_178: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e318e77 // cmeq.16b v23, v19, v17 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a3301d4 // bic x20, x14, x19 + WORD $0x8a3001d4 // bic x20, x14, x16 WORD $0x6e328ed6 // cmeq.16b v22, v22, v18 WORD $0x4e211ed6 // and.16b v22, v22, v1 WORD $0x4e0202d6 // tbl.16b v22, { v22 }, v2 @@ -967,241 +1299,311 @@ LBB0_178: WORD $0x4e211e94 // and.16b v20, v20, v1 WORD $0x4e020294 // tbl.16b v20, { v20 }, v2 WORD $0x4e71ba94 // addv.8h h20, v20 - WORD $0x1e260290 // fmov w16, s20 + WORD $0x1e260291 // fmov w17, s20 WORD $0x6e328e73 // cmeq.16b v19, v19, v18 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260271 // fmov w17, s19 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e260262 // fmov w2, s19 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xea3301c2 // bics x2, x14, x19 - WORD $0x54ffe9a0 // b.eq LBB0_173 $-716(%rip) -LBB0_179: - WORD $0xd1000447 // sub x7, x2, #1 - WORD $0x8a1400ee // and x14, x7, x20 + WORD $0xea3001c4 // bics x4, x14, x16 + WORD $0x54000220 // b.eq LBB0_223 $68(%rip) + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_221: + WORD $0xd1000482 // sub x2, x4, #1 + WORD $0x8a14004e // and x14, x2, x20 WORD $0x9e6701d3 // fmov d19, x14 WORD $0x0e205a73 // cnt.8b v19, v19 WORD $0x2e303a73 // uaddlv.8b h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1601ce // add x14, x14, x22 - WORD $0xeb1701df // cmp x14, x23 - WORD $0x54003429 // b.ls LBB0_243 $1668(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xea0200e2 // ands x2, x7, x2 - WORD $0x54fffea1 // b.ne LBB0_179 $-44(%rip) - WORD $0x17ffff40 // b LBB0_173 $-768(%rip) -LBB0_181: - WORD $0xf100035f // cmp x26, #0 - WORD $0x540058ad // b.le LBB0_306 $2836(%rip) - WORD $0xad0243f0 // stp q16, q16, [sp, #64] - WORD $0xad0143f0 // stp q16, q16, [sp, #32] - WORD $0x92402ea8 // and x8, x21, #0xfff - WORD $0xf13f051f // cmp x8, #4033 - WORD $0x54000363 // b.lo LBB0_193 $108(%rip) - WORD $0xf1008353 // subs x19, x26, #32 - WORD $0x540000a3 // b.lo LBB0_185 $20(%rip) - WORD $0xacc152b3 // ldp q19, q20, [x21], #32 - WORD $0xad0153f3 // stp q19, q20, [sp, #32] - WORD $0xf9400be8 // ldr x8, [sp, #16] - WORD $0x14000003 // b LBB0_186 $12(%rip) -LBB0_185: - WORD $0x910083e8 // add x8, sp, #32 - WORD $0xaa1a03f3 // mov x19, x26 -LBB0_186: - WORD $0xf1004262 // subs x2, x19, #16 - WORD $0x54000283 // b.lo LBB0_194 $80(%rip) - WORD $0x3cc106b3 // ldr q19, [x21], #16 - WORD $0x3c810513 // str q19, [x8], #16 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1002042 // subs x2, x2, #8 - WORD $0x54000222 // b.hs LBB0_195 $68(%rip) -LBB0_188: - WORD $0xf1001262 // subs x2, x19, #4 - WORD $0x54000283 // b.lo LBB0_196 $80(%rip) -LBB0_189: - WORD $0xb84046ae // ldr w14, [x21], #4 - WORD $0xb800450e // str w14, [x8], #4 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1000842 // subs x2, x2, #2 - WORD $0x54000222 // b.hs LBB0_197 $68(%rip) -LBB0_190: - WORD $0xb4000073 // cbz x19, LBB0_192 $12(%rip) -LBB0_191: - WORD $0x394002ae // ldrb w14, [x21] - WORD $0x3900010e // strb w14, [x8] -LBB0_192: - WORD $0x910083f5 // add x21, sp, #32 -LBB0_193: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0xa940afe3 // ldp x3, x11, [sp, #8] - WORD $0x17ffff26 // b LBB0_175 $-872(%rip) -LBB0_194: - WORD $0xf1002262 // subs x2, x19, #8 - WORD $0x54fffe23 // b.lo LBB0_188 $-60(%rip) -LBB0_195: - WORD $0xf84086ae // ldr x14, [x21], #8 - WORD $0xf800850e // str x14, [x8], #8 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1001042 // subs x2, x2, #4 - WORD $0x54fffdc2 // b.hs LBB0_189 $-72(%rip) -LBB0_196: - WORD $0xf1000a62 // subs x2, x19, #2 - WORD $0x54fffe23 // b.lo LBB0_190 $-60(%rip) -LBB0_197: - WORD $0x784026ae // ldrh w14, [x21], #2 - WORD $0x7800250e // strh w14, [x8], #2 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffdc2 // cbnz x2, LBB0_191 $-72(%rip) - WORD $0x17ffffef // b LBB0_192 $-68(%rip) -LBB0_198: - WORD $0x8b1b02b0 // add x16, x21, x27 - WORD $0x1400000b // b LBB0_203 $44(%rip) -LBB0_199: - WORD $0x910012c2 // add x2, x22, #4 -LBB0_200: + WORD $0x8b1701ce // add x14, x14, x23 + WORD $0xeb1801df // cmp x14, x24 + WORD $0x54003749 // b.ls LBB0_294 $1768(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xea040044 // ands x4, x2, x4 + WORD $0x54fffea1 // b.ne LBB0_221 $-44(%rip) + WORD $0x14000003 // b LBB0_224 $12(%rip) +LBB0_223: + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_224: + WORD $0x937ffe13 // asr x19, x16, #63 + WORD $0x9e670293 // fmov d19, x20 + WORD $0x0e205a73 // cnt.8b v19, v19 + WORD $0x2e303a73 // uaddlv.8b h19, v19 + WORD $0x1e26026e // fmov w14, s19 + WORD $0x8b1701d7 // add x23, x14, x23 + WORD $0x910102d6 // add x22, x22, #64 + WORD $0xaa0a03ee // mov x14, x10 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf101014a // subs x10, x10, #64 + WORD $0xf9000bee // str x14, [sp, #16] + WORD $0x54ffe76a // b.ge LBB0_216 $-788(%rip) + WORD $0x17ffff01 // b LBB0_199 $-1020(%rip) +LBB0_225: + WORD $0x340001d0 // cbz w16, LBB0_232 $56(%rip) + WORD $0x71008a1f // cmp w16, #34 + WORD $0x54000b20 // b.eq LBB0_258 $356(%rip) + WORD $0x7100b61f // cmp w16, #45 + WORD $0x54ffd540 // b.eq LBB0_177 $-1368(%rip) + WORD $0x14000007 // b LBB0_231 $28(%rip) +LBB0_228: + WORD $0x71016e1f // cmp w16, #91 + WORD $0x54001280 // b.eq LBB0_267 $592(%rip) + WORD $0x71019a1f // cmp w16, #102 + WORD $0x54000061 // b.ne LBB0_231 $12(%rip) + WORD $0x91001670 // add x16, x19, #5 + WORD $0x14000047 // b LBB0_255 $284(%rip) +LBB0_231: + WORD $0xf9000033 // str x19, [x1] + WORD $0xaa1303f9 // mov x25, x19 +LBB0_232: + WORD $0xa9404016 // ldp x22, x16, [x0] + WORD $0xeb10033f // cmp x25, x16 + WORD $0x54000162 // b.hs LBB0_237 $44(%rip) + WORD $0x38796ac2 // ldrb w2, [x22, x25] + WORD $0x7100345f // cmp w2, #13 + WORD $0x54000100 // b.eq LBB0_237 $32(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x540000c0 // b.eq LBB0_237 $24(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000062 // b.hs LBB0_237 $12(%rip) + WORD $0xaa1903f8 // mov x24, x25 + WORD $0x14000031 // b LBB0_253 $196(%rip) +LBB0_237: + WORD $0x91000738 // add x24, x25, #1 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_241 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_241 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_241 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x540004c3 // b.lo LBB0_253 $152(%rip) +LBB0_241: + WORD $0x91000b38 // add x24, x25, #2 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_245 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_245 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_245 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000363 // b.lo LBB0_253 $108(%rip) +LBB0_245: + WORD $0x91000f38 // add x24, x25, #3 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_249 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_249 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_249 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000203 // b.lo LBB0_253 $64(%rip) +LBB0_249: + WORD $0x91001338 // add x24, x25, #4 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54016222 // b.hs LBB0_812 $11332(%rip) +LBB0_250: + WORD $0x38786ace // ldrb w14, [x22, x24] + WORD $0x710081df // cmp w14, #32 + WORD $0x9ace218e // lsl x14, x12, x14 + WORD $0x8a0d01ce // and x14, x14, x13 + WORD $0xfa4099c4 // ccmp x14, #0, #4, ls + WORD $0x540000a0 // b.eq LBB0_252 $20(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xeb18021f // cmp x16, x24 + WORD $0x54ffff01 // b.ne LBB0_250 $-32(%rip) + WORD $0x14000b8f // b LBB0_842 $11836(%rip) +LBB0_252: + WORD $0xeb10031f // cmp x24, x16 + WORD $0x540171a2 // b.hs LBB0_842 $11828(%rip) +LBB0_253: + WORD $0x91000713 // add x19, x24, #1 + WORD $0xf9000033 // str x19, [x1] + WORD $0x38786ad0 // ldrb w16, [x22, x24] + WORD $0x7100b21f // cmp w16, #44 + WORD $0x54ff73c0 // b.eq LBB0_29 $-4488(%rip) + WORD $0x14000b85 // b LBB0_841 $11796(%rip) +LBB0_254: + WORD $0x91001270 // add x16, x19, #4 +LBB0_255: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xeb0e005f // cmp x2, x14 - WORD $0x54ffd8a8 // b.hi LBB0_151 $-1260(%rip) - WORD $0xf9000022 // str x2, [x1] - WORD $0xaa0203f8 // mov x24, x2 - WORD $0x17fffec2 // b LBB0_151 $-1272(%rip) -LBB0_202: - WORD $0xd2800019 // mov x25, #0 - WORD $0x9280001e // mov lr, #-1 - WORD $0xaa1603f0 // mov x16, x22 -LBB0_203: - WORD $0xf100827b // subs x27, x19, #32 - WORD $0x54004903 // b.lo LBB0_289 $2336(%rip) - WORD $0xad405213 // ldp q19, q20, [x16] - WORD $0x6e208e75 // cmeq.16b v21, v19, v0 - WORD $0x6e208e96 // cmeq.16b v22, v20, v0 - WORD $0x6e238e73 // cmeq.16b v19, v19, v3 - WORD $0x6e238e94 // cmeq.16b v20, v20, v3 - WORD $0x4e211eb5 // and.16b v21, v21, v1 - WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 - WORD $0x4e71bab5 // addv.8h h21, v21 - WORD $0x1e2602b3 // fmov w19, s21 - WORD $0x4e211ed5 // and.16b v21, v22, v1 - WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 - WORD $0x4e71bab5 // addv.8h h21, v21 - WORD $0x1e2602ae // fmov w14, s21 - WORD $0x4e211e73 // and.16b v19, v19, v1 - WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 - WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260262 // fmov w2, s19 - WORD $0x4e211e93 // and.16b v19, v20, v1 - WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 - WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e26026f // fmov w15, s19 - WORD $0x33103dd3 // bfi w19, w14, #16, #16 - WORD $0x33103de2 // bfi w2, w15, #16, #16 - WORD $0x35004642 // cbnz w2, LBB0_290 $2248(%rip) - WORD $0xb50046f9 // cbnz x25, LBB0_291 $2268(%rip) - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0xb4004873 // cbz x19, LBB0_292 $2316(%rip) -LBB0_207: - WORD $0xdac0026e // rbit x14, x19 - WORD $0xdac011ce // clz x14, x14 - WORD $0xcb15020f // sub x15, x16, x21 - WORD $0x8b0e01ee // add x14, x15, x14 + WORD $0xeb0e021f // cmp x16, x14 + WORD $0x54fff748 // b.hi LBB0_232 $-280(%rip) + WORD $0xf9000030 // str x16, [x1] + WORD $0xaa1003f9 // mov x25, x16 + WORD $0x17ffffb7 // b LBB0_232 $-292(%rip) +LBB0_257: + WORD $0x8b10026e // add x14, x19, x16 WORD $0x910005d9 // add x25, x14, #1 - WORD $0x17fffd6c // b LBB0_61 $-2640(%rip) -LBB0_208: + WORD $0x17ffffb4 // b LBB0_232 $-304(%rip) +LBB0_258: WORD $0xf9400402 // ldr x2, [x0, #8] - WORD $0xcb180053 // sub x19, x2, x24 - WORD $0xf100827f // cmp x19, #32 - WORD $0x540043eb // b.lt LBB0_288 $2172(%rip) - WORD $0xd2800013 // mov x19, #0 - WORD $0xd2800019 // mov x25, #0 - WORD $0x8b1602b7 // add x23, x21, x22 - WORD $0xcb160054 // sub x20, x2, x22 + WORD $0xcb190050 // sub x16, x2, x25 + WORD $0xf100821f // cmp x16, #32 + WORD $0x54002b6b // b.lt LBB0_297 $1388(%rip) + WORD $0xd2800010 // mov x16, #0 + WORD $0xd2800018 // mov x24, #0 + WORD $0x8b1302d7 // add x23, x22, x19 + WORD $0xcb130054 // sub x20, x2, x19 WORD $0x528003fa // mov w26, #31 -LBB0_210: - WORD $0x8b1302ee // add x14, x23, x19 +LBB0_260: + WORD $0x8b1002ee // add x14, x23, x16 WORD $0x3cc011d3 // ldur q19, [x14, #1] WORD $0x3cc111d4 // ldur q20, [x14, #17] WORD $0x6e208e75 // cmeq.16b v21, v19, v0 WORD $0x4e211eb5 // and.16b v21, v21, v1 WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 WORD $0x4e71bab5 // addv.8h h21, v21 - WORD $0x1e2602a2 // fmov w2, s21 + WORD $0x1e2602a4 // fmov w4, s21 WORD $0x6e208e95 // cmeq.16b v21, v20, v0 WORD $0x4e211eb5 // and.16b v21, v21, v1 WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 WORD $0x4e71bab5 // addv.8h h21, v21 WORD $0x1e2602ae // fmov w14, s21 - WORD $0x33103dc2 // bfi w2, w14, #16, #16 + WORD $0x33103dc4 // bfi w4, w14, #16, #16 WORD $0x6e238e73 // cmeq.16b v19, v19, v3 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260267 // fmov w7, s19 + WORD $0x1e260262 // fmov w2, s19 WORD $0x6e238e93 // cmeq.16b v19, v20, v3 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x33103dc7 // bfi w7, w14, #16, #16 - WORD $0x710000ff // cmp w7, #0 - WORD $0xfa400b20 // ccmp x25, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_212 $48(%rip) - WORD $0x0a3900ee // bic w14, w7, w25 - WORD $0x2a0e072f // orr w15, w25, w14, lsl #1 - WORD $0x0a0400f0 // and w16, w7, w4 - WORD $0x0a2f0210 // bic w16, w16, w15 - WORD $0x2b0e020e // adds w14, w16, w14 - WORD $0x1a9f37f9 // cset w25, hs - WORD $0x4a0e062e // eor w14, w17, w14, lsl #1 + WORD $0x33103dc2 // bfi w2, w14, #16, #16 + WORD $0x7100005f // cmp w2, #0 + WORD $0xfa400b00 // ccmp x24, #0, #0, eq + WORD $0x54000180 // b.eq LBB0_262 $48(%rip) + WORD $0x0a38004e // bic w14, w2, w24 + WORD $0x2a0e070f // orr w15, w24, w14, lsl #1 + WORD $0x0a060051 // and w17, w2, w6 + WORD $0x0a2f0231 // bic w17, w17, w15 + WORD $0x2b0e022e // adds w14, w17, w14 + WORD $0x1a9f37f8 // cset w24, hs + WORD $0x4a0e04ae // eor w14, w5, w14, lsl #1 WORD $0x0a0f01ce // and w14, w14, w15 WORD $0x2a2e03ee // mvn w14, w14 - WORD $0x8a0201c2 // and x2, x14, x2 - WORD $0x14000002 // b LBB0_213 $8(%rip) -LBB0_212: - WORD $0xd2800019 // mov x25, #0 -LBB0_213: - WORD $0xb50022a2 // cbnz x2, LBB0_244 $1108(%rip) - WORD $0x91008273 // add x19, x19, #32 + WORD $0x8a0401c4 // and x4, x14, x4 + WORD $0x14000002 // b LBB0_263 $8(%rip) +LBB0_262: + WORD $0xd2800018 // mov x24, #0 +LBB0_263: + WORD $0xb50024c4 // cbnz x4, LBB0_295 $1176(%rip) + WORD $0x91008210 // add x16, x16, #32 WORD $0xd100835a // sub x26, x26, #32 WORD $0x8b1a028e // add x14, x20, x26 WORD $0xf100fddf // cmp x14, #63 - WORD $0x54fffa6c // b.gt LBB0_210 $-180(%rip) - WORD $0xb5004619 // cbnz x25, LBB0_307 $2240(%rip) - WORD $0x8b1602a8 // add x8, x21, x22 - WORD $0x8b130108 // add x8, x8, x19 + WORD $0x54fffa6c // b.gt LBB0_260 $-180(%rip) + WORD $0xb5002fd8 // cbnz x24, LBB0_316 $1528(%rip) + WORD $0x8b1302c8 // add x8, x22, x19 + WORD $0x8b100108 // add x8, x8, x16 WORD $0x91000508 // add x8, x8, #1 - WORD $0xaa3303ee // mvn x14, x19 - WORD $0x8b1401d3 // add x19, x14, x20 - WORD $0xf100067f // cmp x19, #1 - WORD $0x5400472a // b.ge LBB0_310 $2276(%rip) - WORD $0x14000246 // b LBB0_315 $2328(%rip) -LBB0_217: - WORD $0xd280001b // mov x27, #0 - WORD $0xd2800019 // mov x25, #0 - WORD $0xd2800016 // mov x22, #0 + WORD $0xaa3003ee // mvn x14, x16 + WORD $0x8b1401d0 // add x16, x14, x20 + WORD $0xf100061f // cmp x16, #1 + WORD $0x540030ea // b.ge LBB0_319 $1564(%rip) + WORD $0x14000194 // b LBB0_324 $1616(%rip) +LBB0_267: + WORD $0xd2800013 // mov x19, #0 + WORD $0xd280001a // mov x26, #0 WORD $0xd2800017 // mov x23, #0 + WORD $0xd2800018 // mov x24, #0 WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801da // sub x26, x14, x24 - WORD $0x8b1802b5 // add x21, x21, x24 - WORD $0x14000009 // b LBB0_219 $36(%rip) -LBB0_218: - WORD $0x937ffe7b // asr x27, x19, #63 - WORD $0x9e670293 // fmov d19, x20 - WORD $0x0e205a73 // cnt.8b v19, v19 - WORD $0x2e303a73 // uaddlv.8b h19, v19 - WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1601d6 // add x22, x14, x22 - WORD $0x910102b5 // add x21, x21, #64 - WORD $0xaa0a03fa // mov x26, x10 -LBB0_219: - WORD $0xf101034a // subs x10, x26, #64 - WORD $0x5400170b // b.lt LBB0_226 $736(%rip) -LBB0_220: - WORD $0xad4056b6 // ldp q22, q21, [x21] - WORD $0xad414eb4 // ldp q20, q19, [x21, #32] + WORD $0xcb1901ce // sub x14, x14, x25 + WORD $0x8b1902d6 // add x22, x22, x25 + WORD $0xf10101ca // subs x10, x14, #64 + WORD $0xf9000bee // str x14, [sp, #16] + WORD $0x5400074a // b.ge LBB0_285 $232(%rip) +LBB0_268: + WORD $0xf10001df // cmp x14, #0 + WORD $0x54002d0d // b.le LBB0_315 $1440(%rip) + WORD $0xad02c3f0 // stp q16, q16, [sp, #80] + WORD $0xad01c3f0 // stp q16, q16, [sp, #48] + WORD $0x92402ec8 // and x8, x22, #0xfff + WORD $0xf13f051f // cmp x8, #4033 + WORD $0x54000383 // b.lo LBB0_280 $112(%rip) + WORD $0xf9400be8 // ldr x8, [sp, #16] + WORD $0xf1008110 // subs x16, x8, #32 + WORD $0x540000a3 // b.lo LBB0_272 $20(%rip) + WORD $0xacc152d3 // ldp q19, q20, [x22], #32 + WORD $0xad01d3f3 // stp q19, q20, [sp, #48] + WORD $0xf94013e8 // ldr x8, [sp, #32] + WORD $0x14000003 // b LBB0_273 $12(%rip) +LBB0_272: + WORD $0x9100c3e8 // add x8, sp, #48 + WORD $0xf9400bf0 // ldr x16, [sp, #16] +LBB0_273: + WORD $0xf1004202 // subs x2, x16, #16 + WORD $0x54000343 // b.lo LBB0_281 $104(%rip) + WORD $0x3cc106d3 // ldr q19, [x22], #16 + WORD $0x3c810513 // str q19, [x8], #16 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1002042 // subs x2, x2, #8 + WORD $0x540002e2 // b.hs LBB0_282 $92(%rip) +LBB0_275: + WORD $0xf1001202 // subs x2, x16, #4 + WORD $0x54000343 // b.lo LBB0_283 $104(%rip) +LBB0_276: + WORD $0xb84046ce // ldr w14, [x22], #4 + WORD $0xb800450e // str w14, [x8], #4 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1000842 // subs x2, x2, #2 + WORD $0x540002e2 // b.hs LBB0_284 $92(%rip) +LBB0_277: + WORD $0xb4000070 // cbz x16, LBB0_279 $12(%rip) +LBB0_278: + WORD $0x394002ce // ldrb w14, [x22] + WORD $0x3900010e // strb w14, [x8] +LBB0_279: + WORD $0x9100c3f6 // add x22, sp, #48 +LBB0_280: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf9400fe3 // ldr x3, [sp, #24] + WORD $0x1400000f // b LBB0_285 $60(%rip) +LBB0_281: + WORD $0xf1002202 // subs x2, x16, #8 + WORD $0x54fffd63 // b.lo LBB0_275 $-84(%rip) +LBB0_282: + WORD $0xf84086ce // ldr x14, [x22], #8 + WORD $0xf800850e // str x14, [x8], #8 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1001042 // subs x2, x2, #4 + WORD $0x54fffd02 // b.hs LBB0_276 $-96(%rip) +LBB0_283: + WORD $0xf1000a02 // subs x2, x16, #2 + WORD $0x54fffd63 // b.lo LBB0_277 $-84(%rip) +LBB0_284: + WORD $0x784026ce // ldrh w14, [x22], #2 + WORD $0x7800250e // strh w14, [x8], #2 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xb5fffd02 // cbnz x2, LBB0_278 $-96(%rip) + WORD $0x17ffffe9 // b LBB0_279 $-92(%rip) +LBB0_285: + WORD $0xad4056d6 // ldp q22, q21, [x22] + WORD $0xad414ed4 // ldp q20, q19, [x22, #32] WORD $0x6e238ed7 // cmeq.16b v23, v22, v3 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -1226,23 +1628,23 @@ LBB0_220: WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f020f // orr x15, x16, x15 - WORD $0xaa0e01e2 // orr x2, x15, x14 - WORD $0xaa19004e // orr x14, x2, x25 - WORD $0xb500008e // cbnz x14, LBB0_222 $16(%rip) - WORD $0xd2800019 // mov x25, #0 - WORD $0xd2800002 // mov x2, #0 - WORD $0x1400000a // b LBB0_223 $40(%rip) -LBB0_222: - WORD $0x8a39004e // bic x14, x2, x25 - WORD $0xaa0e072f // orr x15, x25, x14, lsl #1 - WORD $0x8a2f0050 // bic x16, x2, x15 + WORD $0xaa0e01f0 // orr x16, x15, x14 + WORD $0xaa1a020e // orr x14, x16, x26 + WORD $0xb500008e // cbnz x14, LBB0_287 $16(%rip) + WORD $0xd280001a // mov x26, #0 + WORD $0xd2800010 // mov x16, #0 + WORD $0x1400000a // b LBB0_288 $40(%rip) +LBB0_287: + WORD $0x8a3a020e // bic x14, x16, x26 + WORD $0xaa0e074f // orr x15, x26, x14, lsl #1 + WORD $0x8a2f0210 // bic x16, x16, x15 WORD $0x9201f210 // and x16, x16, #0xaaaaaaaaaaaaaaaa WORD $0xab0e020e // adds x14, x16, x14 - WORD $0x1a9f37f9 // cset w25, hs + WORD $0x1a9f37fa // cset w26, hs WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 - WORD $0x8a0f01c2 // and x2, x14, x15 -LBB0_223: + WORD $0x8a0f01d0 // and x16, x14, x15 +LBB0_288: WORD $0x6e208ed7 // cmeq.16b v23, v22, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -1257,68 +1659,65 @@ LBB0_223: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e208e77 // cmeq.16b v23, v19, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a2201ce // bic x14, x14, x2 + WORD $0x8a3001ce // bic x14, x14, x16 WORD $0x9200e1cf // and x15, x14, #0x1111111111111111 WORD $0x9203e1d0 // and x16, x14, #0x2222222222222222 WORD $0x9202e1d1 // and x17, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f4 // mov x20, #1229782938247303441 - WORD $0x9b147de2 // mul x2, x15, x20 - WORD $0xb201e3e4 // mov x4, #-8608480567731124088 - WORD $0xf2e11104 // movk x4, #2184, lsl #48 - WORD $0x9b047e05 // mul x5, x16, x4 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb202e3e7 // mov x7, #4919131752989213764 - WORD $0xf2e08887 // movk x7, #1092, lsl #48 + WORD $0xb200e3f9 // mov x25, #1229782938247303441 + WORD $0x9b197de2 // mul x2, x15, x25 + WORD $0x9b077e04 // mul x4, x16, x7 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0x9b147e24 // mul x4, x17, x20 + WORD $0xb203e3e5 // mov x5, #2459565876494606882 + WORD $0xf2e04445 // movk x5, #546, lsl #48 + WORD $0x9b057dc5 // mul x5, x14, x5 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0xb203e3fb // mov x27, #2459565876494606882 + WORD $0x9b1b7de4 // mul x4, x15, x27 + WORD $0x9b197e05 // mul x5, x16, x25 + WORD $0xca050084 // eor x4, x4, x5 WORD $0x9b077e25 // mul x5, x17, x7 - WORD $0xb203e3e6 // mov x6, #2459565876494606882 - WORD $0xf2e04446 // movk x6, #546, lsl #48 - WORD $0x9b067dc6 // mul x6, x14, x6 + WORD $0x9b147dc6 // mul x6, x14, x20 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7de5 // mul x5, x15, lr - WORD $0x9b147e06 // mul x6, x16, x20 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0x9b147de5 // mul x5, x15, x20 + WORD $0x9b1b7e06 // mul x6, x16, x27 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0x9b047e26 // mul x6, x17, x4 + WORD $0x9b197e26 // mul x6, x17, x25 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 WORD $0x9b077dc7 // mul x7, x14, x7 WORD $0xca0700c6 // eor x6, x6, x7 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xb202e3f8 // mov x24, #4919131752989213764 - WORD $0x9b187de6 // mul x6, x15, x24 - WORD $0x9b1e7e07 // mul x7, x16, lr - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0x9b147e27 // mul x7, x17, x20 - WORD $0x9b047dd3 // mul x19, x14, x4 - WORD $0xca1300e7 // eor x7, x7, x19 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0xb201e3e4 // mov x4, #-8608480567731124088 - WORD $0x9b047def // mul x15, x15, x4 - WORD $0x9b187e10 // mul x16, x16, x24 + WORD $0x9b087def // mul x15, x15, x8 + WORD $0x9b147e10 // mul x16, x16, x20 WORD $0xca1001ef // eor x15, x15, x16 - WORD $0x9b1e7e30 // mul x16, x17, lr - WORD $0x9b147dce // mul x14, x14, x20 + WORD $0x9b1b7e30 // mul x16, x17, x27 + WORD $0x9b197dce // mul x14, x14, x25 WORD $0xca0e020e // eor x14, x16, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e04f // and x15, x2, #0x1111111111111111 - WORD $0x9203e0b0 // and x16, x5, #0x2222222222222222 - WORD $0x9202e0d1 // and x17, x6, #0x4444444444444444 + WORD $0x9203e090 // and x16, x4, #0x2222222222222222 + WORD $0x9202e0b1 // and x17, x5, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1001ef // orr x15, x15, x16 WORD $0xaa0e022e // orr x14, x17, x14 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xca1b01d3 // eor x19, x14, x27 + WORD $0xca1301d0 // eor x16, x14, x19 WORD $0x6e278ed7 // cmeq.16b v23, v22, v7 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -1333,18 +1732,18 @@ LBB0_223: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e278e77 // cmeq.16b v23, v19, v7 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a3301d4 // bic x20, x14, x19 + WORD $0x8a3001d4 // bic x20, x14, x16 WORD $0x6e268ed6 // cmeq.16b v22, v22, v6 WORD $0x4e211ed6 // and.16b v22, v22, v1 WORD $0x4e0202d6 // tbl.16b v22, { v22 }, v2 @@ -1359,643 +1758,396 @@ LBB0_223: WORD $0x4e211e94 // and.16b v20, v20, v1 WORD $0x4e020294 // tbl.16b v20, { v20 }, v2 WORD $0x4e71ba94 // addv.8h h20, v20 - WORD $0x1e260290 // fmov w16, s20 + WORD $0x1e260291 // fmov w17, s20 WORD $0x6e268e73 // cmeq.16b v19, v19, v6 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260271 // fmov w17, s19 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e260262 // fmov w2, s19 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xea3301c2 // bics x2, x14, x19 - WORD $0x54ffe9a0 // b.eq LBB0_218 $-716(%rip) -LBB0_224: - WORD $0xd1000447 // sub x7, x2, #1 - WORD $0x8a1400ee // and x14, x7, x20 + WORD $0xea3001c4 // bics x4, x14, x16 + WORD $0x54000220 // b.eq LBB0_292 $68(%rip) + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_290: + WORD $0xd1000482 // sub x2, x4, #1 + WORD $0x8a14004e // and x14, x2, x20 WORD $0x9e6701d3 // fmov d19, x14 WORD $0x0e205a73 // cnt.8b v19, v19 WORD $0x2e303a73 // uaddlv.8b h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1601ce // add x14, x14, x22 - WORD $0xeb1701df // cmp x14, x23 - WORD $0x540006e9 // b.ls LBB0_243 $220(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xea0200e2 // ands x2, x7, x2 - WORD $0x54fffea1 // b.ne LBB0_224 $-44(%rip) - WORD $0x17ffff40 // b LBB0_218 $-768(%rip) -LBB0_226: - WORD $0xf100035f // cmp x26, #0 - WORD $0x54002b6d // b.le LBB0_306 $1388(%rip) - WORD $0xad0243f0 // stp q16, q16, [sp, #64] - WORD $0xad0143f0 // stp q16, q16, [sp, #32] - WORD $0x92402ea8 // and x8, x21, #0xfff - WORD $0xf13f051f // cmp x8, #4033 - WORD $0x54000363 // b.lo LBB0_238 $108(%rip) - WORD $0xf1008353 // subs x19, x26, #32 - WORD $0x540000a3 // b.lo LBB0_230 $20(%rip) - WORD $0xacc152b3 // ldp q19, q20, [x21], #32 - WORD $0xad0153f3 // stp q19, q20, [sp, #32] - WORD $0xf9400be8 // ldr x8, [sp, #16] - WORD $0x14000003 // b LBB0_231 $12(%rip) -LBB0_230: - WORD $0x910083e8 // add x8, sp, #32 - WORD $0xaa1a03f3 // mov x19, x26 -LBB0_231: - WORD $0xf1004262 // subs x2, x19, #16 - WORD $0x54000283 // b.lo LBB0_239 $80(%rip) - WORD $0x3cc106b3 // ldr q19, [x21], #16 - WORD $0x3c810513 // str q19, [x8], #16 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1002042 // subs x2, x2, #8 - WORD $0x54000222 // b.hs LBB0_240 $68(%rip) -LBB0_233: - WORD $0xf1001262 // subs x2, x19, #4 - WORD $0x54000283 // b.lo LBB0_241 $80(%rip) -LBB0_234: - WORD $0xb84046ae // ldr w14, [x21], #4 - WORD $0xb800450e // str w14, [x8], #4 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1000842 // subs x2, x2, #2 - WORD $0x54000222 // b.hs LBB0_242 $68(%rip) -LBB0_235: - WORD $0xb4000073 // cbz x19, LBB0_237 $12(%rip) -LBB0_236: - WORD $0x394002ae // ldrb w14, [x21] - WORD $0x3900010e // strb w14, [x8] -LBB0_237: - WORD $0x910083f5 // add x21, sp, #32 -LBB0_238: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0xa940afe3 // ldp x3, x11, [sp, #8] - WORD $0x17ffff26 // b LBB0_220 $-872(%rip) -LBB0_239: - WORD $0xf1002262 // subs x2, x19, #8 - WORD $0x54fffe23 // b.lo LBB0_233 $-60(%rip) -LBB0_240: - WORD $0xf84086ae // ldr x14, [x21], #8 - WORD $0xf800850e // str x14, [x8], #8 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1001042 // subs x2, x2, #4 - WORD $0x54fffdc2 // b.hs LBB0_234 $-72(%rip) -LBB0_241: - WORD $0xf1000a62 // subs x2, x19, #2 - WORD $0x54fffe23 // b.lo LBB0_235 $-60(%rip) -LBB0_242: - WORD $0x784026ae // ldrh w14, [x21], #2 - WORD $0x7800250e // strh w14, [x8], #2 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffdc2 // cbnz x2, LBB0_236 $-72(%rip) - WORD $0x17ffffef // b LBB0_237 $-68(%rip) -LBB0_243: + WORD $0x8b1701ce // add x14, x14, x23 + WORD $0xeb1801df // cmp x14, x24 + WORD $0x540002a9 // b.ls LBB0_294 $84(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xea040044 // ands x4, x2, x4 + WORD $0x54fffea1 // b.ne LBB0_290 $-44(%rip) + WORD $0x14000003 // b LBB0_293 $12(%rip) +LBB0_292: + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_293: + WORD $0x937ffe13 // asr x19, x16, #63 + WORD $0x9e670293 // fmov d19, x20 + WORD $0x0e205a73 // cnt.8b v19, v19 + WORD $0x2e303a73 // uaddlv.8b h19, v19 + WORD $0x1e26026e // fmov w14, s19 + WORD $0x8b1701d7 // add x23, x14, x23 + WORD $0x910102d6 // add x22, x22, #64 + WORD $0xaa0a03ee // mov x14, x10 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf101014a // subs x10, x10, #64 + WORD $0xf9000bee // str x14, [sp, #16] + WORD $0x54ffe76a // b.ge LBB0_285 $-788(%rip) + WORD $0x17ffff01 // b LBB0_268 $-1020(%rip) +LBB0_294: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xdac0004f // rbit x15, x2 + WORD $0xdac0008f // rbit x15, x4 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1a01ef // sub x15, x15, x26 + WORD $0xf9400bea // ldr x10, [sp, #16] + WORD $0xcb0a01ef // sub x15, x15, x10 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005cf // add x15, x14, #1 WORD $0xf900002f // str x15, [x1] WORD $0xf9400410 // ldr x16, [x0, #8] WORD $0xeb1001ff // cmp x15, x16 - WORD $0x9a8e2618 // csinc x24, x16, x14, hs - WORD $0x14000006 // b LBB0_245 $24(%rip) -LBB0_244: - WORD $0xdac0004e // rbit x14, x2 + WORD $0x9a8e2619 // csinc x25, x16, x14, hs + WORD $0xf9000039 // str x25, [x1] + WORD $0x17fffe5d // b LBB0_232 $-1676(%rip) +LBB0_295: + WORD $0xdac0008e // rbit x14, x4 WORD $0xdac011ce // clz x14, x14 - WORD $0x8b1302cf // add x15, x22, x19 + WORD $0x8b10026f // add x15, x19, x16 WORD $0x8b0f01ce // add x14, x14, x15 - WORD $0x910009d8 // add x24, x14, #2 -LBB0_245: - WORD $0xf9000038 // str x24, [x1] - WORD $0xf9400ff0 // ldr x16, [sp, #24] - WORD $0x17fffd4e // b LBB0_151 $-2760(%rip) -LBB0_246: - WORD $0xf9000038 // str x24, [x1] - WORD $0x17fffd4c // b LBB0_151 $-2768(%rip) -LBB0_247: - WORD $0xf90013ff // str xzr, [sp, #32] - WORD $0x8b1902a8 // add x8, x21, x25 - WORD $0xd1000517 // sub x23, x8, #1 - WORD $0x8b1a031b // add x27, x24, x26 - WORD $0xeb1702df // cmp x22, x23 - WORD $0x54001882 // b.hs LBB0_285 $784(%rip) - WORD $0xf100075f // cmp x26, #1 - WORD $0x5400184b // b.lt LBB0_285 $776(%rip) -LBB0_249: - WORD $0x394002c8 // ldrb w8, [x22] - WORD $0x7101711f // cmp w8, #92 - WORD $0x540001e1 // b.ne LBB0_254 $60(%rip) - WORD $0xcb1602f4 // sub x20, x23, x22 - WORD $0xf100069f // cmp x20, #1 - WORD $0x5401a7cb // b.lt LBB0_935 $13560(%rip) - WORD $0x394006c8 // ldrb w8, [x22, #1] -Lloh10: - WORD $0x1001adee // adr x14, __UnquoteTab $13756(%rip) -Lloh11: - WORD $0x910001ce // add x14, x14, __UnquoteTab@PAGEOFF $0(%rip) - WORD $0x386869c8 // ldrb w8, [x14, x8] - WORD $0x7103fd1f // cmp w8, #255 - WORD $0x54000180 // b.eq LBB0_256 $48(%rip) - WORD $0x3401a668 // cbz w8, LBB0_933 $13516(%rip) - WORD $0x390083e8 // strb w8, [sp, #32] - WORD $0x91000ad6 // add x22, x22, #2 - WORD $0x52800028 // mov w8, #1 - WORD $0x14000045 // b LBB0_265 $276(%rip) -LBB0_254: - WORD $0x3940030e // ldrb w14, [x24] - WORD $0x6b0e011f // cmp w8, w14 - WORD $0x540016a1 // b.ne LBB0_287 $724(%rip) - WORD $0x910006d6 // add x22, x22, #1 - WORD $0x91000718 // add x24, x24, #1 - WORD $0x14000050 // b LBB0_271 $320(%rip) -LBB0_256: - WORD $0xf100129f // cmp x20, #4 - WORD $0x5401a543 // b.lo LBB0_934 $13480(%rip) - WORD $0xb84022c8 // ldur w8, [x22, #2] - WORD $0x0b0a010e // add w14, w8, w10 - WORD $0x3201c3ef // mov w15, #-2139062144 - WORD $0x0a2801e2 // bic w2, w15, w8 - WORD $0x6a0e005f // tst w2, w14 - WORD $0x5401a3c1 // b.ne LBB0_931 $13432(%rip) - WORD $0x5283232e // mov w14, #6425 - WORD $0x72a3232e // movk w14, #6425, lsl #16 - WORD $0x0b0e010e // add w14, w8, w14 - WORD $0x2a0801ce // orr w14, w14, w8 - WORD $0x3201c3f0 // mov w16, #-2139062144 - WORD $0x6a0f01df // tst w14, w15 - WORD $0x5401a2e1 // b.ne LBB0_931 $13404(%rip) - WORD $0x3200dbee // mov w14, #2139062143 - WORD $0x0a0e0107 // and w7, w8, w14 - WORD $0x4b07006e // sub w14, w3, w7 - WORD $0x5288c8cf // mov w15, #17990 - WORD $0x72a8c8cf // movk w15, #17990, lsl #16 - WORD $0x0b0f00ef // add w15, w7, w15 - WORD $0x0a0e01ee // and w14, w15, w14 - WORD $0x6a0201df // tst w14, w2 - WORD $0x5401a1c1 // b.ne LBB0_931 $13368(%rip) - WORD $0x4b07016e // sub w14, w11, w7 - WORD $0x5287272f // mov w15, #14649 - WORD $0x72a7272f // movk w15, #14649, lsl #16 - WORD $0x0b0f00ef // add w15, w7, w15 - WORD $0x0a0e01ee // and w14, w15, w14 - WORD $0x6a0201df // tst w14, w2 - WORD $0x5401a0e1 // b.ne LBB0_931 $13340(%rip) - WORD $0x5ac00908 // rev w8, w8 - WORD $0x3200c3ee // mov w14, #16843009 - WORD $0x0a6811ce // bic w14, w14, w8, lsr #4 - WORD $0x0b0e0dce // add w14, w14, w14, lsl #3 - WORD $0x3200cfef // mov w15, #252645135 - WORD $0x0a0f0108 // and w8, w8, w15 - WORD $0x0b0801c8 // add w8, w14, w8 - WORD $0x2a481108 // orr w8, w8, w8, lsr #4 - WORD $0x53087d0e // lsr w14, w8, #8 - WORD $0x12181dc2 // and w2, w14, #0xff00 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0x33001d13 // bfxil w19, w8, #0, #8 - WORD $0x91001ada // add x26, x22, #6 - WORD $0x7101fe7f // cmp w19, #127 - WORD $0x540004e9 // b.ls LBB0_273 $156(%rip) - WORD $0x711ffe7f // cmp w19, #2047 - WORD $0x54000529 // b.ls LBB0_274 $164(%rip) - WORD $0x5140384e // sub w14, w2, #14, lsl #12 - WORD $0x312005df // cmn w14, #2049 - WORD $0x540005e8 // b.hi LBB0_275 $188(%rip) - WORD $0x530c7c4e // lsr w14, w2, #12 - WORD $0x321b09ce // orr w14, w14, #0xe0 - WORD $0x390083ee // strb w14, [sp, #32] - WORD $0x5280100e // mov w14, #128 - WORD $0x33062e6e // bfxil w14, w19, #6, #6 - WORD $0x390087ee // strb w14, [sp, #33] - WORD $0x5280100e // mov w14, #128 - WORD $0x3300150e // bfxil w14, w8, #0, #6 - WORD $0x39008bee // strb w14, [sp, #34] - WORD $0xaa1a03f6 // mov x22, x26 - WORD $0x52800068 // mov w8, #3 -LBB0_265: - WORD $0x910083e2 // add x2, sp, #32 - WORD $0xaa080048 // orr x8, x2, x8 - WORD $0xeb1b031f // cmp x24, x27 - WORD $0x54000182 // b.hs LBB0_270 $48(%rip) - WORD $0x910083e2 // add x2, sp, #32 -LBB0_267: - WORD $0x3940030e // ldrb w14, [x24] - WORD $0x3940004f // ldrb w15, [x2] - WORD $0x6b0f01df // cmp w14, w15 - WORD $0x540000e1 // b.ne LBB0_270 $28(%rip) - WORD $0x91000718 // add x24, x24, #1 - WORD $0x91000442 // add x2, x2, #1 - WORD $0xeb1b031f // cmp x24, x27 - WORD $0x54000062 // b.hs LBB0_270 $12(%rip) - WORD $0xeb08005f // cmp x2, x8 - WORD $0x54fffee3 // b.lo LBB0_267 $-36(%rip) -LBB0_270: - WORD $0xeb08005f // cmp x2, x8 - WORD $0x54000c61 // b.ne LBB0_287 $396(%rip) -LBB0_271: - WORD $0xeb1702df // cmp x22, x23 - WORD $0x54000b42 // b.hs LBB0_285 $360(%rip) - WORD $0xeb1b031f // cmp x24, x27 - WORD $0x54fff2e3 // b.lo LBB0_249 $-420(%rip) - WORD $0x14000057 // b LBB0_285 $348(%rip) -LBB0_273: - WORD $0x390083e8 // strb w8, [sp, #32] - WORD $0xaa1a03f6 // mov x22, x26 - WORD $0x52800028 // mov w8, #1 - WORD $0x17ffffe7 // b LBB0_265 $-100(%rip) -LBB0_274: - WORD $0x53067e6e // lsr w14, w19, #6 - WORD $0x321a05ce // orr w14, w14, #0xc0 - WORD $0x390083ee // strb w14, [sp, #32] - WORD $0x5280100e // mov w14, #128 - WORD $0x3300150e // bfxil w14, w8, #0, #6 - WORD $0x390087ee // strb w14, [sp, #33] - WORD $0xaa1a03f6 // mov x22, x26 - WORD $0x52800048 // mov w8, #2 - WORD $0x17ffffde // b LBB0_265 $-136(%rip) -LBB0_275: - WORD $0x92800068 // mov x8, #-4 - WORD $0xf1001a9f // cmp x20, #6 - WORD $0x54019ec3 // b.lo LBB0_948 $13272(%rip) - WORD $0x530a7e6e // lsr w14, w19, #10 - WORD $0x7100d9df // cmp w14, #54 - WORD $0x54019e68 // b.hi LBB0_948 $13260(%rip) - WORD $0x39400348 // ldrb w8, [x26] - WORD $0x7101711f // cmp w8, #92 - WORD $0x54019da1 // b.ne LBB0_947 $13236(%rip) - WORD $0x39401ec8 // ldrb w8, [x22, #7] - WORD $0x7101d51f // cmp w8, #117 - WORD $0x54019d41 // b.ne LBB0_947 $13224(%rip) - WORD $0xb9400ac8 // ldr w8, [x22, #8] - WORD $0x0b0a010e // add w14, w8, w10 - WORD $0x0a280202 // bic w2, w16, w8 - WORD $0x6a0e005f // tst w2, w14 - WORD $0x54019c61 // b.ne LBB0_946 $13196(%rip) - WORD $0x5283232e // mov w14, #6425 - WORD $0x72a3232e // movk w14, #6425, lsl #16 - WORD $0x0b0e010e // add w14, w8, w14 - WORD $0x2a0801ce // orr w14, w14, w8 - WORD $0x6a1001df // tst w14, w16 - WORD $0x54019ba1 // b.ne LBB0_946 $13172(%rip) - WORD $0x3200dbee // mov w14, #2139062143 - WORD $0x0a0e0107 // and w7, w8, w14 - WORD $0x4b07006e // sub w14, w3, w7 - WORD $0x5288c8cf // mov w15, #17990 - WORD $0x72a8c8cf // movk w15, #17990, lsl #16 - WORD $0x0b0f00ef // add w15, w7, w15 - WORD $0x0a0e01ee // and w14, w15, w14 - WORD $0x6a0201df // tst w14, w2 - WORD $0x54019a81 // b.ne LBB0_946 $13136(%rip) - WORD $0x4b07016e // sub w14, w11, w7 - WORD $0x5287272f // mov w15, #14649 - WORD $0x72a7272f // movk w15, #14649, lsl #16 - WORD $0x0b0f00ef // add w15, w7, w15 - WORD $0x0a0e01ee // and w14, w15, w14 - WORD $0x6a0201df // tst w14, w2 - WORD $0x540199a1 // b.ne LBB0_946 $13108(%rip) - WORD $0x5ac00908 // rev w8, w8 - WORD $0x3200c3ee // mov w14, #16843009 - WORD $0x0a6811ce // bic w14, w14, w8, lsr #4 - WORD $0x0b0e0dce // add w14, w14, w14, lsl #3 - WORD $0x3200cfef // mov w15, #252645135 - WORD $0x0a0f0108 // and w8, w8, w15 - WORD $0x0b0801c8 // add w8, w14, w8 - WORD $0x2a481108 // orr w8, w8, w8, lsr #4 - WORD $0x53087d0e // lsr w14, w8, #8 - WORD $0x12181dc2 // and w2, w14, #0xff00 - WORD $0x5140384e // sub w14, w2, #14, lsl #12 - WORD $0x311001df // cmn w14, #1024 - WORD $0x540198e3 // b.lo LBB0_949 $13084(%rip) - WORD $0x12001d0e // and w14, w8, #0xff - WORD $0x2a1329ce // orr w14, w14, w19, lsl #10 - WORD $0x5284800f // mov w15, #9216 - WORD $0x72bf940f // movk w15, #64672, lsl #16 - WORD $0x0b0f004f // add w15, w2, w15 - WORD $0x0b0f01ce // add w14, w14, w15 - WORD $0x53127dcf // lsr w15, w14, #18 - WORD $0x321c0def // orr w15, w15, #0xf0 - WORD $0x390083ef // strb w15, [sp, #32] - WORD $0x5280100f // mov w15, #128 - WORD $0x330c45cf // bfxil w15, w14, #12, #6 - WORD $0x390087ef // strb w15, [sp, #33] - WORD $0x5280100f // mov w15, #128 - WORD $0x33062dcf // bfxil w15, w14, #6, #6 - WORD $0x39008bef // strb w15, [sp, #34] - WORD $0x5280100e // mov w14, #128 - WORD $0x3300150e // bfxil w14, w8, #0, #6 - WORD $0x39008fee // strb w14, [sp, #35] - WORD $0x910032d6 // add x22, x22, #12 - WORD $0x52800088 // mov w8, #4 - WORD $0x17ffff95 // b LBB0_265 $-428(%rip) -LBB0_285: - WORD $0xeb1702df // cmp x22, x23 - WORD $0xfa5b0300 // ccmp x24, x27, #0, eq - WORD $0x1a9f17f3 // cset w19, eq -LBB0_286: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17fffb74 // b LBB0_71 $-4656(%rip) -LBB0_287: - WORD $0xd2800013 // mov x19, #0 - WORD $0x17fffffb // b LBB0_286 $-20(%rip) -LBB0_288: - WORD $0x8b1802a8 // add x8, x21, x24 - WORD $0xf100067f // cmp x19, #1 - WORD $0x54000a6a // b.ge LBB0_310 $332(%rip) - WORD $0x14000060 // b LBB0_315 $384(%rip) -LBB0_289: - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x14000017 // b LBB0_293 $92(%rip) -LBB0_290: - WORD $0xdac00048 // rbit x8, x2 + WORD $0x910009d9 // add x25, x14, #2 +LBB0_296: + WORD $0xf9000039 // str x25, [x1] + WORD $0x17fffe56 // b LBB0_232 $-1704(%rip) +LBB0_297: + WORD $0x8b1902c8 // add x8, x22, x25 + WORD $0xf100061f // cmp x16, #1 + WORD $0x54000caa // b.ge LBB0_319 $404(%rip) + WORD $0x14000072 // b LBB0_324 $456(%rip) +LBB0_298: + WORD $0xf94013eb // ldr x11, [sp, #32] + WORD $0x1400001b // b LBB0_302 $108(%rip) +LBB0_299: + WORD $0xdac00088 // rbit x8, x4 WORD $0xdac01108 // clz x8, x8 - WORD $0xcb15020e // sub x14, x16, x21 + WORD $0xcb16022e // sub x14, x17, x22 WORD $0x8b0801c8 // add x8, x14, x8 - WORD $0xb10007df // cmn lr, #1 - WORD $0x9a8813de // csel lr, lr, x8, ne -LBB0_291: - WORD $0x0a390048 // bic w8, w2, w25 + WORD $0xb100067f // cmn x19, #1 + WORD $0x9a881273 // csel x19, x19, x8, ne +LBB0_300: + WORD $0x0a3a0088 // bic w8, w4, w26 WORD $0x531f790e // lsl w14, w8, #1 - WORD $0x331f7919 // bfi w25, w8, #1, #31 - WORD $0x0a2e004e // bic w14, w2, w14 + WORD $0x331f791a // bfi w26, w8, #1, #31 + WORD $0x0a2e008e // bic w14, w4, w14 WORD $0x1201f1ce // and w14, w14, #0xaaaaaaaa WORD $0x2b0801c8 // adds w8, w14, w8 - WORD $0x4a080488 // eor w8, w4, w8, lsl #1 - WORD $0x0a190108 // and w8, w8, w25 - WORD $0x1a9f37f9 // cset w25, hs + WORD $0x4a080568 // eor w8, w11, w8, lsl #1 + WORD $0x0a1a0108 // and w8, w8, w26 + WORD $0x1a9f37fa // cset w26, hs WORD $0x2a2803e8 // mvn w8, w8 - WORD $0x8a130113 // and x19, x8, x19 - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0xb5ffb7f3 // cbnz x19, LBB0_207 $-2308(%rip) -LBB0_292: - WORD $0x91008210 // add x16, x16, #32 - WORD $0xaa1b03f3 // mov x19, x27 -LBB0_293: - WORD $0xb50003b9 // cbnz x25, LBB0_304 $116(%rip) - WORD $0xb4000333 // cbz x19, LBB0_302 $100(%rip) -LBB0_295: - WORD $0xaa3503ee // mvn x14, x21 -LBB0_296: - WORD $0xaa1003fb // mov x27, x16 - WORD $0x38401779 // ldrb w25, [x27], #1 - WORD $0x71008b3f // cmp w25, #34 - WORD $0x540002a0 // b.eq LBB0_303 $84(%rip) - WORD $0xd1000662 // sub x2, x19, #1 - WORD $0x7101733f // cmp w25, #92 - WORD $0x540000a0 // b.eq LBB0_299 $20(%rip) - WORD $0xaa1b03f0 // mov x16, x27 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffee2 // cbnz x2, LBB0_296 $-36(%rip) - WORD $0x1400000b // b LBB0_301 $44(%rip) -LBB0_299: - WORD $0xb4017f22 // cbz x2, LBB0_909 $12260(%rip) - WORD $0x8b0e0368 // add x8, x27, x14 - WORD $0xb10007df // cmn lr, #1 - WORD $0x9a9e011e // csel lr, x8, lr, eq - WORD $0x91000a10 // add x16, x16, #2 - WORD $0xd1000a62 // sub x2, x19, #2 - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffd82 // cbnz x2, LBB0_296 $-80(%rip) + WORD $0x8a140114 // and x20, x8, x20 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xf94013eb // ldr x11, [sp, #32] + WORD $0xb5ff6c54 // cbnz x20, LBB0_91 $-4728(%rip) LBB0_301: - WORD $0x71008b3f // cmp w25, #34 - WORD $0x54017dc1 // b.ne LBB0_909 $12216(%rip) + WORD $0x91008231 // add x17, x17, #32 + WORD $0xaa1e03f4 // mov x20, lr LBB0_302: - WORD $0xaa1003fb // mov x27, x16 -LBB0_303: - WORD $0xcb150379 // sub x25, x27, x21 - WORD $0x17fffb11 // b LBB0_61 $-5052(%rip) + WORD $0xb50004da // cbnz x26, LBB0_313 $152(%rip) + WORD $0xb40003b4 // cbz x20, LBB0_311 $116(%rip) LBB0_304: - WORD $0xb4017d53 // cbz x19, LBB0_909 $12200(%rip) - WORD $0xaa3503e8 // mvn x8, x21 - WORD $0x8b080208 // add x8, x16, x8 - WORD $0xb10007df // cmn lr, #1 - WORD $0x9a9e011e // csel lr, x8, lr, eq - WORD $0x91000610 // add x16, x16, #1 - WORD $0xd1000673 // sub x19, x19, #1 - WORD $0x529fffe8 // mov w8, #65535 - WORD $0xb5fffbb3 // cbnz x19, LBB0_295 $-140(%rip) - WORD $0x17fffff4 // b LBB0_302 $-48(%rip) -LBB0_306: - WORD $0xf9400418 // ldr x24, [x0, #8] - WORD $0x1400001e // b LBB0_314 $120(%rip) -LBB0_307: + WORD $0xaa3603ee // mvn x14, x22 +LBB0_305: + WORD $0xaa1103fe // mov lr, x17 + WORD $0x384017da // ldrb w26, [lr], #1 + WORD $0x71008b5f // cmp w26, #34 + WORD $0x54000320 // b.eq LBB0_312 $100(%rip) + WORD $0xd1000684 // sub x4, x20, #1 + WORD $0x7101735f // cmp w26, #92 + WORD $0x540000a0 // b.eq LBB0_308 $20(%rip) + WORD $0xaa1e03f1 // mov x17, lr + WORD $0xaa0403f4 // mov x20, x4 + WORD $0xb5fffee4 // cbnz x4, LBB0_305 $-36(%rip) + WORD $0x1400000f // b LBB0_310 $60(%rip) +LBB0_308: + WORD $0xb4018e24 // cbz x4, LBB0_925 $12740(%rip) + WORD $0x8b0e03c8 // add x8, lr, x14 + WORD $0xb100067f // cmn x19, #1 + WORD $0x9a930113 // csel x19, x8, x19, eq + WORD $0x91000a31 // add x17, x17, #2 + WORD $0xd1000a84 // sub x4, x20, #2 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xf94013eb // ldr x11, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xaa0403f4 // mov x20, x4 + WORD $0xb5fffd04 // cbnz x4, LBB0_305 $-96(%rip) +LBB0_310: + WORD $0x71008b5f // cmp w26, #34 + WORD $0x54018c41 // b.ne LBB0_925 $12680(%rip) +LBB0_311: + WORD $0xaa1103fe // mov lr, x17 +LBB0_312: + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xcb1603da // sub x26, lr, x22 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xf94017fe // ldr lr, [sp, #40] + WORD $0xb6ff537a // tbz x26, #63, LBB0_61 $-5524(%rip) + WORD $0x14000c5a // b LBB0_925 $12648(%rip) +LBB0_313: + WORD $0xb4018b34 // cbz x20, LBB0_925 $12644(%rip) + WORD $0xaa3603e8 // mvn x8, x22 + WORD $0x8b080228 // add x8, x17, x8 + WORD $0xb100067f // cmn x19, #1 + WORD $0x9a930113 // csel x19, x8, x19, eq + WORD $0x91000631 // add x17, x17, #1 + WORD $0xd1000694 // sub x20, x20, #1 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xf94013eb // ldr x11, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb5fff9f4 // cbnz x20, LBB0_304 $-196(%rip) + WORD $0x17ffffea // b LBB0_311 $-88(%rip) +LBB0_315: + WORD $0xf9400419 // ldr x25, [x0, #8] + WORD $0x1400001e // b LBB0_323 $120(%rip) +LBB0_316: WORD $0xd1000688 // sub x8, x20, #1 - WORD $0xeb13011f // cmp x8, x19 - WORD $0x54000380 // b.eq LBB0_315 $112(%rip) - WORD $0x8b1602a8 // add x8, x21, x22 - WORD $0x8b130108 // add x8, x8, x19 + WORD $0xeb10011f // cmp x8, x16 + WORD $0x54000380 // b.eq LBB0_324 $112(%rip) + WORD $0x8b1302c8 // add x8, x22, x19 + WORD $0x8b100108 // add x8, x8, x16 WORD $0x91000908 // add x8, x8, #2 - WORD $0xcb13028e // sub x14, x20, x19 - WORD $0xd10009d3 // sub x19, x14, #2 - WORD $0xf100067f // cmp x19, #1 - WORD $0x540000ea // b.ge LBB0_310 $28(%rip) - WORD $0x14000014 // b LBB0_315 $80(%rip) -LBB0_309: + WORD $0xcb10028e // sub x14, x20, x16 + WORD $0xd10009d0 // sub x16, x14, #2 + WORD $0xf100061f // cmp x16, #1 + WORD $0x540000ea // b.ge LBB0_319 $28(%rip) + WORD $0x14000014 // b LBB0_324 $80(%rip) +LBB0_318: WORD $0x92800022 // mov x2, #-2 - WORD $0x52800047 // mov w7, #2 - WORD $0x8b070108 // add x8, x8, x7 - WORD $0xab020273 // adds x19, x19, x2 - WORD $0x540001ed // b.le LBB0_315 $60(%rip) -LBB0_310: + WORD $0x52800044 // mov w4, #2 + WORD $0x8b040108 // add x8, x8, x4 + WORD $0xab020210 // adds x16, x16, x2 + WORD $0x540001ed // b.le LBB0_324 $60(%rip) +LBB0_319: WORD $0x39400102 // ldrb w2, [x8] WORD $0x7101705f // cmp w2, #92 - WORD $0x54ffff20 // b.eq LBB0_309 $-28(%rip) + WORD $0x54ffff20 // b.eq LBB0_318 $-28(%rip) WORD $0x7100885f // cmp w2, #34 - WORD $0x540000e0 // b.eq LBB0_313 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_322 $28(%rip) WORD $0x92800002 // mov x2, #-1 - WORD $0x52800027 // mov w7, #1 - WORD $0x8b070108 // add x8, x8, x7 - WORD $0xab020273 // adds x19, x19, x2 - WORD $0x54fffeec // b.gt LBB0_310 $-36(%rip) - WORD $0x14000004 // b LBB0_315 $16(%rip) -LBB0_313: - WORD $0xcb150108 // sub x8, x8, x21 - WORD $0x91000518 // add x24, x8, #1 -LBB0_314: - WORD $0xf9000038 // str x24, [x1] -LBB0_315: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0xa94143eb // ldp x11, x16, [sp, #16] - WORD $0xf94007e3 // ldr x3, [sp, #8] - WORD $0x17fffc13 // b LBB0_151 $-4020(%rip) -LBB0_316: - WORD $0x71016c5f // cmp w2, #91 - WORD $0x54012781 // b.ne LBB0_827 $9456(%rip) - WORD $0xf9400522 // ldr x2, [x9, #8] - WORD $0xf9400056 // ldr x22, [x2] - WORD $0xb7f91936 // tbnz x22, #63, LBB0_799 $8996(%rip) - WORD $0xf9400413 // ldr x19, [x0, #8] - WORD $0xeb13033f // cmp x25, x19 - WORD $0x54000162 // b.hs LBB0_323 $44(%rip) - WORD $0x38796aa2 // ldrb w2, [x21, x25] + WORD $0x52800024 // mov w4, #1 + WORD $0x8b040108 // add x8, x8, x4 + WORD $0xab020210 // adds x16, x16, x2 + WORD $0x54fffeec // b.gt LBB0_319 $-36(%rip) + WORD $0x14000004 // b LBB0_324 $16(%rip) +LBB0_322: + WORD $0xcb160108 // sub x8, x8, x22 + WORD $0x91000519 // add x25, x8, #1 +LBB0_323: + WORD $0xf9000039 // str x25, [x1] +LBB0_324: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xa9427beb // ldp x11, lr, [sp, #32] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xf9400fe3 // ldr x3, [sp, #24] + WORD $0x17fffdd9 // b LBB0_232 $-2204(%rip) +LBB0_325: + WORD $0x71016e1f // cmp w16, #91 + WORD $0x54013401 // b.ne LBB0_842 $9856(%rip) + WORD $0xf9400530 // ldr x16, [x9, #8] + WORD $0xf9400217 // ldr x23, [x16] + WORD $0xb7f92217 // tbnz x23, #63, LBB0_811 $9280(%rip) + WORD $0xf9400410 // ldr x16, [x0, #8] + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000162 // b.hs LBB0_332 $44(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_323 $32(%rip) + WORD $0x54000100 // b.eq LBB0_332 $32(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_323 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_332 $24(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_323 $12(%rip) - WORD $0xaa1903f7 // mov x23, x25 - WORD $0x14000033 // b LBB0_340 $204(%rip) -LBB0_323: - WORD $0x91000737 // add x23, x25, #1 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_327 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x54000062 // b.hs LBB0_332 $12(%rip) + WORD $0xaa1303f8 // mov x24, x19 + WORD $0x14000033 // b LBB0_349 $204(%rip) +LBB0_332: + WORD $0x91000678 // add x24, x19, #1 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_336 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_327 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_336 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_327 $16(%rip) + WORD $0x54000080 // b.eq LBB0_336 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000503 // b.lo LBB0_340 $160(%rip) -LBB0_327: - WORD $0x91000b37 // add x23, x25, #2 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_331 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x54000503 // b.lo LBB0_349 $160(%rip) +LBB0_336: + WORD $0x91000a78 // add x24, x19, #2 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_340 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_331 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_340 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_331 $16(%rip) + WORD $0x54000080 // b.eq LBB0_340 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x540003a3 // b.lo LBB0_340 $116(%rip) -LBB0_331: - WORD $0x91000f37 // add x23, x25, #3 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_335 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x540003a3 // b.lo LBB0_349 $116(%rip) +LBB0_340: + WORD $0x91000e78 // add x24, x19, #3 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_344 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_335 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_344 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_335 $16(%rip) + WORD $0x54000080 // b.eq LBB0_344 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000243 // b.lo LBB0_340 $72(%rip) -LBB0_335: - WORD $0x91001337 // add x23, x25, #4 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000162 // b.hs LBB0_338 $44(%rip) -LBB0_336: - WORD $0x38776aae // ldrb w14, [x21, x23] + WORD $0x54000243 // b.lo LBB0_349 $72(%rip) +LBB0_344: + WORD $0x91001278 // add x24, x19, #4 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000162 // b.hs LBB0_347 $44(%rip) +LBB0_345: + WORD $0x38786ace // ldrb w14, [x22, x24] WORD $0x710081df // cmp w14, #32 WORD $0x9ace218e // lsl x14, x12, x14 WORD $0x8a0d01ce // and x14, x14, x13 WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000e0 // b.eq LBB0_339 $28(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17027f // cmp x19, x23 - WORD $0x54ffff01 // b.ne LBB0_336 $-32(%rip) - WORD $0x1400000a // b LBB0_341 $40(%rip) -LBB0_338: - WORD $0xaa1703f9 // mov x25, x23 - WORD $0x14000008 // b LBB0_341 $32(%rip) -LBB0_339: - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x540000c2 // b.hs LBB0_341 $24(%rip) -LBB0_340: - WORD $0x910006f9 // add x25, x23, #1 - WORD $0xf9000039 // str x25, [x1] - WORD $0x38776aae // ldrb w14, [x21, x23] + WORD $0x540000e0 // b.eq LBB0_348 $28(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xeb18021f // cmp x16, x24 + WORD $0x54ffff01 // b.ne LBB0_345 $-32(%rip) + WORD $0x1400000a // b LBB0_350 $40(%rip) +LBB0_347: + WORD $0xaa1803f3 // mov x19, x24 + WORD $0x14000008 // b LBB0_350 $32(%rip) +LBB0_348: + WORD $0xeb10031f // cmp x24, x16 + WORD $0x540000c2 // b.hs LBB0_350 $24(%rip) +LBB0_349: + WORD $0x91000713 // add x19, x24, #1 + WORD $0xf9000033 // str x19, [x1] + WORD $0x38786ace // ldrb w14, [x22, x24] WORD $0x710175df // cmp w14, #93 - WORD $0x540111c0 // b.eq LBB0_802 $8760(%rip) -LBB0_341: - WORD $0xd1000738 // sub x24, x25, #1 - WORD $0xf9000038 // str x24, [x1] -LBB0_342: - WORD $0xf10006d6 // subs x22, x22, #1 - WORD $0x54006c6b // b.lt LBB0_498 $3468(%rip) - WORD $0xf9400413 // ldr x19, [x0, #8] - WORD $0xeb13031f // cmp x24, x19 - WORD $0x54000162 // b.hs LBB0_348 $44(%rip) - WORD $0x38786aa2 // ldrb w2, [x21, x24] + WORD $0x54011aa0 // b.eq LBB0_814 $9044(%rip) +LBB0_350: + WORD $0xd1000679 // sub x25, x19, #1 + WORD $0xf9000039 // str x25, [x1] +LBB0_351: + WORD $0xf10006f7 // subs x23, x23, #1 + WORD $0x5400754b // b.lt LBB0_510 $3752(%rip) + WORD $0xf9400410 // ldr x16, [x0, #8] + WORD $0xeb10033f // cmp x25, x16 + WORD $0x54000162 // b.hs LBB0_357 $44(%rip) + WORD $0x38796ac2 // ldrb w2, [x22, x25] WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_348 $32(%rip) + WORD $0x54000100 // b.eq LBB0_357 $32(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_348 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_357 $24(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_348 $12(%rip) - WORD $0xaa1803f7 // mov x23, x24 - WORD $0x14000031 // b LBB0_364 $196(%rip) -LBB0_348: - WORD $0x91000717 // add x23, x24, #1 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_352 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x54000062 // b.hs LBB0_357 $12(%rip) + WORD $0xaa1903f3 // mov x19, x25 + WORD $0x14000031 // b LBB0_373 $196(%rip) +LBB0_357: + WORD $0x91000733 // add x19, x25, #1 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_361 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_352 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_361 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_352 $16(%rip) + WORD $0x54000080 // b.eq LBB0_361 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x540004c3 // b.lo LBB0_364 $152(%rip) -LBB0_352: - WORD $0x91000b17 // add x23, x24, #2 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_356 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x540004c3 // b.lo LBB0_373 $152(%rip) +LBB0_361: + WORD $0x91000b33 // add x19, x25, #2 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_365 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_356 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_365 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_356 $16(%rip) + WORD $0x54000080 // b.eq LBB0_365 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000363 // b.lo LBB0_364 $108(%rip) -LBB0_356: - WORD $0x91000f17 // add x23, x24, #3 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_360 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] + WORD $0x54000363 // b.lo LBB0_373 $108(%rip) +LBB0_365: + WORD $0x91000f33 // add x19, x25, #3 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54000122 // b.hs LBB0_369 $36(%rip) + WORD $0x38736ac2 // ldrb w2, [x22, x19] WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_360 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_369 $24(%rip) WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_360 $16(%rip) + WORD $0x54000080 // b.eq LBB0_369 $16(%rip) WORD $0x51002c4e // sub w14, w2, #11 WORD $0x310009df // cmn w14, #2 - WORD $0x54000203 // b.lo LBB0_364 $64(%rip) -LBB0_360: - WORD $0x91001317 // add x23, x24, #4 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000c22 // b.hs LBB0_390 $388(%rip) -LBB0_361: - WORD $0x38776aae // ldrb w14, [x21, x23] + WORD $0x54000203 // b.lo LBB0_373 $64(%rip) +LBB0_369: + WORD $0x91001333 // add x19, x25, #4 + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54002fc2 // b.hs LBB0_430 $1528(%rip) +LBB0_370: + WORD $0x38736ace // ldrb w14, [x22, x19] WORD $0x710081df // cmp w14, #32 WORD $0x9ace218e // lsl x14, x12, x14 WORD $0x8a0d01ce // and x14, x14, x13 WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_363 $20(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17027f // cmp x19, x23 - WORD $0x54ffff01 // b.ne LBB0_361 $-32(%rip) - WORD $0x14000059 // b LBB0_391 $356(%rip) -LBB0_363: - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000ae2 // b.hs LBB0_391 $348(%rip) -LBB0_364: - WORD $0x910006f8 // add x24, x23, #1 - WORD $0xf9000038 // str x24, [x1] - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7101685f // cmp w2, #90 - WORD $0x5400066c // b.gt LBB0_379 $204(%rip) - WORD $0x7100bc5f // cmp w2, #47 - WORD $0x5400084d // b.le LBB0_384 $264(%rip) - WORD $0x5100c04e // sub w14, w2, #48 + WORD $0x540000a0 // b.eq LBB0_372 $20(%rip) + WORD $0x91000673 // add x19, x19, #1 + WORD $0xeb13021f // cmp x16, x19 + WORD $0x54ffff01 // b.ne LBB0_370 $-32(%rip) + WORD $0x14000176 // b LBB0_431 $1496(%rip) +LBB0_372: + WORD $0xeb10027f // cmp x19, x16 + WORD $0x54002e82 // b.hs LBB0_431 $1488(%rip) +LBB0_373: + WORD $0x91000679 // add x25, x19, #1 + WORD $0xf9000039 // str x25, [x1] + WORD $0x38736ad0 // ldrb w16, [x22, x19] + WORD $0x71016a1f // cmp w16, #90 + WORD $0x54000a2c // b.gt LBB0_393 $324(%rip) + WORD $0x7100be1f // cmp w16, #47 + WORD $0x54002bed // b.le LBB0_424 $1404(%rip) + WORD $0x5100c20e // sub w14, w16, #48 WORD $0x710029df // cmp w14, #10 - WORD $0x54000962 // b.hs LBB0_390 $300(%rip) -LBB0_367: + WORD $0x54002d02 // b.hs LBB0_430 $1440(%rip) +LBB0_376: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801d3 // sub x19, x14, x24 - WORD $0xf100427f // cmp x19, #16 - WORD $0x540001e3 // b.lo LBB0_370 $60(%rip) -LBB0_368: - WORD $0x3cf86ab3 // ldr q19, [x21, x24] + WORD $0xcb1901d0 // sub x16, x14, x25 + WORD $0xf100421f // cmp x16, #16 + WORD $0x54000223 // b.lo LBB0_380 $68(%rip) + WORD $0xd2800004 // mov x4, #0 +LBB0_378: + WORD $0x3cf96ad3 // ldr q19, [x22, x25] WORD $0x6e248e74 // cmeq.16b v20, v19, v4 WORD $0x4e251e73 // and.16b v19, v19, v5 WORD $0x6e268e73 // cmeq.16b v19, v19, v6 @@ -2004,168 +2156,162 @@ LBB0_368: WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e260262 // fmov w2, s19 - WORD $0x35000362 // cbnz w2, LBB0_378 $108(%rip) - WORD $0xd1004273 // sub x19, x19, #16 - WORD $0x91004318 // add x24, x24, #16 - WORD $0xf1003e7f // cmp x19, #15 - WORD $0x54fffe68 // b.hi LBB0_368 $-52(%rip) -LBB0_370: - WORD $0x8b1802a2 // add x2, x21, x24 - WORD $0xb40001f3 // cbz x19, LBB0_377 $60(%rip) - WORD $0x8b130054 // add x20, x2, x19 - WORD $0xcb150058 // sub x24, x2, x21 -LBB0_372: - WORD $0x39400047 // ldrb w7, [x2] - WORD $0x7100b0ff // cmp w7, #44 - WORD $0x54005a60 // b.eq LBB0_486 $2892(%rip) - WORD $0x7101f4ff // cmp w7, #125 - WORD $0x54005a20 // b.eq LBB0_486 $2884(%rip) - WORD $0x710174ff // cmp w7, #93 - WORD $0x540059e0 // b.eq LBB0_486 $2876(%rip) - WORD $0x91000442 // add x2, x2, #1 - WORD $0x91000718 // add x24, x24, #1 - WORD $0xf1000673 // subs x19, x19, #1 - WORD $0x54fffec1 // b.ne LBB0_372 $-40(%rip) - WORD $0xaa1403e2 // mov x2, x20 -LBB0_377: - WORD $0xcb150058 // sub x24, x2, x21 - WORD $0xf9000038 // str x24, [x1] - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x14000025 // b LBB0_391 $148(%rip) -LBB0_378: - WORD $0x5ac0004e // rbit w14, w2 - WORD $0x5ac011ce // clz w14, w14 - WORD $0x8b1801d8 // add x24, x14, x24 - WORD $0xf9000038 // str x24, [x1] - WORD $0x14000020 // b LBB0_391 $128(%rip) -LBB0_379: - WORD $0x7101b45f // cmp w2, #109 - WORD $0x540002cd // b.le LBB0_387 $88(%rip) - WORD $0x7101b85f // cmp w2, #110 - WORD $0x54002aa0 // b.eq LBB0_439 $1364(%rip) - WORD $0x7101d05f // cmp w2, #116 - WORD $0x54002a60 // b.eq LBB0_439 $1356(%rip) - WORD $0x7101ec5f // cmp w2, #123 - WORD $0x540002c1 // b.ne LBB0_390 $88(%rip) - WORD $0xf9000ff0 // str x16, [sp, #24] - WORD $0xd280001e // mov lr, #0 - WORD $0xd280001a // mov x26, #0 - WORD $0xd2800017 // mov x23, #0 - WORD $0xd2800019 // mov x25, #0 - WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801ce // sub x14, x14, x24 - WORD $0x8b1802b5 // add x21, x21, x24 - WORD $0x1400005a // b LBB0_414 $360(%rip) -LBB0_384: - WORD $0x340001c2 // cbz w2, LBB0_391 $56(%rip) - WORD $0x7100885f // cmp w2, #34 - WORD $0x54002980 // b.eq LBB0_442 $1328(%rip) - WORD $0x7100b45f // cmp w2, #45 - WORD $0x54fff7c0 // b.eq LBB0_367 $-264(%rip) - WORD $0x14000007 // b LBB0_390 $28(%rip) + WORD $0x350004c2 // cbnz w2, LBB0_388 $152(%rip) + WORD $0xd1004210 // sub x16, x16, #16 + WORD $0x91004339 // add x25, x25, #16 + WORD $0x91004084 // add x4, x4, #16 + WORD $0xf1003e1f // cmp x16, #15 + WORD $0x54fffe48 // b.hi LBB0_378 $-56(%rip) +LBB0_380: + WORD $0x8b1902d3 // add x19, x22, x25 + WORD $0xb4000250 // cbz x16, LBB0_387 $72(%rip) + WORD $0x8b100264 // add x4, x19, x16 + WORD $0xcb160279 // sub x25, x19, x22 +LBB0_382: + WORD $0x39400262 // ldrb w2, [x19] + WORD $0x7100b05f // cmp w2, #44 + WORD $0x9ac2218e // lsl x14, x12, x2 + WORD $0x8a1101ce // and x14, x14, x17 + WORD $0xfa4099c4 // ccmp x14, #0, #4, ls + WORD $0x540060a1 // b.ne LBB0_498 $3092(%rip) + WORD $0x7101f45f // cmp w2, #125 + WORD $0x54006060 // b.eq LBB0_498 $3084(%rip) + WORD $0x7101745f // cmp w2, #93 + WORD $0x54006020 // b.eq LBB0_498 $3076(%rip) + WORD $0x91000673 // add x19, x19, #1 + WORD $0x91000739 // add x25, x25, #1 + WORD $0xf1000610 // subs x16, x16, #1 + WORD $0x54fffe61 // b.ne LBB0_382 $-52(%rip) + WORD $0xaa0403f3 // mov x19, x4 LBB0_387: - WORD $0x71016c5f // cmp w2, #91 - WORD $0x54003120 // b.eq LBB0_452 $1572(%rip) - WORD $0x7101985f // cmp w2, #102 - WORD $0x54000061 // b.ne LBB0_390 $12(%rip) - WORD $0x910016e2 // add x2, x23, #5 - WORD $0x1400013d // b LBB0_440 $1268(%rip) + WORD $0xcb160279 // sub x25, x19, x22 + WORD $0xf9000039 // str x25, [x1] + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x14000136 // b LBB0_431 $1240(%rip) +LBB0_388: + WORD $0x5ac0004e // rbit w14, w2 + WORD $0x5ac011d0 // clz w16, w14 + WORD $0x8b190219 // add x25, x16, x25 + WORD $0xf9000039 // str x25, [x1] + WORD $0xf100073f // cmp x25, #1 + WORD $0x5400260b // b.lt LBB0_431 $1216(%rip) + WORD $0x8b040210 // add x16, x16, x4 + WORD $0x8b1302c4 // add x4, x22, x19 LBB0_390: - WORD $0xf9000037 // str x23, [x1] - WORD $0xaa1703f8 // mov x24, x23 -LBB0_391: - WORD $0xa9404c15 // ldp x21, x19, [x0] - WORD $0xeb13031f // cmp x24, x19 - WORD $0x54000162 // b.hs LBB0_396 $44(%rip) - WORD $0x38786aa2 // ldrb w2, [x21, x24] - WORD $0x7100345f // cmp w2, #13 - WORD $0x54000100 // b.eq LBB0_396 $32(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x540000c0 // b.eq LBB0_396 $24(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000062 // b.hs LBB0_396 $12(%rip) - WORD $0xaa1803f7 // mov x23, x24 - WORD $0x14000031 // b LBB0_412 $196(%rip) -LBB0_396: - WORD $0x91000717 // add x23, x24, #1 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_400 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_400 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_400 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x540004c3 // b.lo LBB0_412 $152(%rip) -LBB0_400: - WORD $0x91000b17 // add x23, x24, #2 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_404 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_404 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_404 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000363 // b.lo LBB0_412 $108(%rip) -LBB0_404: - WORD $0x91000f17 // add x23, x24, #3 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54000122 // b.hs LBB0_408 $36(%rip) - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100345f // cmp w2, #13 - WORD $0x540000c0 // b.eq LBB0_408 $24(%rip) - WORD $0x7100805f // cmp w2, #32 - WORD $0x54000080 // b.eq LBB0_408 $16(%rip) - WORD $0x51002c4e // sub w14, w2, #11 - WORD $0x310009df // cmn w14, #2 - WORD $0x54000203 // b.lo LBB0_412 $64(%rip) -LBB0_408: - WORD $0x91001317 // add x23, x24, #4 - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x5400f842 // b.hs LBB0_800 $7944(%rip) -LBB0_409: - WORD $0x38776aae // ldrb w14, [x21, x23] + WORD $0x3870688e // ldrb w14, [x4, x16] WORD $0x710081df // cmp w14, #32 WORD $0x9ace218e // lsl x14, x12, x14 WORD $0x8a0d01ce // and x14, x14, x13 WORD $0xfa4099c4 // ccmp x14, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_411 $20(%rip) - WORD $0x910006f7 // add x23, x23, #1 - WORD $0xeb17027f // cmp x19, x23 - WORD $0x54ffff01 // b.ne LBB0_409 $-32(%rip) - WORD $0x14000823 // b LBB0_827 $8332(%rip) + WORD $0x54002e40 // b.eq LBB0_456 $1480(%rip) + WORD $0x8b10026e // add x14, x19, x16 + WORD $0xf900002e // str x14, [x1] + WORD $0xd1000610 // sub x16, x16, #1 + WORD $0x8b100262 // add x2, x19, x16 + WORD $0x9100084e // add x14, x2, #2 + WORD $0xf10005df // cmp x14, #1 + WORD $0x54fffe8c // b.gt LBB0_390 $-48(%rip) + WORD $0x91000459 // add x25, x2, #1 + WORD $0x1400011f // b LBB0_431 $1148(%rip) +LBB0_393: + WORD $0x7101b61f // cmp w16, #109 + WORD $0x540022ad // b.le LBB0_427 $1108(%rip) + WORD $0x7101ba1f // cmp w16, #110 + WORD $0x54002bc0 // b.eq LBB0_453 $1400(%rip) + WORD $0x7101d21f // cmp w16, #116 + WORD $0x54002b80 // b.eq LBB0_453 $1392(%rip) + WORD $0x7101ee1f // cmp w16, #123 + WORD $0x540022a1 // b.ne LBB0_430 $1108(%rip) + WORD $0xf90017fe // str lr, [sp, #40] + WORD $0xd2800013 // mov x19, #0 + WORD $0xd280001b // mov x27, #0 + WORD $0xd2800018 // mov x24, #0 + WORD $0xd280001a // mov x26, #0 + WORD $0xf940040e // ldr x14, [x0, #8] + WORD $0xcb1901de // sub lr, x14, x25 + WORD $0x8b1902d6 // add x22, x22, x25 + WORD $0xf10103ca // subs x10, lr, #64 + WORD $0xf90013ea // str x10, [sp, #32] + WORD $0x540006ea // b.ge LBB0_415 $220(%rip) +LBB0_398: + WORD $0xf10003df // cmp lr, #0 + WORD $0x54005bad // b.le LBB0_506 $2932(%rip) + WORD $0xad02c3f0 // stp q16, q16, [sp, #80] + WORD $0xad01c3f0 // stp q16, q16, [sp, #48] + WORD $0x92402ec8 // and x8, x22, #0xfff + WORD $0xf13f051f // cmp x8, #4033 + WORD $0x54000363 // b.lo LBB0_410 $108(%rip) + WORD $0xf10083d0 // subs x16, lr, #32 + WORD $0x540000a3 // b.lo LBB0_402 $20(%rip) + WORD $0xacc152d3 // ldp q19, q20, [x22], #32 + WORD $0xad01d3f3 // stp q19, q20, [sp, #48] + WORD $0xaa0b03e8 // mov x8, x11 + WORD $0x14000003 // b LBB0_403 $12(%rip) +LBB0_402: + WORD $0x9100c3e8 // add x8, sp, #48 + WORD $0xaa1e03f0 // mov x16, lr +LBB0_403: + WORD $0xf1004202 // subs x2, x16, #16 + WORD $0x54000303 // b.lo LBB0_411 $96(%rip) + WORD $0x3cc106d3 // ldr q19, [x22], #16 + WORD $0x3c810513 // str q19, [x8], #16 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1002042 // subs x2, x2, #8 + WORD $0x540002a2 // b.hs LBB0_412 $84(%rip) +LBB0_405: + WORD $0xf1001202 // subs x2, x16, #4 + WORD $0x54000303 // b.lo LBB0_413 $96(%rip) +LBB0_406: + WORD $0xb84046ce // ldr w14, [x22], #4 + WORD $0xb800450e // str w14, [x8], #4 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1000842 // subs x2, x2, #2 + WORD $0x540002a2 // b.hs LBB0_414 $84(%rip) +LBB0_407: + WORD $0xb4000070 // cbz x16, LBB0_409 $12(%rip) +LBB0_408: + WORD $0x394002ce // ldrb w14, [x22] + WORD $0x3900010e // strb w14, [x8] +LBB0_409: + WORD $0x9100c3f6 // add x22, sp, #48 +LBB0_410: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x1400000f // b LBB0_415 $60(%rip) LBB0_411: - WORD $0xeb1302ff // cmp x23, x19 - WORD $0x54010422 // b.hs LBB0_827 $8324(%rip) + WORD $0xf1002202 // subs x2, x16, #8 + WORD $0x54fffda3 // b.lo LBB0_405 $-76(%rip) LBB0_412: - WORD $0x910006f8 // add x24, x23, #1 - WORD $0xf9000038 // str x24, [x1] - WORD $0x38776aa2 // ldrb w2, [x21, x23] - WORD $0x7100b05f // cmp w2, #44 - WORD $0x54ffe540 // b.eq LBB0_342 $-856(%rip) - WORD $0x140007b2 // b LBB0_801 $7880(%rip) + WORD $0xf84086ce // ldr x14, [x22], #8 + WORD $0xf800850e // str x14, [x8], #8 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1001042 // subs x2, x2, #4 + WORD $0x54fffd42 // b.hs LBB0_406 $-88(%rip) LBB0_413: - WORD $0x937ffe7e // asr lr, x19, #63 - WORD $0x9e670293 // fmov d19, x20 - WORD $0x0e205a73 // cnt.8b v19, v19 - WORD $0x2e303a73 // uaddlv.8b h19, v19 - WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1701d7 // add x23, x14, x23 - WORD $0x910102b5 // add x21, x21, #64 - WORD $0xaa0a03ee // mov x14, x10 + WORD $0xf1000a02 // subs x2, x16, #2 + WORD $0x54fffda3 // b.lo LBB0_407 $-76(%rip) LBB0_414: - WORD $0xf10101ca // subs x10, x14, #64 - WORD $0xf9000bee // str x14, [sp, #16] - WORD $0x5400172b // b.lt LBB0_422 $740(%rip) + WORD $0x784026ce // ldrh w14, [x22], #2 + WORD $0x7800250e // strh w14, [x8], #2 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xb5fffd42 // cbnz x2, LBB0_408 $-88(%rip) + WORD $0x17ffffeb // b LBB0_409 $-84(%rip) LBB0_415: - WORD $0xad4056b6 // ldp q22, q21, [x21] - WORD $0xad414eb4 // ldp q20, q19, [x21, #32] + WORD $0xad4056d6 // ldp q22, q21, [x22] + WORD $0xad414ed4 // ldp q20, q19, [x22, #32] WORD $0x6e238ed7 // cmeq.16b v23, v22, v3 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -2190,22 +2336,22 @@ LBB0_415: WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f020f // orr x15, x16, x15 - WORD $0xaa0e01e2 // orr x2, x15, x14 - WORD $0xaa1a004e // orr x14, x2, x26 + WORD $0xaa0e01f0 // orr x16, x15, x14 + WORD $0xaa1b020e // orr x14, x16, x27 WORD $0xb500008e // cbnz x14, LBB0_417 $16(%rip) - WORD $0xd280001a // mov x26, #0 - WORD $0xd2800002 // mov x2, #0 + WORD $0xd280001b // mov x27, #0 + WORD $0xd2800010 // mov x16, #0 WORD $0x1400000a // b LBB0_418 $40(%rip) LBB0_417: - WORD $0x8a3a004e // bic x14, x2, x26 - WORD $0xaa0e074f // orr x15, x26, x14, lsl #1 - WORD $0x8a2f0050 // bic x16, x2, x15 + WORD $0x8a3b020e // bic x14, x16, x27 + WORD $0xaa0e076f // orr x15, x27, x14, lsl #1 + WORD $0x8a2f0210 // bic x16, x16, x15 WORD $0x9201f210 // and x16, x16, #0xaaaaaaaaaaaaaaaa WORD $0xab0e020e // adds x14, x16, x14 - WORD $0x1a9f37fa // cset w26, hs + WORD $0x1a9f37fb // cset w27, hs WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 - WORD $0x8a0f01c2 // and x2, x14, x15 + WORD $0x8a0f01d0 // and x16, x14, x15 LBB0_418: WORD $0x6e208ed7 // cmeq.16b v23, v22, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 @@ -2221,68 +2367,65 @@ LBB0_418: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e208e77 // cmeq.16b v23, v19, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a2201ce // bic x14, x14, x2 + WORD $0x8a3001ce // bic x14, x14, x16 WORD $0x9200e1cf // and x15, x14, #0x1111111111111111 WORD $0x9203e1d0 // and x16, x14, #0x2222222222222222 WORD $0x9202e1d1 // and x17, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f4 // mov x20, #1229782938247303441 - WORD $0x9b147de2 // mul x2, x15, x20 - WORD $0xb201e3f3 // mov x19, #-8608480567731124088 - WORD $0xf2e11113 // movk x19, #2184, lsl #48 - WORD $0x9b137e05 // mul x5, x16, x19 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb202e3e7 // mov x7, #4919131752989213764 - WORD $0xf2e08887 // movk x7, #1092, lsl #48 + WORD $0xb200e3ea // mov x10, #1229782938247303441 + WORD $0x9b0a7de2 // mul x2, x15, x10 + WORD $0x9b077e04 // mul x4, x16, x7 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0x9b147e24 // mul x4, x17, x20 + WORD $0xb203e3e5 // mov x5, #2459565876494606882 + WORD $0xf2e04445 // movk x5, #546, lsl #48 + WORD $0x9b057dc5 // mul x5, x14, x5 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0xb203e3f9 // mov x25, #2459565876494606882 + WORD $0x9b197de4 // mul x4, x15, x25 + WORD $0x9b0a7e05 // mul x5, x16, x10 + WORD $0xca050084 // eor x4, x4, x5 WORD $0x9b077e25 // mul x5, x17, x7 - WORD $0xb203e3e6 // mov x6, #2459565876494606882 - WORD $0xf2e04446 // movk x6, #546, lsl #48 - WORD $0x9b067dc6 // mul x6, x14, x6 + WORD $0x9b147dc6 // mul x6, x14, x20 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb203e3f8 // mov x24, #2459565876494606882 - WORD $0x9b187de5 // mul x5, x15, x24 - WORD $0x9b147e06 // mul x6, x16, x20 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0x9b147de5 // mul x5, x15, x20 + WORD $0x9b197e06 // mul x6, x16, x25 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0x9b137e26 // mul x6, x17, x19 + WORD $0x9b0a7e26 // mul x6, x17, x10 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 WORD $0x9b077dc7 // mul x7, x14, x7 WORD $0xca0700c6 // eor x6, x6, x7 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xb202e3fb // mov x27, #4919131752989213764 - WORD $0x9b1b7de6 // mul x6, x15, x27 - WORD $0x9b187e07 // mul x7, x16, x24 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0x9b147e27 // mul x7, x17, x20 - WORD $0x9b137dd3 // mul x19, x14, x19 - WORD $0xca1300e7 // eor x7, x7, x19 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0xb201e3e7 // mov x7, #-8608480567731124088 - WORD $0x9b077def // mul x15, x15, x7 - WORD $0x9b1b7e10 // mul x16, x16, x27 + WORD $0x9b087def // mul x15, x15, x8 + WORD $0x9b147e10 // mul x16, x16, x20 WORD $0xca1001ef // eor x15, x15, x16 - WORD $0x9b187e30 // mul x16, x17, x24 - WORD $0x9b147dce // mul x14, x14, x20 + WORD $0x9b197e30 // mul x16, x17, x25 + WORD $0x9b0a7dce // mul x14, x14, x10 WORD $0xca0e020e // eor x14, x16, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e04f // and x15, x2, #0x1111111111111111 - WORD $0x9203e0b0 // and x16, x5, #0x2222222222222222 - WORD $0x9202e0d1 // and x17, x6, #0x4444444444444444 + WORD $0x9203e090 // and x16, x4, #0x2222222222222222 + WORD $0x9202e0b1 // and x17, x5, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1001ef // orr x15, x15, x16 WORD $0xaa0e022e // orr x14, x17, x14 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xca1e01d3 // eor x19, x14, lr + WORD $0xca1301d0 // eor x16, x14, x19 WORD $0x6e318ed7 // cmeq.16b v23, v22, v17 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -2297,18 +2440,18 @@ LBB0_418: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e318e77 // cmeq.16b v23, v19, v17 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a3301d4 // bic x20, x14, x19 + WORD $0x8a3001d4 // bic x20, x14, x16 WORD $0x6e328ed6 // cmeq.16b v22, v22, v18 WORD $0x4e211ed6 // and.16b v22, v22, v1 WORD $0x4e0202d6 // tbl.16b v22, { v22 }, v2 @@ -2323,205 +2466,314 @@ LBB0_418: WORD $0x4e211e94 // and.16b v20, v20, v1 WORD $0x4e020294 // tbl.16b v20, { v20 }, v2 WORD $0x4e71ba94 // addv.8h h20, v20 - WORD $0x1e260290 // fmov w16, s20 + WORD $0x1e260291 // fmov w17, s20 WORD $0x6e328e73 // cmeq.16b v19, v19, v18 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260271 // fmov w17, s19 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e260262 // fmov w2, s19 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xea3301c2 // bics x2, x14, x19 - WORD $0x54ffe980 // b.eq LBB0_413 $-720(%rip) - WORD $0x3200f3f1 // mov w17, #1431655765 + WORD $0xea3001c4 // bics x4, x14, x16 + WORD $0x54000220 // b.eq LBB0_422 $68(%rip) + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 LBB0_420: - WORD $0xd1000447 // sub x7, x2, #1 - WORD $0x8a1400ee // and x14, x7, x20 + WORD $0xd1000482 // sub x2, x4, #1 + WORD $0x8a14004e // and x14, x2, x20 WORD $0x9e6701d3 // fmov d19, x14 WORD $0x0e205a73 // cnt.8b v19, v19 WORD $0x2e303a73 // uaddlv.8b h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1701ce // add x14, x14, x23 - WORD $0xeb1901df // cmp x14, x25 - WORD $0x54003029 // b.ls LBB0_480 $1540(%rip) - WORD $0x91000739 // add x25, x25, #1 - WORD $0xea0200e2 // ands x2, x7, x2 + WORD $0x8b1801ce // add x14, x14, x24 + WORD $0xeb1a01df // cmp x14, x26 + WORD $0x54003789 // b.ls LBB0_494 $1776(%rip) + WORD $0x9100075a // add x26, x26, #1 + WORD $0xea040044 // ands x4, x2, x4 WORD $0x54fffea1 // b.ne LBB0_420 $-44(%rip) - WORD $0x17ffff3e // b LBB0_413 $-776(%rip) + WORD $0x14000003 // b LBB0_423 $12(%rip) LBB0_422: - WORD $0xf10001df // cmp x14, #0 - WORD $0x5400364d // b.le LBB0_494 $1736(%rip) - WORD $0xad0243f0 // stp q16, q16, [sp, #64] - WORD $0xad0143f0 // stp q16, q16, [sp, #32] - WORD $0x92402ea8 // and x8, x21, #0xfff - WORD $0xf13f051f // cmp x8, #4033 - WORD $0x54000383 // b.lo LBB0_434 $112(%rip) - WORD $0xf9400be8 // ldr x8, [sp, #16] - WORD $0xf1008113 // subs x19, x8, #32 - WORD $0x540000a3 // b.lo LBB0_426 $20(%rip) - WORD $0xacc152b3 // ldp q19, q20, [x21], #32 - WORD $0xad0153f3 // stp q19, q20, [sp, #32] - WORD $0xaa0b03e8 // mov x8, x11 - WORD $0x14000003 // b LBB0_427 $12(%rip) -LBB0_426: - WORD $0x910083e8 // add x8, sp, #32 - WORD $0xf9400bf3 // ldr x19, [sp, #16] + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_423: + WORD $0x937ffe13 // asr x19, x16, #63 + WORD $0x9e670293 // fmov d19, x20 + WORD $0x0e205a73 // cnt.8b v19, v19 + WORD $0x2e303a73 // uaddlv.8b h19, v19 + WORD $0x1e26026e // fmov w14, s19 + WORD $0x8b1801d8 // add x24, x14, x24 + WORD $0x910102d6 // add x22, x22, #64 + WORD $0xf94013fe // ldr lr, [sp, #32] + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf10103ca // subs x10, lr, #64 + WORD $0xf90013ea // str x10, [sp, #32] + WORD $0x54ffe76a // b.ge LBB0_415 $-788(%rip) + WORD $0x17ffff04 // b LBB0_398 $-1008(%rip) +LBB0_424: + WORD $0x340001d0 // cbz w16, LBB0_431 $56(%rip) + WORD $0x71008a1f // cmp w16, #34 + WORD $0x54000b20 // b.eq LBB0_457 $356(%rip) + WORD $0x7100b61f // cmp w16, #45 + WORD $0x54ffd420 // b.eq LBB0_376 $-1404(%rip) + WORD $0x14000007 // b LBB0_430 $28(%rip) LBB0_427: - WORD $0xf1004262 // subs x2, x19, #16 - WORD $0x54000283 // b.lo LBB0_435 $80(%rip) - WORD $0x3cc106b3 // ldr q19, [x21], #16 - WORD $0x3c810513 // str q19, [x8], #16 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1002042 // subs x2, x2, #8 - WORD $0x54000222 // b.hs LBB0_436 $68(%rip) -LBB0_429: - WORD $0xf1001262 // subs x2, x19, #4 - WORD $0x54000283 // b.lo LBB0_437 $80(%rip) + WORD $0x71016e1f // cmp w16, #91 + WORD $0x54001300 // b.eq LBB0_467 $608(%rip) + WORD $0x71019a1f // cmp w16, #102 + WORD $0x54000061 // b.ne LBB0_430 $12(%rip) + WORD $0x91001670 // add x16, x19, #5 + WORD $0x14000047 // b LBB0_454 $284(%rip) LBB0_430: - WORD $0xb84046ae // ldr w14, [x21], #4 - WORD $0xb800450e // str w14, [x8], #4 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1000842 // subs x2, x2, #2 - WORD $0x54000222 // b.hs LBB0_438 $68(%rip) + WORD $0xf9000033 // str x19, [x1] + WORD $0xaa1303f9 // mov x25, x19 LBB0_431: - WORD $0xb4000073 // cbz x19, LBB0_433 $12(%rip) -LBB0_432: - WORD $0x394002ae // ldrb w14, [x21] - WORD $0x3900010e // strb w14, [x8] -LBB0_433: - WORD $0x910083f5 // add x21, sp, #32 -LBB0_434: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17ffff24 // b LBB0_415 $-880(%rip) -LBB0_435: - WORD $0xf1002262 // subs x2, x19, #8 - WORD $0x54fffe23 // b.lo LBB0_429 $-60(%rip) + WORD $0xa9404016 // ldp x22, x16, [x0] + WORD $0xeb10033f // cmp x25, x16 + WORD $0x54000162 // b.hs LBB0_436 $44(%rip) + WORD $0x38796ac2 // ldrb w2, [x22, x25] + WORD $0x7100345f // cmp w2, #13 + WORD $0x54000100 // b.eq LBB0_436 $32(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x540000c0 // b.eq LBB0_436 $24(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000062 // b.hs LBB0_436 $12(%rip) + WORD $0xaa1903f8 // mov x24, x25 + WORD $0x14000031 // b LBB0_452 $196(%rip) LBB0_436: - WORD $0xf84086ae // ldr x14, [x21], #8 - WORD $0xf800850e // str x14, [x8], #8 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1001042 // subs x2, x2, #4 - WORD $0x54fffdc2 // b.hs LBB0_430 $-72(%rip) -LBB0_437: - WORD $0xf1000a62 // subs x2, x19, #2 - WORD $0x54fffe23 // b.lo LBB0_431 $-60(%rip) -LBB0_438: - WORD $0x784026ae // ldrh w14, [x21], #2 - WORD $0x7800250e // strh w14, [x8], #2 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffdc2 // cbnz x2, LBB0_432 $-72(%rip) - WORD $0x17ffffef // b LBB0_433 $-68(%rip) -LBB0_439: - WORD $0x910012e2 // add x2, x23, #4 + WORD $0x91000738 // add x24, x25, #1 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_440 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_440 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_440 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x540004c3 // b.lo LBB0_452 $152(%rip) LBB0_440: + WORD $0x91000b38 // add x24, x25, #2 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_444 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_444 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_444 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000363 // b.lo LBB0_452 $108(%rip) +LBB0_444: + WORD $0x91000f38 // add x24, x25, #3 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x54000122 // b.hs LBB0_448 $36(%rip) + WORD $0x38786ac2 // ldrb w2, [x22, x24] + WORD $0x7100345f // cmp w2, #13 + WORD $0x540000c0 // b.eq LBB0_448 $24(%rip) + WORD $0x7100805f // cmp w2, #32 + WORD $0x54000080 // b.eq LBB0_448 $16(%rip) + WORD $0x51002c4e // sub w14, w2, #11 + WORD $0x310009df // cmn w14, #2 + WORD $0x54000203 // b.lo LBB0_452 $64(%rip) +LBB0_448: + WORD $0x91001338 // add x24, x25, #4 + WORD $0xeb10031f // cmp x24, x16 + WORD $0x5400dd82 // b.hs LBB0_812 $7088(%rip) +LBB0_449: + WORD $0x38786ace // ldrb w14, [x22, x24] + WORD $0x710081df // cmp w14, #32 + WORD $0x9ace218e // lsl x14, x12, x14 + WORD $0x8a0d01ce // and x14, x14, x13 + WORD $0xfa4099c4 // ccmp x14, #0, #4, ls + WORD $0x540000a0 // b.eq LBB0_451 $20(%rip) + WORD $0x91000718 // add x24, x24, #1 + WORD $0xeb18021f // cmp x16, x24 + WORD $0x54ffff01 // b.ne LBB0_449 $-32(%rip) + WORD $0x1400076a // b LBB0_842 $7592(%rip) +LBB0_451: + WORD $0xeb10031f // cmp x24, x16 + WORD $0x5400ed02 // b.hs LBB0_842 $7584(%rip) +LBB0_452: + WORD $0x91000719 // add x25, x24, #1 + WORD $0xf9000039 // str x25, [x1] + WORD $0x38786ad0 // ldrb w16, [x22, x24] + WORD $0x7100b21f // cmp w16, #44 + WORD $0x54ffc1a0 // b.eq LBB0_351 $-1996(%rip) + WORD $0x140006dc // b LBB0_813 $7024(%rip) +LBB0_453: + WORD $0x91001270 // add x16, x19, #4 +LBB0_454: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xeb0e005f // cmp x2, x14 - WORD $0x54ffd888 // b.hi LBB0_391 $-1264(%rip) - WORD $0xf9000022 // str x2, [x1] - WORD $0xaa0203f8 // mov x24, x2 - WORD $0x17fffec1 // b LBB0_391 $-1276(%rip) -LBB0_442: + WORD $0xeb0e021f // cmp x16, x14 + WORD $0x54fff748 // b.hi LBB0_431 $-280(%rip) + WORD $0xf9000030 // str x16, [x1] + WORD $0xaa1003f9 // mov x25, x16 + WORD $0x17ffffb7 // b LBB0_431 $-292(%rip) +LBB0_456: + WORD $0x8b10026e // add x14, x19, x16 + WORD $0x910005d9 // add x25, x14, #1 + WORD $0x17ffffb4 // b LBB0_431 $-304(%rip) +LBB0_457: WORD $0xf9400402 // ldr x2, [x0, #8] - WORD $0xcb180053 // sub x19, x2, x24 - WORD $0xf100827f // cmp x19, #32 - WORD $0x54002bcb // b.lt LBB0_487 $1400(%rip) - WORD $0xaa0a03e5 // mov x5, x10 - WORD $0xaa1003ea // mov x10, x16 - WORD $0xd2800013 // mov x19, #0 + WORD $0xcb190050 // sub x16, x2, x25 + WORD $0xf100821f // cmp x16, #32 + WORD $0x54002d6b // b.lt LBB0_499 $1452(%rip) + WORD $0xaa1b03ea // mov x10, x27 + WORD $0xd2800010 // mov x16, #0 WORD $0xd280001b // mov x27, #0 - WORD $0x8b1702b9 // add x25, x21, x23 - WORD $0xcb170054 // sub x20, x2, x23 + WORD $0x8b1302d8 // add x24, x22, x19 + WORD $0xcb130054 // sub x20, x2, x19 WORD $0x528003fa // mov w26, #31 -LBB0_444: - WORD $0x8b13032e // add x14, x25, x19 +LBB0_459: + WORD $0x8b10030e // add x14, x24, x16 WORD $0x3cc011d3 // ldur q19, [x14, #1] WORD $0x3cc111d4 // ldur q20, [x14, #17] WORD $0x6e208e75 // cmeq.16b v21, v19, v0 WORD $0x4e211eb5 // and.16b v21, v21, v1 WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 WORD $0x4e71bab5 // addv.8h h21, v21 - WORD $0x1e2602a2 // fmov w2, s21 + WORD $0x1e2602a4 // fmov w4, s21 WORD $0x6e208e95 // cmeq.16b v21, v20, v0 WORD $0x4e211eb5 // and.16b v21, v21, v1 WORD $0x4e0202b5 // tbl.16b v21, { v21 }, v2 WORD $0x4e71bab5 // addv.8h h21, v21 WORD $0x1e2602ae // fmov w14, s21 - WORD $0x33103dc2 // bfi w2, w14, #16, #16 + WORD $0x33103dc4 // bfi w4, w14, #16, #16 WORD $0x6e238e73 // cmeq.16b v19, v19, v3 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260267 // fmov w7, s19 + WORD $0x1e260262 // fmov w2, s19 WORD $0x6e238e93 // cmeq.16b v19, v20, v3 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x33103dc7 // bfi w7, w14, #16, #16 - WORD $0x710000ff // cmp w7, #0 + WORD $0x33103dc2 // bfi w2, w14, #16, #16 + WORD $0x7100005f // cmp w2, #0 WORD $0xfa400b60 // ccmp x27, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_446 $48(%rip) - WORD $0x0a3b00ee // bic w14, w7, w27 + WORD $0x54000180 // b.eq LBB0_461 $48(%rip) + WORD $0x0a3b004e // bic w14, w2, w27 WORD $0x2a0e076f // orr w15, w27, w14, lsl #1 - WORD $0x0a0400f0 // and w16, w7, w4 - WORD $0x0a2f0210 // bic w16, w16, w15 - WORD $0x2b0e020e // adds w14, w16, w14 + WORD $0x0a060051 // and w17, w2, w6 + WORD $0x0a2f0231 // bic w17, w17, w15 + WORD $0x2b0e022e // adds w14, w17, w14 WORD $0x1a9f37fb // cset w27, hs - WORD $0x4a0e062e // eor w14, w17, w14, lsl #1 + WORD $0x4a0e04ae // eor w14, w5, w14, lsl #1 WORD $0x0a0f01ce // and w14, w14, w15 WORD $0x2a2e03ee // mvn w14, w14 - WORD $0x8a0201c2 // and x2, x14, x2 - WORD $0x14000002 // b LBB0_447 $8(%rip) -LBB0_446: + WORD $0x8a0401c4 // and x4, x14, x4 + WORD $0x14000002 // b LBB0_462 $8(%rip) +LBB0_461: WORD $0xd280001b // mov x27, #0 -LBB0_447: - WORD $0xb5002462 // cbnz x2, LBB0_484 $1164(%rip) - WORD $0x91008273 // add x19, x19, #32 +LBB0_462: + WORD $0xb50025c4 // cbnz x4, LBB0_496 $1208(%rip) + WORD $0x91008210 // add x16, x16, #32 WORD $0xd100835a // sub x26, x26, #32 WORD $0x8b1a028e // add x14, x20, x26 WORD $0xf100fddf // cmp x14, #63 - WORD $0x54fffa6c // b.gt LBB0_444 $-180(%rip) - WORD $0xb50028db // cbnz x27, LBB0_495 $1304(%rip) - WORD $0x8b1702ae // add x14, x21, x23 - WORD $0x8b1301ce // add x14, x14, x19 - WORD $0x910005d7 // add x23, x14, #1 - WORD $0xaa3303ee // mvn x14, x19 - WORD $0x8b1401d3 // add x19, x14, x20 -LBB0_451: - WORD $0xaa0a03f0 // mov x16, x10 - WORD $0xaa0503ea // mov x10, x5 - WORD $0x14000121 // b LBB0_488 $1156(%rip) -LBB0_452: - WORD $0xf9000ff0 // str x16, [sp, #24] - WORD $0xd280001e // mov lr, #0 + WORD $0x54fffa6c // b.gt LBB0_459 $-180(%rip) + WORD $0xb5002b5b // cbnz x27, LBB0_507 $1384(%rip) + WORD $0x8b1302ce // add x14, x22, x19 + WORD $0x8b1001ce // add x14, x14, x16 + WORD $0x910005d3 // add x19, x14, #1 + WORD $0xaa3003ee // mvn x14, x16 + WORD $0x8b1401d0 // add x16, x14, x20 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_466: + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xaa0a03fb // mov x27, x10 + WORD $0x1400012c // b LBB0_500 $1200(%rip) +LBB0_467: + WORD $0xf90017fe // str lr, [sp, #40] + WORD $0xd2800013 // mov x19, #0 + WORD $0xd280001b // mov x27, #0 + WORD $0xd2800018 // mov x24, #0 WORD $0xd280001a // mov x26, #0 - WORD $0xd2800017 // mov x23, #0 - WORD $0xd2800019 // mov x25, #0 WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xcb1801cf // sub x15, x14, x24 - WORD $0x8b1802b5 // add x21, x21, x24 - WORD $0x14000009 // b LBB0_454 $36(%rip) -LBB0_453: - WORD $0x937ffe7e // asr lr, x19, #63 - WORD $0x9e670293 // fmov d19, x20 - WORD $0x0e205a73 // cnt.8b v19, v19 - WORD $0x2e303a73 // uaddlv.8b h19, v19 - WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1701d7 // add x23, x14, x23 - WORD $0x910102b5 // add x21, x21, #64 - WORD $0xf9400bef // ldr x15, [sp, #16] -LBB0_454: - WORD $0xf10101ee // subs x14, x15, #64 - WORD $0xf9000bee // str x14, [sp, #16] - WORD $0x5400174b // b.lt LBB0_463 $744(%rip) - WORD $0xaa0f03ea // mov x10, x15 -LBB0_456: - WORD $0xad4056b6 // ldp q22, q21, [x21] - WORD $0xad414eb4 // ldp q20, q19, [x21, #32] + WORD $0xcb1901de // sub lr, x14, x25 + WORD $0x8b1902d6 // add x22, x22, x25 + WORD $0xf10103ca // subs x10, lr, #64 + WORD $0xf90013ea // str x10, [sp, #32] + WORD $0x540006ea // b.ge LBB0_485 $220(%rip) +LBB0_468: + WORD $0xf10003df // cmp lr, #0 + WORD $0x540026cd // b.le LBB0_506 $1240(%rip) + WORD $0xad02c3f0 // stp q16, q16, [sp, #80] + WORD $0xad01c3f0 // stp q16, q16, [sp, #48] + WORD $0x92402ec8 // and x8, x22, #0xfff + WORD $0xf13f051f // cmp x8, #4033 + WORD $0x54000363 // b.lo LBB0_480 $108(%rip) + WORD $0xf10083d0 // subs x16, lr, #32 + WORD $0x540000a3 // b.lo LBB0_472 $20(%rip) + WORD $0xacc152d3 // ldp q19, q20, [x22], #32 + WORD $0xad01d3f3 // stp q19, q20, [sp, #48] + WORD $0xaa0b03e8 // mov x8, x11 + WORD $0x14000003 // b LBB0_473 $12(%rip) +LBB0_472: + WORD $0x9100c3e8 // add x8, sp, #48 + WORD $0xaa1e03f0 // mov x16, lr +LBB0_473: + WORD $0xf1004202 // subs x2, x16, #16 + WORD $0x54000303 // b.lo LBB0_481 $96(%rip) + WORD $0x3cc106d3 // ldr q19, [x22], #16 + WORD $0x3c810513 // str q19, [x8], #16 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1002042 // subs x2, x2, #8 + WORD $0x540002a2 // b.hs LBB0_482 $84(%rip) +LBB0_475: + WORD $0xf1001202 // subs x2, x16, #4 + WORD $0x54000303 // b.lo LBB0_483 $96(%rip) +LBB0_476: + WORD $0xb84046ce // ldr w14, [x22], #4 + WORD $0xb800450e // str w14, [x8], #4 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1000842 // subs x2, x2, #2 + WORD $0x540002a2 // b.hs LBB0_484 $84(%rip) +LBB0_477: + WORD $0xb4000070 // cbz x16, LBB0_479 $12(%rip) +LBB0_478: + WORD $0x394002ce // ldrb w14, [x22] + WORD $0x3900010e // strb w14, [x8] +LBB0_479: + WORD $0x9100c3f6 // add x22, sp, #48 +LBB0_480: + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0x1400000f // b LBB0_485 $60(%rip) +LBB0_481: + WORD $0xf1002202 // subs x2, x16, #8 + WORD $0x54fffda3 // b.lo LBB0_475 $-76(%rip) +LBB0_482: + WORD $0xf84086ce // ldr x14, [x22], #8 + WORD $0xf800850e // str x14, [x8], #8 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xf1001042 // subs x2, x2, #4 + WORD $0x54fffd42 // b.hs LBB0_476 $-88(%rip) +LBB0_483: + WORD $0xf1000a02 // subs x2, x16, #2 + WORD $0x54fffda3 // b.lo LBB0_477 $-76(%rip) +LBB0_484: + WORD $0x784026ce // ldrh w14, [x22], #2 + WORD $0x7800250e // strh w14, [x8], #2 + WORD $0xaa0203f0 // mov x16, x2 + WORD $0xb5fffd42 // cbnz x2, LBB0_478 $-88(%rip) + WORD $0x17ffffeb // b LBB0_479 $-84(%rip) +LBB0_485: + WORD $0xad4056d6 // ldp q22, q21, [x22] + WORD $0xad414ed4 // ldp q20, q19, [x22, #32] WORD $0x6e238ed7 // cmeq.16b v23, v22, v3 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -2546,23 +2798,23 @@ LBB0_456: WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f020f // orr x15, x16, x15 - WORD $0xaa0e01e2 // orr x2, x15, x14 - WORD $0xaa1a004e // orr x14, x2, x26 - WORD $0xb500008e // cbnz x14, LBB0_458 $16(%rip) - WORD $0xd280001a // mov x26, #0 - WORD $0xd2800002 // mov x2, #0 - WORD $0x1400000a // b LBB0_459 $40(%rip) -LBB0_458: - WORD $0x8a3a004e // bic x14, x2, x26 - WORD $0xaa0e074f // orr x15, x26, x14, lsl #1 - WORD $0x8a2f0050 // bic x16, x2, x15 + WORD $0xaa0e01f0 // orr x16, x15, x14 + WORD $0xaa1b020e // orr x14, x16, x27 + WORD $0xb500008e // cbnz x14, LBB0_487 $16(%rip) + WORD $0xd280001b // mov x27, #0 + WORD $0xd2800010 // mov x16, #0 + WORD $0x1400000a // b LBB0_488 $40(%rip) +LBB0_487: + WORD $0x8a3b020e // bic x14, x16, x27 + WORD $0xaa0e076f // orr x15, x27, x14, lsl #1 + WORD $0x8a2f0210 // bic x16, x16, x15 WORD $0x9201f210 // and x16, x16, #0xaaaaaaaaaaaaaaaa WORD $0xab0e020e // adds x14, x16, x14 - WORD $0x1a9f37fa // cset w26, hs + WORD $0x1a9f37fb // cset w27, hs WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 - WORD $0x8a0f01c2 // and x2, x14, x15 -LBB0_459: + WORD $0x8a0f01d0 // and x16, x14, x15 +LBB0_488: WORD $0x6e208ed7 // cmeq.16b v23, v22, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -2577,68 +2829,65 @@ LBB0_459: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e208e77 // cmeq.16b v23, v19, v0 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a2201ce // bic x14, x14, x2 + WORD $0x8a3001ce // bic x14, x14, x16 WORD $0x9200e1cf // and x15, x14, #0x1111111111111111 WORD $0x9203e1d0 // and x16, x14, #0x2222222222222222 WORD $0x9202e1d1 // and x17, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f4 // mov x20, #1229782938247303441 - WORD $0x9b147de2 // mul x2, x15, x20 - WORD $0xb201e3f3 // mov x19, #-8608480567731124088 - WORD $0xf2e11113 // movk x19, #2184, lsl #48 - WORD $0x9b137e05 // mul x5, x16, x19 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb202e3e7 // mov x7, #4919131752989213764 - WORD $0xf2e08887 // movk x7, #1092, lsl #48 + WORD $0xb200e3ea // mov x10, #1229782938247303441 + WORD $0x9b0a7de2 // mul x2, x15, x10 + WORD $0x9b077e04 // mul x4, x16, x7 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0x9b147e24 // mul x4, x17, x20 + WORD $0xb203e3e5 // mov x5, #2459565876494606882 + WORD $0xf2e04445 // movk x5, #546, lsl #48 + WORD $0x9b057dc5 // mul x5, x14, x5 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xca040042 // eor x2, x2, x4 + WORD $0xb203e3f9 // mov x25, #2459565876494606882 + WORD $0x9b197de4 // mul x4, x15, x25 + WORD $0x9b0a7e05 // mul x5, x16, x10 + WORD $0xca050084 // eor x4, x4, x5 WORD $0x9b077e25 // mul x5, x17, x7 - WORD $0xb203e3e6 // mov x6, #2459565876494606882 - WORD $0xf2e04446 // movk x6, #546, lsl #48 - WORD $0x9b067dc6 // mul x6, x14, x6 + WORD $0x9b147dc6 // mul x6, x14, x20 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xca050042 // eor x2, x2, x5 - WORD $0xb203e3f8 // mov x24, #2459565876494606882 - WORD $0x9b187de5 // mul x5, x15, x24 - WORD $0x9b147e06 // mul x6, x16, x20 + WORD $0xca050084 // eor x4, x4, x5 + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0x9b147de5 // mul x5, x15, x20 + WORD $0x9b197e06 // mul x6, x16, x25 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0x9b137e26 // mul x6, x17, x19 + WORD $0x9b0a7e26 // mul x6, x17, x10 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 WORD $0x9b077dc7 // mul x7, x14, x7 WORD $0xca0700c6 // eor x6, x6, x7 WORD $0xca0600a5 // eor x5, x5, x6 - WORD $0xb202e3fb // mov x27, #4919131752989213764 - WORD $0x9b1b7de6 // mul x6, x15, x27 - WORD $0x9b187e07 // mul x7, x16, x24 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0x9b147e27 // mul x7, x17, x20 - WORD $0x9b137dd3 // mul x19, x14, x19 - WORD $0xca1300e7 // eor x7, x7, x19 - WORD $0xca0700c6 // eor x6, x6, x7 - WORD $0xb201e3e7 // mov x7, #-8608480567731124088 - WORD $0x9b077def // mul x15, x15, x7 - WORD $0x9b1b7e10 // mul x16, x16, x27 + WORD $0x9b087def // mul x15, x15, x8 + WORD $0x9b147e10 // mul x16, x16, x20 WORD $0xca1001ef // eor x15, x15, x16 - WORD $0x9b187e30 // mul x16, x17, x24 - WORD $0x9b147dce // mul x14, x14, x20 + WORD $0x9b197e30 // mul x16, x17, x25 + WORD $0x9b0a7dce // mul x14, x14, x10 WORD $0xca0e020e // eor x14, x16, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e04f // and x15, x2, #0x1111111111111111 - WORD $0x9203e0b0 // and x16, x5, #0x2222222222222222 - WORD $0x9202e0d1 // and x17, x6, #0x4444444444444444 + WORD $0x9203e090 // and x16, x4, #0x2222222222222222 + WORD $0x9202e0b1 // and x17, x5, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1001ef // orr x15, x15, x16 WORD $0xaa0e022e // orr x14, x17, x14 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xca1e01d3 // eor x19, x14, lr + WORD $0xca1301d0 // eor x16, x14, x19 WORD $0x6e278ed7 // cmeq.16b v23, v22, v7 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 @@ -2653,18 +2902,18 @@ LBB0_459: WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f0 // fmov w16, s23 + WORD $0x1e2602f1 // fmov w17, s23 WORD $0x6e278e77 // cmeq.16b v23, v19, v7 WORD $0x4e211ef7 // and.16b v23, v23, v1 WORD $0x4e0202f7 // tbl.16b v23, { v23 }, v2 WORD $0x4e71baf7 // addv.8h h23, v23 - WORD $0x1e2602f1 // fmov w17, s23 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e2602e2 // fmov w2, s23 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0x8a3301d4 // bic x20, x14, x19 + WORD $0x8a3001d4 // bic x20, x14, x16 WORD $0x6e268ed6 // cmeq.16b v22, v22, v6 WORD $0x4e211ed6 // and.16b v22, v22, v1 WORD $0x4e0202d6 // tbl.16b v22, { v22 }, v2 @@ -2679,201 +2928,174 @@ LBB0_459: WORD $0x4e211e94 // and.16b v20, v20, v1 WORD $0x4e020294 // tbl.16b v20, { v20 }, v2 WORD $0x4e71ba94 // addv.8h h20, v20 - WORD $0x1e260290 // fmov w16, s20 + WORD $0x1e260291 // fmov w17, s20 WORD $0x6e268e73 // cmeq.16b v19, v19, v6 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 WORD $0x4e71ba73 // addv.8h h19, v19 - WORD $0x1e260271 // fmov w17, s19 - WORD $0xd3607e10 // lsl x16, x16, #32 - WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 + WORD $0x1e260262 // fmov w2, s19 + WORD $0xd3607e31 // lsl x17, x17, #32 + WORD $0xaa02c231 // orr x17, x17, x2, lsl #48 WORD $0x53103def // lsl w15, w15, #16 - WORD $0xaa0f020f // orr x15, x16, x15 + WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xea3301c2 // bics x2, x14, x19 - WORD $0x54ffe960 // b.eq LBB0_453 $-724(%rip) - WORD $0x3200f3f1 // mov w17, #1431655765 -LBB0_461: - WORD $0xd1000447 // sub x7, x2, #1 - WORD $0x8a1400ee // and x14, x7, x20 + WORD $0xea3001c4 // bics x4, x14, x16 + WORD $0x54000220 // b.eq LBB0_492 $68(%rip) + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_490: + WORD $0xd1000482 // sub x2, x4, #1 + WORD $0x8a14004e // and x14, x2, x20 WORD $0x9e6701d3 // fmov d19, x14 WORD $0x0e205a73 // cnt.8b v19, v19 WORD $0x2e303a73 // uaddlv.8b h19, v19 WORD $0x1e26026e // fmov w14, s19 - WORD $0x8b1701ce // add x14, x14, x23 - WORD $0xeb1901df // cmp x14, x25 - WORD $0x540007a9 // b.ls LBB0_481 $244(%rip) - WORD $0x91000739 // add x25, x25, #1 - WORD $0xea0200e2 // ands x2, x7, x2 - WORD $0x54fffea1 // b.ne LBB0_461 $-44(%rip) - WORD $0x17ffff3d // b LBB0_453 $-780(%rip) -LBB0_463: - WORD $0xf10001ff // cmp x15, #0 - WORD $0x54000d2d // b.le LBB0_494 $420(%rip) - WORD $0xaa0f03ea // mov x10, x15 - WORD $0xad0243f0 // stp q16, q16, [sp, #64] - WORD $0xad0143f0 // stp q16, q16, [sp, #32] - WORD $0x92402ea8 // and x8, x21, #0xfff - WORD $0xf13f051f // cmp x8, #4033 - WORD $0x54000363 // b.lo LBB0_475 $108(%rip) - WORD $0xf1008153 // subs x19, x10, #32 - WORD $0x540000a3 // b.lo LBB0_467 $20(%rip) - WORD $0xacc152b3 // ldp q19, q20, [x21], #32 - WORD $0xad0153f3 // stp q19, q20, [sp, #32] - WORD $0xaa0b03e8 // mov x8, x11 - WORD $0x14000003 // b LBB0_468 $12(%rip) -LBB0_467: - WORD $0x910083e8 // add x8, sp, #32 - WORD $0xaa0a03f3 // mov x19, x10 -LBB0_468: - WORD $0xf1004262 // subs x2, x19, #16 - WORD $0x54000283 // b.lo LBB0_476 $80(%rip) - WORD $0x3cc106b3 // ldr q19, [x21], #16 - WORD $0x3c810513 // str q19, [x8], #16 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1002042 // subs x2, x2, #8 - WORD $0x54000222 // b.hs LBB0_477 $68(%rip) -LBB0_470: - WORD $0xf1001262 // subs x2, x19, #4 - WORD $0x54000283 // b.lo LBB0_478 $80(%rip) -LBB0_471: - WORD $0xb84046ae // ldr w14, [x21], #4 - WORD $0xb800450e // str w14, [x8], #4 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1000842 // subs x2, x2, #2 - WORD $0x54000222 // b.hs LBB0_479 $68(%rip) -LBB0_472: - WORD $0xb4000073 // cbz x19, LBB0_474 $12(%rip) -LBB0_473: - WORD $0x394002ae // ldrb w14, [x21] - WORD $0x3900010e // strb w14, [x8] -LBB0_474: - WORD $0x910083f5 // add x21, sp, #32 -LBB0_475: - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17ffff24 // b LBB0_456 $-880(%rip) -LBB0_476: - WORD $0xf1002262 // subs x2, x19, #8 - WORD $0x54fffe23 // b.lo LBB0_470 $-60(%rip) -LBB0_477: - WORD $0xf84086ae // ldr x14, [x21], #8 - WORD $0xf800850e // str x14, [x8], #8 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xf1001042 // subs x2, x2, #4 - WORD $0x54fffdc2 // b.hs LBB0_471 $-72(%rip) -LBB0_478: - WORD $0xf1000a62 // subs x2, x19, #2 - WORD $0x54fffe23 // b.lo LBB0_472 $-60(%rip) -LBB0_479: - WORD $0x784026ae // ldrh w14, [x21], #2 - WORD $0x7800250e // strh w14, [x8], #2 - WORD $0xaa0203f3 // mov x19, x2 - WORD $0xb5fffdc2 // cbnz x2, LBB0_473 $-72(%rip) - WORD $0x17ffffef // b LBB0_474 $-68(%rip) -LBB0_480: - WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xdac0004f // rbit x15, x2 - WORD $0xdac011ef // clz x15, x15 - WORD $0xf9400bea // ldr x10, [sp, #16] - WORD $0x14000004 // b LBB0_482 $16(%rip) -LBB0_481: + WORD $0x8b1801ce // add x14, x14, x24 + WORD $0xeb1a01df // cmp x14, x26 + WORD $0x540002a9 // b.ls LBB0_494 $84(%rip) + WORD $0x9100075a // add x26, x26, #1 + WORD $0xea040044 // ands x4, x2, x4 + WORD $0x54fffea1 // b.ne LBB0_490 $-44(%rip) + WORD $0x14000003 // b LBB0_493 $12(%rip) +LBB0_492: + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 +LBB0_493: + WORD $0x937ffe13 // asr x19, x16, #63 + WORD $0x9e670293 // fmov d19, x20 + WORD $0x0e205a73 // cnt.8b v19, v19 + WORD $0x2e303a73 // uaddlv.8b h19, v19 + WORD $0x1e26026e // fmov w14, s19 + WORD $0x8b1801d8 // add x24, x14, x24 + WORD $0x910102d6 // add x22, x22, #64 + WORD $0xf94013fe // ldr lr, [sp, #32] + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xf10103ca // subs x10, lr, #64 + WORD $0xf90013ea // str x10, [sp, #32] + WORD $0x54ffe76a // b.ge LBB0_485 $-788(%rip) + WORD $0x17ffff04 // b LBB0_468 $-1008(%rip) +LBB0_494: WORD $0xf940040e // ldr x14, [x0, #8] - WORD $0xdac0004f // rbit x15, x2 + WORD $0xdac0008f // rbit x15, x4 WORD $0xdac011ef // clz x15, x15 -LBB0_482: - WORD $0xcb0a01ef // sub x15, x15, x10 + WORD $0xcb1e01ef // sub x15, x15, lr WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005cf // add x15, x14, #1 WORD $0xf900002f // str x15, [x1] WORD $0xf9400410 // ldr x16, [x0, #8] WORD $0xeb1001ff // cmp x15, x16 - WORD $0x9a8e2618 // csinc x24, x16, x14, hs - WORD $0xf9000038 // str x24, [x1] -LBB0_483: - WORD $0xf9400ff0 // ldr x16, [sp, #24] -Lloh12: - WORD $0x10011a4a // adr x10, __UnquoteTab $9032(%rip) -Lloh13: - WORD $0x9100014a // add x10, x10, __UnquoteTab@PAGEOFF $0(%rip) - WORD $0x17fffd6b // b LBB0_391 $-2644(%rip) -LBB0_484: - WORD $0xdac0004e // rbit x14, x2 + WORD $0x9a8e2619 // csinc x25, x16, x14, hs + WORD $0xf9000039 // str x25, [x1] + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xf94017fe // ldr lr, [sp, #40] + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_495: + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 +Lloh20: + WORD $0x1001209b // adr x27, __UnquoteTab $9232(%rip) +Lloh21: + WORD $0x9100037b // add x27, x27, __UnquoteTab@PAGEOFF $0(%rip) + WORD $0x17fffe54 // b LBB0_431 $-1712(%rip) +LBB0_496: + WORD $0xdac0008e // rbit x14, x4 WORD $0xdac011ce // clz x14, x14 - WORD $0x8b1302ef // add x15, x23, x19 + WORD $0x8b10026f // add x15, x19, x16 WORD $0x8b0f01ce // add x14, x14, x15 - WORD $0x910009d8 // add x24, x14, #2 - WORD $0xf9000038 // str x24, [x1] -LBB0_485: - WORD $0xaa0a03f0 // mov x16, x10 - WORD $0xaa0503ea // mov x10, x5 - WORD $0x17fffd62 // b LBB0_391 $-2680(%rip) -LBB0_486: - WORD $0xf9000038 // str x24, [x1] - WORD $0x17fffd60 // b LBB0_391 $-2688(%rip) -LBB0_487: - WORD $0x8b1802b7 // add x23, x21, x24 -LBB0_488: - WORD $0xf100067f // cmp x19, #1 - WORD $0x540000ea // b.ge LBB0_490 $28(%rip) - WORD $0x17fffd5c // b LBB0_391 $-2704(%rip) -LBB0_489: + WORD $0x910009d9 // add x25, x14, #2 + WORD $0xf9000039 // str x25, [x1] + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_497: + WORD $0xb202e3f4 // mov x20, #4919131752989213764 + WORD $0xf2e08894 // movk x20, #1092, lsl #48 + WORD $0xaa0a03fb // mov x27, x10 + WORD $0x17fffe48 // b LBB0_431 $-1760(%rip) +LBB0_498: + WORD $0xf9000039 // str x25, [x1] + WORD $0x17fffe46 // b LBB0_431 $-1768(%rip) +LBB0_499: + WORD $0x8b1902d3 // add x19, x22, x25 +LBB0_500: + WORD $0xf100061f // cmp x16, #1 + WORD $0x540000ea // b.ge LBB0_502 $28(%rip) + WORD $0x17fffe42 // b LBB0_431 $-1784(%rip) +LBB0_501: WORD $0x92800022 // mov x2, #-2 - WORD $0x52800047 // mov w7, #2 - WORD $0x8b0702f7 // add x23, x23, x7 - WORD $0xab020273 // adds x19, x19, x2 - WORD $0x54ffaaed // b.le LBB0_391 $-2724(%rip) -LBB0_490: - WORD $0x394002e2 // ldrb w2, [x23] + WORD $0x52800044 // mov w4, #2 + WORD $0x8b040273 // add x19, x19, x4 + WORD $0xab020210 // adds x16, x16, x2 + WORD $0x54ffc7ad // b.le LBB0_431 $-1804(%rip) +LBB0_502: + WORD $0x39400262 // ldrb w2, [x19] WORD $0x7101705f // cmp w2, #92 - WORD $0x54ffff20 // b.eq LBB0_489 $-28(%rip) + WORD $0x54ffff20 // b.eq LBB0_501 $-28(%rip) WORD $0x7100885f // cmp w2, #34 - WORD $0x540000e0 // b.eq LBB0_493 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_505 $28(%rip) WORD $0x92800002 // mov x2, #-1 - WORD $0x52800027 // mov w7, #1 - WORD $0x8b0702f7 // add x23, x23, x7 - WORD $0xab020273 // adds x19, x19, x2 - WORD $0x54fffeec // b.gt LBB0_490 $-36(%rip) - WORD $0x17fffd4c // b LBB0_391 $-2768(%rip) -LBB0_493: - WORD $0xcb1502ee // sub x14, x23, x21 - WORD $0x910005d8 // add x24, x14, #1 - WORD $0xf9000038 // str x24, [x1] - WORD $0x17fffd48 // b LBB0_391 $-2784(%rip) -LBB0_494: - WORD $0xf9400418 // ldr x24, [x0, #8] - WORD $0xf9000038 // str x24, [x1] - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17ffffd4 // b LBB0_483 $-176(%rip) -LBB0_495: + WORD $0x52800024 // mov w4, #1 + WORD $0x8b040273 // add x19, x19, x4 + WORD $0xab020210 // adds x16, x16, x2 + WORD $0x54fffeec // b.gt LBB0_502 $-36(%rip) + WORD $0x17fffe32 // b LBB0_431 $-1848(%rip) +LBB0_505: + WORD $0xcb16026e // sub x14, x19, x22 + WORD $0x910005d9 // add x25, x14, #1 + WORD $0xf9000039 // str x25, [x1] + WORD $0x17fffe2e // b LBB0_431 $-1864(%rip) +LBB0_506: + WORD $0xf9400419 // ldr x25, [x0, #8] + WORD $0xf9000039 // str x25, [x1] + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0xf94017fe // ldr lr, [sp, #40] + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0x17ffffca // b LBB0_495 $-216(%rip) +LBB0_507: WORD $0xd1000688 // sub x8, x20, #1 - WORD $0xeb13011f // cmp x8, x19 - WORD $0x540000a1 // b.ne LBB0_497 $20(%rip) - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17ffffd7 // b LBB0_485 $-164(%rip) -LBB0_497: - WORD $0x8b1702a8 // add x8, x21, x23 - WORD $0x8b130108 // add x8, x8, x19 - WORD $0x91000917 // add x23, x8, #2 - WORD $0xcb130288 // sub x8, x20, x19 - WORD $0xd1000913 // sub x19, x8, #2 - WORD $0x529fffe8 // mov w8, #65535 - WORD $0x3200f3f1 // mov w17, #1431655765 - WORD $0x3201f3e4 // mov w4, #-1431655766 - WORD $0x17fffeb1 // b LBB0_451 $-1340(%rip) -LBB0_498: + WORD $0xeb10011f // cmp x8, x16 + WORD $0x54000141 // b.ne LBB0_509 $40(%rip) + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0x17ffffcb // b LBB0_497 $-212(%rip) +LBB0_509: + WORD $0x8b1302c8 // add x8, x22, x19 + WORD $0x8b100108 // add x8, x8, x16 + WORD $0x91000913 // add x19, x8, #2 + WORD $0xcb100288 // sub x8, x20, x16 + WORD $0xd1000910 // sub x16, x8, #2 + WORD $0xb201e3e8 // mov x8, #-8608480567731124088 + WORD $0x529ffff5 // mov w21, #65535 + WORD $0x3200f3e5 // mov w5, #1431655765 + WORD $0x3201f3e6 // mov w6, #-1431655766 + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 + WORD $0xb201e3e7 // mov x7, #-8608480567731124088 + WORD $0xf2e11107 // movk x7, #2184, lsl #48 + WORD $0x17fffe95 // b LBB0_466 $-1452(%rip) +LBB0_510: WORD $0x91004129 // add x9, x9, #16 - WORD $0xeb10013f // cmp x9, x16 - WORD $0x54fec701 // b.ne LBB0_2 $-10016(%rip) -LBB0_499: - WORD $0xb4009b23 // cbz x3, LBB0_777 $4964(%rip) -Lloh14: - WORD $0x10fec1a8 // adr x8, lCPI0_2 $-10188(%rip) -Lloh15: + WORD $0xeb1e013f // cmp x9, lr + WORD $0x54fead61 // b.ne LBB0_2 $-10836(%rip) +LBB0_511: + WORD $0xb4009b23 // cbz x3, LBB0_789 $4964(%rip) +Lloh22: + WORD $0x10fea728 // adr x8, lCPI0_2 $-11036(%rip) +Lloh23: WORD $0x3dc00100 // ldr q0, [x8, lCPI0_2@PAGEOFF] $0(%rip) WORD $0xaa0303ea // mov x10, x3 WORD $0x3c808540 // str q0, [x10], #8 @@ -2890,13 +3112,13 @@ Lloh15: WORD $0x52800085 // mov w5, #4 WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x4f02e781 // movi.16b v1, #92 -Lloh16: - WORD $0x10febe88 // adr x8, lCPI0_0 $-10288(%rip) -Lloh17: +Lloh24: + WORD $0x10fea408 // adr x8, lCPI0_0 $-11136(%rip) +Lloh25: WORD $0x3dc00102 // ldr q2, [x8, lCPI0_0@PAGEOFF] $0(%rip) -Lloh18: - WORD $0x10febec8 // adr x8, lCPI0_1 $-10280(%rip) -Lloh19: +Lloh26: + WORD $0x10fea448 // adr x8, lCPI0_1 $-11128(%rip) +Lloh27: WORD $0x3dc00103 // ldr q3, [x8, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x92f00006 // mov x6, #9223372036854775807 WORD $0x4f01e5c4 // movi.16b v4, #46 @@ -2908,104 +3130,104 @@ Lloh19: WORD $0x4f06e7f1 // movi.16b v17, #223 WORD $0x4f02e4b2 // movi.16b v18, #69 WORD $0x52800024 // mov w4, #1 -LBB0_501: +LBB0_513: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb08037f // cmp x27, x8 - WORD $0x54000162 // b.hs LBB0_506 $44(%rip) + WORD $0x54000162 // b.hs LBB0_518 $44(%rip) WORD $0x387b6931 // ldrb w17, [x9, x27] WORD $0x7100363f // cmp w17, #13 - WORD $0x54000100 // b.eq LBB0_506 $32(%rip) + WORD $0x54000100 // b.eq LBB0_518 $32(%rip) WORD $0x7100823f // cmp w17, #32 - WORD $0x540000c0 // b.eq LBB0_506 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_518 $24(%rip) WORD $0x51002e31 // sub w17, w17, #11 WORD $0x31000a3f // cmn w17, #2 - WORD $0x54000062 // b.hs LBB0_506 $12(%rip) + WORD $0x54000062 // b.hs LBB0_518 $12(%rip) WORD $0xaa1b03fa // mov x26, x27 - WORD $0x14000031 // b LBB0_522 $196(%rip) -LBB0_506: + WORD $0x14000031 // b LBB0_534 $196(%rip) +LBB0_518: WORD $0x9100077a // add x26, x27, #1 WORD $0xeb08035f // cmp x26, x8 - WORD $0x54000122 // b.hs LBB0_510 $36(%rip) + WORD $0x54000122 // b.hs LBB0_522 $36(%rip) WORD $0x387a6931 // ldrb w17, [x9, x26] WORD $0x7100363f // cmp w17, #13 - WORD $0x540000c0 // b.eq LBB0_510 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_522 $24(%rip) WORD $0x7100823f // cmp w17, #32 - WORD $0x54000080 // b.eq LBB0_510 $16(%rip) + WORD $0x54000080 // b.eq LBB0_522 $16(%rip) WORD $0x51002e31 // sub w17, w17, #11 WORD $0x31000a3f // cmn w17, #2 - WORD $0x540004c3 // b.lo LBB0_522 $152(%rip) -LBB0_510: + WORD $0x540004c3 // b.lo LBB0_534 $152(%rip) +LBB0_522: WORD $0x91000b7a // add x26, x27, #2 WORD $0xeb08035f // cmp x26, x8 - WORD $0x54000122 // b.hs LBB0_514 $36(%rip) + WORD $0x54000122 // b.hs LBB0_526 $36(%rip) WORD $0x387a6931 // ldrb w17, [x9, x26] WORD $0x7100363f // cmp w17, #13 - WORD $0x540000c0 // b.eq LBB0_514 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_526 $24(%rip) WORD $0x7100823f // cmp w17, #32 - WORD $0x54000080 // b.eq LBB0_514 $16(%rip) + WORD $0x54000080 // b.eq LBB0_526 $16(%rip) WORD $0x51002e31 // sub w17, w17, #11 WORD $0x31000a3f // cmn w17, #2 - WORD $0x54000363 // b.lo LBB0_522 $108(%rip) -LBB0_514: + WORD $0x54000363 // b.lo LBB0_534 $108(%rip) +LBB0_526: WORD $0x91000f7a // add x26, x27, #3 WORD $0xeb08035f // cmp x26, x8 - WORD $0x54000122 // b.hs LBB0_518 $36(%rip) + WORD $0x54000122 // b.hs LBB0_530 $36(%rip) WORD $0x387a6931 // ldrb w17, [x9, x26] WORD $0x7100363f // cmp w17, #13 - WORD $0x540000c0 // b.eq LBB0_518 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_530 $24(%rip) WORD $0x7100823f // cmp w17, #32 - WORD $0x54000080 // b.eq LBB0_518 $16(%rip) + WORD $0x54000080 // b.eq LBB0_530 $16(%rip) WORD $0x51002e31 // sub w17, w17, #11 WORD $0x31000a3f // cmn w17, #2 - WORD $0x54000203 // b.lo LBB0_522 $64(%rip) -LBB0_518: + WORD $0x54000203 // b.lo LBB0_534 $64(%rip) +LBB0_530: WORD $0x9100137a // add x26, x27, #4 WORD $0xeb08035f // cmp x26, x8 - WORD $0x5400a902 // b.hs LBB0_831 $5408(%rip) -LBB0_519: + WORD $0x5400aca2 // b.hs LBB0_846 $5524(%rip) +LBB0_531: WORD $0x387a6931 // ldrb w17, [x9, x26] WORD $0x7100823f // cmp w17, #32 WORD $0x9ad121f1 // lsl x17, x15, x17 WORD $0x8a100231 // and x17, x17, x16 WORD $0xfa409a24 // ccmp x17, #0, #4, ls - WORD $0x540000a0 // b.eq LBB0_521 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_533 $20(%rip) WORD $0x9100075a // add x26, x26, #1 WORD $0xeb1a011f // cmp x8, x26 - WORD $0x54ffff01 // b.ne LBB0_519 $-32(%rip) - WORD $0x140004bc // b LBB0_797 $4848(%rip) -LBB0_521: + WORD $0x54ffff01 // b.ne LBB0_531 $-32(%rip) + WORD $0x140004bc // b LBB0_809 $4848(%rip) +LBB0_533: WORD $0xeb08035f // cmp x26, x8 - WORD $0x54009742 // b.hs LBB0_797 $4840(%rip) -LBB0_522: + WORD $0x54009742 // b.hs LBB0_809 $4840(%rip) +LBB0_534: WORD $0x9100075b // add x27, x26, #1 WORD $0xf900003b // str x27, [x1] WORD $0x8b1a013e // add lr, x9, x26 WORD $0x394003d4 // ldrb w20, [lr] - WORD $0x340096b4 // cbz w20, LBB0_797 $4820(%rip) + WORD $0x340096b4 // cbz w20, LBB0_809 $4820(%rip) WORD $0xd1000493 // sub x19, x4, #1 WORD $0xf8737948 // ldr x8, [x10, x19, lsl #3] WORD $0xb10005df // cmn x14, #1 WORD $0x9a8e034e // csel x14, x26, x14, eq WORD $0x71000d1f // cmp w8, #3 - WORD $0x54000d0c // b.gt LBB0_538 $416(%rip) + WORD $0x54000d0c // b.gt LBB0_550 $416(%rip) WORD $0x7100051f // cmp w8, #1 - WORD $0x54001b80 // b.eq LBB0_555 $880(%rip) + WORD $0x54001b80 // b.eq LBB0_567 $880(%rip) WORD $0x7100091f // cmp w8, #2 - WORD $0x54001d00 // b.eq LBB0_560 $928(%rip) + WORD $0x54001d00 // b.eq LBB0_572 $928(%rip) WORD $0x71000d1f // cmp w8, #3 - WORD $0x54001c81 // b.ne LBB0_559 $912(%rip) + WORD $0x54001c81 // b.ne LBB0_571 $912(%rip) WORD $0x71008a9f // cmp w20, #34 - WORD $0x5400a3e1 // b.ne LBB0_829 $5244(%rip) + WORD $0x5400a781 // b.ne LBB0_844 $5360(%rip) WORD $0xf8337945 // str x5, [x10, x19, lsl #3] WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1b0113 // subs x19, x8, x27 - WORD $0x5400fc60 // b.eq LBB0_929 $8076(%rip) + WORD $0x54010040 // b.eq LBB0_945 $8200(%rip) WORD $0x3200f3e2 // mov w2, #1431655765 WORD $0xf101027f // cmp x19, #64 - WORD $0x540063e3 // b.lo LBB0_708 $3196(%rip) + WORD $0x540063e3 // b.lo LBB0_720 $3196(%rip) WORD $0xd2800004 // mov x4, #0 WORD $0x9280001e // mov lr, #-1 -LBB0_531: +LBB0_543: WORD $0x8b1b0131 // add x17, x9, x27 WORD $0xad405233 // ldp q19, q20, [x17] WORD $0xad415a35 // ldp q21, q22, [x17, #32] @@ -3059,22 +3281,22 @@ LBB0_531: WORD $0x53103ef4 // lsl w20, w23, #16 WORD $0xaa140231 // orr x17, x17, x20 WORD $0xaa160231 // orr x17, x17, x22 - WORD $0xb5000111 // cbnz x17, LBB0_535 $32(%rip) - WORD $0xb5000184 // cbnz x4, LBB0_536 $48(%rip) - WORD $0xb50002c6 // cbnz x6, LBB0_537 $88(%rip) -LBB0_534: + WORD $0xb5000111 // cbnz x17, LBB0_547 $32(%rip) + WORD $0xb5000184 // cbnz x4, LBB0_548 $48(%rip) + WORD $0xb50002c6 // cbnz x6, LBB0_549 $88(%rip) +LBB0_546: WORD $0xd1010273 // sub x19, x19, #64 WORD $0x9101037b // add x27, x27, #64 WORD $0xf100fe7f // cmp x19, #63 - WORD $0x54fff8a8 // b.hi LBB0_531 $-236(%rip) - WORD $0x140002d6 // b LBB0_705 $2904(%rip) -LBB0_535: + WORD $0x54fff8a8 // b.hi LBB0_543 $-236(%rip) + WORD $0x140002d6 // b LBB0_717 $2904(%rip) +LBB0_547: WORD $0xb10007df // cmn lr, #1 WORD $0xdac00234 // rbit x20, x17 WORD $0xdac01294 // clz x20, x20 WORD $0x8b1b0294 // add x20, x20, x27 WORD $0x9a9413de // csel lr, lr, x20, ne -LBB0_536: +LBB0_548: WORD $0x8a240234 // bic x20, x17, x4 WORD $0xaa140495 // orr x21, x4, x20, lsl #1 WORD $0x8a350231 // bic x17, x17, x21 @@ -3085,8 +3307,8 @@ LBB0_536: WORD $0xd200f231 // eor x17, x17, #0x5555555555555555 WORD $0x8a150231 // and x17, x17, x21 WORD $0x8a3100c6 // bic x6, x6, x17 - WORD $0xb4fffd86 // cbz x6, LBB0_534 $-80(%rip) -LBB0_537: + WORD $0xb4fffd86 // cbz x6, LBB0_546 $-80(%rip) +LBB0_549: WORD $0xdac000d1 // rbit x17, x6 WORD $0xdac01231 // clz x17, x17 WORD $0x8b1b0231 // add x17, x17, x27 @@ -3094,28 +3316,28 @@ LBB0_537: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6f8343b // tbz x27, #63, LBB0_642 $1668(%rip) - WORD $0x1400072d // b LBB0_901 $7348(%rip) -LBB0_538: + WORD $0xb6f8343b // tbz x27, #63, LBB0_654 $1668(%rip) + WORD $0x1400074c // b LBB0_917 $7472(%rip) +LBB0_550: WORD $0x7100111f // cmp w8, #4 - WORD $0x54000f40 // b.eq LBB0_557 $488(%rip) + WORD $0x54000f40 // b.eq LBB0_569 $488(%rip) WORD $0x7100151f // cmp w8, #5 - WORD $0x540010c0 // b.eq LBB0_562 $536(%rip) + WORD $0x540010c0 // b.eq LBB0_574 $536(%rip) WORD $0x7100191f // cmp w8, #6 - WORD $0x54000fa1 // b.ne LBB0_559 $500(%rip) + WORD $0x54000fa1 // b.ne LBB0_571 $500(%rip) WORD $0x71008a9f // cmp w20, #34 - WORD $0x54000fe1 // b.ne LBB0_561 $508(%rip) + WORD $0x54000fe1 // b.ne LBB0_573 $508(%rip) WORD $0x52800048 // mov w8, #2 WORD $0xf8337948 // str x8, [x10, x19, lsl #3] WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1b0113 // subs x19, x8, x27 - WORD $0x5400ef60 // b.eq LBB0_929 $7660(%rip) + WORD $0x5400f340 // b.eq LBB0_945 $7784(%rip) WORD $0x3200f3e2 // mov w2, #1431655765 WORD $0xf101027f // cmp x19, #64 - WORD $0x54005cc3 // b.lo LBB0_716 $2968(%rip) + WORD $0x54005cc3 // b.lo LBB0_728 $2968(%rip) WORD $0xd2800004 // mov x4, #0 WORD $0x9280001e // mov lr, #-1 -LBB0_545: +LBB0_557: WORD $0x8b1b0131 // add x17, x9, x27 WORD $0xad405233 // ldp q19, q20, [x17] WORD $0xad415a35 // ldp q21, q22, [x17, #32] @@ -3169,22 +3391,22 @@ LBB0_545: WORD $0x53103ef4 // lsl w20, w23, #16 WORD $0xaa140231 // orr x17, x17, x20 WORD $0xaa160231 // orr x17, x17, x22 - WORD $0xb5000111 // cbnz x17, LBB0_549 $32(%rip) - WORD $0xb5000184 // cbnz x4, LBB0_550 $48(%rip) - WORD $0xb50002c6 // cbnz x6, LBB0_551 $88(%rip) -LBB0_548: + WORD $0xb5000111 // cbnz x17, LBB0_561 $32(%rip) + WORD $0xb5000184 // cbnz x4, LBB0_562 $48(%rip) + WORD $0xb50002c6 // cbnz x6, LBB0_563 $88(%rip) +LBB0_560: WORD $0xd1010273 // sub x19, x19, #64 WORD $0x9101037b // add x27, x27, #64 WORD $0xf100fe7f // cmp x19, #63 - WORD $0x54fff8a8 // b.hi LBB0_545 $-236(%rip) - WORD $0x140002a1 // b LBB0_714 $2692(%rip) -LBB0_549: + WORD $0x54fff8a8 // b.hi LBB0_557 $-236(%rip) + WORD $0x140002a1 // b LBB0_726 $2692(%rip) +LBB0_561: WORD $0xb10007df // cmn lr, #1 WORD $0xdac00234 // rbit x20, x17 WORD $0xdac01294 // clz x20, x20 WORD $0x8b1b0294 // add x20, x20, x27 WORD $0x9a9413de // csel lr, lr, x20, ne -LBB0_550: +LBB0_562: WORD $0x8a240234 // bic x20, x17, x4 WORD $0xaa140495 // orr x21, x4, x20, lsl #1 WORD $0x8a350231 // bic x17, x17, x21 @@ -3195,8 +3417,8 @@ LBB0_550: WORD $0xd200f231 // eor x17, x17, #0x5555555555555555 WORD $0x8a150231 // and x17, x17, x21 WORD $0x8a3100c6 // bic x6, x6, x17 - WORD $0xb4fffd86 // cbz x6, LBB0_548 $-80(%rip) -LBB0_551: + WORD $0xb4fffd86 // cbz x6, LBB0_560 $-80(%rip) +LBB0_563: WORD $0xdac000d1 // rbit x17, x6 WORD $0xdac01231 // clz x17, x17 WORD $0x8b1b0231 // add x17, x17, x27 @@ -3204,91 +3426,91 @@ LBB0_551: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb7f8d8db // tbnz x27, #63, LBB0_901 $6936(%rip) -LBB0_552: + WORD $0xb7f8dcbb // tbnz x27, #63, LBB0_917 $7060(%rip) +LBB0_564: WORD $0xf900003b // str x27, [x1] WORD $0xaa1a03e8 // mov x8, x26 WORD $0xb27ff7f1 // mov x17, #9223372036854775806 WORD $0xeb11035f // cmp x26, x17 - WORD $0x54008aa8 // b.hi LBB0_830 $4436(%rip) + WORD $0x54008e48 // b.hi LBB0_845 $4552(%rip) WORD $0xf9400068 // ldr x8, [x3] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400d78c // b.gt LBB0_900 $6896(%rip) + WORD $0x5400db6c // b.gt LBB0_916 $7020(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000071 // str x17, [x3] WORD $0xf8287945 // str x5, [x10, x8, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffdba4 // cbnz x4, LBB0_501 $-1164(%rip) - WORD $0x1400044b // b LBB0_830 $4396(%rip) -LBB0_555: + WORD $0xb5ffdba4 // cbnz x4, LBB0_513 $-1164(%rip) + WORD $0x14000468 // b LBB0_845 $4512(%rip) +LBB0_567: WORD $0x7100b29f // cmp w20, #44 - WORD $0x54001560 // b.eq LBB0_601 $684(%rip) + WORD $0x54001560 // b.eq LBB0_613 $684(%rip) WORD $0x7101769f // cmp w20, #93 - WORD $0x54000240 // b.eq LBB0_563 $72(%rip) - WORD $0x14000445 // b LBB0_829 $4372(%rip) -LBB0_557: + WORD $0x54000240 // b.eq LBB0_575 $72(%rip) + WORD $0x14000462 // b LBB0_844 $4488(%rip) +LBB0_569: WORD $0x7100ea9f // cmp w20, #58 - WORD $0x54008861 // b.ne LBB0_829 $4364(%rip) + WORD $0x54008c01 // b.ne LBB0_844 $4480(%rip) WORD $0xf833795f // str xzr, [x10, x19, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffda24 // cbnz x4, LBB0_501 $-1212(%rip) - WORD $0x1400043f // b LBB0_830 $4348(%rip) -LBB0_559: + WORD $0xb5ffda24 // cbnz x4, LBB0_513 $-1212(%rip) + WORD $0x1400045c // b LBB0_845 $4464(%rip) +LBB0_571: WORD $0xf9000073 // str x19, [x3] - WORD $0x1400000e // b LBB0_565 $56(%rip) -LBB0_560: + WORD $0x1400000e // b LBB0_577 $56(%rip) +LBB0_572: WORD $0x7100b29f // cmp w20, #44 - WORD $0x540014c0 // b.eq LBB0_603 $664(%rip) -LBB0_561: + WORD $0x540014c0 // b.eq LBB0_615 $664(%rip) +LBB0_573: WORD $0x7101f69f // cmp w20, #125 - WORD $0x54000080 // b.eq LBB0_563 $16(%rip) - WORD $0x14000437 // b LBB0_829 $4316(%rip) -LBB0_562: + WORD $0x54000080 // b.eq LBB0_575 $16(%rip) + WORD $0x14000454 // b LBB0_844 $4432(%rip) +LBB0_574: WORD $0x7101769f // cmp w20, #93 - WORD $0x540000c1 // b.ne LBB0_564 $24(%rip) -LBB0_563: + WORD $0x540000c1 // b.ne LBB0_576 $24(%rip) +LBB0_575: WORD $0xf9000073 // str x19, [x3] WORD $0xaa1303e4 // mov x4, x19 WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffd873 // cbnz x19, LBB0_501 $-1268(%rip) - WORD $0x14000431 // b LBB0_830 $4292(%rip) -LBB0_564: + WORD $0xb5ffd873 // cbnz x19, LBB0_513 $-1268(%rip) + WORD $0x1400044e // b LBB0_845 $4408(%rip) +LBB0_576: WORD $0xf833794f // str x15, [x10, x19, lsl #3] -LBB0_565: +LBB0_577: WORD $0x92800028 // mov x8, #-2 WORD $0x71016a9f // cmp w20, #90 - WORD $0x5400142c // b.gt LBB0_605 $644(%rip) + WORD $0x5400142c // b.gt LBB0_617 $644(%rip) WORD $0x5100c291 // sub w17, w20, #48 WORD $0x71002a3f // cmp w17, #10 - WORD $0x54001ac2 // b.hs LBB0_626 $856(%rip) + WORD $0x54001ac2 // b.hs LBB0_638 $856(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1a0114 // subs x20, x8, x26 - WORD $0x5400d300 // b.eq LBB0_903 $6752(%rip) + WORD $0x5400d6e0 // b.eq LBB0_919 $6876(%rip) WORD $0x394003c8 // ldrb w8, [lr] WORD $0x7100c11f // cmp w8, #48 - WORD $0x54000181 // b.ne LBB0_572 $48(%rip) + WORD $0x54000181 // b.ne LBB0_584 $48(%rip) WORD $0xf100069f // cmp x20, #1 - WORD $0x54002020 // b.eq LBB0_642 $1028(%rip) + WORD $0x54002020 // b.eq LBB0_654 $1028(%rip) WORD $0x387b6928 // ldrb w8, [x9, x27] WORD $0x5100b908 // sub w8, w8, #46 WORD $0x7100dd1f // cmp w8, #55 - WORD $0x54001fa8 // b.hi LBB0_642 $1012(%rip) + WORD $0x54001fa8 // b.hi LBB0_654 $1012(%rip) WORD $0x9ac821e8 // lsl x8, x15, x8 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea11011f // tst x8, x17 - WORD $0x54001f00 // b.eq LBB0_642 $992(%rip) -LBB0_572: + WORD $0x54001f00 // b.eq LBB0_654 $992(%rip) +LBB0_584: WORD $0xf100429f // cmp x20, #16 - WORD $0x54005543 // b.lo LBB0_732 $2728(%rip) + WORD $0x54005543 // b.lo LBB0_744 $2728(%rip) WORD $0xd2800015 // mov x21, #0 WORD $0xd280001b // mov x27, #0 WORD $0x92800013 // mov x19, #-1 WORD $0x92800004 // mov x4, #-1 WORD $0x92800008 // mov x8, #-1 -LBB0_574: +LBB0_586: WORD $0x3cfb6bd3 // ldr q19, [lr, x27] WORD $0x6e248e74 // cmeq.16b v20, v19, v4 WORD $0x6e258e75 // cmeq.16b v21, v19, v5 @@ -3331,155 +3553,155 @@ LBB0_574: WORD $0x1a850316 // csel w22, w24, w5, eq WORD $0x51000622 // sub w2, w17, #1 WORD $0x6a110058 // ands w24, w2, w17 - WORD $0x54003ca1 // b.ne LBB0_706 $1940(%rip) + WORD $0x54003ca1 // b.ne LBB0_718 $1940(%rip) WORD $0x510006e2 // sub w2, w23, #1 WORD $0x6a170058 // ands w24, w2, w23 - WORD $0x54003c41 // b.ne LBB0_706 $1928(%rip) + WORD $0x54003c41 // b.ne LBB0_718 $1928(%rip) WORD $0x510006c2 // sub w2, w22, #1 WORD $0x6a160058 // ands w24, w2, w22 - WORD $0x54003be1 // b.ne LBB0_706 $1916(%rip) - WORD $0x340000d1 // cbz w17, LBB0_580 $24(%rip) + WORD $0x54003be1 // b.ne LBB0_718 $1916(%rip) + WORD $0x340000d1 // cbz w17, LBB0_592 $24(%rip) WORD $0x5ac00231 // rbit w17, w17 WORD $0x5ac01231 // clz w17, w17 WORD $0xb100051f // cmn x8, #1 - WORD $0x54003be1 // b.ne LBB0_707 $1916(%rip) + WORD $0x54003be1 // b.ne LBB0_719 $1916(%rip) WORD $0x8b110368 // add x8, x27, x17 -LBB0_580: - WORD $0x340000d7 // cbz w23, LBB0_583 $24(%rip) +LBB0_592: + WORD $0x340000d7 // cbz w23, LBB0_595 $24(%rip) WORD $0x5ac002f1 // rbit w17, w23 WORD $0x5ac01231 // clz w17, w17 WORD $0xb100049f // cmn x4, #1 - WORD $0x54003b21 // b.ne LBB0_707 $1892(%rip) + WORD $0x54003b21 // b.ne LBB0_719 $1892(%rip) WORD $0x8b110364 // add x4, x27, x17 -LBB0_583: - WORD $0x340000d6 // cbz w22, LBB0_586 $24(%rip) +LBB0_595: + WORD $0x340000d6 // cbz w22, LBB0_598 $24(%rip) WORD $0x5ac002d1 // rbit w17, w22 WORD $0x5ac01231 // clz w17, w17 WORD $0xb100067f // cmn x19, #1 - WORD $0x54003a61 // b.ne LBB0_707 $1868(%rip) + WORD $0x54003a61 // b.ne LBB0_719 $1868(%rip) WORD $0x8b110373 // add x19, x27, x17 -LBB0_586: +LBB0_598: WORD $0x710040df // cmp w6, #16 - WORD $0x54000a81 // b.ne LBB0_611 $336(%rip) + WORD $0x54000a81 // b.ne LBB0_623 $336(%rip) WORD $0x9100437b // add x27, x27, #16 WORD $0xd10042b5 // sub x21, x21, #16 WORD $0x8b150296 // add x22, x20, x21 WORD $0xf1003edf // cmp x22, #15 - WORD $0x54fff6e8 // b.hi LBB0_574 $-292(%rip) + WORD $0x54fff6e8 // b.hi LBB0_586 $-292(%rip) WORD $0x8b1b03d5 // add x21, lr, x27 WORD $0xeb1b029f // cmp x20, x27 - WORD $0x540009c0 // b.eq LBB0_612 $312(%rip) -LBB0_589: + WORD $0x540009c0 // b.eq LBB0_624 $312(%rip) +LBB0_601: WORD $0x8b1602b7 // add x23, x21, x22 WORD $0x8b1a01b1 // add x17, x13, x26 WORD $0xcb150234 // sub x20, x17, x21 WORD $0xcb1e02a6 // sub x6, x21, lr WORD $0xaa1503fb // mov x27, x21 - WORD $0x14000009 // b LBB0_592 $36(%rip) -LBB0_590: + WORD $0x14000009 // b LBB0_604 $36(%rip) +LBB0_602: WORD $0xb100049f // cmn x4, #1 WORD $0xaa0603e4 // mov x4, x6 - WORD $0x54000c41 // b.ne LBB0_624 $392(%rip) -LBB0_591: + WORD $0x54000c41 // b.ne LBB0_636 $392(%rip) +LBB0_603: WORD $0xd1000694 // sub x20, x20, #1 WORD $0x910004c6 // add x6, x6, #1 WORD $0xaa1b03f5 // mov x21, x27 WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb4001ff6 // cbz x22, LBB0_655 $1020(%rip) -LBB0_592: + WORD $0xb4001ff6 // cbz x22, LBB0_667 $1020(%rip) +LBB0_604: WORD $0x38401771 // ldrb w17, [x27], #1 WORD $0x5100c222 // sub w2, w17, #48 WORD $0x7100285f // cmp w2, #10 - WORD $0x54ffff03 // b.lo LBB0_591 $-32(%rip) + WORD $0x54ffff03 // b.lo LBB0_603 $-32(%rip) WORD $0x7100b63f // cmp w17, #45 - WORD $0x5400016d // b.le LBB0_598 $44(%rip) + WORD $0x5400016d // b.le LBB0_610 $44(%rip) WORD $0x7101963f // cmp w17, #101 - WORD $0x54fffe20 // b.eq LBB0_590 $-60(%rip) + WORD $0x54fffe20 // b.eq LBB0_602 $-60(%rip) WORD $0x7101163f // cmp w17, #69 - WORD $0x54fffde0 // b.eq LBB0_590 $-68(%rip) + WORD $0x54fffde0 // b.eq LBB0_602 $-68(%rip) WORD $0x7100ba3f // cmp w17, #46 - WORD $0x54000681 // b.ne LBB0_612 $208(%rip) + WORD $0x54000681 // b.ne LBB0_624 $208(%rip) WORD $0xb100051f // cmn x8, #1 WORD $0xaa0603e8 // mov x8, x6 - WORD $0x54fffda0 // b.eq LBB0_591 $-76(%rip) - WORD $0x1400004d // b LBB0_624 $308(%rip) -LBB0_598: + WORD $0x54fffda0 // b.eq LBB0_603 $-76(%rip) + WORD $0x1400004d // b LBB0_636 $308(%rip) +LBB0_610: WORD $0x7100ae3f // cmp w17, #43 - WORD $0x54000060 // b.eq LBB0_600 $12(%rip) + WORD $0x54000060 // b.eq LBB0_612 $12(%rip) WORD $0x7100b63f // cmp w17, #45 - WORD $0x54000581 // b.ne LBB0_612 $176(%rip) -LBB0_600: + WORD $0x54000581 // b.ne LBB0_624 $176(%rip) +LBB0_612: WORD $0xb100067f // cmn x19, #1 WORD $0xaa0603f3 // mov x19, x6 - WORD $0x54fffca0 // b.eq LBB0_591 $-108(%rip) - WORD $0x14000045 // b LBB0_624 $276(%rip) -LBB0_601: + WORD $0x54fffca0 // b.eq LBB0_603 $-108(%rip) + WORD $0x14000045 // b LBB0_636 $276(%rip) +LBB0_613: WORD $0xf13ffc9f // cmp x4, #4095 - WORD $0x5400c0ec // b.gt LBB0_900 $6172(%rip) + WORD $0x5400c4cc // b.gt LBB0_916 $6296(%rip) WORD $0x91000488 // add x8, x4, #1 WORD $0xf9000068 // str x8, [x3] WORD $0xf824795f // str xzr, [x10, x4, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffc504 // cbnz x4, LBB0_501 $-1888(%rip) - WORD $0x14000396 // b LBB0_830 $3672(%rip) -LBB0_603: + WORD $0xb5ffc504 // cbnz x4, LBB0_513 $-1888(%rip) + WORD $0x140003b3 // b LBB0_845 $3788(%rip) +LBB0_615: WORD $0xf13ffc9f // cmp x4, #4095 - WORD $0x5400bfcc // b.gt LBB0_900 $6136(%rip) + WORD $0x5400c3ac // b.gt LBB0_916 $6260(%rip) WORD $0x91000488 // add x8, x4, #1 WORD $0xf9000068 // str x8, [x3] WORD $0xf8247942 // str x2, [x10, x4, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffc3e4 // cbnz x4, LBB0_501 $-1924(%rip) - WORD $0x1400038d // b LBB0_830 $3636(%rip) -LBB0_605: + WORD $0xb5ffc3e4 // cbnz x4, LBB0_513 $-1924(%rip) + WORD $0x140003aa // b LBB0_845 $3752(%rip) +LBB0_617: WORD $0x7101b69f // cmp w20, #109 - WORD $0x540008ed // b.le LBB0_632 $284(%rip) + WORD $0x540008ed // b.le LBB0_644 $284(%rip) WORD $0x7101ba9f // cmp w20, #110 - WORD $0x54000bc0 // b.eq LBB0_639 $376(%rip) + WORD $0x54000bc0 // b.eq LBB0_651 $376(%rip) WORD $0x7101d29f // cmp w20, #116 - WORD $0x54000a40 // b.eq LBB0_637 $328(%rip) + WORD $0x54000a40 // b.eq LBB0_649 $328(%rip) WORD $0x7101ee9f // cmp w20, #123 - WORD $0x540070a1 // b.ne LBB0_830 $3604(%rip) + WORD $0x54007441 // b.ne LBB0_845 $3720(%rip) WORD $0xf9400068 // ldr x8, [x3] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400bd8c // b.gt LBB0_900 $6064(%rip) + WORD $0x5400c16c // b.gt LBB0_916 $6188(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000071 // str x17, [x3] WORD $0x528000d1 // mov w17, #6 WORD $0xf8287951 // str x17, [x10, x8, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffc184 // cbnz x4, LBB0_501 $-2000(%rip) - WORD $0x1400037a // b LBB0_830 $3560(%rip) -LBB0_611: + WORD $0xb5ffc184 // cbnz x4, LBB0_513 $-2000(%rip) + WORD $0x14000397 // b LBB0_845 $3676(%rip) +LBB0_623: WORD $0x8b2643d1 // add x17, lr, w6, uxtw WORD $0x8b1b0235 // add x21, x17, x27 -LBB0_612: +LBB0_624: WORD $0x92800014 // mov x20, #-1 - WORD $0xb400bd08 // cbz x8, LBB0_904 $6048(%rip) -LBB0_613: - WORD $0xb400bcf3 // cbz x19, LBB0_904 $6044(%rip) - WORD $0xb400bcc4 // cbz x4, LBB0_904 $6040(%rip) + WORD $0xb400c0e8 // cbz x8, LBB0_920 $6172(%rip) +LBB0_625: + WORD $0xb400c0d3 // cbz x19, LBB0_920 $6168(%rip) + WORD $0xb400c0a4 // cbz x4, LBB0_920 $6164(%rip) WORD $0xcb1e02a6 // sub x6, x21, lr WORD $0xd10004d1 // sub x17, x6, #1 WORD $0xeb11011f // cmp x8, x17 - WORD $0x540002a0 // b.eq LBB0_623 $84(%rip) + WORD $0x540002a0 // b.eq LBB0_635 $84(%rip) WORD $0xeb11027f // cmp x19, x17 - WORD $0x54000260 // b.eq LBB0_623 $76(%rip) + WORD $0x54000260 // b.eq LBB0_635 $76(%rip) WORD $0xeb11009f // cmp x4, x17 - WORD $0x54000220 // b.eq LBB0_623 $68(%rip) + WORD $0x54000220 // b.eq LBB0_635 $68(%rip) WORD $0xf1000671 // subs x17, x19, #1 - WORD $0x5400006b // b.lt LBB0_620 $12(%rip) + WORD $0x5400006b // b.lt LBB0_632 $12(%rip) WORD $0xeb11009f // cmp x4, x17 - WORD $0x5400bb61 // b.ne LBB0_905 $5996(%rip) -LBB0_620: + WORD $0x5400bf41 // b.ne LBB0_921 $6120(%rip) +LBB0_632: WORD $0xaa040111 // orr x17, x8, x4 - WORD $0xb7f80071 // tbnz x17, #63, LBB0_622 $12(%rip) + WORD $0xb7f80071 // tbnz x17, #63, LBB0_634 $12(%rip) WORD $0xeb04011f // cmp x8, x4 - WORD $0x5400bb8a // b.ge LBB0_907 $6000(%rip) -LBB0_622: + WORD $0x5400bf6a // b.ge LBB0_923 $6124(%rip) +LBB0_634: WORD $0xd37ffe31 // lsr x17, x17, #63 WORD $0x52000231 // eor w17, w17, #0x1 WORD $0xd1000482 // sub x2, x4, #1 @@ -3487,105 +3709,105 @@ LBB0_622: WORD $0x1a9f17e8 // cset w8, eq WORD $0x6a08023f // tst w17, w8 WORD $0xda8400d4 // csinv x20, x6, x4, eq - WORD $0x14000002 // b LBB0_624 $8(%rip) -LBB0_623: + WORD $0x14000002 // b LBB0_636 $8(%rip) +LBB0_635: WORD $0xcb0603f4 // neg x20, x6 -LBB0_624: +LBB0_636: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb7f8b934 // tbnz x20, #63, LBB0_904 $5924(%rip) + WORD $0xb7f8bd14 // tbnz x20, #63, LBB0_920 $6048(%rip) WORD $0x8b14035b // add x27, x26, x20 - WORD $0x14000034 // b LBB0_642 $208(%rip) -LBB0_626: + WORD $0x14000034 // b LBB0_654 $208(%rip) +LBB0_638: WORD $0x71008a9f // cmp w20, #34 - WORD $0x540008a0 // b.eq LBB0_646 $276(%rip) + WORD $0x540008a0 // b.eq LBB0_658 $276(%rip) WORD $0x7100b69f // cmp w20, #45 - WORD $0x54006a21 // b.ne LBB0_830 $3396(%rip) + WORD $0x54006dc1 // b.ne LBB0_845 $3512(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1b0117 // subs x23, x8, x27 - WORD $0x5400b980 // b.eq LBB0_910 $5936(%rip) + WORD $0x5400bd60 // b.eq LBB0_926 $6060(%rip) WORD $0x8b1b0128 // add x8, x9, x27 - WORD $0xf9000fe8 // str x8, [sp, #24] + WORD $0xf90017e8 // str x8, [sp, #40] WORD $0x39400111 // ldrb w17, [x8] WORD $0x7100c23f // cmp w17, #48 - WORD $0x54001401 // b.ne LBB0_658 $640(%rip) + WORD $0x54001401 // b.ne LBB0_670 $640(%rip) WORD $0xf10006ff // cmp x23, #1 - WORD $0x54001261 // b.ne LBB0_656 $588(%rip) -LBB0_631: + WORD $0x54001261 // b.ne LBB0_668 $588(%rip) +LBB0_643: WORD $0x52800026 // mov w6, #1 - WORD $0x14000138 // b LBB0_704 $1248(%rip) -LBB0_632: + WORD $0x14000138 // b LBB0_716 $1248(%rip) +LBB0_644: WORD $0x71016e9f // cmp w20, #91 - WORD $0x54000540 // b.eq LBB0_644 $168(%rip) + WORD $0x54000540 // b.eq LBB0_656 $168(%rip) WORD $0x71019a9f // cmp w20, #102 - WORD $0x54006821 // b.ne LBB0_830 $3332(%rip) + WORD $0x54006bc1 // b.ne LBB0_845 $3448(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1001111 // sub x17, x8, #4 WORD $0xeb11035f // cmp x26, x17 - WORD $0x5400c262 // b.hs LBB0_938 $6220(%rip) + WORD $0x5400c642 // b.hs LBB0_954 $6344(%rip) WORD $0xb87b6928 // ldr w8, [x9, x27] WORD $0x528d8c31 // mov w17, #27745 WORD $0x72acae71 // movk w17, #25971, lsl #16 WORD $0x6b11011f // cmp w8, w17 - WORD $0x5400b741 // b.ne LBB0_913 $5864(%rip) + WORD $0x5400bb21 // b.ne LBB0_929 $5988(%rip) WORD $0x9100175b // add x27, x26, #5 - WORD $0x14000015 // b LBB0_642 $84(%rip) -LBB0_637: + WORD $0x14000015 // b LBB0_654 $84(%rip) +LBB0_649: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1000d11 // sub x17, x8, #3 WORD $0xeb11035f // cmp x26, x17 - WORD $0x5400c102 // b.hs LBB0_938 $6176(%rip) + WORD $0x5400c4e2 // b.hs LBB0_954 $6300(%rip) WORD $0xb87a6928 // ldr w8, [x9, x26] WORD $0x528e4e91 // mov w17, #29300 WORD $0x72acaeb1 // movk w17, #25973, lsl #16 WORD $0x6b11011f // cmp w8, w17 - WORD $0x54000160 // b.eq LBB0_641 $44(%rip) - WORD $0x140005d7 // b LBB0_922 $5980(%rip) -LBB0_639: + WORD $0x54000160 // b.eq LBB0_653 $44(%rip) + WORD $0x140005f6 // b LBB0_938 $6104(%rip) +LBB0_651: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1000d11 // sub x17, x8, #3 WORD $0xeb11035f // cmp x26, x17 - WORD $0x5400bfc2 // b.hs LBB0_938 $6136(%rip) + WORD $0x5400c3a2 // b.hs LBB0_954 $6260(%rip) WORD $0xb87a6928 // ldr w8, [x9, x26] WORD $0x528eadd1 // mov w17, #30062 WORD $0x72ad8d91 // movk w17, #27756, lsl #16 WORD $0x6b11011f // cmp w8, w17 - WORD $0x5400b741 // b.ne LBB0_918 $5864(%rip) -LBB0_641: + WORD $0x5400bb21 // b.ne LBB0_934 $5988(%rip) +LBB0_653: WORD $0x9100135b // add x27, x26, #4 -LBB0_642: +LBB0_654: WORD $0xf900003b // str x27, [x1] WORD $0xaa1a03e8 // mov x8, x26 WORD $0xeb06035f // cmp x26, x6 - WORD $0x540063c2 // b.hs LBB0_830 $3192(%rip) -LBB0_643: + WORD $0x54006762 // b.hs LBB0_845 $3308(%rip) +LBB0_655: WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffb584 // cbnz x4, LBB0_501 $-2384(%rip) - WORD $0x1400031a // b LBB0_830 $3176(%rip) -LBB0_644: + WORD $0xb5ffb584 // cbnz x4, LBB0_513 $-2384(%rip) + WORD $0x14000337 // b LBB0_845 $3292(%rip) +LBB0_656: WORD $0xf9400068 // ldr x8, [x3] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400b02c // b.gt LBB0_900 $5636(%rip) + WORD $0x5400b40c // b.gt LBB0_916 $5760(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000071 // str x17, [x3] WORD $0x528000b1 // mov w17, #5 WORD $0xf8287951 // str x17, [x10, x8, lsl #3] WORD $0xf9400064 // ldr x4, [x3] WORD $0xaa0e03e8 // mov x8, x14 - WORD $0xb5ffb424 // cbnz x4, LBB0_501 $-2428(%rip) - WORD $0x1400030f // b LBB0_830 $3132(%rip) -LBB0_646: + WORD $0xb5ffb424 // cbnz x4, LBB0_513 $-2428(%rip) + WORD $0x1400032c // b LBB0_845 $3248(%rip) +LBB0_658: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1b0113 // subs x19, x8, x27 - WORD $0x5400ba60 // b.eq LBB0_929 $5964(%rip) + WORD $0x5400be40 // b.eq LBB0_945 $6088(%rip) WORD $0x3200f3f8 // mov w24, #1431655765 WORD $0xf101027f // cmp x19, #64 - WORD $0x54002e03 // b.lo LBB0_725 $1472(%rip) + WORD $0x54002e03 // b.lo LBB0_737 $1472(%rip) WORD $0xd2800004 // mov x4, #0 WORD $0x9280001e // mov lr, #-1 -LBB0_649: +LBB0_661: WORD $0x8b1b0131 // add x17, x9, x27 WORD $0xad405233 // ldp q19, q20, [x17] WORD $0xad415a35 // ldp q21, q22, [x17, #32] @@ -3639,22 +3861,22 @@ LBB0_649: WORD $0x53103ea2 // lsl w2, w21, #16 WORD $0xaa020231 // orr x17, x17, x2 WORD $0xaa140231 // orr x17, x17, x20 - WORD $0xb5000111 // cbnz x17, LBB0_653 $32(%rip) - WORD $0xb5000184 // cbnz x4, LBB0_654 $48(%rip) - WORD $0xb5ffc0c6 // cbnz x6, LBB0_537 $-2024(%rip) -LBB0_652: + WORD $0xb5000111 // cbnz x17, LBB0_665 $32(%rip) + WORD $0xb5000184 // cbnz x4, LBB0_666 $48(%rip) + WORD $0xb5ffc0c6 // cbnz x6, LBB0_549 $-2024(%rip) +LBB0_664: WORD $0xd1010273 // sub x19, x19, #64 WORD $0x9101037b // add x27, x27, #64 WORD $0xf100fe7f // cmp x19, #63 - WORD $0x54fff8a8 // b.hi LBB0_649 $-236(%rip) - WORD $0x1400012f // b LBB0_724 $1212(%rip) -LBB0_653: + WORD $0x54fff8a8 // b.hi LBB0_661 $-236(%rip) + WORD $0x1400012f // b LBB0_736 $1212(%rip) +LBB0_665: WORD $0xb10007df // cmn lr, #1 WORD $0xdac00222 // rbit x2, x17 WORD $0xdac01042 // clz x2, x2 WORD $0x8b1b0042 // add x2, x2, x27 WORD $0x9a8213de // csel lr, lr, x2, ne -LBB0_654: +LBB0_666: WORD $0x8a240222 // bic x2, x17, x4 WORD $0xaa020485 // orr x5, x4, x2, lsl #1 WORD $0x8a250231 // bic x17, x17, x5 @@ -3665,35 +3887,35 @@ LBB0_654: WORD $0xd200f231 // eor x17, x17, #0x5555555555555555 WORD $0x8a050231 // and x17, x17, x5 WORD $0x8a3100c6 // bic x6, x6, x17 - WORD $0xb4fffd86 // cbz x6, LBB0_652 $-80(%rip) - WORD $0x17fffdf0 // b LBB0_537 $-2112(%rip) -LBB0_655: + WORD $0xb4fffd86 // cbz x6, LBB0_664 $-80(%rip) + WORD $0x17fffdf0 // b LBB0_549 $-2112(%rip) +LBB0_667: WORD $0xaa1703f5 // mov x21, x23 WORD $0x92800014 // mov x20, #-1 - WORD $0xb5ffe828 // cbnz x8, LBB0_613 $-764(%rip) - WORD $0x14000527 // b LBB0_904 $5276(%rip) -LBB0_656: - WORD $0xf9400fe8 // ldr x8, [sp, #24] + WORD $0xb5ffe828 // cbnz x8, LBB0_625 $-764(%rip) + WORD $0x14000546 // b LBB0_920 $5400(%rip) +LBB0_668: + WORD $0xf94017e8 // ldr x8, [sp, #40] WORD $0x39400511 // ldrb w17, [x8, #1] WORD $0x5100ba31 // sub w17, w17, #46 WORD $0x7100de3f // cmp w17, #55 - WORD $0x54ffed48 // b.hi LBB0_631 $-600(%rip) + WORD $0x54ffed48 // b.hi LBB0_643 $-600(%rip) WORD $0x9ad121f1 // lsl x17, x15, x17 WORD $0x52800026 // mov w6, #1 WORD $0xb20903e8 // mov x8, #36028797027352576 WORD $0xf2800028 // movk x8, #1 WORD $0xea08023f // tst x17, x8 - WORD $0x540013a0 // b.eq LBB0_704 $628(%rip) -LBB0_658: + WORD $0x540013a0 // b.eq LBB0_716 $628(%rip) +LBB0_670: WORD $0xf10042ff // cmp x23, #16 - WORD $0x54002883 // b.lo LBB0_734 $1296(%rip) + WORD $0x54002883 // b.lo LBB0_746 $1296(%rip) WORD $0xd2800016 // mov x22, #0 WORD $0xd2800006 // mov x6, #0 WORD $0x9280001e // mov lr, #-1 WORD $0x92800004 // mov x4, #-1 WORD $0x92800013 // mov x19, #-1 -LBB0_660: - WORD $0xf9400fe8 // ldr x8, [sp, #24] +LBB0_672: + WORD $0xf94017e8 // ldr x8, [sp, #40] WORD $0x3ce66913 // ldr q19, [x8, x6] WORD $0x6e248e74 // cmeq.16b v20, v19, v4 WORD $0x6e258e75 // cmeq.16b v21, v19, v5 @@ -3736,116 +3958,116 @@ LBB0_660: WORD $0x1a9500b5 // csel w21, w5, w21, eq WORD $0x51000728 // sub w8, w25, #1 WORD $0x6a190118 // ands w24, w8, w25 - WORD $0x54001ae1 // b.ne LBB0_723 $860(%rip) + WORD $0x54001ae1 // b.ne LBB0_735 $860(%rip) WORD $0x51000628 // sub w8, w17, #1 WORD $0x6a110118 // ands w24, w8, w17 - WORD $0x54001a81 // b.ne LBB0_723 $848(%rip) + WORD $0x54001a81 // b.ne LBB0_735 $848(%rip) WORD $0x510006a8 // sub w8, w21, #1 WORD $0x6a150118 // ands w24, w8, w21 - WORD $0x54001a21 // b.ne LBB0_723 $836(%rip) - WORD $0x340000d9 // cbz w25, LBB0_666 $24(%rip) + WORD $0x54001a21 // b.ne LBB0_735 $836(%rip) + WORD $0x340000d9 // cbz w25, LBB0_678 $24(%rip) WORD $0x5ac00328 // rbit w8, w25 WORD $0x5ac01119 // clz w25, w8 WORD $0xb100067f // cmn x19, #1 - WORD $0x540020a1 // b.ne LBB0_733 $1044(%rip) + WORD $0x540020a1 // b.ne LBB0_745 $1044(%rip) WORD $0x8b1900d3 // add x19, x6, x25 -LBB0_666: - WORD $0x340000d1 // cbz w17, LBB0_669 $24(%rip) +LBB0_678: + WORD $0x340000d1 // cbz w17, LBB0_681 $24(%rip) WORD $0x5ac00228 // rbit w8, w17 WORD $0x5ac01111 // clz w17, w8 WORD $0xb100049f // cmn x4, #1 - WORD $0x54001ec1 // b.ne LBB0_731 $984(%rip) + WORD $0x54001ec1 // b.ne LBB0_743 $984(%rip) WORD $0x8b1100c4 // add x4, x6, x17 -LBB0_669: - WORD $0x340000d5 // cbz w21, LBB0_672 $24(%rip) +LBB0_681: + WORD $0x340000d5 // cbz w21, LBB0_684 $24(%rip) WORD $0x5ac002a8 // rbit w8, w21 WORD $0x5ac01111 // clz w17, w8 WORD $0xb10007df // cmn lr, #1 - WORD $0x54001e01 // b.ne LBB0_731 $960(%rip) + WORD $0x54001e01 // b.ne LBB0_743 $960(%rip) WORD $0x8b1100de // add lr, x6, x17 -LBB0_672: +LBB0_684: WORD $0x7100429f // cmp w20, #16 - WORD $0x540005c1 // b.ne LBB0_690 $184(%rip) + WORD $0x540005c1 // b.ne LBB0_702 $184(%rip) WORD $0x910040c6 // add x6, x6, #16 WORD $0xd10042d6 // sub x22, x22, #16 WORD $0x8b1602f4 // add x20, x23, x22 WORD $0xf1003e9f // cmp x20, #15 - WORD $0x54fff6c8 // b.hi LBB0_660 $-296(%rip) - WORD $0xf9400fe8 // ldr x8, [sp, #24] + WORD $0x54fff6c8 // b.hi LBB0_672 $-296(%rip) + WORD $0xf94017e8 // ldr x8, [sp, #40] WORD $0x8b060115 // add x21, x8, x6 WORD $0xeb0602ff // cmp x23, x6 - WORD $0x54000500 // b.eq LBB0_691 $160(%rip) -LBB0_675: + WORD $0x54000500 // b.eq LBB0_703 $160(%rip) +LBB0_687: WORD $0x8b1402a2 // add x2, x21, x20 WORD $0x8b150188 // add x8, x12, x21 WORD $0xcb1a0117 // sub x23, x8, x26 WORD $0xaa1503f6 // mov x22, x21 - WORD $0x14000008 // b LBB0_679 $32(%rip) -LBB0_676: + WORD $0x14000008 // b LBB0_691 $32(%rip) +LBB0_688: WORD $0xb100049f // cmn x4, #1 - WORD $0x54001561 // b.ne LBB0_722 $684(%rip) + WORD $0x54001561 // b.ne LBB0_734 $684(%rip) WORD $0xd10006e4 // sub x4, x23, #1 -LBB0_678: +LBB0_690: WORD $0x910006f7 // add x23, x23, #1 WORD $0xaa1603f5 // mov x21, x22 WORD $0xd1000694 // sub x20, x20, #1 - WORD $0xb4000f34 // cbz x20, LBB0_715 $484(%rip) -LBB0_679: + WORD $0xb4000f34 // cbz x20, LBB0_727 $484(%rip) +LBB0_691: WORD $0x384016d1 // ldrb w17, [x22], #1 WORD $0x5100c228 // sub w8, w17, #48 WORD $0x7100291f // cmp w8, #10 - WORD $0x54ffff23 // b.lo LBB0_678 $-28(%rip) + WORD $0x54ffff23 // b.lo LBB0_690 $-28(%rip) WORD $0x7100b63f // cmp w17, #45 - WORD $0x5400016d // b.le LBB0_686 $44(%rip) + WORD $0x5400016d // b.le LBB0_698 $44(%rip) WORD $0x7101963f // cmp w17, #101 - WORD $0x54fffe40 // b.eq LBB0_676 $-56(%rip) + WORD $0x54fffe40 // b.eq LBB0_688 $-56(%rip) WORD $0x7101163f // cmp w17, #69 - WORD $0x54fffe00 // b.eq LBB0_676 $-64(%rip) + WORD $0x54fffe00 // b.eq LBB0_688 $-64(%rip) WORD $0x7100ba3f // cmp w17, #46 - WORD $0x54000201 // b.ne LBB0_691 $64(%rip) + WORD $0x54000201 // b.ne LBB0_703 $64(%rip) WORD $0xb100067f // cmn x19, #1 - WORD $0x54001301 // b.ne LBB0_722 $608(%rip) + WORD $0x54001301 // b.ne LBB0_734 $608(%rip) WORD $0xd10006f3 // sub x19, x23, #1 - WORD $0x17ffffed // b LBB0_678 $-76(%rip) -LBB0_686: + WORD $0x17ffffed // b LBB0_690 $-76(%rip) +LBB0_698: WORD $0x7100ae3f // cmp w17, #43 - WORD $0x54000060 // b.eq LBB0_688 $12(%rip) + WORD $0x54000060 // b.eq LBB0_700 $12(%rip) WORD $0x7100b63f // cmp w17, #45 - WORD $0x54000101 // b.ne LBB0_691 $32(%rip) -LBB0_688: + WORD $0x54000101 // b.ne LBB0_703 $32(%rip) +LBB0_700: WORD $0xb10007df // cmn lr, #1 - WORD $0x54001201 // b.ne LBB0_722 $576(%rip) + WORD $0x54001201 // b.ne LBB0_734 $576(%rip) WORD $0xd10006fe // sub lr, x23, #1 - WORD $0x17ffffe5 // b LBB0_678 $-108(%rip) -LBB0_690: - WORD $0xf9400fe8 // ldr x8, [sp, #24] + WORD $0x17ffffe5 // b LBB0_690 $-108(%rip) +LBB0_702: + WORD $0xf94017e8 // ldr x8, [sp, #40] WORD $0x8b344108 // add x8, x8, w20, uxtw WORD $0x8b060115 // add x21, x8, x6 -LBB0_691: +LBB0_703: WORD $0x92800006 // mov x6, #-1 - WORD $0xb4009553 // cbz x19, LBB0_911 $4776(%rip) -LBB0_692: - WORD $0xb400953e // cbz lr, LBB0_911 $4772(%rip) - WORD $0xb4009504 // cbz x4, LBB0_911 $4768(%rip) - WORD $0xf9400fe8 // ldr x8, [sp, #24] + WORD $0xb4009933 // cbz x19, LBB0_927 $4900(%rip) +LBB0_704: + WORD $0xb400991e // cbz lr, LBB0_927 $4896(%rip) + WORD $0xb40098e4 // cbz x4, LBB0_927 $4892(%rip) + WORD $0xf94017e8 // ldr x8, [sp, #40] WORD $0xcb0802a8 // sub x8, x21, x8 WORD $0xd1000511 // sub x17, x8, #1 WORD $0xeb11027f // cmp x19, x17 - WORD $0x540002a0 // b.eq LBB0_702 $84(%rip) + WORD $0x540002a0 // b.eq LBB0_714 $84(%rip) WORD $0xeb1103df // cmp lr, x17 - WORD $0x54000260 // b.eq LBB0_702 $76(%rip) + WORD $0x54000260 // b.eq LBB0_714 $76(%rip) WORD $0xeb11009f // cmp x4, x17 - WORD $0x54000220 // b.eq LBB0_702 $68(%rip) + WORD $0x54000220 // b.eq LBB0_714 $68(%rip) WORD $0xf10007d1 // subs x17, lr, #1 - WORD $0x5400006b // b.lt LBB0_699 $12(%rip) + WORD $0x5400006b // b.lt LBB0_711 $12(%rip) WORD $0xeb11009f // cmp x4, x17 - WORD $0x54009381 // b.ne LBB0_912 $4720(%rip) -LBB0_699: + WORD $0x54009761 // b.ne LBB0_928 $4844(%rip) +LBB0_711: WORD $0xaa040271 // orr x17, x19, x4 - WORD $0xb7f80071 // tbnz x17, #63, LBB0_701 $12(%rip) + WORD $0xb7f80071 // tbnz x17, #63, LBB0_713 $12(%rip) WORD $0xeb04027f // cmp x19, x4 - WORD $0x54009b8a // b.ge LBB0_928 $4976(%rip) -LBB0_701: + WORD $0x54009f6a // b.ge LBB0_944 $5100(%rip) +LBB0_713: WORD $0xd37ffe31 // lsr x17, x17, #63 WORD $0x52000231 // eor w17, w17, #0x1 WORD $0xd1000482 // sub x2, x4, #1 @@ -3853,12 +4075,12 @@ LBB0_701: WORD $0x1a9f17e2 // cset w2, eq WORD $0x6a02023f // tst w17, w2 WORD $0xda840106 // csinv x6, x8, x4, eq - WORD $0x14000002 // b LBB0_703 $8(%rip) -LBB0_702: + WORD $0x14000002 // b LBB0_715 $8(%rip) +LBB0_714: WORD $0xcb0803e6 // neg x6, x8 -LBB0_703: - WORD $0xb7f891a6 // tbnz x6, #63, LBB0_911 $4660(%rip) -LBB0_704: +LBB0_715: + WORD $0xb7f89586 // tbnz x6, #63, LBB0_927 $4784(%rip) +LBB0_716: WORD $0x8b1b00db // add x27, x6, x27 WORD $0xf900003b // str x27, [x1] WORD $0xaa1a03e8 // mov x8, x26 @@ -3866,28 +4088,28 @@ LBB0_704: WORD $0xeb06035f // cmp x26, x6 WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 - WORD $0x54ffdd23 // b.lo LBB0_643 $-1116(%rip) - WORD $0x14000205 // b LBB0_830 $2068(%rip) -LBB0_705: + WORD $0x54ffdd23 // b.lo LBB0_655 $-1116(%rip) + WORD $0x14000222 // b LBB0_845 $2184(%rip) +LBB0_717: WORD $0x8b1b013b // add x27, x9, x27 - WORD $0x1400000c // b LBB0_709 $48(%rip) -LBB0_706: + WORD $0x1400000c // b LBB0_721 $48(%rip) +LBB0_718: WORD $0x5ac00308 // rbit w8, w24 WORD $0x5ac01108 // clz w8, w8 WORD $0xaa3b03f1 // mvn x17, x27 WORD $0xcb080234 // sub x20, x17, x8 - WORD $0x17fffea4 // b LBB0_624 $-1392(%rip) -LBB0_707: + WORD $0x17fffea4 // b LBB0_636 $-1392(%rip) +LBB0_719: WORD $0xaa3b03e8 // mvn x8, x27 WORD $0xcb314114 // sub x20, x8, w17, uxtw - WORD $0x17fffea1 // b LBB0_624 $-1404(%rip) -LBB0_708: + WORD $0x17fffea1 // b LBB0_636 $-1404(%rip) +LBB0_720: WORD $0xd2800004 // mov x4, #0 WORD $0x8b1b013b // add x27, x9, x27 WORD $0x9280001e // mov lr, #-1 -LBB0_709: +LBB0_721: WORD $0xf1008266 // subs x6, x19, #32 - WORD $0x54001583 // b.lo LBB0_738 $688(%rip) + WORD $0x54001583 // b.lo LBB0_750 $688(%rip) WORD $0xad405373 // ldp q19, q20, [x27] WORD $0x6e208e75 // cmeq.16b v21, v19, v0 WORD $0x6e208e96 // cmeq.16b v22, v20, v0 @@ -3911,10 +4133,10 @@ LBB0_709: WORD $0x1e260275 // fmov w21, s19 WORD $0x33103e33 // bfi w19, w17, #16, #16 WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35001014 // cbnz w20, LBB0_735 $512(%rip) - WORD $0xb50010a4 // cbnz x4, LBB0_736 $532(%rip) - WORD $0xb4001213 // cbz x19, LBB0_737 $576(%rip) -LBB0_713: + WORD $0x35001014 // cbnz w20, LBB0_747 $512(%rip) + WORD $0xb50010a4 // cbnz x4, LBB0_748 $532(%rip) + WORD $0xb4001213 // cbz x19, LBB0_749 $576(%rip) +LBB0_725: WORD $0xdac00271 // rbit x17, x19 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090364 // sub x4, x27, x9 @@ -3923,23 +4145,23 @@ LBB0_713: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6ffd65b // tbz x27, #63, LBB0_642 $-1336(%rip) - WORD $0x1400043e // b LBB0_901 $4344(%rip) -LBB0_714: + WORD $0xb6ffd65b // tbz x27, #63, LBB0_654 $-1336(%rip) + WORD $0x1400045d // b LBB0_917 $4468(%rip) +LBB0_726: WORD $0x8b1b013b // add x27, x9, x27 - WORD $0x14000008 // b LBB0_717 $32(%rip) -LBB0_715: + WORD $0x14000008 // b LBB0_729 $32(%rip) +LBB0_727: WORD $0xaa0203f5 // mov x21, x2 WORD $0x92800006 // mov x6, #-1 - WORD $0xb5fff473 // cbnz x19, LBB0_692 $-372(%rip) - WORD $0x1400044b // b LBB0_911 $4396(%rip) -LBB0_716: + WORD $0xb5fff473 // cbnz x19, LBB0_704 $-372(%rip) + WORD $0x1400046a // b LBB0_927 $4520(%rip) +LBB0_728: WORD $0xd2800004 // mov x4, #0 WORD $0x8b1b013b // add x27, x9, x27 WORD $0x9280001e // mov lr, #-1 -LBB0_717: +LBB0_729: WORD $0xf1008266 // subs x6, x19, #32 - WORD $0x54001523 // b.lo LBB0_749 $676(%rip) + WORD $0x54001523 // b.lo LBB0_761 $676(%rip) WORD $0xad405373 // ldp q19, q20, [x27] WORD $0x6e208e75 // cmeq.16b v21, v19, v0 WORD $0x6e208e96 // cmeq.16b v22, v20, v0 @@ -3963,10 +4185,10 @@ LBB0_717: WORD $0x1e260275 // fmov w21, s19 WORD $0x33103e33 // bfi w19, w17, #16, #16 WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35000fb4 // cbnz w20, LBB0_746 $500(%rip) - WORD $0xb5001044 // cbnz x4, LBB0_747 $520(%rip) - WORD $0xb40011b3 // cbz x19, LBB0_748 $564(%rip) -LBB0_721: + WORD $0x35000fb4 // cbnz w20, LBB0_758 $500(%rip) + WORD $0xb5001044 // cbnz x4, LBB0_759 $520(%rip) + WORD $0xb40011b3 // cbz x19, LBB0_760 $564(%rip) +LBB0_733: WORD $0xdac00271 // rbit x17, x19 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090364 // sub x4, x27, x9 @@ -3975,27 +4197,27 @@ LBB0_721: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6ffa97b // tbz x27, #63, LBB0_552 $-2772(%rip) - WORD $0x1400040f // b LBB0_901 $4156(%rip) -LBB0_722: + WORD $0xb6ffa97b // tbz x27, #63, LBB0_564 $-2772(%rip) + WORD $0x1400042e // b LBB0_917 $4280(%rip) +LBB0_734: WORD $0xcb1703e6 // neg x6, x23 - WORD $0x17ffff93 // b LBB0_703 $-436(%rip) -LBB0_723: + WORD $0x17ffff93 // b LBB0_715 $-436(%rip) +LBB0_735: WORD $0x5ac00308 // rbit w8, w24 WORD $0x5ac01108 // clz w8, w8 WORD $0xaa2603f1 // mvn x17, x6 WORD $0xcb080226 // sub x6, x17, x8 - WORD $0x17ffff8e // b LBB0_703 $-456(%rip) -LBB0_724: + WORD $0x17ffff8e // b LBB0_715 $-456(%rip) +LBB0_736: WORD $0x8b1b013b // add x27, x9, x27 - WORD $0x14000004 // b LBB0_726 $16(%rip) -LBB0_725: + WORD $0x14000004 // b LBB0_738 $16(%rip) +LBB0_737: WORD $0xd2800004 // mov x4, #0 WORD $0x8b1b013b // add x27, x9, x27 WORD $0x9280001e // mov lr, #-1 -LBB0_726: +LBB0_738: WORD $0xf1008266 // subs x6, x19, #32 - WORD $0x54001743 // b.lo LBB0_766 $744(%rip) + WORD $0x54001743 // b.lo LBB0_778 $744(%rip) WORD $0xad405373 // ldp q19, q20, [x27] WORD $0x6e208e75 // cmeq.16b v21, v19, v0 WORD $0x6e208e96 // cmeq.16b v22, v20, v0 @@ -4019,10 +4241,10 @@ LBB0_726: WORD $0x1e260262 // fmov w2, s19 WORD $0x33103e33 // bfi w19, w17, #16, #16 WORD $0x33103c54 // bfi w20, w2, #16, #16 - WORD $0x350011d4 // cbnz w20, LBB0_763 $568(%rip) - WORD $0xb5001264 // cbnz x4, LBB0_764 $588(%rip) - WORD $0xb40013d3 // cbz x19, LBB0_765 $632(%rip) -LBB0_730: + WORD $0x350011d4 // cbnz w20, LBB0_775 $568(%rip) + WORD $0xb5001264 // cbnz x4, LBB0_776 $588(%rip) + WORD $0xb40013d3 // cbz x19, LBB0_777 $632(%rip) +LBB0_742: WORD $0xdac00271 // rbit x17, x19 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090362 // sub x2, x27, x9 @@ -4031,38 +4253,38 @@ LBB0_730: WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6ffca3b // tbz x27, #63, LBB0_642 $-1724(%rip) - WORD $0x140003dd // b LBB0_901 $3956(%rip) -LBB0_731: + WORD $0xb6ffca3b // tbz x27, #63, LBB0_654 $-1724(%rip) + WORD $0x140003fc // b LBB0_917 $4080(%rip) +LBB0_743: WORD $0xaa2603e8 // mvn x8, x6 WORD $0xcb314106 // sub x6, x8, w17, uxtw - WORD $0x17ffff60 // b LBB0_703 $-640(%rip) -LBB0_732: + WORD $0x17ffff60 // b LBB0_715 $-640(%rip) +LBB0_744: WORD $0x92800008 // mov x8, #-1 WORD $0xaa1e03f5 // mov x21, lr WORD $0xaa1403f6 // mov x22, x20 WORD $0x92800004 // mov x4, #-1 WORD $0x92800013 // mov x19, #-1 - WORD $0x17fffda4 // b LBB0_589 $-2416(%rip) -LBB0_733: + WORD $0x17fffda4 // b LBB0_601 $-2416(%rip) +LBB0_745: WORD $0xaa2603e8 // mvn x8, x6 WORD $0xcb394106 // sub x6, x8, w25, uxtw - WORD $0x17ffff57 // b LBB0_703 $-676(%rip) -LBB0_734: + WORD $0x17ffff57 // b LBB0_715 $-676(%rip) +LBB0_746: WORD $0x92800013 // mov x19, #-1 - WORD $0xf9400ff5 // ldr x21, [sp, #24] + WORD $0xf94017f5 // ldr x21, [sp, #40] WORD $0xaa1703f4 // mov x20, x23 WORD $0x92800004 // mov x4, #-1 WORD $0x9280001e // mov lr, #-1 - WORD $0x17ffff0c // b LBB0_675 $-976(%rip) -LBB0_735: + WORD $0x17ffff0c // b LBB0_687 $-976(%rip) +LBB0_747: WORD $0xdac00291 // rbit x17, x20 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090375 // sub x21, x27, x9 WORD $0x8b1102b1 // add x17, x21, x17 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9113de // csel lr, lr, x17, ne -LBB0_736: +LBB0_748: WORD $0x0a240291 // bic w17, w20, w4 WORD $0x531f7a35 // lsl w21, w17, #1 WORD $0x331f7a24 // bfi w4, w17, #1, #31 @@ -4074,46 +4296,46 @@ LBB0_736: WORD $0x1a9f37e4 // cset w4, hs WORD $0x2a3103f1 // mvn w17, w17 WORD $0x8a130233 // and x19, x17, x19 - WORD $0xb5ffee53 // cbnz x19, LBB0_713 $-568(%rip) -LBB0_737: + WORD $0xb5ffee53 // cbnz x19, LBB0_725 $-568(%rip) +LBB0_749: WORD $0x9100837b // add x27, x27, #32 WORD $0xaa0603f3 // mov x19, x6 -LBB0_738: - WORD $0xb5000964 // cbnz x4, LBB0_759 $300(%rip) - WORD $0xb40010b3 // cbz x19, LBB0_774 $532(%rip) -LBB0_740: +LBB0_750: + WORD $0xb5000964 // cbnz x4, LBB0_771 $300(%rip) + WORD $0xb40010b3 // cbz x19, LBB0_786 $532(%rip) +LBB0_752: WORD $0xaa1b03e6 // mov x6, x27 WORD $0x384014c4 // ldrb w4, [x6], #1 WORD $0x7100889f // cmp w4, #34 - WORD $0x54001000 // b.eq LBB0_773 $512(%rip) + WORD $0x54001000 // b.eq LBB0_785 $512(%rip) WORD $0xd1000671 // sub x17, x19, #1 WORD $0x7101709f // cmp w4, #92 - WORD $0x540000a0 // b.eq LBB0_743 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_755 $20(%rip) WORD $0xaa0603fb // mov x27, x6 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffef1 // cbnz x17, LBB0_740 $-36(%rip) - WORD $0x14000009 // b LBB0_745 $36(%rip) -LBB0_743: - WORD $0xb40080b1 // cbz x17, LBB0_930 $4116(%rip) + WORD $0xb5fffef1 // cbnz x17, LBB0_752 $-36(%rip) + WORD $0x14000009 // b LBB0_757 $36(%rip) +LBB0_755: + WORD $0xb4008491 // cbz x17, LBB0_946 $4240(%rip) WORD $0x8b0b00d1 // add x17, x6, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x91000b7b // add x27, x27, #2 WORD $0xd1000a71 // sub x17, x19, #2 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffdd1 // cbnz x17, LBB0_740 $-72(%rip) -LBB0_745: + WORD $0xb5fffdd1 // cbnz x17, LBB0_752 $-72(%rip) +LBB0_757: WORD $0x7100889f // cmp w4, #34 - WORD $0x54000e00 // b.eq LBB0_774 $448(%rip) - WORD $0x140003fb // b LBB0_930 $4076(%rip) -LBB0_746: + WORD $0x54000e00 // b.eq LBB0_786 $448(%rip) + WORD $0x1400041a // b LBB0_946 $4200(%rip) +LBB0_758: WORD $0xdac00291 // rbit x17, x20 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090375 // sub x21, x27, x9 WORD $0x8b1102b1 // add x17, x21, x17 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9113de // csel lr, lr, x17, ne -LBB0_747: +LBB0_759: WORD $0x0a240291 // bic w17, w20, w4 WORD $0x531f7a35 // lsl w21, w17, #1 WORD $0x331f7a24 // bfi w4, w17, #1, #31 @@ -4125,73 +4347,73 @@ LBB0_747: WORD $0x1a9f37e4 // cset w4, hs WORD $0x2a3103f1 // mvn w17, w17 WORD $0x8a130233 // and x19, x17, x19 - WORD $0xb5ffeeb3 // cbnz x19, LBB0_721 $-556(%rip) -LBB0_748: + WORD $0xb5ffeeb3 // cbnz x19, LBB0_733 $-556(%rip) +LBB0_760: WORD $0x9100837b // add x27, x27, #32 WORD $0xaa0603f3 // mov x19, x6 -LBB0_749: - WORD $0xb50004e4 // cbnz x4, LBB0_761 $156(%rip) - WORD $0xb4000313 // cbz x19, LBB0_758 $96(%rip) -LBB0_751: +LBB0_761: + WORD $0xb50004e4 // cbnz x4, LBB0_773 $156(%rip) + WORD $0xb4000313 // cbz x19, LBB0_770 $96(%rip) +LBB0_763: WORD $0xaa1b03e6 // mov x6, x27 WORD $0x384014c4 // ldrb w4, [x6], #1 WORD $0x7100889f // cmp w4, #34 - WORD $0x54000260 // b.eq LBB0_757 $76(%rip) + WORD $0x54000260 // b.eq LBB0_769 $76(%rip) WORD $0xd1000671 // sub x17, x19, #1 WORD $0x7101709f // cmp w4, #92 - WORD $0x540000a0 // b.eq LBB0_754 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_766 $20(%rip) WORD $0xaa0603fb // mov x27, x6 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffef1 // cbnz x17, LBB0_751 $-36(%rip) - WORD $0x14000009 // b LBB0_756 $36(%rip) -LBB0_754: - WORD $0xb4007b31 // cbz x17, LBB0_930 $3940(%rip) + WORD $0xb5fffef1 // cbnz x17, LBB0_763 $-36(%rip) + WORD $0x14000009 // b LBB0_768 $36(%rip) +LBB0_766: + WORD $0xb4007f11 // cbz x17, LBB0_946 $4064(%rip) WORD $0x8b0b00d1 // add x17, x6, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x91000b7b // add x27, x27, #2 WORD $0xd1000a71 // sub x17, x19, #2 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffdd1 // cbnz x17, LBB0_751 $-72(%rip) -LBB0_756: + WORD $0xb5fffdd1 // cbnz x17, LBB0_763 $-72(%rip) +LBB0_768: WORD $0x7100889f // cmp w4, #34 - WORD $0x54000060 // b.eq LBB0_758 $12(%rip) - WORD $0x140003cf // b LBB0_930 $3900(%rip) -LBB0_757: + WORD $0x54000060 // b.eq LBB0_770 $12(%rip) + WORD $0x140003ee // b LBB0_946 $4024(%rip) +LBB0_769: WORD $0xaa0603fb // mov x27, x6 -LBB0_758: +LBB0_770: WORD $0xcb09037b // sub x27, x27, x9 WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6ff951b // tbz x27, #63, LBB0_552 $-3424(%rip) - WORD $0x1400036c // b LBB0_901 $3504(%rip) -LBB0_759: - WORD $0xb40078f3 // cbz x19, LBB0_930 $3868(%rip) + WORD $0xb6ff951b // tbz x27, #63, LBB0_564 $-3424(%rip) + WORD $0x1400038b // b LBB0_917 $3628(%rip) +LBB0_771: + WORD $0xb4007cd3 // cbz x19, LBB0_946 $3992(%rip) WORD $0x8b0b0371 // add x17, x27, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x9100077b // add x27, x27, #1 WORD $0xd1000673 // sub x19, x19, #1 - WORD $0xb5fff633 // cbnz x19, LBB0_740 $-316(%rip) - WORD $0x14000034 // b LBB0_774 $208(%rip) -LBB0_761: - WORD $0xb40077f3 // cbz x19, LBB0_930 $3836(%rip) + WORD $0xb5fff633 // cbnz x19, LBB0_752 $-316(%rip) + WORD $0x14000034 // b LBB0_786 $208(%rip) +LBB0_773: + WORD $0xb4007bd3 // cbz x19, LBB0_946 $3960(%rip) WORD $0x8b0b0371 // add x17, x27, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x9100077b // add x27, x27, #1 WORD $0xd1000673 // sub x19, x19, #1 - WORD $0xb5fffab3 // cbnz x19, LBB0_751 $-172(%rip) - WORD $0x17ffffeb // b LBB0_758 $-84(%rip) -LBB0_763: + WORD $0xb5fffab3 // cbnz x19, LBB0_763 $-172(%rip) + WORD $0x17ffffeb // b LBB0_770 $-84(%rip) +LBB0_775: WORD $0xdac00291 // rbit x17, x20 WORD $0xdac01231 // clz x17, x17 WORD $0xcb090362 // sub x2, x27, x9 WORD $0x8b110051 // add x17, x2, x17 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9113de // csel lr, lr, x17, ne -LBB0_764: +LBB0_776: WORD $0x0a240291 // bic w17, w20, w4 WORD $0x531f7a22 // lsl w2, w17, #1 WORD $0x331f7a24 // bfi w4, w17, #1, #31 @@ -4203,175 +4425,177 @@ LBB0_764: WORD $0x1a9f37e4 // cset w4, hs WORD $0x2a3103f1 // mvn w17, w17 WORD $0x8a130233 // and x19, x17, x19 - WORD $0xb5ffec93 // cbnz x19, LBB0_730 $-624(%rip) -LBB0_765: + WORD $0xb5ffec93 // cbnz x19, LBB0_742 $-624(%rip) +LBB0_777: WORD $0x9100837b // add x27, x27, #32 WORD $0xaa0603f3 // mov x19, x6 -LBB0_766: - WORD $0xb50003a4 // cbnz x4, LBB0_775 $116(%rip) - WORD $0xb40002d3 // cbz x19, LBB0_774 $88(%rip) -LBB0_768: +LBB0_778: + WORD $0xb50003a4 // cbnz x4, LBB0_787 $116(%rip) + WORD $0xb40002d3 // cbz x19, LBB0_786 $88(%rip) +LBB0_780: WORD $0xaa1b03e6 // mov x6, x27 WORD $0x384014c4 // ldrb w4, [x6], #1 WORD $0x7100889f // cmp w4, #34 - WORD $0x54000220 // b.eq LBB0_773 $68(%rip) + WORD $0x54000220 // b.eq LBB0_785 $68(%rip) WORD $0xd1000671 // sub x17, x19, #1 WORD $0x7101709f // cmp w4, #92 - WORD $0x540000a0 // b.eq LBB0_771 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_783 $20(%rip) WORD $0xaa0603fb // mov x27, x6 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffef1 // cbnz x17, LBB0_768 $-36(%rip) - WORD $0x17ffff9a // b LBB0_745 $-408(%rip) -LBB0_771: - WORD $0xb40072d1 // cbz x17, LBB0_930 $3672(%rip) + WORD $0xb5fffef1 // cbnz x17, LBB0_780 $-36(%rip) + WORD $0x17ffff9a // b LBB0_757 $-408(%rip) +LBB0_783: + WORD $0xb40076b1 // cbz x17, LBB0_946 $3796(%rip) WORD $0x8b0b00d1 // add x17, x6, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x91000b7b // add x27, x27, #2 WORD $0xd1000a71 // sub x17, x19, #2 WORD $0xaa1103f3 // mov x19, x17 - WORD $0xb5fffdd1 // cbnz x17, LBB0_768 $-72(%rip) - WORD $0x17ffff91 // b LBB0_745 $-444(%rip) -LBB0_773: + WORD $0xb5fffdd1 // cbnz x17, LBB0_780 $-72(%rip) + WORD $0x17ffff91 // b LBB0_757 $-444(%rip) +LBB0_785: WORD $0xaa0603fb // mov x27, x6 -LBB0_774: +LBB0_786: WORD $0xcb09037b // sub x27, x27, x9 WORD $0x52800062 // mov w2, #3 WORD $0x52800085 // mov w5, #4 WORD $0x92f00006 // mov x6, #9223372036854775807 - WORD $0xb6ffb3fb // tbz x27, #63, LBB0_642 $-2436(%rip) - WORD $0x1400032b // b LBB0_901 $3244(%rip) -LBB0_775: - WORD $0xb40070d3 // cbz x19, LBB0_930 $3608(%rip) + WORD $0xb6ffb3fb // tbz x27, #63, LBB0_654 $-2436(%rip) + WORD $0x1400034a // b LBB0_917 $3368(%rip) +LBB0_787: + WORD $0xb40074b3 // cbz x19, LBB0_946 $3732(%rip) WORD $0x8b0b0371 // add x17, x27, x11 WORD $0xb10007df // cmn lr, #1 WORD $0x9a9e023e // csel lr, x17, lr, eq WORD $0x9100077b // add x27, x27, #1 WORD $0xd1000673 // sub x19, x19, #1 - WORD $0xb5fffbf3 // cbnz x19, LBB0_768 $-132(%rip) - WORD $0x17fffff3 // b LBB0_774 $-52(%rip) -LBB0_777: + WORD $0xb5fffbf3 // cbnz x19, LBB0_780 $-132(%rip) + WORD $0x17fffff3 // b LBB0_786 $-52(%rip) +LBB0_789: WORD $0xf940002b // ldr x11, [x1] WORD $0xa940200a // ldp x10, x8, [x0] WORD $0xeb08017f // cmp x11, x8 - WORD $0x54000142 // b.hs LBB0_781 $40(%rip) + WORD $0x54000142 // b.hs LBB0_793 $40(%rip) WORD $0x386b6949 // ldrb w9, [x10, x11] WORD $0x7100353f // cmp w9, #13 - WORD $0x540000e0 // b.eq LBB0_781 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_793 $28(%rip) WORD $0x7100813f // cmp w9, #32 - WORD $0x540000a0 // b.eq LBB0_781 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_793 $20(%rip) WORD $0x51002d2c // sub w12, w9, #11 WORD $0xaa0b03e9 // mov x9, x11 WORD $0x3100099f // cmn w12, #2 - WORD $0x54000883 // b.lo LBB0_804 $272(%rip) -LBB0_781: + WORD $0x54000883 // b.lo LBB0_816 $272(%rip) +LBB0_793: WORD $0x91000569 // add x9, x11, #1 WORD $0xeb08013f // cmp x9, x8 - WORD $0x54000122 // b.hs LBB0_785 $36(%rip) + WORD $0x54000122 // b.hs LBB0_797 $36(%rip) WORD $0x3869694c // ldrb w12, [x10, x9] WORD $0x7100359f // cmp w12, #13 - WORD $0x540000c0 // b.eq LBB0_785 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_797 $24(%rip) WORD $0x7100819f // cmp w12, #32 - WORD $0x54000080 // b.eq LBB0_785 $16(%rip) + WORD $0x54000080 // b.eq LBB0_797 $16(%rip) WORD $0x51002d8c // sub w12, w12, #11 WORD $0x3100099f // cmn w12, #2 - WORD $0x54000723 // b.lo LBB0_804 $228(%rip) -LBB0_785: + WORD $0x54000723 // b.lo LBB0_816 $228(%rip) +LBB0_797: WORD $0x91000969 // add x9, x11, #2 WORD $0xeb08013f // cmp x9, x8 - WORD $0x54000122 // b.hs LBB0_789 $36(%rip) + WORD $0x54000122 // b.hs LBB0_801 $36(%rip) WORD $0x3869694c // ldrb w12, [x10, x9] WORD $0x7100359f // cmp w12, #13 - WORD $0x540000c0 // b.eq LBB0_789 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_801 $24(%rip) WORD $0x7100819f // cmp w12, #32 - WORD $0x54000080 // b.eq LBB0_789 $16(%rip) + WORD $0x54000080 // b.eq LBB0_801 $16(%rip) WORD $0x51002d8c // sub w12, w12, #11 WORD $0x3100099f // cmn w12, #2 - WORD $0x540005c3 // b.lo LBB0_804 $184(%rip) -LBB0_789: + WORD $0x540005c3 // b.lo LBB0_816 $184(%rip) +LBB0_801: WORD $0x91000d69 // add x9, x11, #3 WORD $0xeb08013f // cmp x9, x8 - WORD $0x54000122 // b.hs LBB0_793 $36(%rip) + WORD $0x54000122 // b.hs LBB0_805 $36(%rip) WORD $0x3869694c // ldrb w12, [x10, x9] WORD $0x7100359f // cmp w12, #13 - WORD $0x540000c0 // b.eq LBB0_793 $24(%rip) + WORD $0x540000c0 // b.eq LBB0_805 $24(%rip) WORD $0x7100819f // cmp w12, #32 - WORD $0x54000080 // b.eq LBB0_793 $16(%rip) + WORD $0x54000080 // b.eq LBB0_805 $16(%rip) WORD $0x51002d8c // sub w12, w12, #11 WORD $0x3100099f // cmn w12, #2 - WORD $0x54000463 // b.lo LBB0_804 $140(%rip) -LBB0_793: + WORD $0x54000463 // b.lo LBB0_816 $140(%rip) +LBB0_805: WORD $0x91001169 // add x9, x11, #4 WORD $0xeb08013f // cmp x9, x8 - WORD $0x540001e2 // b.hs LBB0_798 $60(%rip) + WORD $0x540001e2 // b.hs LBB0_810 $60(%rip) WORD $0x5280002b // mov w11, #1 WORD $0xd284c00c // mov x12, #9728 WORD $0xf2c0002c // movk x12, #1, lsl #32 -LBB0_795: +LBB0_807: WORD $0x3869694d // ldrb w13, [x10, x9] WORD $0x710081bf // cmp w13, #32 WORD $0x9acd216d // lsl x13, x11, x13 WORD $0x8a0c01ad // and x13, x13, x12 WORD $0xfa4099a4 // ccmp x13, #0, #4, ls - WORD $0x540002a0 // b.eq LBB0_803 $84(%rip) + WORD $0x540002a0 // b.eq LBB0_815 $84(%rip) WORD $0x91000529 // add x9, x9, #1 WORD $0xeb09011f // cmp x8, x9 - WORD $0x54ffff01 // b.ne LBB0_795 $-32(%rip) -LBB0_797: + WORD $0x54ffff01 // b.ne LBB0_807 $-32(%rip) +LBB0_809: WORD $0x92800008 // mov x8, #-1 - WORD $0x14000078 // b LBB0_830 $480(%rip) -LBB0_798: + WORD $0x14000095 // b LBB0_845 $596(%rip) +LBB0_810: WORD $0xf9000029 // str x9, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x14000075 // b LBB0_830 $468(%rip) -LBB0_799: + WORD $0x14000092 // b LBB0_845 $584(%rip) +LBB0_811: WORD $0xf9400028 // ldr x8, [x1] WORD $0xd1000508 // sub x8, x8, #1 WORD $0xf9000028 // str x8, [x1] WORD $0x92800428 // mov x8, #-34 - WORD $0x14000070 // b LBB0_830 $448(%rip) -LBB0_800: - WORD $0xf9000037 // str x23, [x1] - WORD $0x1400006a // b LBB0_827 $424(%rip) -LBB0_801: - WORD $0x7101745f // cmp w2, #93 - WORD $0x54000d01 // b.ne LBB0_827 $416(%rip) -LBB0_802: - WORD $0xf9000037 // str x23, [x1] + WORD $0x1400008d // b LBB0_845 $564(%rip) +LBB0_812: + WORD $0xf9000038 // str x24, [x1] + WORD $0x14000087 // b LBB0_842 $540(%rip) +LBB0_813: + WORD $0x7101761f // cmp w16, #93 + WORD $0x540010a1 // b.ne LBB0_842 $532(%rip) +LBB0_814: + WORD $0xf9000038 // str x24, [x1] WORD $0x92800408 // mov x8, #-33 - WORD $0x14000069 // b LBB0_830 $420(%rip) -LBB0_803: + WORD $0x14000086 // b LBB0_845 $536(%rip) +LBB0_815: WORD $0xeb08013f // cmp x9, x8 - WORD $0x54fffdc2 // b.hs LBB0_797 $-72(%rip) -LBB0_804: + WORD $0x54fffdc2 // b.hs LBB0_809 $-72(%rip) +LBB0_816: WORD $0x91000530 // add x16, x9, #1 WORD $0xf9000030 // str x16, [x1] WORD $0x38696948 // ldrb w8, [x10, x9] WORD $0x7101691f // cmp w8, #90 - WORD $0x540006ec // b.gt LBB0_821 $220(%rip) + WORD $0x54000a8c // b.gt LBB0_836 $336(%rip) WORD $0x7100bd1f // cmp w8, #47 - WORD $0x54000d8d // b.le LBB0_832 $432(%rip) + WORD $0x5400112d // b.le LBB0_847 $548(%rip) WORD $0x5100c108 // sub w8, w8, #48 WORD $0x7100291f // cmp w8, #10 - WORD $0x540057e2 // b.hs LBB0_898 $2812(%rip) -LBB0_807: + WORD $0x54005b82 // b.hs LBB0_913 $2928(%rip) +LBB0_819: WORD $0xf9400408 // ldr x8, [x0, #8] - WORD $0xcb100108 // sub x8, x8, x16 - WORD $0xf100411f // cmp x8, #16 - WORD $0x540002c3 // b.lo LBB0_811 $88(%rip) + WORD $0xcb10010b // sub x11, x8, x16 + WORD $0x8b100148 // add x8, x10, x16 + WORD $0xf100417f // cmp x11, #16 + WORD $0x54000303 // b.lo LBB0_823 $96(%rip) + WORD $0xd280000c // mov x12, #0 WORD $0x4f01e580 // movi.16b v0, #44 WORD $0x4f06e7e1 // movi.16b v1, #223 WORD $0x4f02e7a2 // movi.16b v2, #93 -Lloh20: - WORD $0x10fe198b // adr x11, lCPI0_0 $-15568(%rip) -Lloh21: - WORD $0x3dc00163 // ldr q3, [x11, lCPI0_0@PAGEOFF] $0(%rip) -Lloh22: - WORD $0x10fe19cb // adr x11, lCPI0_1 $-15560(%rip) -Lloh23: - WORD $0x3dc00164 // ldr q4, [x11, lCPI0_1@PAGEOFF] $0(%rip) -LBB0_809: - WORD $0x3cf06945 // ldr q5, [x10, x16] +Lloh28: + WORD $0x10fdfecd // adr x13, lCPI0_0 $-16424(%rip) +Lloh29: + WORD $0x3dc001a3 // ldr q3, [x13, lCPI0_0@PAGEOFF] $0(%rip) +Lloh30: + WORD $0x10fdff0d // adr x13, lCPI0_1 $-16416(%rip) +Lloh31: + WORD $0x3dc001a4 // ldr q4, [x13, lCPI0_1@PAGEOFF] $0(%rip) +LBB0_821: + WORD $0x3dc00105 // ldr q5, [x8] WORD $0x6e208ca6 // cmeq.16b v6, v5, v0 WORD $0x4e211ca5 // and.16b v5, v5, v1 WORD $0x6e228ca5 // cmeq.16b v5, v5, v2 @@ -4379,50 +4603,78 @@ LBB0_809: WORD $0x4e231ca5 // and.16b v5, v5, v3 WORD $0x4e0400a5 // tbl.16b v5, { v5 }, v4 WORD $0x4e71b8a5 // addv.8h h5, v5 - WORD $0x1e2600ab // fmov w11, s5 - WORD $0x350002eb // cbnz w11, LBB0_819 $92(%rip) - WORD $0xd1004108 // sub x8, x8, #16 - WORD $0x91004210 // add x16, x16, #16 - WORD $0xf1003d1f // cmp x8, #15 - WORD $0x54fffe68 // b.hi LBB0_809 $-52(%rip) -LBB0_811: - WORD $0x8b10014b // add x11, x10, x16 - WORD $0xb40001e8 // cbz x8, LBB0_818 $60(%rip) - WORD $0x8b08016c // add x12, x11, x8 - WORD $0xcb0a016d // sub x13, x11, x10 -LBB0_813: - WORD $0x3940016e // ldrb w14, [x11] - WORD $0x7100b1df // cmp w14, #44 - WORD $0x54005640 // b.eq LBB0_906 $2760(%rip) - WORD $0x7101f5df // cmp w14, #125 - WORD $0x54005600 // b.eq LBB0_906 $2752(%rip) - WORD $0x710175df // cmp w14, #93 - WORD $0x540055c0 // b.eq LBB0_906 $2744(%rip) - WORD $0x9100056b // add x11, x11, #1 + WORD $0x1e2600ad // fmov w13, s5 + WORD $0x350003ad // cbnz w13, LBB0_831 $116(%rip) + WORD $0x91004108 // add x8, x8, #16 + WORD $0xd100416b // sub x11, x11, #16 + WORD $0x9100418c // add x12, x12, #16 + WORD $0xf1003d7f // cmp x11, #15 + WORD $0x54fffe48 // b.hi LBB0_821 $-56(%rip) +LBB0_823: + WORD $0xb40002ab // cbz x11, LBB0_830 $84(%rip) + WORD $0x8b0b010c // add x12, x8, x11 + WORD $0xcb0a010d // sub x13, x8, x10 + WORD $0x5280002e // mov w14, #1 + WORD $0xd284c00f // mov x15, #9728 + WORD $0xf2c2002f // movk x15, #4097, lsl #32 +LBB0_825: + WORD $0x39400110 // ldrb w16, [x8] + WORD $0x7100b21f // cmp w16, #44 + WORD $0x9ad021d1 // lsl x17, x14, x16 + WORD $0x8a0f0231 // and x17, x17, x15 + WORD $0xfa409a24 // ccmp x17, #0, #4, ls + WORD $0x54005921 // b.ne LBB0_922 $2852(%rip) + WORD $0x7101f61f // cmp w16, #125 + WORD $0x540058e0 // b.eq LBB0_922 $2844(%rip) + WORD $0x7101761f // cmp w16, #93 + WORD $0x540058a0 // b.eq LBB0_922 $2836(%rip) + WORD $0x91000508 // add x8, x8, #1 WORD $0x910005ad // add x13, x13, #1 - WORD $0xf1000508 // subs x8, x8, #1 - WORD $0x54fffec1 // b.ne LBB0_813 $-40(%rip) - WORD $0xaa0c03eb // mov x11, x12 -LBB0_818: - WORD $0xcb0a0168 // sub x8, x11, x10 - WORD $0x14000004 // b LBB0_820 $16(%rip) -LBB0_819: - WORD $0x5ac00168 // rbit w8, w11 - WORD $0x5ac01108 // clz w8, w8 - WORD $0x8b100108 // add x8, x8, x16 -LBB0_820: + WORD $0xf100056b // subs x11, x11, #1 + WORD $0x54fffe61 // b.ne LBB0_825 $-52(%rip) + WORD $0xaa0c03e8 // mov x8, x12 +LBB0_830: + WORD $0xcb0a0108 // sub x8, x8, x10 + WORD $0x140002b0 // b LBB0_915 $2752(%rip) +LBB0_831: + WORD $0x5ac001ab // rbit w11, w13 + WORD $0x5ac0116b // clz w11, w11 + WORD $0xcb0a0108 // sub x8, x8, x10 + WORD $0x8b0b0108 // add x8, x8, x11 WORD $0xf9000028 // str x8, [x1] + WORD $0xf100051f // cmp x8, #1 + WORD $0x5400026b // b.lt LBB0_835 $76(%rip) + WORD $0x8b0c0168 // add x8, x11, x12 + WORD $0x8b09014a // add x10, x10, x9 + WORD $0x5280002b // mov w11, #1 + WORD $0xd284c00c // mov x12, #9728 + WORD $0xf2c0002c // movk x12, #1, lsl #32 +LBB0_833: + WORD $0x3868694d // ldrb w13, [x10, x8] + WORD $0x710081bf // cmp w13, #32 + WORD $0x9acd216d // lsl x13, x11, x13 + WORD $0x8a0c01ad // and x13, x13, x12 + WORD $0xfa4099a4 // ccmp x13, #0, #4, ls + WORD $0x54000100 // b.eq LBB0_835 $32(%rip) + WORD $0x8b08012d // add x13, x9, x8 + WORD $0xf900002d // str x13, [x1] + WORD $0xd1000508 // sub x8, x8, #1 + WORD $0x8b08012d // add x13, x9, x8 + WORD $0x910009ad // add x13, x13, #2 + WORD $0xf10005bf // cmp x13, #1 + WORD $0x54fffe8c // b.gt LBB0_833 $-48(%rip) +LBB0_835: WORD $0xaa0903e8 // mov x8, x9 - WORD $0x1400002c // b LBB0_830 $176(%rip) -LBB0_821: + WORD $0x1400002c // b LBB0_845 $176(%rip) +LBB0_836: WORD $0x7101b51f // cmp w8, #109 - WORD $0x5400078d // b.le LBB0_835 $240(%rip) + WORD $0x5400078d // b.le LBB0_850 $240(%rip) WORD $0x7101b91f // cmp w8, #110 - WORD $0x54002560 // b.eq LBB0_862 $1196(%rip) + WORD $0x54002560 // b.eq LBB0_877 $1196(%rip) WORD $0x7101d11f // cmp w8, #116 - WORD $0x54002520 // b.eq LBB0_862 $1188(%rip) + WORD $0x54002520 // b.eq LBB0_877 $1188(%rip) WORD $0x7101ed1f // cmp w8, #123 - WORD $0x540050c1 // b.ne LBB0_898 $2584(%rip) + WORD $0x540050c1 // b.ne LBB0_913 $2584(%rip) WORD $0xd2800007 // mov x7, #0 WORD $0xd280000f // mov x15, #0 WORD $0xd2800008 // mov x8, #0 @@ -4436,16 +4688,16 @@ LBB0_821: WORD $0xf9400411 // ldr x17, [x0, #8] WORD $0xcb100225 // sub x5, x17, x16 WORD $0x8b100150 // add x16, x10, x16 - WORD $0x910083ea // add x10, sp, #32 + WORD $0x9100c3ea // add x10, sp, #48 WORD $0x9100814a // add x10, x10, #32 WORD $0x4f01e440 // movi.16b v0, #34 -Lloh24: - WORD $0x10fe1151 // adr x17, lCPI0_0 $-15832(%rip) -Lloh25: +Lloh32: + WORD $0x10fdf331 // adr x17, lCPI0_0 $-16796(%rip) +Lloh33: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) -Lloh26: - WORD $0x10fe1191 // adr x17, lCPI0_1 $-15824(%rip) -Lloh27: +Lloh34: + WORD $0x10fdf371 // adr x17, lCPI0_1 $-16788(%rip) +Lloh35: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 WORD $0xb200e3f1 // mov x17, #1229782938247303441 @@ -4455,49 +4707,49 @@ Lloh27: WORD $0x4f03e764 // movi.16b v4, #123 WORD $0x4f03e7a5 // movi.16b v5, #125 WORD $0x6f00e406 // movi.2d v6, #0000000000000000 - WORD $0x1400002a // b LBB0_839 $168(%rip) -LBB0_826: - WORD $0x7101f45f // cmp w2, #125 - WORD $0x54fff340 // b.eq LBB0_802 $-408(%rip) -LBB0_827: + WORD $0x1400002a // b LBB0_854 $168(%rip) +LBB0_841: + WORD $0x7101f61f // cmp w16, #125 + WORD $0x54ffefa0 // b.eq LBB0_814 $-524(%rip) +LBB0_842: WORD $0xf9400028 // ldr x8, [x1] WORD $0xd1000508 // sub x8, x8, #1 -LBB0_828: +LBB0_843: WORD $0xf9000028 // str x8, [x1] -LBB0_829: +LBB0_844: WORD $0x92800028 // mov x8, #-2 -LBB0_830: +LBB0_845: WORD $0xaa0803e0 // mov x0, x8 - WORD $0xa94bfbfd // ldp fp, lr, [sp, #184] - WORD $0xa94acff4 // ldp x20, x19, [sp, #168] - WORD $0xa949d7f6 // ldp x22, x21, [sp, #152] - WORD $0xa948dff8 // ldp x24, x23, [sp, #136] - WORD $0xa947e7fa // ldp x26, x25, [sp, #120] - WORD $0xa946effc // ldp x28, x27, [sp, #104] - WORD $0x910343ff // add sp, sp, #208 + WORD $0xa94cfbfd // ldp fp, lr, [sp, #200] + WORD $0xa94bcff4 // ldp x20, x19, [sp, #184] + WORD $0xa94ad7f6 // ldp x22, x21, [sp, #168] + WORD $0xa949dff8 // ldp x24, x23, [sp, #152] + WORD $0xa948e7fa // ldp x26, x25, [sp, #136] + WORD $0xa947effc // ldp x28, x27, [sp, #120] + WORD $0x910383ff // add sp, sp, #224 WORD $0xd65f03c0 // ret -LBB0_831: +LBB0_846: WORD $0xf900003a // str x26, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x17fffff5 // b LBB0_830 $-44(%rip) -LBB0_832: - WORD $0x34ffef68 // cbz w8, LBB0_797 $-532(%rip) + WORD $0x17fffff5 // b LBB0_845 $-44(%rip) +LBB0_847: + WORD $0x34ffebc8 // cbz w8, LBB0_809 $-648(%rip) WORD $0x7100891f // cmp w8, #34 - WORD $0x54001f40 // b.eq LBB0_863 $1000(%rip) + WORD $0x54001f40 // b.eq LBB0_878 $1000(%rip) WORD $0x7100b51f // cmp w8, #45 - WORD $0x54fff280 // b.eq LBB0_807 $-432(%rip) - WORD $0x14000251 // b LBB0_898 $2372(%rip) -LBB0_835: + WORD $0x54ffeee0 // b.eq LBB0_819 $-548(%rip) + WORD $0x14000251 // b LBB0_913 $2372(%rip) +LBB0_850: WORD $0x71016d1f // cmp w8, #91 - WORD $0x540027a0 // b.eq LBB0_872 $1268(%rip) + WORD $0x540027a0 // b.eq LBB0_887 $1268(%rip) WORD $0x7101991f // cmp w8, #102 - WORD $0x540049a1 // b.ne LBB0_898 $2356(%rip) + WORD $0x540049a1 // b.ne LBB0_913 $2356(%rip) WORD $0x91001528 // add x8, x9, #5 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54ffedc8 // b.hi LBB0_797 $-584(%rip) - WORD $0x17ffffb8 // b LBB0_820 $-288(%rip) -LBB0_838: + WORD $0x54ffea28 // b.hi LBB0_809 $-700(%rip) + WORD $0x1400024f // b LBB0_915 $2364(%rip) +LBB0_853: WORD $0x937ffce7 // asr x7, x7, #63 WORD $0x9e670267 // fmov d7, x19 WORD $0x0e2058e7 // cnt.8b v7, v7 @@ -4506,10 +4758,10 @@ LBB0_838: WORD $0x8b0800a8 // add x8, x5, x8 WORD $0x91010210 // add x16, x16, #64 WORD $0xaa0603e5 // mov x5, x6 -LBB0_839: +LBB0_854: WORD $0xf10100a6 // subs x6, x5, #64 - WORD $0x540015cb // b.lt LBB0_846 $696(%rip) -LBB0_840: + WORD $0x540015cb // b.lt LBB0_861 $696(%rip) +LBB0_855: WORD $0xad404612 // ldp q18, q17, [x16] WORD $0xad411e10 // ldp q16, q7, [x16, #32] WORD $0x6e238e53 // cmeq.16b v19, v18, v3 @@ -4538,11 +4790,11 @@ LBB0_840: WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xaa130293 // orr x19, x20, x19 WORD $0xaa0f0274 // orr x20, x19, x15 - WORD $0xb5000094 // cbnz x20, LBB0_842 $16(%rip) + WORD $0xb5000094 // cbnz x20, LBB0_857 $16(%rip) WORD $0xd280000f // mov x15, #0 WORD $0xd2800013 // mov x19, #0 - WORD $0x1400000a // b LBB0_843 $40(%rip) -LBB0_842: + WORD $0x1400000a // b LBB0_858 $40(%rip) +LBB0_857: WORD $0x8a2f0274 // bic x20, x19, x15 WORD $0xaa1405f5 // orr x21, x15, x20, lsl #1 WORD $0x8a35026f // bic x15, x19, x21 @@ -4552,7 +4804,7 @@ LBB0_842: WORD $0xd37ffa73 // lsl x19, x19, #1 WORD $0xd200f273 // eor x19, x19, #0x5555555555555555 WORD $0x8a150273 // and x19, x19, x21 -LBB0_843: +LBB0_858: WORD $0x6e208e53 // cmeq.16b v19, v18, v0 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 @@ -4671,8 +4923,8 @@ LBB0_843: WORD $0xaa1502d5 // orr x21, x22, x21 WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xea270294 // bics x20, x20, x7 - WORD $0x54ffeae0 // b.eq LBB0_838 $-676(%rip) -LBB0_844: + WORD $0x54ffeae0 // b.eq LBB0_853 $-676(%rip) +LBB0_859: WORD $0xd1000695 // sub x21, x20, #1 WORD $0x8a1302b6 // and x22, x21, x19 WORD $0x9e6702c7 // fmov d7, x22 @@ -4681,101 +4933,101 @@ LBB0_844: WORD $0x1e2600f6 // fmov w22, s7 WORD $0x8b0802d6 // add x22, x22, x8 WORD $0xeb0b02df // cmp x22, x11 - WORD $0x54003109 // b.ls LBB0_897 $1568(%rip) + WORD $0x54003109 // b.ls LBB0_912 $1568(%rip) WORD $0x9100056b // add x11, x11, #1 WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_844 $-44(%rip) - WORD $0x17ffff4a // b LBB0_838 $-728(%rip) -LBB0_846: + WORD $0x54fffea1 // b.ne LBB0_859 $-44(%rip) + WORD $0x17ffff4a // b LBB0_853 $-728(%rip) +LBB0_861: WORD $0xf10000bf // cmp x5, #0 - WORD $0x5400404d // b.le LBB0_937 $2056(%rip) - WORD $0xad021be6 // stp q6, q6, [sp, #64] - WORD $0xad011be6 // stp q6, q6, [sp, #32] + WORD $0x5400408d // b.le LBB0_953 $2064(%rip) + WORD $0xad029be6 // stp q6, q6, [sp, #80] + WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0x92402e13 // and x19, x16, #0xfff WORD $0xf13f067f // cmp x19, #4033 - WORD $0x54ffe9a3 // b.lo LBB0_840 $-716(%rip) + WORD $0x54ffe9a3 // b.lo LBB0_855 $-716(%rip) WORD $0xf10080b4 // subs x20, x5, #32 - WORD $0x540000a3 // b.lo LBB0_850 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_865 $20(%rip) WORD $0xacc14207 // ldp q7, q16, [x16], #32 - WORD $0xad0143e7 // stp q7, q16, [sp, #32] + WORD $0xad01c3e7 // stp q7, q16, [sp, #48] WORD $0xaa0a03f3 // mov x19, x10 - WORD $0x14000003 // b LBB0_851 $12(%rip) -LBB0_850: - WORD $0x910083f3 // add x19, sp, #32 + WORD $0x14000003 // b LBB0_866 $12(%rip) +LBB0_865: + WORD $0x9100c3f3 // add x19, sp, #48 WORD $0xaa0503f4 // mov x20, x5 -LBB0_851: +LBB0_866: WORD $0xf1004295 // subs x21, x20, #16 - WORD $0x54000243 // b.lo LBB0_857 $72(%rip) + WORD $0x54000243 // b.lo LBB0_872 $72(%rip) WORD $0x3cc10607 // ldr q7, [x16], #16 WORD $0x3c810667 // str q7, [x19], #16 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10022b5 // subs x21, x21, #8 - WORD $0x540001e2 // b.hs LBB0_858 $60(%rip) -LBB0_853: + WORD $0x540001e2 // b.hs LBB0_873 $60(%rip) +LBB0_868: WORD $0xf1001295 // subs x21, x20, #4 - WORD $0x54000243 // b.lo LBB0_859 $72(%rip) -LBB0_854: + WORD $0x54000243 // b.lo LBB0_874 $72(%rip) +LBB0_869: WORD $0xb8404614 // ldr w20, [x16], #4 WORD $0xb8004674 // str w20, [x19], #4 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf1000ab5 // subs x21, x21, #2 - WORD $0x540001e2 // b.hs LBB0_860 $60(%rip) -LBB0_855: - WORD $0xb4000254 // cbz x20, LBB0_861 $72(%rip) -LBB0_856: + WORD $0x540001e2 // b.hs LBB0_875 $60(%rip) +LBB0_870: + WORD $0xb4000254 // cbz x20, LBB0_876 $72(%rip) +LBB0_871: WORD $0x39400210 // ldrb w16, [x16] WORD $0x39000270 // strb w16, [x19] - WORD $0x910083f0 // add x16, sp, #32 - WORD $0x17ffff32 // b LBB0_840 $-824(%rip) -LBB0_857: + WORD $0x9100c3f0 // add x16, sp, #48 + WORD $0x17ffff32 // b LBB0_855 $-824(%rip) +LBB0_872: WORD $0xf1002295 // subs x21, x20, #8 - WORD $0x54fffe63 // b.lo LBB0_853 $-52(%rip) -LBB0_858: + WORD $0x54fffe63 // b.lo LBB0_868 $-52(%rip) +LBB0_873: WORD $0xf8408614 // ldr x20, [x16], #8 WORD $0xf8008674 // str x20, [x19], #8 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10012b5 // subs x21, x21, #4 - WORD $0x54fffe02 // b.hs LBB0_854 $-64(%rip) -LBB0_859: + WORD $0x54fffe02 // b.hs LBB0_869 $-64(%rip) +LBB0_874: WORD $0xf1000a95 // subs x21, x20, #2 - WORD $0x54fffe63 // b.lo LBB0_855 $-52(%rip) -LBB0_860: + WORD $0x54fffe63 // b.lo LBB0_870 $-52(%rip) +LBB0_875: WORD $0x78402614 // ldrh w20, [x16], #2 WORD $0x78002674 // strh w20, [x19], #2 WORD $0xaa1503f4 // mov x20, x21 - WORD $0xb5fffe15 // cbnz x21, LBB0_856 $-64(%rip) -LBB0_861: - WORD $0x910083f0 // add x16, sp, #32 - WORD $0x17ffff23 // b LBB0_840 $-884(%rip) -LBB0_862: + WORD $0xb5fffe15 // cbnz x21, LBB0_871 $-64(%rip) +LBB0_876: + WORD $0x9100c3f0 // add x16, sp, #48 + WORD $0x17ffff23 // b LBB0_855 $-884(%rip) +LBB0_877: WORD $0x91001128 // add x8, x9, #4 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54ffd028 // b.hi LBB0_797 $-1532(%rip) - WORD $0x17fffecb // b LBB0_820 $-1236(%rip) -LBB0_863: + WORD $0x54ffcc88 // b.hi LBB0_809 $-1648(%rip) + WORD $0x14000162 // b LBB0_915 $1416(%rip) +LBB0_878: WORD $0xf9400411 // ldr x17, [x0, #8] WORD $0xcb10022b // sub x11, x17, x16 WORD $0xf100817f // cmp x11, #32 - WORD $0x540036ab // b.lt LBB0_927 $1748(%rip) + WORD $0x540036eb // b.lt LBB0_943 $1756(%rip) WORD $0xd2800008 // mov x8, #0 WORD $0xd280000e // mov x14, #0 WORD $0x3200f3ec // mov w12, #1431655765 WORD $0x3201f3ed // mov w13, #-1431655766 WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x8b09014f // add x15, x10, x9 -Lloh28: - WORD $0x10fdecab // adr x11, lCPI0_0 $-17004(%rip) -Lloh29: +Lloh36: + WORD $0x10fdce8b // adr x11, lCPI0_0 $-17968(%rip) +Lloh37: WORD $0x3dc00161 // ldr q1, [x11, lCPI0_0@PAGEOFF] $0(%rip) -Lloh30: - WORD $0x10fdeceb // adr x11, lCPI0_1 $-16996(%rip) -Lloh31: +Lloh38: + WORD $0x10fdcecb // adr x11, lCPI0_1 $-17960(%rip) +Lloh39: WORD $0x3dc00162 // ldr q2, [x11, lCPI0_1@PAGEOFF] $0(%rip) WORD $0xcb09022b // sub x11, x17, x9 WORD $0x4f02e783 // movi.16b v3, #92 WORD $0x528003f0 // mov w16, #31 -LBB0_865: +LBB0_880: WORD $0x8b0801f1 // add x17, x15, x8 WORD $0x3cc01224 // ldur q4, [x17, #1] WORD $0x3cc11225 // ldur q5, [x17, #17] @@ -4803,7 +5055,7 @@ LBB0_865: WORD $0x33103c40 // bfi w0, w2, #16, #16 WORD $0x7100001f // cmp w0, #0 WORD $0xfa4009c0 // ccmp x14, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_867 $48(%rip) + WORD $0x54000180 // b.eq LBB0_882 $48(%rip) WORD $0x0a2e0002 // bic w2, w0, w14 WORD $0x2a0205c3 // orr w3, w14, w2, lsl #1 WORD $0x0a0d000e // and w14, w0, w13 @@ -4814,26 +5066,26 @@ LBB0_865: WORD $0x0a030000 // and w0, w0, w3 WORD $0x2a2003e0 // mvn w0, w0 WORD $0x8a110011 // and x17, x0, x17 - WORD $0x14000002 // b LBB0_868 $8(%rip) -LBB0_867: + WORD $0x14000002 // b LBB0_883 $8(%rip) +LBB0_882: WORD $0xd280000e // mov x14, #0 -LBB0_868: - WORD $0xb5002471 // cbnz x17, LBB0_899 $1164(%rip) +LBB0_883: + WORD $0xb5002471 // cbnz x17, LBB0_914 $1164(%rip) WORD $0x91008108 // add x8, x8, #32 WORD $0xd1008210 // sub x16, x16, #32 WORD $0x8b100171 // add x17, x11, x16 WORD $0xf100fe3f // cmp x17, #63 - WORD $0x54fffa6c // b.gt LBB0_865 $-180(%rip) - WORD $0xb500324e // cbnz x14, LBB0_939 $1608(%rip) + WORD $0x54fffa6c // b.gt LBB0_880 $-180(%rip) + WORD $0xb500328e // cbnz x14, LBB0_955 $1616(%rip) WORD $0x8b09014c // add x12, x10, x9 WORD $0x8b08018c // add x12, x12, x8 WORD $0x9100058c // add x12, x12, #1 WORD $0xaa2803e8 // mvn x8, x8 WORD $0x8b0b010b // add x11, x8, x11 WORD $0xf100057f // cmp x11, #1 - WORD $0x5400338a // b.ge LBB0_942 $1648(%rip) - WORD $0x17fffe38 // b LBB0_797 $-1824(%rip) -LBB0_872: + WORD $0x540033ca // b.ge LBB0_958 $1656(%rip) + WORD $0x17fffe1b // b LBB0_809 $-1940(%rip) +LBB0_887: WORD $0xd2800007 // mov x7, #0 WORD $0xd280000f // mov x15, #0 WORD $0xd2800008 // mov x8, #0 @@ -4847,16 +5099,16 @@ LBB0_872: WORD $0xf9400411 // ldr x17, [x0, #8] WORD $0xcb100225 // sub x5, x17, x16 WORD $0x8b100150 // add x16, x10, x16 - WORD $0x910083ea // add x10, sp, #32 + WORD $0x9100c3ea // add x10, sp, #48 WORD $0x9100814a // add x10, x10, #32 WORD $0x4f01e440 // movi.16b v0, #34 -Lloh32: - WORD $0x10fde2f1 // adr x17, lCPI0_0 $-17316(%rip) -Lloh33: +Lloh40: + WORD $0x10fdc4d1 // adr x17, lCPI0_0 $-18280(%rip) +Lloh41: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) -Lloh34: - WORD $0x10fde331 // adr x17, lCPI0_1 $-17308(%rip) -Lloh35: +Lloh42: + WORD $0x10fdc511 // adr x17, lCPI0_1 $-18272(%rip) +Lloh43: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 WORD $0xb200e3f1 // mov x17, #1229782938247303441 @@ -4866,8 +5118,8 @@ Lloh35: WORD $0x4f02e764 // movi.16b v4, #91 WORD $0x4f02e7a5 // movi.16b v5, #93 WORD $0x6f00e406 // movi.2d v6, #0000000000000000 - WORD $0x14000009 // b LBB0_874 $36(%rip) -LBB0_873: + WORD $0x14000009 // b LBB0_889 $36(%rip) +LBB0_888: WORD $0x937ffce7 // asr x7, x7, #63 WORD $0x9e670267 // fmov d7, x19 WORD $0x0e2058e7 // cnt.8b v7, v7 @@ -4876,10 +5128,10 @@ LBB0_873: WORD $0x8b0800a8 // add x8, x5, x8 WORD $0x91010210 // add x16, x16, #64 WORD $0xaa0603e5 // mov x5, x6 -LBB0_874: +LBB0_889: WORD $0xf10100a6 // subs x6, x5, #64 - WORD $0x540015cb // b.lt LBB0_881 $696(%rip) -LBB0_875: + WORD $0x540015cb // b.lt LBB0_896 $696(%rip) +LBB0_890: WORD $0xad404612 // ldp q18, q17, [x16] WORD $0xad411e10 // ldp q16, q7, [x16, #32] WORD $0x6e238e53 // cmeq.16b v19, v18, v3 @@ -4908,11 +5160,11 @@ LBB0_875: WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xaa130293 // orr x19, x20, x19 WORD $0xaa0f0274 // orr x20, x19, x15 - WORD $0xb5000094 // cbnz x20, LBB0_877 $16(%rip) + WORD $0xb5000094 // cbnz x20, LBB0_892 $16(%rip) WORD $0xd280000f // mov x15, #0 WORD $0xd2800013 // mov x19, #0 - WORD $0x1400000a // b LBB0_878 $40(%rip) -LBB0_877: + WORD $0x1400000a // b LBB0_893 $40(%rip) +LBB0_892: WORD $0x8a2f0274 // bic x20, x19, x15 WORD $0xaa1405f5 // orr x21, x15, x20, lsl #1 WORD $0x8a35026f // bic x15, x19, x21 @@ -4922,7 +5174,7 @@ LBB0_877: WORD $0xd37ffa73 // lsl x19, x19, #1 WORD $0xd200f273 // eor x19, x19, #0x5555555555555555 WORD $0x8a150273 // and x19, x19, x21 -LBB0_878: +LBB0_893: WORD $0x6e208e53 // cmeq.16b v19, v18, v0 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 @@ -5041,8 +5293,8 @@ LBB0_878: WORD $0xaa1502d5 // orr x21, x22, x21 WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xea270294 // bics x20, x20, x7 - WORD $0x54ffeae0 // b.eq LBB0_873 $-676(%rip) -LBB0_879: + WORD $0x54ffeae0 // b.eq LBB0_888 $-676(%rip) +LBB0_894: WORD $0xd1000695 // sub x21, x20, #1 WORD $0x8a1302b6 // and x22, x21, x19 WORD $0x9e6702c7 // fmov d7, x22 @@ -5051,73 +5303,73 @@ LBB0_879: WORD $0x1e2600f6 // fmov w22, s7 WORD $0x8b0802d6 // add x22, x22, x8 WORD $0xeb0b02df // cmp x22, x11 - WORD $0x540006c9 // b.ls LBB0_897 $216(%rip) + WORD $0x540006c9 // b.ls LBB0_912 $216(%rip) WORD $0x9100056b // add x11, x11, #1 WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_879 $-44(%rip) - WORD $0x17ffff4a // b LBB0_873 $-728(%rip) -LBB0_881: + WORD $0x54fffea1 // b.ne LBB0_894 $-44(%rip) + WORD $0x17ffff4a // b LBB0_888 $-728(%rip) +LBB0_896: WORD $0xf10000bf // cmp x5, #0 - WORD $0x5400160d // b.le LBB0_937 $704(%rip) - WORD $0xad021be6 // stp q6, q6, [sp, #64] - WORD $0xad011be6 // stp q6, q6, [sp, #32] + WORD $0x5400164d // b.le LBB0_953 $712(%rip) + WORD $0xad029be6 // stp q6, q6, [sp, #80] + WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0x92402e13 // and x19, x16, #0xfff WORD $0xf13f067f // cmp x19, #4033 - WORD $0x54ffe9a3 // b.lo LBB0_875 $-716(%rip) + WORD $0x54ffe9a3 // b.lo LBB0_890 $-716(%rip) WORD $0xf10080b4 // subs x20, x5, #32 - WORD $0x540000a3 // b.lo LBB0_885 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_900 $20(%rip) WORD $0xacc14207 // ldp q7, q16, [x16], #32 - WORD $0xad0143e7 // stp q7, q16, [sp, #32] + WORD $0xad01c3e7 // stp q7, q16, [sp, #48] WORD $0xaa0a03f3 // mov x19, x10 - WORD $0x14000003 // b LBB0_886 $12(%rip) -LBB0_885: - WORD $0x910083f3 // add x19, sp, #32 + WORD $0x14000003 // b LBB0_901 $12(%rip) +LBB0_900: + WORD $0x9100c3f3 // add x19, sp, #48 WORD $0xaa0503f4 // mov x20, x5 -LBB0_886: +LBB0_901: WORD $0xf1004295 // subs x21, x20, #16 - WORD $0x54000243 // b.lo LBB0_892 $72(%rip) + WORD $0x54000243 // b.lo LBB0_907 $72(%rip) WORD $0x3cc10607 // ldr q7, [x16], #16 WORD $0x3c810667 // str q7, [x19], #16 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10022b5 // subs x21, x21, #8 - WORD $0x540001e2 // b.hs LBB0_893 $60(%rip) -LBB0_888: + WORD $0x540001e2 // b.hs LBB0_908 $60(%rip) +LBB0_903: WORD $0xf1001295 // subs x21, x20, #4 - WORD $0x54000243 // b.lo LBB0_894 $72(%rip) -LBB0_889: + WORD $0x54000243 // b.lo LBB0_909 $72(%rip) +LBB0_904: WORD $0xb8404614 // ldr w20, [x16], #4 WORD $0xb8004674 // str w20, [x19], #4 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf1000ab5 // subs x21, x21, #2 - WORD $0x540001e2 // b.hs LBB0_895 $60(%rip) -LBB0_890: - WORD $0xb4000254 // cbz x20, LBB0_896 $72(%rip) -LBB0_891: + WORD $0x540001e2 // b.hs LBB0_910 $60(%rip) +LBB0_905: + WORD $0xb4000254 // cbz x20, LBB0_911 $72(%rip) +LBB0_906: WORD $0x39400210 // ldrb w16, [x16] WORD $0x39000270 // strb w16, [x19] - WORD $0x910083f0 // add x16, sp, #32 - WORD $0x17ffff32 // b LBB0_875 $-824(%rip) -LBB0_892: + WORD $0x9100c3f0 // add x16, sp, #48 + WORD $0x17ffff32 // b LBB0_890 $-824(%rip) +LBB0_907: WORD $0xf1002295 // subs x21, x20, #8 - WORD $0x54fffe63 // b.lo LBB0_888 $-52(%rip) -LBB0_893: + WORD $0x54fffe63 // b.lo LBB0_903 $-52(%rip) +LBB0_908: WORD $0xf8408614 // ldr x20, [x16], #8 WORD $0xf8008674 // str x20, [x19], #8 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10012b5 // subs x21, x21, #4 - WORD $0x54fffe02 // b.hs LBB0_889 $-64(%rip) -LBB0_894: + WORD $0x54fffe02 // b.hs LBB0_904 $-64(%rip) +LBB0_909: WORD $0xf1000a95 // subs x21, x20, #2 - WORD $0x54fffe63 // b.lo LBB0_890 $-52(%rip) -LBB0_895: + WORD $0x54fffe63 // b.lo LBB0_905 $-52(%rip) +LBB0_910: WORD $0x78402614 // ldrh w20, [x16], #2 WORD $0x78002674 // strh w20, [x19], #2 WORD $0xaa1503f4 // mov x20, x21 - WORD $0xb5fffe15 // cbnz x21, LBB0_891 $-64(%rip) -LBB0_896: - WORD $0x910083f0 // add x16, sp, #32 - WORD $0x17ffff23 // b LBB0_875 $-884(%rip) -LBB0_897: + WORD $0xb5fffe15 // cbnz x21, LBB0_906 $-64(%rip) +LBB0_911: + WORD $0x9100c3f0 // add x16, sp, #48 + WORD $0x17ffff23 // b LBB0_890 $-884(%rip) +LBB0_912: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xdac0028a // rbit x10, x20 WORD $0xdac0114a // clz x10, x10 @@ -5130,207 +5382,210 @@ LBB0_897: WORD $0x9a882568 // csinc x8, x11, x8, hs WORD $0xf9000028 // str x8, [x1] WORD $0xda9f9128 // csinv x8, x9, xzr, ls - WORD $0x17fffd9f // b LBB0_830 $-2436(%rip) -LBB0_898: + WORD $0x17fffd9f // b LBB0_845 $-2436(%rip) +LBB0_913: WORD $0xf9000029 // str x9, [x1] - WORD $0x17fffd9c // b LBB0_829 $-2448(%rip) -LBB0_899: + WORD $0x17fffd9c // b LBB0_844 $-2448(%rip) +LBB0_914: WORD $0xdac0022a // rbit x10, x17 WORD $0xdac0114a // clz x10, x10 WORD $0x8b080128 // add x8, x9, x8 WORD $0x8b080148 // add x8, x10, x8 WORD $0x91000908 // add x8, x8, #2 - WORD $0x17fffd69 // b LBB0_820 $-2652(%rip) -LBB0_900: +LBB0_915: + WORD $0xf9000028 // str x8, [x1] + WORD $0xaa0903e8 // mov x8, x9 + WORD $0x17fffd95 // b LBB0_845 $-2476(%rip) +LBB0_916: WORD $0x928000c8 // mov x8, #-7 - WORD $0x17fffd95 // b LBB0_830 $-2476(%rip) -LBB0_901: + WORD $0x17fffd93 // b LBB0_845 $-2484(%rip) +LBB0_917: WORD $0xb100077f // cmn x27, #1 WORD $0x9a9e0108 // csel x8, x8, lr, eq -LBB0_902: +LBB0_918: WORD $0xf9000028 // str x8, [x1] WORD $0xaa1b03e8 // mov x8, x27 - WORD $0x17fffd90 // b LBB0_830 $-2496(%rip) -LBB0_903: + WORD $0x17fffd8e // b LBB0_845 $-2504(%rip) +LBB0_919: WORD $0x92800014 // mov x20, #-1 -LBB0_904: +LBB0_920: WORD $0xaa3403f3 // mvn x19, x20 -LBB0_905: +LBB0_921: WORD $0x8b1a0268 // add x8, x19, x26 - WORD $0x17fffd8a // b LBB0_828 $-2520(%rip) -LBB0_906: + WORD $0x17fffd88 // b LBB0_843 $-2528(%rip) +LBB0_922: WORD $0xf900002d // str x13, [x1] WORD $0xaa0903e8 // mov x8, x9 - WORD $0x17fffd89 // b LBB0_830 $-2524(%rip) -LBB0_907: + WORD $0x17fffd87 // b LBB0_845 $-2532(%rip) +LBB0_923: WORD $0xaa0803f3 // mov x19, x8 - WORD $0x17fffffa // b LBB0_905 $-24(%rip) -LBB0_908: - WORD $0xaa1b03f4 // mov x20, x27 -LBB0_909: - WORD $0xf9000034 // str x20, [x1] + WORD $0x17fffffa // b LBB0_921 $-24(%rip) +LBB0_924: + WORD $0xaa1e03f0 // mov x16, lr +LBB0_925: + WORD $0xf9000030 // str x16, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x17fffd83 // b LBB0_830 $-2548(%rip) -LBB0_910: + WORD $0x17fffd81 // b LBB0_845 $-2556(%rip) +LBB0_926: WORD $0x92800006 // mov x6, #-1 -LBB0_911: +LBB0_927: WORD $0xaa2603fe // mvn lr, x6 -LBB0_912: +LBB0_928: WORD $0x8b1e0368 // add x8, x27, lr - WORD $0x17fffd7d // b LBB0_828 $-2572(%rip) -LBB0_913: + WORD $0x17fffd7b // b LBB0_843 $-2580(%rip) +LBB0_929: WORD $0xf900003b // str x27, [x1] WORD $0x387b6928 // ldrb w8, [x9, x27] WORD $0x7101851f // cmp w8, #97 - WORD $0x54ffaf41 // b.ne LBB0_829 $-2584(%rip) + WORD $0x54ffaf01 // b.ne LBB0_844 $-2592(%rip) WORD $0x91000b48 // add x8, x26, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x54ffaea1 // b.ne LBB0_829 $-2604(%rip) + WORD $0x54ffae61 // b.ne LBB0_844 $-2612(%rip) WORD $0x91000f48 // add x8, x26, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101cd1f // cmp w8, #115 - WORD $0x54ffae01 // b.ne LBB0_829 $-2624(%rip) + WORD $0x54ffadc1 // b.ne LBB0_844 $-2632(%rip) WORD $0x91001348 // add x8, x26, #4 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101951f // cmp w8, #101 - WORD $0x54ffad61 // b.ne LBB0_829 $-2644(%rip) + WORD $0x54ffad21 // b.ne LBB0_844 $-2652(%rip) WORD $0x91001748 // add x8, x26, #5 - WORD $0x17fffd68 // b LBB0_828 $-2656(%rip) -LBB0_918: + WORD $0x17fffd66 // b LBB0_843 $-2664(%rip) +LBB0_934: WORD $0xf900003a // str x26, [x1] WORD $0x394003c8 // ldrb w8, [lr] WORD $0x7101b91f // cmp w8, #110 - WORD $0x54ffaca1 // b.ne LBB0_829 $-2668(%rip) + WORD $0x54ffac61 // b.ne LBB0_844 $-2676(%rip) WORD $0x91000748 // add x8, x26, #1 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101d51f // cmp w8, #117 - WORD $0x54ffac01 // b.ne LBB0_829 $-2688(%rip) + WORD $0x54ffabc1 // b.ne LBB0_844 $-2696(%rip) WORD $0x91000b48 // add x8, x26, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x54ffab61 // b.ne LBB0_829 $-2708(%rip) + WORD $0x54ffab21 // b.ne LBB0_844 $-2716(%rip) WORD $0x91000f48 // add x8, x26, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x54ffaac1 // b.ne LBB0_829 $-2728(%rip) - WORD $0x14000014 // b LBB0_926 $80(%rip) -LBB0_922: + WORD $0x54ffaa81 // b.ne LBB0_844 $-2736(%rip) + WORD $0x14000014 // b LBB0_942 $80(%rip) +LBB0_938: WORD $0xf900003a // str x26, [x1] WORD $0x394003c8 // ldrb w8, [lr] WORD $0x7101d11f // cmp w8, #116 - WORD $0x54ffaa21 // b.ne LBB0_829 $-2748(%rip) + WORD $0x54ffa9e1 // b.ne LBB0_844 $-2756(%rip) WORD $0x91000748 // add x8, x26, #1 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101c91f // cmp w8, #114 - WORD $0x54ffa981 // b.ne LBB0_829 $-2768(%rip) + WORD $0x54ffa941 // b.ne LBB0_844 $-2776(%rip) WORD $0x91000b48 // add x8, x26, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101d51f // cmp w8, #117 - WORD $0x54ffa8e1 // b.ne LBB0_829 $-2788(%rip) + WORD $0x54ffa8a1 // b.ne LBB0_844 $-2796(%rip) WORD $0x91000f48 // add x8, x26, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101951f // cmp w8, #101 - WORD $0x54ffa841 // b.ne LBB0_829 $-2808(%rip) -LBB0_926: + WORD $0x54ffa801 // b.ne LBB0_844 $-2816(%rip) +LBB0_942: WORD $0x91001348 // add x8, x26, #4 - WORD $0x17fffd3f // b LBB0_828 $-2820(%rip) -LBB0_927: + WORD $0x17fffd3d // b LBB0_843 $-2828(%rip) +LBB0_943: WORD $0x8b10014c // add x12, x10, x16 WORD $0xf100057f // cmp x11, #1 - WORD $0x5400050a // b.ge LBB0_942 $160(%rip) - WORD $0x17fffcc4 // b LBB0_797 $-3312(%rip) -LBB0_928: + WORD $0x5400050a // b.ge LBB0_958 $160(%rip) + WORD $0x17fffca5 // b LBB0_809 $-3436(%rip) +LBB0_944: WORD $0xaa1303fe // mov lr, x19 WORD $0x8b130368 // add x8, x27, x19 - WORD $0x17fffd38 // b LBB0_828 $-2848(%rip) -LBB0_929: + WORD $0x17fffd36 // b LBB0_843 $-2856(%rip) +LBB0_945: WORD $0xaa1b03e8 // mov x8, x27 -LBB0_930: +LBB0_946: WORD $0x9280001b // mov x27, #-1 - WORD $0x17ffffa5 // b LBB0_902 $-364(%rip) -LBB0_931: - WORD $0x91000ad6 // add x22, x22, #2 -LBB0_932: + WORD $0x17ffffa5 // b LBB0_918 $-364(%rip) +LBB0_947: + WORD $0x91000af7 // add x23, x23, #2 +LBB0_948: WORD $0x92800028 // mov x8, #-2 - WORD $0x14000006 // b LBB0_936 $24(%rip) -LBB0_933: - WORD $0x910006d6 // add x22, x22, #1 + WORD $0x14000006 // b LBB0_952 $24(%rip) +LBB0_949: + WORD $0x910006f7 // add x23, x23, #1 WORD $0x92800048 // mov x8, #-3 - WORD $0x14000003 // b LBB0_936 $12(%rip) -LBB0_934: - WORD $0x910006d6 // add x22, x22, #1 -LBB0_935: + WORD $0x14000003 // b LBB0_952 $12(%rip) +LBB0_950: + WORD $0x910006f7 // add x23, x23, #1 +LBB0_951: WORD $0x92800008 // mov x8, #-1 -LBB0_936: - WORD $0xcb1502c9 // sub x9, x22, x21 +LBB0_952: + WORD $0xcb1602e9 // sub x9, x23, x22 WORD $0xf9000029 // str x9, [x1] - WORD $0x17fffd2c // b LBB0_830 $-2896(%rip) -LBB0_937: + WORD $0x17fffd2a // b LBB0_845 $-2904(%rip) +LBB0_953: WORD $0xf9400408 // ldr x8, [x0, #8] -LBB0_938: +LBB0_954: WORD $0xf9000028 // str x8, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x17fffd28 // b LBB0_830 $-2912(%rip) -LBB0_939: + WORD $0x17fffd26 // b LBB0_845 $-2920(%rip) +LBB0_955: WORD $0xd100056c // sub x12, x11, #1 WORD $0xeb08019f // cmp x12, x8 - WORD $0x54ff9580 // b.eq LBB0_797 $-3408(%rip) + WORD $0x54ff91a0 // b.eq LBB0_809 $-3532(%rip) WORD $0x8b09014c // add x12, x10, x9 WORD $0x8b08018c // add x12, x12, x8 WORD $0x9100098c // add x12, x12, #2 WORD $0xcb080168 // sub x8, x11, x8 WORD $0xd100090b // sub x11, x8, #2 WORD $0xf100057f // cmp x11, #1 - WORD $0x5400010a // b.ge LBB0_942 $32(%rip) - WORD $0x17fffca4 // b LBB0_797 $-3440(%rip) -LBB0_941: + WORD $0x5400010a // b.ge LBB0_958 $32(%rip) + WORD $0x17fffc85 // b LBB0_809 $-3564(%rip) +LBB0_957: WORD $0x9280002d // mov x13, #-2 WORD $0x52800048 // mov w8, #2 WORD $0x8b08018c // add x12, x12, x8 WORD $0x92800008 // mov x8, #-1 WORD $0xab0d016b // adds x11, x11, x13 - WORD $0x54ffa2ed // b.le LBB0_830 $-2980(%rip) -LBB0_942: + WORD $0x54ffa2ad // b.le LBB0_845 $-2988(%rip) +LBB0_958: WORD $0x39400188 // ldrb w8, [x12] WORD $0x7101711f // cmp w8, #92 - WORD $0x54ffff00 // b.eq LBB0_941 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_957 $-32(%rip) WORD $0x7100891f // cmp w8, #34 - WORD $0x54000100 // b.eq LBB0_945 $32(%rip) + WORD $0x54000100 // b.eq LBB0_961 $32(%rip) WORD $0x9280000d // mov x13, #-1 WORD $0x52800028 // mov w8, #1 WORD $0x8b08018c // add x12, x12, x8 WORD $0x92800008 // mov x8, #-1 WORD $0xab0d016b // adds x11, x11, x13 - WORD $0x54fffecc // b.gt LBB0_942 $-40(%rip) - WORD $0x17fffd0b // b LBB0_830 $-3028(%rip) -LBB0_945: + WORD $0x54fffecc // b.gt LBB0_958 $-40(%rip) + WORD $0x17fffd09 // b LBB0_845 $-3036(%rip) +LBB0_961: WORD $0xcb0a0188 // sub x8, x12, x10 WORD $0x91000508 // add x8, x8, #1 - WORD $0x17fffcda // b LBB0_820 $-3224(%rip) -LBB0_946: - WORD $0x910022d6 // add x22, x22, #8 - WORD $0x17ffffd1 // b LBB0_932 $-188(%rip) -LBB0_947: + WORD $0x17ffff6f // b LBB0_915 $-580(%rip) +LBB0_962: + WORD $0x910022f7 // add x23, x23, #8 + WORD $0x17ffffd1 // b LBB0_948 $-188(%rip) +LBB0_963: WORD $0x92800068 // mov x8, #-4 - WORD $0xaa1a03f6 // mov x22, x26 - WORD $0x17ffffd5 // b LBB0_936 $-172(%rip) -LBB0_948: - WORD $0xaa1a03f6 // mov x22, x26 - WORD $0x17ffffd3 // b LBB0_936 $-180(%rip) -LBB0_949: - WORD $0x910022d6 // add x22, x22, #8 + WORD $0xaa1803f7 // mov x23, x24 + WORD $0x17ffffd5 // b LBB0_952 $-172(%rip) +LBB0_964: + WORD $0xaa1803f7 // mov x23, x24 + WORD $0x17ffffd3 // b LBB0_952 $-180(%rip) +LBB0_965: + WORD $0x910022f7 // add x23, x23, #8 WORD $0x92800068 // mov x8, #-4 - WORD $0x17ffffd0 // b LBB0_936 $-192(%rip) + WORD $0x17ffffd0 // b LBB0_952 $-192(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 @@ -5406,7 +5661,7 @@ TEXT ·__get_by_path(SB), NOSPLIT, $0-40 _entry: MOVD 16(g), R16 - SUB $272, RSP, R17 + SUB $288, RSP, R17 CMP R16, R17 BLS _stack_grow diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_subr_arm64.go b/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_subr_arm64.go index 2d0172721..790ba88a0 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_subr_arm64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/get_by_path_subr_arm64.go @@ -13,7 +13,7 @@ var ( ) const ( - _stack__get_by_path = 208 + _stack__get_by_path = 224 ) var ( diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_array_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_array_arm64.s index 88756a05f..af24710f6 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_array_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_array_arm64.s @@ -69,7 +69,7 @@ _skip_array: WORD $0xa90dfbfd // stp fp, lr, [sp, #216] WORD $0xa93ffbfd // stp fp, lr, [sp, #-8] WORD $0xd10023fd // sub fp, sp, #8 - WORD $0xaa0003fb // mov x27, x0 + WORD $0xaa0003fe // mov lr, x0 Lloh0: WORD $0x10fffd28 // adr x8, lCPI0_0 $-92(%rip) Lloh1: @@ -83,7 +83,7 @@ Lloh1: WORD $0x5280002c // mov w12, #1 WORD $0xd284c00d // mov x13, #9728 WORD $0xf2c0002d // movk x13, #1, lsl #32 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x4f02e781 // movi.16b v1, #92 Lloh2: @@ -112,12 +112,12 @@ Lloh5: WORD $0x6f00e417 // movi.2d v23, #0000000000000000 WORD $0x4f03e778 // movi.16b v24, #123 WORD $0x4f03e7b9 // movi.16b v25, #125 - WORD $0x52800036 // mov w22, #1 + WORD $0x52800037 // mov w23, #1 LBB0_1: - WORD $0xa9403b7e // ldp lr, x14, [x27] + WORD $0xa9403bd4 // ldp x20, x14, [lr] WORD $0xeb0e027f // cmp x19, x14 WORD $0x54000162 // b.hs LBB0_6 $44(%rip) - WORD $0x38736bc8 // ldrb w8, [lr, x19] + WORD $0x38736a88 // ldrb w8, [x20, x19] WORD $0x7100351f // cmp w8, #13 WORD $0x54000100 // b.eq LBB0_6 $32(%rip) WORD $0x7100811f // cmp w8, #32 @@ -131,7 +131,7 @@ LBB0_6: WORD $0x91000668 // add x8, x19, #1 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_10 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_10 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -143,7 +143,7 @@ LBB0_10: WORD $0x91000a68 // add x8, x19, #2 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_14 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_14 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -155,7 +155,7 @@ LBB0_14: WORD $0x91000e68 // add x8, x19, #3 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_18 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_18 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -166,9 +166,9 @@ LBB0_14: LBB0_18: WORD $0x91001268 // add x8, x19, #4 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x540171c2 // b.hs LBB0_576 $11832(%rip) + WORD $0x540178a2 // b.hs LBB0_589 $12052(%rip) LBB0_19: - WORD $0x38686bcf // ldrb w15, [lr, x8] + WORD $0x38686a8f // ldrb w15, [x20, x8] WORD $0x710081ff // cmp w15, #32 WORD $0x9acf218f // lsl x15, x12, x15 WORD $0x8a0d01ef // and x15, x15, x13 @@ -177,17 +177,17 @@ LBB0_19: WORD $0x91000508 // add x8, x8, #1 WORD $0xeb0801df // cmp x14, x8 WORD $0x54ffff01 // b.ne LBB0_19 $-32(%rip) - WORD $0x14000b85 // b LBB0_577 $11796(%rip) + WORD $0x14000bbc // b LBB0_590 $12016(%rip) LBB0_21: WORD $0xeb0e011f // cmp x8, x14 - WORD $0x54017062 // b.hs LBB0_577 $11788(%rip) + WORD $0x54017742 // b.hs LBB0_590 $12008(%rip) LBB0_22: WORD $0x91000513 // add x19, x8, #1 WORD $0xf9000033 // str x19, [x1] - WORD $0x8b0803c6 // add x6, lr, x8 + WORD $0x8b080286 // add x6, x20, x8 WORD $0x394000c5 // ldrb w5, [x6] - WORD $0x34016fc5 // cbz w5, LBB0_577 $11768(%rip) - WORD $0xd10006ce // sub x14, x22, #1 + WORD $0x340176a5 // cbz w5, LBB0_590 $11988(%rip) + WORD $0xd10006ee // sub x14, x23, #1 WORD $0xf86e7920 // ldr x0, [x9, x14, lsl #3] WORD $0xb100057f // cmn x11, #1 WORD $0x9a8b010b // csel x11, x8, x11, eq @@ -200,20 +200,20 @@ LBB0_22: WORD $0x71000c1f // cmp w0, #3 WORD $0x54001a01 // b.ne LBB0_60 $832(%rip) WORD $0x710088bf // cmp w5, #34 - WORD $0x540160c1 // b.ne LBB0_542 $11288(%rip) + WORD $0x540167a1 // b.ne LBB0_555 $11508(%rip) WORD $0x5280008f // mov w15, #4 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] WORD $0x37303203 // tbnz w3, #6, LBB0_114 $1600(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372845c3 // tbnz w3, #5, LBB0_142 $2232(%rip) - WORD $0x540160a0 // b.eq LBB0_545 $11284(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400f963 // b.lo LBB0_366 $7980(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372848c3 // tbnz w3, #5, LBB0_147 $2328(%rip) + WORD $0x54016780 // b.eq LBB0_558 $11504(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400ff63 // b.lo LBB0_376 $8172(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_33: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -239,42 +239,42 @@ LBB0_33: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_37 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_38 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_39 $88(%rip) LBB0_36: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_33 $-236(%rip) - WORD $0x14000774 // b LBB0_360 $7632(%rip) + WORD $0x140007a4 // b LBB0_370 $7824(%rip) LBB0_37: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -283,14 +283,14 @@ LBB0_37: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_38: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_36 $-80(%rip) LBB0_39: @@ -298,8 +298,8 @@ LBB0_39: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f8baf3 // tbz x19, #63, LBB0_283 $5980(%rip) - WORD $0x14000aac // b LBB0_544 $10928(%rip) + WORD $0xb6f93153 // tbz x19, #63, LBB0_478 $9768(%rip) + WORD $0x14000ae3 // b LBB0_557 $11148(%rip) LBB0_40: WORD $0x7100101f // cmp w0, #4 WORD $0x54000d40 // b.eq LBB0_58 $424(%rip) @@ -311,17 +311,17 @@ LBB0_40: WORD $0x54002061 // b.ne LBB0_99 $1036(%rip) WORD $0x5280004f // mov w15, #2 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] - WORD $0x373031a3 // tbnz w3, #6, LBB0_133 $1588(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372851c3 // tbnz w3, #5, LBB0_182 $2616(%rip) - WORD $0x540153e0 // b.eq LBB0_545 $10876(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400fd43 // b.lo LBB0_395 $8104(%rip) + WORD $0x373034a3 // tbnz w3, #6, LBB0_138 $1684(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372854c3 // tbnz w3, #5, LBB0_187 $2712(%rip) + WORD $0x54015ac0 // b.eq LBB0_558 $11096(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x54010343 // b.lo LBB0_405 $8296(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_49: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -347,42 +347,42 @@ LBB0_49: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_53 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_54 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_55 $88(%rip) LBB0_52: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_49 $-236(%rip) - WORD $0x140007a3 // b LBB0_392 $7820(%rip) + WORD $0x140007d3 // b LBB0_402 $8012(%rip) LBB0_53: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -391,14 +391,14 @@ LBB0_53: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_54: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_52 $-80(%rip) LBB0_55: @@ -406,19 +406,19 @@ LBB0_55: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f85593 // tbz x19, #63, LBB0_194 $2736(%rip) - WORD $0x14000a46 // b LBB0_544 $10520(%rip) + WORD $0xb6f85893 // tbz x19, #63, LBB0_199 $2832(%rip) + WORD $0x14000a7d // b LBB0_557 $10740(%rip) LBB0_56: WORD $0x7100b0bf // cmp w5, #44 WORD $0x54001820 // b.eq LBB0_110 $772(%rip) WORD $0x710174bf // cmp w5, #93 WORD $0x540014c0 // b.eq LBB0_101 $664(%rip) - WORD $0x14000a3d // b LBB0_542 $10484(%rip) + WORD $0x14000a74 // b LBB0_555 $10704(%rip) LBB0_58: WORD $0x7100e8bf // cmp w5, #58 - WORD $0x54014761 // b.ne LBB0_542 $10476(%rip) + WORD $0x54014e41 // b.ne LBB0_555 $10696(%rip) WORD $0xf82e793f // str xzr, [x9, x14, lsl #3] - WORD $0x1400056b // b LBB0_284 $5548(%rip) + WORD $0x1400091e // b LBB0_480 $9336(%rip) LBB0_60: WORD $0xf900004e // str x14, [x2] WORD $0x92800020 // mov x0, #-2 @@ -427,36 +427,36 @@ LBB0_60: LBB0_61: WORD $0x5100c0ae // sub w14, w5, #48 WORD $0x710029df // cmp w14, #10 - WORD $0x54003c02 // b.hs LBB0_155 $1920(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54003f02 // b.hs LBB0_160 $2016(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0x37301f43 // tbnz w3, #6, LBB0_121 $1000(%rip) WORD $0xeb0801ce // subs x14, x14, x8 - WORD $0x540146e0 // b.eq LBB0_546 $10460(%rip) + WORD $0x54014dc0 // b.eq LBB0_559 $10680(%rip) WORD $0x394000cf // ldrb w15, [x6] WORD $0x7100c1ff // cmp w15, #48 WORD $0x540001a1 // b.ne LBB0_68 $52(%rip) WORD $0xf10005df // cmp x14, #1 - WORD $0x5400aae0 // b.eq LBB0_283 $5468(%rip) - WORD $0x38736bcf // ldrb w15, [lr, x19] + WORD $0x54012140 // b.eq LBB0_478 $9256(%rip) + WORD $0x38736a8f // ldrb w15, [x20, x19] WORD $0x5100b9e0 // sub w0, w15, #46 WORD $0x7100dc1f // cmp w0, #55 - WORD $0x5400aa68 // b.hi LBB0_283 $5452(%rip) + WORD $0x540120c8 // b.hi LBB0_478 $9240(%rip) WORD $0x9ac0218f // lsl x15, x12, x0 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x5400a9a0 // b.eq LBB0_283 $5428(%rip) + WORD $0x54012000 // b.eq LBB0_478 $9216(%rip) LBB0_68: WORD $0xf10041df // cmp x14, #16 - WORD $0x54011363 // b.lo LBB0_458 $8812(%rip) + WORD $0x54011963 // b.lo LBB0_468 $9004(%rip) WORD $0xd2800005 // mov x5, #0 - WORD $0xd280001a // mov x26, #0 - WORD $0x92800016 // mov x22, #-1 + WORD $0xd280001b // mov x27, #0 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800013 // mov x19, #-1 WORD $0x92800000 // mov x0, #-1 LBB0_70: - WORD $0x3cfa68da // ldr q26, [x6, x26] + WORD $0x3cfb68da // ldr q26, [x6, x27] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 WORD $0x6e278f5d // cmeq.16b v29, v26, v7 @@ -475,133 +475,133 @@ LBB0_70: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0x2a3503f5 // mvn w21, w21 - WORD $0x32103eb5 // orr w21, w21, #0xffff0000 - WORD $0x5ac002b5 // rbit w21, w21 - WORD $0x5ac012b5 // clz w21, w21 - WORD $0x1ad52238 // lsl w24, w17, w21 - WORD $0x0a3801f9 // bic w25, w15, w24 - WORD $0x0a380291 // bic w17, w20, w24 - WORD $0x0a3802e7 // bic w7, w23, w24 - WORD $0x710042bf // cmp w21, #16 - WORD $0x1a9901f8 // csel w24, w15, w25, eq - WORD $0x1a910294 // csel w20, w20, w17, eq - WORD $0x1a8702f9 // csel w25, w23, w7, eq - WORD $0x5100070f // sub w15, w24, #1 - WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x5400d5e1 // b.ne LBB0_364 $6844(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x5400d281 // b.ne LBB0_358 $6736(%rip) + WORD $0x1e260356 // fmov w22, s26 + WORD $0x2a3603f6 // mvn w22, w22 + WORD $0x32103ed6 // orr w22, w22, #0xffff0000 + WORD $0x5ac002d6 // rbit w22, w22 + WORD $0x5ac012d6 // clz w22, w22 + WORD $0x1ad62239 // lsl w25, w17, w22 + WORD $0x0a3901fa // bic w26, w15, w25 + WORD $0x0a3902b1 // bic w17, w21, w25 + WORD $0x0a390307 // bic w7, w24, w25 + WORD $0x710042df // cmp w22, #16 + WORD $0x1a9a01f9 // csel w25, w15, w26, eq + WORD $0x1a9102b5 // csel w21, w21, w17, eq + WORD $0x1a87031a // csel w26, w24, w7, eq WORD $0x5100072f // sub w15, w25, #1 WORD $0x6a1901ef // ands w15, w15, w25 - WORD $0x5400d221 // b.ne LBB0_358 $6724(%rip) - WORD $0x340000d8 // cbz w24, LBB0_76 $24(%rip) - WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 + WORD $0x5400dbe1 // b.ne LBB0_374 $7036(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x5400d881 // b.ne LBB0_368 $6928(%rip) + WORD $0x5100074f // sub w15, w26, #1 + WORD $0x6a1a01ef // ands w15, w15, w26 + WORD $0x5400d821 // b.ne LBB0_368 $6916(%rip) + WORD $0x340000d9 // cbz w25, LBB0_76 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 WORD $0xb100041f // cmn x0, #1 - WORD $0x5400e5e1 // b.ne LBB0_394 $7356(%rip) - WORD $0x8b170340 // add x0, x26, x23 + WORD $0x5400ebe1 // b.ne LBB0_404 $7548(%rip) + WORD $0x8b180360 // add x0, x27, x24 LBB0_76: - WORD $0x340000d4 // cbz w20, LBB0_79 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x340000d5 // cbz w21, LBB0_79 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb100067f // cmn x19, #1 - WORD $0x5400d281 // b.ne LBB0_362 $6736(%rip) - WORD $0x8b140353 // add x19, x26, x20 + WORD $0x5400d881 // b.ne LBB0_372 $6928(%rip) + WORD $0x8b150373 // add x19, x27, x21 LBB0_79: - WORD $0x340000d9 // cbz w25, LBB0_82 $24(%rip) - WORD $0x5ac0032f // rbit w15, w25 - WORD $0x5ac011f4 // clz w20, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x5400d1c1 // b.ne LBB0_362 $6712(%rip) - WORD $0x8b140356 // add x22, x26, x20 + WORD $0x340000da // cbz w26, LBB0_82 $24(%rip) + WORD $0x5ac0034f // rbit w15, w26 + WORD $0x5ac011f5 // clz w21, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x5400d7c1 // b.ne LBB0_372 $6904(%rip) + WORD $0x8b150377 // add x23, x27, x21 LBB0_82: - WORD $0x710042bf // cmp w21, #16 - WORD $0x540033c1 // b.ne LBB0_167 $1656(%rip) - WORD $0x9100435a // add x26, x26, #16 + WORD $0x710042df // cmp w22, #16 + WORD $0x540036c1 // b.ne LBB0_172 $1752(%rip) + WORD $0x9100437b // add x27, x27, #16 WORD $0xd10040a5 // sub x5, x5, #16 - WORD $0x8b0501d5 // add x21, x14, x5 - WORD $0xf1003ebf // cmp x21, #15 + WORD $0x8b0501d6 // add x22, x14, x5 + WORD $0xf1003edf // cmp x22, #15 WORD $0x54fff6a8 // b.hi LBB0_70 $-300(%rip) - WORD $0x8b1a00c5 // add x5, x6, x26 - WORD $0xeb1a01df // cmp x14, x26 - WORD $0x54003300 // b.eq LBB0_168 $1632(%rip) + WORD $0x8b1b00c5 // add x5, x6, x27 + WORD $0xeb1b01df // cmp x14, x27 + WORD $0x54003600 // b.eq LBB0_173 $1728(%rip) LBB0_85: - WORD $0x8b1500b9 // add x25, x5, x21 + WORD $0x8b1600ba // add x26, x5, x22 WORD $0xaa2503ee // mvn x14, x5 - WORD $0x8b1e010f // add x15, x8, lr + WORD $0x8b14010f // add x15, x8, x20 WORD $0x8b0f01ce // add x14, x14, x15 - WORD $0xcb0600ba // sub x26, x5, x6 - WORD $0xaa0503fe // mov lr, x5 + WORD $0xcb0600b4 // sub x20, x5, x6 + WORD $0xaa0503fb // mov x27, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x14000009 // b LBB0_88 $36(%rip) LBB0_86: WORD $0xb100067f // cmn x19, #1 - WORD $0xaa1a03f3 // mov x19, x26 + WORD $0xaa1403f3 // mov x19, x20 WORD $0x540003a1 // b.ne LBB0_97 $116(%rip) LBB0_87: WORD $0xd10005ce // sub x14, x14, #1 - WORD $0x9100075a // add x26, x26, #1 - WORD $0xaa1e03e5 // mov x5, lr - WORD $0xd10006b5 // sub x21, x21, #1 - WORD $0xb400a5d5 // cbz x21, LBB0_294 $5304(%rip) + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1b03e5 // mov x5, x27 + WORD $0xd10006d6 // sub x22, x22, #1 + WORD $0xb400abd6 // cbz x22, LBB0_304 $5496(%rip) LBB0_88: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0x38401775 // ldrb w21, [x27], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 WORD $0x54ffff03 // b.lo LBB0_87 $-32(%rip) - WORD $0x7100b69f // cmp w20, #45 + WORD $0x7100b6bf // cmp w21, #45 WORD $0x5400016d // b.le LBB0_94 $44(%rip) - WORD $0x7101969f // cmp w20, #101 + WORD $0x710196bf // cmp w21, #101 WORD $0x54fffe20 // b.eq LBB0_86 $-60(%rip) - WORD $0x7101169f // cmp w20, #69 + WORD $0x710116bf // cmp w21, #69 WORD $0x54fffde0 // b.eq LBB0_86 $-68(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54002f81 // b.ne LBB0_168 $1520(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54003281 // b.ne LBB0_173 $1616(%rip) WORD $0xb100041f // cmn x0, #1 - WORD $0xaa1a03e0 // mov x0, x26 + WORD $0xaa1403e0 // mov x0, x20 WORD $0x54fffda0 // b.eq LBB0_87 $-76(%rip) WORD $0x14000008 // b LBB0_97 $32(%rip) LBB0_94: - WORD $0x7100ae9f // cmp w20, #43 + WORD $0x7100aebf // cmp w21, #43 WORD $0x54000060 // b.eq LBB0_96 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x54002e81 // b.ne LBB0_168 $1488(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x54003181 // b.ne LBB0_173 $1584(%rip) LBB0_96: - WORD $0xb10006df // cmn x22, #1 - WORD $0xaa1a03f6 // mov x22, x26 + WORD $0xb10006ff // cmn x23, #1 + WORD $0xaa1403f7 // mov x23, x20 WORD $0x54fffca0 // b.eq LBB0_87 $-108(%rip) LBB0_97: - WORD $0x5280007a // mov w26, #3 - WORD $0x14000191 // b LBB0_180 $1604(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x140001a9 // b LBB0_185 $1700(%rip) LBB0_98: WORD $0x7100b0bf // cmp w5, #44 WORD $0x540004a0 // b.eq LBB0_112 $148(%rip) LBB0_99: WORD $0x7101f4bf // cmp w5, #125 WORD $0x54000080 // b.eq LBB0_101 $16(%rip) - WORD $0x1400099b // b LBB0_542 $9836(%rip) + WORD $0x140009d2 // b LBB0_555 $10056(%rip) LBB0_100: WORD $0x710174bf // cmp w5, #93 WORD $0x540000c1 // b.ne LBB0_102 $24(%rip) LBB0_101: WORD $0xf900004e // str x14, [x2] - WORD $0xaa0e03f6 // mov x22, x14 + WORD $0xaa0e03f7 // mov x23, x14 WORD $0xaa0b03e0 // mov x0, x11 WORD $0xb5ffc80e // cbnz x14, LBB0_1 $-1792(%rip) - WORD $0x140009ff // b LBB0_578 $10236(%rip) + WORD $0x14000a36 // b LBB0_591 $10456(%rip) LBB0_102: WORD $0xf82e792c // str x12, [x9, x14, lsl #3] WORD $0x92800020 // mov x0, #-2 @@ -609,40 +609,40 @@ LBB0_102: WORD $0x54ffeb8d // b.le LBB0_61 $-656(%rip) LBB0_103: WORD $0x7101b4bf // cmp w5, #109 - WORD $0x5400298d // b.le LBB0_162 $1328(%rip) + WORD $0x54002c8d // b.le LBB0_167 $1424(%rip) WORD $0x7101b8bf // cmp w5, #110 - WORD $0x540041a0 // b.eq LBB0_200 $2100(%rip) + WORD $0x540044a0 // b.eq LBB0_205 $2196(%rip) WORD $0x7101d0bf // cmp w5, #116 - WORD $0x54004000 // b.eq LBB0_198 $2048(%rip) + WORD $0x54004300 // b.eq LBB0_203 $2144(%rip) WORD $0x7101ecbf // cmp w5, #123 - WORD $0x54013e61 // b.ne LBB0_578 $10188(%rip) - WORD $0x37304f43 // tbnz w3, #6, LBB0_218 $2536(%rip) + WORD $0x54014541 // b.ne LBB0_591 $10408(%rip) + WORD $0x37305243 // tbnz w3, #6, LBB0_223 $2632(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x540130cc // b.gt LBB0_543 $9752(%rip) + WORD $0x540137ac // b.gt LBB0_556 $9972(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ce // mov w14, #6 - WORD $0x140001f4 // b LBB0_197 $2000(%rip) + WORD $0x1400020c // b LBB0_202 $2096(%rip) LBB0_110: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x5401300c // b.gt LBB0_543 $9728(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x540136ec // b.gt LBB0_556 $9948(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793f // str xzr, [x9, x22, lsl #3] - WORD $0x140004ac // b LBB0_284 $4784(%rip) + WORD $0xf837793f // str xzr, [x9, x23, lsl #3] + WORD $0x1400085f // b LBB0_480 $8572(%rip) LBB0_112: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x54012f4c // b.gt LBB0_543 $9704(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x5401362c // b.gt LBB0_556 $9924(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793a // str x26, [x9, x22, lsl #3] - WORD $0x140004a6 // b LBB0_284 $4760(%rip) + WORD $0xf837793b // str x27, [x9, x23, lsl #3] + WORD $0x14000859 // b LBB0_480 $8548(%rip) LBB0_114: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400c44b // b.lt LBB0_359 $6280(%rip) + WORD $0x5400ca4b // b.lt LBB0_369 $6472(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 @@ -650,13 +650,13 @@ LBB0_114: WORD $0x14000008 // b LBB0_118 $32(%rip) LBB0_116: WORD $0xd2800005 // mov x5, #0 - WORD $0xb50005b5 // cbnz x21, LBB0_120 $180(%rip) + WORD $0xb50005b6 // cbnz x22, LBB0_120 $180(%rip) LBB0_117: WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x5400c10d // b.le LBB0_356 $6176(%rip) + WORD $0x5400c70d // b.le LBB0_366 $6368(%rip) LBB0_118: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] @@ -665,51 +665,52 @@ LBB0_118: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq WORD $0x54fffbc0 // b.eq LBB0_116 $-136(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0xb4fffab5 // cbz x21, LBB0_117 $-172(%rip) + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0xb4fffab6 // cbz x22, LBB0_117 $-172(%rip) LBB0_120: - WORD $0xdac002af // rbit x15, x21 + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910009d3 // add x19, x14, #2 - WORD $0x14000465 // b LBB0_283 $4500(%rip) + WORD $0x14000818 // b LBB0_478 $8288(%rip) LBB0_121: WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_124 $60(%rip) -LBB0_122: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_125 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_123: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -717,48 +718,72 @@ LBB0_122: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x35008aa0 // cbnz w0, LBB0_282 $4436(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000365 // cbnz w5, LBB0_133 $108(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_122 $-52(%rip) -LBB0_124: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb40001ee // cbz x14, LBB0_131 $60(%rip) + WORD $0x54fffe48 // b.hi LBB0_123 $-56(%rip) +LBB0_125: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xd284c013 // mov x19, #9728 + WORD $0xf2c20033 // movk x19, #4097, lsl #32 + WORD $0xb400020e // cbz x14, LBB0_132 $64(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_126: +LBB0_127: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x540089a0 // b.eq LBB0_283 $4404(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54008960 // b.eq LBB0_283 $4396(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1301ef // and x15, x15, x19 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_132 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54008920 // b.eq LBB0_283 $4388(%rip) + WORD $0x540000e0 // b.eq LBB0_132 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_132 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_126 $-40(%rip) -LBB0_130: + WORD $0x54fffe81 // b.ne LBB0_127 $-48(%rip) WORD $0xaa0503e0 // mov x0, x5 -LBB0_131: - WORD $0xcb1e0013 // sub x19, x0, lr LBB0_132: - WORD $0x5280007a // mov w26, #3 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x1400043f // b LBB0_283 $4348(%rip) + WORD $0xcb140013 // sub x19, x0, x20 + WORD $0x140007f0 // b LBB0_478 $8128(%rip) LBB0_133: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x5400fd6b // b.lt LBB0_479 $8108(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_135: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54009480 // b.eq LBB0_303 $4752(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_135 $-48(%rip) +LBB0_137: + WORD $0x91000413 // add x19, x0, #1 + WORD $0x140007db // b LBB0_479 $8044(%rip) +LBB0_138: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400baeb // b.lt LBB0_365 $5980(%rip) + WORD $0x5400bdeb // b.lt LBB0_375 $6076(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_135: +LBB0_140: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -766,63 +791,63 @@ LBB0_135: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_137 $48(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x54000180 // b.eq LBB0_142 $48(%rip) + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_138 $8(%rip) -LBB0_137: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_143 $8(%rip) +LBB0_142: WORD $0xd2800005 // mov x5, #0 -LBB0_138: - WORD $0xb5000f55 // cbnz x21, LBB0_152 $488(%rip) +LBB0_143: + WORD $0xb5000f56 // cbnz x22, LBB0_157 $488(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa6c // b.gt LBB0_135 $-180(%rip) - WORD $0xb500f185 // cbnz x5, LBB0_468 $7728(%rip) + WORD $0x54fffa6c // b.gt LBB0_140 $-180(%rip) + WORD $0xb500f565 // cbnz x5, LBB0_481 $7852(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400f32a // b.ge LBB0_471 $7780(%rip) - WORD $0x1400093d // b LBB0_577 $9460(%rip) -LBB0_142: - WORD $0x54011b00 // b.eq LBB0_545 $9056(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b883 // b.lo LBB0_372 $5904(%rip) + WORD $0x5400f70a // b.ge LBB0_484 $7904(%rip) + WORD $0x1400095c // b LBB0_590 $9584(%rip) +LBB0_147: + WORD $0x54011ee0 // b.eq LBB0_558 $9180(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400bb83 // b.lo LBB0_382 $6000(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_145: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_150: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -844,40 +869,40 @@ LBB0_145: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_150 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_151 $152(%rip) -LBB0_147: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_155 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_156 $152(%rip) +LBB0_152: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -892,44 +917,44 @@ LBB0_147: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb500042e // cbnz x14, LBB0_153 $132(%rip) - WORD $0xb50111a5 // cbnz x5, LBB0_551 $8756(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500042e // cbnz x14, LBB0_158 $132(%rip) + WORD $0xb5011585 // cbnz x5, LBB0_564 $8880(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_145 $-340(%rip) - WORD $0x1400052f // b LBB0_361 $5308(%rip) -LBB0_150: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_150 $-340(%rip) + WORD $0x14000547 // b LBB0_371 $5404(%rip) +LBB0_155: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_151: +LBB0_156: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_147 $-188(%rip) -LBB0_152: - WORD $0xdac002af // rbit x15, x21 + WORD $0x17ffffd1 // b LBB0_152 $-188(%rip) +LBB0_157: + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 @@ -937,82 +962,82 @@ LBB0_152: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54001983 // b.lo LBB0_195 $816(%rip) - WORD $0x140008c8 // b LBB0_578 $8992(%rip) -LBB0_153: + WORD $0x54001983 // b.lo LBB0_200 $816(%rip) + WORD $0x140008e7 // b LBB0_591 $9116(%rip) +LBB0_158: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54011783 // b.lo LBB0_574 $8944(%rip) + WORD $0x54011b63 // b.lo LBB0_587 $9068(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f87053 // tbz x19, #63, LBB0_283 $3592(%rip) - WORD $0x14000857 // b LBB0_544 $8540(%rip) -LBB0_155: + WORD $0xb6f8e3b3 // tbz x19, #63, LBB0_478 $7284(%rip) + WORD $0x14000876 // b LBB0_557 $8664(%rip) +LBB0_160: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001cc0 // b.eq LBB0_206 $920(%rip) + WORD $0x54001cc0 // b.eq LBB0_211 $920(%rip) WORD $0x7100b4bf // cmp w5, #45 - WORD $0x54011741 // b.ne LBB0_578 $8936(%rip) - WORD $0x37306ae3 // tbnz w3, #6, LBB0_273 $3420(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d9 // subs x25, x14, x19 - WORD $0x54011520 // b.eq LBB0_570 $8868(%rip) - WORD $0x8b1303c0 // add x0, lr, x19 + WORD $0x54011b21 // b.ne LBB0_591 $9060(%rip) + WORD $0x37306ae3 // tbnz w3, #6, LBB0_278 $3420(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301da // subs x26, x14, x19 + WORD $0x54011900 // b.eq LBB0_583 $8992(%rip) + WORD $0x8b130280 // add x0, x20, x19 WORD $0x3940000e // ldrb w14, [x0] WORD $0x7100c1df // cmp w14, #48 - WORD $0x54008881 // b.ne LBB0_309 $4368(%rip) - WORD $0xf100073f // cmp x25, #1 - WORD $0x540086e1 // b.ne LBB0_307 $4316(%rip) -LBB0_161: + WORD $0x54008b81 // b.ne LBB0_319 $4464(%rip) + WORD $0xf100075f // cmp x26, #1 + WORD $0x540089e1 // b.ne LBB0_317 $4412(%rip) +LBB0_166: WORD $0x5280002e // mov w14, #1 - WORD $0x140004e0 // b LBB0_355 $4992(%rip) -LBB0_162: + WORD $0x140004f8 // b LBB0_365 $5088(%rip) +LBB0_167: WORD $0x71016cbf // cmp w5, #91 - WORD $0x540019c0 // b.eq LBB0_203 $824(%rip) + WORD $0x540019c0 // b.eq LBB0_208 $824(%rip) WORD $0x710198bf // cmp w5, #102 - WORD $0x54011541 // b.ne LBB0_578 $8872(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54011921 // b.ne LBB0_591 $8996(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd10011cf // sub x15, x14, #4 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x54010942 // b.hs LBB0_550 $8488(%rip) - WORD $0xb8736bce // ldr w14, [lr, x19] + WORD $0x54010d22 // b.hs LBB0_563 $8612(%rip) + WORD $0xb8736a8e // ldr w14, [x20, x19] WORD $0x528d8c2f // mov w15, #27745 WORD $0x72acae6f // movk w15, #25971, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54010ee1 // b.ne LBB0_563 $8668(%rip) + WORD $0x540112c1 // b.ne LBB0_576 $8792(%rip) WORD $0x91001513 // add x19, x8, #5 - WORD $0x14000362 // b LBB0_283 $3464(%rip) -LBB0_167: - WORD $0x8b3540ce // add x14, x6, w21, uxtw - WORD $0x8b1a01c5 // add x5, x14, x26 -LBB0_168: + WORD $0x140006fd // b LBB0_478 $7156(%rip) +LBB0_172: + WORD $0x8b3640ce // add x14, x6, w22, uxtw + WORD $0x8b1b01c5 // add x5, x14, x27 +LBB0_173: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4010740 // cbz x0, LBB0_547 $8424(%rip) -LBB0_169: - WORD $0xb4010736 // cbz x22, LBB0_547 $8420(%rip) - WORD $0xb4010713 // cbz x19, LBB0_547 $8416(%rip) + WORD $0xb4010b20 // cbz x0, LBB0_560 $8548(%rip) +LBB0_174: + WORD $0xb4010b17 // cbz x23, LBB0_560 $8544(%rip) + WORD $0xb4010af3 // cbz x19, LBB0_560 $8540(%rip) WORD $0xcb0600ae // sub x14, x5, x6 WORD $0xd10005c5 // sub x5, x14, #1 WORD $0xeb05001f // cmp x0, x5 - WORD $0x54000300 // b.eq LBB0_179 $96(%rip) - WORD $0xeb0502df // cmp x22, x5 - WORD $0x540002c0 // b.eq LBB0_179 $88(%rip) + WORD $0x54000300 // b.eq LBB0_184 $96(%rip) + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x540002c0 // b.eq LBB0_184 $88(%rip) WORD $0xeb05027f // cmp x19, x5 - WORD $0x54000280 // b.eq LBB0_179 $80(%rip) - WORD $0xf10006cf // subs x15, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0x54000280 // b.eq LBB0_184 $80(%rip) + WORD $0xf10006ef // subs x15, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x5400006b // b.lt LBB0_176 $12(%rip) + WORD $0x5400006b // b.lt LBB0_181 $12(%rip) WORD $0xeb0f027f // cmp x19, x15 - WORD $0x54010561 // b.ne LBB0_548 $8364(%rip) -LBB0_176: + WORD $0x54010941 // b.ne LBB0_561 $8488(%rip) +LBB0_181: WORD $0xaa130005 // orr x5, x0, x19 - WORD $0xb7f80065 // tbnz x5, #63, LBB0_178 $12(%rip) + WORD $0xb7f80065 // tbnz x5, #63, LBB0_183 $12(%rip) WORD $0xeb13001f // cmp x0, x19 - WORD $0x5401062a // b.ge LBB0_553 $8388(%rip) -LBB0_178: + WORD $0x54010a0a // b.ge LBB0_566 $8512(%rip) +LBB0_183: WORD $0xd37ffcaf // lsr x15, x5, #63 WORD $0x520001ef // eor w15, w15, #0x1 WORD $0xd1000671 // sub x17, x19, #1 @@ -1021,23 +1046,23 @@ LBB0_178: WORD $0x6a1101ff // tst w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0xda9301ce // csinv x14, x14, x19, eq - WORD $0x14000004 // b LBB0_180 $16(%rip) -LBB0_179: + WORD $0x14000004 // b LBB0_185 $16(%rip) +LBB0_184: WORD $0xcb0e03ee // neg x14, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_180: - WORD $0xb7f9032e // tbnz x14, #63, LBB0_547 $8292(%rip) +LBB0_185: + WORD $0xb7f9070e // tbnz x14, #63, LBB0_560 $8416(%rip) WORD $0x8b0e0113 // add x19, x8, x14 - WORD $0x1400033b // b LBB0_283 $3308(%rip) -LBB0_182: - WORD $0x54010240 // b.eq LBB0_545 $8264(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b063 // b.lo LBB0_401 $5644(%rip) + WORD $0x140006d6 // b LBB0_478 $7000(%rip) +LBB0_187: + WORD $0x54010620 // b.eq LBB0_558 $8388(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b363 // b.lo LBB0_411 $5740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_185: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_190: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -1059,40 +1084,40 @@ LBB0_185: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_190 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_191 $152(%rip) -LBB0_187: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_195 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_196 $152(%rip) +LBB0_192: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -1107,115 +1132,115 @@ LBB0_187: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb50002ee // cbnz x14, LBB0_192 $92(%rip) - WORD $0xb500f8e5 // cbnz x5, LBB0_551 $7964(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb50002ee // cbnz x14, LBB0_197 $92(%rip) + WORD $0xb500fcc5 // cbnz x5, LBB0_564 $8088(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_185 $-340(%rip) - WORD $0x140004fe // b LBB0_393 $5112(%rip) -LBB0_190: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_190 $-340(%rip) + WORD $0x14000516 // b LBB0_403 $5208(%rip) +LBB0_195: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_191: +LBB0_196: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_187 $-188(%rip) -LBB0_192: + WORD $0x17ffffd1 // b LBB0_192 $-188(%rip) +LBB0_197: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54010003 // b.lo LBB0_574 $8192(%rip) + WORD $0x540103e3 // b.lo LBB0_587 $8316(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb7f8f393 // tbnz x19, #63, LBB0_544 $7792(%rip) -LBB0_194: + WORD $0xb7f8f773 // tbnz x19, #63, LBB0_557 $7916(%rip) +LBB0_199: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xb27ff7ee // mov x14, #9223372036854775806 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x5400ffc8 // b.hi LBB0_578 $8184(%rip) -LBB0_195: + WORD $0x540103a8 // b.hi LBB0_591 $8308(%rip) +LBB0_200: WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400f24c // b.gt LBB0_543 $7752(%rip) + WORD $0x5400f62c // b.gt LBB0_556 $7876(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x5280008e // mov w14, #4 -LBB0_197: +LBB0_202: WORD $0xf828792e // str x14, [x9, x8, lsl #3] - WORD $0x140002bd // b LBB0_284 $2804(%rip) -LBB0_198: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x14000658 // b LBB0_480 $6496(%rip) +LBB0_203: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f2c2 // b.hs LBB0_550 $7768(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f6a2 // b.hs LBB0_563 $7892(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528e4e8f // mov w15, #29300 WORD $0x72acaeaf // movk w15, #25973, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54000180 // b.eq LBB0_202 $48(%rip) - WORD $0x14000797 // b LBB0_554 $7772(%rip) -LBB0_200: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54000180 // b.eq LBB0_207 $48(%rip) + WORD $0x140007b6 // b LBB0_567 $7896(%rip) +LBB0_205: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f162 // b.hs LBB0_550 $7724(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f542 // b.hs LBB0_563 $7848(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528eadcf // mov w15, #30062 WORD $0x72ad8d8f // movk w15, #27756, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x5400f421 // b.ne LBB0_558 $7812(%rip) -LBB0_202: + WORD $0x5400f801 // b.ne LBB0_571 $7936(%rip) +LBB0_207: WORD $0x91001113 // add x19, x8, #4 - WORD $0x140002a2 // b LBB0_283 $2696(%rip) -LBB0_203: - WORD $0x37302d23 // tbnz w3, #6, LBB0_245 $1444(%rip) + WORD $0x1400063d // b LBB0_478 $6388(%rip) +LBB0_208: + WORD $0x37302d23 // tbnz w3, #6, LBB0_250 $1444(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400ee4c // b.gt LBB0_543 $7624(%rip) + WORD $0x5400f22c // b.gt LBB0_556 $7748(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ae // mov w14, #5 - WORD $0x17ffffe0 // b LBB0_197 $-128(%rip) -LBB0_206: - WORD $0x37305423 // tbnz w3, #6, LBB0_285 $2692(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x37285c23 // tbnz w3, #5, LBB0_295 $2948(%rip) - WORD $0x5400eda0 // b.eq LBB0_545 $7604(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400ad03 // b.lo LBB0_432 $5536(%rip) + WORD $0x17ffffe0 // b LBB0_202 $-128(%rip) +LBB0_211: + WORD $0x37305423 // tbnz w3, #6, LBB0_290 $2692(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x37285f23 // tbnz w3, #5, LBB0_305 $3044(%rip) + WORD $0x5400f180 // b.eq LBB0_558 $7728(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b003 // b.lo LBB0_442 $5632(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_211: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_216: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -1249,43 +1274,43 @@ LBB0_211: WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000145 // cbnz x5, LBB0_215 $40(%rip) - WORD $0xb50001c6 // cbnz x6, LBB0_216 $56(%rip) + WORD $0xb5000145 // cbnz x5, LBB0_220 $40(%rip) + WORD $0xb50001c6 // cbnz x6, LBB0_221 $56(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb500032e // cbnz x14, LBB0_217 $100(%rip) -LBB0_214: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500032e // cbnz x14, LBB0_222 $100(%rip) +LBB0_219: + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff868 // b.hi LBB0_211 $-244(%rip) - WORD $0x1400051f // b LBB0_429 $5244(%rip) -LBB0_215: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff868 // b.hi LBB0_216 $-244(%rip) + WORD $0x14000537 // b LBB0_439 $5340(%rip) +LBB0_220: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_216: +LBB0_221: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -1296,24 +1321,24 @@ LBB0_216: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4fffd2e // cbz x14, LBB0_214 $-92(%rip) -LBB0_217: + WORD $0xb4fffd2e // cbz x14, LBB0_219 $-92(%rip) +LBB0_222: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 - WORD $0x140002fc // b LBB0_306 $3056(%rip) -LBB0_218: + WORD $0x14000314 // b LBB0_316 $3152(%rip) +LBB0_223: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_220 $40(%rip) -LBB0_219: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_225 $40(%rip) +LBB0_224: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1323,12 +1348,12 @@ LBB0_219: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_220: +LBB0_225: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_228 $748(%rip) -LBB0_221: + WORD $0x5400176b // b.lt LBB0_233 $748(%rip) +LBB0_226: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1357,11 +1382,11 @@ LBB0_221: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_223 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_228 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_224 $44(%rip) -LBB0_223: + WORD $0x1400000b // b LBB0_229 $44(%rip) +LBB0_228: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1372,7 +1397,7 @@ LBB0_223: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_224: +LBB0_229: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1403,47 +1428,47 @@ LBB0_224: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1495,104 +1520,104 @@ LBB0_224: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_219 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_224 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_226: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_231: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54002789 // b.ls LBB0_272 $1264(%rip) + WORD $0x54002789 // b.ls LBB0_277 $1264(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_226 $-44(%rip) - WORD $0x17ffff3a // b LBB0_219 $-792(%rip) -LBB0_228: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_231 $-44(%rip) + WORD $0x17ffff3a // b LBB0_224 $-792(%rip) +LBB0_233: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400d4ad // b.le LBB0_575 $6804(%rip) + WORD $0x5400d88d // b.le LBB0_588 $6928(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_240 $112(%rip) + WORD $0x54000383 // b.lo LBB0_245 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_232 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_237 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_233 $12(%rip) -LBB0_232: + WORD $0x14000003 // b LBB0_238 $12(%rip) +LBB0_237: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_233: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_241 $80(%rip) +LBB0_238: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_246 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_242 $68(%rip) -LBB0_235: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_243 $80(%rip) -LBB0_236: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_247 $68(%rip) +LBB0_240: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_248 $80(%rip) +LBB0_241: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_244 $68(%rip) -LBB0_237: - WORD $0xb4000065 // cbz x5, LBB0_239 $12(%rip) -LBB0_238: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_249 $68(%rip) +LBB0_242: + WORD $0xb4000065 // cbz x5, LBB0_244 $12(%rip) +LBB0_243: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_239: +LBB0_244: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_240: - WORD $0x5280007a // mov w26, #3 +LBB0_245: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_221 $-892(%rip) -LBB0_241: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_235 $-60(%rip) -LBB0_242: + WORD $0x17ffff21 // b LBB0_226 $-892(%rip) +LBB0_246: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_240 $-60(%rip) +LBB0_247: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_236 $-72(%rip) -LBB0_243: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_237 $-60(%rip) -LBB0_244: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_241 $-72(%rip) +LBB0_248: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_242 $-60(%rip) +LBB0_249: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_238 $-72(%rip) - WORD $0x17ffffef // b LBB0_239 $-68(%rip) -LBB0_245: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_243 $-72(%rip) + WORD $0x17ffffef // b LBB0_244 $-68(%rip) +LBB0_250: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_247 $40(%rip) -LBB0_246: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_252 $40(%rip) +LBB0_251: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1602,12 +1627,12 @@ LBB0_246: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_247: +LBB0_252: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_255 $748(%rip) -LBB0_248: + WORD $0x5400176b // b.lt LBB0_260 $748(%rip) +LBB0_253: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1636,11 +1661,11 @@ LBB0_248: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_250 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_255 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_251 $44(%rip) -LBB0_250: + WORD $0x1400000b // b LBB0_256 $44(%rip) +LBB0_255: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1651,7 +1676,7 @@ LBB0_250: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_251: +LBB0_256: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1682,47 +1707,47 @@ LBB0_251: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1774,118 +1799,119 @@ LBB0_251: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_246 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_251 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_253: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_258: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54000729 // b.ls LBB0_272 $228(%rip) + WORD $0x54000729 // b.ls LBB0_277 $228(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_253 $-44(%rip) - WORD $0x17ffff3a // b LBB0_246 $-792(%rip) -LBB0_255: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_258 $-44(%rip) + WORD $0x17ffff3a // b LBB0_251 $-792(%rip) +LBB0_260: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400b44d // b.le LBB0_575 $5768(%rip) + WORD $0x5400b82d // b.le LBB0_588 $5892(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_267 $112(%rip) + WORD $0x54000383 // b.lo LBB0_272 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_259 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_264 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_260 $12(%rip) -LBB0_259: + WORD $0x14000003 // b LBB0_265 $12(%rip) +LBB0_264: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_260: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_268 $80(%rip) +LBB0_265: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_273 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_269 $68(%rip) -LBB0_262: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_270 $80(%rip) -LBB0_263: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_274 $68(%rip) +LBB0_267: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_275 $80(%rip) +LBB0_268: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_271 $68(%rip) -LBB0_264: - WORD $0xb4000065 // cbz x5, LBB0_266 $12(%rip) -LBB0_265: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_276 $68(%rip) +LBB0_269: + WORD $0xb4000065 // cbz x5, LBB0_271 $12(%rip) +LBB0_270: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_266: +LBB0_271: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_267: - WORD $0x5280007a // mov w26, #3 +LBB0_272: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_248 $-892(%rip) -LBB0_268: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_262 $-60(%rip) -LBB0_269: + WORD $0x17ffff21 // b LBB0_253 $-892(%rip) +LBB0_273: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_267 $-60(%rip) +LBB0_274: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_263 $-72(%rip) -LBB0_270: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_264 $-60(%rip) -LBB0_271: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_268 $-72(%rip) +LBB0_275: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_269 $-60(%rip) +LBB0_276: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_265 $-72(%rip) - WORD $0x17ffffef // b LBB0_266 $-68(%rip) -LBB0_272: - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xdac0028f // rbit x15, x20 + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_270 $-72(%rip) + WORD $0x17ffffef // b LBB0_271 $-68(%rip) +LBB0_277: + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 WORD $0xf9400bf1 // ldr x17, [sp, #16] WORD $0xcb1101ef // sub x15, x15, x17 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005cf // add x15, x14, #1 WORD $0xf900002f // str x15, [x1] - WORD $0xf9400771 // ldr x17, [x27, #8] + WORD $0xf94007d1 // ldr x17, [lr, #8] WORD $0xeb1101ff // cmp x15, x17 WORD $0x9a8e2633 // csinc x19, x17, x14, hs WORD $0x12800011 // mov w17, #-1 WORD $0xf9000033 // str x19, [x1] WORD $0xda9f9100 // csinv x0, x8, xzr, ls - WORD $0xb6f80560 // tbz x0, #63, LBB0_284 $172(%rip) - WORD $0x14000563 // b LBB0_578 $5516(%rip) -LBB0_273: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xb6f878c0 // tbz x0, #63, LBB0_480 $3864(%rip) + WORD $0x14000582 // b LBB0_591 $5640(%rip) +LBB0_278: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_276 $60(%rip) -LBB0_274: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_282 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_280: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -1893,54 +1919,51 @@ LBB0_274: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x350002a0 // cbnz w0, LBB0_282 $84(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000bc5 // cbnz w5, LBB0_299 $376(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_274 $-52(%rip) -LBB0_276: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb4ff79ee // cbz x14, LBB0_131 $-4292(%rip) + WORD $0x54fffe48 // b.hi LBB0_280 $-56(%rip) +LBB0_282: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xb400024e // cbz x14, LBB0_289 $72(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_278: + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_284: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x54ff7960 // b.eq LBB0_132 $-4308(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54ff7920 // b.eq LBB0_132 $-4316(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1101ef // and x15, x15, x17 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_289 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54ff78e0 // b.eq LBB0_132 $-4324(%rip) + WORD $0x540000e0 // b.eq LBB0_289 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_289 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_278 $-40(%rip) - WORD $0x17fffbc0 // b LBB0_130 $-4352(%rip) -LBB0_282: - WORD $0x5ac0000e // rbit w14, w0 - WORD $0x5ac011ce // clz w14, w14 - WORD $0x8b1301d3 // add x19, x14, x19 -LBB0_283: + WORD $0x54fffe81 // b.ne LBB0_284 $-48(%rip) + WORD $0xaa0503e0 // mov x0, x5 +LBB0_289: + WORD $0xcb140013 // sub x19, x0, x20 WORD $0xf9000033 // str x19, [x1] - WORD $0xaa0803e0 // mov x0, x8 - WORD $0xeb07011f // cmp x8, x7 - WORD $0x5400a742 // b.hs LBB0_578 $5352(%rip) -LBB0_284: - WORD $0xf9400056 // ldr x22, [x2] - WORD $0xaa0b03e0 // mov x0, x11 - WORD $0xb5ff2ef6 // cbnz x22, LBB0_1 $-6692(%rip) - WORD $0x14000536 // b LBB0_578 $5336(%rip) -LBB0_285: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5280007b // mov w27, #3 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x14000395 // b LBB0_479 $3668(%rip) +LBB0_290: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400552b // b.lt LBB0_423 $2724(%rip) + WORD $0x5400582b // b.lt LBB0_433 $2820(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_287: +LBB0_292: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -1948,30 +1971,30 @@ LBB0_287: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x540001a0 // b.eq LBB0_289 $52(%rip) - WORD $0x0a25028f // bic w15, w20, w5 + WORD $0x540001a0 // b.eq LBB0_294 $52(%rip) + WORD $0x0a2502af // bic w15, w21, w5 WORD $0x2a0f04b1 // orr w17, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 + WORD $0x0a0402a5 // and w5, w21, w4 WORD $0x0a3100a5 // bic w5, w5, w17 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs @@ -1979,38 +2002,65 @@ LBB0_287: WORD $0x0a1101ef // and w15, w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_290 $8(%rip) -LBB0_289: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_295 $8(%rip) +LBB0_294: WORD $0xd2800005 // mov x5, #0 -LBB0_290: - WORD $0xb5ff6bb5 // cbnz x21, LBB0_120 $-4748(%rip) +LBB0_295: + WORD $0xb5ff68b6 // cbnz x22, LBB0_120 $-4844(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa4c // b.gt LBB0_287 $-184(%rip) - WORD $0xb5008645 // cbnz x5, LBB0_518 $4296(%rip) + WORD $0x54fffa4c // b.gt LBB0_292 $-184(%rip) + WORD $0xb5008a25 // cbnz x5, LBB0_531 $4420(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54004e4a // b.ge LBB0_424 $2504(%rip) - WORD $0x140004f6 // b LBB0_577 $5080(%rip) -LBB0_294: - WORD $0xaa1903e5 // mov x5, x25 + WORD $0x5400514a // b.ge LBB0_434 $2600(%rip) + WORD $0x14000515 // b LBB0_590 $5204(%rip) +LBB0_299: + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x54006a0b // b.lt LBB0_479 $3392(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_301: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000120 // b.eq LBB0_303 $36(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_301 $-48(%rip) + WORD $0x17fffb65 // b LBB0_137 $-4716(%rip) +LBB0_303: + WORD $0x8b0e010e // add x14, x8, x14 + WORD $0x910005d3 // add x19, x14, #1 + WORD $0x1400033e // b LBB0_479 $3320(%rip) +LBB0_304: + WORD $0xaa1a03e5 // mov x5, x26 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5ff8b40 // cbnz x0, LBB0_169 $-3736(%rip) - WORD $0x14000492 // b LBB0_547 $4680(%rip) -LBB0_295: - WORD $0x540091a0 // b.eq LBB0_545 $4660(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x540055a3 // b.lo LBB0_438 $2740(%rip) + WORD $0xb5ff8840 // cbnz x0, LBB0_174 $-3832(%rip) + WORD $0x14000499 // b LBB0_560 $4708(%rip) +LBB0_305: + WORD $0x54009280 // b.eq LBB0_558 $4688(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x540055a3 // b.lo LBB0_448 $2740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_298: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_308: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -2042,30 +2092,30 @@ LBB0_298: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000445 // cbnz x5, LBB0_303 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_304 $152(%rip) -LBB0_300: + WORD $0xb5000445 // cbnz x5, LBB0_313 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_314 $152(%rip) +LBB0_310: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -2091,20 +2141,20 @@ LBB0_300: WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100b1 // orr x17, x5, x17 WORD $0xaa0f0225 // orr x5, x17, x15 - WORD $0xb500030e // cbnz x14, LBB0_305 $96(%rip) - WORD $0xb5008845 // cbnz x5, LBB0_551 $4360(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500030e // cbnz x14, LBB0_315 $96(%rip) + WORD $0xb5008925 // cbnz x5, LBB0_564 $4388(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_298 $-340(%rip) - WORD $0x14000229 // b LBB0_430 $2212(%rip) -LBB0_303: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_308 $-340(%rip) + WORD $0x14000229 // b LBB0_440 $2212(%rip) +LBB0_313: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_304: +LBB0_314: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -2115,9 +2165,9 @@ LBB0_304: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 - WORD $0x17ffffd0 // b LBB0_300 $-192(%rip) -LBB0_305: + WORD $0x5280007b // mov w27, #3 + WORD $0x17ffffd0 // b LBB0_310 $-192(%rip) +LBB0_315: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 @@ -2125,33 +2175,33 @@ LBB0_305: WORD $0xeb0e00bf // cmp x5, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54008f03 // b.lo LBB0_574 $4576(%rip) -LBB0_306: + WORD $0x54008fe3 // b.lo LBB0_587 $4604(%rip) +LBB0_316: WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffe7d3 // tbz x19, #63, LBB0_283 $-776(%rip) - WORD $0x14000413 // b LBB0_544 $4172(%rip) -LBB0_307: + WORD $0xb6f85833 // tbz x19, #63, LBB0_478 $2820(%rip) + WORD $0x1400041a // b LBB0_557 $4200(%rip) +LBB0_317: WORD $0x3940040e // ldrb w14, [x0, #1] WORD $0x5100b9ce // sub w14, w14, #46 WORD $0x7100dddf // cmp w14, #55 - WORD $0x54ff78e8 // b.hi LBB0_161 $-4324(%rip) + WORD $0x54ff75e8 // b.hi LBB0_166 $-4420(%rip) WORD $0x9ace218f // lsl x15, x12, x14 WORD $0x5280002e // mov w14, #1 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x54001420 // b.eq LBB0_355 $644(%rip) -LBB0_309: - WORD $0xf100433f // cmp x25, #16 - WORD $0x54005143 // b.lo LBB0_460 $2600(%rip) - WORD $0xd2800015 // mov x21, #0 + WORD $0x54001420 // b.eq LBB0_365 $644(%rip) +LBB0_319: + WORD $0xf100435f // cmp x26, #16 + WORD $0x54005143 // b.lo LBB0_470 $2600(%rip) + WORD $0xd2800016 // mov x22, #0 WORD $0xd2800005 // mov x5, #0 WORD $0x92800006 // mov x6, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x9280001a // mov x26, #-1 -LBB0_311: + WORD $0x92800017 // mov x23, #-1 + WORD $0x9280001b // mov x27, #-1 +LBB0_321: WORD $0x3ce5681a // ldr q26, [x0, x5] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 @@ -2184,210 +2234,210 @@ LBB0_311: WORD $0x32103dce // orr w14, w14, #0xffff0000 WORD $0x5ac001ce // rbit w14, w14 WORD $0x5ac011ce // clz w14, w14 - WORD $0x12800014 // mov w20, #-1 - WORD $0x1ace2294 // lsl w20, w20, w14 - WORD $0x0a3401f7 // bic w23, w15, w20 - WORD $0x0a340238 // bic w24, w17, w20 - WORD $0x0a3400f4 // bic w20, w7, w20 + WORD $0x12800015 // mov w21, #-1 + WORD $0x1ace22b5 // lsl w21, w21, w14 + WORD $0x0a3501f8 // bic w24, w15, w21 + WORD $0x0a350239 // bic w25, w17, w21 + WORD $0x0a3500f5 // bic w21, w7, w21 WORD $0x710041df // cmp w14, #16 - WORD $0x1a9701f7 // csel w23, w15, w23, eq - WORD $0x1a980238 // csel w24, w17, w24, eq - WORD $0x1a9400f4 // csel w20, w7, w20, eq - WORD $0x510006ef // sub w15, w23, #1 - WORD $0x6a1701ef // ands w15, w15, w23 - WORD $0x540035a1 // b.ne LBB0_422 $1716(%rip) + WORD $0x1a9801f8 // csel w24, w15, w24, eq + WORD $0x1a990239 // csel w25, w17, w25, eq + WORD $0x1a9500f5 // csel w21, w7, w21, eq WORD $0x5100070f // sub w15, w24, #1 WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x54003541 // b.ne LBB0_422 $1704(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x540034e1 // b.ne LBB0_422 $1692(%rip) - WORD $0x340000d7 // cbz w23, LBB0_317 $24(%rip) - WORD $0x5ac002ef // rbit w15, w23 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb100075f // cmn x26, #1 - WORD $0x540038a1 // b.ne LBB0_431 $1812(%rip) - WORD $0x8b1700ba // add x26, x5, x23 -LBB0_317: - WORD $0x340000d8 // cbz w24, LBB0_320 $24(%rip) + WORD $0x540035a1 // b.ne LBB0_432 $1716(%rip) + WORD $0x5100072f // sub w15, w25, #1 + WORD $0x6a1901ef // ands w15, w15, w25 + WORD $0x54003541 // b.ne LBB0_432 $1704(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x540034e1 // b.ne LBB0_432 $1692(%rip) + WORD $0x340000d8 // cbz w24, LBB0_327 $24(%rip) WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x540037e1 // b.ne LBB0_431 $1788(%rip) - WORD $0x8b1700b6 // add x22, x5, x23 -LBB0_320: - WORD $0x340000d4 // cbz w20, LBB0_323 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb100077f // cmn x27, #1 + WORD $0x540038a1 // b.ne LBB0_441 $1812(%rip) + WORD $0x8b1800bb // add x27, x5, x24 +LBB0_327: + WORD $0x340000d9 // cbz w25, LBB0_330 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x540037e1 // b.ne LBB0_441 $1788(%rip) + WORD $0x8b1800b7 // add x23, x5, x24 +LBB0_330: + WORD $0x340000d5 // cbz w21, LBB0_333 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb10004df // cmn x6, #1 - WORD $0x540047c1 // b.ne LBB0_459 $2296(%rip) - WORD $0x8b1400a6 // add x6, x5, x20 -LBB0_323: + WORD $0x540047c1 // b.ne LBB0_469 $2296(%rip) + WORD $0x8b1500a6 // add x6, x5, x21 +LBB0_333: WORD $0x710041df // cmp w14, #16 - WORD $0x54000601 // b.ne LBB0_341 $192(%rip) + WORD $0x54000601 // b.ne LBB0_351 $192(%rip) WORD $0x910040a5 // add x5, x5, #16 - WORD $0xd10042b5 // sub x21, x21, #16 - WORD $0x8b15032e // add x14, x25, x21 + WORD $0xd10042d6 // sub x22, x22, #16 + WORD $0x8b16034e // add x14, x26, x22 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fff6c8 // b.hi LBB0_311 $-296(%rip) - WORD $0x8b050015 // add x21, x0, x5 - WORD $0xeb05033f // cmp x25, x5 + WORD $0x54fff6c8 // b.hi LBB0_321 $-296(%rip) + WORD $0x8b050016 // add x22, x0, x5 + WORD $0xeb05035f // cmp x26, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000540 // b.eq LBB0_342 $168(%rip) -LBB0_326: - WORD $0x8b0e02a5 // add x5, x21, x14 - WORD $0xcb0802af // sub x15, x21, x8 - WORD $0xcb1e01f9 // sub x25, x15, lr - WORD $0xaa1503fe // mov lr, x21 - WORD $0x14000006 // b LBB0_329 $24(%rip) -LBB0_327: - WORD $0xd100073a // sub x26, x25, #1 -LBB0_328: - WORD $0x91000739 // add x25, x25, #1 - WORD $0xaa1e03f5 // mov x21, lr + WORD $0x54000540 // b.eq LBB0_352 $168(%rip) +LBB0_336: + WORD $0x8b0e02c5 // add x5, x22, x14 + WORD $0xcb0802cf // sub x15, x22, x8 + WORD $0xcb1401f4 // sub x20, x15, x20 + WORD $0xaa1603fa // mov x26, x22 + WORD $0x14000006 // b LBB0_339 $24(%rip) +LBB0_337: + WORD $0xd100069b // sub x27, x20, #1 +LBB0_338: + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1a03f6 // mov x22, x26 WORD $0xd10005ce // sub x14, x14, #1 - WORD $0xb4000c2e // cbz x14, LBB0_363 $388(%rip) -LBB0_329: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0xb4000c2e // cbz x14, LBB0_373 $388(%rip) +LBB0_339: + WORD $0x38401755 // ldrb w21, [x26], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 - WORD $0x54ffff23 // b.lo LBB0_328 $-28(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x5400014d // b.le LBB0_335 $40(%rip) - WORD $0x7101969f // cmp w20, #101 - WORD $0x54000200 // b.eq LBB0_339 $64(%rip) - WORD $0x7101169f // cmp w20, #69 - WORD $0x540001c0 // b.eq LBB0_339 $56(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54000281 // b.ne LBB0_342 $80(%rip) - WORD $0xb100075f // cmn x26, #1 - WORD $0x54fffdc0 // b.eq LBB0_327 $-72(%rip) - WORD $0x1400016d // b LBB0_421 $1460(%rip) -LBB0_335: - WORD $0x7100ae9f // cmp w20, #43 - WORD $0x54000060 // b.eq LBB0_337 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x540001a1 // b.ne LBB0_342 $52(%rip) -LBB0_337: + WORD $0x54ffff23 // b.lo LBB0_338 $-28(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x5400014d // b.le LBB0_345 $40(%rip) + WORD $0x710196bf // cmp w21, #101 + WORD $0x54000200 // b.eq LBB0_349 $64(%rip) + WORD $0x710116bf // cmp w21, #69 + WORD $0x540001c0 // b.eq LBB0_349 $56(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54000281 // b.ne LBB0_352 $80(%rip) + WORD $0xb100077f // cmn x27, #1 + WORD $0x54fffdc0 // b.eq LBB0_337 $-72(%rip) + WORD $0x1400016d // b LBB0_431 $1460(%rip) +LBB0_345: + WORD $0x7100aebf // cmp w21, #43 + WORD $0x54000060 // b.eq LBB0_347 $12(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x540001a1 // b.ne LBB0_352 $52(%rip) +LBB0_347: WORD $0xb10004df // cmn x6, #1 - WORD $0x54002ce1 // b.ne LBB0_421 $1436(%rip) - WORD $0xd1000726 // sub x6, x25, #1 - WORD $0x17ffffe6 // b LBB0_328 $-104(%rip) -LBB0_339: - WORD $0xb10006df // cmn x22, #1 - WORD $0x54002c61 // b.ne LBB0_421 $1420(%rip) - WORD $0xd1000736 // sub x22, x25, #1 - WORD $0x17ffffe2 // b LBB0_328 $-120(%rip) -LBB0_341: + WORD $0x54002ce1 // b.ne LBB0_431 $1436(%rip) + WORD $0xd1000686 // sub x6, x20, #1 + WORD $0x17ffffe6 // b LBB0_338 $-104(%rip) +LBB0_349: + WORD $0xb10006ff // cmn x23, #1 + WORD $0x54002c61 // b.ne LBB0_431 $1420(%rip) + WORD $0xd1000697 // sub x23, x20, #1 + WORD $0x17ffffe2 // b LBB0_338 $-120(%rip) +LBB0_351: WORD $0x8b2e400e // add x14, x0, w14, uxtw - WORD $0x8b0501d5 // add x21, x14, x5 + WORD $0x8b0501d6 // add x22, x14, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_342: +LBB0_352: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4007c3a // cbz x26, LBB0_571 $3972(%rip) -LBB0_343: - WORD $0xb4007c06 // cbz x6, LBB0_571 $3968(%rip) - WORD $0xb4007bf6 // cbz x22, LBB0_571 $3964(%rip) - WORD $0xcb0002ae // sub x14, x21, x0 + WORD $0xb4007d1b // cbz x27, LBB0_584 $4000(%rip) +LBB0_353: + WORD $0xb4007ce6 // cbz x6, LBB0_584 $3996(%rip) + WORD $0xb4007cd7 // cbz x23, LBB0_584 $3992(%rip) + WORD $0xcb0002ce // sub x14, x22, x0 WORD $0xd10005c0 // sub x0, x14, #1 - WORD $0xeb00035f // cmp x26, x0 - WORD $0x540002e0 // b.eq LBB0_354 $92(%rip) + WORD $0xeb00037f // cmp x27, x0 + WORD $0x540002e0 // b.eq LBB0_364 $92(%rip) WORD $0xeb0000df // cmp x6, x0 - WORD $0x540002a0 // b.eq LBB0_354 $84(%rip) - WORD $0xeb0002df // cmp x22, x0 - WORD $0x54000260 // b.eq LBB0_354 $76(%rip) + WORD $0x540002a0 // b.eq LBB0_364 $84(%rip) + WORD $0xeb0002ff // cmp x23, x0 + WORD $0x54000260 // b.eq LBB0_364 $76(%rip) WORD $0xf10004cf // subs x15, x6, #1 - WORD $0x5400006b // b.lt LBB0_350 $12(%rip) - WORD $0xeb0f02df // cmp x22, x15 - WORD $0x54007a81 // b.ne LBB0_572 $3920(%rip) -LBB0_350: - WORD $0xaa160340 // orr x0, x26, x22 - WORD $0xb7f80060 // tbnz x0, #63, LBB0_352 $12(%rip) - WORD $0xeb16035f // cmp x26, x22 - WORD $0x54007a4a // b.ge LBB0_573 $3912(%rip) -LBB0_352: + WORD $0x5400006b // b.lt LBB0_360 $12(%rip) + WORD $0xeb0f02ff // cmp x23, x15 + WORD $0x54007b61 // b.ne LBB0_585 $3948(%rip) +LBB0_360: + WORD $0xaa170360 // orr x0, x27, x23 + WORD $0xb7f80060 // tbnz x0, #63, LBB0_362 $12(%rip) + WORD $0xeb17037f // cmp x27, x23 + WORD $0x54007b2a // b.ge LBB0_586 $3940(%rip) +LBB0_362: WORD $0xd37ffc0f // lsr x15, x0, #63 WORD $0x520001ef // eor w15, w15, #0x1 - WORD $0xd10006d1 // sub x17, x22, #1 - WORD $0xeb11035f // cmp x26, x17 + WORD $0xd10006f1 // sub x17, x23, #1 + WORD $0xeb11037f // cmp x27, x17 WORD $0x1a9f17f1 // cset w17, eq WORD $0x6a1101ff // tst w15, w17 - WORD $0xda9601ce // csinv x14, x14, x22, eq -LBB0_353: + WORD $0xda9701ce // csinv x14, x14, x23, eq +LBB0_363: WORD $0x12800011 // mov w17, #-1 - WORD $0xb6f8008e // tbz x14, #63, LBB0_355 $16(%rip) - WORD $0x140003c5 // b LBB0_571 $3860(%rip) -LBB0_354: + WORD $0xb6f8008e // tbz x14, #63, LBB0_365 $16(%rip) + WORD $0x140003cc // b LBB0_584 $3888(%rip) +LBB0_364: WORD $0xcb0e03ee // neg x14, x14 - WORD $0xb7f8786e // tbnz x14, #63, LBB0_571 $3852(%rip) -LBB0_355: + WORD $0xb7f8794e // tbnz x14, #63, LBB0_584 $3880(%rip) +LBB0_365: WORD $0x8b1301d3 // add x19, x14, x19 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x5280007a // mov w26, #3 - WORD $0x54ffd203 // b.lo LBB0_284 $-1472(%rip) - WORD $0x140003c8 // b LBB0_578 $3872(%rip) -LBB0_356: - WORD $0xb5003d85 // cbnz x5, LBB0_461 $1968(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x54004263 // b.lo LBB0_480 $2124(%rip) + WORD $0x140003cf // b LBB0_591 $3900(%rip) +LBB0_366: + WORD $0xb5003d85 // cbnz x5, LBB0_471 $1968(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_464 $2020(%rip) - WORD $0x140003bf // b LBB0_577 $3836(%rip) -LBB0_358: + WORD $0x54003f2a // b.ge LBB0_474 $2020(%rip) + WORD $0x140003c6 // b LBB0_590 $3864(%rip) +LBB0_368: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb40 // b LBB0_180 $-4864(%rip) -LBB0_359: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb28 // b LBB0_185 $-4960(%rip) +LBB0_369: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003dea // b.ge LBB0_464 $1980(%rip) - WORD $0x140003b5 // b LBB0_577 $3796(%rip) -LBB0_360: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400001a // b LBB0_367 $104(%rip) -LBB0_361: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400003e // b LBB0_373 $248(%rip) -LBB0_362: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb34 // b LBB0_180 $-4912(%rip) -LBB0_363: - WORD $0xaa0503f5 // mov x21, x5 + WORD $0x54003dea // b.ge LBB0_474 $1980(%rip) + WORD $0x140003bc // b LBB0_590 $3824(%rip) +LBB0_370: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400001a // b LBB0_377 $104(%rip) +LBB0_371: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400003e // b LBB0_383 $248(%rip) +LBB0_372: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3541ce // sub x14, x14, w21, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb1c // b LBB0_185 $-5008(%rip) +LBB0_373: + WORD $0xaa0503f6 // mov x22, x5 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5fff7fa // cbnz x26, LBB0_343 $-260(%rip) - WORD $0x1400039e // b LBB0_571 $3704(%rip) -LBB0_364: + WORD $0xb5fff7fb // cbnz x27, LBB0_353 $-260(%rip) + WORD $0x140003a5 // b LBB0_584 $3732(%rip) +LBB0_374: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffb28 // b LBB0_180 $-4960(%rip) -LBB0_365: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffb10 // b LBB0_185 $-5056(%rip) +LBB0_375: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_471 $2020(%rip) - WORD $0x1400039d // b LBB0_577 $3700(%rip) -LBB0_366: + WORD $0x5400400a // b.ge LBB0_484 $2048(%rip) + WORD $0x140003a4 // b LBB0_590 $3728(%rip) +LBB0_376: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_367: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540043a3 // b.lo LBB0_478 $2164(%rip) +LBB0_377: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54004483 // b.lo LBB0_491 $2192(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2404,31 +2454,31 @@ LBB0_367: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003dd4 // cbnz w20, LBB0_475 $1976(%rip) - WORD $0xb5003e66 // cbnz x6, LBB0_476 $1996(%rip) - WORD $0xb4004025 // cbz x5, LBB0_477 $2052(%rip) -LBB0_371: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35003eb5 // cbnz w21, LBB0_488 $2004(%rip) + WORD $0xb5003f46 // cbnz x6, LBB0_489 $2024(%rip) + WORD $0xb4004105 // cbz x5, LBB0_490 $2080(%rip) +LBB0_381: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffc793 // tbz x19, #63, LBB0_283 $-1808(%rip) - WORD $0x14000311 // b LBB0_544 $3140(%rip) -LBB0_372: + WORD $0xb6f837f3 // tbz x19, #63, LBB0_478 $1788(%rip) + WORD $0x14000318 // b LBB0_557 $3168(%rip) +LBB0_382: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_373: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_380 $196(%rip) +LBB0_383: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_390 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2444,100 +2494,100 @@ LBB0_373: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35004034 // cbnz w20, LBB0_489 $2052(%rip) - WORD $0xb50040c6 // cbnz x6, LBB0_490 $2072(%rip) -LBB0_376: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35004115 // cbnz w21, LBB0_502 $2080(%rip) + WORD $0xb50041a6 // cbnz x6, LBB0_503 $2100(%rip) +LBB0_386: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_378 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_388 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_391 $140(%rip) - WORD $0x1400034f // b LBB0_579 $3388(%rip) -LBB0_378: - WORD $0x35006a35 // cbnz w21, LBB0_580 $3396(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_401 $140(%rip) + WORD $0x14000356 // b LBB0_592 $3416(%rip) +LBB0_388: + WORD $0x35006b16 // cbnz w22, LBB0_593 $3424(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_380: - WORD $0xb5004a46 // cbnz x6, LBB0_509 $2376(%rip) - WORD $0xb4005b96 // cbz x22, LBB0_545 $2928(%rip) -LBB0_382: - WORD $0xcb1e03ee // neg x14, lr -LBB0_383: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_390: + WORD $0xb5004b26 // cbnz x6, LBB0_522 $2404(%rip) + WORD $0xb4005c77 // cbz x23, LBB0_558 $2956(%rip) +LBB0_392: + WORD $0xcb1403ee // neg x14, x20 +LBB0_393: WORD $0xd2800005 // mov x5, #0 -LBB0_384: +LBB0_394: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_390 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_400 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_388 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_398 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54006909 // b.ls LBB0_581 $3360(%rip) + WORD $0x540069e9 // b.ls LBB0_594 $3388(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_384 $-36(%rip) - WORD $0x140002cf // b LBB0_545 $2876(%rip) -LBB0_388: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_394 $-36(%rip) + WORD $0x140002d6 // b LBB0_558 $2904(%rip) +LBB0_398: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54005980 // b.eq LBB0_545 $2864(%rip) + WORD $0x54005a60 // b.eq LBB0_558 $2892(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_383 $-96(%rip) - WORD $0x140002c1 // b LBB0_545 $2820(%rip) -LBB0_390: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_391: + WORD $0x54fffd01 // b.ne LBB0_393 $-96(%rip) + WORD $0x140002c8 // b LBB0_558 $2848(%rip) +LBB0_400: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_401: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffbcb3 // tbz x19, #63, LBB0_283 $-2156(%rip) - WORD $0x140002ba // b LBB0_544 $2792(%rip) -LBB0_392: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_396 $40(%rip) -LBB0_393: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002e // b LBB0_402 $184(%rip) -LBB0_394: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffa9f // b LBB0_180 $-5508(%rip) -LBB0_395: + WORD $0xb6f82d13 // tbz x19, #63, LBB0_478 $1440(%rip) + WORD $0x140002c1 // b LBB0_557 $2820(%rip) +LBB0_402: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_406 $40(%rip) +LBB0_403: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002e // b LBB0_412 $184(%rip) +LBB0_404: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3841ce // sub x14, x14, w24, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffa87 // b LBB0_185 $-5604(%rip) +LBB0_405: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_396: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54003cc3 // b.lo LBB0_494 $1944(%rip) +LBB0_406: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54003da3 // b.lo LBB0_507 $1972(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2554,31 +2604,31 @@ LBB0_396: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x350036f4 // cbnz w20, LBB0_491 $1756(%rip) - WORD $0xb5003786 // cbnz x6, LBB0_492 $1776(%rip) - WORD $0xb4003945 // cbz x5, LBB0_493 $1832(%rip) -LBB0_400: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350037d5 // cbnz w21, LBB0_504 $1784(%rip) + WORD $0xb5003866 // cbnz x6, LBB0_505 $1804(%rip) + WORD $0xb4003a25 // cbz x5, LBB0_506 $1860(%rip) +LBB0_410: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5e53 // tbz x19, #63, LBB0_194 $-5176(%rip) - WORD $0x1400028c // b LBB0_544 $2608(%rip) -LBB0_401: + WORD $0xb6ff5b53 // tbz x19, #63, LBB0_199 $-5272(%rip) + WORD $0x14000293 // b LBB0_557 $2636(%rip) +LBB0_411: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_402: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_409 $196(%rip) +LBB0_412: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_419 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2594,149 +2644,149 @@ LBB0_402: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003914 // cbnz w20, LBB0_504 $1824(%rip) - WORD $0xb50039a6 // cbnz x6, LBB0_506 $1844(%rip) -LBB0_405: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350039f5 // cbnz w21, LBB0_517 $1852(%rip) + WORD $0xb5003a86 // cbnz x6, LBB0_519 $1872(%rip) +LBB0_415: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_407 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_417 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000582 // b.hs LBB0_420 $176(%rip) - WORD $0x140002ca // b LBB0_579 $2856(%rip) -LBB0_407: - WORD $0x35005995 // cbnz w21, LBB0_580 $2864(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000582 // b.hs LBB0_430 $176(%rip) + WORD $0x140002d1 // b LBB0_592 $2884(%rip) +LBB0_417: + WORD $0x35005a76 // cbnz w22, LBB0_593 $2892(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_409: - WORD $0xb5003ca6 // cbnz x6, LBB0_516 $1940(%rip) - WORD $0x5280007a // mov w26, #3 + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_419: + WORD $0xb5003d86 // cbnz x6, LBB0_529 $1968(%rip) + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4004a96 // cbz x22, LBB0_545 $2384(%rip) -LBB0_411: - WORD $0xcb1e03ee // neg x14, lr -LBB0_412: + WORD $0xb4004b77 // cbz x23, LBB0_558 $2412(%rip) +LBB0_421: + WORD $0xcb1403ee // neg x14, x20 +LBB0_422: WORD $0xd2800005 // mov x5, #0 -LBB0_413: +LBB0_423: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540003a0 // b.eq LBB0_419 $116(%rip) + WORD $0x540003a0 // b.eq LBB0_429 $116(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x54000140 // b.eq LBB0_417 $40(%rip) + WORD $0x54000140 // b.eq LBB0_427 $40(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54005809 // b.ls LBB0_581 $2816(%rip) + WORD $0x540058e9 // b.ls LBB0_594 $2844(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54fffe81 // b.ne LBB0_413 $-48(%rip) - WORD $0x14000244 // b LBB0_545 $2320(%rip) -LBB0_417: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0x54fffe81 // b.ne LBB0_423 $-48(%rip) + WORD $0x1400024b // b LBB0_558 $2348(%rip) +LBB0_427: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x540047c0 // b.eq LBB0_545 $2296(%rip) + WORD $0x540048a0 // b.eq LBB0_558 $2324(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffc41 // b.ne LBB0_412 $-120(%rip) - WORD $0x14000233 // b LBB0_545 $2252(%rip) -LBB0_419: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_420: + WORD $0x54fffc41 // b.ne LBB0_422 $-120(%rip) + WORD $0x1400023a // b LBB0_558 $2280(%rip) +LBB0_429: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_430: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5253 // tbz x19, #63, LBB0_194 $-5560(%rip) - WORD $0x1400022c // b LBB0_544 $2224(%rip) -LBB0_421: - WORD $0xcb1903ee // neg x14, x25 - WORD $0xb6ffd86e // tbz x14, #63, LBB0_355 $-1268(%rip) - WORD $0x14000284 // b LBB0_571 $2576(%rip) -LBB0_422: + WORD $0xb6ff4f53 // tbz x19, #63, LBB0_199 $-5656(%rip) + WORD $0x14000233 // b LBB0_557 $2252(%rip) +LBB0_431: + WORD $0xcb1403ee // neg x14, x20 + WORD $0xb6ffd86e // tbz x14, #63, LBB0_365 $-1268(%rip) + WORD $0x1400028b // b LBB0_584 $2604(%rip) +LBB0_432: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 WORD $0xaa2503ef // mvn x15, x5 WORD $0xcb0e01ee // sub x14, x15, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffeb7 // b LBB0_353 $-1316(%rip) -LBB0_423: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffeb7 // b LBB0_363 $-1316(%rip) +LBB0_433: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x540050cb // b.lt LBB0_577 $2584(%rip) -LBB0_424: - WORD $0x5280007a // mov w26, #3 + WORD $0x540051ab // b.lt LBB0_590 $2612(%rip) +LBB0_434: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000007 // b LBB0_426 $28(%rip) -LBB0_425: + WORD $0x14000007 // b LBB0_436 $28(%rip) +LBB0_435: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54004fad // b.le LBB0_578 $2548(%rip) -LBB0_426: + WORD $0x5400508d // b.le LBB0_591 $2576(%rip) +LBB0_436: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_425 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_435 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54001780 // b.eq LBB0_467 $752(%rip) + WORD $0x54001780 // b.eq LBB0_477 $752(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_426 $-40(%rip) - WORD $0x14000271 // b LBB0_578 $2500(%rip) -LBB0_429: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_433 $40(%rip) -LBB0_430: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002d // b LBB0_439 $180(%rip) -LBB0_431: + WORD $0x54fffecc // b.gt LBB0_436 $-40(%rip) + WORD $0x14000278 // b LBB0_591 $2528(%rip) +LBB0_439: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_443 $40(%rip) +LBB0_440: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002d // b LBB0_449 $180(%rip) +LBB0_441: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw + WORD $0xcb3841ce // sub x14, x14, w24, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe96 // b LBB0_353 $-1448(%rip) -LBB0_432: + WORD $0x17fffe96 // b LBB0_363 $-1448(%rip) +LBB0_442: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_433: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540036c3 // b.lo LBB0_523 $1752(%rip) +LBB0_443: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x540037a3 // b.lo LBB0_536 $1780(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2753,30 +2803,30 @@ LBB0_433: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e260351 // fmov w17, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003154 // cbnz w20, LBB0_520 $1576(%rip) - WORD $0xb50031e6 // cbnz x6, LBB0_521 $1596(%rip) - WORD $0xb4003345 // cbz x5, LBB0_522 $1640(%rip) -LBB0_437: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x35003235 // cbnz w21, LBB0_533 $1604(%rip) + WORD $0xb50032c6 // cbnz x6, LBB0_534 $1624(%rip) + WORD $0xb4003425 // cbz x5, LBB0_535 $1668(%rip) +LBB0_447: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x140001b0 // b LBB0_534 $1728(%rip) -LBB0_438: + WORD $0x140001b7 // b LBB0_547 $1756(%rip) +LBB0_448: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_439: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_446 $196(%rip) +LBB0_449: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_456 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2792,434 +2842,444 @@ LBB0_439: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e260391 // fmov w17, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003314 // cbnz w20, LBB0_535 $1632(%rip) - WORD $0xb50033a6 // cbnz x6, LBB0_537 $1652(%rip) -LBB0_442: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x350033f5 // cbnz w21, LBB0_548 $1660(%rip) + WORD $0xb5003486 // cbnz x6, LBB0_550 $1680(%rip) +LBB0_452: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_444 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_454 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_457 $140(%rip) - WORD $0x1400021b // b LBB0_579 $2156(%rip) -LBB0_444: - WORD $0x350043b5 // cbnz w21, LBB0_580 $2164(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_467 $140(%rip) + WORD $0x14000222 // b LBB0_592 $2184(%rip) +LBB0_454: + WORD $0x35004496 // cbnz w22, LBB0_593 $2192(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_446: - WORD $0xb5003346 // cbnz x6, LBB0_540 $1640(%rip) - WORD $0xb4003516 // cbz x22, LBB0_545 $1696(%rip) -LBB0_448: - WORD $0xcb1e03ee // neg x14, lr -LBB0_449: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_456: + WORD $0xb5003426 // cbnz x6, LBB0_553 $1668(%rip) + WORD $0xb40035f7 // cbz x23, LBB0_558 $1724(%rip) +LBB0_458: + WORD $0xcb1403ee // neg x14, x20 +LBB0_459: WORD $0xd2800005 // mov x5, #0 -LBB0_450: +LBB0_460: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_456 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_466 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_454 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_464 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54004289 // b.ls LBB0_581 $2128(%rip) + WORD $0x54004369 // b.ls LBB0_594 $2156(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_450 $-36(%rip) - WORD $0x1400019b // b LBB0_545 $1644(%rip) -LBB0_454: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_460 $-36(%rip) + WORD $0x140001a2 // b LBB0_558 $1672(%rip) +LBB0_464: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54003300 // b.eq LBB0_545 $1632(%rip) + WORD $0x540033e0 // b.eq LBB0_558 $1660(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01f1 // add x17, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a800220 // csel x0, x17, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502d1 // sub x17, x22, x5 - WORD $0xd1000a36 // sub x22, x17, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502f1 // sub x17, x23, x5 + WORD $0xd1000a37 // sub x23, x17, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_449 $-96(%rip) - WORD $0x1400018d // b LBB0_545 $1588(%rip) -LBB0_456: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_457: + WORD $0x54fffd01 // b.ne LBB0_459 $-96(%rip) + WORD $0x14000194 // b LBB0_558 $1616(%rip) +LBB0_466: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_467: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x1400015a // b LBB0_534 $1384(%rip) -LBB0_458: + WORD $0x14000161 // b LBB0_547 $1412(%rip) +LBB0_468: WORD $0x92800000 // mov x0, #-1 WORD $0xaa0603e5 // mov x5, x6 - WORD $0xaa0e03f5 // mov x21, x14 + WORD $0xaa0e03f6 // mov x22, x14 WORD $0x92800013 // mov x19, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x17fff7b5 // b LBB0_85 $-8492(%rip) -LBB0_459: + WORD $0x92800017 // mov x23, #-1 + WORD $0x17fff785 // b LBB0_85 $-8684(%rip) +LBB0_469: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw + WORD $0xcb3541ce // sub x14, x14, w21, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe11 // b LBB0_353 $-1980(%rip) -LBB0_460: - WORD $0x9280001a // mov x26, #-1 - WORD $0xaa0003f5 // mov x21, x0 - WORD $0xaa1903ee // mov x14, x25 - WORD $0x92800016 // mov x22, #-1 + WORD $0x17fffe11 // b LBB0_363 $-1980(%rip) +LBB0_470: + WORD $0x9280001b // mov x27, #-1 + WORD $0xaa0003f6 // mov x22, x0 + WORD $0xaa1a03ee // mov x14, x26 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800006 // mov x6, #-1 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffdc5 // b LBB0_326 $-2284(%rip) -LBB0_461: + WORD $0x17fffdc5 // b LBB0_336 $-2284(%rip) +LBB0_471: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54003b00 // b.eq LBB0_577 $1888(%rip) + WORD $0x54003be0 // b.eq LBB0_590 $1916(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_464 $32(%rip) - WORD $0x140001ce // b LBB0_577 $1848(%rip) -LBB0_463: + WORD $0x5400010a // b.ge LBB0_474 $32(%rip) + WORD $0x140001d5 // b LBB0_590 $1876(%rip) +LBB0_473: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x5400392d // b.le LBB0_578 $1828(%rip) -LBB0_464: + WORD $0x54003a0d // b.le LBB0_591 $1856(%rip) +LBB0_474: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_463 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_473 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_467 $32(%rip) + WORD $0x54000100 // b.eq LBB0_477 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_464 $-40(%rip) - WORD $0x140001bd // b LBB0_578 $1780(%rip) -LBB0_467: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_474 $-40(%rip) + WORD $0x140001c4 // b LBB0_591 $1808(%rip) +LBB0_477: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x17fffc7d // b LBB0_283 $-3596(%rip) -LBB0_468: +LBB0_478: + WORD $0xf9000033 // str x19, [x1] +LBB0_479: + WORD $0xaa0803e0 // mov x0, x8 + WORD $0xeb07011f // cmp x8, x7 + WORD $0x540037c2 // b.hs LBB0_591 $1784(%rip) +LBB0_480: + WORD $0xf9400057 // ldr x23, [x2] + WORD $0xaa0b03e0 // mov x0, x11 + WORD $0xb5feb897 // cbnz x23, LBB0_1 $-10480(%rip) + WORD $0x140001ba // b LBB0_591 $1768(%rip) +LBB0_481: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x540036c0 // b.eq LBB0_577 $1752(%rip) + WORD $0x540036c0 // b.eq LBB0_590 $1752(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_471 $32(%rip) - WORD $0x140001ac // b LBB0_577 $1712(%rip) -LBB0_470: + WORD $0x5400010a // b.ge LBB0_484 $32(%rip) + WORD $0x140001ac // b LBB0_590 $1712(%rip) +LBB0_483: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x540034ed // b.le LBB0_578 $1692(%rip) -LBB0_471: + WORD $0x540034ed // b.le LBB0_591 $1692(%rip) +LBB0_484: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_470 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_483 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_474 $32(%rip) + WORD $0x54000100 // b.eq LBB0_487 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_471 $-40(%rip) - WORD $0x1400019b // b LBB0_578 $1644(%rip) -LBB0_474: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_484 $-40(%rip) + WORD $0x1400019b // b LBB0_591 $1644(%rip) +LBB0_487: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54ff3303 // b.lo LBB0_195 $-6560(%rip) - WORD $0x14000194 // b LBB0_578 $1616(%rip) -LBB0_475: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ff2f23 // b.lo LBB0_200 $-6684(%rip) + WORD $0x14000194 // b LBB0_591 $1616(%rip) +LBB0_488: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_476: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_489: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc025 // cbnz x5, LBB0_371 $-2044(%rip) -LBB0_477: + WORD $0xb5ffbf45 // cbnz x5, LBB0_381 $-2072(%rip) +LBB0_490: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_478: - WORD $0xb5001066 // cbnz x6, LBB0_507 $524(%rip) - WORD $0xb40003b6 // cbz x22, LBB0_487 $116(%rip) -LBB0_480: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_481: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_491: + WORD $0xb5001066 // cbnz x6, LBB0_520 $524(%rip) + WORD $0xb40003b7 // cbz x23, LBB0_500 $116(%rip) +LBB0_493: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_494: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000320 // b.eq LBB0_488 $100(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000320 // b.eq LBB0_501 $100(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x54000100 // b.eq LBB0_484 $32(%rip) + WORD $0x54000100 // b.eq LBB0_497 $32(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffe94 // cbnz x20, LBB0_481 $-48(%rip) - WORD $0x1400000c // b LBB0_486 $48(%rip) -LBB0_484: - WORD $0xb40020d4 // cbz x20, LBB0_545 $1048(%rip) + WORD $0xb5fffe95 // cbnz x21, LBB0_494 $-48(%rip) + WORD $0x1400000c // b LBB0_499 $48(%rip) +LBB0_497: + WORD $0xb40020d5 // cbz x21, LBB0_558 $1048(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffd14 // cbnz x20, LBB0_481 $-96(%rip) -LBB0_486: + WORD $0xb5fffd15 // cbnz x21, LBB0_494 $-96(%rip) +LBB0_499: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001f41 // b.ne LBB0_545 $1000(%rip) -LBB0_487: + WORD $0x54001f41 // b.ne LBB0_558 $1000(%rip) +LBB0_500: WORD $0xaa1303e6 // mov x6, x19 -LBB0_488: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff83f3 // tbz x19, #63, LBB0_283 $-3972(%rip) - WORD $0x140000f4 // b LBB0_544 $976(%rip) -LBB0_489: - WORD $0xdac0028f // rbit x15, x20 +LBB0_501: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6fff373 // tbz x19, #63, LBB0_478 $-404(%rip) + WORD $0x140000f4 // b LBB0_557 $976(%rip) +LBB0_502: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_490: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_503: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffded // b LBB0_376 $-2124(%rip) -LBB0_491: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x17fffde6 // b LBB0_386 $-2152(%rip) +LBB0_504: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_492: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_505: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc705 // cbnz x5, LBB0_400 $-1824(%rip) -LBB0_493: + WORD $0xb5ffc625 // cbnz x5, LBB0_410 $-1852(%rip) +LBB0_506: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_494: - WORD $0xb50008e6 // cbnz x6, LBB0_511 $284(%rip) - WORD $0xb40009d6 // cbz x22, LBB0_513 $312(%rip) -LBB0_496: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_497: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_507: + WORD $0xb50008e6 // cbnz x6, LBB0_524 $284(%rip) + WORD $0xb40009d7 // cbz x23, LBB0_526 $312(%rip) +LBB0_509: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_510: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x540002c0 // b.eq LBB0_503 $88(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x540002c0 // b.eq LBB0_516 $88(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_500 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_513 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_497 $-36(%rip) - WORD $0x14000009 // b LBB0_502 $36(%rip) -LBB0_500: - WORD $0xb4001774 // cbz x20, LBB0_545 $748(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_510 $-36(%rip) + WORD $0x14000009 // b LBB0_515 $36(%rip) +LBB0_513: + WORD $0xb4001775 // cbz x21, LBB0_558 $748(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_497 $-72(%rip) -LBB0_502: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_510 $-72(%rip) +LBB0_515: WORD $0x710088bf // cmp w5, #34 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000700 // b.eq LBB0_514 $224(%rip) - WORD $0x140000ae // b LBB0_545 $696(%rip) -LBB0_503: - WORD $0x5280007a // mov w26, #3 + WORD $0x54000700 // b.eq LBB0_527 $224(%rip) + WORD $0x140000ae // b LBB0_558 $696(%rip) +LBB0_516: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000034 // b LBB0_515 $208(%rip) -LBB0_504: + WORD $0x14000034 // b LBB0_528 $208(%rip) +LBB0_517: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_506 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_519 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0260 // sub x0, x19, lr + WORD $0xcb140260 // sub x0, x19, x20 WORD $0x8b0f0000 // add x0, x0, x15 -LBB0_506: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_519: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffe26 // b LBB0_405 $-1896(%rip) -LBB0_507: - WORD $0xb4001296 // cbz x22, LBB0_545 $592(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe1f // b LBB0_415 $-1924(%rip) +LBB0_520: + WORD $0xb4001297 // cbz x23, LBB0_558 $592(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffef16 // cbnz x22, LBB0_480 $-544(%rip) - WORD $0x17ffff93 // b LBB0_487 $-436(%rip) -LBB0_509: - WORD $0xb4001176 // cbz x22, LBB0_545 $556(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffef17 // cbnz x23, LBB0_493 $-544(%rip) + WORD $0x17ffff93 // b LBB0_500 $-436(%rip) +LBB0_522: + WORD $0xb4001177 // cbz x23, LBB0_558 $556(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffb536 // cbnz x22, LBB0_382 $-2396(%rip) - WORD $0x14000083 // b LBB0_545 $524(%rip) -LBB0_511: - WORD $0xb4001056 // cbz x22, LBB0_545 $520(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffb457 // cbnz x23, LBB0_392 $-2424(%rip) + WORD $0x14000083 // b LBB0_558 $524(%rip) +LBB0_524: + WORD $0xb4001057 // cbz x23, LBB0_558 $520(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff696 // cbnz x22, LBB0_496 $-304(%rip) -LBB0_513: - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff697 // cbnz x23, LBB0_509 $-304(%rip) +LBB0_526: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_514: +LBB0_527: WORD $0xaa1303e6 // mov x6, x19 -LBB0_515: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff1b13 // tbz x19, #63, LBB0_194 $-7328(%rip) - WORD $0x14000072 // b LBB0_544 $456(%rip) -LBB0_516: - WORD $0xb4000e76 // cbz x22, LBB0_545 $460(%rip) - WORD $0xaa3e03ee // mvn x14, lr +LBB0_528: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6ff1733 // tbz x19, #63, LBB0_199 $-7452(%rip) + WORD $0x14000072 // b LBB0_557 $456(%rip) +LBB0_529: + WORD $0xb4000e77 // cbz x23, LBB0_558 $460(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc2d6 // cbnz x22, LBB0_411 $-1960(%rip) - WORD $0x14000068 // b LBB0_545 $416(%rip) -LBB0_518: + WORD $0xb5ffc1f7 // cbnz x23, LBB0_421 $-1988(%rip) + WORD $0x14000068 // b LBB0_558 $416(%rip) +LBB0_531: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54001920 // b.eq LBB0_577 $804(%rip) + WORD $0x54001920 // b.eq LBB0_590 $804(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 WORD $0xf10005df // cmp x14, #1 - WORD $0x54ffc7ca // b.ge LBB0_424 $-1800(%rip) - WORD $0x140000c2 // b LBB0_577 $776(%rip) -LBB0_520: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ffc6ea // b.ge LBB0_434 $-1828(%rip) + WORD $0x140000c2 // b LBB0_590 $776(%rip) +LBB0_533: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f022f // add x15, x17, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_521: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_534: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3227,61 +3287,61 @@ LBB0_521: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0xb5ffcd05 // cbnz x5, LBB0_437 $-1632(%rip) -LBB0_522: + WORD $0xb5ffcc25 // cbnz x5, LBB0_447 $-1660(%rip) +LBB0_535: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_523: - WORD $0xb5000626 // cbnz x6, LBB0_538 $196(%rip) - WORD $0xb40002f6 // cbz x22, LBB0_532 $92(%rip) -LBB0_525: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_526: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_536: + WORD $0xb5000626 // cbnz x6, LBB0_551 $196(%rip) + WORD $0xb40002f7 // cbz x23, LBB0_545 $92(%rip) +LBB0_538: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_539: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000260 // b.eq LBB0_533 $76(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000260 // b.eq LBB0_546 $76(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_529 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_542 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_526 $-36(%rip) - WORD $0x14000009 // b LBB0_531 $36(%rip) -LBB0_529: - WORD $0xb4000774 // cbz x20, LBB0_545 $236(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_539 $-36(%rip) + WORD $0x14000009 // b LBB0_544 $36(%rip) +LBB0_542: + WORD $0xb4000775 // cbz x21, LBB0_558 $236(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_526 $-72(%rip) -LBB0_531: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_539 $-72(%rip) +LBB0_544: WORD $0x710088bf // cmp w5, #34 - WORD $0x54000641 // b.ne LBB0_545 $200(%rip) -LBB0_532: + WORD $0x54000641 // b.ne LBB0_558 $200(%rip) +LBB0_545: WORD $0xaa1303e6 // mov x6, x19 -LBB0_533: - WORD $0xcb1e00d3 // sub x19, x6, lr -LBB0_534: - WORD $0x5280007a // mov w26, #3 +LBB0_546: + WORD $0xcb1400d3 // sub x19, x6, x20 +LBB0_547: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb6ff6a93 // tbz x19, #63, LBB0_283 $-4784(%rip) - WORD $0x14000029 // b LBB0_544 $164(%rip) -LBB0_535: + WORD $0xb6ffda13 // tbz x19, #63, LBB0_478 $-1216(%rip) + WORD $0x14000029 // b LBB0_557 $164(%rip) +LBB0_548: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_537 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_550 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f0220 // add x0, x17, x15 -LBB0_537: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_550: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3289,160 +3349,160 @@ LBB0_537: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x17fffe59 // b LBB0_442 $-1692(%rip) -LBB0_538: - WORD $0xb4000316 // cbz x22, LBB0_545 $96(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe52 // b LBB0_452 $-1720(%rip) +LBB0_551: + WORD $0xb4000317 // cbz x23, LBB0_558 $96(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff956 // cbnz x22, LBB0_525 $-216(%rip) - WORD $0x17ffffdf // b LBB0_532 $-132(%rip) -LBB0_540: - WORD $0xb40001f6 // cbz x22, LBB0_545 $60(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff957 // cbnz x23, LBB0_538 $-216(%rip) + WORD $0x17ffffdf // b LBB0_545 $-132(%rip) +LBB0_553: + WORD $0xb40001f7 // cbz x23, LBB0_558 $60(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffcc36 // cbnz x22, LBB0_448 $-1660(%rip) - WORD $0x14000007 // b LBB0_545 $28(%rip) -LBB0_542: + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffcb57 // cbnz x23, LBB0_458 $-1688(%rip) + WORD $0x14000007 // b LBB0_558 $28(%rip) +LBB0_555: WORD $0x92800020 // mov x0, #-2 - WORD $0x1400006a // b LBB0_578 $424(%rip) -LBB0_543: + WORD $0x1400006a // b LBB0_591 $424(%rip) +LBB0_556: WORD $0x928000c0 // mov x0, #-7 - WORD $0x14000068 // b LBB0_578 $416(%rip) -LBB0_544: + WORD $0x14000068 // b LBB0_591 $416(%rip) +LBB0_557: WORD $0xb100067f // cmn x19, #1 - WORD $0x54000ac1 // b.ne LBB0_569 $344(%rip) -LBB0_545: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x54000ac1 // b.ne LBB0_582 $344(%rip) +LBB0_558: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0x92800013 // mov x19, #-1 - WORD $0x14000053 // b LBB0_569 $332(%rip) -LBB0_546: + WORD $0x14000053 // b LBB0_582 $332(%rip) +LBB0_559: WORD $0x9280000e // mov x14, #-1 -LBB0_547: - WORD $0xaa2e03f6 // mvn x22, x14 -LBB0_548: - WORD $0x8b0802c8 // add x8, x22, x8 -LBB0_549: +LBB0_560: + WORD $0xaa2e03f7 // mvn x23, x14 +LBB0_561: + WORD $0x8b0802e8 // add x8, x23, x8 +LBB0_562: WORD $0xf9000028 // str x8, [x1] WORD $0x92800020 // mov x0, #-2 - WORD $0x1400005d // b LBB0_578 $372(%rip) -LBB0_550: + WORD $0x1400005d // b LBB0_591 $372(%rip) +LBB0_563: WORD $0xf900002e // str x14, [x1] - WORD $0x1400005a // b LBB0_577 $360(%rip) -LBB0_551: + WORD $0x1400005a // b LBB0_590 $360(%rip) +LBB0_564: WORD $0xb100041f // cmn x0, #1 - WORD $0x540008a0 // b.eq LBB0_568 $276(%rip) + WORD $0x540008a0 // b.eq LBB0_581 $276(%rip) WORD $0x92800033 // mov x19, #-2 - WORD $0x14000047 // b LBB0_569 $284(%rip) -LBB0_553: - WORD $0xaa0003f6 // mov x22, x0 - WORD $0x17fffff5 // b LBB0_548 $-44(%rip) -LBB0_554: + WORD $0x14000047 // b LBB0_582 $284(%rip) +LBB0_566: + WORD $0xaa0003f7 // mov x23, x0 + WORD $0x17fffff5 // b LBB0_561 $-44(%rip) +LBB0_567: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101d13f // cmp w9, #116 - WORD $0x54000a21 // b.ne LBB0_578 $324(%rip) + WORD $0x54000a21 // b.ne LBB0_591 $324(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101c93f // cmp w9, #114 - WORD $0x54000981 // b.ne LBB0_578 $304(%rip) + WORD $0x54000981 // b.ne LBB0_591 $304(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x540008e1 // b.ne LBB0_578 $284(%rip) + WORD $0x540008e1 // b.ne LBB0_591 $284(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000841 // b.ne LBB0_578 $264(%rip) - WORD $0x14000014 // b LBB0_562 $80(%rip) -LBB0_558: + WORD $0x54000841 // b.ne LBB0_591 $264(%rip) + WORD $0x14000014 // b LBB0_575 $80(%rip) +LBB0_571: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101b93f // cmp w9, #110 - WORD $0x540007a1 // b.ne LBB0_578 $244(%rip) + WORD $0x540007a1 // b.ne LBB0_591 $244(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x54000701 // b.ne LBB0_578 $224(%rip) + WORD $0x54000701 // b.ne LBB0_591 $224(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000661 // b.ne LBB0_578 $204(%rip) + WORD $0x54000661 // b.ne LBB0_591 $204(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x540005c1 // b.ne LBB0_578 $184(%rip) -LBB0_562: + WORD $0x540005c1 // b.ne LBB0_591 $184(%rip) +LBB0_575: WORD $0x91001108 // add x8, x8, #4 WORD $0xf9000028 // str x8, [x1] - WORD $0x1400002b // b LBB0_578 $172(%rip) -LBB0_563: + WORD $0x1400002b // b LBB0_591 $172(%rip) +LBB0_576: WORD $0xf9000033 // str x19, [x1] - WORD $0x38736bc9 // ldrb w9, [lr, x19] + WORD $0x38736a89 // ldrb w9, [x20, x19] WORD $0x7101853f // cmp w9, #97 - WORD $0x540004e1 // b.ne LBB0_578 $156(%rip) + WORD $0x540004e1 // b.ne LBB0_591 $156(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000441 // b.ne LBB0_578 $136(%rip) + WORD $0x54000441 // b.ne LBB0_591 $136(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101cd3f // cmp w9, #115 - WORD $0x540003a1 // b.ne LBB0_578 $116(%rip) + WORD $0x540003a1 // b.ne LBB0_591 $116(%rip) WORD $0x91001109 // add x9, x8, #4 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000301 // b.ne LBB0_578 $96(%rip) + WORD $0x54000301 // b.ne LBB0_591 $96(%rip) WORD $0x91001508 // add x8, x8, #5 WORD $0xf9000028 // str x8, [x1] - WORD $0x14000015 // b LBB0_578 $84(%rip) -LBB0_568: + WORD $0x14000015 // b LBB0_591 $84(%rip) +LBB0_581: WORD $0xdac000a8 // rbit x8, x5 WORD $0xdac01108 // clz x8, x8 WORD $0x8b130100 // add x0, x8, x19 WORD $0x92800033 // mov x19, #-2 -LBB0_569: +LBB0_582: WORD $0xf9000020 // str x0, [x1] WORD $0xaa1303e0 // mov x0, x19 - WORD $0x1400000e // b LBB0_578 $56(%rip) -LBB0_570: + WORD $0x1400000e // b LBB0_591 $56(%rip) +LBB0_583: WORD $0x9280000e // mov x14, #-1 -LBB0_571: +LBB0_584: WORD $0xaa2e03e6 // mvn x6, x14 -LBB0_572: +LBB0_585: WORD $0x8b060268 // add x8, x19, x6 - WORD $0x17ffffab // b LBB0_549 $-340(%rip) -LBB0_573: - WORD $0xaa1a03e6 // mov x6, x26 - WORD $0x8b1a0268 // add x8, x19, x26 - WORD $0x17ffffa8 // b LBB0_549 $-352(%rip) -LBB0_574: + WORD $0x17ffffab // b LBB0_562 $-340(%rip) +LBB0_586: + WORD $0xaa1b03e6 // mov x6, x27 + WORD $0x8b1b0268 // add x8, x19, x27 + WORD $0x17ffffa8 // b LBB0_562 $-352(%rip) +LBB0_587: WORD $0x8b1300a0 // add x0, x5, x19 WORD $0x92800033 // mov x19, #-2 - WORD $0x17fffff4 // b LBB0_569 $-48(%rip) -LBB0_575: - WORD $0xf9400768 // ldr x8, [x27, #8] -LBB0_576: + WORD $0x17fffff4 // b LBB0_582 $-48(%rip) +LBB0_588: + WORD $0xf94007c8 // ldr x8, [lr, #8] +LBB0_589: WORD $0xf9000028 // str x8, [x1] -LBB0_577: +LBB0_590: WORD $0x92800000 // mov x0, #-1 -LBB0_578: +LBB0_591: WORD $0xa94dfbfd // ldp fp, lr, [sp, #216] WORD $0xa94ccff4 // ldp x20, x19, [sp, #200] WORD $0xa94bd7f6 // ldp x22, x21, [sp, #184] @@ -3452,20 +3512,20 @@ LBB0_578: WORD $0x6d47a3e9 // ldp d9, d8, [sp, #120] WORD $0x9103c3ff // add sp, sp, #240 WORD $0xd65f03c0 // ret -LBB0_579: - WORD $0x8b1401c0 // add x0, x14, x20 +LBB0_592: + WORD $0x8b1501c0 // add x0, x14, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe5 // b LBB0_569 $-108(%rip) -LBB0_580: - WORD $0xcb1e0268 // sub x8, x19, lr - WORD $0x8b140100 // add x0, x8, x20 + WORD $0x17ffffe5 // b LBB0_582 $-108(%rip) +LBB0_593: + WORD $0xcb140268 // sub x8, x19, x20 + WORD $0x8b150100 // add x0, x8, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe1 // b LBB0_569 $-124(%rip) -LBB0_581: - WORD $0xcb1e0268 // sub x8, x19, lr + WORD $0x17ffffe1 // b LBB0_582 $-124(%rip) +LBB0_594: + WORD $0xcb140268 // sub x8, x19, x20 WORD $0x8b050100 // add x0, x8, x5 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffdd // b LBB0_569 $-140(%rip) + WORD $0x17ffffdd // b LBB0_582 $-140(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_object_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_object_arm64.s index 220a216f1..666fd64e8 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_object_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_object_arm64.s @@ -69,7 +69,7 @@ _skip_object: WORD $0xa90dfbfd // stp fp, lr, [sp, #216] WORD $0xa93ffbfd // stp fp, lr, [sp, #-8] WORD $0xd10023fd // sub fp, sp, #8 - WORD $0xaa0003fb // mov x27, x0 + WORD $0xaa0003fe // mov lr, x0 Lloh0: WORD $0x10fffd28 // adr x8, lCPI0_0 $-92(%rip) Lloh1: @@ -83,7 +83,7 @@ Lloh1: WORD $0x5280002c // mov w12, #1 WORD $0xd284c00d // mov x13, #9728 WORD $0xf2c0002d // movk x13, #1, lsl #32 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x4f02e781 // movi.16b v1, #92 Lloh2: @@ -112,12 +112,12 @@ Lloh5: WORD $0x6f00e417 // movi.2d v23, #0000000000000000 WORD $0x4f03e778 // movi.16b v24, #123 WORD $0x4f03e7b9 // movi.16b v25, #125 - WORD $0x52800036 // mov w22, #1 + WORD $0x52800037 // mov w23, #1 LBB0_1: - WORD $0xa9403b7e // ldp lr, x14, [x27] + WORD $0xa9403bd4 // ldp x20, x14, [lr] WORD $0xeb0e027f // cmp x19, x14 WORD $0x54000162 // b.hs LBB0_6 $44(%rip) - WORD $0x38736bc8 // ldrb w8, [lr, x19] + WORD $0x38736a88 // ldrb w8, [x20, x19] WORD $0x7100351f // cmp w8, #13 WORD $0x54000100 // b.eq LBB0_6 $32(%rip) WORD $0x7100811f // cmp w8, #32 @@ -131,7 +131,7 @@ LBB0_6: WORD $0x91000668 // add x8, x19, #1 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_10 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_10 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -143,7 +143,7 @@ LBB0_10: WORD $0x91000a68 // add x8, x19, #2 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_14 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_14 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -155,7 +155,7 @@ LBB0_14: WORD $0x91000e68 // add x8, x19, #3 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_18 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_18 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -166,9 +166,9 @@ LBB0_14: LBB0_18: WORD $0x91001268 // add x8, x19, #4 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x540171c2 // b.hs LBB0_576 $11832(%rip) + WORD $0x540178a2 // b.hs LBB0_589 $12052(%rip) LBB0_19: - WORD $0x38686bcf // ldrb w15, [lr, x8] + WORD $0x38686a8f // ldrb w15, [x20, x8] WORD $0x710081ff // cmp w15, #32 WORD $0x9acf218f // lsl x15, x12, x15 WORD $0x8a0d01ef // and x15, x15, x13 @@ -177,17 +177,17 @@ LBB0_19: WORD $0x91000508 // add x8, x8, #1 WORD $0xeb0801df // cmp x14, x8 WORD $0x54ffff01 // b.ne LBB0_19 $-32(%rip) - WORD $0x14000b85 // b LBB0_577 $11796(%rip) + WORD $0x14000bbc // b LBB0_590 $12016(%rip) LBB0_21: WORD $0xeb0e011f // cmp x8, x14 - WORD $0x54017062 // b.hs LBB0_577 $11788(%rip) + WORD $0x54017742 // b.hs LBB0_590 $12008(%rip) LBB0_22: WORD $0x91000513 // add x19, x8, #1 WORD $0xf9000033 // str x19, [x1] - WORD $0x8b0803c6 // add x6, lr, x8 + WORD $0x8b080286 // add x6, x20, x8 WORD $0x394000c5 // ldrb w5, [x6] - WORD $0x34016fc5 // cbz w5, LBB0_577 $11768(%rip) - WORD $0xd10006ce // sub x14, x22, #1 + WORD $0x340176a5 // cbz w5, LBB0_590 $11988(%rip) + WORD $0xd10006ee // sub x14, x23, #1 WORD $0xf86e7920 // ldr x0, [x9, x14, lsl #3] WORD $0xb100057f // cmn x11, #1 WORD $0x9a8b010b // csel x11, x8, x11, eq @@ -200,20 +200,20 @@ LBB0_22: WORD $0x71000c1f // cmp w0, #3 WORD $0x54001a01 // b.ne LBB0_60 $832(%rip) WORD $0x710088bf // cmp w5, #34 - WORD $0x540160c1 // b.ne LBB0_542 $11288(%rip) + WORD $0x540167a1 // b.ne LBB0_555 $11508(%rip) WORD $0x5280008f // mov w15, #4 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] WORD $0x37303203 // tbnz w3, #6, LBB0_114 $1600(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372845c3 // tbnz w3, #5, LBB0_142 $2232(%rip) - WORD $0x540160a0 // b.eq LBB0_545 $11284(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400f963 // b.lo LBB0_366 $7980(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372848c3 // tbnz w3, #5, LBB0_147 $2328(%rip) + WORD $0x54016780 // b.eq LBB0_558 $11504(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400ff63 // b.lo LBB0_376 $8172(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_33: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -239,42 +239,42 @@ LBB0_33: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_37 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_38 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_39 $88(%rip) LBB0_36: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_33 $-236(%rip) - WORD $0x14000774 // b LBB0_360 $7632(%rip) + WORD $0x140007a4 // b LBB0_370 $7824(%rip) LBB0_37: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -283,14 +283,14 @@ LBB0_37: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_38: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_36 $-80(%rip) LBB0_39: @@ -298,8 +298,8 @@ LBB0_39: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f8baf3 // tbz x19, #63, LBB0_283 $5980(%rip) - WORD $0x14000aac // b LBB0_544 $10928(%rip) + WORD $0xb6f93153 // tbz x19, #63, LBB0_478 $9768(%rip) + WORD $0x14000ae3 // b LBB0_557 $11148(%rip) LBB0_40: WORD $0x7100101f // cmp w0, #4 WORD $0x54000d40 // b.eq LBB0_58 $424(%rip) @@ -311,17 +311,17 @@ LBB0_40: WORD $0x54002061 // b.ne LBB0_99 $1036(%rip) WORD $0x5280004f // mov w15, #2 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] - WORD $0x373031a3 // tbnz w3, #6, LBB0_133 $1588(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372851c3 // tbnz w3, #5, LBB0_182 $2616(%rip) - WORD $0x540153e0 // b.eq LBB0_545 $10876(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400fd43 // b.lo LBB0_395 $8104(%rip) + WORD $0x373034a3 // tbnz w3, #6, LBB0_138 $1684(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372854c3 // tbnz w3, #5, LBB0_187 $2712(%rip) + WORD $0x54015ac0 // b.eq LBB0_558 $11096(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x54010343 // b.lo LBB0_405 $8296(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_49: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -347,42 +347,42 @@ LBB0_49: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_53 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_54 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_55 $88(%rip) LBB0_52: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_49 $-236(%rip) - WORD $0x140007a3 // b LBB0_392 $7820(%rip) + WORD $0x140007d3 // b LBB0_402 $8012(%rip) LBB0_53: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -391,14 +391,14 @@ LBB0_53: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_54: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_52 $-80(%rip) LBB0_55: @@ -406,19 +406,19 @@ LBB0_55: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f85593 // tbz x19, #63, LBB0_194 $2736(%rip) - WORD $0x14000a46 // b LBB0_544 $10520(%rip) + WORD $0xb6f85893 // tbz x19, #63, LBB0_199 $2832(%rip) + WORD $0x14000a7d // b LBB0_557 $10740(%rip) LBB0_56: WORD $0x7100b0bf // cmp w5, #44 WORD $0x54001820 // b.eq LBB0_110 $772(%rip) WORD $0x710174bf // cmp w5, #93 WORD $0x540014c0 // b.eq LBB0_101 $664(%rip) - WORD $0x14000a3d // b LBB0_542 $10484(%rip) + WORD $0x14000a74 // b LBB0_555 $10704(%rip) LBB0_58: WORD $0x7100e8bf // cmp w5, #58 - WORD $0x54014761 // b.ne LBB0_542 $10476(%rip) + WORD $0x54014e41 // b.ne LBB0_555 $10696(%rip) WORD $0xf82e793f // str xzr, [x9, x14, lsl #3] - WORD $0x1400056b // b LBB0_284 $5548(%rip) + WORD $0x1400091e // b LBB0_480 $9336(%rip) LBB0_60: WORD $0xf900004e // str x14, [x2] WORD $0x92800020 // mov x0, #-2 @@ -427,36 +427,36 @@ LBB0_60: LBB0_61: WORD $0x5100c0ae // sub w14, w5, #48 WORD $0x710029df // cmp w14, #10 - WORD $0x54003c02 // b.hs LBB0_155 $1920(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54003f02 // b.hs LBB0_160 $2016(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0x37301f43 // tbnz w3, #6, LBB0_121 $1000(%rip) WORD $0xeb0801ce // subs x14, x14, x8 - WORD $0x540146e0 // b.eq LBB0_546 $10460(%rip) + WORD $0x54014dc0 // b.eq LBB0_559 $10680(%rip) WORD $0x394000cf // ldrb w15, [x6] WORD $0x7100c1ff // cmp w15, #48 WORD $0x540001a1 // b.ne LBB0_68 $52(%rip) WORD $0xf10005df // cmp x14, #1 - WORD $0x5400aae0 // b.eq LBB0_283 $5468(%rip) - WORD $0x38736bcf // ldrb w15, [lr, x19] + WORD $0x54012140 // b.eq LBB0_478 $9256(%rip) + WORD $0x38736a8f // ldrb w15, [x20, x19] WORD $0x5100b9e0 // sub w0, w15, #46 WORD $0x7100dc1f // cmp w0, #55 - WORD $0x5400aa68 // b.hi LBB0_283 $5452(%rip) + WORD $0x540120c8 // b.hi LBB0_478 $9240(%rip) WORD $0x9ac0218f // lsl x15, x12, x0 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x5400a9a0 // b.eq LBB0_283 $5428(%rip) + WORD $0x54012000 // b.eq LBB0_478 $9216(%rip) LBB0_68: WORD $0xf10041df // cmp x14, #16 - WORD $0x54011363 // b.lo LBB0_458 $8812(%rip) + WORD $0x54011963 // b.lo LBB0_468 $9004(%rip) WORD $0xd2800005 // mov x5, #0 - WORD $0xd280001a // mov x26, #0 - WORD $0x92800016 // mov x22, #-1 + WORD $0xd280001b // mov x27, #0 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800013 // mov x19, #-1 WORD $0x92800000 // mov x0, #-1 LBB0_70: - WORD $0x3cfa68da // ldr q26, [x6, x26] + WORD $0x3cfb68da // ldr q26, [x6, x27] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 WORD $0x6e278f5d // cmeq.16b v29, v26, v7 @@ -475,133 +475,133 @@ LBB0_70: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0x2a3503f5 // mvn w21, w21 - WORD $0x32103eb5 // orr w21, w21, #0xffff0000 - WORD $0x5ac002b5 // rbit w21, w21 - WORD $0x5ac012b5 // clz w21, w21 - WORD $0x1ad52238 // lsl w24, w17, w21 - WORD $0x0a3801f9 // bic w25, w15, w24 - WORD $0x0a380291 // bic w17, w20, w24 - WORD $0x0a3802e7 // bic w7, w23, w24 - WORD $0x710042bf // cmp w21, #16 - WORD $0x1a9901f8 // csel w24, w15, w25, eq - WORD $0x1a910294 // csel w20, w20, w17, eq - WORD $0x1a8702f9 // csel w25, w23, w7, eq - WORD $0x5100070f // sub w15, w24, #1 - WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x5400d5e1 // b.ne LBB0_364 $6844(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x5400d281 // b.ne LBB0_358 $6736(%rip) + WORD $0x1e260356 // fmov w22, s26 + WORD $0x2a3603f6 // mvn w22, w22 + WORD $0x32103ed6 // orr w22, w22, #0xffff0000 + WORD $0x5ac002d6 // rbit w22, w22 + WORD $0x5ac012d6 // clz w22, w22 + WORD $0x1ad62239 // lsl w25, w17, w22 + WORD $0x0a3901fa // bic w26, w15, w25 + WORD $0x0a3902b1 // bic w17, w21, w25 + WORD $0x0a390307 // bic w7, w24, w25 + WORD $0x710042df // cmp w22, #16 + WORD $0x1a9a01f9 // csel w25, w15, w26, eq + WORD $0x1a9102b5 // csel w21, w21, w17, eq + WORD $0x1a87031a // csel w26, w24, w7, eq WORD $0x5100072f // sub w15, w25, #1 WORD $0x6a1901ef // ands w15, w15, w25 - WORD $0x5400d221 // b.ne LBB0_358 $6724(%rip) - WORD $0x340000d8 // cbz w24, LBB0_76 $24(%rip) - WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 + WORD $0x5400dbe1 // b.ne LBB0_374 $7036(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x5400d881 // b.ne LBB0_368 $6928(%rip) + WORD $0x5100074f // sub w15, w26, #1 + WORD $0x6a1a01ef // ands w15, w15, w26 + WORD $0x5400d821 // b.ne LBB0_368 $6916(%rip) + WORD $0x340000d9 // cbz w25, LBB0_76 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 WORD $0xb100041f // cmn x0, #1 - WORD $0x5400e5e1 // b.ne LBB0_394 $7356(%rip) - WORD $0x8b170340 // add x0, x26, x23 + WORD $0x5400ebe1 // b.ne LBB0_404 $7548(%rip) + WORD $0x8b180360 // add x0, x27, x24 LBB0_76: - WORD $0x340000d4 // cbz w20, LBB0_79 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x340000d5 // cbz w21, LBB0_79 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb100067f // cmn x19, #1 - WORD $0x5400d281 // b.ne LBB0_362 $6736(%rip) - WORD $0x8b140353 // add x19, x26, x20 + WORD $0x5400d881 // b.ne LBB0_372 $6928(%rip) + WORD $0x8b150373 // add x19, x27, x21 LBB0_79: - WORD $0x340000d9 // cbz w25, LBB0_82 $24(%rip) - WORD $0x5ac0032f // rbit w15, w25 - WORD $0x5ac011f4 // clz w20, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x5400d1c1 // b.ne LBB0_362 $6712(%rip) - WORD $0x8b140356 // add x22, x26, x20 + WORD $0x340000da // cbz w26, LBB0_82 $24(%rip) + WORD $0x5ac0034f // rbit w15, w26 + WORD $0x5ac011f5 // clz w21, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x5400d7c1 // b.ne LBB0_372 $6904(%rip) + WORD $0x8b150377 // add x23, x27, x21 LBB0_82: - WORD $0x710042bf // cmp w21, #16 - WORD $0x540033c1 // b.ne LBB0_167 $1656(%rip) - WORD $0x9100435a // add x26, x26, #16 + WORD $0x710042df // cmp w22, #16 + WORD $0x540036c1 // b.ne LBB0_172 $1752(%rip) + WORD $0x9100437b // add x27, x27, #16 WORD $0xd10040a5 // sub x5, x5, #16 - WORD $0x8b0501d5 // add x21, x14, x5 - WORD $0xf1003ebf // cmp x21, #15 + WORD $0x8b0501d6 // add x22, x14, x5 + WORD $0xf1003edf // cmp x22, #15 WORD $0x54fff6a8 // b.hi LBB0_70 $-300(%rip) - WORD $0x8b1a00c5 // add x5, x6, x26 - WORD $0xeb1a01df // cmp x14, x26 - WORD $0x54003300 // b.eq LBB0_168 $1632(%rip) + WORD $0x8b1b00c5 // add x5, x6, x27 + WORD $0xeb1b01df // cmp x14, x27 + WORD $0x54003600 // b.eq LBB0_173 $1728(%rip) LBB0_85: - WORD $0x8b1500b9 // add x25, x5, x21 + WORD $0x8b1600ba // add x26, x5, x22 WORD $0xaa2503ee // mvn x14, x5 - WORD $0x8b1e010f // add x15, x8, lr + WORD $0x8b14010f // add x15, x8, x20 WORD $0x8b0f01ce // add x14, x14, x15 - WORD $0xcb0600ba // sub x26, x5, x6 - WORD $0xaa0503fe // mov lr, x5 + WORD $0xcb0600b4 // sub x20, x5, x6 + WORD $0xaa0503fb // mov x27, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x14000009 // b LBB0_88 $36(%rip) LBB0_86: WORD $0xb100067f // cmn x19, #1 - WORD $0xaa1a03f3 // mov x19, x26 + WORD $0xaa1403f3 // mov x19, x20 WORD $0x540003a1 // b.ne LBB0_97 $116(%rip) LBB0_87: WORD $0xd10005ce // sub x14, x14, #1 - WORD $0x9100075a // add x26, x26, #1 - WORD $0xaa1e03e5 // mov x5, lr - WORD $0xd10006b5 // sub x21, x21, #1 - WORD $0xb400a5d5 // cbz x21, LBB0_294 $5304(%rip) + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1b03e5 // mov x5, x27 + WORD $0xd10006d6 // sub x22, x22, #1 + WORD $0xb400abd6 // cbz x22, LBB0_304 $5496(%rip) LBB0_88: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0x38401775 // ldrb w21, [x27], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 WORD $0x54ffff03 // b.lo LBB0_87 $-32(%rip) - WORD $0x7100b69f // cmp w20, #45 + WORD $0x7100b6bf // cmp w21, #45 WORD $0x5400016d // b.le LBB0_94 $44(%rip) - WORD $0x7101969f // cmp w20, #101 + WORD $0x710196bf // cmp w21, #101 WORD $0x54fffe20 // b.eq LBB0_86 $-60(%rip) - WORD $0x7101169f // cmp w20, #69 + WORD $0x710116bf // cmp w21, #69 WORD $0x54fffde0 // b.eq LBB0_86 $-68(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54002f81 // b.ne LBB0_168 $1520(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54003281 // b.ne LBB0_173 $1616(%rip) WORD $0xb100041f // cmn x0, #1 - WORD $0xaa1a03e0 // mov x0, x26 + WORD $0xaa1403e0 // mov x0, x20 WORD $0x54fffda0 // b.eq LBB0_87 $-76(%rip) WORD $0x14000008 // b LBB0_97 $32(%rip) LBB0_94: - WORD $0x7100ae9f // cmp w20, #43 + WORD $0x7100aebf // cmp w21, #43 WORD $0x54000060 // b.eq LBB0_96 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x54002e81 // b.ne LBB0_168 $1488(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x54003181 // b.ne LBB0_173 $1584(%rip) LBB0_96: - WORD $0xb10006df // cmn x22, #1 - WORD $0xaa1a03f6 // mov x22, x26 + WORD $0xb10006ff // cmn x23, #1 + WORD $0xaa1403f7 // mov x23, x20 WORD $0x54fffca0 // b.eq LBB0_87 $-108(%rip) LBB0_97: - WORD $0x5280007a // mov w26, #3 - WORD $0x14000191 // b LBB0_180 $1604(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x140001a9 // b LBB0_185 $1700(%rip) LBB0_98: WORD $0x7100b0bf // cmp w5, #44 WORD $0x540004a0 // b.eq LBB0_112 $148(%rip) LBB0_99: WORD $0x7101f4bf // cmp w5, #125 WORD $0x54000080 // b.eq LBB0_101 $16(%rip) - WORD $0x1400099b // b LBB0_542 $9836(%rip) + WORD $0x140009d2 // b LBB0_555 $10056(%rip) LBB0_100: WORD $0x710174bf // cmp w5, #93 WORD $0x540000c1 // b.ne LBB0_102 $24(%rip) LBB0_101: WORD $0xf900004e // str x14, [x2] - WORD $0xaa0e03f6 // mov x22, x14 + WORD $0xaa0e03f7 // mov x23, x14 WORD $0xaa0b03e0 // mov x0, x11 WORD $0xb5ffc80e // cbnz x14, LBB0_1 $-1792(%rip) - WORD $0x140009ff // b LBB0_578 $10236(%rip) + WORD $0x14000a36 // b LBB0_591 $10456(%rip) LBB0_102: WORD $0xf82e792c // str x12, [x9, x14, lsl #3] WORD $0x92800020 // mov x0, #-2 @@ -609,40 +609,40 @@ LBB0_102: WORD $0x54ffeb8d // b.le LBB0_61 $-656(%rip) LBB0_103: WORD $0x7101b4bf // cmp w5, #109 - WORD $0x5400298d // b.le LBB0_162 $1328(%rip) + WORD $0x54002c8d // b.le LBB0_167 $1424(%rip) WORD $0x7101b8bf // cmp w5, #110 - WORD $0x540041a0 // b.eq LBB0_200 $2100(%rip) + WORD $0x540044a0 // b.eq LBB0_205 $2196(%rip) WORD $0x7101d0bf // cmp w5, #116 - WORD $0x54004000 // b.eq LBB0_198 $2048(%rip) + WORD $0x54004300 // b.eq LBB0_203 $2144(%rip) WORD $0x7101ecbf // cmp w5, #123 - WORD $0x54013e61 // b.ne LBB0_578 $10188(%rip) - WORD $0x37304f43 // tbnz w3, #6, LBB0_218 $2536(%rip) + WORD $0x54014541 // b.ne LBB0_591 $10408(%rip) + WORD $0x37305243 // tbnz w3, #6, LBB0_223 $2632(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x540130cc // b.gt LBB0_543 $9752(%rip) + WORD $0x540137ac // b.gt LBB0_556 $9972(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ce // mov w14, #6 - WORD $0x140001f4 // b LBB0_197 $2000(%rip) + WORD $0x1400020c // b LBB0_202 $2096(%rip) LBB0_110: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x5401300c // b.gt LBB0_543 $9728(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x540136ec // b.gt LBB0_556 $9948(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793f // str xzr, [x9, x22, lsl #3] - WORD $0x140004ac // b LBB0_284 $4784(%rip) + WORD $0xf837793f // str xzr, [x9, x23, lsl #3] + WORD $0x1400085f // b LBB0_480 $8572(%rip) LBB0_112: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x54012f4c // b.gt LBB0_543 $9704(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x5401362c // b.gt LBB0_556 $9924(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793a // str x26, [x9, x22, lsl #3] - WORD $0x140004a6 // b LBB0_284 $4760(%rip) + WORD $0xf837793b // str x27, [x9, x23, lsl #3] + WORD $0x14000859 // b LBB0_480 $8548(%rip) LBB0_114: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400c44b // b.lt LBB0_359 $6280(%rip) + WORD $0x5400ca4b // b.lt LBB0_369 $6472(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 @@ -650,13 +650,13 @@ LBB0_114: WORD $0x14000008 // b LBB0_118 $32(%rip) LBB0_116: WORD $0xd2800005 // mov x5, #0 - WORD $0xb50005b5 // cbnz x21, LBB0_120 $180(%rip) + WORD $0xb50005b6 // cbnz x22, LBB0_120 $180(%rip) LBB0_117: WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x5400c10d // b.le LBB0_356 $6176(%rip) + WORD $0x5400c70d // b.le LBB0_366 $6368(%rip) LBB0_118: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] @@ -665,51 +665,52 @@ LBB0_118: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq WORD $0x54fffbc0 // b.eq LBB0_116 $-136(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0xb4fffab5 // cbz x21, LBB0_117 $-172(%rip) + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0xb4fffab6 // cbz x22, LBB0_117 $-172(%rip) LBB0_120: - WORD $0xdac002af // rbit x15, x21 + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910009d3 // add x19, x14, #2 - WORD $0x14000465 // b LBB0_283 $4500(%rip) + WORD $0x14000818 // b LBB0_478 $8288(%rip) LBB0_121: WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_124 $60(%rip) -LBB0_122: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_125 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_123: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -717,48 +718,72 @@ LBB0_122: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x35008aa0 // cbnz w0, LBB0_282 $4436(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000365 // cbnz w5, LBB0_133 $108(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_122 $-52(%rip) -LBB0_124: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb40001ee // cbz x14, LBB0_131 $60(%rip) + WORD $0x54fffe48 // b.hi LBB0_123 $-56(%rip) +LBB0_125: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xd284c013 // mov x19, #9728 + WORD $0xf2c20033 // movk x19, #4097, lsl #32 + WORD $0xb400020e // cbz x14, LBB0_132 $64(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_126: +LBB0_127: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x540089a0 // b.eq LBB0_283 $4404(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54008960 // b.eq LBB0_283 $4396(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1301ef // and x15, x15, x19 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_132 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54008920 // b.eq LBB0_283 $4388(%rip) + WORD $0x540000e0 // b.eq LBB0_132 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_132 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_126 $-40(%rip) -LBB0_130: + WORD $0x54fffe81 // b.ne LBB0_127 $-48(%rip) WORD $0xaa0503e0 // mov x0, x5 -LBB0_131: - WORD $0xcb1e0013 // sub x19, x0, lr LBB0_132: - WORD $0x5280007a // mov w26, #3 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x1400043f // b LBB0_283 $4348(%rip) + WORD $0xcb140013 // sub x19, x0, x20 + WORD $0x140007f0 // b LBB0_478 $8128(%rip) LBB0_133: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x5400fd6b // b.lt LBB0_479 $8108(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_135: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54009480 // b.eq LBB0_303 $4752(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_135 $-48(%rip) +LBB0_137: + WORD $0x91000413 // add x19, x0, #1 + WORD $0x140007db // b LBB0_479 $8044(%rip) +LBB0_138: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400baeb // b.lt LBB0_365 $5980(%rip) + WORD $0x5400bdeb // b.lt LBB0_375 $6076(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_135: +LBB0_140: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -766,63 +791,63 @@ LBB0_135: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_137 $48(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x54000180 // b.eq LBB0_142 $48(%rip) + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_138 $8(%rip) -LBB0_137: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_143 $8(%rip) +LBB0_142: WORD $0xd2800005 // mov x5, #0 -LBB0_138: - WORD $0xb5000f55 // cbnz x21, LBB0_152 $488(%rip) +LBB0_143: + WORD $0xb5000f56 // cbnz x22, LBB0_157 $488(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa6c // b.gt LBB0_135 $-180(%rip) - WORD $0xb500f185 // cbnz x5, LBB0_468 $7728(%rip) + WORD $0x54fffa6c // b.gt LBB0_140 $-180(%rip) + WORD $0xb500f565 // cbnz x5, LBB0_481 $7852(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400f32a // b.ge LBB0_471 $7780(%rip) - WORD $0x1400093d // b LBB0_577 $9460(%rip) -LBB0_142: - WORD $0x54011b00 // b.eq LBB0_545 $9056(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b883 // b.lo LBB0_372 $5904(%rip) + WORD $0x5400f70a // b.ge LBB0_484 $7904(%rip) + WORD $0x1400095c // b LBB0_590 $9584(%rip) +LBB0_147: + WORD $0x54011ee0 // b.eq LBB0_558 $9180(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400bb83 // b.lo LBB0_382 $6000(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_145: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_150: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -844,40 +869,40 @@ LBB0_145: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_150 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_151 $152(%rip) -LBB0_147: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_155 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_156 $152(%rip) +LBB0_152: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -892,44 +917,44 @@ LBB0_147: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb500042e // cbnz x14, LBB0_153 $132(%rip) - WORD $0xb50111a5 // cbnz x5, LBB0_551 $8756(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500042e // cbnz x14, LBB0_158 $132(%rip) + WORD $0xb5011585 // cbnz x5, LBB0_564 $8880(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_145 $-340(%rip) - WORD $0x1400052f // b LBB0_361 $5308(%rip) -LBB0_150: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_150 $-340(%rip) + WORD $0x14000547 // b LBB0_371 $5404(%rip) +LBB0_155: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_151: +LBB0_156: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_147 $-188(%rip) -LBB0_152: - WORD $0xdac002af // rbit x15, x21 + WORD $0x17ffffd1 // b LBB0_152 $-188(%rip) +LBB0_157: + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 @@ -937,82 +962,82 @@ LBB0_152: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54001983 // b.lo LBB0_195 $816(%rip) - WORD $0x140008c8 // b LBB0_578 $8992(%rip) -LBB0_153: + WORD $0x54001983 // b.lo LBB0_200 $816(%rip) + WORD $0x140008e7 // b LBB0_591 $9116(%rip) +LBB0_158: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54011783 // b.lo LBB0_574 $8944(%rip) + WORD $0x54011b63 // b.lo LBB0_587 $9068(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f87053 // tbz x19, #63, LBB0_283 $3592(%rip) - WORD $0x14000857 // b LBB0_544 $8540(%rip) -LBB0_155: + WORD $0xb6f8e3b3 // tbz x19, #63, LBB0_478 $7284(%rip) + WORD $0x14000876 // b LBB0_557 $8664(%rip) +LBB0_160: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001cc0 // b.eq LBB0_206 $920(%rip) + WORD $0x54001cc0 // b.eq LBB0_211 $920(%rip) WORD $0x7100b4bf // cmp w5, #45 - WORD $0x54011741 // b.ne LBB0_578 $8936(%rip) - WORD $0x37306ae3 // tbnz w3, #6, LBB0_273 $3420(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d9 // subs x25, x14, x19 - WORD $0x54011520 // b.eq LBB0_570 $8868(%rip) - WORD $0x8b1303c0 // add x0, lr, x19 + WORD $0x54011b21 // b.ne LBB0_591 $9060(%rip) + WORD $0x37306ae3 // tbnz w3, #6, LBB0_278 $3420(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301da // subs x26, x14, x19 + WORD $0x54011900 // b.eq LBB0_583 $8992(%rip) + WORD $0x8b130280 // add x0, x20, x19 WORD $0x3940000e // ldrb w14, [x0] WORD $0x7100c1df // cmp w14, #48 - WORD $0x54008881 // b.ne LBB0_309 $4368(%rip) - WORD $0xf100073f // cmp x25, #1 - WORD $0x540086e1 // b.ne LBB0_307 $4316(%rip) -LBB0_161: + WORD $0x54008b81 // b.ne LBB0_319 $4464(%rip) + WORD $0xf100075f // cmp x26, #1 + WORD $0x540089e1 // b.ne LBB0_317 $4412(%rip) +LBB0_166: WORD $0x5280002e // mov w14, #1 - WORD $0x140004e0 // b LBB0_355 $4992(%rip) -LBB0_162: + WORD $0x140004f8 // b LBB0_365 $5088(%rip) +LBB0_167: WORD $0x71016cbf // cmp w5, #91 - WORD $0x540019c0 // b.eq LBB0_203 $824(%rip) + WORD $0x540019c0 // b.eq LBB0_208 $824(%rip) WORD $0x710198bf // cmp w5, #102 - WORD $0x54011541 // b.ne LBB0_578 $8872(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54011921 // b.ne LBB0_591 $8996(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd10011cf // sub x15, x14, #4 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x54010942 // b.hs LBB0_550 $8488(%rip) - WORD $0xb8736bce // ldr w14, [lr, x19] + WORD $0x54010d22 // b.hs LBB0_563 $8612(%rip) + WORD $0xb8736a8e // ldr w14, [x20, x19] WORD $0x528d8c2f // mov w15, #27745 WORD $0x72acae6f // movk w15, #25971, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54010ee1 // b.ne LBB0_563 $8668(%rip) + WORD $0x540112c1 // b.ne LBB0_576 $8792(%rip) WORD $0x91001513 // add x19, x8, #5 - WORD $0x14000362 // b LBB0_283 $3464(%rip) -LBB0_167: - WORD $0x8b3540ce // add x14, x6, w21, uxtw - WORD $0x8b1a01c5 // add x5, x14, x26 -LBB0_168: + WORD $0x140006fd // b LBB0_478 $7156(%rip) +LBB0_172: + WORD $0x8b3640ce // add x14, x6, w22, uxtw + WORD $0x8b1b01c5 // add x5, x14, x27 +LBB0_173: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4010740 // cbz x0, LBB0_547 $8424(%rip) -LBB0_169: - WORD $0xb4010736 // cbz x22, LBB0_547 $8420(%rip) - WORD $0xb4010713 // cbz x19, LBB0_547 $8416(%rip) + WORD $0xb4010b20 // cbz x0, LBB0_560 $8548(%rip) +LBB0_174: + WORD $0xb4010b17 // cbz x23, LBB0_560 $8544(%rip) + WORD $0xb4010af3 // cbz x19, LBB0_560 $8540(%rip) WORD $0xcb0600ae // sub x14, x5, x6 WORD $0xd10005c5 // sub x5, x14, #1 WORD $0xeb05001f // cmp x0, x5 - WORD $0x54000300 // b.eq LBB0_179 $96(%rip) - WORD $0xeb0502df // cmp x22, x5 - WORD $0x540002c0 // b.eq LBB0_179 $88(%rip) + WORD $0x54000300 // b.eq LBB0_184 $96(%rip) + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x540002c0 // b.eq LBB0_184 $88(%rip) WORD $0xeb05027f // cmp x19, x5 - WORD $0x54000280 // b.eq LBB0_179 $80(%rip) - WORD $0xf10006cf // subs x15, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0x54000280 // b.eq LBB0_184 $80(%rip) + WORD $0xf10006ef // subs x15, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x5400006b // b.lt LBB0_176 $12(%rip) + WORD $0x5400006b // b.lt LBB0_181 $12(%rip) WORD $0xeb0f027f // cmp x19, x15 - WORD $0x54010561 // b.ne LBB0_548 $8364(%rip) -LBB0_176: + WORD $0x54010941 // b.ne LBB0_561 $8488(%rip) +LBB0_181: WORD $0xaa130005 // orr x5, x0, x19 - WORD $0xb7f80065 // tbnz x5, #63, LBB0_178 $12(%rip) + WORD $0xb7f80065 // tbnz x5, #63, LBB0_183 $12(%rip) WORD $0xeb13001f // cmp x0, x19 - WORD $0x5401062a // b.ge LBB0_553 $8388(%rip) -LBB0_178: + WORD $0x54010a0a // b.ge LBB0_566 $8512(%rip) +LBB0_183: WORD $0xd37ffcaf // lsr x15, x5, #63 WORD $0x520001ef // eor w15, w15, #0x1 WORD $0xd1000671 // sub x17, x19, #1 @@ -1021,23 +1046,23 @@ LBB0_178: WORD $0x6a1101ff // tst w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0xda9301ce // csinv x14, x14, x19, eq - WORD $0x14000004 // b LBB0_180 $16(%rip) -LBB0_179: + WORD $0x14000004 // b LBB0_185 $16(%rip) +LBB0_184: WORD $0xcb0e03ee // neg x14, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_180: - WORD $0xb7f9032e // tbnz x14, #63, LBB0_547 $8292(%rip) +LBB0_185: + WORD $0xb7f9070e // tbnz x14, #63, LBB0_560 $8416(%rip) WORD $0x8b0e0113 // add x19, x8, x14 - WORD $0x1400033b // b LBB0_283 $3308(%rip) -LBB0_182: - WORD $0x54010240 // b.eq LBB0_545 $8264(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b063 // b.lo LBB0_401 $5644(%rip) + WORD $0x140006d6 // b LBB0_478 $7000(%rip) +LBB0_187: + WORD $0x54010620 // b.eq LBB0_558 $8388(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b363 // b.lo LBB0_411 $5740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_185: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_190: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -1059,40 +1084,40 @@ LBB0_185: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_190 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_191 $152(%rip) -LBB0_187: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_195 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_196 $152(%rip) +LBB0_192: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -1107,115 +1132,115 @@ LBB0_187: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb50002ee // cbnz x14, LBB0_192 $92(%rip) - WORD $0xb500f8e5 // cbnz x5, LBB0_551 $7964(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb50002ee // cbnz x14, LBB0_197 $92(%rip) + WORD $0xb500fcc5 // cbnz x5, LBB0_564 $8088(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_185 $-340(%rip) - WORD $0x140004fe // b LBB0_393 $5112(%rip) -LBB0_190: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_190 $-340(%rip) + WORD $0x14000516 // b LBB0_403 $5208(%rip) +LBB0_195: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_191: +LBB0_196: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_187 $-188(%rip) -LBB0_192: + WORD $0x17ffffd1 // b LBB0_192 $-188(%rip) +LBB0_197: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54010003 // b.lo LBB0_574 $8192(%rip) + WORD $0x540103e3 // b.lo LBB0_587 $8316(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb7f8f393 // tbnz x19, #63, LBB0_544 $7792(%rip) -LBB0_194: + WORD $0xb7f8f773 // tbnz x19, #63, LBB0_557 $7916(%rip) +LBB0_199: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xb27ff7ee // mov x14, #9223372036854775806 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x5400ffc8 // b.hi LBB0_578 $8184(%rip) -LBB0_195: + WORD $0x540103a8 // b.hi LBB0_591 $8308(%rip) +LBB0_200: WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400f24c // b.gt LBB0_543 $7752(%rip) + WORD $0x5400f62c // b.gt LBB0_556 $7876(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x5280008e // mov w14, #4 -LBB0_197: +LBB0_202: WORD $0xf828792e // str x14, [x9, x8, lsl #3] - WORD $0x140002bd // b LBB0_284 $2804(%rip) -LBB0_198: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x14000658 // b LBB0_480 $6496(%rip) +LBB0_203: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f2c2 // b.hs LBB0_550 $7768(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f6a2 // b.hs LBB0_563 $7892(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528e4e8f // mov w15, #29300 WORD $0x72acaeaf // movk w15, #25973, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54000180 // b.eq LBB0_202 $48(%rip) - WORD $0x14000797 // b LBB0_554 $7772(%rip) -LBB0_200: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54000180 // b.eq LBB0_207 $48(%rip) + WORD $0x140007b6 // b LBB0_567 $7896(%rip) +LBB0_205: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f162 // b.hs LBB0_550 $7724(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f542 // b.hs LBB0_563 $7848(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528eadcf // mov w15, #30062 WORD $0x72ad8d8f // movk w15, #27756, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x5400f421 // b.ne LBB0_558 $7812(%rip) -LBB0_202: + WORD $0x5400f801 // b.ne LBB0_571 $7936(%rip) +LBB0_207: WORD $0x91001113 // add x19, x8, #4 - WORD $0x140002a2 // b LBB0_283 $2696(%rip) -LBB0_203: - WORD $0x37302d23 // tbnz w3, #6, LBB0_245 $1444(%rip) + WORD $0x1400063d // b LBB0_478 $6388(%rip) +LBB0_208: + WORD $0x37302d23 // tbnz w3, #6, LBB0_250 $1444(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400ee4c // b.gt LBB0_543 $7624(%rip) + WORD $0x5400f22c // b.gt LBB0_556 $7748(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ae // mov w14, #5 - WORD $0x17ffffe0 // b LBB0_197 $-128(%rip) -LBB0_206: - WORD $0x37305423 // tbnz w3, #6, LBB0_285 $2692(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x37285c23 // tbnz w3, #5, LBB0_295 $2948(%rip) - WORD $0x5400eda0 // b.eq LBB0_545 $7604(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400ad03 // b.lo LBB0_432 $5536(%rip) + WORD $0x17ffffe0 // b LBB0_202 $-128(%rip) +LBB0_211: + WORD $0x37305423 // tbnz w3, #6, LBB0_290 $2692(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x37285f23 // tbnz w3, #5, LBB0_305 $3044(%rip) + WORD $0x5400f180 // b.eq LBB0_558 $7728(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b003 // b.lo LBB0_442 $5632(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_211: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_216: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -1249,43 +1274,43 @@ LBB0_211: WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000145 // cbnz x5, LBB0_215 $40(%rip) - WORD $0xb50001c6 // cbnz x6, LBB0_216 $56(%rip) + WORD $0xb5000145 // cbnz x5, LBB0_220 $40(%rip) + WORD $0xb50001c6 // cbnz x6, LBB0_221 $56(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb500032e // cbnz x14, LBB0_217 $100(%rip) -LBB0_214: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500032e // cbnz x14, LBB0_222 $100(%rip) +LBB0_219: + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff868 // b.hi LBB0_211 $-244(%rip) - WORD $0x1400051f // b LBB0_429 $5244(%rip) -LBB0_215: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff868 // b.hi LBB0_216 $-244(%rip) + WORD $0x14000537 // b LBB0_439 $5340(%rip) +LBB0_220: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_216: +LBB0_221: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -1296,24 +1321,24 @@ LBB0_216: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4fffd2e // cbz x14, LBB0_214 $-92(%rip) -LBB0_217: + WORD $0xb4fffd2e // cbz x14, LBB0_219 $-92(%rip) +LBB0_222: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 - WORD $0x140002fc // b LBB0_306 $3056(%rip) -LBB0_218: + WORD $0x14000314 // b LBB0_316 $3152(%rip) +LBB0_223: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_220 $40(%rip) -LBB0_219: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_225 $40(%rip) +LBB0_224: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1323,12 +1348,12 @@ LBB0_219: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_220: +LBB0_225: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_228 $748(%rip) -LBB0_221: + WORD $0x5400176b // b.lt LBB0_233 $748(%rip) +LBB0_226: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1357,11 +1382,11 @@ LBB0_221: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_223 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_228 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_224 $44(%rip) -LBB0_223: + WORD $0x1400000b // b LBB0_229 $44(%rip) +LBB0_228: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1372,7 +1397,7 @@ LBB0_223: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_224: +LBB0_229: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1403,47 +1428,47 @@ LBB0_224: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1495,104 +1520,104 @@ LBB0_224: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_219 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_224 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_226: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_231: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54002789 // b.ls LBB0_272 $1264(%rip) + WORD $0x54002789 // b.ls LBB0_277 $1264(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_226 $-44(%rip) - WORD $0x17ffff3a // b LBB0_219 $-792(%rip) -LBB0_228: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_231 $-44(%rip) + WORD $0x17ffff3a // b LBB0_224 $-792(%rip) +LBB0_233: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400d4ad // b.le LBB0_575 $6804(%rip) + WORD $0x5400d88d // b.le LBB0_588 $6928(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_240 $112(%rip) + WORD $0x54000383 // b.lo LBB0_245 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_232 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_237 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_233 $12(%rip) -LBB0_232: + WORD $0x14000003 // b LBB0_238 $12(%rip) +LBB0_237: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_233: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_241 $80(%rip) +LBB0_238: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_246 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_242 $68(%rip) -LBB0_235: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_243 $80(%rip) -LBB0_236: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_247 $68(%rip) +LBB0_240: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_248 $80(%rip) +LBB0_241: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_244 $68(%rip) -LBB0_237: - WORD $0xb4000065 // cbz x5, LBB0_239 $12(%rip) -LBB0_238: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_249 $68(%rip) +LBB0_242: + WORD $0xb4000065 // cbz x5, LBB0_244 $12(%rip) +LBB0_243: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_239: +LBB0_244: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_240: - WORD $0x5280007a // mov w26, #3 +LBB0_245: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_221 $-892(%rip) -LBB0_241: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_235 $-60(%rip) -LBB0_242: + WORD $0x17ffff21 // b LBB0_226 $-892(%rip) +LBB0_246: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_240 $-60(%rip) +LBB0_247: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_236 $-72(%rip) -LBB0_243: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_237 $-60(%rip) -LBB0_244: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_241 $-72(%rip) +LBB0_248: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_242 $-60(%rip) +LBB0_249: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_238 $-72(%rip) - WORD $0x17ffffef // b LBB0_239 $-68(%rip) -LBB0_245: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_243 $-72(%rip) + WORD $0x17ffffef // b LBB0_244 $-68(%rip) +LBB0_250: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_247 $40(%rip) -LBB0_246: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_252 $40(%rip) +LBB0_251: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1602,12 +1627,12 @@ LBB0_246: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_247: +LBB0_252: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_255 $748(%rip) -LBB0_248: + WORD $0x5400176b // b.lt LBB0_260 $748(%rip) +LBB0_253: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1636,11 +1661,11 @@ LBB0_248: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_250 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_255 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_251 $44(%rip) -LBB0_250: + WORD $0x1400000b // b LBB0_256 $44(%rip) +LBB0_255: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1651,7 +1676,7 @@ LBB0_250: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_251: +LBB0_256: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1682,47 +1707,47 @@ LBB0_251: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1774,118 +1799,119 @@ LBB0_251: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_246 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_251 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_253: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_258: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54000729 // b.ls LBB0_272 $228(%rip) + WORD $0x54000729 // b.ls LBB0_277 $228(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_253 $-44(%rip) - WORD $0x17ffff3a // b LBB0_246 $-792(%rip) -LBB0_255: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_258 $-44(%rip) + WORD $0x17ffff3a // b LBB0_251 $-792(%rip) +LBB0_260: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400b44d // b.le LBB0_575 $5768(%rip) + WORD $0x5400b82d // b.le LBB0_588 $5892(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_267 $112(%rip) + WORD $0x54000383 // b.lo LBB0_272 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_259 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_264 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_260 $12(%rip) -LBB0_259: + WORD $0x14000003 // b LBB0_265 $12(%rip) +LBB0_264: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_260: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_268 $80(%rip) +LBB0_265: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_273 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_269 $68(%rip) -LBB0_262: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_270 $80(%rip) -LBB0_263: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_274 $68(%rip) +LBB0_267: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_275 $80(%rip) +LBB0_268: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_271 $68(%rip) -LBB0_264: - WORD $0xb4000065 // cbz x5, LBB0_266 $12(%rip) -LBB0_265: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_276 $68(%rip) +LBB0_269: + WORD $0xb4000065 // cbz x5, LBB0_271 $12(%rip) +LBB0_270: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_266: +LBB0_271: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_267: - WORD $0x5280007a // mov w26, #3 +LBB0_272: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_248 $-892(%rip) -LBB0_268: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_262 $-60(%rip) -LBB0_269: + WORD $0x17ffff21 // b LBB0_253 $-892(%rip) +LBB0_273: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_267 $-60(%rip) +LBB0_274: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_263 $-72(%rip) -LBB0_270: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_264 $-60(%rip) -LBB0_271: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_268 $-72(%rip) +LBB0_275: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_269 $-60(%rip) +LBB0_276: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_265 $-72(%rip) - WORD $0x17ffffef // b LBB0_266 $-68(%rip) -LBB0_272: - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xdac0028f // rbit x15, x20 + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_270 $-72(%rip) + WORD $0x17ffffef // b LBB0_271 $-68(%rip) +LBB0_277: + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 WORD $0xf9400bf1 // ldr x17, [sp, #16] WORD $0xcb1101ef // sub x15, x15, x17 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005cf // add x15, x14, #1 WORD $0xf900002f // str x15, [x1] - WORD $0xf9400771 // ldr x17, [x27, #8] + WORD $0xf94007d1 // ldr x17, [lr, #8] WORD $0xeb1101ff // cmp x15, x17 WORD $0x9a8e2633 // csinc x19, x17, x14, hs WORD $0x12800011 // mov w17, #-1 WORD $0xf9000033 // str x19, [x1] WORD $0xda9f9100 // csinv x0, x8, xzr, ls - WORD $0xb6f80560 // tbz x0, #63, LBB0_284 $172(%rip) - WORD $0x14000563 // b LBB0_578 $5516(%rip) -LBB0_273: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xb6f878c0 // tbz x0, #63, LBB0_480 $3864(%rip) + WORD $0x14000582 // b LBB0_591 $5640(%rip) +LBB0_278: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_276 $60(%rip) -LBB0_274: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_282 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_280: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -1893,54 +1919,51 @@ LBB0_274: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x350002a0 // cbnz w0, LBB0_282 $84(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000bc5 // cbnz w5, LBB0_299 $376(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_274 $-52(%rip) -LBB0_276: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb4ff79ee // cbz x14, LBB0_131 $-4292(%rip) + WORD $0x54fffe48 // b.hi LBB0_280 $-56(%rip) +LBB0_282: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xb400024e // cbz x14, LBB0_289 $72(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_278: + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_284: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x54ff7960 // b.eq LBB0_132 $-4308(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54ff7920 // b.eq LBB0_132 $-4316(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1101ef // and x15, x15, x17 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_289 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54ff78e0 // b.eq LBB0_132 $-4324(%rip) + WORD $0x540000e0 // b.eq LBB0_289 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_289 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_278 $-40(%rip) - WORD $0x17fffbc0 // b LBB0_130 $-4352(%rip) -LBB0_282: - WORD $0x5ac0000e // rbit w14, w0 - WORD $0x5ac011ce // clz w14, w14 - WORD $0x8b1301d3 // add x19, x14, x19 -LBB0_283: + WORD $0x54fffe81 // b.ne LBB0_284 $-48(%rip) + WORD $0xaa0503e0 // mov x0, x5 +LBB0_289: + WORD $0xcb140013 // sub x19, x0, x20 WORD $0xf9000033 // str x19, [x1] - WORD $0xaa0803e0 // mov x0, x8 - WORD $0xeb07011f // cmp x8, x7 - WORD $0x5400a742 // b.hs LBB0_578 $5352(%rip) -LBB0_284: - WORD $0xf9400056 // ldr x22, [x2] - WORD $0xaa0b03e0 // mov x0, x11 - WORD $0xb5ff2ef6 // cbnz x22, LBB0_1 $-6692(%rip) - WORD $0x14000536 // b LBB0_578 $5336(%rip) -LBB0_285: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5280007b // mov w27, #3 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x14000395 // b LBB0_479 $3668(%rip) +LBB0_290: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400552b // b.lt LBB0_423 $2724(%rip) + WORD $0x5400582b // b.lt LBB0_433 $2820(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_287: +LBB0_292: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -1948,30 +1971,30 @@ LBB0_287: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x540001a0 // b.eq LBB0_289 $52(%rip) - WORD $0x0a25028f // bic w15, w20, w5 + WORD $0x540001a0 // b.eq LBB0_294 $52(%rip) + WORD $0x0a2502af // bic w15, w21, w5 WORD $0x2a0f04b1 // orr w17, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 + WORD $0x0a0402a5 // and w5, w21, w4 WORD $0x0a3100a5 // bic w5, w5, w17 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs @@ -1979,38 +2002,65 @@ LBB0_287: WORD $0x0a1101ef // and w15, w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_290 $8(%rip) -LBB0_289: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_295 $8(%rip) +LBB0_294: WORD $0xd2800005 // mov x5, #0 -LBB0_290: - WORD $0xb5ff6bb5 // cbnz x21, LBB0_120 $-4748(%rip) +LBB0_295: + WORD $0xb5ff68b6 // cbnz x22, LBB0_120 $-4844(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa4c // b.gt LBB0_287 $-184(%rip) - WORD $0xb5008645 // cbnz x5, LBB0_518 $4296(%rip) + WORD $0x54fffa4c // b.gt LBB0_292 $-184(%rip) + WORD $0xb5008a25 // cbnz x5, LBB0_531 $4420(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54004e4a // b.ge LBB0_424 $2504(%rip) - WORD $0x140004f6 // b LBB0_577 $5080(%rip) -LBB0_294: - WORD $0xaa1903e5 // mov x5, x25 + WORD $0x5400514a // b.ge LBB0_434 $2600(%rip) + WORD $0x14000515 // b LBB0_590 $5204(%rip) +LBB0_299: + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x54006a0b // b.lt LBB0_479 $3392(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_301: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000120 // b.eq LBB0_303 $36(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_301 $-48(%rip) + WORD $0x17fffb65 // b LBB0_137 $-4716(%rip) +LBB0_303: + WORD $0x8b0e010e // add x14, x8, x14 + WORD $0x910005d3 // add x19, x14, #1 + WORD $0x1400033e // b LBB0_479 $3320(%rip) +LBB0_304: + WORD $0xaa1a03e5 // mov x5, x26 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5ff8b40 // cbnz x0, LBB0_169 $-3736(%rip) - WORD $0x14000492 // b LBB0_547 $4680(%rip) -LBB0_295: - WORD $0x540091a0 // b.eq LBB0_545 $4660(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x540055a3 // b.lo LBB0_438 $2740(%rip) + WORD $0xb5ff8840 // cbnz x0, LBB0_174 $-3832(%rip) + WORD $0x14000499 // b LBB0_560 $4708(%rip) +LBB0_305: + WORD $0x54009280 // b.eq LBB0_558 $4688(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x540055a3 // b.lo LBB0_448 $2740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_298: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_308: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -2042,30 +2092,30 @@ LBB0_298: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000445 // cbnz x5, LBB0_303 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_304 $152(%rip) -LBB0_300: + WORD $0xb5000445 // cbnz x5, LBB0_313 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_314 $152(%rip) +LBB0_310: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -2091,20 +2141,20 @@ LBB0_300: WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100b1 // orr x17, x5, x17 WORD $0xaa0f0225 // orr x5, x17, x15 - WORD $0xb500030e // cbnz x14, LBB0_305 $96(%rip) - WORD $0xb5008845 // cbnz x5, LBB0_551 $4360(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500030e // cbnz x14, LBB0_315 $96(%rip) + WORD $0xb5008925 // cbnz x5, LBB0_564 $4388(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_298 $-340(%rip) - WORD $0x14000229 // b LBB0_430 $2212(%rip) -LBB0_303: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_308 $-340(%rip) + WORD $0x14000229 // b LBB0_440 $2212(%rip) +LBB0_313: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_304: +LBB0_314: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -2115,9 +2165,9 @@ LBB0_304: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 - WORD $0x17ffffd0 // b LBB0_300 $-192(%rip) -LBB0_305: + WORD $0x5280007b // mov w27, #3 + WORD $0x17ffffd0 // b LBB0_310 $-192(%rip) +LBB0_315: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 @@ -2125,33 +2175,33 @@ LBB0_305: WORD $0xeb0e00bf // cmp x5, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54008f03 // b.lo LBB0_574 $4576(%rip) -LBB0_306: + WORD $0x54008fe3 // b.lo LBB0_587 $4604(%rip) +LBB0_316: WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffe7d3 // tbz x19, #63, LBB0_283 $-776(%rip) - WORD $0x14000413 // b LBB0_544 $4172(%rip) -LBB0_307: + WORD $0xb6f85833 // tbz x19, #63, LBB0_478 $2820(%rip) + WORD $0x1400041a // b LBB0_557 $4200(%rip) +LBB0_317: WORD $0x3940040e // ldrb w14, [x0, #1] WORD $0x5100b9ce // sub w14, w14, #46 WORD $0x7100dddf // cmp w14, #55 - WORD $0x54ff78e8 // b.hi LBB0_161 $-4324(%rip) + WORD $0x54ff75e8 // b.hi LBB0_166 $-4420(%rip) WORD $0x9ace218f // lsl x15, x12, x14 WORD $0x5280002e // mov w14, #1 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x54001420 // b.eq LBB0_355 $644(%rip) -LBB0_309: - WORD $0xf100433f // cmp x25, #16 - WORD $0x54005143 // b.lo LBB0_460 $2600(%rip) - WORD $0xd2800015 // mov x21, #0 + WORD $0x54001420 // b.eq LBB0_365 $644(%rip) +LBB0_319: + WORD $0xf100435f // cmp x26, #16 + WORD $0x54005143 // b.lo LBB0_470 $2600(%rip) + WORD $0xd2800016 // mov x22, #0 WORD $0xd2800005 // mov x5, #0 WORD $0x92800006 // mov x6, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x9280001a // mov x26, #-1 -LBB0_311: + WORD $0x92800017 // mov x23, #-1 + WORD $0x9280001b // mov x27, #-1 +LBB0_321: WORD $0x3ce5681a // ldr q26, [x0, x5] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 @@ -2184,210 +2234,210 @@ LBB0_311: WORD $0x32103dce // orr w14, w14, #0xffff0000 WORD $0x5ac001ce // rbit w14, w14 WORD $0x5ac011ce // clz w14, w14 - WORD $0x12800014 // mov w20, #-1 - WORD $0x1ace2294 // lsl w20, w20, w14 - WORD $0x0a3401f7 // bic w23, w15, w20 - WORD $0x0a340238 // bic w24, w17, w20 - WORD $0x0a3400f4 // bic w20, w7, w20 + WORD $0x12800015 // mov w21, #-1 + WORD $0x1ace22b5 // lsl w21, w21, w14 + WORD $0x0a3501f8 // bic w24, w15, w21 + WORD $0x0a350239 // bic w25, w17, w21 + WORD $0x0a3500f5 // bic w21, w7, w21 WORD $0x710041df // cmp w14, #16 - WORD $0x1a9701f7 // csel w23, w15, w23, eq - WORD $0x1a980238 // csel w24, w17, w24, eq - WORD $0x1a9400f4 // csel w20, w7, w20, eq - WORD $0x510006ef // sub w15, w23, #1 - WORD $0x6a1701ef // ands w15, w15, w23 - WORD $0x540035a1 // b.ne LBB0_422 $1716(%rip) + WORD $0x1a9801f8 // csel w24, w15, w24, eq + WORD $0x1a990239 // csel w25, w17, w25, eq + WORD $0x1a9500f5 // csel w21, w7, w21, eq WORD $0x5100070f // sub w15, w24, #1 WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x54003541 // b.ne LBB0_422 $1704(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x540034e1 // b.ne LBB0_422 $1692(%rip) - WORD $0x340000d7 // cbz w23, LBB0_317 $24(%rip) - WORD $0x5ac002ef // rbit w15, w23 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb100075f // cmn x26, #1 - WORD $0x540038a1 // b.ne LBB0_431 $1812(%rip) - WORD $0x8b1700ba // add x26, x5, x23 -LBB0_317: - WORD $0x340000d8 // cbz w24, LBB0_320 $24(%rip) + WORD $0x540035a1 // b.ne LBB0_432 $1716(%rip) + WORD $0x5100072f // sub w15, w25, #1 + WORD $0x6a1901ef // ands w15, w15, w25 + WORD $0x54003541 // b.ne LBB0_432 $1704(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x540034e1 // b.ne LBB0_432 $1692(%rip) + WORD $0x340000d8 // cbz w24, LBB0_327 $24(%rip) WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x540037e1 // b.ne LBB0_431 $1788(%rip) - WORD $0x8b1700b6 // add x22, x5, x23 -LBB0_320: - WORD $0x340000d4 // cbz w20, LBB0_323 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb100077f // cmn x27, #1 + WORD $0x540038a1 // b.ne LBB0_441 $1812(%rip) + WORD $0x8b1800bb // add x27, x5, x24 +LBB0_327: + WORD $0x340000d9 // cbz w25, LBB0_330 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x540037e1 // b.ne LBB0_441 $1788(%rip) + WORD $0x8b1800b7 // add x23, x5, x24 +LBB0_330: + WORD $0x340000d5 // cbz w21, LBB0_333 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb10004df // cmn x6, #1 - WORD $0x540047c1 // b.ne LBB0_459 $2296(%rip) - WORD $0x8b1400a6 // add x6, x5, x20 -LBB0_323: + WORD $0x540047c1 // b.ne LBB0_469 $2296(%rip) + WORD $0x8b1500a6 // add x6, x5, x21 +LBB0_333: WORD $0x710041df // cmp w14, #16 - WORD $0x54000601 // b.ne LBB0_341 $192(%rip) + WORD $0x54000601 // b.ne LBB0_351 $192(%rip) WORD $0x910040a5 // add x5, x5, #16 - WORD $0xd10042b5 // sub x21, x21, #16 - WORD $0x8b15032e // add x14, x25, x21 + WORD $0xd10042d6 // sub x22, x22, #16 + WORD $0x8b16034e // add x14, x26, x22 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fff6c8 // b.hi LBB0_311 $-296(%rip) - WORD $0x8b050015 // add x21, x0, x5 - WORD $0xeb05033f // cmp x25, x5 + WORD $0x54fff6c8 // b.hi LBB0_321 $-296(%rip) + WORD $0x8b050016 // add x22, x0, x5 + WORD $0xeb05035f // cmp x26, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000540 // b.eq LBB0_342 $168(%rip) -LBB0_326: - WORD $0x8b0e02a5 // add x5, x21, x14 - WORD $0xcb0802af // sub x15, x21, x8 - WORD $0xcb1e01f9 // sub x25, x15, lr - WORD $0xaa1503fe // mov lr, x21 - WORD $0x14000006 // b LBB0_329 $24(%rip) -LBB0_327: - WORD $0xd100073a // sub x26, x25, #1 -LBB0_328: - WORD $0x91000739 // add x25, x25, #1 - WORD $0xaa1e03f5 // mov x21, lr + WORD $0x54000540 // b.eq LBB0_352 $168(%rip) +LBB0_336: + WORD $0x8b0e02c5 // add x5, x22, x14 + WORD $0xcb0802cf // sub x15, x22, x8 + WORD $0xcb1401f4 // sub x20, x15, x20 + WORD $0xaa1603fa // mov x26, x22 + WORD $0x14000006 // b LBB0_339 $24(%rip) +LBB0_337: + WORD $0xd100069b // sub x27, x20, #1 +LBB0_338: + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1a03f6 // mov x22, x26 WORD $0xd10005ce // sub x14, x14, #1 - WORD $0xb4000c2e // cbz x14, LBB0_363 $388(%rip) -LBB0_329: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0xb4000c2e // cbz x14, LBB0_373 $388(%rip) +LBB0_339: + WORD $0x38401755 // ldrb w21, [x26], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 - WORD $0x54ffff23 // b.lo LBB0_328 $-28(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x5400014d // b.le LBB0_335 $40(%rip) - WORD $0x7101969f // cmp w20, #101 - WORD $0x54000200 // b.eq LBB0_339 $64(%rip) - WORD $0x7101169f // cmp w20, #69 - WORD $0x540001c0 // b.eq LBB0_339 $56(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54000281 // b.ne LBB0_342 $80(%rip) - WORD $0xb100075f // cmn x26, #1 - WORD $0x54fffdc0 // b.eq LBB0_327 $-72(%rip) - WORD $0x1400016d // b LBB0_421 $1460(%rip) -LBB0_335: - WORD $0x7100ae9f // cmp w20, #43 - WORD $0x54000060 // b.eq LBB0_337 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x540001a1 // b.ne LBB0_342 $52(%rip) -LBB0_337: + WORD $0x54ffff23 // b.lo LBB0_338 $-28(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x5400014d // b.le LBB0_345 $40(%rip) + WORD $0x710196bf // cmp w21, #101 + WORD $0x54000200 // b.eq LBB0_349 $64(%rip) + WORD $0x710116bf // cmp w21, #69 + WORD $0x540001c0 // b.eq LBB0_349 $56(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54000281 // b.ne LBB0_352 $80(%rip) + WORD $0xb100077f // cmn x27, #1 + WORD $0x54fffdc0 // b.eq LBB0_337 $-72(%rip) + WORD $0x1400016d // b LBB0_431 $1460(%rip) +LBB0_345: + WORD $0x7100aebf // cmp w21, #43 + WORD $0x54000060 // b.eq LBB0_347 $12(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x540001a1 // b.ne LBB0_352 $52(%rip) +LBB0_347: WORD $0xb10004df // cmn x6, #1 - WORD $0x54002ce1 // b.ne LBB0_421 $1436(%rip) - WORD $0xd1000726 // sub x6, x25, #1 - WORD $0x17ffffe6 // b LBB0_328 $-104(%rip) -LBB0_339: - WORD $0xb10006df // cmn x22, #1 - WORD $0x54002c61 // b.ne LBB0_421 $1420(%rip) - WORD $0xd1000736 // sub x22, x25, #1 - WORD $0x17ffffe2 // b LBB0_328 $-120(%rip) -LBB0_341: + WORD $0x54002ce1 // b.ne LBB0_431 $1436(%rip) + WORD $0xd1000686 // sub x6, x20, #1 + WORD $0x17ffffe6 // b LBB0_338 $-104(%rip) +LBB0_349: + WORD $0xb10006ff // cmn x23, #1 + WORD $0x54002c61 // b.ne LBB0_431 $1420(%rip) + WORD $0xd1000697 // sub x23, x20, #1 + WORD $0x17ffffe2 // b LBB0_338 $-120(%rip) +LBB0_351: WORD $0x8b2e400e // add x14, x0, w14, uxtw - WORD $0x8b0501d5 // add x21, x14, x5 + WORD $0x8b0501d6 // add x22, x14, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_342: +LBB0_352: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4007c3a // cbz x26, LBB0_571 $3972(%rip) -LBB0_343: - WORD $0xb4007c06 // cbz x6, LBB0_571 $3968(%rip) - WORD $0xb4007bf6 // cbz x22, LBB0_571 $3964(%rip) - WORD $0xcb0002ae // sub x14, x21, x0 + WORD $0xb4007d1b // cbz x27, LBB0_584 $4000(%rip) +LBB0_353: + WORD $0xb4007ce6 // cbz x6, LBB0_584 $3996(%rip) + WORD $0xb4007cd7 // cbz x23, LBB0_584 $3992(%rip) + WORD $0xcb0002ce // sub x14, x22, x0 WORD $0xd10005c0 // sub x0, x14, #1 - WORD $0xeb00035f // cmp x26, x0 - WORD $0x540002e0 // b.eq LBB0_354 $92(%rip) + WORD $0xeb00037f // cmp x27, x0 + WORD $0x540002e0 // b.eq LBB0_364 $92(%rip) WORD $0xeb0000df // cmp x6, x0 - WORD $0x540002a0 // b.eq LBB0_354 $84(%rip) - WORD $0xeb0002df // cmp x22, x0 - WORD $0x54000260 // b.eq LBB0_354 $76(%rip) + WORD $0x540002a0 // b.eq LBB0_364 $84(%rip) + WORD $0xeb0002ff // cmp x23, x0 + WORD $0x54000260 // b.eq LBB0_364 $76(%rip) WORD $0xf10004cf // subs x15, x6, #1 - WORD $0x5400006b // b.lt LBB0_350 $12(%rip) - WORD $0xeb0f02df // cmp x22, x15 - WORD $0x54007a81 // b.ne LBB0_572 $3920(%rip) -LBB0_350: - WORD $0xaa160340 // orr x0, x26, x22 - WORD $0xb7f80060 // tbnz x0, #63, LBB0_352 $12(%rip) - WORD $0xeb16035f // cmp x26, x22 - WORD $0x54007a4a // b.ge LBB0_573 $3912(%rip) -LBB0_352: + WORD $0x5400006b // b.lt LBB0_360 $12(%rip) + WORD $0xeb0f02ff // cmp x23, x15 + WORD $0x54007b61 // b.ne LBB0_585 $3948(%rip) +LBB0_360: + WORD $0xaa170360 // orr x0, x27, x23 + WORD $0xb7f80060 // tbnz x0, #63, LBB0_362 $12(%rip) + WORD $0xeb17037f // cmp x27, x23 + WORD $0x54007b2a // b.ge LBB0_586 $3940(%rip) +LBB0_362: WORD $0xd37ffc0f // lsr x15, x0, #63 WORD $0x520001ef // eor w15, w15, #0x1 - WORD $0xd10006d1 // sub x17, x22, #1 - WORD $0xeb11035f // cmp x26, x17 + WORD $0xd10006f1 // sub x17, x23, #1 + WORD $0xeb11037f // cmp x27, x17 WORD $0x1a9f17f1 // cset w17, eq WORD $0x6a1101ff // tst w15, w17 - WORD $0xda9601ce // csinv x14, x14, x22, eq -LBB0_353: + WORD $0xda9701ce // csinv x14, x14, x23, eq +LBB0_363: WORD $0x12800011 // mov w17, #-1 - WORD $0xb6f8008e // tbz x14, #63, LBB0_355 $16(%rip) - WORD $0x140003c5 // b LBB0_571 $3860(%rip) -LBB0_354: + WORD $0xb6f8008e // tbz x14, #63, LBB0_365 $16(%rip) + WORD $0x140003cc // b LBB0_584 $3888(%rip) +LBB0_364: WORD $0xcb0e03ee // neg x14, x14 - WORD $0xb7f8786e // tbnz x14, #63, LBB0_571 $3852(%rip) -LBB0_355: + WORD $0xb7f8794e // tbnz x14, #63, LBB0_584 $3880(%rip) +LBB0_365: WORD $0x8b1301d3 // add x19, x14, x19 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x5280007a // mov w26, #3 - WORD $0x54ffd203 // b.lo LBB0_284 $-1472(%rip) - WORD $0x140003c8 // b LBB0_578 $3872(%rip) -LBB0_356: - WORD $0xb5003d85 // cbnz x5, LBB0_461 $1968(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x54004263 // b.lo LBB0_480 $2124(%rip) + WORD $0x140003cf // b LBB0_591 $3900(%rip) +LBB0_366: + WORD $0xb5003d85 // cbnz x5, LBB0_471 $1968(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_464 $2020(%rip) - WORD $0x140003bf // b LBB0_577 $3836(%rip) -LBB0_358: + WORD $0x54003f2a // b.ge LBB0_474 $2020(%rip) + WORD $0x140003c6 // b LBB0_590 $3864(%rip) +LBB0_368: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb40 // b LBB0_180 $-4864(%rip) -LBB0_359: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb28 // b LBB0_185 $-4960(%rip) +LBB0_369: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003dea // b.ge LBB0_464 $1980(%rip) - WORD $0x140003b5 // b LBB0_577 $3796(%rip) -LBB0_360: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400001a // b LBB0_367 $104(%rip) -LBB0_361: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400003e // b LBB0_373 $248(%rip) -LBB0_362: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb34 // b LBB0_180 $-4912(%rip) -LBB0_363: - WORD $0xaa0503f5 // mov x21, x5 + WORD $0x54003dea // b.ge LBB0_474 $1980(%rip) + WORD $0x140003bc // b LBB0_590 $3824(%rip) +LBB0_370: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400001a // b LBB0_377 $104(%rip) +LBB0_371: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400003e // b LBB0_383 $248(%rip) +LBB0_372: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3541ce // sub x14, x14, w21, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb1c // b LBB0_185 $-5008(%rip) +LBB0_373: + WORD $0xaa0503f6 // mov x22, x5 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5fff7fa // cbnz x26, LBB0_343 $-260(%rip) - WORD $0x1400039e // b LBB0_571 $3704(%rip) -LBB0_364: + WORD $0xb5fff7fb // cbnz x27, LBB0_353 $-260(%rip) + WORD $0x140003a5 // b LBB0_584 $3732(%rip) +LBB0_374: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffb28 // b LBB0_180 $-4960(%rip) -LBB0_365: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffb10 // b LBB0_185 $-5056(%rip) +LBB0_375: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_471 $2020(%rip) - WORD $0x1400039d // b LBB0_577 $3700(%rip) -LBB0_366: + WORD $0x5400400a // b.ge LBB0_484 $2048(%rip) + WORD $0x140003a4 // b LBB0_590 $3728(%rip) +LBB0_376: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_367: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540043a3 // b.lo LBB0_478 $2164(%rip) +LBB0_377: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54004483 // b.lo LBB0_491 $2192(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2404,31 +2454,31 @@ LBB0_367: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003dd4 // cbnz w20, LBB0_475 $1976(%rip) - WORD $0xb5003e66 // cbnz x6, LBB0_476 $1996(%rip) - WORD $0xb4004025 // cbz x5, LBB0_477 $2052(%rip) -LBB0_371: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35003eb5 // cbnz w21, LBB0_488 $2004(%rip) + WORD $0xb5003f46 // cbnz x6, LBB0_489 $2024(%rip) + WORD $0xb4004105 // cbz x5, LBB0_490 $2080(%rip) +LBB0_381: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffc793 // tbz x19, #63, LBB0_283 $-1808(%rip) - WORD $0x14000311 // b LBB0_544 $3140(%rip) -LBB0_372: + WORD $0xb6f837f3 // tbz x19, #63, LBB0_478 $1788(%rip) + WORD $0x14000318 // b LBB0_557 $3168(%rip) +LBB0_382: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_373: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_380 $196(%rip) +LBB0_383: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_390 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2444,100 +2494,100 @@ LBB0_373: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35004034 // cbnz w20, LBB0_489 $2052(%rip) - WORD $0xb50040c6 // cbnz x6, LBB0_490 $2072(%rip) -LBB0_376: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35004115 // cbnz w21, LBB0_502 $2080(%rip) + WORD $0xb50041a6 // cbnz x6, LBB0_503 $2100(%rip) +LBB0_386: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_378 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_388 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_391 $140(%rip) - WORD $0x1400034f // b LBB0_579 $3388(%rip) -LBB0_378: - WORD $0x35006a35 // cbnz w21, LBB0_580 $3396(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_401 $140(%rip) + WORD $0x14000356 // b LBB0_592 $3416(%rip) +LBB0_388: + WORD $0x35006b16 // cbnz w22, LBB0_593 $3424(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_380: - WORD $0xb5004a46 // cbnz x6, LBB0_509 $2376(%rip) - WORD $0xb4005b96 // cbz x22, LBB0_545 $2928(%rip) -LBB0_382: - WORD $0xcb1e03ee // neg x14, lr -LBB0_383: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_390: + WORD $0xb5004b26 // cbnz x6, LBB0_522 $2404(%rip) + WORD $0xb4005c77 // cbz x23, LBB0_558 $2956(%rip) +LBB0_392: + WORD $0xcb1403ee // neg x14, x20 +LBB0_393: WORD $0xd2800005 // mov x5, #0 -LBB0_384: +LBB0_394: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_390 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_400 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_388 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_398 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54006909 // b.ls LBB0_581 $3360(%rip) + WORD $0x540069e9 // b.ls LBB0_594 $3388(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_384 $-36(%rip) - WORD $0x140002cf // b LBB0_545 $2876(%rip) -LBB0_388: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_394 $-36(%rip) + WORD $0x140002d6 // b LBB0_558 $2904(%rip) +LBB0_398: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54005980 // b.eq LBB0_545 $2864(%rip) + WORD $0x54005a60 // b.eq LBB0_558 $2892(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_383 $-96(%rip) - WORD $0x140002c1 // b LBB0_545 $2820(%rip) -LBB0_390: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_391: + WORD $0x54fffd01 // b.ne LBB0_393 $-96(%rip) + WORD $0x140002c8 // b LBB0_558 $2848(%rip) +LBB0_400: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_401: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffbcb3 // tbz x19, #63, LBB0_283 $-2156(%rip) - WORD $0x140002ba // b LBB0_544 $2792(%rip) -LBB0_392: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_396 $40(%rip) -LBB0_393: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002e // b LBB0_402 $184(%rip) -LBB0_394: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffa9f // b LBB0_180 $-5508(%rip) -LBB0_395: + WORD $0xb6f82d13 // tbz x19, #63, LBB0_478 $1440(%rip) + WORD $0x140002c1 // b LBB0_557 $2820(%rip) +LBB0_402: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_406 $40(%rip) +LBB0_403: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002e // b LBB0_412 $184(%rip) +LBB0_404: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3841ce // sub x14, x14, w24, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffa87 // b LBB0_185 $-5604(%rip) +LBB0_405: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_396: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54003cc3 // b.lo LBB0_494 $1944(%rip) +LBB0_406: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54003da3 // b.lo LBB0_507 $1972(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2554,31 +2604,31 @@ LBB0_396: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x350036f4 // cbnz w20, LBB0_491 $1756(%rip) - WORD $0xb5003786 // cbnz x6, LBB0_492 $1776(%rip) - WORD $0xb4003945 // cbz x5, LBB0_493 $1832(%rip) -LBB0_400: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350037d5 // cbnz w21, LBB0_504 $1784(%rip) + WORD $0xb5003866 // cbnz x6, LBB0_505 $1804(%rip) + WORD $0xb4003a25 // cbz x5, LBB0_506 $1860(%rip) +LBB0_410: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5e53 // tbz x19, #63, LBB0_194 $-5176(%rip) - WORD $0x1400028c // b LBB0_544 $2608(%rip) -LBB0_401: + WORD $0xb6ff5b53 // tbz x19, #63, LBB0_199 $-5272(%rip) + WORD $0x14000293 // b LBB0_557 $2636(%rip) +LBB0_411: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_402: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_409 $196(%rip) +LBB0_412: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_419 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2594,149 +2644,149 @@ LBB0_402: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003914 // cbnz w20, LBB0_504 $1824(%rip) - WORD $0xb50039a6 // cbnz x6, LBB0_506 $1844(%rip) -LBB0_405: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350039f5 // cbnz w21, LBB0_517 $1852(%rip) + WORD $0xb5003a86 // cbnz x6, LBB0_519 $1872(%rip) +LBB0_415: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_407 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_417 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000582 // b.hs LBB0_420 $176(%rip) - WORD $0x140002ca // b LBB0_579 $2856(%rip) -LBB0_407: - WORD $0x35005995 // cbnz w21, LBB0_580 $2864(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000582 // b.hs LBB0_430 $176(%rip) + WORD $0x140002d1 // b LBB0_592 $2884(%rip) +LBB0_417: + WORD $0x35005a76 // cbnz w22, LBB0_593 $2892(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_409: - WORD $0xb5003ca6 // cbnz x6, LBB0_516 $1940(%rip) - WORD $0x5280007a // mov w26, #3 + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_419: + WORD $0xb5003d86 // cbnz x6, LBB0_529 $1968(%rip) + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4004a96 // cbz x22, LBB0_545 $2384(%rip) -LBB0_411: - WORD $0xcb1e03ee // neg x14, lr -LBB0_412: + WORD $0xb4004b77 // cbz x23, LBB0_558 $2412(%rip) +LBB0_421: + WORD $0xcb1403ee // neg x14, x20 +LBB0_422: WORD $0xd2800005 // mov x5, #0 -LBB0_413: +LBB0_423: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540003a0 // b.eq LBB0_419 $116(%rip) + WORD $0x540003a0 // b.eq LBB0_429 $116(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x54000140 // b.eq LBB0_417 $40(%rip) + WORD $0x54000140 // b.eq LBB0_427 $40(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54005809 // b.ls LBB0_581 $2816(%rip) + WORD $0x540058e9 // b.ls LBB0_594 $2844(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54fffe81 // b.ne LBB0_413 $-48(%rip) - WORD $0x14000244 // b LBB0_545 $2320(%rip) -LBB0_417: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0x54fffe81 // b.ne LBB0_423 $-48(%rip) + WORD $0x1400024b // b LBB0_558 $2348(%rip) +LBB0_427: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x540047c0 // b.eq LBB0_545 $2296(%rip) + WORD $0x540048a0 // b.eq LBB0_558 $2324(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffc41 // b.ne LBB0_412 $-120(%rip) - WORD $0x14000233 // b LBB0_545 $2252(%rip) -LBB0_419: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_420: + WORD $0x54fffc41 // b.ne LBB0_422 $-120(%rip) + WORD $0x1400023a // b LBB0_558 $2280(%rip) +LBB0_429: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_430: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5253 // tbz x19, #63, LBB0_194 $-5560(%rip) - WORD $0x1400022c // b LBB0_544 $2224(%rip) -LBB0_421: - WORD $0xcb1903ee // neg x14, x25 - WORD $0xb6ffd86e // tbz x14, #63, LBB0_355 $-1268(%rip) - WORD $0x14000284 // b LBB0_571 $2576(%rip) -LBB0_422: + WORD $0xb6ff4f53 // tbz x19, #63, LBB0_199 $-5656(%rip) + WORD $0x14000233 // b LBB0_557 $2252(%rip) +LBB0_431: + WORD $0xcb1403ee // neg x14, x20 + WORD $0xb6ffd86e // tbz x14, #63, LBB0_365 $-1268(%rip) + WORD $0x1400028b // b LBB0_584 $2604(%rip) +LBB0_432: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 WORD $0xaa2503ef // mvn x15, x5 WORD $0xcb0e01ee // sub x14, x15, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffeb7 // b LBB0_353 $-1316(%rip) -LBB0_423: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffeb7 // b LBB0_363 $-1316(%rip) +LBB0_433: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x540050cb // b.lt LBB0_577 $2584(%rip) -LBB0_424: - WORD $0x5280007a // mov w26, #3 + WORD $0x540051ab // b.lt LBB0_590 $2612(%rip) +LBB0_434: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000007 // b LBB0_426 $28(%rip) -LBB0_425: + WORD $0x14000007 // b LBB0_436 $28(%rip) +LBB0_435: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54004fad // b.le LBB0_578 $2548(%rip) -LBB0_426: + WORD $0x5400508d // b.le LBB0_591 $2576(%rip) +LBB0_436: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_425 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_435 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54001780 // b.eq LBB0_467 $752(%rip) + WORD $0x54001780 // b.eq LBB0_477 $752(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_426 $-40(%rip) - WORD $0x14000271 // b LBB0_578 $2500(%rip) -LBB0_429: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_433 $40(%rip) -LBB0_430: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002d // b LBB0_439 $180(%rip) -LBB0_431: + WORD $0x54fffecc // b.gt LBB0_436 $-40(%rip) + WORD $0x14000278 // b LBB0_591 $2528(%rip) +LBB0_439: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_443 $40(%rip) +LBB0_440: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002d // b LBB0_449 $180(%rip) +LBB0_441: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw + WORD $0xcb3841ce // sub x14, x14, w24, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe96 // b LBB0_353 $-1448(%rip) -LBB0_432: + WORD $0x17fffe96 // b LBB0_363 $-1448(%rip) +LBB0_442: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_433: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540036c3 // b.lo LBB0_523 $1752(%rip) +LBB0_443: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x540037a3 // b.lo LBB0_536 $1780(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2753,30 +2803,30 @@ LBB0_433: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e260351 // fmov w17, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003154 // cbnz w20, LBB0_520 $1576(%rip) - WORD $0xb50031e6 // cbnz x6, LBB0_521 $1596(%rip) - WORD $0xb4003345 // cbz x5, LBB0_522 $1640(%rip) -LBB0_437: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x35003235 // cbnz w21, LBB0_533 $1604(%rip) + WORD $0xb50032c6 // cbnz x6, LBB0_534 $1624(%rip) + WORD $0xb4003425 // cbz x5, LBB0_535 $1668(%rip) +LBB0_447: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x140001b0 // b LBB0_534 $1728(%rip) -LBB0_438: + WORD $0x140001b7 // b LBB0_547 $1756(%rip) +LBB0_448: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_439: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_446 $196(%rip) +LBB0_449: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_456 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2792,434 +2842,444 @@ LBB0_439: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e260391 // fmov w17, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003314 // cbnz w20, LBB0_535 $1632(%rip) - WORD $0xb50033a6 // cbnz x6, LBB0_537 $1652(%rip) -LBB0_442: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x350033f5 // cbnz w21, LBB0_548 $1660(%rip) + WORD $0xb5003486 // cbnz x6, LBB0_550 $1680(%rip) +LBB0_452: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_444 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_454 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_457 $140(%rip) - WORD $0x1400021b // b LBB0_579 $2156(%rip) -LBB0_444: - WORD $0x350043b5 // cbnz w21, LBB0_580 $2164(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_467 $140(%rip) + WORD $0x14000222 // b LBB0_592 $2184(%rip) +LBB0_454: + WORD $0x35004496 // cbnz w22, LBB0_593 $2192(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_446: - WORD $0xb5003346 // cbnz x6, LBB0_540 $1640(%rip) - WORD $0xb4003516 // cbz x22, LBB0_545 $1696(%rip) -LBB0_448: - WORD $0xcb1e03ee // neg x14, lr -LBB0_449: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_456: + WORD $0xb5003426 // cbnz x6, LBB0_553 $1668(%rip) + WORD $0xb40035f7 // cbz x23, LBB0_558 $1724(%rip) +LBB0_458: + WORD $0xcb1403ee // neg x14, x20 +LBB0_459: WORD $0xd2800005 // mov x5, #0 -LBB0_450: +LBB0_460: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_456 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_466 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_454 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_464 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54004289 // b.ls LBB0_581 $2128(%rip) + WORD $0x54004369 // b.ls LBB0_594 $2156(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_450 $-36(%rip) - WORD $0x1400019b // b LBB0_545 $1644(%rip) -LBB0_454: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_460 $-36(%rip) + WORD $0x140001a2 // b LBB0_558 $1672(%rip) +LBB0_464: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54003300 // b.eq LBB0_545 $1632(%rip) + WORD $0x540033e0 // b.eq LBB0_558 $1660(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01f1 // add x17, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a800220 // csel x0, x17, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502d1 // sub x17, x22, x5 - WORD $0xd1000a36 // sub x22, x17, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502f1 // sub x17, x23, x5 + WORD $0xd1000a37 // sub x23, x17, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_449 $-96(%rip) - WORD $0x1400018d // b LBB0_545 $1588(%rip) -LBB0_456: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_457: + WORD $0x54fffd01 // b.ne LBB0_459 $-96(%rip) + WORD $0x14000194 // b LBB0_558 $1616(%rip) +LBB0_466: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_467: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x1400015a // b LBB0_534 $1384(%rip) -LBB0_458: + WORD $0x14000161 // b LBB0_547 $1412(%rip) +LBB0_468: WORD $0x92800000 // mov x0, #-1 WORD $0xaa0603e5 // mov x5, x6 - WORD $0xaa0e03f5 // mov x21, x14 + WORD $0xaa0e03f6 // mov x22, x14 WORD $0x92800013 // mov x19, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x17fff7b5 // b LBB0_85 $-8492(%rip) -LBB0_459: + WORD $0x92800017 // mov x23, #-1 + WORD $0x17fff785 // b LBB0_85 $-8684(%rip) +LBB0_469: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw + WORD $0xcb3541ce // sub x14, x14, w21, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe11 // b LBB0_353 $-1980(%rip) -LBB0_460: - WORD $0x9280001a // mov x26, #-1 - WORD $0xaa0003f5 // mov x21, x0 - WORD $0xaa1903ee // mov x14, x25 - WORD $0x92800016 // mov x22, #-1 + WORD $0x17fffe11 // b LBB0_363 $-1980(%rip) +LBB0_470: + WORD $0x9280001b // mov x27, #-1 + WORD $0xaa0003f6 // mov x22, x0 + WORD $0xaa1a03ee // mov x14, x26 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800006 // mov x6, #-1 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffdc5 // b LBB0_326 $-2284(%rip) -LBB0_461: + WORD $0x17fffdc5 // b LBB0_336 $-2284(%rip) +LBB0_471: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54003b00 // b.eq LBB0_577 $1888(%rip) + WORD $0x54003be0 // b.eq LBB0_590 $1916(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_464 $32(%rip) - WORD $0x140001ce // b LBB0_577 $1848(%rip) -LBB0_463: + WORD $0x5400010a // b.ge LBB0_474 $32(%rip) + WORD $0x140001d5 // b LBB0_590 $1876(%rip) +LBB0_473: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x5400392d // b.le LBB0_578 $1828(%rip) -LBB0_464: + WORD $0x54003a0d // b.le LBB0_591 $1856(%rip) +LBB0_474: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_463 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_473 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_467 $32(%rip) + WORD $0x54000100 // b.eq LBB0_477 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_464 $-40(%rip) - WORD $0x140001bd // b LBB0_578 $1780(%rip) -LBB0_467: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_474 $-40(%rip) + WORD $0x140001c4 // b LBB0_591 $1808(%rip) +LBB0_477: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x17fffc7d // b LBB0_283 $-3596(%rip) -LBB0_468: +LBB0_478: + WORD $0xf9000033 // str x19, [x1] +LBB0_479: + WORD $0xaa0803e0 // mov x0, x8 + WORD $0xeb07011f // cmp x8, x7 + WORD $0x540037c2 // b.hs LBB0_591 $1784(%rip) +LBB0_480: + WORD $0xf9400057 // ldr x23, [x2] + WORD $0xaa0b03e0 // mov x0, x11 + WORD $0xb5feb897 // cbnz x23, LBB0_1 $-10480(%rip) + WORD $0x140001ba // b LBB0_591 $1768(%rip) +LBB0_481: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x540036c0 // b.eq LBB0_577 $1752(%rip) + WORD $0x540036c0 // b.eq LBB0_590 $1752(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_471 $32(%rip) - WORD $0x140001ac // b LBB0_577 $1712(%rip) -LBB0_470: + WORD $0x5400010a // b.ge LBB0_484 $32(%rip) + WORD $0x140001ac // b LBB0_590 $1712(%rip) +LBB0_483: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x540034ed // b.le LBB0_578 $1692(%rip) -LBB0_471: + WORD $0x540034ed // b.le LBB0_591 $1692(%rip) +LBB0_484: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_470 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_483 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_474 $32(%rip) + WORD $0x54000100 // b.eq LBB0_487 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_471 $-40(%rip) - WORD $0x1400019b // b LBB0_578 $1644(%rip) -LBB0_474: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_484 $-40(%rip) + WORD $0x1400019b // b LBB0_591 $1644(%rip) +LBB0_487: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54ff3303 // b.lo LBB0_195 $-6560(%rip) - WORD $0x14000194 // b LBB0_578 $1616(%rip) -LBB0_475: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ff2f23 // b.lo LBB0_200 $-6684(%rip) + WORD $0x14000194 // b LBB0_591 $1616(%rip) +LBB0_488: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_476: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_489: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc025 // cbnz x5, LBB0_371 $-2044(%rip) -LBB0_477: + WORD $0xb5ffbf45 // cbnz x5, LBB0_381 $-2072(%rip) +LBB0_490: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_478: - WORD $0xb5001066 // cbnz x6, LBB0_507 $524(%rip) - WORD $0xb40003b6 // cbz x22, LBB0_487 $116(%rip) -LBB0_480: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_481: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_491: + WORD $0xb5001066 // cbnz x6, LBB0_520 $524(%rip) + WORD $0xb40003b7 // cbz x23, LBB0_500 $116(%rip) +LBB0_493: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_494: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000320 // b.eq LBB0_488 $100(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000320 // b.eq LBB0_501 $100(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x54000100 // b.eq LBB0_484 $32(%rip) + WORD $0x54000100 // b.eq LBB0_497 $32(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffe94 // cbnz x20, LBB0_481 $-48(%rip) - WORD $0x1400000c // b LBB0_486 $48(%rip) -LBB0_484: - WORD $0xb40020d4 // cbz x20, LBB0_545 $1048(%rip) + WORD $0xb5fffe95 // cbnz x21, LBB0_494 $-48(%rip) + WORD $0x1400000c // b LBB0_499 $48(%rip) +LBB0_497: + WORD $0xb40020d5 // cbz x21, LBB0_558 $1048(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffd14 // cbnz x20, LBB0_481 $-96(%rip) -LBB0_486: + WORD $0xb5fffd15 // cbnz x21, LBB0_494 $-96(%rip) +LBB0_499: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001f41 // b.ne LBB0_545 $1000(%rip) -LBB0_487: + WORD $0x54001f41 // b.ne LBB0_558 $1000(%rip) +LBB0_500: WORD $0xaa1303e6 // mov x6, x19 -LBB0_488: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff83f3 // tbz x19, #63, LBB0_283 $-3972(%rip) - WORD $0x140000f4 // b LBB0_544 $976(%rip) -LBB0_489: - WORD $0xdac0028f // rbit x15, x20 +LBB0_501: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6fff373 // tbz x19, #63, LBB0_478 $-404(%rip) + WORD $0x140000f4 // b LBB0_557 $976(%rip) +LBB0_502: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_490: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_503: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffded // b LBB0_376 $-2124(%rip) -LBB0_491: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x17fffde6 // b LBB0_386 $-2152(%rip) +LBB0_504: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_492: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_505: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc705 // cbnz x5, LBB0_400 $-1824(%rip) -LBB0_493: + WORD $0xb5ffc625 // cbnz x5, LBB0_410 $-1852(%rip) +LBB0_506: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_494: - WORD $0xb50008e6 // cbnz x6, LBB0_511 $284(%rip) - WORD $0xb40009d6 // cbz x22, LBB0_513 $312(%rip) -LBB0_496: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_497: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_507: + WORD $0xb50008e6 // cbnz x6, LBB0_524 $284(%rip) + WORD $0xb40009d7 // cbz x23, LBB0_526 $312(%rip) +LBB0_509: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_510: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x540002c0 // b.eq LBB0_503 $88(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x540002c0 // b.eq LBB0_516 $88(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_500 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_513 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_497 $-36(%rip) - WORD $0x14000009 // b LBB0_502 $36(%rip) -LBB0_500: - WORD $0xb4001774 // cbz x20, LBB0_545 $748(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_510 $-36(%rip) + WORD $0x14000009 // b LBB0_515 $36(%rip) +LBB0_513: + WORD $0xb4001775 // cbz x21, LBB0_558 $748(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_497 $-72(%rip) -LBB0_502: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_510 $-72(%rip) +LBB0_515: WORD $0x710088bf // cmp w5, #34 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000700 // b.eq LBB0_514 $224(%rip) - WORD $0x140000ae // b LBB0_545 $696(%rip) -LBB0_503: - WORD $0x5280007a // mov w26, #3 + WORD $0x54000700 // b.eq LBB0_527 $224(%rip) + WORD $0x140000ae // b LBB0_558 $696(%rip) +LBB0_516: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000034 // b LBB0_515 $208(%rip) -LBB0_504: + WORD $0x14000034 // b LBB0_528 $208(%rip) +LBB0_517: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_506 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_519 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0260 // sub x0, x19, lr + WORD $0xcb140260 // sub x0, x19, x20 WORD $0x8b0f0000 // add x0, x0, x15 -LBB0_506: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_519: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffe26 // b LBB0_405 $-1896(%rip) -LBB0_507: - WORD $0xb4001296 // cbz x22, LBB0_545 $592(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe1f // b LBB0_415 $-1924(%rip) +LBB0_520: + WORD $0xb4001297 // cbz x23, LBB0_558 $592(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffef16 // cbnz x22, LBB0_480 $-544(%rip) - WORD $0x17ffff93 // b LBB0_487 $-436(%rip) -LBB0_509: - WORD $0xb4001176 // cbz x22, LBB0_545 $556(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffef17 // cbnz x23, LBB0_493 $-544(%rip) + WORD $0x17ffff93 // b LBB0_500 $-436(%rip) +LBB0_522: + WORD $0xb4001177 // cbz x23, LBB0_558 $556(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffb536 // cbnz x22, LBB0_382 $-2396(%rip) - WORD $0x14000083 // b LBB0_545 $524(%rip) -LBB0_511: - WORD $0xb4001056 // cbz x22, LBB0_545 $520(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffb457 // cbnz x23, LBB0_392 $-2424(%rip) + WORD $0x14000083 // b LBB0_558 $524(%rip) +LBB0_524: + WORD $0xb4001057 // cbz x23, LBB0_558 $520(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff696 // cbnz x22, LBB0_496 $-304(%rip) -LBB0_513: - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff697 // cbnz x23, LBB0_509 $-304(%rip) +LBB0_526: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_514: +LBB0_527: WORD $0xaa1303e6 // mov x6, x19 -LBB0_515: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff1b13 // tbz x19, #63, LBB0_194 $-7328(%rip) - WORD $0x14000072 // b LBB0_544 $456(%rip) -LBB0_516: - WORD $0xb4000e76 // cbz x22, LBB0_545 $460(%rip) - WORD $0xaa3e03ee // mvn x14, lr +LBB0_528: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6ff1733 // tbz x19, #63, LBB0_199 $-7452(%rip) + WORD $0x14000072 // b LBB0_557 $456(%rip) +LBB0_529: + WORD $0xb4000e77 // cbz x23, LBB0_558 $460(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc2d6 // cbnz x22, LBB0_411 $-1960(%rip) - WORD $0x14000068 // b LBB0_545 $416(%rip) -LBB0_518: + WORD $0xb5ffc1f7 // cbnz x23, LBB0_421 $-1988(%rip) + WORD $0x14000068 // b LBB0_558 $416(%rip) +LBB0_531: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54001920 // b.eq LBB0_577 $804(%rip) + WORD $0x54001920 // b.eq LBB0_590 $804(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 WORD $0xf10005df // cmp x14, #1 - WORD $0x54ffc7ca // b.ge LBB0_424 $-1800(%rip) - WORD $0x140000c2 // b LBB0_577 $776(%rip) -LBB0_520: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ffc6ea // b.ge LBB0_434 $-1828(%rip) + WORD $0x140000c2 // b LBB0_590 $776(%rip) +LBB0_533: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f022f // add x15, x17, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_521: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_534: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3227,61 +3287,61 @@ LBB0_521: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0xb5ffcd05 // cbnz x5, LBB0_437 $-1632(%rip) -LBB0_522: + WORD $0xb5ffcc25 // cbnz x5, LBB0_447 $-1660(%rip) +LBB0_535: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_523: - WORD $0xb5000626 // cbnz x6, LBB0_538 $196(%rip) - WORD $0xb40002f6 // cbz x22, LBB0_532 $92(%rip) -LBB0_525: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_526: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_536: + WORD $0xb5000626 // cbnz x6, LBB0_551 $196(%rip) + WORD $0xb40002f7 // cbz x23, LBB0_545 $92(%rip) +LBB0_538: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_539: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000260 // b.eq LBB0_533 $76(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000260 // b.eq LBB0_546 $76(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_529 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_542 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_526 $-36(%rip) - WORD $0x14000009 // b LBB0_531 $36(%rip) -LBB0_529: - WORD $0xb4000774 // cbz x20, LBB0_545 $236(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_539 $-36(%rip) + WORD $0x14000009 // b LBB0_544 $36(%rip) +LBB0_542: + WORD $0xb4000775 // cbz x21, LBB0_558 $236(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_526 $-72(%rip) -LBB0_531: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_539 $-72(%rip) +LBB0_544: WORD $0x710088bf // cmp w5, #34 - WORD $0x54000641 // b.ne LBB0_545 $200(%rip) -LBB0_532: + WORD $0x54000641 // b.ne LBB0_558 $200(%rip) +LBB0_545: WORD $0xaa1303e6 // mov x6, x19 -LBB0_533: - WORD $0xcb1e00d3 // sub x19, x6, lr -LBB0_534: - WORD $0x5280007a // mov w26, #3 +LBB0_546: + WORD $0xcb1400d3 // sub x19, x6, x20 +LBB0_547: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb6ff6a93 // tbz x19, #63, LBB0_283 $-4784(%rip) - WORD $0x14000029 // b LBB0_544 $164(%rip) -LBB0_535: + WORD $0xb6ffda13 // tbz x19, #63, LBB0_478 $-1216(%rip) + WORD $0x14000029 // b LBB0_557 $164(%rip) +LBB0_548: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_537 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_550 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f0220 // add x0, x17, x15 -LBB0_537: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_550: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3289,160 +3349,160 @@ LBB0_537: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x17fffe59 // b LBB0_442 $-1692(%rip) -LBB0_538: - WORD $0xb4000316 // cbz x22, LBB0_545 $96(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe52 // b LBB0_452 $-1720(%rip) +LBB0_551: + WORD $0xb4000317 // cbz x23, LBB0_558 $96(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff956 // cbnz x22, LBB0_525 $-216(%rip) - WORD $0x17ffffdf // b LBB0_532 $-132(%rip) -LBB0_540: - WORD $0xb40001f6 // cbz x22, LBB0_545 $60(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff957 // cbnz x23, LBB0_538 $-216(%rip) + WORD $0x17ffffdf // b LBB0_545 $-132(%rip) +LBB0_553: + WORD $0xb40001f7 // cbz x23, LBB0_558 $60(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffcc36 // cbnz x22, LBB0_448 $-1660(%rip) - WORD $0x14000007 // b LBB0_545 $28(%rip) -LBB0_542: + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffcb57 // cbnz x23, LBB0_458 $-1688(%rip) + WORD $0x14000007 // b LBB0_558 $28(%rip) +LBB0_555: WORD $0x92800020 // mov x0, #-2 - WORD $0x1400006a // b LBB0_578 $424(%rip) -LBB0_543: + WORD $0x1400006a // b LBB0_591 $424(%rip) +LBB0_556: WORD $0x928000c0 // mov x0, #-7 - WORD $0x14000068 // b LBB0_578 $416(%rip) -LBB0_544: + WORD $0x14000068 // b LBB0_591 $416(%rip) +LBB0_557: WORD $0xb100067f // cmn x19, #1 - WORD $0x54000ac1 // b.ne LBB0_569 $344(%rip) -LBB0_545: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x54000ac1 // b.ne LBB0_582 $344(%rip) +LBB0_558: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0x92800013 // mov x19, #-1 - WORD $0x14000053 // b LBB0_569 $332(%rip) -LBB0_546: + WORD $0x14000053 // b LBB0_582 $332(%rip) +LBB0_559: WORD $0x9280000e // mov x14, #-1 -LBB0_547: - WORD $0xaa2e03f6 // mvn x22, x14 -LBB0_548: - WORD $0x8b0802c8 // add x8, x22, x8 -LBB0_549: +LBB0_560: + WORD $0xaa2e03f7 // mvn x23, x14 +LBB0_561: + WORD $0x8b0802e8 // add x8, x23, x8 +LBB0_562: WORD $0xf9000028 // str x8, [x1] WORD $0x92800020 // mov x0, #-2 - WORD $0x1400005d // b LBB0_578 $372(%rip) -LBB0_550: + WORD $0x1400005d // b LBB0_591 $372(%rip) +LBB0_563: WORD $0xf900002e // str x14, [x1] - WORD $0x1400005a // b LBB0_577 $360(%rip) -LBB0_551: + WORD $0x1400005a // b LBB0_590 $360(%rip) +LBB0_564: WORD $0xb100041f // cmn x0, #1 - WORD $0x540008a0 // b.eq LBB0_568 $276(%rip) + WORD $0x540008a0 // b.eq LBB0_581 $276(%rip) WORD $0x92800033 // mov x19, #-2 - WORD $0x14000047 // b LBB0_569 $284(%rip) -LBB0_553: - WORD $0xaa0003f6 // mov x22, x0 - WORD $0x17fffff5 // b LBB0_548 $-44(%rip) -LBB0_554: + WORD $0x14000047 // b LBB0_582 $284(%rip) +LBB0_566: + WORD $0xaa0003f7 // mov x23, x0 + WORD $0x17fffff5 // b LBB0_561 $-44(%rip) +LBB0_567: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101d13f // cmp w9, #116 - WORD $0x54000a21 // b.ne LBB0_578 $324(%rip) + WORD $0x54000a21 // b.ne LBB0_591 $324(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101c93f // cmp w9, #114 - WORD $0x54000981 // b.ne LBB0_578 $304(%rip) + WORD $0x54000981 // b.ne LBB0_591 $304(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x540008e1 // b.ne LBB0_578 $284(%rip) + WORD $0x540008e1 // b.ne LBB0_591 $284(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000841 // b.ne LBB0_578 $264(%rip) - WORD $0x14000014 // b LBB0_562 $80(%rip) -LBB0_558: + WORD $0x54000841 // b.ne LBB0_591 $264(%rip) + WORD $0x14000014 // b LBB0_575 $80(%rip) +LBB0_571: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101b93f // cmp w9, #110 - WORD $0x540007a1 // b.ne LBB0_578 $244(%rip) + WORD $0x540007a1 // b.ne LBB0_591 $244(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x54000701 // b.ne LBB0_578 $224(%rip) + WORD $0x54000701 // b.ne LBB0_591 $224(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000661 // b.ne LBB0_578 $204(%rip) + WORD $0x54000661 // b.ne LBB0_591 $204(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x540005c1 // b.ne LBB0_578 $184(%rip) -LBB0_562: + WORD $0x540005c1 // b.ne LBB0_591 $184(%rip) +LBB0_575: WORD $0x91001108 // add x8, x8, #4 WORD $0xf9000028 // str x8, [x1] - WORD $0x1400002b // b LBB0_578 $172(%rip) -LBB0_563: + WORD $0x1400002b // b LBB0_591 $172(%rip) +LBB0_576: WORD $0xf9000033 // str x19, [x1] - WORD $0x38736bc9 // ldrb w9, [lr, x19] + WORD $0x38736a89 // ldrb w9, [x20, x19] WORD $0x7101853f // cmp w9, #97 - WORD $0x540004e1 // b.ne LBB0_578 $156(%rip) + WORD $0x540004e1 // b.ne LBB0_591 $156(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000441 // b.ne LBB0_578 $136(%rip) + WORD $0x54000441 // b.ne LBB0_591 $136(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101cd3f // cmp w9, #115 - WORD $0x540003a1 // b.ne LBB0_578 $116(%rip) + WORD $0x540003a1 // b.ne LBB0_591 $116(%rip) WORD $0x91001109 // add x9, x8, #4 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000301 // b.ne LBB0_578 $96(%rip) + WORD $0x54000301 // b.ne LBB0_591 $96(%rip) WORD $0x91001508 // add x8, x8, #5 WORD $0xf9000028 // str x8, [x1] - WORD $0x14000015 // b LBB0_578 $84(%rip) -LBB0_568: + WORD $0x14000015 // b LBB0_591 $84(%rip) +LBB0_581: WORD $0xdac000a8 // rbit x8, x5 WORD $0xdac01108 // clz x8, x8 WORD $0x8b130100 // add x0, x8, x19 WORD $0x92800033 // mov x19, #-2 -LBB0_569: +LBB0_582: WORD $0xf9000020 // str x0, [x1] WORD $0xaa1303e0 // mov x0, x19 - WORD $0x1400000e // b LBB0_578 $56(%rip) -LBB0_570: + WORD $0x1400000e // b LBB0_591 $56(%rip) +LBB0_583: WORD $0x9280000e // mov x14, #-1 -LBB0_571: +LBB0_584: WORD $0xaa2e03e6 // mvn x6, x14 -LBB0_572: +LBB0_585: WORD $0x8b060268 // add x8, x19, x6 - WORD $0x17ffffab // b LBB0_549 $-340(%rip) -LBB0_573: - WORD $0xaa1a03e6 // mov x6, x26 - WORD $0x8b1a0268 // add x8, x19, x26 - WORD $0x17ffffa8 // b LBB0_549 $-352(%rip) -LBB0_574: + WORD $0x17ffffab // b LBB0_562 $-340(%rip) +LBB0_586: + WORD $0xaa1b03e6 // mov x6, x27 + WORD $0x8b1b0268 // add x8, x19, x27 + WORD $0x17ffffa8 // b LBB0_562 $-352(%rip) +LBB0_587: WORD $0x8b1300a0 // add x0, x5, x19 WORD $0x92800033 // mov x19, #-2 - WORD $0x17fffff4 // b LBB0_569 $-48(%rip) -LBB0_575: - WORD $0xf9400768 // ldr x8, [x27, #8] -LBB0_576: + WORD $0x17fffff4 // b LBB0_582 $-48(%rip) +LBB0_588: + WORD $0xf94007c8 // ldr x8, [lr, #8] +LBB0_589: WORD $0xf9000028 // str x8, [x1] -LBB0_577: +LBB0_590: WORD $0x92800000 // mov x0, #-1 -LBB0_578: +LBB0_591: WORD $0xa94dfbfd // ldp fp, lr, [sp, #216] WORD $0xa94ccff4 // ldp x20, x19, [sp, #200] WORD $0xa94bd7f6 // ldp x22, x21, [sp, #184] @@ -3452,20 +3512,20 @@ LBB0_578: WORD $0x6d47a3e9 // ldp d9, d8, [sp, #120] WORD $0x9103c3ff // add sp, sp, #240 WORD $0xd65f03c0 // ret -LBB0_579: - WORD $0x8b1401c0 // add x0, x14, x20 +LBB0_592: + WORD $0x8b1501c0 // add x0, x14, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe5 // b LBB0_569 $-108(%rip) -LBB0_580: - WORD $0xcb1e0268 // sub x8, x19, lr - WORD $0x8b140100 // add x0, x8, x20 + WORD $0x17ffffe5 // b LBB0_582 $-108(%rip) +LBB0_593: + WORD $0xcb140268 // sub x8, x19, x20 + WORD $0x8b150100 // add x0, x8, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe1 // b LBB0_569 $-124(%rip) -LBB0_581: - WORD $0xcb1e0268 // sub x8, x19, lr + WORD $0x17ffffe1 // b LBB0_582 $-124(%rip) +LBB0_594: + WORD $0xcb140268 // sub x8, x19, x20 WORD $0x8b050100 // add x0, x8, x5 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffdd // b LBB0_569 $-140(%rip) + WORD $0x17ffffdd // b LBB0_582 $-140(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_arm64.s index a773aa360..f8cbc0dc5 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_arm64.s @@ -157,7 +157,7 @@ LBB0_15: LBB0_19: WORD $0x910013db // add x27, lr, #4 WORD $0xeb08037f // cmp x27, x8 - WORD $0x54011942 // b.hs LBB0_474 $9000(%rip) + WORD $0x54011bc2 // b.hs LBB0_474 $9080(%rip) LBB0_20: WORD $0x387b6931 // ldrb w17, [x9, x27] WORD $0x7100823f // cmp w17, #32 @@ -191,13 +191,13 @@ LBB0_23: WORD $0x71000d1f // cmp w8, #3 WORD $0x540019c1 // b.ne LBB0_59 $824(%rip) WORD $0x71008abf // cmp w21, #34 - WORD $0x54014e41 // b.ne LBB0_543 $10696(%rip) + WORD $0x54015201 // b.ne LBB0_546 $10816(%rip) WORD $0x52800088 // mov w8, #4 WORD $0xf8277948 // str x8, [x10, x7, lsl #3] WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1e0114 // subs x20, x8, lr WORD $0x372830e3 // tbnz w3, #5, LBB0_110 $1564(%rip) - WORD $0x54014280 // b.eq LBB0_515 $10320(%rip) + WORD $0x54014640 // b.eq LBB0_518 $10440(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54008cc3 // b.lo LBB0_249 $4504(%rip) WORD $0xd2800005 // mov x5, #0 @@ -289,7 +289,7 @@ LBB0_39: WORD $0x8b1e0231 // add x17, x17, lr WORD $0x9100063e // add lr, x17, #1 WORD $0xb6f87f9e // tbz lr, #63, LBB0_243 $4080(%rip) - WORD $0x140009bb // b LBB0_514 $9964(%rip) + WORD $0x140009d9 // b LBB0_517 $10084(%rip) LBB0_40: WORD $0x7100111f // cmp w8, #4 WORD $0x54000d20 // b.eq LBB0_57 $420(%rip) @@ -304,7 +304,7 @@ LBB0_40: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1e0114 // subs x20, x8, lr WORD $0x37283743 // tbnz w3, #5, LBB0_137 $1768(%rip) - WORD $0x540135e0 // b.eq LBB0_515 $9916(%rip) + WORD $0x540139a0 // b.eq LBB0_518 $10036(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54009143 // b.lo LBB0_280 $4648(%rip) WORD $0xd2800005 // mov x5, #0 @@ -396,16 +396,16 @@ LBB0_54: WORD $0x8b1e0231 // add x17, x17, lr WORD $0x9100063e // add lr, x17, #1 WORD $0xb6f83b1e // tbz lr, #63, LBB0_149 $1888(%rip) - WORD $0x14000956 // b LBB0_514 $9560(%rip) + WORD $0x14000974 // b LBB0_517 $9680(%rip) LBB0_55: WORD $0x7100b2bf // cmp w21, #44 WORD $0x54001760 // b.eq LBB0_106 $748(%rip) WORD $0x710176bf // cmp w21, #93 WORD $0x54001400 // b.eq LBB0_98 $640(%rip) - WORD $0x140009ab // b LBB0_543 $9900(%rip) + WORD $0x140009c9 // b LBB0_546 $10020(%rip) LBB0_57: WORD $0x7100eabf // cmp w21, #58 - WORD $0x54013521 // b.ne LBB0_543 $9892(%rip) + WORD $0x540138e1 // b.ne LBB0_546 $10012(%rip) WORD $0xf827795f // str xzr, [x10, x7, lsl #3] WORD $0x14000392 // b LBB0_244 $3656(%rip) LBB0_59: @@ -419,7 +419,7 @@ LBB0_60: WORD $0x54003a82 // b.hs LBB0_152 $1872(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1b0116 // subs x22, x8, x27 - WORD $0x54012940 // b.eq LBB0_517 $9512(%rip) + WORD $0x54012d00 // b.eq LBB0_520 $9632(%rip) WORD $0x394000a8 // ldrb w8, [x5] WORD $0x7100c11f // cmp w8, #48 WORD $0x54000181 // b.ne LBB0_66 $48(%rip) @@ -574,7 +574,7 @@ LBB0_95: LBB0_96: WORD $0x7101f6bf // cmp w21, #125 WORD $0x54000080 // b.eq LBB0_98 $16(%rip) - WORD $0x1400090f // b LBB0_543 $9276(%rip) + WORD $0x1400092d // b LBB0_546 $9396(%rip) LBB0_97: WORD $0x710176bf // cmp w21, #93 WORD $0x540000c1 // b.ne LBB0_99 $24(%rip) @@ -583,7 +583,7 @@ LBB0_98: WORD $0xaa0703f4 // mov x20, x7 WORD $0xaa0e03e8 // mov x8, x14 WORD $0xb5ffc907 // cbnz x7, LBB0_2 $-1760(%rip) - WORD $0x1400061c // b LBB0_438 $6256(%rip) + WORD $0x140008c1 // b LBB0_515 $8964(%rip) LBB0_99: WORD $0xf827794f // str x15, [x10, x7, lsl #3] WORD $0x92800028 // mov x8, #-2 @@ -597,10 +597,10 @@ LBB0_100: WORD $0x7101d2bf // cmp w21, #116 WORD $0x54002a00 // b.eq LBB0_163 $1344(%rip) WORD $0x7101eebf // cmp w21, #123 - WORD $0x5400c201 // b.ne LBB0_438 $6208(%rip) + WORD $0x540116a1 // b.ne LBB0_515 $8916(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x540113ac // b.gt LBB0_513 $8820(%rip) + WORD $0x5401176c // b.gt LBB0_516 $8940(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000051 // str x17, [x2] WORD $0x528000d1 // mov w17, #6 @@ -608,21 +608,21 @@ LBB0_100: WORD $0x140002df // b LBB0_244 $2940(%rip) LBB0_106: WORD $0xf13ffe9f // cmp x20, #4095 - WORD $0x540112cc // b.gt LBB0_513 $8792(%rip) + WORD $0x5401168c // b.gt LBB0_516 $8912(%rip) WORD $0x91000688 // add x8, x20, #1 WORD $0xf9000048 // str x8, [x2] WORD $0xf834795f // str xzr, [x10, x20, lsl #3] WORD $0x140002d9 // b LBB0_244 $2916(%rip) LBB0_108: WORD $0xf13ffe9f // cmp x20, #4095 - WORD $0x5401120c // b.gt LBB0_513 $8768(%rip) + WORD $0x540115cc // b.gt LBB0_516 $8888(%rip) WORD $0x91000688 // add x8, x20, #1 WORD $0xf9000048 // str x8, [x2] WORD $0x52800068 // mov w8, #3 WORD $0xf8347948 // str x8, [x10, x20, lsl #3] WORD $0x140002d2 // b LBB0_244 $2888(%rip) LBB0_110: - WORD $0x540111c0 // b.eq LBB0_515 $8760(%rip) + WORD $0x54011580 // b.eq LBB0_518 $8880(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54006063 // b.lo LBB0_255 $3084(%rip) WORD $0xd2800005 // mov x5, #0 @@ -710,7 +710,7 @@ LBB0_115: WORD $0xaa0702a7 // orr x7, x21, x7 WORD $0xaa0400e7 // orr x7, x7, x4 WORD $0xb50002f1 // cbnz x17, LBB0_120 $92(%rip) - WORD $0xb5010867 // cbnz x7, LBB0_521 $8460(%rip) + WORD $0xb5010c27 // cbnz x7, LBB0_524 $8580(%rip) WORD $0xd1010294 // sub x20, x20, #64 WORD $0x910103de // add lr, lr, #64 WORD $0xf100fe9f // cmp x20, #63 @@ -740,20 +740,20 @@ LBB0_120: WORD $0xdac000e4 // rbit x4, x7 WORD $0xdac01085 // clz x5, x4 WORD $0xeb1100bf // cmp x5, x17 - WORD $0x54010fc3 // b.lo LBB0_546 $8696(%rip) + WORD $0x54011383 // b.lo LBB0_549 $8816(%rip) WORD $0x8b1e0231 // add x17, x17, lr WORD $0x9100063e // add lr, x17, #1 WORD $0xb6f84b1e // tbz lr, #63, LBB0_243 $2400(%rip) - WORD $0x14000817 // b LBB0_514 $8284(%rip) + WORD $0x14000835 // b LBB0_517 $8404(%rip) LBB0_122: WORD $0x8b3140b1 // add x17, x5, w17, uxtw WORD $0x8b1e0237 // add x23, x17, lr LBB0_123: WORD $0x92800016 // mov x22, #-1 - WORD $0xb4010368 // cbz x8, LBB0_518 $8300(%rip) + WORD $0xb4010728 // cbz x8, LBB0_521 $8420(%rip) LBB0_124: - WORD $0xb4010355 // cbz x21, LBB0_518 $8296(%rip) - WORD $0xb4010334 // cbz x20, LBB0_518 $8292(%rip) + WORD $0xb4010715 // cbz x21, LBB0_521 $8416(%rip) + WORD $0xb40106f4 // cbz x20, LBB0_521 $8412(%rip) WORD $0xcb0502f1 // sub x17, x23, x5 WORD $0xd1000625 // sub x5, x17, #1 WORD $0xeb05011f // cmp x8, x5 @@ -765,12 +765,12 @@ LBB0_124: WORD $0xf10006a4 // subs x4, x21, #1 WORD $0x5400006b // b.lt LBB0_131 $12(%rip) WORD $0xeb04029f // cmp x20, x4 - WORD $0x540101c1 // b.ne LBB0_519 $8248(%rip) + WORD $0x54010581 // b.ne LBB0_522 $8368(%rip) LBB0_131: WORD $0xaa140105 // orr x5, x8, x20 WORD $0xb7f80065 // tbnz x5, #63, LBB0_133 $12(%rip) WORD $0xeb14011f // cmp x8, x20 - WORD $0x540102ea // b.ge LBB0_525 $8284(%rip) + WORD $0x540106aa // b.ge LBB0_528 $8404(%rip) LBB0_133: WORD $0xd37ffca4 // lsr x4, x5, #63 WORD $0x52000084 // eor w4, w4, #0x1 @@ -783,11 +783,11 @@ LBB0_133: LBB0_134: WORD $0xcb1103f6 // neg x22, x17 LBB0_135: - WORD $0xb7f8fff6 // tbnz x22, #63, LBB0_518 $8188(%rip) + WORD $0xb7f903b6 // tbnz x22, #63, LBB0_521 $8308(%rip) WORD $0x8b16037e // add lr, x27, x22 WORD $0x14000235 // b LBB0_243 $2260(%rip) LBB0_137: - WORD $0x5400fec0 // b.eq LBB0_515 $8152(%rip) + WORD $0x54010280 // b.eq LBB0_518 $8272(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54005e83 // b.lo LBB0_286 $3024(%rip) WORD $0xd2800005 // mov x5, #0 @@ -875,7 +875,7 @@ LBB0_142: WORD $0xaa0702a7 // orr x7, x21, x7 WORD $0xaa0400e7 // orr x7, x7, x4 WORD $0xb50002f1 // cbnz x17, LBB0_147 $92(%rip) - WORD $0xb500f567 // cbnz x7, LBB0_521 $7852(%rip) + WORD $0xb500f927 // cbnz x7, LBB0_524 $7972(%rip) WORD $0xd1010294 // sub x20, x20, #64 WORD $0x910103de // add lr, lr, #64 WORD $0xf100fe9f // cmp x20, #63 @@ -905,19 +905,19 @@ LBB0_147: WORD $0xdac000e4 // rbit x4, x7 WORD $0xdac01085 // clz x5, x4 WORD $0xeb1100bf // cmp x5, x17 - WORD $0x5400fcc3 // b.lo LBB0_546 $8088(%rip) + WORD $0x54010083 // b.lo LBB0_549 $8208(%rip) WORD $0x8b1e0231 // add x17, x17, lr WORD $0x9100063e // add lr, x17, #1 - WORD $0xb7f8f01e // tbnz lr, #63, LBB0_514 $7680(%rip) + WORD $0xb7f8f3de // tbnz lr, #63, LBB0_517 $7800(%rip) LBB0_149: WORD $0xf900003e // str lr, [x1] WORD $0xaa1b03e8 // mov x8, x27 WORD $0xb27ff7f1 // mov x17, #9223372036854775806 WORD $0xeb11037f // cmp x27, x17 - WORD $0x54009d28 // b.hi LBB0_438 $5028(%rip) + WORD $0x5400f1c8 // b.hi LBB0_515 $7736(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400eecc // b.gt LBB0_513 $7640(%rip) + WORD $0x5400f28c // b.gt LBB0_516 $7760(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000051 // str x17, [x2] WORD $0x52800091 // mov w17, #4 @@ -927,10 +927,10 @@ LBB0_152: WORD $0x71008abf // cmp w21, #34 WORD $0x54000740 // b.eq LBB0_170 $232(%rip) WORD $0x7100b6bf // cmp w21, #45 - WORD $0x54009ba1 // b.ne LBB0_438 $4980(%rip) + WORD $0x5400f041 // b.ne LBB0_515 $7688(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1e0111 // subs x17, x8, lr - WORD $0x5400f080 // b.eq LBB0_526 $7696(%rip) + WORD $0x5400f440 // b.eq LBB0_529 $7816(%rip) WORD $0x8b1e0128 // add x8, x9, lr WORD $0x39400104 // ldrb w4, [x8] WORD $0x7100c09f // cmp w4, #48 @@ -944,46 +944,46 @@ LBB0_158: WORD $0x71016ebf // cmp w21, #91 WORD $0x54000460 // b.eq LBB0_168 $140(%rip) WORD $0x71019abf // cmp w21, #102 - WORD $0x540099c1 // b.ne LBB0_438 $4920(%rip) + WORD $0x5400ee61 // b.ne LBB0_515 $7628(%rip) WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1001111 // sub x17, x8, #4 WORD $0xeb11037f // cmp x27, x17 - WORD $0x5400f842 // b.hs LBB0_548 $7944(%rip) + WORD $0x5400fc02 // b.hs LBB0_551 $8064(%rip) WORD $0xb87e6928 // ldr w8, [x9, lr] WORD $0x528d8c31 // mov w17, #27745 WORD $0x72acae71 // movk w17, #25971, lsl #16 WORD $0x6b11011f // cmp w8, w17 - WORD $0x5400ee61 // b.ne LBB0_529 $7628(%rip) + WORD $0x5400f221 // b.ne LBB0_532 $7748(%rip) WORD $0x9100177e // add lr, x27, #5 WORD $0x14000195 // b LBB0_243 $1620(%rip) LBB0_163: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1000d11 // sub x17, x8, #3 WORD $0xeb11037f // cmp x27, x17 - WORD $0x5400f6e2 // b.hs LBB0_548 $7900(%rip) + WORD $0x5400faa2 // b.hs LBB0_551 $8020(%rip) WORD $0xb87b6928 // ldr w8, [x9, x27] WORD $0x528e4e91 // mov w17, #29300 WORD $0x72acaeb1 // movk w17, #25973, lsl #16 WORD $0x6b11011f // cmp w8, w17 WORD $0x54000160 // b.eq LBB0_167 $44(%rip) - WORD $0x1400077c // b LBB0_534 $7664(%rip) + WORD $0x1400079a // b LBB0_537 $7784(%rip) LBB0_165: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xd1000d11 // sub x17, x8, #3 WORD $0xeb11037f // cmp x27, x17 - WORD $0x5400f5a2 // b.hs LBB0_548 $7860(%rip) + WORD $0x5400f962 // b.hs LBB0_551 $7980(%rip) WORD $0xb87b6928 // ldr w8, [x9, x27] WORD $0x528eadd1 // mov w17, #30062 WORD $0x72ad8d91 // movk w17, #27756, lsl #16 WORD $0x6b11011f // cmp w8, w17 - WORD $0x5400f0e1 // b.ne LBB0_538 $7708(%rip) + WORD $0x5400f4a1 // b.ne LBB0_541 $7828(%rip) LBB0_167: WORD $0x9100137e // add lr, x27, #4 WORD $0x14000180 // b LBB0_243 $1536(%rip) LBB0_168: WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400e76c // b.gt LBB0_513 $7404(%rip) + WORD $0x5400eb2c // b.gt LBB0_516 $7524(%rip) WORD $0x91000511 // add x17, x8, #1 WORD $0xf9000051 // str x17, [x2] WORD $0x528000b1 // mov w17, #5 @@ -993,7 +993,7 @@ LBB0_170: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0xeb1e0114 // subs x20, x8, lr WORD $0x37280b43 // tbnz w3, #5, LBB0_182 $360(%rip) - WORD $0x5400e6c0 // b.eq LBB0_515 $7384(%rip) + WORD $0x5400ea80 // b.eq LBB0_518 $7504(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54005363 // b.lo LBB0_311 $2668(%rip) WORD $0xd2800005 // mov x5, #0 @@ -1087,9 +1087,9 @@ LBB0_181: WORD $0xaa1803f7 // mov x23, x24 WORD $0x92800016 // mov x22, #-1 WORD $0xb5ffd968 // cbnz x8, LBB0_124 $-1236(%rip) - WORD $0x140006e4 // b LBB0_518 $7056(%rip) + WORD $0x14000702 // b LBB0_521 $7176(%rip) LBB0_182: - WORD $0x5400dba0 // b.eq LBB0_515 $7028(%rip) + WORD $0x5400df60 // b.eq LBB0_518 $7148(%rip) WORD $0xf101029f // cmp x20, #64 WORD $0x54004ca3 // b.lo LBB0_317 $2452(%rip) WORD $0xd2800005 // mov x5, #0 @@ -1177,7 +1177,7 @@ LBB0_187: WORD $0xaa0600e6 // orr x6, x7, x6 WORD $0xaa0400c7 // orr x7, x6, x4 WORD $0xb50002f1 // cbnz x17, LBB0_192 $92(%rip) - WORD $0xb500d247 // cbnz x7, LBB0_521 $6728(%rip) + WORD $0xb500d607 // cbnz x7, LBB0_524 $6848(%rip) WORD $0xd1010294 // sub x20, x20, #64 WORD $0x910103de // add lr, lr, #64 WORD $0xf100fe9f // cmp x20, #63 @@ -1207,12 +1207,12 @@ LBB0_192: WORD $0xdac000e4 // rbit x4, x7 WORD $0xdac01085 // clz x5, x4 WORD $0xeb1100bf // cmp x5, x17 - WORD $0x5400d9a3 // b.lo LBB0_546 $6964(%rip) + WORD $0x5400dd63 // b.lo LBB0_549 $7084(%rip) LBB0_193: WORD $0x8b1e0231 // add x17, x17, lr WORD $0x9100063e // add lr, x17, #1 WORD $0xb6f814fe // tbz lr, #63, LBB0_243 $668(%rip) - WORD $0x14000666 // b LBB0_514 $6552(%rip) + WORD $0x14000684 // b LBB0_517 $6672(%rip) LBB0_194: WORD $0x39400504 // ldrb w4, [x8, #1] WORD $0x5100b885 // sub w5, w4, #46 @@ -1363,10 +1363,10 @@ LBB0_228: WORD $0x8b170227 // add x7, x17, x23 LBB0_229: WORD $0x92800016 // mov x22, #-1 - WORD $0xb400bef5 // cbz x21, LBB0_527 $6108(%rip) + WORD $0xb400c2b5 // cbz x21, LBB0_530 $6228(%rip) LBB0_230: - WORD $0xb400bec5 // cbz x5, LBB0_527 $6104(%rip) - WORD $0xb400beb4 // cbz x20, LBB0_527 $6100(%rip) + WORD $0xb400c285 // cbz x5, LBB0_530 $6224(%rip) + WORD $0xb400c274 // cbz x20, LBB0_530 $6220(%rip) WORD $0xcb0800e8 // sub x8, x7, x8 WORD $0xd1000511 // sub x17, x8, #1 WORD $0xeb1102bf // cmp x21, x17 @@ -1378,12 +1378,12 @@ LBB0_230: WORD $0xf10004b1 // subs x17, x5, #1 WORD $0x5400006b // b.lt LBB0_237 $12(%rip) WORD $0xeb11029f // cmp x20, x17 - WORD $0x5400bd41 // b.ne LBB0_528 $6056(%rip) + WORD $0x5400c101 // b.ne LBB0_531 $6176(%rip) LBB0_237: WORD $0xaa1402b1 // orr x17, x21, x20 WORD $0xb7f80071 // tbnz x17, #63, LBB0_239 $12(%rip) WORD $0xeb1402bf // cmp x21, x20 - WORD $0x5400c58a // b.ge LBB0_545 $6320(%rip) + WORD $0x5400c94a // b.ge LBB0_548 $6440(%rip) LBB0_239: WORD $0xd37ffe31 // lsr x17, x17, #63 WORD $0x52000231 // eor w17, w17, #0x1 @@ -1396,7 +1396,7 @@ LBB0_239: LBB0_240: WORD $0xcb0803f6 // neg x22, x8 LBB0_241: - WORD $0xb7f8bb76 // tbnz x22, #63, LBB0_527 $5996(%rip) + WORD $0xb7f8bf36 // tbnz x22, #63, LBB0_530 $6116(%rip) LBB0_242: WORD $0x8b1e02de // add lr, x22, lr LBB0_243: @@ -1404,12 +1404,12 @@ LBB0_243: WORD $0xaa1b03e8 // mov x8, x27 WORD $0x92f00011 // mov x17, #9223372036854775807 WORD $0xeb11037f // cmp x27, x17 - WORD $0x54006542 // b.hs LBB0_438 $3240(%rip) + WORD $0x5400b9e2 // b.hs LBB0_515 $5948(%rip) LBB0_244: WORD $0xf9400054 // ldr x20, [x2] WORD $0xaa0e03e8 // mov x8, x14 WORD $0xb5ff6a54 // cbnz x20, LBB0_2 $-4792(%rip) - WORD $0x14000326 // b LBB0_438 $3224(%rip) + WORD $0x140005cb // b LBB0_515 $5932(%rip) LBB0_245: WORD $0x5ac00088 // rbit w8, w4 WORD $0x5ac01108 // clz w8, w8 @@ -1426,7 +1426,7 @@ LBB0_248: WORD $0xaa1103e7 // mov x7, x17 WORD $0x92800016 // mov x22, #-1 WORD $0xb5fff9f5 // cbnz x21, LBB0_230 $-196(%rip) - WORD $0x140005c4 // b LBB0_527 $5904(%rip) + WORD $0x140005e2 // b LBB0_530 $6024(%rip) LBB0_249: WORD $0xd2800005 // mov x5, #0 WORD $0x8b1e0135 // add x21, x9, lr @@ -1516,18 +1516,18 @@ LBB0_259: WORD $0xdac01087 // clz x7, x4 WORD $0xcb0902a5 // sub x5, x21, x9 WORD $0xeb07023f // cmp x17, x7 - WORD $0x5400b863 // b.lo LBB0_550 $5900(%rip) + WORD $0x5400bc23 // b.lo LBB0_553 $6020(%rip) WORD $0x8b0700b1 // add x17, x5, x7 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6fff29e // tbz lr, #63, LBB0_243 $-432(%rip) - WORD $0x14000553 // b LBB0_514 $5452(%rip) + WORD $0x14000571 // b LBB0_517 $5572(%rip) LBB0_262: - WORD $0x3500b776 // cbnz w22, LBB0_549 $5868(%rip) + WORD $0x3500bb36 // cbnz w22, LBB0_552 $5988(%rip) WORD $0x910082b5 // add x21, x21, #32 WORD $0xaa0703f4 // mov x20, x7 LBB0_264: WORD $0xb5003a65 // cbnz x5, LBB0_372 $1868(%rip) - WORD $0xb400aa14 // cbz x20, LBB0_515 $5440(%rip) + WORD $0xb400add4 // cbz x20, LBB0_518 $5560(%rip) LBB0_266: WORD $0xd2800011 // mov x17, #0 LBB0_267: @@ -1537,15 +1537,15 @@ LBB0_267: WORD $0x710170bf // cmp w5, #92 WORD $0x540000e0 // b.eq LBB0_271 $28(%rip) WORD $0x71007cbf // cmp w5, #31 - WORD $0x5400b5e9 // b.ls LBB0_549 $5820(%rip) + WORD $0x5400b9a9 // b.ls LBB0_552 $5940(%rip) WORD $0x91000631 // add x17, x17, #1 WORD $0xeb11029f // cmp x20, x17 WORD $0x54fffee1 // b.ne LBB0_267 $-36(%rip) - WORD $0x14000544 // b LBB0_515 $5392(%rip) + WORD $0x14000562 // b LBB0_518 $5512(%rip) LBB0_271: WORD $0xd1000684 // sub x4, x20, #1 WORD $0xeb11009f // cmp x4, x17 - WORD $0x5400a820 // b.eq LBB0_515 $5380(%rip) + WORD $0x5400abe0 // b.eq LBB0_518 $5500(%rip) WORD $0x8b1102a4 // add x4, x21, x17 WORD $0x8b0c0085 // add x5, x4, x12 WORD $0xb100051f // cmn x8, #1 @@ -1556,14 +1556,14 @@ LBB0_271: WORD $0xd1000894 // sub x20, x4, #2 WORD $0xeb1100bf // cmp x5, x17 WORD $0x54fffd01 // b.ne LBB0_266 $-96(%rip) - WORD $0x14000536 // b LBB0_515 $5336(%rip) + WORD $0x14000554 // b LBB0_518 $5456(%rip) LBB0_273: WORD $0x8b150184 // add x4, x12, x21 LBB0_274: WORD $0x8b110091 // add x17, x4, x17 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6ffee1e // tbz lr, #63, LBB0_243 $-576(%rip) - WORD $0x1400052f // b LBB0_514 $5308(%rip) + WORD $0x1400054d // b LBB0_517 $5428(%rip) LBB0_275: WORD $0x8b1e0135 // add x21, x9, lr WORD $0x1400000f // b LBB0_281 $60(%rip) @@ -1671,18 +1671,18 @@ LBB0_290: WORD $0xdac01087 // clz x7, x4 WORD $0xcb0902a5 // sub x5, x21, x9 WORD $0xeb07023f // cmp x17, x7 - WORD $0x5400a743 // b.lo LBB0_550 $5352(%rip) + WORD $0x5400ab03 // b.lo LBB0_553 $5472(%rip) WORD $0x8b0700b1 // add x17, x5, x7 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6ffa99e // tbz lr, #63, LBB0_149 $-2768(%rip) - WORD $0x140004ca // b LBB0_514 $4904(%rip) + WORD $0x140004e8 // b LBB0_517 $5024(%rip) LBB0_293: - WORD $0x3500a656 // cbnz w22, LBB0_549 $5320(%rip) + WORD $0x3500aa16 // cbnz w22, LBB0_552 $5440(%rip) WORD $0x910082b5 // add x21, x21, #32 WORD $0xaa0703f4 // mov x20, x7 LBB0_295: WORD $0xb5002b45 // cbnz x5, LBB0_376 $1384(%rip) - WORD $0xb40098f4 // cbz x20, LBB0_515 $4892(%rip) + WORD $0xb4009cb4 // cbz x20, LBB0_518 $5012(%rip) LBB0_297: WORD $0xd2800011 // mov x17, #0 LBB0_298: @@ -1692,15 +1692,15 @@ LBB0_298: WORD $0x710170bf // cmp w5, #92 WORD $0x540000e0 // b.eq LBB0_302 $28(%rip) WORD $0x71007cbf // cmp w5, #31 - WORD $0x5400a4c9 // b.ls LBB0_549 $5272(%rip) + WORD $0x5400a889 // b.ls LBB0_552 $5392(%rip) WORD $0x91000631 // add x17, x17, #1 WORD $0xeb11029f // cmp x20, x17 WORD $0x54fffee1 // b.ne LBB0_298 $-36(%rip) - WORD $0x140004bb // b LBB0_515 $4844(%rip) + WORD $0x140004d9 // b LBB0_518 $4964(%rip) LBB0_302: WORD $0xd1000684 // sub x4, x20, #1 WORD $0xeb11009f // cmp x4, x17 - WORD $0x54009700 // b.eq LBB0_515 $4832(%rip) + WORD $0x54009ac0 // b.eq LBB0_518 $4952(%rip) WORD $0x8b1102a4 // add x4, x21, x17 WORD $0x8b0c0085 // add x5, x4, x12 WORD $0xb100051f // cmn x8, #1 @@ -1711,14 +1711,14 @@ LBB0_302: WORD $0xd1000894 // sub x20, x4, #2 WORD $0xeb1100bf // cmp x5, x17 WORD $0x54fffd01 // b.ne LBB0_297 $-96(%rip) - WORD $0x140004ad // b LBB0_515 $4788(%rip) + WORD $0x140004cb // b LBB0_518 $4908(%rip) LBB0_304: WORD $0x8b150184 // add x4, x12, x21 LBB0_305: WORD $0x8b110091 // add x17, x4, x17 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6ffa51e // tbz lr, #63, LBB0_149 $-2912(%rip) - WORD $0x140004a6 // b LBB0_514 $4760(%rip) + WORD $0x140004c4 // b LBB0_517 $4880(%rip) LBB0_306: WORD $0xcb1703f6 // neg x22, x23 WORD $0x17fffee2 // b LBB0_241 $-1144(%rip) @@ -1827,18 +1827,18 @@ LBB0_321: WORD $0xdac01087 // clz x7, x4 WORD $0xcb0902a5 // sub x5, x21, x9 WORD $0xeb07023f // cmp x17, x7 - WORD $0x54009603 // b.lo LBB0_550 $4800(%rip) + WORD $0x540099c3 // b.lo LBB0_553 $4920(%rip) WORD $0x8b0700b1 // add x17, x5, x7 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6ffd03e // tbz lr, #63, LBB0_243 $-1532(%rip) - WORD $0x14000440 // b LBB0_514 $4352(%rip) + WORD $0x1400045e // b LBB0_517 $4472(%rip) LBB0_324: - WORD $0x35009516 // cbnz w22, LBB0_549 $4768(%rip) + WORD $0x350098d6 // cbnz w22, LBB0_552 $4888(%rip) WORD $0x910082b5 // add x21, x21, #32 WORD $0xaa0703f4 // mov x20, x7 LBB0_326: WORD $0xb5002485 // cbnz x5, LBB0_395 $1168(%rip) - WORD $0xb40087b4 // cbz x20, LBB0_515 $4340(%rip) + WORD $0xb4008b74 // cbz x20, LBB0_518 $4460(%rip) LBB0_328: WORD $0xd2800011 // mov x17, #0 LBB0_329: @@ -1848,15 +1848,15 @@ LBB0_329: WORD $0x710170bf // cmp w5, #92 WORD $0x540000e0 // b.eq LBB0_333 $28(%rip) WORD $0x71007cbf // cmp w5, #31 - WORD $0x54009389 // b.ls LBB0_549 $4720(%rip) + WORD $0x54009749 // b.ls LBB0_552 $4840(%rip) WORD $0x91000631 // add x17, x17, #1 WORD $0xeb11029f // cmp x20, x17 WORD $0x54fffee1 // b.ne LBB0_329 $-36(%rip) - WORD $0x14000431 // b LBB0_515 $4292(%rip) + WORD $0x1400044f // b LBB0_518 $4412(%rip) LBB0_333: WORD $0xd1000684 // sub x4, x20, #1 WORD $0xeb11009f // cmp x4, x17 - WORD $0x540085c0 // b.eq LBB0_515 $4280(%rip) + WORD $0x54008980 // b.eq LBB0_518 $4400(%rip) WORD $0x8b1102a4 // add x4, x21, x17 WORD $0x8b0c0085 // add x5, x4, x12 WORD $0xb100051f // cmn x8, #1 @@ -1867,14 +1867,14 @@ LBB0_333: WORD $0xd1000894 // sub x20, x4, #2 WORD $0xeb1100bf // cmp x5, x17 WORD $0x54fffd01 // b.ne LBB0_328 $-96(%rip) - WORD $0x14000423 // b LBB0_515 $4236(%rip) + WORD $0x14000441 // b LBB0_518 $4356(%rip) LBB0_335: WORD $0x8b150184 // add x4, x12, x21 LBB0_336: WORD $0x8b110091 // add x17, x4, x17 WORD $0x9100063e // add lr, x17, #1 WORD $0xb6ffcbbe // tbz lr, #63, LBB0_243 $-1676(%rip) - WORD $0x1400041c // b LBB0_514 $4208(%rip) + WORD $0x1400043a // b LBB0_517 $4328(%rip) LBB0_337: WORD $0x92800008 // mov x8, #-1 WORD $0xaa0503f7 // mov x23, x5 @@ -1933,7 +1933,7 @@ LBB0_345: WORD $0xb5fffee5 // cbnz x5, LBB0_345 $-36(%rip) WORD $0x14000009 // b LBB0_350 $36(%rip) LBB0_348: - WORD $0xb4007d85 // cbz x5, LBB0_515 $4016(%rip) + WORD $0xb4008145 // cbz x5, LBB0_518 $4136(%rip) WORD $0x8b0b00e4 // add x4, x7, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880088 // csel x8, x4, x8, eq @@ -1944,13 +1944,13 @@ LBB0_348: LBB0_350: WORD $0x71008a3f // cmp w17, #34 WORD $0x54000060 // b.eq LBB0_352 $12(%rip) - WORD $0x140003e2 // b LBB0_515 $3976(%rip) + WORD $0x14000400 // b LBB0_518 $4096(%rip) LBB0_351: WORD $0xaa0703f5 // mov x21, x7 LBB0_352: WORD $0xcb0902be // sub lr, x21, x9 WORD $0xb6ffc3be // tbz lr, #63, LBB0_243 $-1932(%rip) - WORD $0x140003dc // b LBB0_514 $3952(%rip) + WORD $0x140003fa // b LBB0_517 $4072(%rip) LBB0_353: WORD $0xdac00224 // rbit x4, x17 WORD $0xdac01084 // clz x4, x4 @@ -2012,7 +2012,7 @@ LBB0_360: WORD $0xb5fffee5 // cbnz x5, LBB0_360 $-36(%rip) WORD $0x14000009 // b LBB0_365 $36(%rip) LBB0_363: - WORD $0xb4007505 // cbz x5, LBB0_515 $3744(%rip) + WORD $0xb40078c5 // cbz x5, LBB0_518 $3864(%rip) WORD $0x8b0b00e4 // add x4, x7, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880088 // csel x8, x4, x8, eq @@ -2023,13 +2023,13 @@ LBB0_363: LBB0_365: WORD $0x71008a3f // cmp w17, #34 WORD $0x54000060 // b.eq LBB0_367 $12(%rip) - WORD $0x1400039e // b LBB0_515 $3704(%rip) + WORD $0x140003bc // b LBB0_518 $3824(%rip) LBB0_366: WORD $0xaa0703f5 // mov x21, x7 LBB0_367: WORD $0xcb0902be // sub lr, x21, x9 WORD $0xb6ff835e // tbz lr, #63, LBB0_149 $-3992(%rip) - WORD $0x14000398 // b LBB0_514 $3680(%rip) + WORD $0x140003b6 // b LBB0_517 $3800(%rip) LBB0_368: WORD $0xdac00224 // rbit x4, x17 WORD $0xdac01084 // clz x4, x4 @@ -2052,7 +2052,7 @@ LBB0_369: WORD $0x8a140234 // and x20, x17, x20 WORD $0x17fffea5 // b LBB0_290 $-1388(%rip) LBB0_370: - WORD $0xb40070d4 // cbz x20, LBB0_515 $3608(%rip) + WORD $0xb4007494 // cbz x20, LBB0_518 $3728(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq @@ -2061,16 +2061,16 @@ LBB0_370: WORD $0xb5fff134 // cbnz x20, LBB0_345 $-476(%rip) WORD $0x17ffff9f // b LBB0_352 $-388(%rip) LBB0_372: - WORD $0xb4006fd4 // cbz x20, LBB0_515 $3576(%rip) + WORD $0xb4007394 // cbz x20, LBB0_518 $3696(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq WORD $0x910006b5 // add x21, x21, #1 WORD $0xd1000694 // sub x20, x20, #1 WORD $0xb5ffc534 // cbnz x20, LBB0_266 $-1884(%rip) - WORD $0x14000377 // b LBB0_515 $3548(%rip) + WORD $0x14000395 // b LBB0_518 $3668(%rip) LBB0_374: - WORD $0xb4006ed4 // cbz x20, LBB0_515 $3544(%rip) + WORD $0xb4007294 // cbz x20, LBB0_518 $3664(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq @@ -2079,14 +2079,14 @@ LBB0_374: WORD $0xb5fff7b4 // cbnz x20, LBB0_360 $-268(%rip) WORD $0x17ffffd3 // b LBB0_367 $-180(%rip) LBB0_376: - WORD $0xb4006dd4 // cbz x20, LBB0_515 $3512(%rip) + WORD $0xb4007194 // cbz x20, LBB0_518 $3632(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq WORD $0x910006b5 // add x21, x21, #1 WORD $0xd1000694 // sub x20, x20, #1 WORD $0xb5ffd454 // cbnz x20, LBB0_297 $-1400(%rip) - WORD $0x14000367 // b LBB0_515 $3484(%rip) + WORD $0x14000385 // b LBB0_518 $3604(%rip) LBB0_378: WORD $0xdac00284 // rbit x4, x20 WORD $0xdac01084 // clz x4, x4 @@ -2127,7 +2127,7 @@ LBB0_383: WORD $0xb5fffee5 // cbnz x5, LBB0_383 $-36(%rip) WORD $0x14000009 // b LBB0_388 $36(%rip) LBB0_386: - WORD $0xb4006885 // cbz x5, LBB0_515 $3344(%rip) + WORD $0xb4006c45 // cbz x5, LBB0_518 $3464(%rip) WORD $0x8b0b00e4 // add x4, x7, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880088 // csel x8, x4, x8, eq @@ -2138,13 +2138,13 @@ LBB0_386: LBB0_388: WORD $0x71008a3f // cmp w17, #34 WORD $0x54000060 // b.eq LBB0_390 $12(%rip) - WORD $0x1400033a // b LBB0_515 $3304(%rip) + WORD $0x14000358 // b LBB0_518 $3424(%rip) LBB0_389: WORD $0xaa0703f5 // mov x21, x7 LBB0_390: WORD $0xcb0902be // sub lr, x21, x9 WORD $0xb6ffaebe // tbz lr, #63, LBB0_243 $-2604(%rip) - WORD $0x14000334 // b LBB0_514 $3280(%rip) + WORD $0x14000352 // b LBB0_517 $3400(%rip) LBB0_391: WORD $0xdac00224 // rbit x4, x17 WORD $0xdac01084 // clz x4, x4 @@ -2167,7 +2167,7 @@ LBB0_392: WORD $0x8a140234 // and x20, x17, x20 WORD $0x17fffecb // b LBB0_321 $-1236(%rip) LBB0_393: - WORD $0xb4006454 // cbz x20, LBB0_515 $3208(%rip) + WORD $0xb4006814 // cbz x20, LBB0_518 $3328(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq @@ -2176,14 +2176,14 @@ LBB0_393: WORD $0xb5fff9b4 // cbnz x20, LBB0_383 $-204(%rip) WORD $0x17ffffe3 // b LBB0_390 $-116(%rip) LBB0_395: - WORD $0xb4006354 // cbz x20, LBB0_515 $3176(%rip) + WORD $0xb4006714 // cbz x20, LBB0_518 $3296(%rip) WORD $0x8b0b02b1 // add x17, x21, x11 WORD $0xb100051f // cmn x8, #1 WORD $0x9a880228 // csel x8, x17, x8, eq WORD $0x910006b5 // add x21, x21, #1 WORD $0xd1000694 // sub x20, x20, #1 WORD $0xb5ffdb14 // cbnz x20, LBB0_328 $-1184(%rip) - WORD $0x14000313 // b LBB0_515 $3148(%rip) + WORD $0x14000331 // b LBB0_518 $3268(%rip) LBB0_397: WORD $0xf940002b // ldr x11, [x1] WORD $0xa940200a // ldp x10, x8, [x0] @@ -2253,11 +2253,11 @@ LBB0_415: WORD $0x54ffff01 // b.ne LBB0_415 $-32(%rip) LBB0_417: WORD $0x92800008 // mov x8, #-1 - WORD $0x14000040 // b LBB0_438 $256(%rip) + WORD $0x140002e5 // b LBB0_515 $2964(%rip) LBB0_418: WORD $0xf9000029 // str x9, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x1400003d // b LBB0_438 $244(%rip) + WORD $0x140002e2 // b LBB0_515 $2952(%rip) LBB0_419: WORD $0xeb08013f // cmp x9, x8 WORD $0x54ffff42 // b.hs LBB0_417 $-24(%rip) @@ -2266,30 +2266,32 @@ LBB0_420: WORD $0xf9000030 // str x16, [x1] WORD $0x38696948 // ldrb w8, [x10, x9] WORD $0x7101691f // cmp w8, #90 - WORD $0x540007ec // b.gt LBB0_439 $252(%rip) + WORD $0x54000a6c // b.gt LBB0_439 $332(%rip) WORD $0x7100bd1f // cmp w8, #47 - WORD $0x54000c4d // b.le LBB0_444 $392(%rip) + WORD $0x54000ecd // b.le LBB0_444 $472(%rip) WORD $0x5100c108 // sub w8, w8, #48 WORD $0x7100291f // cmp w8, #10 - WORD $0x54005702 // b.hs LBB0_511 $2784(%rip) + WORD $0x54005982 // b.hs LBB0_511 $2864(%rip) LBB0_423: WORD $0xf9400408 // ldr x8, [x0, #8] - WORD $0xcb100108 // sub x8, x8, x16 - WORD $0xf100411f // cmp x8, #16 - WORD $0x540002c3 // b.lo LBB0_427 $88(%rip) + WORD $0xcb10010b // sub x11, x8, x16 + WORD $0x8b100148 // add x8, x10, x16 + WORD $0xf100417f // cmp x11, #16 + WORD $0x54000303 // b.lo LBB0_427 $96(%rip) + WORD $0xd280000c // mov x12, #0 WORD $0x4f01e580 // movi.16b v0, #44 WORD $0x4f06e7e1 // movi.16b v1, #223 WORD $0x4f02e7a2 // movi.16b v2, #93 Lloh6: - WORD $0x10ff044b // adr x11, lCPI0_0 $-8056(%rip) + WORD $0x10ff040d // adr x13, lCPI0_0 $-8064(%rip) Lloh7: - WORD $0x3dc00163 // ldr q3, [x11, lCPI0_0@PAGEOFF] $0(%rip) + WORD $0x3dc001a3 // ldr q3, [x13, lCPI0_0@PAGEOFF] $0(%rip) Lloh8: - WORD $0x10ff048b // adr x11, lCPI0_1 $-8048(%rip) + WORD $0x10ff044d // adr x13, lCPI0_1 $-8056(%rip) Lloh9: - WORD $0x3dc00164 // ldr q4, [x11, lCPI0_1@PAGEOFF] $0(%rip) + WORD $0x3dc001a4 // ldr q4, [x13, lCPI0_1@PAGEOFF] $0(%rip) LBB0_425: - WORD $0x3cf06945 // ldr q5, [x10, x16] + WORD $0x3dc00105 // ldr q5, [x8] WORD $0x6e208ca6 // cmeq.16b v6, v5, v0 WORD $0x4e211ca5 // and.16b v5, v5, v1 WORD $0x6e228ca5 // cmeq.16b v5, v5, v2 @@ -2297,51 +2299,67 @@ LBB0_425: WORD $0x4e231ca5 // and.16b v5, v5, v3 WORD $0x4e0400a5 // tbl.16b v5, { v5 }, v4 WORD $0x4e71b8a5 // addv.8h h5, v5 - WORD $0x1e2600ab // fmov w11, s5 - WORD $0x350002eb // cbnz w11, LBB0_435 $92(%rip) - WORD $0xd1004108 // sub x8, x8, #16 - WORD $0x91004210 // add x16, x16, #16 - WORD $0xf1003d1f // cmp x8, #15 - WORD $0x54fffe68 // b.hi LBB0_425 $-52(%rip) + WORD $0x1e2600ad // fmov w13, s5 + WORD $0x350003ad // cbnz w13, LBB0_435 $116(%rip) + WORD $0x91004108 // add x8, x8, #16 + WORD $0xd100416b // sub x11, x11, #16 + WORD $0x9100418c // add x12, x12, #16 + WORD $0xf1003d7f // cmp x11, #15 + WORD $0x54fffe48 // b.hi LBB0_425 $-56(%rip) LBB0_427: - WORD $0x8b10014b // add x11, x10, x16 - WORD $0xb40001e8 // cbz x8, LBB0_434 $60(%rip) - WORD $0x8b08016c // add x12, x11, x8 - WORD $0xcb0a016d // sub x13, x11, x10 + WORD $0xb40002ab // cbz x11, LBB0_434 $84(%rip) + WORD $0x8b0b010c // add x12, x8, x11 + WORD $0xcb0a010d // sub x13, x8, x10 + WORD $0x5280002e // mov w14, #1 + WORD $0xd284c00f // mov x15, #9728 + WORD $0xf2c2002f // movk x15, #4097, lsl #32 LBB0_429: - WORD $0x3940016e // ldrb w14, [x11] - WORD $0x7100b1df // cmp w14, #44 - WORD $0x54005500 // b.eq LBB0_516 $2720(%rip) - WORD $0x7101f5df // cmp w14, #125 - WORD $0x540054c0 // b.eq LBB0_516 $2712(%rip) - WORD $0x710175df // cmp w14, #93 - WORD $0x54005480 // b.eq LBB0_516 $2704(%rip) - WORD $0x9100056b // add x11, x11, #1 + WORD $0x39400110 // ldrb w16, [x8] + WORD $0x7100b21f // cmp w16, #44 + WORD $0x9ad021d1 // lsl x17, x14, x16 + WORD $0x8a0f0231 // and x17, x17, x15 + WORD $0xfa409a24 // ccmp x17, #0, #4, ls + WORD $0x540057c1 // b.ne LBB0_519 $2808(%rip) + WORD $0x7101f61f // cmp w16, #125 + WORD $0x54005780 // b.eq LBB0_519 $2800(%rip) + WORD $0x7101761f // cmp w16, #93 + WORD $0x54005740 // b.eq LBB0_519 $2792(%rip) + WORD $0x91000508 // add x8, x8, #1 WORD $0x910005ad // add x13, x13, #1 - WORD $0xf1000508 // subs x8, x8, #1 - WORD $0x54fffec1 // b.ne LBB0_429 $-40(%rip) - WORD $0xaa0c03eb // mov x11, x12 + WORD $0xf100056b // subs x11, x11, #1 + WORD $0x54fffe61 // b.ne LBB0_429 $-52(%rip) + WORD $0xaa0c03e8 // mov x8, x12 LBB0_434: - WORD $0xcb0a0168 // sub x8, x11, x10 - WORD $0x14000004 // b LBB0_436 $16(%rip) + WORD $0xcb0a0108 // sub x8, x8, x10 + WORD $0x140002a1 // b LBB0_513 $2692(%rip) LBB0_435: - WORD $0x5ac00168 // rbit w8, w11 - WORD $0x5ac01108 // clz w8, w8 - WORD $0x8b100108 // add x8, x8, x16 -LBB0_436: + WORD $0x5ac001ab // rbit w11, w13 + WORD $0x5ac0116b // clz w11, w11 + WORD $0xcb0a0108 // sub x8, x8, x10 + WORD $0x8b0b0108 // add x8, x8, x11 WORD $0xf9000028 // str x8, [x1] + WORD $0xf100051f // cmp x8, #1 + WORD $0x5400536b // b.lt LBB0_514 $2668(%rip) + WORD $0x8b0c0168 // add x8, x11, x12 + WORD $0x8b09014a // add x10, x10, x9 + WORD $0x5280002b // mov w11, #1 + WORD $0xd284c00c // mov x12, #9728 + WORD $0xf2c0002c // movk x12, #1, lsl #32 LBB0_437: - WORD $0xaa0903e8 // mov x8, x9 -LBB0_438: - WORD $0xaa0803e0 // mov x0, x8 - WORD $0xa94afbfd // ldp fp, lr, [sp, #168] - WORD $0xa949cff4 // ldp x20, x19, [sp, #152] - WORD $0xa948d7f6 // ldp x22, x21, [sp, #136] - WORD $0xa947dff8 // ldp x24, x23, [sp, #120] - WORD $0xa946e7fa // ldp x26, x25, [sp, #104] - WORD $0xa945effc // ldp x28, x27, [sp, #88] - WORD $0x910303ff // add sp, sp, #192 - WORD $0xd65f03c0 // ret + WORD $0x3868694d // ldrb w13, [x10, x8] + WORD $0x710081bf // cmp w13, #32 + WORD $0x9acd216d // lsl x13, x11, x13 + WORD $0x8a0c01ad // and x13, x13, x12 + WORD $0xfa4099a4 // ccmp x13, #0, #4, ls + WORD $0x54005200 // b.eq LBB0_514 $2624(%rip) + WORD $0x8b08012d // add x13, x9, x8 + WORD $0xf900002d // str x13, [x1] + WORD $0xd1000508 // sub x8, x8, #1 + WORD $0x8b08012d // add x13, x9, x8 + WORD $0x910009ad // add x13, x13, #2 + WORD $0xf10005bf // cmp x13, #1 + WORD $0x54fffe8c // b.gt LBB0_437 $-48(%rip) + WORD $0x14000288 // b LBB0_514 $2592(%rip) LBB0_439: WORD $0x7101b51f // cmp w8, #109 WORD $0x5400054d // b.le LBB0_447 $168(%rip) @@ -2368,11 +2386,11 @@ LBB0_439: WORD $0x9100814a // add x10, x10, #32 WORD $0x4f01e440 // movi.16b v0, #34 Lloh10: - WORD $0x10fefb11 // adr x17, lCPI0_0 $-8352(%rip) + WORD $0x10fef891 // adr x17, lCPI0_0 $-8432(%rip) Lloh11: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) Lloh12: - WORD $0x10fefb51 // adr x17, lCPI0_1 $-8344(%rip) + WORD $0x10fef8d1 // adr x17, lCPI0_1 $-8424(%rip) Lloh13: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 @@ -2385,11 +2403,11 @@ Lloh13: WORD $0x6f00e406 // movi.2d v6, #0000000000000000 WORD $0x14000018 // b LBB0_451 $96(%rip) LBB0_444: - WORD $0x34fff228 // cbz w8, LBB0_417 $-444(%rip) + WORD $0x34ffefa8 // cbz w8, LBB0_417 $-524(%rip) WORD $0x7100891f // cmp w8, #34 WORD $0x54001fa0 // b.eq LBB0_476 $1012(%rip) WORD $0x7100b51f // cmp w8, #45 - WORD $0x54fff3c0 // b.eq LBB0_423 $-392(%rip) + WORD $0x54fff140 // b.eq LBB0_423 $-472(%rip) WORD $0x14000254 // b LBB0_511 $2384(%rip) LBB0_447: WORD $0x71016d1f // cmp w8, #91 @@ -2399,8 +2417,8 @@ LBB0_447: WORD $0x91001528 // add x8, x9, #5 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54fff088 // b.hi LBB0_417 $-496(%rip) - WORD $0x17ffffc2 // b LBB0_436 $-248(%rip) + WORD $0x54ffee08 // b.hi LBB0_417 $-576(%rip) + WORD $0x14000253 // b LBB0_513 $2380(%rip) LBB0_450: WORD $0x937ffce7 // asr x7, x7, #63 WORD $0x9e670267 // fmov d7, x19 @@ -2592,7 +2610,7 @@ LBB0_456: WORD $0x17ffff4a // b LBB0_450 $-728(%rip) LBB0_458: WORD $0xf10000bf // cmp x5, #0 - WORD $0x5400404d // b.le LBB0_547 $2056(%rip) + WORD $0x5400418d // b.le LBB0_550 $2096(%rip) WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0xad009be6 // stp q6, q6, [sp, #16] WORD $0x92402e13 // and x19, x16, #0xfff @@ -2654,18 +2672,18 @@ LBB0_473: LBB0_474: WORD $0xf900003b // str x27, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x17fffed9 // b LBB0_438 $-1180(%rip) + WORD $0x1400016a // b LBB0_515 $1448(%rip) LBB0_475: WORD $0x91001128 // add x8, x9, #4 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54ffd288 // b.hi LBB0_417 $-1456(%rip) - WORD $0x17fffed2 // b LBB0_436 $-1208(%rip) + WORD $0x54ffd008 // b.hi LBB0_417 $-1536(%rip) + WORD $0x14000163 // b LBB0_513 $1420(%rip) LBB0_476: WORD $0xf9400411 // ldr x17, [x0, #8] WORD $0xcb10022b // sub x11, x17, x16 WORD $0xf100817f // cmp x11, #32 - WORD $0x540037cb // b.lt LBB0_544 $1784(%rip) + WORD $0x5400390b // b.lt LBB0_547 $1824(%rip) WORD $0xd2800008 // mov x8, #0 WORD $0xd280000e // mov x14, #0 WORD $0x3200f3ec // mov w12, #1431655765 @@ -2673,11 +2691,11 @@ LBB0_476: WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x8b09014f // add x15, x10, x9 Lloh14: - WORD $0x10fed84b // adr x11, lCPI0_0 $-9464(%rip) + WORD $0x10fed5cb // adr x11, lCPI0_0 $-9544(%rip) Lloh15: WORD $0x3dc00161 // ldr q1, [x11, lCPI0_0@PAGEOFF] $0(%rip) Lloh16: - WORD $0x10fed88b // adr x11, lCPI0_1 $-9456(%rip) + WORD $0x10fed60b // adr x11, lCPI0_1 $-9536(%rip) Lloh17: WORD $0x3dc00162 // ldr q2, [x11, lCPI0_1@PAGEOFF] $0(%rip) WORD $0xcb09022b // sub x11, x17, x9 @@ -2732,15 +2750,15 @@ LBB0_481: WORD $0x8b100171 // add x17, x11, x16 WORD $0xf100fe3f // cmp x17, #63 WORD $0x54fffa6c // b.gt LBB0_478 $-180(%rip) - WORD $0xb500328e // cbnz x14, LBB0_551 $1616(%rip) + WORD $0xb50033ce // cbnz x14, LBB0_554 $1656(%rip) WORD $0x8b09014c // add x12, x10, x9 WORD $0x8b08018c // add x12, x12, x8 WORD $0x9100058c // add x12, x12, #1 WORD $0xaa2803e8 // mvn x8, x8 WORD $0x8b0b010b // add x11, x8, x11 WORD $0xf100057f // cmp x11, #1 - WORD $0x540033ca // b.ge LBB0_554 $1656(%rip) - WORD $0x17fffe4b // b LBB0_417 $-1748(%rip) + WORD $0x5400350a // b.ge LBB0_557 $1696(%rip) + WORD $0x17fffe37 // b LBB0_417 $-1828(%rip) LBB0_485: WORD $0xd2800007 // mov x7, #0 WORD $0xd280000f // mov x15, #0 @@ -2759,11 +2777,11 @@ LBB0_485: WORD $0x9100814a // add x10, x10, #32 WORD $0x4f01e440 // movi.16b v0, #34 Lloh18: - WORD $0x10fece91 // adr x17, lCPI0_0 $-9776(%rip) + WORD $0x10fecc11 // adr x17, lCPI0_0 $-9856(%rip) Lloh19: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) Lloh20: - WORD $0x10feced1 // adr x17, lCPI0_1 $-9768(%rip) + WORD $0x10fecc51 // adr x17, lCPI0_1 $-9848(%rip) Lloh21: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 @@ -2966,7 +2984,7 @@ LBB0_492: WORD $0x17ffff4a // b LBB0_486 $-728(%rip) LBB0_494: WORD $0xf10000bf // cmp x5, #0 - WORD $0x540015ad // b.le LBB0_547 $692(%rip) + WORD $0x540016ed // b.le LBB0_550 $732(%rip) WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0xad009be6 // stp q6, q6, [sp, #16] WORD $0x92402e13 // and x19, x16, #0xfff @@ -3038,193 +3056,206 @@ LBB0_510: WORD $0x9a882568 // csinc x8, x11, x8, hs WORD $0xf9000028 // str x8, [x1] WORD $0xda9f9128 // csinv x8, x9, xzr, ls - WORD $0x17fffd7a // b LBB0_438 $-2584(%rip) + WORD $0x1400000b // b LBB0_515 $44(%rip) LBB0_511: WORD $0xf9000029 // str x9, [x1] WORD $0x92800028 // mov x8, #-2 - WORD $0x17fffd77 // b LBB0_438 $-2596(%rip) + WORD $0x14000008 // b LBB0_515 $32(%rip) LBB0_512: WORD $0xdac0022a // rbit x10, x17 WORD $0xdac0114a // clz x10, x10 WORD $0x8b080128 // add x8, x9, x8 WORD $0x8b080148 // add x8, x10, x8 WORD $0x91000908 // add x8, x8, #2 - WORD $0x17fffd6f // b LBB0_436 $-2628(%rip) LBB0_513: - WORD $0x928000c8 // mov x8, #-7 - WORD $0x17fffd6f // b LBB0_438 $-2628(%rip) + WORD $0xf9000028 // str x8, [x1] LBB0_514: - WORD $0xb10007df // cmn lr, #1 - WORD $0x54000241 // b.ne LBB0_524 $72(%rip) + WORD $0xaa0903e8 // mov x8, x9 LBB0_515: + WORD $0xaa0803e0 // mov x0, x8 + WORD $0xa94afbfd // ldp fp, lr, [sp, #168] + WORD $0xa949cff4 // ldp x20, x19, [sp, #152] + WORD $0xa948d7f6 // ldp x22, x21, [sp, #136] + WORD $0xa947dff8 // ldp x24, x23, [sp, #120] + WORD $0xa946e7fa // ldp x26, x25, [sp, #104] + WORD $0xa945effc // ldp x28, x27, [sp, #88] + WORD $0x910303ff // add sp, sp, #192 + WORD $0xd65f03c0 // ret +LBB0_516: + WORD $0x928000c8 // mov x8, #-7 + WORD $0x17fffff6 // b LBB0_515 $-40(%rip) +LBB0_517: + WORD $0xb10007df // cmn lr, #1 + WORD $0x54000241 // b.ne LBB0_527 $72(%rip) +LBB0_518: WORD $0xf9400408 // ldr x8, [x0, #8] WORD $0x9280001e // mov lr, #-1 - WORD $0x1400000f // b LBB0_524 $60(%rip) -LBB0_516: + WORD $0x1400000f // b LBB0_527 $60(%rip) +LBB0_519: WORD $0xf900002d // str x13, [x1] - WORD $0x17fffd67 // b LBB0_437 $-2660(%rip) -LBB0_517: + WORD $0x17ffffee // b LBB0_514 $-72(%rip) +LBB0_520: WORD $0x92800016 // mov x22, #-1 -LBB0_518: +LBB0_521: WORD $0xaa3603f5 // mvn x21, x22 -LBB0_519: +LBB0_522: WORD $0x8b1b02a8 // add x8, x21, x27 -LBB0_520: +LBB0_523: WORD $0xf9000028 // str x8, [x1] WORD $0x92800028 // mov x8, #-2 - WORD $0x17fffd62 // b LBB0_438 $-2680(%rip) -LBB0_521: + WORD $0x17ffffe9 // b LBB0_515 $-92(%rip) +LBB0_524: WORD $0xb100051f // cmn x8, #1 - WORD $0x54000081 // b.ne LBB0_523 $16(%rip) + WORD $0x54000081 // b.ne LBB0_526 $16(%rip) WORD $0xdac000e8 // rbit x8, x7 WORD $0xdac01108 // clz x8, x8 WORD $0x8b1e0108 // add x8, x8, lr -LBB0_523: +LBB0_526: WORD $0x9280003e // mov lr, #-2 -LBB0_524: +LBB0_527: WORD $0xf9000028 // str x8, [x1] WORD $0xaa1e03e8 // mov x8, lr - WORD $0x17fffd59 // b LBB0_438 $-2716(%rip) -LBB0_525: + WORD $0x17ffffe0 // b LBB0_515 $-128(%rip) +LBB0_528: WORD $0xaa0803f5 // mov x21, x8 - WORD $0x17fffff2 // b LBB0_519 $-56(%rip) -LBB0_526: + WORD $0x17fffff2 // b LBB0_522 $-56(%rip) +LBB0_529: WORD $0x92800016 // mov x22, #-1 -LBB0_527: +LBB0_530: WORD $0xaa3603e5 // mvn x5, x22 -LBB0_528: +LBB0_531: WORD $0x8b0503c8 // add x8, lr, x5 - WORD $0x17ffffef // b LBB0_520 $-68(%rip) -LBB0_529: + WORD $0x17ffffef // b LBB0_523 $-68(%rip) +LBB0_532: WORD $0xf900003e // str lr, [x1] WORD $0x387e6928 // ldrb w8, [x9, lr] WORD $0x7101851f // cmp w8, #97 - WORD $0x54000761 // b.ne LBB0_543 $236(%rip) + WORD $0x54000761 // b.ne LBB0_546 $236(%rip) WORD $0x91000b68 // add x8, x27, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x540006c1 // b.ne LBB0_543 $216(%rip) + WORD $0x540006c1 // b.ne LBB0_546 $216(%rip) WORD $0x91000f68 // add x8, x27, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101cd1f // cmp w8, #115 - WORD $0x54000621 // b.ne LBB0_543 $196(%rip) + WORD $0x54000621 // b.ne LBB0_546 $196(%rip) WORD $0x91001368 // add x8, x27, #4 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101951f // cmp w8, #101 - WORD $0x54000581 // b.ne LBB0_543 $176(%rip) + WORD $0x54000581 // b.ne LBB0_546 $176(%rip) WORD $0x91001768 // add x8, x27, #5 - WORD $0x17ffffda // b LBB0_520 $-152(%rip) -LBB0_534: + WORD $0x17ffffda // b LBB0_523 $-152(%rip) +LBB0_537: WORD $0xf900003b // str x27, [x1] WORD $0x394000a8 // ldrb w8, [x5] WORD $0x7101d11f // cmp w8, #116 - WORD $0x540004c1 // b.ne LBB0_543 $152(%rip) + WORD $0x540004c1 // b.ne LBB0_546 $152(%rip) WORD $0x91000768 // add x8, x27, #1 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101c91f // cmp w8, #114 - WORD $0x54000421 // b.ne LBB0_543 $132(%rip) + WORD $0x54000421 // b.ne LBB0_546 $132(%rip) WORD $0x91000b68 // add x8, x27, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101d51f // cmp w8, #117 - WORD $0x54000381 // b.ne LBB0_543 $112(%rip) + WORD $0x54000381 // b.ne LBB0_546 $112(%rip) WORD $0x91000f68 // add x8, x27, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101951f // cmp w8, #101 - WORD $0x540002e1 // b.ne LBB0_543 $92(%rip) - WORD $0x14000014 // b LBB0_542 $80(%rip) -LBB0_538: + WORD $0x540002e1 // b.ne LBB0_546 $92(%rip) + WORD $0x14000014 // b LBB0_545 $80(%rip) +LBB0_541: WORD $0xf900003b // str x27, [x1] WORD $0x394000a8 // ldrb w8, [x5] WORD $0x7101b91f // cmp w8, #110 - WORD $0x54000241 // b.ne LBB0_543 $72(%rip) + WORD $0x54000241 // b.ne LBB0_546 $72(%rip) WORD $0x91000768 // add x8, x27, #1 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101d51f // cmp w8, #117 - WORD $0x540001a1 // b.ne LBB0_543 $52(%rip) + WORD $0x540001a1 // b.ne LBB0_546 $52(%rip) WORD $0x91000b68 // add x8, x27, #2 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x54000101 // b.ne LBB0_543 $32(%rip) + WORD $0x54000101 // b.ne LBB0_546 $32(%rip) WORD $0x91000f68 // add x8, x27, #3 WORD $0xf9000028 // str x8, [x1] WORD $0x38686928 // ldrb w8, [x9, x8] WORD $0x7101b11f // cmp w8, #108 - WORD $0x54000061 // b.ne LBB0_543 $12(%rip) -LBB0_542: + WORD $0x54000061 // b.ne LBB0_546 $12(%rip) +LBB0_545: WORD $0x91001368 // add x8, x27, #4 - WORD $0x17ffffb1 // b LBB0_520 $-316(%rip) -LBB0_543: + WORD $0x17ffffb1 // b LBB0_523 $-316(%rip) +LBB0_546: WORD $0x92800028 // mov x8, #-2 - WORD $0x17fffd13 // b LBB0_438 $-2996(%rip) -LBB0_544: + WORD $0x17ffff9a // b LBB0_515 $-408(%rip) +LBB0_547: WORD $0x8b10014c // add x12, x10, x16 WORD $0xf100057f // cmp x11, #1 - WORD $0x5400042a // b.ge LBB0_554 $132(%rip) - WORD $0x17fffcce // b LBB0_417 $-3272(%rip) -LBB0_545: + WORD $0x5400042a // b.ge LBB0_557 $132(%rip) + WORD $0x17fffcb0 // b LBB0_417 $-3392(%rip) +LBB0_548: WORD $0xaa1503e5 // mov x5, x21 WORD $0x8b1503c8 // add x8, lr, x21 - WORD $0x17ffffa8 // b LBB0_520 $-352(%rip) -LBB0_546: + WORD $0x17ffffa8 // b LBB0_523 $-352(%rip) +LBB0_549: WORD $0x8b1e00a8 // add x8, x5, lr - WORD $0x17ffffae // b LBB0_523 $-328(%rip) -LBB0_547: + WORD $0x17ffffae // b LBB0_526 $-328(%rip) +LBB0_550: WORD $0xf9400408 // ldr x8, [x0, #8] -LBB0_548: +LBB0_551: WORD $0xf9000028 // str x8, [x1] WORD $0x92800008 // mov x8, #-1 - WORD $0x17fffd06 // b LBB0_438 $-3048(%rip) -LBB0_549: + WORD $0x17ffff8d // b LBB0_515 $-460(%rip) +LBB0_552: WORD $0xcb0902a8 // sub x8, x21, x9 WORD $0x8b110108 // add x8, x8, x17 - WORD $0x17ffffa7 // b LBB0_523 $-356(%rip) -LBB0_550: + WORD $0x17ffffa7 // b LBB0_526 $-356(%rip) +LBB0_553: WORD $0x8b1100a8 // add x8, x5, x17 - WORD $0x17ffffa5 // b LBB0_523 $-364(%rip) -LBB0_551: + WORD $0x17ffffa5 // b LBB0_526 $-364(%rip) +LBB0_554: WORD $0xd100056c // sub x12, x11, #1 WORD $0xeb08019f // cmp x12, x8 - WORD $0x54ff97a0 // b.eq LBB0_417 $-3340(%rip) + WORD $0x54ff93e0 // b.eq LBB0_417 $-3460(%rip) WORD $0x8b09014c // add x12, x10, x9 WORD $0x8b08018c // add x12, x12, x8 WORD $0x9100098c // add x12, x12, #2 WORD $0xcb080168 // sub x8, x11, x8 WORD $0xd100090b // sub x11, x8, #2 WORD $0xf100057f // cmp x11, #1 - WORD $0x5400010a // b.ge LBB0_554 $32(%rip) - WORD $0x17fffcb5 // b LBB0_417 $-3372(%rip) -LBB0_553: + WORD $0x5400010a // b.ge LBB0_557 $32(%rip) + WORD $0x17fffc97 // b LBB0_417 $-3492(%rip) +LBB0_556: WORD $0x9280002d // mov x13, #-2 WORD $0x52800048 // mov w8, #2 WORD $0x8b08018c // add x12, x12, x8 WORD $0x92800008 // mov x8, #-1 WORD $0xab0d016b // adds x11, x11, x13 - WORD $0x54ff9e0d // b.le LBB0_438 $-3136(%rip) -LBB0_554: + WORD $0x54ffeeed // b.le LBB0_515 $-548(%rip) +LBB0_557: WORD $0x39400188 // ldrb w8, [x12] WORD $0x7101711f // cmp w8, #92 - WORD $0x54ffff00 // b.eq LBB0_553 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_556 $-32(%rip) WORD $0x7100891f // cmp w8, #34 - WORD $0x54000100 // b.eq LBB0_557 $32(%rip) + WORD $0x54000100 // b.eq LBB0_560 $32(%rip) WORD $0x9280000d // mov x13, #-1 WORD $0x52800028 // mov w8, #1 WORD $0x8b08018c // add x12, x12, x8 WORD $0x92800008 // mov x8, #-1 WORD $0xab0d016b // adds x11, x11, x13 - WORD $0x54fffecc // b.gt LBB0_554 $-40(%rip) - WORD $0x17fffce4 // b LBB0_438 $-3184(%rip) -LBB0_557: + WORD $0x54fffecc // b.gt LBB0_557 $-40(%rip) + WORD $0x17ffff6b // b LBB0_515 $-596(%rip) +LBB0_560: WORD $0xcb0a0188 // sub x8, x12, x10 WORD $0x91000508 // add x8, x8, #1 - WORD $0x17fffcdf // b LBB0_436 $-3204(%rip) + WORD $0x17ffff66 // b LBB0_513 $-616(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_fast_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_fast_arm64.s index 0caf27875..176caa00e 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_fast_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/skip_one_fast_arm64.s @@ -117,7 +117,7 @@ LBB0_12: LBB0_16: WORD $0x91001168 // add x8, x11, #4 WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54005ae2 // b.hs LBB0_115 $2908(%rip) + WORD $0x54005ea2 // b.hs LBB0_118 $3028(%rip) WORD $0x5280002b // mov w11, #1 WORD $0xd284c00c // mov x12, #9728 WORD $0xf2c0002c // movk x12, #1, lsl #32 @@ -131,39 +131,41 @@ LBB0_18: WORD $0x91000508 // add x8, x8, #1 WORD $0xeb08015f // cmp x10, x8 WORD $0x54ffff01 // b.ne LBB0_18 $-32(%rip) - WORD $0x140002cb // b LBB0_116 $2860(%rip) + WORD $0x140002e9 // b LBB0_119 $2980(%rip) LBB0_20: WORD $0xeb0a011f // cmp x8, x10 - WORD $0x54005922 // b.hs LBB0_116 $2852(%rip) + WORD $0x54005ce2 // b.hs LBB0_119 $2972(%rip) LBB0_21: WORD $0x91000510 // add x16, x8, #1 WORD $0xf9000030 // str x16, [x1] WORD $0x3868692a // ldrb w10, [x9, x8] WORD $0x7101695f // cmp w10, #90 - WORD $0x540006ec // b.gt LBB0_39 $220(%rip) + WORD $0x54000a6c // b.gt LBB0_40 $332(%rip) WORD $0x7100bd5f // cmp w10, #47 - WORD $0x54000b4d // b.le LBB0_44 $360(%rip) + WORD $0x54000ecd // b.le LBB0_45 $472(%rip) WORD $0x5100c14a // sub w10, w10, #48 WORD $0x7100295f // cmp w10, #10 - WORD $0x540055a2 // b.hs LBB0_110 $2740(%rip) + WORD $0x54005922 // b.hs LBB0_111 $2852(%rip) LBB0_24: WORD $0xf940040a // ldr x10, [x0, #8] - WORD $0xcb10014a // sub x10, x10, x16 - WORD $0xf100415f // cmp x10, #16 - WORD $0x540002c3 // b.lo LBB0_28 $88(%rip) + WORD $0xcb10014b // sub x11, x10, x16 + WORD $0x8b10012a // add x10, x9, x16 + WORD $0xf100417f // cmp x11, #16 + WORD $0x54000303 // b.lo LBB0_28 $96(%rip) + WORD $0xd280000c // mov x12, #0 WORD $0x4f01e580 // movi.16b v0, #44 WORD $0x4f06e7e1 // movi.16b v1, #223 WORD $0x4f02e7a2 // movi.16b v2, #93 Lloh0: - WORD $0x10fff3cb // adr x11, lCPI0_0 $-392(%rip) + WORD $0x10fff38d // adr x13, lCPI0_0 $-400(%rip) Lloh1: - WORD $0x3dc00163 // ldr q3, [x11, lCPI0_0@PAGEOFF] $0(%rip) + WORD $0x3dc001a3 // ldr q3, [x13, lCPI0_0@PAGEOFF] $0(%rip) Lloh2: - WORD $0x10fff40b // adr x11, lCPI0_1 $-384(%rip) + WORD $0x10fff3cd // adr x13, lCPI0_1 $-392(%rip) Lloh3: - WORD $0x3dc00164 // ldr q4, [x11, lCPI0_1@PAGEOFF] $0(%rip) + WORD $0x3dc001a4 // ldr q4, [x13, lCPI0_1@PAGEOFF] $0(%rip) LBB0_26: - WORD $0x3cf06925 // ldr q5, [x9, x16] + WORD $0x3dc00145 // ldr q5, [x10] WORD $0x6e208ca6 // cmeq.16b v6, v5, v0 WORD $0x4e211ca5 // and.16b v5, v5, v1 WORD $0x6e228ca5 // cmeq.16b v5, v5, v2 @@ -171,51 +173,76 @@ LBB0_26: WORD $0x4e231ca5 // and.16b v5, v5, v3 WORD $0x4e0400a5 // tbl.16b v5, { v5 }, v4 WORD $0x4e71b8a5 // addv.8h h5, v5 - WORD $0x1e2600ab // fmov w11, s5 - WORD $0x350002eb // cbnz w11, LBB0_36 $92(%rip) - WORD $0xd100414a // sub x10, x10, #16 - WORD $0x91004210 // add x16, x16, #16 - WORD $0xf1003d5f // cmp x10, #15 - WORD $0x54fffe68 // b.hi LBB0_26 $-52(%rip) + WORD $0x1e2600ad // fmov w13, s5 + WORD $0x350003ad // cbnz w13, LBB0_36 $116(%rip) + WORD $0x9100414a // add x10, x10, #16 + WORD $0xd100416b // sub x11, x11, #16 + WORD $0x9100418c // add x12, x12, #16 + WORD $0xf1003d7f // cmp x11, #15 + WORD $0x54fffe48 // b.hi LBB0_26 $-56(%rip) LBB0_28: - WORD $0x8b10012b // add x11, x9, x16 - WORD $0xb40001ea // cbz x10, LBB0_35 $60(%rip) - WORD $0x8b0a016c // add x12, x11, x10 - WORD $0xcb09016d // sub x13, x11, x9 + WORD $0xb40002ab // cbz x11, LBB0_35 $84(%rip) + WORD $0x8b0b014c // add x12, x10, x11 + WORD $0xcb09014d // sub x13, x10, x9 + WORD $0x5280002e // mov w14, #1 + WORD $0xd284c00f // mov x15, #9728 + WORD $0xf2c2002f // movk x15, #4097, lsl #32 LBB0_30: - WORD $0x3940016e // ldrb w14, [x11] - WORD $0x7100b1df // cmp w14, #44 - WORD $0x540052c0 // b.eq LBB0_112 $2648(%rip) - WORD $0x7101f5df // cmp w14, #125 - WORD $0x54005280 // b.eq LBB0_112 $2640(%rip) - WORD $0x710175df // cmp w14, #93 - WORD $0x54005240 // b.eq LBB0_112 $2632(%rip) - WORD $0x9100056b // add x11, x11, #1 + WORD $0x39400150 // ldrb w16, [x10] + WORD $0x7100b21f // cmp w16, #44 + WORD $0x9ad021d1 // lsl x17, x14, x16 + WORD $0x8a0f0231 // and x17, x17, x15 + WORD $0xfa409a24 // ccmp x17, #0, #4, ls + WORD $0x54005581 // b.ne LBB0_115 $2736(%rip) + WORD $0x7101f61f // cmp w16, #125 + WORD $0x54005540 // b.eq LBB0_115 $2728(%rip) + WORD $0x7101761f // cmp w16, #93 + WORD $0x54005500 // b.eq LBB0_115 $2720(%rip) + WORD $0x9100054a // add x10, x10, #1 WORD $0x910005ad // add x13, x13, #1 - WORD $0xf100054a // subs x10, x10, #1 - WORD $0x54fffec1 // b.ne LBB0_30 $-40(%rip) - WORD $0xaa0c03eb // mov x11, x12 + WORD $0xf100056b // subs x11, x11, #1 + WORD $0x54fffe61 // b.ne LBB0_30 $-52(%rip) + WORD $0xaa0c03ea // mov x10, x12 LBB0_35: - WORD $0xcb090169 // sub x9, x11, x9 - WORD $0x14000004 // b LBB0_37 $16(%rip) + WORD $0xcb090149 // sub x9, x10, x9 + WORD $0x1400029e // b LBB0_113 $2680(%rip) LBB0_36: - WORD $0x5ac00169 // rbit w9, w11 - WORD $0x5ac01129 // clz w9, w9 - WORD $0x8b100129 // add x9, x9, x16 -LBB0_37: - WORD $0xf9000029 // str x9, [x1] + WORD $0x5ac001ab // rbit w11, w13 + WORD $0x5ac0116b // clz w11, w11 + WORD $0xcb09014a // sub x10, x10, x9 + WORD $0x8b0b014a // add x10, x10, x11 + WORD $0xf900002a // str x10, [x1] + WORD $0xf100055f // cmp x10, #1 + WORD $0x5400530b // b.lt LBB0_114 $2656(%rip) + WORD $0x8b0c016a // add x10, x11, x12 + WORD $0x8b080129 // add x9, x9, x8 + WORD $0x5280002b // mov w11, #1 + WORD $0xd284c00c // mov x12, #9728 + WORD $0xf2c0002c // movk x12, #1, lsl #32 LBB0_38: - WORD $0xaa0803e0 // mov x0, x8 - WORD $0x1400028f // b LBB0_117 $2620(%rip) -LBB0_39: + WORD $0x386a692d // ldrb w13, [x9, x10] + WORD $0x710081bf // cmp w13, #32 + WORD $0x9acd216d // lsl x13, x11, x13 + WORD $0x8a0c01ad // and x13, x13, x12 + WORD $0xfa4099a4 // ccmp x13, #0, #4, ls + WORD $0x540051a0 // b.eq LBB0_114 $2612(%rip) + WORD $0x8b0a010d // add x13, x8, x10 + WORD $0xf900002d // str x13, [x1] + WORD $0xd100054a // sub x10, x10, #1 + WORD $0x8b0a010d // add x13, x8, x10 + WORD $0x910009ad // add x13, x13, #2 + WORD $0xf10005bf // cmp x13, #1 + WORD $0x54fffe8c // b.gt LBB0_38 $-48(%rip) + WORD $0x14000285 // b LBB0_114 $2580(%rip) +LBB0_40: WORD $0x7101b55f // cmp w10, #109 - WORD $0x5400054d // b.le LBB0_47 $168(%rip) + WORD $0x5400054d // b.le LBB0_48 $168(%rip) WORD $0x7101b95f // cmp w10, #110 - WORD $0x54002320 // b.eq LBB0_74 $1124(%rip) + WORD $0x54002320 // b.eq LBB0_75 $1124(%rip) WORD $0x7101d15f // cmp w10, #116 - WORD $0x540022e0 // b.eq LBB0_74 $1116(%rip) + WORD $0x540022e0 // b.eq LBB0_75 $1116(%rip) WORD $0x7101ed5f // cmp w10, #123 - WORD $0x54004e81 // b.ne LBB0_110 $2512(%rip) + WORD $0x54004e81 // b.ne LBB0_111 $2512(%rip) WORD $0xd2800007 // mov x7, #0 WORD $0xd280000f // mov x15, #0 WORD $0xd280000a // mov x10, #0 @@ -233,11 +260,11 @@ LBB0_39: WORD $0x91008129 // add x9, x9, #32 WORD $0x4f01e440 // movi.16b v0, #34 Lloh4: - WORD $0x10ffeb91 // adr x17, lCPI0_0 $-656(%rip) + WORD $0x10ffe811 // adr x17, lCPI0_0 $-768(%rip) Lloh5: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) Lloh6: - WORD $0x10ffebd1 // adr x17, lCPI0_1 $-648(%rip) + WORD $0x10ffe851 // adr x17, lCPI0_1 $-760(%rip) Lloh7: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 @@ -248,25 +275,25 @@ Lloh7: WORD $0x4f03e764 // movi.16b v4, #123 WORD $0x4f03e7a5 // movi.16b v5, #125 WORD $0x6f00e406 // movi.2d v6, #0000000000000000 - WORD $0x14000018 // b LBB0_51 $96(%rip) -LBB0_44: - WORD $0x34004d0a // cbz w10, LBB0_116 $2464(%rip) + WORD $0x14000018 // b LBB0_52 $96(%rip) +LBB0_45: + WORD $0x34004d4a // cbz w10, LBB0_119 $2472(%rip) WORD $0x7100895f // cmp w10, #34 - WORD $0x54001f40 // b.eq LBB0_75 $1000(%rip) + WORD $0x54001f40 // b.eq LBB0_76 $1000(%rip) WORD $0x7100b55f // cmp w10, #45 - WORD $0x54fff4c0 // b.eq LBB0_24 $-360(%rip) - WORD $0x14000251 // b LBB0_110 $2372(%rip) -LBB0_47: + WORD $0x54fff140 // b.eq LBB0_24 $-472(%rip) + WORD $0x14000251 // b LBB0_111 $2372(%rip) +LBB0_48: WORD $0x71016d5f // cmp w10, #91 - WORD $0x540027a0 // b.eq LBB0_84 $1268(%rip) + WORD $0x540027a0 // b.eq LBB0_85 $1268(%rip) WORD $0x7101995f // cmp w10, #102 - WORD $0x540049a1 // b.ne LBB0_110 $2356(%rip) + WORD $0x540049a1 // b.ne LBB0_111 $2356(%rip) WORD $0x91001509 // add x9, x8, #5 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a013f // cmp x9, x10 - WORD $0x54fff969 // b.ls LBB0_37 $-212(%rip) - WORD $0x1400025a // b LBB0_116 $2408(%rip) -LBB0_50: + WORD $0x54004a29 // b.ls LBB0_113 $2372(%rip) + WORD $0x1400025c // b LBB0_119 $2416(%rip) +LBB0_51: WORD $0x937ffce7 // asr x7, x7, #63 WORD $0x9e670267 // fmov d7, x19 WORD $0x0e2058e7 // cnt.8b v7, v7 @@ -275,10 +302,10 @@ LBB0_50: WORD $0x8b0a00aa // add x10, x5, x10 WORD $0x91010210 // add x16, x16, #64 WORD $0xaa0603e5 // mov x5, x6 -LBB0_51: - WORD $0xf10100a6 // subs x6, x5, #64 - WORD $0x540015cb // b.lt LBB0_58 $696(%rip) LBB0_52: + WORD $0xf10100a6 // subs x6, x5, #64 + WORD $0x540015cb // b.lt LBB0_59 $696(%rip) +LBB0_53: WORD $0xad404612 // ldp q18, q17, [x16] WORD $0xad411e10 // ldp q16, q7, [x16, #32] WORD $0x6e238e53 // cmeq.16b v19, v18, v3 @@ -307,11 +334,11 @@ LBB0_52: WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xaa130293 // orr x19, x20, x19 WORD $0xaa0f0274 // orr x20, x19, x15 - WORD $0xb5000094 // cbnz x20, LBB0_54 $16(%rip) + WORD $0xb5000094 // cbnz x20, LBB0_55 $16(%rip) WORD $0xd280000f // mov x15, #0 WORD $0xd2800013 // mov x19, #0 - WORD $0x1400000a // b LBB0_55 $40(%rip) -LBB0_54: + WORD $0x1400000a // b LBB0_56 $40(%rip) +LBB0_55: WORD $0x8a2f0274 // bic x20, x19, x15 WORD $0xaa1405f5 // orr x21, x15, x20, lsl #1 WORD $0x8a35026f // bic x15, x19, x21 @@ -321,7 +348,7 @@ LBB0_54: WORD $0xd37ffa73 // lsl x19, x19, #1 WORD $0xd200f273 // eor x19, x19, #0x5555555555555555 WORD $0x8a150273 // and x19, x19, x21 -LBB0_55: +LBB0_56: WORD $0x6e208e53 // cmeq.16b v19, v18, v0 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 @@ -440,8 +467,8 @@ LBB0_55: WORD $0xaa1502d5 // orr x21, x22, x21 WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xea270294 // bics x20, x20, x7 - WORD $0x54ffeae0 // b.eq LBB0_50 $-676(%rip) -LBB0_56: + WORD $0x54ffeae0 // b.eq LBB0_51 $-676(%rip) +LBB0_57: WORD $0xd1000695 // sub x21, x20, #1 WORD $0x8a1302b6 // and x22, x21, x19 WORD $0x9e6702c7 // fmov d7, x22 @@ -450,99 +477,99 @@ LBB0_56: WORD $0x1e2600f6 // fmov w22, s7 WORD $0x8b0a02d6 // add x22, x22, x10 WORD $0xeb0b02df // cmp x22, x11 - WORD $0x54003109 // b.ls LBB0_109 $1568(%rip) + WORD $0x54003109 // b.ls LBB0_110 $1568(%rip) WORD $0x9100056b // add x11, x11, #1 WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_56 $-44(%rip) - WORD $0x17ffff4a // b LBB0_50 $-728(%rip) -LBB0_58: + WORD $0x54fffea1 // b.ne LBB0_57 $-44(%rip) + WORD $0x17ffff4a // b LBB0_51 $-728(%rip) +LBB0_59: WORD $0xf10000bf // cmp x5, #0 - WORD $0x540033ed // b.le LBB0_114 $1660(%rip) + WORD $0x5400342d // b.le LBB0_117 $1668(%rip) WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0xad009be6 // stp q6, q6, [sp, #16] WORD $0x92402e13 // and x19, x16, #0xfff WORD $0xf13f067f // cmp x19, #4033 - WORD $0x54ffe9a3 // b.lo LBB0_52 $-716(%rip) + WORD $0x54ffe9a3 // b.lo LBB0_53 $-716(%rip) WORD $0xf10080b4 // subs x20, x5, #32 - WORD $0x540000a3 // b.lo LBB0_62 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_63 $20(%rip) WORD $0xacc14207 // ldp q7, q16, [x16], #32 WORD $0xad00c3e7 // stp q7, q16, [sp, #16] WORD $0xaa0903f3 // mov x19, x9 - WORD $0x14000003 // b LBB0_63 $12(%rip) -LBB0_62: + WORD $0x14000003 // b LBB0_64 $12(%rip) +LBB0_63: WORD $0x910043f3 // add x19, sp, #16 WORD $0xaa0503f4 // mov x20, x5 -LBB0_63: +LBB0_64: WORD $0xf1004295 // subs x21, x20, #16 - WORD $0x54000243 // b.lo LBB0_69 $72(%rip) + WORD $0x54000243 // b.lo LBB0_70 $72(%rip) WORD $0x3cc10607 // ldr q7, [x16], #16 WORD $0x3c810667 // str q7, [x19], #16 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10022b5 // subs x21, x21, #8 - WORD $0x540001e2 // b.hs LBB0_70 $60(%rip) -LBB0_65: - WORD $0xf1001295 // subs x21, x20, #4 - WORD $0x54000243 // b.lo LBB0_71 $72(%rip) + WORD $0x540001e2 // b.hs LBB0_71 $60(%rip) LBB0_66: + WORD $0xf1001295 // subs x21, x20, #4 + WORD $0x54000243 // b.lo LBB0_72 $72(%rip) +LBB0_67: WORD $0xb8404614 // ldr w20, [x16], #4 WORD $0xb8004674 // str w20, [x19], #4 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf1000ab5 // subs x21, x21, #2 - WORD $0x540001e2 // b.hs LBB0_72 $60(%rip) -LBB0_67: - WORD $0xb4000254 // cbz x20, LBB0_73 $72(%rip) + WORD $0x540001e2 // b.hs LBB0_73 $60(%rip) LBB0_68: + WORD $0xb4000254 // cbz x20, LBB0_74 $72(%rip) +LBB0_69: WORD $0x39400210 // ldrb w16, [x16] WORD $0x39000270 // strb w16, [x19] WORD $0x910043f0 // add x16, sp, #16 - WORD $0x17ffff32 // b LBB0_52 $-824(%rip) -LBB0_69: - WORD $0xf1002295 // subs x21, x20, #8 - WORD $0x54fffe63 // b.lo LBB0_65 $-52(%rip) + WORD $0x17ffff32 // b LBB0_53 $-824(%rip) LBB0_70: + WORD $0xf1002295 // subs x21, x20, #8 + WORD $0x54fffe63 // b.lo LBB0_66 $-52(%rip) +LBB0_71: WORD $0xf8408614 // ldr x20, [x16], #8 WORD $0xf8008674 // str x20, [x19], #8 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10012b5 // subs x21, x21, #4 - WORD $0x54fffe02 // b.hs LBB0_66 $-64(%rip) -LBB0_71: - WORD $0xf1000a95 // subs x21, x20, #2 - WORD $0x54fffe63 // b.lo LBB0_67 $-52(%rip) + WORD $0x54fffe02 // b.hs LBB0_67 $-64(%rip) LBB0_72: + WORD $0xf1000a95 // subs x21, x20, #2 + WORD $0x54fffe63 // b.lo LBB0_68 $-52(%rip) +LBB0_73: WORD $0x78402614 // ldrh w20, [x16], #2 WORD $0x78002674 // strh w20, [x19], #2 WORD $0xaa1503f4 // mov x20, x21 - WORD $0xb5fffe15 // cbnz x21, LBB0_68 $-64(%rip) -LBB0_73: - WORD $0x910043f0 // add x16, sp, #16 - WORD $0x17ffff23 // b LBB0_52 $-884(%rip) + WORD $0xb5fffe15 // cbnz x21, LBB0_69 $-64(%rip) LBB0_74: + WORD $0x910043f0 // add x16, sp, #16 + WORD $0x17ffff23 // b LBB0_53 $-884(%rip) +LBB0_75: WORD $0x91001109 // add x9, x8, #4 WORD $0xf940040a // ldr x10, [x0, #8] WORD $0xeb0a013f // cmp x9, x10 - WORD $0x54ffdbc9 // b.ls LBB0_37 $-1160(%rip) - WORD $0x1400016d // b LBB0_116 $1460(%rip) -LBB0_75: + WORD $0x54002c89 // b.ls LBB0_113 $1424(%rip) + WORD $0x1400016f // b LBB0_119 $1468(%rip) +LBB0_76: WORD $0xf940040b // ldr x11, [x0, #8] WORD $0xcb10016a // sub x10, x11, x16 WORD $0xf100815f // cmp x10, #32 - WORD $0x54002c4b // b.lt LBB0_113 $1416(%rip) + WORD $0x54002c8b // b.lt LBB0_116 $1424(%rip) WORD $0xd280000a // mov x10, #0 WORD $0xd280000d // mov x13, #0 WORD $0x8b08012c // add x12, x9, x8 WORD $0x4f01e440 // movi.16b v0, #34 Lloh8: - WORD $0x10ffc96e // adr x14, lCPI0_0 $-1748(%rip) + WORD $0x10ffc5ee // adr x14, lCPI0_0 $-1860(%rip) Lloh9: WORD $0x3dc001c1 // ldr q1, [x14, lCPI0_0@PAGEOFF] $0(%rip) WORD $0xcb08016b // sub x11, x11, x8 Lloh10: - WORD $0x10ffc98e // adr x14, lCPI0_1 $-1744(%rip) + WORD $0x10ffc60e // adr x14, lCPI0_1 $-1856(%rip) Lloh11: WORD $0x3dc001c2 // ldr q2, [x14, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x528003ee // mov w14, #31 WORD $0x4f02e783 // movi.16b v3, #92 -LBB0_77: +LBB0_78: WORD $0x8b0a018f // add x15, x12, x10 WORD $0x3cc011e4 // ldur q4, [x15, #1] WORD $0x3cc111e5 // ldur q5, [x15, #17] @@ -570,7 +597,7 @@ LBB0_77: WORD $0x33103e30 // bfi w16, w17, #16, #16 WORD $0x7100021f // cmp w16, #0 WORD $0xfa4009a0 // ccmp x13, #0, #0, eq - WORD $0x540001a0 // b.eq LBB0_79 $52(%rip) + WORD $0x540001a0 // b.eq LBB0_80 $52(%rip) WORD $0x0a2d0211 // bic w17, w16, w13 WORD $0x2a1105a0 // orr w0, w13, w17, lsl #1 WORD $0x0a20020d // bic w13, w16, w0 @@ -582,17 +609,17 @@ LBB0_77: WORD $0x0a000210 // and w16, w16, w0 WORD $0x2a3003f0 // mvn w16, w16 WORD $0x8a0f020f // and x15, x16, x15 - WORD $0x14000002 // b LBB0_80 $8(%rip) -LBB0_79: - WORD $0xd280000d // mov x13, #0 + WORD $0x14000002 // b LBB0_81 $8(%rip) LBB0_80: - WORD $0xb50024af // cbnz x15, LBB0_111 $1172(%rip) + WORD $0xd280000d // mov x13, #0 +LBB0_81: + WORD $0xb50024af // cbnz x15, LBB0_112 $1172(%rip) WORD $0x9100814a // add x10, x10, #32 WORD $0xd10081ce // sub x14, x14, #32 WORD $0x8b0e016f // add x15, x11, x14 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa4c // b.gt LBB0_77 $-184(%rip) - WORD $0xb50026ed // cbnz x13, LBB0_118 $1244(%rip) + WORD $0x54fffa4c // b.gt LBB0_78 $-184(%rip) + WORD $0xb500272d // cbnz x13, LBB0_121 $1252(%rip) WORD $0x8b08012c // add x12, x9, x8 WORD $0x8b0a018c // add x12, x12, x10 WORD $0x9100058c // add x12, x12, #1 @@ -600,9 +627,9 @@ LBB0_80: WORD $0x8b0b014a // add x10, x10, x11 WORD $0x92800000 // mov x0, #-1 WORD $0xf100055f // cmp x10, #1 - WORD $0x5400280a // b.ge LBB0_121 $1280(%rip) - WORD $0x14000126 // b LBB0_117 $1176(%rip) -LBB0_84: + WORD $0x5400284a // b.ge LBB0_124 $1288(%rip) + WORD $0x14000128 // b LBB0_120 $1184(%rip) +LBB0_85: WORD $0xd2800007 // mov x7, #0 WORD $0xd280000f // mov x15, #0 WORD $0xd280000a // mov x10, #0 @@ -620,11 +647,11 @@ LBB0_84: WORD $0x91008129 // add x9, x9, #32 WORD $0x4f01e440 // movi.16b v0, #34 Lloh12: - WORD $0x10ffbf71 // adr x17, lCPI0_0 $-2068(%rip) + WORD $0x10ffbbf1 // adr x17, lCPI0_0 $-2180(%rip) Lloh13: WORD $0x3dc00221 // ldr q1, [x17, lCPI0_0@PAGEOFF] $0(%rip) Lloh14: - WORD $0x10ffbfb1 // adr x17, lCPI0_1 $-2060(%rip) + WORD $0x10ffbc31 // adr x17, lCPI0_1 $-2172(%rip) Lloh15: WORD $0x3dc00222 // ldr q2, [x17, lCPI0_1@PAGEOFF] $0(%rip) WORD $0x4f02e783 // movi.16b v3, #92 @@ -635,8 +662,8 @@ Lloh15: WORD $0x4f02e764 // movi.16b v4, #91 WORD $0x4f02e7a5 // movi.16b v5, #93 WORD $0x6f00e406 // movi.2d v6, #0000000000000000 - WORD $0x14000009 // b LBB0_86 $36(%rip) -LBB0_85: + WORD $0x14000009 // b LBB0_87 $36(%rip) +LBB0_86: WORD $0x937ffce7 // asr x7, x7, #63 WORD $0x9e670267 // fmov d7, x19 WORD $0x0e2058e7 // cnt.8b v7, v7 @@ -645,10 +672,10 @@ LBB0_85: WORD $0x8b0a00aa // add x10, x5, x10 WORD $0x91010210 // add x16, x16, #64 WORD $0xaa0603e5 // mov x5, x6 -LBB0_86: - WORD $0xf10100a6 // subs x6, x5, #64 - WORD $0x540015cb // b.lt LBB0_93 $696(%rip) LBB0_87: + WORD $0xf10100a6 // subs x6, x5, #64 + WORD $0x540015cb // b.lt LBB0_94 $696(%rip) +LBB0_88: WORD $0xad404612 // ldp q18, q17, [x16] WORD $0xad411e10 // ldp q16, q7, [x16, #32] WORD $0x6e238e53 // cmeq.16b v19, v18, v3 @@ -677,11 +704,11 @@ LBB0_87: WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xaa130293 // orr x19, x20, x19 WORD $0xaa0f0274 // orr x20, x19, x15 - WORD $0xb5000094 // cbnz x20, LBB0_89 $16(%rip) + WORD $0xb5000094 // cbnz x20, LBB0_90 $16(%rip) WORD $0xd280000f // mov x15, #0 WORD $0xd2800013 // mov x19, #0 - WORD $0x1400000a // b LBB0_90 $40(%rip) -LBB0_89: + WORD $0x1400000a // b LBB0_91 $40(%rip) +LBB0_90: WORD $0x8a2f0274 // bic x20, x19, x15 WORD $0xaa1405f5 // orr x21, x15, x20, lsl #1 WORD $0x8a35026f // bic x15, x19, x21 @@ -691,7 +718,7 @@ LBB0_89: WORD $0xd37ffa73 // lsl x19, x19, #1 WORD $0xd200f273 // eor x19, x19, #0x5555555555555555 WORD $0x8a150273 // and x19, x19, x21 -LBB0_90: +LBB0_91: WORD $0x6e208e53 // cmeq.16b v19, v18, v0 WORD $0x4e211e73 // and.16b v19, v19, v1 WORD $0x4e020273 // tbl.16b v19, { v19 }, v2 @@ -810,8 +837,8 @@ LBB0_90: WORD $0xaa1502d5 // orr x21, x22, x21 WORD $0xaa1402b4 // orr x20, x21, x20 WORD $0xea270294 // bics x20, x20, x7 - WORD $0x54ffeae0 // b.eq LBB0_85 $-676(%rip) -LBB0_91: + WORD $0x54ffeae0 // b.eq LBB0_86 $-676(%rip) +LBB0_92: WORD $0xd1000695 // sub x21, x20, #1 WORD $0x8a1302b6 // and x22, x21, x19 WORD $0x9e6702c7 // fmov d7, x22 @@ -820,73 +847,73 @@ LBB0_91: WORD $0x1e2600f6 // fmov w22, s7 WORD $0x8b0a02d6 // add x22, x22, x10 WORD $0xeb0b02df // cmp x22, x11 - WORD $0x540006c9 // b.ls LBB0_109 $216(%rip) + WORD $0x540006c9 // b.ls LBB0_110 $216(%rip) WORD $0x9100056b // add x11, x11, #1 WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_91 $-44(%rip) - WORD $0x17ffff4a // b LBB0_85 $-728(%rip) -LBB0_93: + WORD $0x54fffea1 // b.ne LBB0_92 $-44(%rip) + WORD $0x17ffff4a // b LBB0_86 $-728(%rip) +LBB0_94: WORD $0xf10000bf // cmp x5, #0 - WORD $0x540009ad // b.le LBB0_114 $308(%rip) + WORD $0x540009ed // b.le LBB0_117 $316(%rip) WORD $0xad019be6 // stp q6, q6, [sp, #48] WORD $0xad009be6 // stp q6, q6, [sp, #16] WORD $0x92402e13 // and x19, x16, #0xfff WORD $0xf13f067f // cmp x19, #4033 - WORD $0x54ffe9a3 // b.lo LBB0_87 $-716(%rip) + WORD $0x54ffe9a3 // b.lo LBB0_88 $-716(%rip) WORD $0xf10080b4 // subs x20, x5, #32 - WORD $0x540000a3 // b.lo LBB0_97 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_98 $20(%rip) WORD $0xacc14207 // ldp q7, q16, [x16], #32 WORD $0xad00c3e7 // stp q7, q16, [sp, #16] WORD $0xaa0903f3 // mov x19, x9 - WORD $0x14000003 // b LBB0_98 $12(%rip) -LBB0_97: + WORD $0x14000003 // b LBB0_99 $12(%rip) +LBB0_98: WORD $0x910043f3 // add x19, sp, #16 WORD $0xaa0503f4 // mov x20, x5 -LBB0_98: +LBB0_99: WORD $0xf1004295 // subs x21, x20, #16 - WORD $0x54000243 // b.lo LBB0_104 $72(%rip) + WORD $0x54000243 // b.lo LBB0_105 $72(%rip) WORD $0x3cc10607 // ldr q7, [x16], #16 WORD $0x3c810667 // str q7, [x19], #16 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10022b5 // subs x21, x21, #8 - WORD $0x540001e2 // b.hs LBB0_105 $60(%rip) -LBB0_100: - WORD $0xf1001295 // subs x21, x20, #4 - WORD $0x54000243 // b.lo LBB0_106 $72(%rip) + WORD $0x540001e2 // b.hs LBB0_106 $60(%rip) LBB0_101: + WORD $0xf1001295 // subs x21, x20, #4 + WORD $0x54000243 // b.lo LBB0_107 $72(%rip) +LBB0_102: WORD $0xb8404614 // ldr w20, [x16], #4 WORD $0xb8004674 // str w20, [x19], #4 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf1000ab5 // subs x21, x21, #2 - WORD $0x540001e2 // b.hs LBB0_107 $60(%rip) -LBB0_102: - WORD $0xb4000254 // cbz x20, LBB0_108 $72(%rip) + WORD $0x540001e2 // b.hs LBB0_108 $60(%rip) LBB0_103: + WORD $0xb4000254 // cbz x20, LBB0_109 $72(%rip) +LBB0_104: WORD $0x39400210 // ldrb w16, [x16] WORD $0x39000270 // strb w16, [x19] WORD $0x910043f0 // add x16, sp, #16 - WORD $0x17ffff32 // b LBB0_87 $-824(%rip) -LBB0_104: - WORD $0xf1002295 // subs x21, x20, #8 - WORD $0x54fffe63 // b.lo LBB0_100 $-52(%rip) + WORD $0x17ffff32 // b LBB0_88 $-824(%rip) LBB0_105: + WORD $0xf1002295 // subs x21, x20, #8 + WORD $0x54fffe63 // b.lo LBB0_101 $-52(%rip) +LBB0_106: WORD $0xf8408614 // ldr x20, [x16], #8 WORD $0xf8008674 // str x20, [x19], #8 WORD $0xaa1503f4 // mov x20, x21 WORD $0xf10012b5 // subs x21, x21, #4 - WORD $0x54fffe02 // b.hs LBB0_101 $-64(%rip) -LBB0_106: - WORD $0xf1000a95 // subs x21, x20, #2 - WORD $0x54fffe63 // b.lo LBB0_102 $-52(%rip) + WORD $0x54fffe02 // b.hs LBB0_102 $-64(%rip) LBB0_107: + WORD $0xf1000a95 // subs x21, x20, #2 + WORD $0x54fffe63 // b.lo LBB0_103 $-52(%rip) +LBB0_108: WORD $0x78402614 // ldrh w20, [x16], #2 WORD $0x78002674 // strh w20, [x19], #2 WORD $0xaa1503f4 // mov x20, x21 - WORD $0xb5fffe15 // cbnz x21, LBB0_103 $-64(%rip) -LBB0_108: - WORD $0x910043f0 // add x16, sp, #16 - WORD $0x17ffff23 // b LBB0_87 $-884(%rip) + WORD $0xb5fffe15 // cbnz x21, LBB0_104 $-64(%rip) LBB0_109: + WORD $0x910043f0 // add x16, sp, #16 + WORD $0x17ffff23 // b LBB0_88 $-884(%rip) +LBB0_110: WORD $0xf9400409 // ldr x9, [x0, #8] WORD $0xdac0028a // rbit x10, x20 WORD $0xdac0114a // clz x10, x10 @@ -899,34 +926,38 @@ LBB0_109: WORD $0x9a892569 // csinc x9, x11, x9, hs WORD $0xf9000029 // str x9, [x1] WORD $0xda9f9100 // csinv x0, x8, xzr, ls - WORD $0x14000014 // b LBB0_117 $80(%rip) -LBB0_110: + WORD $0x14000016 // b LBB0_120 $88(%rip) +LBB0_111: WORD $0xf9000028 // str x8, [x1] WORD $0x92800020 // mov x0, #-2 - WORD $0x14000011 // b LBB0_117 $68(%rip) -LBB0_111: + WORD $0x14000013 // b LBB0_120 $76(%rip) +LBB0_112: WORD $0xdac001e9 // rbit x9, x15 WORD $0xdac01129 // clz x9, x9 WORD $0x8b0a010a // add x10, x8, x10 WORD $0x8b0a0129 // add x9, x9, x10 WORD $0x91000929 // add x9, x9, #2 - WORD $0x17fffd7a // b LBB0_37 $-2584(%rip) -LBB0_112: - WORD $0xf900002d // str x13, [x1] - WORD $0x17fffd79 // b LBB0_38 $-2588(%rip) LBB0_113: + WORD $0xf9000029 // str x9, [x1] +LBB0_114: + WORD $0xaa0803e0 // mov x0, x8 + WORD $0x1400000b // b LBB0_120 $44(%rip) +LBB0_115: + WORD $0xf900002d // str x13, [x1] + WORD $0x17fffffd // b LBB0_114 $-12(%rip) +LBB0_116: WORD $0x8b10012c // add x12, x9, x16 WORD $0x92800000 // mov x0, #-1 WORD $0xf100055f // cmp x10, #1 - WORD $0x540003ca // b.ge LBB0_121 $120(%rip) - WORD $0x14000004 // b LBB0_117 $16(%rip) -LBB0_114: + WORD $0x540003ca // b.ge LBB0_124 $120(%rip) + WORD $0x14000004 // b LBB0_120 $16(%rip) +LBB0_117: WORD $0xf9400408 // ldr x8, [x0, #8] -LBB0_115: +LBB0_118: WORD $0xf9000028 // str x8, [x1] -LBB0_116: +LBB0_119: WORD $0x92800000 // mov x0, #-1 -LBB0_117: +LBB0_120: WORD $0xa94afbfd // ldp fp, lr, [sp, #168] WORD $0xa949cff4 // ldp x20, x19, [sp, #152] WORD $0xa948d7f6 // ldp x22, x21, [sp, #136] @@ -935,10 +966,10 @@ LBB0_117: WORD $0xa945effc // ldp x28, x27, [sp, #88] WORD $0x910303ff // add sp, sp, #192 WORD $0xd65f03c0 // ret -LBB0_118: +LBB0_121: WORD $0xd100056c // sub x12, x11, #1 WORD $0xeb0a019f // cmp x12, x10 - WORD $0x54fffea0 // b.eq LBB0_116 $-44(%rip) + WORD $0x54fffea0 // b.eq LBB0_119 $-44(%rip) WORD $0x8b08012c // add x12, x9, x8 WORD $0x8b0a018c // add x12, x12, x10 WORD $0x9100098c // add x12, x12, #2 @@ -946,30 +977,30 @@ LBB0_118: WORD $0xd100094a // sub x10, x10, #2 WORD $0x92800000 // mov x0, #-1 WORD $0xf100055f // cmp x10, #1 - WORD $0x540000ea // b.ge LBB0_121 $28(%rip) - WORD $0x17ffffed // b LBB0_117 $-76(%rip) -LBB0_120: + WORD $0x540000ea // b.ge LBB0_124 $28(%rip) + WORD $0x17ffffed // b LBB0_120 $-76(%rip) +LBB0_123: WORD $0x9280002b // mov x11, #-2 WORD $0x5280004d // mov w13, #2 WORD $0x8b0d018c // add x12, x12, x13 WORD $0xab0b014a // adds x10, x10, x11 - WORD $0x54fffd0d // b.le LBB0_117 $-96(%rip) -LBB0_121: + WORD $0x54fffd0d // b.le LBB0_120 $-96(%rip) +LBB0_124: WORD $0x3940018b // ldrb w11, [x12] WORD $0x7101717f // cmp w11, #92 - WORD $0x54ffff20 // b.eq LBB0_120 $-28(%rip) + WORD $0x54ffff20 // b.eq LBB0_123 $-28(%rip) WORD $0x7100897f // cmp w11, #34 - WORD $0x540000e0 // b.eq LBB0_124 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_127 $28(%rip) WORD $0x9280000b // mov x11, #-1 WORD $0x5280002d // mov w13, #1 WORD $0x8b0d018c // add x12, x12, x13 WORD $0xab0b014a // adds x10, x10, x11 - WORD $0x54fffeec // b.gt LBB0_121 $-36(%rip) - WORD $0x17ffffdd // b LBB0_117 $-140(%rip) -LBB0_124: + WORD $0x54fffeec // b.gt LBB0_124 $-36(%rip) + WORD $0x17ffffdd // b LBB0_120 $-140(%rip) +LBB0_127: WORD $0xcb090189 // sub x9, x12, x9 WORD $0x91000529 // add x9, x9, #1 - WORD $0x17fffd49 // b LBB0_37 $-2780(%rip) + WORD $0x17ffffcd // b LBB0_113 $-204(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 diff --git a/vendor/github.com/bytedance/sonic/internal/native/neon/validate_one_arm64.s b/vendor/github.com/bytedance/sonic/internal/native/neon/validate_one_arm64.s index faaae30be..6e80e93d8 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/neon/validate_one_arm64.s +++ b/vendor/github.com/bytedance/sonic/internal/native/neon/validate_one_arm64.s @@ -69,7 +69,7 @@ _validate_one: WORD $0xa90dfbfd // stp fp, lr, [sp, #216] WORD $0xa93ffbfd // stp fp, lr, [sp, #-8] WORD $0xd10023fd // sub fp, sp, #8 - WORD $0xaa0003fb // mov x27, x0 + WORD $0xaa0003fe // mov lr, x0 Lloh0: WORD $0x10fffd28 // adr x8, lCPI0_0 $-92(%rip) Lloh1: @@ -83,7 +83,7 @@ Lloh1: WORD $0x5280002c // mov w12, #1 WORD $0xd284c00d // mov x13, #9728 WORD $0xf2c0002d // movk x13, #1, lsl #32 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x4f01e440 // movi.16b v0, #34 WORD $0x4f02e781 // movi.16b v1, #92 Lloh2: @@ -112,12 +112,12 @@ Lloh5: WORD $0x6f00e417 // movi.2d v23, #0000000000000000 WORD $0x4f03e778 // movi.16b v24, #123 WORD $0x4f03e7b9 // movi.16b v25, #125 - WORD $0x52800036 // mov w22, #1 + WORD $0x52800037 // mov w23, #1 LBB0_1: - WORD $0xa9403b7e // ldp lr, x14, [x27] + WORD $0xa9403bd4 // ldp x20, x14, [lr] WORD $0xeb0e027f // cmp x19, x14 WORD $0x54000162 // b.hs LBB0_6 $44(%rip) - WORD $0x38736bc8 // ldrb w8, [lr, x19] + WORD $0x38736a88 // ldrb w8, [x20, x19] WORD $0x7100351f // cmp w8, #13 WORD $0x54000100 // b.eq LBB0_6 $32(%rip) WORD $0x7100811f // cmp w8, #32 @@ -131,7 +131,7 @@ LBB0_6: WORD $0x91000668 // add x8, x19, #1 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_10 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_10 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -143,7 +143,7 @@ LBB0_10: WORD $0x91000a68 // add x8, x19, #2 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_14 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_14 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -155,7 +155,7 @@ LBB0_14: WORD $0x91000e68 // add x8, x19, #3 WORD $0xeb0e011f // cmp x8, x14 WORD $0x54000122 // b.hs LBB0_18 $36(%rip) - WORD $0x38686bc0 // ldrb w0, [lr, x8] + WORD $0x38686a80 // ldrb w0, [x20, x8] WORD $0x7100341f // cmp w0, #13 WORD $0x540000c0 // b.eq LBB0_18 $24(%rip) WORD $0x7100801f // cmp w0, #32 @@ -166,9 +166,9 @@ LBB0_14: LBB0_18: WORD $0x91001268 // add x8, x19, #4 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x540171c2 // b.hs LBB0_576 $11832(%rip) + WORD $0x540178a2 // b.hs LBB0_589 $12052(%rip) LBB0_19: - WORD $0x38686bcf // ldrb w15, [lr, x8] + WORD $0x38686a8f // ldrb w15, [x20, x8] WORD $0x710081ff // cmp w15, #32 WORD $0x9acf218f // lsl x15, x12, x15 WORD $0x8a0d01ef // and x15, x15, x13 @@ -177,17 +177,17 @@ LBB0_19: WORD $0x91000508 // add x8, x8, #1 WORD $0xeb0801df // cmp x14, x8 WORD $0x54ffff01 // b.ne LBB0_19 $-32(%rip) - WORD $0x14000b85 // b LBB0_577 $11796(%rip) + WORD $0x14000bbc // b LBB0_590 $12016(%rip) LBB0_21: WORD $0xeb0e011f // cmp x8, x14 - WORD $0x54017062 // b.hs LBB0_577 $11788(%rip) + WORD $0x54017742 // b.hs LBB0_590 $12008(%rip) LBB0_22: WORD $0x91000513 // add x19, x8, #1 WORD $0xf9000033 // str x19, [x1] - WORD $0x8b0803c6 // add x6, lr, x8 + WORD $0x8b080286 // add x6, x20, x8 WORD $0x394000c5 // ldrb w5, [x6] - WORD $0x34016fc5 // cbz w5, LBB0_577 $11768(%rip) - WORD $0xd10006ce // sub x14, x22, #1 + WORD $0x340176a5 // cbz w5, LBB0_590 $11988(%rip) + WORD $0xd10006ee // sub x14, x23, #1 WORD $0xf86e7920 // ldr x0, [x9, x14, lsl #3] WORD $0xb100057f // cmn x11, #1 WORD $0x9a8b010b // csel x11, x8, x11, eq @@ -200,20 +200,20 @@ LBB0_22: WORD $0x71000c1f // cmp w0, #3 WORD $0x54001a01 // b.ne LBB0_60 $832(%rip) WORD $0x710088bf // cmp w5, #34 - WORD $0x540160c1 // b.ne LBB0_542 $11288(%rip) + WORD $0x540167a1 // b.ne LBB0_555 $11508(%rip) WORD $0x5280008f // mov w15, #4 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] WORD $0x37303203 // tbnz w3, #6, LBB0_114 $1600(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372845c3 // tbnz w3, #5, LBB0_142 $2232(%rip) - WORD $0x540160a0 // b.eq LBB0_545 $11284(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400f963 // b.lo LBB0_366 $7980(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372848c3 // tbnz w3, #5, LBB0_147 $2328(%rip) + WORD $0x54016780 // b.eq LBB0_558 $11504(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400ff63 // b.lo LBB0_376 $8172(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_33: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -239,42 +239,42 @@ LBB0_33: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_37 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_38 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_39 $88(%rip) LBB0_36: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_33 $-236(%rip) - WORD $0x14000774 // b LBB0_360 $7632(%rip) + WORD $0x140007a4 // b LBB0_370 $7824(%rip) LBB0_37: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -283,14 +283,14 @@ LBB0_37: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_38: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_36 $-80(%rip) LBB0_39: @@ -298,8 +298,8 @@ LBB0_39: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f8baf3 // tbz x19, #63, LBB0_283 $5980(%rip) - WORD $0x14000aac // b LBB0_544 $10928(%rip) + WORD $0xb6f93153 // tbz x19, #63, LBB0_478 $9768(%rip) + WORD $0x14000ae3 // b LBB0_557 $11148(%rip) LBB0_40: WORD $0x7100101f // cmp w0, #4 WORD $0x54000d40 // b.eq LBB0_58 $424(%rip) @@ -311,17 +311,17 @@ LBB0_40: WORD $0x54002061 // b.ne LBB0_99 $1036(%rip) WORD $0x5280004f // mov w15, #2 WORD $0xf82e792f // str x15, [x9, x14, lsl #3] - WORD $0x373031a3 // tbnz w3, #6, LBB0_133 $1588(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x372851c3 // tbnz w3, #5, LBB0_182 $2616(%rip) - WORD $0x540153e0 // b.eq LBB0_545 $10876(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400fd43 // b.lo LBB0_395 $8104(%rip) + WORD $0x373034a3 // tbnz w3, #6, LBB0_138 $1684(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x372854c3 // tbnz w3, #5, LBB0_187 $2712(%rip) + WORD $0x54015ac0 // b.eq LBB0_558 $11096(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x54010343 // b.lo LBB0_405 $8296(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 LBB0_49: - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -347,42 +347,42 @@ LBB0_49: WORD $0x4e221d3e // and.16b v30, v9, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260358 // fmov w24, s26 + WORD $0x1e260359 // fmov w25, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260359 // fmov w25, s26 + WORD $0x1e26035a // fmov w26, s26 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 + WORD $0xaa1601e5 // orr x5, x15, x22 WORD $0xb5000105 // cbnz x5, LBB0_53 $32(%rip) WORD $0xb5000186 // cbnz x6, LBB0_54 $48(%rip) WORD $0xb50002ce // cbnz x14, LBB0_55 $88(%rip) LBB0_52: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 + WORD $0xf100feff // cmp x23, #63 WORD $0x54fff8a8 // b.hi LBB0_49 $-236(%rip) - WORD $0x140007a3 // b LBB0_392 $7820(%rip) + WORD $0x140007d3 // b LBB0_402 $8012(%rip) LBB0_53: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 @@ -391,14 +391,14 @@ LBB0_53: WORD $0x9a8f1000 // csel x0, x0, x15, ne LBB0_54: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 WORD $0xb4fffd8e // cbz x14, LBB0_52 $-80(%rip) LBB0_55: @@ -406,19 +406,19 @@ LBB0_55: WORD $0xdac011ce // clz x14, x14 WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f85593 // tbz x19, #63, LBB0_194 $2736(%rip) - WORD $0x14000a46 // b LBB0_544 $10520(%rip) + WORD $0xb6f85893 // tbz x19, #63, LBB0_199 $2832(%rip) + WORD $0x14000a7d // b LBB0_557 $10740(%rip) LBB0_56: WORD $0x7100b0bf // cmp w5, #44 WORD $0x54001820 // b.eq LBB0_110 $772(%rip) WORD $0x710174bf // cmp w5, #93 WORD $0x540014c0 // b.eq LBB0_101 $664(%rip) - WORD $0x14000a3d // b LBB0_542 $10484(%rip) + WORD $0x14000a74 // b LBB0_555 $10704(%rip) LBB0_58: WORD $0x7100e8bf // cmp w5, #58 - WORD $0x54014761 // b.ne LBB0_542 $10476(%rip) + WORD $0x54014e41 // b.ne LBB0_555 $10696(%rip) WORD $0xf82e793f // str xzr, [x9, x14, lsl #3] - WORD $0x1400056b // b LBB0_284 $5548(%rip) + WORD $0x1400091e // b LBB0_480 $9336(%rip) LBB0_60: WORD $0xf900004e // str x14, [x2] WORD $0x92800020 // mov x0, #-2 @@ -427,36 +427,36 @@ LBB0_60: LBB0_61: WORD $0x5100c0ae // sub w14, w5, #48 WORD $0x710029df // cmp w14, #10 - WORD $0x54003c02 // b.hs LBB0_155 $1920(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54003f02 // b.hs LBB0_160 $2016(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0x37301f43 // tbnz w3, #6, LBB0_121 $1000(%rip) WORD $0xeb0801ce // subs x14, x14, x8 - WORD $0x540146e0 // b.eq LBB0_546 $10460(%rip) + WORD $0x54014dc0 // b.eq LBB0_559 $10680(%rip) WORD $0x394000cf // ldrb w15, [x6] WORD $0x7100c1ff // cmp w15, #48 WORD $0x540001a1 // b.ne LBB0_68 $52(%rip) WORD $0xf10005df // cmp x14, #1 - WORD $0x5400aae0 // b.eq LBB0_283 $5468(%rip) - WORD $0x38736bcf // ldrb w15, [lr, x19] + WORD $0x54012140 // b.eq LBB0_478 $9256(%rip) + WORD $0x38736a8f // ldrb w15, [x20, x19] WORD $0x5100b9e0 // sub w0, w15, #46 WORD $0x7100dc1f // cmp w0, #55 - WORD $0x5400aa68 // b.hi LBB0_283 $5452(%rip) + WORD $0x540120c8 // b.hi LBB0_478 $9240(%rip) WORD $0x9ac0218f // lsl x15, x12, x0 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x5400a9a0 // b.eq LBB0_283 $5428(%rip) + WORD $0x54012000 // b.eq LBB0_478 $9216(%rip) LBB0_68: WORD $0xf10041df // cmp x14, #16 - WORD $0x54011363 // b.lo LBB0_458 $8812(%rip) + WORD $0x54011963 // b.lo LBB0_468 $9004(%rip) WORD $0xd2800005 // mov x5, #0 - WORD $0xd280001a // mov x26, #0 - WORD $0x92800016 // mov x22, #-1 + WORD $0xd280001b // mov x27, #0 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800013 // mov x19, #-1 WORD $0x92800000 // mov x0, #-1 LBB0_70: - WORD $0x3cfa68da // ldr q26, [x6, x26] + WORD $0x3cfb68da // ldr q26, [x6, x27] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 WORD $0x6e278f5d // cmeq.16b v29, v26, v7 @@ -475,133 +475,133 @@ LBB0_70: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0x2a3503f5 // mvn w21, w21 - WORD $0x32103eb5 // orr w21, w21, #0xffff0000 - WORD $0x5ac002b5 // rbit w21, w21 - WORD $0x5ac012b5 // clz w21, w21 - WORD $0x1ad52238 // lsl w24, w17, w21 - WORD $0x0a3801f9 // bic w25, w15, w24 - WORD $0x0a380291 // bic w17, w20, w24 - WORD $0x0a3802e7 // bic w7, w23, w24 - WORD $0x710042bf // cmp w21, #16 - WORD $0x1a9901f8 // csel w24, w15, w25, eq - WORD $0x1a910294 // csel w20, w20, w17, eq - WORD $0x1a8702f9 // csel w25, w23, w7, eq - WORD $0x5100070f // sub w15, w24, #1 - WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x5400d5e1 // b.ne LBB0_364 $6844(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x5400d281 // b.ne LBB0_358 $6736(%rip) + WORD $0x1e260356 // fmov w22, s26 + WORD $0x2a3603f6 // mvn w22, w22 + WORD $0x32103ed6 // orr w22, w22, #0xffff0000 + WORD $0x5ac002d6 // rbit w22, w22 + WORD $0x5ac012d6 // clz w22, w22 + WORD $0x1ad62239 // lsl w25, w17, w22 + WORD $0x0a3901fa // bic w26, w15, w25 + WORD $0x0a3902b1 // bic w17, w21, w25 + WORD $0x0a390307 // bic w7, w24, w25 + WORD $0x710042df // cmp w22, #16 + WORD $0x1a9a01f9 // csel w25, w15, w26, eq + WORD $0x1a9102b5 // csel w21, w21, w17, eq + WORD $0x1a87031a // csel w26, w24, w7, eq WORD $0x5100072f // sub w15, w25, #1 WORD $0x6a1901ef // ands w15, w15, w25 - WORD $0x5400d221 // b.ne LBB0_358 $6724(%rip) - WORD $0x340000d8 // cbz w24, LBB0_76 $24(%rip) - WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 + WORD $0x5400dbe1 // b.ne LBB0_374 $7036(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x5400d881 // b.ne LBB0_368 $6928(%rip) + WORD $0x5100074f // sub w15, w26, #1 + WORD $0x6a1a01ef // ands w15, w15, w26 + WORD $0x5400d821 // b.ne LBB0_368 $6916(%rip) + WORD $0x340000d9 // cbz w25, LBB0_76 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 WORD $0xb100041f // cmn x0, #1 - WORD $0x5400e5e1 // b.ne LBB0_394 $7356(%rip) - WORD $0x8b170340 // add x0, x26, x23 + WORD $0x5400ebe1 // b.ne LBB0_404 $7548(%rip) + WORD $0x8b180360 // add x0, x27, x24 LBB0_76: - WORD $0x340000d4 // cbz w20, LBB0_79 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x340000d5 // cbz w21, LBB0_79 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb100067f // cmn x19, #1 - WORD $0x5400d281 // b.ne LBB0_362 $6736(%rip) - WORD $0x8b140353 // add x19, x26, x20 + WORD $0x5400d881 // b.ne LBB0_372 $6928(%rip) + WORD $0x8b150373 // add x19, x27, x21 LBB0_79: - WORD $0x340000d9 // cbz w25, LBB0_82 $24(%rip) - WORD $0x5ac0032f // rbit w15, w25 - WORD $0x5ac011f4 // clz w20, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x5400d1c1 // b.ne LBB0_362 $6712(%rip) - WORD $0x8b140356 // add x22, x26, x20 + WORD $0x340000da // cbz w26, LBB0_82 $24(%rip) + WORD $0x5ac0034f // rbit w15, w26 + WORD $0x5ac011f5 // clz w21, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x5400d7c1 // b.ne LBB0_372 $6904(%rip) + WORD $0x8b150377 // add x23, x27, x21 LBB0_82: - WORD $0x710042bf // cmp w21, #16 - WORD $0x540033c1 // b.ne LBB0_167 $1656(%rip) - WORD $0x9100435a // add x26, x26, #16 + WORD $0x710042df // cmp w22, #16 + WORD $0x540036c1 // b.ne LBB0_172 $1752(%rip) + WORD $0x9100437b // add x27, x27, #16 WORD $0xd10040a5 // sub x5, x5, #16 - WORD $0x8b0501d5 // add x21, x14, x5 - WORD $0xf1003ebf // cmp x21, #15 + WORD $0x8b0501d6 // add x22, x14, x5 + WORD $0xf1003edf // cmp x22, #15 WORD $0x54fff6a8 // b.hi LBB0_70 $-300(%rip) - WORD $0x8b1a00c5 // add x5, x6, x26 - WORD $0xeb1a01df // cmp x14, x26 - WORD $0x54003300 // b.eq LBB0_168 $1632(%rip) + WORD $0x8b1b00c5 // add x5, x6, x27 + WORD $0xeb1b01df // cmp x14, x27 + WORD $0x54003600 // b.eq LBB0_173 $1728(%rip) LBB0_85: - WORD $0x8b1500b9 // add x25, x5, x21 + WORD $0x8b1600ba // add x26, x5, x22 WORD $0xaa2503ee // mvn x14, x5 - WORD $0x8b1e010f // add x15, x8, lr + WORD $0x8b14010f // add x15, x8, x20 WORD $0x8b0f01ce // add x14, x14, x15 - WORD $0xcb0600ba // sub x26, x5, x6 - WORD $0xaa0503fe // mov lr, x5 + WORD $0xcb0600b4 // sub x20, x5, x6 + WORD $0xaa0503fb // mov x27, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x14000009 // b LBB0_88 $36(%rip) LBB0_86: WORD $0xb100067f // cmn x19, #1 - WORD $0xaa1a03f3 // mov x19, x26 + WORD $0xaa1403f3 // mov x19, x20 WORD $0x540003a1 // b.ne LBB0_97 $116(%rip) LBB0_87: WORD $0xd10005ce // sub x14, x14, #1 - WORD $0x9100075a // add x26, x26, #1 - WORD $0xaa1e03e5 // mov x5, lr - WORD $0xd10006b5 // sub x21, x21, #1 - WORD $0xb400a5d5 // cbz x21, LBB0_294 $5304(%rip) + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1b03e5 // mov x5, x27 + WORD $0xd10006d6 // sub x22, x22, #1 + WORD $0xb400abd6 // cbz x22, LBB0_304 $5496(%rip) LBB0_88: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0x38401775 // ldrb w21, [x27], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 WORD $0x54ffff03 // b.lo LBB0_87 $-32(%rip) - WORD $0x7100b69f // cmp w20, #45 + WORD $0x7100b6bf // cmp w21, #45 WORD $0x5400016d // b.le LBB0_94 $44(%rip) - WORD $0x7101969f // cmp w20, #101 + WORD $0x710196bf // cmp w21, #101 WORD $0x54fffe20 // b.eq LBB0_86 $-60(%rip) - WORD $0x7101169f // cmp w20, #69 + WORD $0x710116bf // cmp w21, #69 WORD $0x54fffde0 // b.eq LBB0_86 $-68(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54002f81 // b.ne LBB0_168 $1520(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54003281 // b.ne LBB0_173 $1616(%rip) WORD $0xb100041f // cmn x0, #1 - WORD $0xaa1a03e0 // mov x0, x26 + WORD $0xaa1403e0 // mov x0, x20 WORD $0x54fffda0 // b.eq LBB0_87 $-76(%rip) WORD $0x14000008 // b LBB0_97 $32(%rip) LBB0_94: - WORD $0x7100ae9f // cmp w20, #43 + WORD $0x7100aebf // cmp w21, #43 WORD $0x54000060 // b.eq LBB0_96 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x54002e81 // b.ne LBB0_168 $1488(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x54003181 // b.ne LBB0_173 $1584(%rip) LBB0_96: - WORD $0xb10006df // cmn x22, #1 - WORD $0xaa1a03f6 // mov x22, x26 + WORD $0xb10006ff // cmn x23, #1 + WORD $0xaa1403f7 // mov x23, x20 WORD $0x54fffca0 // b.eq LBB0_87 $-108(%rip) LBB0_97: - WORD $0x5280007a // mov w26, #3 - WORD $0x14000191 // b LBB0_180 $1604(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x140001a9 // b LBB0_185 $1700(%rip) LBB0_98: WORD $0x7100b0bf // cmp w5, #44 WORD $0x540004a0 // b.eq LBB0_112 $148(%rip) LBB0_99: WORD $0x7101f4bf // cmp w5, #125 WORD $0x54000080 // b.eq LBB0_101 $16(%rip) - WORD $0x1400099b // b LBB0_542 $9836(%rip) + WORD $0x140009d2 // b LBB0_555 $10056(%rip) LBB0_100: WORD $0x710174bf // cmp w5, #93 WORD $0x540000c1 // b.ne LBB0_102 $24(%rip) LBB0_101: WORD $0xf900004e // str x14, [x2] - WORD $0xaa0e03f6 // mov x22, x14 + WORD $0xaa0e03f7 // mov x23, x14 WORD $0xaa0b03e0 // mov x0, x11 WORD $0xb5ffc80e // cbnz x14, LBB0_1 $-1792(%rip) - WORD $0x140009ff // b LBB0_578 $10236(%rip) + WORD $0x14000a36 // b LBB0_591 $10456(%rip) LBB0_102: WORD $0xf82e792c // str x12, [x9, x14, lsl #3] WORD $0x92800020 // mov x0, #-2 @@ -609,40 +609,40 @@ LBB0_102: WORD $0x54ffeb8d // b.le LBB0_61 $-656(%rip) LBB0_103: WORD $0x7101b4bf // cmp w5, #109 - WORD $0x5400298d // b.le LBB0_162 $1328(%rip) + WORD $0x54002c8d // b.le LBB0_167 $1424(%rip) WORD $0x7101b8bf // cmp w5, #110 - WORD $0x540041a0 // b.eq LBB0_200 $2100(%rip) + WORD $0x540044a0 // b.eq LBB0_205 $2196(%rip) WORD $0x7101d0bf // cmp w5, #116 - WORD $0x54004000 // b.eq LBB0_198 $2048(%rip) + WORD $0x54004300 // b.eq LBB0_203 $2144(%rip) WORD $0x7101ecbf // cmp w5, #123 - WORD $0x54013e61 // b.ne LBB0_578 $10188(%rip) - WORD $0x37304f43 // tbnz w3, #6, LBB0_218 $2536(%rip) + WORD $0x54014541 // b.ne LBB0_591 $10408(%rip) + WORD $0x37305243 // tbnz w3, #6, LBB0_223 $2632(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x540130cc // b.gt LBB0_543 $9752(%rip) + WORD $0x540137ac // b.gt LBB0_556 $9972(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ce // mov w14, #6 - WORD $0x140001f4 // b LBB0_197 $2000(%rip) + WORD $0x1400020c // b LBB0_202 $2096(%rip) LBB0_110: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x5401300c // b.gt LBB0_543 $9728(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x540136ec // b.gt LBB0_556 $9948(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793f // str xzr, [x9, x22, lsl #3] - WORD $0x140004ac // b LBB0_284 $4784(%rip) + WORD $0xf837793f // str xzr, [x9, x23, lsl #3] + WORD $0x1400085f // b LBB0_480 $8572(%rip) LBB0_112: - WORD $0xf13ffedf // cmp x22, #4095 - WORD $0x54012f4c // b.gt LBB0_543 $9704(%rip) - WORD $0x910006c8 // add x8, x22, #1 + WORD $0xf13ffeff // cmp x23, #4095 + WORD $0x5401362c // b.gt LBB0_556 $9924(%rip) + WORD $0x910006e8 // add x8, x23, #1 WORD $0xf9000048 // str x8, [x2] - WORD $0xf836793a // str x26, [x9, x22, lsl #3] - WORD $0x140004a6 // b LBB0_284 $4760(%rip) + WORD $0xf837793b // str x27, [x9, x23, lsl #3] + WORD $0x14000859 // b LBB0_480 $8548(%rip) LBB0_114: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400c44b // b.lt LBB0_359 $6280(%rip) + WORD $0x5400ca4b // b.lt LBB0_369 $6472(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 @@ -650,13 +650,13 @@ LBB0_114: WORD $0x14000008 // b LBB0_118 $32(%rip) LBB0_116: WORD $0xd2800005 // mov x5, #0 - WORD $0xb50005b5 // cbnz x21, LBB0_120 $180(%rip) + WORD $0xb50005b6 // cbnz x22, LBB0_120 $180(%rip) LBB0_117: WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x5400c10d // b.le LBB0_356 $6176(%rip) + WORD $0x5400c70d // b.le LBB0_366 $6368(%rip) LBB0_118: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] @@ -665,51 +665,52 @@ LBB0_118: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq WORD $0x54fffbc0 // b.eq LBB0_116 $-136(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0xb4fffab5 // cbz x21, LBB0_117 $-172(%rip) + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0xb4fffab6 // cbz x22, LBB0_117 $-172(%rip) LBB0_120: - WORD $0xdac002af // rbit x15, x21 + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910009d3 // add x19, x14, #2 - WORD $0x14000465 // b LBB0_283 $4500(%rip) + WORD $0x14000818 // b LBB0_478 $8288(%rip) LBB0_121: WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_124 $60(%rip) -LBB0_122: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_125 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_123: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -717,48 +718,72 @@ LBB0_122: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x35008aa0 // cbnz w0, LBB0_282 $4436(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000365 // cbnz w5, LBB0_133 $108(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_122 $-52(%rip) -LBB0_124: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb40001ee // cbz x14, LBB0_131 $60(%rip) + WORD $0x54fffe48 // b.hi LBB0_123 $-56(%rip) +LBB0_125: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xd284c013 // mov x19, #9728 + WORD $0xf2c20033 // movk x19, #4097, lsl #32 + WORD $0xb400020e // cbz x14, LBB0_132 $64(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_126: +LBB0_127: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x540089a0 // b.eq LBB0_283 $4404(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54008960 // b.eq LBB0_283 $4396(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1301ef // and x15, x15, x19 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_132 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54008920 // b.eq LBB0_283 $4388(%rip) + WORD $0x540000e0 // b.eq LBB0_132 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_132 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_126 $-40(%rip) -LBB0_130: + WORD $0x54fffe81 // b.ne LBB0_127 $-48(%rip) WORD $0xaa0503e0 // mov x0, x5 -LBB0_131: - WORD $0xcb1e0013 // sub x19, x0, lr LBB0_132: - WORD $0x5280007a // mov w26, #3 - WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x12800011 // mov w17, #-1 - WORD $0x1400043f // b LBB0_283 $4348(%rip) + WORD $0xcb140013 // sub x19, x0, x20 + WORD $0x140007f0 // b LBB0_478 $8128(%rip) LBB0_133: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x5400fd6b // b.lt LBB0_479 $8108(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_135: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54009480 // b.eq LBB0_303 $4752(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_135 $-48(%rip) +LBB0_137: + WORD $0x91000413 // add x19, x0, #1 + WORD $0x140007db // b LBB0_479 $8044(%rip) +LBB0_138: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400baeb // b.lt LBB0_365 $5980(%rip) + WORD $0x5400bdeb // b.lt LBB0_375 $6076(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_135: +LBB0_140: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -766,63 +791,63 @@ LBB0_135: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x54000180 // b.eq LBB0_137 $48(%rip) - WORD $0x0a25028f // bic w15, w20, w5 - WORD $0x2a0f04b6 // orr w22, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 - WORD $0x0a3600a5 // bic w5, w5, w22 + WORD $0x54000180 // b.eq LBB0_142 $48(%rip) + WORD $0x0a2502af // bic w15, w21, w5 + WORD $0x2a0f04b7 // orr w23, w5, w15, lsl #1 + WORD $0x0a0402a5 // and w5, w21, w4 + WORD $0x0a3700a5 // bic w5, w5, w23 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 - WORD $0x0a1601ef // and w15, w15, w22 + WORD $0x0a1701ef // and w15, w15, w23 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_138 $8(%rip) -LBB0_137: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_143 $8(%rip) +LBB0_142: WORD $0xd2800005 // mov x5, #0 -LBB0_138: - WORD $0xb5000f55 // cbnz x21, LBB0_152 $488(%rip) +LBB0_143: + WORD $0xb5000f56 // cbnz x22, LBB0_157 $488(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa6c // b.gt LBB0_135 $-180(%rip) - WORD $0xb500f185 // cbnz x5, LBB0_468 $7728(%rip) + WORD $0x54fffa6c // b.gt LBB0_140 $-180(%rip) + WORD $0xb500f565 // cbnz x5, LBB0_481 $7852(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400f32a // b.ge LBB0_471 $7780(%rip) - WORD $0x1400093d // b LBB0_577 $9460(%rip) -LBB0_142: - WORD $0x54011b00 // b.eq LBB0_545 $9056(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b883 // b.lo LBB0_372 $5904(%rip) + WORD $0x5400f70a // b.ge LBB0_484 $7904(%rip) + WORD $0x1400095c // b LBB0_590 $9584(%rip) +LBB0_147: + WORD $0x54011ee0 // b.eq LBB0_558 $9180(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400bb83 // b.lo LBB0_382 $6000(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_145: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_150: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -844,40 +869,40 @@ LBB0_145: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_150 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_151 $152(%rip) -LBB0_147: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_155 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_156 $152(%rip) +LBB0_152: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -892,44 +917,44 @@ LBB0_147: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb500042e // cbnz x14, LBB0_153 $132(%rip) - WORD $0xb50111a5 // cbnz x5, LBB0_551 $8756(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500042e // cbnz x14, LBB0_158 $132(%rip) + WORD $0xb5011585 // cbnz x5, LBB0_564 $8880(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_145 $-340(%rip) - WORD $0x1400052f // b LBB0_361 $5308(%rip) -LBB0_150: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_150 $-340(%rip) + WORD $0x14000547 // b LBB0_371 $5404(%rip) +LBB0_155: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_151: +LBB0_156: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_147 $-188(%rip) -LBB0_152: - WORD $0xdac002af // rbit x15, x21 + WORD $0x17ffffd1 // b LBB0_152 $-188(%rip) +LBB0_157: + WORD $0xdac002cf // rbit x15, x22 WORD $0xdac011ef // clz x15, x15 WORD $0x8b0e010e // add x14, x8, x14 WORD $0x8b0e01ee // add x14, x15, x14 @@ -937,82 +962,82 @@ LBB0_152: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54001983 // b.lo LBB0_195 $816(%rip) - WORD $0x140008c8 // b LBB0_578 $8992(%rip) -LBB0_153: + WORD $0x54001983 // b.lo LBB0_200 $816(%rip) + WORD $0x140008e7 // b LBB0_591 $9116(%rip) +LBB0_158: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54011783 // b.lo LBB0_574 $8944(%rip) + WORD $0x54011b63 // b.lo LBB0_587 $9068(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6f87053 // tbz x19, #63, LBB0_283 $3592(%rip) - WORD $0x14000857 // b LBB0_544 $8540(%rip) -LBB0_155: + WORD $0xb6f8e3b3 // tbz x19, #63, LBB0_478 $7284(%rip) + WORD $0x14000876 // b LBB0_557 $8664(%rip) +LBB0_160: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001cc0 // b.eq LBB0_206 $920(%rip) + WORD $0x54001cc0 // b.eq LBB0_211 $920(%rip) WORD $0x7100b4bf // cmp w5, #45 - WORD $0x54011741 // b.ne LBB0_578 $8936(%rip) - WORD $0x37306ae3 // tbnz w3, #6, LBB0_273 $3420(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d9 // subs x25, x14, x19 - WORD $0x54011520 // b.eq LBB0_570 $8868(%rip) - WORD $0x8b1303c0 // add x0, lr, x19 + WORD $0x54011b21 // b.ne LBB0_591 $9060(%rip) + WORD $0x37306ae3 // tbnz w3, #6, LBB0_278 $3420(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301da // subs x26, x14, x19 + WORD $0x54011900 // b.eq LBB0_583 $8992(%rip) + WORD $0x8b130280 // add x0, x20, x19 WORD $0x3940000e // ldrb w14, [x0] WORD $0x7100c1df // cmp w14, #48 - WORD $0x54008881 // b.ne LBB0_309 $4368(%rip) - WORD $0xf100073f // cmp x25, #1 - WORD $0x540086e1 // b.ne LBB0_307 $4316(%rip) -LBB0_161: + WORD $0x54008b81 // b.ne LBB0_319 $4464(%rip) + WORD $0xf100075f // cmp x26, #1 + WORD $0x540089e1 // b.ne LBB0_317 $4412(%rip) +LBB0_166: WORD $0x5280002e // mov w14, #1 - WORD $0x140004e0 // b LBB0_355 $4992(%rip) -LBB0_162: + WORD $0x140004f8 // b LBB0_365 $5088(%rip) +LBB0_167: WORD $0x71016cbf // cmp w5, #91 - WORD $0x540019c0 // b.eq LBB0_203 $824(%rip) + WORD $0x540019c0 // b.eq LBB0_208 $824(%rip) WORD $0x710198bf // cmp w5, #102 - WORD $0x54011541 // b.ne LBB0_578 $8872(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54011921 // b.ne LBB0_591 $8996(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd10011cf // sub x15, x14, #4 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x54010942 // b.hs LBB0_550 $8488(%rip) - WORD $0xb8736bce // ldr w14, [lr, x19] + WORD $0x54010d22 // b.hs LBB0_563 $8612(%rip) + WORD $0xb8736a8e // ldr w14, [x20, x19] WORD $0x528d8c2f // mov w15, #27745 WORD $0x72acae6f // movk w15, #25971, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54010ee1 // b.ne LBB0_563 $8668(%rip) + WORD $0x540112c1 // b.ne LBB0_576 $8792(%rip) WORD $0x91001513 // add x19, x8, #5 - WORD $0x14000362 // b LBB0_283 $3464(%rip) -LBB0_167: - WORD $0x8b3540ce // add x14, x6, w21, uxtw - WORD $0x8b1a01c5 // add x5, x14, x26 -LBB0_168: + WORD $0x140006fd // b LBB0_478 $7156(%rip) +LBB0_172: + WORD $0x8b3640ce // add x14, x6, w22, uxtw + WORD $0x8b1b01c5 // add x5, x14, x27 +LBB0_173: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4010740 // cbz x0, LBB0_547 $8424(%rip) -LBB0_169: - WORD $0xb4010736 // cbz x22, LBB0_547 $8420(%rip) - WORD $0xb4010713 // cbz x19, LBB0_547 $8416(%rip) + WORD $0xb4010b20 // cbz x0, LBB0_560 $8548(%rip) +LBB0_174: + WORD $0xb4010b17 // cbz x23, LBB0_560 $8544(%rip) + WORD $0xb4010af3 // cbz x19, LBB0_560 $8540(%rip) WORD $0xcb0600ae // sub x14, x5, x6 WORD $0xd10005c5 // sub x5, x14, #1 WORD $0xeb05001f // cmp x0, x5 - WORD $0x54000300 // b.eq LBB0_179 $96(%rip) - WORD $0xeb0502df // cmp x22, x5 - WORD $0x540002c0 // b.eq LBB0_179 $88(%rip) + WORD $0x54000300 // b.eq LBB0_184 $96(%rip) + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x540002c0 // b.eq LBB0_184 $88(%rip) WORD $0xeb05027f // cmp x19, x5 - WORD $0x54000280 // b.eq LBB0_179 $80(%rip) - WORD $0xf10006cf // subs x15, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0x54000280 // b.eq LBB0_184 $80(%rip) + WORD $0xf10006ef // subs x15, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x5400006b // b.lt LBB0_176 $12(%rip) + WORD $0x5400006b // b.lt LBB0_181 $12(%rip) WORD $0xeb0f027f // cmp x19, x15 - WORD $0x54010561 // b.ne LBB0_548 $8364(%rip) -LBB0_176: + WORD $0x54010941 // b.ne LBB0_561 $8488(%rip) +LBB0_181: WORD $0xaa130005 // orr x5, x0, x19 - WORD $0xb7f80065 // tbnz x5, #63, LBB0_178 $12(%rip) + WORD $0xb7f80065 // tbnz x5, #63, LBB0_183 $12(%rip) WORD $0xeb13001f // cmp x0, x19 - WORD $0x5401062a // b.ge LBB0_553 $8388(%rip) -LBB0_178: + WORD $0x54010a0a // b.ge LBB0_566 $8512(%rip) +LBB0_183: WORD $0xd37ffcaf // lsr x15, x5, #63 WORD $0x520001ef // eor w15, w15, #0x1 WORD $0xd1000671 // sub x17, x19, #1 @@ -1021,23 +1046,23 @@ LBB0_178: WORD $0x6a1101ff // tst w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0xda9301ce // csinv x14, x14, x19, eq - WORD $0x14000004 // b LBB0_180 $16(%rip) -LBB0_179: + WORD $0x14000004 // b LBB0_185 $16(%rip) +LBB0_184: WORD $0xcb0e03ee // neg x14, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_180: - WORD $0xb7f9032e // tbnz x14, #63, LBB0_547 $8292(%rip) +LBB0_185: + WORD $0xb7f9070e // tbnz x14, #63, LBB0_560 $8416(%rip) WORD $0x8b0e0113 // add x19, x8, x14 - WORD $0x1400033b // b LBB0_283 $3308(%rip) -LBB0_182: - WORD $0x54010240 // b.eq LBB0_545 $8264(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400b063 // b.lo LBB0_401 $5644(%rip) + WORD $0x140006d6 // b LBB0_478 $7000(%rip) +LBB0_187: + WORD $0x54010620 // b.eq LBB0_558 $8388(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b363 // b.lo LBB0_411 $5740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_185: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_190: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -1059,40 +1084,40 @@ LBB0_185: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218fbe // cmeq.16b v30, v29, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f9e // cmeq.16b v30, v28, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d8 // fmov w24, s30 + WORD $0x1e2603d9 // fmov w25, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d9 // fmov w25, s30 + WORD $0x1e2603da // fmov w26, s30 WORD $0xd3607ca5 // lsl x5, x5, #32 - WORD $0xaa14c0a5 // orr x5, x5, x20, lsl #48 + WORD $0xaa15c0a5 // orr x5, x5, x21, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f00af // orr x15, x5, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607f0f // lsl x15, x24, #32 - WORD $0xaa19c1ef // orr x15, x15, x25, lsl #48 - WORD $0x53103ee5 // lsl w5, w23, #16 + WORD $0xd3607f2f // lsl x15, x25, #32 + WORD $0xaa1ac1ef // orr x15, x15, x26, lsl #48 + WORD $0x53103f05 // lsl w5, w24, #16 WORD $0xaa0501ef // orr x15, x15, x5 - WORD $0xaa1501e5 // orr x5, x15, x21 - WORD $0xb5000445 // cbnz x5, LBB0_190 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_191 $152(%rip) -LBB0_187: + WORD $0xaa1601e5 // orr x5, x15, x22 + WORD $0xb5000445 // cbnz x5, LBB0_195 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_196 $152(%rip) +LBB0_192: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -1107,115 +1132,115 @@ LBB0_187: WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260374 // fmov w20, s27 + WORD $0x1e260375 // fmov w21, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 - WORD $0xd3607e94 // lsl x20, x20, #32 - WORD $0xaa15c294 // orr x20, x20, x21, lsl #48 + WORD $0x1e260356 // fmov w22, s26 + WORD $0xd3607eb5 // lsl x21, x21, #32 + WORD $0xaa16c2b5 // orr x21, x21, x22, lsl #48 WORD $0x53103ca5 // lsl w5, w5, #16 - WORD $0xaa050285 // orr x5, x20, x5 + WORD $0xaa0502a5 // orr x5, x21, x5 WORD $0xaa0f00a5 // orr x5, x5, x15 - WORD $0xb50002ee // cbnz x14, LBB0_192 $92(%rip) - WORD $0xb500f8e5 // cbnz x5, LBB0_551 $7964(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb50002ee // cbnz x14, LBB0_197 $92(%rip) + WORD $0xb500fcc5 // cbnz x5, LBB0_564 $8088(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_185 $-340(%rip) - WORD $0x140004fe // b LBB0_393 $5112(%rip) -LBB0_190: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_190 $-340(%rip) + WORD $0x14000516 // b LBB0_403 $5208(%rip) +LBB0_195: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_191: +LBB0_196: WORD $0x8a2600af // bic x15, x5, x6 - WORD $0xaa0f04d4 // orr x20, x6, x15, lsl #1 - WORD $0x8a3400a5 // bic x5, x5, x20 + WORD $0xaa0f04d5 // orr x21, x6, x15, lsl #1 + WORD $0x8a3500a5 // bic x5, x5, x21 WORD $0x9201f0a5 // and x5, x5, #0xaaaaaaaaaaaaaaaa WORD $0xab0f00af // adds x15, x5, x15 WORD $0x1a9f37e6 // cset w6, hs WORD $0xd37ff9ef // lsl x15, x15, #1 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 - WORD $0x8a1401ef // and x15, x15, x20 + WORD $0x8a1501ef // and x15, x15, x21 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x17ffffd1 // b LBB0_187 $-188(%rip) -LBB0_192: + WORD $0x17ffffd1 // b LBB0_192 $-188(%rip) +LBB0_197: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011e5 // clz x5, x15 WORD $0xeb0e00bf // cmp x5, x14 - WORD $0x54010003 // b.lo LBB0_574 $8192(%rip) + WORD $0x540103e3 // b.lo LBB0_587 $8316(%rip) WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb7f8f393 // tbnz x19, #63, LBB0_544 $7792(%rip) -LBB0_194: + WORD $0xb7f8f773 // tbnz x19, #63, LBB0_557 $7916(%rip) +LBB0_199: WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xb27ff7ee // mov x14, #9223372036854775806 WORD $0xeb0e011f // cmp x8, x14 - WORD $0x5400ffc8 // b.hi LBB0_578 $8184(%rip) -LBB0_195: + WORD $0x540103a8 // b.hi LBB0_591 $8308(%rip) +LBB0_200: WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400f24c // b.gt LBB0_543 $7752(%rip) + WORD $0x5400f62c // b.gt LBB0_556 $7876(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x5280008e // mov w14, #4 -LBB0_197: +LBB0_202: WORD $0xf828792e // str x14, [x9, x8, lsl #3] - WORD $0x140002bd // b LBB0_284 $2804(%rip) -LBB0_198: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x14000658 // b LBB0_480 $6496(%rip) +LBB0_203: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f2c2 // b.hs LBB0_550 $7768(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f6a2 // b.hs LBB0_563 $7892(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528e4e8f // mov w15, #29300 WORD $0x72acaeaf // movk w15, #25973, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x54000180 // b.eq LBB0_202 $48(%rip) - WORD $0x14000797 // b LBB0_554 $7772(%rip) -LBB0_200: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0x54000180 // b.eq LBB0_207 $48(%rip) + WORD $0x140007b6 // b LBB0_567 $7896(%rip) +LBB0_205: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xd1000dcf // sub x15, x14, #3 WORD $0xeb0f011f // cmp x8, x15 - WORD $0x5400f162 // b.hs LBB0_550 $7724(%rip) - WORD $0x8b1303ce // add x14, lr, x19 + WORD $0x5400f542 // b.hs LBB0_563 $7848(%rip) + WORD $0x8b13028e // add x14, x20, x19 WORD $0xb85ff1ce // ldur w14, [x14, #-1] WORD $0x528eadcf // mov w15, #30062 WORD $0x72ad8d8f // movk w15, #27756, lsl #16 WORD $0x6b0f01df // cmp w14, w15 - WORD $0x5400f421 // b.ne LBB0_558 $7812(%rip) -LBB0_202: + WORD $0x5400f801 // b.ne LBB0_571 $7936(%rip) +LBB0_207: WORD $0x91001113 // add x19, x8, #4 - WORD $0x140002a2 // b LBB0_283 $2696(%rip) -LBB0_203: - WORD $0x37302d23 // tbnz w3, #6, LBB0_245 $1444(%rip) + WORD $0x1400063d // b LBB0_478 $6388(%rip) +LBB0_208: + WORD $0x37302d23 // tbnz w3, #6, LBB0_250 $1444(%rip) WORD $0xf9400048 // ldr x8, [x2] WORD $0xf13ffd1f // cmp x8, #4095 - WORD $0x5400ee4c // b.gt LBB0_543 $7624(%rip) + WORD $0x5400f22c // b.gt LBB0_556 $7748(%rip) WORD $0x9100050e // add x14, x8, #1 WORD $0xf900004e // str x14, [x2] WORD $0x528000ae // mov w14, #5 - WORD $0x17ffffe0 // b LBB0_197 $-128(%rip) -LBB0_206: - WORD $0x37305423 // tbnz w3, #6, LBB0_285 $2692(%rip) - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xeb1301d6 // subs x22, x14, x19 - WORD $0x37285c23 // tbnz w3, #5, LBB0_295 $2948(%rip) - WORD $0x5400eda0 // b.eq LBB0_545 $7604(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x5400ad03 // b.lo LBB0_432 $5536(%rip) + WORD $0x17ffffe0 // b LBB0_202 $-128(%rip) +LBB0_211: + WORD $0x37305423 // tbnz w3, #6, LBB0_290 $2692(%rip) + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xeb1301d7 // subs x23, x14, x19 + WORD $0x37285f23 // tbnz w3, #5, LBB0_305 $3044(%rip) + WORD $0x5400f180 // b.eq LBB0_558 $7728(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x5400b003 // b.lo LBB0_442 $5632(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_211: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_216: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad406dda // ldp q26, q27, [x14] WORD $0xad4175dc // ldp q28, q29, [x14, #32] WORD $0x6e208f5e // cmeq.16b v30, v26, v0 @@ -1249,43 +1274,43 @@ LBB0_211: WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f9a // and.16b v26, v28, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x4e221fba // and.16b v26, v29, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260357 // fmov w23, s26 + WORD $0x1e260358 // fmov w24, s26 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000145 // cbnz x5, LBB0_215 $40(%rip) - WORD $0xb50001c6 // cbnz x6, LBB0_216 $56(%rip) + WORD $0xb5000145 // cbnz x5, LBB0_220 $40(%rip) + WORD $0xb50001c6 // cbnz x6, LBB0_221 $56(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb500032e // cbnz x14, LBB0_217 $100(%rip) -LBB0_214: - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500032e // cbnz x14, LBB0_222 $100(%rip) +LBB0_219: + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff868 // b.hi LBB0_211 $-244(%rip) - WORD $0x1400051f // b LBB0_429 $5244(%rip) -LBB0_215: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff868 // b.hi LBB0_216 $-244(%rip) + WORD $0x14000537 // b LBB0_439 $5340(%rip) +LBB0_220: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_216: +LBB0_221: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -1296,24 +1321,24 @@ LBB0_216: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4fffd2e // cbz x14, LBB0_214 $-92(%rip) -LBB0_217: + WORD $0xb4fffd2e // cbz x14, LBB0_219 $-92(%rip) +LBB0_222: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 - WORD $0x140002fc // b LBB0_306 $3056(%rip) -LBB0_218: + WORD $0x14000314 // b LBB0_316 $3152(%rip) +LBB0_223: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_220 $40(%rip) -LBB0_219: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_225 $40(%rip) +LBB0_224: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1323,12 +1348,12 @@ LBB0_219: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_220: +LBB0_225: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_228 $748(%rip) -LBB0_221: + WORD $0x5400176b // b.lt LBB0_233 $748(%rip) +LBB0_226: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1357,11 +1382,11 @@ LBB0_221: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_223 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_228 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_224 $44(%rip) -LBB0_223: + WORD $0x1400000b // b LBB0_229 $44(%rip) +LBB0_228: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1372,7 +1397,7 @@ LBB0_223: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_224: +LBB0_229: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1403,47 +1428,47 @@ LBB0_224: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1495,104 +1520,104 @@ LBB0_224: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_219 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_224 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_226: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_231: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54002789 // b.ls LBB0_272 $1264(%rip) + WORD $0x54002789 // b.ls LBB0_277 $1264(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_226 $-44(%rip) - WORD $0x17ffff3a // b LBB0_219 $-792(%rip) -LBB0_228: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_231 $-44(%rip) + WORD $0x17ffff3a // b LBB0_224 $-792(%rip) +LBB0_233: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400d4ad // b.le LBB0_575 $6804(%rip) + WORD $0x5400d88d // b.le LBB0_588 $6928(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_240 $112(%rip) + WORD $0x54000383 // b.lo LBB0_245 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_232 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_237 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_233 $12(%rip) -LBB0_232: + WORD $0x14000003 // b LBB0_238 $12(%rip) +LBB0_237: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_233: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_241 $80(%rip) +LBB0_238: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_246 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_242 $68(%rip) -LBB0_235: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_243 $80(%rip) -LBB0_236: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_247 $68(%rip) +LBB0_240: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_248 $80(%rip) +LBB0_241: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_244 $68(%rip) -LBB0_237: - WORD $0xb4000065 // cbz x5, LBB0_239 $12(%rip) -LBB0_238: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_249 $68(%rip) +LBB0_242: + WORD $0xb4000065 // cbz x5, LBB0_244 $12(%rip) +LBB0_243: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_239: +LBB0_244: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_240: - WORD $0x5280007a // mov w26, #3 +LBB0_245: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_221 $-892(%rip) -LBB0_241: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_235 $-60(%rip) -LBB0_242: + WORD $0x17ffff21 // b LBB0_226 $-892(%rip) +LBB0_246: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_240 $-60(%rip) +LBB0_247: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_236 $-72(%rip) -LBB0_243: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_237 $-60(%rip) -LBB0_244: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_241 $-72(%rip) +LBB0_248: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_242 $-60(%rip) +LBB0_249: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_238 $-72(%rip) - WORD $0x17ffffef // b LBB0_239 $-68(%rip) -LBB0_245: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_243 $-72(%rip) + WORD $0x17ffffef // b LBB0_244 $-68(%rip) +LBB0_250: WORD $0xf90017ff // str xzr, [sp, #40] WORD $0xd2800007 // mov x7, #0 WORD $0xd2800000 // mov x0, #0 WORD $0xd2800006 // mov x6, #0 - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301cf // sub x15, x14, x19 - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_247 $40(%rip) -LBB0_246: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_252 $40(%rip) +LBB0_251: WORD $0x937ffdce // asr x14, x14, #63 WORD $0xf90017ee // str x14, [sp, #40] WORD $0x9e6700ba // fmov d26, x5 @@ -1602,12 +1627,12 @@ LBB0_246: WORD $0x8b0001c0 // add x0, x14, x0 WORD $0x91010273 // add x19, x19, #64 WORD $0xa941bfe7 // ldp x7, x15, [sp, #24] -LBB0_247: +LBB0_252: WORD $0xf10101ee // subs x14, x15, #64 WORD $0xf90013ee // str x14, [sp, #32] WORD $0xf9000bef // str x15, [sp, #16] - WORD $0x5400176b // b.lt LBB0_255 $748(%rip) -LBB0_248: + WORD $0x5400176b // b.lt LBB0_260 $748(%rip) +LBB0_253: WORD $0xad40727d // ldp q29, q28, [x19] WORD $0xad416a7b // ldp q27, q26, [x19, #32] WORD $0x6e218fbe // cmeq.16b v30, v29, v1 @@ -1636,11 +1661,11 @@ LBB0_248: WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 WORD $0xaa0701cf // orr x15, x14, x7 - WORD $0xb500008f // cbnz x15, LBB0_250 $16(%rip) + WORD $0xb500008f // cbnz x15, LBB0_255 $16(%rip) WORD $0xf9000fff // str xzr, [sp, #24] WORD $0xd280000e // mov x14, #0 - WORD $0x1400000b // b LBB0_251 $44(%rip) -LBB0_250: + WORD $0x1400000b // b LBB0_256 $44(%rip) +LBB0_255: WORD $0x8a2701cf // bic x15, x14, x7 WORD $0xaa0f04f1 // orr x17, x7, x15, lsl #1 WORD $0x8a3101ce // bic x14, x14, x17 @@ -1651,7 +1676,7 @@ LBB0_250: WORD $0xd37ff9ce // lsl x14, x14, #1 WORD $0xd200f1ce // eor x14, x14, #0x5555555555555555 WORD $0x8a1101ce // and x14, x14, x17 -LBB0_251: +LBB0_256: WORD $0x6e208fbe // cmeq.16b v30, v29, v0 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 @@ -1682,47 +1707,47 @@ LBB0_251: WORD $0x9203e1d1 // and x17, x14, #0x2222222222222222 WORD $0x9202e1c5 // and x5, x14, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 - WORD $0xb200e3f9 // mov x25, #1229782938247303441 - WORD $0x9b197de7 // mul x7, x15, x25 - WORD $0xb201e3f8 // mov x24, #-8608480567731124088 - WORD $0xf2e11118 // movk x24, #2184, lsl #48 - WORD $0x9b187e34 // mul x20, x17, x24 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb202e3f7 // mov x23, #4919131752989213764 - WORD $0xf2e08897 // movk x23, #1092, lsl #48 - WORD $0x9b177cb4 // mul x20, x5, x23 - WORD $0xb203e3f5 // mov x21, #2459565876494606882 - WORD $0xf2e04455 // movk x21, #546, lsl #48 - WORD $0x9b157dd5 // mul x21, x14, x21 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xca1400e7 // eor x7, x7, x20 - WORD $0xb203e3fe // mov lr, #2459565876494606882 - WORD $0x9b1e7df4 // mul x20, x15, lr + WORD $0xb200e3fa // mov x26, #1229782938247303441 + WORD $0x9b1a7de7 // mul x7, x15, x26 + WORD $0xb201e3f9 // mov x25, #-8608480567731124088 + WORD $0xf2e11119 // movk x25, #2184, lsl #48 WORD $0x9b197e35 // mul x21, x17, x25 - WORD $0xca150294 // eor x20, x20, x21 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb202e3f8 // mov x24, #4919131752989213764 + WORD $0xf2e08898 // movk x24, #1092, lsl #48 WORD $0x9b187cb5 // mul x21, x5, x24 - WORD $0x9b177dd7 // mul x23, x14, x23 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xca150294 // eor x20, x20, x21 - WORD $0xb202e3f6 // mov x22, #4919131752989213764 - WORD $0x9b167df5 // mul x21, x15, x22 - WORD $0x9b1e7e37 // mul x23, x17, lr - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0x9b197cb7 // mul x23, x5, x25 + WORD $0xb203e3f6 // mov x22, #2459565876494606882 + WORD $0xf2e04456 // movk x22, #546, lsl #48 + WORD $0x9b167dd6 // mul x22, x14, x22 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xca1500e7 // eor x7, x7, x21 + WORD $0xb203e3f4 // mov x20, #2459565876494606882 + WORD $0x9b147df5 // mul x21, x15, x20 + WORD $0x9b1a7e36 // mul x22, x17, x26 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0x9b197cb6 // mul x22, x5, x25 WORD $0x9b187dd8 // mul x24, x14, x24 - WORD $0xca1802f7 // eor x23, x23, x24 - WORD $0xca1702b5 // eor x21, x21, x23 - WORD $0xb201e3f7 // mov x23, #-8608480567731124088 - WORD $0x9b177def // mul x15, x15, x23 - WORD $0x9b167e31 // mul x17, x17, x22 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xca1602b5 // eor x21, x21, x22 + WORD $0xb202e3f7 // mov x23, #4919131752989213764 + WORD $0x9b177df6 // mul x22, x15, x23 + WORD $0x9b147e38 // mul x24, x17, x20 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0x9b1a7cb8 // mul x24, x5, x26 + WORD $0x9b197dd9 // mul x25, x14, x25 + WORD $0xca190318 // eor x24, x24, x25 + WORD $0xca1802d6 // eor x22, x22, x24 + WORD $0xb201e3f8 // mov x24, #-8608480567731124088 + WORD $0x9b187def // mul x15, x15, x24 + WORD $0x9b177e31 // mul x17, x17, x23 WORD $0xca1101ef // eor x15, x15, x17 - WORD $0x9b1e7cb1 // mul x17, x5, lr - WORD $0x9b197dce // mul x14, x14, x25 + WORD $0x9b147cb1 // mul x17, x5, x20 + WORD $0x9b1a7dce // mul x14, x14, x26 WORD $0xca0e022e // eor x14, x17, x14 WORD $0xca0e01ee // eor x14, x15, x14 WORD $0x9200e0ef // and x15, x7, #0x1111111111111111 - WORD $0x9203e291 // and x17, x20, #0x2222222222222222 - WORD $0x9202e2a5 // and x5, x21, #0x4444444444444444 + WORD $0x9203e2b1 // and x17, x21, #0x2222222222222222 + WORD $0x9202e2c5 // and x5, x22, #0x4444444444444444 WORD $0x9201e1ce // and x14, x14, #0x8888888888888888 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0e00ae // orr x14, x5, x14 @@ -1774,118 +1799,119 @@ LBB0_251: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0xd3607ce7 // lsl x7, x7, #32 - WORD $0xaa14c0e7 // orr x7, x7, x20, lsl #48 + WORD $0xaa15c0e7 // orr x7, x7, x21, lsl #48 WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100f1 // orr x17, x7, x17 WORD $0xaa0f022f // orr x15, x17, x15 - WORD $0xea2e01f4 // bics x20, x15, x14 - WORD $0x54ffe900 // b.eq LBB0_246 $-736(%rip) + WORD $0xea2e01f5 // bics x21, x15, x14 + WORD $0x54ffe900 // b.eq LBB0_251 $-736(%rip) WORD $0x92f00007 // mov x7, #9223372036854775807 -LBB0_253: - WORD $0xd1000695 // sub x21, x20, #1 - WORD $0x8a0502af // and x15, x21, x5 +LBB0_258: + WORD $0xd10006b6 // sub x22, x21, #1 + WORD $0x8a0502cf // and x15, x22, x5 WORD $0x9e6701fa // fmov d26, x15 WORD $0x0e205b5a // cnt.8b v26, v26 WORD $0x2e303b5a // uaddlv.8b h26, v26 WORD $0x1e26034f // fmov w15, s26 WORD $0x8b0001ef // add x15, x15, x0 WORD $0xeb0601ff // cmp x15, x6 - WORD $0x54000729 // b.ls LBB0_272 $228(%rip) + WORD $0x54000729 // b.ls LBB0_277 $228(%rip) WORD $0x910004c6 // add x6, x6, #1 - WORD $0xea1402b4 // ands x20, x21, x20 - WORD $0x54fffea1 // b.ne LBB0_253 $-44(%rip) - WORD $0x17ffff3a // b LBB0_246 $-792(%rip) -LBB0_255: + WORD $0xea1502d5 // ands x21, x22, x21 + WORD $0x54fffea1 // b.ne LBB0_258 $-44(%rip) + WORD $0x17ffff3a // b LBB0_251 $-792(%rip) +LBB0_260: WORD $0xf10001ff // cmp x15, #0 - WORD $0x5400b44d // b.le LBB0_575 $5768(%rip) + WORD $0x5400b82d // b.le LBB0_588 $5892(%rip) WORD $0xaa0703f1 // mov x17, x7 WORD $0xad02dff7 // stp q23, q23, [sp, #80] WORD $0xad01dff7 // stp q23, q23, [sp, #48] WORD $0x92402e6e // and x14, x19, #0xfff WORD $0xf13f05df // cmp x14, #4033 - WORD $0x54000383 // b.lo LBB0_267 $112(%rip) + WORD $0x54000383 // b.lo LBB0_272 $112(%rip) WORD $0xf9400bee // ldr x14, [sp, #16] WORD $0xf10081c5 // subs x5, x14, #32 - WORD $0x540000a3 // b.lo LBB0_259 $20(%rip) + WORD $0x540000a3 // b.lo LBB0_264 $20(%rip) WORD $0xacc16e7a // ldp q26, q27, [x19], #32 WORD $0xad01effa // stp q26, q27, [sp, #48] WORD $0xaa0a03ee // mov x14, x10 - WORD $0x14000003 // b LBB0_260 $12(%rip) -LBB0_259: + WORD $0x14000003 // b LBB0_265 $12(%rip) +LBB0_264: WORD $0x9100c3ee // add x14, sp, #48 WORD $0xf9400be5 // ldr x5, [sp, #16] -LBB0_260: - WORD $0xf10040b4 // subs x20, x5, #16 - WORD $0x54000283 // b.lo LBB0_268 $80(%rip) +LBB0_265: + WORD $0xf10040b5 // subs x21, x5, #16 + WORD $0x54000283 // b.lo LBB0_273 $80(%rip) WORD $0x3cc1067a // ldr q26, [x19], #16 WORD $0x3c8105da // str q26, [x14], #16 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1002294 // subs x20, x20, #8 - WORD $0x54000222 // b.hs LBB0_269 $68(%rip) -LBB0_262: - WORD $0xf10010b4 // subs x20, x5, #4 - WORD $0x54000283 // b.lo LBB0_270 $80(%rip) -LBB0_263: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10022b5 // subs x21, x21, #8 + WORD $0x54000222 // b.hs LBB0_274 $68(%rip) +LBB0_267: + WORD $0xf10010b5 // subs x21, x5, #4 + WORD $0x54000283 // b.lo LBB0_275 $80(%rip) +LBB0_268: WORD $0xb840466f // ldr w15, [x19], #4 WORD $0xb80045cf // str w15, [x14], #4 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1000a94 // subs x20, x20, #2 - WORD $0x54000222 // b.hs LBB0_271 $68(%rip) -LBB0_264: - WORD $0xb4000065 // cbz x5, LBB0_266 $12(%rip) -LBB0_265: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf1000ab5 // subs x21, x21, #2 + WORD $0x54000222 // b.hs LBB0_276 $68(%rip) +LBB0_269: + WORD $0xb4000065 // cbz x5, LBB0_271 $12(%rip) +LBB0_270: WORD $0x3940026f // ldrb w15, [x19] WORD $0x390001cf // strb w15, [x14] -LBB0_266: +LBB0_271: WORD $0x9100c3f3 // add x19, sp, #48 -LBB0_267: - WORD $0x5280007a // mov w26, #3 +LBB0_272: + WORD $0x5280007b // mov w27, #3 WORD $0xaa1103e7 // mov x7, x17 - WORD $0x17ffff21 // b LBB0_248 $-892(%rip) -LBB0_268: - WORD $0xf10020b4 // subs x20, x5, #8 - WORD $0x54fffe23 // b.lo LBB0_262 $-60(%rip) -LBB0_269: + WORD $0x17ffff21 // b LBB0_253 $-892(%rip) +LBB0_273: + WORD $0xf10020b5 // subs x21, x5, #8 + WORD $0x54fffe23 // b.lo LBB0_267 $-60(%rip) +LBB0_274: WORD $0xf840866f // ldr x15, [x19], #8 WORD $0xf80085cf // str x15, [x14], #8 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xf1001294 // subs x20, x20, #4 - WORD $0x54fffdc2 // b.hs LBB0_263 $-72(%rip) -LBB0_270: - WORD $0xf10008b4 // subs x20, x5, #2 - WORD $0x54fffe23 // b.lo LBB0_264 $-60(%rip) -LBB0_271: + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xf10012b5 // subs x21, x21, #4 + WORD $0x54fffdc2 // b.hs LBB0_268 $-72(%rip) +LBB0_275: + WORD $0xf10008b5 // subs x21, x5, #2 + WORD $0x54fffe23 // b.lo LBB0_269 $-60(%rip) +LBB0_276: WORD $0x7840266f // ldrh w15, [x19], #2 WORD $0x780025cf // strh w15, [x14], #2 - WORD $0xaa1403e5 // mov x5, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_265 $-72(%rip) - WORD $0x17ffffef // b LBB0_266 $-68(%rip) -LBB0_272: - WORD $0xf940076e // ldr x14, [x27, #8] - WORD $0xdac0028f // rbit x15, x20 + WORD $0xaa1503e5 // mov x5, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_270 $-72(%rip) + WORD $0x17ffffef // b LBB0_271 $-68(%rip) +LBB0_277: + WORD $0xf94007ce // ldr x14, [lr, #8] + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 WORD $0xf9400bf1 // ldr x17, [sp, #16] WORD $0xcb1101ef // sub x15, x15, x17 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005cf // add x15, x14, #1 WORD $0xf900002f // str x15, [x1] - WORD $0xf9400771 // ldr x17, [x27, #8] + WORD $0xf94007d1 // ldr x17, [lr, #8] WORD $0xeb1101ff // cmp x15, x17 WORD $0x9a8e2633 // csinc x19, x17, x14, hs WORD $0x12800011 // mov w17, #-1 WORD $0xf9000033 // str x19, [x1] WORD $0xda9f9100 // csinv x0, x8, xzr, ls - WORD $0xb6f80560 // tbz x0, #63, LBB0_284 $172(%rip) - WORD $0x14000563 // b LBB0_578 $5516(%rip) -LBB0_273: - WORD $0xf940076e // ldr x14, [x27, #8] + WORD $0xb6f878c0 // tbz x0, #63, LBB0_480 $3864(%rip) + WORD $0x14000582 // b LBB0_591 $5640(%rip) +LBB0_278: + WORD $0xf94007ce // ldr x14, [lr, #8] WORD $0xcb1301ce // sub x14, x14, x19 WORD $0xf10041df // cmp x14, #16 - WORD $0x540001e3 // b.lo LBB0_276 $60(%rip) -LBB0_274: - WORD $0x3cf36bda // ldr q26, [lr, x19] + WORD $0x54000223 // b.lo LBB0_282 $68(%rip) + WORD $0xd2800000 // mov x0, #0 +LBB0_280: + WORD $0x3cf36a9a // ldr q26, [x20, x19] WORD $0x6e348f5b // cmeq.16b v27, v26, v20 WORD $0x4e321f5a // and.16b v26, v26, v18 WORD $0x6e358f5a // cmeq.16b v26, v26, v21 @@ -1893,54 +1919,51 @@ LBB0_274: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260340 // fmov w0, s26 - WORD $0x350002a0 // cbnz w0, LBB0_282 $84(%rip) + WORD $0x1e260345 // fmov w5, s26 + WORD $0x35000bc5 // cbnz w5, LBB0_299 $376(%rip) WORD $0xd10041ce // sub x14, x14, #16 WORD $0x91004273 // add x19, x19, #16 + WORD $0x91004000 // add x0, x0, #16 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fffe68 // b.hi LBB0_274 $-52(%rip) -LBB0_276: - WORD $0x8b1303c0 // add x0, lr, x19 - WORD $0xb4ff79ee // cbz x14, LBB0_131 $-4292(%rip) + WORD $0x54fffe48 // b.hi LBB0_280 $-56(%rip) +LBB0_282: + WORD $0x8b130280 // add x0, x20, x19 + WORD $0xb400024e // cbz x14, LBB0_289 $72(%rip) WORD $0x8b0e0005 // add x5, x0, x14 - WORD $0xcb1e0013 // sub x19, x0, lr -LBB0_278: + WORD $0xd284c011 // mov x17, #9728 + WORD $0xf2c20031 // movk x17, #4097, lsl #32 +LBB0_284: WORD $0x39400006 // ldrb w6, [x0] WORD $0x7100b0df // cmp w6, #44 - WORD $0x54ff7960 // b.eq LBB0_132 $-4308(%rip) - WORD $0x7101f4df // cmp w6, #125 - WORD $0x54ff7920 // b.eq LBB0_132 $-4316(%rip) + WORD $0x9ac6218f // lsl x15, x12, x6 + WORD $0x8a1101ef // and x15, x15, x17 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000121 // b.ne LBB0_289 $36(%rip) WORD $0x710174df // cmp w6, #93 - WORD $0x54ff78e0 // b.eq LBB0_132 $-4324(%rip) + WORD $0x540000e0 // b.eq LBB0_289 $28(%rip) + WORD $0x7101f4df // cmp w6, #125 + WORD $0x540000a0 // b.eq LBB0_289 $20(%rip) WORD $0x91000400 // add x0, x0, #1 - WORD $0x91000673 // add x19, x19, #1 WORD $0xf10005ce // subs x14, x14, #1 - WORD $0x54fffec1 // b.ne LBB0_278 $-40(%rip) - WORD $0x17fffbc0 // b LBB0_130 $-4352(%rip) -LBB0_282: - WORD $0x5ac0000e // rbit w14, w0 - WORD $0x5ac011ce // clz w14, w14 - WORD $0x8b1301d3 // add x19, x14, x19 -LBB0_283: + WORD $0x54fffe81 // b.ne LBB0_284 $-48(%rip) + WORD $0xaa0503e0 // mov x0, x5 +LBB0_289: + WORD $0xcb140013 // sub x19, x0, x20 WORD $0xf9000033 // str x19, [x1] - WORD $0xaa0803e0 // mov x0, x8 - WORD $0xeb07011f // cmp x8, x7 - WORD $0x5400a742 // b.hs LBB0_578 $5352(%rip) -LBB0_284: - WORD $0xf9400056 // ldr x22, [x2] - WORD $0xaa0b03e0 // mov x0, x11 - WORD $0xb5ff2ef6 // cbnz x22, LBB0_1 $-6692(%rip) - WORD $0x14000536 // b LBB0_578 $5336(%rip) -LBB0_285: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x5280007b // mov w27, #3 + WORD $0x92f00007 // mov x7, #9223372036854775807 + WORD $0x12800011 // mov w17, #-1 + WORD $0x14000395 // b LBB0_479 $3668(%rip) +LBB0_290: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0xcb13000e // sub x14, x0, x19 WORD $0xf10081df // cmp x14, #32 - WORD $0x5400552b // b.lt LBB0_423 $2724(%rip) + WORD $0x5400582b // b.lt LBB0_433 $2820(%rip) WORD $0xd280000e // mov x14, #0 WORD $0xd2800005 // mov x5, #0 WORD $0xcb080000 // sub x0, x0, x8 WORD $0x528003f3 // mov w19, #31 -LBB0_287: +LBB0_292: WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x3cc011fa // ldur q26, [x15, #1] WORD $0x3cc111fb // ldur q27, [x15, #17] @@ -1948,30 +1971,30 @@ LBB0_287: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e26038f // fmov w15, s28 - WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x33103df6 // bfi w22, w15, #16, #16 WORD $0x6e218f5a // cmeq.16b v26, v26, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x6e218f7a // cmeq.16b v26, v27, v1 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df4 // bfi w20, w15, #16, #16 - WORD $0x7100029f // cmp w20, #0 + WORD $0x33103df5 // bfi w21, w15, #16, #16 + WORD $0x710002bf // cmp w21, #0 WORD $0xfa4008a0 // ccmp x5, #0, #0, eq - WORD $0x540001a0 // b.eq LBB0_289 $52(%rip) - WORD $0x0a25028f // bic w15, w20, w5 + WORD $0x540001a0 // b.eq LBB0_294 $52(%rip) + WORD $0x0a2502af // bic w15, w21, w5 WORD $0x2a0f04b1 // orr w17, w5, w15, lsl #1 - WORD $0x0a040285 // and w5, w20, w4 + WORD $0x0a0402a5 // and w5, w21, w4 WORD $0x0a3100a5 // bic w5, w5, w17 WORD $0x2b0f00af // adds w15, w5, w15 WORD $0x1a9f37e5 // cset w5, hs @@ -1979,38 +2002,65 @@ LBB0_287: WORD $0x0a1101ef // and w15, w15, w17 WORD $0x12800011 // mov w17, #-1 WORD $0x2a2f03ef // mvn w15, w15 - WORD $0x8a1501f5 // and x21, x15, x21 - WORD $0x14000002 // b LBB0_290 $8(%rip) -LBB0_289: + WORD $0x8a1601f6 // and x22, x15, x22 + WORD $0x14000002 // b LBB0_295 $8(%rip) +LBB0_294: WORD $0xd2800005 // mov x5, #0 -LBB0_290: - WORD $0xb5ff6bb5 // cbnz x21, LBB0_120 $-4748(%rip) +LBB0_295: + WORD $0xb5ff68b6 // cbnz x22, LBB0_120 $-4844(%rip) WORD $0x910081ce // add x14, x14, #32 WORD $0xd1008273 // sub x19, x19, #32 WORD $0x8b13000f // add x15, x0, x19 WORD $0xf100fdff // cmp x15, #63 - WORD $0x54fffa4c // b.gt LBB0_287 $-184(%rip) - WORD $0xb5008645 // cbnz x5, LBB0_518 $4296(%rip) + WORD $0x54fffa4c // b.gt LBB0_292 $-184(%rip) + WORD $0xb5008a25 // cbnz x5, LBB0_531 $4420(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54004e4a // b.ge LBB0_424 $2504(%rip) - WORD $0x140004f6 // b LBB0_577 $5080(%rip) -LBB0_294: - WORD $0xaa1903e5 // mov x5, x25 + WORD $0x5400514a // b.ge LBB0_434 $2600(%rip) + WORD $0x14000515 // b LBB0_590 $5204(%rip) +LBB0_299: + WORD $0x5ac000ae // rbit w14, w5 + WORD $0x5ac011ce // clz w14, w14 + WORD $0x8b1301d3 // add x19, x14, x19 + WORD $0xf9000033 // str x19, [x1] + WORD $0xf100067f // cmp x19, #1 + WORD $0x54006a0b // b.lt LBB0_479 $3392(%rip) + WORD $0x8b0001ce // add x14, x14, x0 +LBB0_301: + WORD $0x386e68cf // ldrb w15, [x6, x14] + WORD $0x710081ff // cmp w15, #32 + WORD $0x9acf218f // lsl x15, x12, x15 + WORD $0x8a0d01ef // and x15, x15, x13 + WORD $0xfa4099e4 // ccmp x15, #0, #4, ls + WORD $0x54000120 // b.eq LBB0_303 $36(%rip) + WORD $0x8b0e010f // add x15, x8, x14 + WORD $0xf900002f // str x15, [x1] + WORD $0xd10005ce // sub x14, x14, #1 + WORD $0x8b0e0100 // add x0, x8, x14 + WORD $0x9100080f // add x15, x0, #2 + WORD $0xf10005ff // cmp x15, #1 + WORD $0x54fffe8c // b.gt LBB0_301 $-48(%rip) + WORD $0x17fffb65 // b LBB0_137 $-4716(%rip) +LBB0_303: + WORD $0x8b0e010e // add x14, x8, x14 + WORD $0x910005d3 // add x19, x14, #1 + WORD $0x1400033e // b LBB0_479 $3320(%rip) +LBB0_304: + WORD $0xaa1a03e5 // mov x5, x26 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5ff8b40 // cbnz x0, LBB0_169 $-3736(%rip) - WORD $0x14000492 // b LBB0_547 $4680(%rip) -LBB0_295: - WORD $0x540091a0 // b.eq LBB0_545 $4660(%rip) - WORD $0xf10102df // cmp x22, #64 - WORD $0x540055a3 // b.lo LBB0_438 $2740(%rip) + WORD $0xb5ff8840 // cbnz x0, LBB0_174 $-3832(%rip) + WORD $0x14000499 // b LBB0_560 $4708(%rip) +LBB0_305: + WORD $0x54009280 // b.eq LBB0_558 $4688(%rip) + WORD $0xf10102ff // cmp x23, #64 + WORD $0x540055a3 // b.lo LBB0_448 $2740(%rip) WORD $0xd2800006 // mov x6, #0 WORD $0x92800000 // mov x0, #-1 -LBB0_298: - WORD $0x8b1303ce // add x14, lr, x19 +LBB0_308: + WORD $0x8b13028e // add x14, x20, x19 WORD $0xad4071dd // ldp q29, q28, [x14] WORD $0xad4169db // ldp q27, q26, [x14, #32] WORD $0x6e208fbe // cmeq.16b v30, v29, v0 @@ -2042,30 +2092,30 @@ LBB0_298: WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d4 // fmov w20, s30 + WORD $0x1e2603d5 // fmov w21, s30 WORD $0x6e218f7e // cmeq.16b v30, v27, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d5 // fmov w21, s30 + WORD $0x1e2603d6 // fmov w22, s30 WORD $0x6e218f5e // cmeq.16b v30, v26, v1 WORD $0x4e221fde // and.16b v30, v30, v2 WORD $0x4e0303de // tbl.16b v30, { v30 }, v3 WORD $0x4e71bbde // addv.8h h30, v30 - WORD $0x1e2603d7 // fmov w23, s30 + WORD $0x1e2603d8 // fmov w24, s30 WORD $0xd3607e31 // lsl x17, x17, #32 WORD $0xaa05c231 // orr x17, x17, x5, lsl #48 WORD $0x53103def // lsl w15, w15, #16 WORD $0xaa0f022f // orr x15, x17, x15 WORD $0xaa0e01ee // orr x14, x15, x14 - WORD $0xd3607eaf // lsl x15, x21, #32 - WORD $0xaa17c1ef // orr x15, x15, x23, lsl #48 - WORD $0x53103e91 // lsl w17, w20, #16 + WORD $0xd3607ecf // lsl x15, x22, #32 + WORD $0xaa18c1ef // orr x15, x15, x24, lsl #48 + WORD $0x53103eb1 // lsl w17, w21, #16 WORD $0xaa1101ef // orr x15, x15, x17 WORD $0xaa0701e5 // orr x5, x15, x7 - WORD $0xb5000445 // cbnz x5, LBB0_303 $136(%rip) - WORD $0xb50004c6 // cbnz x6, LBB0_304 $152(%rip) -LBB0_300: + WORD $0xb5000445 // cbnz x5, LBB0_313 $136(%rip) + WORD $0xb50004c6 // cbnz x6, LBB0_314 $152(%rip) +LBB0_310: WORD $0x6e3d349d // cmhi.16b v29, v4, v29 WORD $0x4e221fbd // and.16b v29, v29, v2 WORD $0x4e0303bd // tbl.16b v29, { v29 }, v3 @@ -2091,20 +2141,20 @@ LBB0_300: WORD $0x53103e31 // lsl w17, w17, #16 WORD $0xaa1100b1 // orr x17, x5, x17 WORD $0xaa0f0225 // orr x5, x17, x15 - WORD $0xb500030e // cbnz x14, LBB0_305 $96(%rip) - WORD $0xb5008845 // cbnz x5, LBB0_551 $4360(%rip) - WORD $0xd10102d6 // sub x22, x22, #64 + WORD $0xb500030e // cbnz x14, LBB0_315 $96(%rip) + WORD $0xb5008925 // cbnz x5, LBB0_564 $4388(%rip) + WORD $0xd10102f7 // sub x23, x23, #64 WORD $0x91010273 // add x19, x19, #64 - WORD $0xf100fedf // cmp x22, #63 - WORD $0x54fff568 // b.hi LBB0_298 $-340(%rip) - WORD $0x14000229 // b LBB0_430 $2212(%rip) -LBB0_303: + WORD $0xf100feff // cmp x23, #63 + WORD $0x54fff568 // b.hi LBB0_308 $-340(%rip) + WORD $0x14000229 // b LBB0_440 $2212(%rip) +LBB0_313: WORD $0xb100041f // cmn x0, #1 WORD $0xdac000af // rbit x15, x5 WORD $0xdac011ef // clz x15, x15 WORD $0x8b1301ef // add x15, x15, x19 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_304: +LBB0_314: WORD $0x8a2600af // bic x15, x5, x6 WORD $0xaa0f04d1 // orr x17, x6, x15, lsl #1 WORD $0x8a3100a5 // bic x5, x5, x17 @@ -2115,9 +2165,9 @@ LBB0_304: WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 WORD $0x8a1101ef // and x15, x15, x17 WORD $0x8a2f01ce // bic x14, x14, x15 - WORD $0x5280007a // mov w26, #3 - WORD $0x17ffffd0 // b LBB0_300 $-192(%rip) -LBB0_305: + WORD $0x5280007b // mov w27, #3 + WORD $0x17ffffd0 // b LBB0_310 $-192(%rip) +LBB0_315: WORD $0xdac001ce // rbit x14, x14 WORD $0xdac011ce // clz x14, x14 WORD $0xdac000af // rbit x15, x5 @@ -2125,33 +2175,33 @@ LBB0_305: WORD $0xeb0e00bf // cmp x5, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54008f03 // b.lo LBB0_574 $4576(%rip) -LBB0_306: + WORD $0x54008fe3 // b.lo LBB0_587 $4604(%rip) +LBB0_316: WORD $0x8b1301ce // add x14, x14, x19 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffe7d3 // tbz x19, #63, LBB0_283 $-776(%rip) - WORD $0x14000413 // b LBB0_544 $4172(%rip) -LBB0_307: + WORD $0xb6f85833 // tbz x19, #63, LBB0_478 $2820(%rip) + WORD $0x1400041a // b LBB0_557 $4200(%rip) +LBB0_317: WORD $0x3940040e // ldrb w14, [x0, #1] WORD $0x5100b9ce // sub w14, w14, #46 WORD $0x7100dddf // cmp w14, #55 - WORD $0x54ff78e8 // b.hi LBB0_161 $-4324(%rip) + WORD $0x54ff75e8 // b.hi LBB0_166 $-4420(%rip) WORD $0x9ace218f // lsl x15, x12, x14 WORD $0x5280002e // mov w14, #1 WORD $0xb20903f1 // mov x17, #36028797027352576 WORD $0xf2800031 // movk x17, #1 WORD $0xea1101ff // tst x15, x17 WORD $0x12800011 // mov w17, #-1 - WORD $0x54001420 // b.eq LBB0_355 $644(%rip) -LBB0_309: - WORD $0xf100433f // cmp x25, #16 - WORD $0x54005143 // b.lo LBB0_460 $2600(%rip) - WORD $0xd2800015 // mov x21, #0 + WORD $0x54001420 // b.eq LBB0_365 $644(%rip) +LBB0_319: + WORD $0xf100435f // cmp x26, #16 + WORD $0x54005143 // b.lo LBB0_470 $2600(%rip) + WORD $0xd2800016 // mov x22, #0 WORD $0xd2800005 // mov x5, #0 WORD $0x92800006 // mov x6, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x9280001a // mov x26, #-1 -LBB0_311: + WORD $0x92800017 // mov x23, #-1 + WORD $0x9280001b // mov x27, #-1 +LBB0_321: WORD $0x3ce5681a // ldr q26, [x0, x5] WORD $0x6e258f5b // cmeq.16b v27, v26, v5 WORD $0x6e268f5c // cmeq.16b v28, v26, v6 @@ -2184,210 +2234,210 @@ LBB0_311: WORD $0x32103dce // orr w14, w14, #0xffff0000 WORD $0x5ac001ce // rbit w14, w14 WORD $0x5ac011ce // clz w14, w14 - WORD $0x12800014 // mov w20, #-1 - WORD $0x1ace2294 // lsl w20, w20, w14 - WORD $0x0a3401f7 // bic w23, w15, w20 - WORD $0x0a340238 // bic w24, w17, w20 - WORD $0x0a3400f4 // bic w20, w7, w20 + WORD $0x12800015 // mov w21, #-1 + WORD $0x1ace22b5 // lsl w21, w21, w14 + WORD $0x0a3501f8 // bic w24, w15, w21 + WORD $0x0a350239 // bic w25, w17, w21 + WORD $0x0a3500f5 // bic w21, w7, w21 WORD $0x710041df // cmp w14, #16 - WORD $0x1a9701f7 // csel w23, w15, w23, eq - WORD $0x1a980238 // csel w24, w17, w24, eq - WORD $0x1a9400f4 // csel w20, w7, w20, eq - WORD $0x510006ef // sub w15, w23, #1 - WORD $0x6a1701ef // ands w15, w15, w23 - WORD $0x540035a1 // b.ne LBB0_422 $1716(%rip) + WORD $0x1a9801f8 // csel w24, w15, w24, eq + WORD $0x1a990239 // csel w25, w17, w25, eq + WORD $0x1a9500f5 // csel w21, w7, w21, eq WORD $0x5100070f // sub w15, w24, #1 WORD $0x6a1801ef // ands w15, w15, w24 - WORD $0x54003541 // b.ne LBB0_422 $1704(%rip) - WORD $0x5100068f // sub w15, w20, #1 - WORD $0x6a1401ef // ands w15, w15, w20 - WORD $0x540034e1 // b.ne LBB0_422 $1692(%rip) - WORD $0x340000d7 // cbz w23, LBB0_317 $24(%rip) - WORD $0x5ac002ef // rbit w15, w23 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb100075f // cmn x26, #1 - WORD $0x540038a1 // b.ne LBB0_431 $1812(%rip) - WORD $0x8b1700ba // add x26, x5, x23 -LBB0_317: - WORD $0x340000d8 // cbz w24, LBB0_320 $24(%rip) + WORD $0x540035a1 // b.ne LBB0_432 $1716(%rip) + WORD $0x5100072f // sub w15, w25, #1 + WORD $0x6a1901ef // ands w15, w15, w25 + WORD $0x54003541 // b.ne LBB0_432 $1704(%rip) + WORD $0x510006af // sub w15, w21, #1 + WORD $0x6a1501ef // ands w15, w15, w21 + WORD $0x540034e1 // b.ne LBB0_432 $1692(%rip) + WORD $0x340000d8 // cbz w24, LBB0_327 $24(%rip) WORD $0x5ac0030f // rbit w15, w24 - WORD $0x5ac011f7 // clz w23, w15 - WORD $0xb10006df // cmn x22, #1 - WORD $0x540037e1 // b.ne LBB0_431 $1788(%rip) - WORD $0x8b1700b6 // add x22, x5, x23 -LBB0_320: - WORD $0x340000d4 // cbz w20, LBB0_323 $24(%rip) - WORD $0x5ac0028f // rbit w15, w20 - WORD $0x5ac011f4 // clz w20, w15 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb100077f // cmn x27, #1 + WORD $0x540038a1 // b.ne LBB0_441 $1812(%rip) + WORD $0x8b1800bb // add x27, x5, x24 +LBB0_327: + WORD $0x340000d9 // cbz w25, LBB0_330 $24(%rip) + WORD $0x5ac0032f // rbit w15, w25 + WORD $0x5ac011f8 // clz w24, w15 + WORD $0xb10006ff // cmn x23, #1 + WORD $0x540037e1 // b.ne LBB0_441 $1788(%rip) + WORD $0x8b1800b7 // add x23, x5, x24 +LBB0_330: + WORD $0x340000d5 // cbz w21, LBB0_333 $24(%rip) + WORD $0x5ac002af // rbit w15, w21 + WORD $0x5ac011f5 // clz w21, w15 WORD $0xb10004df // cmn x6, #1 - WORD $0x540047c1 // b.ne LBB0_459 $2296(%rip) - WORD $0x8b1400a6 // add x6, x5, x20 -LBB0_323: + WORD $0x540047c1 // b.ne LBB0_469 $2296(%rip) + WORD $0x8b1500a6 // add x6, x5, x21 +LBB0_333: WORD $0x710041df // cmp w14, #16 - WORD $0x54000601 // b.ne LBB0_341 $192(%rip) + WORD $0x54000601 // b.ne LBB0_351 $192(%rip) WORD $0x910040a5 // add x5, x5, #16 - WORD $0xd10042b5 // sub x21, x21, #16 - WORD $0x8b15032e // add x14, x25, x21 + WORD $0xd10042d6 // sub x22, x22, #16 + WORD $0x8b16034e // add x14, x26, x22 WORD $0xf1003ddf // cmp x14, #15 - WORD $0x54fff6c8 // b.hi LBB0_311 $-296(%rip) - WORD $0x8b050015 // add x21, x0, x5 - WORD $0xeb05033f // cmp x25, x5 + WORD $0x54fff6c8 // b.hi LBB0_321 $-296(%rip) + WORD $0x8b050016 // add x22, x0, x5 + WORD $0xeb05035f // cmp x26, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000540 // b.eq LBB0_342 $168(%rip) -LBB0_326: - WORD $0x8b0e02a5 // add x5, x21, x14 - WORD $0xcb0802af // sub x15, x21, x8 - WORD $0xcb1e01f9 // sub x25, x15, lr - WORD $0xaa1503fe // mov lr, x21 - WORD $0x14000006 // b LBB0_329 $24(%rip) -LBB0_327: - WORD $0xd100073a // sub x26, x25, #1 -LBB0_328: - WORD $0x91000739 // add x25, x25, #1 - WORD $0xaa1e03f5 // mov x21, lr + WORD $0x54000540 // b.eq LBB0_352 $168(%rip) +LBB0_336: + WORD $0x8b0e02c5 // add x5, x22, x14 + WORD $0xcb0802cf // sub x15, x22, x8 + WORD $0xcb1401f4 // sub x20, x15, x20 + WORD $0xaa1603fa // mov x26, x22 + WORD $0x14000006 // b LBB0_339 $24(%rip) +LBB0_337: + WORD $0xd100069b // sub x27, x20, #1 +LBB0_338: + WORD $0x91000694 // add x20, x20, #1 + WORD $0xaa1a03f6 // mov x22, x26 WORD $0xd10005ce // sub x14, x14, #1 - WORD $0xb4000c2e // cbz x14, LBB0_363 $388(%rip) -LBB0_329: - WORD $0x384017d4 // ldrb w20, [lr], #1 - WORD $0x5100c28f // sub w15, w20, #48 + WORD $0xb4000c2e // cbz x14, LBB0_373 $388(%rip) +LBB0_339: + WORD $0x38401755 // ldrb w21, [x26], #1 + WORD $0x5100c2af // sub w15, w21, #48 WORD $0x710029ff // cmp w15, #10 - WORD $0x54ffff23 // b.lo LBB0_328 $-28(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x5400014d // b.le LBB0_335 $40(%rip) - WORD $0x7101969f // cmp w20, #101 - WORD $0x54000200 // b.eq LBB0_339 $64(%rip) - WORD $0x7101169f // cmp w20, #69 - WORD $0x540001c0 // b.eq LBB0_339 $56(%rip) - WORD $0x7100ba9f // cmp w20, #46 - WORD $0x54000281 // b.ne LBB0_342 $80(%rip) - WORD $0xb100075f // cmn x26, #1 - WORD $0x54fffdc0 // b.eq LBB0_327 $-72(%rip) - WORD $0x1400016d // b LBB0_421 $1460(%rip) -LBB0_335: - WORD $0x7100ae9f // cmp w20, #43 - WORD $0x54000060 // b.eq LBB0_337 $12(%rip) - WORD $0x7100b69f // cmp w20, #45 - WORD $0x540001a1 // b.ne LBB0_342 $52(%rip) -LBB0_337: + WORD $0x54ffff23 // b.lo LBB0_338 $-28(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x5400014d // b.le LBB0_345 $40(%rip) + WORD $0x710196bf // cmp w21, #101 + WORD $0x54000200 // b.eq LBB0_349 $64(%rip) + WORD $0x710116bf // cmp w21, #69 + WORD $0x540001c0 // b.eq LBB0_349 $56(%rip) + WORD $0x7100babf // cmp w21, #46 + WORD $0x54000281 // b.ne LBB0_352 $80(%rip) + WORD $0xb100077f // cmn x27, #1 + WORD $0x54fffdc0 // b.eq LBB0_337 $-72(%rip) + WORD $0x1400016d // b LBB0_431 $1460(%rip) +LBB0_345: + WORD $0x7100aebf // cmp w21, #43 + WORD $0x54000060 // b.eq LBB0_347 $12(%rip) + WORD $0x7100b6bf // cmp w21, #45 + WORD $0x540001a1 // b.ne LBB0_352 $52(%rip) +LBB0_347: WORD $0xb10004df // cmn x6, #1 - WORD $0x54002ce1 // b.ne LBB0_421 $1436(%rip) - WORD $0xd1000726 // sub x6, x25, #1 - WORD $0x17ffffe6 // b LBB0_328 $-104(%rip) -LBB0_339: - WORD $0xb10006df // cmn x22, #1 - WORD $0x54002c61 // b.ne LBB0_421 $1420(%rip) - WORD $0xd1000736 // sub x22, x25, #1 - WORD $0x17ffffe2 // b LBB0_328 $-120(%rip) -LBB0_341: + WORD $0x54002ce1 // b.ne LBB0_431 $1436(%rip) + WORD $0xd1000686 // sub x6, x20, #1 + WORD $0x17ffffe6 // b LBB0_338 $-104(%rip) +LBB0_349: + WORD $0xb10006ff // cmn x23, #1 + WORD $0x54002c61 // b.ne LBB0_431 $1420(%rip) + WORD $0xd1000697 // sub x23, x20, #1 + WORD $0x17ffffe2 // b LBB0_338 $-120(%rip) +LBB0_351: WORD $0x8b2e400e // add x14, x0, w14, uxtw - WORD $0x8b0501d5 // add x21, x14, x5 + WORD $0x8b0501d6 // add x22, x14, x5 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_342: +LBB0_352: WORD $0x9280000e // mov x14, #-1 - WORD $0xb4007c3a // cbz x26, LBB0_571 $3972(%rip) -LBB0_343: - WORD $0xb4007c06 // cbz x6, LBB0_571 $3968(%rip) - WORD $0xb4007bf6 // cbz x22, LBB0_571 $3964(%rip) - WORD $0xcb0002ae // sub x14, x21, x0 + WORD $0xb4007d1b // cbz x27, LBB0_584 $4000(%rip) +LBB0_353: + WORD $0xb4007ce6 // cbz x6, LBB0_584 $3996(%rip) + WORD $0xb4007cd7 // cbz x23, LBB0_584 $3992(%rip) + WORD $0xcb0002ce // sub x14, x22, x0 WORD $0xd10005c0 // sub x0, x14, #1 - WORD $0xeb00035f // cmp x26, x0 - WORD $0x540002e0 // b.eq LBB0_354 $92(%rip) + WORD $0xeb00037f // cmp x27, x0 + WORD $0x540002e0 // b.eq LBB0_364 $92(%rip) WORD $0xeb0000df // cmp x6, x0 - WORD $0x540002a0 // b.eq LBB0_354 $84(%rip) - WORD $0xeb0002df // cmp x22, x0 - WORD $0x54000260 // b.eq LBB0_354 $76(%rip) + WORD $0x540002a0 // b.eq LBB0_364 $84(%rip) + WORD $0xeb0002ff // cmp x23, x0 + WORD $0x54000260 // b.eq LBB0_364 $76(%rip) WORD $0xf10004cf // subs x15, x6, #1 - WORD $0x5400006b // b.lt LBB0_350 $12(%rip) - WORD $0xeb0f02df // cmp x22, x15 - WORD $0x54007a81 // b.ne LBB0_572 $3920(%rip) -LBB0_350: - WORD $0xaa160340 // orr x0, x26, x22 - WORD $0xb7f80060 // tbnz x0, #63, LBB0_352 $12(%rip) - WORD $0xeb16035f // cmp x26, x22 - WORD $0x54007a4a // b.ge LBB0_573 $3912(%rip) -LBB0_352: + WORD $0x5400006b // b.lt LBB0_360 $12(%rip) + WORD $0xeb0f02ff // cmp x23, x15 + WORD $0x54007b61 // b.ne LBB0_585 $3948(%rip) +LBB0_360: + WORD $0xaa170360 // orr x0, x27, x23 + WORD $0xb7f80060 // tbnz x0, #63, LBB0_362 $12(%rip) + WORD $0xeb17037f // cmp x27, x23 + WORD $0x54007b2a // b.ge LBB0_586 $3940(%rip) +LBB0_362: WORD $0xd37ffc0f // lsr x15, x0, #63 WORD $0x520001ef // eor w15, w15, #0x1 - WORD $0xd10006d1 // sub x17, x22, #1 - WORD $0xeb11035f // cmp x26, x17 + WORD $0xd10006f1 // sub x17, x23, #1 + WORD $0xeb11037f // cmp x27, x17 WORD $0x1a9f17f1 // cset w17, eq WORD $0x6a1101ff // tst w15, w17 - WORD $0xda9601ce // csinv x14, x14, x22, eq -LBB0_353: + WORD $0xda9701ce // csinv x14, x14, x23, eq +LBB0_363: WORD $0x12800011 // mov w17, #-1 - WORD $0xb6f8008e // tbz x14, #63, LBB0_355 $16(%rip) - WORD $0x140003c5 // b LBB0_571 $3860(%rip) -LBB0_354: + WORD $0xb6f8008e // tbz x14, #63, LBB0_365 $16(%rip) + WORD $0x140003cc // b LBB0_584 $3888(%rip) +LBB0_364: WORD $0xcb0e03ee // neg x14, x14 - WORD $0xb7f8786e // tbnz x14, #63, LBB0_571 $3852(%rip) -LBB0_355: + WORD $0xb7f8794e // tbnz x14, #63, LBB0_584 $3880(%rip) +LBB0_365: WORD $0x8b1301d3 // add x19, x14, x19 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x5280007a // mov w26, #3 - WORD $0x54ffd203 // b.lo LBB0_284 $-1472(%rip) - WORD $0x140003c8 // b LBB0_578 $3872(%rip) -LBB0_356: - WORD $0xb5003d85 // cbnz x5, LBB0_461 $1968(%rip) + WORD $0x5280007b // mov w27, #3 + WORD $0x54004263 // b.lo LBB0_480 $2124(%rip) + WORD $0x140003cf // b LBB0_591 $3900(%rip) +LBB0_366: + WORD $0xb5003d85 // cbnz x5, LBB0_471 $1968(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910005e5 // add x5, x15, #1 WORD $0xaa2e03ee // mvn x14, x14 WORD $0x8b0001ce // add x14, x14, x0 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_464 $2020(%rip) - WORD $0x140003bf // b LBB0_577 $3836(%rip) -LBB0_358: + WORD $0x54003f2a // b.ge LBB0_474 $2020(%rip) + WORD $0x140003c6 // b LBB0_590 $3864(%rip) +LBB0_368: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb40 // b LBB0_180 $-4864(%rip) -LBB0_359: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb28 // b LBB0_185 $-4960(%rip) +LBB0_369: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003dea // b.ge LBB0_464 $1980(%rip) - WORD $0x140003b5 // b LBB0_577 $3796(%rip) -LBB0_360: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400001a // b LBB0_367 $104(%rip) -LBB0_361: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400003e // b LBB0_373 $248(%rip) -LBB0_362: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffb34 // b LBB0_180 $-4912(%rip) -LBB0_363: - WORD $0xaa0503f5 // mov x21, x5 + WORD $0x54003dea // b.ge LBB0_474 $1980(%rip) + WORD $0x140003bc // b LBB0_590 $3824(%rip) +LBB0_370: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400001a // b LBB0_377 $104(%rip) +LBB0_371: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400003e // b LBB0_383 $248(%rip) +LBB0_372: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3541ce // sub x14, x14, w21, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffb1c // b LBB0_185 $-5008(%rip) +LBB0_373: + WORD $0xaa0503f6 // mov x22, x5 WORD $0x9280000e // mov x14, #-1 - WORD $0xb5fff7fa // cbnz x26, LBB0_343 $-260(%rip) - WORD $0x1400039e // b LBB0_571 $3704(%rip) -LBB0_364: + WORD $0xb5fff7fb // cbnz x27, LBB0_353 $-260(%rip) + WORD $0x140003a5 // b LBB0_584 $3732(%rip) +LBB0_374: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 - WORD $0xaa3a03ef // mvn x15, x26 + WORD $0xaa3b03ef // mvn x15, x27 WORD $0xcb0e01ee // sub x14, x15, x14 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffb28 // b LBB0_180 $-4960(%rip) -LBB0_365: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffb10 // b LBB0_185 $-5056(%rip) +LBB0_375: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x54003f2a // b.ge LBB0_471 $2020(%rip) - WORD $0x1400039d // b LBB0_577 $3700(%rip) -LBB0_366: + WORD $0x5400400a // b.ge LBB0_484 $2048(%rip) + WORD $0x140003a4 // b LBB0_590 $3728(%rip) +LBB0_376: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_367: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540043a3 // b.lo LBB0_478 $2164(%rip) +LBB0_377: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54004483 // b.lo LBB0_491 $2192(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2404,31 +2454,31 @@ LBB0_367: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003dd4 // cbnz w20, LBB0_475 $1976(%rip) - WORD $0xb5003e66 // cbnz x6, LBB0_476 $1996(%rip) - WORD $0xb4004025 // cbz x5, LBB0_477 $2052(%rip) -LBB0_371: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35003eb5 // cbnz w21, LBB0_488 $2004(%rip) + WORD $0xb5003f46 // cbnz x6, LBB0_489 $2024(%rip) + WORD $0xb4004105 // cbz x5, LBB0_490 $2080(%rip) +LBB0_381: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffc793 // tbz x19, #63, LBB0_283 $-1808(%rip) - WORD $0x14000311 // b LBB0_544 $3140(%rip) -LBB0_372: + WORD $0xb6f837f3 // tbz x19, #63, LBB0_478 $1788(%rip) + WORD $0x14000318 // b LBB0_557 $3168(%rip) +LBB0_382: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_373: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_380 $196(%rip) +LBB0_383: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_390 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2444,100 +2494,100 @@ LBB0_373: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35004034 // cbnz w20, LBB0_489 $2052(%rip) - WORD $0xb50040c6 // cbnz x6, LBB0_490 $2072(%rip) -LBB0_376: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x35004115 // cbnz w21, LBB0_502 $2080(%rip) + WORD $0xb50041a6 // cbnz x6, LBB0_503 $2100(%rip) +LBB0_386: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_378 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_388 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_391 $140(%rip) - WORD $0x1400034f // b LBB0_579 $3388(%rip) -LBB0_378: - WORD $0x35006a35 // cbnz w21, LBB0_580 $3396(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_401 $140(%rip) + WORD $0x14000356 // b LBB0_592 $3416(%rip) +LBB0_388: + WORD $0x35006b16 // cbnz w22, LBB0_593 $3424(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_380: - WORD $0xb5004a46 // cbnz x6, LBB0_509 $2376(%rip) - WORD $0xb4005b96 // cbz x22, LBB0_545 $2928(%rip) -LBB0_382: - WORD $0xcb1e03ee // neg x14, lr -LBB0_383: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_390: + WORD $0xb5004b26 // cbnz x6, LBB0_522 $2404(%rip) + WORD $0xb4005c77 // cbz x23, LBB0_558 $2956(%rip) +LBB0_392: + WORD $0xcb1403ee // neg x14, x20 +LBB0_393: WORD $0xd2800005 // mov x5, #0 -LBB0_384: +LBB0_394: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_390 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_400 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_388 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_398 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54006909 // b.ls LBB0_581 $3360(%rip) + WORD $0x540069e9 // b.ls LBB0_594 $3388(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_384 $-36(%rip) - WORD $0x140002cf // b LBB0_545 $2876(%rip) -LBB0_388: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_394 $-36(%rip) + WORD $0x140002d6 // b LBB0_558 $2904(%rip) +LBB0_398: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54005980 // b.eq LBB0_545 $2864(%rip) + WORD $0x54005a60 // b.eq LBB0_558 $2892(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_383 $-96(%rip) - WORD $0x140002c1 // b LBB0_545 $2820(%rip) -LBB0_390: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_391: + WORD $0x54fffd01 // b.ne LBB0_393 $-96(%rip) + WORD $0x140002c8 // b LBB0_558 $2848(%rip) +LBB0_400: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_401: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ffbcb3 // tbz x19, #63, LBB0_283 $-2156(%rip) - WORD $0x140002ba // b LBB0_544 $2792(%rip) -LBB0_392: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_396 $40(%rip) -LBB0_393: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002e // b LBB0_402 $184(%rip) -LBB0_394: - WORD $0xaa3a03ee // mvn x14, x26 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw - WORD $0x5280007a // mov w26, #3 - WORD $0x17fffa9f // b LBB0_180 $-5508(%rip) -LBB0_395: + WORD $0xb6f82d13 // tbz x19, #63, LBB0_478 $1440(%rip) + WORD $0x140002c1 // b LBB0_557 $2820(%rip) +LBB0_402: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_406 $40(%rip) +LBB0_403: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002e // b LBB0_412 $184(%rip) +LBB0_404: + WORD $0xaa3b03ee // mvn x14, x27 + WORD $0xcb3841ce // sub x14, x14, w24, uxtw + WORD $0x5280007b // mov w27, #3 + WORD $0x17fffa87 // b LBB0_185 $-5604(%rip) +LBB0_405: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_396: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54003cc3 // b.lo LBB0_494 $1944(%rip) +LBB0_406: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54003da3 // b.lo LBB0_507 $1972(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2554,31 +2604,31 @@ LBB0_396: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260355 // fmov w21, s26 + WORD $0x1e260356 // fmov w22, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x350036f4 // cbnz w20, LBB0_491 $1756(%rip) - WORD $0xb5003786 // cbnz x6, LBB0_492 $1776(%rip) - WORD $0xb4003945 // cbz x5, LBB0_493 $1832(%rip) -LBB0_400: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350037d5 // cbnz w21, LBB0_504 $1784(%rip) + WORD $0xb5003866 // cbnz x6, LBB0_505 $1804(%rip) + WORD $0xb4003a25 // cbz x5, LBB0_506 $1860(%rip) +LBB0_410: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5e53 // tbz x19, #63, LBB0_194 $-5176(%rip) - WORD $0x1400028c // b LBB0_544 $2608(%rip) -LBB0_401: + WORD $0xb6ff5b53 // tbz x19, #63, LBB0_199 $-5272(%rip) + WORD $0x14000293 // b LBB0_557 $2636(%rip) +LBB0_411: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_402: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_409 $196(%rip) +LBB0_412: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_419 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2594,149 +2644,149 @@ LBB0_402: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260395 // fmov w21, s28 + WORD $0x1e260396 // fmov w22, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103eb4 // bfi w20, w21, #16, #16 - WORD $0x35003914 // cbnz w20, LBB0_504 $1824(%rip) - WORD $0xb50039a6 // cbnz x6, LBB0_506 $1844(%rip) -LBB0_405: + WORD $0x33103ed5 // bfi w21, w22, #16, #16 + WORD $0x350039f5 // cbnz w21, LBB0_517 $1852(%rip) + WORD $0xb5003a86 // cbnz x6, LBB0_519 $1872(%rip) +LBB0_415: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_407 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_417 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000582 // b.hs LBB0_420 $176(%rip) - WORD $0x140002ca // b LBB0_579 $2856(%rip) -LBB0_407: - WORD $0x35005995 // cbnz w21, LBB0_580 $2864(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000582 // b.hs LBB0_430 $176(%rip) + WORD $0x140002d1 // b LBB0_592 $2884(%rip) +LBB0_417: + WORD $0x35005a76 // cbnz w22, LBB0_593 $2892(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_409: - WORD $0xb5003ca6 // cbnz x6, LBB0_516 $1940(%rip) - WORD $0x5280007a // mov w26, #3 + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_419: + WORD $0xb5003d86 // cbnz x6, LBB0_529 $1968(%rip) + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb4004a96 // cbz x22, LBB0_545 $2384(%rip) -LBB0_411: - WORD $0xcb1e03ee // neg x14, lr -LBB0_412: + WORD $0xb4004b77 // cbz x23, LBB0_558 $2412(%rip) +LBB0_421: + WORD $0xcb1403ee // neg x14, x20 +LBB0_422: WORD $0xd2800005 // mov x5, #0 -LBB0_413: +LBB0_423: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540003a0 // b.eq LBB0_419 $116(%rip) + WORD $0x540003a0 // b.eq LBB0_429 $116(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x54000140 // b.eq LBB0_417 $40(%rip) + WORD $0x54000140 // b.eq LBB0_427 $40(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54005809 // b.ls LBB0_581 $2816(%rip) + WORD $0x540058e9 // b.ls LBB0_594 $2844(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54fffe81 // b.ne LBB0_413 $-48(%rip) - WORD $0x14000244 // b LBB0_545 $2320(%rip) -LBB0_417: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0x54fffe81 // b.ne LBB0_423 $-48(%rip) + WORD $0x1400024b // b LBB0_558 $2348(%rip) +LBB0_427: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x540047c0 // b.eq LBB0_545 $2296(%rip) + WORD $0x540048a0 // b.eq LBB0_558 $2324(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01e6 // add x6, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8000c0 // csel x0, x6, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502c6 // sub x6, x22, x5 - WORD $0xd10008d6 // sub x22, x6, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502e6 // sub x6, x23, x5 + WORD $0xd10008d7 // sub x23, x6, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffc41 // b.ne LBB0_412 $-120(%rip) - WORD $0x14000233 // b LBB0_545 $2252(%rip) -LBB0_419: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_420: + WORD $0x54fffc41 // b.ne LBB0_422 $-120(%rip) + WORD $0x1400023a // b LBB0_558 $2280(%rip) +LBB0_429: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_430: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0xb6ff5253 // tbz x19, #63, LBB0_194 $-5560(%rip) - WORD $0x1400022c // b LBB0_544 $2224(%rip) -LBB0_421: - WORD $0xcb1903ee // neg x14, x25 - WORD $0xb6ffd86e // tbz x14, #63, LBB0_355 $-1268(%rip) - WORD $0x14000284 // b LBB0_571 $2576(%rip) -LBB0_422: + WORD $0xb6ff4f53 // tbz x19, #63, LBB0_199 $-5656(%rip) + WORD $0x14000233 // b LBB0_557 $2252(%rip) +LBB0_431: + WORD $0xcb1403ee // neg x14, x20 + WORD $0xb6ffd86e // tbz x14, #63, LBB0_365 $-1268(%rip) + WORD $0x1400028b // b LBB0_584 $2604(%rip) +LBB0_432: WORD $0x5ac001ee // rbit w14, w15 WORD $0x5ac011ce // clz w14, w14 WORD $0xaa2503ef // mvn x15, x5 WORD $0xcb0e01ee // sub x14, x15, x14 WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffeb7 // b LBB0_353 $-1316(%rip) -LBB0_423: - WORD $0x8b1303c5 // add x5, lr, x19 + WORD $0x17fffeb7 // b LBB0_363 $-1316(%rip) +LBB0_433: + WORD $0x8b130285 // add x5, x20, x19 WORD $0xf10005df // cmp x14, #1 - WORD $0x540050cb // b.lt LBB0_577 $2584(%rip) -LBB0_424: - WORD $0x5280007a // mov w26, #3 + WORD $0x540051ab // b.lt LBB0_590 $2612(%rip) +LBB0_434: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000007 // b LBB0_426 $28(%rip) -LBB0_425: + WORD $0x14000007 // b LBB0_436 $28(%rip) +LBB0_435: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54004fad // b.le LBB0_578 $2548(%rip) -LBB0_426: + WORD $0x5400508d // b.le LBB0_591 $2576(%rip) +LBB0_436: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_425 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_435 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54001780 // b.eq LBB0_467 $752(%rip) + WORD $0x54001780 // b.eq LBB0_477 $752(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_426 $-40(%rip) - WORD $0x14000271 // b LBB0_578 $2500(%rip) -LBB0_429: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400000a // b LBB0_433 $40(%rip) -LBB0_430: - WORD $0x8b1303d3 // add x19, lr, x19 - WORD $0x1400002d // b LBB0_439 $180(%rip) -LBB0_431: + WORD $0x54fffecc // b.gt LBB0_436 $-40(%rip) + WORD $0x14000278 // b LBB0_591 $2528(%rip) +LBB0_439: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400000a // b LBB0_443 $40(%rip) +LBB0_440: + WORD $0x8b130293 // add x19, x20, x19 + WORD $0x1400002d // b LBB0_449 $180(%rip) +LBB0_441: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3741ce // sub x14, x14, w23, uxtw + WORD $0xcb3841ce // sub x14, x14, w24, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe96 // b LBB0_353 $-1448(%rip) -LBB0_432: + WORD $0x17fffe96 // b LBB0_363 $-1448(%rip) +LBB0_442: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_433: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x540036c3 // b.lo LBB0_523 $1752(%rip) +LBB0_443: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x540037a3 // b.lo LBB0_536 $1780(%rip) WORD $0xad406e7a // ldp q26, q27, [x19] WORD $0x6e208f5c // cmeq.16b v28, v26, v0 WORD $0x6e208f7d // cmeq.16b v29, v27, v0 @@ -2753,30 +2803,30 @@ LBB0_433: WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 - WORD $0x1e260354 // fmov w20, s26 + WORD $0x1e260355 // fmov w21, s26 WORD $0x4e221f7a // and.16b v26, v27, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e260351 // fmov w17, s26 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003154 // cbnz w20, LBB0_520 $1576(%rip) - WORD $0xb50031e6 // cbnz x6, LBB0_521 $1596(%rip) - WORD $0xb4003345 // cbz x5, LBB0_522 $1640(%rip) -LBB0_437: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x35003235 // cbnz w21, LBB0_533 $1604(%rip) + WORD $0xb50032c6 // cbnz x6, LBB0_534 $1624(%rip) + WORD $0xb4003425 // cbz x5, LBB0_535 $1668(%rip) +LBB0_447: WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011ce // clz x14, x14 - WORD $0xcb1e026f // sub x15, x19, lr + WORD $0xcb14026f // sub x15, x19, x20 WORD $0x8b0e01ee // add x14, x15, x14 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x140001b0 // b LBB0_534 $1728(%rip) -LBB0_438: + WORD $0x140001b7 // b LBB0_547 $1756(%rip) +LBB0_448: WORD $0xd2800006 // mov x6, #0 - WORD $0x8b1303d3 // add x19, lr, x19 + WORD $0x8b130293 // add x19, x20, x19 WORD $0x92800000 // mov x0, #-1 -LBB0_439: - WORD $0xf10082ce // subs x14, x22, #32 - WORD $0x54000623 // b.lo LBB0_446 $196(%rip) +LBB0_449: + WORD $0xf10082ee // subs x14, x23, #32 + WORD $0x54000623 // b.lo LBB0_456 $196(%rip) WORD $0xad406a7b // ldp q27, q26, [x19] WORD $0x6e208f7c // cmeq.16b v28, v27, v0 WORD $0x4e221f9c // and.16b v28, v28, v2 @@ -2792,434 +2842,444 @@ LBB0_439: WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 - WORD $0x1e260394 // fmov w20, s28 + WORD $0x1e260395 // fmov w21, s28 WORD $0x6e218f5c // cmeq.16b v28, v26, v1 WORD $0x4e221f9c // and.16b v28, v28, v2 WORD $0x4e03039c // tbl.16b v28, { v28 }, v3 WORD $0x4e71bb9c // addv.8h h28, v28 WORD $0x1e260391 // fmov w17, s28 WORD $0x33103de5 // bfi w5, w15, #16, #16 - WORD $0x33103e34 // bfi w20, w17, #16, #16 - WORD $0x35003314 // cbnz w20, LBB0_535 $1632(%rip) - WORD $0xb50033a6 // cbnz x6, LBB0_537 $1652(%rip) -LBB0_442: + WORD $0x33103e35 // bfi w21, w17, #16, #16 + WORD $0x350033f5 // cbnz w21, LBB0_548 $1660(%rip) + WORD $0xb5003486 // cbnz x6, LBB0_550 $1680(%rip) +LBB0_452: WORD $0x6e3b349b // cmhi.16b v27, v4, v27 WORD $0x4e221f7b // and.16b v27, v27, v2 WORD $0x4e03037b // tbl.16b v27, { v27 }, v3 WORD $0x4e71bb7b // addv.8h h27, v27 - WORD $0x1e260375 // fmov w21, s27 + WORD $0x1e260376 // fmov w22, s27 WORD $0x6e3a349a // cmhi.16b v26, v4, v26 WORD $0x4e221f5a // and.16b v26, v26, v2 WORD $0x4e03035a // tbl.16b v26, { v26 }, v3 WORD $0x4e71bb5a // addv.8h h26, v26 WORD $0x1e26034f // fmov w15, s26 - WORD $0x33103df5 // bfi w21, w15, #16, #16 - WORD $0xdac002af // rbit x15, x21 - WORD $0xdac011f4 // clz x20, x15 - WORD $0xb40000e5 // cbz x5, LBB0_444 $28(%rip) + WORD $0x33103df6 // bfi w22, w15, #16, #16 + WORD $0xdac002cf // rbit x15, x22 + WORD $0xdac011f5 // clz x21, x15 + WORD $0xb40000e5 // cbz x5, LBB0_454 $28(%rip) WORD $0xdac000ae // rbit x14, x5 WORD $0xdac011c5 // clz x5, x14 - WORD $0xcb1e026e // sub x14, x19, lr - WORD $0xeb05029f // cmp x20, x5 - WORD $0x54000462 // b.hs LBB0_457 $140(%rip) - WORD $0x1400021b // b LBB0_579 $2156(%rip) -LBB0_444: - WORD $0x350043b5 // cbnz w21, LBB0_580 $2164(%rip) + WORD $0xcb14026e // sub x14, x19, x20 + WORD $0xeb0502bf // cmp x21, x5 + WORD $0x54000462 // b.hs LBB0_467 $140(%rip) + WORD $0x14000222 // b LBB0_592 $2184(%rip) +LBB0_454: + WORD $0x35004496 // cbnz w22, LBB0_593 $2192(%rip) WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_446: - WORD $0xb5003346 // cbnz x6, LBB0_540 $1640(%rip) - WORD $0xb4003516 // cbz x22, LBB0_545 $1696(%rip) -LBB0_448: - WORD $0xcb1e03ee // neg x14, lr -LBB0_449: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_456: + WORD $0xb5003426 // cbnz x6, LBB0_553 $1668(%rip) + WORD $0xb40035f7 // cbz x23, LBB0_558 $1724(%rip) +LBB0_458: + WORD $0xcb1403ee // neg x14, x20 +LBB0_459: WORD $0xd2800005 // mov x5, #0 -LBB0_450: +LBB0_460: WORD $0x38656a66 // ldrb w6, [x19, x5] WORD $0x710088df // cmp w6, #34 - WORD $0x540002e0 // b.eq LBB0_456 $92(%rip) + WORD $0x540002e0 // b.eq LBB0_466 $92(%rip) WORD $0x710170df // cmp w6, #92 - WORD $0x540000e0 // b.eq LBB0_454 $28(%rip) + WORD $0x540000e0 // b.eq LBB0_464 $28(%rip) WORD $0x71007cdf // cmp w6, #31 - WORD $0x54004289 // b.ls LBB0_581 $2128(%rip) + WORD $0x54004369 // b.ls LBB0_594 $2156(%rip) WORD $0x910004a5 // add x5, x5, #1 - WORD $0xeb0502df // cmp x22, x5 - WORD $0x54fffee1 // b.ne LBB0_450 $-36(%rip) - WORD $0x1400019b // b LBB0_545 $1644(%rip) -LBB0_454: - WORD $0xd10006cf // sub x15, x22, #1 + WORD $0xeb0502ff // cmp x23, x5 + WORD $0x54fffee1 // b.ne LBB0_460 $-36(%rip) + WORD $0x140001a2 // b LBB0_558 $1672(%rip) +LBB0_464: + WORD $0xd10006ef // sub x15, x23, #1 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54003300 // b.eq LBB0_545 $1632(%rip) + WORD $0x540033e0 // b.eq LBB0_558 $1660(%rip) WORD $0x8b05026f // add x15, x19, x5 WORD $0x8b0e01f1 // add x17, x15, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a800220 // csel x0, x17, x0, eq WORD $0x910009f3 // add x19, x15, #2 - WORD $0xd1000acf // sub x15, x22, #2 - WORD $0xcb0502d1 // sub x17, x22, x5 - WORD $0xd1000a36 // sub x22, x17, #2 + WORD $0xd1000aef // sub x15, x23, #2 + WORD $0xcb0502f1 // sub x17, x23, x5 + WORD $0xd1000a37 // sub x23, x17, #2 WORD $0xeb0501ff // cmp x15, x5 - WORD $0x54fffd01 // b.ne LBB0_449 $-96(%rip) - WORD $0x1400018d // b LBB0_545 $1588(%rip) -LBB0_456: - WORD $0xcb1e026e // sub x14, x19, lr -LBB0_457: + WORD $0x54fffd01 // b.ne LBB0_459 $-96(%rip) + WORD $0x14000194 // b LBB0_558 $1616(%rip) +LBB0_466: + WORD $0xcb14026e // sub x14, x19, x20 +LBB0_467: WORD $0x8b0501ce // add x14, x14, x5 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x1400015a // b LBB0_534 $1384(%rip) -LBB0_458: + WORD $0x14000161 // b LBB0_547 $1412(%rip) +LBB0_468: WORD $0x92800000 // mov x0, #-1 WORD $0xaa0603e5 // mov x5, x6 - WORD $0xaa0e03f5 // mov x21, x14 + WORD $0xaa0e03f6 // mov x22, x14 WORD $0x92800013 // mov x19, #-1 - WORD $0x92800016 // mov x22, #-1 - WORD $0x17fff7b5 // b LBB0_85 $-8492(%rip) -LBB0_459: + WORD $0x92800017 // mov x23, #-1 + WORD $0x17fff785 // b LBB0_85 $-8684(%rip) +LBB0_469: WORD $0xaa2503ee // mvn x14, x5 - WORD $0xcb3441ce // sub x14, x14, w20, uxtw + WORD $0xcb3541ce // sub x14, x14, w21, uxtw WORD $0x92f00007 // mov x7, #9223372036854775807 - WORD $0x17fffe11 // b LBB0_353 $-1980(%rip) -LBB0_460: - WORD $0x9280001a // mov x26, #-1 - WORD $0xaa0003f5 // mov x21, x0 - WORD $0xaa1903ee // mov x14, x25 - WORD $0x92800016 // mov x22, #-1 + WORD $0x17fffe11 // b LBB0_363 $-1980(%rip) +LBB0_470: + WORD $0x9280001b // mov x27, #-1 + WORD $0xaa0003f6 // mov x22, x0 + WORD $0xaa1a03ee // mov x14, x26 + WORD $0x92800017 // mov x23, #-1 WORD $0x92800006 // mov x6, #-1 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffdc5 // b LBB0_326 $-2284(%rip) -LBB0_461: + WORD $0x17fffdc5 // b LBB0_336 $-2284(%rip) +LBB0_471: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54003b00 // b.eq LBB0_577 $1888(%rip) + WORD $0x54003be0 // b.eq LBB0_590 $1916(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_464 $32(%rip) - WORD $0x140001ce // b LBB0_577 $1848(%rip) -LBB0_463: + WORD $0x5400010a // b.ge LBB0_474 $32(%rip) + WORD $0x140001d5 // b LBB0_590 $1876(%rip) +LBB0_473: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x5400392d // b.le LBB0_578 $1828(%rip) -LBB0_464: + WORD $0x54003a0d // b.le LBB0_591 $1856(%rip) +LBB0_474: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_463 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_473 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_467 $32(%rip) + WORD $0x54000100 // b.eq LBB0_477 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_464 $-40(%rip) - WORD $0x140001bd // b LBB0_578 $1780(%rip) -LBB0_467: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_474 $-40(%rip) + WORD $0x140001c4 // b LBB0_591 $1808(%rip) +LBB0_477: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 - WORD $0x17fffc7d // b LBB0_283 $-3596(%rip) -LBB0_468: +LBB0_478: + WORD $0xf9000033 // str x19, [x1] +LBB0_479: + WORD $0xaa0803e0 // mov x0, x8 + WORD $0xeb07011f // cmp x8, x7 + WORD $0x540037c2 // b.hs LBB0_591 $1784(%rip) +LBB0_480: + WORD $0xf9400057 // ldr x23, [x2] + WORD $0xaa0b03e0 // mov x0, x11 + WORD $0xb5feb897 // cbnz x23, LBB0_1 $-10480(%rip) + WORD $0x140001ba // b LBB0_591 $1768(%rip) +LBB0_481: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x540036c0 // b.eq LBB0_577 $1752(%rip) + WORD $0x540036c0 // b.eq LBB0_590 $1752(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 WORD $0xf10005df // cmp x14, #1 - WORD $0x5400010a // b.ge LBB0_471 $32(%rip) - WORD $0x140001ac // b LBB0_577 $1712(%rip) -LBB0_470: + WORD $0x5400010a // b.ge LBB0_484 $32(%rip) + WORD $0x140001ac // b LBB0_590 $1712(%rip) +LBB0_483: WORD $0x92800026 // mov x6, #-2 WORD $0x52800040 // mov w0, #2 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x540034ed // b.le LBB0_578 $1692(%rip) -LBB0_471: + WORD $0x540034ed // b.le LBB0_591 $1692(%rip) +LBB0_484: WORD $0x394000a0 // ldrb w0, [x5] WORD $0x7101701f // cmp w0, #92 - WORD $0x54ffff00 // b.eq LBB0_470 $-32(%rip) + WORD $0x54ffff00 // b.eq LBB0_483 $-32(%rip) WORD $0x7100881f // cmp w0, #34 - WORD $0x54000100 // b.eq LBB0_474 $32(%rip) + WORD $0x54000100 // b.eq LBB0_487 $32(%rip) WORD $0x92800006 // mov x6, #-1 WORD $0x52800020 // mov w0, #1 WORD $0x8b0000a5 // add x5, x5, x0 WORD $0x92800000 // mov x0, #-1 WORD $0xab0601ce // adds x14, x14, x6 - WORD $0x54fffecc // b.gt LBB0_471 $-40(%rip) - WORD $0x1400019b // b LBB0_578 $1644(%rip) -LBB0_474: - WORD $0xcb1e00ae // sub x14, x5, lr + WORD $0x54fffecc // b.gt LBB0_484 $-40(%rip) + WORD $0x1400019b // b LBB0_591 $1644(%rip) +LBB0_487: + WORD $0xcb1400ae // sub x14, x5, x20 WORD $0x910005d3 // add x19, x14, #1 WORD $0xf9000033 // str x19, [x1] WORD $0xaa0803e0 // mov x0, x8 WORD $0xeb07011f // cmp x8, x7 - WORD $0x54ff3303 // b.lo LBB0_195 $-6560(%rip) - WORD $0x14000194 // b LBB0_578 $1616(%rip) -LBB0_475: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ff2f23 // b.lo LBB0_200 $-6684(%rip) + WORD $0x14000194 // b LBB0_591 $1616(%rip) +LBB0_488: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_476: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_489: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc025 // cbnz x5, LBB0_371 $-2044(%rip) -LBB0_477: + WORD $0xb5ffbf45 // cbnz x5, LBB0_381 $-2072(%rip) +LBB0_490: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_478: - WORD $0xb5001066 // cbnz x6, LBB0_507 $524(%rip) - WORD $0xb40003b6 // cbz x22, LBB0_487 $116(%rip) -LBB0_480: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_481: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_491: + WORD $0xb5001066 // cbnz x6, LBB0_520 $524(%rip) + WORD $0xb40003b7 // cbz x23, LBB0_500 $116(%rip) +LBB0_493: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_494: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000320 // b.eq LBB0_488 $100(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000320 // b.eq LBB0_501 $100(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x54000100 // b.eq LBB0_484 $32(%rip) + WORD $0x54000100 // b.eq LBB0_497 $32(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffe94 // cbnz x20, LBB0_481 $-48(%rip) - WORD $0x1400000c // b LBB0_486 $48(%rip) -LBB0_484: - WORD $0xb40020d4 // cbz x20, LBB0_545 $1048(%rip) + WORD $0xb5fffe95 // cbnz x21, LBB0_494 $-48(%rip) + WORD $0x1400000c // b LBB0_499 $48(%rip) +LBB0_497: + WORD $0xb40020d5 // cbz x21, LBB0_558 $1048(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0x5280007a // mov w26, #3 + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5fffd14 // cbnz x20, LBB0_481 $-96(%rip) -LBB0_486: + WORD $0xb5fffd15 // cbnz x21, LBB0_494 $-96(%rip) +LBB0_499: WORD $0x710088bf // cmp w5, #34 - WORD $0x54001f41 // b.ne LBB0_545 $1000(%rip) -LBB0_487: + WORD $0x54001f41 // b.ne LBB0_558 $1000(%rip) +LBB0_500: WORD $0xaa1303e6 // mov x6, x19 -LBB0_488: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff83f3 // tbz x19, #63, LBB0_283 $-3972(%rip) - WORD $0x140000f4 // b LBB0_544 $976(%rip) -LBB0_489: - WORD $0xdac0028f // rbit x15, x20 +LBB0_501: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6fff373 // tbz x19, #63, LBB0_478 $-404(%rip) + WORD $0x140000f4 // b LBB0_557 $976(%rip) +LBB0_502: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_490: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_503: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffded // b LBB0_376 $-2124(%rip) -LBB0_491: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x17fffde6 // b LBB0_386 $-2152(%rip) +LBB0_504: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0275 // sub x21, x19, lr - WORD $0x8b0f02af // add x15, x21, x15 + WORD $0xcb140276 // sub x22, x19, x20 + WORD $0x8b0f02cf // add x15, x22, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_492: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_505: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc705 // cbnz x5, LBB0_400 $-1824(%rip) -LBB0_493: + WORD $0xb5ffc625 // cbnz x5, LBB0_410 $-1852(%rip) +LBB0_506: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_494: - WORD $0xb50008e6 // cbnz x6, LBB0_511 $284(%rip) - WORD $0xb40009d6 // cbz x22, LBB0_513 $312(%rip) -LBB0_496: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_497: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_507: + WORD $0xb50008e6 // cbnz x6, LBB0_524 $284(%rip) + WORD $0xb40009d7 // cbz x23, LBB0_526 $312(%rip) +LBB0_509: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_510: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x540002c0 // b.eq LBB0_503 $88(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x540002c0 // b.eq LBB0_516 $88(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_500 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_513 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_497 $-36(%rip) - WORD $0x14000009 // b LBB0_502 $36(%rip) -LBB0_500: - WORD $0xb4001774 // cbz x20, LBB0_545 $748(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_510 $-36(%rip) + WORD $0x14000009 // b LBB0_515 $36(%rip) +LBB0_513: + WORD $0xb4001775 // cbz x21, LBB0_558 $748(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_497 $-72(%rip) -LBB0_502: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_510 $-72(%rip) +LBB0_515: WORD $0x710088bf // cmp w5, #34 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x54000700 // b.eq LBB0_514 $224(%rip) - WORD $0x140000ae // b LBB0_545 $696(%rip) -LBB0_503: - WORD $0x5280007a // mov w26, #3 + WORD $0x54000700 // b.eq LBB0_527 $224(%rip) + WORD $0x140000ae // b LBB0_558 $696(%rip) +LBB0_516: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x14000034 // b LBB0_515 $208(%rip) -LBB0_504: + WORD $0x14000034 // b LBB0_528 $208(%rip) +LBB0_517: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_506 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_519 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0260 // sub x0, x19, lr + WORD $0xcb140260 // sub x0, x19, x20 WORD $0x8b0f0000 // add x0, x0, x15 -LBB0_506: - WORD $0x0a26028f // bic w15, w20, w6 - WORD $0x531f79f5 // lsl w21, w15, #1 +LBB0_519: + WORD $0x0a2602af // bic w15, w21, w6 + WORD $0x531f79f6 // lsl w22, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a350294 // bic w20, w20, w21 - WORD $0x1201f294 // and w20, w20, #0xaaaaaaaa - WORD $0x2b0f028f // adds w15, w20, w15 + WORD $0x0a3602b5 // bic w21, w21, w22 + WORD $0x1201f2b5 // and w21, w21, #0xaaaaaaaa + WORD $0x2b0f02af // adds w15, w21, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 WORD $0x0a0601ef // and w15, w15, w6 WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x5280007a // mov w26, #3 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0x17fffe26 // b LBB0_405 $-1896(%rip) -LBB0_507: - WORD $0xb4001296 // cbz x22, LBB0_545 $592(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe1f // b LBB0_415 $-1924(%rip) +LBB0_520: + WORD $0xb4001297 // cbz x23, LBB0_558 $592(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffef16 // cbnz x22, LBB0_480 $-544(%rip) - WORD $0x17ffff93 // b LBB0_487 $-436(%rip) -LBB0_509: - WORD $0xb4001176 // cbz x22, LBB0_545 $556(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffef17 // cbnz x23, LBB0_493 $-544(%rip) + WORD $0x17ffff93 // b LBB0_500 $-436(%rip) +LBB0_522: + WORD $0xb4001177 // cbz x23, LBB0_558 $556(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffb536 // cbnz x22, LBB0_382 $-2396(%rip) - WORD $0x14000083 // b LBB0_545 $524(%rip) -LBB0_511: - WORD $0xb4001056 // cbz x22, LBB0_545 $520(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffb457 // cbnz x23, LBB0_392 $-2424(%rip) + WORD $0x14000083 // b LBB0_558 $524(%rip) +LBB0_524: + WORD $0xb4001057 // cbz x23, LBB0_558 $520(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff696 // cbnz x22, LBB0_496 $-304(%rip) -LBB0_513: - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff697 // cbnz x23, LBB0_509 $-304(%rip) +LBB0_526: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 -LBB0_514: +LBB0_527: WORD $0xaa1303e6 // mov x6, x19 -LBB0_515: - WORD $0xcb1e00d3 // sub x19, x6, lr - WORD $0xb6ff1b13 // tbz x19, #63, LBB0_194 $-7328(%rip) - WORD $0x14000072 // b LBB0_544 $456(%rip) -LBB0_516: - WORD $0xb4000e76 // cbz x22, LBB0_545 $460(%rip) - WORD $0xaa3e03ee // mvn x14, lr +LBB0_528: + WORD $0xcb1400d3 // sub x19, x6, x20 + WORD $0xb6ff1733 // tbz x19, #63, LBB0_199 $-7452(%rip) + WORD $0x14000072 // b LBB0_557 $456(%rip) +LBB0_529: + WORD $0xb4000e77 // cbz x23, LBB0_558 $460(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0x5280007a // mov w26, #3 + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb5ffc2d6 // cbnz x22, LBB0_411 $-1960(%rip) - WORD $0x14000068 // b LBB0_545 $416(%rip) -LBB0_518: + WORD $0xb5ffc1f7 // cbnz x23, LBB0_421 $-1988(%rip) + WORD $0x14000068 // b LBB0_558 $416(%rip) +LBB0_531: WORD $0xd100040f // sub x15, x0, #1 WORD $0xeb0e01ff // cmp x15, x14 - WORD $0x54001920 // b.eq LBB0_577 $804(%rip) + WORD $0x54001920 // b.eq LBB0_590 $804(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0x910009e5 // add x5, x15, #2 WORD $0xcb0e000e // sub x14, x0, x14 WORD $0xd10009ce // sub x14, x14, #2 WORD $0xf10005df // cmp x14, #1 - WORD $0x54ffc7ca // b.ge LBB0_424 $-1800(%rip) - WORD $0x140000c2 // b LBB0_577 $776(%rip) -LBB0_520: - WORD $0xdac0028f // rbit x15, x20 + WORD $0x54ffc6ea // b.ge LBB0_434 $-1828(%rip) + WORD $0x140000c2 // b LBB0_590 $776(%rip) +LBB0_533: + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f022f // add x15, x17, x15 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8f1000 // csel x0, x0, x15, ne -LBB0_521: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_534: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3227,61 +3287,61 @@ LBB0_521: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0xb5ffcd05 // cbnz x5, LBB0_437 $-1632(%rip) -LBB0_522: + WORD $0xb5ffcc25 // cbnz x5, LBB0_447 $-1660(%rip) +LBB0_535: WORD $0x91008273 // add x19, x19, #32 - WORD $0xaa0e03f6 // mov x22, x14 -LBB0_523: - WORD $0xb5000626 // cbnz x6, LBB0_538 $196(%rip) - WORD $0xb40002f6 // cbz x22, LBB0_532 $92(%rip) -LBB0_525: - WORD $0xaa3e03ee // mvn x14, lr -LBB0_526: + WORD $0xaa0e03f7 // mov x23, x14 +LBB0_536: + WORD $0xb5000626 // cbnz x6, LBB0_551 $196(%rip) + WORD $0xb40002f7 // cbz x23, LBB0_545 $92(%rip) +LBB0_538: + WORD $0xaa3403ee // mvn x14, x20 +LBB0_539: WORD $0xaa1303e6 // mov x6, x19 WORD $0x384014c5 // ldrb w5, [x6], #1 WORD $0x710088bf // cmp w5, #34 - WORD $0x54000260 // b.eq LBB0_533 $76(%rip) - WORD $0xd10006d4 // sub x20, x22, #1 + WORD $0x54000260 // b.eq LBB0_546 $76(%rip) + WORD $0xd10006f5 // sub x21, x23, #1 WORD $0x710170bf // cmp w5, #92 - WORD $0x540000a0 // b.eq LBB0_529 $20(%rip) + WORD $0x540000a0 // b.eq LBB0_542 $20(%rip) WORD $0xaa0603f3 // mov x19, x6 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffef4 // cbnz x20, LBB0_526 $-36(%rip) - WORD $0x14000009 // b LBB0_531 $36(%rip) -LBB0_529: - WORD $0xb4000774 // cbz x20, LBB0_545 $236(%rip) + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffef5 // cbnz x21, LBB0_539 $-36(%rip) + WORD $0x14000009 // b LBB0_544 $36(%rip) +LBB0_542: + WORD $0xb4000775 // cbz x21, LBB0_558 $236(%rip) WORD $0x8b0e00cf // add x15, x6, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001e0 // csel x0, x15, x0, eq WORD $0x91000a73 // add x19, x19, #2 - WORD $0xd1000ad4 // sub x20, x22, #2 - WORD $0xaa1403f6 // mov x22, x20 - WORD $0xb5fffdd4 // cbnz x20, LBB0_526 $-72(%rip) -LBB0_531: + WORD $0xd1000af5 // sub x21, x23, #2 + WORD $0xaa1503f7 // mov x23, x21 + WORD $0xb5fffdd5 // cbnz x21, LBB0_539 $-72(%rip) +LBB0_544: WORD $0x710088bf // cmp w5, #34 - WORD $0x54000641 // b.ne LBB0_545 $200(%rip) -LBB0_532: + WORD $0x54000641 // b.ne LBB0_558 $200(%rip) +LBB0_545: WORD $0xaa1303e6 // mov x6, x19 -LBB0_533: - WORD $0xcb1e00d3 // sub x19, x6, lr -LBB0_534: - WORD $0x5280007a // mov w26, #3 +LBB0_546: + WORD $0xcb1400d3 // sub x19, x6, x20 +LBB0_547: + WORD $0x5280007b // mov w27, #3 WORD $0x92f00007 // mov x7, #9223372036854775807 WORD $0x12800011 // mov w17, #-1 - WORD $0xb6ff6a93 // tbz x19, #63, LBB0_283 $-4784(%rip) - WORD $0x14000029 // b LBB0_544 $164(%rip) -LBB0_535: + WORD $0xb6ffda13 // tbz x19, #63, LBB0_478 $-1216(%rip) + WORD $0x14000029 // b LBB0_557 $164(%rip) +LBB0_548: WORD $0xb100041f // cmn x0, #1 - WORD $0x540000a1 // b.ne LBB0_537 $20(%rip) - WORD $0xdac0028f // rbit x15, x20 + WORD $0x540000a1 // b.ne LBB0_550 $20(%rip) + WORD $0xdac002af // rbit x15, x21 WORD $0xdac011ef // clz x15, x15 - WORD $0xcb1e0271 // sub x17, x19, lr + WORD $0xcb140271 // sub x17, x19, x20 WORD $0x8b0f0220 // add x0, x17, x15 -LBB0_537: - WORD $0x0a26028f // bic w15, w20, w6 +LBB0_550: + WORD $0x0a2602af // bic w15, w21, w6 WORD $0x531f79f1 // lsl w17, w15, #1 WORD $0x331f79e6 // bfi w6, w15, #1, #31 - WORD $0x0a310291 // bic w17, w20, w17 + WORD $0x0a3102b1 // bic w17, w21, w17 WORD $0x1201f231 // and w17, w17, #0xaaaaaaaa WORD $0x2b0f022f // adds w15, w17, w15 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 @@ -3289,160 +3349,160 @@ LBB0_537: WORD $0x1a9f37e6 // cset w6, hs WORD $0x2a2f03ef // mvn w15, w15 WORD $0x8a0501e5 // and x5, x15, x5 - WORD $0x17fffe59 // b LBB0_442 $-1692(%rip) -LBB0_538: - WORD $0xb4000316 // cbz x22, LBB0_545 $96(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0x17fffe52 // b LBB0_452 $-1720(%rip) +LBB0_551: + WORD $0xb4000317 // cbz x23, LBB0_558 $96(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5fff956 // cbnz x22, LBB0_525 $-216(%rip) - WORD $0x17ffffdf // b LBB0_532 $-132(%rip) -LBB0_540: - WORD $0xb40001f6 // cbz x22, LBB0_545 $60(%rip) - WORD $0xaa3e03ee // mvn x14, lr + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5fff957 // cbnz x23, LBB0_538 $-216(%rip) + WORD $0x17ffffdf // b LBB0_545 $-132(%rip) +LBB0_553: + WORD $0xb40001f7 // cbz x23, LBB0_558 $60(%rip) + WORD $0xaa3403ee // mvn x14, x20 WORD $0x8b0e026e // add x14, x19, x14 WORD $0xb100041f // cmn x0, #1 WORD $0x9a8001c0 // csel x0, x14, x0, eq WORD $0x91000673 // add x19, x19, #1 - WORD $0xd10006d6 // sub x22, x22, #1 - WORD $0xb5ffcc36 // cbnz x22, LBB0_448 $-1660(%rip) - WORD $0x14000007 // b LBB0_545 $28(%rip) -LBB0_542: + WORD $0xd10006f7 // sub x23, x23, #1 + WORD $0xb5ffcb57 // cbnz x23, LBB0_458 $-1688(%rip) + WORD $0x14000007 // b LBB0_558 $28(%rip) +LBB0_555: WORD $0x92800020 // mov x0, #-2 - WORD $0x1400006a // b LBB0_578 $424(%rip) -LBB0_543: + WORD $0x1400006a // b LBB0_591 $424(%rip) +LBB0_556: WORD $0x928000c0 // mov x0, #-7 - WORD $0x14000068 // b LBB0_578 $416(%rip) -LBB0_544: + WORD $0x14000068 // b LBB0_591 $416(%rip) +LBB0_557: WORD $0xb100067f // cmn x19, #1 - WORD $0x54000ac1 // b.ne LBB0_569 $344(%rip) -LBB0_545: - WORD $0xf9400760 // ldr x0, [x27, #8] + WORD $0x54000ac1 // b.ne LBB0_582 $344(%rip) +LBB0_558: + WORD $0xf94007c0 // ldr x0, [lr, #8] WORD $0x92800013 // mov x19, #-1 - WORD $0x14000053 // b LBB0_569 $332(%rip) -LBB0_546: + WORD $0x14000053 // b LBB0_582 $332(%rip) +LBB0_559: WORD $0x9280000e // mov x14, #-1 -LBB0_547: - WORD $0xaa2e03f6 // mvn x22, x14 -LBB0_548: - WORD $0x8b0802c8 // add x8, x22, x8 -LBB0_549: +LBB0_560: + WORD $0xaa2e03f7 // mvn x23, x14 +LBB0_561: + WORD $0x8b0802e8 // add x8, x23, x8 +LBB0_562: WORD $0xf9000028 // str x8, [x1] WORD $0x92800020 // mov x0, #-2 - WORD $0x1400005d // b LBB0_578 $372(%rip) -LBB0_550: + WORD $0x1400005d // b LBB0_591 $372(%rip) +LBB0_563: WORD $0xf900002e // str x14, [x1] - WORD $0x1400005a // b LBB0_577 $360(%rip) -LBB0_551: + WORD $0x1400005a // b LBB0_590 $360(%rip) +LBB0_564: WORD $0xb100041f // cmn x0, #1 - WORD $0x540008a0 // b.eq LBB0_568 $276(%rip) + WORD $0x540008a0 // b.eq LBB0_581 $276(%rip) WORD $0x92800033 // mov x19, #-2 - WORD $0x14000047 // b LBB0_569 $284(%rip) -LBB0_553: - WORD $0xaa0003f6 // mov x22, x0 - WORD $0x17fffff5 // b LBB0_548 $-44(%rip) -LBB0_554: + WORD $0x14000047 // b LBB0_582 $284(%rip) +LBB0_566: + WORD $0xaa0003f7 // mov x23, x0 + WORD $0x17fffff5 // b LBB0_561 $-44(%rip) +LBB0_567: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101d13f // cmp w9, #116 - WORD $0x54000a21 // b.ne LBB0_578 $324(%rip) + WORD $0x54000a21 // b.ne LBB0_591 $324(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101c93f // cmp w9, #114 - WORD $0x54000981 // b.ne LBB0_578 $304(%rip) + WORD $0x54000981 // b.ne LBB0_591 $304(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x540008e1 // b.ne LBB0_578 $284(%rip) + WORD $0x540008e1 // b.ne LBB0_591 $284(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000841 // b.ne LBB0_578 $264(%rip) - WORD $0x14000014 // b LBB0_562 $80(%rip) -LBB0_558: + WORD $0x54000841 // b.ne LBB0_591 $264(%rip) + WORD $0x14000014 // b LBB0_575 $80(%rip) +LBB0_571: WORD $0xf9000028 // str x8, [x1] WORD $0x394000c9 // ldrb w9, [x6] WORD $0x7101b93f // cmp w9, #110 - WORD $0x540007a1 // b.ne LBB0_578 $244(%rip) + WORD $0x540007a1 // b.ne LBB0_591 $244(%rip) WORD $0x91000509 // add x9, x8, #1 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101d53f // cmp w9, #117 - WORD $0x54000701 // b.ne LBB0_578 $224(%rip) + WORD $0x54000701 // b.ne LBB0_591 $224(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000661 // b.ne LBB0_578 $204(%rip) + WORD $0x54000661 // b.ne LBB0_591 $204(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x540005c1 // b.ne LBB0_578 $184(%rip) -LBB0_562: + WORD $0x540005c1 // b.ne LBB0_591 $184(%rip) +LBB0_575: WORD $0x91001108 // add x8, x8, #4 WORD $0xf9000028 // str x8, [x1] - WORD $0x1400002b // b LBB0_578 $172(%rip) -LBB0_563: + WORD $0x1400002b // b LBB0_591 $172(%rip) +LBB0_576: WORD $0xf9000033 // str x19, [x1] - WORD $0x38736bc9 // ldrb w9, [lr, x19] + WORD $0x38736a89 // ldrb w9, [x20, x19] WORD $0x7101853f // cmp w9, #97 - WORD $0x540004e1 // b.ne LBB0_578 $156(%rip) + WORD $0x540004e1 // b.ne LBB0_591 $156(%rip) WORD $0x91000909 // add x9, x8, #2 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101b13f // cmp w9, #108 - WORD $0x54000441 // b.ne LBB0_578 $136(%rip) + WORD $0x54000441 // b.ne LBB0_591 $136(%rip) WORD $0x91000d09 // add x9, x8, #3 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101cd3f // cmp w9, #115 - WORD $0x540003a1 // b.ne LBB0_578 $116(%rip) + WORD $0x540003a1 // b.ne LBB0_591 $116(%rip) WORD $0x91001109 // add x9, x8, #4 WORD $0xf9000029 // str x9, [x1] - WORD $0x38696bc9 // ldrb w9, [lr, x9] + WORD $0x38696a89 // ldrb w9, [x20, x9] WORD $0x7101953f // cmp w9, #101 - WORD $0x54000301 // b.ne LBB0_578 $96(%rip) + WORD $0x54000301 // b.ne LBB0_591 $96(%rip) WORD $0x91001508 // add x8, x8, #5 WORD $0xf9000028 // str x8, [x1] - WORD $0x14000015 // b LBB0_578 $84(%rip) -LBB0_568: + WORD $0x14000015 // b LBB0_591 $84(%rip) +LBB0_581: WORD $0xdac000a8 // rbit x8, x5 WORD $0xdac01108 // clz x8, x8 WORD $0x8b130100 // add x0, x8, x19 WORD $0x92800033 // mov x19, #-2 -LBB0_569: +LBB0_582: WORD $0xf9000020 // str x0, [x1] WORD $0xaa1303e0 // mov x0, x19 - WORD $0x1400000e // b LBB0_578 $56(%rip) -LBB0_570: + WORD $0x1400000e // b LBB0_591 $56(%rip) +LBB0_583: WORD $0x9280000e // mov x14, #-1 -LBB0_571: +LBB0_584: WORD $0xaa2e03e6 // mvn x6, x14 -LBB0_572: +LBB0_585: WORD $0x8b060268 // add x8, x19, x6 - WORD $0x17ffffab // b LBB0_549 $-340(%rip) -LBB0_573: - WORD $0xaa1a03e6 // mov x6, x26 - WORD $0x8b1a0268 // add x8, x19, x26 - WORD $0x17ffffa8 // b LBB0_549 $-352(%rip) -LBB0_574: + WORD $0x17ffffab // b LBB0_562 $-340(%rip) +LBB0_586: + WORD $0xaa1b03e6 // mov x6, x27 + WORD $0x8b1b0268 // add x8, x19, x27 + WORD $0x17ffffa8 // b LBB0_562 $-352(%rip) +LBB0_587: WORD $0x8b1300a0 // add x0, x5, x19 WORD $0x92800033 // mov x19, #-2 - WORD $0x17fffff4 // b LBB0_569 $-48(%rip) -LBB0_575: - WORD $0xf9400768 // ldr x8, [x27, #8] -LBB0_576: + WORD $0x17fffff4 // b LBB0_582 $-48(%rip) +LBB0_588: + WORD $0xf94007c8 // ldr x8, [lr, #8] +LBB0_589: WORD $0xf9000028 // str x8, [x1] -LBB0_577: +LBB0_590: WORD $0x92800000 // mov x0, #-1 -LBB0_578: +LBB0_591: WORD $0xa94dfbfd // ldp fp, lr, [sp, #216] WORD $0xa94ccff4 // ldp x20, x19, [sp, #200] WORD $0xa94bd7f6 // ldp x22, x21, [sp, #184] @@ -3452,20 +3512,20 @@ LBB0_578: WORD $0x6d47a3e9 // ldp d9, d8, [sp, #120] WORD $0x9103c3ff // add sp, sp, #240 WORD $0xd65f03c0 // ret -LBB0_579: - WORD $0x8b1401c0 // add x0, x14, x20 +LBB0_592: + WORD $0x8b1501c0 // add x0, x14, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe5 // b LBB0_569 $-108(%rip) -LBB0_580: - WORD $0xcb1e0268 // sub x8, x19, lr - WORD $0x8b140100 // add x0, x8, x20 + WORD $0x17ffffe5 // b LBB0_582 $-108(%rip) +LBB0_593: + WORD $0xcb140268 // sub x8, x19, x20 + WORD $0x8b150100 // add x0, x8, x21 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffe1 // b LBB0_569 $-124(%rip) -LBB0_581: - WORD $0xcb1e0268 // sub x8, x19, lr + WORD $0x17ffffe1 // b LBB0_582 $-124(%rip) +LBB0_594: + WORD $0xcb140268 // sub x8, x19, x20 WORD $0x8b050100 // add x0, x8, x5 WORD $0x92800033 // mov x19, #-2 - WORD $0x17ffffdd // b LBB0_569 $-140(%rip) + WORD $0x17ffffdd // b LBB0_582 $-140(%rip) // .p2align 2, 0x00 _MASK_USE_NUMBER: WORD $0x00000002 // .long 2 diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_subr.go index 8d76ae019..872e7571a 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__get_by_path = 21416 + _size__get_by_path = 21728 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x4568, 216}, - {0x4569, 48}, - {0x456b, 40}, - {0x456d, 32}, - {0x456f, 24}, - {0x4571, 16}, - {0x4572, 8}, - {0x4573, 0}, - {0x53a8, 216}, + {0x4680, 216}, + {0x4681, 48}, + {0x4683, 40}, + {0x4685, 32}, + {0x4687, 24}, + {0x4689, 16}, + {0x468a, 8}, + {0x468b, 0}, + {0x54e0, 216}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_text_amd64.go index b7912a4d2..0e46eb5e5 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/get_by_path_text_amd64.go @@ -46,585 +46,590 @@ var _text_get_by_path = []byte{ 0x41, 0x54, //0x000000fa pushq %r12 0x53, //0x000000fc pushq %rbx 0x48, 0x81, 0xec, 0xa8, 0x00, 0x00, 0x00, //0x000000fd subq $168, %rsp - 0x49, 0x89, 0xc9, //0x00000104 movq %rcx, %r9 + 0x49, 0x89, 0xca, //0x00000104 movq %rcx, %r10 0x49, 0x89, 0xf0, //0x00000107 movq %rsi, %r8 0x49, 0x89, 0xfc, //0x0000010a movq %rdi, %r12 0x48, 0x8b, 0x42, 0x08, //0x0000010d movq $8(%rdx), %rax - 0x4c, 0x8d, 0x7f, 0x08, //0x00000111 leaq $8(%rdi), %r15 + 0x4c, 0x8d, 0x4f, 0x08, //0x00000111 leaq $8(%rdi), %r9 0x48, 0x85, 0xc0, //0x00000115 testq %rax, %rax 0x48, 0x89, 0x75, 0xc8, //0x00000118 movq %rsi, $-56(%rbp) - 0x4c, 0x89, 0x7d, 0xc0, //0x0000011c movq %r15, $-64(%rbp) - 0x48, 0x89, 0x4d, 0x98, //0x00000120 movq %rcx, $-104(%rbp) - 0x0f, 0x84, 0xce, 0x2c, 0x00, 0x00, //0x00000124 je LBB0_459 - 0x4c, 0x8b, 0x1a, //0x0000012a movq (%rdx), %r11 + 0x4c, 0x89, 0x4d, 0xc0, //0x0000011c movq %r9, $-64(%rbp) + 0x48, 0x89, 0x4d, 0xa0, //0x00000120 movq %rcx, $-96(%rbp) + 0x0f, 0x84, 0x36, 0x2d, 0x00, 0x00, //0x00000124 je LBB0_465 + 0x48, 0x8b, 0x0a, //0x0000012a movq (%rdx), %rcx 0x48, 0xc1, 0xe0, 0x04, //0x0000012d shlq $4, %rax - 0x4c, 0x01, 0xd8, //0x00000131 addq %r11, %rax - 0x48, 0x89, 0x85, 0x38, 0xff, 0xff, 0xff, //0x00000134 movq %rax, $-200(%rbp) - 0x4d, 0x8b, 0x2c, 0x24, //0x0000013b movq (%r12), %r13 - 0x49, 0x8b, 0x00, //0x0000013f movq (%r8), %rax - 0xf3, 0x0f, 0x6f, 0x05, 0xe6, 0xfe, 0xff, 0xff, //0x00000142 movdqu $-282(%rip), %xmm0 /* LCPI0_3+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xee, 0xfe, 0xff, 0xff, //0x0000014a movdqu $-274(%rip), %xmm1 /* LCPI0_4+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa5, 0xfe, 0xff, 0xff, //0x00000152 movdqu $-347(%rip), %xmm13 /* LCPI0_0+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0xac, 0xfe, 0xff, 0xff, //0x0000015b movdqu $-340(%rip), %xmm14 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0xb4, 0xfe, 0xff, 0xff, //0x00000164 movdqu $-332(%rip), %xmm4 /* LCPI0_2+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x0000016c pcmpeqd %xmm9, %xmm9 - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xf6, 0xfe, 0xff, 0xff, //0x00000171 movdqu $-266(%rip), %xmm10 /* LCPI0_7+0(%rip) */ - 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x0000017a pxor %xmm8, %xmm8 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0xc8, 0xfe, 0xff, 0xff, //0x0000017f movdqu $-312(%rip), %xmm11 /* LCPI0_5+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xcf, 0xfe, 0xff, 0xff, //0x00000188 movdqu $-305(%rip), %xmm12 /* LCPI0_6+0(%rip) */ - 0x4c, 0x89, 0x65, 0xb0, //0x00000191 movq %r12, $-80(%rbp) - //0x00000195 LBB0_2 - 0x49, 0x8b, 0x0f, //0x00000195 movq (%r15), %rcx - 0x48, 0x39, 0xc8, //0x00000198 cmpq %rcx, %rax - 0x0f, 0x83, 0x2f, 0x00, 0x00, 0x00, //0x0000019b jae LBB0_7 - 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000001a1 movb (%r13,%rax), %dl - 0x80, 0xfa, 0x0d, //0x000001a6 cmpb $13, %dl - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000001a9 je LBB0_7 - 0x80, 0xfa, 0x20, //0x000001af cmpb $32, %dl - 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x000001b2 je LBB0_7 - 0x80, 0xc2, 0xf7, //0x000001b8 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000001bb cmpb $1, %dl - 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x000001be jbe LBB0_7 - 0x48, 0x89, 0xc2, //0x000001c4 movq %rax, %rdx - 0xe9, 0x2c, 0x01, 0x00, 0x00, //0x000001c7 jmp LBB0_28 - 0x90, 0x90, 0x90, 0x90, //0x000001cc .p2align 4, 0x90 - //0x000001d0 LBB0_7 - 0x48, 0x8d, 0x50, 0x01, //0x000001d0 leaq $1(%rax), %rdx - 0x48, 0x39, 0xca, //0x000001d4 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000001d7 jae LBB0_11 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x000001dd movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x000001e2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000001e5 je LBB0_11 - 0x80, 0xfb, 0x20, //0x000001eb cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000001ee je LBB0_11 - 0x80, 0xc3, 0xf7, //0x000001f4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000001f7 cmpb $1, %bl - 0x0f, 0x87, 0xf8, 0x00, 0x00, 0x00, //0x000001fa ja LBB0_28 - //0x00000200 .p2align 4, 0x90 - //0x00000200 LBB0_11 - 0x48, 0x8d, 0x50, 0x02, //0x00000200 leaq $2(%rax), %rdx - 0x48, 0x39, 0xca, //0x00000204 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000207 jae LBB0_15 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000020d movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x00000212 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000215 je LBB0_15 - 0x80, 0xfb, 0x20, //0x0000021b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000021e je LBB0_15 - 0x80, 0xc3, 0xf7, //0x00000224 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000227 cmpb $1, %bl - 0x0f, 0x87, 0xc8, 0x00, 0x00, 0x00, //0x0000022a ja LBB0_28 - //0x00000230 .p2align 4, 0x90 - //0x00000230 LBB0_15 - 0x48, 0x8d, 0x50, 0x03, //0x00000230 leaq $3(%rax), %rdx - 0x48, 0x39, 0xca, //0x00000234 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000237 jae LBB0_19 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000023d movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x00000242 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000245 je LBB0_19 - 0x80, 0xfb, 0x20, //0x0000024b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000024e je LBB0_19 - 0x80, 0xc3, 0xf7, //0x00000254 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000257 cmpb $1, %bl - 0x0f, 0x87, 0x98, 0x00, 0x00, 0x00, //0x0000025a ja LBB0_28 - //0x00000260 .p2align 4, 0x90 - //0x00000260 LBB0_19 - 0x4c, 0x8d, 0x50, 0x04, //0x00000260 leaq $4(%rax), %r10 - 0x4c, 0x39, 0xd1, //0x00000264 cmpq %r10, %rcx - 0x0f, 0x86, 0x53, 0x00, 0x00, 0x00, //0x00000267 jbe LBB0_860 - 0x4c, 0x39, 0xd1, //0x0000026d cmpq %r10, %rcx - 0x0f, 0x84, 0x6a, 0x00, 0x00, 0x00, //0x00000270 je LBB0_25 - 0x4a, 0x8d, 0x14, 0x29, //0x00000276 leaq (%rcx,%r13), %rdx - 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000027a movabsq $4294977024, %rdi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000284 .p2align 4, 0x90 + 0x48, 0x89, 0x4d, 0xb0, //0x00000131 movq %rcx, $-80(%rbp) + 0x48, 0x01, 0xc8, //0x00000135 addq %rcx, %rax + 0x48, 0x89, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00000138 movq %rax, $-208(%rbp) + 0x4d, 0x8b, 0x2c, 0x24, //0x0000013f movq (%r12), %r13 + 0x49, 0x8b, 0x00, //0x00000143 movq (%r8), %rax + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000146 movabsq $4294977024, %r14 + 0xf3, 0x0f, 0x6f, 0x05, 0xd8, 0xfe, 0xff, 0xff, //0x00000150 movdqu $-296(%rip), %xmm0 /* LCPI0_3+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xe0, 0xfe, 0xff, 0xff, //0x00000158 movdqu $-288(%rip), %xmm1 /* LCPI0_4+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x97, 0xfe, 0xff, 0xff, //0x00000160 movdqu $-361(%rip), %xmm13 /* LCPI0_0+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x9e, 0xfe, 0xff, 0xff, //0x00000169 movdqu $-354(%rip), %xmm14 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0xa6, 0xfe, 0xff, 0xff, //0x00000172 movdqu $-346(%rip), %xmm4 /* LCPI0_2+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x0000017a pcmpeqd %xmm9, %xmm9 + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xe8, 0xfe, 0xff, 0xff, //0x0000017f movdqu $-280(%rip), %xmm10 /* LCPI0_7+0(%rip) */ + 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00000188 pxor %xmm8, %xmm8 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0xba, 0xfe, 0xff, 0xff, //0x0000018d movdqu $-326(%rip), %xmm11 /* LCPI0_5+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xc1, 0xfe, 0xff, 0xff, //0x00000196 movdqu $-319(%rip), %xmm12 /* LCPI0_6+0(%rip) */ + 0x4c, 0x89, 0x65, 0xa8, //0x0000019f movq %r12, $-88(%rbp) + //0x000001a3 LBB0_2 + 0x49, 0x8b, 0x09, //0x000001a3 movq (%r9), %rcx + 0x48, 0x39, 0xc8, //0x000001a6 cmpq %rcx, %rax + 0x0f, 0x83, 0x31, 0x00, 0x00, 0x00, //0x000001a9 jae LBB0_7 + 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000001af movb (%r13,%rax), %dl + 0x80, 0xfa, 0x0d, //0x000001b4 cmpb $13, %dl + 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x000001b7 je LBB0_7 + 0x80, 0xfa, 0x20, //0x000001bd cmpb $32, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x000001c0 je LBB0_7 + 0x80, 0xc2, 0xf7, //0x000001c6 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000001c9 cmpb $1, %dl + 0x0f, 0x86, 0x0e, 0x00, 0x00, 0x00, //0x000001cc jbe LBB0_7 + 0x48, 0x89, 0xc2, //0x000001d2 movq %rax, %rdx + 0xe9, 0x18, 0x01, 0x00, 0x00, //0x000001d5 jmp LBB0_28 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000001da .p2align 4, 0x90 + //0x000001e0 LBB0_7 + 0x48, 0x8d, 0x50, 0x01, //0x000001e0 leaq $1(%rax), %rdx + 0x48, 0x39, 0xca, //0x000001e4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000001e7 jae LBB0_11 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x000001ed movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000001f2 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000001f5 je LBB0_11 + 0x80, 0xfb, 0x20, //0x000001fb cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000001fe je LBB0_11 + 0x80, 0xc3, 0xf7, //0x00000204 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000207 cmpb $1, %bl + 0x0f, 0x87, 0xe2, 0x00, 0x00, 0x00, //0x0000020a ja LBB0_28 + //0x00000210 .p2align 4, 0x90 + //0x00000210 LBB0_11 + 0x48, 0x8d, 0x50, 0x02, //0x00000210 leaq $2(%rax), %rdx + 0x48, 0x39, 0xca, //0x00000214 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000217 jae LBB0_15 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000021d movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000222 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000225 je LBB0_15 + 0x80, 0xfb, 0x20, //0x0000022b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000022e je LBB0_15 + 0x80, 0xc3, 0xf7, //0x00000234 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000237 cmpb $1, %bl + 0x0f, 0x87, 0xb2, 0x00, 0x00, 0x00, //0x0000023a ja LBB0_28 + //0x00000240 .p2align 4, 0x90 + //0x00000240 LBB0_15 + 0x48, 0x8d, 0x50, 0x03, //0x00000240 leaq $3(%rax), %rdx + 0x48, 0x39, 0xca, //0x00000244 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000247 jae LBB0_19 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000024d movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000252 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000255 je LBB0_19 + 0x80, 0xfb, 0x20, //0x0000025b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000025e je LBB0_19 + 0x80, 0xc3, 0xf7, //0x00000264 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000267 cmpb $1, %bl + 0x0f, 0x87, 0x82, 0x00, 0x00, 0x00, //0x0000026a ja LBB0_28 + //0x00000270 .p2align 4, 0x90 + //0x00000270 LBB0_19 + 0x4c, 0x8d, 0x58, 0x04, //0x00000270 leaq $4(%rax), %r11 + 0x4c, 0x39, 0xd9, //0x00000274 cmpq %r11, %rcx + 0x0f, 0x86, 0x43, 0x00, 0x00, 0x00, //0x00000277 jbe LBB0_864 + 0x4c, 0x39, 0xd9, //0x0000027d cmpq %r11, %rcx + 0x0f, 0x84, 0x54, 0x00, 0x00, 0x00, //0x00000280 je LBB0_25 + 0x4a, 0x8d, 0x14, 0x29, //0x00000286 leaq (%rcx,%r13), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000028a .p2align 4, 0x90 //0x00000290 LBB0_22 - 0x43, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00000290 movsbl (%r13,%r10), %esi + 0x43, 0x0f, 0xbe, 0x74, 0x1d, 0x00, //0x00000290 movsbl (%r13,%r11), %esi 0x83, 0xfe, 0x20, //0x00000296 cmpl $32, %esi - 0x0f, 0x87, 0x4d, 0x00, 0x00, 0x00, //0x00000299 ja LBB0_27 - 0x48, 0x0f, 0xa3, 0xf7, //0x0000029f btq %rsi, %rdi - 0x0f, 0x83, 0x43, 0x00, 0x00, 0x00, //0x000002a3 jae LBB0_27 - 0x49, 0x83, 0xc2, 0x01, //0x000002a9 addq $1, %r10 - 0x4c, 0x39, 0xd1, //0x000002ad cmpq %r10, %rcx + 0x0f, 0x87, 0x47, 0x00, 0x00, 0x00, //0x00000299 ja LBB0_27 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000029f btq %rsi, %r14 + 0x0f, 0x83, 0x3d, 0x00, 0x00, 0x00, //0x000002a3 jae LBB0_27 + 0x49, 0x83, 0xc3, 0x01, //0x000002a9 addq $1, %r11 + 0x4c, 0x39, 0xd9, //0x000002ad cmpq %r11, %rcx 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x000002b0 jne LBB0_22 - 0xe9, 0x2b, 0x00, 0x00, 0x00, //0x000002b6 jmp LBB0_26 + 0xe9, 0x25, 0x00, 0x00, 0x00, //0x000002b6 jmp LBB0_26 0x90, 0x90, 0x90, 0x90, 0x90, //0x000002bb .p2align 4, 0x90 - //0x000002c0 LBB0_860 - 0x4d, 0x89, 0x10, //0x000002c0 movq %r10, (%r8) + //0x000002c0 LBB0_864 + 0x4d, 0x89, 0x18, //0x000002c0 movq %r11, (%r8) 0x31, 0xc9, //0x000002c3 xorl %ecx, %ecx - 0x49, 0x8b, 0x03, //0x000002c5 movq (%r11), %rax - 0x48, 0x85, 0xc0, //0x000002c8 testq %rax, %rax - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000002cb movabsq $4294977024, %r9 - 0x0f, 0x85, 0x65, 0x00, 0x00, 0x00, //0x000002d5 jne LBB0_30 - 0xe9, 0x23, 0x43, 0x00, 0x00, //0x000002db jmp LBB0_861 - //0x000002e0 LBB0_25 - 0x4d, 0x01, 0xea, //0x000002e0 addq %r13, %r10 - 0x4c, 0x89, 0xd2, //0x000002e3 movq %r10, %rdx - //0x000002e6 LBB0_26 - 0x4c, 0x29, 0xea, //0x000002e6 subq %r13, %rdx - 0x49, 0x89, 0xd2, //0x000002e9 movq %rdx, %r10 - //0x000002ec LBB0_27 - 0x4c, 0x89, 0xd2, //0x000002ec movq %r10, %rdx - 0x49, 0x39, 0xca, //0x000002ef cmpq %rcx, %r10 - 0x0f, 0x83, 0x27, 0x00, 0x00, 0x00, //0x000002f2 jae LBB0_29 - //0x000002f8 LBB0_28 - 0x4c, 0x8d, 0x52, 0x01, //0x000002f8 leaq $1(%rdx), %r10 - 0x4d, 0x89, 0x10, //0x000002fc movq %r10, (%r8) - 0x41, 0x8a, 0x4c, 0x15, 0x00, //0x000002ff movb (%r13,%rdx), %cl - 0x49, 0x8b, 0x03, //0x00000304 movq (%r11), %rax - 0x48, 0x85, 0xc0, //0x00000307 testq %rax, %rax - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000030a movabsq $4294977024, %r9 - 0x0f, 0x85, 0x26, 0x00, 0x00, 0x00, //0x00000314 jne LBB0_30 - 0xe9, 0xe4, 0x42, 0x00, 0x00, //0x0000031a jmp LBB0_861 - //0x0000031f LBB0_29 - 0x31, 0xc9, //0x0000031f xorl %ecx, %ecx - 0x49, 0x89, 0xc2, //0x00000321 movq %rax, %r10 - 0x49, 0x8b, 0x03, //0x00000324 movq (%r11), %rax - 0x48, 0x85, 0xc0, //0x00000327 testq %rax, %rax - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000032a movabsq $4294977024, %r9 - 0x0f, 0x84, 0xc9, 0x42, 0x00, 0x00, //0x00000334 je LBB0_861 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000033a .p2align 4, 0x90 - //0x00000340 LBB0_30 - 0x8a, 0x40, 0x17, //0x00000340 movb $23(%rax), %al - 0x24, 0x1f, //0x00000343 andb $31, %al - 0x3c, 0x02, //0x00000345 cmpb $2, %al - 0x0f, 0x84, 0x93, 0x1a, 0x00, 0x00, //0x00000347 je LBB0_342 - 0x3c, 0x18, //0x0000034d cmpb $24, %al - 0x0f, 0x85, 0xae, 0x42, 0x00, 0x00, //0x0000034f jne LBB0_861 - 0x80, 0xf9, 0x7b, //0x00000355 cmpb $123, %cl - 0x4c, 0x89, 0x5d, 0xa8, //0x00000358 movq %r11, $-88(%rbp) - 0x0f, 0x85, 0xe1, 0x42, 0x00, 0x00, //0x0000035c jne LBB0_868 - //0x00000362 LBB0_33 - 0x49, 0x8b, 0x0f, //0x00000362 movq (%r15), %rcx - 0x49, 0x39, 0xca, //0x00000365 cmpq %rcx, %r10 - 0x0f, 0x83, 0x32, 0x00, 0x00, 0x00, //0x00000368 jae LBB0_38 - 0x43, 0x8a, 0x44, 0x15, 0x00, //0x0000036e movb (%r13,%r10), %al - 0x3c, 0x0d, //0x00000373 cmpb $13, %al - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00000375 je LBB0_38 - 0x3c, 0x20, //0x0000037b cmpb $32, %al - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x0000037d je LBB0_38 - 0x04, 0xf7, //0x00000383 addb $-9, %al - 0x3c, 0x01, //0x00000385 cmpb $1, %al - 0x0f, 0x86, 0x13, 0x00, 0x00, 0x00, //0x00000387 jbe LBB0_38 - 0x4c, 0x89, 0xd0, //0x0000038d movq %r10, %rax - 0xe9, 0x00, 0x01, 0x00, 0x00, //0x00000390 jmp LBB0_59 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000395 .p2align 4, 0x90 - //0x000003a0 LBB0_38 - 0x49, 0x8d, 0x42, 0x01, //0x000003a0 leaq $1(%r10), %rax - 0x48, 0x39, 0xc8, //0x000003a4 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003a7 jae LBB0_42 - 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000003ad movb (%r13,%rax), %dl - 0x80, 0xfa, 0x0d, //0x000003b2 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000003b5 je LBB0_42 - 0x80, 0xfa, 0x20, //0x000003bb cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000003be je LBB0_42 - 0x80, 0xc2, 0xf7, //0x000003c4 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000003c7 cmpb $1, %dl - 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x000003ca ja LBB0_59 - //0x000003d0 .p2align 4, 0x90 - //0x000003d0 LBB0_42 - 0x49, 0x8d, 0x42, 0x02, //0x000003d0 leaq $2(%r10), %rax - 0x48, 0x39, 0xc8, //0x000003d4 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003d7 jae LBB0_46 - 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000003dd movb (%r13,%rax), %dl - 0x80, 0xfa, 0x0d, //0x000003e2 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000003e5 je LBB0_46 - 0x80, 0xfa, 0x20, //0x000003eb cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000003ee je LBB0_46 - 0x80, 0xc2, 0xf7, //0x000003f4 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x000003f7 cmpb $1, %dl - 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x000003fa ja LBB0_59 - //0x00000400 .p2align 4, 0x90 - //0x00000400 LBB0_46 - 0x49, 0x8d, 0x42, 0x03, //0x00000400 leaq $3(%r10), %rax - 0x48, 0x39, 0xc8, //0x00000404 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000407 jae LBB0_50 - 0x41, 0x8a, 0x54, 0x05, 0x00, //0x0000040d movb (%r13,%rax), %dl - 0x80, 0xfa, 0x0d, //0x00000412 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000415 je LBB0_50 - 0x80, 0xfa, 0x20, //0x0000041b cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000041e je LBB0_50 - 0x80, 0xc2, 0xf7, //0x00000424 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000427 cmpb $1, %dl - 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x0000042a ja LBB0_59 - //0x00000430 .p2align 4, 0x90 - //0x00000430 LBB0_50 - 0x49, 0x8d, 0x42, 0x04, //0x00000430 leaq $4(%r10), %rax - 0x48, 0x39, 0xc1, //0x00000434 cmpq %rax, %rcx - 0x0f, 0x86, 0xfb, 0x41, 0x00, 0x00, //0x00000437 jbe LBB0_865 - 0x48, 0x39, 0xc1, //0x0000043d cmpq %rax, %rcx - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000440 je LBB0_56 - 0x4a, 0x8d, 0x14, 0x29, //0x00000446 leaq (%rcx,%r13), %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000044a .p2align 4, 0x90 - //0x00000450 LBB0_53 - 0x41, 0x0f, 0xbe, 0x74, 0x05, 0x00, //0x00000450 movsbl (%r13,%rax), %esi - 0x83, 0xfe, 0x20, //0x00000456 cmpl $32, %esi - 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00000459 ja LBB0_58 - 0x49, 0x0f, 0xa3, 0xf1, //0x0000045f btq %rsi, %r9 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000463 jae LBB0_58 - 0x48, 0x83, 0xc0, 0x01, //0x00000469 addq $1, %rax - 0x48, 0x39, 0xc1, //0x0000046d cmpq %rax, %rcx - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000470 jne LBB0_53 - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000476 jmp LBB0_57 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000047b .p2align 4, 0x90 - //0x00000480 LBB0_56 - 0x4c, 0x01, 0xe8, //0x00000480 addq %r13, %rax - 0x48, 0x89, 0xc2, //0x00000483 movq %rax, %rdx - //0x00000486 LBB0_57 - 0x4c, 0x29, 0xea, //0x00000486 subq %r13, %rdx - 0x48, 0x89, 0xd0, //0x00000489 movq %rdx, %rax - //0x0000048c LBB0_58 - 0x48, 0x39, 0xc8, //0x0000048c cmpq %rcx, %rax - 0x0f, 0x83, 0xae, 0x41, 0x00, 0x00, //0x0000048f jae LBB0_868 - //0x00000495 LBB0_59 - 0x4c, 0x8d, 0x50, 0x01, //0x00000495 leaq $1(%rax), %r10 - 0x4d, 0x89, 0x10, //0x00000499 movq %r10, (%r8) - 0x41, 0x8a, 0x54, 0x05, 0x00, //0x0000049c movb (%r13,%rax), %dl - 0x80, 0xfa, 0x22, //0x000004a1 cmpb $34, %dl - 0x0f, 0x85, 0x2d, 0x2b, 0x00, 0x00, //0x000004a4 jne LBB0_550 - 0x49, 0x8b, 0x0f, //0x000004aa movq (%r15), %rcx - 0x49, 0x89, 0xc8, //0x000004ad movq %rcx, %r8 - 0x4d, 0x29, 0xd0, //0x000004b0 subq %r10, %r8 - 0x0f, 0x84, 0xe8, 0x4d, 0x00, 0x00, //0x000004b3 je LBB0_966 - 0x48, 0x89, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x000004b9 movq %rcx, $-184(%rbp) - 0x49, 0x8b, 0x73, 0x08, //0x000004c0 movq $8(%r11), %rsi - 0x4c, 0x8b, 0x36, //0x000004c4 movq (%rsi), %r14 - 0x48, 0x8b, 0x4e, 0x08, //0x000004c7 movq $8(%rsi), %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x000004cb movq %rcx, $-48(%rbp) - 0x4c, 0x89, 0x95, 0x40, 0xff, 0xff, 0xff, //0x000004cf movq %r10, $-192(%rbp) - 0x4b, 0x8d, 0x1c, 0x2a, //0x000004d6 leaq (%r10,%r13), %rbx - 0x49, 0x83, 0xf8, 0x40, //0x000004da cmpq $64, %r8 - 0x48, 0x89, 0x5d, 0x90, //0x000004de movq %rbx, $-112(%rbp) - 0x0f, 0x82, 0xa5, 0x12, 0x00, 0x00, //0x000004e2 jb LBB0_266 - 0x4c, 0x89, 0x75, 0xa0, //0x000004e8 movq %r14, $-96(%rbp) - 0x49, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x000004ec movq $-2, %r14 - 0x49, 0x29, 0xc6, //0x000004f3 subq %rax, %r14 - 0x4c, 0x8d, 0x50, 0x01, //0x000004f6 leaq $1(%rax), %r10 - 0x48, 0xc7, 0x45, 0xb8, 0xff, 0xff, 0xff, 0xff, //0x000004fa movq $-1, $-72(%rbp) - 0x45, 0x31, 0xc9, //0x00000502 xorl %r9d, %r9d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000505 .p2align 4, 0x90 - //0x00000510 LBB0_63 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x15, 0x00, //0x00000510 movdqu (%r13,%r10), %xmm3 - 0xf3, 0x43, 0x0f, 0x6f, 0x6c, 0x15, 0x10, //0x00000517 movdqu $16(%r13,%r10), %xmm5 - 0xf3, 0x43, 0x0f, 0x6f, 0x74, 0x15, 0x20, //0x0000051e movdqu $32(%r13,%r10), %xmm6 - 0xf3, 0x43, 0x0f, 0x6f, 0x7c, 0x15, 0x30, //0x00000525 movdqu $48(%r13,%r10), %xmm7 - 0x66, 0x0f, 0x6f, 0xd3, //0x0000052c movdqa %xmm3, %xmm2 - 0x66, 0x0f, 0x74, 0xd0, //0x00000530 pcmpeqb %xmm0, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00000534 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd5, //0x00000538 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd0, //0x0000053c pcmpeqb %xmm0, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xfa, //0x00000540 pmovmskb %xmm2, %r15d - 0x66, 0x0f, 0x6f, 0xd6, //0x00000545 movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd0, //0x00000549 pcmpeqb %xmm0, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x0000054d pmovmskb %xmm2, %r12d - 0x66, 0x0f, 0x6f, 0xd7, //0x00000552 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd0, //0x00000556 pcmpeqb %xmm0, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xda, //0x0000055a pmovmskb %xmm2, %r11d - 0x66, 0x0f, 0x74, 0xd9, //0x0000055f pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000563 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe9, //0x00000567 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x0000056b pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x74, 0xf1, //0x0000056f pcmpeqb %xmm1, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x00000573 pmovmskb %xmm6, %edx - 0x66, 0x0f, 0x74, 0xf9, //0x00000577 pcmpeqb %xmm1, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x0000057b pmovmskb %xmm7, %ecx - 0x49, 0xc1, 0xe3, 0x30, //0x0000057f shlq $48, %r11 - 0x49, 0xc1, 0xe4, 0x20, //0x00000583 shlq $32, %r12 - 0x4d, 0x09, 0xdc, //0x00000587 orq %r11, %r12 - 0x49, 0xc1, 0xe7, 0x10, //0x0000058a shlq $16, %r15 - 0x4d, 0x09, 0xe7, //0x0000058e orq %r12, %r15 - 0x4c, 0x09, 0xff, //0x00000591 orq %r15, %rdi - 0x48, 0xc1, 0xe1, 0x30, //0x00000594 shlq $48, %rcx - 0x48, 0xc1, 0xe2, 0x20, //0x00000598 shlq $32, %rdx - 0x48, 0x09, 0xca, //0x0000059c orq %rcx, %rdx - 0x48, 0xc1, 0xe3, 0x10, //0x0000059f shlq $16, %rbx - 0x48, 0x09, 0xd3, //0x000005a3 orq %rdx, %rbx - 0x48, 0x09, 0xde, //0x000005a6 orq %rbx, %rsi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000005a9 jne LBB0_72 - 0x4d, 0x85, 0xc9, //0x000005af testq %r9, %r9 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000005b2 jne LBB0_74 - 0x45, 0x31, 0xc9, //0x000005b8 xorl %r9d, %r9d - 0x48, 0x85, 0xff, //0x000005bb testq %rdi, %rdi - 0x0f, 0x85, 0x8c, 0x00, 0x00, 0x00, //0x000005be jne LBB0_75 - //0x000005c4 LBB0_66 - 0x49, 0x83, 0xc0, 0xc0, //0x000005c4 addq $-64, %r8 - 0x49, 0x83, 0xc6, 0xc0, //0x000005c8 addq $-64, %r14 - 0x49, 0x83, 0xc2, 0x40, //0x000005cc addq $64, %r10 - 0x49, 0x83, 0xf8, 0x3f, //0x000005d0 cmpq $63, %r8 - 0x0f, 0x87, 0x36, 0xff, 0xff, 0xff, //0x000005d4 ja LBB0_63 - 0xe9, 0xae, 0x10, 0x00, 0x00, //0x000005da jmp LBB0_67 - //0x000005df LBB0_72 - 0x48, 0x83, 0x7d, 0xb8, 0xff, //0x000005df cmpq $-1, $-72(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000005e4 jne LBB0_74 - 0x48, 0x0f, 0xbc, 0xce, //0x000005ea bsfq %rsi, %rcx - 0x4c, 0x01, 0xd1, //0x000005ee addq %r10, %rcx - 0x48, 0x89, 0x4d, 0xb8, //0x000005f1 movq %rcx, $-72(%rbp) - //0x000005f5 LBB0_74 - 0x4c, 0x89, 0xc9, //0x000005f5 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x000005f8 notq %rcx - 0x48, 0x21, 0xf1, //0x000005fb andq %rsi, %rcx - 0x48, 0x8d, 0x1c, 0x09, //0x000005fe leaq (%rcx,%rcx), %rbx - 0x4c, 0x09, 0xcb, //0x00000602 orq %r9, %rbx - 0x48, 0x89, 0xda, //0x00000605 movq %rbx, %rdx - 0x48, 0xf7, 0xd2, //0x00000608 notq %rdx - 0x48, 0x21, 0xf2, //0x0000060b andq %rsi, %rdx - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000060e movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x00000618 andq %rsi, %rdx - 0x45, 0x31, 0xc9, //0x0000061b xorl %r9d, %r9d - 0x48, 0x01, 0xca, //0x0000061e addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc1, //0x00000621 setb %r9b - 0x48, 0x01, 0xd2, //0x00000625 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000628 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x00000632 xorq %rcx, %rdx - 0x48, 0x21, 0xda, //0x00000635 andq %rbx, %rdx - 0x48, 0xf7, 0xd2, //0x00000638 notq %rdx - 0x48, 0x21, 0xd7, //0x0000063b andq %rdx, %rdi - 0x48, 0x85, 0xff, //0x0000063e testq %rdi, %rdi - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000641 je LBB0_66 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000647 .p2align 4, 0x90 - //0x00000650 LBB0_75 - 0x4c, 0x0f, 0xbc, 0xd7, //0x00000650 bsfq %rdi, %r10 - 0x4d, 0x29, 0xf2, //0x00000654 subq %r14, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00000657 movq $-56(%rbp), %r8 - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000065b movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x0000065f movq $-80(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00000663 movq $-88(%rbp), %r11 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000667 movabsq $4294977024, %r9 - 0x4c, 0x8b, 0x75, 0xa0, //0x00000671 movq $-96(%rbp), %r14 - 0x48, 0x8b, 0x5d, 0x90, //0x00000675 movq $-112(%rbp), %rbx - 0x48, 0x8b, 0x4d, 0xb8, //0x00000679 movq $-72(%rbp), %rcx - 0x4d, 0x85, 0xd2, //0x0000067d testq %r10, %r10 - 0x0f, 0x88, 0x26, 0x4c, 0x00, 0x00, //0x00000680 js LBB0_968 - //0x00000686 LBB0_78 - 0x4d, 0x89, 0x10, //0x00000686 movq %r10, (%r8) - 0x48, 0x83, 0xf9, 0xff, //0x00000689 cmpq $-1, %rcx - 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x0000068d je LBB0_80 - 0x4c, 0x39, 0xd1, //0x00000693 cmpq %r10, %rcx - 0x0f, 0x8e, 0x0e, 0x11, 0x00, 0x00, //0x00000696 jle LBB0_267 - //0x0000069c LBB0_80 - 0x4c, 0x89, 0xd2, //0x0000069c movq %r10, %rdx - 0x48, 0x29, 0xc2, //0x0000069f subq %rax, %rdx - 0x48, 0x83, 0xc2, 0xfe, //0x000006a2 addq $-2, %rdx - 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000006a6 movl $1, %ecx - 0x48, 0x89, 0xd6, //0x000006ab movq %rdx, %rsi - 0x48, 0x8b, 0x7d, 0xd0, //0x000006ae movq $-48(%rbp), %rdi - 0x48, 0x09, 0xfe, //0x000006b2 orq %rdi, %rsi - 0x0f, 0x84, 0x46, 0x00, 0x00, 0x00, //0x000006b5 je LBB0_86 - 0x48, 0x39, 0xfa, //0x000006bb cmpq %rdi, %rdx - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x000006be jne LBB0_85 - 0x31, 0xf6, //0x000006c4 xorl %esi, %esi - 0x48, 0x89, 0xfa, //0x000006c6 movq %rdi, %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006c9 .p2align 4, 0x90 - //0x000006d0 LBB0_83 - 0x48, 0x83, 0xfa, 0x10, //0x000006d0 cmpq $16, %rdx - 0x0f, 0x82, 0xa1, 0x02, 0x00, 0x00, //0x000006d4 jb LBB0_138 - 0xf3, 0x0f, 0x6f, 0x14, 0x33, //0x000006da movdqu (%rbx,%rsi), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x36, //0x000006df movdqu (%r14,%rsi), %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x000006e5 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x000006e9 pmovmskb %xmm3, %edi - 0x48, 0x83, 0xc2, 0xf0, //0x000006ed addq $-16, %rdx - 0x48, 0x83, 0xc6, 0x10, //0x000006f1 addq $16, %rsi - 0x66, 0x83, 0xff, 0xff, //0x000006f5 cmpw $-1, %di - 0x0f, 0x84, 0xd1, 0xff, 0xff, 0xff, //0x000006f9 je LBB0_83 - //0x000006ff LBB0_85 - 0x31, 0xc9, //0x000006ff xorl %ecx, %ecx - //0x00000701 LBB0_86 - 0x49, 0x8b, 0x07, //0x00000701 movq (%r15), %rax - 0x49, 0x39, 0xc2, //0x00000704 cmpq %rax, %r10 - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00000707 jae LBB0_91 - 0x43, 0x8a, 0x54, 0x15, 0x00, //0x0000070d movb (%r13,%r10), %dl - 0x80, 0xfa, 0x0d, //0x00000712 cmpb $13, %dl - 0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00000715 je LBB0_91 - 0x80, 0xfa, 0x20, //0x0000071b cmpb $32, %dl - 0x0f, 0x84, 0x1c, 0x00, 0x00, 0x00, //0x0000071e je LBB0_91 - 0x80, 0xc2, 0xf7, //0x00000724 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000727 cmpb $1, %dl - 0x0f, 0x86, 0x10, 0x00, 0x00, 0x00, //0x0000072a jbe LBB0_91 - 0x4c, 0x89, 0xd2, //0x00000730 movq %r10, %rdx - 0xe9, 0xfd, 0x00, 0x00, 0x00, //0x00000733 jmp LBB0_112 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000738 .p2align 4, 0x90 - //0x00000740 LBB0_91 - 0x49, 0x8d, 0x52, 0x01, //0x00000740 leaq $1(%r10), %rdx - 0x48, 0x39, 0xc2, //0x00000744 cmpq %rax, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000747 jae LBB0_95 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000074d movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x00000752 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000755 je LBB0_95 - 0x80, 0xfb, 0x20, //0x0000075b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000075e je LBB0_95 - 0x80, 0xc3, 0xf7, //0x00000764 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000767 cmpb $1, %bl - 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x0000076a ja LBB0_112 - //0x00000770 .p2align 4, 0x90 - //0x00000770 LBB0_95 - 0x49, 0x8d, 0x52, 0x02, //0x00000770 leaq $2(%r10), %rdx - 0x48, 0x39, 0xc2, //0x00000774 cmpq %rax, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000777 jae LBB0_99 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000077d movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x00000782 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000785 je LBB0_99 - 0x80, 0xfb, 0x20, //0x0000078b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000078e je LBB0_99 - 0x80, 0xc3, 0xf7, //0x00000794 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000797 cmpb $1, %bl - 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x0000079a ja LBB0_112 - //0x000007a0 .p2align 4, 0x90 - //0x000007a0 LBB0_99 - 0x49, 0x8d, 0x52, 0x03, //0x000007a0 leaq $3(%r10), %rdx - 0x48, 0x39, 0xc2, //0x000007a4 cmpq %rax, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000007a7 jae LBB0_103 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x000007ad movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x000007b2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000007b5 je LBB0_103 - 0x80, 0xfb, 0x20, //0x000007bb cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000007be je LBB0_103 - 0x80, 0xc3, 0xf7, //0x000007c4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000007c7 cmpb $1, %bl - 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x000007ca ja LBB0_112 - //0x000007d0 .p2align 4, 0x90 - //0x000007d0 LBB0_103 - 0x49, 0x8d, 0x52, 0x04, //0x000007d0 leaq $4(%r10), %rdx - 0x48, 0x39, 0xd0, //0x000007d4 cmpq %rdx, %rax - 0x0f, 0x86, 0x08, 0x28, 0x00, 0x00, //0x000007d7 jbe LBB0_866 - 0x48, 0x39, 0xd0, //0x000007dd cmpq %rdx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000007e0 je LBB0_109 - 0x4a, 0x8d, 0x34, 0x28, //0x000007e6 leaq (%rax,%r13), %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000007ea .p2align 4, 0x90 - //0x000007f0 LBB0_106 - 0x41, 0x0f, 0xbe, 0x7c, 0x15, 0x00, //0x000007f0 movsbl (%r13,%rdx), %edi - 0x83, 0xff, 0x20, //0x000007f6 cmpl $32, %edi - 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x000007f9 ja LBB0_111 - 0x49, 0x0f, 0xa3, 0xf9, //0x000007ff btq %rdi, %r9 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000803 jae LBB0_111 - 0x48, 0x83, 0xc2, 0x01, //0x00000809 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x0000080d cmpq %rdx, %rax - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000810 jne LBB0_106 - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000816 jmp LBB0_110 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000081b .p2align 4, 0x90 - //0x00000820 LBB0_109 - 0x4c, 0x01, 0xea, //0x00000820 addq %r13, %rdx - 0x48, 0x89, 0xd6, //0x00000823 movq %rdx, %rsi - //0x00000826 LBB0_110 - 0x4c, 0x29, 0xee, //0x00000826 subq %r13, %rsi - 0x48, 0x89, 0xf2, //0x00000829 movq %rsi, %rdx - //0x0000082c LBB0_111 - 0x48, 0x39, 0xc2, //0x0000082c cmpq %rax, %rdx - 0x0f, 0x83, 0x0e, 0x3e, 0x00, 0x00, //0x0000082f jae LBB0_868 - //0x00000835 LBB0_112 - 0x4c, 0x8d, 0x52, 0x01, //0x00000835 leaq $1(%rdx), %r10 - 0x4d, 0x89, 0x10, //0x00000839 movq %r10, (%r8) - 0x41, 0x80, 0x7c, 0x15, 0x00, 0x3a, //0x0000083c cmpb $58, (%r13,%rdx) - 0x0f, 0x85, 0xfb, 0x3d, 0x00, 0x00, //0x00000842 jne LBB0_868 - 0x48, 0x85, 0xc9, //0x00000848 testq %rcx, %rcx - 0x0f, 0x85, 0x8f, 0x25, 0x00, 0x00, //0x0000084b jne LBB0_458 - 0x49, 0x8b, 0x0f, //0x00000851 movq (%r15), %rcx - 0x49, 0x39, 0xca, //0x00000854 cmpq %rcx, %r10 - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00000857 jae LBB0_119 - 0x43, 0x8a, 0x44, 0x15, 0x00, //0x0000085d movb (%r13,%r10), %al - 0x3c, 0x0d, //0x00000862 cmpb $13, %al - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00000864 je LBB0_119 - 0x3c, 0x20, //0x0000086a cmpb $32, %al - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x0000086c je LBB0_119 - 0x04, 0xf7, //0x00000872 addb $-9, %al - 0x3c, 0x01, //0x00000874 cmpb $1, %al - 0x0f, 0x86, 0x14, 0x00, 0x00, 0x00, //0x00000876 jbe LBB0_119 - 0x4c, 0x89, 0xd0, //0x0000087c movq %r10, %rax - 0xe9, 0x95, 0x01, 0x00, 0x00, //0x0000087f jmp LBB0_148 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000884 .p2align 4, 0x90 - //0x00000890 LBB0_119 - 0x48, 0x8d, 0x42, 0x02, //0x00000890 leaq $2(%rdx), %rax - 0x48, 0x39, 0xc8, //0x00000894 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000897 jae LBB0_123 - 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x0000089d movb (%r13,%rax), %bl - 0x80, 0xfb, 0x0d, //0x000008a2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000008a5 je LBB0_123 - 0x80, 0xfb, 0x20, //0x000008ab cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000008ae je LBB0_123 - 0x80, 0xc3, 0xf7, //0x000008b4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000008b7 cmpb $1, %bl - 0x0f, 0x87, 0x59, 0x01, 0x00, 0x00, //0x000008ba ja LBB0_148 - //0x000008c0 .p2align 4, 0x90 - //0x000008c0 LBB0_123 - 0x48, 0x8d, 0x42, 0x03, //0x000008c0 leaq $3(%rdx), %rax - 0x48, 0x39, 0xc8, //0x000008c4 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000008c7 jae LBB0_127 - 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x000008cd movb (%r13,%rax), %bl - 0x80, 0xfb, 0x0d, //0x000008d2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000008d5 je LBB0_127 - 0x80, 0xfb, 0x20, //0x000008db cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000008de je LBB0_127 - 0x80, 0xc3, 0xf7, //0x000008e4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000008e7 cmpb $1, %bl - 0x0f, 0x87, 0x29, 0x01, 0x00, 0x00, //0x000008ea ja LBB0_148 - //0x000008f0 .p2align 4, 0x90 - //0x000008f0 LBB0_127 - 0x48, 0x8d, 0x42, 0x04, //0x000008f0 leaq $4(%rdx), %rax - 0x48, 0x39, 0xc8, //0x000008f4 cmpq %rcx, %rax - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000008f7 jae LBB0_131 - 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x000008fd movb (%r13,%rax), %bl - 0x80, 0xfb, 0x0d, //0x00000902 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000905 je LBB0_131 - 0x80, 0xfb, 0x20, //0x0000090b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000090e je LBB0_131 - 0x80, 0xc3, 0xf7, //0x00000914 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000917 cmpb $1, %bl - 0x0f, 0x87, 0xf9, 0x00, 0x00, 0x00, //0x0000091a ja LBB0_148 - //0x00000920 .p2align 4, 0x90 - //0x00000920 LBB0_131 - 0x48, 0x83, 0xc2, 0x05, //0x00000920 addq $5, %rdx - 0x48, 0x39, 0xd1, //0x00000924 cmpq %rdx, %rcx - 0x0f, 0x86, 0x43, 0x00, 0x00, 0x00, //0x00000927 jbe LBB0_137 - 0x48, 0x39, 0xd1, //0x0000092d cmpq %rdx, %rcx - 0x0f, 0x84, 0xcb, 0x00, 0x00, 0x00, //0x00000930 je LBB0_145 - 0x4a, 0x8d, 0x04, 0x29, //0x00000936 leaq (%rcx,%r13), %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000093a .p2align 4, 0x90 - //0x00000940 LBB0_134 - 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00000940 movsbl (%r13,%rdx), %esi - 0x83, 0xfe, 0x20, //0x00000946 cmpl $32, %esi - 0x0f, 0x87, 0xbe, 0x00, 0x00, 0x00, //0x00000949 ja LBB0_147 - 0x49, 0x0f, 0xa3, 0xf1, //0x0000094f btq %rsi, %r9 - 0x0f, 0x83, 0xb4, 0x00, 0x00, 0x00, //0x00000953 jae LBB0_147 - 0x48, 0x83, 0xc2, 0x01, //0x00000959 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x0000095d cmpq %rdx, %rcx - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000960 jne LBB0_134 - 0xe9, 0x9c, 0x00, 0x00, 0x00, //0x00000966 jmp LBB0_146 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000096b .p2align 4, 0x90 - //0x00000970 LBB0_137 - 0x49, 0x89, 0x10, //0x00000970 movq %rdx, (%r8) - 0x49, 0x89, 0xd2, //0x00000973 movq %rdx, %r10 - 0xe9, 0xa3, 0x01, 0x00, 0x00, //0x00000976 jmp LBB0_164 - //0x0000097b LBB0_138 - 0x44, 0x01, 0xe8, //0x0000097b addl %r13d, %eax - 0x01, 0xf0, //0x0000097e addl %esi, %eax - 0x83, 0xc0, 0x01, //0x00000980 addl $1, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000983 andl $4095, %eax - 0x3d, 0xf0, 0x0f, 0x00, 0x00, //0x00000988 cmpl $4080, %eax - 0x0f, 0x87, 0x51, 0x00, 0x00, 0x00, //0x0000098d ja LBB0_143 - 0x41, 0x8d, 0x04, 0x36, //0x00000993 leal (%r14,%rsi), %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000997 andl $4095, %eax - 0x3d, 0xf1, 0x0f, 0x00, 0x00, //0x0000099c cmpl $4081, %eax - 0x0f, 0x83, 0x3d, 0x00, 0x00, 0x00, //0x000009a1 jae LBB0_143 - 0xf3, 0x0f, 0x6f, 0x14, 0x33, //0x000009a7 movdqu (%rbx,%rsi), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x36, //0x000009ac movdqu (%r14,%rsi), %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x000009b2 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x000009b6 pmovmskb %xmm3, %eax - 0x66, 0x83, 0xf8, 0xff, //0x000009ba cmpw $-1, %ax - 0x0f, 0x84, 0x3d, 0xfd, 0xff, 0xff, //0x000009be je LBB0_86 - 0xf7, 0xd0, //0x000009c4 notl %eax - 0x66, 0x0f, 0xbc, 0xc0, //0x000009c6 bsfw %ax, %ax - 0x0f, 0xb7, 0xc0, //0x000009ca movzwl %ax, %eax - 0x31, 0xc9, //0x000009cd xorl %ecx, %ecx - 0x48, 0x39, 0xc2, //0x000009cf cmpq %rax, %rdx - 0x0f, 0x96, 0xc1, //0x000009d2 setbe %cl - 0xe9, 0x27, 0xfd, 0xff, 0xff, //0x000009d5 jmp LBB0_86 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000009da .p2align 4, 0x90 + 0x48, 0x8b, 0x45, 0xb0, //0x000002c5 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x00, //0x000002c9 movq (%rax), %rax + 0x48, 0x85, 0xc0, //0x000002cc testq %rax, %rax + 0x0f, 0x85, 0x5b, 0x00, 0x00, 0x00, //0x000002cf jne LBB0_30 + 0xe9, 0x41, 0x44, 0x00, 0x00, //0x000002d5 jmp LBB0_865 + //0x000002da LBB0_25 + 0x4d, 0x01, 0xeb, //0x000002da addq %r13, %r11 + 0x4c, 0x89, 0xda, //0x000002dd movq %r11, %rdx + //0x000002e0 LBB0_26 + 0x4c, 0x29, 0xea, //0x000002e0 subq %r13, %rdx + 0x49, 0x89, 0xd3, //0x000002e3 movq %rdx, %r11 + //0x000002e6 LBB0_27 + 0x4c, 0x89, 0xda, //0x000002e6 movq %r11, %rdx + 0x49, 0x39, 0xcb, //0x000002e9 cmpq %rcx, %r11 + 0x0f, 0x83, 0x21, 0x00, 0x00, 0x00, //0x000002ec jae LBB0_29 + //0x000002f2 LBB0_28 + 0x4c, 0x8d, 0x5a, 0x01, //0x000002f2 leaq $1(%rdx), %r11 + 0x4d, 0x89, 0x18, //0x000002f6 movq %r11, (%r8) + 0x41, 0x8a, 0x4c, 0x15, 0x00, //0x000002f9 movb (%r13,%rdx), %cl + 0x48, 0x8b, 0x45, 0xb0, //0x000002fe movq $-80(%rbp), %rax + 0x48, 0x8b, 0x00, //0x00000302 movq (%rax), %rax + 0x48, 0x85, 0xc0, //0x00000305 testq %rax, %rax + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00000308 jne LBB0_30 + 0xe9, 0x08, 0x44, 0x00, 0x00, //0x0000030e jmp LBB0_865 + //0x00000313 LBB0_29 + 0x31, 0xc9, //0x00000313 xorl %ecx, %ecx + 0x49, 0x89, 0xc3, //0x00000315 movq %rax, %r11 + 0x48, 0x8b, 0x45, 0xb0, //0x00000318 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x00, //0x0000031c movq (%rax), %rax + 0x48, 0x85, 0xc0, //0x0000031f testq %rax, %rax + 0x0f, 0x84, 0xf3, 0x43, 0x00, 0x00, //0x00000322 je LBB0_865 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000328 .p2align 4, 0x90 + //0x00000330 LBB0_30 + 0x8a, 0x40, 0x17, //0x00000330 movb $23(%rax), %al + 0x24, 0x1f, //0x00000333 andb $31, %al + 0x3c, 0x02, //0x00000335 cmpb $2, %al + 0x0f, 0x84, 0xc3, 0x1a, 0x00, 0x00, //0x00000337 je LBB0_342 + 0x3c, 0x18, //0x0000033d cmpb $24, %al + 0x0f, 0x85, 0xd6, 0x43, 0x00, 0x00, //0x0000033f jne LBB0_865 + 0x80, 0xf9, 0x7b, //0x00000345 cmpb $123, %cl + 0x0f, 0x85, 0x0d, 0x44, 0x00, 0x00, //0x00000348 jne LBB0_872 + //0x0000034e LBB0_33 + 0x49, 0x8b, 0x09, //0x0000034e movq (%r9), %rcx + 0x49, 0x39, 0xcb, //0x00000351 cmpq %rcx, %r11 + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00000354 jae LBB0_38 + 0x43, 0x8a, 0x44, 0x1d, 0x00, //0x0000035a movb (%r13,%r11), %al + 0x3c, 0x0d, //0x0000035f cmpb $13, %al + 0x0f, 0x84, 0x29, 0x00, 0x00, 0x00, //0x00000361 je LBB0_38 + 0x3c, 0x20, //0x00000367 cmpb $32, %al + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000369 je LBB0_38 + 0x04, 0xf7, //0x0000036f addb $-9, %al + 0x3c, 0x01, //0x00000371 cmpb $1, %al + 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000373 jbe LBB0_38 + 0x4c, 0x89, 0xd8, //0x00000379 movq %r11, %rax + 0xe9, 0x04, 0x01, 0x00, 0x00, //0x0000037c jmp LBB0_59 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000381 .p2align 4, 0x90 + //0x00000390 LBB0_38 + 0x49, 0x8d, 0x43, 0x01, //0x00000390 leaq $1(%r11), %rax + 0x48, 0x39, 0xc8, //0x00000394 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000397 jae LBB0_42 + 0x41, 0x8a, 0x54, 0x05, 0x00, //0x0000039d movb (%r13,%rax), %dl + 0x80, 0xfa, 0x0d, //0x000003a2 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000003a5 je LBB0_42 + 0x80, 0xfa, 0x20, //0x000003ab cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000003ae je LBB0_42 + 0x80, 0xc2, 0xf7, //0x000003b4 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000003b7 cmpb $1, %dl + 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x000003ba ja LBB0_59 + //0x000003c0 .p2align 4, 0x90 + //0x000003c0 LBB0_42 + 0x49, 0x8d, 0x43, 0x02, //0x000003c0 leaq $2(%r11), %rax + 0x48, 0x39, 0xc8, //0x000003c4 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003c7 jae LBB0_46 + 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000003cd movb (%r13,%rax), %dl + 0x80, 0xfa, 0x0d, //0x000003d2 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000003d5 je LBB0_46 + 0x80, 0xfa, 0x20, //0x000003db cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000003de je LBB0_46 + 0x80, 0xc2, 0xf7, //0x000003e4 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000003e7 cmpb $1, %dl + 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x000003ea ja LBB0_59 + //0x000003f0 .p2align 4, 0x90 + //0x000003f0 LBB0_46 + 0x49, 0x8d, 0x43, 0x03, //0x000003f0 leaq $3(%r11), %rax + 0x48, 0x39, 0xc8, //0x000003f4 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000003f7 jae LBB0_50 + 0x41, 0x8a, 0x54, 0x05, 0x00, //0x000003fd movb (%r13,%rax), %dl + 0x80, 0xfa, 0x0d, //0x00000402 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000405 je LBB0_50 + 0x80, 0xfa, 0x20, //0x0000040b cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000040e je LBB0_50 + 0x80, 0xc2, 0xf7, //0x00000414 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000417 cmpb $1, %dl + 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x0000041a ja LBB0_59 + //0x00000420 .p2align 4, 0x90 + //0x00000420 LBB0_50 + 0x49, 0x8d, 0x43, 0x04, //0x00000420 leaq $4(%r11), %rax + 0x48, 0x39, 0xc1, //0x00000424 cmpq %rax, %rcx + 0x0f, 0x86, 0x23, 0x43, 0x00, 0x00, //0x00000427 jbe LBB0_869 + 0x48, 0x39, 0xc1, //0x0000042d cmpq %rax, %rcx + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000430 je LBB0_56 + 0x4a, 0x8d, 0x14, 0x29, //0x00000436 leaq (%rcx,%r13), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000043a .p2align 4, 0x90 + //0x00000440 LBB0_53 + 0x41, 0x0f, 0xbe, 0x74, 0x05, 0x00, //0x00000440 movsbl (%r13,%rax), %esi + 0x83, 0xfe, 0x20, //0x00000446 cmpl $32, %esi + 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00000449 ja LBB0_58 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000044f btq %rsi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000453 jae LBB0_58 + 0x48, 0x83, 0xc0, 0x01, //0x00000459 addq $1, %rax + 0x48, 0x39, 0xc1, //0x0000045d cmpq %rax, %rcx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000460 jne LBB0_53 + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000466 jmp LBB0_57 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000046b .p2align 4, 0x90 + //0x00000470 LBB0_56 + 0x4c, 0x01, 0xe8, //0x00000470 addq %r13, %rax + 0x48, 0x89, 0xc2, //0x00000473 movq %rax, %rdx + //0x00000476 LBB0_57 + 0x4c, 0x29, 0xea, //0x00000476 subq %r13, %rdx + 0x48, 0x89, 0xd0, //0x00000479 movq %rdx, %rax + //0x0000047c LBB0_58 + 0x48, 0x39, 0xc8, //0x0000047c cmpq %rcx, %rax + 0x0f, 0x83, 0xd6, 0x42, 0x00, 0x00, //0x0000047f jae LBB0_872 + //0x00000485 LBB0_59 + 0x4c, 0x8d, 0x58, 0x01, //0x00000485 leaq $1(%rax), %r11 + 0x4d, 0x89, 0x18, //0x00000489 movq %r11, (%r8) + 0x41, 0x8a, 0x54, 0x05, 0x00, //0x0000048c movb (%r13,%rax), %dl + 0x80, 0xfa, 0x22, //0x00000491 cmpb $34, %dl + 0x0f, 0x85, 0x9d, 0x2b, 0x00, 0x00, //0x00000494 jne LBB0_555 + 0x49, 0x8b, 0x09, //0x0000049a movq (%r9), %rcx + 0x49, 0x89, 0xc8, //0x0000049d movq %rcx, %r8 + 0x4d, 0x29, 0xd8, //0x000004a0 subq %r11, %r8 + 0x0f, 0x84, 0x41, 0x4f, 0x00, 0x00, //0x000004a3 je LBB0_974 + 0x48, 0x89, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x000004a9 movq %rcx, $-184(%rbp) + 0x48, 0x8b, 0x4d, 0xb0, //0x000004b0 movq $-80(%rbp), %rcx + 0x48, 0x8b, 0x71, 0x08, //0x000004b4 movq $8(%rcx), %rsi + 0x4c, 0x8b, 0x3e, //0x000004b8 movq (%rsi), %r15 + 0x48, 0x8b, 0x4e, 0x08, //0x000004bb movq $8(%rsi), %rcx + 0x48, 0x89, 0x4d, 0xb8, //0x000004bf movq %rcx, $-72(%rbp) + 0x4c, 0x89, 0x9d, 0x38, 0xff, 0xff, 0xff, //0x000004c3 movq %r11, $-200(%rbp) + 0x4d, 0x01, 0xeb, //0x000004ca addq %r13, %r11 + 0x49, 0x83, 0xf8, 0x40, //0x000004cd cmpq $64, %r8 + 0x4c, 0x89, 0x5d, 0xd0, //0x000004d1 movq %r11, $-48(%rbp) + 0x0f, 0x82, 0xc3, 0x12, 0x00, 0x00, //0x000004d5 jb LBB0_268 + 0x4c, 0x89, 0xbd, 0x40, 0xff, 0xff, 0xff, //0x000004db movq %r15, $-192(%rbp) + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x000004e2 movq $-2, %r15 + 0x49, 0x29, 0xc7, //0x000004e9 subq %rax, %r15 + 0x4c, 0x8d, 0x58, 0x01, //0x000004ec leaq $1(%rax), %r11 + 0x48, 0xc7, 0x45, 0x98, 0xff, 0xff, 0xff, 0xff, //0x000004f0 movq $-1, $-104(%rbp) + 0x45, 0x31, 0xc9, //0x000004f8 xorl %r9d, %r9d + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000004fb .p2align 4, 0x90 + //0x00000500 LBB0_63 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x1d, 0x00, //0x00000500 movdqu (%r13,%r11), %xmm3 + 0xf3, 0x43, 0x0f, 0x6f, 0x6c, 0x1d, 0x10, //0x00000507 movdqu $16(%r13,%r11), %xmm5 + 0xf3, 0x43, 0x0f, 0x6f, 0x74, 0x1d, 0x20, //0x0000050e movdqu $32(%r13,%r11), %xmm6 + 0xf3, 0x43, 0x0f, 0x6f, 0x7c, 0x1d, 0x30, //0x00000515 movdqu $48(%r13,%r11), %xmm7 + 0x66, 0x0f, 0x6f, 0xd3, //0x0000051c movdqa %xmm3, %xmm2 + 0x66, 0x0f, 0x74, 0xd0, //0x00000520 pcmpeqb %xmm0, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00000524 pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd5, //0x00000528 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd0, //0x0000052c pcmpeqb %xmm0, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x00000530 pmovmskb %xmm2, %r12d + 0x66, 0x0f, 0x6f, 0xd6, //0x00000535 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd0, //0x00000539 pcmpeqb %xmm0, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xd2, //0x0000053d pmovmskb %xmm2, %r10d + 0x66, 0x0f, 0x6f, 0xd7, //0x00000542 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd0, //0x00000546 pcmpeqb %xmm0, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xf2, //0x0000054a pmovmskb %xmm2, %r14d + 0x66, 0x0f, 0x74, 0xd9, //0x0000054f pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000553 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe9, //0x00000557 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x0000055b pmovmskb %xmm5, %ebx + 0x66, 0x0f, 0x74, 0xf1, //0x0000055f pcmpeqb %xmm1, %xmm6 + 0x66, 0x0f, 0xd7, 0xd6, //0x00000563 pmovmskb %xmm6, %edx + 0x66, 0x0f, 0x74, 0xf9, //0x00000567 pcmpeqb %xmm1, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x0000056b pmovmskb %xmm7, %ecx + 0x49, 0xc1, 0xe6, 0x30, //0x0000056f shlq $48, %r14 + 0x49, 0xc1, 0xe2, 0x20, //0x00000573 shlq $32, %r10 + 0x4d, 0x09, 0xf2, //0x00000577 orq %r14, %r10 + 0x49, 0xc1, 0xe4, 0x10, //0x0000057a shlq $16, %r12 + 0x4d, 0x09, 0xd4, //0x0000057e orq %r10, %r12 + 0x4c, 0x09, 0xe7, //0x00000581 orq %r12, %rdi + 0x48, 0xc1, 0xe1, 0x30, //0x00000584 shlq $48, %rcx + 0x48, 0xc1, 0xe2, 0x20, //0x00000588 shlq $32, %rdx + 0x48, 0x09, 0xca, //0x0000058c orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x10, //0x0000058f shlq $16, %rbx + 0x48, 0x09, 0xd3, //0x00000593 orq %rdx, %rbx + 0x48, 0x09, 0xde, //0x00000596 orq %rbx, %rsi + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000599 jne LBB0_72 + 0x4d, 0x85, 0xc9, //0x0000059f testq %r9, %r9 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000005a2 jne LBB0_74 + 0x45, 0x31, 0xc9, //0x000005a8 xorl %r9d, %r9d + 0x48, 0x85, 0xff, //0x000005ab testq %rdi, %rdi + 0x0f, 0x85, 0x8c, 0x00, 0x00, 0x00, //0x000005ae jne LBB0_75 + //0x000005b4 LBB0_66 + 0x49, 0x83, 0xc0, 0xc0, //0x000005b4 addq $-64, %r8 + 0x49, 0x83, 0xc7, 0xc0, //0x000005b8 addq $-64, %r15 + 0x49, 0x83, 0xc3, 0x40, //0x000005bc addq $64, %r11 + 0x49, 0x83, 0xf8, 0x3f, //0x000005c0 cmpq $63, %r8 + 0x0f, 0x87, 0x36, 0xff, 0xff, 0xff, //0x000005c4 ja LBB0_63 + 0xe9, 0xdf, 0x10, 0x00, 0x00, //0x000005ca jmp LBB0_67 + //0x000005cf LBB0_72 + 0x48, 0x83, 0x7d, 0x98, 0xff, //0x000005cf cmpq $-1, $-104(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000005d4 jne LBB0_74 + 0x48, 0x0f, 0xbc, 0xce, //0x000005da bsfq %rsi, %rcx + 0x4c, 0x01, 0xd9, //0x000005de addq %r11, %rcx + 0x48, 0x89, 0x4d, 0x98, //0x000005e1 movq %rcx, $-104(%rbp) + //0x000005e5 LBB0_74 + 0x4c, 0x89, 0xc9, //0x000005e5 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x000005e8 notq %rcx + 0x48, 0x21, 0xf1, //0x000005eb andq %rsi, %rcx + 0x48, 0x8d, 0x1c, 0x09, //0x000005ee leaq (%rcx,%rcx), %rbx + 0x4c, 0x09, 0xcb, //0x000005f2 orq %r9, %rbx + 0x48, 0x89, 0xda, //0x000005f5 movq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x000005f8 notq %rdx + 0x48, 0x21, 0xf2, //0x000005fb andq %rsi, %rdx + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000005fe movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00000608 andq %rsi, %rdx + 0x45, 0x31, 0xc9, //0x0000060b xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x0000060e addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x00000611 setb %r9b + 0x48, 0x01, 0xd2, //0x00000615 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000618 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00000622 xorq %rcx, %rdx + 0x48, 0x21, 0xda, //0x00000625 andq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x00000628 notq %rdx + 0x48, 0x21, 0xd7, //0x0000062b andq %rdx, %rdi + 0x48, 0x85, 0xff, //0x0000062e testq %rdi, %rdi + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000631 je LBB0_66 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000637 .p2align 4, 0x90 + //0x00000640 LBB0_75 + 0x4c, 0x0f, 0xbc, 0xdf, //0x00000640 bsfq %rdi, %r11 + 0x4d, 0x29, 0xfb, //0x00000644 subq %r15, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00000647 movq $-56(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000064b movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x65, 0xa8, //0x0000064f movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000653 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0xbd, 0x40, 0xff, 0xff, 0xff, //0x0000065d movq $-192(%rbp), %r15 + 0x48, 0x8b, 0x4d, 0x98, //0x00000664 movq $-104(%rbp), %rcx + 0x4d, 0x85, 0xdb, //0x00000668 testq %r11, %r11 + 0x0f, 0x88, 0x84, 0x4d, 0x00, 0x00, //0x0000066b js LBB0_976 + //0x00000671 LBB0_78 + 0x4d, 0x89, 0x18, //0x00000671 movq %r11, (%r8) + 0x48, 0x83, 0xf9, 0xff, //0x00000674 cmpq $-1, %rcx + 0x0f, 0x84, 0x09, 0x00, 0x00, 0x00, //0x00000678 je LBB0_80 + 0x4c, 0x39, 0xd9, //0x0000067e cmpq %r11, %rcx + 0x0f, 0x8e, 0x31, 0x11, 0x00, 0x00, //0x00000681 jle LBB0_269 + //0x00000687 LBB0_80 + 0x4c, 0x89, 0xda, //0x00000687 movq %r11, %rdx + 0x48, 0x29, 0xc2, //0x0000068a subq %rax, %rdx + 0x48, 0x83, 0xc2, 0xfe, //0x0000068d addq $-2, %rdx + 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000691 movl $1, %ecx + 0x48, 0x89, 0xd6, //0x00000696 movq %rdx, %rsi + 0x48, 0x8b, 0x5d, 0xb8, //0x00000699 movq $-72(%rbp), %rbx + 0x48, 0x09, 0xde, //0x0000069d orq %rbx, %rsi + 0x48, 0x8b, 0x7d, 0xd0, //0x000006a0 movq $-48(%rbp), %rdi + 0x0f, 0x84, 0x4b, 0x00, 0x00, 0x00, //0x000006a4 je LBB0_86 + 0x48, 0x39, 0xda, //0x000006aa cmpq %rbx, %rdx + 0x0f, 0x85, 0x40, 0x00, 0x00, 0x00, //0x000006ad jne LBB0_85 + 0x31, 0xf6, //0x000006b3 xorl %esi, %esi + 0x48, 0x89, 0xda, //0x000006b5 movq %rbx, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000006b8 .p2align 4, 0x90 + //0x000006c0 LBB0_83 + 0x48, 0x83, 0xfa, 0x10, //0x000006c0 cmpq $16, %rdx + 0x0f, 0x82, 0xb3, 0x02, 0x00, 0x00, //0x000006c4 jb LBB0_138 + 0xf3, 0x0f, 0x6f, 0x14, 0x37, //0x000006ca movdqu (%rdi,%rsi), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x37, //0x000006cf movdqu (%r15,%rsi), %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x000006d5 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000006d9 pmovmskb %xmm3, %edi + 0x48, 0x83, 0xc2, 0xf0, //0x000006dd addq $-16, %rdx + 0x48, 0x83, 0xc6, 0x10, //0x000006e1 addq $16, %rsi + 0x66, 0x83, 0xff, 0xff, //0x000006e5 cmpw $-1, %di + 0x48, 0x8b, 0x7d, 0xd0, //0x000006e9 movq $-48(%rbp), %rdi + 0x0f, 0x84, 0xcd, 0xff, 0xff, 0xff, //0x000006ed je LBB0_83 + //0x000006f3 LBB0_85 + 0x31, 0xc9, //0x000006f3 xorl %ecx, %ecx + //0x000006f5 LBB0_86 + 0x49, 0x8b, 0x01, //0x000006f5 movq (%r9), %rax + 0x49, 0x39, 0xc3, //0x000006f8 cmpq %rax, %r11 + 0x0f, 0x83, 0x2f, 0x00, 0x00, 0x00, //0x000006fb jae LBB0_91 + 0x43, 0x8a, 0x54, 0x1d, 0x00, //0x00000701 movb (%r13,%r11), %dl + 0x80, 0xfa, 0x0d, //0x00000706 cmpb $13, %dl + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000709 je LBB0_91 + 0x80, 0xfa, 0x20, //0x0000070f cmpb $32, %dl + 0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x00000712 je LBB0_91 + 0x80, 0xc2, 0xf7, //0x00000718 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x0000071b cmpb $1, %dl + 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x0000071e jbe LBB0_91 + 0x4c, 0x89, 0xda, //0x00000724 movq %r11, %rdx + 0xe9, 0xf9, 0x00, 0x00, 0x00, //0x00000727 jmp LBB0_112 + 0x90, 0x90, 0x90, 0x90, //0x0000072c .p2align 4, 0x90 + //0x00000730 LBB0_91 + 0x49, 0x8d, 0x53, 0x01, //0x00000730 leaq $1(%r11), %rdx + 0x48, 0x39, 0xc2, //0x00000734 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000737 jae LBB0_95 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000073d movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000742 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000745 je LBB0_95 + 0x80, 0xfb, 0x20, //0x0000074b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000074e je LBB0_95 + 0x80, 0xc3, 0xf7, //0x00000754 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000757 cmpb $1, %bl + 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x0000075a ja LBB0_112 + //0x00000760 .p2align 4, 0x90 + //0x00000760 LBB0_95 + 0x49, 0x8d, 0x53, 0x02, //0x00000760 leaq $2(%r11), %rdx + 0x48, 0x39, 0xc2, //0x00000764 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000767 jae LBB0_99 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000076d movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000772 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000775 je LBB0_99 + 0x80, 0xfb, 0x20, //0x0000077b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000077e je LBB0_99 + 0x80, 0xc3, 0xf7, //0x00000784 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000787 cmpb $1, %bl + 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x0000078a ja LBB0_112 + //0x00000790 .p2align 4, 0x90 + //0x00000790 LBB0_99 + 0x49, 0x8d, 0x53, 0x03, //0x00000790 leaq $3(%r11), %rdx + 0x48, 0x39, 0xc2, //0x00000794 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000797 jae LBB0_103 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x0000079d movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000007a2 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000007a5 je LBB0_103 + 0x80, 0xfb, 0x20, //0x000007ab cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000007ae je LBB0_103 + 0x80, 0xc3, 0xf7, //0x000007b4 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000007b7 cmpb $1, %bl + 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x000007ba ja LBB0_112 + //0x000007c0 .p2align 4, 0x90 + //0x000007c0 LBB0_103 + 0x49, 0x8d, 0x53, 0x04, //0x000007c0 leaq $4(%r11), %rdx + 0x48, 0x39, 0xd0, //0x000007c4 cmpq %rdx, %rax + 0x0f, 0x86, 0x78, 0x28, 0x00, 0x00, //0x000007c7 jbe LBB0_870 + 0x48, 0x39, 0xd0, //0x000007cd cmpq %rdx, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000007d0 je LBB0_109 + 0x4a, 0x8d, 0x34, 0x28, //0x000007d6 leaq (%rax,%r13), %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000007da .p2align 4, 0x90 + //0x000007e0 LBB0_106 + 0x41, 0x0f, 0xbe, 0x7c, 0x15, 0x00, //0x000007e0 movsbl (%r13,%rdx), %edi + 0x83, 0xff, 0x20, //0x000007e6 cmpl $32, %edi + 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x000007e9 ja LBB0_111 + 0x49, 0x0f, 0xa3, 0xfe, //0x000007ef btq %rdi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000007f3 jae LBB0_111 + 0x48, 0x83, 0xc2, 0x01, //0x000007f9 addq $1, %rdx + 0x48, 0x39, 0xd0, //0x000007fd cmpq %rdx, %rax + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000800 jne LBB0_106 + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000806 jmp LBB0_110 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000080b .p2align 4, 0x90 + //0x00000810 LBB0_109 + 0x4c, 0x01, 0xea, //0x00000810 addq %r13, %rdx + 0x48, 0x89, 0xd6, //0x00000813 movq %rdx, %rsi + //0x00000816 LBB0_110 + 0x4c, 0x29, 0xee, //0x00000816 subq %r13, %rsi + 0x48, 0x89, 0xf2, //0x00000819 movq %rsi, %rdx + //0x0000081c LBB0_111 + 0x48, 0x39, 0xc2, //0x0000081c cmpq %rax, %rdx + 0x0f, 0x83, 0x36, 0x3f, 0x00, 0x00, //0x0000081f jae LBB0_872 + //0x00000825 LBB0_112 + 0x4c, 0x8d, 0x5a, 0x01, //0x00000825 leaq $1(%rdx), %r11 + 0x4d, 0x89, 0x18, //0x00000829 movq %r11, (%r8) + 0x41, 0x80, 0x7c, 0x15, 0x00, 0x3a, //0x0000082c cmpb $58, (%r13,%rdx) + 0x0f, 0x85, 0x23, 0x3f, 0x00, 0x00, //0x00000832 jne LBB0_872 + 0x48, 0x85, 0xc9, //0x00000838 testq %rcx, %rcx + 0x0f, 0x85, 0xff, 0x25, 0x00, 0x00, //0x0000083b jne LBB0_464 + 0x49, 0x8b, 0x09, //0x00000841 movq (%r9), %rcx + 0x49, 0x39, 0xcb, //0x00000844 cmpq %rcx, %r11 + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00000847 jae LBB0_119 + 0x43, 0x8a, 0x44, 0x1d, 0x00, //0x0000084d movb (%r13,%r11), %al + 0x3c, 0x0d, //0x00000852 cmpb $13, %al + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00000854 je LBB0_119 + 0x3c, 0x20, //0x0000085a cmpb $32, %al + 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x0000085c je LBB0_119 + 0x04, 0xf7, //0x00000862 addb $-9, %al + 0x3c, 0x01, //0x00000864 cmpb $1, %al + 0x0f, 0x86, 0x14, 0x00, 0x00, 0x00, //0x00000866 jbe LBB0_119 + 0x4c, 0x89, 0xd8, //0x0000086c movq %r11, %rax + 0xe9, 0xa5, 0x01, 0x00, 0x00, //0x0000086f jmp LBB0_148 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000874 .p2align 4, 0x90 + //0x00000880 LBB0_119 + 0x48, 0x8d, 0x42, 0x02, //0x00000880 leaq $2(%rdx), %rax + 0x48, 0x39, 0xc8, //0x00000884 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000887 jae LBB0_123 + 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x0000088d movb (%r13,%rax), %bl + 0x80, 0xfb, 0x0d, //0x00000892 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000895 je LBB0_123 + 0x80, 0xfb, 0x20, //0x0000089b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000089e je LBB0_123 + 0x80, 0xc3, 0xf7, //0x000008a4 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000008a7 cmpb $1, %bl + 0x0f, 0x87, 0x69, 0x01, 0x00, 0x00, //0x000008aa ja LBB0_148 + //0x000008b0 .p2align 4, 0x90 + //0x000008b0 LBB0_123 + 0x48, 0x8d, 0x42, 0x03, //0x000008b0 leaq $3(%rdx), %rax + 0x48, 0x39, 0xc8, //0x000008b4 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000008b7 jae LBB0_127 + 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x000008bd movb (%r13,%rax), %bl + 0x80, 0xfb, 0x0d, //0x000008c2 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000008c5 je LBB0_127 + 0x80, 0xfb, 0x20, //0x000008cb cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000008ce je LBB0_127 + 0x80, 0xc3, 0xf7, //0x000008d4 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000008d7 cmpb $1, %bl + 0x0f, 0x87, 0x39, 0x01, 0x00, 0x00, //0x000008da ja LBB0_148 + //0x000008e0 .p2align 4, 0x90 + //0x000008e0 LBB0_127 + 0x48, 0x8d, 0x42, 0x04, //0x000008e0 leaq $4(%rdx), %rax + 0x48, 0x39, 0xc8, //0x000008e4 cmpq %rcx, %rax + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000008e7 jae LBB0_131 + 0x41, 0x8a, 0x5c, 0x05, 0x00, //0x000008ed movb (%r13,%rax), %bl + 0x80, 0xfb, 0x0d, //0x000008f2 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000008f5 je LBB0_131 + 0x80, 0xfb, 0x20, //0x000008fb cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000008fe je LBB0_131 + 0x80, 0xc3, 0xf7, //0x00000904 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000907 cmpb $1, %bl + 0x0f, 0x87, 0x09, 0x01, 0x00, 0x00, //0x0000090a ja LBB0_148 + //0x00000910 .p2align 4, 0x90 + //0x00000910 LBB0_131 + 0x48, 0x83, 0xc2, 0x05, //0x00000910 addq $5, %rdx + 0x48, 0x39, 0xd1, //0x00000914 cmpq %rdx, %rcx + 0x0f, 0x86, 0x43, 0x00, 0x00, 0x00, //0x00000917 jbe LBB0_137 + 0x48, 0x39, 0xd1, //0x0000091d cmpq %rdx, %rcx + 0x0f, 0x84, 0xdb, 0x00, 0x00, 0x00, //0x00000920 je LBB0_145 + 0x4a, 0x8d, 0x04, 0x29, //0x00000926 leaq (%rcx,%r13), %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000092a .p2align 4, 0x90 + //0x00000930 LBB0_134 + 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00000930 movsbl (%r13,%rdx), %esi + 0x83, 0xfe, 0x20, //0x00000936 cmpl $32, %esi + 0x0f, 0x87, 0xce, 0x00, 0x00, 0x00, //0x00000939 ja LBB0_147 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000093f btq %rsi, %r14 + 0x0f, 0x83, 0xc4, 0x00, 0x00, 0x00, //0x00000943 jae LBB0_147 + 0x48, 0x83, 0xc2, 0x01, //0x00000949 addq $1, %rdx + 0x48, 0x39, 0xd1, //0x0000094d cmpq %rdx, %rcx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000950 jne LBB0_134 + 0xe9, 0xac, 0x00, 0x00, 0x00, //0x00000956 jmp LBB0_146 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000095b .p2align 4, 0x90 + //0x00000960 LBB0_137 + 0x49, 0x89, 0x10, //0x00000960 movq %rdx, (%r8) + 0x49, 0x89, 0xd3, //0x00000963 movq %rdx, %r11 + 0x4d, 0x8b, 0x2c, 0x24, //0x00000966 movq (%r12), %r13 + 0x49, 0x8b, 0x44, 0x24, 0x08, //0x0000096a movq $8(%r12), %rax + 0x49, 0x39, 0xc3, //0x0000096f cmpq %rax, %r11 + 0x0f, 0x83, 0x28, 0x0c, 0x00, 0x00, //0x00000972 jae LBB0_241 + 0xe9, 0x85, 0x07, 0x00, 0x00, //0x00000978 jmp LBB0_237 + //0x0000097d LBB0_138 + 0x44, 0x01, 0xe8, //0x0000097d addl %r13d, %eax + 0x01, 0xf0, //0x00000980 addl %esi, %eax + 0x83, 0xc0, 0x01, //0x00000982 addl $1, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000985 andl $4095, %eax + 0x3d, 0xf0, 0x0f, 0x00, 0x00, //0x0000098a cmpl $4080, %eax + 0x0f, 0x87, 0x4f, 0x00, 0x00, 0x00, //0x0000098f ja LBB0_143 + 0x41, 0x8d, 0x04, 0x37, //0x00000995 leal (%r15,%rsi), %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000999 andl $4095, %eax + 0x3d, 0xf1, 0x0f, 0x00, 0x00, //0x0000099e cmpl $4081, %eax + 0x0f, 0x83, 0x3b, 0x00, 0x00, 0x00, //0x000009a3 jae LBB0_143 + 0xf3, 0x0f, 0x6f, 0x14, 0x37, //0x000009a9 movdqu (%rdi,%rsi), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x37, //0x000009ae movdqu (%r15,%rsi), %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x000009b4 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x000009b8 pmovmskb %xmm3, %eax + 0x66, 0x83, 0xf8, 0xff, //0x000009bc cmpw $-1, %ax + 0x0f, 0x84, 0x2f, 0xfd, 0xff, 0xff, //0x000009c0 je LBB0_86 + 0xf7, 0xd0, //0x000009c6 notl %eax + 0x66, 0x0f, 0xbc, 0xc0, //0x000009c8 bsfw %ax, %ax + 0x0f, 0xb7, 0xc0, //0x000009cc movzwl %ax, %eax + 0x31, 0xc9, //0x000009cf xorl %ecx, %ecx + 0x48, 0x39, 0xc2, //0x000009d1 cmpq %rax, %rdx + 0x0f, 0x96, 0xc1, //0x000009d4 setbe %cl + 0xe9, 0x19, 0xfd, 0xff, 0xff, //0x000009d7 jmp LBB0_86 + 0x90, 0x90, 0x90, 0x90, //0x000009dc .p2align 4, 0x90 //0x000009e0 LBB0_142 0x48, 0x83, 0xc6, 0x01, //0x000009e0 addq $1, %rsi //0x000009e4 LBB0_143 - 0x48, 0x39, 0x75, 0xd0, //0x000009e4 cmpq %rsi, $-48(%rbp) - 0x0f, 0x84, 0x13, 0xfd, 0xff, 0xff, //0x000009e8 je LBB0_86 - 0x0f, 0xb6, 0x04, 0x33, //0x000009ee movzbl (%rbx,%rsi), %eax - 0x41, 0x3a, 0x04, 0x36, //0x000009f2 cmpb (%r14,%rsi), %al + 0x48, 0x39, 0x75, 0xb8, //0x000009e4 cmpq %rsi, $-72(%rbp) + 0x0f, 0x84, 0x07, 0xfd, 0xff, 0xff, //0x000009e8 je LBB0_86 + 0x0f, 0xb6, 0x04, 0x37, //0x000009ee movzbl (%rdi,%rsi), %eax + 0x41, 0x3a, 0x04, 0x37, //0x000009f2 cmpb (%r15,%rsi), %al 0x0f, 0x84, 0xe4, 0xff, 0xff, 0xff, //0x000009f6 je LBB0_142 - 0xe9, 0xfe, 0xfc, 0xff, 0xff, //0x000009fc jmp LBB0_85 + 0xe9, 0xf2, 0xfc, 0xff, 0xff, //0x000009fc jmp LBB0_85 //0x00000a01 LBB0_145 0x4c, 0x01, 0xea, //0x00000a01 addq %r13, %rdx 0x48, 0x89, 0xd0, //0x00000a04 movq %rdx, %rax @@ -634,5584 +639,5660 @@ var _text_get_by_path = []byte{ //0x00000a0d LBB0_147 0x48, 0x89, 0xd0, //0x00000a0d movq %rdx, %rax 0x48, 0x39, 0xca, //0x00000a10 cmpq %rcx, %rdx - 0x0f, 0x83, 0x05, 0x01, 0x00, 0x00, //0x00000a13 jae LBB0_164 + 0x0f, 0x83, 0xd7, 0x06, 0x00, 0x00, //0x00000a13 jae LBB0_236 //0x00000a19 LBB0_148 - 0x4c, 0x8d, 0x50, 0x01, //0x00000a19 leaq $1(%rax), %r10 - 0x4d, 0x89, 0x10, //0x00000a1d movq %r10, (%r8) + 0x4c, 0x8d, 0x58, 0x01, //0x00000a19 leaq $1(%rax), %r11 + 0x4d, 0x89, 0x18, //0x00000a1d movq %r11, (%r8) 0x41, 0x0f, 0xbe, 0x4c, 0x05, 0x00, //0x00000a20 movsbl (%r13,%rax), %ecx 0x83, 0xf9, 0x7b, //0x00000a26 cmpl $123, %ecx - 0x0f, 0x87, 0xbf, 0x07, 0x00, 0x00, //0x00000a29 ja LBB0_231 - 0x48, 0x8d, 0x15, 0x52, 0x4c, 0x00, 0x00, //0x00000a2f leaq $19538(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x0f, 0x87, 0xb8, 0x06, 0x00, 0x00, //0x00000a29 ja LBB0_206 + 0x48, 0x8d, 0x15, 0x8a, 0x4d, 0x00, 0x00, //0x00000a2f leaq $19850(%rip), %rdx /* LJTI0_1+0(%rip) */ 0x48, 0x63, 0x0c, 0x8a, //0x00000a36 movslq (%rdx,%rcx,4), %rcx 0x48, 0x01, 0xd1, //0x00000a3a addq %rdx, %rcx 0xff, 0xe1, //0x00000a3d jmpq *%rcx //0x00000a3f LBB0_150 - 0x49, 0x8b, 0x0f, //0x00000a3f movq (%r15), %rcx - 0x48, 0x89, 0xca, //0x00000a42 movq %rcx, %rdx - 0x4c, 0x29, 0xd2, //0x00000a45 subq %r10, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x00000a48 cmpq $16, %rdx - 0x0f, 0x82, 0x67, 0x11, 0x00, 0x00, //0x00000a4c jb LBB0_314 - 0x48, 0x89, 0xc2, //0x00000a52 movq %rax, %rdx - 0x48, 0xf7, 0xd2, //0x00000a55 notq %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00000a58 addq $1, %rax - 0x90, 0x90, 0x90, 0x90, //0x00000a5c .p2align 4, 0x90 - //0x00000a60 LBB0_152 - 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00000a60 movdqu (%r13,%rax), %xmm2 - 0x66, 0x0f, 0x6f, 0xda, //0x00000a67 movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00000a6b pcmpeqb %xmm13, %xmm3 - 0x66, 0x41, 0x0f, 0xdb, 0xd6, //0x00000a70 pand %xmm14, %xmm2 - 0x66, 0x0f, 0x74, 0xd4, //0x00000a75 pcmpeqb %xmm4, %xmm2 - 0x66, 0x0f, 0xeb, 0xd3, //0x00000a79 por %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00000a7d pmovmskb %xmm2, %esi - 0x85, 0xf6, //0x00000a81 testl %esi, %esi - 0x0f, 0x85, 0x87, 0x00, 0x00, 0x00, //0x00000a83 jne LBB0_162 - 0x48, 0x83, 0xc0, 0x10, //0x00000a89 addq $16, %rax - 0x48, 0x8d, 0x34, 0x11, //0x00000a8d leaq (%rcx,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xf0, //0x00000a91 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00000a95 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00000a99 cmpq $15, %rsi - 0x0f, 0x87, 0xbd, 0xff, 0xff, 0xff, //0x00000a9d ja LBB0_152 - 0x4d, 0x89, 0xea, //0x00000aa3 movq %r13, %r10 - 0x49, 0x29, 0xd2, //0x00000aa6 subq %rdx, %r10 - 0x48, 0x01, 0xd1, //0x00000aa9 addq %rdx, %rcx - 0x48, 0x89, 0xca, //0x00000aac movq %rcx, %rdx - 0x48, 0x85, 0xd2, //0x00000aaf testq %rdx, %rdx - 0x0f, 0x84, 0x36, 0x00, 0x00, 0x00, //0x00000ab2 je LBB0_161 - //0x00000ab8 LBB0_155 - 0x49, 0x8d, 0x0c, 0x12, //0x00000ab8 leaq (%r10,%rdx), %rcx - 0x31, 0xc0, //0x00000abc xorl %eax, %eax - //0x00000abe LBB0_156 - 0x41, 0x0f, 0xb6, 0x1c, 0x02, //0x00000abe movzbl (%r10,%rax), %ebx - 0x80, 0xfb, 0x2c, //0x00000ac3 cmpb $44, %bl - 0x0f, 0x84, 0xb6, 0x0c, 0x00, 0x00, //0x00000ac6 je LBB0_265 - 0x80, 0xfb, 0x7d, //0x00000acc cmpb $125, %bl - 0x0f, 0x84, 0xad, 0x0c, 0x00, 0x00, //0x00000acf je LBB0_265 - 0x80, 0xfb, 0x5d, //0x00000ad5 cmpb $93, %bl - 0x0f, 0x84, 0xa4, 0x0c, 0x00, 0x00, //0x00000ad8 je LBB0_265 - 0x48, 0x83, 0xc0, 0x01, //0x00000ade addq $1, %rax - 0x48, 0x39, 0xc2, //0x00000ae2 cmpq %rax, %rdx - 0x0f, 0x85, 0xd3, 0xff, 0xff, 0xff, //0x00000ae5 jne LBB0_156 - 0x49, 0x89, 0xca, //0x00000aeb movq %rcx, %r10 - //0x00000aee LBB0_161 - 0x4d, 0x29, 0xea, //0x00000aee subq %r13, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00000af1 movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00000af5 movq %r10, (%r8) - 0x4c, 0x8b, 0x7d, 0xc0, //0x00000af8 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00000afc movq $-80(%rbp), %r12 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000b00 movabsq $4294977024, %r9 - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00000b0a jmp LBB0_164 - 0x90, //0x00000b0f .p2align 4, 0x90 - //0x00000b10 LBB0_162 - 0x66, 0x0f, 0xbc, 0xc6, //0x00000b10 bsfw %si, %ax - 0x44, 0x0f, 0xb7, 0xd0, //0x00000b14 movzwl %ax, %r10d - 0x49, 0x29, 0xd2, //0x00000b18 subq %rdx, %r10 - //0x00000b1b LBB0_163 - 0x4d, 0x89, 0x10, //0x00000b1b movq %r10, (%r8) - //0x00000b1e LBB0_164 - 0x4d, 0x8b, 0x2c, 0x24, //0x00000b1e movq (%r12), %r13 - 0x49, 0x8b, 0x44, 0x24, 0x08, //0x00000b22 movq $8(%r12), %rax - 0x49, 0x39, 0xc2, //0x00000b27 cmpq %rax, %r10 - 0x0f, 0x83, 0x30, 0x00, 0x00, 0x00, //0x00000b2a jae LBB0_169 - 0x43, 0x8a, 0x4c, 0x15, 0x00, //0x00000b30 movb (%r13,%r10), %cl - 0x80, 0xf9, 0x0d, //0x00000b35 cmpb $13, %cl - 0x0f, 0x84, 0x22, 0x00, 0x00, 0x00, //0x00000b38 je LBB0_169 - 0x80, 0xf9, 0x20, //0x00000b3e cmpb $32, %cl - 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000b41 je LBB0_169 - 0x80, 0xc1, 0xf7, //0x00000b47 addb $-9, %cl - 0x80, 0xf9, 0x01, //0x00000b4a cmpb $1, %cl - 0x0f, 0x86, 0x0d, 0x00, 0x00, 0x00, //0x00000b4d jbe LBB0_169 - 0x4c, 0x89, 0xd1, //0x00000b53 movq %r10, %rcx - 0xe9, 0xfa, 0x00, 0x00, 0x00, //0x00000b56 jmp LBB0_190 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b5b .p2align 4, 0x90 - //0x00000b60 LBB0_169 - 0x49, 0x8d, 0x4a, 0x01, //0x00000b60 leaq $1(%r10), %rcx - 0x48, 0x39, 0xc1, //0x00000b64 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b67 jae LBB0_173 - 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x00000b6d movb (%r13,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x00000b72 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000b75 je LBB0_173 - 0x80, 0xfa, 0x20, //0x00000b7b cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00000b7e je LBB0_173 - 0x80, 0xc2, 0xf7, //0x00000b84 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000b87 cmpb $1, %dl - 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x00000b8a ja LBB0_190 - //0x00000b90 .p2align 4, 0x90 - //0x00000b90 LBB0_173 - 0x49, 0x8d, 0x4a, 0x02, //0x00000b90 leaq $2(%r10), %rcx - 0x48, 0x39, 0xc1, //0x00000b94 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000b97 jae LBB0_177 - 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x00000b9d movb (%r13,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x00000ba2 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000ba5 je LBB0_177 - 0x80, 0xfa, 0x20, //0x00000bab cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00000bae je LBB0_177 - 0x80, 0xc2, 0xf7, //0x00000bb4 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000bb7 cmpb $1, %dl - 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x00000bba ja LBB0_190 - //0x00000bc0 .p2align 4, 0x90 - //0x00000bc0 LBB0_177 - 0x49, 0x8d, 0x4a, 0x03, //0x00000bc0 leaq $3(%r10), %rcx - 0x48, 0x39, 0xc1, //0x00000bc4 cmpq %rax, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000bc7 jae LBB0_181 - 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x00000bcd movb (%r13,%rcx), %dl - 0x80, 0xfa, 0x0d, //0x00000bd2 cmpb $13, %dl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000bd5 je LBB0_181 - 0x80, 0xfa, 0x20, //0x00000bdb cmpb $32, %dl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00000bde je LBB0_181 - 0x80, 0xc2, 0xf7, //0x00000be4 addb $-9, %dl - 0x80, 0xfa, 0x01, //0x00000be7 cmpb $1, %dl - 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x00000bea ja LBB0_190 - //0x00000bf0 .p2align 4, 0x90 - //0x00000bf0 LBB0_181 - 0x49, 0x8d, 0x4a, 0x04, //0x00000bf0 leaq $4(%r10), %rcx - 0x48, 0x39, 0xc8, //0x00000bf4 cmpq %rcx, %rax - 0x0f, 0x86, 0x43, 0x3a, 0x00, 0x00, //0x00000bf7 jbe LBB0_867 - 0x48, 0x39, 0xc8, //0x00000bfd cmpq %rcx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000c00 je LBB0_187 - 0x4a, 0x8d, 0x14, 0x28, //0x00000c06 leaq (%rax,%r13), %rdx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c0a .p2align 4, 0x90 - //0x00000c10 LBB0_184 - 0x41, 0x0f, 0xbe, 0x74, 0x0d, 0x00, //0x00000c10 movsbl (%r13,%rcx), %esi - 0x83, 0xfe, 0x20, //0x00000c16 cmpl $32, %esi - 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00000c19 ja LBB0_189 - 0x49, 0x0f, 0xa3, 0xf1, //0x00000c1f btq %rsi, %r9 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000c23 jae LBB0_189 - 0x48, 0x83, 0xc1, 0x01, //0x00000c29 addq $1, %rcx - 0x48, 0x39, 0xc8, //0x00000c2d cmpq %rcx, %rax - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00000c30 jne LBB0_184 - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000c36 jmp LBB0_188 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c3b .p2align 4, 0x90 - //0x00000c40 LBB0_187 - 0x4c, 0x01, 0xe9, //0x00000c40 addq %r13, %rcx - 0x48, 0x89, 0xca, //0x00000c43 movq %rcx, %rdx - //0x00000c46 LBB0_188 - 0x4c, 0x29, 0xea, //0x00000c46 subq %r13, %rdx - 0x48, 0x89, 0xd1, //0x00000c49 movq %rdx, %rcx - //0x00000c4c LBB0_189 - 0x48, 0x39, 0xc1, //0x00000c4c cmpq %rax, %rcx - 0x0f, 0x83, 0xee, 0x39, 0x00, 0x00, //0x00000c4f jae LBB0_868 - //0x00000c55 LBB0_190 - 0x4c, 0x8d, 0x51, 0x01, //0x00000c55 leaq $1(%rcx), %r10 - 0x4d, 0x89, 0x10, //0x00000c59 movq %r10, (%r8) - 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00000c5c movb (%r13,%rcx), %al - 0x3c, 0x2c, //0x00000c61 cmpb $44, %al - 0x0f, 0x84, 0xf9, 0xf6, 0xff, 0xff, //0x00000c63 je LBB0_33 - 0xe9, 0x7f, 0x23, 0x00, 0x00, //0x00000c69 jmp LBB0_191 - //0x00000c6e LBB0_192 - 0x48, 0x83, 0xc0, 0x04, //0x00000c6e addq $4, %rax - 0x49, 0x3b, 0x07, //0x00000c72 cmpq (%r15), %rax - 0x0f, 0x87, 0xa3, 0xfe, 0xff, 0xff, //0x00000c75 ja LBB0_164 - 0xe9, 0x6e, 0x05, 0x00, 0x00, //0x00000c7b jmp LBB0_231 - //0x00000c80 LBB0_193 - 0x4d, 0x8b, 0x07, //0x00000c80 movq (%r15), %r8 - 0x4d, 0x89, 0xc6, //0x00000c83 movq %r8, %r14 - 0x4d, 0x29, 0xd6, //0x00000c86 subq %r10, %r14 - 0x49, 0x83, 0xfe, 0x20, //0x00000c89 cmpq $32, %r14 - 0x0f, 0x8c, 0x3e, 0x0f, 0x00, 0x00, //0x00000c8d jl LBB0_316 - 0x4e, 0x8d, 0x0c, 0x28, //0x00000c93 leaq (%rax,%r13), %r9 - 0x49, 0x29, 0xc0, //0x00000c97 subq %rax, %r8 - 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x00000c9a movl $31, %r15d - 0x45, 0x31, 0xf6, //0x00000ca0 xorl %r14d, %r14d - 0x45, 0x31, 0xdb, //0x00000ca3 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ca6 .p2align 4, 0x90 - //0x00000cb0 LBB0_195 - 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x31, 0x01, //0x00000cb0 movdqu $1(%r9,%r14), %xmm2 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x31, 0x11, //0x00000cb7 movdqu $17(%r9,%r14), %xmm3 - 0x66, 0x0f, 0x6f, 0xea, //0x00000cbe movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00000cc2 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000cc6 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00000cca movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00000cce pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00000cd2 pmovmskb %xmm5, %ebx - 0x48, 0xc1, 0xe3, 0x10, //0x00000cd6 shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00000cda orq %rsi, %rbx - 0x66, 0x0f, 0x74, 0xd1, //0x00000cdd pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00000ce1 pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x00000ce5 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000ce9 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000ced shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00000cf1 orq %rdx, %rsi - 0x48, 0x89, 0xf2, //0x00000cf4 movq %rsi, %rdx - 0x4c, 0x09, 0xda, //0x00000cf7 orq %r11, %rdx - 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000cfa je LBB0_197 - 0x44, 0x89, 0xda, //0x00000d00 movl %r11d, %edx - 0xf7, 0xd2, //0x00000d03 notl %edx - 0x21, 0xf2, //0x00000d05 andl %esi, %edx - 0x8d, 0x3c, 0x12, //0x00000d07 leal (%rdx,%rdx), %edi - 0x44, 0x09, 0xdf, //0x00000d0a orl %r11d, %edi - 0x89, 0xf9, //0x00000d0d movl %edi, %ecx - 0xf7, 0xd1, //0x00000d0f notl %ecx - 0x21, 0xf1, //0x00000d11 andl %esi, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d13 andl $-1431655766, %ecx - 0x45, 0x31, 0xdb, //0x00000d19 xorl %r11d, %r11d - 0x01, 0xd1, //0x00000d1c addl %edx, %ecx - 0x41, 0x0f, 0x92, 0xc3, //0x00000d1e setb %r11b - 0x01, 0xc9, //0x00000d22 addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00000d24 xorl $1431655765, %ecx - 0x21, 0xf9, //0x00000d2a andl %edi, %ecx - 0xf7, 0xd1, //0x00000d2c notl %ecx - 0x21, 0xcb, //0x00000d2e andl %ecx, %ebx - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00000d30 jmp LBB0_198 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d35 .p2align 4, 0x90 - //0x00000d40 LBB0_197 - 0x45, 0x31, 0xdb, //0x00000d40 xorl %r11d, %r11d - //0x00000d43 LBB0_198 - 0x48, 0x85, 0xdb, //0x00000d43 testq %rbx, %rbx - 0x0f, 0x85, 0x15, 0x09, 0x00, 0x00, //0x00000d46 jne LBB0_259 - 0x49, 0x83, 0xc6, 0x20, //0x00000d4c addq $32, %r14 - 0x4b, 0x8d, 0x0c, 0x38, //0x00000d50 leaq (%r8,%r15), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00000d54 addq $-32, %rcx - 0x49, 0x83, 0xc7, 0xe0, //0x00000d58 addq $-32, %r15 - 0x48, 0x83, 0xf9, 0x3f, //0x00000d5c cmpq $63, %rcx - 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00000d60 jg LBB0_195 - 0x4d, 0x85, 0xdb, //0x00000d66 testq %r11, %r11 - 0x0f, 0x85, 0x2c, 0x10, 0x00, 0x00, //0x00000d69 jne LBB0_339 - 0x4b, 0x8d, 0x04, 0x0e, //0x00000d6f leaq (%r14,%r9), %rax - 0x48, 0x83, 0xc0, 0x01, //0x00000d73 addq $1, %rax - 0x49, 0xf7, 0xd6, //0x00000d77 notq %r14 - 0x4d, 0x01, 0xc6, //0x00000d7a addq %r8, %r14 - //0x00000d7d LBB0_202 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00000d7d movq $-64(%rbp), %r15 - //0x00000d81 LBB0_203 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00000d81 movq $-88(%rbp), %r11 - 0x4d, 0x85, 0xf6, //0x00000d85 testq %r14, %r14 - 0x4c, 0x8b, 0x45, 0xc8, //0x00000d88 movq $-56(%rbp), %r8 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000d8c movabsq $4294977024, %r9 - 0x0f, 0x8f, 0xb4, 0x09, 0x00, 0x00, //0x00000d96 jg LBB0_262 - 0xe9, 0x7d, 0xfd, 0xff, 0xff, //0x00000d9c jmp LBB0_164 - //0x00000da1 LBB0_204 - 0x49, 0x8b, 0x07, //0x00000da1 movq (%r15), %rax - 0x4c, 0x29, 0xd0, //0x00000da4 subq %r10, %rax - 0x4d, 0x01, 0xd5, //0x00000da7 addq %r10, %r13 - 0x45, 0x31, 0xc9, //0x00000daa xorl %r9d, %r9d - 0x45, 0x31, 0xc0, //0x00000dad xorl %r8d, %r8d - 0x45, 0x31, 0xdb, //0x00000db0 xorl %r11d, %r11d - 0x31, 0xd2, //0x00000db3 xorl %edx, %edx - 0xe9, 0x73, 0x00, 0x00, 0x00, //0x00000db5 jmp LBB0_206 - //0x00000dba LBB0_205 - 0x49, 0xc1, 0xfe, 0x3f, //0x00000dba sarq $63, %r14 - 0x4c, 0x89, 0xd1, //0x00000dbe movq %r10, %rcx - 0x48, 0xd1, 0xe9, //0x00000dc1 shrq %rcx - 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000dc4 movabsq $6148914691236517205, %rsi - 0x48, 0x21, 0xf1, //0x00000dce andq %rsi, %rcx - 0x49, 0x29, 0xca, //0x00000dd1 subq %rcx, %r10 - 0x4c, 0x89, 0xd1, //0x00000dd4 movq %r10, %rcx - 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000dd7 movabsq $3689348814741910323, %rax - 0x48, 0x21, 0xc1, //0x00000de1 andq %rax, %rcx - 0x49, 0xc1, 0xea, 0x02, //0x00000de4 shrq $2, %r10 - 0x49, 0x21, 0xc2, //0x00000de8 andq %rax, %r10 - 0x49, 0x01, 0xca, //0x00000deb addq %rcx, %r10 - 0x4c, 0x89, 0xd1, //0x00000dee movq %r10, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00000df1 shrq $4, %rcx - 0x4c, 0x01, 0xd1, //0x00000df5 addq %r10, %rcx - 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000df8 movabsq $1085102592571150095, %rax - 0x48, 0x21, 0xc1, //0x00000e02 andq %rax, %rcx - 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000e05 movabsq $72340172838076673, %rax - 0x48, 0x0f, 0xaf, 0xc8, //0x00000e0f imulq %rax, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00000e13 shrq $56, %rcx - 0x49, 0x01, 0xcb, //0x00000e17 addq %rcx, %r11 - 0x49, 0x83, 0xc5, 0x40, //0x00000e1a addq $64, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x00000e1e movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x00000e22 addq $-64, %rax - 0x4d, 0x89, 0xf1, //0x00000e26 movq %r14, %r9 - 0x4c, 0x8b, 0x45, 0xb8, //0x00000e29 movq $-72(%rbp), %r8 - //0x00000e2d LBB0_206 - 0x48, 0x83, 0xf8, 0x40, //0x00000e2d cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x00000e31 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x46, 0x02, 0x00, 0x00, //0x00000e35 jl LBB0_214 - //0x00000e3b LBB0_207 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00000e3b movdqu (%r13), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x00000e41 movdqu $16(%r13), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x00000e47 movdqu $32(%r13), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x00000e4d movdqu $48(%r13), %xmm6 - 0x66, 0x0f, 0x6f, 0xda, //0x00000e53 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000e57 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x00000e5b pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdd, //0x00000e5f movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000e63 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000e67 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdf, //0x00000e6b movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000e6f pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00000e73 pmovmskb %xmm3, %edi - 0x66, 0x0f, 0x6f, 0xde, //0x00000e77 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000e7b pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00000e7f pmovmskb %xmm3, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00000e83 shlq $48, %rbx - 0x48, 0xc1, 0xe7, 0x20, //0x00000e87 shlq $32, %rdi - 0x48, 0x09, 0xdf, //0x00000e8b orq %rbx, %rdi - 0x48, 0xc1, 0xe6, 0x10, //0x00000e8e shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x00000e92 orq %rdi, %rsi - 0x48, 0x09, 0xf0, //0x00000e95 orq %rsi, %rax - 0x48, 0x89, 0xc6, //0x00000e98 movq %rax, %rsi - 0x4c, 0x09, 0xc6, //0x00000e9b orq %r8, %rsi - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00000e9e jne LBB0_209 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000ea4 movq $-1, %rax - 0x31, 0xc9, //0x00000eab xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xb8, //0x00000ead movq %rcx, $-72(%rbp) - 0xe9, 0x48, 0x00, 0x00, 0x00, //0x00000eb1 jmp LBB0_210 - //0x00000eb6 LBB0_209 - 0x4c, 0x89, 0xc6, //0x00000eb6 movq %r8, %rsi - 0x48, 0xf7, 0xd6, //0x00000eb9 notq %rsi - 0x48, 0x21, 0xc6, //0x00000ebc andq %rax, %rsi - 0x48, 0x8d, 0x1c, 0x36, //0x00000ebf leaq (%rsi,%rsi), %rbx - 0x4c, 0x09, 0xc3, //0x00000ec3 orq %r8, %rbx - 0x48, 0x89, 0xdf, //0x00000ec6 movq %rbx, %rdi - 0x48, 0xf7, 0xd7, //0x00000ec9 notq %rdi - 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000ecc movabsq $-6148914691236517206, %rcx - 0x48, 0x21, 0xc8, //0x00000ed6 andq %rcx, %rax - 0x48, 0x21, 0xf8, //0x00000ed9 andq %rdi, %rax - 0x31, 0xc9, //0x00000edc xorl %ecx, %ecx - 0x48, 0x01, 0xf0, //0x00000ede addq %rsi, %rax - 0x0f, 0x92, 0xc1, //0x00000ee1 setb %cl - 0x48, 0x89, 0x4d, 0xb8, //0x00000ee4 movq %rcx, $-72(%rbp) - 0x48, 0x01, 0xc0, //0x00000ee8 addq %rax, %rax - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000eeb movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xc8, //0x00000ef5 xorq %rcx, %rax - 0x48, 0x21, 0xd8, //0x00000ef8 andq %rbx, %rax - 0x48, 0xf7, 0xd0, //0x00000efb notq %rax - //0x00000efe LBB0_210 - 0x66, 0x0f, 0x6f, 0xde, //0x00000efe movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000f02 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000f06 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00000f0a shlq $48, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00000f0e movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000f12 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00000f16 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x00000f1a shlq $32, %rdi - 0x48, 0x09, 0xf7, //0x00000f1e orq %rsi, %rdi - 0x66, 0x0f, 0x6f, 0xdd, //0x00000f21 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000f25 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000f29 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000f2d shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x00000f31 orq %rdi, %rsi - 0x66, 0x0f, 0x6f, 0xda, //0x00000f34 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000f38 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00000f3c pmovmskb %xmm3, %edi - 0x48, 0x09, 0xf7, //0x00000f40 orq %rsi, %rdi - 0x48, 0x21, 0xc7, //0x00000f43 andq %rax, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xdf, //0x00000f46 movq %rdi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x00000f4b pclmulqdq $0, %xmm9, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x00000f52 movq %xmm3, %r14 - 0x4d, 0x31, 0xce, //0x00000f57 xorq %r9, %r14 - 0x66, 0x0f, 0x6f, 0xda, //0x00000f5a movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000f5e pcmpeqb %xmm10, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00000f63 pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xdd, //0x00000f68 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000f6c pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000f71 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdf, //0x00000f75 movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000f79 pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00000f7e pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xde, //0x00000f82 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000f86 pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00000f8b pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00000f8f shlq $48, %rcx - 0x48, 0xc1, 0xe3, 0x20, //0x00000f93 shlq $32, %rbx - 0x48, 0x09, 0xcb, //0x00000f97 orq %rcx, %rbx - 0x48, 0xc1, 0xe6, 0x10, //0x00000f9a shlq $16, %rsi - 0x48, 0x09, 0xde, //0x00000f9e orq %rbx, %rsi - 0x49, 0x09, 0xf2, //0x00000fa1 orq %rsi, %r10 - 0x4d, 0x89, 0xf1, //0x00000fa4 movq %r14, %r9 - 0x49, 0xf7, 0xd1, //0x00000fa7 notq %r9 - 0x4d, 0x21, 0xca, //0x00000faa andq %r9, %r10 - 0x66, 0x0f, 0x74, 0xd4, //0x00000fad pcmpeqb %xmm4, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00000fb1 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x74, 0xec, //0x00000fb5 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00000fb9 pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x74, 0xfc, //0x00000fbd pcmpeqb %xmm4, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00000fc1 pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x74, 0xf4, //0x00000fc5 pcmpeqb %xmm4, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x00000fc9 pmovmskb %xmm6, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00000fcd shlq $48, %rcx - 0x48, 0xc1, 0xe7, 0x20, //0x00000fd1 shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x00000fd5 orq %rcx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x00000fd8 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x00000fdc orq %rdi, %rbx - 0x48, 0x09, 0xde, //0x00000fdf orq %rbx, %rsi - 0x4c, 0x21, 0xce, //0x00000fe2 andq %r9, %rsi - 0x0f, 0x84, 0xcf, 0xfd, 0xff, 0xff, //0x00000fe5 je LBB0_205 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000feb movabsq $4294977024, %r9 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ff5 .p2align 4, 0x90 - //0x00001000 LBB0_212 - 0x48, 0x8d, 0x5e, 0xff, //0x00001000 leaq $-1(%rsi), %rbx - 0x48, 0x89, 0xd9, //0x00001004 movq %rbx, %rcx - 0x4c, 0x21, 0xd1, //0x00001007 andq %r10, %rcx - 0x48, 0x89, 0xcf, //0x0000100a movq %rcx, %rdi - 0x48, 0xd1, 0xef, //0x0000100d shrq %rdi - 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001010 movabsq $6148914691236517205, %r8 - 0x4c, 0x21, 0xc7, //0x0000101a andq %r8, %rdi - 0x48, 0x29, 0xf9, //0x0000101d subq %rdi, %rcx - 0x48, 0x89, 0xcf, //0x00001020 movq %rcx, %rdi - 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001023 movabsq $3689348814741910323, %rax - 0x48, 0x21, 0xc7, //0x0000102d andq %rax, %rdi - 0x48, 0xc1, 0xe9, 0x02, //0x00001030 shrq $2, %rcx - 0x48, 0x21, 0xc1, //0x00001034 andq %rax, %rcx - 0x48, 0x01, 0xf9, //0x00001037 addq %rdi, %rcx - 0x48, 0x89, 0xcf, //0x0000103a movq %rcx, %rdi - 0x48, 0xc1, 0xef, 0x04, //0x0000103d shrq $4, %rdi - 0x48, 0x01, 0xcf, //0x00001041 addq %rcx, %rdi - 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001044 movabsq $1085102592571150095, %rax - 0x48, 0x21, 0xc7, //0x0000104e andq %rax, %rdi - 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001051 movabsq $72340172838076673, %rax - 0x48, 0x0f, 0xaf, 0xf8, //0x0000105b imulq %rax, %rdi - 0x48, 0xc1, 0xef, 0x38, //0x0000105f shrq $56, %rdi - 0x4c, 0x01, 0xdf, //0x00001063 addq %r11, %rdi - 0x48, 0x39, 0xd7, //0x00001066 cmpq %rdx, %rdi - 0x0f, 0x86, 0xc2, 0x05, 0x00, 0x00, //0x00001069 jbe LBB0_258 - 0x48, 0x83, 0xc2, 0x01, //0x0000106f addq $1, %rdx - 0x48, 0x21, 0xde, //0x00001073 andq %rbx, %rsi - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00001076 jne LBB0_212 - 0xe9, 0x39, 0xfd, 0xff, 0xff, //0x0000107c jmp LBB0_205 - //0x00001081 LBB0_214 - 0x48, 0x85, 0xc0, //0x00001081 testq %rax, %rax - 0x0f, 0x8e, 0xfa, 0x0c, 0x00, 0x00, //0x00001084 jle LBB0_337 - 0x4c, 0x89, 0xc3, //0x0000108a movq %r8, %rbx - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x0000108d movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00001093 movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000109c movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000010a5 movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe8, //0x000010ae movl %r13d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x000010b1 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x000010b6 cmpl $4033, %eax - 0x0f, 0x82, 0x3d, 0x00, 0x00, 0x00, //0x000010bb jb LBB0_218 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x000010c1 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x000010c6 jb LBB0_219 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x000010cc movups (%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000010d1 movups %xmm2, $-176(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x10, //0x000010d8 movdqu $16(%r13), %xmm2 - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x000010de movdqu %xmm2, $-160(%rbp) - 0x49, 0x83, 0xc5, 0x20, //0x000010e6 addq $32, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x000010ea movq $-48(%rbp), %rax - 0x48, 0x8d, 0x70, 0xe0, //0x000010ee leaq $-32(%rax), %rsi - 0x48, 0x8d, 0x85, 0x70, 0xff, 0xff, 0xff, //0x000010f2 leaq $-144(%rbp), %rax - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x000010f9 jmp LBB0_220 - //0x000010fe LBB0_218 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000010fe movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001102 movq $-80(%rbp), %r12 - 0x49, 0x89, 0xd8, //0x00001106 movq %rbx, %r8 - 0xe9, 0x2d, 0xfd, 0xff, 0xff, //0x00001109 jmp LBB0_207 - //0x0000110e LBB0_219 - 0x48, 0x8d, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000110e leaq $-176(%rbp), %rax - 0x48, 0x8b, 0x75, 0xd0, //0x00001115 movq $-48(%rbp), %rsi - //0x00001119 LBB0_220 - 0x48, 0x83, 0xfe, 0x10, //0x00001119 cmpq $16, %rsi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x0000111d jb LBB0_221 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00001123 movdqu (%r13), %xmm2 - 0xf3, 0x0f, 0x7f, 0x10, //0x00001129 movdqu %xmm2, (%rax) - 0x49, 0x83, 0xc5, 0x10, //0x0000112d addq $16, %r13 - 0x48, 0x83, 0xc0, 0x10, //0x00001131 addq $16, %rax - 0x48, 0x83, 0xc6, 0xf0, //0x00001135 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001139 cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000113d jae LBB0_228 - //0x00001143 LBB0_222 - 0x48, 0x83, 0xfe, 0x04, //0x00001143 cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00001147 jl LBB0_223 - //0x0000114d LBB0_229 - 0x41, 0x8b, 0x4d, 0x00, //0x0000114d movl (%r13), %ecx - 0x89, 0x08, //0x00001151 movl %ecx, (%rax) - 0x49, 0x83, 0xc5, 0x04, //0x00001153 addq $4, %r13 - 0x48, 0x83, 0xc0, 0x04, //0x00001157 addq $4, %rax - 0x48, 0x83, 0xc6, 0xfc, //0x0000115b addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x0000115f cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00001163 jae LBB0_224 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00001169 jmp LBB0_225 - //0x0000116e LBB0_221 - 0x48, 0x83, 0xfe, 0x08, //0x0000116e cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00001172 jb LBB0_222 - //0x00001178 LBB0_228 - 0x49, 0x8b, 0x4d, 0x00, //0x00001178 movq (%r13), %rcx - 0x48, 0x89, 0x08, //0x0000117c movq %rcx, (%rax) - 0x49, 0x83, 0xc5, 0x08, //0x0000117f addq $8, %r13 - 0x48, 0x83, 0xc0, 0x08, //0x00001183 addq $8, %rax - 0x48, 0x83, 0xc6, 0xf8, //0x00001187 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x0000118b cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x0000118f jge LBB0_229 - //0x00001195 LBB0_223 - 0x48, 0x83, 0xfe, 0x02, //0x00001195 cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00001199 jb LBB0_225 - //0x0000119f LBB0_224 - 0x41, 0x0f, 0xb7, 0x4d, 0x00, //0x0000119f movzwl (%r13), %ecx - 0x66, 0x89, 0x08, //0x000011a4 movw %cx, (%rax) - 0x49, 0x83, 0xc5, 0x02, //0x000011a7 addq $2, %r13 - 0x48, 0x83, 0xc0, 0x02, //0x000011ab addq $2, %rax - 0x48, 0x83, 0xc6, 0xfe, //0x000011af addq $-2, %rsi - //0x000011b3 LBB0_225 - 0x4c, 0x89, 0xef, //0x000011b3 movq %r13, %rdi - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000011b6 leaq $-176(%rbp), %r13 - 0x48, 0x85, 0xf6, //0x000011bd testq %rsi, %rsi - 0x4c, 0x8b, 0x7d, 0xc0, //0x000011c0 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x000011c4 movq $-80(%rbp), %r12 - 0x49, 0x89, 0xd8, //0x000011c8 movq %rbx, %r8 - 0x0f, 0x84, 0x6a, 0xfc, 0xff, 0xff, //0x000011cb je LBB0_207 - 0x8a, 0x0f, //0x000011d1 movb (%rdi), %cl - 0x88, 0x08, //0x000011d3 movb %cl, (%rax) - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000011d5 leaq $-176(%rbp), %r13 - 0xe9, 0x5a, 0xfc, 0xff, 0xff, //0x000011dc jmp LBB0_207 - //0x000011e1 LBB0_230 - 0x48, 0x83, 0xc0, 0x05, //0x000011e1 addq $5, %rax - 0x49, 0x3b, 0x07, //0x000011e5 cmpq (%r15), %rax - 0x0f, 0x87, 0x30, 0xf9, 0xff, 0xff, //0x000011e8 ja LBB0_164 - //0x000011ee LBB0_231 - 0x49, 0x89, 0x00, //0x000011ee movq %rax, (%r8) - 0x49, 0x89, 0xc2, //0x000011f1 movq %rax, %r10 - 0xe9, 0x25, 0xf9, 0xff, 0xff, //0x000011f4 jmp LBB0_164 - //0x000011f9 LBB0_232 - 0x49, 0x8b, 0x07, //0x000011f9 movq (%r15), %rax - 0x4c, 0x29, 0xd0, //0x000011fc subq %r10, %rax - 0x4d, 0x01, 0xd5, //0x000011ff addq %r10, %r13 - 0x45, 0x31, 0xc9, //0x00001202 xorl %r9d, %r9d - 0x45, 0x31, 0xc0, //0x00001205 xorl %r8d, %r8d - 0x45, 0x31, 0xdb, //0x00001208 xorl %r11d, %r11d - 0x31, 0xd2, //0x0000120b xorl %edx, %edx - 0xe9, 0x73, 0x00, 0x00, 0x00, //0x0000120d jmp LBB0_234 - //0x00001212 LBB0_233 - 0x49, 0xc1, 0xfe, 0x3f, //0x00001212 sarq $63, %r14 - 0x4c, 0x89, 0xd1, //0x00001216 movq %r10, %rcx - 0x48, 0xd1, 0xe9, //0x00001219 shrq %rcx - 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000121c movabsq $6148914691236517205, %rsi - 0x48, 0x21, 0xf1, //0x00001226 andq %rsi, %rcx - 0x49, 0x29, 0xca, //0x00001229 subq %rcx, %r10 - 0x4c, 0x89, 0xd1, //0x0000122c movq %r10, %rcx - 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000122f movabsq $3689348814741910323, %rax - 0x48, 0x21, 0xc1, //0x00001239 andq %rax, %rcx - 0x49, 0xc1, 0xea, 0x02, //0x0000123c shrq $2, %r10 - 0x49, 0x21, 0xc2, //0x00001240 andq %rax, %r10 - 0x49, 0x01, 0xca, //0x00001243 addq %rcx, %r10 - 0x4c, 0x89, 0xd1, //0x00001246 movq %r10, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00001249 shrq $4, %rcx - 0x4c, 0x01, 0xd1, //0x0000124d addq %r10, %rcx - 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001250 movabsq $1085102592571150095, %rax - 0x48, 0x21, 0xc1, //0x0000125a andq %rax, %rcx - 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0000125d movabsq $72340172838076673, %rax - 0x48, 0x0f, 0xaf, 0xc8, //0x00001267 imulq %rax, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x0000126b shrq $56, %rcx - 0x49, 0x01, 0xcb, //0x0000126f addq %rcx, %r11 - 0x49, 0x83, 0xc5, 0x40, //0x00001272 addq $64, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x00001276 movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x0000127a addq $-64, %rax - 0x4d, 0x89, 0xf1, //0x0000127e movq %r14, %r9 - 0x4c, 0x8b, 0x45, 0xb8, //0x00001281 movq $-72(%rbp), %r8 - //0x00001285 LBB0_234 - 0x48, 0x83, 0xf8, 0x40, //0x00001285 cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x00001289 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x3e, 0x02, 0x00, 0x00, //0x0000128d jl LBB0_242 - //0x00001293 LBB0_235 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00001293 movdqu (%r13), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x00001299 movdqu $16(%r13), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x0000129f movdqu $32(%r13), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x000012a5 movdqu $48(%r13), %xmm6 - 0x66, 0x0f, 0x6f, 0xda, //0x000012ab movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000012af pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x000012b3 pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdd, //0x000012b7 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000012bb pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000012bf pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdf, //0x000012c3 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000012c7 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x000012cb pmovmskb %xmm3, %edi - 0x66, 0x0f, 0x6f, 0xde, //0x000012cf movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000012d3 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x000012d7 pmovmskb %xmm3, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x000012db shlq $48, %rbx - 0x48, 0xc1, 0xe7, 0x20, //0x000012df shlq $32, %rdi - 0x48, 0x09, 0xdf, //0x000012e3 orq %rbx, %rdi - 0x48, 0xc1, 0xe6, 0x10, //0x000012e6 shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x000012ea orq %rdi, %rsi - 0x48, 0x09, 0xf0, //0x000012ed orq %rsi, %rax - 0x48, 0x89, 0xc6, //0x000012f0 movq %rax, %rsi - 0x4c, 0x09, 0xc6, //0x000012f3 orq %r8, %rsi - 0x0f, 0x85, 0x0e, 0x00, 0x00, 0x00, //0x000012f6 jne LBB0_237 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000012fc movq $-1, %rax - 0x31, 0xff, //0x00001303 xorl %edi, %edi - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00001305 jmp LBB0_238 - //0x0000130a LBB0_237 - 0x4c, 0x89, 0xc6, //0x0000130a movq %r8, %rsi - 0x48, 0xf7, 0xd6, //0x0000130d notq %rsi - 0x48, 0x21, 0xc6, //0x00001310 andq %rax, %rsi - 0x48, 0x8d, 0x1c, 0x36, //0x00001313 leaq (%rsi,%rsi), %rbx - 0x4c, 0x09, 0xc3, //0x00001317 orq %r8, %rbx - 0x48, 0x89, 0xdf, //0x0000131a movq %rbx, %rdi - 0x48, 0xf7, 0xd7, //0x0000131d notq %rdi - 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001320 movabsq $-6148914691236517206, %rcx - 0x48, 0x21, 0xc8, //0x0000132a andq %rcx, %rax - 0x48, 0x21, 0xf8, //0x0000132d andq %rdi, %rax - 0x31, 0xff, //0x00001330 xorl %edi, %edi - 0x48, 0x01, 0xf0, //0x00001332 addq %rsi, %rax - 0x40, 0x0f, 0x92, 0xc7, //0x00001335 setb %dil - 0x48, 0x01, 0xc0, //0x00001339 addq %rax, %rax - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000133c movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xc8, //0x00001346 xorq %rcx, %rax - 0x48, 0x21, 0xd8, //0x00001349 andq %rbx, %rax - 0x48, 0xf7, 0xd0, //0x0000134c notq %rax - //0x0000134f LBB0_238 - 0x48, 0x89, 0x7d, 0xb8, //0x0000134f movq %rdi, $-72(%rbp) - 0x66, 0x0f, 0x6f, 0xde, //0x00001353 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001357 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000135b pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x0000135f shlq $48, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00001363 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001367 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x0000136b pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x0000136f shlq $32, %rdi - 0x48, 0x09, 0xf7, //0x00001373 orq %rsi, %rdi - 0x66, 0x0f, 0x6f, 0xdd, //0x00001376 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000137a pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000137e pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00001382 shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x00001386 orq %rdi, %rsi - 0x66, 0x0f, 0x6f, 0xda, //0x00001389 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000138d pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001391 pmovmskb %xmm3, %edi - 0x48, 0x09, 0xf7, //0x00001395 orq %rsi, %rdi - 0x48, 0x21, 0xc7, //0x00001398 andq %rax, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xdf, //0x0000139b movq %rdi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x000013a0 pclmulqdq $0, %xmm9, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x000013a7 movq %xmm3, %r14 - 0x4d, 0x31, 0xce, //0x000013ac xorq %r9, %r14 - 0x66, 0x0f, 0x6f, 0xda, //0x000013af movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000013b3 pcmpeqb %xmm11, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x000013b8 pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xdd, //0x000013bd movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000013c1 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000013c6 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdf, //0x000013ca movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000013ce pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x000013d3 pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xde, //0x000013d7 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000013db pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000013e0 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x000013e4 shlq $48, %rcx - 0x48, 0xc1, 0xe3, 0x20, //0x000013e8 shlq $32, %rbx - 0x48, 0x09, 0xcb, //0x000013ec orq %rcx, %rbx - 0x48, 0xc1, 0xe6, 0x10, //0x000013ef shlq $16, %rsi - 0x48, 0x09, 0xde, //0x000013f3 orq %rbx, %rsi - 0x49, 0x09, 0xf2, //0x000013f6 orq %rsi, %r10 - 0x4d, 0x89, 0xf1, //0x000013f9 movq %r14, %r9 - 0x49, 0xf7, 0xd1, //0x000013fc notq %r9 - 0x4d, 0x21, 0xca, //0x000013ff andq %r9, %r10 - 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00001402 pcmpeqb %xmm12, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00001407 pmovmskb %xmm2, %esi - 0x66, 0x41, 0x0f, 0x74, 0xec, //0x0000140b pcmpeqb %xmm12, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00001410 pmovmskb %xmm5, %ebx - 0x66, 0x41, 0x0f, 0x74, 0xfc, //0x00001414 pcmpeqb %xmm12, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00001419 pmovmskb %xmm7, %edi - 0x66, 0x41, 0x0f, 0x74, 0xf4, //0x0000141d pcmpeqb %xmm12, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x00001422 pmovmskb %xmm6, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00001426 shlq $48, %rcx - 0x48, 0xc1, 0xe7, 0x20, //0x0000142a shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x0000142e orq %rcx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x00001431 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x00001435 orq %rdi, %rbx - 0x48, 0x09, 0xde, //0x00001438 orq %rbx, %rsi - 0x4c, 0x21, 0xce, //0x0000143b andq %r9, %rsi - 0x0f, 0x84, 0xce, 0xfd, 0xff, 0xff, //0x0000143e je LBB0_233 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001444 movabsq $4294977024, %r9 - 0x90, 0x90, //0x0000144e .p2align 4, 0x90 - //0x00001450 LBB0_240 - 0x48, 0x8d, 0x5e, 0xff, //0x00001450 leaq $-1(%rsi), %rbx - 0x48, 0x89, 0xd9, //0x00001454 movq %rbx, %rcx - 0x4c, 0x21, 0xd1, //0x00001457 andq %r10, %rcx - 0x48, 0x89, 0xcf, //0x0000145a movq %rcx, %rdi - 0x48, 0xd1, 0xef, //0x0000145d shrq %rdi - 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001460 movabsq $6148914691236517205, %r8 - 0x4c, 0x21, 0xc7, //0x0000146a andq %r8, %rdi - 0x48, 0x29, 0xf9, //0x0000146d subq %rdi, %rcx - 0x48, 0x89, 0xcf, //0x00001470 movq %rcx, %rdi - 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001473 movabsq $3689348814741910323, %rax - 0x48, 0x21, 0xc7, //0x0000147d andq %rax, %rdi - 0x48, 0xc1, 0xe9, 0x02, //0x00001480 shrq $2, %rcx - 0x48, 0x21, 0xc1, //0x00001484 andq %rax, %rcx - 0x48, 0x01, 0xf9, //0x00001487 addq %rdi, %rcx - 0x48, 0x89, 0xcf, //0x0000148a movq %rcx, %rdi - 0x48, 0xc1, 0xef, 0x04, //0x0000148d shrq $4, %rdi - 0x48, 0x01, 0xcf, //0x00001491 addq %rcx, %rdi - 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001494 movabsq $1085102592571150095, %rax - 0x48, 0x21, 0xc7, //0x0000149e andq %rax, %rdi - 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000014a1 movabsq $72340172838076673, %rax - 0x48, 0x0f, 0xaf, 0xf8, //0x000014ab imulq %rax, %rdi - 0x48, 0xc1, 0xef, 0x38, //0x000014af shrq $56, %rdi - 0x4c, 0x01, 0xdf, //0x000014b3 addq %r11, %rdi - 0x48, 0x39, 0xd7, //0x000014b6 cmpq %rdx, %rdi - 0x0f, 0x86, 0x72, 0x01, 0x00, 0x00, //0x000014b9 jbe LBB0_258 - 0x48, 0x83, 0xc2, 0x01, //0x000014bf addq $1, %rdx - 0x48, 0x21, 0xde, //0x000014c3 andq %rbx, %rsi - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x000014c6 jne LBB0_240 - 0xe9, 0x41, 0xfd, 0xff, 0xff, //0x000014cc jmp LBB0_233 - //0x000014d1 LBB0_242 - 0x48, 0x85, 0xc0, //0x000014d1 testq %rax, %rax - 0x0f, 0x8e, 0xaa, 0x08, 0x00, 0x00, //0x000014d4 jle LBB0_337 - 0x4c, 0x89, 0xc3, //0x000014da movq %r8, %rbx - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x000014dd movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x000014e3 movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000014ec movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000014f5 movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe8, //0x000014fe movl %r13d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00001501 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001506 cmpl $4033, %eax - 0x0f, 0x82, 0x3d, 0x00, 0x00, 0x00, //0x0000150b jb LBB0_246 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00001511 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x00001516 jb LBB0_247 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x0000151c movups (%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001521 movups %xmm2, $-176(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x10, //0x00001528 movdqu $16(%r13), %xmm2 - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000152e movdqu %xmm2, $-160(%rbp) - 0x49, 0x83, 0xc5, 0x20, //0x00001536 addq $32, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x0000153a movq $-48(%rbp), %rax - 0x48, 0x8d, 0x70, 0xe0, //0x0000153e leaq $-32(%rax), %rsi - 0x48, 0x8d, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00001542 leaq $-144(%rbp), %rax - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x00001549 jmp LBB0_248 - //0x0000154e LBB0_246 - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000154e movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001552 movq $-80(%rbp), %r12 - 0x49, 0x89, 0xd8, //0x00001556 movq %rbx, %r8 - 0xe9, 0x35, 0xfd, 0xff, 0xff, //0x00001559 jmp LBB0_235 - //0x0000155e LBB0_247 - 0x48, 0x8d, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000155e leaq $-176(%rbp), %rax - 0x48, 0x8b, 0x75, 0xd0, //0x00001565 movq $-48(%rbp), %rsi - //0x00001569 LBB0_248 - 0x48, 0x83, 0xfe, 0x10, //0x00001569 cmpq $16, %rsi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x0000156d jb LBB0_249 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00001573 movdqu (%r13), %xmm2 - 0xf3, 0x0f, 0x7f, 0x10, //0x00001579 movdqu %xmm2, (%rax) - 0x49, 0x83, 0xc5, 0x10, //0x0000157d addq $16, %r13 - 0x48, 0x83, 0xc0, 0x10, //0x00001581 addq $16, %rax - 0x48, 0x83, 0xc6, 0xf0, //0x00001585 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001589 cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000158d jae LBB0_256 - //0x00001593 LBB0_250 - 0x48, 0x83, 0xfe, 0x04, //0x00001593 cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00001597 jl LBB0_251 - //0x0000159d LBB0_257 - 0x41, 0x8b, 0x4d, 0x00, //0x0000159d movl (%r13), %ecx - 0x89, 0x08, //0x000015a1 movl %ecx, (%rax) - 0x49, 0x83, 0xc5, 0x04, //0x000015a3 addq $4, %r13 - 0x48, 0x83, 0xc0, 0x04, //0x000015a7 addq $4, %rax - 0x48, 0x83, 0xc6, 0xfc, //0x000015ab addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x000015af cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000015b3 jae LBB0_252 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x000015b9 jmp LBB0_253 - //0x000015be LBB0_249 - 0x48, 0x83, 0xfe, 0x08, //0x000015be cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x000015c2 jb LBB0_250 - //0x000015c8 LBB0_256 - 0x49, 0x8b, 0x4d, 0x00, //0x000015c8 movq (%r13), %rcx - 0x48, 0x89, 0x08, //0x000015cc movq %rcx, (%rax) - 0x49, 0x83, 0xc5, 0x08, //0x000015cf addq $8, %r13 - 0x48, 0x83, 0xc0, 0x08, //0x000015d3 addq $8, %rax - 0x48, 0x83, 0xc6, 0xf8, //0x000015d7 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x000015db cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x000015df jge LBB0_257 - //0x000015e5 LBB0_251 - 0x48, 0x83, 0xfe, 0x02, //0x000015e5 cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x000015e9 jb LBB0_253 - //0x000015ef LBB0_252 - 0x41, 0x0f, 0xb7, 0x4d, 0x00, //0x000015ef movzwl (%r13), %ecx - 0x66, 0x89, 0x08, //0x000015f4 movw %cx, (%rax) - 0x49, 0x83, 0xc5, 0x02, //0x000015f7 addq $2, %r13 - 0x48, 0x83, 0xc0, 0x02, //0x000015fb addq $2, %rax - 0x48, 0x83, 0xc6, 0xfe, //0x000015ff addq $-2, %rsi - //0x00001603 LBB0_253 - 0x4c, 0x89, 0xef, //0x00001603 movq %r13, %rdi - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00001606 leaq $-176(%rbp), %r13 - 0x48, 0x85, 0xf6, //0x0000160d testq %rsi, %rsi - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001610 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001614 movq $-80(%rbp), %r12 - 0x49, 0x89, 0xd8, //0x00001618 movq %rbx, %r8 - 0x0f, 0x84, 0x72, 0xfc, 0xff, 0xff, //0x0000161b je LBB0_235 - 0x8a, 0x0f, //0x00001621 movb (%rdi), %cl - 0x88, 0x08, //0x00001623 movb %cl, (%rax) - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00001625 leaq $-176(%rbp), %r13 - 0xe9, 0x62, 0xfc, 0xff, 0xff, //0x0000162c jmp LBB0_235 - //0x00001631 LBB0_258 - 0x49, 0x8b, 0x07, //0x00001631 movq (%r15), %rax - 0x48, 0x0f, 0xbc, 0xce, //0x00001634 bsfq %rsi, %rcx - 0x48, 0x2b, 0x4d, 0xd0, //0x00001638 subq $-48(%rbp), %rcx - 0x4c, 0x8d, 0x14, 0x01, //0x0000163c leaq (%rcx,%rax), %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001640 addq $1, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001644 movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00001648 movq %r10, (%r8) - 0x49, 0x8b, 0x07, //0x0000164b movq (%r15), %rax - 0x49, 0x39, 0xc2, //0x0000164e cmpq %rax, %r10 - 0x4c, 0x0f, 0x47, 0xd0, //0x00001651 cmovaq %rax, %r10 - 0x4d, 0x89, 0x10, //0x00001655 movq %r10, (%r8) - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001658 movq $-88(%rbp), %r11 - 0xe9, 0xbd, 0xf4, 0xff, 0xff, //0x0000165c jmp LBB0_164 - //0x00001661 LBB0_259 - 0x0f, 0xbc, 0xcb, //0x00001661 bsfl %ebx, %ecx - 0x48, 0x01, 0xc1, //0x00001664 addq %rax, %rcx - 0x4d, 0x8d, 0x14, 0x0e, //0x00001667 leaq (%r14,%rcx), %r10 - 0x49, 0x83, 0xc2, 0x02, //0x0000166b addq $2, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x0000166f movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00001673 movq %r10, (%r8) - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001676 movq $-64(%rbp), %r15 - //0x0000167a LBB0_260 - 0x4c, 0x8b, 0x5d, 0xa8, //0x0000167a movq $-88(%rbp), %r11 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000167e movabsq $4294977024, %r9 - 0xe9, 0x91, 0xf4, 0xff, 0xff, //0x00001688 jmp LBB0_164 - //0x0000168d LBB0_67 - 0x4d, 0x01, 0xea, //0x0000168d addq %r13, %r10 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001690 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001694 movq $-80(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001698 movq $-88(%rbp), %r11 - 0x4c, 0x8b, 0x75, 0xa0, //0x0000169c movq $-96(%rbp), %r14 - 0x48, 0x8b, 0x5d, 0x90, //0x000016a0 movq $-112(%rbp), %rbx - 0x49, 0x83, 0xf8, 0x20, //0x000016a4 cmpq $32, %r8 - 0x0f, 0x82, 0x94, 0x05, 0x00, 0x00, //0x000016a8 jb LBB0_321 - //0x000016ae LBB0_68 - 0xf3, 0x41, 0x0f, 0x6f, 0x12, //0x000016ae movdqu (%r10), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x5a, 0x10, //0x000016b3 movdqu $16(%r10), %xmm3 - 0x66, 0x0f, 0x6f, 0xea, //0x000016b9 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000016bd pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x000016c1 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xeb, //0x000016c5 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000016c9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000016cd pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd1, //0x000016d1 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x000016d5 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x74, 0xd9, //0x000016d9 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000016dd pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe1, 0x10, //0x000016e1 shlq $16, %rcx - 0x48, 0x09, 0xcf, //0x000016e5 orq %rcx, %rdi - 0x48, 0xc1, 0xe2, 0x10, //0x000016e8 shlq $16, %rdx - 0x48, 0x09, 0xd6, //0x000016ec orq %rdx, %rsi - 0x0f, 0x85, 0xe5, 0x04, 0x00, 0x00, //0x000016ef jne LBB0_317 - 0x4d, 0x85, 0xc9, //0x000016f5 testq %r9, %r9 - 0x0f, 0x85, 0xf8, 0x04, 0x00, 0x00, //0x000016f8 jne LBB0_319 - 0x45, 0x31, 0xc9, //0x000016fe xorl %r9d, %r9d - 0x48, 0x85, 0xff, //0x00001701 testq %rdi, %rdi - 0x0f, 0x84, 0x30, 0x05, 0x00, 0x00, //0x00001704 je LBB0_320 - //0x0000170a LBB0_71 - 0x48, 0x0f, 0xbc, 0xcf, //0x0000170a bsfq %rdi, %rcx - 0x4d, 0x29, 0xea, //0x0000170e subq %r13, %r10 - 0x49, 0x01, 0xca, //0x00001711 addq %rcx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001714 addq $1, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001718 movq $-56(%rbp), %r8 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000171c movabsq $4294977024, %r9 - 0x48, 0x8b, 0x4d, 0xb8, //0x00001726 movq $-72(%rbp), %rcx - 0x4d, 0x85, 0xd2, //0x0000172a testq %r10, %r10 - 0x0f, 0x89, 0x53, 0xef, 0xff, 0xff, //0x0000172d jns LBB0_78 - 0xe9, 0x74, 0x3b, 0x00, 0x00, //0x00001733 jmp LBB0_968 - //0x00001738 LBB0_261 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00001738 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000173f movl $2, %esi - 0x48, 0x01, 0xf0, //0x00001744 addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00001747 addq %rdx, %r14 - 0x0f, 0x8e, 0xce, 0xf3, 0xff, 0xff, //0x0000174a jle LBB0_164 - //0x00001750 LBB0_262 - 0x0f, 0xb6, 0x10, //0x00001750 movzbl (%rax), %edx - 0x80, 0xfa, 0x5c, //0x00001753 cmpb $92, %dl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00001756 je LBB0_261 - 0x80, 0xfa, 0x22, //0x0000175c cmpb $34, %dl - 0x0f, 0x84, 0x2d, 0x04, 0x00, 0x00, //0x0000175f je LBB0_313 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001765 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x0000176c movl $1, %esi - 0x48, 0x01, 0xf0, //0x00001771 addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00001774 addq %rdx, %r14 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00001777 jg LBB0_262 - 0xe9, 0x9c, 0xf3, 0xff, 0xff, //0x0000177d jmp LBB0_164 - //0x00001782 LBB0_265 - 0x4d, 0x29, 0xea, //0x00001782 subq %r13, %r10 - 0x49, 0x01, 0xc2, //0x00001785 addq %rax, %r10 - 0xe9, 0x8e, 0xf3, 0xff, 0xff, //0x00001788 jmp LBB0_163 - //0x0000178d LBB0_266 - 0x48, 0xc7, 0x45, 0xb8, 0xff, 0xff, 0xff, 0xff, //0x0000178d movq $-1, $-72(%rbp) - 0x45, 0x31, 0xc9, //0x00001795 xorl %r9d, %r9d - 0x49, 0x89, 0xda, //0x00001798 movq %rbx, %r10 - 0x49, 0x83, 0xf8, 0x20, //0x0000179b cmpq $32, %r8 - 0x0f, 0x83, 0x09, 0xff, 0xff, 0xff, //0x0000179f jae LBB0_68 - 0xe9, 0x98, 0x04, 0x00, 0x00, //0x000017a5 jmp LBB0_321 - //0x000017aa LBB0_267 - 0x48, 0xc7, 0x85, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //0x000017aa movq $0, $-176(%rbp) - 0x49, 0x8d, 0x42, 0xff, //0x000017b5 leaq $-1(%r10), %rax - 0x4f, 0x8d, 0x04, 0x2a, //0x000017b9 leaq (%r10,%r13), %r8 - 0x49, 0x83, 0xc0, 0xff, //0x000017bd addq $-1, %r8 - 0x48, 0x8b, 0x4d, 0xd0, //0x000017c1 movq $-48(%rbp), %rcx - 0x4d, 0x8d, 0x1c, 0x0e, //0x000017c5 leaq (%r14,%rcx), %r11 - 0x48, 0x39, 0x85, 0x40, 0xff, 0xff, 0xff, //0x000017c9 cmpq %rax, $-192(%rbp) - 0x0f, 0x8d, 0xc8, 0x03, 0x00, 0x00, //0x000017d0 jge LBB0_299 - 0x48, 0x85, 0xc9, //0x000017d6 testq %rcx, %rcx - 0x0f, 0x8e, 0xbf, 0x03, 0x00, 0x00, //0x000017d9 jle LBB0_299 - 0x4c, 0x89, 0x45, 0xb8, //0x000017df movq %r8, $-72(%rbp) - //0x000017e3 LBB0_270 - 0x8a, 0x03, //0x000017e3 movb (%rbx), %al - 0x3c, 0x5c, //0x000017e5 cmpb $92, %al - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000017e7 jne LBB0_275 - 0x4c, 0x89, 0xc6, //0x000017ed movq %r8, %rsi - 0x48, 0x29, 0xde, //0x000017f0 subq %rbx, %rsi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000017f3 movq $-1, %rax - 0x48, 0x85, 0xf6, //0x000017fa testq %rsi, %rsi - 0x0f, 0x8e, 0x33, 0x3c, 0x00, 0x00, //0x000017fd jle LBB0_989 - 0x0f, 0xb6, 0x4b, 0x01, //0x00001803 movzbl $1(%rbx), %ecx - 0x48, 0x8d, 0x15, 0x42, 0x45, 0x00, 0x00, //0x00001807 leaq $17730(%rip), %rdx /* __UnquoteTab+0(%rip) */ - 0x8a, 0x0c, 0x11, //0x0000180e movb (%rcx,%rdx), %cl - 0x80, 0xf9, 0xff, //0x00001811 cmpb $-1, %cl - 0x0f, 0x84, 0x32, 0x00, 0x00, 0x00, //0x00001814 je LBB0_277 - 0x84, 0xc9, //0x0000181a testb %cl, %cl - 0x0f, 0x84, 0x00, 0x3c, 0x00, 0x00, //0x0000181c je LBB0_987 - 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001822 movb %cl, $-176(%rbp) - 0x48, 0x83, 0xc3, 0x02, //0x00001828 addq $2, %rbx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x0000182c movl $1, %esi - 0xe9, 0x3d, 0x01, 0x00, 0x00, //0x00001831 jmp LBB0_288 - //0x00001836 LBB0_275 - 0x41, 0x3a, 0x06, //0x00001836 cmpb (%r14), %al - 0x0f, 0x85, 0x8b, 0x03, 0x00, 0x00, //0x00001839 jne LBB0_315 - 0x48, 0x83, 0xc3, 0x01, //0x0000183f addq $1, %rbx - 0x49, 0x83, 0xc6, 0x01, //0x00001843 addq $1, %r14 - 0xe9, 0xa2, 0x01, 0x00, 0x00, //0x00001847 jmp LBB0_297 - //0x0000184c LBB0_277 - 0x48, 0x83, 0xfe, 0x04, //0x0000184c cmpq $4, %rsi - 0x0f, 0x8c, 0xdc, 0x3b, 0x00, 0x00, //0x00001850 jl LBB0_988 - 0x4c, 0x8d, 0x4b, 0x02, //0x00001856 leaq $2(%rbx), %r9 - 0x8b, 0x7b, 0x02, //0x0000185a movl $2(%rbx), %edi - 0x89, 0xf9, //0x0000185d movl %edi, %ecx - 0xf7, 0xd1, //0x0000185f notl %ecx - 0x8d, 0x97, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001861 leal $-808464432(%rdi), %edx - 0x81, 0xe1, 0x80, 0x80, 0x80, 0x80, //0x00001867 andl $-2139062144, %ecx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x0000186d movq $-2, %rax - 0x85, 0xd1, //0x00001874 testl %edx, %ecx - 0x0f, 0x85, 0x84, 0x3b, 0x00, 0x00, //0x00001876 jne LBB0_997 - 0x49, 0x89, 0xd8, //0x0000187c movq %rbx, %r8 - 0x4c, 0x89, 0x75, 0xa0, //0x0000187f movq %r14, $-96(%rbp) - 0x8d, 0x9f, 0x19, 0x19, 0x19, 0x19, //0x00001883 leal $421075225(%rdi), %ebx - 0x09, 0xfb, //0x00001889 orl %edi, %ebx - 0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x0000188b testl $-2139062144, %ebx - 0x0f, 0x85, 0x69, 0x3b, 0x00, 0x00, //0x00001891 jne LBB0_997 - 0x89, 0xfb, //0x00001897 movl %edi, %ebx - 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001899 andl $2139062143, %ebx - 0xba, 0xc0, 0xc0, 0xc0, 0xc0, //0x0000189f movl $-1061109568, %edx - 0x29, 0xda, //0x000018a4 subl %ebx, %edx - 0x44, 0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x000018a6 leal $1179010630(%rbx), %r14d - 0x21, 0xca, //0x000018ad andl %ecx, %edx - 0x44, 0x85, 0xf2, //0x000018af testl %r14d, %edx - 0x0f, 0x85, 0x48, 0x3b, 0x00, 0x00, //0x000018b2 jne LBB0_997 - 0xba, 0xe0, 0xe0, 0xe0, 0xe0, //0x000018b8 movl $-522133280, %edx - 0x29, 0xda, //0x000018bd subl %ebx, %edx - 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x000018bf addl $960051513, %ebx - 0x21, 0xd1, //0x000018c5 andl %edx, %ecx - 0x85, 0xd9, //0x000018c7 testl %ebx, %ecx - 0x4c, 0x8b, 0x75, 0xa0, //0x000018c9 movq $-96(%rbp), %r14 - 0x0f, 0x85, 0x66, 0x3b, 0x00, 0x00, //0x000018cd jne LBB0_990 - 0x4c, 0x89, 0xc2, //0x000018d3 movq %r8, %rdx - 0x0f, 0xcf, //0x000018d6 bswapl %edi - 0x89, 0xf8, //0x000018d8 movl %edi, %eax - 0xc1, 0xe8, 0x04, //0x000018da shrl $4, %eax - 0xf7, 0xd0, //0x000018dd notl %eax - 0x25, 0x01, 0x01, 0x01, 0x01, //0x000018df andl $16843009, %eax - 0x8d, 0x04, 0xc0, //0x000018e4 leal (%rax,%rax,8), %eax - 0x81, 0xe7, 0x0f, 0x0f, 0x0f, 0x0f, //0x000018e7 andl $252645135, %edi - 0x01, 0xc7, //0x000018ed addl %eax, %edi - 0x89, 0xf9, //0x000018ef movl %edi, %ecx - 0xc1, 0xe9, 0x04, //0x000018f1 shrl $4, %ecx - 0x09, 0xf9, //0x000018f4 orl %edi, %ecx - 0x89, 0xc8, //0x000018f6 movl %ecx, %eax - 0xc1, 0xe8, 0x08, //0x000018f8 shrl $8, %eax - 0x25, 0x00, 0xff, 0x00, 0x00, //0x000018fb andl $65280, %eax - 0x0f, 0xb6, 0xf9, //0x00001900 movzbl %cl, %edi - 0x09, 0xc7, //0x00001903 orl %eax, %edi - 0x4d, 0x8d, 0x48, 0x06, //0x00001905 leaq $6(%r8), %r9 - 0x83, 0xff, 0x7f, //0x00001909 cmpl $127, %edi - 0x0f, 0x86, 0xf3, 0x00, 0x00, 0x00, //0x0000190c jbe LBB0_301 - 0x81, 0xff, 0xff, 0x07, 0x00, 0x00, //0x00001912 cmpl $2047, %edi - 0x0f, 0x86, 0xf7, 0x00, 0x00, 0x00, //0x00001918 jbe LBB0_302 - 0x89, 0xca, //0x0000191e movl %ecx, %edx - 0x81, 0xe2, 0x00, 0x00, 0xf8, 0x00, //0x00001920 andl $16252928, %edx - 0x81, 0xfa, 0x00, 0x00, 0xd8, 0x00, //0x00001926 cmpl $14155776, %edx - 0x0f, 0x84, 0x09, 0x01, 0x00, 0x00, //0x0000192c je LBB0_303 - 0xc1, 0xe8, 0x0c, //0x00001932 shrl $12, %eax - 0x0c, 0xe0, //0x00001935 orb $-32, %al - 0x88, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00001937 movb %al, $-176(%rbp) - 0xc1, 0xef, 0x06, //0x0000193d shrl $6, %edi - 0x40, 0x80, 0xe7, 0x3f, //0x00001940 andb $63, %dil - 0x40, 0x80, 0xcf, 0x80, //0x00001944 orb $-128, %dil - 0x40, 0x88, 0xbd, 0x51, 0xff, 0xff, 0xff, //0x00001948 movb %dil, $-175(%rbp) - 0x80, 0xe1, 0x3f, //0x0000194f andb $63, %cl - 0x80, 0xc9, 0x80, //0x00001952 orb $-128, %cl - 0x88, 0x8d, 0x52, 0xff, 0xff, 0xff, //0x00001955 movb %cl, $-174(%rbp) - 0xbe, 0x03, 0x00, 0x00, 0x00, //0x0000195b movl $3, %esi - 0x89, 0xc1, //0x00001960 movl %eax, %ecx - //0x00001962 LBB0_286 - 0x4c, 0x89, 0xcb, //0x00001962 movq %r9, %rbx - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001965 movabsq $4294977024, %r9 - //0x0000196f LBB0_287 - 0x4c, 0x8b, 0x45, 0xb8, //0x0000196f movq $-72(%rbp), %r8 - //0x00001973 LBB0_288 - 0x48, 0x8d, 0x04, 0x2e, //0x00001973 leaq (%rsi,%rbp), %rax - 0x48, 0x05, 0x50, 0xff, 0xff, 0xff, //0x00001977 addq $-176, %rax - 0x4d, 0x39, 0xde, //0x0000197d cmpq %r11, %r14 - 0x0f, 0x83, 0x58, 0x00, 0x00, 0x00, //0x00001980 jae LBB0_295 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001986 leaq $-176(%rbp), %rdx - 0x48, 0x39, 0xd0, //0x0000198d cmpq %rdx, %rax - 0x0f, 0x86, 0x48, 0x00, 0x00, 0x00, //0x00001990 jbe LBB0_295 - 0x41, 0x38, 0x0e, //0x00001996 cmpb %cl, (%r14) - 0x0f, 0x85, 0x3f, 0x00, 0x00, 0x00, //0x00001999 jne LBB0_295 - 0x49, 0x83, 0xc6, 0x01, //0x0000199f addq $1, %r14 - 0x48, 0x8d, 0xb5, 0x51, 0xff, 0xff, 0xff, //0x000019a3 leaq $-175(%rbp), %rsi - 0x4c, 0x89, 0xf7, //0x000019aa movq %r14, %rdi - //0x000019ad LBB0_292 - 0x49, 0x89, 0xfe, //0x000019ad movq %rdi, %r14 - 0x48, 0x89, 0xf1, //0x000019b0 movq %rsi, %rcx - 0x4c, 0x39, 0xdf, //0x000019b3 cmpq %r11, %rdi - 0x0f, 0x83, 0x29, 0x00, 0x00, 0x00, //0x000019b6 jae LBB0_296 - 0x48, 0x39, 0xc1, //0x000019bc cmpq %rax, %rcx - 0x0f, 0x83, 0x20, 0x00, 0x00, 0x00, //0x000019bf jae LBB0_296 - 0x41, 0x0f, 0xb6, 0x16, //0x000019c5 movzbl (%r14), %edx - 0x49, 0x8d, 0x7e, 0x01, //0x000019c9 leaq $1(%r14), %rdi - 0x48, 0x8d, 0x71, 0x01, //0x000019cd leaq $1(%rcx), %rsi - 0x3a, 0x11, //0x000019d1 cmpb (%rcx), %dl - 0x0f, 0x84, 0xd4, 0xff, 0xff, 0xff, //0x000019d3 je LBB0_292 - 0xe9, 0x07, 0x00, 0x00, 0x00, //0x000019d9 jmp LBB0_296 - //0x000019de LBB0_295 - 0x48, 0x8d, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x000019de leaq $-176(%rbp), %rcx - //0x000019e5 LBB0_296 - 0x48, 0x39, 0xc1, //0x000019e5 cmpq %rax, %rcx - 0x0f, 0x85, 0xdc, 0x01, 0x00, 0x00, //0x000019e8 jne LBB0_315 - //0x000019ee LBB0_297 - 0x4c, 0x39, 0xc3, //0x000019ee cmpq %r8, %rbx - 0x0f, 0x83, 0xa7, 0x01, 0x00, 0x00, //0x000019f1 jae LBB0_299 - 0x4d, 0x39, 0xde, //0x000019f7 cmpq %r11, %r14 - 0x0f, 0x82, 0xe3, 0xfd, 0xff, 0xff, //0x000019fa jb LBB0_270 - 0xe9, 0x99, 0x01, 0x00, 0x00, //0x00001a00 jmp LBB0_299 - //0x00001a05 LBB0_301 - 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001a05 movb %cl, $-176(%rbp) - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001a0b movl $1, %esi - 0xe9, 0x4d, 0xff, 0xff, 0xff, //0x00001a10 jmp LBB0_286 - //0x00001a15 LBB0_302 - 0xc1, 0xef, 0x06, //0x00001a15 shrl $6, %edi - 0x40, 0x80, 0xcf, 0xc0, //0x00001a18 orb $-64, %dil - 0x40, 0x88, 0xbd, 0x50, 0xff, 0xff, 0xff, //0x00001a1c movb %dil, $-176(%rbp) - 0x80, 0xe1, 0x3f, //0x00001a23 andb $63, %cl - 0x80, 0xc9, 0x80, //0x00001a26 orb $-128, %cl - 0x88, 0x8d, 0x51, 0xff, 0xff, 0xff, //0x00001a29 movb %cl, $-175(%rbp) - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001a2f movl $2, %esi - 0x89, 0xf9, //0x00001a34 movl %edi, %ecx - 0xe9, 0x27, 0xff, 0xff, 0xff, //0x00001a36 jmp LBB0_286 - //0x00001a3b LBB0_303 - 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x00001a3b movq $-4, %rax - 0x48, 0x83, 0xfe, 0x06, //0x00001a42 cmpq $6, %rsi - 0x0f, 0x8c, 0xed, 0x39, 0x00, 0x00, //0x00001a46 jl LBB0_990 - 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x00001a4c cmpl $56319, %edi - 0x0f, 0x87, 0xe1, 0x39, 0x00, 0x00, //0x00001a52 ja LBB0_990 - 0x41, 0x80, 0x39, 0x5c, //0x00001a58 cmpb $92, (%r9) - 0x0f, 0x85, 0xd7, 0x39, 0x00, 0x00, //0x00001a5c jne LBB0_990 - 0x41, 0x80, 0x78, 0x07, 0x75, //0x00001a62 cmpb $117, $7(%r8) - 0x0f, 0x85, 0xcc, 0x39, 0x00, 0x00, //0x00001a67 jne LBB0_990 - 0x4c, 0x89, 0xc1, //0x00001a6d movq %r8, %rcx - 0x4d, 0x8d, 0x48, 0x08, //0x00001a70 leaq $8(%r8), %r9 - 0x41, 0x8b, 0x48, 0x08, //0x00001a74 movl $8(%r8), %ecx - 0x89, 0xce, //0x00001a78 movl %ecx, %esi - 0xf7, 0xd6, //0x00001a7a notl %esi - 0x8d, 0x91, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001a7c leal $-808464432(%rcx), %edx - 0x81, 0xe6, 0x80, 0x80, 0x80, 0x80, //0x00001a82 andl $-2139062144, %esi - 0x85, 0xd6, //0x00001a88 testl %edx, %esi - 0x0f, 0x85, 0x70, 0x39, 0x00, 0x00, //0x00001a8a jne LBB0_997 - 0x8d, 0x91, 0x19, 0x19, 0x19, 0x19, //0x00001a90 leal $421075225(%rcx), %edx - 0x09, 0xca, //0x00001a96 orl %ecx, %edx - 0xf7, 0xc2, 0x80, 0x80, 0x80, 0x80, //0x00001a98 testl $-2139062144, %edx - 0x0f, 0x85, 0x5c, 0x39, 0x00, 0x00, //0x00001a9e jne LBB0_997 - 0x89, 0xcb, //0x00001aa4 movl %ecx, %ebx - 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001aa6 andl $2139062143, %ebx - 0xba, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001aac movl $-1061109568, %edx - 0x29, 0xda, //0x00001ab1 subl %ebx, %edx - 0x44, 0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x00001ab3 leal $1179010630(%rbx), %r14d - 0x21, 0xf2, //0x00001aba andl %esi, %edx - 0x44, 0x85, 0xf2, //0x00001abc testl %r14d, %edx - 0x0f, 0x85, 0x3b, 0x39, 0x00, 0x00, //0x00001abf jne LBB0_997 - 0xba, 0xe0, 0xe0, 0xe0, 0xe0, //0x00001ac5 movl $-522133280, %edx - 0x29, 0xda, //0x00001aca subl %ebx, %edx - 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x00001acc addl $960051513, %ebx - 0x21, 0xd6, //0x00001ad2 andl %edx, %esi - 0x85, 0xde, //0x00001ad4 testl %ebx, %esi - 0x0f, 0x85, 0x24, 0x39, 0x00, 0x00, //0x00001ad6 jne LBB0_997 - 0x0f, 0xc9, //0x00001adc bswapl %ecx - 0x89, 0xca, //0x00001ade movl %ecx, %edx - 0xc1, 0xea, 0x04, //0x00001ae0 shrl $4, %edx - 0xf7, 0xd2, //0x00001ae3 notl %edx - 0x81, 0xe2, 0x01, 0x01, 0x01, 0x01, //0x00001ae5 andl $16843009, %edx - 0x8d, 0x14, 0xd2, //0x00001aeb leal (%rdx,%rdx,8), %edx - 0x81, 0xe1, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001aee andl $252645135, %ecx - 0x01, 0xd1, //0x00001af4 addl %edx, %ecx - 0x89, 0xce, //0x00001af6 movl %ecx, %esi - 0xc1, 0xee, 0x04, //0x00001af8 shrl $4, %esi - 0x09, 0xce, //0x00001afb orl %ecx, %esi - 0x89, 0xf1, //0x00001afd movl %esi, %ecx - 0x81, 0xe1, 0x00, 0x00, 0xfc, 0x00, //0x00001aff andl $16515072, %ecx - 0x81, 0xf9, 0x00, 0x00, 0xdc, 0x00, //0x00001b05 cmpl $14417920, %ecx - 0x0f, 0x85, 0x28, 0x39, 0x00, 0x00, //0x00001b0b jne LBB0_990 - 0x89, 0xf0, //0x00001b11 movl %esi, %eax - 0xc1, 0xe8, 0x08, //0x00001b13 shrl $8, %eax - 0x25, 0x00, 0xff, 0x00, 0x00, //0x00001b16 andl $65280, %eax - 0x40, 0x0f, 0xb6, 0xce, //0x00001b1b movzbl %sil, %ecx - 0x09, 0xc1, //0x00001b1f orl %eax, %ecx - 0xc1, 0xe7, 0x0a, //0x00001b21 shll $10, %edi - 0x8d, 0x04, 0x39, //0x00001b24 leal (%rcx,%rdi), %eax - 0x8d, 0x14, 0x0f, //0x00001b27 leal (%rdi,%rcx), %edx - 0x81, 0xc2, 0x00, 0x24, 0xa0, 0xfc, //0x00001b2a addl $-56613888, %edx - 0x89, 0xd1, //0x00001b30 movl %edx, %ecx - 0xc1, 0xe9, 0x12, //0x00001b32 shrl $18, %ecx - 0x80, 0xc9, 0xf0, //0x00001b35 orb $-16, %cl - 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001b38 movb %cl, $-176(%rbp) - 0x89, 0xd6, //0x00001b3e movl %edx, %esi - 0xc1, 0xee, 0x0c, //0x00001b40 shrl $12, %esi - 0x40, 0x80, 0xe6, 0x3f, //0x00001b43 andb $63, %sil - 0x40, 0x80, 0xce, 0x80, //0x00001b47 orb $-128, %sil - 0x40, 0x88, 0xb5, 0x51, 0xff, 0xff, 0xff, //0x00001b4b movb %sil, $-175(%rbp) - 0xc1, 0xea, 0x06, //0x00001b52 shrl $6, %edx - 0x80, 0xe2, 0x3f, //0x00001b55 andb $63, %dl - 0x80, 0xca, 0x80, //0x00001b58 orb $-128, %dl - 0x88, 0x95, 0x52, 0xff, 0xff, 0xff, //0x00001b5b movb %dl, $-174(%rbp) - 0x24, 0x3f, //0x00001b61 andb $63, %al - 0x0c, 0x80, //0x00001b63 orb $-128, %al - 0x88, 0x85, 0x53, 0xff, 0xff, 0xff, //0x00001b65 movb %al, $-173(%rbp) - 0x4c, 0x89, 0xc3, //0x00001b6b movq %r8, %rbx - 0x48, 0x83, 0xc3, 0x0c, //0x00001b6e addq $12, %rbx - 0xbe, 0x04, 0x00, 0x00, 0x00, //0x00001b72 movl $4, %esi - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001b77 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001b7b movq $-80(%rbp), %r12 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001b7f movabsq $4294977024, %r9 - 0x4c, 0x8b, 0x75, 0xa0, //0x00001b89 movq $-96(%rbp), %r14 - 0xe9, 0xdd, 0xfd, 0xff, 0xff, //0x00001b8d jmp LBB0_287 - //0x00001b92 LBB0_313 - 0x4c, 0x29, 0xe8, //0x00001b92 subq %r13, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001b95 addq $1, %rax - 0xe9, 0x50, 0xf6, 0xff, 0xff, //0x00001b99 jmp LBB0_231 - //0x00001b9e LBB0_299 - 0x4c, 0x31, 0xc3, //0x00001b9e xorq %r8, %rbx - 0x4d, 0x31, 0xde, //0x00001ba1 xorq %r11, %r14 - 0x31, 0xc9, //0x00001ba4 xorl %ecx, %ecx - 0x49, 0x09, 0xde, //0x00001ba6 orq %rbx, %r14 - 0x0f, 0x94, 0xc1, //0x00001ba9 sete %cl - //0x00001bac LBB0_300 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001bac movq $-56(%rbp), %r8 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001bb0 movq $-88(%rbp), %r11 - 0xe9, 0x48, 0xeb, 0xff, 0xff, //0x00001bb4 jmp LBB0_86 - //0x00001bb9 LBB0_314 - 0x4d, 0x01, 0xea, //0x00001bb9 addq %r13, %r10 - 0x48, 0x85, 0xd2, //0x00001bbc testq %rdx, %rdx - 0x0f, 0x85, 0xf3, 0xee, 0xff, 0xff, //0x00001bbf jne LBB0_155 - 0xe9, 0x24, 0xef, 0xff, 0xff, //0x00001bc5 jmp LBB0_161 - //0x00001bca LBB0_315 - 0x31, 0xc9, //0x00001bca xorl %ecx, %ecx - 0xe9, 0xdb, 0xff, 0xff, 0xff, //0x00001bcc jmp LBB0_300 - //0x00001bd1 LBB0_316 - 0x4b, 0x8d, 0x04, 0x2a, //0x00001bd1 leaq (%r10,%r13), %rax - 0xe9, 0xa3, 0xf1, 0xff, 0xff, //0x00001bd5 jmp LBB0_202 - //0x00001bda LBB0_317 - 0x48, 0x83, 0x7d, 0xb8, 0xff, //0x00001bda cmpq $-1, $-72(%rbp) - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00001bdf jne LBB0_319 - 0x4c, 0x89, 0xd1, //0x00001be5 movq %r10, %rcx - 0x4c, 0x29, 0xe9, //0x00001be8 subq %r13, %rcx - 0x48, 0x0f, 0xbc, 0xd6, //0x00001beb bsfq %rsi, %rdx - 0x48, 0x01, 0xca, //0x00001bef addq %rcx, %rdx - 0x48, 0x89, 0x55, 0xb8, //0x00001bf2 movq %rdx, $-72(%rbp) - //0x00001bf6 LBB0_319 - 0x44, 0x89, 0xc9, //0x00001bf6 movl %r9d, %ecx - 0xf7, 0xd1, //0x00001bf9 notl %ecx - 0x21, 0xf1, //0x00001bfb andl %esi, %ecx - 0x41, 0x8d, 0x14, 0x49, //0x00001bfd leal (%r9,%rcx,2), %edx - 0x8d, 0x1c, 0x09, //0x00001c01 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00001c04 notl %ebx - 0x21, 0xf3, //0x00001c06 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001c08 andl $-1431655766, %ebx - 0x45, 0x31, 0xc9, //0x00001c0e xorl %r9d, %r9d - 0x01, 0xcb, //0x00001c11 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc1, //0x00001c13 setb %r9b - 0x01, 0xdb, //0x00001c17 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00001c19 xorl $1431655765, %ebx - 0x21, 0xd3, //0x00001c1f andl %edx, %ebx - 0xf7, 0xd3, //0x00001c21 notl %ebx - 0x21, 0xdf, //0x00001c23 andl %ebx, %edi - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001c25 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001c29 movq $-80(%rbp), %r12 - 0x48, 0x8b, 0x5d, 0x90, //0x00001c2d movq $-112(%rbp), %rbx - 0x48, 0x85, 0xff, //0x00001c31 testq %rdi, %rdi - 0x0f, 0x85, 0xd0, 0xfa, 0xff, 0xff, //0x00001c34 jne LBB0_71 - //0x00001c3a LBB0_320 - 0x49, 0x83, 0xc2, 0x20, //0x00001c3a addq $32, %r10 - 0x49, 0x83, 0xc0, 0xe0, //0x00001c3e addq $-32, %r8 - //0x00001c42 LBB0_321 - 0x4d, 0x85, 0xc9, //0x00001c42 testq %r9, %r9 - 0x0f, 0x85, 0xe8, 0x00, 0x00, 0x00, //0x00001c45 jne LBB0_335 - 0x4c, 0x89, 0xef, //0x00001c4b movq %r13, %rdi - 0x48, 0xf7, 0xd7, //0x00001c4e notq %rdi - 0x4c, 0x8b, 0x4d, 0xb8, //0x00001c51 movq $-72(%rbp), %r9 - 0x4d, 0x85, 0xc0, //0x00001c55 testq %r8, %r8 - 0x0f, 0x84, 0x93, 0x00, 0x00, 0x00, //0x00001c58 je LBB0_333 - //0x00001c5e LBB0_323 - 0x48, 0x83, 0xc7, 0x01, //0x00001c5e addq $1, %rdi - //0x00001c62 LBB0_324 - 0x31, 0xf6, //0x00001c62 xorl %esi, %esi - //0x00001c64 LBB0_325 - 0x41, 0x0f, 0xb6, 0x0c, 0x32, //0x00001c64 movzbl (%r10,%rsi), %ecx - 0x80, 0xf9, 0x22, //0x00001c69 cmpb $34, %cl - 0x0f, 0x84, 0x78, 0x00, 0x00, 0x00, //0x00001c6c je LBB0_332 - 0x80, 0xf9, 0x5c, //0x00001c72 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001c75 je LBB0_330 - 0x48, 0x83, 0xc6, 0x01, //0x00001c7b addq $1, %rsi - 0x49, 0x39, 0xf0, //0x00001c7f cmpq %rsi, %r8 - 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00001c82 jne LBB0_325 - 0xe9, 0x87, 0x00, 0x00, 0x00, //0x00001c88 jmp LBB0_328 - //0x00001c8d LBB0_330 - 0x49, 0x8d, 0x48, 0xff, //0x00001c8d leaq $-1(%r8), %rcx - 0x48, 0x39, 0xf1, //0x00001c91 cmpq %rsi, %rcx - 0x0f, 0x84, 0x0e, 0x36, 0x00, 0x00, //0x00001c94 je LBB0_967 - 0x4c, 0x89, 0xf3, //0x00001c9a movq %r14, %rbx - 0x4a, 0x8d, 0x0c, 0x17, //0x00001c9d leaq (%rdi,%r10), %rcx - 0x48, 0x01, 0xf1, //0x00001ca1 addq %rsi, %rcx - 0x49, 0x83, 0xf9, 0xff, //0x00001ca4 cmpq $-1, %r9 - 0x48, 0x8b, 0x55, 0xb8, //0x00001ca8 movq $-72(%rbp), %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00001cac cmoveq %rcx, %rdx - 0x48, 0x89, 0x55, 0xb8, //0x00001cb0 movq %rdx, $-72(%rbp) - 0x4c, 0x0f, 0x44, 0xc9, //0x00001cb4 cmoveq %rcx, %r9 - 0x49, 0x01, 0xf2, //0x00001cb8 addq %rsi, %r10 - 0x49, 0x83, 0xc2, 0x02, //0x00001cbb addq $2, %r10 - 0x4c, 0x89, 0xc1, //0x00001cbf movq %r8, %rcx - 0x48, 0x29, 0xf1, //0x00001cc2 subq %rsi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x00001cc5 addq $-2, %rcx - 0x49, 0x83, 0xc0, 0xfe, //0x00001cc9 addq $-2, %r8 - 0x49, 0x39, 0xf0, //0x00001ccd cmpq %rsi, %r8 - 0x49, 0x89, 0xc8, //0x00001cd0 movq %rcx, %r8 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001cd3 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001cd7 movq $-80(%rbp), %r12 - 0x48, 0x8b, 0x5d, 0x90, //0x00001cdb movq $-112(%rbp), %rbx - 0x0f, 0x85, 0x7d, 0xff, 0xff, 0xff, //0x00001cdf jne LBB0_324 - 0xe9, 0xbe, 0x35, 0x00, 0x00, //0x00001ce5 jmp LBB0_967 - //0x00001cea LBB0_332 - 0x49, 0x01, 0xf2, //0x00001cea addq %rsi, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00001ced addq $1, %r10 - //0x00001cf1 LBB0_333 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001cf1 movabsq $4294977024, %r9 - 0x48, 0x8b, 0x4d, 0xb8, //0x00001cfb movq $-72(%rbp), %rcx - //0x00001cff LBB0_334 - 0x4d, 0x29, 0xea, //0x00001cff subq %r13, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001d02 movq $-56(%rbp), %r8 - 0x4d, 0x85, 0xd2, //0x00001d06 testq %r10, %r10 - 0x0f, 0x89, 0x77, 0xe9, 0xff, 0xff, //0x00001d09 jns LBB0_78 - 0xe9, 0x98, 0x35, 0x00, 0x00, //0x00001d0f jmp LBB0_968 - //0x00001d14 LBB0_328 - 0x80, 0xf9, 0x22, //0x00001d14 cmpb $34, %cl - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001d17 movabsq $4294977024, %r9 - 0x48, 0x8b, 0x4d, 0xb8, //0x00001d21 movq $-72(%rbp), %rcx - 0x0f, 0x85, 0x7d, 0x35, 0x00, 0x00, //0x00001d25 jne LBB0_967 - 0x4d, 0x01, 0xc2, //0x00001d2b addq %r8, %r10 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x00001d2e jmp LBB0_334 - //0x00001d33 LBB0_335 - 0x4d, 0x85, 0xc0, //0x00001d33 testq %r8, %r8 - 0x0f, 0x84, 0x6c, 0x35, 0x00, 0x00, //0x00001d36 je LBB0_967 - 0x48, 0x89, 0xde, //0x00001d3c movq %rbx, %rsi - 0x4c, 0x89, 0xf3, //0x00001d3f movq %r14, %rbx - 0x4c, 0x89, 0xef, //0x00001d42 movq %r13, %rdi - 0x48, 0xf7, 0xd7, //0x00001d45 notq %rdi - 0x49, 0x8d, 0x0c, 0x3a, //0x00001d48 leaq (%r10,%rdi), %rcx - 0x48, 0x8b, 0x55, 0xb8, //0x00001d4c movq $-72(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00001d50 cmpq $-1, %rdx - 0x49, 0x89, 0xd1, //0x00001d54 movq %rdx, %r9 - 0x48, 0x0f, 0x44, 0xd1, //0x00001d57 cmoveq %rcx, %rdx - 0x4c, 0x0f, 0x44, 0xc9, //0x00001d5b cmoveq %rcx, %r9 - 0x49, 0x83, 0xc2, 0x01, //0x00001d5f addq $1, %r10 - 0x49, 0x83, 0xc0, 0xff, //0x00001d63 addq $-1, %r8 - 0x48, 0x89, 0x55, 0xb8, //0x00001d67 movq %rdx, $-72(%rbp) - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001d6b movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001d6f movq $-80(%rbp), %r12 - 0x48, 0x89, 0xf3, //0x00001d73 movq %rsi, %rbx - 0x4d, 0x85, 0xc0, //0x00001d76 testq %r8, %r8 - 0x0f, 0x85, 0xdf, 0xfe, 0xff, 0xff, //0x00001d79 jne LBB0_323 - 0xe9, 0x6d, 0xff, 0xff, 0xff, //0x00001d7f jmp LBB0_333 - //0x00001d84 LBB0_337 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001d84 movq $-64(%rbp), %r15 - 0x4d, 0x8b, 0x17, //0x00001d88 movq (%r15), %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001d8b movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00001d8f movq %r10, (%r8) - //0x00001d92 LBB0_338 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001d92 movq $-80(%rbp), %r12 - 0xe9, 0xdf, 0xf8, 0xff, 0xff, //0x00001d96 jmp LBB0_260 - //0x00001d9b LBB0_339 - 0x49, 0x8d, 0x40, 0xff, //0x00001d9b leaq $-1(%r8), %rax - 0x4c, 0x39, 0xf0, //0x00001d9f cmpq %r14, %rax - 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x00001da2 jne LBB0_341 - 0x4c, 0x8b, 0x45, 0xc8, //0x00001da8 movq $-56(%rbp), %r8 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001dac movq $-64(%rbp), %r15 - 0xe9, 0xdd, 0xff, 0xff, 0xff, //0x00001db0 jmp LBB0_338 - //0x00001db5 LBB0_341 - 0x4b, 0x8d, 0x04, 0x0e, //0x00001db5 leaq (%r14,%r9), %rax - 0x48, 0x83, 0xc0, 0x02, //0x00001db9 addq $2, %rax - 0x4d, 0x29, 0xf0, //0x00001dbd subq %r14, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00001dc0 addq $-2, %r8 - 0x4d, 0x89, 0xc6, //0x00001dc4 movq %r8, %r14 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00001dc7 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x00001dcb movq $-80(%rbp), %r12 - 0xe9, 0xad, 0xef, 0xff, 0xff, //0x00001dcf jmp LBB0_203 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dd4 .p2align 4, 0x90 - //0x00001de0 LBB0_342 - 0x80, 0xf9, 0x5b, //0x00001de0 cmpb $91, %cl - 0x0f, 0x85, 0x5a, 0x28, 0x00, 0x00, //0x00001de3 jne LBB0_868 - 0x49, 0x8b, 0x43, 0x08, //0x00001de9 movq $8(%r11), %rax - 0x4c, 0x8b, 0x30, //0x00001ded movq (%rax), %r14 - 0x4d, 0x85, 0xf6, //0x00001df0 testq %r14, %r14 - 0x0f, 0x88, 0x0a, 0x28, 0x00, 0x00, //0x00001df3 js LBB0_861 - 0x49, 0x8b, 0x0f, //0x00001df9 movq (%r15), %rcx - 0x49, 0x39, 0xca, //0x00001dfc cmpq %rcx, %r10 - 0x0f, 0x83, 0x2b, 0x00, 0x00, 0x00, //0x00001dff jae LBB0_349 - 0x43, 0x8a, 0x44, 0x15, 0x00, //0x00001e05 movb (%r13,%r10), %al - 0x3c, 0x0d, //0x00001e0a cmpb $13, %al - 0x0f, 0x84, 0x1e, 0x00, 0x00, 0x00, //0x00001e0c je LBB0_349 - 0x3c, 0x20, //0x00001e12 cmpb $32, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001e14 je LBB0_349 - 0x04, 0xf7, //0x00001e1a addb $-9, %al - 0x3c, 0x01, //0x00001e1c cmpb $1, %al - 0x0f, 0x86, 0x0c, 0x00, 0x00, 0x00, //0x00001e1e jbe LBB0_349 - 0x4c, 0x89, 0xd2, //0x00001e24 movq %r10, %rdx - 0xe9, 0xfc, 0x00, 0x00, 0x00, //0x00001e27 jmp LBB0_371 - 0x90, 0x90, 0x90, 0x90, //0x00001e2c .p2align 4, 0x90 - //0x00001e30 LBB0_349 - 0x49, 0x8d, 0x52, 0x01, //0x00001e30 leaq $1(%r10), %rdx - 0x48, 0x39, 0xca, //0x00001e34 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001e37 jae LBB0_353 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001e3d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00001e42 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001e44 je LBB0_353 - 0x3c, 0x20, //0x00001e4a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001e4c je LBB0_353 - 0x04, 0xf7, //0x00001e52 addb $-9, %al - 0x3c, 0x01, //0x00001e54 cmpb $1, %al - 0x0f, 0x87, 0xcc, 0x00, 0x00, 0x00, //0x00001e56 ja LBB0_371 - 0x90, 0x90, 0x90, 0x90, //0x00001e5c .p2align 4, 0x90 - //0x00001e60 LBB0_353 - 0x49, 0x8d, 0x52, 0x02, //0x00001e60 leaq $2(%r10), %rdx - 0x48, 0x39, 0xca, //0x00001e64 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001e67 jae LBB0_357 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001e6d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00001e72 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001e74 je LBB0_357 - 0x3c, 0x20, //0x00001e7a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001e7c je LBB0_357 - 0x04, 0xf7, //0x00001e82 addb $-9, %al - 0x3c, 0x01, //0x00001e84 cmpb $1, %al - 0x0f, 0x87, 0x9c, 0x00, 0x00, 0x00, //0x00001e86 ja LBB0_371 - 0x90, 0x90, 0x90, 0x90, //0x00001e8c .p2align 4, 0x90 - //0x00001e90 LBB0_357 - 0x49, 0x8d, 0x52, 0x03, //0x00001e90 leaq $3(%r10), %rdx - 0x48, 0x39, 0xca, //0x00001e94 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001e97 jae LBB0_361 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001e9d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00001ea2 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001ea4 je LBB0_361 - 0x3c, 0x20, //0x00001eaa cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001eac je LBB0_361 - 0x04, 0xf7, //0x00001eb2 addb $-9, %al - 0x3c, 0x01, //0x00001eb4 cmpb $1, %al - 0x0f, 0x87, 0x6c, 0x00, 0x00, 0x00, //0x00001eb6 ja LBB0_371 - 0x90, 0x90, 0x90, 0x90, //0x00001ebc .p2align 4, 0x90 - //0x00001ec0 LBB0_361 - 0x49, 0x8d, 0x52, 0x04, //0x00001ec0 leaq $4(%r10), %rdx - 0x48, 0x39, 0xd1, //0x00001ec4 cmpq %rdx, %rcx - 0x0f, 0x86, 0x3e, 0x00, 0x00, 0x00, //0x00001ec7 jbe LBB0_367 - 0x48, 0x39, 0xd1, //0x00001ecd cmpq %rdx, %rcx - 0x0f, 0x84, 0x3d, 0x00, 0x00, 0x00, //0x00001ed0 je LBB0_368 - 0x4a, 0x8d, 0x04, 0x29, //0x00001ed6 leaq (%rcx,%r13), %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001eda .p2align 4, 0x90 - //0x00001ee0 LBB0_364 - 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00001ee0 movsbl (%r13,%rdx), %esi - 0x83, 0xfe, 0x20, //0x00001ee6 cmpl $32, %esi - 0x0f, 0x87, 0x30, 0x00, 0x00, 0x00, //0x00001ee9 ja LBB0_370 - 0x49, 0x0f, 0xa3, 0xf1, //0x00001eef btq %rsi, %r9 - 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x00001ef3 jae LBB0_370 - 0x48, 0x83, 0xc2, 0x01, //0x00001ef9 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x00001efd cmpq %rdx, %rcx - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00001f00 jne LBB0_364 - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00001f06 jmp LBB0_369 - //0x00001f0b LBB0_367 - 0x49, 0x89, 0xd2, //0x00001f0b movq %rdx, %r10 - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00001f0e jmp LBB0_372 - //0x00001f13 LBB0_368 - 0x4c, 0x01, 0xea, //0x00001f13 addq %r13, %rdx - 0x48, 0x89, 0xd0, //0x00001f16 movq %rdx, %rax - //0x00001f19 LBB0_369 - 0x4c, 0x29, 0xe8, //0x00001f19 subq %r13, %rax - 0x48, 0x89, 0xc2, //0x00001f1c movq %rax, %rdx - //0x00001f1f LBB0_370 - 0x48, 0x39, 0xca, //0x00001f1f cmpq %rcx, %rdx - 0x0f, 0x83, 0x13, 0x00, 0x00, 0x00, //0x00001f22 jae LBB0_372 - //0x00001f28 LBB0_371 - 0x4c, 0x8d, 0x52, 0x01, //0x00001f28 leaq $1(%rdx), %r10 - 0x4d, 0x89, 0x10, //0x00001f2c movq %r10, (%r8) - 0x41, 0x80, 0x7c, 0x15, 0x00, 0x5d, //0x00001f2f cmpb $93, (%r13,%rdx) - 0x0f, 0x84, 0xba, 0x10, 0x00, 0x00, //0x00001f35 je LBB0_551 - //0x00001f3b LBB0_372 - 0x49, 0x83, 0xc2, 0xff, //0x00001f3b addq $-1, %r10 - 0x4d, 0x89, 0x10, //0x00001f3f movq %r10, (%r8) - 0x4d, 0x85, 0xf6, //0x00001f42 testq %r14, %r14 - 0x0f, 0x8e, 0x95, 0x0e, 0x00, 0x00, //0x00001f45 jle LBB0_458 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f4b .p2align 4, 0x90 - //0x00001f50 LBB0_373 - 0x49, 0x8b, 0x17, //0x00001f50 movq (%r15), %rdx - 0x49, 0x39, 0xd2, //0x00001f53 cmpq %rdx, %r10 - 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001f56 jae LBB0_378 - 0x43, 0x8a, 0x44, 0x15, 0x00, //0x00001f5c movb (%r13,%r10), %al - 0x3c, 0x0d, //0x00001f61 cmpb $13, %al - 0x0f, 0x84, 0x27, 0x00, 0x00, 0x00, //0x00001f63 je LBB0_378 - 0x3c, 0x20, //0x00001f69 cmpb $32, %al - 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x00001f6b je LBB0_378 - 0x04, 0xf7, //0x00001f71 addb $-9, %al - 0x3c, 0x01, //0x00001f73 cmpb $1, %al - 0x0f, 0x86, 0x15, 0x00, 0x00, 0x00, //0x00001f75 jbe LBB0_378 - 0x4c, 0x89, 0xd1, //0x00001f7b movq %r10, %rcx - 0xe9, 0xfd, 0x00, 0x00, 0x00, //0x00001f7e jmp LBB0_399 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f83 .p2align 4, 0x90 - //0x00001f90 LBB0_378 - 0x49, 0x8d, 0x4a, 0x01, //0x00001f90 leaq $1(%r10), %rcx - 0x48, 0x39, 0xd1, //0x00001f94 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001f97 jae LBB0_382 - 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00001f9d movb (%r13,%rcx), %al - 0x3c, 0x0d, //0x00001fa2 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001fa4 je LBB0_382 - 0x3c, 0x20, //0x00001faa cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001fac je LBB0_382 - 0x04, 0xf7, //0x00001fb2 addb $-9, %al - 0x3c, 0x01, //0x00001fb4 cmpb $1, %al - 0x0f, 0x87, 0xc4, 0x00, 0x00, 0x00, //0x00001fb6 ja LBB0_399 - 0x90, 0x90, 0x90, 0x90, //0x00001fbc .p2align 4, 0x90 - //0x00001fc0 LBB0_382 - 0x49, 0x8d, 0x4a, 0x02, //0x00001fc0 leaq $2(%r10), %rcx - 0x48, 0x39, 0xd1, //0x00001fc4 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001fc7 jae LBB0_386 - 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00001fcd movb (%r13,%rcx), %al - 0x3c, 0x0d, //0x00001fd2 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001fd4 je LBB0_386 - 0x3c, 0x20, //0x00001fda cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001fdc je LBB0_386 - 0x04, 0xf7, //0x00001fe2 addb $-9, %al - 0x3c, 0x01, //0x00001fe4 cmpb $1, %al - 0x0f, 0x87, 0x94, 0x00, 0x00, 0x00, //0x00001fe6 ja LBB0_399 - 0x90, 0x90, 0x90, 0x90, //0x00001fec .p2align 4, 0x90 - //0x00001ff0 LBB0_386 - 0x49, 0x8d, 0x4a, 0x03, //0x00001ff0 leaq $3(%r10), %rcx - 0x48, 0x39, 0xd1, //0x00001ff4 cmpq %rdx, %rcx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001ff7 jae LBB0_390 - 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00001ffd movb (%r13,%rcx), %al - 0x3c, 0x0d, //0x00002002 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002004 je LBB0_390 - 0x3c, 0x20, //0x0000200a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000200c je LBB0_390 - 0x04, 0xf7, //0x00002012 addb $-9, %al - 0x3c, 0x01, //0x00002014 cmpb $1, %al - 0x0f, 0x87, 0x64, 0x00, 0x00, 0x00, //0x00002016 ja LBB0_399 - 0x90, 0x90, 0x90, 0x90, //0x0000201c .p2align 4, 0x90 - //0x00002020 LBB0_390 - 0x49, 0x8d, 0x4a, 0x04, //0x00002020 leaq $4(%r10), %rcx - 0x48, 0x39, 0xca, //0x00002024 cmpq %rcx, %rdx - 0x0f, 0x86, 0xa3, 0x02, 0x00, 0x00, //0x00002027 jbe LBB0_429 - 0x48, 0x39, 0xca, //0x0000202d cmpq %rcx, %rdx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00002030 je LBB0_396 - 0x4a, 0x8d, 0x04, 0x2a, //0x00002036 leaq (%rdx,%r13), %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000203a .p2align 4, 0x90 - //0x00002040 LBB0_393 - 0x41, 0x0f, 0xbe, 0x74, 0x0d, 0x00, //0x00002040 movsbl (%r13,%rcx), %esi - 0x83, 0xfe, 0x20, //0x00002046 cmpl $32, %esi - 0x0f, 0x87, 0x28, 0x00, 0x00, 0x00, //0x00002049 ja LBB0_398 - 0x49, 0x0f, 0xa3, 0xf1, //0x0000204f btq %rsi, %r9 - 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002053 jae LBB0_398 - 0x48, 0x83, 0xc1, 0x01, //0x00002059 addq $1, %rcx - 0x48, 0x39, 0xca, //0x0000205d cmpq %rcx, %rdx - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00002060 jne LBB0_393 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00002066 jmp LBB0_397 - //0x0000206b LBB0_396 - 0x4c, 0x01, 0xe9, //0x0000206b addq %r13, %rcx - 0x48, 0x89, 0xc8, //0x0000206e movq %rcx, %rax - //0x00002071 LBB0_397 - 0x4c, 0x29, 0xe8, //0x00002071 subq %r13, %rax - 0x48, 0x89, 0xc1, //0x00002074 movq %rax, %rcx - //0x00002077 LBB0_398 - 0x48, 0x39, 0xd1, //0x00002077 cmpq %rdx, %rcx - 0x0f, 0x83, 0x56, 0x02, 0x00, 0x00, //0x0000207a jae LBB0_430 - //0x00002080 LBB0_399 - 0x4c, 0x8d, 0x51, 0x01, //0x00002080 leaq $1(%rcx), %r10 - 0x4d, 0x89, 0x10, //0x00002084 movq %r10, (%r8) - 0x41, 0x0f, 0xbe, 0x44, 0x0d, 0x00, //0x00002087 movsbl (%r13,%rcx), %eax - 0x83, 0xf8, 0x7b, //0x0000208d cmpl $123, %eax - 0x0f, 0x87, 0x3a, 0x02, 0x00, 0x00, //0x00002090 ja LBB0_429 - 0x48, 0x8d, 0x15, 0xfb, 0x33, 0x00, 0x00, //0x00002096 leaq $13307(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x04, 0x82, //0x0000209d movslq (%rdx,%rax,4), %rax - 0x48, 0x01, 0xd0, //0x000020a1 addq %rdx, %rax - 0xff, 0xe0, //0x000020a4 jmpq *%rax - //0x000020a6 LBB0_401 - 0x49, 0x8b, 0x07, //0x000020a6 movq (%r15), %rax - 0x48, 0x89, 0xc2, //0x000020a9 movq %rax, %rdx - 0x4c, 0x29, 0xd2, //0x000020ac subq %r10, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x000020af cmpq $16, %rdx - 0x0f, 0x82, 0xcd, 0x0c, 0x00, 0x00, //0x000020b3 jb LBB0_520 - 0x48, 0x89, 0xca, //0x000020b9 movq %rcx, %rdx - 0x48, 0xf7, 0xd2, //0x000020bc notq %rdx - 0x48, 0x83, 0xc1, 0x01, //0x000020bf addq $1, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000020c3 .p2align 4, 0x90 - //0x000020d0 LBB0_403 - 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x0d, 0x00, //0x000020d0 movdqu (%r13,%rcx), %xmm2 - 0x66, 0x0f, 0x6f, 0xda, //0x000020d7 movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x000020db pcmpeqb %xmm13, %xmm3 - 0x66, 0x41, 0x0f, 0xdb, 0xd6, //0x000020e0 pand %xmm14, %xmm2 - 0x66, 0x0f, 0x74, 0xd4, //0x000020e5 pcmpeqb %xmm4, %xmm2 - 0x66, 0x0f, 0xeb, 0xd3, //0x000020e9 por %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x000020ed pmovmskb %xmm2, %esi - 0x85, 0xf6, //0x000020f1 testl %esi, %esi - 0x0f, 0x85, 0x87, 0x00, 0x00, 0x00, //0x000020f3 jne LBB0_413 - 0x48, 0x83, 0xc1, 0x10, //0x000020f9 addq $16, %rcx - 0x48, 0x8d, 0x34, 0x10, //0x000020fd leaq (%rax,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xf0, //0x00002101 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00002105 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00002109 cmpq $15, %rsi - 0x0f, 0x87, 0xbd, 0xff, 0xff, 0xff, //0x0000210d ja LBB0_403 - 0x4d, 0x89, 0xea, //0x00002113 movq %r13, %r10 - 0x49, 0x29, 0xd2, //0x00002116 subq %rdx, %r10 - 0x48, 0x01, 0xd0, //0x00002119 addq %rdx, %rax - 0x48, 0x89, 0xc2, //0x0000211c movq %rax, %rdx - 0x48, 0x85, 0xd2, //0x0000211f testq %rdx, %rdx - 0x0f, 0x84, 0x36, 0x00, 0x00, 0x00, //0x00002122 je LBB0_412 - //0x00002128 LBB0_406 - 0x49, 0x8d, 0x0c, 0x12, //0x00002128 leaq (%r10,%rdx), %rcx - 0x31, 0xc0, //0x0000212c xorl %eax, %eax - //0x0000212e LBB0_407 - 0x41, 0x0f, 0xb6, 0x1c, 0x02, //0x0000212e movzbl (%r10,%rax), %ebx - 0x80, 0xfb, 0x2c, //0x00002133 cmpb $44, %bl - 0x0f, 0x84, 0x9d, 0x0b, 0x00, 0x00, //0x00002136 je LBB0_518 - 0x80, 0xfb, 0x7d, //0x0000213c cmpb $125, %bl - 0x0f, 0x84, 0x94, 0x0b, 0x00, 0x00, //0x0000213f je LBB0_518 - 0x80, 0xfb, 0x5d, //0x00002145 cmpb $93, %bl - 0x0f, 0x84, 0x8b, 0x0b, 0x00, 0x00, //0x00002148 je LBB0_518 - 0x48, 0x83, 0xc0, 0x01, //0x0000214e addq $1, %rax - 0x48, 0x39, 0xc2, //0x00002152 cmpq %rax, %rdx - 0x0f, 0x85, 0xd3, 0xff, 0xff, 0xff, //0x00002155 jne LBB0_407 - 0x49, 0x89, 0xca, //0x0000215b movq %rcx, %r10 - //0x0000215e LBB0_412 - 0x4d, 0x29, 0xea, //0x0000215e subq %r13, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00002161 movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00002165 movq %r10, (%r8) - 0x4c, 0x8b, 0x7d, 0xc0, //0x00002168 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x65, 0xb0, //0x0000216c movq $-80(%rbp), %r12 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002170 movabsq $4294977024, %r9 - 0xe9, 0x57, 0x01, 0x00, 0x00, //0x0000217a jmp LBB0_430 - 0x90, //0x0000217f .p2align 4, 0x90 - //0x00002180 LBB0_413 - 0x66, 0x0f, 0xbc, 0xc6, //0x00002180 bsfw %si, %ax - 0x44, 0x0f, 0xb7, 0xd0, //0x00002184 movzwl %ax, %r10d - 0x49, 0x29, 0xd2, //0x00002188 subq %rdx, %r10 - 0x4d, 0x89, 0x10, //0x0000218b movq %r10, (%r8) - 0xe9, 0x43, 0x01, 0x00, 0x00, //0x0000218e jmp LBB0_430 - //0x00002193 LBB0_414 - 0x48, 0x83, 0xc1, 0x04, //0x00002193 addq $4, %rcx - 0x49, 0x3b, 0x0f, //0x00002197 cmpq (%r15), %rcx - 0x0f, 0x86, 0x30, 0x01, 0x00, 0x00, //0x0000219a jbe LBB0_429 - 0xe9, 0x31, 0x01, 0x00, 0x00, //0x000021a0 jmp LBB0_430 - //0x000021a5 LBB0_415 - 0x4c, 0x89, 0x5d, 0xa8, //0x000021a5 movq %r11, $-88(%rbp) - 0x4d, 0x8b, 0x07, //0x000021a9 movq (%r15), %r8 - 0x4d, 0x89, 0xc7, //0x000021ac movq %r8, %r15 - 0x4d, 0x29, 0xd7, //0x000021af subq %r10, %r15 - 0x49, 0x83, 0xff, 0x20, //0x000021b2 cmpq $32, %r15 - 0x0f, 0x8c, 0xdb, 0x0b, 0x00, 0x00, //0x000021b6 jl LBB0_521 - 0x4e, 0x8d, 0x0c, 0x29, //0x000021bc leaq (%rcx,%r13), %r9 - 0x49, 0x29, 0xc8, //0x000021c0 subq %rcx, %r8 - 0x41, 0xbc, 0x1f, 0x00, 0x00, 0x00, //0x000021c3 movl $31, %r12d - 0x45, 0x31, 0xff, //0x000021c9 xorl %r15d, %r15d - 0x45, 0x31, 0xdb, //0x000021cc xorl %r11d, %r11d - 0xe9, 0x32, 0x00, 0x00, 0x00, //0x000021cf jmp LBB0_417 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021d4 .p2align 4, 0x90 - //0x000021e0 LBB0_422 - 0x45, 0x31, 0xdb, //0x000021e0 xorl %r11d, %r11d - 0x48, 0x85, 0xf6, //0x000021e3 testq %rsi, %rsi - 0x0f, 0x85, 0xa3, 0x00, 0x00, 0x00, //0x000021e6 jne LBB0_419 - //0x000021ec LBB0_423 - 0x49, 0x83, 0xc7, 0x20, //0x000021ec addq $32, %r15 - 0x4b, 0x8d, 0x04, 0x20, //0x000021f0 leaq (%r8,%r12), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x000021f4 addq $-32, %rax - 0x49, 0x83, 0xc4, 0xe0, //0x000021f8 addq $-32, %r12 - 0x48, 0x83, 0xf8, 0x3f, //0x000021fc cmpq $63, %rax - 0x0f, 0x8e, 0xe1, 0x0a, 0x00, 0x00, //0x00002200 jle LBB0_424 - //0x00002206 LBB0_417 - 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x39, 0x01, //0x00002206 movdqu $1(%r9,%r15), %xmm2 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x39, 0x11, //0x0000220d movdqu $17(%r9,%r15), %xmm3 - 0x66, 0x0f, 0x6f, 0xea, //0x00002214 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002218 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x0000221c pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002220 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002224 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002228 pmovmskb %xmm5, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x0000222c shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x00002230 orq %rdi, %rsi - 0x66, 0x0f, 0x74, 0xd1, //0x00002233 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00002237 pmovmskb %xmm2, %ebx - 0x66, 0x0f, 0x74, 0xd9, //0x0000223b pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x0000223f pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00002243 shlq $16, %rdi - 0x48, 0x09, 0xdf, //0x00002247 orq %rbx, %rdi - 0x48, 0x89, 0xfb, //0x0000224a movq %rdi, %rbx - 0x4c, 0x09, 0xdb, //0x0000224d orq %r11, %rbx - 0x0f, 0x84, 0x8a, 0xff, 0xff, 0xff, //0x00002250 je LBB0_422 - 0x44, 0x89, 0xdb, //0x00002256 movl %r11d, %ebx - 0xf7, 0xd3, //0x00002259 notl %ebx - 0x21, 0xfb, //0x0000225b andl %edi, %ebx - 0x8d, 0x04, 0x1b, //0x0000225d leal (%rbx,%rbx), %eax - 0x44, 0x09, 0xd8, //0x00002260 orl %r11d, %eax - 0x89, 0xc2, //0x00002263 movl %eax, %edx - 0xf7, 0xd2, //0x00002265 notl %edx - 0x21, 0xfa, //0x00002267 andl %edi, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002269 andl $-1431655766, %edx - 0x45, 0x31, 0xdb, //0x0000226f xorl %r11d, %r11d - 0x01, 0xda, //0x00002272 addl %ebx, %edx - 0x41, 0x0f, 0x92, 0xc3, //0x00002274 setb %r11b - 0x01, 0xd2, //0x00002278 addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000227a xorl $1431655765, %edx - 0x21, 0xc2, //0x00002280 andl %eax, %edx - 0xf7, 0xd2, //0x00002282 notl %edx - 0x21, 0xd6, //0x00002284 andl %edx, %esi - 0x48, 0x85, 0xf6, //0x00002286 testq %rsi, %rsi - 0x0f, 0x84, 0x5d, 0xff, 0xff, 0xff, //0x00002289 je LBB0_423 - //0x0000228f LBB0_419 - 0x0f, 0xbc, 0xc6, //0x0000228f bsfl %esi, %eax - 0x48, 0x01, 0xc8, //0x00002292 addq %rcx, %rax - 0x4d, 0x8d, 0x14, 0x07, //0x00002295 leaq (%r15,%rax), %r10 - 0x49, 0x83, 0xc2, 0x02, //0x00002299 addq $2, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x0000229d movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x000022a1 movq %r10, (%r8) - //0x000022a4 LBB0_420 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000022a4 movq $-64(%rbp), %r15 - //0x000022a8 LBB0_421 - 0x4c, 0x8b, 0x65, 0xb0, //0x000022a8 movq $-80(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x000022ac movq $-88(%rbp), %r11 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000022b0 movabsq $4294977024, %r9 - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000022ba jmp LBB0_430 - //0x000022bf LBB0_428 - 0x48, 0x83, 0xc1, 0x05, //0x000022bf addq $5, %rcx - 0x49, 0x3b, 0x0f, //0x000022c3 cmpq (%r15), %rcx - 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x000022c6 ja LBB0_430 - 0x90, 0x90, 0x90, 0x90, //0x000022cc .p2align 4, 0x90 - //0x000022d0 LBB0_429 - 0x49, 0x89, 0x08, //0x000022d0 movq %rcx, (%r8) - 0x49, 0x89, 0xca, //0x000022d3 movq %rcx, %r10 - //0x000022d6 LBB0_430 - 0x4d, 0x8b, 0x2c, 0x24, //0x000022d6 movq (%r12), %r13 - 0x49, 0x8b, 0x4c, 0x24, 0x08, //0x000022da movq $8(%r12), %rcx - 0x49, 0x39, 0xca, //0x000022df cmpq %rcx, %r10 - 0x0f, 0x83, 0x28, 0x00, 0x00, 0x00, //0x000022e2 jae LBB0_435 - 0x43, 0x8a, 0x44, 0x15, 0x00, //0x000022e8 movb (%r13,%r10), %al - 0x3c, 0x0d, //0x000022ed cmpb $13, %al - 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x000022ef je LBB0_435 - 0x3c, 0x20, //0x000022f5 cmpb $32, %al - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000022f7 je LBB0_435 - 0x04, 0xf7, //0x000022fd addb $-9, %al - 0x3c, 0x01, //0x000022ff cmpb $1, %al - 0x0f, 0x86, 0x09, 0x00, 0x00, 0x00, //0x00002301 jbe LBB0_435 - 0x4c, 0x89, 0xd2, //0x00002307 movq %r10, %rdx - 0xe9, 0xf6, 0x00, 0x00, 0x00, //0x0000230a jmp LBB0_456 - 0x90, //0x0000230f .p2align 4, 0x90 - //0x00002310 LBB0_435 - 0x49, 0x8d, 0x52, 0x01, //0x00002310 leaq $1(%r10), %rdx - 0x48, 0x39, 0xca, //0x00002314 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002317 jae LBB0_439 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000231d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00002322 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002324 je LBB0_439 - 0x3c, 0x20, //0x0000232a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000232c je LBB0_439 - 0x04, 0xf7, //0x00002332 addb $-9, %al - 0x3c, 0x01, //0x00002334 cmpb $1, %al - 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00002336 ja LBB0_456 - 0x90, 0x90, 0x90, 0x90, //0x0000233c .p2align 4, 0x90 - //0x00002340 LBB0_439 - 0x49, 0x8d, 0x52, 0x02, //0x00002340 leaq $2(%r10), %rdx - 0x48, 0x39, 0xca, //0x00002344 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002347 jae LBB0_443 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000234d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00002352 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002354 je LBB0_443 - 0x3c, 0x20, //0x0000235a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000235c je LBB0_443 - 0x04, 0xf7, //0x00002362 addb $-9, %al - 0x3c, 0x01, //0x00002364 cmpb $1, %al - 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x00002366 ja LBB0_456 - 0x90, 0x90, 0x90, 0x90, //0x0000236c .p2align 4, 0x90 - //0x00002370 LBB0_443 - 0x49, 0x8d, 0x52, 0x03, //0x00002370 leaq $3(%r10), %rdx - 0x48, 0x39, 0xca, //0x00002374 cmpq %rcx, %rdx - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002377 jae LBB0_447 - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000237d movb (%r13,%rdx), %al - 0x3c, 0x0d, //0x00002382 cmpb $13, %al - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002384 je LBB0_447 - 0x3c, 0x20, //0x0000238a cmpb $32, %al - 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000238c je LBB0_447 - 0x04, 0xf7, //0x00002392 addb $-9, %al - 0x3c, 0x01, //0x00002394 cmpb $1, %al - 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x00002396 ja LBB0_456 - 0x90, 0x90, 0x90, 0x90, //0x0000239c .p2align 4, 0x90 - //0x000023a0 LBB0_447 - 0x49, 0x8d, 0x52, 0x04, //0x000023a0 leaq $4(%r10), %rdx - 0x48, 0x39, 0xd1, //0x000023a4 cmpq %rdx, %rcx - 0x0f, 0x86, 0x38, 0x0c, 0x00, 0x00, //0x000023a7 jbe LBB0_866 - 0x48, 0x39, 0xd1, //0x000023ad cmpq %rdx, %rcx - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000023b0 je LBB0_453 - 0x4a, 0x8d, 0x04, 0x29, //0x000023b6 leaq (%rcx,%r13), %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023ba .p2align 4, 0x90 - //0x000023c0 LBB0_450 - 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x000023c0 movsbl (%r13,%rdx), %esi - 0x83, 0xfe, 0x20, //0x000023c6 cmpl $32, %esi - 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x000023c9 ja LBB0_455 - 0x49, 0x0f, 0xa3, 0xf1, //0x000023cf btq %rsi, %r9 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000023d3 jae LBB0_455 - 0x48, 0x83, 0xc2, 0x01, //0x000023d9 addq $1, %rdx - 0x48, 0x39, 0xd1, //0x000023dd cmpq %rdx, %rcx - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x000023e0 jne LBB0_450 - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x000023e6 jmp LBB0_454 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023eb .p2align 4, 0x90 - //0x000023f0 LBB0_453 - 0x4c, 0x01, 0xea, //0x000023f0 addq %r13, %rdx - 0x48, 0x89, 0xd0, //0x000023f3 movq %rdx, %rax - //0x000023f6 LBB0_454 - 0x4c, 0x29, 0xe8, //0x000023f6 subq %r13, %rax - 0x48, 0x89, 0xc2, //0x000023f9 movq %rax, %rdx - //0x000023fc LBB0_455 - 0x48, 0x39, 0xca, //0x000023fc cmpq %rcx, %rdx - 0x0f, 0x83, 0x3e, 0x22, 0x00, 0x00, //0x000023ff jae LBB0_868 - //0x00002405 LBB0_456 - 0x4c, 0x8d, 0x52, 0x01, //0x00002405 leaq $1(%rdx), %r10 - 0x4d, 0x89, 0x10, //0x00002409 movq %r10, (%r8) - 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000240c movb (%r13,%rdx), %al - 0x3c, 0x2c, //0x00002411 cmpb $44, %al - 0x0f, 0x85, 0xb1, 0x0b, 0x00, 0x00, //0x00002413 jne LBB0_549 - 0x49, 0x8d, 0x46, 0xff, //0x00002419 leaq $-1(%r14), %rax - 0x49, 0x83, 0xfe, 0x02, //0x0000241d cmpq $2, %r14 - 0x49, 0x89, 0xc6, //0x00002421 movq %rax, %r14 - 0x0f, 0x8d, 0x26, 0xfb, 0xff, 0xff, //0x00002424 jge LBB0_373 - 0xe9, 0xb1, 0x09, 0x00, 0x00, //0x0000242a jmp LBB0_458 - //0x0000242f LBB0_461 - 0x4c, 0x89, 0x5d, 0xa8, //0x0000242f movq %r11, $-88(%rbp) - 0x49, 0x8b, 0x07, //0x00002433 movq (%r15), %rax - 0x4c, 0x29, 0xd0, //0x00002436 subq %r10, %rax - 0x4d, 0x01, 0xd5, //0x00002439 addq %r10, %r13 - 0x45, 0x31, 0xc9, //0x0000243c xorl %r9d, %r9d - 0x31, 0xdb, //0x0000243f xorl %ebx, %ebx - 0x45, 0x31, 0xdb, //0x00002441 xorl %r11d, %r11d - 0x31, 0xc9, //0x00002444 xorl %ecx, %ecx - 0xe9, 0x73, 0x00, 0x00, 0x00, //0x00002446 jmp LBB0_463 - //0x0000244b LBB0_462 - 0x49, 0xc1, 0xff, 0x3f, //0x0000244b sarq $63, %r15 - 0x4c, 0x89, 0xd0, //0x0000244f movq %r10, %rax - 0x48, 0xd1, 0xe8, //0x00002452 shrq %rax - 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002455 movabsq $6148914691236517205, %rsi - 0x48, 0x21, 0xf0, //0x0000245f andq %rsi, %rax - 0x49, 0x29, 0xc2, //0x00002462 subq %rax, %r10 - 0x4c, 0x89, 0xd0, //0x00002465 movq %r10, %rax - 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002468 movabsq $3689348814741910323, %rdx - 0x48, 0x21, 0xd0, //0x00002472 andq %rdx, %rax - 0x49, 0xc1, 0xea, 0x02, //0x00002475 shrq $2, %r10 - 0x49, 0x21, 0xd2, //0x00002479 andq %rdx, %r10 - 0x49, 0x01, 0xc2, //0x0000247c addq %rax, %r10 - 0x4c, 0x89, 0xd0, //0x0000247f movq %r10, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x00002482 shrq $4, %rax - 0x4c, 0x01, 0xd0, //0x00002486 addq %r10, %rax - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002489 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd0, //0x00002493 andq %rdx, %rax - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002496 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xc2, //0x000024a0 imulq %rdx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x000024a4 shrq $56, %rax - 0x49, 0x01, 0xc3, //0x000024a8 addq %rax, %r11 - 0x49, 0x83, 0xc5, 0x40, //0x000024ab addq $64, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x000024af movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x000024b3 addq $-64, %rax - 0x4d, 0x89, 0xf9, //0x000024b7 movq %r15, %r9 - 0x48, 0x8b, 0x5d, 0xb8, //0x000024ba movq $-72(%rbp), %rbx - //0x000024be LBB0_463 - 0x48, 0x83, 0xf8, 0x40, //0x000024be cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x000024c2 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x45, 0x02, 0x00, 0x00, //0x000024c6 jl LBB0_471 - //0x000024cc LBB0_464 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x000024cc movdqu (%r13), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x000024d2 movdqu $16(%r13), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x000024d8 movdqu $32(%r13), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x000024de movdqu $48(%r13), %xmm6 - 0x66, 0x0f, 0x6f, 0xda, //0x000024e4 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000024e8 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x000024ec pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdd, //0x000024f0 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000024f4 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000024f8 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x000024fc movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002500 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002504 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x00002508 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000250c pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002510 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00002514 shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x00002518 shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x0000251c orq %rdi, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x0000251f shlq $16, %rdx - 0x48, 0x09, 0xf2, //0x00002523 orq %rsi, %rdx - 0x48, 0x09, 0xd0, //0x00002526 orq %rdx, %rax - 0x48, 0x89, 0xc2, //0x00002529 movq %rax, %rdx - 0x48, 0x09, 0xda, //0x0000252c orq %rbx, %rdx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000252f jne LBB0_466 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002535 movq $-1, %rax - 0x31, 0xd2, //0x0000253c xorl %edx, %edx - 0x48, 0x89, 0x55, 0xb8, //0x0000253e movq %rdx, $-72(%rbp) - 0xe9, 0x49, 0x00, 0x00, 0x00, //0x00002542 jmp LBB0_467 - //0x00002547 LBB0_466 - 0x48, 0x89, 0xda, //0x00002547 movq %rbx, %rdx - 0x48, 0xf7, 0xd2, //0x0000254a notq %rdx - 0x48, 0x21, 0xc2, //0x0000254d andq %rax, %rdx - 0x48, 0x8d, 0x34, 0x12, //0x00002550 leaq (%rdx,%rdx), %rsi - 0x48, 0x09, 0xde, //0x00002554 orq %rbx, %rsi - 0x48, 0x89, 0xf7, //0x00002557 movq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x0000255a notq %rdi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000255d movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xd8, //0x00002567 andq %rbx, %rax - 0x48, 0x21, 0xf8, //0x0000256a andq %rdi, %rax - 0x31, 0xff, //0x0000256d xorl %edi, %edi - 0x48, 0x01, 0xd0, //0x0000256f addq %rdx, %rax - 0x40, 0x0f, 0x92, 0xc7, //0x00002572 setb %dil - 0x48, 0x89, 0x7d, 0xb8, //0x00002576 movq %rdi, $-72(%rbp) - 0x48, 0x01, 0xc0, //0x0000257a addq %rax, %rax - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000257d movabsq $6148914691236517205, %rdx - 0x48, 0x31, 0xd0, //0x00002587 xorq %rdx, %rax - 0x48, 0x21, 0xf0, //0x0000258a andq %rsi, %rax - 0x48, 0xf7, 0xd0, //0x0000258d notq %rax - //0x00002590 LBB0_467 - 0x66, 0x0f, 0x6f, 0xde, //0x00002590 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002594 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00002598 pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x30, //0x0000259c shlq $48, %rdx - 0x66, 0x0f, 0x6f, 0xdf, //0x000025a0 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000025a4 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000025a8 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x000025ac shlq $32, %rsi - 0x48, 0x09, 0xd6, //0x000025b0 orq %rdx, %rsi - 0x66, 0x0f, 0x6f, 0xdd, //0x000025b3 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000025b7 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000025bb pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x10, //0x000025bf shlq $16, %rdx - 0x48, 0x09, 0xf2, //0x000025c3 orq %rsi, %rdx - 0x66, 0x0f, 0x6f, 0xda, //0x000025c6 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000025ca pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000025ce pmovmskb %xmm3, %esi - 0x48, 0x09, 0xd6, //0x000025d2 orq %rdx, %rsi - 0x48, 0x21, 0xc6, //0x000025d5 andq %rax, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x000025d8 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x000025dd pclmulqdq $0, %xmm9, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdf, //0x000025e4 movq %xmm3, %r15 - 0x4d, 0x31, 0xcf, //0x000025e9 xorq %r9, %r15 - 0x66, 0x0f, 0x6f, 0xda, //0x000025ec movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x000025f0 pcmpeqb %xmm10, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x000025f5 pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xdd, //0x000025fa movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x000025fe pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x00002603 pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdf, //0x00002607 movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x0000260b pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002610 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x00002614 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00002618 pcmpeqb %xmm10, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x0000261d pmovmskb %xmm3, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00002621 shlq $48, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00002625 shlq $32, %rsi - 0x48, 0x09, 0xde, //0x00002629 orq %rbx, %rsi - 0x48, 0xc1, 0xe0, 0x10, //0x0000262c shlq $16, %rax - 0x48, 0x09, 0xf0, //0x00002630 orq %rsi, %rax - 0x49, 0x09, 0xc2, //0x00002633 orq %rax, %r10 - 0x4d, 0x89, 0xf9, //0x00002636 movq %r15, %r9 - 0x49, 0xf7, 0xd1, //0x00002639 notq %r9 - 0x4d, 0x21, 0xca, //0x0000263c andq %r9, %r10 - 0x66, 0x0f, 0x74, 0xd4, //0x0000263f pcmpeqb %xmm4, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x00002643 pmovmskb %xmm2, %eax - 0x66, 0x0f, 0x74, 0xec, //0x00002647 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x0000264b pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x74, 0xfc, //0x0000264f pcmpeqb %xmm4, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00002653 pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x74, 0xf4, //0x00002657 pcmpeqb %xmm4, %xmm6 - 0x66, 0x0f, 0xd7, 0xf6, //0x0000265b pmovmskb %xmm6, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x0000265f shlq $48, %rsi - 0x48, 0xc1, 0xe7, 0x20, //0x00002663 shlq $32, %rdi - 0x48, 0x09, 0xf7, //0x00002667 orq %rsi, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x0000266a shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x0000266e orq %rdi, %rbx - 0x48, 0x09, 0xd8, //0x00002671 orq %rbx, %rax - 0x4c, 0x21, 0xc8, //0x00002674 andq %r9, %rax - 0x0f, 0x84, 0xce, 0xfd, 0xff, 0xff, //0x00002677 je LBB0_462 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000267d movabsq $4294977024, %r9 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002687 .p2align 4, 0x90 - //0x00002690 LBB0_469 - 0x48, 0x8d, 0x58, 0xff, //0x00002690 leaq $-1(%rax), %rbx - 0x48, 0x89, 0xde, //0x00002694 movq %rbx, %rsi - 0x4c, 0x21, 0xd6, //0x00002697 andq %r10, %rsi - 0x48, 0x89, 0xf7, //0x0000269a movq %rsi, %rdi - 0x48, 0xd1, 0xef, //0x0000269d shrq %rdi - 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000026a0 movabsq $6148914691236517205, %r8 - 0x4c, 0x21, 0xc7, //0x000026aa andq %r8, %rdi - 0x48, 0x29, 0xfe, //0x000026ad subq %rdi, %rsi - 0x48, 0x89, 0xf7, //0x000026b0 movq %rsi, %rdi - 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000026b3 movabsq $3689348814741910323, %rdx - 0x48, 0x21, 0xd7, //0x000026bd andq %rdx, %rdi - 0x48, 0xc1, 0xee, 0x02, //0x000026c0 shrq $2, %rsi - 0x48, 0x21, 0xd6, //0x000026c4 andq %rdx, %rsi - 0x48, 0x01, 0xfe, //0x000026c7 addq %rdi, %rsi - 0x48, 0x89, 0xf7, //0x000026ca movq %rsi, %rdi - 0x48, 0xc1, 0xef, 0x04, //0x000026cd shrq $4, %rdi - 0x48, 0x01, 0xf7, //0x000026d1 addq %rsi, %rdi - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000026d4 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd7, //0x000026de andq %rdx, %rdi - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000026e1 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xfa, //0x000026eb imulq %rdx, %rdi - 0x48, 0xc1, 0xef, 0x38, //0x000026ef shrq $56, %rdi - 0x4c, 0x01, 0xdf, //0x000026f3 addq %r11, %rdi - 0x48, 0x39, 0xcf, //0x000026f6 cmpq %rcx, %rdi - 0x0f, 0x86, 0xa6, 0x05, 0x00, 0x00, //0x000026f9 jbe LBB0_513 - 0x48, 0x83, 0xc1, 0x01, //0x000026ff addq $1, %rcx - 0x48, 0x21, 0xd8, //0x00002703 andq %rbx, %rax - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00002706 jne LBB0_469 - 0xe9, 0x3a, 0xfd, 0xff, 0xff, //0x0000270c jmp LBB0_462 - //0x00002711 LBB0_471 - 0x48, 0x85, 0xc0, //0x00002711 testq %rax, %rax - 0x0f, 0x8e, 0x86, 0x06, 0x00, 0x00, //0x00002714 jle LBB0_522 - 0x48, 0x89, 0xdf, //0x0000271a movq %rbx, %rdi - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x0000271d movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00002723 movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000272c movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00002735 movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe8, //0x0000273e movl %r13d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002741 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002746 cmpl $4033, %eax - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x0000274b jb LBB0_475 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00002751 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x00002756 jb LBB0_476 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x0000275c movups (%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002761 movups %xmm2, $-176(%rbp) - 0x41, 0x0f, 0x10, 0x55, 0x10, //0x00002768 movups $16(%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000276d movups %xmm2, $-160(%rbp) - 0x49, 0x83, 0xc5, 0x20, //0x00002774 addq $32, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x00002778 movq $-48(%rbp), %rax - 0x48, 0x8d, 0x70, 0xe0, //0x0000277c leaq $-32(%rax), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00002780 leaq $-144(%rbp), %rdx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00002787 jmp LBB0_477 - //0x0000278c LBB0_475 - 0x4c, 0x8b, 0x65, 0xb0, //0x0000278c movq $-80(%rbp), %r12 - 0x48, 0x89, 0xfb, //0x00002790 movq %rdi, %rbx - 0xe9, 0x34, 0xfd, 0xff, 0xff, //0x00002793 jmp LBB0_464 - //0x00002798 LBB0_476 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002798 leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xd0, //0x0000279f movq $-48(%rbp), %rsi - //0x000027a3 LBB0_477 - 0x48, 0x83, 0xfe, 0x10, //0x000027a3 cmpq $16, %rsi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x000027a7 jb LBB0_478 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x000027ad movups (%r13), %xmm2 - 0x0f, 0x11, 0x12, //0x000027b2 movups %xmm2, (%rdx) - 0x49, 0x83, 0xc5, 0x10, //0x000027b5 addq $16, %r13 - 0x48, 0x83, 0xc2, 0x10, //0x000027b9 addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x000027bd addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x000027c1 cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000027c5 jae LBB0_485 - //0x000027cb LBB0_479 - 0x48, 0x83, 0xfe, 0x04, //0x000027cb cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x000027cf jl LBB0_480 - //0x000027d5 LBB0_486 - 0x41, 0x8b, 0x45, 0x00, //0x000027d5 movl (%r13), %eax - 0x89, 0x02, //0x000027d9 movl %eax, (%rdx) - 0x49, 0x83, 0xc5, 0x04, //0x000027db addq $4, %r13 - 0x48, 0x83, 0xc2, 0x04, //0x000027df addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x000027e3 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x000027e7 cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000027eb jae LBB0_481 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x000027f1 jmp LBB0_482 - //0x000027f6 LBB0_478 - 0x48, 0x83, 0xfe, 0x08, //0x000027f6 cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x000027fa jb LBB0_479 - //0x00002800 LBB0_485 - 0x49, 0x8b, 0x45, 0x00, //0x00002800 movq (%r13), %rax - 0x48, 0x89, 0x02, //0x00002804 movq %rax, (%rdx) - 0x49, 0x83, 0xc5, 0x08, //0x00002807 addq $8, %r13 - 0x48, 0x83, 0xc2, 0x08, //0x0000280b addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x0000280f addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00002813 cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00002817 jge LBB0_486 - //0x0000281d LBB0_480 - 0x48, 0x83, 0xfe, 0x02, //0x0000281d cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00002821 jb LBB0_482 - //0x00002827 LBB0_481 - 0x41, 0x0f, 0xb7, 0x45, 0x00, //0x00002827 movzwl (%r13), %eax - 0x66, 0x89, 0x02, //0x0000282c movw %ax, (%rdx) - 0x49, 0x83, 0xc5, 0x02, //0x0000282f addq $2, %r13 - 0x48, 0x83, 0xc2, 0x02, //0x00002833 addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00002837 addq $-2, %rsi - //0x0000283b LBB0_482 - 0x4c, 0x89, 0xe8, //0x0000283b movq %r13, %rax - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x0000283e leaq $-176(%rbp), %r13 - 0x48, 0x85, 0xf6, //0x00002845 testq %rsi, %rsi - 0x4c, 0x8b, 0x65, 0xb0, //0x00002848 movq $-80(%rbp), %r12 - 0x48, 0x89, 0xfb, //0x0000284c movq %rdi, %rbx - 0x0f, 0x84, 0x77, 0xfc, 0xff, 0xff, //0x0000284f je LBB0_464 - 0x8a, 0x00, //0x00002855 movb (%rax), %al - 0x88, 0x02, //0x00002857 movb %al, (%rdx) - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00002859 leaq $-176(%rbp), %r13 - 0xe9, 0x67, 0xfc, 0xff, 0xff, //0x00002860 jmp LBB0_464 - //0x00002865 LBB0_487 - 0x4c, 0x89, 0x5d, 0xa8, //0x00002865 movq %r11, $-88(%rbp) - 0x49, 0x8b, 0x07, //0x00002869 movq (%r15), %rax - 0x4c, 0x29, 0xd0, //0x0000286c subq %r10, %rax - 0x4d, 0x01, 0xd5, //0x0000286f addq %r10, %r13 - 0x45, 0x31, 0xc9, //0x00002872 xorl %r9d, %r9d - 0x31, 0xdb, //0x00002875 xorl %ebx, %ebx - 0x45, 0x31, 0xdb, //0x00002877 xorl %r11d, %r11d - 0x31, 0xc9, //0x0000287a xorl %ecx, %ecx - 0xe9, 0x73, 0x00, 0x00, 0x00, //0x0000287c jmp LBB0_489 - //0x00002881 LBB0_488 - 0x49, 0xc1, 0xff, 0x3f, //0x00002881 sarq $63, %r15 - 0x4c, 0x89, 0xd0, //0x00002885 movq %r10, %rax - 0x48, 0xd1, 0xe8, //0x00002888 shrq %rax - 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000288b movabsq $6148914691236517205, %rsi - 0x48, 0x21, 0xf0, //0x00002895 andq %rsi, %rax - 0x49, 0x29, 0xc2, //0x00002898 subq %rax, %r10 - 0x4c, 0x89, 0xd0, //0x0000289b movq %r10, %rax - 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000289e movabsq $3689348814741910323, %rdx - 0x48, 0x21, 0xd0, //0x000028a8 andq %rdx, %rax - 0x49, 0xc1, 0xea, 0x02, //0x000028ab shrq $2, %r10 - 0x49, 0x21, 0xd2, //0x000028af andq %rdx, %r10 - 0x49, 0x01, 0xc2, //0x000028b2 addq %rax, %r10 - 0x4c, 0x89, 0xd0, //0x000028b5 movq %r10, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x000028b8 shrq $4, %rax - 0x4c, 0x01, 0xd0, //0x000028bc addq %r10, %rax - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000028bf movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd0, //0x000028c9 andq %rdx, %rax - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000028cc movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xc2, //0x000028d6 imulq %rdx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x000028da shrq $56, %rax - 0x49, 0x01, 0xc3, //0x000028de addq %rax, %r11 - 0x49, 0x83, 0xc5, 0x40, //0x000028e1 addq $64, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x000028e5 movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x000028e9 addq $-64, %rax - 0x4d, 0x89, 0xf9, //0x000028ed movq %r15, %r9 - 0x48, 0x8b, 0x5d, 0xb8, //0x000028f0 movq $-72(%rbp), %rbx - //0x000028f4 LBB0_489 - 0x48, 0x83, 0xf8, 0x40, //0x000028f4 cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x000028f8 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x4f, 0x02, 0x00, 0x00, //0x000028fc jl LBB0_497 - //0x00002902 LBB0_490 - 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00002902 movdqu (%r13), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x00002908 movdqu $16(%r13), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x0000290e movdqu $32(%r13), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x00002914 movdqu $48(%r13), %xmm6 - 0x66, 0x0f, 0x6f, 0xda, //0x0000291a movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000291e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x00002922 pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdd, //0x00002926 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000292a pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x0000292e pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x00002932 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002936 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000293a pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x0000293e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002942 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002946 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x0000294a shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x0000294e shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00002952 orq %rdi, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x00002955 shlq $16, %rdx - 0x48, 0x09, 0xf2, //0x00002959 orq %rsi, %rdx - 0x48, 0x09, 0xd0, //0x0000295c orq %rdx, %rax - 0x48, 0x89, 0xc2, //0x0000295f movq %rax, %rdx - 0x48, 0x09, 0xda, //0x00002962 orq %rbx, %rdx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002965 jne LBB0_492 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000296b movq $-1, %rax - 0x31, 0xd2, //0x00002972 xorl %edx, %edx - 0x48, 0x89, 0x55, 0xb8, //0x00002974 movq %rdx, $-72(%rbp) - 0xe9, 0x49, 0x00, 0x00, 0x00, //0x00002978 jmp LBB0_493 - //0x0000297d LBB0_492 - 0x48, 0x89, 0xda, //0x0000297d movq %rbx, %rdx - 0x48, 0xf7, 0xd2, //0x00002980 notq %rdx - 0x48, 0x21, 0xc2, //0x00002983 andq %rax, %rdx - 0x48, 0x8d, 0x34, 0x12, //0x00002986 leaq (%rdx,%rdx), %rsi - 0x48, 0x09, 0xde, //0x0000298a orq %rbx, %rsi - 0x48, 0x89, 0xf7, //0x0000298d movq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x00002990 notq %rdi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002993 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xd8, //0x0000299d andq %rbx, %rax - 0x48, 0x21, 0xf8, //0x000029a0 andq %rdi, %rax - 0x31, 0xff, //0x000029a3 xorl %edi, %edi - 0x48, 0x01, 0xd0, //0x000029a5 addq %rdx, %rax - 0x40, 0x0f, 0x92, 0xc7, //0x000029a8 setb %dil - 0x48, 0x89, 0x7d, 0xb8, //0x000029ac movq %rdi, $-72(%rbp) - 0x48, 0x01, 0xc0, //0x000029b0 addq %rax, %rax - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000029b3 movabsq $6148914691236517205, %rdx - 0x48, 0x31, 0xd0, //0x000029bd xorq %rdx, %rax - 0x48, 0x21, 0xf0, //0x000029c0 andq %rsi, %rax - 0x48, 0xf7, 0xd0, //0x000029c3 notq %rax - //0x000029c6 LBB0_493 - 0x66, 0x0f, 0x6f, 0xde, //0x000029c6 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000029ca pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000029ce pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x30, //0x000029d2 shlq $48, %rdx - 0x66, 0x0f, 0x6f, 0xdf, //0x000029d6 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000029da pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000029de pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x000029e2 shlq $32, %rsi - 0x48, 0x09, 0xd6, //0x000029e6 orq %rdx, %rsi - 0x66, 0x0f, 0x6f, 0xdd, //0x000029e9 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000029ed pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000029f1 pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x10, //0x000029f5 shlq $16, %rdx - 0x48, 0x09, 0xf2, //0x000029f9 orq %rsi, %rdx - 0x66, 0x0f, 0x6f, 0xda, //0x000029fc movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002a00 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002a04 pmovmskb %xmm3, %esi - 0x48, 0x09, 0xd6, //0x00002a08 orq %rdx, %rsi - 0x48, 0x21, 0xc6, //0x00002a0b andq %rax, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002a0e movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x00002a13 pclmulqdq $0, %xmm9, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdf, //0x00002a1a movq %xmm3, %r15 - 0x4d, 0x31, 0xcf, //0x00002a1f xorq %r9, %r15 - 0x66, 0x0f, 0x6f, 0xda, //0x00002a22 movdqa %xmm2, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002a26 pcmpeqb %xmm11, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002a2b pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xdd, //0x00002a30 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002a34 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xc3, //0x00002a39 pmovmskb %xmm3, %eax - 0x66, 0x0f, 0x6f, 0xdf, //0x00002a3d movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002a41 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002a46 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x00002a4a movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002a4e pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00002a53 pmovmskb %xmm3, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00002a57 shlq $48, %rbx - 0x48, 0xc1, 0xe6, 0x20, //0x00002a5b shlq $32, %rsi - 0x48, 0x09, 0xde, //0x00002a5f orq %rbx, %rsi - 0x48, 0xc1, 0xe0, 0x10, //0x00002a62 shlq $16, %rax - 0x48, 0x09, 0xf0, //0x00002a66 orq %rsi, %rax - 0x49, 0x09, 0xc2, //0x00002a69 orq %rax, %r10 - 0x4d, 0x89, 0xf9, //0x00002a6c movq %r15, %r9 - 0x49, 0xf7, 0xd1, //0x00002a6f notq %r9 - 0x4d, 0x21, 0xca, //0x00002a72 andq %r9, %r10 - 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00002a75 pcmpeqb %xmm12, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x00002a7a pmovmskb %xmm2, %eax - 0x66, 0x41, 0x0f, 0x74, 0xec, //0x00002a7e pcmpeqb %xmm12, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00002a83 pmovmskb %xmm5, %ebx - 0x66, 0x41, 0x0f, 0x74, 0xfc, //0x00002a87 pcmpeqb %xmm12, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00002a8c pmovmskb %xmm7, %edi - 0x66, 0x41, 0x0f, 0x74, 0xf4, //0x00002a90 pcmpeqb %xmm12, %xmm6 - 0x66, 0x0f, 0xd7, 0xf6, //0x00002a95 pmovmskb %xmm6, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00002a99 shlq $48, %rsi - 0x48, 0xc1, 0xe7, 0x20, //0x00002a9d shlq $32, %rdi - 0x48, 0x09, 0xf7, //0x00002aa1 orq %rsi, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x00002aa4 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x00002aa8 orq %rdi, %rbx - 0x48, 0x09, 0xd8, //0x00002aab orq %rbx, %rax - 0x4c, 0x21, 0xc8, //0x00002aae andq %r9, %rax - 0x0f, 0x84, 0xca, 0xfd, 0xff, 0xff, //0x00002ab1 je LBB0_488 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ab7 movabsq $4294977024, %r9 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002ac1 .p2align 4, 0x90 - //0x00002ad0 LBB0_495 - 0x48, 0x8d, 0x58, 0xff, //0x00002ad0 leaq $-1(%rax), %rbx - 0x48, 0x89, 0xde, //0x00002ad4 movq %rbx, %rsi - 0x4c, 0x21, 0xd6, //0x00002ad7 andq %r10, %rsi - 0x48, 0x89, 0xf7, //0x00002ada movq %rsi, %rdi - 0x48, 0xd1, 0xef, //0x00002add shrq %rdi - 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002ae0 movabsq $6148914691236517205, %r8 - 0x4c, 0x21, 0xc7, //0x00002aea andq %r8, %rdi - 0x48, 0x29, 0xfe, //0x00002aed subq %rdi, %rsi - 0x48, 0x89, 0xf7, //0x00002af0 movq %rsi, %rdi - 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002af3 movabsq $3689348814741910323, %rdx - 0x48, 0x21, 0xd7, //0x00002afd andq %rdx, %rdi - 0x48, 0xc1, 0xee, 0x02, //0x00002b00 shrq $2, %rsi - 0x48, 0x21, 0xd6, //0x00002b04 andq %rdx, %rsi - 0x48, 0x01, 0xfe, //0x00002b07 addq %rdi, %rsi - 0x48, 0x89, 0xf7, //0x00002b0a movq %rsi, %rdi - 0x48, 0xc1, 0xef, 0x04, //0x00002b0d shrq $4, %rdi - 0x48, 0x01, 0xf7, //0x00002b11 addq %rsi, %rdi - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002b14 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd7, //0x00002b1e andq %rdx, %rdi - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002b21 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xfa, //0x00002b2b imulq %rdx, %rdi - 0x48, 0xc1, 0xef, 0x38, //0x00002b2f shrq $56, %rdi - 0x4c, 0x01, 0xdf, //0x00002b33 addq %r11, %rdi - 0x48, 0x39, 0xcf, //0x00002b36 cmpq %rcx, %rdi - 0x0f, 0x86, 0x66, 0x01, 0x00, 0x00, //0x00002b39 jbe LBB0_513 - 0x48, 0x83, 0xc1, 0x01, //0x00002b3f addq $1, %rcx - 0x48, 0x21, 0xd8, //0x00002b43 andq %rbx, %rax - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00002b46 jne LBB0_495 - 0xe9, 0x30, 0xfd, 0xff, 0xff, //0x00002b4c jmp LBB0_488 - //0x00002b51 LBB0_497 - 0x48, 0x85, 0xc0, //0x00002b51 testq %rax, %rax - 0x0f, 0x8e, 0x46, 0x02, 0x00, 0x00, //0x00002b54 jle LBB0_522 - 0x48, 0x89, 0xdf, //0x00002b5a movq %rbx, %rdi - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x00002b5d movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00002b63 movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00002b6c movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00002b75 movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe8, //0x00002b7e movl %r13d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002b81 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002b86 cmpl $4033, %eax - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x00002b8b jb LBB0_501 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00002b91 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x00002b96 jb LBB0_502 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00002b9c movups (%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002ba1 movups %xmm2, $-176(%rbp) - 0x41, 0x0f, 0x10, 0x55, 0x10, //0x00002ba8 movups $16(%r13), %xmm2 - 0x0f, 0x11, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00002bad movups %xmm2, $-160(%rbp) - 0x49, 0x83, 0xc5, 0x20, //0x00002bb4 addq $32, %r13 - 0x48, 0x8b, 0x45, 0xd0, //0x00002bb8 movq $-48(%rbp), %rax - 0x48, 0x8d, 0x70, 0xe0, //0x00002bbc leaq $-32(%rax), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00002bc0 leaq $-144(%rbp), %rdx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00002bc7 jmp LBB0_503 - //0x00002bcc LBB0_501 - 0x4c, 0x8b, 0x65, 0xb0, //0x00002bcc movq $-80(%rbp), %r12 - 0x48, 0x89, 0xfb, //0x00002bd0 movq %rdi, %rbx - 0xe9, 0x2a, 0xfd, 0xff, 0xff, //0x00002bd3 jmp LBB0_490 - //0x00002bd8 LBB0_502 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002bd8 leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xd0, //0x00002bdf movq $-48(%rbp), %rsi - //0x00002be3 LBB0_503 - 0x48, 0x83, 0xfe, 0x10, //0x00002be3 cmpq $16, %rsi - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002be7 jb LBB0_504 - 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00002bed movups (%r13), %xmm2 - 0x0f, 0x11, 0x12, //0x00002bf2 movups %xmm2, (%rdx) - 0x49, 0x83, 0xc5, 0x10, //0x00002bf5 addq $16, %r13 - 0x48, 0x83, 0xc2, 0x10, //0x00002bf9 addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00002bfd addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00002c01 cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002c05 jae LBB0_511 - //0x00002c0b LBB0_505 - 0x48, 0x83, 0xfe, 0x04, //0x00002c0b cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00002c0f jl LBB0_506 - //0x00002c15 LBB0_512 - 0x41, 0x8b, 0x45, 0x00, //0x00002c15 movl (%r13), %eax - 0x89, 0x02, //0x00002c19 movl %eax, (%rdx) - 0x49, 0x83, 0xc5, 0x04, //0x00002c1b addq $4, %r13 - 0x48, 0x83, 0xc2, 0x04, //0x00002c1f addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00002c23 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00002c27 cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00002c2b jae LBB0_507 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002c31 jmp LBB0_508 - //0x00002c36 LBB0_504 - 0x48, 0x83, 0xfe, 0x08, //0x00002c36 cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00002c3a jb LBB0_505 - //0x00002c40 LBB0_511 - 0x49, 0x8b, 0x45, 0x00, //0x00002c40 movq (%r13), %rax - 0x48, 0x89, 0x02, //0x00002c44 movq %rax, (%rdx) - 0x49, 0x83, 0xc5, 0x08, //0x00002c47 addq $8, %r13 - 0x48, 0x83, 0xc2, 0x08, //0x00002c4b addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00002c4f addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00002c53 cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00002c57 jge LBB0_512 - //0x00002c5d LBB0_506 - 0x48, 0x83, 0xfe, 0x02, //0x00002c5d cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00002c61 jb LBB0_508 - //0x00002c67 LBB0_507 - 0x41, 0x0f, 0xb7, 0x45, 0x00, //0x00002c67 movzwl (%r13), %eax - 0x66, 0x89, 0x02, //0x00002c6c movw %ax, (%rdx) - 0x49, 0x83, 0xc5, 0x02, //0x00002c6f addq $2, %r13 - 0x48, 0x83, 0xc2, 0x02, //0x00002c73 addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00002c77 addq $-2, %rsi - //0x00002c7b LBB0_508 - 0x4c, 0x89, 0xe8, //0x00002c7b movq %r13, %rax - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00002c7e leaq $-176(%rbp), %r13 - 0x48, 0x85, 0xf6, //0x00002c85 testq %rsi, %rsi - 0x4c, 0x8b, 0x65, 0xb0, //0x00002c88 movq $-80(%rbp), %r12 - 0x48, 0x89, 0xfb, //0x00002c8c movq %rdi, %rbx - 0x0f, 0x84, 0x6d, 0xfc, 0xff, 0xff, //0x00002c8f je LBB0_490 - 0x8a, 0x00, //0x00002c95 movb (%rax), %al - 0x88, 0x02, //0x00002c97 movb %al, (%rdx) - 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00002c99 leaq $-176(%rbp), %r13 - 0xe9, 0x5d, 0xfc, 0xff, 0xff, //0x00002ca0 jmp LBB0_490 - //0x00002ca5 LBB0_513 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00002ca5 movq $-64(%rbp), %r15 - 0x49, 0x8b, 0x0f, //0x00002ca9 movq (%r15), %rcx - 0x48, 0x0f, 0xbc, 0xc0, //0x00002cac bsfq %rax, %rax - 0x48, 0x2b, 0x45, 0xd0, //0x00002cb0 subq $-48(%rbp), %rax - 0x4c, 0x8d, 0x14, 0x08, //0x00002cb4 leaq (%rax,%rcx), %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00002cb8 addq $1, %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00002cbc movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00002cc0 movq %r10, (%r8) - 0x49, 0x8b, 0x07, //0x00002cc3 movq (%r15), %rax - 0x49, 0x39, 0xc2, //0x00002cc6 cmpq %rax, %r10 - 0x4c, 0x0f, 0x47, 0xd0, //0x00002cc9 cmovaq %rax, %r10 - 0x4d, 0x89, 0x10, //0x00002ccd movq %r10, (%r8) - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002cd0 movq $-88(%rbp), %r11 - 0xe9, 0xfd, 0xf5, 0xff, 0xff, //0x00002cd4 jmp LBB0_430 - //0x00002cd9 LBB0_518 - 0x4d, 0x29, 0xea, //0x00002cd9 subq %r13, %r10 - 0x49, 0x01, 0xc2, //0x00002cdc addq %rax, %r10 - 0x4d, 0x89, 0x10, //0x00002cdf movq %r10, (%r8) - 0xe9, 0xef, 0xf5, 0xff, 0xff, //0x00002ce2 jmp LBB0_430 - //0x00002ce7 LBB0_424 - 0x4d, 0x85, 0xdb, //0x00002ce7 testq %r11, %r11 - 0x0f, 0x85, 0xc3, 0x00, 0x00, 0x00, //0x00002cea jne LBB0_523 - 0x4b, 0x8d, 0x04, 0x0f, //0x00002cf0 leaq (%r15,%r9), %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002cf4 addq $1, %rax - 0x49, 0xf7, 0xd7, //0x00002cf8 notq %r15 - 0x4d, 0x01, 0xc7, //0x00002cfb addq %r8, %r15 - //0x00002cfe LBB0_426 - 0x4c, 0x8b, 0x65, 0xb0, //0x00002cfe movq $-80(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002d02 movq $-88(%rbp), %r11 - 0x4d, 0x85, 0xff, //0x00002d06 testq %r15, %r15 - 0x4c, 0x8b, 0x45, 0xc8, //0x00002d09 movq $-56(%rbp), %r8 - 0x49, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d0d movabsq $4294977024, %r9 - 0x0f, 0x8f, 0x1d, 0x00, 0x00, 0x00, //0x00002d17 jg LBB0_515 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002d1d jmp LBB0_427 - //0x00002d22 LBB0_514 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002d22 movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002d29 movl $2, %esi - 0x48, 0x01, 0xf0, //0x00002d2e addq %rsi, %rax - 0x49, 0x01, 0xcf, //0x00002d31 addq %rcx, %r15 - 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x00002d34 jle LBB0_427 - //0x00002d3a LBB0_515 - 0x0f, 0xb6, 0x08, //0x00002d3a movzbl (%rax), %ecx - 0x80, 0xf9, 0x5c, //0x00002d3d cmpb $92, %cl - 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00002d40 je LBB0_514 - 0x80, 0xf9, 0x22, //0x00002d46 cmpb $34, %cl - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00002d49 je LBB0_519 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002d4f movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002d56 movl $1, %esi - 0x48, 0x01, 0xf0, //0x00002d5b addq %rsi, %rax - 0x49, 0x01, 0xcf, //0x00002d5e addq %rcx, %r15 - 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00002d61 jg LBB0_515 - //0x00002d67 LBB0_427 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00002d67 movq $-64(%rbp), %r15 - 0xe9, 0x66, 0xf5, 0xff, 0xff, //0x00002d6b jmp LBB0_430 - //0x00002d70 LBB0_519 - 0x4c, 0x29, 0xe8, //0x00002d70 subq %r13, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002d73 addq $1, %rax - 0x49, 0x89, 0x00, //0x00002d77 movq %rax, (%r8) - 0x49, 0x89, 0xc2, //0x00002d7a movq %rax, %r10 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00002d7d movq $-64(%rbp), %r15 - 0xe9, 0x50, 0xf5, 0xff, 0xff, //0x00002d81 jmp LBB0_430 - //0x00002d86 LBB0_520 - 0x4d, 0x01, 0xea, //0x00002d86 addq %r13, %r10 - 0x48, 0x85, 0xd2, //0x00002d89 testq %rdx, %rdx - 0x0f, 0x85, 0x96, 0xf3, 0xff, 0xff, //0x00002d8c jne LBB0_406 - 0xe9, 0xc7, 0xf3, 0xff, 0xff, //0x00002d92 jmp LBB0_412 - //0x00002d97 LBB0_521 - 0x4b, 0x8d, 0x04, 0x2a, //0x00002d97 leaq (%r10,%r13), %rax - 0xe9, 0x5e, 0xff, 0xff, 0xff, //0x00002d9b jmp LBB0_426 - //0x00002da0 LBB0_522 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00002da0 movq $-64(%rbp), %r15 - 0x4d, 0x8b, 0x17, //0x00002da4 movq (%r15), %r10 - 0x4c, 0x8b, 0x45, 0xc8, //0x00002da7 movq $-56(%rbp), %r8 - 0x4d, 0x89, 0x10, //0x00002dab movq %r10, (%r8) - 0xe9, 0xf5, 0xf4, 0xff, 0xff, //0x00002dae jmp LBB0_421 - //0x00002db3 LBB0_523 - 0x49, 0x8d, 0x40, 0xff, //0x00002db3 leaq $-1(%r8), %rax - 0x4c, 0x39, 0xf8, //0x00002db7 cmpq %r15, %rax - 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00002dba jne LBB0_525 - 0x4c, 0x8b, 0x45, 0xc8, //0x00002dc0 movq $-56(%rbp), %r8 - 0xe9, 0xdb, 0xf4, 0xff, 0xff, //0x00002dc4 jmp LBB0_420 - //0x00002dc9 LBB0_525 - 0x4b, 0x8d, 0x04, 0x0f, //0x00002dc9 leaq (%r15,%r9), %rax - 0x48, 0x83, 0xc0, 0x02, //0x00002dcd addq $2, %rax - 0x4d, 0x29, 0xf8, //0x00002dd1 subq %r15, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00002dd4 addq $-2, %r8 - 0x4d, 0x89, 0xc7, //0x00002dd8 movq %r8, %r15 - 0xe9, 0x1e, 0xff, 0xff, 0xff, //0x00002ddb jmp LBB0_426 - //0x00002de0 .p2align 4, 0x90 - //0x00002de0 LBB0_458 - 0x49, 0x83, 0xc3, 0x10, //0x00002de0 addq $16, %r11 - 0x4c, 0x89, 0xd0, //0x00002de4 movq %r10, %rax - 0x4c, 0x3b, 0x9d, 0x38, 0xff, 0xff, 0xff, //0x00002de7 cmpq $-200(%rbp), %r11 - 0x4c, 0x8b, 0x4d, 0x98, //0x00002dee movq $-104(%rbp), %r9 - 0x0f, 0x85, 0x9d, 0xd3, 0xff, 0xff, //0x00002df2 jne LBB0_2 - //0x00002df8 LBB0_459 - 0x4d, 0x85, 0xc9, //0x00002df8 testq %r9, %r9 - 0x0f, 0x84, 0xb0, 0x00, 0x00, 0x00, //0x00002dfb je LBB0_526 - 0x0f, 0x10, 0x05, 0x78, 0xd2, 0xff, 0xff, //0x00002e01 movups $-11656(%rip), %xmm0 /* LCPI0_8+0(%rip) */ - 0x41, 0x0f, 0x11, 0x01, //0x00002e08 movups %xmm0, (%r9) - 0x4d, 0x8b, 0x2c, 0x24, //0x00002e0c movq (%r12), %r13 - 0x4c, 0x89, 0xe8, //0x00002e10 movq %r13, %rax - 0x48, 0xf7, 0xd0, //0x00002e13 notq %rax - 0x48, 0x89, 0x85, 0x48, 0xff, 0xff, 0xff, //0x00002e16 movq %rax, $-184(%rbp) - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00002e1d movl $1, %eax - 0x4c, 0x29, 0xe8, //0x00002e22 subq %r13, %rax - 0x48, 0x89, 0x45, 0x90, //0x00002e25 movq %rax, $-112(%rbp) - 0x4c, 0x89, 0xe8, //0x00002e29 movq %r13, %rax - 0x48, 0xf7, 0xd8, //0x00002e2c negq %rax - 0x48, 0x89, 0x85, 0x40, 0xff, 0xff, 0xff, //0x00002e2f movq %rax, $-192(%rbp) - 0x49, 0x8d, 0x45, 0xff, //0x00002e36 leaq $-1(%r13), %rax - 0x48, 0x89, 0x45, 0xb0, //0x00002e3a movq %rax, $-80(%rbp) - 0x49, 0x8d, 0x45, 0xfe, //0x00002e3e leaq $-2(%r13), %rax - 0x48, 0x89, 0x45, 0xa8, //0x00002e42 movq %rax, $-88(%rbp) - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00002e46 movq $-1, %r14 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002e4d movabsq $4294977024, %r10 - 0xf3, 0x0f, 0x6f, 0x05, 0xd1, 0xd1, 0xff, 0xff, //0x00002e57 movdqu $-11823(%rip), %xmm0 /* LCPI0_3+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xd9, 0xd1, 0xff, 0xff, //0x00002e5f movdqu $-11815(%rip), %xmm1 /* LCPI0_4+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0x20, 0xd2, 0xff, 0xff, //0x00002e67 movdqu $-11744(%rip), %xmm8 /* LCPI0_9+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x1d, 0x28, 0xd2, 0xff, 0xff, //0x00002e70 movdqu $-11736(%rip), %xmm3 /* LCPI0_10+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x2f, 0xd2, 0xff, 0xff, //0x00002e78 movdqu $-11729(%rip), %xmm9 /* LCPI0_11+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x36, 0xd2, 0xff, 0xff, //0x00002e81 movdqu $-11722(%rip), %xmm10 /* LCPI0_12+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x7d, 0xd1, 0xff, 0xff, //0x00002e8a movdqu $-11907(%rip), %xmm11 /* LCPI0_1+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0x34, 0xd2, 0xff, 0xff, //0x00002e93 movdqu $-11724(%rip), %xmm12 /* LCPI0_13+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x3b, 0xd2, 0xff, 0xff, //0x00002e9c movdqu $-11717(%rip), %xmm13 /* LCPI0_14+0(%rip) */ - 0x4c, 0x8d, 0x1d, 0xcc, 0x29, 0x00, 0x00, //0x00002ea5 leaq $10700(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0xe9, 0xae, 0x01, 0x00, 0x00, //0x00002eac jmp LBB0_557 - //0x00002eb1 LBB0_526 - 0x4c, 0x89, 0xe0, //0x00002eb1 movq %r12, %rax - 0x4d, 0x8b, 0x24, 0x24, //0x00002eb4 movq (%r12), %r12 - 0x48, 0x8b, 0x78, 0x08, //0x00002eb8 movq $8(%rax), %rdi - 0x49, 0x8b, 0x30, //0x00002ebc movq (%r8), %rsi - 0x48, 0x39, 0xfe, //0x00002ebf cmpq %rdi, %rsi - 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x00002ec2 jae LBB0_531 - 0x41, 0x8a, 0x04, 0x34, //0x00002ec8 movb (%r12,%rsi), %al - 0x3c, 0x0d, //0x00002ecc cmpb $13, %al - 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00002ece je LBB0_531 - 0x3c, 0x20, //0x00002ed4 cmpb $32, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002ed6 je LBB0_531 - 0x04, 0xf7, //0x00002edc addb $-9, %al - 0x3c, 0x01, //0x00002ede cmpb $1, %al - 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00002ee0 jbe LBB0_531 - 0x49, 0x89, 0xf3, //0x00002ee6 movq %rsi, %r11 - 0xe9, 0x94, 0x17, 0x00, 0x00, //0x00002ee9 jmp LBB0_874 - //0x00002eee LBB0_531 - 0x4c, 0x8d, 0x5e, 0x01, //0x00002eee leaq $1(%rsi), %r11 - 0x49, 0x39, 0xfb, //0x00002ef2 cmpq %rdi, %r11 - 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002ef5 jae LBB0_535 - 0x43, 0x8a, 0x04, 0x1c, //0x00002efb movb (%r12,%r11), %al - 0x3c, 0x0d, //0x00002eff cmpb $13, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f01 je LBB0_535 - 0x3c, 0x20, //0x00002f07 cmpb $32, %al - 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002f09 je LBB0_535 - 0x04, 0xf7, //0x00002f0f addb $-9, %al - 0x3c, 0x01, //0x00002f11 cmpb $1, %al - 0x0f, 0x87, 0x69, 0x17, 0x00, 0x00, //0x00002f13 ja LBB0_874 - //0x00002f19 LBB0_535 - 0x4c, 0x8d, 0x5e, 0x02, //0x00002f19 leaq $2(%rsi), %r11 - 0x49, 0x39, 0xfb, //0x00002f1d cmpq %rdi, %r11 - 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002f20 jae LBB0_539 - 0x43, 0x8a, 0x04, 0x1c, //0x00002f26 movb (%r12,%r11), %al - 0x3c, 0x0d, //0x00002f2a cmpb $13, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f2c je LBB0_539 - 0x3c, 0x20, //0x00002f32 cmpb $32, %al - 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002f34 je LBB0_539 - 0x04, 0xf7, //0x00002f3a addb $-9, %al - 0x3c, 0x01, //0x00002f3c cmpb $1, %al - 0x0f, 0x87, 0x3e, 0x17, 0x00, 0x00, //0x00002f3e ja LBB0_874 - //0x00002f44 LBB0_539 - 0x4c, 0x8d, 0x5e, 0x03, //0x00002f44 leaq $3(%rsi), %r11 - 0x49, 0x39, 0xfb, //0x00002f48 cmpq %rdi, %r11 - 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002f4b jae LBB0_543 - 0x43, 0x8a, 0x04, 0x1c, //0x00002f51 movb (%r12,%r11), %al - 0x3c, 0x0d, //0x00002f55 cmpb $13, %al - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f57 je LBB0_543 - 0x3c, 0x20, //0x00002f5d cmpb $32, %al - 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002f5f je LBB0_543 - 0x04, 0xf7, //0x00002f65 addb $-9, %al - 0x3c, 0x01, //0x00002f67 cmpb $1, %al - 0x0f, 0x87, 0x13, 0x17, 0x00, 0x00, //0x00002f69 ja LBB0_874 - //0x00002f6f LBB0_543 - 0x48, 0x83, 0xc6, 0x04, //0x00002f6f addq $4, %rsi - 0x48, 0x39, 0xf7, //0x00002f73 cmpq %rsi, %rdi - 0x0f, 0x86, 0x9a, 0x16, 0x00, 0x00, //0x00002f76 jbe LBB0_862 - 0x48, 0x39, 0xf7, //0x00002f7c cmpq %rsi, %rdi - 0x0f, 0x84, 0xde, 0x16, 0x00, 0x00, //0x00002f7f je LBB0_871 - 0x49, 0x8d, 0x04, 0x3c, //0x00002f85 leaq (%r12,%rdi), %rax - 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f89 movabsq $4294977024, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002f93 .p2align 4, 0x90 - //0x00002fa0 LBB0_546 - 0x41, 0x0f, 0xbe, 0x14, 0x34, //0x00002fa0 movsbl (%r12,%rsi), %edx - 0x83, 0xfa, 0x20, //0x00002fa5 cmpl $32, %edx - 0x0f, 0x87, 0xc1, 0x16, 0x00, 0x00, //0x00002fa8 ja LBB0_873 - 0x48, 0x0f, 0xa3, 0xd1, //0x00002fae btq %rdx, %rcx - 0x0f, 0x83, 0xb7, 0x16, 0x00, 0x00, //0x00002fb2 jae LBB0_873 - 0x48, 0x83, 0xc6, 0x01, //0x00002fb8 addq $1, %rsi - 0x48, 0x39, 0xf7, //0x00002fbc cmpq %rsi, %rdi - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x00002fbf jne LBB0_546 - 0xe9, 0x9f, 0x16, 0x00, 0x00, //0x00002fc5 jmp LBB0_872 - //0x00002fca LBB0_549 - 0x3c, 0x5d, //0x00002fca cmpb $93, %al - 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x00002fcc je LBB0_551 - 0xe9, 0x6c, 0x16, 0x00, 0x00, //0x00002fd2 jmp LBB0_868 - //0x00002fd7 LBB0_550 - 0x80, 0xfa, 0x7d, //0x00002fd7 cmpb $125, %dl - 0x0f, 0x85, 0x63, 0x16, 0x00, 0x00, //0x00002fda jne LBB0_868 - 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00002fe0 jmp LBB0_551 - //0x00002fe5 LBB0_866 - 0x49, 0x89, 0xd2, //0x00002fe5 movq %rdx, %r10 - 0xe9, 0x56, 0x16, 0x00, 0x00, //0x00002fe8 jmp LBB0_868 - //0x00002fed LBB0_191 - 0x3c, 0x7d, //0x00002fed cmpb $125, %al - 0x0f, 0x85, 0x4e, 0x16, 0x00, 0x00, //0x00002fef jne LBB0_868 - //0x00002ff5 LBB0_551 - 0x49, 0x83, 0xc2, 0xff, //0x00002ff5 addq $-1, %r10 - 0x4d, 0x89, 0x10, //0x00002ff9 movq %r10, (%r8) - 0x48, 0xc7, 0xc0, 0xdf, 0xff, 0xff, 0xff, //0x00002ffc movq $-33, %rax - 0xe9, 0x49, 0x16, 0x00, 0x00, //0x00003003 jmp LBB0_870 - //0x00003008 LBB0_552 - 0x49, 0xf7, 0xdc, //0x00003008 negq %r12 - 0x4d, 0x89, 0xe0, //0x0000300b movq %r12, %r8 - //0x0000300e LBB0_553 - 0x4d, 0x85, 0xc0, //0x0000300e testq %r8, %r8 - 0x0f, 0x88, 0xd1, 0x17, 0x00, 0x00, //0x00003011 js LBB0_891 - //0x00003017 LBB0_554 - 0x49, 0x01, 0xc0, //0x00003017 addq %rax, %r8 - 0x48, 0x8b, 0x4d, 0xc8, //0x0000301a movq $-56(%rbp), %rcx - 0x4c, 0x89, 0x01, //0x0000301e movq %r8, (%rcx) - 0x48, 0x85, 0xc0, //0x00003021 testq %rax, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x00003024 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x4d, 0x98, //0x00003028 movq $-104(%rbp), %r9 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000302c movabsq $4294977024, %r10 - 0x4c, 0x8d, 0x1d, 0x3b, 0x28, 0x00, 0x00, //0x00003036 leaq $10299(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0x4c, 0x8b, 0x75, 0xb8, //0x0000303d movq $-72(%rbp), %r14 - 0x0f, 0x88, 0x0a, 0x16, 0x00, 0x00, //0x00003041 js LBB0_870 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003047 .p2align 4, 0x90 - //0x00003050 LBB0_555 - 0x49, 0x8b, 0x11, //0x00003050 movq (%r9), %rdx - 0x4c, 0x89, 0xf0, //0x00003053 movq %r14, %rax - 0x48, 0x85, 0xd2, //0x00003056 testq %rdx, %rdx - 0x0f, 0x84, 0xf2, 0x15, 0x00, 0x00, //0x00003059 je LBB0_870 - //0x0000305f LBB0_557 - 0x4c, 0x89, 0xf1, //0x0000305f movq %r14, %rcx - 0x49, 0x8b, 0x07, //0x00003062 movq (%r15), %rax - 0x4c, 0x8b, 0x45, 0xc8, //0x00003065 movq $-56(%rbp), %r8 - 0x49, 0x8b, 0x10, //0x00003069 movq (%r8), %rdx - 0x48, 0x39, 0xc2, //0x0000306c cmpq %rax, %rdx - 0x0f, 0x83, 0x2b, 0x00, 0x00, 0x00, //0x0000306f jae LBB0_562 - 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x00003075 movb (%r13,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x0000307a cmpb $13, %bl - 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x0000307d je LBB0_562 - 0x80, 0xfb, 0x20, //0x00003083 cmpb $32, %bl - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00003086 je LBB0_562 - 0x80, 0xc3, 0xf7, //0x0000308c addb $-9, %bl - 0x80, 0xfb, 0x01, //0x0000308f cmpb $1, %bl - 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00003092 jbe LBB0_562 - 0x49, 0x89, 0xd6, //0x00003098 movq %rdx, %r14 - 0xe9, 0xf8, 0x00, 0x00, 0x00, //0x0000309b jmp LBB0_583 - //0x000030a0 .p2align 4, 0x90 - //0x000030a0 LBB0_562 - 0x4c, 0x8d, 0x72, 0x01, //0x000030a0 leaq $1(%rdx), %r14 - 0x49, 0x39, 0xc6, //0x000030a4 cmpq %rax, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000030a7 jae LBB0_566 - 0x43, 0x8a, 0x5c, 0x35, 0x00, //0x000030ad movb (%r13,%r14), %bl - 0x80, 0xfb, 0x0d, //0x000030b2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000030b5 je LBB0_566 - 0x80, 0xfb, 0x20, //0x000030bb cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000030be je LBB0_566 - 0x80, 0xc3, 0xf7, //0x000030c4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000030c7 cmpb $1, %bl - 0x0f, 0x87, 0xc8, 0x00, 0x00, 0x00, //0x000030ca ja LBB0_583 - //0x000030d0 .p2align 4, 0x90 - //0x000030d0 LBB0_566 - 0x4c, 0x8d, 0x72, 0x02, //0x000030d0 leaq $2(%rdx), %r14 - 0x49, 0x39, 0xc6, //0x000030d4 cmpq %rax, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000030d7 jae LBB0_570 - 0x43, 0x8a, 0x5c, 0x35, 0x00, //0x000030dd movb (%r13,%r14), %bl - 0x80, 0xfb, 0x0d, //0x000030e2 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000030e5 je LBB0_570 - 0x80, 0xfb, 0x20, //0x000030eb cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000030ee je LBB0_570 - 0x80, 0xc3, 0xf7, //0x000030f4 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000030f7 cmpb $1, %bl - 0x0f, 0x87, 0x98, 0x00, 0x00, 0x00, //0x000030fa ja LBB0_583 + 0x4d, 0x8b, 0x01, //0x00000a3f movq (%r9), %r8 + 0x4c, 0x89, 0xc1, //0x00000a42 movq %r8, %rcx + 0x4c, 0x29, 0xd9, //0x00000a45 subq %r11, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x00000a48 cmpq $16, %rcx + 0x0f, 0x82, 0x93, 0x11, 0x00, 0x00, //0x00000a4c jb LBB0_314 + 0x48, 0x89, 0xc7, //0x00000a52 movq %rax, %rdi + 0x48, 0xf7, 0xd7, //0x00000a55 notq %rdi + 0x48, 0x8d, 0x58, 0x01, //0x00000a58 leaq $1(%rax), %rbx + 0x48, 0x8d, 0x48, 0x02, //0x00000a5c leaq $2(%rax), %rcx + 0x4a, 0x8d, 0x14, 0x28, //0x00000a60 leaq (%rax,%r13), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000a64 .p2align 4, 0x90 + //0x00000a70 LBB0_152 + 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x1d, 0x00, //0x00000a70 movdqu (%r13,%rbx), %xmm2 + 0x66, 0x0f, 0x6f, 0xda, //0x00000a77 movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00000a7b pcmpeqb %xmm13, %xmm3 + 0x66, 0x41, 0x0f, 0xdb, 0xd6, //0x00000a80 pand %xmm14, %xmm2 + 0x66, 0x0f, 0x74, 0xd4, //0x00000a85 pcmpeqb %xmm4, %xmm2 + 0x66, 0x0f, 0xeb, 0xd3, //0x00000a89 por %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00000a8d pmovmskb %xmm2, %esi + 0x85, 0xf6, //0x00000a91 testl %esi, %esi + 0x0f, 0x85, 0xa7, 0x00, 0x00, 0x00, //0x00000a93 jne LBB0_163 + 0x48, 0x83, 0xc3, 0x10, //0x00000a99 addq $16, %rbx + 0x49, 0x8d, 0x34, 0x38, //0x00000a9d leaq (%r8,%rdi), %rsi + 0x48, 0x83, 0xc6, 0xf0, //0x00000aa1 addq $-16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00000aa5 addq $-16, %rdi + 0x48, 0x83, 0xc1, 0x10, //0x00000aa9 addq $16, %rcx + 0x48, 0x83, 0xc0, 0x10, //0x00000aad addq $16, %rax + 0x48, 0x83, 0xc2, 0x10, //0x00000ab1 addq $16, %rdx + 0x48, 0x83, 0xfe, 0x0f, //0x00000ab5 cmpq $15, %rsi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00000ab9 ja LBB0_152 + 0x4d, 0x89, 0xeb, //0x00000abf movq %r13, %r11 + 0x49, 0x29, 0xfb, //0x00000ac2 subq %rdi, %r11 + 0x49, 0x01, 0xf8, //0x00000ac5 addq %rdi, %r8 + 0x4c, 0x89, 0xc1, //0x00000ac8 movq %r8, %rcx + 0x48, 0x85, 0xc9, //0x00000acb testq %rcx, %rcx + 0x4c, 0x8b, 0x45, 0xc8, //0x00000ace movq $-56(%rbp), %r8 + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00000ad2 je LBB0_162 + //0x00000ad8 LBB0_155 + 0x49, 0x8d, 0x04, 0x0b, //0x00000ad8 leaq (%r11,%rcx), %rax + //0x00000adc LBB0_156 + 0x41, 0x0f, 0xb6, 0x13, //0x00000adc movzbl (%r11), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00000ae0 cmpq $44, %rdx + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x00000ae4 ja LBB0_158 + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000aea movabsq $17596481021440, %rsi + 0x48, 0x0f, 0xa3, 0xd6, //0x00000af4 btq %rdx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00000af8 jb LBB0_162 + //0x00000afe LBB0_158 + 0x80, 0xfa, 0x5d, //0x00000afe cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00000b01 je LBB0_162 + 0x80, 0xfa, 0x7d, //0x00000b07 cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000b0a je LBB0_162 + 0x49, 0x83, 0xc3, 0x01, //0x00000b10 addq $1, %r11 + 0x48, 0x83, 0xc1, 0xff, //0x00000b14 addq $-1, %rcx + 0x0f, 0x85, 0xbe, 0xff, 0xff, 0xff, //0x00000b18 jne LBB0_156 + 0x49, 0x89, 0xc3, //0x00000b1e movq %rax, %r11 + //0x00000b21 LBB0_162 + 0x4d, 0x29, 0xeb, //0x00000b21 subq %r13, %r11 + 0x4d, 0x89, 0x18, //0x00000b24 movq %r11, (%r8) + 0x4d, 0x8b, 0x2c, 0x24, //0x00000b27 movq (%r12), %r13 + 0x49, 0x8b, 0x44, 0x24, 0x08, //0x00000b2b movq $8(%r12), %rax + 0x49, 0x39, 0xc3, //0x00000b30 cmpq %rax, %r11 + 0x0f, 0x83, 0x67, 0x0a, 0x00, 0x00, //0x00000b33 jae LBB0_241 + 0xe9, 0xc4, 0x05, 0x00, 0x00, //0x00000b39 jmp LBB0_237 + 0x90, 0x90, //0x00000b3e .p2align 4, 0x90 + //0x00000b40 LBB0_163 + 0x66, 0x0f, 0xbc, 0xf6, //0x00000b40 bsfw %si, %si + 0x0f, 0xb7, 0xf6, //0x00000b44 movzwl %si, %esi + 0x49, 0x89, 0xf3, //0x00000b47 movq %rsi, %r11 + 0x49, 0x29, 0xfb, //0x00000b4a subq %rdi, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00000b4d movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00000b51 movq %r11, (%r8) + 0x4d, 0x85, 0xdb, //0x00000b54 testq %r11, %r11 + 0x0f, 0x8e, 0x93, 0x05, 0x00, 0x00, //0x00000b57 jle LBB0_236 + 0x48, 0x01, 0xf1, //0x00000b5d addq %rsi, %rcx + 0x48, 0x01, 0xf0, //0x00000b60 addq %rsi, %rax + 0x48, 0x01, 0xf2, //0x00000b63 addq %rsi, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b66 .p2align 4, 0x90 + //0x00000b70 LBB0_165 + 0x0f, 0xb6, 0x32, //0x00000b70 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x00000b73 cmpq $32, %rsi + 0x0f, 0x87, 0x73, 0x05, 0x00, 0x00, //0x00000b77 ja LBB0_236 + 0x49, 0x0f, 0xa3, 0xf6, //0x00000b7d btq %rsi, %r14 + 0x0f, 0x83, 0x69, 0x05, 0x00, 0x00, //0x00000b81 jae LBB0_236 + 0x49, 0x89, 0x00, //0x00000b87 movq %rax, (%r8) + 0x48, 0x83, 0xc1, 0xff, //0x00000b8a addq $-1, %rcx + 0x48, 0x83, 0xc0, 0xff, //0x00000b8e addq $-1, %rax + 0x48, 0x83, 0xc2, 0xff, //0x00000b92 addq $-1, %rdx + 0x49, 0x83, 0xc3, 0xff, //0x00000b96 addq $-1, %r11 + 0x48, 0x83, 0xf9, 0x01, //0x00000b9a cmpq $1, %rcx + 0x0f, 0x8f, 0xcc, 0xff, 0xff, 0xff, //0x00000b9e jg LBB0_165 + 0xe9, 0x47, 0x05, 0x00, 0x00, //0x00000ba4 jmp LBB0_236 + //0x00000ba9 LBB0_168 + 0x48, 0x83, 0xc0, 0x04, //0x00000ba9 addq $4, %rax + 0x49, 0x3b, 0x01, //0x00000bad cmpq (%r9), %rax + 0x0f, 0x86, 0x31, 0x05, 0x00, 0x00, //0x00000bb0 jbe LBB0_206 + 0xe9, 0x35, 0x05, 0x00, 0x00, //0x00000bb6 jmp LBB0_236 + //0x00000bbb LBB0_169 + 0x4d, 0x8b, 0x01, //0x00000bbb movq (%r9), %r8 + 0x4d, 0x89, 0xc6, //0x00000bbe movq %r8, %r14 + 0x4d, 0x29, 0xde, //0x00000bc1 subq %r11, %r14 + 0x49, 0x83, 0xfe, 0x20, //0x00000bc4 cmpq $32, %r14 + 0x0f, 0x8c, 0x33, 0x10, 0x00, 0x00, //0x00000bc8 jl LBB0_316 + 0x4e, 0x8d, 0x0c, 0x28, //0x00000bce leaq (%rax,%r13), %r9 + 0x49, 0x29, 0xc0, //0x00000bd2 subq %rax, %r8 + 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x00000bd5 movl $31, %r15d + 0x45, 0x31, 0xf6, //0x00000bdb xorl %r14d, %r14d + 0x45, 0x31, 0xd2, //0x00000bde xorl %r10d, %r10d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000be1 .p2align 4, 0x90 + //0x00000bf0 LBB0_171 + 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x31, 0x01, //0x00000bf0 movdqu $1(%r9,%r14), %xmm2 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x31, 0x11, //0x00000bf7 movdqu $17(%r9,%r14), %xmm3 + 0x66, 0x0f, 0x6f, 0xea, //0x00000bfe movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00000c02 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00000c06 pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00000c0a movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00000c0e pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00000c12 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000c16 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x00000c1a orq %rsi, %rbx + 0x66, 0x0f, 0x74, 0xd1, //0x00000c1d pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000c21 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x00000c25 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000c29 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x10, //0x00000c2d shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x00000c31 orq %rdx, %rsi + 0x48, 0x89, 0xf2, //0x00000c34 movq %rsi, %rdx + 0x4c, 0x09, 0xd2, //0x00000c37 orq %r10, %rdx + 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000c3a je LBB0_173 + 0x44, 0x89, 0xd2, //0x00000c40 movl %r10d, %edx + 0xf7, 0xd2, //0x00000c43 notl %edx + 0x21, 0xf2, //0x00000c45 andl %esi, %edx + 0x8d, 0x3c, 0x12, //0x00000c47 leal (%rdx,%rdx), %edi + 0x44, 0x09, 0xd7, //0x00000c4a orl %r10d, %edi + 0x89, 0xf9, //0x00000c4d movl %edi, %ecx + 0xf7, 0xd1, //0x00000c4f notl %ecx + 0x21, 0xf1, //0x00000c51 andl %esi, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000c53 andl $-1431655766, %ecx + 0x45, 0x31, 0xd2, //0x00000c59 xorl %r10d, %r10d + 0x01, 0xd1, //0x00000c5c addl %edx, %ecx + 0x41, 0x0f, 0x92, 0xc2, //0x00000c5e setb %r10b + 0x01, 0xc9, //0x00000c62 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00000c64 xorl $1431655765, %ecx + 0x21, 0xf9, //0x00000c6a andl %edi, %ecx + 0xf7, 0xd1, //0x00000c6c notl %ecx + 0x21, 0xcb, //0x00000c6e andl %ecx, %ebx + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00000c70 jmp LBB0_174 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c75 .p2align 4, 0x90 + //0x00000c80 LBB0_173 + 0x45, 0x31, 0xd2, //0x00000c80 xorl %r10d, %r10d + //0x00000c83 LBB0_174 + 0x48, 0x85, 0xdb, //0x00000c83 testq %rbx, %rbx + 0x0f, 0x85, 0xd9, 0x08, 0x00, 0x00, //0x00000c86 jne LBB0_234 + 0x49, 0x83, 0xc6, 0x20, //0x00000c8c addq $32, %r14 + 0x4b, 0x8d, 0x0c, 0x38, //0x00000c90 leaq (%r8,%r15), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000c94 addq $-32, %rcx + 0x49, 0x83, 0xc7, 0xe0, //0x00000c98 addq $-32, %r15 + 0x48, 0x83, 0xf9, 0x3f, //0x00000c9c cmpq $63, %rcx + 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00000ca0 jg LBB0_171 + 0x4d, 0x85, 0xd2, //0x00000ca6 testq %r10, %r10 + 0x0f, 0x85, 0x0e, 0x11, 0x00, 0x00, //0x00000ca9 jne LBB0_339 + 0x4b, 0x8d, 0x04, 0x0e, //0x00000caf leaq (%r14,%r9), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00000cb3 addq $1, %rax + 0x49, 0xf7, 0xd6, //0x00000cb7 notq %r14 + 0x4d, 0x01, 0xc6, //0x00000cba addq %r8, %r14 + //0x00000cbd LBB0_178 + 0x4d, 0x85, 0xf6, //0x00000cbd testq %r14, %r14 + 0x4c, 0x8b, 0x45, 0xc8, //0x00000cc0 movq $-56(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00000cc4 movq $-64(%rbp), %r9 + 0x0f, 0x8f, 0x9e, 0x0a, 0x00, 0x00, //0x00000cc8 jg LBB0_265 + 0xe9, 0xab, 0x08, 0x00, 0x00, //0x00000cce jmp LBB0_235 + //0x00000cd3 LBB0_179 + 0x4d, 0x8b, 0x01, //0x00000cd3 movq (%r9), %r8 + 0x4d, 0x29, 0xd8, //0x00000cd6 subq %r11, %r8 + 0x4d, 0x01, 0xdd, //0x00000cd9 addq %r11, %r13 + 0x45, 0x31, 0xc9, //0x00000cdc xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00000cdf xorl %r10d, %r10d + 0x45, 0x31, 0xdb, //0x00000ce2 xorl %r11d, %r11d + 0x31, 0xd2, //0x00000ce5 xorl %edx, %edx + 0xe9, 0x6b, 0x00, 0x00, 0x00, //0x00000ce7 jmp LBB0_181 + //0x00000cec LBB0_180 + 0x49, 0xc1, 0xfe, 0x3f, //0x00000cec sarq $63, %r14 + 0x4c, 0x89, 0xf9, //0x00000cf0 movq %r15, %rcx + 0x48, 0xd1, 0xe9, //0x00000cf3 shrq %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000cf6 movabsq $6148914691236517205, %rax + 0x48, 0x21, 0xc1, //0x00000d00 andq %rax, %rcx + 0x49, 0x29, 0xcf, //0x00000d03 subq %rcx, %r15 + 0x4c, 0x89, 0xf9, //0x00000d06 movq %r15, %rcx + 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000d09 movabsq $3689348814741910323, %rax + 0x48, 0x21, 0xc1, //0x00000d13 andq %rax, %rcx + 0x49, 0xc1, 0xef, 0x02, //0x00000d16 shrq $2, %r15 + 0x49, 0x21, 0xc7, //0x00000d1a andq %rax, %r15 + 0x49, 0x01, 0xcf, //0x00000d1d addq %rcx, %r15 + 0x4c, 0x89, 0xf9, //0x00000d20 movq %r15, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00000d23 shrq $4, %rcx + 0x4c, 0x01, 0xf9, //0x00000d27 addq %r15, %rcx + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000d2a movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc1, //0x00000d34 andq %rax, %rcx + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000d37 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xc8, //0x00000d41 imulq %rax, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00000d45 shrq $56, %rcx + 0x49, 0x01, 0xcb, //0x00000d49 addq %rcx, %r11 + 0x49, 0x83, 0xc5, 0x40, //0x00000d4c addq $64, %r13 + 0x49, 0x83, 0xc0, 0xc0, //0x00000d50 addq $-64, %r8 + 0x4d, 0x89, 0xf1, //0x00000d54 movq %r14, %r9 + //0x00000d57 LBB0_181 + 0x49, 0x83, 0xf8, 0x40, //0x00000d57 cmpq $64, %r8 + 0x0f, 0x8c, 0x30, 0x02, 0x00, 0x00, //0x00000d5b jl LBB0_189 + //0x00000d61 LBB0_182 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00000d61 movdqu (%r13), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x00000d67 movdqu $16(%r13), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x00000d6d movdqu $32(%r13), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x00000d73 movdqu $48(%r13), %xmm6 + 0x66, 0x0f, 0x6f, 0xda, //0x00000d79 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000d7d pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x00000d81 pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdd, //0x00000d85 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000d89 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000d8d pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdf, //0x00000d91 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000d95 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000d99 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xde, //0x00000d9d movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000da1 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00000da5 pmovmskb %xmm3, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00000da9 shlq $48, %rbx + 0x48, 0xc1, 0xe7, 0x20, //0x00000dad shlq $32, %rdi + 0x48, 0x09, 0xdf, //0x00000db1 orq %rbx, %rdi + 0x48, 0xc1, 0xe6, 0x10, //0x00000db4 shlq $16, %rsi + 0x48, 0x09, 0xfe, //0x00000db8 orq %rdi, %rsi + 0x48, 0x09, 0xf0, //0x00000dbb orq %rsi, %rax + 0x48, 0x89, 0xc6, //0x00000dbe movq %rax, %rsi + 0x4c, 0x09, 0xd6, //0x00000dc1 orq %r10, %rsi + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00000dc4 jne LBB0_184 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000dca movq $-1, %rax + 0x45, 0x31, 0xd2, //0x00000dd1 xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00000dd4 jmp LBB0_185 + //0x00000dd9 LBB0_184 + 0x4c, 0x89, 0xd6, //0x00000dd9 movq %r10, %rsi + 0x48, 0xf7, 0xd6, //0x00000ddc notq %rsi + 0x48, 0x21, 0xc6, //0x00000ddf andq %rax, %rsi + 0x48, 0x8d, 0x1c, 0x36, //0x00000de2 leaq (%rsi,%rsi), %rbx + 0x4c, 0x09, 0xd3, //0x00000de6 orq %r10, %rbx + 0x48, 0x89, 0xdf, //0x00000de9 movq %rbx, %rdi + 0x48, 0xf7, 0xd7, //0x00000dec notq %rdi + 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000def movabsq $-6148914691236517206, %rcx + 0x48, 0x21, 0xc8, //0x00000df9 andq %rcx, %rax + 0x48, 0x21, 0xf8, //0x00000dfc andq %rdi, %rax + 0x45, 0x31, 0xd2, //0x00000dff xorl %r10d, %r10d + 0x48, 0x01, 0xf0, //0x00000e02 addq %rsi, %rax + 0x41, 0x0f, 0x92, 0xc2, //0x00000e05 setb %r10b + 0x48, 0x01, 0xc0, //0x00000e09 addq %rax, %rax + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000e0c movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xc8, //0x00000e16 xorq %rcx, %rax + 0x48, 0x21, 0xd8, //0x00000e19 andq %rbx, %rax + 0x48, 0xf7, 0xd0, //0x00000e1c notq %rax + //0x00000e1f LBB0_185 + 0x66, 0x0f, 0x6f, 0xde, //0x00000e1f movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000e23 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000e27 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00000e2b shlq $48, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x00000e2f movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000e33 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000e37 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00000e3b shlq $32, %rdi + 0x48, 0x09, 0xf7, //0x00000e3f orq %rsi, %rdi + 0x66, 0x0f, 0x6f, 0xdd, //0x00000e42 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000e46 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000e4a pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x10, //0x00000e4e shlq $16, %rsi + 0x48, 0x09, 0xfe, //0x00000e52 orq %rdi, %rsi + 0x66, 0x0f, 0x6f, 0xda, //0x00000e55 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000e59 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000e5d pmovmskb %xmm3, %edi + 0x48, 0x09, 0xf7, //0x00000e61 orq %rsi, %rdi + 0x48, 0x21, 0xc7, //0x00000e64 andq %rax, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xdf, //0x00000e67 movq %rdi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x00000e6c pclmulqdq $0, %xmm9, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x00000e73 movq %xmm3, %r14 + 0x4d, 0x31, 0xce, //0x00000e78 xorq %r9, %r14 + 0x66, 0x0f, 0x6f, 0xda, //0x00000e7b movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000e7f pcmpeqb %xmm10, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00000e84 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00000e89 movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000e8d pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00000e92 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdf, //0x00000e96 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000e9a pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00000e9f pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xde, //0x00000ea3 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00000ea7 pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00000eac pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00000eb0 shlq $48, %rcx + 0x48, 0xc1, 0xe3, 0x20, //0x00000eb4 shlq $32, %rbx + 0x48, 0x09, 0xcb, //0x00000eb8 orq %rcx, %rbx + 0x48, 0xc1, 0xe6, 0x10, //0x00000ebb shlq $16, %rsi + 0x48, 0x09, 0xde, //0x00000ebf orq %rbx, %rsi + 0x49, 0x09, 0xf7, //0x00000ec2 orq %rsi, %r15 + 0x4d, 0x89, 0xf1, //0x00000ec5 movq %r14, %r9 + 0x49, 0xf7, 0xd1, //0x00000ec8 notq %r9 + 0x4d, 0x21, 0xcf, //0x00000ecb andq %r9, %r15 + 0x66, 0x0f, 0x74, 0xd4, //0x00000ece pcmpeqb %xmm4, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00000ed2 pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x74, 0xec, //0x00000ed6 pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00000eda pmovmskb %xmm5, %ebx + 0x66, 0x0f, 0x74, 0xfc, //0x00000ede pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xff, //0x00000ee2 pmovmskb %xmm7, %edi + 0x66, 0x0f, 0x74, 0xf4, //0x00000ee6 pcmpeqb %xmm4, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x00000eea pmovmskb %xmm6, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00000eee shlq $48, %rcx + 0x48, 0xc1, 0xe7, 0x20, //0x00000ef2 shlq $32, %rdi + 0x48, 0x09, 0xcf, //0x00000ef6 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x00000ef9 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000efd orq %rdi, %rbx + 0x48, 0x09, 0xde, //0x00000f00 orq %rbx, %rsi + 0x4c, 0x21, 0xce, //0x00000f03 andq %r9, %rsi + 0x0f, 0x84, 0xe0, 0xfd, 0xff, 0xff, //0x00000f06 je LBB0_180 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00000f0c movq $-64(%rbp), %r9 + //0x00000f10 .p2align 4, 0x90 + //0x00000f10 LBB0_187 + 0x48, 0x8d, 0x5e, 0xff, //0x00000f10 leaq $-1(%rsi), %rbx + 0x48, 0x89, 0xd9, //0x00000f14 movq %rbx, %rcx + 0x4c, 0x21, 0xf9, //0x00000f17 andq %r15, %rcx + 0x48, 0x89, 0xcf, //0x00000f1a movq %rcx, %rdi + 0x48, 0xd1, 0xef, //0x00000f1d shrq %rdi + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f20 movabsq $6148914691236517205, %rax + 0x48, 0x21, 0xc7, //0x00000f2a andq %rax, %rdi + 0x48, 0x29, 0xf9, //0x00000f2d subq %rdi, %rcx + 0x48, 0x89, 0xcf, //0x00000f30 movq %rcx, %rdi + 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000f33 movabsq $3689348814741910323, %rax + 0x48, 0x21, 0xc7, //0x00000f3d andq %rax, %rdi + 0x48, 0xc1, 0xe9, 0x02, //0x00000f40 shrq $2, %rcx + 0x48, 0x21, 0xc1, //0x00000f44 andq %rax, %rcx + 0x48, 0x01, 0xf9, //0x00000f47 addq %rdi, %rcx + 0x48, 0x89, 0xcf, //0x00000f4a movq %rcx, %rdi + 0x48, 0xc1, 0xef, 0x04, //0x00000f4d shrq $4, %rdi + 0x48, 0x01, 0xcf, //0x00000f51 addq %rcx, %rdi + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000f54 movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc7, //0x00000f5e andq %rax, %rdi + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000f61 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xf8, //0x00000f6b imulq %rax, %rdi + 0x48, 0xc1, 0xef, 0x38, //0x00000f6f shrq $56, %rdi + 0x4c, 0x01, 0xdf, //0x00000f73 addq %r11, %rdi + 0x48, 0x39, 0xd7, //0x00000f76 cmpq %rdx, %rdi + 0x0f, 0x86, 0xbb, 0x05, 0x00, 0x00, //0x00000f79 jbe LBB0_233 + 0x48, 0x83, 0xc2, 0x01, //0x00000f7f addq $1, %rdx + 0x48, 0x21, 0xde, //0x00000f83 andq %rbx, %rsi + 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00000f86 jne LBB0_187 + 0xe9, 0x5b, 0xfd, 0xff, 0xff, //0x00000f8c jmp LBB0_180 + //0x00000f91 LBB0_189 + 0x4d, 0x85, 0xc0, //0x00000f91 testq %r8, %r8 + 0x0f, 0x8e, 0x0c, 0x0e, 0x00, 0x00, //0x00000f94 jle LBB0_337 + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x00000f9a movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00000fa0 movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00000fa9 movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00000fb2 movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xe8, //0x00000fbb movl %r13d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000fbe andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00000fc3 cmpl $4033, %eax + 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x00000fc8 jb LBB0_193 + 0x49, 0x83, 0xf8, 0x20, //0x00000fce cmpq $32, %r8 + 0x0f, 0x82, 0x37, 0x00, 0x00, 0x00, //0x00000fd2 jb LBB0_194 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00000fd8 movups (%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00000fdd movups %xmm2, $-176(%rbp) + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x10, //0x00000fe4 movdqu $16(%r13), %xmm2 + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00000fea movdqu %xmm2, $-160(%rbp) + 0x49, 0x83, 0xc5, 0x20, //0x00000ff2 addq $32, %r13 + 0x49, 0x8d, 0x70, 0xe0, //0x00000ff6 leaq $-32(%r8), %rsi + 0x48, 0x8d, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00000ffa leaq $-144(%rbp), %rax + 0xe9, 0x13, 0x00, 0x00, 0x00, //0x00001001 jmp LBB0_195 + //0x00001006 LBB0_193 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001006 movq $-88(%rbp), %r12 + 0xe9, 0x52, 0xfd, 0xff, 0xff, //0x0000100a jmp LBB0_182 + //0x0000100f LBB0_194 + 0x48, 0x8d, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000100f leaq $-176(%rbp), %rax + 0x4c, 0x89, 0xc6, //0x00001016 movq %r8, %rsi + //0x00001019 LBB0_195 + 0x48, 0x83, 0xfe, 0x10, //0x00001019 cmpq $16, %rsi + 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x0000101d jb LBB0_196 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00001023 movdqu (%r13), %xmm2 + 0xf3, 0x0f, 0x7f, 0x10, //0x00001029 movdqu %xmm2, (%rax) + 0x49, 0x83, 0xc5, 0x10, //0x0000102d addq $16, %r13 + 0x48, 0x83, 0xc0, 0x10, //0x00001031 addq $16, %rax + 0x48, 0x83, 0xc6, 0xf0, //0x00001035 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001039 cmpq $8, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000103d jae LBB0_203 + //0x00001043 LBB0_197 + 0x48, 0x83, 0xfe, 0x04, //0x00001043 cmpq $4, %rsi + 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00001047 jl LBB0_198 + //0x0000104d LBB0_204 + 0x41, 0x8b, 0x4d, 0x00, //0x0000104d movl (%r13), %ecx + 0x89, 0x08, //0x00001051 movl %ecx, (%rax) + 0x49, 0x83, 0xc5, 0x04, //0x00001053 addq $4, %r13 + 0x48, 0x83, 0xc0, 0x04, //0x00001057 addq $4, %rax + 0x48, 0x83, 0xc6, 0xfc, //0x0000105b addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x0000105f cmpq $2, %rsi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00001063 jae LBB0_199 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00001069 jmp LBB0_200 + //0x0000106e LBB0_196 + 0x48, 0x83, 0xfe, 0x08, //0x0000106e cmpq $8, %rsi + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00001072 jb LBB0_197 + //0x00001078 LBB0_203 + 0x49, 0x8b, 0x4d, 0x00, //0x00001078 movq (%r13), %rcx + 0x48, 0x89, 0x08, //0x0000107c movq %rcx, (%rax) + 0x49, 0x83, 0xc5, 0x08, //0x0000107f addq $8, %r13 + 0x48, 0x83, 0xc0, 0x08, //0x00001083 addq $8, %rax + 0x48, 0x83, 0xc6, 0xf8, //0x00001087 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x0000108b cmpq $4, %rsi + 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x0000108f jge LBB0_204 + //0x00001095 LBB0_198 + 0x48, 0x83, 0xfe, 0x02, //0x00001095 cmpq $2, %rsi + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00001099 jb LBB0_200 + //0x0000109f LBB0_199 + 0x41, 0x0f, 0xb7, 0x4d, 0x00, //0x0000109f movzwl (%r13), %ecx + 0x66, 0x89, 0x08, //0x000010a4 movw %cx, (%rax) + 0x49, 0x83, 0xc5, 0x02, //0x000010a7 addq $2, %r13 + 0x48, 0x83, 0xc0, 0x02, //0x000010ab addq $2, %rax + 0x48, 0x83, 0xc6, 0xfe, //0x000010af addq $-2, %rsi + //0x000010b3 LBB0_200 + 0x4c, 0x89, 0xef, //0x000010b3 movq %r13, %rdi + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000010b6 leaq $-176(%rbp), %r13 + 0x48, 0x85, 0xf6, //0x000010bd testq %rsi, %rsi + 0x4c, 0x8b, 0x65, 0xa8, //0x000010c0 movq $-88(%rbp), %r12 + 0x0f, 0x84, 0x97, 0xfc, 0xff, 0xff, //0x000010c4 je LBB0_182 + 0x8a, 0x0f, //0x000010ca movb (%rdi), %cl + 0x88, 0x08, //0x000010cc movb %cl, (%rax) + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000010ce leaq $-176(%rbp), %r13 + 0xe9, 0x87, 0xfc, 0xff, 0xff, //0x000010d5 jmp LBB0_182 + //0x000010da LBB0_205 + 0x48, 0x83, 0xc0, 0x05, //0x000010da addq $5, %rax + 0x49, 0x3b, 0x01, //0x000010de cmpq (%r9), %rax + 0x0f, 0x87, 0x09, 0x00, 0x00, 0x00, //0x000010e1 ja LBB0_236 + //0x000010e7 LBB0_206 + 0x49, 0x89, 0x00, //0x000010e7 movq %rax, (%r8) + 0x49, 0x89, 0xc3, //0x000010ea movq %rax, %r11 + 0x90, 0x90, 0x90, //0x000010ed .p2align 4, 0x90 + //0x000010f0 LBB0_236 + 0x4d, 0x8b, 0x2c, 0x24, //0x000010f0 movq (%r12), %r13 + 0x49, 0x8b, 0x44, 0x24, 0x08, //0x000010f4 movq $8(%r12), %rax + 0x49, 0x39, 0xc3, //0x000010f9 cmpq %rax, %r11 + 0x0f, 0x83, 0x9e, 0x04, 0x00, 0x00, //0x000010fc jae LBB0_241 + //0x00001102 LBB0_237 + 0x43, 0x8a, 0x4c, 0x1d, 0x00, //0x00001102 movb (%r13,%r11), %cl + 0x80, 0xf9, 0x0d, //0x00001107 cmpb $13, %cl + 0x0f, 0x84, 0x90, 0x04, 0x00, 0x00, //0x0000110a je LBB0_241 + 0x80, 0xf9, 0x20, //0x00001110 cmpb $32, %cl + 0x0f, 0x84, 0x87, 0x04, 0x00, 0x00, //0x00001113 je LBB0_241 + 0x80, 0xc1, 0xf7, //0x00001119 addb $-9, %cl + 0x80, 0xf9, 0x01, //0x0000111c cmpb $1, %cl + 0x0f, 0x86, 0x7b, 0x04, 0x00, 0x00, //0x0000111f jbe LBB0_241 + 0x4c, 0x89, 0xd9, //0x00001125 movq %r11, %rcx + 0xe9, 0x68, 0x05, 0x00, 0x00, //0x00001128 jmp LBB0_262 + //0x0000112d LBB0_207 + 0x4d, 0x8b, 0x01, //0x0000112d movq (%r9), %r8 + 0x4d, 0x29, 0xd8, //0x00001130 subq %r11, %r8 + 0x4d, 0x01, 0xdd, //0x00001133 addq %r11, %r13 + 0x45, 0x31, 0xc9, //0x00001136 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001139 xorl %r10d, %r10d + 0x45, 0x31, 0xdb, //0x0000113c xorl %r11d, %r11d + 0x31, 0xd2, //0x0000113f xorl %edx, %edx + 0xe9, 0x6b, 0x00, 0x00, 0x00, //0x00001141 jmp LBB0_209 + //0x00001146 LBB0_208 + 0x49, 0xc1, 0xfe, 0x3f, //0x00001146 sarq $63, %r14 + 0x4c, 0x89, 0xf9, //0x0000114a movq %r15, %rcx + 0x48, 0xd1, 0xe9, //0x0000114d shrq %rcx + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001150 movabsq $6148914691236517205, %rax + 0x48, 0x21, 0xc1, //0x0000115a andq %rax, %rcx + 0x49, 0x29, 0xcf, //0x0000115d subq %rcx, %r15 + 0x4c, 0x89, 0xf9, //0x00001160 movq %r15, %rcx + 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001163 movabsq $3689348814741910323, %rax + 0x48, 0x21, 0xc1, //0x0000116d andq %rax, %rcx + 0x49, 0xc1, 0xef, 0x02, //0x00001170 shrq $2, %r15 + 0x49, 0x21, 0xc7, //0x00001174 andq %rax, %r15 + 0x49, 0x01, 0xcf, //0x00001177 addq %rcx, %r15 + 0x4c, 0x89, 0xf9, //0x0000117a movq %r15, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x0000117d shrq $4, %rcx + 0x4c, 0x01, 0xf9, //0x00001181 addq %r15, %rcx + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001184 movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc1, //0x0000118e andq %rax, %rcx + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001191 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xc8, //0x0000119b imulq %rax, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x0000119f shrq $56, %rcx + 0x49, 0x01, 0xcb, //0x000011a3 addq %rcx, %r11 + 0x49, 0x83, 0xc5, 0x40, //0x000011a6 addq $64, %r13 + 0x49, 0x83, 0xc0, 0xc0, //0x000011aa addq $-64, %r8 + 0x4d, 0x89, 0xf1, //0x000011ae movq %r14, %r9 + //0x000011b1 LBB0_209 + 0x49, 0x83, 0xf8, 0x40, //0x000011b1 cmpq $64, %r8 + 0x0f, 0x8c, 0x36, 0x02, 0x00, 0x00, //0x000011b5 jl LBB0_217 + //0x000011bb LBB0_210 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x000011bb movdqu (%r13), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x000011c1 movdqu $16(%r13), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x000011c7 movdqu $32(%r13), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x000011cd movdqu $48(%r13), %xmm6 + 0x66, 0x0f, 0x6f, 0xda, //0x000011d3 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000011d7 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x000011db pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdd, //0x000011df movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000011e3 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x000011e7 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdf, //0x000011eb movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000011ef pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000011f3 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xde, //0x000011f7 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000011fb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x000011ff pmovmskb %xmm3, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00001203 shlq $48, %rbx + 0x48, 0xc1, 0xe7, 0x20, //0x00001207 shlq $32, %rdi + 0x48, 0x09, 0xdf, //0x0000120b orq %rbx, %rdi + 0x48, 0xc1, 0xe6, 0x10, //0x0000120e shlq $16, %rsi + 0x48, 0x09, 0xfe, //0x00001212 orq %rdi, %rsi + 0x48, 0x09, 0xf0, //0x00001215 orq %rsi, %rax + 0x48, 0x89, 0xc6, //0x00001218 movq %rax, %rsi + 0x4c, 0x09, 0xd6, //0x0000121b orq %r10, %rsi + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000121e jne LBB0_212 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00001224 movq $-1, %rax + 0x45, 0x31, 0xd2, //0x0000122b xorl %r10d, %r10d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000122e jmp LBB0_213 + //0x00001233 LBB0_212 + 0x4c, 0x89, 0xd6, //0x00001233 movq %r10, %rsi + 0x48, 0xf7, 0xd6, //0x00001236 notq %rsi + 0x48, 0x21, 0xc6, //0x00001239 andq %rax, %rsi + 0x48, 0x8d, 0x1c, 0x36, //0x0000123c leaq (%rsi,%rsi), %rbx + 0x4c, 0x09, 0xd3, //0x00001240 orq %r10, %rbx + 0x48, 0x89, 0xdf, //0x00001243 movq %rbx, %rdi + 0x48, 0xf7, 0xd7, //0x00001246 notq %rdi + 0x48, 0xb9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001249 movabsq $-6148914691236517206, %rcx + 0x48, 0x21, 0xc8, //0x00001253 andq %rcx, %rax + 0x48, 0x21, 0xf8, //0x00001256 andq %rdi, %rax + 0x45, 0x31, 0xd2, //0x00001259 xorl %r10d, %r10d + 0x48, 0x01, 0xf0, //0x0000125c addq %rsi, %rax + 0x41, 0x0f, 0x92, 0xc2, //0x0000125f setb %r10b + 0x48, 0x01, 0xc0, //0x00001263 addq %rax, %rax + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001266 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xc8, //0x00001270 xorq %rcx, %rax + 0x48, 0x21, 0xd8, //0x00001273 andq %rbx, %rax + 0x48, 0xf7, 0xd0, //0x00001276 notq %rax + //0x00001279 LBB0_213 + 0x66, 0x0f, 0x6f, 0xde, //0x00001279 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000127d pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001281 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00001285 shlq $48, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x00001289 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000128d pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001291 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00001295 shlq $32, %rdi + 0x48, 0x09, 0xf7, //0x00001299 orq %rsi, %rdi + 0x66, 0x0f, 0x6f, 0xdd, //0x0000129c movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000012a0 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x000012a4 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x10, //0x000012a8 shlq $16, %rsi + 0x48, 0x09, 0xfe, //0x000012ac orq %rdi, %rsi + 0x66, 0x0f, 0x6f, 0xda, //0x000012af movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000012b3 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000012b7 pmovmskb %xmm3, %edi + 0x48, 0x09, 0xf7, //0x000012bb orq %rsi, %rdi + 0x48, 0x21, 0xc7, //0x000012be andq %rax, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xdf, //0x000012c1 movq %rdi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x000012c6 pclmulqdq $0, %xmm9, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x000012cd movq %xmm3, %r14 + 0x4d, 0x31, 0xce, //0x000012d2 xorq %r9, %r14 + 0x66, 0x0f, 0x6f, 0xda, //0x000012d5 movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000012d9 pcmpeqb %xmm11, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x000012de pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x000012e3 movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000012e7 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x000012ec pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdf, //0x000012f0 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x000012f4 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x000012f9 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xde, //0x000012fd movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001301 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001306 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x0000130a shlq $48, %rcx + 0x48, 0xc1, 0xe3, 0x20, //0x0000130e shlq $32, %rbx + 0x48, 0x09, 0xcb, //0x00001312 orq %rcx, %rbx + 0x48, 0xc1, 0xe6, 0x10, //0x00001315 shlq $16, %rsi + 0x48, 0x09, 0xde, //0x00001319 orq %rbx, %rsi + 0x49, 0x09, 0xf7, //0x0000131c orq %rsi, %r15 + 0x4d, 0x89, 0xf1, //0x0000131f movq %r14, %r9 + 0x49, 0xf7, 0xd1, //0x00001322 notq %r9 + 0x4d, 0x21, 0xcf, //0x00001325 andq %r9, %r15 + 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00001328 pcmpeqb %xmm12, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x0000132d pmovmskb %xmm2, %esi + 0x66, 0x41, 0x0f, 0x74, 0xec, //0x00001331 pcmpeqb %xmm12, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001336 pmovmskb %xmm5, %ebx + 0x66, 0x41, 0x0f, 0x74, 0xfc, //0x0000133a pcmpeqb %xmm12, %xmm7 + 0x66, 0x0f, 0xd7, 0xff, //0x0000133f pmovmskb %xmm7, %edi + 0x66, 0x41, 0x0f, 0x74, 0xf4, //0x00001343 pcmpeqb %xmm12, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x00001348 pmovmskb %xmm6, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x0000134c shlq $48, %rcx + 0x48, 0xc1, 0xe7, 0x20, //0x00001350 shlq $32, %rdi + 0x48, 0x09, 0xcf, //0x00001354 orq %rcx, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x00001357 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x0000135b orq %rdi, %rbx + 0x48, 0x09, 0xde, //0x0000135e orq %rbx, %rsi + 0x4c, 0x21, 0xce, //0x00001361 andq %r9, %rsi + 0x0f, 0x84, 0xdc, 0xfd, 0xff, 0xff, //0x00001364 je LBB0_208 + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000136a movq $-64(%rbp), %r9 + 0x90, 0x90, //0x0000136e .p2align 4, 0x90 + //0x00001370 LBB0_215 + 0x48, 0x8d, 0x5e, 0xff, //0x00001370 leaq $-1(%rsi), %rbx + 0x48, 0x89, 0xd9, //0x00001374 movq %rbx, %rcx + 0x4c, 0x21, 0xf9, //0x00001377 andq %r15, %rcx + 0x48, 0x89, 0xcf, //0x0000137a movq %rcx, %rdi + 0x48, 0xd1, 0xef, //0x0000137d shrq %rdi + 0x48, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001380 movabsq $6148914691236517205, %rax + 0x48, 0x21, 0xc7, //0x0000138a andq %rax, %rdi + 0x48, 0x29, 0xf9, //0x0000138d subq %rdi, %rcx + 0x48, 0x89, 0xcf, //0x00001390 movq %rcx, %rdi + 0x48, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001393 movabsq $3689348814741910323, %rax + 0x48, 0x21, 0xc7, //0x0000139d andq %rax, %rdi + 0x48, 0xc1, 0xe9, 0x02, //0x000013a0 shrq $2, %rcx + 0x48, 0x21, 0xc1, //0x000013a4 andq %rax, %rcx + 0x48, 0x01, 0xf9, //0x000013a7 addq %rdi, %rcx + 0x48, 0x89, 0xcf, //0x000013aa movq %rcx, %rdi + 0x48, 0xc1, 0xef, 0x04, //0x000013ad shrq $4, %rdi + 0x48, 0x01, 0xcf, //0x000013b1 addq %rcx, %rdi + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000013b4 movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc7, //0x000013be andq %rax, %rdi + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000013c1 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xf8, //0x000013cb imulq %rax, %rdi + 0x48, 0xc1, 0xef, 0x38, //0x000013cf shrq $56, %rdi + 0x4c, 0x01, 0xdf, //0x000013d3 addq %r11, %rdi + 0x48, 0x39, 0xd7, //0x000013d6 cmpq %rdx, %rdi + 0x0f, 0x86, 0x5b, 0x01, 0x00, 0x00, //0x000013d9 jbe LBB0_233 + 0x48, 0x83, 0xc2, 0x01, //0x000013df addq $1, %rdx + 0x48, 0x21, 0xde, //0x000013e3 andq %rbx, %rsi + 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x000013e6 jne LBB0_215 + 0xe9, 0x55, 0xfd, 0xff, 0xff, //0x000013ec jmp LBB0_208 + //0x000013f1 LBB0_217 + 0x4d, 0x85, 0xc0, //0x000013f1 testq %r8, %r8 + 0x0f, 0x8e, 0xac, 0x09, 0x00, 0x00, //0x000013f4 jle LBB0_337 + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x000013fa movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00001400 movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00001409 movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00001412 movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xe8, //0x0000141b movl %r13d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x0000141e andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00001423 cmpl $4033, %eax + 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x00001428 jb LBB0_221 + 0x49, 0x83, 0xf8, 0x20, //0x0000142e cmpq $32, %r8 + 0x0f, 0x82, 0x37, 0x00, 0x00, 0x00, //0x00001432 jb LBB0_222 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00001438 movups (%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x0000143d movups %xmm2, $-176(%rbp) + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x10, //0x00001444 movdqu $16(%r13), %xmm2 + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000144a movdqu %xmm2, $-160(%rbp) + 0x49, 0x83, 0xc5, 0x20, //0x00001452 addq $32, %r13 + 0x49, 0x8d, 0x70, 0xe0, //0x00001456 leaq $-32(%r8), %rsi + 0x48, 0x8d, 0x85, 0x70, 0xff, 0xff, 0xff, //0x0000145a leaq $-144(%rbp), %rax + 0xe9, 0x13, 0x00, 0x00, 0x00, //0x00001461 jmp LBB0_223 + //0x00001466 LBB0_221 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001466 movq $-88(%rbp), %r12 + 0xe9, 0x4c, 0xfd, 0xff, 0xff, //0x0000146a jmp LBB0_210 + //0x0000146f LBB0_222 + 0x48, 0x8d, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000146f leaq $-176(%rbp), %rax + 0x4c, 0x89, 0xc6, //0x00001476 movq %r8, %rsi + //0x00001479 LBB0_223 + 0x48, 0x83, 0xfe, 0x10, //0x00001479 cmpq $16, %rsi + 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x0000147d jb LBB0_224 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00001483 movdqu (%r13), %xmm2 + 0xf3, 0x0f, 0x7f, 0x10, //0x00001489 movdqu %xmm2, (%rax) + 0x49, 0x83, 0xc5, 0x10, //0x0000148d addq $16, %r13 + 0x48, 0x83, 0xc0, 0x10, //0x00001491 addq $16, %rax + 0x48, 0x83, 0xc6, 0xf0, //0x00001495 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001499 cmpq $8, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000149d jae LBB0_231 + //0x000014a3 LBB0_225 + 0x48, 0x83, 0xfe, 0x04, //0x000014a3 cmpq $4, %rsi + 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x000014a7 jl LBB0_226 + //0x000014ad LBB0_232 + 0x41, 0x8b, 0x4d, 0x00, //0x000014ad movl (%r13), %ecx + 0x89, 0x08, //0x000014b1 movl %ecx, (%rax) + 0x49, 0x83, 0xc5, 0x04, //0x000014b3 addq $4, %r13 + 0x48, 0x83, 0xc0, 0x04, //0x000014b7 addq $4, %rax + 0x48, 0x83, 0xc6, 0xfc, //0x000014bb addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x000014bf cmpq $2, %rsi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x000014c3 jae LBB0_227 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x000014c9 jmp LBB0_228 + //0x000014ce LBB0_224 + 0x48, 0x83, 0xfe, 0x08, //0x000014ce cmpq $8, %rsi + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x000014d2 jb LBB0_225 + //0x000014d8 LBB0_231 + 0x49, 0x8b, 0x4d, 0x00, //0x000014d8 movq (%r13), %rcx + 0x48, 0x89, 0x08, //0x000014dc movq %rcx, (%rax) + 0x49, 0x83, 0xc5, 0x08, //0x000014df addq $8, %r13 + 0x48, 0x83, 0xc0, 0x08, //0x000014e3 addq $8, %rax + 0x48, 0x83, 0xc6, 0xf8, //0x000014e7 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x000014eb cmpq $4, %rsi + 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x000014ef jge LBB0_232 + //0x000014f5 LBB0_226 + 0x48, 0x83, 0xfe, 0x02, //0x000014f5 cmpq $2, %rsi + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x000014f9 jb LBB0_228 + //0x000014ff LBB0_227 + 0x41, 0x0f, 0xb7, 0x4d, 0x00, //0x000014ff movzwl (%r13), %ecx + 0x66, 0x89, 0x08, //0x00001504 movw %cx, (%rax) + 0x49, 0x83, 0xc5, 0x02, //0x00001507 addq $2, %r13 + 0x48, 0x83, 0xc0, 0x02, //0x0000150b addq $2, %rax + 0x48, 0x83, 0xc6, 0xfe, //0x0000150f addq $-2, %rsi + //0x00001513 LBB0_228 + 0x4c, 0x89, 0xef, //0x00001513 movq %r13, %rdi + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00001516 leaq $-176(%rbp), %r13 + 0x48, 0x85, 0xf6, //0x0000151d testq %rsi, %rsi + 0x4c, 0x8b, 0x65, 0xa8, //0x00001520 movq $-88(%rbp), %r12 + 0x0f, 0x84, 0x91, 0xfc, 0xff, 0xff, //0x00001524 je LBB0_210 + 0x8a, 0x0f, //0x0000152a movb (%rdi), %cl + 0x88, 0x08, //0x0000152c movb %cl, (%rax) + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x0000152e leaq $-176(%rbp), %r13 + 0xe9, 0x81, 0xfc, 0xff, 0xff, //0x00001535 jmp LBB0_210 + //0x0000153a LBB0_233 + 0x49, 0x8b, 0x01, //0x0000153a movq (%r9), %rax + 0x48, 0x0f, 0xbc, 0xce, //0x0000153d bsfq %rsi, %rcx + 0x4c, 0x29, 0xc1, //0x00001541 subq %r8, %rcx + 0x4c, 0x8d, 0x1c, 0x01, //0x00001544 leaq (%rcx,%rax), %r11 + 0x49, 0x83, 0xc3, 0x01, //0x00001548 addq $1, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x0000154c movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00001550 movq %r11, (%r8) + 0x49, 0x8b, 0x01, //0x00001553 movq (%r9), %rax + 0x49, 0x39, 0xc3, //0x00001556 cmpq %rax, %r11 + 0x4c, 0x0f, 0x47, 0xd8, //0x00001559 cmovaq %rax, %r11 + 0x4d, 0x89, 0x18, //0x0000155d movq %r11, (%r8) + 0xe9, 0x19, 0x00, 0x00, 0x00, //0x00001560 jmp LBB0_235 + //0x00001565 LBB0_234 + 0x0f, 0xbc, 0xcb, //0x00001565 bsfl %ebx, %ecx + 0x48, 0x01, 0xc1, //0x00001568 addq %rax, %rcx + 0x4d, 0x8d, 0x1c, 0x0e, //0x0000156b leaq (%r14,%rcx), %r11 + 0x49, 0x83, 0xc3, 0x02, //0x0000156f addq $2, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00001573 movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00001577 movq %r11, (%r8) + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000157a movq $-64(%rbp), %r9 + //0x0000157e LBB0_235 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000157e movabsq $4294977024, %r14 + 0x4d, 0x8b, 0x2c, 0x24, //0x00001588 movq (%r12), %r13 + 0x49, 0x8b, 0x44, 0x24, 0x08, //0x0000158c movq $8(%r12), %rax + 0x49, 0x39, 0xc3, //0x00001591 cmpq %rax, %r11 + 0x0f, 0x82, 0x68, 0xfb, 0xff, 0xff, //0x00001594 jb LBB0_237 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000159a .p2align 4, 0x90 + //0x000015a0 LBB0_241 + 0x49, 0x8d, 0x4b, 0x01, //0x000015a0 leaq $1(%r11), %rcx + 0x48, 0x39, 0xc1, //0x000015a4 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000015a7 jae LBB0_245 + 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x000015ad movb (%r13,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x000015b2 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000015b5 je LBB0_245 + 0x80, 0xfa, 0x20, //0x000015bb cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000015be je LBB0_245 + 0x80, 0xc2, 0xf7, //0x000015c4 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000015c7 cmpb $1, %dl + 0x0f, 0x87, 0xc5, 0x00, 0x00, 0x00, //0x000015ca ja LBB0_262 + //0x000015d0 .p2align 4, 0x90 + //0x000015d0 LBB0_245 + 0x49, 0x8d, 0x4b, 0x02, //0x000015d0 leaq $2(%r11), %rcx + 0x48, 0x39, 0xc1, //0x000015d4 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000015d7 jae LBB0_249 + 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x000015dd movb (%r13,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x000015e2 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000015e5 je LBB0_249 + 0x80, 0xfa, 0x20, //0x000015eb cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000015ee je LBB0_249 + 0x80, 0xc2, 0xf7, //0x000015f4 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x000015f7 cmpb $1, %dl + 0x0f, 0x87, 0x95, 0x00, 0x00, 0x00, //0x000015fa ja LBB0_262 + //0x00001600 .p2align 4, 0x90 + //0x00001600 LBB0_249 + 0x49, 0x8d, 0x4b, 0x03, //0x00001600 leaq $3(%r11), %rcx + 0x48, 0x39, 0xc1, //0x00001604 cmpq %rax, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001607 jae LBB0_253 + 0x41, 0x8a, 0x54, 0x0d, 0x00, //0x0000160d movb (%r13,%rcx), %dl + 0x80, 0xfa, 0x0d, //0x00001612 cmpb $13, %dl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00001615 je LBB0_253 + 0x80, 0xfa, 0x20, //0x0000161b cmpb $32, %dl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000161e je LBB0_253 + 0x80, 0xc2, 0xf7, //0x00001624 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00001627 cmpb $1, %dl + 0x0f, 0x87, 0x65, 0x00, 0x00, 0x00, //0x0000162a ja LBB0_262 + //0x00001630 .p2align 4, 0x90 + //0x00001630 LBB0_253 + 0x49, 0x8d, 0x4b, 0x04, //0x00001630 leaq $4(%r11), %rcx + 0x48, 0x39, 0xc8, //0x00001634 cmpq %rcx, %rax + 0x0f, 0x86, 0x1b, 0x31, 0x00, 0x00, //0x00001637 jbe LBB0_871 + 0x48, 0x39, 0xc8, //0x0000163d cmpq %rcx, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00001640 je LBB0_259 + 0x4a, 0x8d, 0x14, 0x28, //0x00001646 leaq (%rax,%r13), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000164a .p2align 4, 0x90 + //0x00001650 LBB0_256 + 0x41, 0x0f, 0xbe, 0x74, 0x0d, 0x00, //0x00001650 movsbl (%r13,%rcx), %esi + 0x83, 0xfe, 0x20, //0x00001656 cmpl $32, %esi + 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00001659 ja LBB0_261 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000165f btq %rsi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001663 jae LBB0_261 + 0x48, 0x83, 0xc1, 0x01, //0x00001669 addq $1, %rcx + 0x48, 0x39, 0xc8, //0x0000166d cmpq %rcx, %rax + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00001670 jne LBB0_256 + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00001676 jmp LBB0_260 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000167b .p2align 4, 0x90 + //0x00001680 LBB0_259 + 0x4c, 0x01, 0xe9, //0x00001680 addq %r13, %rcx + 0x48, 0x89, 0xca, //0x00001683 movq %rcx, %rdx + //0x00001686 LBB0_260 + 0x4c, 0x29, 0xea, //0x00001686 subq %r13, %rdx + 0x48, 0x89, 0xd1, //0x00001689 movq %rdx, %rcx + //0x0000168c LBB0_261 + 0x48, 0x39, 0xc1, //0x0000168c cmpq %rax, %rcx + 0x0f, 0x83, 0xc6, 0x30, 0x00, 0x00, //0x0000168f jae LBB0_872 + //0x00001695 LBB0_262 + 0x4c, 0x8d, 0x59, 0x01, //0x00001695 leaq $1(%rcx), %r11 + 0x4d, 0x89, 0x18, //0x00001699 movq %r11, (%r8) + 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x0000169c movb (%r13,%rcx), %al + 0x3c, 0x2c, //0x000016a1 cmpb $44, %al + 0x0f, 0x84, 0xa5, 0xec, 0xff, 0xff, //0x000016a3 je LBB0_33 + 0xe9, 0x9f, 0x19, 0x00, 0x00, //0x000016a9 jmp LBB0_263 + //0x000016ae LBB0_67 + 0x4d, 0x01, 0xeb, //0x000016ae addq %r13, %r11 + 0x4c, 0x8b, 0x65, 0xa8, //0x000016b1 movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000016b5 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0xbd, 0x40, 0xff, 0xff, 0xff, //0x000016bf movq $-192(%rbp), %r15 + 0x49, 0x83, 0xf8, 0x20, //0x000016c6 cmpq $32, %r8 + 0x0f, 0x82, 0xa4, 0x05, 0x00, 0x00, //0x000016ca jb LBB0_321 + //0x000016d0 LBB0_68 + 0xf3, 0x41, 0x0f, 0x6f, 0x13, //0x000016d0 movdqu (%r11), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x5b, 0x10, //0x000016d5 movdqu $16(%r11), %xmm3 + 0x66, 0x0f, 0x6f, 0xea, //0x000016db movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000016df pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000016e3 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xeb, //0x000016e7 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000016eb pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000016ef pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd1, //0x000016f3 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x000016f7 pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x74, 0xd9, //0x000016fb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x000016ff pmovmskb %xmm3, %edx + 0x48, 0xc1, 0xe1, 0x10, //0x00001703 shlq $16, %rcx + 0x48, 0x09, 0xcf, //0x00001707 orq %rcx, %rdi + 0x48, 0xc1, 0xe2, 0x10, //0x0000170a shlq $16, %rdx + 0x48, 0x09, 0xd6, //0x0000170e orq %rdx, %rsi + 0x0f, 0x85, 0xf3, 0x04, 0x00, 0x00, //0x00001711 jne LBB0_317 + 0x4d, 0x85, 0xc9, //0x00001717 testq %r9, %r9 + 0x0f, 0x85, 0x06, 0x05, 0x00, 0x00, //0x0000171a jne LBB0_319 + 0x45, 0x31, 0xc9, //0x00001720 xorl %r9d, %r9d + 0x48, 0x85, 0xff, //0x00001723 testq %rdi, %rdi + 0x0f, 0x84, 0x40, 0x05, 0x00, 0x00, //0x00001726 je LBB0_320 + //0x0000172c LBB0_71 + 0x48, 0x0f, 0xbc, 0xcf, //0x0000172c bsfq %rdi, %rcx + 0x4d, 0x29, 0xeb, //0x00001730 subq %r13, %r11 + 0x49, 0x01, 0xcb, //0x00001733 addq %rcx, %r11 + 0x49, 0x83, 0xc3, 0x01, //0x00001736 addq $1, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x0000173a movq $-56(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000173e movq $-64(%rbp), %r9 + 0x48, 0x8b, 0x4d, 0x98, //0x00001742 movq $-104(%rbp), %rcx + 0x4d, 0x85, 0xdb, //0x00001746 testq %r11, %r11 + 0x0f, 0x89, 0x22, 0xef, 0xff, 0xff, //0x00001749 jns LBB0_78 + 0xe9, 0xa1, 0x3c, 0x00, 0x00, //0x0000174f jmp LBB0_976 + //0x00001754 LBB0_264 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00001754 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x0000175b movl $2, %esi + 0x48, 0x01, 0xf0, //0x00001760 addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00001763 addq %rdx, %r14 + 0x0f, 0x8e, 0x12, 0xfe, 0xff, 0xff, //0x00001766 jle LBB0_235 + //0x0000176c LBB0_265 + 0x0f, 0xb6, 0x10, //0x0000176c movzbl (%rax), %edx + 0x80, 0xfa, 0x5c, //0x0000176f cmpb $92, %dl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00001772 je LBB0_264 + 0x80, 0xfa, 0x22, //0x00001778 cmpb $34, %dl + 0x0f, 0x84, 0x52, 0x04, 0x00, 0x00, //0x0000177b je LBB0_313 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001781 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001788 movl $1, %esi + 0x48, 0x01, 0xf0, //0x0000178d addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00001790 addq %rdx, %r14 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00001793 jg LBB0_265 + 0xe9, 0xe0, 0xfd, 0xff, 0xff, //0x00001799 jmp LBB0_235 + //0x0000179e LBB0_268 + 0x48, 0xc7, 0x45, 0x98, 0xff, 0xff, 0xff, 0xff, //0x0000179e movq $-1, $-104(%rbp) + 0x45, 0x31, 0xc9, //0x000017a6 xorl %r9d, %r9d + 0x49, 0x83, 0xf8, 0x20, //0x000017a9 cmpq $32, %r8 + 0x0f, 0x83, 0x1d, 0xff, 0xff, 0xff, //0x000017ad jae LBB0_68 + 0xe9, 0xbc, 0x04, 0x00, 0x00, //0x000017b3 jmp LBB0_321 + //0x000017b8 LBB0_269 + 0x48, 0xc7, 0x85, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //0x000017b8 movq $0, $-176(%rbp) + 0x49, 0x8d, 0x43, 0xff, //0x000017c3 leaq $-1(%r11), %rax + 0x4f, 0x8d, 0x04, 0x2b, //0x000017c7 leaq (%r11,%r13), %r8 + 0x49, 0x83, 0xc0, 0xff, //0x000017cb addq $-1, %r8 + 0x48, 0x8b, 0x4d, 0xb8, //0x000017cf movq $-72(%rbp), %rcx + 0x4d, 0x8d, 0x14, 0x0f, //0x000017d3 leaq (%r15,%rcx), %r10 + 0x48, 0x39, 0x85, 0x38, 0xff, 0xff, 0xff, //0x000017d7 cmpq %rax, $-200(%rbp) + 0x48, 0x8b, 0x7d, 0xd0, //0x000017de movq $-48(%rbp), %rdi + 0x0f, 0x8d, 0xd4, 0x03, 0x00, 0x00, //0x000017e2 jge LBB0_311 + 0x48, 0x85, 0xc9, //0x000017e8 testq %rcx, %rcx + 0x0f, 0x8e, 0xcb, 0x03, 0x00, 0x00, //0x000017eb jle LBB0_311 + //0x000017f1 LBB0_271 + 0x8a, 0x07, //0x000017f1 movb (%rdi), %al + 0x3c, 0x5c, //0x000017f3 cmpb $92, %al + 0x0f, 0x85, 0x5c, 0x00, 0x00, 0x00, //0x000017f5 jne LBB0_276 + 0x4c, 0x89, 0xc6, //0x000017fb movq %r8, %rsi + 0x48, 0x29, 0xfe, //0x000017fe subq %rdi, %rsi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00001801 movq $-1, %rax + 0x48, 0x85, 0xf6, //0x00001808 testq %rsi, %rsi + 0x0f, 0x8e, 0x5d, 0x3d, 0x00, 0x00, //0x0000180b jle LBB0_995 + 0x0f, 0xb6, 0x4f, 0x01, //0x00001811 movzbl $1(%rdi), %ecx + 0x48, 0x8d, 0x15, 0x74, 0x46, 0x00, 0x00, //0x00001815 leaq $18036(%rip), %rdx /* __UnquoteTab+0(%rip) */ + 0x8a, 0x0c, 0x11, //0x0000181c movb (%rcx,%rdx), %cl + 0x80, 0xf9, 0xff, //0x0000181f cmpb $-1, %cl + 0x0f, 0x84, 0x45, 0x00, 0x00, 0x00, //0x00001822 je LBB0_278 + 0x84, 0xc9, //0x00001828 testb %cl, %cl + 0x0f, 0x84, 0x2a, 0x3d, 0x00, 0x00, //0x0000182a je LBB0_993 + 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001830 movb %cl, $-176(%rbp) + 0x48, 0x83, 0xc7, 0x02, //0x00001836 addq $2, %rdi + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x0000183a movl $1, %esi + 0x48, 0x8d, 0x04, 0x2e, //0x0000183f leaq (%rsi,%rbp), %rax + 0x48, 0x05, 0x50, 0xff, 0xff, 0xff, //0x00001843 addq $-176, %rax + 0x4d, 0x39, 0xd7, //0x00001849 cmpq %r10, %r15 + 0x0f, 0x82, 0x4f, 0x01, 0x00, 0x00, //0x0000184c jb LBB0_288 + 0xe9, 0x43, 0x03, 0x00, 0x00, //0x00001852 jmp LBB0_307 + //0x00001857 LBB0_276 + 0x41, 0x3a, 0x07, //0x00001857 cmpb (%r15), %al + 0x0f, 0x85, 0x9a, 0x03, 0x00, 0x00, //0x0000185a jne LBB0_315 + 0x48, 0x83, 0xc7, 0x01, //0x00001860 addq $1, %rdi + 0x49, 0x83, 0xc7, 0x01, //0x00001864 addq $1, %r15 + 0xe9, 0x3d, 0x03, 0x00, 0x00, //0x00001868 jmp LBB0_309 + //0x0000186d LBB0_278 + 0x48, 0x83, 0xfe, 0x04, //0x0000186d cmpq $4, %rsi + 0x0f, 0x8c, 0xf3, 0x3c, 0x00, 0x00, //0x00001871 jl LBB0_994 + 0x4c, 0x8d, 0x4f, 0x02, //0x00001877 leaq $2(%rdi), %r9 + 0x48, 0x89, 0x7d, 0xd0, //0x0000187b movq %rdi, $-48(%rbp) + 0x8b, 0x7f, 0x02, //0x0000187f movl $2(%rdi), %edi + 0x89, 0xf9, //0x00001882 movl %edi, %ecx + 0xf7, 0xd1, //0x00001884 notl %ecx + 0x8d, 0x9f, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001886 leal $-808464432(%rdi), %ebx + 0x81, 0xe1, 0x80, 0x80, 0x80, 0x80, //0x0000188c andl $-2139062144, %ecx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00001892 movq $-2, %rax + 0x85, 0xd9, //0x00001899 testl %ebx, %ecx + 0x0f, 0x85, 0x97, 0x3c, 0x00, 0x00, //0x0000189b jne LBB0_1003 + 0x8d, 0x9f, 0x19, 0x19, 0x19, 0x19, //0x000018a1 leal $421075225(%rdi), %ebx + 0x09, 0xfb, //0x000018a7 orl %edi, %ebx + 0xf7, 0xc3, 0x80, 0x80, 0x80, 0x80, //0x000018a9 testl $-2139062144, %ebx + 0x0f, 0x85, 0x83, 0x3c, 0x00, 0x00, //0x000018af jne LBB0_1003 + 0x89, 0xfb, //0x000018b5 movl %edi, %ebx + 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x000018b7 andl $2139062143, %ebx + 0xba, 0xc0, 0xc0, 0xc0, 0xc0, //0x000018bd movl $-1061109568, %edx + 0x29, 0xda, //0x000018c2 subl %ebx, %edx + 0x44, 0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x000018c4 leal $1179010630(%rbx), %r14d + 0x21, 0xca, //0x000018cb andl %ecx, %edx + 0x44, 0x85, 0xf2, //0x000018cd testl %r14d, %edx + 0x0f, 0x85, 0x62, 0x3c, 0x00, 0x00, //0x000018d0 jne LBB0_1003 + 0xba, 0xe0, 0xe0, 0xe0, 0xe0, //0x000018d6 movl $-522133280, %edx + 0x29, 0xda, //0x000018db subl %ebx, %edx + 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x000018dd addl $960051513, %ebx + 0x21, 0xd1, //0x000018e3 andl %edx, %ecx + 0x85, 0xd9, //0x000018e5 testl %ebx, %ecx + 0x0f, 0x85, 0x84, 0x3c, 0x00, 0x00, //0x000018e7 jne LBB0_996 + 0x0f, 0xcf, //0x000018ed bswapl %edi + 0x89, 0xf8, //0x000018ef movl %edi, %eax + 0xc1, 0xe8, 0x04, //0x000018f1 shrl $4, %eax + 0xf7, 0xd0, //0x000018f4 notl %eax + 0x25, 0x01, 0x01, 0x01, 0x01, //0x000018f6 andl $16843009, %eax + 0x8d, 0x04, 0xc0, //0x000018fb leal (%rax,%rax,8), %eax + 0x81, 0xe7, 0x0f, 0x0f, 0x0f, 0x0f, //0x000018fe andl $252645135, %edi + 0x01, 0xc7, //0x00001904 addl %eax, %edi + 0x89, 0xf9, //0x00001906 movl %edi, %ecx + 0xc1, 0xe9, 0x04, //0x00001908 shrl $4, %ecx + 0x09, 0xf9, //0x0000190b orl %edi, %ecx + 0x89, 0xc8, //0x0000190d movl %ecx, %eax + 0xc1, 0xe8, 0x08, //0x0000190f shrl $8, %eax + 0x25, 0x00, 0xff, 0x00, 0x00, //0x00001912 andl $65280, %eax + 0x0f, 0xb6, 0xf9, //0x00001917 movzbl %cl, %edi + 0x09, 0xc7, //0x0000191a orl %eax, %edi + 0x48, 0x8b, 0x55, 0xd0, //0x0000191c movq $-48(%rbp), %rdx + 0x4c, 0x8d, 0x4a, 0x06, //0x00001920 leaq $6(%rdx), %r9 + 0x83, 0xff, 0x7f, //0x00001924 cmpl $127, %edi + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001927 movabsq $4294977024, %r14 + 0x0f, 0x86, 0xc8, 0x00, 0x00, 0x00, //0x00001931 jbe LBB0_295 + 0x81, 0xff, 0xff, 0x07, 0x00, 0x00, //0x00001937 cmpl $2047, %edi + 0x0f, 0x86, 0xcc, 0x00, 0x00, 0x00, //0x0000193d jbe LBB0_296 + 0x89, 0xca, //0x00001943 movl %ecx, %edx + 0x81, 0xe2, 0x00, 0x00, 0xf8, 0x00, //0x00001945 andl $16252928, %edx + 0x81, 0xfa, 0x00, 0x00, 0xd8, 0x00, //0x0000194b cmpl $14155776, %edx + 0x0f, 0x84, 0xde, 0x00, 0x00, 0x00, //0x00001951 je LBB0_297 + 0xc1, 0xe8, 0x0c, //0x00001957 shrl $12, %eax + 0x0c, 0xe0, //0x0000195a orb $-32, %al + 0x88, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000195c movb %al, $-176(%rbp) + 0xc1, 0xef, 0x06, //0x00001962 shrl $6, %edi + 0x40, 0x80, 0xe7, 0x3f, //0x00001965 andb $63, %dil + 0x40, 0x80, 0xcf, 0x80, //0x00001969 orb $-128, %dil + 0x40, 0x88, 0xbd, 0x51, 0xff, 0xff, 0xff, //0x0000196d movb %dil, $-175(%rbp) + 0x80, 0xe1, 0x3f, //0x00001974 andb $63, %cl + 0x80, 0xc9, 0x80, //0x00001977 orb $-128, %cl + 0x88, 0x8d, 0x52, 0xff, 0xff, 0xff, //0x0000197a movb %cl, $-174(%rbp) + 0xbe, 0x03, 0x00, 0x00, 0x00, //0x00001980 movl $3, %esi + 0x89, 0xc1, //0x00001985 movl %eax, %ecx + //0x00001987 LBB0_287 + 0x4c, 0x89, 0xcf, //0x00001987 movq %r9, %rdi + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000198a movq $-64(%rbp), %r9 + 0x48, 0x8d, 0x04, 0x2e, //0x0000198e leaq (%rsi,%rbp), %rax + 0x48, 0x05, 0x50, 0xff, 0xff, 0xff, //0x00001992 addq $-176, %rax + 0x4d, 0x39, 0xd7, //0x00001998 cmpq %r10, %r15 + 0x0f, 0x83, 0xf9, 0x01, 0x00, 0x00, //0x0000199b jae LBB0_307 + //0x000019a1 LBB0_288 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000019a1 leaq $-176(%rbp), %rdx + 0x48, 0x39, 0xd0, //0x000019a8 cmpq %rdx, %rax + 0x0f, 0x86, 0xe9, 0x01, 0x00, 0x00, //0x000019ab jbe LBB0_307 + 0x41, 0x38, 0x0f, //0x000019b1 cmpb %cl, (%r15) + 0x0f, 0x85, 0xe0, 0x01, 0x00, 0x00, //0x000019b4 jne LBB0_307 + 0x48, 0x89, 0xfb, //0x000019ba movq %rdi, %rbx + 0x49, 0x83, 0xc7, 0x01, //0x000019bd addq $1, %r15 + 0x48, 0x8d, 0xb5, 0x51, 0xff, 0xff, 0xff, //0x000019c1 leaq $-175(%rbp), %rsi + 0x4c, 0x89, 0xff, //0x000019c8 movq %r15, %rdi + //0x000019cb LBB0_291 + 0x49, 0x89, 0xff, //0x000019cb movq %rdi, %r15 + 0x48, 0x89, 0xf1, //0x000019ce movq %rsi, %rcx + 0x4c, 0x39, 0xd7, //0x000019d1 cmpq %r10, %rdi + 0x0f, 0x83, 0x1d, 0x00, 0x00, 0x00, //0x000019d4 jae LBB0_294 + 0x48, 0x39, 0xc1, //0x000019da cmpq %rax, %rcx + 0x0f, 0x83, 0x14, 0x00, 0x00, 0x00, //0x000019dd jae LBB0_294 + 0x41, 0x0f, 0xb6, 0x17, //0x000019e3 movzbl (%r15), %edx + 0x49, 0x8d, 0x7f, 0x01, //0x000019e7 leaq $1(%r15), %rdi + 0x48, 0x8d, 0x71, 0x01, //0x000019eb leaq $1(%rcx), %rsi + 0x3a, 0x11, //0x000019ef cmpb (%rcx), %dl + 0x0f, 0x84, 0xd4, 0xff, 0xff, 0xff, //0x000019f1 je LBB0_291 + //0x000019f7 LBB0_294 + 0x48, 0x89, 0xdf, //0x000019f7 movq %rbx, %rdi + 0xe9, 0xa2, 0x01, 0x00, 0x00, //0x000019fa jmp LBB0_308 + //0x000019ff LBB0_295 + 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x000019ff movb %cl, $-176(%rbp) + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001a05 movl $1, %esi + 0xe9, 0x78, 0xff, 0xff, 0xff, //0x00001a0a jmp LBB0_287 + //0x00001a0f LBB0_296 + 0xc1, 0xef, 0x06, //0x00001a0f shrl $6, %edi + 0x40, 0x80, 0xcf, 0xc0, //0x00001a12 orb $-64, %dil + 0x40, 0x88, 0xbd, 0x50, 0xff, 0xff, 0xff, //0x00001a16 movb %dil, $-176(%rbp) + 0x80, 0xe1, 0x3f, //0x00001a1d andb $63, %cl + 0x80, 0xc9, 0x80, //0x00001a20 orb $-128, %cl + 0x88, 0x8d, 0x51, 0xff, 0xff, 0xff, //0x00001a23 movb %cl, $-175(%rbp) + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001a29 movl $2, %esi + 0x89, 0xf9, //0x00001a2e movl %edi, %ecx + 0xe9, 0x52, 0xff, 0xff, 0xff, //0x00001a30 jmp LBB0_287 + //0x00001a35 LBB0_297 + 0x48, 0xc7, 0xc0, 0xfc, 0xff, 0xff, 0xff, //0x00001a35 movq $-4, %rax + 0x48, 0x83, 0xfe, 0x06, //0x00001a3c cmpq $6, %rsi + 0x0f, 0x8c, 0x2b, 0x3b, 0x00, 0x00, //0x00001a40 jl LBB0_996 + 0x81, 0xff, 0xff, 0xdb, 0x00, 0x00, //0x00001a46 cmpl $56319, %edi + 0x0f, 0x87, 0x1f, 0x3b, 0x00, 0x00, //0x00001a4c ja LBB0_996 + 0x41, 0x80, 0x39, 0x5c, //0x00001a52 cmpb $92, (%r9) + 0x0f, 0x85, 0x15, 0x3b, 0x00, 0x00, //0x00001a56 jne LBB0_996 + 0x48, 0x8b, 0x4d, 0xd0, //0x00001a5c movq $-48(%rbp), %rcx + 0x80, 0x79, 0x07, 0x75, //0x00001a60 cmpb $117, $7(%rcx) + 0x0f, 0x85, 0x07, 0x3b, 0x00, 0x00, //0x00001a64 jne LBB0_996 + 0x48, 0x8b, 0x4d, 0xd0, //0x00001a6a movq $-48(%rbp), %rcx + 0x4c, 0x8d, 0x49, 0x08, //0x00001a6e leaq $8(%rcx), %r9 + 0x8b, 0x49, 0x08, //0x00001a72 movl $8(%rcx), %ecx + 0x89, 0xce, //0x00001a75 movl %ecx, %esi + 0xf7, 0xd6, //0x00001a77 notl %esi + 0x8d, 0x91, 0xd0, 0xcf, 0xcf, 0xcf, //0x00001a79 leal $-808464432(%rcx), %edx + 0x81, 0xe6, 0x80, 0x80, 0x80, 0x80, //0x00001a7f andl $-2139062144, %esi + 0x85, 0xd6, //0x00001a85 testl %edx, %esi + 0x0f, 0x85, 0xab, 0x3a, 0x00, 0x00, //0x00001a87 jne LBB0_1003 + 0x8d, 0x91, 0x19, 0x19, 0x19, 0x19, //0x00001a8d leal $421075225(%rcx), %edx + 0x09, 0xca, //0x00001a93 orl %ecx, %edx + 0xf7, 0xc2, 0x80, 0x80, 0x80, 0x80, //0x00001a95 testl $-2139062144, %edx + 0x0f, 0x85, 0x97, 0x3a, 0x00, 0x00, //0x00001a9b jne LBB0_1003 + 0x89, 0xcb, //0x00001aa1 movl %ecx, %ebx + 0x81, 0xe3, 0x7f, 0x7f, 0x7f, 0x7f, //0x00001aa3 andl $2139062143, %ebx + 0xba, 0xc0, 0xc0, 0xc0, 0xc0, //0x00001aa9 movl $-1061109568, %edx + 0x29, 0xda, //0x00001aae subl %ebx, %edx + 0x44, 0x8d, 0xb3, 0x46, 0x46, 0x46, 0x46, //0x00001ab0 leal $1179010630(%rbx), %r14d + 0x21, 0xf2, //0x00001ab7 andl %esi, %edx + 0x44, 0x85, 0xf2, //0x00001ab9 testl %r14d, %edx + 0x0f, 0x85, 0x76, 0x3a, 0x00, 0x00, //0x00001abc jne LBB0_1003 + 0xba, 0xe0, 0xe0, 0xe0, 0xe0, //0x00001ac2 movl $-522133280, %edx + 0x29, 0xda, //0x00001ac7 subl %ebx, %edx + 0x81, 0xc3, 0x39, 0x39, 0x39, 0x39, //0x00001ac9 addl $960051513, %ebx + 0x21, 0xd6, //0x00001acf andl %edx, %esi + 0x85, 0xde, //0x00001ad1 testl %ebx, %esi + 0x0f, 0x85, 0x5f, 0x3a, 0x00, 0x00, //0x00001ad3 jne LBB0_1003 + 0x0f, 0xc9, //0x00001ad9 bswapl %ecx + 0x89, 0xca, //0x00001adb movl %ecx, %edx + 0xc1, 0xea, 0x04, //0x00001add shrl $4, %edx + 0xf7, 0xd2, //0x00001ae0 notl %edx + 0x81, 0xe2, 0x01, 0x01, 0x01, 0x01, //0x00001ae2 andl $16843009, %edx + 0x8d, 0x14, 0xd2, //0x00001ae8 leal (%rdx,%rdx,8), %edx + 0x81, 0xe1, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001aeb andl $252645135, %ecx + 0x01, 0xd1, //0x00001af1 addl %edx, %ecx + 0x89, 0xce, //0x00001af3 movl %ecx, %esi + 0xc1, 0xee, 0x04, //0x00001af5 shrl $4, %esi + 0x09, 0xce, //0x00001af8 orl %ecx, %esi + 0x89, 0xf1, //0x00001afa movl %esi, %ecx + 0x81, 0xe1, 0x00, 0x00, 0xfc, 0x00, //0x00001afc andl $16515072, %ecx + 0x81, 0xf9, 0x00, 0x00, 0xdc, 0x00, //0x00001b02 cmpl $14417920, %ecx + 0x0f, 0x85, 0x63, 0x3a, 0x00, 0x00, //0x00001b08 jne LBB0_996 + 0x89, 0xf0, //0x00001b0e movl %esi, %eax + 0xc1, 0xe8, 0x08, //0x00001b10 shrl $8, %eax + 0x25, 0x00, 0xff, 0x00, 0x00, //0x00001b13 andl $65280, %eax + 0x40, 0x0f, 0xb6, 0xce, //0x00001b18 movzbl %sil, %ecx + 0x09, 0xc1, //0x00001b1c orl %eax, %ecx + 0xc1, 0xe7, 0x0a, //0x00001b1e shll $10, %edi + 0x8d, 0x04, 0x39, //0x00001b21 leal (%rcx,%rdi), %eax + 0x8d, 0x14, 0x0f, //0x00001b24 leal (%rdi,%rcx), %edx + 0x81, 0xc2, 0x00, 0x24, 0xa0, 0xfc, //0x00001b27 addl $-56613888, %edx + 0x89, 0xd1, //0x00001b2d movl %edx, %ecx + 0xc1, 0xe9, 0x12, //0x00001b2f shrl $18, %ecx + 0x80, 0xc9, 0xf0, //0x00001b32 orb $-16, %cl + 0x88, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001b35 movb %cl, $-176(%rbp) + 0x89, 0xd6, //0x00001b3b movl %edx, %esi + 0xc1, 0xee, 0x0c, //0x00001b3d shrl $12, %esi + 0x40, 0x80, 0xe6, 0x3f, //0x00001b40 andb $63, %sil + 0x40, 0x80, 0xce, 0x80, //0x00001b44 orb $-128, %sil + 0x40, 0x88, 0xb5, 0x51, 0xff, 0xff, 0xff, //0x00001b48 movb %sil, $-175(%rbp) + 0xc1, 0xea, 0x06, //0x00001b4f shrl $6, %edx + 0x80, 0xe2, 0x3f, //0x00001b52 andb $63, %dl + 0x80, 0xca, 0x80, //0x00001b55 orb $-128, %dl + 0x88, 0x95, 0x52, 0xff, 0xff, 0xff, //0x00001b58 movb %dl, $-174(%rbp) + 0x24, 0x3f, //0x00001b5e andb $63, %al + 0x0c, 0x80, //0x00001b60 orb $-128, %al + 0x88, 0x85, 0x53, 0xff, 0xff, 0xff, //0x00001b62 movb %al, $-173(%rbp) + 0x48, 0x8b, 0x7d, 0xd0, //0x00001b68 movq $-48(%rbp), %rdi + 0x48, 0x83, 0xc7, 0x0c, //0x00001b6c addq $12, %rdi + 0xbe, 0x04, 0x00, 0x00, 0x00, //0x00001b70 movl $4, %esi + 0x4c, 0x8b, 0x4d, 0xc0, //0x00001b75 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001b79 movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001b7d movabsq $4294977024, %r14 + 0x48, 0x8d, 0x04, 0x2e, //0x00001b87 leaq (%rsi,%rbp), %rax + 0x48, 0x05, 0x50, 0xff, 0xff, 0xff, //0x00001b8b addq $-176, %rax + 0x4d, 0x39, 0xd7, //0x00001b91 cmpq %r10, %r15 + 0x0f, 0x82, 0x07, 0xfe, 0xff, 0xff, //0x00001b94 jb LBB0_288 + //0x00001b9a LBB0_307 + 0x48, 0x8d, 0x8d, 0x50, 0xff, 0xff, 0xff, //0x00001b9a leaq $-176(%rbp), %rcx + //0x00001ba1 LBB0_308 + 0x48, 0x39, 0xc1, //0x00001ba1 cmpq %rax, %rcx + 0x0f, 0x85, 0x50, 0x00, 0x00, 0x00, //0x00001ba4 jne LBB0_315 + //0x00001baa LBB0_309 + 0x4c, 0x39, 0xc7, //0x00001baa cmpq %r8, %rdi + 0x0f, 0x83, 0x09, 0x00, 0x00, 0x00, //0x00001bad jae LBB0_311 + 0x4d, 0x39, 0xd7, //0x00001bb3 cmpq %r10, %r15 + 0x0f, 0x82, 0x35, 0xfc, 0xff, 0xff, //0x00001bb6 jb LBB0_271 + //0x00001bbc LBB0_311 + 0x4c, 0x31, 0xc7, //0x00001bbc xorq %r8, %rdi + 0x4d, 0x31, 0xd7, //0x00001bbf xorq %r10, %r15 + 0x31, 0xc9, //0x00001bc2 xorl %ecx, %ecx + 0x49, 0x09, 0xff, //0x00001bc4 orq %rdi, %r15 + 0x0f, 0x94, 0xc1, //0x00001bc7 sete %cl + //0x00001bca LBB0_312 + 0x4c, 0x8b, 0x45, 0xc8, //0x00001bca movq $-56(%rbp), %r8 + 0xe9, 0x22, 0xeb, 0xff, 0xff, //0x00001bce jmp LBB0_86 + //0x00001bd3 LBB0_313 + 0x4c, 0x29, 0xe8, //0x00001bd3 subq %r13, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00001bd6 addq $1, %rax + 0x49, 0x89, 0x00, //0x00001bda movq %rax, (%r8) + 0x49, 0x89, 0xc3, //0x00001bdd movq %rax, %r11 + 0xe9, 0x99, 0xf9, 0xff, 0xff, //0x00001be0 jmp LBB0_235 + //0x00001be5 LBB0_314 + 0x4d, 0x01, 0xeb, //0x00001be5 addq %r13, %r11 + 0x48, 0x85, 0xc9, //0x00001be8 testq %rcx, %rcx + 0x4c, 0x8b, 0x45, 0xc8, //0x00001beb movq $-56(%rbp), %r8 + 0x0f, 0x85, 0xe3, 0xee, 0xff, 0xff, //0x00001bef jne LBB0_155 + 0xe9, 0x27, 0xef, 0xff, 0xff, //0x00001bf5 jmp LBB0_162 + //0x00001bfa LBB0_315 + 0x31, 0xc9, //0x00001bfa xorl %ecx, %ecx + 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00001bfc jmp LBB0_312 + //0x00001c01 LBB0_316 + 0x4b, 0x8d, 0x04, 0x2b, //0x00001c01 leaq (%r11,%r13), %rax + 0xe9, 0xb3, 0xf0, 0xff, 0xff, //0x00001c05 jmp LBB0_178 + //0x00001c0a LBB0_317 + 0x48, 0x83, 0x7d, 0x98, 0xff, //0x00001c0a cmpq $-1, $-104(%rbp) + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x00001c0f jne LBB0_319 + 0x4c, 0x89, 0xd9, //0x00001c15 movq %r11, %rcx + 0x4c, 0x29, 0xe9, //0x00001c18 subq %r13, %rcx + 0x48, 0x0f, 0xbc, 0xd6, //0x00001c1b bsfq %rsi, %rdx + 0x48, 0x01, 0xca, //0x00001c1f addq %rcx, %rdx + 0x48, 0x89, 0x55, 0x98, //0x00001c22 movq %rdx, $-104(%rbp) + //0x00001c26 LBB0_319 + 0x44, 0x89, 0xc9, //0x00001c26 movl %r9d, %ecx + 0xf7, 0xd1, //0x00001c29 notl %ecx + 0x21, 0xf1, //0x00001c2b andl %esi, %ecx + 0x41, 0x8d, 0x14, 0x49, //0x00001c2d leal (%r9,%rcx,2), %edx + 0x8d, 0x1c, 0x09, //0x00001c31 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00001c34 notl %ebx + 0x21, 0xf3, //0x00001c36 andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001c38 andl $-1431655766, %ebx + 0x45, 0x31, 0xc9, //0x00001c3e xorl %r9d, %r9d + 0x01, 0xcb, //0x00001c41 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc1, //0x00001c43 setb %r9b + 0x01, 0xdb, //0x00001c47 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00001c49 xorl $1431655765, %ebx + 0x21, 0xd3, //0x00001c4f andl %edx, %ebx + 0xf7, 0xd3, //0x00001c51 notl %ebx + 0x21, 0xdf, //0x00001c53 andl %ebx, %edi + 0x4c, 0x8b, 0x65, 0xa8, //0x00001c55 movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001c59 movabsq $4294977024, %r14 + 0x48, 0x85, 0xff, //0x00001c63 testq %rdi, %rdi + 0x0f, 0x85, 0xc0, 0xfa, 0xff, 0xff, //0x00001c66 jne LBB0_71 + //0x00001c6c LBB0_320 + 0x49, 0x83, 0xc3, 0x20, //0x00001c6c addq $32, %r11 + 0x49, 0x83, 0xc0, 0xe0, //0x00001c70 addq $-32, %r8 + //0x00001c74 LBB0_321 + 0x4d, 0x85, 0xc9, //0x00001c74 testq %r9, %r9 + 0x0f, 0x85, 0xdb, 0x00, 0x00, 0x00, //0x00001c77 jne LBB0_335 + 0x4c, 0x89, 0xef, //0x00001c7d movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001c80 notq %rdi + 0x4c, 0x8b, 0x4d, 0x98, //0x00001c83 movq $-104(%rbp), %r9 + 0x4d, 0x85, 0xc0, //0x00001c87 testq %r8, %r8 + 0x0f, 0x84, 0x92, 0x00, 0x00, 0x00, //0x00001c8a je LBB0_333 + //0x00001c90 LBB0_323 + 0x48, 0x83, 0xc7, 0x01, //0x00001c90 addq $1, %rdi + //0x00001c94 LBB0_324 + 0x31, 0xf6, //0x00001c94 xorl %esi, %esi + //0x00001c96 LBB0_325 + 0x41, 0x0f, 0xb6, 0x1c, 0x33, //0x00001c96 movzbl (%r11,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x00001c9b cmpb $34, %bl + 0x0f, 0x84, 0x77, 0x00, 0x00, 0x00, //0x00001c9e je LBB0_332 + 0x80, 0xfb, 0x5c, //0x00001ca4 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001ca7 je LBB0_330 + 0x48, 0x83, 0xc6, 0x01, //0x00001cad addq $1, %rsi + 0x49, 0x39, 0xf0, //0x00001cb1 cmpq %rsi, %r8 + 0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00001cb4 jne LBB0_325 + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x00001cba jmp LBB0_328 + //0x00001cbf LBB0_330 + 0x49, 0x8d, 0x48, 0xff, //0x00001cbf leaq $-1(%r8), %rcx + 0x48, 0x39, 0xf1, //0x00001cc3 cmpq %rsi, %rcx + 0x0f, 0x84, 0x25, 0x37, 0x00, 0x00, //0x00001cc6 je LBB0_975 + 0x4a, 0x8d, 0x0c, 0x1f, //0x00001ccc leaq (%rdi,%r11), %rcx + 0x48, 0x01, 0xf1, //0x00001cd0 addq %rsi, %rcx + 0x49, 0x83, 0xf9, 0xff, //0x00001cd3 cmpq $-1, %r9 + 0x48, 0x8b, 0x55, 0x98, //0x00001cd7 movq $-104(%rbp), %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00001cdb cmoveq %rcx, %rdx + 0x48, 0x89, 0x55, 0x98, //0x00001cdf movq %rdx, $-104(%rbp) + 0x4c, 0x0f, 0x44, 0xc9, //0x00001ce3 cmoveq %rcx, %r9 + 0x49, 0x01, 0xf3, //0x00001ce7 addq %rsi, %r11 + 0x49, 0x83, 0xc3, 0x02, //0x00001cea addq $2, %r11 + 0x4c, 0x89, 0xc1, //0x00001cee movq %r8, %rcx + 0x48, 0x29, 0xf1, //0x00001cf1 subq %rsi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00001cf4 addq $-2, %rcx + 0x49, 0x83, 0xc0, 0xfe, //0x00001cf8 addq $-2, %r8 + 0x49, 0x39, 0xf0, //0x00001cfc cmpq %rsi, %r8 + 0x49, 0x89, 0xc8, //0x00001cff movq %rcx, %r8 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001d02 movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001d06 movabsq $4294977024, %r14 + 0x0f, 0x85, 0x7e, 0xff, 0xff, 0xff, //0x00001d10 jne LBB0_324 + 0xe9, 0xd6, 0x36, 0x00, 0x00, //0x00001d16 jmp LBB0_975 + //0x00001d1b LBB0_332 + 0x49, 0x01, 0xf3, //0x00001d1b addq %rsi, %r11 + 0x49, 0x83, 0xc3, 0x01, //0x00001d1e addq $1, %r11 + //0x00001d22 LBB0_333 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00001d22 movq $-64(%rbp), %r9 + 0x48, 0x8b, 0x4d, 0x98, //0x00001d26 movq $-104(%rbp), %rcx + //0x00001d2a LBB0_334 + 0x4d, 0x29, 0xeb, //0x00001d2a subq %r13, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00001d2d movq $-56(%rbp), %r8 + 0x4d, 0x85, 0xdb, //0x00001d31 testq %r11, %r11 + 0x0f, 0x89, 0x37, 0xe9, 0xff, 0xff, //0x00001d34 jns LBB0_78 + 0xe9, 0xb6, 0x36, 0x00, 0x00, //0x00001d3a jmp LBB0_976 + //0x00001d3f LBB0_328 + 0x80, 0xfb, 0x22, //0x00001d3f cmpb $34, %bl + 0x4c, 0x8b, 0x4d, 0xc0, //0x00001d42 movq $-64(%rbp), %r9 + 0x48, 0x8b, 0x4d, 0x98, //0x00001d46 movq $-104(%rbp), %rcx + 0x0f, 0x85, 0xa1, 0x36, 0x00, 0x00, //0x00001d4a jne LBB0_975 + 0x4d, 0x01, 0xc3, //0x00001d50 addq %r8, %r11 + 0xe9, 0xd2, 0xff, 0xff, 0xff, //0x00001d53 jmp LBB0_334 + //0x00001d58 LBB0_335 + 0x4d, 0x85, 0xc0, //0x00001d58 testq %r8, %r8 + 0x0f, 0x84, 0x90, 0x36, 0x00, 0x00, //0x00001d5b je LBB0_975 + 0x4c, 0x89, 0xef, //0x00001d61 movq %r13, %rdi + 0x48, 0xf7, 0xd7, //0x00001d64 notq %rdi + 0x49, 0x8d, 0x0c, 0x3b, //0x00001d67 leaq (%r11,%rdi), %rcx + 0x48, 0x8b, 0x55, 0x98, //0x00001d6b movq $-104(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00001d6f cmpq $-1, %rdx + 0x49, 0x89, 0xd1, //0x00001d73 movq %rdx, %r9 + 0x48, 0x0f, 0x44, 0xd1, //0x00001d76 cmoveq %rcx, %rdx + 0x4c, 0x0f, 0x44, 0xc9, //0x00001d7a cmoveq %rcx, %r9 + 0x49, 0x83, 0xc3, 0x01, //0x00001d7e addq $1, %r11 + 0x49, 0x83, 0xc0, 0xff, //0x00001d82 addq $-1, %r8 + 0x48, 0x89, 0x55, 0x98, //0x00001d86 movq %rdx, $-104(%rbp) + 0x4c, 0x8b, 0x65, 0xa8, //0x00001d8a movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001d8e movabsq $4294977024, %r14 + 0x4d, 0x85, 0xc0, //0x00001d98 testq %r8, %r8 + 0x0f, 0x85, 0xef, 0xfe, 0xff, 0xff, //0x00001d9b jne LBB0_323 + 0xe9, 0x7c, 0xff, 0xff, 0xff, //0x00001da1 jmp LBB0_333 + //0x00001da6 LBB0_337 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00001da6 movq $-64(%rbp), %r9 + 0x4d, 0x8b, 0x19, //0x00001daa movq (%r9), %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00001dad movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00001db1 movq %r11, (%r8) + //0x00001db4 LBB0_338 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001db4 movq $-88(%rbp), %r12 + 0xe9, 0xc1, 0xf7, 0xff, 0xff, //0x00001db8 jmp LBB0_235 + //0x00001dbd LBB0_339 + 0x49, 0x8d, 0x40, 0xff, //0x00001dbd leaq $-1(%r8), %rax + 0x4c, 0x39, 0xf0, //0x00001dc1 cmpq %r14, %rax + 0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x00001dc4 jne LBB0_341 + 0x4c, 0x8b, 0x45, 0xc8, //0x00001dca movq $-56(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00001dce movq $-64(%rbp), %r9 + 0xe9, 0xdd, 0xff, 0xff, 0xff, //0x00001dd2 jmp LBB0_338 + //0x00001dd7 LBB0_341 + 0x4b, 0x8d, 0x04, 0x0e, //0x00001dd7 leaq (%r14,%r9), %rax + 0x48, 0x83, 0xc0, 0x02, //0x00001ddb addq $2, %rax + 0x4d, 0x29, 0xf0, //0x00001ddf subq %r14, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00001de2 addq $-2, %r8 + 0x4d, 0x89, 0xc6, //0x00001de6 movq %r8, %r14 + 0x4c, 0x8b, 0x65, 0xa8, //0x00001de9 movq $-88(%rbp), %r12 + 0xe9, 0xcb, 0xee, 0xff, 0xff, //0x00001ded jmp LBB0_178 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001df2 .p2align 4, 0x90 + //0x00001e00 LBB0_342 + 0x80, 0xf9, 0x5b, //0x00001e00 cmpb $91, %cl + 0x0f, 0x85, 0x52, 0x29, 0x00, 0x00, //0x00001e03 jne LBB0_872 + 0x48, 0x8b, 0x45, 0xb0, //0x00001e09 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x00001e0d movq $8(%rax), %rax + 0x4c, 0x8b, 0x38, //0x00001e11 movq (%rax), %r15 + 0x4d, 0x85, 0xff, //0x00001e14 testq %r15, %r15 + 0x0f, 0x88, 0xfe, 0x28, 0x00, 0x00, //0x00001e17 js LBB0_865 + 0x49, 0x8b, 0x09, //0x00001e1d movq (%r9), %rcx + 0x49, 0x39, 0xcb, //0x00001e20 cmpq %rcx, %r11 + 0x0f, 0x83, 0x27, 0x00, 0x00, 0x00, //0x00001e23 jae LBB0_349 + 0x43, 0x8a, 0x44, 0x1d, 0x00, //0x00001e29 movb (%r13,%r11), %al + 0x3c, 0x0d, //0x00001e2e cmpb $13, %al + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00001e30 je LBB0_349 + 0x3c, 0x20, //0x00001e36 cmpb $32, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00001e38 je LBB0_349 + 0x04, 0xf7, //0x00001e3e addb $-9, %al + 0x3c, 0x01, //0x00001e40 cmpb $1, %al + 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00001e42 jbe LBB0_349 + 0x4c, 0x89, 0xda, //0x00001e48 movq %r11, %rdx + 0xe9, 0xf8, 0x00, 0x00, 0x00, //0x00001e4b jmp LBB0_371 + //0x00001e50 .p2align 4, 0x90 + //0x00001e50 LBB0_349 + 0x49, 0x8d, 0x53, 0x01, //0x00001e50 leaq $1(%r11), %rdx + 0x48, 0x39, 0xca, //0x00001e54 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001e57 jae LBB0_353 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001e5d movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x00001e62 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001e64 je LBB0_353 + 0x3c, 0x20, //0x00001e6a cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001e6c je LBB0_353 + 0x04, 0xf7, //0x00001e72 addb $-9, %al + 0x3c, 0x01, //0x00001e74 cmpb $1, %al + 0x0f, 0x87, 0xcc, 0x00, 0x00, 0x00, //0x00001e76 ja LBB0_371 + 0x90, 0x90, 0x90, 0x90, //0x00001e7c .p2align 4, 0x90 + //0x00001e80 LBB0_353 + 0x49, 0x8d, 0x53, 0x02, //0x00001e80 leaq $2(%r11), %rdx + 0x48, 0x39, 0xca, //0x00001e84 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001e87 jae LBB0_357 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001e8d movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x00001e92 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001e94 je LBB0_357 + 0x3c, 0x20, //0x00001e9a cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001e9c je LBB0_357 + 0x04, 0xf7, //0x00001ea2 addb $-9, %al + 0x3c, 0x01, //0x00001ea4 cmpb $1, %al + 0x0f, 0x87, 0x9c, 0x00, 0x00, 0x00, //0x00001ea6 ja LBB0_371 + 0x90, 0x90, 0x90, 0x90, //0x00001eac .p2align 4, 0x90 + //0x00001eb0 LBB0_357 + 0x49, 0x8d, 0x53, 0x03, //0x00001eb0 leaq $3(%r11), %rdx + 0x48, 0x39, 0xca, //0x00001eb4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001eb7 jae LBB0_361 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x00001ebd movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x00001ec2 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001ec4 je LBB0_361 + 0x3c, 0x20, //0x00001eca cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001ecc je LBB0_361 + 0x04, 0xf7, //0x00001ed2 addb $-9, %al + 0x3c, 0x01, //0x00001ed4 cmpb $1, %al + 0x0f, 0x87, 0x6c, 0x00, 0x00, 0x00, //0x00001ed6 ja LBB0_371 + 0x90, 0x90, 0x90, 0x90, //0x00001edc .p2align 4, 0x90 + //0x00001ee0 LBB0_361 + 0x49, 0x8d, 0x53, 0x04, //0x00001ee0 leaq $4(%r11), %rdx + 0x48, 0x39, 0xd1, //0x00001ee4 cmpq %rdx, %rcx + 0x0f, 0x86, 0x3e, 0x00, 0x00, 0x00, //0x00001ee7 jbe LBB0_367 + 0x48, 0x39, 0xd1, //0x00001eed cmpq %rdx, %rcx + 0x0f, 0x84, 0x3d, 0x00, 0x00, 0x00, //0x00001ef0 je LBB0_368 + 0x4a, 0x8d, 0x04, 0x29, //0x00001ef6 leaq (%rcx,%r13), %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001efa .p2align 4, 0x90 + //0x00001f00 LBB0_364 + 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00001f00 movsbl (%r13,%rdx), %esi + 0x83, 0xfe, 0x20, //0x00001f06 cmpl $32, %esi + 0x0f, 0x87, 0x30, 0x00, 0x00, 0x00, //0x00001f09 ja LBB0_370 + 0x49, 0x0f, 0xa3, 0xf6, //0x00001f0f btq %rsi, %r14 + 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x00001f13 jae LBB0_370 + 0x48, 0x83, 0xc2, 0x01, //0x00001f19 addq $1, %rdx + 0x48, 0x39, 0xd1, //0x00001f1d cmpq %rdx, %rcx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00001f20 jne LBB0_364 + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00001f26 jmp LBB0_369 + //0x00001f2b LBB0_367 + 0x49, 0x89, 0xd3, //0x00001f2b movq %rdx, %r11 + 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00001f2e jmp LBB0_372 + //0x00001f33 LBB0_368 + 0x4c, 0x01, 0xea, //0x00001f33 addq %r13, %rdx + 0x48, 0x89, 0xd0, //0x00001f36 movq %rdx, %rax + //0x00001f39 LBB0_369 + 0x4c, 0x29, 0xe8, //0x00001f39 subq %r13, %rax + 0x48, 0x89, 0xc2, //0x00001f3c movq %rax, %rdx + //0x00001f3f LBB0_370 + 0x48, 0x39, 0xca, //0x00001f3f cmpq %rcx, %rdx + 0x0f, 0x83, 0x13, 0x00, 0x00, 0x00, //0x00001f42 jae LBB0_372 + //0x00001f48 LBB0_371 + 0x4c, 0x8d, 0x5a, 0x01, //0x00001f48 leaq $1(%rdx), %r11 + 0x4d, 0x89, 0x18, //0x00001f4c movq %r11, (%r8) + 0x41, 0x80, 0x7c, 0x15, 0x00, 0x5d, //0x00001f4f cmpb $93, (%r13,%rdx) + 0x0f, 0x84, 0xfa, 0x10, 0x00, 0x00, //0x00001f55 je LBB0_556 + //0x00001f5b LBB0_372 + 0x49, 0x83, 0xc3, 0xff, //0x00001f5b addq $-1, %r11 + 0x4d, 0x89, 0x18, //0x00001f5f movq %r11, (%r8) + 0x4d, 0x85, 0xff, //0x00001f62 testq %r15, %r15 + 0x0f, 0x8e, 0xd5, 0x0e, 0x00, 0x00, //0x00001f65 jle LBB0_464 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001f6b .p2align 4, 0x90 + //0x00001f70 LBB0_373 + 0x49, 0x8b, 0x11, //0x00001f70 movq (%r9), %rdx + 0x49, 0x39, 0xd3, //0x00001f73 cmpq %rdx, %r11 + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00001f76 jae LBB0_378 + 0x43, 0x8a, 0x44, 0x1d, 0x00, //0x00001f7c movb (%r13,%r11), %al + 0x3c, 0x0d, //0x00001f81 cmpb $13, %al + 0x0f, 0x84, 0x27, 0x00, 0x00, 0x00, //0x00001f83 je LBB0_378 + 0x3c, 0x20, //0x00001f89 cmpb $32, %al + 0x0f, 0x84, 0x1f, 0x00, 0x00, 0x00, //0x00001f8b je LBB0_378 + 0x04, 0xf7, //0x00001f91 addb $-9, %al + 0x3c, 0x01, //0x00001f93 cmpb $1, %al + 0x0f, 0x86, 0x15, 0x00, 0x00, 0x00, //0x00001f95 jbe LBB0_378 + 0x4c, 0x89, 0xd9, //0x00001f9b movq %r11, %rcx + 0xe9, 0xfd, 0x00, 0x00, 0x00, //0x00001f9e jmp LBB0_399 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001fa3 .p2align 4, 0x90 + //0x00001fb0 LBB0_378 + 0x49, 0x8d, 0x4b, 0x01, //0x00001fb0 leaq $1(%r11), %rcx + 0x48, 0x39, 0xd1, //0x00001fb4 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001fb7 jae LBB0_382 + 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00001fbd movb (%r13,%rcx), %al + 0x3c, 0x0d, //0x00001fc2 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001fc4 je LBB0_382 + 0x3c, 0x20, //0x00001fca cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001fcc je LBB0_382 + 0x04, 0xf7, //0x00001fd2 addb $-9, %al + 0x3c, 0x01, //0x00001fd4 cmpb $1, %al + 0x0f, 0x87, 0xc4, 0x00, 0x00, 0x00, //0x00001fd6 ja LBB0_399 + 0x90, 0x90, 0x90, 0x90, //0x00001fdc .p2align 4, 0x90 + //0x00001fe0 LBB0_382 + 0x49, 0x8d, 0x4b, 0x02, //0x00001fe0 leaq $2(%r11), %rcx + 0x48, 0x39, 0xd1, //0x00001fe4 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00001fe7 jae LBB0_386 + 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x00001fed movb (%r13,%rcx), %al + 0x3c, 0x0d, //0x00001ff2 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00001ff4 je LBB0_386 + 0x3c, 0x20, //0x00001ffa cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x00001ffc je LBB0_386 + 0x04, 0xf7, //0x00002002 addb $-9, %al + 0x3c, 0x01, //0x00002004 cmpb $1, %al + 0x0f, 0x87, 0x94, 0x00, 0x00, 0x00, //0x00002006 ja LBB0_399 + 0x90, 0x90, 0x90, 0x90, //0x0000200c .p2align 4, 0x90 + //0x00002010 LBB0_386 + 0x49, 0x8d, 0x4b, 0x03, //0x00002010 leaq $3(%r11), %rcx + 0x48, 0x39, 0xd1, //0x00002014 cmpq %rdx, %rcx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002017 jae LBB0_390 + 0x41, 0x8a, 0x44, 0x0d, 0x00, //0x0000201d movb (%r13,%rcx), %al + 0x3c, 0x0d, //0x00002022 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002024 je LBB0_390 + 0x3c, 0x20, //0x0000202a cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000202c je LBB0_390 + 0x04, 0xf7, //0x00002032 addb $-9, %al + 0x3c, 0x01, //0x00002034 cmpb $1, %al + 0x0f, 0x87, 0x64, 0x00, 0x00, 0x00, //0x00002036 ja LBB0_399 + 0x90, 0x90, 0x90, 0x90, //0x0000203c .p2align 4, 0x90 + //0x00002040 LBB0_390 + 0x49, 0x8d, 0x4b, 0x04, //0x00002040 leaq $4(%r11), %rcx + 0x48, 0x39, 0xca, //0x00002044 cmpq %rcx, %rdx + 0x0f, 0x86, 0x03, 0x03, 0x00, 0x00, //0x00002047 jbe LBB0_435 + 0x48, 0x39, 0xca, //0x0000204d cmpq %rcx, %rdx + 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00002050 je LBB0_396 + 0x4a, 0x8d, 0x04, 0x2a, //0x00002056 leaq (%rdx,%r13), %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000205a .p2align 4, 0x90 + //0x00002060 LBB0_393 + 0x41, 0x0f, 0xbe, 0x74, 0x0d, 0x00, //0x00002060 movsbl (%r13,%rcx), %esi + 0x83, 0xfe, 0x20, //0x00002066 cmpl $32, %esi + 0x0f, 0x87, 0x28, 0x00, 0x00, 0x00, //0x00002069 ja LBB0_398 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000206f btq %rsi, %r14 + 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002073 jae LBB0_398 + 0x48, 0x83, 0xc1, 0x01, //0x00002079 addq $1, %rcx + 0x48, 0x39, 0xca, //0x0000207d cmpq %rcx, %rdx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00002080 jne LBB0_393 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00002086 jmp LBB0_397 + //0x0000208b LBB0_396 + 0x4c, 0x01, 0xe9, //0x0000208b addq %r13, %rcx + 0x48, 0x89, 0xc8, //0x0000208e movq %rcx, %rax + //0x00002091 LBB0_397 + 0x4c, 0x29, 0xe8, //0x00002091 subq %r13, %rax + 0x48, 0x89, 0xc1, //0x00002094 movq %rax, %rcx + //0x00002097 LBB0_398 + 0x48, 0x39, 0xd1, //0x00002097 cmpq %rdx, %rcx + 0x0f, 0x83, 0xb6, 0x02, 0x00, 0x00, //0x0000209a jae LBB0_436 + //0x000020a0 LBB0_399 + 0x4c, 0x8d, 0x59, 0x01, //0x000020a0 leaq $1(%rcx), %r11 + 0x4d, 0x89, 0x18, //0x000020a4 movq %r11, (%r8) + 0x41, 0x0f, 0xbe, 0x44, 0x0d, 0x00, //0x000020a7 movsbl (%r13,%rcx), %eax + 0x83, 0xf8, 0x7b, //0x000020ad cmpl $123, %eax + 0x0f, 0x87, 0x9a, 0x02, 0x00, 0x00, //0x000020b0 ja LBB0_435 + 0x48, 0x8d, 0x15, 0x13, 0x35, 0x00, 0x00, //0x000020b6 leaq $13587(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x04, 0x82, //0x000020bd movslq (%rdx,%rax,4), %rax + 0x48, 0x01, 0xd0, //0x000020c1 addq %rdx, %rax + 0xff, 0xe0, //0x000020c4 jmpq *%rax + //0x000020c6 LBB0_401 + 0x4d, 0x8b, 0x01, //0x000020c6 movq (%r9), %r8 + 0x4c, 0x89, 0xc0, //0x000020c9 movq %r8, %rax + 0x4c, 0x29, 0xd8, //0x000020cc subq %r11, %rax + 0x48, 0x83, 0xf8, 0x10, //0x000020cf cmpq $16, %rax + 0x0f, 0x82, 0x03, 0x0d, 0x00, 0x00, //0x000020d3 jb LBB0_525 + 0x48, 0x89, 0xcf, //0x000020d9 movq %rcx, %rdi + 0x48, 0xf7, 0xd7, //0x000020dc notq %rdi + 0x48, 0x8d, 0x59, 0x01, //0x000020df leaq $1(%rcx), %rbx + 0x48, 0x8d, 0x41, 0x02, //0x000020e3 leaq $2(%rcx), %rax + 0x4a, 0x8d, 0x14, 0x29, //0x000020e7 leaq (%rcx,%r13), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000020eb .p2align 4, 0x90 + //0x000020f0 LBB0_403 + 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x1d, 0x00, //0x000020f0 movdqu (%r13,%rbx), %xmm2 + 0x66, 0x0f, 0x6f, 0xda, //0x000020f7 movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x000020fb pcmpeqb %xmm13, %xmm3 + 0x66, 0x41, 0x0f, 0xdb, 0xd6, //0x00002100 pand %xmm14, %xmm2 + 0x66, 0x0f, 0x74, 0xd4, //0x00002105 pcmpeqb %xmm4, %xmm2 + 0x66, 0x0f, 0xeb, 0xd3, //0x00002109 por %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x0000210d pmovmskb %xmm2, %esi + 0x85, 0xf6, //0x00002111 testl %esi, %esi + 0x0f, 0x85, 0x97, 0x00, 0x00, 0x00, //0x00002113 jne LBB0_414 + 0x48, 0x83, 0xc3, 0x10, //0x00002119 addq $16, %rbx + 0x49, 0x8d, 0x34, 0x38, //0x0000211d leaq (%r8,%rdi), %rsi + 0x48, 0x83, 0xc6, 0xf0, //0x00002121 addq $-16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00002125 addq $-16, %rdi + 0x48, 0x83, 0xc0, 0x10, //0x00002129 addq $16, %rax + 0x48, 0x83, 0xc1, 0x10, //0x0000212d addq $16, %rcx + 0x48, 0x83, 0xc2, 0x10, //0x00002131 addq $16, %rdx + 0x48, 0x83, 0xfe, 0x0f, //0x00002135 cmpq $15, %rsi + 0x0f, 0x87, 0xb1, 0xff, 0xff, 0xff, //0x00002139 ja LBB0_403 + 0x4d, 0x89, 0xeb, //0x0000213f movq %r13, %r11 + 0x49, 0x29, 0xfb, //0x00002142 subq %rdi, %r11 + 0x49, 0x01, 0xf8, //0x00002145 addq %rdi, %r8 + 0x4c, 0x89, 0xc0, //0x00002148 movq %r8, %rax + 0x48, 0x85, 0xc0, //0x0000214b testq %rax, %rax + 0x4c, 0x8b, 0x45, 0xc8, //0x0000214e movq $-56(%rbp), %r8 + 0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x00002152 je LBB0_413 + //0x00002158 LBB0_406 + 0x49, 0x8d, 0x0c, 0x03, //0x00002158 leaq (%r11,%rax), %rcx + //0x0000215c LBB0_407 + 0x41, 0x0f, 0xb6, 0x13, //0x0000215c movzbl (%r11), %edx + 0x48, 0x83, 0xfa, 0x2c, //0x00002160 cmpq $44, %rdx + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x00002164 ja LBB0_409 + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x0000216a movabsq $17596481021440, %rsi + 0x48, 0x0f, 0xa3, 0xd6, //0x00002174 btq %rdx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00002178 jb LBB0_413 + //0x0000217e LBB0_409 + 0x80, 0xfa, 0x5d, //0x0000217e cmpb $93, %dl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00002181 je LBB0_413 + 0x80, 0xfa, 0x7d, //0x00002187 cmpb $125, %dl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x0000218a je LBB0_413 + 0x49, 0x83, 0xc3, 0x01, //0x00002190 addq $1, %r11 + 0x48, 0x83, 0xc0, 0xff, //0x00002194 addq $-1, %rax + 0x0f, 0x85, 0xbe, 0xff, 0xff, 0xff, //0x00002198 jne LBB0_407 + 0x49, 0x89, 0xcb, //0x0000219e movq %rcx, %r11 + //0x000021a1 LBB0_413 + 0x4d, 0x29, 0xeb, //0x000021a1 subq %r13, %r11 + 0x4d, 0x89, 0x18, //0x000021a4 movq %r11, (%r8) + 0xe9, 0xaa, 0x01, 0x00, 0x00, //0x000021a7 jmp LBB0_436 + 0x90, 0x90, 0x90, 0x90, //0x000021ac .p2align 4, 0x90 + //0x000021b0 LBB0_414 + 0x66, 0x0f, 0xbc, 0xf6, //0x000021b0 bsfw %si, %si + 0x0f, 0xb7, 0xf6, //0x000021b4 movzwl %si, %esi + 0x49, 0x89, 0xf3, //0x000021b7 movq %rsi, %r11 + 0x49, 0x29, 0xfb, //0x000021ba subq %rdi, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x000021bd movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x000021c1 movq %r11, (%r8) + 0x4d, 0x85, 0xdb, //0x000021c4 testq %r11, %r11 + 0x0f, 0x8e, 0x89, 0x01, 0x00, 0x00, //0x000021c7 jle LBB0_436 + 0x48, 0x01, 0xf0, //0x000021cd addq %rsi, %rax + 0x48, 0x01, 0xf1, //0x000021d0 addq %rsi, %rcx + 0x48, 0x01, 0xf2, //0x000021d3 addq %rsi, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021d6 .p2align 4, 0x90 + //0x000021e0 LBB0_416 + 0x0f, 0xb6, 0x32, //0x000021e0 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x000021e3 cmpq $32, %rsi + 0x0f, 0x87, 0x69, 0x01, 0x00, 0x00, //0x000021e7 ja LBB0_436 + 0x49, 0x0f, 0xa3, 0xf6, //0x000021ed btq %rsi, %r14 + 0x0f, 0x83, 0x5f, 0x01, 0x00, 0x00, //0x000021f1 jae LBB0_436 + 0x49, 0x89, 0x08, //0x000021f7 movq %rcx, (%r8) + 0x48, 0x83, 0xc0, 0xff, //0x000021fa addq $-1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x000021fe addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00002202 addq $-1, %rdx + 0x49, 0x83, 0xc3, 0xff, //0x00002206 addq $-1, %r11 + 0x48, 0x83, 0xf8, 0x01, //0x0000220a cmpq $1, %rax + 0x0f, 0x8f, 0xcc, 0xff, 0xff, 0xff, //0x0000220e jg LBB0_416 + 0x45, 0x31, 0xdb, //0x00002214 xorl %r11d, %r11d + 0xe9, 0x3a, 0x01, 0x00, 0x00, //0x00002217 jmp LBB0_436 + //0x0000221c LBB0_420 + 0x48, 0x83, 0xc1, 0x04, //0x0000221c addq $4, %rcx + 0x49, 0x3b, 0x09, //0x00002220 cmpq (%r9), %rcx + 0x0f, 0x86, 0x27, 0x01, 0x00, 0x00, //0x00002223 jbe LBB0_435 + 0xe9, 0x28, 0x01, 0x00, 0x00, //0x00002229 jmp LBB0_436 + //0x0000222e LBB0_421 + 0x4d, 0x8b, 0x01, //0x0000222e movq (%r9), %r8 + 0x4d, 0x89, 0xc6, //0x00002231 movq %r8, %r14 + 0x4d, 0x29, 0xde, //0x00002234 subq %r11, %r14 + 0x49, 0x83, 0xfe, 0x20, //0x00002237 cmpq $32, %r14 + 0x0f, 0x8c, 0xb0, 0x0b, 0x00, 0x00, //0x0000223b jl LBB0_526 + 0x4e, 0x8d, 0x0c, 0x29, //0x00002241 leaq (%rcx,%r13), %r9 + 0x49, 0x29, 0xc8, //0x00002245 subq %rcx, %r8 + 0x41, 0xbc, 0x1f, 0x00, 0x00, 0x00, //0x00002248 movl $31, %r12d + 0x45, 0x31, 0xf6, //0x0000224e xorl %r14d, %r14d + 0x45, 0x31, 0xd2, //0x00002251 xorl %r10d, %r10d + 0xe9, 0x2d, 0x00, 0x00, 0x00, //0x00002254 jmp LBB0_423 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002259 .p2align 4, 0x90 + //0x00002260 LBB0_428 + 0x45, 0x31, 0xd2, //0x00002260 xorl %r10d, %r10d + 0x48, 0x85, 0xf6, //0x00002263 testq %rsi, %rsi + 0x0f, 0x85, 0xa3, 0x00, 0x00, 0x00, //0x00002266 jne LBB0_425 + //0x0000226c LBB0_429 + 0x49, 0x83, 0xc6, 0x20, //0x0000226c addq $32, %r14 + 0x4b, 0x8d, 0x04, 0x20, //0x00002270 leaq (%r8,%r12), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00002274 addq $-32, %rax + 0x49, 0x83, 0xc4, 0xe0, //0x00002278 addq $-32, %r12 + 0x48, 0x83, 0xf8, 0x3f, //0x0000227c cmpq $63, %rax + 0x0f, 0x8e, 0xb5, 0x0a, 0x00, 0x00, //0x00002280 jle LBB0_430 + //0x00002286 LBB0_423 + 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x31, 0x01, //0x00002286 movdqu $1(%r9,%r14), %xmm2 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x31, 0x11, //0x0000228d movdqu $17(%r9,%r14), %xmm3 + 0x66, 0x0f, 0x6f, 0xea, //0x00002294 movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002298 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x0000229c pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xeb, //0x000022a0 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000022a4 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x000022a8 pmovmskb %xmm5, %esi + 0x48, 0xc1, 0xe6, 0x10, //0x000022ac shlq $16, %rsi + 0x48, 0x09, 0xfe, //0x000022b0 orq %rdi, %rsi + 0x66, 0x0f, 0x74, 0xd1, //0x000022b3 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x000022b7 pmovmskb %xmm2, %ebx + 0x66, 0x0f, 0x74, 0xd9, //0x000022bb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000022bf pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x000022c3 shlq $16, %rdi + 0x48, 0x09, 0xdf, //0x000022c7 orq %rbx, %rdi + 0x48, 0x89, 0xfb, //0x000022ca movq %rdi, %rbx + 0x4c, 0x09, 0xd3, //0x000022cd orq %r10, %rbx + 0x0f, 0x84, 0x8a, 0xff, 0xff, 0xff, //0x000022d0 je LBB0_428 + 0x44, 0x89, 0xd3, //0x000022d6 movl %r10d, %ebx + 0xf7, 0xd3, //0x000022d9 notl %ebx + 0x21, 0xfb, //0x000022db andl %edi, %ebx + 0x8d, 0x04, 0x1b, //0x000022dd leal (%rbx,%rbx), %eax + 0x44, 0x09, 0xd0, //0x000022e0 orl %r10d, %eax + 0x89, 0xc2, //0x000022e3 movl %eax, %edx + 0xf7, 0xd2, //0x000022e5 notl %edx + 0x21, 0xfa, //0x000022e7 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000022e9 andl $-1431655766, %edx + 0x45, 0x31, 0xd2, //0x000022ef xorl %r10d, %r10d + 0x01, 0xda, //0x000022f2 addl %ebx, %edx + 0x41, 0x0f, 0x92, 0xc2, //0x000022f4 setb %r10b + 0x01, 0xd2, //0x000022f8 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000022fa xorl $1431655765, %edx + 0x21, 0xc2, //0x00002300 andl %eax, %edx + 0xf7, 0xd2, //0x00002302 notl %edx + 0x21, 0xd6, //0x00002304 andl %edx, %esi + 0x48, 0x85, 0xf6, //0x00002306 testq %rsi, %rsi + 0x0f, 0x84, 0x5d, 0xff, 0xff, 0xff, //0x00002309 je LBB0_429 + //0x0000230f LBB0_425 + 0x0f, 0xbc, 0xc6, //0x0000230f bsfl %esi, %eax + 0x48, 0x01, 0xc8, //0x00002312 addq %rcx, %rax + 0x4d, 0x8d, 0x1c, 0x06, //0x00002315 leaq (%r14,%rax), %r11 + 0x49, 0x83, 0xc3, 0x02, //0x00002319 addq $2, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x0000231d movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00002321 movq %r11, (%r8) + //0x00002324 LBB0_426 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00002324 movq $-64(%rbp), %r9 + //0x00002328 LBB0_427 + 0x4c, 0x8b, 0x65, 0xa8, //0x00002328 movq $-88(%rbp), %r12 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000232c movabsq $4294977024, %r14 + 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x00002336 jmp LBB0_436 + //0x0000233b LBB0_434 + 0x48, 0x83, 0xc1, 0x05, //0x0000233b addq $5, %rcx + 0x49, 0x3b, 0x09, //0x0000233f cmpq (%r9), %rcx + 0x0f, 0x87, 0x0e, 0x00, 0x00, 0x00, //0x00002342 ja LBB0_436 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002348 .p2align 4, 0x90 + //0x00002350 LBB0_435 + 0x49, 0x89, 0x08, //0x00002350 movq %rcx, (%r8) + 0x49, 0x89, 0xcb, //0x00002353 movq %rcx, %r11 + //0x00002356 LBB0_436 + 0x4d, 0x8b, 0x2c, 0x24, //0x00002356 movq (%r12), %r13 + 0x49, 0x8b, 0x4c, 0x24, 0x08, //0x0000235a movq $8(%r12), %rcx + 0x49, 0x39, 0xcb, //0x0000235f cmpq %rcx, %r11 + 0x0f, 0x83, 0x28, 0x00, 0x00, 0x00, //0x00002362 jae LBB0_441 + 0x43, 0x8a, 0x44, 0x1d, 0x00, //0x00002368 movb (%r13,%r11), %al + 0x3c, 0x0d, //0x0000236d cmpb $13, %al + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x0000236f je LBB0_441 + 0x3c, 0x20, //0x00002375 cmpb $32, %al + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00002377 je LBB0_441 + 0x04, 0xf7, //0x0000237d addb $-9, %al + 0x3c, 0x01, //0x0000237f cmpb $1, %al + 0x0f, 0x86, 0x09, 0x00, 0x00, 0x00, //0x00002381 jbe LBB0_441 + 0x4c, 0x89, 0xda, //0x00002387 movq %r11, %rdx + 0xe9, 0xf6, 0x00, 0x00, 0x00, //0x0000238a jmp LBB0_462 + 0x90, //0x0000238f .p2align 4, 0x90 + //0x00002390 LBB0_441 + 0x49, 0x8d, 0x53, 0x01, //0x00002390 leaq $1(%r11), %rdx + 0x48, 0x39, 0xca, //0x00002394 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002397 jae LBB0_445 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000239d movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x000023a2 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000023a4 je LBB0_445 + 0x3c, 0x20, //0x000023aa cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x000023ac je LBB0_445 + 0x04, 0xf7, //0x000023b2 addb $-9, %al + 0x3c, 0x01, //0x000023b4 cmpb $1, %al + 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x000023b6 ja LBB0_462 + 0x90, 0x90, 0x90, 0x90, //0x000023bc .p2align 4, 0x90 + //0x000023c0 LBB0_445 + 0x49, 0x8d, 0x53, 0x02, //0x000023c0 leaq $2(%r11), %rdx + 0x48, 0x39, 0xca, //0x000023c4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000023c7 jae LBB0_449 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x000023cd movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x000023d2 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000023d4 je LBB0_449 + 0x3c, 0x20, //0x000023da cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x000023dc je LBB0_449 + 0x04, 0xf7, //0x000023e2 addb $-9, %al + 0x3c, 0x01, //0x000023e4 cmpb $1, %al + 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x000023e6 ja LBB0_462 + 0x90, 0x90, 0x90, 0x90, //0x000023ec .p2align 4, 0x90 + //0x000023f0 LBB0_449 + 0x49, 0x8d, 0x53, 0x03, //0x000023f0 leaq $3(%r11), %rdx + 0x48, 0x39, 0xca, //0x000023f4 cmpq %rcx, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000023f7 jae LBB0_453 + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x000023fd movb (%r13,%rdx), %al + 0x3c, 0x0d, //0x00002402 cmpb $13, %al + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00002404 je LBB0_453 + 0x3c, 0x20, //0x0000240a cmpb $32, %al + 0x0f, 0x84, 0x0e, 0x00, 0x00, 0x00, //0x0000240c je LBB0_453 + 0x04, 0xf7, //0x00002412 addb $-9, %al + 0x3c, 0x01, //0x00002414 cmpb $1, %al + 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x00002416 ja LBB0_462 + 0x90, 0x90, 0x90, 0x90, //0x0000241c .p2align 4, 0x90 + //0x00002420 LBB0_453 + 0x49, 0x8d, 0x53, 0x04, //0x00002420 leaq $4(%r11), %rdx + 0x48, 0x39, 0xd1, //0x00002424 cmpq %rdx, %rcx + 0x0f, 0x86, 0x18, 0x0c, 0x00, 0x00, //0x00002427 jbe LBB0_870 + 0x48, 0x39, 0xd1, //0x0000242d cmpq %rdx, %rcx + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00002430 je LBB0_459 + 0x4a, 0x8d, 0x04, 0x29, //0x00002436 leaq (%rcx,%r13), %rax + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000243a .p2align 4, 0x90 + //0x00002440 LBB0_456 + 0x41, 0x0f, 0xbe, 0x74, 0x15, 0x00, //0x00002440 movsbl (%r13,%rdx), %esi + 0x83, 0xfe, 0x20, //0x00002446 cmpl $32, %esi + 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00002449 ja LBB0_461 + 0x49, 0x0f, 0xa3, 0xf6, //0x0000244f btq %rsi, %r14 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00002453 jae LBB0_461 + 0x48, 0x83, 0xc2, 0x01, //0x00002459 addq $1, %rdx + 0x48, 0x39, 0xd1, //0x0000245d cmpq %rdx, %rcx + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00002460 jne LBB0_456 + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00002466 jmp LBB0_460 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000246b .p2align 4, 0x90 + //0x00002470 LBB0_459 + 0x4c, 0x01, 0xea, //0x00002470 addq %r13, %rdx + 0x48, 0x89, 0xd0, //0x00002473 movq %rdx, %rax + //0x00002476 LBB0_460 + 0x4c, 0x29, 0xe8, //0x00002476 subq %r13, %rax + 0x48, 0x89, 0xc2, //0x00002479 movq %rax, %rdx + //0x0000247c LBB0_461 + 0x48, 0x39, 0xca, //0x0000247c cmpq %rcx, %rdx + 0x0f, 0x83, 0xd6, 0x22, 0x00, 0x00, //0x0000247f jae LBB0_872 + //0x00002485 LBB0_462 + 0x4c, 0x8d, 0x5a, 0x01, //0x00002485 leaq $1(%rdx), %r11 + 0x4d, 0x89, 0x18, //0x00002489 movq %r11, (%r8) + 0x41, 0x8a, 0x44, 0x15, 0x00, //0x0000248c movb (%r13,%rdx), %al + 0x3c, 0x2c, //0x00002491 cmpb $44, %al + 0x0f, 0x85, 0x91, 0x0b, 0x00, 0x00, //0x00002493 jne LBB0_554 + 0x49, 0x8d, 0x47, 0xff, //0x00002499 leaq $-1(%r15), %rax + 0x49, 0x83, 0xff, 0x02, //0x0000249d cmpq $2, %r15 + 0x49, 0x89, 0xc7, //0x000024a1 movq %rax, %r15 + 0x0f, 0x8d, 0xc6, 0xfa, 0xff, 0xff, //0x000024a4 jge LBB0_373 + 0xe9, 0x91, 0x09, 0x00, 0x00, //0x000024aa jmp LBB0_464 + //0x000024af LBB0_467 + 0x49, 0x8b, 0x01, //0x000024af movq (%r9), %rax + 0x4c, 0x29, 0xd8, //0x000024b2 subq %r11, %rax + 0x4d, 0x01, 0xdd, //0x000024b5 addq %r11, %r13 + 0x45, 0x31, 0xc9, //0x000024b8 xorl %r9d, %r9d + 0x31, 0xdb, //0x000024bb xorl %ebx, %ebx + 0x45, 0x31, 0xdb, //0x000024bd xorl %r11d, %r11d + 0x31, 0xc9, //0x000024c0 xorl %ecx, %ecx + 0xe9, 0x73, 0x00, 0x00, 0x00, //0x000024c2 jmp LBB0_469 + //0x000024c7 LBB0_468 + 0x49, 0xc1, 0xfe, 0x3f, //0x000024c7 sarq $63, %r14 + 0x4c, 0x89, 0xd0, //0x000024cb movq %r10, %rax + 0x48, 0xd1, 0xe8, //0x000024ce shrq %rax + 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000024d1 movabsq $6148914691236517205, %rsi + 0x48, 0x21, 0xf0, //0x000024db andq %rsi, %rax + 0x49, 0x29, 0xc2, //0x000024de subq %rax, %r10 + 0x4c, 0x89, 0xd0, //0x000024e1 movq %r10, %rax + 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000024e4 movabsq $3689348814741910323, %rdx + 0x48, 0x21, 0xd0, //0x000024ee andq %rdx, %rax + 0x49, 0xc1, 0xea, 0x02, //0x000024f1 shrq $2, %r10 + 0x49, 0x21, 0xd2, //0x000024f5 andq %rdx, %r10 + 0x49, 0x01, 0xc2, //0x000024f8 addq %rax, %r10 + 0x4c, 0x89, 0xd0, //0x000024fb movq %r10, %rax + 0x48, 0xc1, 0xe8, 0x04, //0x000024fe shrq $4, %rax + 0x4c, 0x01, 0xd0, //0x00002502 addq %r10, %rax + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002505 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd0, //0x0000250f andq %rdx, %rax + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002512 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xc2, //0x0000251c imulq %rdx, %rax + 0x48, 0xc1, 0xe8, 0x38, //0x00002520 shrq $56, %rax + 0x49, 0x01, 0xc3, //0x00002524 addq %rax, %r11 + 0x49, 0x83, 0xc5, 0x40, //0x00002527 addq $64, %r13 + 0x48, 0x8b, 0x45, 0xd0, //0x0000252b movq $-48(%rbp), %rax + 0x48, 0x83, 0xc0, 0xc0, //0x0000252f addq $-64, %rax + 0x4d, 0x89, 0xf1, //0x00002533 movq %r14, %r9 + 0x48, 0x8b, 0x5d, 0xb8, //0x00002536 movq $-72(%rbp), %rbx + //0x0000253a LBB0_469 + 0x48, 0x83, 0xf8, 0x40, //0x0000253a cmpq $64, %rax + 0x48, 0x89, 0x45, 0xd0, //0x0000253e movq %rax, $-48(%rbp) + 0x0f, 0x8c, 0x39, 0x02, 0x00, 0x00, //0x00002542 jl LBB0_477 + //0x00002548 LBB0_470 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x00002548 movdqu (%r13), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x0000254e movdqu $16(%r13), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x00002554 movdqu $32(%r13), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x0000255a movdqu $48(%r13), %xmm6 + 0x66, 0x0f, 0x6f, 0xda, //0x00002560 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002564 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x00002568 pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdd, //0x0000256c movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002570 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002574 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x00002578 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000257c pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002580 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xde, //0x00002584 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002588 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x0000258c pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00002590 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00002594 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x00002598 orq %rdi, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x0000259b shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x0000259f orq %rsi, %rdx + 0x48, 0x09, 0xd0, //0x000025a2 orq %rdx, %rax + 0x48, 0x89, 0xc2, //0x000025a5 movq %rax, %rdx + 0x48, 0x09, 0xda, //0x000025a8 orq %rbx, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000025ab jne LBB0_472 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000025b1 movq $-1, %rax + 0x31, 0xd2, //0x000025b8 xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb8, //0x000025ba movq %rdx, $-72(%rbp) + 0xe9, 0x49, 0x00, 0x00, 0x00, //0x000025be jmp LBB0_473 + //0x000025c3 LBB0_472 + 0x48, 0x89, 0xda, //0x000025c3 movq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x000025c6 notq %rdx + 0x48, 0x21, 0xc2, //0x000025c9 andq %rax, %rdx + 0x48, 0x8d, 0x34, 0x12, //0x000025cc leaq (%rdx,%rdx), %rsi + 0x48, 0x09, 0xde, //0x000025d0 orq %rbx, %rsi + 0x48, 0x89, 0xf7, //0x000025d3 movq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x000025d6 notq %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000025d9 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xd8, //0x000025e3 andq %rbx, %rax + 0x48, 0x21, 0xf8, //0x000025e6 andq %rdi, %rax + 0x31, 0xff, //0x000025e9 xorl %edi, %edi + 0x48, 0x01, 0xd0, //0x000025eb addq %rdx, %rax + 0x40, 0x0f, 0x92, 0xc7, //0x000025ee setb %dil + 0x48, 0x89, 0x7d, 0xb8, //0x000025f2 movq %rdi, $-72(%rbp) + 0x48, 0x01, 0xc0, //0x000025f6 addq %rax, %rax + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000025f9 movabsq $6148914691236517205, %rdx + 0x48, 0x31, 0xd0, //0x00002603 xorq %rdx, %rax + 0x48, 0x21, 0xf0, //0x00002606 andq %rsi, %rax + 0x48, 0xf7, 0xd0, //0x00002609 notq %rax + //0x0000260c LBB0_473 + 0x66, 0x0f, 0x6f, 0xde, //0x0000260c movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002610 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002614 pmovmskb %xmm3, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00002618 shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xdf, //0x0000261c movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002620 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002624 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00002628 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x0000262c orq %rdx, %rsi + 0x66, 0x0f, 0x6f, 0xdd, //0x0000262f movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002633 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002637 pmovmskb %xmm3, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x0000263b shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x0000263f orq %rsi, %rdx + 0x66, 0x0f, 0x6f, 0xda, //0x00002642 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002646 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000264a pmovmskb %xmm3, %esi + 0x48, 0x09, 0xd6, //0x0000264e orq %rdx, %rsi + 0x48, 0x21, 0xc6, //0x00002651 andq %rax, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002654 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x00002659 pclmulqdq $0, %xmm9, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x00002660 movq %xmm3, %r14 + 0x4d, 0x31, 0xce, //0x00002665 xorq %r9, %r14 + 0x66, 0x0f, 0x6f, 0xda, //0x00002668 movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x0000266c pcmpeqb %xmm10, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002671 pmovmskb %xmm3, %r10d + 0x66, 0x0f, 0x6f, 0xdd, //0x00002676 movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x0000267a pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x0000267f pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdf, //0x00002683 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00002687 pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000268c pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xde, //0x00002690 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xda, //0x00002694 pcmpeqb %xmm10, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00002699 pmovmskb %xmm3, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x0000269d shlq $48, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x000026a1 shlq $32, %rsi + 0x48, 0x09, 0xde, //0x000026a5 orq %rbx, %rsi + 0x48, 0xc1, 0xe0, 0x10, //0x000026a8 shlq $16, %rax + 0x48, 0x09, 0xf0, //0x000026ac orq %rsi, %rax + 0x49, 0x09, 0xc2, //0x000026af orq %rax, %r10 + 0x4d, 0x89, 0xf1, //0x000026b2 movq %r14, %r9 + 0x49, 0xf7, 0xd1, //0x000026b5 notq %r9 + 0x4d, 0x21, 0xca, //0x000026b8 andq %r9, %r10 + 0x66, 0x0f, 0x74, 0xd4, //0x000026bb pcmpeqb %xmm4, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x000026bf pmovmskb %xmm2, %eax + 0x66, 0x0f, 0x74, 0xec, //0x000026c3 pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x000026c7 pmovmskb %xmm5, %ebx + 0x66, 0x0f, 0x74, 0xfc, //0x000026cb pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xff, //0x000026cf pmovmskb %xmm7, %edi + 0x66, 0x0f, 0x74, 0xf4, //0x000026d3 pcmpeqb %xmm4, %xmm6 + 0x66, 0x0f, 0xd7, 0xf6, //0x000026d7 pmovmskb %xmm6, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x000026db shlq $48, %rsi + 0x48, 0xc1, 0xe7, 0x20, //0x000026df shlq $32, %rdi + 0x48, 0x09, 0xf7, //0x000026e3 orq %rsi, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000026e6 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000026ea orq %rdi, %rbx + 0x48, 0x09, 0xd8, //0x000026ed orq %rbx, %rax + 0x4c, 0x21, 0xc8, //0x000026f0 andq %r9, %rax + 0x0f, 0x84, 0xce, 0xfd, 0xff, 0xff, //0x000026f3 je LBB0_468 + 0x4c, 0x8b, 0x4d, 0xc0, //0x000026f9 movq $-64(%rbp), %r9 + 0x90, 0x90, 0x90, //0x000026fd .p2align 4, 0x90 + //0x00002700 LBB0_475 + 0x48, 0x8d, 0x58, 0xff, //0x00002700 leaq $-1(%rax), %rbx + 0x48, 0x89, 0xde, //0x00002704 movq %rbx, %rsi + 0x4c, 0x21, 0xd6, //0x00002707 andq %r10, %rsi + 0x48, 0x89, 0xf7, //0x0000270a movq %rsi, %rdi + 0x48, 0xd1, 0xef, //0x0000270d shrq %rdi + 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002710 movabsq $6148914691236517205, %r8 + 0x4c, 0x21, 0xc7, //0x0000271a andq %r8, %rdi + 0x48, 0x29, 0xfe, //0x0000271d subq %rdi, %rsi + 0x48, 0x89, 0xf7, //0x00002720 movq %rsi, %rdi + 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002723 movabsq $3689348814741910323, %rdx + 0x48, 0x21, 0xd7, //0x0000272d andq %rdx, %rdi + 0x48, 0xc1, 0xee, 0x02, //0x00002730 shrq $2, %rsi + 0x48, 0x21, 0xd6, //0x00002734 andq %rdx, %rsi + 0x48, 0x01, 0xfe, //0x00002737 addq %rdi, %rsi + 0x48, 0x89, 0xf7, //0x0000273a movq %rsi, %rdi + 0x48, 0xc1, 0xef, 0x04, //0x0000273d shrq $4, %rdi + 0x48, 0x01, 0xf7, //0x00002741 addq %rsi, %rdi + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002744 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd7, //0x0000274e andq %rdx, %rdi + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002751 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xfa, //0x0000275b imulq %rdx, %rdi + 0x48, 0xc1, 0xef, 0x38, //0x0000275f shrq $56, %rdi + 0x4c, 0x01, 0xdf, //0x00002763 addq %r11, %rdi + 0x48, 0x39, 0xcf, //0x00002766 cmpq %rcx, %rdi + 0x0f, 0x86, 0x96, 0x05, 0x00, 0x00, //0x00002769 jbe LBB0_519 + 0x48, 0x83, 0xc1, 0x01, //0x0000276f addq $1, %rcx + 0x48, 0x21, 0xd8, //0x00002773 andq %rbx, %rax + 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00002776 jne LBB0_475 + 0xe9, 0x46, 0xfd, 0xff, 0xff, //0x0000277c jmp LBB0_468 + //0x00002781 LBB0_477 + 0x48, 0x85, 0xc0, //0x00002781 testq %rax, %rax + 0x0f, 0x8e, 0x70, 0x06, 0x00, 0x00, //0x00002784 jle LBB0_527 + 0x48, 0x89, 0xdf, //0x0000278a movq %rbx, %rdi + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x0000278d movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00002793 movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x0000279c movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000027a5 movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xe8, //0x000027ae movl %r13d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x000027b1 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x000027b6 cmpl $4033, %eax + 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x000027bb jb LBB0_481 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x000027c1 cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x000027c6 jb LBB0_482 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x000027cc movups (%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000027d1 movups %xmm2, $-176(%rbp) + 0x41, 0x0f, 0x10, 0x55, 0x10, //0x000027d8 movups $16(%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x60, 0xff, 0xff, 0xff, //0x000027dd movups %xmm2, $-160(%rbp) + 0x49, 0x83, 0xc5, 0x20, //0x000027e4 addq $32, %r13 + 0x48, 0x8b, 0x45, 0xd0, //0x000027e8 movq $-48(%rbp), %rax + 0x48, 0x8d, 0x70, 0xe0, //0x000027ec leaq $-32(%rax), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x000027f0 leaq $-144(%rbp), %rdx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000027f7 jmp LBB0_483 + //0x000027fc LBB0_481 + 0x4c, 0x8b, 0x65, 0xa8, //0x000027fc movq $-88(%rbp), %r12 + 0x48, 0x89, 0xfb, //0x00002800 movq %rdi, %rbx + 0xe9, 0x40, 0xfd, 0xff, 0xff, //0x00002803 jmp LBB0_470 + //0x00002808 LBB0_482 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002808 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xd0, //0x0000280f movq $-48(%rbp), %rsi + //0x00002813 LBB0_483 + 0x48, 0x83, 0xfe, 0x10, //0x00002813 cmpq $16, %rsi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002817 jb LBB0_484 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x0000281d movups (%r13), %xmm2 + 0x0f, 0x11, 0x12, //0x00002822 movups %xmm2, (%rdx) + 0x49, 0x83, 0xc5, 0x10, //0x00002825 addq $16, %r13 + 0x48, 0x83, 0xc2, 0x10, //0x00002829 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x0000282d addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00002831 cmpq $8, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002835 jae LBB0_491 + //0x0000283b LBB0_485 + 0x48, 0x83, 0xfe, 0x04, //0x0000283b cmpq $4, %rsi + 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x0000283f jl LBB0_486 + //0x00002845 LBB0_492 + 0x41, 0x8b, 0x45, 0x00, //0x00002845 movl (%r13), %eax + 0x89, 0x02, //0x00002849 movl %eax, (%rdx) + 0x49, 0x83, 0xc5, 0x04, //0x0000284b addq $4, %r13 + 0x48, 0x83, 0xc2, 0x04, //0x0000284f addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00002853 addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00002857 cmpq $2, %rsi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x0000285b jae LBB0_487 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002861 jmp LBB0_488 + //0x00002866 LBB0_484 + 0x48, 0x83, 0xfe, 0x08, //0x00002866 cmpq $8, %rsi + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x0000286a jb LBB0_485 + //0x00002870 LBB0_491 + 0x49, 0x8b, 0x45, 0x00, //0x00002870 movq (%r13), %rax + 0x48, 0x89, 0x02, //0x00002874 movq %rax, (%rdx) + 0x49, 0x83, 0xc5, 0x08, //0x00002877 addq $8, %r13 + 0x48, 0x83, 0xc2, 0x08, //0x0000287b addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x0000287f addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00002883 cmpq $4, %rsi + 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00002887 jge LBB0_492 + //0x0000288d LBB0_486 + 0x48, 0x83, 0xfe, 0x02, //0x0000288d cmpq $2, %rsi + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00002891 jb LBB0_488 + //0x00002897 LBB0_487 + 0x41, 0x0f, 0xb7, 0x45, 0x00, //0x00002897 movzwl (%r13), %eax + 0x66, 0x89, 0x02, //0x0000289c movw %ax, (%rdx) + 0x49, 0x83, 0xc5, 0x02, //0x0000289f addq $2, %r13 + 0x48, 0x83, 0xc2, 0x02, //0x000028a3 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x000028a7 addq $-2, %rsi + //0x000028ab LBB0_488 + 0x4c, 0x89, 0xe8, //0x000028ab movq %r13, %rax + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000028ae leaq $-176(%rbp), %r13 + 0x48, 0x85, 0xf6, //0x000028b5 testq %rsi, %rsi + 0x4c, 0x8b, 0x65, 0xa8, //0x000028b8 movq $-88(%rbp), %r12 + 0x48, 0x89, 0xfb, //0x000028bc movq %rdi, %rbx + 0x0f, 0x84, 0x83, 0xfc, 0xff, 0xff, //0x000028bf je LBB0_470 + 0x8a, 0x00, //0x000028c5 movb (%rax), %al + 0x88, 0x02, //0x000028c7 movb %al, (%rdx) + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x000028c9 leaq $-176(%rbp), %r13 + 0xe9, 0x73, 0xfc, 0xff, 0xff, //0x000028d0 jmp LBB0_470 + //0x000028d5 LBB0_493 + 0x49, 0x8b, 0x01, //0x000028d5 movq (%r9), %rax + 0x4c, 0x29, 0xd8, //0x000028d8 subq %r11, %rax + 0x4d, 0x01, 0xdd, //0x000028db addq %r11, %r13 + 0x45, 0x31, 0xc9, //0x000028de xorl %r9d, %r9d + 0x31, 0xdb, //0x000028e1 xorl %ebx, %ebx + 0x45, 0x31, 0xdb, //0x000028e3 xorl %r11d, %r11d + 0x31, 0xc9, //0x000028e6 xorl %ecx, %ecx + 0xe9, 0x73, 0x00, 0x00, 0x00, //0x000028e8 jmp LBB0_495 + //0x000028ed LBB0_494 + 0x49, 0xc1, 0xfe, 0x3f, //0x000028ed sarq $63, %r14 + 0x4c, 0x89, 0xd0, //0x000028f1 movq %r10, %rax + 0x48, 0xd1, 0xe8, //0x000028f4 shrq %rax + 0x48, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000028f7 movabsq $6148914691236517205, %rsi + 0x48, 0x21, 0xf0, //0x00002901 andq %rsi, %rax + 0x49, 0x29, 0xc2, //0x00002904 subq %rax, %r10 + 0x4c, 0x89, 0xd0, //0x00002907 movq %r10, %rax + 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000290a movabsq $3689348814741910323, %rdx + 0x48, 0x21, 0xd0, //0x00002914 andq %rdx, %rax + 0x49, 0xc1, 0xea, 0x02, //0x00002917 shrq $2, %r10 + 0x49, 0x21, 0xd2, //0x0000291b andq %rdx, %r10 + 0x49, 0x01, 0xc2, //0x0000291e addq %rax, %r10 + 0x4c, 0x89, 0xd0, //0x00002921 movq %r10, %rax + 0x48, 0xc1, 0xe8, 0x04, //0x00002924 shrq $4, %rax + 0x4c, 0x01, 0xd0, //0x00002928 addq %r10, %rax + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000292b movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd0, //0x00002935 andq %rdx, %rax + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002938 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xc2, //0x00002942 imulq %rdx, %rax + 0x48, 0xc1, 0xe8, 0x38, //0x00002946 shrq $56, %rax + 0x49, 0x01, 0xc3, //0x0000294a addq %rax, %r11 + 0x49, 0x83, 0xc5, 0x40, //0x0000294d addq $64, %r13 + 0x48, 0x8b, 0x45, 0xd0, //0x00002951 movq $-48(%rbp), %rax + 0x48, 0x83, 0xc0, 0xc0, //0x00002955 addq $-64, %rax + 0x4d, 0x89, 0xf1, //0x00002959 movq %r14, %r9 + 0x48, 0x8b, 0x5d, 0xb8, //0x0000295c movq $-72(%rbp), %rbx + //0x00002960 LBB0_495 + 0x48, 0x83, 0xf8, 0x40, //0x00002960 cmpq $64, %rax + 0x48, 0x89, 0x45, 0xd0, //0x00002964 movq %rax, $-48(%rbp) + 0x0f, 0x8c, 0x43, 0x02, 0x00, 0x00, //0x00002968 jl LBB0_503 + //0x0000296e LBB0_496 + 0xf3, 0x41, 0x0f, 0x6f, 0x55, 0x00, //0x0000296e movdqu (%r13), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x6d, 0x10, //0x00002974 movdqu $16(%r13), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7d, 0x20, //0x0000297a movdqu $32(%r13), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x75, 0x30, //0x00002980 movdqu $48(%r13), %xmm6 + 0x66, 0x0f, 0x6f, 0xda, //0x00002986 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000298a pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x0000298e pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdd, //0x00002992 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002996 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x0000299a pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x0000299e movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000029a2 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x000029a6 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xde, //0x000029aa movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x000029ae pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000029b2 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x000029b6 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x000029ba shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x000029be orq %rdi, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x000029c1 shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x000029c5 orq %rsi, %rdx + 0x48, 0x09, 0xd0, //0x000029c8 orq %rdx, %rax + 0x48, 0x89, 0xc2, //0x000029cb movq %rax, %rdx + 0x48, 0x09, 0xda, //0x000029ce orq %rbx, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000029d1 jne LBB0_498 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000029d7 movq $-1, %rax + 0x31, 0xd2, //0x000029de xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb8, //0x000029e0 movq %rdx, $-72(%rbp) + 0xe9, 0x49, 0x00, 0x00, 0x00, //0x000029e4 jmp LBB0_499 + //0x000029e9 LBB0_498 + 0x48, 0x89, 0xda, //0x000029e9 movq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x000029ec notq %rdx + 0x48, 0x21, 0xc2, //0x000029ef andq %rax, %rdx + 0x48, 0x8d, 0x34, 0x12, //0x000029f2 leaq (%rdx,%rdx), %rsi + 0x48, 0x09, 0xde, //0x000029f6 orq %rbx, %rsi + 0x48, 0x89, 0xf7, //0x000029f9 movq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x000029fc notq %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000029ff movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xd8, //0x00002a09 andq %rbx, %rax + 0x48, 0x21, 0xf8, //0x00002a0c andq %rdi, %rax + 0x31, 0xff, //0x00002a0f xorl %edi, %edi + 0x48, 0x01, 0xd0, //0x00002a11 addq %rdx, %rax + 0x40, 0x0f, 0x92, 0xc7, //0x00002a14 setb %dil + 0x48, 0x89, 0x7d, 0xb8, //0x00002a18 movq %rdi, $-72(%rbp) + 0x48, 0x01, 0xc0, //0x00002a1c addq %rax, %rax + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002a1f movabsq $6148914691236517205, %rdx + 0x48, 0x31, 0xd0, //0x00002a29 xorq %rdx, %rax + 0x48, 0x21, 0xf0, //0x00002a2c andq %rsi, %rax + 0x48, 0xf7, 0xd0, //0x00002a2f notq %rax + //0x00002a32 LBB0_499 + 0x66, 0x0f, 0x6f, 0xde, //0x00002a32 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002a36 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002a3a pmovmskb %xmm3, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00002a3e shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xdf, //0x00002a42 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002a46 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002a4a pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00002a4e shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00002a52 orq %rdx, %rsi + 0x66, 0x0f, 0x6f, 0xdd, //0x00002a55 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002a59 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002a5d pmovmskb %xmm3, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x00002a61 shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x00002a65 orq %rsi, %rdx + 0x66, 0x0f, 0x6f, 0xda, //0x00002a68 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002a6c pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002a70 pmovmskb %xmm3, %esi + 0x48, 0x09, 0xd6, //0x00002a74 orq %rdx, %rsi + 0x48, 0x21, 0xc6, //0x00002a77 andq %rax, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002a7a movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd9, 0x00, //0x00002a7f pclmulqdq $0, %xmm9, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xde, //0x00002a86 movq %xmm3, %r14 + 0x4d, 0x31, 0xce, //0x00002a8b xorq %r9, %r14 + 0x66, 0x0f, 0x6f, 0xda, //0x00002a8e movdqa %xmm2, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002a92 pcmpeqb %xmm11, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002a97 pmovmskb %xmm3, %r10d + 0x66, 0x0f, 0x6f, 0xdd, //0x00002a9c movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002aa0 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x00002aa5 pmovmskb %xmm3, %eax + 0x66, 0x0f, 0x6f, 0xdf, //0x00002aa9 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002aad pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002ab2 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xde, //0x00002ab6 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00002aba pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00002abf pmovmskb %xmm3, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00002ac3 shlq $48, %rbx + 0x48, 0xc1, 0xe6, 0x20, //0x00002ac7 shlq $32, %rsi + 0x48, 0x09, 0xde, //0x00002acb orq %rbx, %rsi + 0x48, 0xc1, 0xe0, 0x10, //0x00002ace shlq $16, %rax + 0x48, 0x09, 0xf0, //0x00002ad2 orq %rsi, %rax + 0x49, 0x09, 0xc2, //0x00002ad5 orq %rax, %r10 + 0x4d, 0x89, 0xf1, //0x00002ad8 movq %r14, %r9 + 0x49, 0xf7, 0xd1, //0x00002adb notq %r9 + 0x4d, 0x21, 0xca, //0x00002ade andq %r9, %r10 + 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00002ae1 pcmpeqb %xmm12, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00002ae6 pmovmskb %xmm2, %eax + 0x66, 0x41, 0x0f, 0x74, 0xec, //0x00002aea pcmpeqb %xmm12, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00002aef pmovmskb %xmm5, %ebx + 0x66, 0x41, 0x0f, 0x74, 0xfc, //0x00002af3 pcmpeqb %xmm12, %xmm7 + 0x66, 0x0f, 0xd7, 0xff, //0x00002af8 pmovmskb %xmm7, %edi + 0x66, 0x41, 0x0f, 0x74, 0xf4, //0x00002afc pcmpeqb %xmm12, %xmm6 + 0x66, 0x0f, 0xd7, 0xf6, //0x00002b01 pmovmskb %xmm6, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00002b05 shlq $48, %rsi + 0x48, 0xc1, 0xe7, 0x20, //0x00002b09 shlq $32, %rdi + 0x48, 0x09, 0xf7, //0x00002b0d orq %rsi, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x00002b10 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00002b14 orq %rdi, %rbx + 0x48, 0x09, 0xd8, //0x00002b17 orq %rbx, %rax + 0x4c, 0x21, 0xc8, //0x00002b1a andq %r9, %rax + 0x0f, 0x84, 0xca, 0xfd, 0xff, 0xff, //0x00002b1d je LBB0_494 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00002b23 movq $-64(%rbp), %r9 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002b27 .p2align 4, 0x90 + //0x00002b30 LBB0_501 + 0x48, 0x8d, 0x58, 0xff, //0x00002b30 leaq $-1(%rax), %rbx + 0x48, 0x89, 0xde, //0x00002b34 movq %rbx, %rsi + 0x4c, 0x21, 0xd6, //0x00002b37 andq %r10, %rsi + 0x48, 0x89, 0xf7, //0x00002b3a movq %rsi, %rdi + 0x48, 0xd1, 0xef, //0x00002b3d shrq %rdi + 0x49, 0xb8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002b40 movabsq $6148914691236517205, %r8 + 0x4c, 0x21, 0xc7, //0x00002b4a andq %r8, %rdi + 0x48, 0x29, 0xfe, //0x00002b4d subq %rdi, %rsi + 0x48, 0x89, 0xf7, //0x00002b50 movq %rsi, %rdi + 0x48, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002b53 movabsq $3689348814741910323, %rdx + 0x48, 0x21, 0xd7, //0x00002b5d andq %rdx, %rdi + 0x48, 0xc1, 0xee, 0x02, //0x00002b60 shrq $2, %rsi + 0x48, 0x21, 0xd6, //0x00002b64 andq %rdx, %rsi + 0x48, 0x01, 0xfe, //0x00002b67 addq %rdi, %rsi + 0x48, 0x89, 0xf7, //0x00002b6a movq %rsi, %rdi + 0x48, 0xc1, 0xef, 0x04, //0x00002b6d shrq $4, %rdi + 0x48, 0x01, 0xf7, //0x00002b71 addq %rsi, %rdi + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002b74 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd7, //0x00002b7e andq %rdx, %rdi + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002b81 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xfa, //0x00002b8b imulq %rdx, %rdi + 0x48, 0xc1, 0xef, 0x38, //0x00002b8f shrq $56, %rdi + 0x4c, 0x01, 0xdf, //0x00002b93 addq %r11, %rdi + 0x48, 0x39, 0xcf, //0x00002b96 cmpq %rcx, %rdi + 0x0f, 0x86, 0x66, 0x01, 0x00, 0x00, //0x00002b99 jbe LBB0_519 + 0x48, 0x83, 0xc1, 0x01, //0x00002b9f addq $1, %rcx + 0x48, 0x21, 0xd8, //0x00002ba3 andq %rbx, %rax + 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00002ba6 jne LBB0_501 + 0xe9, 0x3c, 0xfd, 0xff, 0xff, //0x00002bac jmp LBB0_494 + //0x00002bb1 LBB0_503 + 0x48, 0x85, 0xc0, //0x00002bb1 testq %rax, %rax + 0x0f, 0x8e, 0x40, 0x02, 0x00, 0x00, //0x00002bb4 jle LBB0_527 + 0x48, 0x89, 0xdf, //0x00002bba movq %rbx, %rdi + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x00002bbd movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00002bc3 movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00002bcc movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00002bd5 movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xe8, //0x00002bde movl %r13d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00002be1 andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00002be6 cmpl $4033, %eax + 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x00002beb jb LBB0_507 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00002bf1 cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x00002bf6 jb LBB0_508 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00002bfc movups (%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002c01 movups %xmm2, $-176(%rbp) + 0x41, 0x0f, 0x10, 0x55, 0x10, //0x00002c08 movups $16(%r13), %xmm2 + 0x0f, 0x11, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00002c0d movups %xmm2, $-160(%rbp) + 0x49, 0x83, 0xc5, 0x20, //0x00002c14 addq $32, %r13 + 0x48, 0x8b, 0x45, 0xd0, //0x00002c18 movq $-48(%rbp), %rax + 0x48, 0x8d, 0x70, 0xe0, //0x00002c1c leaq $-32(%rax), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00002c20 leaq $-144(%rbp), %rdx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00002c27 jmp LBB0_509 + //0x00002c2c LBB0_507 + 0x4c, 0x8b, 0x65, 0xa8, //0x00002c2c movq $-88(%rbp), %r12 + 0x48, 0x89, 0xfb, //0x00002c30 movq %rdi, %rbx + 0xe9, 0x36, 0xfd, 0xff, 0xff, //0x00002c33 jmp LBB0_496 + //0x00002c38 LBB0_508 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00002c38 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xd0, //0x00002c3f movq $-48(%rbp), %rsi + //0x00002c43 LBB0_509 + 0x48, 0x83, 0xfe, 0x10, //0x00002c43 cmpq $16, %rsi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00002c47 jb LBB0_510 + 0x41, 0x0f, 0x10, 0x55, 0x00, //0x00002c4d movups (%r13), %xmm2 + 0x0f, 0x11, 0x12, //0x00002c52 movups %xmm2, (%rdx) + 0x49, 0x83, 0xc5, 0x10, //0x00002c55 addq $16, %r13 + 0x48, 0x83, 0xc2, 0x10, //0x00002c59 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00002c5d addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00002c61 cmpq $8, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002c65 jae LBB0_517 + //0x00002c6b LBB0_511 + 0x48, 0x83, 0xfe, 0x04, //0x00002c6b cmpq $4, %rsi + 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00002c6f jl LBB0_512 + //0x00002c75 LBB0_518 + 0x41, 0x8b, 0x45, 0x00, //0x00002c75 movl (%r13), %eax + 0x89, 0x02, //0x00002c79 movl %eax, (%rdx) + 0x49, 0x83, 0xc5, 0x04, //0x00002c7b addq $4, %r13 + 0x48, 0x83, 0xc2, 0x04, //0x00002c7f addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00002c83 addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00002c87 cmpq $2, %rsi + 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00002c8b jae LBB0_513 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002c91 jmp LBB0_514 + //0x00002c96 LBB0_510 + 0x48, 0x83, 0xfe, 0x08, //0x00002c96 cmpq $8, %rsi + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00002c9a jb LBB0_511 + //0x00002ca0 LBB0_517 + 0x49, 0x8b, 0x45, 0x00, //0x00002ca0 movq (%r13), %rax + 0x48, 0x89, 0x02, //0x00002ca4 movq %rax, (%rdx) + 0x49, 0x83, 0xc5, 0x08, //0x00002ca7 addq $8, %r13 + 0x48, 0x83, 0xc2, 0x08, //0x00002cab addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00002caf addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00002cb3 cmpq $4, %rsi + 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00002cb7 jge LBB0_518 + //0x00002cbd LBB0_512 + 0x48, 0x83, 0xfe, 0x02, //0x00002cbd cmpq $2, %rsi + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00002cc1 jb LBB0_514 + //0x00002cc7 LBB0_513 + 0x41, 0x0f, 0xb7, 0x45, 0x00, //0x00002cc7 movzwl (%r13), %eax + 0x66, 0x89, 0x02, //0x00002ccc movw %ax, (%rdx) + 0x49, 0x83, 0xc5, 0x02, //0x00002ccf addq $2, %r13 + 0x48, 0x83, 0xc2, 0x02, //0x00002cd3 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00002cd7 addq $-2, %rsi + //0x00002cdb LBB0_514 + 0x4c, 0x89, 0xe8, //0x00002cdb movq %r13, %rax + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00002cde leaq $-176(%rbp), %r13 + 0x48, 0x85, 0xf6, //0x00002ce5 testq %rsi, %rsi + 0x4c, 0x8b, 0x65, 0xa8, //0x00002ce8 movq $-88(%rbp), %r12 + 0x48, 0x89, 0xfb, //0x00002cec movq %rdi, %rbx + 0x0f, 0x84, 0x79, 0xfc, 0xff, 0xff, //0x00002cef je LBB0_496 + 0x8a, 0x00, //0x00002cf5 movb (%rax), %al + 0x88, 0x02, //0x00002cf7 movb %al, (%rdx) + 0x4c, 0x8d, 0xad, 0x50, 0xff, 0xff, 0xff, //0x00002cf9 leaq $-176(%rbp), %r13 + 0xe9, 0x69, 0xfc, 0xff, 0xff, //0x00002d00 jmp LBB0_496 + //0x00002d05 LBB0_519 + 0x49, 0x8b, 0x09, //0x00002d05 movq (%r9), %rcx + 0x48, 0x0f, 0xbc, 0xc0, //0x00002d08 bsfq %rax, %rax + 0x48, 0x2b, 0x45, 0xd0, //0x00002d0c subq $-48(%rbp), %rax + 0x4c, 0x8d, 0x1c, 0x08, //0x00002d10 leaq (%rax,%rcx), %r11 + 0x49, 0x83, 0xc3, 0x01, //0x00002d14 addq $1, %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00002d18 movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00002d1c movq %r11, (%r8) + 0x49, 0x8b, 0x01, //0x00002d1f movq (%r9), %rax + 0x49, 0x39, 0xc3, //0x00002d22 cmpq %rax, %r11 + 0x4c, 0x0f, 0x47, 0xd8, //0x00002d25 cmovaq %rax, %r11 + 0x4d, 0x89, 0x18, //0x00002d29 movq %r11, (%r8) + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d2c movabsq $4294977024, %r14 + 0xe9, 0x1b, 0xf6, 0xff, 0xff, //0x00002d36 jmp LBB0_436 + //0x00002d3b LBB0_430 + 0x4d, 0x85, 0xd2, //0x00002d3b testq %r10, %r10 + 0x0f, 0x85, 0xc9, 0x00, 0x00, 0x00, //0x00002d3e jne LBB0_528 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002d44 leaq (%r14,%r9), %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002d48 addq $1, %rax + 0x49, 0xf7, 0xd6, //0x00002d4c notq %r14 + 0x4d, 0x01, 0xc6, //0x00002d4f addq %r8, %r14 + //0x00002d52 LBB0_432 + 0x4c, 0x8b, 0x65, 0xa8, //0x00002d52 movq $-88(%rbp), %r12 + 0x4d, 0x85, 0xf6, //0x00002d56 testq %r14, %r14 + 0x4c, 0x8b, 0x45, 0xc8, //0x00002d59 movq $-56(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00002d5d movq $-64(%rbp), %r9 + 0x0f, 0x8f, 0x1d, 0x00, 0x00, 0x00, //0x00002d61 jg LBB0_521 + 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002d67 jmp LBB0_433 + //0x00002d6c LBB0_520 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002d6c movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002d73 movl $2, %esi + 0x48, 0x01, 0xf0, //0x00002d78 addq %rsi, %rax + 0x49, 0x01, 0xce, //0x00002d7b addq %rcx, %r14 + 0x0f, 0x8e, 0x2d, 0x00, 0x00, 0x00, //0x00002d7e jle LBB0_433 + //0x00002d84 LBB0_521 + 0x0f, 0xb6, 0x08, //0x00002d84 movzbl (%rax), %ecx + 0x80, 0xf9, 0x5c, //0x00002d87 cmpb $92, %cl + 0x0f, 0x84, 0xdc, 0xff, 0xff, 0xff, //0x00002d8a je LBB0_520 + 0x80, 0xf9, 0x22, //0x00002d90 cmpb $34, %cl + 0x0f, 0x84, 0x27, 0x00, 0x00, 0x00, //0x00002d93 je LBB0_524 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002d99 movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002da0 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00002da5 addq %rsi, %rax + 0x49, 0x01, 0xce, //0x00002da8 addq %rcx, %r14 + 0x0f, 0x8f, 0xd3, 0xff, 0xff, 0xff, //0x00002dab jg LBB0_521 + //0x00002db1 LBB0_433 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002db1 movabsq $4294977024, %r14 + 0xe9, 0x96, 0xf5, 0xff, 0xff, //0x00002dbb jmp LBB0_436 + //0x00002dc0 LBB0_524 + 0x4c, 0x29, 0xe8, //0x00002dc0 subq %r13, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002dc3 addq $1, %rax + 0x49, 0x89, 0x00, //0x00002dc7 movq %rax, (%r8) + 0x49, 0x89, 0xc3, //0x00002dca movq %rax, %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002dcd movabsq $4294977024, %r14 + 0xe9, 0x7a, 0xf5, 0xff, 0xff, //0x00002dd7 jmp LBB0_436 + //0x00002ddc LBB0_525 + 0x4d, 0x01, 0xeb, //0x00002ddc addq %r13, %r11 + 0x48, 0x85, 0xc0, //0x00002ddf testq %rax, %rax + 0x4c, 0x8b, 0x45, 0xc8, //0x00002de2 movq $-56(%rbp), %r8 + 0x0f, 0x85, 0x6c, 0xf3, 0xff, 0xff, //0x00002de6 jne LBB0_406 + 0xe9, 0xb0, 0xf3, 0xff, 0xff, //0x00002dec jmp LBB0_413 + //0x00002df1 LBB0_526 + 0x4b, 0x8d, 0x04, 0x2b, //0x00002df1 leaq (%r11,%r13), %rax + 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00002df5 jmp LBB0_432 + //0x00002dfa LBB0_527 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00002dfa movq $-64(%rbp), %r9 + 0x4d, 0x8b, 0x19, //0x00002dfe movq (%r9), %r11 + 0x4c, 0x8b, 0x45, 0xc8, //0x00002e01 movq $-56(%rbp), %r8 + 0x4d, 0x89, 0x18, //0x00002e05 movq %r11, (%r8) + 0xe9, 0x1b, 0xf5, 0xff, 0xff, //0x00002e08 jmp LBB0_427 + //0x00002e0d LBB0_528 + 0x49, 0x8d, 0x40, 0xff, //0x00002e0d leaq $-1(%r8), %rax + 0x4c, 0x39, 0xf0, //0x00002e11 cmpq %r14, %rax + 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00, //0x00002e14 jne LBB0_530 + 0x4c, 0x8b, 0x45, 0xc8, //0x00002e1a movq $-56(%rbp), %r8 + 0xe9, 0x01, 0xf5, 0xff, 0xff, //0x00002e1e jmp LBB0_426 + //0x00002e23 LBB0_530 + 0x4b, 0x8d, 0x04, 0x0e, //0x00002e23 leaq (%r14,%r9), %rax + 0x48, 0x83, 0xc0, 0x02, //0x00002e27 addq $2, %rax + 0x4d, 0x29, 0xf0, //0x00002e2b subq %r14, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00002e2e addq $-2, %r8 + 0x4d, 0x89, 0xc6, //0x00002e32 movq %r8, %r14 + 0xe9, 0x18, 0xff, 0xff, 0xff, //0x00002e35 jmp LBB0_432 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002e3a .p2align 4, 0x90 + //0x00002e40 LBB0_464 + 0x48, 0x8b, 0x4d, 0xb0, //0x00002e40 movq $-80(%rbp), %rcx + 0x48, 0x83, 0xc1, 0x10, //0x00002e44 addq $16, %rcx + 0x4c, 0x89, 0xd8, //0x00002e48 movq %r11, %rax + 0x48, 0x89, 0x4d, 0xb0, //0x00002e4b movq %rcx, $-80(%rbp) + 0x48, 0x3b, 0x8d, 0x30, 0xff, 0xff, 0xff, //0x00002e4f cmpq $-208(%rbp), %rcx + 0x4c, 0x8b, 0x55, 0xa0, //0x00002e56 movq $-96(%rbp), %r10 + 0x0f, 0x85, 0x43, 0xd3, 0xff, 0xff, //0x00002e5a jne LBB0_2 + //0x00002e60 LBB0_465 + 0x4d, 0x85, 0xd2, //0x00002e60 testq %r10, %r10 + 0x0f, 0x84, 0xb3, 0x00, 0x00, 0x00, //0x00002e63 je LBB0_531 + 0x0f, 0x10, 0x05, 0x10, 0xd2, 0xff, 0xff, //0x00002e69 movups $-11760(%rip), %xmm0 /* LCPI0_8+0(%rip) */ + 0x41, 0x0f, 0x11, 0x02, //0x00002e70 movups %xmm0, (%r10) + 0x4d, 0x8b, 0x2c, 0x24, //0x00002e74 movq (%r12), %r13 + 0x4c, 0x89, 0xe8, //0x00002e78 movq %r13, %rax + 0x48, 0xf7, 0xd0, //0x00002e7b notq %rax + 0x48, 0x89, 0x85, 0x48, 0xff, 0xff, 0xff, //0x00002e7e movq %rax, $-184(%rbp) + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00002e85 movl $1, %eax + 0x4c, 0x29, 0xe8, //0x00002e8a subq %r13, %rax + 0x48, 0x89, 0x45, 0x98, //0x00002e8d movq %rax, $-104(%rbp) + 0x4c, 0x89, 0xe8, //0x00002e91 movq %r13, %rax + 0x48, 0xf7, 0xd8, //0x00002e94 negq %rax + 0x48, 0x89, 0x85, 0x38, 0xff, 0xff, 0xff, //0x00002e97 movq %rax, $-200(%rbp) + 0x49, 0x8d, 0x45, 0xff, //0x00002e9e leaq $-1(%r13), %rax + 0x48, 0x89, 0x45, 0xa8, //0x00002ea2 movq %rax, $-88(%rbp) + 0x49, 0x8d, 0x45, 0xfe, //0x00002ea6 leaq $-2(%r13), %rax + 0x48, 0x89, 0x85, 0x40, 0xff, 0xff, 0xff, //0x00002eaa movq %rax, $-192(%rbp) + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002eb1 movq $-1, %r15 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eb8 movabsq $4294977024, %r11 + 0xf3, 0x0f, 0x6f, 0x05, 0x66, 0xd1, 0xff, 0xff, //0x00002ec2 movdqu $-11930(%rip), %xmm0 /* LCPI0_3+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x6e, 0xd1, 0xff, 0xff, //0x00002eca movdqu $-11922(%rip), %xmm1 /* LCPI0_4+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb5, 0xd1, 0xff, 0xff, //0x00002ed2 movdqu $-11851(%rip), %xmm8 /* LCPI0_9+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x1d, 0xbd, 0xd1, 0xff, 0xff, //0x00002edb movdqu $-11843(%rip), %xmm3 /* LCPI0_10+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0xc4, 0xd1, 0xff, 0xff, //0x00002ee3 movdqu $-11836(%rip), %xmm9 /* LCPI0_11+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xcb, 0xd1, 0xff, 0xff, //0x00002eec movdqu $-11829(%rip), %xmm10 /* LCPI0_12+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x12, 0xd1, 0xff, 0xff, //0x00002ef5 movdqu $-12014(%rip), %xmm11 /* LCPI0_1+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xc9, 0xd1, 0xff, 0xff, //0x00002efe movdqu $-11831(%rip), %xmm12 /* LCPI0_13+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xd0, 0xd1, 0xff, 0xff, //0x00002f07 movdqu $-11824(%rip), %xmm13 /* LCPI0_14+0(%rip) */ + 0x4c, 0x8d, 0x35, 0x99, 0x2a, 0x00, 0x00, //0x00002f10 leaq $10905(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0xe9, 0xa3, 0x01, 0x00, 0x00, //0x00002f17 jmp LBB0_562 + //0x00002f1c LBB0_531 + 0x4d, 0x8b, 0x1c, 0x24, //0x00002f1c movq (%r12), %r11 + 0x49, 0x8b, 0x7c, 0x24, 0x08, //0x00002f20 movq $8(%r12), %rdi + 0x49, 0x8b, 0x30, //0x00002f25 movq (%r8), %rsi + 0x48, 0x39, 0xfe, //0x00002f28 cmpq %rdi, %rsi + 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x00002f2b jae LBB0_536 + 0x41, 0x8a, 0x04, 0x33, //0x00002f31 movb (%r11,%rsi), %al + 0x3c, 0x0d, //0x00002f35 cmpb $13, %al + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x00002f37 je LBB0_536 + 0x3c, 0x20, //0x00002f3d cmpb $32, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f3f je LBB0_536 + 0x04, 0xf7, //0x00002f45 addb $-9, %al + 0x3c, 0x01, //0x00002f47 cmpb $1, %al + 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x00002f49 jbe LBB0_536 + 0x49, 0x89, 0xf4, //0x00002f4f movq %rsi, %r12 + 0xe9, 0x43, 0x18, 0x00, 0x00, //0x00002f52 jmp LBB0_878 + //0x00002f57 LBB0_536 + 0x4c, 0x8d, 0x66, 0x01, //0x00002f57 leaq $1(%rsi), %r12 + 0x49, 0x39, 0xfc, //0x00002f5b cmpq %rdi, %r12 + 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002f5e jae LBB0_540 + 0x43, 0x8a, 0x04, 0x23, //0x00002f64 movb (%r11,%r12), %al + 0x3c, 0x0d, //0x00002f68 cmpb $13, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f6a je LBB0_540 + 0x3c, 0x20, //0x00002f70 cmpb $32, %al + 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002f72 je LBB0_540 + 0x04, 0xf7, //0x00002f78 addb $-9, %al + 0x3c, 0x01, //0x00002f7a cmpb $1, %al + 0x0f, 0x87, 0x18, 0x18, 0x00, 0x00, //0x00002f7c ja LBB0_878 + //0x00002f82 LBB0_540 + 0x4c, 0x8d, 0x66, 0x02, //0x00002f82 leaq $2(%rsi), %r12 + 0x49, 0x39, 0xfc, //0x00002f86 cmpq %rdi, %r12 + 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002f89 jae LBB0_544 + 0x43, 0x8a, 0x04, 0x23, //0x00002f8f movb (%r11,%r12), %al + 0x3c, 0x0d, //0x00002f93 cmpb $13, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002f95 je LBB0_544 + 0x3c, 0x20, //0x00002f9b cmpb $32, %al + 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002f9d je LBB0_544 + 0x04, 0xf7, //0x00002fa3 addb $-9, %al + 0x3c, 0x01, //0x00002fa5 cmpb $1, %al + 0x0f, 0x87, 0xed, 0x17, 0x00, 0x00, //0x00002fa7 ja LBB0_878 + //0x00002fad LBB0_544 + 0x4c, 0x8d, 0x66, 0x03, //0x00002fad leaq $3(%rsi), %r12 + 0x49, 0x39, 0xfc, //0x00002fb1 cmpq %rdi, %r12 + 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00002fb4 jae LBB0_548 + 0x43, 0x8a, 0x04, 0x23, //0x00002fba movb (%r11,%r12), %al + 0x3c, 0x0d, //0x00002fbe cmpb $13, %al + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002fc0 je LBB0_548 + 0x3c, 0x20, //0x00002fc6 cmpb $32, %al + 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00002fc8 je LBB0_548 + 0x04, 0xf7, //0x00002fce addb $-9, %al + 0x3c, 0x01, //0x00002fd0 cmpb $1, %al + 0x0f, 0x87, 0xc2, 0x17, 0x00, 0x00, //0x00002fd2 ja LBB0_878 + //0x00002fd8 LBB0_548 + 0x48, 0x83, 0xc6, 0x04, //0x00002fd8 addq $4, %rsi + 0x48, 0x39, 0xf7, //0x00002fdc cmpq %rsi, %rdi + 0x0f, 0x86, 0x49, 0x17, 0x00, 0x00, //0x00002fdf jbe LBB0_866 + 0x48, 0x39, 0xf7, //0x00002fe5 cmpq %rsi, %rdi + 0x0f, 0x84, 0x8d, 0x17, 0x00, 0x00, //0x00002fe8 je LBB0_875 + 0x49, 0x8d, 0x04, 0x3b, //0x00002fee leaq (%r11,%rdi), %rax + 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ff2 movabsq $4294977024, %rcx + 0x90, 0x90, 0x90, 0x90, //0x00002ffc .p2align 4, 0x90 + //0x00003000 LBB0_551 + 0x41, 0x0f, 0xbe, 0x14, 0x33, //0x00003000 movsbl (%r11,%rsi), %edx + 0x83, 0xfa, 0x20, //0x00003005 cmpl $32, %edx + 0x0f, 0x87, 0x79, 0x17, 0x00, 0x00, //0x00003008 ja LBB0_877 + 0x48, 0x0f, 0xa3, 0xd1, //0x0000300e btq %rdx, %rcx + 0x0f, 0x83, 0x6f, 0x17, 0x00, 0x00, //0x00003012 jae LBB0_877 + 0x48, 0x83, 0xc6, 0x01, //0x00003018 addq $1, %rsi + 0x48, 0x39, 0xf7, //0x0000301c cmpq %rsi, %rdi + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000301f jne LBB0_551 + 0xe9, 0x57, 0x17, 0x00, 0x00, //0x00003025 jmp LBB0_876 + //0x0000302a LBB0_554 + 0x3c, 0x5d, //0x0000302a cmpb $93, %al + 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x0000302c je LBB0_556 + 0xe9, 0x24, 0x17, 0x00, 0x00, //0x00003032 jmp LBB0_872 + //0x00003037 LBB0_555 + 0x80, 0xfa, 0x7d, //0x00003037 cmpb $125, %dl + 0x0f, 0x85, 0x1b, 0x17, 0x00, 0x00, //0x0000303a jne LBB0_872 + 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00003040 jmp LBB0_556 + //0x00003045 LBB0_870 + 0x49, 0x89, 0xd3, //0x00003045 movq %rdx, %r11 + 0xe9, 0x0e, 0x17, 0x00, 0x00, //0x00003048 jmp LBB0_872 + //0x0000304d LBB0_263 + 0x3c, 0x7d, //0x0000304d cmpb $125, %al + 0x0f, 0x85, 0x06, 0x17, 0x00, 0x00, //0x0000304f jne LBB0_872 + //0x00003055 LBB0_556 + 0x49, 0x83, 0xc3, 0xff, //0x00003055 addq $-1, %r11 + 0x4d, 0x89, 0x18, //0x00003059 movq %r11, (%r8) + 0x48, 0xc7, 0xc0, 0xdf, 0xff, 0xff, 0xff, //0x0000305c movq $-33, %rax + 0xe9, 0x01, 0x17, 0x00, 0x00, //0x00003063 jmp LBB0_874 + //0x00003068 LBB0_557 + 0x49, 0xf7, 0xdc, //0x00003068 negq %r12 + 0x4d, 0x89, 0xe0, //0x0000306b movq %r12, %r8 + //0x0000306e LBB0_558 + 0x4d, 0x85, 0xc0, //0x0000306e testq %r8, %r8 + 0x0f, 0x88, 0xf3, 0x18, 0x00, 0x00, //0x00003071 js LBB0_901 + //0x00003077 LBB0_559 + 0x49, 0x01, 0xc0, //0x00003077 addq %rax, %r8 + 0x48, 0x8b, 0x4d, 0xc8, //0x0000307a movq $-56(%rbp), %rcx + 0x4c, 0x89, 0x01, //0x0000307e movq %r8, (%rcx) + 0x48, 0x85, 0xc0, //0x00003081 testq %rax, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x00003084 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00003088 movq $-96(%rbp), %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000308c movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0x13, 0x29, 0x00, 0x00, //0x00003096 leaq $10515(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4c, 0x8b, 0x7d, 0xb0, //0x0000309d movq $-80(%rbp), %r15 + 0x0f, 0x88, 0xc2, 0x16, 0x00, 0x00, //0x000030a1 js LBB0_874 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000030a7 .p2align 4, 0x90 + //0x000030b0 LBB0_560 + 0x49, 0x8b, 0x12, //0x000030b0 movq (%r10), %rdx + 0x4c, 0x89, 0xf8, //0x000030b3 movq %r15, %rax + 0x48, 0x85, 0xd2, //0x000030b6 testq %rdx, %rdx + 0x0f, 0x84, 0xaa, 0x16, 0x00, 0x00, //0x000030b9 je LBB0_874 + //0x000030bf LBB0_562 + 0x4c, 0x89, 0xf9, //0x000030bf movq %r15, %rcx + 0x49, 0x8b, 0x01, //0x000030c2 movq (%r9), %rax + 0x4c, 0x8b, 0x45, 0xc8, //0x000030c5 movq $-56(%rbp), %r8 + 0x49, 0x8b, 0x10, //0x000030c9 movq (%r8), %rdx + 0x48, 0x39, 0xc2, //0x000030cc cmpq %rax, %rdx + 0x0f, 0x83, 0x2b, 0x00, 0x00, 0x00, //0x000030cf jae LBB0_567 + 0x41, 0x8a, 0x5c, 0x15, 0x00, //0x000030d5 movb (%r13,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000030da cmpb $13, %bl + 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000030dd je LBB0_567 + 0x80, 0xfb, 0x20, //0x000030e3 cmpb $32, %bl + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000030e6 je LBB0_567 + 0x80, 0xc3, 0xf7, //0x000030ec addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000030ef cmpb $1, %bl + 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x000030f2 jbe LBB0_567 + 0x49, 0x89, 0xd7, //0x000030f8 movq %rdx, %r15 + 0xe9, 0xf8, 0x00, 0x00, 0x00, //0x000030fb jmp LBB0_588 //0x00003100 .p2align 4, 0x90 - //0x00003100 LBB0_570 - 0x4c, 0x8d, 0x72, 0x03, //0x00003100 leaq $3(%rdx), %r14 - 0x49, 0x39, 0xc6, //0x00003104 cmpq %rax, %r14 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003107 jae LBB0_574 - 0x43, 0x8a, 0x5c, 0x35, 0x00, //0x0000310d movb (%r13,%r14), %bl + //0x00003100 LBB0_567 + 0x4c, 0x8d, 0x7a, 0x01, //0x00003100 leaq $1(%rdx), %r15 + 0x49, 0x39, 0xc7, //0x00003104 cmpq %rax, %r15 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003107 jae LBB0_571 + 0x43, 0x8a, 0x5c, 0x3d, 0x00, //0x0000310d movb (%r13,%r15), %bl 0x80, 0xfb, 0x0d, //0x00003112 cmpb $13, %bl - 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00003115 je LBB0_574 + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00003115 je LBB0_571 0x80, 0xfb, 0x20, //0x0000311b cmpb $32, %bl - 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000311e je LBB0_574 + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000311e je LBB0_571 0x80, 0xc3, 0xf7, //0x00003124 addb $-9, %bl 0x80, 0xfb, 0x01, //0x00003127 cmpb $1, %bl - 0x0f, 0x87, 0x68, 0x00, 0x00, 0x00, //0x0000312a ja LBB0_583 + 0x0f, 0x87, 0xc8, 0x00, 0x00, 0x00, //0x0000312a ja LBB0_588 //0x00003130 .p2align 4, 0x90 - //0x00003130 LBB0_574 - 0x48, 0x83, 0xc2, 0x04, //0x00003130 addq $4, %rdx - 0x48, 0x39, 0xd0, //0x00003134 cmpq %rdx, %rax - 0x0f, 0x86, 0xec, 0x14, 0x00, 0x00, //0x00003137 jbe LBB0_863 - 0x48, 0x39, 0xd0, //0x0000313d cmpq %rdx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00003140 je LBB0_580 - 0x4a, 0x8d, 0x34, 0x28, //0x00003146 leaq (%rax,%r13), %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000314a .p2align 4, 0x90 - //0x00003150 LBB0_577 - 0x41, 0x0f, 0xbe, 0x7c, 0x15, 0x00, //0x00003150 movsbl (%r13,%rdx), %edi - 0x83, 0xff, 0x20, //0x00003156 cmpl $32, %edi - 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x00003159 ja LBB0_582 - 0x49, 0x0f, 0xa3, 0xfa, //0x0000315f btq %rdi, %r10 - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003163 jae LBB0_582 - 0x48, 0x83, 0xc2, 0x01, //0x00003169 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x0000316d cmpq %rdx, %rax - 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x00003170 jne LBB0_577 - 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00003176 jmp LBB0_581 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000317b .p2align 4, 0x90 - //0x00003180 LBB0_580 - 0x4c, 0x01, 0xea, //0x00003180 addq %r13, %rdx - 0x48, 0x89, 0xd6, //0x00003183 movq %rdx, %rsi - //0x00003186 LBB0_581 - 0x4c, 0x29, 0xee, //0x00003186 subq %r13, %rsi - 0x48, 0x89, 0xf2, //0x00003189 movq %rsi, %rdx - //0x0000318c LBB0_582 - 0x49, 0x89, 0xd6, //0x0000318c movq %rdx, %r14 - 0x48, 0x39, 0xc2, //0x0000318f cmpq %rax, %rdx - 0x0f, 0x83, 0x94, 0x14, 0x00, 0x00, //0x00003192 jae LBB0_864 - //0x00003198 LBB0_583 - 0x49, 0x8d, 0x46, 0x01, //0x00003198 leaq $1(%r14), %rax - 0x49, 0x89, 0x00, //0x0000319c movq %rax, (%r8) - 0x43, 0x0f, 0xbe, 0x7c, 0x35, 0x00, //0x0000319f movsbl (%r13,%r14), %edi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031a5 movq $-1, %rax - 0x85, 0xff, //0x000031ac testl %edi, %edi - 0x0f, 0x84, 0x9d, 0x14, 0x00, 0x00, //0x000031ae je LBB0_870 - 0x49, 0x8b, 0x31, //0x000031b4 movq (%r9), %rsi - 0x48, 0x8d, 0x56, 0xff, //0x000031b7 leaq $-1(%rsi), %rdx - 0x41, 0x8b, 0x1c, 0xf1, //0x000031bb movl (%r9,%rsi,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x000031bf cmpq $-1, %rcx - 0x4c, 0x0f, 0x45, 0xf1, //0x000031c3 cmovneq %rcx, %r14 - 0x83, 0xc3, 0xff, //0x000031c7 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x000031ca cmpl $5, %ebx - 0x0f, 0x87, 0x40, 0x00, 0x00, 0x00, //0x000031cd ja LBB0_592 - 0x49, 0x63, 0x0c, 0x9b, //0x000031d3 movslq (%r11,%rbx,4), %rcx - 0x4c, 0x01, 0xd9, //0x000031d7 addq %r11, %rcx - 0xff, 0xe1, //0x000031da jmpq *%rcx - //0x000031dc LBB0_586 - 0x83, 0xff, 0x2c, //0x000031dc cmpl $44, %edi - 0x0f, 0x84, 0xe2, 0x04, 0x00, 0x00, //0x000031df je LBB0_655 - 0x83, 0xff, 0x5d, //0x000031e5 cmpl $93, %edi - 0x0f, 0x84, 0xc5, 0x04, 0x00, 0x00, //0x000031e8 je LBB0_588 - 0xe9, 0x57, 0x14, 0x00, 0x00, //0x000031ee jmp LBB0_869 - //0x000031f3 LBB0_589 - 0x40, 0x80, 0xff, 0x5d, //0x000031f3 cmpb $93, %dil - 0x0f, 0x84, 0xb6, 0x04, 0x00, 0x00, //0x000031f7 je LBB0_588 - 0x49, 0xc7, 0x04, 0xf1, 0x01, 0x00, 0x00, 0x00, //0x000031fd movq $1, (%r9,%rsi,8) - 0x83, 0xff, 0x7b, //0x00003205 cmpl $123, %edi - 0x0f, 0x86, 0x11, 0x00, 0x00, 0x00, //0x00003208 jbe LBB0_591 - 0xe9, 0x37, 0x14, 0x00, 0x00, //0x0000320e jmp LBB0_869 - //0x00003213 LBB0_592 - 0x49, 0x89, 0x11, //0x00003213 movq %rdx, (%r9) - 0x83, 0xff, 0x7b, //0x00003216 cmpl $123, %edi - 0x0f, 0x87, 0x2b, 0x14, 0x00, 0x00, //0x00003219 ja LBB0_869 - //0x0000321f LBB0_591 - 0x89, 0xf9, //0x0000321f movl %edi, %ecx - 0x48, 0x8d, 0x15, 0x68, 0x26, 0x00, 0x00, //0x00003221 leaq $9832(%rip), %rdx /* LJTI0_3+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00003228 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x0000322c addq %rdx, %rcx - 0xff, 0xe1, //0x0000322f jmpq *%rcx - //0x00003231 LBB0_619 - 0x4d, 0x8b, 0x1f, //0x00003231 movq (%r15), %r11 - 0x48, 0x8b, 0x45, 0xc8, //0x00003234 movq $-56(%rbp), %rax - 0x48, 0x8b, 0x38, //0x00003238 movq (%rax), %rdi - 0x48, 0x8d, 0x47, 0xff, //0x0000323b leaq $-1(%rdi), %rax - 0x49, 0x29, 0xc3, //0x0000323f subq %rax, %r11 - 0x0f, 0x84, 0x99, 0x15, 0x00, 0x00, //0x00003242 je LBB0_890 - 0x4c, 0x89, 0x75, 0xb8, //0x00003248 movq %r14, $-72(%rbp) - 0x4a, 0x8d, 0x0c, 0x2f, //0x0000324c leaq (%rdi,%r13), %rcx - 0x48, 0x83, 0xc1, 0xff, //0x00003250 addq $-1, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00003254 movq %rcx, $-48(%rbp) - 0x80, 0x39, 0x30, //0x00003258 cmpb $48, (%rcx) - 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x0000325b jne LBB0_624 - 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003261 movl $1, %r8d - 0x49, 0x83, 0xfb, 0x01, //0x00003267 cmpq $1, %r11 - 0x0f, 0x84, 0xa6, 0xfd, 0xff, 0xff, //0x0000326b je LBB0_554 - 0x41, 0x8a, 0x4c, 0x3d, 0x00, //0x00003271 movb (%r13,%rdi), %cl - 0x80, 0xc1, 0xd2, //0x00003276 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00003279 cmpb $55, %cl - 0x0f, 0x87, 0x95, 0xfd, 0xff, 0xff, //0x0000327c ja LBB0_554 - 0x0f, 0xb6, 0xc9, //0x00003282 movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003285 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x0000328f btq %rcx, %rdx - 0x0f, 0x83, 0x7e, 0xfd, 0xff, 0xff, //0x00003293 jae LBB0_554 - //0x00003299 LBB0_624 - 0x48, 0x89, 0x7d, 0xa0, //0x00003299 movq %rdi, $-96(%rbp) - 0x49, 0x83, 0xfb, 0x10, //0x0000329d cmpq $16, %r11 - 0x0f, 0x82, 0xb2, 0x0e, 0x00, 0x00, //0x000032a1 jb LBB0_799 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000032a7 movq $-1, %r14 - 0x45, 0x31, 0xc0, //0x000032ae xorl %r8d, %r8d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000032b1 movq $-1, %r15 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000032b8 movq $-1, %r9 - 0x4c, 0x89, 0xdb, //0x000032bf movq %r11, %rbx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000032c2 .p2align 4, 0x90 - //0x000032d0 LBB0_626 - 0x48, 0x8b, 0x4d, 0xd0, //0x000032d0 movq $-48(%rbp), %rcx - 0xf3, 0x42, 0x0f, 0x6f, 0x14, 0x01, //0x000032d4 movdqu (%rcx,%r8), %xmm2 - 0x66, 0x0f, 0x6f, 0xe2, //0x000032da movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x000032de pcmpgtb %xmm8, %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x000032e3 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x64, 0xea, //0x000032e7 pcmpgtb %xmm2, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x000032eb pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe2, //0x000032ef movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x000032f3 pcmpeqb %xmm9, %xmm4 - 0x66, 0x0f, 0x6f, 0xf2, //0x000032f8 movdqa %xmm2, %xmm6 - 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x000032fc pcmpeqb %xmm10, %xmm6 - 0x66, 0x0f, 0xeb, 0xf4, //0x00003301 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe2, //0x00003305 movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00003309 pand %xmm11, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x0000330e pcmpeqb %xmm12, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00003313 pcmpeqb %xmm13, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00003318 pmovmskb %xmm4, %esi - 0x66, 0x0f, 0xeb, 0xe2, //0x0000331c por %xmm2, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x00003320 por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x00003324 por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xfa, //0x00003328 pmovmskb %xmm2, %edi - 0x66, 0x44, 0x0f, 0xd7, 0xe6, //0x0000332c pmovmskb %xmm6, %r12d - 0x66, 0x0f, 0xd7, 0xcd, //0x00003331 pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x00003335 notl %ecx - 0x0f, 0xbc, 0xc9, //0x00003337 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x0000333a cmpl $16, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000333d je LBB0_628 - 0xba, 0xff, 0xff, 0xff, 0xff, //0x00003343 movl $-1, %edx - 0xd3, 0xe2, //0x00003348 shll %cl, %edx - 0xf7, 0xd2, //0x0000334a notl %edx - 0x21, 0xd7, //0x0000334c andl %edx, %edi - 0x21, 0xd6, //0x0000334e andl %edx, %esi - 0x44, 0x21, 0xe2, //0x00003350 andl %r12d, %edx - 0x41, 0x89, 0xd4, //0x00003353 movl %edx, %r12d - //0x00003356 LBB0_628 - 0x44, 0x8d, 0x57, 0xff, //0x00003356 leal $-1(%rdi), %r10d - 0x41, 0x21, 0xfa, //0x0000335a andl %edi, %r10d - 0x0f, 0x85, 0x0f, 0x0d, 0x00, 0x00, //0x0000335d jne LBB0_789 - 0x8d, 0x56, 0xff, //0x00003363 leal $-1(%rsi), %edx - 0x21, 0xf2, //0x00003366 andl %esi, %edx - 0x0f, 0x85, 0x65, 0x0c, 0x00, 0x00, //0x00003368 jne LBB0_787 - 0x41, 0x8d, 0x54, 0x24, 0xff, //0x0000336e leal $-1(%r12), %edx - 0x44, 0x21, 0xe2, //0x00003373 andl %r12d, %edx - 0x0f, 0x85, 0x57, 0x0c, 0x00, 0x00, //0x00003376 jne LBB0_787 - 0x85, 0xff, //0x0000337c testl %edi, %edi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000337e je LBB0_634 - 0x0f, 0xbc, 0xff, //0x00003384 bsfl %edi, %edi - 0x49, 0x83, 0xf9, 0xff, //0x00003387 cmpq $-1, %r9 - 0x0f, 0x85, 0xea, 0x0c, 0x00, 0x00, //0x0000338b jne LBB0_790 - 0x4c, 0x01, 0xc7, //0x00003391 addq %r8, %rdi - 0x49, 0x89, 0xf9, //0x00003394 movq %rdi, %r9 - //0x00003397 LBB0_634 - 0x85, 0xf6, //0x00003397 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003399 je LBB0_637 - 0x0f, 0xbc, 0xf6, //0x0000339f bsfl %esi, %esi - 0x49, 0x83, 0xff, 0xff, //0x000033a2 cmpq $-1, %r15 - 0x0f, 0x85, 0xd6, 0x0c, 0x00, 0x00, //0x000033a6 jne LBB0_791 - 0x4c, 0x01, 0xc6, //0x000033ac addq %r8, %rsi - 0x49, 0x89, 0xf7, //0x000033af movq %rsi, %r15 - //0x000033b2 LBB0_637 - 0x45, 0x85, 0xe4, //0x000033b2 testl %r12d, %r12d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000033b5 je LBB0_640 - 0x41, 0x0f, 0xbc, 0xd4, //0x000033bb bsfl %r12d, %edx - 0x49, 0x83, 0xfe, 0xff, //0x000033bf cmpq $-1, %r14 - 0x0f, 0x85, 0xc0, 0x0c, 0x00, 0x00, //0x000033c3 jne LBB0_792 - 0x4c, 0x01, 0xc2, //0x000033c9 addq %r8, %rdx - 0x49, 0x89, 0xd6, //0x000033cc movq %rdx, %r14 - //0x000033cf LBB0_640 - 0x83, 0xf9, 0x10, //0x000033cf cmpl $16, %ecx - 0x0f, 0x85, 0xf1, 0x04, 0x00, 0x00, //0x000033d2 jne LBB0_679 - 0x48, 0x83, 0xc3, 0xf0, //0x000033d8 addq $-16, %rbx - 0x49, 0x83, 0xc0, 0x10, //0x000033dc addq $16, %r8 - 0x48, 0x83, 0xfb, 0x0f, //0x000033e0 cmpq $15, %rbx - 0x0f, 0x87, 0xe6, 0xfe, 0xff, 0xff, //0x000033e4 ja LBB0_626 - 0x48, 0x8b, 0x4d, 0xd0, //0x000033ea movq $-48(%rbp), %rcx - 0x4a, 0x8d, 0x34, 0x01, //0x000033ee leaq (%rcx,%r8), %rsi - 0x49, 0x89, 0xf4, //0x000033f2 movq %rsi, %r12 - 0x4d, 0x39, 0xc3, //0x000033f5 cmpq %r8, %r11 - 0x4c, 0x8d, 0x15, 0xed, 0x26, 0x00, 0x00, //0x000033f8 leaq $9965(%rip), %r10 /* LJTI0_5+0(%rip) */ - 0x0f, 0x84, 0xd9, 0x04, 0x00, 0x00, //0x000033ff je LBB0_681 - //0x00003405 LBB0_643 - 0x4c, 0x8d, 0x24, 0x1e, //0x00003405 leaq (%rsi,%rbx), %r12 - 0x48, 0x8b, 0x4d, 0x90, //0x00003409 movq $-112(%rbp), %rcx - 0x4c, 0x8d, 0x04, 0x31, //0x0000340d leaq (%rcx,%rsi), %r8 - 0x4c, 0x2b, 0x45, 0xa0, //0x00003411 subq $-96(%rbp), %r8 - 0x31, 0xd2, //0x00003415 xorl %edx, %edx - 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00003417 jmp LBB0_647 - //0x0000341c LBB0_644 - 0x49, 0x83, 0xfe, 0xff, //0x0000341c cmpq $-1, %r14 - 0x0f, 0x85, 0x96, 0x0b, 0x00, 0x00, //0x00003420 jne LBB0_786 - 0x4d, 0x8d, 0x34, 0x10, //0x00003426 leaq (%r8,%rdx), %r14 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000342a .p2align 4, 0x90 - //0x00003430 LBB0_646 - 0x48, 0x83, 0xc2, 0x01, //0x00003430 addq $1, %rdx - 0x48, 0x39, 0xd3, //0x00003434 cmpq %rdx, %rbx - 0x0f, 0x84, 0xa1, 0x04, 0x00, 0x00, //0x00003437 je LBB0_681 - //0x0000343d LBB0_647 - 0x0f, 0xbe, 0x3c, 0x16, //0x0000343d movsbl (%rsi,%rdx), %edi - 0x8d, 0x4f, 0xd0, //0x00003441 leal $-48(%rdi), %ecx - 0x83, 0xf9, 0x0a, //0x00003444 cmpl $10, %ecx - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00003447 jb LBB0_646 - 0x8d, 0x4f, 0xd5, //0x0000344d leal $-43(%rdi), %ecx - 0x83, 0xf9, 0x1a, //0x00003450 cmpl $26, %ecx - 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00003453 ja LBB0_652 - 0x49, 0x63, 0x0c, 0x8a, //0x00003459 movslq (%r10,%rcx,4), %rcx - 0x4c, 0x01, 0xd1, //0x0000345d addq %r10, %rcx - 0xff, 0xe1, //0x00003460 jmpq *%rcx - //0x00003462 LBB0_650 - 0x49, 0x83, 0xf9, 0xff, //0x00003462 cmpq $-1, %r9 - 0x0f, 0x85, 0x50, 0x0b, 0x00, 0x00, //0x00003466 jne LBB0_786 - 0x4d, 0x8d, 0x0c, 0x10, //0x0000346c leaq (%r8,%rdx), %r9 - 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00003470 jmp LBB0_646 - //0x00003475 LBB0_652 - 0x83, 0xff, 0x65, //0x00003475 cmpl $101, %edi - 0x0f, 0x85, 0x5a, 0x04, 0x00, 0x00, //0x00003478 jne LBB0_680 - //0x0000347e LBB0_653 - 0x49, 0x83, 0xff, 0xff, //0x0000347e cmpq $-1, %r15 - 0x0f, 0x85, 0x34, 0x0b, 0x00, 0x00, //0x00003482 jne LBB0_786 - 0x4d, 0x8d, 0x3c, 0x10, //0x00003488 leaq (%r8,%rdx), %r15 - 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000348c jmp LBB0_646 - //0x00003491 LBB0_593 - 0x83, 0xff, 0x2c, //0x00003491 cmpl $44, %edi - 0x0f, 0x85, 0x10, 0x02, 0x00, 0x00, //0x00003494 jne LBB0_594 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x0000349a cmpq $4095, %rsi - 0x0f, 0x8f, 0xf0, 0x12, 0x00, 0x00, //0x000034a1 jg LBB0_973 - 0x48, 0x8d, 0x46, 0x01, //0x000034a7 leaq $1(%rsi), %rax - 0x49, 0x89, 0x01, //0x000034ab movq %rax, (%r9) - 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000034ae movq $3, $8(%r9,%rsi,8) - 0xe9, 0x94, 0xfb, 0xff, 0xff, //0x000034b7 jmp LBB0_555 - //0x000034bc LBB0_595 - 0x40, 0x80, 0xff, 0x22, //0x000034bc cmpb $34, %dil - 0x0f, 0x85, 0x84, 0x11, 0x00, 0x00, //0x000034c0 jne LBB0_869 - 0x4c, 0x89, 0x75, 0xb8, //0x000034c6 movq %r14, $-72(%rbp) - 0x49, 0xc7, 0x04, 0xf1, 0x04, 0x00, 0x00, 0x00, //0x000034ca movq $4, (%r9,%rsi,8) - 0x4d, 0x8b, 0x00, //0x000034d2 movq (%r8), %r8 - 0x49, 0x8b, 0x07, //0x000034d5 movq (%r15), %rax - 0x49, 0x89, 0xc6, //0x000034d8 movq %rax, %r14 - 0x4d, 0x29, 0xc6, //0x000034db subq %r8, %r14 - 0x0f, 0x84, 0x13, 0x1f, 0x00, 0x00, //0x000034de je LBB0_992 - 0x48, 0x89, 0x45, 0xa0, //0x000034e4 movq %rax, $-96(%rbp) - 0x49, 0x83, 0xfe, 0x40, //0x000034e8 cmpq $64, %r14 - 0x0f, 0x82, 0x45, 0x0c, 0x00, 0x00, //0x000034ec jb LBB0_797 - 0x4c, 0x89, 0xc1, //0x000034f2 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x000034f5 notq %rcx - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x000034f8 movq $-1, $-48(%rbp) - 0x4c, 0x89, 0xc0, //0x00003500 movq %r8, %rax - 0x45, 0x31, 0xdb, //0x00003503 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003506 .p2align 4, 0x90 - //0x00003510 LBB0_599 - 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00003510 movdqu (%r13,%rax), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x10, //0x00003517 movdqu $16(%r13,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x20, //0x0000351e movdqu $32(%r13,%rax), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x05, 0x30, //0x00003525 movdqu $48(%r13,%rax), %xmm7 - 0x66, 0x0f, 0x6f, 0xe2, //0x0000352c movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00003530 pcmpeqb %xmm0, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00003534 pmovmskb %xmm4, %r15d - 0x66, 0x0f, 0x6f, 0xe5, //0x00003539 movdqa %xmm5, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x0000353d pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00003541 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x6f, 0xe6, //0x00003545 movdqa %xmm6, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00003549 pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x0000354d pmovmskb %xmm4, %edx - 0x66, 0x0f, 0x6f, 0xe7, //0x00003551 movdqa %xmm7, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00003555 pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00003559 pmovmskb %xmm4, %esi - 0x66, 0x0f, 0x74, 0xd1, //0x0000355d pcmpeqb %xmm1, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x00003561 pmovmskb %xmm2, %r12d - 0x66, 0x0f, 0x74, 0xe9, //0x00003566 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x0000356a pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x74, 0xf1, //0x0000356e pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x00003572 pmovmskb %xmm6, %r10d - 0x66, 0x0f, 0x74, 0xf9, //0x00003577 pcmpeqb %xmm1, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xcf, //0x0000357b pmovmskb %xmm7, %r9d - 0x48, 0xc1, 0xe6, 0x30, //0x00003580 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00003584 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00003588 orq %rsi, %rdx - 0x48, 0xc1, 0xe3, 0x10, //0x0000358b shlq $16, %rbx - 0x48, 0x09, 0xd3, //0x0000358f orq %rdx, %rbx - 0x49, 0x09, 0xdf, //0x00003592 orq %rbx, %r15 - 0x49, 0xc1, 0xe1, 0x30, //0x00003595 shlq $48, %r9 - 0x49, 0xc1, 0xe2, 0x20, //0x00003599 shlq $32, %r10 - 0x4d, 0x09, 0xca, //0x0000359d orq %r9, %r10 - 0x48, 0xc1, 0xe7, 0x10, //0x000035a0 shlq $16, %rdi - 0x4c, 0x09, 0xd7, //0x000035a4 orq %r10, %rdi - 0x49, 0x09, 0xfc, //0x000035a7 orq %rdi, %r12 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000035aa jne LBB0_608 - 0x4d, 0x85, 0xdb, //0x000035b0 testq %r11, %r11 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000035b3 jne LBB0_610 - 0x45, 0x31, 0xdb, //0x000035b9 xorl %r11d, %r11d - 0x4d, 0x85, 0xff, //0x000035bc testq %r15, %r15 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000035bf jne LBB0_611 - //0x000035c5 LBB0_602 - 0x49, 0x83, 0xc6, 0xc0, //0x000035c5 addq $-64, %r14 - 0x48, 0x83, 0xc1, 0xc0, //0x000035c9 addq $-64, %rcx - 0x48, 0x83, 0xc0, 0x40, //0x000035cd addq $64, %rax - 0x49, 0x83, 0xfe, 0x3f, //0x000035d1 cmpq $63, %r14 - 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x000035d5 ja LBB0_599 - 0xe9, 0x3e, 0x09, 0x00, 0x00, //0x000035db jmp LBB0_603 - //0x000035e0 LBB0_608 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x000035e0 cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000035e5 jne LBB0_610 - 0x49, 0x0f, 0xbc, 0xd4, //0x000035eb bsfq %r12, %rdx - 0x48, 0x01, 0xc2, //0x000035ef addq %rax, %rdx - 0x48, 0x89, 0x55, 0xd0, //0x000035f2 movq %rdx, $-48(%rbp) - //0x000035f6 LBB0_610 - 0x4c, 0x89, 0xda, //0x000035f6 movq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x000035f9 notq %rdx - 0x4c, 0x21, 0xe2, //0x000035fc andq %r12, %rdx - 0x48, 0x8d, 0x34, 0x12, //0x000035ff leaq (%rdx,%rdx), %rsi - 0x4c, 0x09, 0xde, //0x00003603 orq %r11, %rsi - 0x48, 0x89, 0xf7, //0x00003606 movq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x00003609 notq %rdi - 0x4c, 0x21, 0xe7, //0x0000360c andq %r12, %rdi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000360f movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xdf, //0x00003619 andq %rbx, %rdi - 0x45, 0x31, 0xdb, //0x0000361c xorl %r11d, %r11d - 0x48, 0x01, 0xd7, //0x0000361f addq %rdx, %rdi - 0x41, 0x0f, 0x92, 0xc3, //0x00003622 setb %r11b - 0x48, 0x01, 0xff, //0x00003626 addq %rdi, %rdi - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003629 movabsq $6148914691236517205, %rdx - 0x48, 0x31, 0xd7, //0x00003633 xorq %rdx, %rdi - 0x48, 0x21, 0xf7, //0x00003636 andq %rsi, %rdi - 0x48, 0xf7, 0xd7, //0x00003639 notq %rdi - 0x49, 0x21, 0xff, //0x0000363c andq %rdi, %r15 - 0x4d, 0x85, 0xff, //0x0000363f testq %r15, %r15 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003642 je LBB0_602 - //0x00003648 LBB0_611 - 0x49, 0x0f, 0xbc, 0xc7, //0x00003648 bsfq %r15, %rax - 0x48, 0x29, 0xc8, //0x0000364c subq %rcx, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000364f movq $-64(%rbp), %r15 - //0x00003653 LBB0_612 - 0x4c, 0x8b, 0x4d, 0x98, //0x00003653 movq $-104(%rbp), %r9 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003657 movabsq $4294977024, %r10 - 0x4c, 0x8d, 0x1d, 0x10, 0x22, 0x00, 0x00, //0x00003661 leaq $8720(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0x4c, 0x8b, 0x75, 0xb8, //0x00003668 movq $-72(%rbp), %r14 - 0x48, 0x85, 0xc0, //0x0000366c testq %rax, %rax - 0x0f, 0x88, 0x2e, 0x11, 0x00, 0x00, //0x0000366f js LBB0_711 - //0x00003675 LBB0_613 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003675 movq $-56(%rbp), %rcx - 0x48, 0x89, 0x01, //0x00003679 movq %rax, (%rcx) - 0x4d, 0x85, 0xc0, //0x0000367c testq %r8, %r8 - 0x0f, 0x8f, 0xcb, 0xf9, 0xff, 0xff, //0x0000367f jg LBB0_555 - 0xe9, 0x42, 0x11, 0x00, 0x00, //0x00003685 jmp LBB0_614 - //0x0000368a LBB0_615 - 0x40, 0x80, 0xff, 0x3a, //0x0000368a cmpb $58, %dil - 0x0f, 0x85, 0xb6, 0x0f, 0x00, 0x00, //0x0000368e jne LBB0_869 - 0x49, 0xc7, 0x04, 0xf1, 0x00, 0x00, 0x00, 0x00, //0x00003694 movq $0, (%r9,%rsi,8) - 0xe9, 0xaf, 0xf9, 0xff, 0xff, //0x0000369c jmp LBB0_555 - //0x000036a1 LBB0_617 - 0x83, 0xff, 0x22, //0x000036a1 cmpl $34, %edi - 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x000036a4 je LBB0_659 - //0x000036aa LBB0_594 - 0x83, 0xff, 0x7d, //0x000036aa cmpl $125, %edi - 0x0f, 0x85, 0x97, 0x0f, 0x00, 0x00, //0x000036ad jne LBB0_869 - //0x000036b3 LBB0_588 - 0x49, 0x89, 0x11, //0x000036b3 movq %rdx, (%r9) - 0x4c, 0x89, 0xf0, //0x000036b6 movq %r14, %rax - 0x48, 0x85, 0xd2, //0x000036b9 testq %rdx, %rdx - 0x0f, 0x85, 0x9d, 0xf9, 0xff, 0xff, //0x000036bc jne LBB0_557 - 0xe9, 0x8a, 0x0f, 0x00, 0x00, //0x000036c2 jmp LBB0_870 - //0x000036c7 LBB0_655 - 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x000036c7 cmpq $4095, %rsi - 0x0f, 0x8f, 0xc3, 0x10, 0x00, 0x00, //0x000036ce jg LBB0_973 - 0x48, 0x8d, 0x46, 0x01, //0x000036d4 leaq $1(%rsi), %rax - 0x49, 0x89, 0x01, //0x000036d8 movq %rax, (%r9) - 0x49, 0xc7, 0x44, 0xf1, 0x08, 0x00, 0x00, 0x00, 0x00, //0x000036db movq $0, $8(%r9,%rsi,8) - 0xe9, 0x67, 0xf9, 0xff, 0xff, //0x000036e4 jmp LBB0_555 - //0x000036e9 LBB0_659 - 0x4c, 0x89, 0x75, 0xb8, //0x000036e9 movq %r14, $-72(%rbp) - 0x49, 0xc7, 0x04, 0xf1, 0x02, 0x00, 0x00, 0x00, //0x000036ed movq $2, (%r9,%rsi,8) - 0x4d, 0x8b, 0x00, //0x000036f5 movq (%r8), %r8 - 0x49, 0x8b, 0x07, //0x000036f8 movq (%r15), %rax - 0x49, 0x89, 0xc6, //0x000036fb movq %rax, %r14 - 0x4d, 0x29, 0xc6, //0x000036fe subq %r8, %r14 - 0x0f, 0x84, 0xf0, 0x1c, 0x00, 0x00, //0x00003701 je LBB0_992 - 0x48, 0x89, 0x45, 0xa0, //0x00003707 movq %rax, $-96(%rbp) - 0x49, 0x83, 0xfe, 0x40, //0x0000370b cmpq $64, %r14 - 0x0f, 0x82, 0x79, 0x0a, 0x00, 0x00, //0x0000370f jb LBB0_802 - 0x4c, 0x89, 0xc3, //0x00003715 movq %r8, %rbx - 0x48, 0xf7, 0xd3, //0x00003718 notq %rbx - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x0000371b movq $-1, $-48(%rbp) - 0x4c, 0x89, 0xc0, //0x00003723 movq %r8, %rax - 0x45, 0x31, 0xdb, //0x00003726 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003729 .p2align 4, 0x90 - //0x00003730 LBB0_662 - 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00003730 movdqu (%r13,%rax), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x05, 0x10, //0x00003737 movdqu $16(%r13,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x20, //0x0000373e movdqu $32(%r13,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x30, //0x00003745 movdqu $48(%r13,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfa, //0x0000374c movdqa %xmm2, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00003750 pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xff, //0x00003754 pmovmskb %xmm7, %r15d - 0x66, 0x0f, 0x6f, 0xfc, //0x00003759 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000375d pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x00003761 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x00003765 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00003769 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x0000376d pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x6f, 0xfe, //0x00003771 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00003775 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00003779 pmovmskb %xmm7, %esi - 0x66, 0x0f, 0x74, 0xd1, //0x0000377d pcmpeqb %xmm1, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x00003781 pmovmskb %xmm2, %r12d - 0x66, 0x0f, 0x74, 0xe1, //0x00003786 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x0000378a pmovmskb %xmm4, %edi - 0x66, 0x0f, 0x74, 0xe9, //0x0000378e pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00003792 pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x74, 0xf1, //0x00003797 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x0000379b pmovmskb %xmm6, %r10d - 0x48, 0xc1, 0xe6, 0x30, //0x000037a0 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x000037a4 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x000037a8 orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x000037ab shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x000037af orq %rdx, %rcx - 0x49, 0x09, 0xcf, //0x000037b2 orq %rcx, %r15 - 0x49, 0xc1, 0xe2, 0x30, //0x000037b5 shlq $48, %r10 - 0x49, 0xc1, 0xe1, 0x20, //0x000037b9 shlq $32, %r9 - 0x4d, 0x09, 0xd1, //0x000037bd orq %r10, %r9 - 0x48, 0xc1, 0xe7, 0x10, //0x000037c0 shlq $16, %rdi - 0x4c, 0x09, 0xcf, //0x000037c4 orq %r9, %rdi - 0x49, 0x09, 0xfc, //0x000037c7 orq %rdi, %r12 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000037ca jne LBB0_671 - 0x4d, 0x85, 0xdb, //0x000037d0 testq %r11, %r11 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000037d3 jne LBB0_673 - 0x45, 0x31, 0xdb, //0x000037d9 xorl %r11d, %r11d - 0x4d, 0x85, 0xff, //0x000037dc testq %r15, %r15 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000037df jne LBB0_674 - //0x000037e5 LBB0_665 - 0x49, 0x83, 0xc6, 0xc0, //0x000037e5 addq $-64, %r14 - 0x48, 0x83, 0xc3, 0xc0, //0x000037e9 addq $-64, %rbx - 0x48, 0x83, 0xc0, 0x40, //0x000037ed addq $64, %rax - 0x49, 0x83, 0xfe, 0x3f, //0x000037f1 cmpq $63, %r14 - 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x000037f5 ja LBB0_662 - 0xe9, 0xdb, 0x07, 0x00, 0x00, //0x000037fb jmp LBB0_666 - //0x00003800 LBB0_671 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x00003800 cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003805 jne LBB0_673 - 0x49, 0x0f, 0xbc, 0xcc, //0x0000380b bsfq %r12, %rcx - 0x48, 0x01, 0xc1, //0x0000380f addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00003812 movq %rcx, $-48(%rbp) - //0x00003816 LBB0_673 - 0x4c, 0x89, 0xd9, //0x00003816 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00003819 notq %rcx - 0x4c, 0x21, 0xe1, //0x0000381c andq %r12, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000381f leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xda, //0x00003823 orq %r11, %rdx - 0x48, 0x89, 0xd6, //0x00003826 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00003829 notq %rsi - 0x4c, 0x21, 0xe6, //0x0000382c andq %r12, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000382f movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00003839 andq %rdi, %rsi - 0x45, 0x31, 0xdb, //0x0000383c xorl %r11d, %r11d - 0x48, 0x01, 0xce, //0x0000383f addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc3, //0x00003842 setb %r11b - 0x48, 0x01, 0xf6, //0x00003846 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003849 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00003853 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00003856 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00003859 notq %rsi - 0x49, 0x21, 0xf7, //0x0000385c andq %rsi, %r15 - 0x4d, 0x85, 0xff, //0x0000385f testq %r15, %r15 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003862 je LBB0_665 - //0x00003868 LBB0_674 - 0x49, 0x0f, 0xbc, 0xc7, //0x00003868 bsfq %r15, %rax - 0x48, 0x29, 0xd8, //0x0000386c subq %rbx, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000386f movq $-64(%rbp), %r15 - //0x00003873 LBB0_675 - 0x4c, 0x8b, 0x4d, 0x98, //0x00003873 movq $-104(%rbp), %r9 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003877 movabsq $4294977024, %r10 - 0x4c, 0x8d, 0x1d, 0xf0, 0x1f, 0x00, 0x00, //0x00003881 leaq $8176(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0x4c, 0x8b, 0x75, 0xb8, //0x00003888 movq $-72(%rbp), %r14 - 0x48, 0x85, 0xc0, //0x0000388c testq %rax, %rax - 0x0f, 0x88, 0x0e, 0x0f, 0x00, 0x00, //0x0000388f js LBB0_711 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003895 movq $-56(%rbp), %rcx - 0x48, 0x89, 0x01, //0x00003899 movq %rax, (%rcx) - 0x4d, 0x85, 0xc0, //0x0000389c testq %r8, %r8 - 0x0f, 0x8e, 0x27, 0x0f, 0x00, 0x00, //0x0000389f jle LBB0_614 - 0x49, 0x8b, 0x01, //0x000038a5 movq (%r9), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000038a8 cmpq $4095, %rax - 0x0f, 0x8f, 0xe3, 0x0e, 0x00, 0x00, //0x000038ae jg LBB0_973 - 0x48, 0x8d, 0x48, 0x01, //0x000038b4 leaq $1(%rax), %rcx - 0x49, 0x89, 0x09, //0x000038b8 movq %rcx, (%r9) - 0x49, 0xc7, 0x44, 0xc1, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000038bb movq $4, $8(%r9,%rax,8) - 0xe9, 0x87, 0xf7, 0xff, 0xff, //0x000038c4 jmp LBB0_555 - //0x000038c9 LBB0_679 - 0x41, 0x89, 0xcc, //0x000038c9 movl %ecx, %r12d - 0x4c, 0x03, 0x65, 0xd0, //0x000038cc addq $-48(%rbp), %r12 - 0x4d, 0x01, 0xc4, //0x000038d0 addq %r8, %r12 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000038d3 jmp LBB0_681 - //0x000038d8 LBB0_680 - 0x48, 0x01, 0xd6, //0x000038d8 addq %rdx, %rsi - 0x49, 0x89, 0xf4, //0x000038db movq %rsi, %r12 - //0x000038de LBB0_681 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000038de movq $-1, %r8 - 0x4d, 0x85, 0xc9, //0x000038e5 testq %r9, %r9 - 0x0f, 0x84, 0xaa, 0x19, 0x00, 0x00, //0x000038e8 je LBB0_965 - 0x4d, 0x85, 0xf6, //0x000038ee testq %r14, %r14 - 0x48, 0x8b, 0x7d, 0xa0, //0x000038f1 movq $-96(%rbp), %rdi - 0x0f, 0x84, 0xed, 0x0e, 0x00, 0x00, //0x000038f5 je LBB0_891 - 0x4d, 0x85, 0xff, //0x000038fb testq %r15, %r15 - 0x0f, 0x84, 0xe4, 0x0e, 0x00, 0x00, //0x000038fe je LBB0_891 - 0x4c, 0x2b, 0x65, 0xd0, //0x00003904 subq $-48(%rbp), %r12 - 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003908 leaq $-1(%r12), %rcx - 0x49, 0x39, 0xc9, //0x0000390d cmpq %rcx, %r9 - 0x0f, 0x84, 0xf2, 0xf6, 0xff, 0xff, //0x00003910 je LBB0_552 - 0x49, 0x39, 0xce, //0x00003916 cmpq %rcx, %r14 - 0x0f, 0x84, 0xe9, 0xf6, 0xff, 0xff, //0x00003919 je LBB0_552 - 0x49, 0x39, 0xcf, //0x0000391f cmpq %rcx, %r15 - 0x0f, 0x84, 0xe0, 0xf6, 0xff, 0xff, //0x00003922 je LBB0_552 - 0x4d, 0x85, 0xf6, //0x00003928 testq %r14, %r14 - 0x0f, 0x8e, 0x18, 0x00, 0x00, 0x00, //0x0000392b jle LBB0_690 - 0x49, 0x8d, 0x4e, 0xff, //0x00003931 leaq $-1(%r14), %rcx - 0x49, 0x39, 0xcf, //0x00003935 cmpq %rcx, %r15 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00003938 je LBB0_690 - 0x49, 0xf7, 0xd6, //0x0000393e notq %r14 - 0x4d, 0x89, 0xf0, //0x00003941 movq %r14, %r8 - 0xe9, 0xc5, 0xf6, 0xff, 0xff, //0x00003944 jmp LBB0_553 - //0x00003949 LBB0_690 - 0x4c, 0x89, 0xc9, //0x00003949 movq %r9, %rcx - 0x4c, 0x09, 0xf9, //0x0000394c orq %r15, %rcx - 0x0f, 0x99, 0xc1, //0x0000394f setns %cl - 0x0f, 0x88, 0xec, 0x04, 0x00, 0x00, //0x00003952 js LBB0_767 - 0x4d, 0x39, 0xf9, //0x00003958 cmpq %r15, %r9 - 0x0f, 0x8c, 0xe3, 0x04, 0x00, 0x00, //0x0000395b jl LBB0_767 - 0x49, 0xf7, 0xd1, //0x00003961 notq %r9 - 0x4d, 0x89, 0xc8, //0x00003964 movq %r9, %r8 - 0xe9, 0xa2, 0xf6, 0xff, 0xff, //0x00003967 jmp LBB0_553 - //0x0000396c LBB0_693 - 0x4c, 0x89, 0x75, 0xb8, //0x0000396c movq %r14, $-72(%rbp) - 0x48, 0x8b, 0x45, 0xc8, //0x00003970 movq $-56(%rbp), %rax - 0x4c, 0x8b, 0x00, //0x00003974 movq (%rax), %r8 - 0x49, 0x8b, 0x07, //0x00003977 movq (%r15), %rax - 0x49, 0x89, 0xc6, //0x0000397a movq %rax, %r14 - 0x4d, 0x29, 0xc6, //0x0000397d subq %r8, %r14 - 0x0f, 0x84, 0x71, 0x1a, 0x00, 0x00, //0x00003980 je LBB0_992 - 0x48, 0x89, 0x45, 0xa0, //0x00003986 movq %rax, $-96(%rbp) - 0x49, 0x83, 0xfe, 0x40, //0x0000398a cmpq $64, %r14 - 0x0f, 0x82, 0x1c, 0x08, 0x00, 0x00, //0x0000398e jb LBB0_804 - 0x4c, 0x89, 0xc3, //0x00003994 movq %r8, %rbx - 0x48, 0xf7, 0xd3, //0x00003997 notq %rbx - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x0000399a movq $-1, $-48(%rbp) - 0x4c, 0x89, 0xc0, //0x000039a2 movq %r8, %rax - 0x45, 0x31, 0xdb, //0x000039a5 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000039a8 .p2align 4, 0x90 - //0x000039b0 LBB0_696 - 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x000039b0 movdqu (%r13,%rax), %xmm2 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x05, 0x10, //0x000039b7 movdqu $16(%r13,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x20, //0x000039be movdqu $32(%r13,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x30, //0x000039c5 movdqu $48(%r13,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfa, //0x000039cc movdqa %xmm2, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000039d0 pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xff, //0x000039d4 pmovmskb %xmm7, %r15d - 0x66, 0x0f, 0x6f, 0xfc, //0x000039d9 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000039dd pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x000039e1 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x000039e5 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000039e9 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000039ed pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x6f, 0xfe, //0x000039f1 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000039f5 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x000039f9 pmovmskb %xmm7, %esi - 0x66, 0x0f, 0x74, 0xd1, //0x000039fd pcmpeqb %xmm1, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x00003a01 pmovmskb %xmm2, %r12d - 0x66, 0x0f, 0x74, 0xe1, //0x00003a06 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00003a0a pmovmskb %xmm4, %edi - 0x66, 0x0f, 0x74, 0xe9, //0x00003a0e pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00003a12 pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x74, 0xf1, //0x00003a17 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x00003a1b pmovmskb %xmm6, %r10d - 0x48, 0xc1, 0xe6, 0x30, //0x00003a20 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00003a24 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00003a28 orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x00003a2b shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x00003a2f orq %rdx, %rcx - 0x49, 0x09, 0xcf, //0x00003a32 orq %rcx, %r15 - 0x49, 0xc1, 0xe2, 0x30, //0x00003a35 shlq $48, %r10 - 0x49, 0xc1, 0xe1, 0x20, //0x00003a39 shlq $32, %r9 - 0x4d, 0x09, 0xd1, //0x00003a3d orq %r10, %r9 - 0x48, 0xc1, 0xe7, 0x10, //0x00003a40 shlq $16, %rdi - 0x4c, 0x09, 0xcf, //0x00003a44 orq %r9, %rdi - 0x49, 0x09, 0xfc, //0x00003a47 orq %rdi, %r12 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00003a4a jne LBB0_705 - 0x4d, 0x85, 0xdb, //0x00003a50 testq %r11, %r11 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00003a53 jne LBB0_707 - 0x45, 0x31, 0xdb, //0x00003a59 xorl %r11d, %r11d - 0x4d, 0x85, 0xff, //0x00003a5c testq %r15, %r15 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003a5f jne LBB0_708 - //0x00003a65 LBB0_699 - 0x49, 0x83, 0xc6, 0xc0, //0x00003a65 addq $-64, %r14 - 0x48, 0x83, 0xc3, 0xc0, //0x00003a69 addq $-64, %rbx - 0x48, 0x83, 0xc0, 0x40, //0x00003a6d addq $64, %rax - 0x49, 0x83, 0xfe, 0x3f, //0x00003a71 cmpq $63, %r14 - 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x00003a75 ja LBB0_696 - 0xe9, 0x22, 0x06, 0x00, 0x00, //0x00003a7b jmp LBB0_700 - //0x00003a80 LBB0_705 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x00003a80 cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a85 jne LBB0_707 - 0x49, 0x0f, 0xbc, 0xcc, //0x00003a8b bsfq %r12, %rcx - 0x48, 0x01, 0xc1, //0x00003a8f addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00003a92 movq %rcx, $-48(%rbp) - //0x00003a96 LBB0_707 - 0x4c, 0x89, 0xd9, //0x00003a96 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00003a99 notq %rcx - 0x4c, 0x21, 0xe1, //0x00003a9c andq %r12, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00003a9f leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xda, //0x00003aa3 orq %r11, %rdx - 0x48, 0x89, 0xd6, //0x00003aa6 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00003aa9 notq %rsi - 0x4c, 0x21, 0xe6, //0x00003aac andq %r12, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003aaf movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00003ab9 andq %rdi, %rsi - 0x45, 0x31, 0xdb, //0x00003abc xorl %r11d, %r11d - 0x48, 0x01, 0xce, //0x00003abf addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc3, //0x00003ac2 setb %r11b - 0x48, 0x01, 0xf6, //0x00003ac6 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003ac9 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00003ad3 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00003ad6 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00003ad9 notq %rsi - 0x49, 0x21, 0xf7, //0x00003adc andq %rsi, %r15 - 0x4d, 0x85, 0xff, //0x00003adf testq %r15, %r15 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003ae2 je LBB0_699 - //0x00003ae8 LBB0_708 - 0x49, 0x0f, 0xbc, 0xc7, //0x00003ae8 bsfq %r15, %rax - 0x48, 0x29, 0xd8, //0x00003aec subq %rbx, %rax - //0x00003aef LBB0_709 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00003aef movq $-64(%rbp), %r15 - //0x00003af3 LBB0_710 - 0x48, 0x85, 0xc0, //0x00003af3 testq %rax, %rax - 0x4c, 0x8b, 0x4d, 0x98, //0x00003af6 movq $-104(%rbp), %r9 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003afa movabsq $4294977024, %r10 - 0x4c, 0x8d, 0x1d, 0x6d, 0x1d, 0x00, 0x00, //0x00003b04 leaq $7533(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0x4c, 0x8b, 0x75, 0xb8, //0x00003b0b movq $-72(%rbp), %r14 - 0x0f, 0x89, 0x60, 0xfb, 0xff, 0xff, //0x00003b0f jns LBB0_613 - 0xe9, 0x89, 0x0c, 0x00, 0x00, //0x00003b15 jmp LBB0_711 - //0x00003b1a LBB0_714 - 0x4d, 0x8b, 0x1f, //0x00003b1a movq (%r15), %r11 - 0x48, 0x8b, 0x45, 0xc8, //0x00003b1d movq $-56(%rbp), %rax - 0x48, 0x8b, 0x00, //0x00003b21 movq (%rax), %rax - 0x49, 0x29, 0xc3, //0x00003b24 subq %rax, %r11 - 0x0f, 0x84, 0xa6, 0x17, 0x00, 0x00, //0x00003b27 je LBB0_970 - 0x4c, 0x89, 0x75, 0xb8, //0x00003b2d movq %r14, $-72(%rbp) - 0x4e, 0x8d, 0x14, 0x28, //0x00003b31 leaq (%rax,%r13), %r10 - 0x41, 0x80, 0x3a, 0x30, //0x00003b35 cmpb $48, (%r10) - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00003b39 jne LBB0_719 - 0x41, 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003b3f movl $1, %r15d - 0x49, 0x83, 0xfb, 0x01, //0x00003b45 cmpq $1, %r11 - 0x0f, 0x84, 0x9a, 0x03, 0x00, 0x00, //0x00003b49 je LBB0_781 - 0x41, 0x8a, 0x4a, 0x01, //0x00003b4f movb $1(%r10), %cl - 0x80, 0xc1, 0xd2, //0x00003b53 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00003b56 cmpb $55, %cl - 0x0f, 0x87, 0x8a, 0x03, 0x00, 0x00, //0x00003b59 ja LBB0_781 - 0x0f, 0xb6, 0xc9, //0x00003b5f movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003b62 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x00003b6c btq %rcx, %rdx - 0x0f, 0x83, 0x73, 0x03, 0x00, 0x00, //0x00003b70 jae LBB0_781 - //0x00003b76 LBB0_719 - 0x49, 0x83, 0xfb, 0x10, //0x00003b76 cmpq $16, %r11 - 0x0f, 0x82, 0x4e, 0x06, 0x00, 0x00, //0x00003b7a jb LBB0_805 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003b80 movq $-1, %r9 - 0x45, 0x31, 0xff, //0x00003b87 xorl %r15d, %r15d - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003b8a movq $-1, %r14 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003b91 movq $-1, %r8 - 0x4c, 0x89, 0xdf, //0x00003b98 movq %r11, %rdi - //0x00003b9b LBB0_721 - 0xf3, 0x43, 0x0f, 0x6f, 0x14, 0x3a, //0x00003b9b movdqu (%r10,%r15), %xmm2 - 0x66, 0x0f, 0x6f, 0xe2, //0x00003ba1 movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x00003ba5 pcmpgtb %xmm8, %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00003baa movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x64, 0xea, //0x00003bae pcmpgtb %xmm2, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x00003bb2 pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe2, //0x00003bb6 movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x00003bba pcmpeqb %xmm9, %xmm4 - 0x66, 0x0f, 0x6f, 0xf2, //0x00003bbf movdqa %xmm2, %xmm6 - 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x00003bc3 pcmpeqb %xmm10, %xmm6 - 0x66, 0x0f, 0xeb, 0xf4, //0x00003bc8 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe2, //0x00003bcc movdqa %xmm2, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00003bd0 pand %xmm11, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00003bd5 pcmpeqb %xmm12, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00003bda pcmpeqb %xmm13, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00003bdf pmovmskb %xmm4, %edx - 0x66, 0x0f, 0xeb, 0xe2, //0x00003be3 por %xmm2, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x00003be7 por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x00003beb por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xda, //0x00003bef pmovmskb %xmm2, %ebx - 0x66, 0x44, 0x0f, 0xd7, 0xe6, //0x00003bf3 pmovmskb %xmm6, %r12d - 0x66, 0x0f, 0xd7, 0xcd, //0x00003bf8 pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x00003bfc notl %ecx - 0x0f, 0xbc, 0xc9, //0x00003bfe bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00003c01 cmpl $16, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003c04 je LBB0_723 - 0xbe, 0xff, 0xff, 0xff, 0xff, //0x00003c0a movl $-1, %esi - 0xd3, 0xe6, //0x00003c0f shll %cl, %esi - 0xf7, 0xd6, //0x00003c11 notl %esi - 0x21, 0xf3, //0x00003c13 andl %esi, %ebx - 0x21, 0xf2, //0x00003c15 andl %esi, %edx - 0x44, 0x21, 0xe6, //0x00003c17 andl %r12d, %esi - 0x41, 0x89, 0xf4, //0x00003c1a movl %esi, %r12d - //0x00003c1d LBB0_723 - 0x8d, 0x73, 0xff, //0x00003c1d leal $-1(%rbx), %esi - 0x21, 0xde, //0x00003c20 andl %ebx, %esi - 0x0f, 0x85, 0x72, 0x04, 0x00, 0x00, //0x00003c22 jne LBB0_794 - 0x8d, 0x72, 0xff, //0x00003c28 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x00003c2b andl %edx, %esi - 0x0f, 0x85, 0x67, 0x04, 0x00, 0x00, //0x00003c2d jne LBB0_794 - 0x41, 0x8d, 0x74, 0x24, 0xff, //0x00003c33 leal $-1(%r12), %esi - 0x44, 0x21, 0xe6, //0x00003c38 andl %r12d, %esi - 0x0f, 0x85, 0x59, 0x04, 0x00, 0x00, //0x00003c3b jne LBB0_794 - 0x85, 0xdb, //0x00003c41 testl %ebx, %ebx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003c43 je LBB0_729 - 0x0f, 0xbc, 0xdb, //0x00003c49 bsfl %ebx, %ebx - 0x49, 0x83, 0xf8, 0xff, //0x00003c4c cmpq $-1, %r8 - 0x0f, 0x85, 0x2b, 0x05, 0x00, 0x00, //0x00003c50 jne LBB0_800 - 0x4c, 0x01, 0xfb, //0x00003c56 addq %r15, %rbx - 0x49, 0x89, 0xd8, //0x00003c59 movq %rbx, %r8 - //0x00003c5c LBB0_729 - 0x85, 0xd2, //0x00003c5c testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003c5e je LBB0_732 - 0x0f, 0xbc, 0xd2, //0x00003c64 bsfl %edx, %edx - 0x49, 0x83, 0xfe, 0xff, //0x00003c67 cmpq $-1, %r14 - 0x0f, 0x85, 0xbf, 0x04, 0x00, 0x00, //0x00003c6b jne LBB0_796 - 0x4c, 0x01, 0xfa, //0x00003c71 addq %r15, %rdx - 0x49, 0x89, 0xd6, //0x00003c74 movq %rdx, %r14 - //0x00003c77 LBB0_732 - 0x45, 0x85, 0xe4, //0x00003c77 testl %r12d, %r12d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00003c7a je LBB0_735 - 0x41, 0x0f, 0xbc, 0xd4, //0x00003c80 bsfl %r12d, %edx - 0x49, 0x83, 0xf9, 0xff, //0x00003c84 cmpq $-1, %r9 - 0x0f, 0x85, 0xa2, 0x04, 0x00, 0x00, //0x00003c88 jne LBB0_796 - 0x4c, 0x01, 0xfa, //0x00003c8e addq %r15, %rdx - 0x49, 0x89, 0xd1, //0x00003c91 movq %rdx, %r9 - //0x00003c94 LBB0_735 - 0x83, 0xf9, 0x10, //0x00003c94 cmpl $16, %ecx - 0x0f, 0x85, 0xc3, 0x01, 0x00, 0x00, //0x00003c97 jne LBB0_768 - 0x48, 0x83, 0xc7, 0xf0, //0x00003c9d addq $-16, %rdi - 0x49, 0x83, 0xc7, 0x10, //0x00003ca1 addq $16, %r15 - 0x48, 0x83, 0xff, 0x0f, //0x00003ca5 cmpq $15, %rdi - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x00003ca9 ja LBB0_721 - 0x4b, 0x8d, 0x34, 0x3a, //0x00003caf leaq (%r10,%r15), %rsi - 0x49, 0x89, 0xf4, //0x00003cb3 movq %rsi, %r12 - 0x4d, 0x39, 0xfb, //0x00003cb6 cmpq %r15, %r11 - 0x0f, 0x84, 0xb5, 0x01, 0x00, 0x00, //0x00003cb9 je LBB0_770 - //0x00003cbf LBB0_738 - 0x4c, 0x8d, 0x24, 0x3e, //0x00003cbf leaq (%rsi,%rdi), %r12 - 0x49, 0x89, 0xf3, //0x00003cc3 movq %rsi, %r11 - 0x4d, 0x29, 0xd3, //0x00003cc6 subq %r10, %r11 - 0x31, 0xc9, //0x00003cc9 xorl %ecx, %ecx - 0x4c, 0x8d, 0x3d, 0xae, 0x1d, 0x00, 0x00, //0x00003ccb leaq $7598(%rip), %r15 /* LJTI0_4+0(%rip) */ - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00003cd2 jmp LBB0_742 - //0x00003cd7 LBB0_739 - 0x49, 0x83, 0xf9, 0xff, //0x00003cd7 cmpq $-1, %r9 - 0x0f, 0x85, 0x3c, 0x04, 0x00, 0x00, //0x00003cdb jne LBB0_795 - 0x4d, 0x8d, 0x0c, 0x0b, //0x00003ce1 leaq (%r11,%rcx), %r9 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003ce5 .p2align 4, 0x90 - //0x00003cf0 LBB0_741 - 0x48, 0x83, 0xc1, 0x01, //0x00003cf0 addq $1, %rcx - 0x48, 0x39, 0xcf, //0x00003cf4 cmpq %rcx, %rdi - 0x0f, 0x84, 0x77, 0x01, 0x00, 0x00, //0x00003cf7 je LBB0_770 - //0x00003cfd LBB0_742 - 0x0f, 0xbe, 0x14, 0x0e, //0x00003cfd movsbl (%rsi,%rcx), %edx - 0x8d, 0x5a, 0xd0, //0x00003d01 leal $-48(%rdx), %ebx - 0x83, 0xfb, 0x0a, //0x00003d04 cmpl $10, %ebx - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00003d07 jb LBB0_741 - 0x8d, 0x5a, 0xd5, //0x00003d0d leal $-43(%rdx), %ebx - 0x83, 0xfb, 0x1a, //0x00003d10 cmpl $26, %ebx - 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00003d13 ja LBB0_747 - 0x49, 0x63, 0x14, 0x9f, //0x00003d19 movslq (%r15,%rbx,4), %rdx - 0x4c, 0x01, 0xfa, //0x00003d1d addq %r15, %rdx - 0xff, 0xe2, //0x00003d20 jmpq *%rdx - //0x00003d22 LBB0_745 - 0x49, 0x83, 0xf8, 0xff, //0x00003d22 cmpq $-1, %r8 - 0x0f, 0x85, 0xf1, 0x03, 0x00, 0x00, //0x00003d26 jne LBB0_795 - 0x4d, 0x8d, 0x04, 0x0b, //0x00003d2c leaq (%r11,%rcx), %r8 - 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00003d30 jmp LBB0_741 - //0x00003d35 LBB0_747 - 0x83, 0xfa, 0x65, //0x00003d35 cmpl $101, %edx - 0x0f, 0x85, 0x30, 0x01, 0x00, 0x00, //0x00003d38 jne LBB0_769 - //0x00003d3e LBB0_748 - 0x49, 0x83, 0xfe, 0xff, //0x00003d3e cmpq $-1, %r14 - 0x0f, 0x85, 0xd5, 0x03, 0x00, 0x00, //0x00003d42 jne LBB0_795 - 0x4d, 0x8d, 0x34, 0x0b, //0x00003d48 leaq (%r11,%rcx), %r14 - 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x00003d4c jmp LBB0_741 - //0x00003d51 LBB0_750 - 0x49, 0x8b, 0x01, //0x00003d51 movq (%r9), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00003d54 cmpq $4095, %rax - 0x0f, 0x8f, 0x37, 0x0a, 0x00, 0x00, //0x00003d5a jg LBB0_973 - 0x48, 0x8d, 0x48, 0x01, //0x00003d60 leaq $1(%rax), %rcx - 0x49, 0x89, 0x09, //0x00003d64 movq %rcx, (%r9) - 0x49, 0xc7, 0x44, 0xc1, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00003d67 movq $5, $8(%r9,%rax,8) - 0xe9, 0xdb, 0xf2, 0xff, 0xff, //0x00003d70 jmp LBB0_555 - //0x00003d75 LBB0_752 - 0x48, 0x8b, 0x7d, 0xc8, //0x00003d75 movq $-56(%rbp), %rdi - 0x48, 0x8b, 0x0f, //0x00003d79 movq (%rdi), %rcx - 0x49, 0x8b, 0x17, //0x00003d7c movq (%r15), %rdx - 0x48, 0x8d, 0x72, 0xfc, //0x00003d7f leaq $-4(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00003d83 cmpq %rsi, %rcx - 0x0f, 0x87, 0xae, 0x14, 0x00, 0x00, //0x00003d86 ja LBB0_972 - 0x41, 0x8b, 0x54, 0x0d, 0x00, //0x00003d8c movl (%r13,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00003d91 cmpl $1702063201, %edx - 0x0f, 0x85, 0x4f, 0x15, 0x00, 0x00, //0x00003d97 jne LBB0_974 - 0x48, 0x8d, 0x41, 0x04, //0x00003d9d leaq $4(%rcx), %rax - 0x48, 0x89, 0x07, //0x00003da1 movq %rax, (%rdi) - 0x48, 0x85, 0xc9, //0x00003da4 testq %rcx, %rcx - 0x0f, 0x8f, 0xa3, 0xf2, 0xff, 0xff, //0x00003da7 jg LBB0_555 - 0xe9, 0x30, 0x16, 0x00, 0x00, //0x00003dad jmp LBB0_755 - //0x00003db2 LBB0_756 - 0x48, 0x8b, 0x7d, 0xc8, //0x00003db2 movq $-56(%rbp), %rdi - 0x48, 0x8b, 0x0f, //0x00003db6 movq (%rdi), %rcx - 0x49, 0x8b, 0x17, //0x00003db9 movq (%r15), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00003dbc leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00003dc0 cmpq %rsi, %rcx - 0x0f, 0x87, 0x71, 0x14, 0x00, 0x00, //0x00003dc3 ja LBB0_972 - 0x48, 0x8d, 0x41, 0xff, //0x00003dc9 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0d, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00003dcd cmpl $1819047278, $-1(%r13,%rcx) - 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00003dd6 je LBB0_764 - 0xe9, 0x64, 0x15, 0x00, 0x00, //0x00003ddc jmp LBB0_758 - //0x00003de1 LBB0_762 - 0x48, 0x8b, 0x7d, 0xc8, //0x00003de1 movq $-56(%rbp), %rdi - 0x48, 0x8b, 0x0f, //0x00003de5 movq (%rdi), %rcx - 0x49, 0x8b, 0x17, //0x00003de8 movq (%r15), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00003deb leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00003def cmpq %rsi, %rcx - 0x0f, 0x87, 0x42, 0x14, 0x00, 0x00, //0x00003df2 ja LBB0_972 - 0x48, 0x8d, 0x41, 0xff, //0x00003df8 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0d, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00003dfc cmpl $1702195828, $-1(%r13,%rcx) - 0x0f, 0x85, 0x83, 0x15, 0x00, 0x00, //0x00003e05 jne LBB0_980 - //0x00003e0b LBB0_764 - 0x48, 0x8d, 0x51, 0x03, //0x00003e0b leaq $3(%rcx), %rdx - 0x48, 0x89, 0x17, //0x00003e0f movq %rdx, (%rdi) - 0x48, 0x85, 0xc9, //0x00003e12 testq %rcx, %rcx - 0x0f, 0x8f, 0x35, 0xf2, 0xff, 0xff, //0x00003e15 jg LBB0_555 - 0xe9, 0x31, 0x08, 0x00, 0x00, //0x00003e1b jmp LBB0_870 - //0x00003e20 LBB0_765 - 0x49, 0x8b, 0x01, //0x00003e20 movq (%r9), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00003e23 cmpq $4095, %rax - 0x0f, 0x8f, 0x68, 0x09, 0x00, 0x00, //0x00003e29 jg LBB0_973 - 0x48, 0x8d, 0x48, 0x01, //0x00003e2f leaq $1(%rax), %rcx - 0x49, 0x89, 0x09, //0x00003e33 movq %rcx, (%r9) - 0x49, 0xc7, 0x44, 0xc1, 0x08, 0x06, 0x00, 0x00, 0x00, //0x00003e36 movq $6, $8(%r9,%rax,8) - 0xe9, 0x0c, 0xf2, 0xff, 0xff, //0x00003e3f jmp LBB0_555 - //0x00003e44 LBB0_767 - 0x49, 0x8d, 0x57, 0xff, //0x00003e44 leaq $-1(%r15), %rdx - 0x49, 0x39, 0xd1, //0x00003e48 cmpq %rdx, %r9 - 0x49, 0xf7, 0xd7, //0x00003e4b notq %r15 - 0x4d, 0x0f, 0x45, 0xfc, //0x00003e4e cmovneq %r12, %r15 - 0x84, 0xc9, //0x00003e52 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xfc, //0x00003e54 cmoveq %r12, %r15 - 0x4d, 0x89, 0xf8, //0x00003e58 movq %r15, %r8 - 0xe9, 0xae, 0xf1, 0xff, 0xff, //0x00003e5b jmp LBB0_553 - //0x00003e60 LBB0_768 - 0x41, 0x89, 0xcc, //0x00003e60 movl %ecx, %r12d - 0x4d, 0x01, 0xd4, //0x00003e63 addq %r10, %r12 - 0x4d, 0x01, 0xfc, //0x00003e66 addq %r15, %r12 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00003e69 jmp LBB0_770 - //0x00003e6e LBB0_769 - 0x48, 0x01, 0xce, //0x00003e6e addq %rcx, %rsi - 0x49, 0x89, 0xf4, //0x00003e71 movq %rsi, %r12 - //0x00003e74 LBB0_770 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00003e74 movq $-1, %r15 - 0x4d, 0x85, 0xc0, //0x00003e7b testq %r8, %r8 - 0x0f, 0x84, 0x56, 0x14, 0x00, 0x00, //0x00003e7e je LBB0_971 - 0x4d, 0x85, 0xc9, //0x00003e84 testq %r9, %r9 - 0x0f, 0x84, 0x4d, 0x14, 0x00, 0x00, //0x00003e87 je LBB0_971 - 0x4d, 0x85, 0xf6, //0x00003e8d testq %r14, %r14 - 0x0f, 0x84, 0x44, 0x14, 0x00, 0x00, //0x00003e90 je LBB0_971 - 0x4d, 0x29, 0xd4, //0x00003e96 subq %r10, %r12 - 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003e99 leaq $-1(%r12), %rcx - 0x49, 0x39, 0xc8, //0x00003e9e cmpq %rcx, %r8 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00003ea1 je LBB0_779 - 0x49, 0x39, 0xc9, //0x00003ea7 cmpq %rcx, %r9 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00003eaa je LBB0_779 - 0x49, 0x39, 0xce, //0x00003eb0 cmpq %rcx, %r14 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00003eb3 je LBB0_779 - 0x4d, 0x85, 0xc9, //0x00003eb9 testq %r9, %r9 - 0x0f, 0x8e, 0xd7, 0x00, 0x00, 0x00, //0x00003ebc jle LBB0_783 - 0x49, 0x8d, 0x49, 0xff, //0x00003ec2 leaq $-1(%r9), %rcx - 0x49, 0x39, 0xce, //0x00003ec6 cmpq %rcx, %r14 - 0x0f, 0x84, 0xca, 0x00, 0x00, 0x00, //0x00003ec9 je LBB0_783 - 0x49, 0xf7, 0xd1, //0x00003ecf notq %r9 - 0x4d, 0x89, 0xcf, //0x00003ed2 movq %r9, %r15 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00003ed5 jmp LBB0_780 - //0x00003eda LBB0_779 - 0x49, 0xf7, 0xdc, //0x00003eda negq %r12 - 0x4d, 0x89, 0xe7, //0x00003edd movq %r12, %r15 - //0x00003ee0 LBB0_780 - 0x4d, 0x85, 0xff, //0x00003ee0 testq %r15, %r15 - 0x0f, 0x88, 0xf1, 0x13, 0x00, 0x00, //0x00003ee3 js LBB0_971 - //0x00003ee9 LBB0_781 - 0x49, 0x01, 0xc7, //0x00003ee9 addq %rax, %r15 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003eec movq $-56(%rbp), %rcx - 0x4c, 0x89, 0x39, //0x00003ef0 movq %r15, (%rcx) - 0x48, 0x85, 0xc0, //0x00003ef3 testq %rax, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x00003ef6 movq $-64(%rbp), %r15 - 0x4c, 0x8b, 0x4d, 0x98, //0x00003efa movq $-104(%rbp), %r9 - 0x49, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003efe movabsq $4294977024, %r10 - 0x4c, 0x8d, 0x1d, 0x69, 0x19, 0x00, 0x00, //0x00003f08 leaq $6505(%rip), %r11 /* LJTI0_2+0(%rip) */ - 0x4c, 0x8b, 0x75, 0xb8, //0x00003f0f movq $-72(%rbp), %r14 - 0x0f, 0x8f, 0x37, 0xf1, 0xff, 0xff, //0x00003f13 jg LBB0_555 - 0xe9, 0xd0, 0x14, 0x00, 0x00, //0x00003f19 jmp LBB0_782 - //0x00003f1e LBB0_603 - 0x4c, 0x01, 0xe8, //0x00003f1e addq %r13, %rax - 0x49, 0x83, 0xfe, 0x20, //0x00003f21 cmpq $32, %r14 - 0x0f, 0x82, 0x25, 0x02, 0x00, 0x00, //0x00003f25 jb LBB0_798 - //0x00003f2b LBB0_604 - 0xf3, 0x0f, 0x6f, 0x10, //0x00003f2b movdqu (%rax), %xmm2 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00003f2f movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xea, //0x00003f34 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00003f38 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00003f3c pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00003f40 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00003f44 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00003f48 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xd1, //0x00003f4c pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00003f50 pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x74, 0xe1, //0x00003f54 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00003f58 pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe6, 0x10, //0x00003f5c shlq $16, %rsi - 0x48, 0x09, 0xf1, //0x00003f60 orq %rsi, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x00003f63 shlq $16, %rdi - 0x48, 0x09, 0xfa, //0x00003f67 orq %rdi, %rdx - 0x0f, 0x85, 0x7e, 0x02, 0x00, 0x00, //0x00003f6a jne LBB0_806 - 0x4d, 0x85, 0xdb, //0x00003f70 testq %r11, %r11 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00003f73 movq $-64(%rbp), %r15 - 0x0f, 0x85, 0x8d, 0x02, 0x00, 0x00, //0x00003f77 jne LBB0_808 - 0x45, 0x31, 0xdb, //0x00003f7d xorl %r11d, %r11d - 0x48, 0x85, 0xc9, //0x00003f80 testq %rcx, %rcx - 0x0f, 0x84, 0xbd, 0x02, 0x00, 0x00, //0x00003f83 je LBB0_809 - //0x00003f89 LBB0_607 - 0x48, 0x0f, 0xbc, 0xc9, //0x00003f89 bsfq %rcx, %rcx - 0x48, 0x03, 0x45, 0x90, //0x00003f8d addq $-112(%rbp), %rax - 0x48, 0x01, 0xc8, //0x00003f91 addq %rcx, %rax - 0xe9, 0xba, 0xf6, 0xff, 0xff, //0x00003f94 jmp LBB0_612 - //0x00003f99 LBB0_783 - 0x4c, 0x89, 0xc1, //0x00003f99 movq %r8, %rcx - 0x4c, 0x09, 0xf1, //0x00003f9c orq %r14, %rcx - 0x0f, 0x99, 0xc1, //0x00003f9f setns %cl - 0x0f, 0x88, 0xae, 0x00, 0x00, 0x00, //0x00003fa2 js LBB0_788 - 0x4d, 0x39, 0xf0, //0x00003fa8 cmpq %r14, %r8 - 0x0f, 0x8c, 0xa5, 0x00, 0x00, 0x00, //0x00003fab jl LBB0_788 - 0x49, 0xf7, 0xd0, //0x00003fb1 notq %r8 - 0x4d, 0x89, 0xc7, //0x00003fb4 movq %r8, %r15 - 0xe9, 0x24, 0xff, 0xff, 0xff, //0x00003fb7 jmp LBB0_780 - //0x00003fbc LBB0_786 - 0x48, 0x8b, 0x4d, 0xa8, //0x00003fbc movq $-88(%rbp), %rcx - 0x48, 0x8b, 0x7d, 0xa0, //0x00003fc0 movq $-96(%rbp), %rdi - 0x4c, 0x8d, 0x04, 0x39, //0x00003fc4 leaq (%rcx,%rdi), %r8 - 0x49, 0x29, 0xf0, //0x00003fc8 subq %rsi, %r8 - 0x49, 0x29, 0xd0, //0x00003fcb subq %rdx, %r8 - 0xe9, 0x3b, 0xf0, 0xff, 0xff, //0x00003fce jmp LBB0_553 - //0x00003fd3 LBB0_787 - 0x0f, 0xbc, 0xca, //0x00003fd3 bsfl %edx, %ecx - 0xe9, 0xb0, 0x00, 0x00, 0x00, //0x00003fd6 jmp LBB0_793 - //0x00003fdb LBB0_666 - 0x4c, 0x01, 0xe8, //0x00003fdb addq %r13, %rax - 0x49, 0x83, 0xfe, 0x20, //0x00003fde cmpq $32, %r14 - 0x0f, 0x82, 0xbf, 0x01, 0x00, 0x00, //0x00003fe2 jb LBB0_803 - //0x00003fe8 LBB0_667 - 0xf3, 0x0f, 0x6f, 0x10, //0x00003fe8 movdqu (%rax), %xmm2 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00003fec movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xea, //0x00003ff1 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00003ff5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00003ff9 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00003ffd movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00004001 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00004005 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd1, //0x00004009 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x0000400d pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00004011 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00004015 pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00004019 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x0000401d orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00004020 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00004024 orq %rdi, %rsi - 0x0f, 0x85, 0xdd, 0x02, 0x00, 0x00, //0x00004027 jne LBB0_822 - 0x4d, 0x85, 0xdb, //0x0000402d testq %r11, %r11 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004030 movq $-64(%rbp), %r15 - 0x0f, 0x85, 0xec, 0x02, 0x00, 0x00, //0x00004034 jne LBB0_824 - 0x45, 0x31, 0xdb, //0x0000403a xorl %r11d, %r11d - 0x48, 0x85, 0xd2, //0x0000403d testq %rdx, %rdx - 0x0f, 0x84, 0x1c, 0x03, 0x00, 0x00, //0x00004040 je LBB0_825 - //0x00004046 LBB0_670 - 0x48, 0x0f, 0xbc, 0xca, //0x00004046 bsfq %rdx, %rcx - 0x48, 0x03, 0x45, 0x90, //0x0000404a addq $-112(%rbp), %rax - 0x48, 0x01, 0xc8, //0x0000404e addq %rcx, %rax - 0xe9, 0x1d, 0xf8, 0xff, 0xff, //0x00004051 jmp LBB0_675 - //0x00004056 LBB0_788 - 0x49, 0x8d, 0x56, 0xff, //0x00004056 leaq $-1(%r14), %rdx - 0x49, 0x39, 0xd0, //0x0000405a cmpq %rdx, %r8 - 0x49, 0xf7, 0xd6, //0x0000405d notq %r14 - 0x4d, 0x0f, 0x45, 0xf4, //0x00004060 cmovneq %r12, %r14 - 0x84, 0xc9, //0x00004064 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xf4, //0x00004066 cmoveq %r12, %r14 - 0x4d, 0x89, 0xf7, //0x0000406a movq %r14, %r15 - 0xe9, 0x6e, 0xfe, 0xff, 0xff, //0x0000406d jmp LBB0_780 - //0x00004072 LBB0_789 - 0x41, 0x0f, 0xbc, 0xca, //0x00004072 bsfl %r10d, %ecx - 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00004076 jmp LBB0_793 - //0x0000407b LBB0_790 - 0x89, 0xf9, //0x0000407b movl %edi, %ecx - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000407d jmp LBB0_793 - //0x00004082 LBB0_791 - 0x89, 0xf1, //0x00004082 movl %esi, %ecx - 0xe9, 0x02, 0x00, 0x00, 0x00, //0x00004084 jmp LBB0_793 - //0x00004089 LBB0_792 - 0x89, 0xd1, //0x00004089 movl %edx, %ecx - //0x0000408b LBB0_793 - 0x49, 0xf7, 0xd0, //0x0000408b notq %r8 - 0x49, 0x29, 0xc8, //0x0000408e subq %rcx, %r8 - 0x48, 0x8b, 0x7d, 0xa0, //0x00004091 movq $-96(%rbp), %rdi - 0xe9, 0x74, 0xef, 0xff, 0xff, //0x00004095 jmp LBB0_553 - //0x0000409a LBB0_794 - 0x0f, 0xbc, 0xce, //0x0000409a bsfl %esi, %ecx - 0xe9, 0xe1, 0x00, 0x00, 0x00, //0x0000409d jmp LBB0_801 - //0x000040a2 LBB0_700 - 0x4c, 0x01, 0xe8, //0x000040a2 addq %r13, %rax - 0x49, 0x83, 0xfe, 0x20, //0x000040a5 cmpq $32, %r14 - 0x0f, 0x82, 0x60, 0x04, 0x00, 0x00, //0x000040a9 jb LBB0_846 - //0x000040af LBB0_701 - 0xf3, 0x0f, 0x6f, 0x10, //0x000040af movdqu (%rax), %xmm2 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000040b3 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xea, //0x000040b8 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000040bc pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000040c0 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x000040c4 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000040c8 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000040cc pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd1, //0x000040d0 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x000040d4 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x000040d8 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x000040dc pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x000040e0 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x000040e4 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000040e7 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x000040eb orq %rdi, %rsi - 0x0f, 0x85, 0xbb, 0x03, 0x00, 0x00, //0x000040ee jne LBB0_842 - 0x4d, 0x85, 0xdb, //0x000040f4 testq %r11, %r11 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000040f7 movq $-64(%rbp), %r15 - 0x0f, 0x85, 0xca, 0x03, 0x00, 0x00, //0x000040fb jne LBB0_844 - 0x45, 0x31, 0xdb, //0x00004101 xorl %r11d, %r11d - 0x48, 0x85, 0xd2, //0x00004104 testq %rdx, %rdx - 0x0f, 0x84, 0xfa, 0x03, 0x00, 0x00, //0x00004107 je LBB0_845 - //0x0000410d LBB0_704 - 0x48, 0x0f, 0xbc, 0xca, //0x0000410d bsfq %rdx, %rcx - 0x48, 0x03, 0x45, 0x90, //0x00004111 addq $-112(%rbp), %rax - 0x48, 0x01, 0xc8, //0x00004115 addq %rcx, %rax - 0xe9, 0xd6, 0xf9, 0xff, 0xff, //0x00004118 jmp LBB0_710 - //0x0000411d LBB0_795 - 0x48, 0x8b, 0x55, 0xb0, //0x0000411d movq $-80(%rbp), %rdx - 0x4c, 0x8d, 0x3c, 0x02, //0x00004121 leaq (%rdx,%rax), %r15 - 0x49, 0x29, 0xf7, //0x00004125 subq %rsi, %r15 - 0x49, 0x29, 0xcf, //0x00004128 subq %rcx, %r15 - 0xe9, 0xb0, 0xfd, 0xff, 0xff, //0x0000412b jmp LBB0_780 - //0x00004130 LBB0_796 - 0x89, 0xd1, //0x00004130 movl %edx, %ecx - 0xe9, 0x4c, 0x00, 0x00, 0x00, //0x00004132 jmp LBB0_801 - //0x00004137 LBB0_797 - 0x4b, 0x8d, 0x04, 0x28, //0x00004137 leaq (%r8,%r13), %rax - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x0000413b movq $-1, $-48(%rbp) - 0x45, 0x31, 0xdb, //0x00004143 xorl %r11d, %r11d - 0x49, 0x83, 0xfe, 0x20, //0x00004146 cmpq $32, %r14 - 0x0f, 0x83, 0xdb, 0xfd, 0xff, 0xff, //0x0000414a jae LBB0_604 - //0x00004150 LBB0_798 - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004150 movq $-64(%rbp), %r15 - 0xe9, 0xf5, 0x00, 0x00, 0x00, //0x00004154 jmp LBB0_810 - //0x00004159 LBB0_799 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00004159 movq $-1, %r9 - 0x48, 0x8b, 0x75, 0xd0, //0x00004160 movq $-48(%rbp), %rsi - 0x4c, 0x89, 0xdb, //0x00004164 movq %r11, %rbx - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00004167 movq $-1, %r15 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000416e movq $-1, %r14 - 0x4c, 0x8d, 0x15, 0x70, 0x19, 0x00, 0x00, //0x00004175 leaq $6512(%rip), %r10 /* LJTI0_5+0(%rip) */ - 0xe9, 0x84, 0xf2, 0xff, 0xff, //0x0000417c jmp LBB0_643 - //0x00004181 LBB0_800 - 0x89, 0xd9, //0x00004181 movl %ebx, %ecx - //0x00004183 LBB0_801 - 0x49, 0xf7, 0xd7, //0x00004183 notq %r15 - 0x49, 0x29, 0xcf, //0x00004186 subq %rcx, %r15 - 0xe9, 0x52, 0xfd, 0xff, 0xff, //0x00004189 jmp LBB0_780 - //0x0000418e LBB0_802 - 0x4b, 0x8d, 0x04, 0x28, //0x0000418e leaq (%r8,%r13), %rax - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x00004192 movq $-1, $-48(%rbp) - 0x45, 0x31, 0xdb, //0x0000419a xorl %r11d, %r11d - 0x49, 0x83, 0xfe, 0x20, //0x0000419d cmpq $32, %r14 - 0x0f, 0x83, 0x41, 0xfe, 0xff, 0xff, //0x000041a1 jae LBB0_667 - //0x000041a7 LBB0_803 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000041a7 movq $-64(%rbp), %r15 - 0xe9, 0xba, 0x01, 0x00, 0x00, //0x000041ab jmp LBB0_826 - //0x000041b0 LBB0_804 - 0x4b, 0x8d, 0x04, 0x28, //0x000041b0 leaq (%r8,%r13), %rax - 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x000041b4 movq $-1, $-48(%rbp) - 0x45, 0x31, 0xdb, //0x000041bc xorl %r11d, %r11d - 0x49, 0x83, 0xfe, 0x20, //0x000041bf cmpq $32, %r14 - 0x0f, 0x83, 0xe6, 0xfe, 0xff, 0xff, //0x000041c3 jae LBB0_701 - 0xe9, 0x41, 0x03, 0x00, 0x00, //0x000041c9 jmp LBB0_846 - //0x000041ce LBB0_805 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000041ce movq $-1, %r8 - 0x4c, 0x89, 0xd6, //0x000041d5 movq %r10, %rsi - 0x4c, 0x89, 0xdf, //0x000041d8 movq %r11, %rdi - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000041db movq $-1, %r14 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000041e2 movq $-1, %r9 - 0xe9, 0xd1, 0xfa, 0xff, 0xff, //0x000041e9 jmp LBB0_738 - //0x000041ee LBB0_806 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x000041ee cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x000041f3 jne LBB0_808 - 0x48, 0x89, 0xc6, //0x000041f9 movq %rax, %rsi - 0x4c, 0x29, 0xee, //0x000041fc subq %r13, %rsi - 0x48, 0x0f, 0xbc, 0xfa, //0x000041ff bsfq %rdx, %rdi - 0x48, 0x01, 0xf7, //0x00004203 addq %rsi, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x00004206 movq %rdi, $-48(%rbp) - //0x0000420a LBB0_808 - 0x44, 0x89, 0xde, //0x0000420a movl %r11d, %esi - 0xf7, 0xd6, //0x0000420d notl %esi - 0x21, 0xd6, //0x0000420f andl %edx, %esi - 0x41, 0x8d, 0x3c, 0x73, //0x00004211 leal (%r11,%rsi,2), %edi - 0x8d, 0x1c, 0x36, //0x00004215 leal (%rsi,%rsi), %ebx - 0xf7, 0xd3, //0x00004218 notl %ebx - 0x21, 0xd3, //0x0000421a andl %edx, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000421c andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00004222 xorl %r11d, %r11d - 0x01, 0xf3, //0x00004225 addl %esi, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00004227 setb %r11b - 0x01, 0xdb, //0x0000422b addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000422d xorl $1431655765, %ebx - 0x21, 0xfb, //0x00004233 andl %edi, %ebx - 0xf7, 0xd3, //0x00004235 notl %ebx - 0x21, 0xd9, //0x00004237 andl %ebx, %ecx - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004239 movq $-64(%rbp), %r15 - 0x48, 0x85, 0xc9, //0x0000423d testq %rcx, %rcx - 0x0f, 0x85, 0x43, 0xfd, 0xff, 0xff, //0x00004240 jne LBB0_607 - //0x00004246 LBB0_809 - 0x48, 0x83, 0xc0, 0x20, //0x00004246 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x0000424a addq $-32, %r14 - //0x0000424e LBB0_810 - 0x4d, 0x85, 0xdb, //0x0000424e testq %r11, %r11 - 0x0f, 0x85, 0xcf, 0x01, 0x00, 0x00, //0x00004251 jne LBB0_838 - 0x48, 0x8b, 0x4d, 0xd0, //0x00004257 movq $-48(%rbp), %rcx - 0x4d, 0x85, 0xf6, //0x0000425b testq %r14, %r14 - 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x0000425e je LBB0_821 - //0x00004264 LBB0_812 - 0x31, 0xd2, //0x00004264 xorl %edx, %edx - //0x00004266 LBB0_813 - 0x0f, 0xb6, 0x1c, 0x10, //0x00004266 movzbl (%rax,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x0000426a cmpb $34, %bl - 0x0f, 0x84, 0x73, 0x00, 0x00, 0x00, //0x0000426d je LBB0_820 - 0x80, 0xfb, 0x5c, //0x00004273 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004276 je LBB0_818 - 0x48, 0x83, 0xc2, 0x01, //0x0000427c addq $1, %rdx - 0x49, 0x39, 0xd6, //0x00004280 cmpq %rdx, %r14 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00004283 jne LBB0_813 - 0xe9, 0x67, 0x00, 0x00, 0x00, //0x00004289 jmp LBB0_816 - //0x0000428e LBB0_818 - 0x49, 0x8d, 0x76, 0xff, //0x0000428e leaq $-1(%r14), %rsi - 0x48, 0x39, 0xd6, //0x00004292 cmpq %rdx, %rsi - 0x0f, 0x84, 0x12, 0x05, 0x00, 0x00, //0x00004295 je LBB0_712 - 0x48, 0x8b, 0xb5, 0x40, 0xff, 0xff, 0xff, //0x0000429b movq $-192(%rbp), %rsi - 0x48, 0x01, 0xc6, //0x000042a2 addq %rax, %rsi - 0x48, 0x01, 0xd6, //0x000042a5 addq %rdx, %rsi - 0x48, 0x83, 0xf9, 0xff, //0x000042a8 cmpq $-1, %rcx - 0x48, 0x8b, 0x7d, 0xd0, //0x000042ac movq $-48(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xfe, //0x000042b0 cmoveq %rsi, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x000042b4 movq %rdi, $-48(%rbp) - 0x48, 0x0f, 0x44, 0xce, //0x000042b8 cmoveq %rsi, %rcx - 0x48, 0x01, 0xd0, //0x000042bc addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000042bf addq $2, %rax - 0x4c, 0x89, 0xf6, //0x000042c3 movq %r14, %rsi - 0x48, 0x29, 0xd6, //0x000042c6 subq %rdx, %rsi - 0x48, 0x83, 0xc6, 0xfe, //0x000042c9 addq $-2, %rsi - 0x49, 0x83, 0xc6, 0xfe, //0x000042cd addq $-2, %r14 - 0x49, 0x39, 0xd6, //0x000042d1 cmpq %rdx, %r14 - 0x49, 0x89, 0xf6, //0x000042d4 movq %rsi, %r14 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000042d7 movq $-64(%rbp), %r15 - 0x0f, 0x85, 0x83, 0xff, 0xff, 0xff, //0x000042db jne LBB0_812 - 0xe9, 0xc7, 0x04, 0x00, 0x00, //0x000042e1 jmp LBB0_712 - //0x000042e6 LBB0_820 - 0x48, 0x01, 0xd0, //0x000042e6 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000042e9 addq $1, %rax - //0x000042ed LBB0_821 - 0x4c, 0x29, 0xe8, //0x000042ed subq %r13, %rax - 0xe9, 0x5e, 0xf3, 0xff, 0xff, //0x000042f0 jmp LBB0_612 - //0x000042f5 LBB0_816 - 0x80, 0xfb, 0x22, //0x000042f5 cmpb $34, %bl - 0x0f, 0x85, 0xaf, 0x04, 0x00, 0x00, //0x000042f8 jne LBB0_712 - 0x4c, 0x01, 0xf0, //0x000042fe addq %r14, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004301 movq $-64(%rbp), %r15 - 0xe9, 0xe3, 0xff, 0xff, 0xff, //0x00004305 jmp LBB0_821 - //0x0000430a LBB0_822 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x0000430a cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x0000430f jne LBB0_824 - 0x48, 0x89, 0xc1, //0x00004315 movq %rax, %rcx - 0x4c, 0x29, 0xe9, //0x00004318 subq %r13, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x0000431b bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x0000431f addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x00004322 movq %rdi, $-48(%rbp) - //0x00004326 LBB0_824 - 0x44, 0x89, 0xd9, //0x00004326 movl %r11d, %ecx - 0xf7, 0xd1, //0x00004329 notl %ecx - 0x21, 0xf1, //0x0000432b andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x4b, //0x0000432d leal (%r11,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00004331 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00004334 notl %ebx - 0x21, 0xf3, //0x00004336 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004338 andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x0000433e xorl %r11d, %r11d - 0x01, 0xcb, //0x00004341 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00004343 setb %r11b - 0x01, 0xdb, //0x00004347 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00004349 xorl $1431655765, %ebx - 0x21, 0xfb, //0x0000434f andl %edi, %ebx - 0xf7, 0xd3, //0x00004351 notl %ebx - 0x21, 0xda, //0x00004353 andl %ebx, %edx - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004355 movq $-64(%rbp), %r15 - 0x48, 0x85, 0xd2, //0x00004359 testq %rdx, %rdx - 0x0f, 0x85, 0xe4, 0xfc, 0xff, 0xff, //0x0000435c jne LBB0_670 - //0x00004362 LBB0_825 - 0x48, 0x83, 0xc0, 0x20, //0x00004362 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00004366 addq $-32, %r14 - //0x0000436a LBB0_826 - 0x4d, 0x85, 0xdb, //0x0000436a testq %r11, %r11 - 0x0f, 0x85, 0xf8, 0x00, 0x00, 0x00, //0x0000436d jne LBB0_840 - 0x48, 0x8b, 0x55, 0xd0, //0x00004373 movq $-48(%rbp), %rdx - 0x4d, 0x85, 0xf6, //0x00004377 testq %r14, %r14 - 0x0f, 0x84, 0x89, 0x00, 0x00, 0x00, //0x0000437a je LBB0_837 - //0x00004380 LBB0_828 - 0x31, 0xf6, //0x00004380 xorl %esi, %esi - //0x00004382 LBB0_829 - 0x0f, 0xb6, 0x0c, 0x30, //0x00004382 movzbl (%rax,%rsi), %ecx - 0x80, 0xf9, 0x22, //0x00004386 cmpb $34, %cl - 0x0f, 0x84, 0x73, 0x00, 0x00, 0x00, //0x00004389 je LBB0_836 - 0x80, 0xf9, 0x5c, //0x0000438f cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004392 je LBB0_834 - 0x48, 0x83, 0xc6, 0x01, //0x00004398 addq $1, %rsi - 0x49, 0x39, 0xf6, //0x0000439c cmpq %rsi, %r14 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x0000439f jne LBB0_829 - 0xe9, 0x67, 0x00, 0x00, 0x00, //0x000043a5 jmp LBB0_832 - //0x000043aa LBB0_834 - 0x49, 0x8d, 0x4e, 0xff, //0x000043aa leaq $-1(%r14), %rcx - 0x48, 0x39, 0xf1, //0x000043ae cmpq %rsi, %rcx - 0x0f, 0x84, 0xf6, 0x03, 0x00, 0x00, //0x000043b1 je LBB0_712 - 0x48, 0x8b, 0x8d, 0x40, 0xff, 0xff, 0xff, //0x000043b7 movq $-192(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000043be addq %rax, %rcx - 0x48, 0x01, 0xf1, //0x000043c1 addq %rsi, %rcx - 0x48, 0x83, 0xfa, 0xff, //0x000043c4 cmpq $-1, %rdx - 0x48, 0x8b, 0x7d, 0xd0, //0x000043c8 movq $-48(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xf9, //0x000043cc cmoveq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x000043d0 movq %rdi, $-48(%rbp) - 0x48, 0x0f, 0x44, 0xd1, //0x000043d4 cmoveq %rcx, %rdx - 0x48, 0x01, 0xf0, //0x000043d8 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000043db addq $2, %rax - 0x4c, 0x89, 0xf1, //0x000043df movq %r14, %rcx - 0x48, 0x29, 0xf1, //0x000043e2 subq %rsi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000043e5 addq $-2, %rcx - 0x49, 0x83, 0xc6, 0xfe, //0x000043e9 addq $-2, %r14 - 0x49, 0x39, 0xf6, //0x000043ed cmpq %rsi, %r14 - 0x49, 0x89, 0xce, //0x000043f0 movq %rcx, %r14 - 0x4c, 0x8b, 0x7d, 0xc0, //0x000043f3 movq $-64(%rbp), %r15 - 0x0f, 0x85, 0x83, 0xff, 0xff, 0xff, //0x000043f7 jne LBB0_828 - 0xe9, 0xab, 0x03, 0x00, 0x00, //0x000043fd jmp LBB0_712 - //0x00004402 LBB0_836 - 0x48, 0x01, 0xf0, //0x00004402 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00004405 addq $1, %rax - //0x00004409 LBB0_837 - 0x4c, 0x29, 0xe8, //0x00004409 subq %r13, %rax - 0xe9, 0x62, 0xf4, 0xff, 0xff, //0x0000440c jmp LBB0_675 - //0x00004411 LBB0_832 - 0x80, 0xf9, 0x22, //0x00004411 cmpb $34, %cl - 0x0f, 0x85, 0x93, 0x03, 0x00, 0x00, //0x00004414 jne LBB0_712 - 0x4c, 0x01, 0xf0, //0x0000441a addq %r14, %rax - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000441d movq $-64(%rbp), %r15 - 0xe9, 0xe3, 0xff, 0xff, 0xff, //0x00004421 jmp LBB0_837 - //0x00004426 LBB0_838 - 0x4d, 0x85, 0xf6, //0x00004426 testq %r14, %r14 - 0x0f, 0x84, 0x7e, 0x03, 0x00, 0x00, //0x00004429 je LBB0_712 - 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x0000442f movq $-184(%rbp), %rcx - 0x48, 0x8d, 0x14, 0x08, //0x00004436 leaq (%rax,%rcx), %rdx - 0x48, 0x8b, 0x75, 0xd0, //0x0000443a movq $-48(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x0000443e cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x00004442 movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xf2, //0x00004445 cmoveq %rdx, %rsi - 0x48, 0x0f, 0x44, 0xca, //0x00004449 cmoveq %rdx, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x0000444d addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00004451 addq $-1, %r14 - 0x48, 0x89, 0x75, 0xd0, //0x00004455 movq %rsi, $-48(%rbp) - 0x4c, 0x8b, 0x7d, 0xc0, //0x00004459 movq $-64(%rbp), %r15 - 0x4d, 0x85, 0xf6, //0x0000445d testq %r14, %r14 - 0x0f, 0x85, 0xfe, 0xfd, 0xff, 0xff, //0x00004460 jne LBB0_812 - 0xe9, 0x82, 0xfe, 0xff, 0xff, //0x00004466 jmp LBB0_821 - //0x0000446b LBB0_840 - 0x4d, 0x85, 0xf6, //0x0000446b testq %r14, %r14 - 0x0f, 0x84, 0x39, 0x03, 0x00, 0x00, //0x0000446e je LBB0_712 - 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x00004474 movq $-184(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x0000447b addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xd0, //0x0000447e movq $-48(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00004482 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00004486 movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x00004489 cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x0000448d cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00004491 addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00004495 addq $-1, %r14 - 0x48, 0x89, 0x75, 0xd0, //0x00004499 movq %rsi, $-48(%rbp) - 0x4c, 0x8b, 0x7d, 0xc0, //0x0000449d movq $-64(%rbp), %r15 - 0x4d, 0x85, 0xf6, //0x000044a1 testq %r14, %r14 - 0x0f, 0x85, 0xd6, 0xfe, 0xff, 0xff, //0x000044a4 jne LBB0_828 - 0xe9, 0x5a, 0xff, 0xff, 0xff, //0x000044aa jmp LBB0_837 - //0x000044af LBB0_842 - 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x000044af cmpq $-1, $-48(%rbp) - 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x000044b4 jne LBB0_844 - 0x48, 0x89, 0xc1, //0x000044ba movq %rax, %rcx - 0x4c, 0x29, 0xe9, //0x000044bd subq %r13, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000044c0 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000044c4 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x000044c7 movq %rdi, $-48(%rbp) - //0x000044cb LBB0_844 - 0x44, 0x89, 0xd9, //0x000044cb movl %r11d, %ecx - 0xf7, 0xd1, //0x000044ce notl %ecx - 0x21, 0xf1, //0x000044d0 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x4b, //0x000044d2 leal (%r11,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000044d6 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000044d9 notl %ebx - 0x21, 0xf3, //0x000044db andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000044dd andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x000044e3 xorl %r11d, %r11d - 0x01, 0xcb, //0x000044e6 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x000044e8 setb %r11b - 0x01, 0xdb, //0x000044ec addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000044ee xorl $1431655765, %ebx - 0x21, 0xfb, //0x000044f4 andl %edi, %ebx - 0xf7, 0xd3, //0x000044f6 notl %ebx - 0x21, 0xda, //0x000044f8 andl %ebx, %edx - 0x4c, 0x8b, 0x7d, 0xc0, //0x000044fa movq $-64(%rbp), %r15 - 0x48, 0x85, 0xd2, //0x000044fe testq %rdx, %rdx - 0x0f, 0x85, 0x06, 0xfc, 0xff, 0xff, //0x00004501 jne LBB0_704 - //0x00004507 LBB0_845 - 0x48, 0x83, 0xc0, 0x20, //0x00004507 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x0000450b addq $-32, %r14 - //0x0000450f LBB0_846 - 0x4d, 0x85, 0xdb, //0x0000450f testq %r11, %r11 - 0x0f, 0x85, 0xab, 0x00, 0x00, 0x00, //0x00004512 jne LBB0_858 - 0x48, 0x8b, 0x55, 0xd0, //0x00004518 movq $-48(%rbp), %rdx - 0x4d, 0x85, 0xf6, //0x0000451c testq %r14, %r14 - 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x0000451f je LBB0_857 - //0x00004525 LBB0_848 - 0x31, 0xf6, //0x00004525 xorl %esi, %esi - //0x00004527 LBB0_849 - 0x0f, 0xb6, 0x0c, 0x30, //0x00004527 movzbl (%rax,%rsi), %ecx - 0x80, 0xf9, 0x22, //0x0000452b cmpb $34, %cl - 0x0f, 0x84, 0x6f, 0x00, 0x00, 0x00, //0x0000452e je LBB0_856 - 0x80, 0xf9, 0x5c, //0x00004534 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004537 je LBB0_854 - 0x48, 0x83, 0xc6, 0x01, //0x0000453d addq $1, %rsi - 0x49, 0x39, 0xf6, //0x00004541 cmpq %rsi, %r14 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00004544 jne LBB0_849 - 0xe9, 0x63, 0x00, 0x00, 0x00, //0x0000454a jmp LBB0_852 - //0x0000454f LBB0_854 - 0x49, 0x8d, 0x4e, 0xff, //0x0000454f leaq $-1(%r14), %rcx - 0x48, 0x39, 0xf1, //0x00004553 cmpq %rsi, %rcx - 0x0f, 0x84, 0x51, 0x02, 0x00, 0x00, //0x00004556 je LBB0_712 - 0x48, 0x8b, 0x8d, 0x40, 0xff, 0xff, 0xff, //0x0000455c movq $-192(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x00004563 addq %rax, %rcx - 0x48, 0x01, 0xf1, //0x00004566 addq %rsi, %rcx - 0x48, 0x83, 0xfa, 0xff, //0x00004569 cmpq $-1, %rdx - 0x48, 0x8b, 0x7d, 0xd0, //0x0000456d movq $-48(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xf9, //0x00004571 cmoveq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xd0, //0x00004575 movq %rdi, $-48(%rbp) - 0x48, 0x0f, 0x44, 0xd1, //0x00004579 cmoveq %rcx, %rdx - 0x48, 0x01, 0xf0, //0x0000457d addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00004580 addq $2, %rax - 0x4c, 0x89, 0xf1, //0x00004584 movq %r14, %rcx - 0x48, 0x29, 0xf1, //0x00004587 subq %rsi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x0000458a addq $-2, %rcx - 0x49, 0x83, 0xc6, 0xfe, //0x0000458e addq $-2, %r14 - 0x49, 0x39, 0xf6, //0x00004592 cmpq %rsi, %r14 - 0x49, 0x89, 0xce, //0x00004595 movq %rcx, %r14 - 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x00004598 jne LBB0_848 - 0xe9, 0x0a, 0x02, 0x00, 0x00, //0x0000459e jmp LBB0_712 - //0x000045a3 LBB0_856 - 0x48, 0x01, 0xf0, //0x000045a3 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000045a6 addq $1, %rax - //0x000045aa LBB0_857 - 0x4c, 0x29, 0xe8, //0x000045aa subq %r13, %rax - 0xe9, 0x3d, 0xf5, 0xff, 0xff, //0x000045ad jmp LBB0_709 - //0x000045b2 LBB0_852 - 0x80, 0xf9, 0x22, //0x000045b2 cmpb $34, %cl - 0x0f, 0x85, 0xf2, 0x01, 0x00, 0x00, //0x000045b5 jne LBB0_712 - 0x4c, 0x01, 0xf0, //0x000045bb addq %r14, %rax - 0xe9, 0xe7, 0xff, 0xff, 0xff, //0x000045be jmp LBB0_857 - //0x000045c3 LBB0_858 - 0x4d, 0x85, 0xf6, //0x000045c3 testq %r14, %r14 - 0x0f, 0x84, 0xe1, 0x01, 0x00, 0x00, //0x000045c6 je LBB0_712 - 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x000045cc movq $-184(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000045d3 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xd0, //0x000045d6 movq $-48(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000045da cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x000045de movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x000045e1 cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x000045e5 cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000045e9 addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x000045ed addq $-1, %r14 - 0x48, 0x89, 0x75, 0xd0, //0x000045f1 movq %rsi, $-48(%rbp) - 0x4d, 0x85, 0xf6, //0x000045f5 testq %r14, %r14 - 0x0f, 0x85, 0x27, 0xff, 0xff, 0xff, //0x000045f8 jne LBB0_848 - 0xe9, 0xa7, 0xff, 0xff, 0xff, //0x000045fe jmp LBB0_857 - //0x00004603 LBB0_861 - 0x49, 0x83, 0xc2, 0xff, //0x00004603 addq $-1, %r10 - 0x4d, 0x89, 0x10, //0x00004607 movq %r10, (%r8) - 0x48, 0xc7, 0xc0, 0xde, 0xff, 0xff, 0xff, //0x0000460a movq $-34, %rax - 0xe9, 0x3b, 0x00, 0x00, 0x00, //0x00004611 jmp LBB0_870 - //0x00004616 LBB0_862 - 0x48, 0x8b, 0x45, 0xc8, //0x00004616 movq $-56(%rbp), %rax - 0x48, 0x89, 0x30, //0x0000461a movq %rsi, (%rax) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000461d movq $-1, %rax - 0xe9, 0x28, 0x00, 0x00, 0x00, //0x00004624 jmp LBB0_870 - //0x00004629 LBB0_863 - 0x49, 0x89, 0x10, //0x00004629 movq %rdx, (%r8) - //0x0000462c LBB0_864 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000462c movq $-1, %rax - 0xe9, 0x19, 0x00, 0x00, 0x00, //0x00004633 jmp LBB0_870 - //0x00004638 LBB0_865 - 0x49, 0x89, 0xc2, //0x00004638 movq %rax, %r10 - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x0000463b jmp LBB0_868 - //0x00004640 LBB0_867 - 0x49, 0x89, 0xca, //0x00004640 movq %rcx, %r10 - //0x00004643 LBB0_868 - 0x49, 0x83, 0xc2, 0xff, //0x00004643 addq $-1, %r10 - 0x4d, 0x89, 0x10, //0x00004647 movq %r10, (%r8) - //0x0000464a LBB0_869 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x0000464a movq $-2, %rax - //0x00004651 LBB0_870 - 0x48, 0x81, 0xc4, 0xa8, 0x00, 0x00, 0x00, //0x00004651 addq $168, %rsp - 0x5b, //0x00004658 popq %rbx - 0x41, 0x5c, //0x00004659 popq %r12 - 0x41, 0x5d, //0x0000465b popq %r13 - 0x41, 0x5e, //0x0000465d popq %r14 - 0x41, 0x5f, //0x0000465f popq %r15 - 0x5d, //0x00004661 popq %rbp - 0xc3, //0x00004662 retq - //0x00004663 LBB0_871 - 0x4c, 0x01, 0xe6, //0x00004663 addq %r12, %rsi - 0x48, 0x89, 0xf0, //0x00004666 movq %rsi, %rax - //0x00004669 LBB0_872 - 0x4c, 0x29, 0xe0, //0x00004669 subq %r12, %rax - 0x48, 0x89, 0xc6, //0x0000466c movq %rax, %rsi - //0x0000466f LBB0_873 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000466f movq $-1, %rax - 0x49, 0x89, 0xf3, //0x00004676 movq %rsi, %r11 - 0x48, 0x39, 0xfe, //0x00004679 cmpq %rdi, %rsi - 0x0f, 0x83, 0xcf, 0xff, 0xff, 0xff, //0x0000467c jae LBB0_870 - //0x00004682 LBB0_874 - 0x49, 0x8d, 0x7b, 0x01, //0x00004682 leaq $1(%r11), %rdi - 0x48, 0x8b, 0x45, 0xc8, //0x00004686 movq $-56(%rbp), %rax - 0x48, 0x89, 0x38, //0x0000468a movq %rdi, (%rax) - 0x43, 0x0f, 0xbe, 0x0c, 0x1c, //0x0000468d movsbl (%r12,%r11), %ecx - 0x83, 0xf9, 0x7b, //0x00004692 cmpl $123, %ecx - 0x0f, 0x87, 0x60, 0x01, 0x00, 0x00, //0x00004695 ja LBB0_892 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000469b movq $-1, %rax - 0x48, 0x8d, 0x15, 0xaf, 0x14, 0x00, 0x00, //0x000046a2 leaq $5295(%rip), %rdx /* LJTI0_6+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x000046a9 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x000046ad addq %rdx, %rcx - 0xff, 0xe1, //0x000046b0 jmpq *%rcx - //0x000046b2 LBB0_876 - 0x49, 0x8b, 0x07, //0x000046b2 movq (%r15), %rax - 0x48, 0x89, 0xc1, //0x000046b5 movq %rax, %rcx - 0x48, 0x29, 0xf9, //0x000046b8 subq %rdi, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x000046bb cmpq $16, %rcx - 0x0f, 0x82, 0x83, 0x0d, 0x00, 0x00, //0x000046bf jb LBB0_991 - 0x4c, 0x89, 0xd9, //0x000046c5 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x000046c8 notq %rcx - 0xf3, 0x0f, 0x6f, 0x05, 0x2d, 0xb9, 0xff, 0xff, //0x000046cb movdqu $-18131(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x35, 0xb9, 0xff, 0xff, //0x000046d3 movdqu $-18123(%rip), %xmm1 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0x3d, 0xb9, 0xff, 0xff, //0x000046db movdqu $-18115(%rip), %xmm2 /* LCPI0_2+0(%rip) */ - 0x48, 0x8b, 0x5d, 0xc8, //0x000046e3 movq $-56(%rbp), %rbx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000046e7 .p2align 4, 0x90 - //0x000046f0 LBB0_878 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x3c, //0x000046f0 movdqu (%r12,%rdi), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000046f6 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x000046fa pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xdb, 0xd9, //0x000046fe pand %xmm1, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00004702 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00004706 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x0000470a pmovmskb %xmm3, %edx - 0x85, 0xd2, //0x0000470e testl %edx, %edx - 0x0f, 0x85, 0x6c, 0x00, 0x00, 0x00, //0x00004710 jne LBB0_888 - 0x48, 0x83, 0xc7, 0x10, //0x00004716 addq $16, %rdi - 0x48, 0x8d, 0x14, 0x08, //0x0000471a leaq (%rax,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xf0, //0x0000471e addq $-16, %rdx - 0x48, 0x83, 0xc1, 0xf0, //0x00004722 addq $-16, %rcx - 0x48, 0x83, 0xfa, 0x0f, //0x00004726 cmpq $15, %rdx - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000472a ja LBB0_878 - 0x4c, 0x89, 0xe7, //0x00004730 movq %r12, %rdi - 0x48, 0x29, 0xcf, //0x00004733 subq %rcx, %rdi - 0x48, 0x01, 0xc8, //0x00004736 addq %rcx, %rax - 0x48, 0x89, 0xc1, //0x00004739 movq %rax, %rcx - 0x48, 0x85, 0xc9, //0x0000473c testq %rcx, %rcx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x0000473f je LBB0_887 - //0x00004745 LBB0_881 - 0x48, 0x8d, 0x34, 0x0f, //0x00004745 leaq (%rdi,%rcx), %rsi - 0x31, 0xc0, //0x00004749 xorl %eax, %eax - //0x0000474b LBB0_882 - 0x0f, 0xb6, 0x14, 0x07, //0x0000474b movzbl (%rdi,%rax), %edx - 0x80, 0xfa, 0x2c, //0x0000474f cmpb $44, %dl - 0x0f, 0x84, 0x6a, 0x0b, 0x00, 0x00, //0x00004752 je LBB0_969 - 0x80, 0xfa, 0x7d, //0x00004758 cmpb $125, %dl - 0x0f, 0x84, 0x61, 0x0b, 0x00, 0x00, //0x0000475b je LBB0_969 - 0x80, 0xfa, 0x5d, //0x00004761 cmpb $93, %dl - 0x0f, 0x84, 0x58, 0x0b, 0x00, 0x00, //0x00004764 je LBB0_969 - 0x48, 0x83, 0xc0, 0x01, //0x0000476a addq $1, %rax - 0x48, 0x39, 0xc1, //0x0000476e cmpq %rax, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00004771 jne LBB0_882 - 0x48, 0x89, 0xf7, //0x00004777 movq %rsi, %rdi - //0x0000477a LBB0_887 - 0x4c, 0x29, 0xe7, //0x0000477a subq %r12, %rdi - 0xe9, 0x91, 0x0c, 0x00, 0x00, //0x0000477d jmp LBB0_986 - //0x00004782 LBB0_888 - 0x66, 0x0f, 0xbc, 0xc2, //0x00004782 bsfw %dx, %ax - 0x0f, 0xb7, 0xc0, //0x00004786 movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x00004789 subq %rcx, %rax - 0x48, 0x89, 0x03, //0x0000478c movq %rax, (%rbx) - 0x4c, 0x89, 0xd8, //0x0000478f movq %r11, %rax - 0xe9, 0xba, 0xfe, 0xff, 0xff, //0x00004792 jmp LBB0_870 - //0x00004797 LBB0_973 - 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00004797 movq $-7, %rax - 0xe9, 0xae, 0xfe, 0xff, 0xff, //0x0000479e jmp LBB0_870 - //0x000047a3 LBB0_711 - 0x48, 0x83, 0xf8, 0xff, //0x000047a3 cmpq $-1, %rax - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000047a7 jne LBB0_713 - //0x000047ad LBB0_712 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000047ad movq $-1, %rax - 0x48, 0x8b, 0x4d, 0xa0, //0x000047b4 movq $-96(%rbp), %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x000047b8 movq %rcx, $-48(%rbp) - //0x000047bc LBB0_713 - 0x48, 0x8b, 0x4d, 0xc8, //0x000047bc movq $-56(%rbp), %rcx - 0x48, 0x8b, 0x55, 0xd0, //0x000047c0 movq $-48(%rbp), %rdx - 0x48, 0x89, 0x11, //0x000047c4 movq %rdx, (%rcx) - 0xe9, 0x85, 0xfe, 0xff, 0xff, //0x000047c7 jmp LBB0_870 - //0x000047cc LBB0_614 - 0x49, 0x83, 0xc0, 0xff, //0x000047cc addq $-1, %r8 - 0x4c, 0x89, 0xc0, //0x000047d0 movq %r8, %rax - 0xe9, 0x79, 0xfe, 0xff, 0xff, //0x000047d3 jmp LBB0_870 - //0x000047d8 LBB0_889 - 0x49, 0x8d, 0x4b, 0x04, //0x000047d8 leaq $4(%r11), %rcx - 0xe9, 0x8e, 0x05, 0x00, 0x00, //0x000047dc jmp LBB0_930 - //0x000047e1 LBB0_890 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000047e1 movq $-1, %r8 - //0x000047e8 LBB0_891 - 0x4c, 0x29, 0xc7, //0x000047e8 subq %r8, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x000047eb addq $-2, %rdi - 0x48, 0x8b, 0x45, 0xc8, //0x000047ef movq $-56(%rbp), %rax - 0x48, 0x89, 0x38, //0x000047f3 movq %rdi, (%rax) - 0xe9, 0x4f, 0xfe, 0xff, 0xff, //0x000047f6 jmp LBB0_869 - //0x000047fb LBB0_892 - 0x48, 0x8b, 0x45, 0xc8, //0x000047fb movq $-56(%rbp), %rax - 0x4c, 0x89, 0x18, //0x000047ff movq %r11, (%rax) - 0xe9, 0x43, 0xfe, 0xff, 0xff, //0x00004802 jmp LBB0_869 - //0x00004807 LBB0_893 - 0x4d, 0x8b, 0x07, //0x00004807 movq (%r15), %r8 - 0x4d, 0x89, 0xc6, //0x0000480a movq %r8, %r14 - 0x49, 0x29, 0xfe, //0x0000480d subq %rdi, %r14 - 0x49, 0x83, 0xfe, 0x20, //0x00004810 cmpq $32, %r14 - 0x0f, 0x8c, 0x43, 0x0c, 0x00, 0x00, //0x00004814 jl LBB0_993 - 0x4f, 0x8d, 0x0c, 0x1c, //0x0000481a leaq (%r12,%r11), %r9 - 0x4d, 0x29, 0xd8, //0x0000481e subq %r11, %r8 - 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x00004821 movl $31, %r15d - 0x45, 0x31, 0xf6, //0x00004827 xorl %r14d, %r14d - 0xf3, 0x0f, 0x6f, 0x05, 0xfe, 0xb7, 0xff, 0xff, //0x0000482a movdqu $-18434(%rip), %xmm0 /* LCPI0_3+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x06, 0xb8, 0xff, 0xff, //0x00004832 movdqu $-18426(%rip), %xmm1 /* LCPI0_4+0(%rip) */ - 0x45, 0x31, 0xd2, //0x0000483a xorl %r10d, %r10d - //0x0000483d LBB0_895 - 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x31, 0x01, //0x0000483d movdqu $1(%r9,%r14), %xmm2 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x31, 0x11, //0x00004844 movdqu $17(%r9,%r14), %xmm3 - 0x66, 0x0f, 0x6f, 0xe2, //0x0000484b movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x0000484f pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00004853 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0x6f, 0xe3, //0x00004857 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x0000485b pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x0000485f pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00004863 shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00004867 orq %rdx, %rsi - 0x66, 0x0f, 0x74, 0xd1, //0x0000486a pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000486e pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00004872 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00004876 pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x10, //0x0000487a shlq $16, %rdx - 0x48, 0x09, 0xca, //0x0000487e orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00004881 movq %rdx, %rcx - 0x4c, 0x09, 0xd1, //0x00004884 orq %r10, %rcx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00004887 je LBB0_897 - 0x44, 0x89, 0xd1, //0x0000488d movl %r10d, %ecx - 0xf7, 0xd1, //0x00004890 notl %ecx - 0x21, 0xd1, //0x00004892 andl %edx, %ecx - 0x8d, 0x3c, 0x09, //0x00004894 leal (%rcx,%rcx), %edi - 0x44, 0x09, 0xd7, //0x00004897 orl %r10d, %edi - 0x89, 0xfb, //0x0000489a movl %edi, %ebx - 0xf7, 0xd3, //0x0000489c notl %ebx - 0x21, 0xd3, //0x0000489e andl %edx, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000048a0 andl $-1431655766, %ebx - 0x45, 0x31, 0xd2, //0x000048a6 xorl %r10d, %r10d - 0x01, 0xcb, //0x000048a9 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc2, //0x000048ab setb %r10b - 0x01, 0xdb, //0x000048af addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000048b1 xorl $1431655765, %ebx - 0x21, 0xfb, //0x000048b7 andl %edi, %ebx - 0xf7, 0xd3, //0x000048b9 notl %ebx - 0x21, 0xde, //0x000048bb andl %ebx, %esi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x000048bd jmp LBB0_898 - //0x000048c2 LBB0_897 - 0x45, 0x31, 0xd2, //0x000048c2 xorl %r10d, %r10d - //0x000048c5 LBB0_898 - 0x48, 0x85, 0xf6, //0x000048c5 testq %rsi, %rsi - 0x0f, 0x85, 0x50, 0x09, 0x00, 0x00, //0x000048c8 jne LBB0_959 - 0x49, 0x83, 0xc6, 0x20, //0x000048ce addq $32, %r14 - 0x4b, 0x8d, 0x0c, 0x38, //0x000048d2 leaq (%r8,%r15), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x000048d6 addq $-32, %rcx - 0x49, 0x83, 0xc7, 0xe0, //0x000048da addq $-32, %r15 - 0x48, 0x83, 0xf9, 0x3f, //0x000048de cmpq $63, %rcx - 0x0f, 0x8f, 0x55, 0xff, 0xff, 0xff, //0x000048e2 jg LBB0_895 - 0x4d, 0x85, 0xd2, //0x000048e8 testq %r10, %r10 - 0x0f, 0x85, 0x80, 0x0b, 0x00, 0x00, //0x000048eb jne LBB0_995 - 0x4b, 0x8d, 0x3c, 0x0e, //0x000048f1 leaq (%r14,%r9), %rdi - 0x48, 0x83, 0xc7, 0x01, //0x000048f5 addq $1, %rdi - 0x49, 0xf7, 0xd6, //0x000048f9 notq %r14 - 0x4d, 0x01, 0xc6, //0x000048fc addq %r8, %r14 - //0x000048ff LBB0_902 - 0x4d, 0x85, 0xf6, //0x000048ff testq %r14, %r14 - 0x0f, 0x8f, 0x59, 0x09, 0x00, 0x00, //0x00004902 jg LBB0_962 - 0xe9, 0x44, 0xfd, 0xff, 0xff, //0x00004908 jmp LBB0_870 - //0x0000490d LBB0_903 - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000490d movabsq $6148914691236517205, %rdx - 0x49, 0x8b, 0x0f, //0x00004917 movq (%r15), %rcx - 0x49, 0x89, 0xd7, //0x0000491a movq %rdx, %r15 - 0x48, 0x29, 0xf9, //0x0000491d subq %rdi, %rcx - 0x49, 0x01, 0xfc, //0x00004920 addq %rdi, %r12 - 0x45, 0x31, 0xf6, //0x00004923 xorl %r14d, %r14d - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x11, 0xb7, 0xff, 0xff, //0x00004926 movdqu $-18671(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xf9, 0xb6, 0xff, 0xff, //0x0000492f movdqu $-18695(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00004937 pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0x2c, 0xb7, 0xff, 0xff, //0x0000493c movdqu $-18644(%rip), %xmm3 /* LCPI0_7+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0xd4, 0xb6, 0xff, 0xff, //0x00004944 movdqu $-18732(%rip), %xmm4 /* LCPI0_2+0(%rip) */ - 0x49, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000494c movabsq $3689348814741910323, %r9 - 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00004956 pxor %xmm8, %xmm8 - 0x31, 0xd2, //0x0000495b xorl %edx, %edx - 0x45, 0x31, 0xc0, //0x0000495d xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x00004960 xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x40, //0x00004963 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00004967 movq %rcx, $-48(%rbp) - 0x0f, 0x8d, 0x59, 0x01, 0x00, 0x00, //0x0000496b jge LBB0_904 - //0x00004971 LBB0_913 - 0x48, 0x85, 0xc9, //0x00004971 testq %rcx, %rcx - 0x0f, 0x8e, 0xeb, 0x0a, 0x00, 0x00, //0x00004974 jle LBB0_994 - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x0000497a movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00004980 movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00004989 movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00004992 movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe1, //0x0000499b movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x0000499e andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000049a4 cmpl $4033, %ecx - 0x0f, 0x82, 0x3e, 0x00, 0x00, 0x00, //0x000049aa jb LBB0_917 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x000049b0 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x000049b5 jb LBB0_918 - 0x41, 0x0f, 0x10, 0x04, 0x24, //0x000049bb movups (%r12), %xmm0 - 0x0f, 0x11, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000049c0 movups %xmm0, $-176(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x44, 0x24, 0x10, //0x000049c7 movdqu $16(%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000049ce movdqu %xmm0, $-160(%rbp) - 0x49, 0x83, 0xc4, 0x20, //0x000049d6 addq $32, %r12 - 0x48, 0x8b, 0x4d, 0xd0, //0x000049da movq $-48(%rbp), %rcx - 0x48, 0x8d, 0x79, 0xe0, //0x000049de leaq $-32(%rcx), %rdi - 0x48, 0x8d, 0xb5, 0x70, 0xff, 0xff, 0xff, //0x000049e2 leaq $-144(%rbp), %rsi - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x000049e9 jmp LBB0_919 - //0x000049ee LBB0_917 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000049ee movabsq $6148914691236517205, %r15 - 0xe9, 0xcd, 0x00, 0x00, 0x00, //0x000049f8 jmp LBB0_904 - //0x000049fd LBB0_918 - 0x48, 0x8d, 0xb5, 0x50, 0xff, 0xff, 0xff, //0x000049fd leaq $-176(%rbp), %rsi - 0x48, 0x8b, 0x7d, 0xd0, //0x00004a04 movq $-48(%rbp), %rdi - //0x00004a08 LBB0_919 - 0x48, 0x83, 0xff, 0x10, //0x00004a08 cmpq $16, %rdi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x00004a0c jb LBB0_920 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00004a12 movdqu (%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x06, //0x00004a18 movdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc4, 0x10, //0x00004a1c addq $16, %r12 - 0x48, 0x83, 0xc6, 0x10, //0x00004a20 addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00004a24 addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00004a28 cmpq $8, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00004a2c jae LBB0_927 - //0x00004a32 LBB0_921 - 0x48, 0x83, 0xff, 0x04, //0x00004a32 cmpq $4, %rdi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00004a36 jl LBB0_922 - //0x00004a3c LBB0_928 - 0x41, 0x8b, 0x0c, 0x24, //0x00004a3c movl (%r12), %ecx - 0x89, 0x0e, //0x00004a40 movl %ecx, (%rsi) - 0x49, 0x83, 0xc4, 0x04, //0x00004a42 addq $4, %r12 - 0x48, 0x83, 0xc6, 0x04, //0x00004a46 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00004a4a addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00004a4e cmpq $2, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00004a52 jae LBB0_923 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00004a58 jmp LBB0_924 - //0x00004a5d LBB0_920 - 0x48, 0x83, 0xff, 0x08, //0x00004a5d cmpq $8, %rdi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00004a61 jb LBB0_921 - //0x00004a67 LBB0_927 - 0x49, 0x8b, 0x0c, 0x24, //0x00004a67 movq (%r12), %rcx - 0x48, 0x89, 0x0e, //0x00004a6b movq %rcx, (%rsi) - 0x49, 0x83, 0xc4, 0x08, //0x00004a6e addq $8, %r12 - 0x48, 0x83, 0xc6, 0x08, //0x00004a72 addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00004a76 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00004a7a cmpq $4, %rdi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00004a7e jge LBB0_928 - //0x00004a84 LBB0_922 - 0x48, 0x83, 0xff, 0x02, //0x00004a84 cmpq $2, %rdi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00004a88 jb LBB0_924 - //0x00004a8e LBB0_923 - 0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x00004a8e movzwl (%r12), %ecx - 0x66, 0x89, 0x0e, //0x00004a93 movw %cx, (%rsi) - 0x49, 0x83, 0xc4, 0x02, //0x00004a96 addq $2, %r12 - 0x48, 0x83, 0xc6, 0x02, //0x00004a9a addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00004a9e addq $-2, %rdi - //0x00004aa2 LBB0_924 - 0x4c, 0x89, 0xe1, //0x00004aa2 movq %r12, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00004aa5 leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xff, //0x00004aac testq %rdi, %rdi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004aaf movabsq $6148914691236517205, %r15 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00004ab9 je LBB0_904 - 0x8a, 0x09, //0x00004abf movb (%rcx), %cl - 0x88, 0x0e, //0x00004ac1 movb %cl, (%rsi) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00004ac3 leaq $-176(%rbp), %r12 - //0x00004aca LBB0_904 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00004aca movdqu (%r12), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x10, //0x00004ad0 movdqu $16(%r12), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x20, //0x00004ad7 movdqu $32(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x30, //0x00004ade movdqu $48(%r12), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00004ae5 movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004ae9 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00004aee pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd5, //0x00004af2 movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004af6 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00004afb pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00004aff movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b03 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00004b08 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd6, //0x00004b0c movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b10 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00004b15 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00004b19 shlq $48, %rbx - 0x48, 0xc1, 0xe7, 0x20, //0x00004b1d shlq $32, %rdi - 0x48, 0x09, 0xdf, //0x00004b21 orq %rbx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00004b24 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00004b28 orq %rdi, %rcx - 0x48, 0x09, 0xce, //0x00004b2b orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00004b2e movq %rsi, %rcx - 0x48, 0x09, 0xd1, //0x00004b31 orq %rdx, %rcx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00004b34 jne LBB0_906 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004b3a movq $-1, %rsi - 0x31, 0xc9, //0x00004b41 xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xb8, //0x00004b43 movq %rcx, $-72(%rbp) - 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00004b47 jmp LBB0_907 - //0x00004b4c LBB0_906 - 0x48, 0x89, 0xd1, //0x00004b4c movq %rdx, %rcx - 0x48, 0xf7, 0xd1, //0x00004b4f notq %rcx - 0x48, 0x21, 0xf1, //0x00004b52 andq %rsi, %rcx - 0x48, 0x8d, 0x3c, 0x09, //0x00004b55 leaq (%rcx,%rcx), %rdi - 0x48, 0x09, 0xd7, //0x00004b59 orq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00004b5c movq %rdi, %rdx - 0x48, 0xf7, 0xd2, //0x00004b5f notq %rdx - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004b62 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00004b6c andq %rbx, %rsi - 0x48, 0x21, 0xd6, //0x00004b6f andq %rdx, %rsi - 0x31, 0xd2, //0x00004b72 xorl %edx, %edx - 0x48, 0x01, 0xce, //0x00004b74 addq %rcx, %rsi - 0x0f, 0x92, 0xc2, //0x00004b77 setb %dl - 0x48, 0x89, 0x55, 0xb8, //0x00004b7a movq %rdx, $-72(%rbp) - 0x48, 0x01, 0xf6, //0x00004b7e addq %rsi, %rsi - 0x4c, 0x31, 0xfe, //0x00004b81 xorq %r15, %rsi - 0x48, 0x21, 0xfe, //0x00004b84 andq %rdi, %rsi - 0x48, 0xf7, 0xd6, //0x00004b87 notq %rsi - //0x00004b8a LBB0_907 - 0x66, 0x0f, 0x6f, 0xd6, //0x00004b8a movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00004b8e pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00004b92 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00004b96 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xd7, //0x00004b9a movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00004b9e pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00004ba2 pmovmskb %xmm2, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x00004ba6 shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x00004baa orq %rcx, %rdi - 0x66, 0x0f, 0x6f, 0xd5, //0x00004bad movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00004bb1 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00004bb5 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00004bb9 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00004bbd orq %rdi, %rcx - 0x66, 0x0f, 0x6f, 0xd0, //0x00004bc0 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00004bc4 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00004bc8 pmovmskb %xmm2, %edi - 0x48, 0x09, 0xcf, //0x00004bcc orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x00004bcf andq %rsi, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x00004bd2 movq %rdi, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00004bd7 pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd5, //0x00004bde movq %xmm2, %r13 - 0x4d, 0x31, 0xf5, //0x00004be3 xorq %r14, %r13 - 0x66, 0x0f, 0x6f, 0xd0, //0x00004be6 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00004bea pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00004bee pmovmskb %xmm2, %ebx - 0x66, 0x0f, 0x6f, 0xd5, //0x00004bf2 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00004bf6 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00004bfa pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00004bfe movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00004c02 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00004c06 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd6, //0x00004c0a movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00004c0e pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00004c12 pmovmskb %xmm2, %edx - 0x48, 0xc1, 0xe2, 0x30, //0x00004c16 shlq $48, %rdx - 0x48, 0xc1, 0xe6, 0x20, //0x00004c1a shlq $32, %rsi - 0x48, 0x09, 0xd6, //0x00004c1e orq %rdx, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00004c21 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00004c25 orq %rsi, %rcx - 0x48, 0x09, 0xcb, //0x00004c28 orq %rcx, %rbx - 0x4c, 0x89, 0xe9, //0x00004c2b movq %r13, %rcx - 0x48, 0xf7, 0xd1, //0x00004c2e notq %rcx - 0x48, 0x21, 0xcb, //0x00004c31 andq %rcx, %rbx - 0x66, 0x0f, 0x74, 0xc4, //0x00004c34 pcmpeqb %xmm4, %xmm0 - 0x66, 0x0f, 0xd7, 0xf0, //0x00004c38 pmovmskb %xmm0, %esi - 0x66, 0x0f, 0x74, 0xec, //0x00004c3c pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00004c40 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x74, 0xfc, //0x00004c44 pcmpeqb %xmm4, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xf7, //0x00004c48 pmovmskb %xmm7, %r14d - 0x66, 0x0f, 0x74, 0xf4, //0x00004c4d pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00004c51 pmovmskb %xmm6, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x00004c56 shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x00004c5a shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x00004c5e orq %r15, %r14 - 0x48, 0xc1, 0xe2, 0x10, //0x00004c61 shlq $16, %rdx - 0x4c, 0x09, 0xf2, //0x00004c65 orq %r14, %rdx - 0x48, 0x09, 0xd6, //0x00004c68 orq %rdx, %rsi - 0x48, 0x21, 0xce, //0x00004c6b andq %rcx, %rsi - 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00004c6e je LBB0_911 - 0x4c, 0x8b, 0x75, 0xc0, //0x00004c74 movq $-64(%rbp), %r14 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004c78 movabsq $6148914691236517205, %r15 - //0x00004c82 LBB0_909 - 0x48, 0x8d, 0x7e, 0xff, //0x00004c82 leaq $-1(%rsi), %rdi - 0x48, 0x89, 0xf9, //0x00004c86 movq %rdi, %rcx - 0x48, 0x21, 0xd9, //0x00004c89 andq %rbx, %rcx - 0x48, 0x89, 0xca, //0x00004c8c movq %rcx, %rdx - 0x48, 0xd1, 0xea, //0x00004c8f shrq %rdx - 0x4c, 0x21, 0xfa, //0x00004c92 andq %r15, %rdx - 0x48, 0x29, 0xd1, //0x00004c95 subq %rdx, %rcx - 0x48, 0x89, 0xca, //0x00004c98 movq %rcx, %rdx - 0x4c, 0x21, 0xca, //0x00004c9b andq %r9, %rdx - 0x48, 0xc1, 0xe9, 0x02, //0x00004c9e shrq $2, %rcx - 0x4c, 0x21, 0xc9, //0x00004ca2 andq %r9, %rcx - 0x48, 0x01, 0xd1, //0x00004ca5 addq %rdx, %rcx - 0x48, 0x89, 0xca, //0x00004ca8 movq %rcx, %rdx - 0x48, 0xc1, 0xea, 0x04, //0x00004cab shrq $4, %rdx - 0x48, 0x01, 0xca, //0x00004caf addq %rcx, %rdx - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00004cb2 movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xca, //0x00004cbc andq %rcx, %rdx - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00004cbf movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xd1, //0x00004cc9 imulq %rcx, %rdx - 0x48, 0xc1, 0xea, 0x38, //0x00004ccd shrq $56, %rdx - 0x4c, 0x01, 0xc2, //0x00004cd1 addq %r8, %rdx - 0x4c, 0x39, 0xd2, //0x00004cd4 cmpq %r10, %rdx - 0x0f, 0x86, 0x08, 0x05, 0x00, 0x00, //0x00004cd7 jbe LBB0_958 - 0x49, 0x83, 0xc2, 0x01, //0x00004cdd addq $1, %r10 - 0x48, 0x21, 0xfe, //0x00004ce1 andq %rdi, %rsi - 0x0f, 0x85, 0x98, 0xff, 0xff, 0xff, //0x00004ce4 jne LBB0_909 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00004cea jmp LBB0_912 - //0x00004cef LBB0_911 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004cef movabsq $6148914691236517205, %r15 - //0x00004cf9 LBB0_912 - 0x49, 0xc1, 0xfd, 0x3f, //0x00004cf9 sarq $63, %r13 - 0x48, 0x89, 0xd9, //0x00004cfd movq %rbx, %rcx - 0x48, 0xd1, 0xe9, //0x00004d00 shrq %rcx - 0x4c, 0x21, 0xf9, //0x00004d03 andq %r15, %rcx - 0x48, 0x29, 0xcb, //0x00004d06 subq %rcx, %rbx - 0x48, 0x89, 0xd9, //0x00004d09 movq %rbx, %rcx - 0x4c, 0x21, 0xc9, //0x00004d0c andq %r9, %rcx - 0x48, 0xc1, 0xeb, 0x02, //0x00004d0f shrq $2, %rbx - 0x4c, 0x21, 0xcb, //0x00004d13 andq %r9, %rbx - 0x48, 0x01, 0xcb, //0x00004d16 addq %rcx, %rbx - 0x48, 0x89, 0xd9, //0x00004d19 movq %rbx, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00004d1c shrq $4, %rcx - 0x48, 0x01, 0xd9, //0x00004d20 addq %rbx, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00004d23 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x00004d2d andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00004d30 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00004d3a imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00004d3e shrq $56, %rcx - 0x49, 0x01, 0xc8, //0x00004d42 addq %rcx, %r8 - 0x49, 0x83, 0xc4, 0x40, //0x00004d45 addq $64, %r12 - 0x48, 0x8b, 0x4d, 0xd0, //0x00004d49 movq $-48(%rbp), %rcx - 0x48, 0x83, 0xc1, 0xc0, //0x00004d4d addq $-64, %rcx - 0x4d, 0x89, 0xee, //0x00004d51 movq %r13, %r14 - 0x48, 0x8b, 0x55, 0xb8, //0x00004d54 movq $-72(%rbp), %rdx - 0x48, 0x83, 0xf9, 0x40, //0x00004d58 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00004d5c movq %rcx, $-48(%rbp) - 0x0f, 0x8d, 0x64, 0xfd, 0xff, 0xff, //0x00004d60 jge LBB0_904 - 0xe9, 0x06, 0xfc, 0xff, 0xff, //0x00004d66 jmp LBB0_913 - //0x00004d6b LBB0_929 - 0x49, 0x8d, 0x4b, 0x05, //0x00004d6b leaq $5(%r11), %rcx - //0x00004d6f LBB0_930 - 0x49, 0x3b, 0x0f, //0x00004d6f cmpq (%r15), %rcx - 0x0f, 0x87, 0xd9, 0xf8, 0xff, 0xff, //0x00004d72 ja LBB0_870 - 0x48, 0x8b, 0x45, 0xc8, //0x00004d78 movq $-56(%rbp), %rax - 0x48, 0x89, 0x08, //0x00004d7c movq %rcx, (%rax) - 0x4c, 0x89, 0xd8, //0x00004d7f movq %r11, %rax - 0xe9, 0xca, 0xf8, 0xff, 0xff, //0x00004d82 jmp LBB0_870 - //0x00004d87 LBB0_932 - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004d87 movabsq $6148914691236517205, %rdx - 0x49, 0x8b, 0x0f, //0x00004d91 movq (%r15), %rcx - 0x49, 0x89, 0xd7, //0x00004d94 movq %rdx, %r15 - 0x48, 0x29, 0xf9, //0x00004d97 subq %rdi, %rcx - 0x49, 0x01, 0xfc, //0x00004d9a addq %rdi, %r12 - 0x45, 0x31, 0xf6, //0x00004d9d xorl %r14d, %r14d - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x97, 0xb2, 0xff, 0xff, //0x00004da0 movdqu $-19817(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x7f, 0xb2, 0xff, 0xff, //0x00004da9 movdqu $-19841(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00004db1 pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0x92, 0xb2, 0xff, 0xff, //0x00004db6 movdqu $-19822(%rip), %xmm3 /* LCPI0_5+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0x9a, 0xb2, 0xff, 0xff, //0x00004dbe movdqu $-19814(%rip), %xmm4 /* LCPI0_6+0(%rip) */ - 0x49, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00004dc6 movabsq $3689348814741910323, %r9 - 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00004dd0 pxor %xmm8, %xmm8 - 0x31, 0xd2, //0x00004dd5 xorl %edx, %edx - 0x45, 0x31, 0xc0, //0x00004dd7 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x00004dda xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x40, //0x00004ddd cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x00004de1 movq %rcx, $-48(%rbp) - 0x0f, 0x8d, 0x59, 0x01, 0x00, 0x00, //0x00004de5 jge LBB0_933 - //0x00004deb LBB0_942 - 0x48, 0x85, 0xc9, //0x00004deb testq %rcx, %rcx - 0x0f, 0x8e, 0x71, 0x06, 0x00, 0x00, //0x00004dee jle LBB0_994 - 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x00004df4 movdqu %xmm8, $-128(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00004dfa movdqu %xmm8, $-144(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00004e03 movdqu %xmm8, $-160(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00004e0c movdqu %xmm8, $-176(%rbp) - 0x44, 0x89, 0xe1, //0x00004e15 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00004e18 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00004e1e cmpl $4033, %ecx - 0x0f, 0x82, 0x3e, 0x00, 0x00, 0x00, //0x00004e24 jb LBB0_946 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00004e2a cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x00004e2f jb LBB0_947 - 0x41, 0x0f, 0x10, 0x04, 0x24, //0x00004e35 movups (%r12), %xmm0 - 0x0f, 0x11, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00004e3a movups %xmm0, $-176(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x44, 0x24, 0x10, //0x00004e41 movdqu $16(%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00004e48 movdqu %xmm0, $-160(%rbp) - 0x49, 0x83, 0xc4, 0x20, //0x00004e50 addq $32, %r12 - 0x48, 0x8b, 0x4d, 0xd0, //0x00004e54 movq $-48(%rbp), %rcx - 0x48, 0x8d, 0x79, 0xe0, //0x00004e58 leaq $-32(%rcx), %rdi - 0x48, 0x8d, 0xb5, 0x70, 0xff, 0xff, 0xff, //0x00004e5c leaq $-144(%rbp), %rsi - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x00004e63 jmp LBB0_948 - //0x00004e68 LBB0_946 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004e68 movabsq $6148914691236517205, %r15 - 0xe9, 0xcd, 0x00, 0x00, 0x00, //0x00004e72 jmp LBB0_933 - //0x00004e77 LBB0_947 - 0x48, 0x8d, 0xb5, 0x50, 0xff, 0xff, 0xff, //0x00004e77 leaq $-176(%rbp), %rsi - 0x48, 0x8b, 0x7d, 0xd0, //0x00004e7e movq $-48(%rbp), %rdi - //0x00004e82 LBB0_948 - 0x48, 0x83, 0xff, 0x10, //0x00004e82 cmpq $16, %rdi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x00004e86 jb LBB0_949 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00004e8c movdqu (%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x06, //0x00004e92 movdqu %xmm0, (%rsi) - 0x49, 0x83, 0xc4, 0x10, //0x00004e96 addq $16, %r12 - 0x48, 0x83, 0xc6, 0x10, //0x00004e9a addq $16, %rsi - 0x48, 0x83, 0xc7, 0xf0, //0x00004e9e addq $-16, %rdi - 0x48, 0x83, 0xff, 0x08, //0x00004ea2 cmpq $8, %rdi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00004ea6 jae LBB0_956 - //0x00004eac LBB0_950 - 0x48, 0x83, 0xff, 0x04, //0x00004eac cmpq $4, %rdi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00004eb0 jl LBB0_951 - //0x00004eb6 LBB0_957 - 0x41, 0x8b, 0x0c, 0x24, //0x00004eb6 movl (%r12), %ecx - 0x89, 0x0e, //0x00004eba movl %ecx, (%rsi) - 0x49, 0x83, 0xc4, 0x04, //0x00004ebc addq $4, %r12 - 0x48, 0x83, 0xc6, 0x04, //0x00004ec0 addq $4, %rsi - 0x48, 0x83, 0xc7, 0xfc, //0x00004ec4 addq $-4, %rdi - 0x48, 0x83, 0xff, 0x02, //0x00004ec8 cmpq $2, %rdi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00004ecc jae LBB0_952 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00004ed2 jmp LBB0_953 - //0x00004ed7 LBB0_949 - 0x48, 0x83, 0xff, 0x08, //0x00004ed7 cmpq $8, %rdi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00004edb jb LBB0_950 - //0x00004ee1 LBB0_956 - 0x49, 0x8b, 0x0c, 0x24, //0x00004ee1 movq (%r12), %rcx - 0x48, 0x89, 0x0e, //0x00004ee5 movq %rcx, (%rsi) - 0x49, 0x83, 0xc4, 0x08, //0x00004ee8 addq $8, %r12 - 0x48, 0x83, 0xc6, 0x08, //0x00004eec addq $8, %rsi - 0x48, 0x83, 0xc7, 0xf8, //0x00004ef0 addq $-8, %rdi - 0x48, 0x83, 0xff, 0x04, //0x00004ef4 cmpq $4, %rdi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00004ef8 jge LBB0_957 - //0x00004efe LBB0_951 - 0x48, 0x83, 0xff, 0x02, //0x00004efe cmpq $2, %rdi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00004f02 jb LBB0_953 - //0x00004f08 LBB0_952 - 0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x00004f08 movzwl (%r12), %ecx - 0x66, 0x89, 0x0e, //0x00004f0d movw %cx, (%rsi) - 0x49, 0x83, 0xc4, 0x02, //0x00004f10 addq $2, %r12 - 0x48, 0x83, 0xc6, 0x02, //0x00004f14 addq $2, %rsi - 0x48, 0x83, 0xc7, 0xfe, //0x00004f18 addq $-2, %rdi - //0x00004f1c LBB0_953 - 0x4c, 0x89, 0xe1, //0x00004f1c movq %r12, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00004f1f leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xff, //0x00004f26 testq %rdi, %rdi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004f29 movabsq $6148914691236517205, %r15 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00004f33 je LBB0_933 - 0x8a, 0x09, //0x00004f39 movb (%rcx), %cl - 0x88, 0x0e, //0x00004f3b movb %cl, (%rsi) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00004f3d leaq $-176(%rbp), %r12 - //0x00004f44 LBB0_933 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00004f44 movdqu (%r12), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x10, //0x00004f4a movdqu $16(%r12), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x20, //0x00004f51 movdqu $32(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x30, //0x00004f58 movdqu $48(%r12), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00004f5f movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004f63 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00004f68 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd5, //0x00004f6c movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004f70 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00004f75 pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00004f79 movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004f7d pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00004f82 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd6, //0x00004f86 movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004f8a pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00004f8f pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00004f93 shlq $48, %rbx - 0x48, 0xc1, 0xe7, 0x20, //0x00004f97 shlq $32, %rdi - 0x48, 0x09, 0xdf, //0x00004f9b orq %rbx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00004f9e shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00004fa2 orq %rdi, %rcx - 0x48, 0x09, 0xce, //0x00004fa5 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00004fa8 movq %rsi, %rcx - 0x48, 0x09, 0xd1, //0x00004fab orq %rdx, %rcx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00004fae jne LBB0_935 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004fb4 movq $-1, %rsi - 0x31, 0xc9, //0x00004fbb xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xb8, //0x00004fbd movq %rcx, $-72(%rbp) - 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00004fc1 jmp LBB0_936 - //0x00004fc6 LBB0_935 - 0x48, 0x89, 0xd1, //0x00004fc6 movq %rdx, %rcx - 0x48, 0xf7, 0xd1, //0x00004fc9 notq %rcx - 0x48, 0x21, 0xf1, //0x00004fcc andq %rsi, %rcx - 0x48, 0x8d, 0x3c, 0x09, //0x00004fcf leaq (%rcx,%rcx), %rdi - 0x48, 0x09, 0xd7, //0x00004fd3 orq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00004fd6 movq %rdi, %rdx - 0x48, 0xf7, 0xd2, //0x00004fd9 notq %rdx - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004fdc movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00004fe6 andq %rbx, %rsi - 0x48, 0x21, 0xd6, //0x00004fe9 andq %rdx, %rsi - 0x31, 0xd2, //0x00004fec xorl %edx, %edx - 0x48, 0x01, 0xce, //0x00004fee addq %rcx, %rsi - 0x0f, 0x92, 0xc2, //0x00004ff1 setb %dl - 0x48, 0x89, 0x55, 0xb8, //0x00004ff4 movq %rdx, $-72(%rbp) - 0x48, 0x01, 0xf6, //0x00004ff8 addq %rsi, %rsi - 0x4c, 0x31, 0xfe, //0x00004ffb xorq %r15, %rsi - 0x48, 0x21, 0xfe, //0x00004ffe andq %rdi, %rsi - 0x48, 0xf7, 0xd6, //0x00005001 notq %rsi - //0x00005004 LBB0_936 - 0x66, 0x0f, 0x6f, 0xd6, //0x00005004 movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00005008 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000500c pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00005010 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xd7, //0x00005014 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00005018 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x0000501c pmovmskb %xmm2, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x00005020 shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x00005024 orq %rcx, %rdi - 0x66, 0x0f, 0x6f, 0xd5, //0x00005027 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x0000502b pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000502f pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00005033 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00005037 orq %rdi, %rcx - 0x66, 0x0f, 0x6f, 0xd0, //0x0000503a movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x0000503e pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00005042 pmovmskb %xmm2, %edi - 0x48, 0x09, 0xcf, //0x00005046 orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x00005049 andq %rsi, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x0000504c movq %rdi, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00005051 pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd5, //0x00005058 movq %xmm2, %r13 - 0x4d, 0x31, 0xf5, //0x0000505d xorq %r14, %r13 - 0x66, 0x0f, 0x6f, 0xd0, //0x00005060 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00005064 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00005068 pmovmskb %xmm2, %ebx - 0x66, 0x0f, 0x6f, 0xd5, //0x0000506c movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00005070 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00005074 pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00005078 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x0000507c pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00005080 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd6, //0x00005084 movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00005088 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x0000508c pmovmskb %xmm2, %edx - 0x48, 0xc1, 0xe2, 0x30, //0x00005090 shlq $48, %rdx - 0x48, 0xc1, 0xe6, 0x20, //0x00005094 shlq $32, %rsi - 0x48, 0x09, 0xd6, //0x00005098 orq %rdx, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x0000509b shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x0000509f orq %rsi, %rcx - 0x48, 0x09, 0xcb, //0x000050a2 orq %rcx, %rbx - 0x4c, 0x89, 0xe9, //0x000050a5 movq %r13, %rcx - 0x48, 0xf7, 0xd1, //0x000050a8 notq %rcx - 0x48, 0x21, 0xcb, //0x000050ab andq %rcx, %rbx - 0x66, 0x0f, 0x74, 0xc4, //0x000050ae pcmpeqb %xmm4, %xmm0 - 0x66, 0x0f, 0xd7, 0xf0, //0x000050b2 pmovmskb %xmm0, %esi - 0x66, 0x0f, 0x74, 0xec, //0x000050b6 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000050ba pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x74, 0xfc, //0x000050be pcmpeqb %xmm4, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xf7, //0x000050c2 pmovmskb %xmm7, %r14d - 0x66, 0x0f, 0x74, 0xf4, //0x000050c7 pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000050cb pmovmskb %xmm6, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x000050d0 shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x000050d4 shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x000050d8 orq %r15, %r14 - 0x48, 0xc1, 0xe2, 0x10, //0x000050db shlq $16, %rdx - 0x4c, 0x09, 0xf2, //0x000050df orq %r14, %rdx - 0x48, 0x09, 0xd6, //0x000050e2 orq %rdx, %rsi - 0x48, 0x21, 0xce, //0x000050e5 andq %rcx, %rsi - 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x000050e8 je LBB0_940 - 0x4c, 0x8b, 0x75, 0xc0, //0x000050ee movq $-64(%rbp), %r14 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000050f2 movabsq $6148914691236517205, %r15 - //0x000050fc LBB0_938 - 0x48, 0x8d, 0x7e, 0xff, //0x000050fc leaq $-1(%rsi), %rdi - 0x48, 0x89, 0xf9, //0x00005100 movq %rdi, %rcx - 0x48, 0x21, 0xd9, //0x00005103 andq %rbx, %rcx - 0x48, 0x89, 0xca, //0x00005106 movq %rcx, %rdx - 0x48, 0xd1, 0xea, //0x00005109 shrq %rdx - 0x4c, 0x21, 0xfa, //0x0000510c andq %r15, %rdx - 0x48, 0x29, 0xd1, //0x0000510f subq %rdx, %rcx - 0x48, 0x89, 0xca, //0x00005112 movq %rcx, %rdx - 0x4c, 0x21, 0xca, //0x00005115 andq %r9, %rdx - 0x48, 0xc1, 0xe9, 0x02, //0x00005118 shrq $2, %rcx - 0x4c, 0x21, 0xc9, //0x0000511c andq %r9, %rcx - 0x48, 0x01, 0xd1, //0x0000511f addq %rdx, %rcx - 0x48, 0x89, 0xca, //0x00005122 movq %rcx, %rdx - 0x48, 0xc1, 0xea, 0x04, //0x00005125 shrq $4, %rdx - 0x48, 0x01, 0xca, //0x00005129 addq %rcx, %rdx - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000512c movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xca, //0x00005136 andq %rcx, %rdx - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00005139 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xd1, //0x00005143 imulq %rcx, %rdx - 0x48, 0xc1, 0xea, 0x38, //0x00005147 shrq $56, %rdx - 0x4c, 0x01, 0xc2, //0x0000514b addq %r8, %rdx - 0x4c, 0x39, 0xd2, //0x0000514e cmpq %r10, %rdx - 0x0f, 0x86, 0x8e, 0x00, 0x00, 0x00, //0x00005151 jbe LBB0_958 - 0x49, 0x83, 0xc2, 0x01, //0x00005157 addq $1, %r10 - 0x48, 0x21, 0xfe, //0x0000515b andq %rdi, %rsi - 0x0f, 0x85, 0x98, 0xff, 0xff, 0xff, //0x0000515e jne LBB0_938 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00005164 jmp LBB0_941 - //0x00005169 LBB0_940 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005169 movabsq $6148914691236517205, %r15 - //0x00005173 LBB0_941 - 0x49, 0xc1, 0xfd, 0x3f, //0x00005173 sarq $63, %r13 - 0x48, 0x89, 0xd9, //0x00005177 movq %rbx, %rcx - 0x48, 0xd1, 0xe9, //0x0000517a shrq %rcx - 0x4c, 0x21, 0xf9, //0x0000517d andq %r15, %rcx - 0x48, 0x29, 0xcb, //0x00005180 subq %rcx, %rbx - 0x48, 0x89, 0xd9, //0x00005183 movq %rbx, %rcx - 0x4c, 0x21, 0xc9, //0x00005186 andq %r9, %rcx - 0x48, 0xc1, 0xeb, 0x02, //0x00005189 shrq $2, %rbx - 0x4c, 0x21, 0xcb, //0x0000518d andq %r9, %rbx - 0x48, 0x01, 0xcb, //0x00005190 addq %rcx, %rbx - 0x48, 0x89, 0xd9, //0x00005193 movq %rbx, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00005196 shrq $4, %rcx - 0x48, 0x01, 0xd9, //0x0000519a addq %rbx, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000519d movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x000051a7 andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000051aa movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x000051b4 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x000051b8 shrq $56, %rcx - 0x49, 0x01, 0xc8, //0x000051bc addq %rcx, %r8 - 0x49, 0x83, 0xc4, 0x40, //0x000051bf addq $64, %r12 - 0x48, 0x8b, 0x4d, 0xd0, //0x000051c3 movq $-48(%rbp), %rcx - 0x48, 0x83, 0xc1, 0xc0, //0x000051c7 addq $-64, %rcx - 0x4d, 0x89, 0xee, //0x000051cb movq %r13, %r14 - 0x48, 0x8b, 0x55, 0xb8, //0x000051ce movq $-72(%rbp), %rdx - 0x48, 0x83, 0xf9, 0x40, //0x000051d2 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xd0, //0x000051d6 movq %rcx, $-48(%rbp) - 0x0f, 0x8d, 0x64, 0xfd, 0xff, 0xff, //0x000051da jge LBB0_933 - 0xe9, 0x06, 0xfc, 0xff, 0xff, //0x000051e0 jmp LBB0_942 - //0x000051e5 LBB0_958 - 0x49, 0x8b, 0x06, //0x000051e5 movq (%r14), %rax - 0x48, 0x0f, 0xbc, 0xce, //0x000051e8 bsfq %rsi, %rcx - 0x48, 0x2b, 0x4d, 0xd0, //0x000051ec subq $-48(%rbp), %rcx - 0x48, 0x01, 0xc8, //0x000051f0 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000051f3 addq $1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x000051f7 movq $-56(%rbp), %rdx - 0x48, 0x89, 0x02, //0x000051fb movq %rax, (%rdx) - 0x49, 0x8b, 0x0e, //0x000051fe movq (%r14), %rcx - 0x48, 0x39, 0xc8, //0x00005201 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x00005204 cmovaq %rcx, %rax - 0x48, 0x89, 0x02, //0x00005208 movq %rax, (%rdx) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000520b movq $-1, %rax - 0x4c, 0x0f, 0x47, 0xd8, //0x00005212 cmovaq %rax, %r11 - 0x4c, 0x89, 0xd8, //0x00005216 movq %r11, %rax - 0xe9, 0x33, 0xf4, 0xff, 0xff, //0x00005219 jmp LBB0_870 - //0x0000521e LBB0_959 - 0x0f, 0xbc, 0xc6, //0x0000521e bsfl %esi, %eax - 0x4c, 0x01, 0xd8, //0x00005221 addq %r11, %rax - 0x4c, 0x01, 0xf0, //0x00005224 addq %r14, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00005227 addq $2, %rax - 0x48, 0x8b, 0x4d, 0xc8, //0x0000522b movq $-56(%rbp), %rcx - 0x48, 0x89, 0x01, //0x0000522f movq %rax, (%rcx) - 0x4c, 0x89, 0xd8, //0x00005232 movq %r11, %rax - 0xe9, 0x17, 0xf4, 0xff, 0xff, //0x00005235 jmp LBB0_870 - //0x0000523a LBB0_972 - 0x48, 0x89, 0x17, //0x0000523a movq %rdx, (%rdi) - 0xe9, 0x0f, 0xf4, 0xff, 0xff, //0x0000523d jmp LBB0_870 - //0x00005242 LBB0_960 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00005242 movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00005249 movl $2, %eax - 0x48, 0x01, 0xc7, //0x0000524e addq %rax, %rdi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00005251 movq $-1, %rax - 0x49, 0x01, 0xce, //0x00005258 addq %rcx, %r14 - 0x0f, 0x8e, 0xf0, 0xf3, 0xff, 0xff, //0x0000525b jle LBB0_870 - //0x00005261 LBB0_962 - 0x0f, 0xb6, 0x07, //0x00005261 movzbl (%rdi), %eax - 0x3c, 0x5c, //0x00005264 cmpb $92, %al - 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x00005266 je LBB0_960 - 0x3c, 0x22, //0x0000526c cmpb $34, %al - 0x0f, 0x84, 0x98, 0x01, 0x00, 0x00, //0x0000526e je LBB0_985 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00005274 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x0000527b movl $1, %eax - 0x48, 0x01, 0xc7, //0x00005280 addq %rax, %rdi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00005283 movq $-1, %rax - 0x49, 0x01, 0xce, //0x0000528a addq %rcx, %r14 - 0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x0000528d jg LBB0_962 - 0xe9, 0xb9, 0xf3, 0xff, 0xff, //0x00005293 jmp LBB0_870 - //0x00005298 LBB0_965 - 0x48, 0x8b, 0x7d, 0xa0, //0x00005298 movq $-96(%rbp), %rdi - 0xe9, 0x47, 0xf5, 0xff, 0xff, //0x0000529c jmp LBB0_891 - //0x000052a1 LBB0_966 - 0x4c, 0x89, 0x95, 0x48, 0xff, 0xff, 0xff, //0x000052a1 movq %r10, $-184(%rbp) - //0x000052a8 LBB0_967 - 0x4c, 0x8b, 0x45, 0xc8, //0x000052a8 movq $-56(%rbp), %r8 - //0x000052ac LBB0_968 - 0x48, 0x8b, 0x85, 0x48, 0xff, 0xff, 0xff, //0x000052ac movq $-184(%rbp), %rax - 0x49, 0x89, 0x00, //0x000052b3 movq %rax, (%r8) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000052b6 movq $-1, %rax - 0xe9, 0x8f, 0xf3, 0xff, 0xff, //0x000052bd jmp LBB0_870 - //0x000052c2 LBB0_969 - 0x4c, 0x29, 0xe7, //0x000052c2 subq %r12, %rdi - 0x48, 0x01, 0xc7, //0x000052c5 addq %rax, %rdi - 0x48, 0x89, 0x3b, //0x000052c8 movq %rdi, (%rbx) - 0x4c, 0x89, 0xd8, //0x000052cb movq %r11, %rax - 0xe9, 0x7e, 0xf3, 0xff, 0xff, //0x000052ce jmp LBB0_870 - //0x000052d3 LBB0_970 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000052d3 movq $-1, %r15 - //0x000052da LBB0_971 - 0x49, 0xf7, 0xd7, //0x000052da notq %r15 - 0x4c, 0x01, 0xf8, //0x000052dd addq %r15, %rax - 0x48, 0x8b, 0x4d, 0xc8, //0x000052e0 movq $-56(%rbp), %rcx - 0x48, 0x89, 0x01, //0x000052e4 movq %rax, (%rcx) - 0xe9, 0x5e, 0xf3, 0xff, 0xff, //0x000052e7 jmp LBB0_869 - //0x000052ec LBB0_974 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000052ec movq $-2, %rax - 0x80, 0xfa, 0x61, //0x000052f3 cmpb $97, %dl - 0x0f, 0x85, 0x55, 0xf3, 0xff, 0xff, //0x000052f6 jne LBB0_870 - 0x48, 0x8d, 0x51, 0x01, //0x000052fc leaq $1(%rcx), %rdx - 0x48, 0x89, 0x17, //0x00005300 movq %rdx, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x6c, //0x00005303 cmpb $108, $1(%r13,%rcx) - 0x0f, 0x85, 0x42, 0xf3, 0xff, 0xff, //0x00005309 jne LBB0_870 - 0x48, 0x8d, 0x51, 0x02, //0x0000530f leaq $2(%rcx), %rdx - 0x48, 0x89, 0x17, //0x00005313 movq %rdx, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x73, //0x00005316 cmpb $115, $2(%r13,%rcx) - 0x0f, 0x85, 0x2f, 0xf3, 0xff, 0xff, //0x0000531c jne LBB0_870 - 0x48, 0x8d, 0x51, 0x03, //0x00005322 leaq $3(%rcx), %rdx - 0x48, 0x89, 0x17, //0x00005326 movq %rdx, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x03, 0x65, //0x00005329 cmpb $101, $3(%r13,%rcx) - 0x0f, 0x85, 0x1c, 0xf3, 0xff, 0xff, //0x0000532f jne LBB0_870 - 0x48, 0x83, 0xc1, 0x04, //0x00005335 addq $4, %rcx - //0x00005339 LBB0_979 - 0x48, 0x8b, 0x55, 0xc8, //0x00005339 movq $-56(%rbp), %rdx - 0x48, 0x89, 0x0a, //0x0000533d movq %rcx, (%rdx) - 0xe9, 0x0c, 0xf3, 0xff, 0xff, //0x00005340 jmp LBB0_870 - //0x00005345 LBB0_758 - 0x48, 0x89, 0x07, //0x00005345 movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x05, 0x00, 0x6e, //0x00005348 cmpb $110, (%r13,%rax) - 0x0f, 0x85, 0xf6, 0xf2, 0xff, 0xff, //0x0000534e jne LBB0_869 - 0x48, 0x89, 0x0f, //0x00005354 movq %rcx, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x00, 0x75, //0x00005357 cmpb $117, (%r13,%rcx) - 0x0f, 0x85, 0xe7, 0xf2, 0xff, 0xff, //0x0000535d jne LBB0_869 - 0x48, 0x8d, 0x41, 0x01, //0x00005363 leaq $1(%rcx), %rax - 0x48, 0x89, 0x07, //0x00005367 movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x6c, //0x0000536a cmpb $108, $1(%r13,%rcx) - 0x0f, 0x85, 0xd4, 0xf2, 0xff, 0xff, //0x00005370 jne LBB0_869 - 0x48, 0x8d, 0x41, 0x02, //0x00005376 leaq $2(%rcx), %rax - 0x48, 0x89, 0x07, //0x0000537a movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x6c, //0x0000537d cmpb $108, $2(%r13,%rcx) - 0x0f, 0x85, 0xc1, 0xf2, 0xff, 0xff, //0x00005383 jne LBB0_869 - 0xe9, 0x44, 0x00, 0x00, 0x00, //0x00005389 jmp LBB0_984 - //0x0000538e LBB0_980 - 0x48, 0x89, 0x07, //0x0000538e movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x05, 0x00, 0x74, //0x00005391 cmpb $116, (%r13,%rax) - 0x0f, 0x85, 0xad, 0xf2, 0xff, 0xff, //0x00005397 jne LBB0_869 - 0x48, 0x89, 0x0f, //0x0000539d movq %rcx, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x00, 0x72, //0x000053a0 cmpb $114, (%r13,%rcx) - 0x0f, 0x85, 0x9e, 0xf2, 0xff, 0xff, //0x000053a6 jne LBB0_869 - 0x48, 0x8d, 0x41, 0x01, //0x000053ac leaq $1(%rcx), %rax - 0x48, 0x89, 0x07, //0x000053b0 movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x75, //0x000053b3 cmpb $117, $1(%r13,%rcx) - 0x0f, 0x85, 0x8b, 0xf2, 0xff, 0xff, //0x000053b9 jne LBB0_869 - 0x48, 0x8d, 0x41, 0x02, //0x000053bf leaq $2(%rcx), %rax - 0x48, 0x89, 0x07, //0x000053c3 movq %rax, (%rdi) - 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x65, //0x000053c6 cmpb $101, $2(%r13,%rcx) - 0x0f, 0x85, 0x78, 0xf2, 0xff, 0xff, //0x000053cc jne LBB0_869 - //0x000053d2 LBB0_984 - 0x48, 0x83, 0xc1, 0x03, //0x000053d2 addq $3, %rcx - 0x48, 0x8b, 0x45, 0xc8, //0x000053d6 movq $-56(%rbp), %rax - 0x48, 0x89, 0x08, //0x000053da movq %rcx, (%rax) - 0xe9, 0x68, 0xf2, 0xff, 0xff, //0x000053dd jmp LBB0_869 - //0x000053e2 LBB0_755 - 0x48, 0x83, 0xc1, 0xff, //0x000053e2 addq $-1, %rcx - 0x48, 0x89, 0xc8, //0x000053e6 movq %rcx, %rax - 0xe9, 0x63, 0xf2, 0xff, 0xff, //0x000053e9 jmp LBB0_870 - //0x000053ee LBB0_782 - 0x48, 0x83, 0xc0, 0xff, //0x000053ee addq $-1, %rax - 0xe9, 0x5a, 0xf2, 0xff, 0xff, //0x000053f2 jmp LBB0_870 - //0x000053f7 LBB0_992 - 0x4c, 0x89, 0x45, 0xa0, //0x000053f7 movq %r8, $-96(%rbp) - 0xe9, 0xad, 0xf3, 0xff, 0xff, //0x000053fb jmp LBB0_712 - //0x00005400 LBB0_997 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00005400 movq $-2, %rax - 0xe9, 0x2d, 0x00, 0x00, 0x00, //0x00005407 jmp LBB0_990 - //0x0000540c LBB0_985 - 0x4c, 0x29, 0xe7, //0x0000540c subq %r12, %rdi - 0x48, 0x83, 0xc7, 0x01, //0x0000540f addq $1, %rdi - //0x00005413 LBB0_986 - 0x48, 0x8b, 0x45, 0xc8, //0x00005413 movq $-56(%rbp), %rax - 0x48, 0x89, 0x38, //0x00005417 movq %rdi, (%rax) - 0x4c, 0x89, 0xd8, //0x0000541a movq %r11, %rax - 0xe9, 0x2f, 0xf2, 0xff, 0xff, //0x0000541d jmp LBB0_870 - //0x00005422 LBB0_987 - 0x48, 0x83, 0xc3, 0x01, //0x00005422 addq $1, %rbx - 0x48, 0xc7, 0xc0, 0xfd, 0xff, 0xff, 0xff, //0x00005426 movq $-3, %rax - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000542d jmp LBB0_989 - //0x00005432 LBB0_988 - 0x48, 0x83, 0xc3, 0x01, //0x00005432 addq $1, %rbx - //0x00005436 LBB0_989 - 0x49, 0x89, 0xd9, //0x00005436 movq %rbx, %r9 - //0x00005439 LBB0_990 - 0x4d, 0x29, 0xe9, //0x00005439 subq %r13, %r9 - 0x48, 0x8b, 0x4d, 0xc8, //0x0000543c movq $-56(%rbp), %rcx - 0x4c, 0x89, 0x09, //0x00005440 movq %r9, (%rcx) - 0xe9, 0x09, 0xf2, 0xff, 0xff, //0x00005443 jmp LBB0_870 - //0x00005448 LBB0_991 - 0x4c, 0x01, 0xe7, //0x00005448 addq %r12, %rdi - 0x48, 0x8b, 0x5d, 0xc8, //0x0000544b movq $-56(%rbp), %rbx - 0x48, 0x85, 0xc9, //0x0000544f testq %rcx, %rcx - 0x0f, 0x85, 0xed, 0xf2, 0xff, 0xff, //0x00005452 jne LBB0_881 - 0xe9, 0x1d, 0xf3, 0xff, 0xff, //0x00005458 jmp LBB0_887 - //0x0000545d LBB0_993 - 0x4c, 0x01, 0xe7, //0x0000545d addq %r12, %rdi - 0xe9, 0x9a, 0xf4, 0xff, 0xff, //0x00005460 jmp LBB0_902 - //0x00005465 LBB0_994 - 0x48, 0x8b, 0x4d, 0xc0, //0x00005465 movq $-64(%rbp), %rcx - 0x48, 0x8b, 0x09, //0x00005469 movq (%rcx), %rcx - 0xe9, 0xc8, 0xfe, 0xff, 0xff, //0x0000546c jmp LBB0_979 - //0x00005471 LBB0_995 - 0x49, 0x8d, 0x48, 0xff, //0x00005471 leaq $-1(%r8), %rcx - 0x4c, 0x39, 0xf1, //0x00005475 cmpq %r14, %rcx - 0x0f, 0x84, 0xd3, 0xf1, 0xff, 0xff, //0x00005478 je LBB0_870 - 0x4b, 0x8d, 0x3c, 0x0e, //0x0000547e leaq (%r14,%r9), %rdi - 0x48, 0x83, 0xc7, 0x02, //0x00005482 addq $2, %rdi - 0x4d, 0x29, 0xf0, //0x00005486 subq %r14, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00005489 addq $-2, %r8 - 0x4d, 0x89, 0xc6, //0x0000548d movq %r8, %r14 - 0xe9, 0x6a, 0xf4, 0xff, 0xff, //0x00005490 jmp LBB0_902 - 0x90, 0x90, 0x90, //0x00005495 .p2align 2, 0x90 - // // .set L0_0_set_430, LBB0_430-LJTI0_0 - // // .set L0_0_set_429, LBB0_429-LJTI0_0 - // // .set L0_0_set_415, LBB0_415-LJTI0_0 + //0x00003130 LBB0_571 + 0x4c, 0x8d, 0x7a, 0x02, //0x00003130 leaq $2(%rdx), %r15 + 0x49, 0x39, 0xc7, //0x00003134 cmpq %rax, %r15 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003137 jae LBB0_575 + 0x43, 0x8a, 0x5c, 0x3d, 0x00, //0x0000313d movb (%r13,%r15), %bl + 0x80, 0xfb, 0x0d, //0x00003142 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00003145 je LBB0_575 + 0x80, 0xfb, 0x20, //0x0000314b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000314e je LBB0_575 + 0x80, 0xc3, 0xf7, //0x00003154 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00003157 cmpb $1, %bl + 0x0f, 0x87, 0x98, 0x00, 0x00, 0x00, //0x0000315a ja LBB0_588 + //0x00003160 .p2align 4, 0x90 + //0x00003160 LBB0_575 + 0x4c, 0x8d, 0x7a, 0x03, //0x00003160 leaq $3(%rdx), %r15 + 0x49, 0x39, 0xc7, //0x00003164 cmpq %rax, %r15 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00003167 jae LBB0_579 + 0x43, 0x8a, 0x5c, 0x3d, 0x00, //0x0000316d movb (%r13,%r15), %bl + 0x80, 0xfb, 0x0d, //0x00003172 cmpb $13, %bl + 0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00003175 je LBB0_579 + 0x80, 0xfb, 0x20, //0x0000317b cmpb $32, %bl + 0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000317e je LBB0_579 + 0x80, 0xc3, 0xf7, //0x00003184 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00003187 cmpb $1, %bl + 0x0f, 0x87, 0x68, 0x00, 0x00, 0x00, //0x0000318a ja LBB0_588 + //0x00003190 .p2align 4, 0x90 + //0x00003190 LBB0_579 + 0x48, 0x83, 0xc2, 0x04, //0x00003190 addq $4, %rdx + 0x48, 0x39, 0xd0, //0x00003194 cmpq %rdx, %rax + 0x0f, 0x86, 0xa4, 0x15, 0x00, 0x00, //0x00003197 jbe LBB0_867 + 0x48, 0x39, 0xd0, //0x0000319d cmpq %rdx, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000031a0 je LBB0_585 + 0x4a, 0x8d, 0x34, 0x28, //0x000031a6 leaq (%rax,%r13), %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000031aa .p2align 4, 0x90 + //0x000031b0 LBB0_582 + 0x41, 0x0f, 0xbe, 0x7c, 0x15, 0x00, //0x000031b0 movsbl (%r13,%rdx), %edi + 0x83, 0xff, 0x20, //0x000031b6 cmpl $32, %edi + 0x0f, 0x87, 0x2d, 0x00, 0x00, 0x00, //0x000031b9 ja LBB0_587 + 0x49, 0x0f, 0xa3, 0xfb, //0x000031bf btq %rdi, %r11 + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000031c3 jae LBB0_587 + 0x48, 0x83, 0xc2, 0x01, //0x000031c9 addq $1, %rdx + 0x48, 0x39, 0xd0, //0x000031cd cmpq %rdx, %rax + 0x0f, 0x85, 0xda, 0xff, 0xff, 0xff, //0x000031d0 jne LBB0_582 + 0xe9, 0x0b, 0x00, 0x00, 0x00, //0x000031d6 jmp LBB0_586 + 0x90, 0x90, 0x90, 0x90, 0x90, //0x000031db .p2align 4, 0x90 + //0x000031e0 LBB0_585 + 0x4c, 0x01, 0xea, //0x000031e0 addq %r13, %rdx + 0x48, 0x89, 0xd6, //0x000031e3 movq %rdx, %rsi + //0x000031e6 LBB0_586 + 0x4c, 0x29, 0xee, //0x000031e6 subq %r13, %rsi + 0x48, 0x89, 0xf2, //0x000031e9 movq %rsi, %rdx + //0x000031ec LBB0_587 + 0x49, 0x89, 0xd7, //0x000031ec movq %rdx, %r15 + 0x48, 0x39, 0xc2, //0x000031ef cmpq %rax, %rdx + 0x0f, 0x83, 0x4c, 0x15, 0x00, 0x00, //0x000031f2 jae LBB0_868 + //0x000031f8 LBB0_588 + 0x49, 0x8d, 0x47, 0x01, //0x000031f8 leaq $1(%r15), %rax + 0x49, 0x89, 0x00, //0x000031fc movq %rax, (%r8) + 0x43, 0x0f, 0xbe, 0x7c, 0x3d, 0x00, //0x000031ff movsbl (%r13,%r15), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003205 movq $-1, %rax + 0x85, 0xff, //0x0000320c testl %edi, %edi + 0x0f, 0x84, 0x55, 0x15, 0x00, 0x00, //0x0000320e je LBB0_874 + 0x49, 0x8b, 0x32, //0x00003214 movq (%r10), %rsi + 0x48, 0x8d, 0x56, 0xff, //0x00003217 leaq $-1(%rsi), %rdx + 0x41, 0x8b, 0x1c, 0xf2, //0x0000321b movl (%r10,%rsi,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x0000321f cmpq $-1, %rcx + 0x4c, 0x0f, 0x45, 0xf9, //0x00003223 cmovneq %rcx, %r15 + 0x83, 0xc3, 0xff, //0x00003227 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x0000322a cmpl $5, %ebx + 0x0f, 0x87, 0x40, 0x00, 0x00, 0x00, //0x0000322d ja LBB0_597 + 0x49, 0x63, 0x0c, 0x9e, //0x00003233 movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x00003237 addq %r14, %rcx + 0xff, 0xe1, //0x0000323a jmpq *%rcx + //0x0000323c LBB0_591 + 0x83, 0xff, 0x2c, //0x0000323c cmpl $44, %edi + 0x0f, 0x84, 0xe2, 0x04, 0x00, 0x00, //0x0000323f je LBB0_659 + 0x83, 0xff, 0x5d, //0x00003245 cmpl $93, %edi + 0x0f, 0x84, 0xc5, 0x04, 0x00, 0x00, //0x00003248 je LBB0_593 + 0xe9, 0x0f, 0x15, 0x00, 0x00, //0x0000324e jmp LBB0_873 + //0x00003253 LBB0_594 + 0x40, 0x80, 0xff, 0x5d, //0x00003253 cmpb $93, %dil + 0x0f, 0x84, 0xb6, 0x04, 0x00, 0x00, //0x00003257 je LBB0_593 + 0x49, 0xc7, 0x04, 0xf2, 0x01, 0x00, 0x00, 0x00, //0x0000325d movq $1, (%r10,%rsi,8) + 0x83, 0xff, 0x7b, //0x00003265 cmpl $123, %edi + 0x0f, 0x86, 0x11, 0x00, 0x00, 0x00, //0x00003268 jbe LBB0_596 + 0xe9, 0xef, 0x14, 0x00, 0x00, //0x0000326e jmp LBB0_873 + //0x00003273 LBB0_597 + 0x49, 0x89, 0x12, //0x00003273 movq %rdx, (%r10) + 0x83, 0xff, 0x7b, //0x00003276 cmpl $123, %edi + 0x0f, 0x87, 0xe3, 0x14, 0x00, 0x00, //0x00003279 ja LBB0_873 + //0x0000327f LBB0_596 + 0x89, 0xf9, //0x0000327f movl %edi, %ecx + 0x48, 0x8d, 0x15, 0x40, 0x27, 0x00, 0x00, //0x00003281 leaq $10048(%rip), %rdx /* LJTI0_3+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x00003288 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x0000328c addq %rdx, %rcx + 0xff, 0xe1, //0x0000328f jmpq *%rcx + //0x00003291 LBB0_623 + 0x4d, 0x8b, 0x19, //0x00003291 movq (%r9), %r11 + 0x48, 0x8b, 0x45, 0xc8, //0x00003294 movq $-56(%rbp), %rax + 0x48, 0x8b, 0x38, //0x00003298 movq (%rax), %rdi + 0x48, 0x8d, 0x47, 0xff, //0x0000329b leaq $-1(%rdi), %rax + 0x49, 0x29, 0xc3, //0x0000329f subq %rax, %r11 + 0x0f, 0x84, 0xbb, 0x16, 0x00, 0x00, //0x000032a2 je LBB0_900 + 0x4c, 0x89, 0x7d, 0xb0, //0x000032a8 movq %r15, $-80(%rbp) + 0x4a, 0x8d, 0x0c, 0x2f, //0x000032ac leaq (%rdi,%r13), %rcx + 0x48, 0x83, 0xc1, 0xff, //0x000032b0 addq $-1, %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x000032b4 movq %rcx, $-48(%rbp) + 0x80, 0x39, 0x30, //0x000032b8 cmpb $48, (%rcx) + 0x0f, 0x85, 0x38, 0x00, 0x00, 0x00, //0x000032bb jne LBB0_628 + 0x41, 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000032c1 movl $1, %r8d + 0x49, 0x83, 0xfb, 0x01, //0x000032c7 cmpq $1, %r11 + 0x0f, 0x84, 0xa6, 0xfd, 0xff, 0xff, //0x000032cb je LBB0_559 + 0x41, 0x8a, 0x4c, 0x3d, 0x00, //0x000032d1 movb (%r13,%rdi), %cl + 0x80, 0xc1, 0xd2, //0x000032d6 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000032d9 cmpb $55, %cl + 0x0f, 0x87, 0x95, 0xfd, 0xff, 0xff, //0x000032dc ja LBB0_559 + 0x0f, 0xb6, 0xc9, //0x000032e2 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000032e5 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x000032ef btq %rcx, %rdx + 0x0f, 0x83, 0x7e, 0xfd, 0xff, 0xff, //0x000032f3 jae LBB0_559 + //0x000032f9 LBB0_628 + 0x48, 0x89, 0x7d, 0xb8, //0x000032f9 movq %rdi, $-72(%rbp) + 0x49, 0x83, 0xfb, 0x10, //0x000032fd cmpq $16, %r11 + 0x0f, 0x82, 0xe6, 0x0e, 0x00, 0x00, //0x00003301 jb LBB0_798 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003307 movq $-1, %r14 + 0x45, 0x31, 0xc0, //0x0000330e xorl %r8d, %r8d + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00003311 movq $-1, %r15 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003318 movq $-1, %r9 + 0x4c, 0x89, 0xdb, //0x0000331f movq %r11, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003322 .p2align 4, 0x90 + //0x00003330 LBB0_630 + 0x48, 0x8b, 0x4d, 0xd0, //0x00003330 movq $-48(%rbp), %rcx + 0xf3, 0x42, 0x0f, 0x6f, 0x14, 0x01, //0x00003334 movdqu (%rcx,%r8), %xmm2 + 0x66, 0x0f, 0x6f, 0xe2, //0x0000333a movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x0000333e pcmpgtb %xmm8, %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00003343 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x64, 0xea, //0x00003347 pcmpgtb %xmm2, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x0000334b pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe2, //0x0000334f movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x00003353 pcmpeqb %xmm9, %xmm4 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003358 movdqa %xmm2, %xmm6 + 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x0000335c pcmpeqb %xmm10, %xmm6 + 0x66, 0x0f, 0xeb, 0xf4, //0x00003361 por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe2, //0x00003365 movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00003369 pand %xmm11, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x0000336e pcmpeqb %xmm12, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00003373 pcmpeqb %xmm13, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x00003378 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe2, //0x0000337c por %xmm2, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x00003380 por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00003384 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xfa, //0x00003388 pmovmskb %xmm2, %edi + 0x66, 0x44, 0x0f, 0xd7, 0xe6, //0x0000338c pmovmskb %xmm6, %r12d + 0x66, 0x0f, 0xd7, 0xcd, //0x00003391 pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00003395 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00003397 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x0000339a cmpl $16, %ecx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000339d je LBB0_632 + 0xba, 0xff, 0xff, 0xff, 0xff, //0x000033a3 movl $-1, %edx + 0xd3, 0xe2, //0x000033a8 shll %cl, %edx + 0xf7, 0xd2, //0x000033aa notl %edx + 0x21, 0xd7, //0x000033ac andl %edx, %edi + 0x21, 0xd6, //0x000033ae andl %edx, %esi + 0x44, 0x21, 0xe2, //0x000033b0 andl %r12d, %edx + 0x41, 0x89, 0xd4, //0x000033b3 movl %edx, %r12d + //0x000033b6 LBB0_632 + 0x44, 0x8d, 0x57, 0xff, //0x000033b6 leal $-1(%rdi), %r10d + 0x41, 0x21, 0xfa, //0x000033ba andl %edi, %r10d + 0x0f, 0x85, 0x19, 0x0d, 0x00, 0x00, //0x000033bd jne LBB0_788 + 0x8d, 0x56, 0xff, //0x000033c3 leal $-1(%rsi), %edx + 0x21, 0xf2, //0x000033c6 andl %esi, %edx + 0x0f, 0x85, 0x67, 0x0c, 0x00, 0x00, //0x000033c8 jne LBB0_786 + 0x41, 0x8d, 0x54, 0x24, 0xff, //0x000033ce leal $-1(%r12), %edx + 0x44, 0x21, 0xe2, //0x000033d3 andl %r12d, %edx + 0x0f, 0x85, 0x59, 0x0c, 0x00, 0x00, //0x000033d6 jne LBB0_786 + 0x85, 0xff, //0x000033dc testl %edi, %edi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000033de je LBB0_638 + 0x0f, 0xbc, 0xff, //0x000033e4 bsfl %edi, %edi + 0x49, 0x83, 0xf9, 0xff, //0x000033e7 cmpq $-1, %r9 + 0x0f, 0x85, 0xf4, 0x0c, 0x00, 0x00, //0x000033eb jne LBB0_789 + 0x4c, 0x01, 0xc7, //0x000033f1 addq %r8, %rdi + 0x49, 0x89, 0xf9, //0x000033f4 movq %rdi, %r9 + //0x000033f7 LBB0_638 + 0x85, 0xf6, //0x000033f7 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000033f9 je LBB0_641 + 0x0f, 0xbc, 0xf6, //0x000033ff bsfl %esi, %esi + 0x49, 0x83, 0xff, 0xff, //0x00003402 cmpq $-1, %r15 + 0x0f, 0x85, 0xe0, 0x0c, 0x00, 0x00, //0x00003406 jne LBB0_790 + 0x4c, 0x01, 0xc6, //0x0000340c addq %r8, %rsi + 0x49, 0x89, 0xf7, //0x0000340f movq %rsi, %r15 + //0x00003412 LBB0_641 + 0x45, 0x85, 0xe4, //0x00003412 testl %r12d, %r12d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00003415 je LBB0_644 + 0x41, 0x0f, 0xbc, 0xd4, //0x0000341b bsfl %r12d, %edx + 0x49, 0x83, 0xfe, 0xff, //0x0000341f cmpq $-1, %r14 + 0x0f, 0x85, 0xca, 0x0c, 0x00, 0x00, //0x00003423 jne LBB0_791 + 0x4c, 0x01, 0xc2, //0x00003429 addq %r8, %rdx + 0x49, 0x89, 0xd6, //0x0000342c movq %rdx, %r14 + //0x0000342f LBB0_644 + 0x83, 0xf9, 0x10, //0x0000342f cmpl $16, %ecx + 0x0f, 0x85, 0xf1, 0x04, 0x00, 0x00, //0x00003432 jne LBB0_682 + 0x48, 0x83, 0xc3, 0xf0, //0x00003438 addq $-16, %rbx + 0x49, 0x83, 0xc0, 0x10, //0x0000343c addq $16, %r8 + 0x48, 0x83, 0xfb, 0x0f, //0x00003440 cmpq $15, %rbx + 0x0f, 0x87, 0xe6, 0xfe, 0xff, 0xff, //0x00003444 ja LBB0_630 + 0x48, 0x8b, 0x4d, 0xd0, //0x0000344a movq $-48(%rbp), %rcx + 0x4a, 0x8d, 0x34, 0x01, //0x0000344e leaq (%rcx,%r8), %rsi + 0x49, 0x89, 0xf4, //0x00003452 movq %rsi, %r12 + 0x4d, 0x39, 0xc3, //0x00003455 cmpq %r8, %r11 + 0x4c, 0x8d, 0x15, 0xc5, 0x27, 0x00, 0x00, //0x00003458 leaq $10181(%rip), %r10 /* LJTI0_5+0(%rip) */ + 0x0f, 0x84, 0xd9, 0x04, 0x00, 0x00, //0x0000345f je LBB0_684 + //0x00003465 LBB0_647 + 0x4c, 0x8d, 0x24, 0x1e, //0x00003465 leaq (%rsi,%rbx), %r12 + 0x48, 0x8b, 0x4d, 0x98, //0x00003469 movq $-104(%rbp), %rcx + 0x4c, 0x8d, 0x04, 0x31, //0x0000346d leaq (%rcx,%rsi), %r8 + 0x4c, 0x2b, 0x45, 0xb8, //0x00003471 subq $-72(%rbp), %r8 + 0x31, 0xd2, //0x00003475 xorl %edx, %edx + 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00003477 jmp LBB0_651 + //0x0000347c LBB0_648 + 0x49, 0x83, 0xfe, 0xff, //0x0000347c cmpq $-1, %r14 + 0x0f, 0x85, 0x95, 0x0b, 0x00, 0x00, //0x00003480 jne LBB0_785 + 0x4d, 0x8d, 0x34, 0x10, //0x00003486 leaq (%r8,%rdx), %r14 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000348a .p2align 4, 0x90 + //0x00003490 LBB0_650 + 0x48, 0x83, 0xc2, 0x01, //0x00003490 addq $1, %rdx + 0x48, 0x39, 0xd3, //0x00003494 cmpq %rdx, %rbx + 0x0f, 0x84, 0xa1, 0x04, 0x00, 0x00, //0x00003497 je LBB0_684 + //0x0000349d LBB0_651 + 0x0f, 0xbe, 0x3c, 0x16, //0x0000349d movsbl (%rsi,%rdx), %edi + 0x8d, 0x4f, 0xd0, //0x000034a1 leal $-48(%rdi), %ecx + 0x83, 0xf9, 0x0a, //0x000034a4 cmpl $10, %ecx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x000034a7 jb LBB0_650 + 0x8d, 0x4f, 0xd5, //0x000034ad leal $-43(%rdi), %ecx + 0x83, 0xf9, 0x1a, //0x000034b0 cmpl $26, %ecx + 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x000034b3 ja LBB0_656 + 0x49, 0x63, 0x0c, 0x8a, //0x000034b9 movslq (%r10,%rcx,4), %rcx + 0x4c, 0x01, 0xd1, //0x000034bd addq %r10, %rcx + 0xff, 0xe1, //0x000034c0 jmpq *%rcx + //0x000034c2 LBB0_654 + 0x49, 0x83, 0xf9, 0xff, //0x000034c2 cmpq $-1, %r9 + 0x0f, 0x85, 0x4f, 0x0b, 0x00, 0x00, //0x000034c6 jne LBB0_785 + 0x4d, 0x8d, 0x0c, 0x10, //0x000034cc leaq (%r8,%rdx), %r9 + 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x000034d0 jmp LBB0_650 + //0x000034d5 LBB0_656 + 0x83, 0xff, 0x65, //0x000034d5 cmpl $101, %edi + 0x0f, 0x85, 0x5a, 0x04, 0x00, 0x00, //0x000034d8 jne LBB0_683 + //0x000034de LBB0_657 + 0x49, 0x83, 0xff, 0xff, //0x000034de cmpq $-1, %r15 + 0x0f, 0x85, 0x33, 0x0b, 0x00, 0x00, //0x000034e2 jne LBB0_785 + 0x4d, 0x8d, 0x3c, 0x10, //0x000034e8 leaq (%r8,%rdx), %r15 + 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x000034ec jmp LBB0_650 + //0x000034f1 LBB0_598 + 0x83, 0xff, 0x2c, //0x000034f1 cmpl $44, %edi + 0x0f, 0x85, 0x10, 0x02, 0x00, 0x00, //0x000034f4 jne LBB0_599 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x000034fa cmpq $4095, %rsi + 0x0f, 0x8f, 0x11, 0x14, 0x00, 0x00, //0x00003501 jg LBB0_980 + 0x48, 0x8d, 0x46, 0x01, //0x00003507 leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x0000350b movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x03, 0x00, 0x00, 0x00, //0x0000350e movq $3, $8(%r10,%rsi,8) + 0xe9, 0x94, 0xfb, 0xff, 0xff, //0x00003517 jmp LBB0_560 + //0x0000351c LBB0_600 + 0x40, 0x80, 0xff, 0x22, //0x0000351c cmpb $34, %dil + 0x0f, 0x85, 0x3c, 0x12, 0x00, 0x00, //0x00003520 jne LBB0_873 + 0x49, 0xc7, 0x04, 0xf2, 0x04, 0x00, 0x00, 0x00, //0x00003526 movq $4, (%r10,%rsi,8) + 0x4d, 0x8b, 0x00, //0x0000352e movq (%r8), %r8 + 0x49, 0x8b, 0x01, //0x00003531 movq (%r9), %rax + 0x49, 0x89, 0xc6, //0x00003534 movq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x00003537 subq %r8, %r14 + 0x0f, 0x84, 0xef, 0x1f, 0x00, 0x00, //0x0000353a je LBB0_998 + 0x48, 0x89, 0x45, 0xb8, //0x00003540 movq %rax, $-72(%rbp) + 0x4c, 0x89, 0x7d, 0xb0, //0x00003544 movq %r15, $-80(%rbp) + 0x49, 0x83, 0xfe, 0x40, //0x00003548 cmpq $64, %r14 + 0x0f, 0x82, 0x71, 0x0c, 0x00, 0x00, //0x0000354c jb LBB0_796 + 0x4c, 0x89, 0xc1, //0x00003552 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00003555 notq %rcx + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x00003558 movq $-1, $-48(%rbp) + 0x4c, 0x89, 0xc0, //0x00003560 movq %r8, %rax + 0x45, 0x31, 0xdb, //0x00003563 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003566 .p2align 4, 0x90 + //0x00003570 LBB0_604 + 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00003570 movdqu (%r13,%rax), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x10, //0x00003577 movdqu $16(%r13,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x20, //0x0000357e movdqu $32(%r13,%rax), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x05, 0x30, //0x00003585 movdqu $48(%r13,%rax), %xmm7 + 0x66, 0x0f, 0x6f, 0xe2, //0x0000358c movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00003590 pcmpeqb %xmm0, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00003594 pmovmskb %xmm4, %r15d + 0x66, 0x0f, 0x6f, 0xe5, //0x00003599 movdqa %xmm5, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x0000359d pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x000035a1 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x6f, 0xe6, //0x000035a5 movdqa %xmm6, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000035a9 pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x000035ad pmovmskb %xmm4, %edx + 0x66, 0x0f, 0x6f, 0xe7, //0x000035b1 movdqa %xmm7, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000035b5 pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000035b9 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0x74, 0xd1, //0x000035bd pcmpeqb %xmm1, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x000035c1 pmovmskb %xmm2, %r12d + 0x66, 0x0f, 0x74, 0xe9, //0x000035c6 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000035ca pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x000035ce pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x000035d2 pmovmskb %xmm6, %r10d + 0x66, 0x0f, 0x74, 0xf9, //0x000035d7 pcmpeqb %xmm1, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xcf, //0x000035db pmovmskb %xmm7, %r9d + 0x48, 0xc1, 0xe6, 0x30, //0x000035e0 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x000035e4 shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x000035e8 orq %rsi, %rdx + 0x48, 0xc1, 0xe3, 0x10, //0x000035eb shlq $16, %rbx + 0x48, 0x09, 0xd3, //0x000035ef orq %rdx, %rbx + 0x49, 0x09, 0xdf, //0x000035f2 orq %rbx, %r15 + 0x49, 0xc1, 0xe1, 0x30, //0x000035f5 shlq $48, %r9 + 0x49, 0xc1, 0xe2, 0x20, //0x000035f9 shlq $32, %r10 + 0x4d, 0x09, 0xca, //0x000035fd orq %r9, %r10 + 0x48, 0xc1, 0xe7, 0x10, //0x00003600 shlq $16, %rdi + 0x4c, 0x09, 0xd7, //0x00003604 orq %r10, %rdi + 0x49, 0x09, 0xfc, //0x00003607 orq %rdi, %r12 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000360a jne LBB0_613 + 0x4d, 0x85, 0xdb, //0x00003610 testq %r11, %r11 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00003613 jne LBB0_615 + 0x45, 0x31, 0xdb, //0x00003619 xorl %r11d, %r11d + 0x4d, 0x85, 0xff, //0x0000361c testq %r15, %r15 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000361f jne LBB0_616 + //0x00003625 LBB0_607 + 0x49, 0x83, 0xc6, 0xc0, //0x00003625 addq $-64, %r14 + 0x48, 0x83, 0xc1, 0xc0, //0x00003629 addq $-64, %rcx + 0x48, 0x83, 0xc0, 0x40, //0x0000362d addq $64, %rax + 0x49, 0x83, 0xfe, 0x3f, //0x00003631 cmpq $63, %r14 + 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x00003635 ja LBB0_604 + 0xe9, 0x35, 0x09, 0x00, 0x00, //0x0000363b jmp LBB0_608 + //0x00003640 LBB0_613 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x00003640 cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003645 jne LBB0_615 + 0x49, 0x0f, 0xbc, 0xd4, //0x0000364b bsfq %r12, %rdx + 0x48, 0x01, 0xc2, //0x0000364f addq %rax, %rdx + 0x48, 0x89, 0x55, 0xd0, //0x00003652 movq %rdx, $-48(%rbp) + //0x00003656 LBB0_615 + 0x4c, 0x89, 0xda, //0x00003656 movq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x00003659 notq %rdx + 0x4c, 0x21, 0xe2, //0x0000365c andq %r12, %rdx + 0x48, 0x8d, 0x34, 0x12, //0x0000365f leaq (%rdx,%rdx), %rsi + 0x4c, 0x09, 0xde, //0x00003663 orq %r11, %rsi + 0x48, 0x89, 0xf7, //0x00003666 movq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x00003669 notq %rdi + 0x4c, 0x21, 0xe7, //0x0000366c andq %r12, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000366f movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x00003679 andq %rbx, %rdi + 0x45, 0x31, 0xdb, //0x0000367c xorl %r11d, %r11d + 0x48, 0x01, 0xd7, //0x0000367f addq %rdx, %rdi + 0x41, 0x0f, 0x92, 0xc3, //0x00003682 setb %r11b + 0x48, 0x01, 0xff, //0x00003686 addq %rdi, %rdi + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003689 movabsq $6148914691236517205, %rdx + 0x48, 0x31, 0xd7, //0x00003693 xorq %rdx, %rdi + 0x48, 0x21, 0xf7, //0x00003696 andq %rsi, %rdi + 0x48, 0xf7, 0xd7, //0x00003699 notq %rdi + 0x49, 0x21, 0xff, //0x0000369c andq %rdi, %r15 + 0x4d, 0x85, 0xff, //0x0000369f testq %r15, %r15 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x000036a2 je LBB0_607 + //0x000036a8 LBB0_616 + 0x49, 0x0f, 0xbc, 0xc7, //0x000036a8 bsfq %r15, %rax + 0x48, 0x29, 0xc8, //0x000036ac subq %rcx, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x000036af movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000036b3 movq $-96(%rbp), %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036b7 movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0xe8, 0x22, 0x00, 0x00, //0x000036c1 leaq $8936(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4c, 0x8b, 0x7d, 0xb0, //0x000036c8 movq $-80(%rbp), %r15 + 0x48, 0x85, 0xc0, //0x000036cc testq %rax, %rax + 0x0f, 0x88, 0x4f, 0x12, 0x00, 0x00, //0x000036cf js LBB0_822 + //0x000036d5 LBB0_617 + 0x48, 0x8b, 0x4d, 0xc8, //0x000036d5 movq $-56(%rbp), %rcx + 0x48, 0x89, 0x01, //0x000036d9 movq %rax, (%rcx) + 0x4d, 0x85, 0xc0, //0x000036dc testq %r8, %r8 + 0x0f, 0x8f, 0xcb, 0xf9, 0xff, 0xff, //0x000036df jg LBB0_560 + 0xe9, 0x63, 0x12, 0x00, 0x00, //0x000036e5 jmp LBB0_618 + //0x000036ea LBB0_619 + 0x40, 0x80, 0xff, 0x3a, //0x000036ea cmpb $58, %dil + 0x0f, 0x85, 0x6e, 0x10, 0x00, 0x00, //0x000036ee jne LBB0_873 + 0x49, 0xc7, 0x04, 0xf2, 0x00, 0x00, 0x00, 0x00, //0x000036f4 movq $0, (%r10,%rsi,8) + 0xe9, 0xaf, 0xf9, 0xff, 0xff, //0x000036fc jmp LBB0_560 + //0x00003701 LBB0_621 + 0x83, 0xff, 0x22, //0x00003701 cmpl $34, %edi + 0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00003704 je LBB0_663 + //0x0000370a LBB0_599 + 0x83, 0xff, 0x7d, //0x0000370a cmpl $125, %edi + 0x0f, 0x85, 0x4f, 0x10, 0x00, 0x00, //0x0000370d jne LBB0_873 + //0x00003713 LBB0_593 + 0x49, 0x89, 0x12, //0x00003713 movq %rdx, (%r10) + 0x4c, 0x89, 0xf8, //0x00003716 movq %r15, %rax + 0x48, 0x85, 0xd2, //0x00003719 testq %rdx, %rdx + 0x0f, 0x85, 0x9d, 0xf9, 0xff, 0xff, //0x0000371c jne LBB0_562 + 0xe9, 0x42, 0x10, 0x00, 0x00, //0x00003722 jmp LBB0_874 + //0x00003727 LBB0_659 + 0x48, 0x81, 0xfe, 0xff, 0x0f, 0x00, 0x00, //0x00003727 cmpq $4095, %rsi + 0x0f, 0x8f, 0xe4, 0x11, 0x00, 0x00, //0x0000372e jg LBB0_980 + 0x48, 0x8d, 0x46, 0x01, //0x00003734 leaq $1(%rsi), %rax + 0x49, 0x89, 0x02, //0x00003738 movq %rax, (%r10) + 0x49, 0xc7, 0x44, 0xf2, 0x08, 0x00, 0x00, 0x00, 0x00, //0x0000373b movq $0, $8(%r10,%rsi,8) + 0xe9, 0x67, 0xf9, 0xff, 0xff, //0x00003744 jmp LBB0_560 + //0x00003749 LBB0_663 + 0x49, 0xc7, 0x04, 0xf2, 0x02, 0x00, 0x00, 0x00, //0x00003749 movq $2, (%r10,%rsi,8) + 0x4d, 0x8b, 0x00, //0x00003751 movq (%r8), %r8 + 0x49, 0x8b, 0x01, //0x00003754 movq (%r9), %rax + 0x49, 0x89, 0xc6, //0x00003757 movq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x0000375a subq %r8, %r14 + 0x0f, 0x84, 0xcc, 0x1d, 0x00, 0x00, //0x0000375d je LBB0_998 + 0x48, 0x89, 0x45, 0xb8, //0x00003763 movq %rax, $-72(%rbp) + 0x4c, 0x89, 0x7d, 0xb0, //0x00003767 movq %r15, $-80(%rbp) + 0x49, 0x83, 0xfe, 0x40, //0x0000376b cmpq $64, %r14 + 0x0f, 0x82, 0xad, 0x0a, 0x00, 0x00, //0x0000376f jb LBB0_801 + 0x4c, 0x89, 0xc3, //0x00003775 movq %r8, %rbx + 0x48, 0xf7, 0xd3, //0x00003778 notq %rbx + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x0000377b movq $-1, $-48(%rbp) + 0x4c, 0x89, 0xc0, //0x00003783 movq %r8, %rax + 0x45, 0x31, 0xdb, //0x00003786 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003789 .p2align 4, 0x90 + //0x00003790 LBB0_666 + 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00003790 movdqu (%r13,%rax), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x05, 0x10, //0x00003797 movdqu $16(%r13,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x20, //0x0000379e movdqu $32(%r13,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x30, //0x000037a5 movdqu $48(%r13,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfa, //0x000037ac movdqa %xmm2, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000037b0 pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xff, //0x000037b4 pmovmskb %xmm7, %r15d + 0x66, 0x0f, 0x6f, 0xfc, //0x000037b9 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000037bd pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x000037c1 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x000037c5 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000037c9 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x000037cd pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x6f, 0xfe, //0x000037d1 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000037d5 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x000037d9 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x74, 0xd1, //0x000037dd pcmpeqb %xmm1, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x000037e1 pmovmskb %xmm2, %r12d + 0x66, 0x0f, 0x74, 0xe1, //0x000037e6 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x000037ea pmovmskb %xmm4, %edi + 0x66, 0x0f, 0x74, 0xe9, //0x000037ee pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000037f2 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x74, 0xf1, //0x000037f7 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x000037fb pmovmskb %xmm6, %r10d + 0x48, 0xc1, 0xe6, 0x30, //0x00003800 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x00003804 shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00003808 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x0000380b shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x0000380f orq %rdx, %rcx + 0x49, 0x09, 0xcf, //0x00003812 orq %rcx, %r15 + 0x49, 0xc1, 0xe2, 0x30, //0x00003815 shlq $48, %r10 + 0x49, 0xc1, 0xe1, 0x20, //0x00003819 shlq $32, %r9 + 0x4d, 0x09, 0xd1, //0x0000381d orq %r10, %r9 + 0x48, 0xc1, 0xe7, 0x10, //0x00003820 shlq $16, %rdi + 0x4c, 0x09, 0xcf, //0x00003824 orq %r9, %rdi + 0x49, 0x09, 0xfc, //0x00003827 orq %rdi, %r12 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x0000382a jne LBB0_675 + 0x4d, 0x85, 0xdb, //0x00003830 testq %r11, %r11 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00003833 jne LBB0_677 + 0x45, 0x31, 0xdb, //0x00003839 xorl %r11d, %r11d + 0x4d, 0x85, 0xff, //0x0000383c testq %r15, %r15 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000383f jne LBB0_678 + //0x00003845 LBB0_669 + 0x49, 0x83, 0xc6, 0xc0, //0x00003845 addq $-64, %r14 + 0x48, 0x83, 0xc3, 0xc0, //0x00003849 addq $-64, %rbx + 0x48, 0x83, 0xc0, 0x40, //0x0000384d addq $64, %rax + 0x49, 0x83, 0xfe, 0x3f, //0x00003851 cmpq $63, %r14 + 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x00003855 ja LBB0_666 + 0xe9, 0xdd, 0x07, 0x00, 0x00, //0x0000385b jmp LBB0_670 + //0x00003860 LBB0_675 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x00003860 cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003865 jne LBB0_677 + 0x49, 0x0f, 0xbc, 0xcc, //0x0000386b bsfq %r12, %rcx + 0x48, 0x01, 0xc1, //0x0000386f addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x00003872 movq %rcx, $-48(%rbp) + //0x00003876 LBB0_677 + 0x4c, 0x89, 0xd9, //0x00003876 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00003879 notq %rcx + 0x4c, 0x21, 0xe1, //0x0000387c andq %r12, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000387f leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xda, //0x00003883 orq %r11, %rdx + 0x48, 0x89, 0xd6, //0x00003886 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00003889 notq %rsi + 0x4c, 0x21, 0xe6, //0x0000388c andq %r12, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000388f movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00003899 andq %rdi, %rsi + 0x45, 0x31, 0xdb, //0x0000389c xorl %r11d, %r11d + 0x48, 0x01, 0xce, //0x0000389f addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc3, //0x000038a2 setb %r11b + 0x48, 0x01, 0xf6, //0x000038a6 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000038a9 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x000038b3 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x000038b6 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x000038b9 notq %rsi + 0x49, 0x21, 0xf7, //0x000038bc andq %rsi, %r15 + 0x4d, 0x85, 0xff, //0x000038bf testq %r15, %r15 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x000038c2 je LBB0_669 + //0x000038c8 LBB0_678 + 0x49, 0x0f, 0xbc, 0xc7, //0x000038c8 bsfq %r15, %rax + 0x48, 0x29, 0xd8, //0x000038cc subq %rbx, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x000038cf movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000038d3 movq $-96(%rbp), %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000038d7 movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0xc8, 0x20, 0x00, 0x00, //0x000038e1 leaq $8392(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4c, 0x8b, 0x7d, 0xb0, //0x000038e8 movq $-80(%rbp), %r15 + 0x48, 0x85, 0xc0, //0x000038ec testq %rax, %rax + 0x0f, 0x88, 0x2f, 0x10, 0x00, 0x00, //0x000038ef js LBB0_822 + //0x000038f5 LBB0_679 + 0x48, 0x8b, 0x4d, 0xc8, //0x000038f5 movq $-56(%rbp), %rcx + 0x48, 0x89, 0x01, //0x000038f9 movq %rax, (%rcx) + 0x4d, 0x85, 0xc0, //0x000038fc testq %r8, %r8 + 0x0f, 0x8e, 0x48, 0x10, 0x00, 0x00, //0x000038ff jle LBB0_618 + 0x49, 0x8b, 0x02, //0x00003905 movq (%r10), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00003908 cmpq $4095, %rax + 0x0f, 0x8f, 0x04, 0x10, 0x00, 0x00, //0x0000390e jg LBB0_980 + 0x48, 0x8d, 0x48, 0x01, //0x00003914 leaq $1(%rax), %rcx + 0x49, 0x89, 0x0a, //0x00003918 movq %rcx, (%r10) + 0x49, 0xc7, 0x44, 0xc2, 0x08, 0x04, 0x00, 0x00, 0x00, //0x0000391b movq $4, $8(%r10,%rax,8) + 0xe9, 0x87, 0xf7, 0xff, 0xff, //0x00003924 jmp LBB0_560 + //0x00003929 LBB0_682 + 0x41, 0x89, 0xcc, //0x00003929 movl %ecx, %r12d + 0x4c, 0x03, 0x65, 0xd0, //0x0000392c addq $-48(%rbp), %r12 + 0x4d, 0x01, 0xc4, //0x00003930 addq %r8, %r12 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00003933 jmp LBB0_684 + //0x00003938 LBB0_683 + 0x48, 0x01, 0xd6, //0x00003938 addq %rdx, %rsi + 0x49, 0x89, 0xf4, //0x0000393b movq %rsi, %r12 + //0x0000393e LBB0_684 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000393e movq $-1, %r8 + 0x4d, 0x85, 0xc9, //0x00003945 testq %r9, %r9 + 0x0f, 0x84, 0x93, 0x1a, 0x00, 0x00, //0x00003948 je LBB0_973 + 0x4d, 0x85, 0xf6, //0x0000394e testq %r14, %r14 + 0x48, 0x8b, 0x7d, 0xb8, //0x00003951 movq $-72(%rbp), %rdi + 0x0f, 0x84, 0x0f, 0x10, 0x00, 0x00, //0x00003955 je LBB0_901 + 0x4d, 0x85, 0xff, //0x0000395b testq %r15, %r15 + 0x0f, 0x84, 0x06, 0x10, 0x00, 0x00, //0x0000395e je LBB0_901 + 0x4c, 0x2b, 0x65, 0xd0, //0x00003964 subq $-48(%rbp), %r12 + 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003968 leaq $-1(%r12), %rcx + 0x49, 0x39, 0xc9, //0x0000396d cmpq %rcx, %r9 + 0x0f, 0x84, 0xf2, 0xf6, 0xff, 0xff, //0x00003970 je LBB0_557 + 0x49, 0x39, 0xce, //0x00003976 cmpq %rcx, %r14 + 0x0f, 0x84, 0xe9, 0xf6, 0xff, 0xff, //0x00003979 je LBB0_557 + 0x49, 0x39, 0xcf, //0x0000397f cmpq %rcx, %r15 + 0x0f, 0x84, 0xe0, 0xf6, 0xff, 0xff, //0x00003982 je LBB0_557 + 0x4d, 0x85, 0xf6, //0x00003988 testq %r14, %r14 + 0x0f, 0x8e, 0x18, 0x00, 0x00, 0x00, //0x0000398b jle LBB0_693 + 0x49, 0x8d, 0x4e, 0xff, //0x00003991 leaq $-1(%r14), %rcx + 0x49, 0x39, 0xcf, //0x00003995 cmpq %rcx, %r15 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00003998 je LBB0_693 + 0x49, 0xf7, 0xd6, //0x0000399e notq %r14 + 0x4d, 0x89, 0xf0, //0x000039a1 movq %r14, %r8 + 0xe9, 0xc5, 0xf6, 0xff, 0xff, //0x000039a4 jmp LBB0_558 + //0x000039a9 LBB0_693 + 0x4c, 0x89, 0xc9, //0x000039a9 movq %r9, %rcx + 0x4c, 0x09, 0xf9, //0x000039ac orq %r15, %rcx + 0x0f, 0x99, 0xc1, //0x000039af setns %cl + 0x0f, 0x88, 0xe3, 0x04, 0x00, 0x00, //0x000039b2 js LBB0_766 + 0x4d, 0x39, 0xf9, //0x000039b8 cmpq %r15, %r9 + 0x0f, 0x8c, 0xda, 0x04, 0x00, 0x00, //0x000039bb jl LBB0_766 + 0x49, 0xf7, 0xd1, //0x000039c1 notq %r9 + 0x4d, 0x89, 0xc8, //0x000039c4 movq %r9, %r8 + 0xe9, 0xa2, 0xf6, 0xff, 0xff, //0x000039c7 jmp LBB0_558 + //0x000039cc LBB0_696 + 0x48, 0x8b, 0x45, 0xc8, //0x000039cc movq $-56(%rbp), %rax + 0x4c, 0x8b, 0x00, //0x000039d0 movq (%rax), %r8 + 0x49, 0x8b, 0x01, //0x000039d3 movq (%r9), %rax + 0x49, 0x89, 0xc6, //0x000039d6 movq %rax, %r14 + 0x4d, 0x29, 0xc6, //0x000039d9 subq %r8, %r14 + 0x0f, 0x84, 0x4d, 0x1b, 0x00, 0x00, //0x000039dc je LBB0_998 + 0x48, 0x89, 0x45, 0xb8, //0x000039e2 movq %rax, $-72(%rbp) + 0x4c, 0x89, 0x7d, 0xb0, //0x000039e6 movq %r15, $-80(%rbp) + 0x49, 0x83, 0xfe, 0x40, //0x000039ea cmpq $64, %r14 + 0x0f, 0x82, 0x58, 0x08, 0x00, 0x00, //0x000039ee jb LBB0_803 + 0x4c, 0x89, 0xc3, //0x000039f4 movq %r8, %rbx + 0x48, 0xf7, 0xd3, //0x000039f7 notq %rbx + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x000039fa movq $-1, $-48(%rbp) + 0x4c, 0x89, 0xc0, //0x00003a02 movq %r8, %rax + 0x45, 0x31, 0xdb, //0x00003a05 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003a08 .p2align 4, 0x90 + //0x00003a10 LBB0_699 + 0xf3, 0x41, 0x0f, 0x6f, 0x54, 0x05, 0x00, //0x00003a10 movdqu (%r13,%rax), %xmm2 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x05, 0x10, //0x00003a17 movdqu $16(%r13,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x05, 0x20, //0x00003a1e movdqu $32(%r13,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x05, 0x30, //0x00003a25 movdqu $48(%r13,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfa, //0x00003a2c movdqa %xmm2, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00003a30 pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xff, //0x00003a34 pmovmskb %xmm7, %r15d + 0x66, 0x0f, 0x6f, 0xfc, //0x00003a39 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00003a3d pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x00003a41 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x00003a45 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00003a49 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00003a4d pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x6f, 0xfe, //0x00003a51 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00003a55 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00003a59 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x74, 0xd1, //0x00003a5d pcmpeqb %xmm1, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xe2, //0x00003a61 pmovmskb %xmm2, %r12d + 0x66, 0x0f, 0x74, 0xe1, //0x00003a66 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00003a6a pmovmskb %xmm4, %edi + 0x66, 0x0f, 0x74, 0xe9, //0x00003a6e pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00003a72 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x74, 0xf1, //0x00003a77 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xd6, //0x00003a7b pmovmskb %xmm6, %r10d + 0x48, 0xc1, 0xe6, 0x30, //0x00003a80 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x00003a84 shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00003a88 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00003a8b shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00003a8f orq %rdx, %rcx + 0x49, 0x09, 0xcf, //0x00003a92 orq %rcx, %r15 + 0x49, 0xc1, 0xe2, 0x30, //0x00003a95 shlq $48, %r10 + 0x49, 0xc1, 0xe1, 0x20, //0x00003a99 shlq $32, %r9 + 0x4d, 0x09, 0xd1, //0x00003a9d orq %r10, %r9 + 0x48, 0xc1, 0xe7, 0x10, //0x00003aa0 shlq $16, %rdi + 0x4c, 0x09, 0xcf, //0x00003aa4 orq %r9, %rdi + 0x49, 0x09, 0xfc, //0x00003aa7 orq %rdi, %r12 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00003aaa jne LBB0_708 + 0x4d, 0x85, 0xdb, //0x00003ab0 testq %r11, %r11 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00003ab3 jne LBB0_710 + 0x45, 0x31, 0xdb, //0x00003ab9 xorl %r11d, %r11d + 0x4d, 0x85, 0xff, //0x00003abc testq %r15, %r15 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00003abf jne LBB0_711 + //0x00003ac5 LBB0_702 + 0x49, 0x83, 0xc6, 0xc0, //0x00003ac5 addq $-64, %r14 + 0x48, 0x83, 0xc3, 0xc0, //0x00003ac9 addq $-64, %rbx + 0x48, 0x83, 0xc0, 0x40, //0x00003acd addq $64, %rax + 0x49, 0x83, 0xfe, 0x3f, //0x00003ad1 cmpq $63, %r14 + 0x0f, 0x87, 0x35, 0xff, 0xff, 0xff, //0x00003ad5 ja LBB0_699 + 0xe9, 0x2c, 0x06, 0x00, 0x00, //0x00003adb jmp LBB0_703 + //0x00003ae0 LBB0_708 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x00003ae0 cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003ae5 jne LBB0_710 + 0x49, 0x0f, 0xbc, 0xcc, //0x00003aeb bsfq %r12, %rcx + 0x48, 0x01, 0xc1, //0x00003aef addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x00003af2 movq %rcx, $-48(%rbp) + //0x00003af6 LBB0_710 + 0x4c, 0x89, 0xd9, //0x00003af6 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00003af9 notq %rcx + 0x4c, 0x21, 0xe1, //0x00003afc andq %r12, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00003aff leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xda, //0x00003b03 orq %r11, %rdx + 0x48, 0x89, 0xd6, //0x00003b06 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00003b09 notq %rsi + 0x4c, 0x21, 0xe6, //0x00003b0c andq %r12, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003b0f movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00003b19 andq %rdi, %rsi + 0x45, 0x31, 0xdb, //0x00003b1c xorl %r11d, %r11d + 0x48, 0x01, 0xce, //0x00003b1f addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc3, //0x00003b22 setb %r11b + 0x48, 0x01, 0xf6, //0x00003b26 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003b29 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00003b33 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00003b36 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00003b39 notq %rsi + 0x49, 0x21, 0xf7, //0x00003b3c andq %rsi, %r15 + 0x4d, 0x85, 0xff, //0x00003b3f testq %r15, %r15 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00003b42 je LBB0_702 + //0x00003b48 LBB0_711 + 0x49, 0x0f, 0xbc, 0xc7, //0x00003b48 bsfq %r15, %rax + 0x48, 0x29, 0xd8, //0x00003b4c subq %rbx, %rax + //0x00003b4f LBB0_712 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00003b4f movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00003b53 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00003b57 movq $-80(%rbp), %r15 + 0x48, 0x85, 0xc0, //0x00003b5b testq %rax, %rax + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003b5e movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0x41, 0x1e, 0x00, 0x00, //0x00003b68 leaq $7745(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x89, 0x60, 0xfb, 0xff, 0xff, //0x00003b6f jns LBB0_617 + 0xe9, 0xaa, 0x0d, 0x00, 0x00, //0x00003b75 jmp LBB0_822 + //0x00003b7a LBB0_713 + 0x49, 0x8b, 0x39, //0x00003b7a movq (%r9), %rdi + 0x48, 0x8b, 0x45, 0xc8, //0x00003b7d movq $-56(%rbp), %rax + 0x48, 0x8b, 0x00, //0x00003b81 movq (%rax), %rax + 0x48, 0x29, 0xc7, //0x00003b84 subq %rax, %rdi + 0x0f, 0x84, 0x7e, 0x18, 0x00, 0x00, //0x00003b87 je LBB0_977 + 0x4c, 0x89, 0x7d, 0xb0, //0x00003b8d movq %r15, $-80(%rbp) + 0x4e, 0x8d, 0x14, 0x28, //0x00003b91 leaq (%rax,%r13), %r10 + 0x41, 0x80, 0x3a, 0x30, //0x00003b95 cmpb $48, (%r10) + 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00003b99 jne LBB0_718 + 0x41, 0xbf, 0x01, 0x00, 0x00, 0x00, //0x00003b9f movl $1, %r15d + 0x48, 0x83, 0xff, 0x01, //0x00003ba5 cmpq $1, %rdi + 0x0f, 0x84, 0x91, 0x03, 0x00, 0x00, //0x00003ba9 je LBB0_780 + 0x41, 0x8a, 0x4a, 0x01, //0x00003baf movb $1(%r10), %cl + 0x80, 0xc1, 0xd2, //0x00003bb3 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x00003bb6 cmpb $55, %cl + 0x0f, 0x87, 0x81, 0x03, 0x00, 0x00, //0x00003bb9 ja LBB0_780 + 0x0f, 0xb6, 0xc9, //0x00003bbf movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00003bc2 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00003bcc btq %rcx, %rdx + 0x0f, 0x83, 0x6a, 0x03, 0x00, 0x00, //0x00003bd0 jae LBB0_780 + //0x00003bd6 LBB0_718 + 0x48, 0x83, 0xff, 0x10, //0x00003bd6 cmpq $16, %rdi + 0x0f, 0x82, 0x8a, 0x06, 0x00, 0x00, //0x00003bda jb LBB0_804 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003be0 movq $-1, %r9 + 0x45, 0x31, 0xff, //0x00003be7 xorl %r15d, %r15d + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003bea movq $-1, %r14 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003bf1 movq $-1, %r8 + 0x49, 0x89, 0xfb, //0x00003bf8 movq %rdi, %r11 + //0x00003bfb LBB0_720 + 0xf3, 0x43, 0x0f, 0x6f, 0x14, 0x3a, //0x00003bfb movdqu (%r10,%r15), %xmm2 + 0x66, 0x0f, 0x6f, 0xe2, //0x00003c01 movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x00003c05 pcmpgtb %xmm8, %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00003c0a movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x64, 0xea, //0x00003c0e pcmpgtb %xmm2, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x00003c12 pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe2, //0x00003c16 movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x00003c1a pcmpeqb %xmm9, %xmm4 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003c1f movdqa %xmm2, %xmm6 + 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x00003c23 pcmpeqb %xmm10, %xmm6 + 0x66, 0x0f, 0xeb, 0xf4, //0x00003c28 por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe2, //0x00003c2c movdqa %xmm2, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00003c30 pand %xmm11, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xd4, //0x00003c35 pcmpeqb %xmm12, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00003c3a pcmpeqb %xmm13, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00003c3f pmovmskb %xmm4, %edx + 0x66, 0x0f, 0xeb, 0xe2, //0x00003c43 por %xmm2, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x00003c47 por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00003c4b por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xda, //0x00003c4f pmovmskb %xmm2, %ebx + 0x66, 0x44, 0x0f, 0xd7, 0xe6, //0x00003c53 pmovmskb %xmm6, %r12d + 0x66, 0x0f, 0xd7, 0xcd, //0x00003c58 pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00003c5c notl %ecx + 0x0f, 0xbc, 0xc9, //0x00003c5e bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00003c61 cmpl $16, %ecx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003c64 je LBB0_722 + 0xbe, 0xff, 0xff, 0xff, 0xff, //0x00003c6a movl $-1, %esi + 0xd3, 0xe6, //0x00003c6f shll %cl, %esi + 0xf7, 0xd6, //0x00003c71 notl %esi + 0x21, 0xf3, //0x00003c73 andl %esi, %ebx + 0x21, 0xf2, //0x00003c75 andl %esi, %edx + 0x44, 0x21, 0xe6, //0x00003c77 andl %r12d, %esi + 0x41, 0x89, 0xf4, //0x00003c7a movl %esi, %r12d + //0x00003c7d LBB0_722 + 0x8d, 0x73, 0xff, //0x00003c7d leal $-1(%rbx), %esi + 0x21, 0xde, //0x00003c80 andl %ebx, %esi + 0x0f, 0x85, 0x7c, 0x04, 0x00, 0x00, //0x00003c82 jne LBB0_793 + 0x8d, 0x72, 0xff, //0x00003c88 leal $-1(%rdx), %esi + 0x21, 0xd6, //0x00003c8b andl %edx, %esi + 0x0f, 0x85, 0x71, 0x04, 0x00, 0x00, //0x00003c8d jne LBB0_793 + 0x41, 0x8d, 0x74, 0x24, 0xff, //0x00003c93 leal $-1(%r12), %esi + 0x44, 0x21, 0xe6, //0x00003c98 andl %r12d, %esi + 0x0f, 0x85, 0x63, 0x04, 0x00, 0x00, //0x00003c9b jne LBB0_793 + 0x85, 0xdb, //0x00003ca1 testl %ebx, %ebx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003ca3 je LBB0_728 + 0x0f, 0xbc, 0xdb, //0x00003ca9 bsfl %ebx, %ebx + 0x49, 0x83, 0xf8, 0xff, //0x00003cac cmpq $-1, %r8 + 0x0f, 0x85, 0x5f, 0x05, 0x00, 0x00, //0x00003cb0 jne LBB0_799 + 0x4c, 0x01, 0xfb, //0x00003cb6 addq %r15, %rbx + 0x49, 0x89, 0xd8, //0x00003cb9 movq %rbx, %r8 + //0x00003cbc LBB0_728 + 0x85, 0xd2, //0x00003cbc testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00003cbe je LBB0_731 + 0x0f, 0xbc, 0xd2, //0x00003cc4 bsfl %edx, %edx + 0x49, 0x83, 0xfe, 0xff, //0x00003cc7 cmpq $-1, %r14 + 0x0f, 0x85, 0xeb, 0x04, 0x00, 0x00, //0x00003ccb jne LBB0_795 + 0x4c, 0x01, 0xfa, //0x00003cd1 addq %r15, %rdx + 0x49, 0x89, 0xd6, //0x00003cd4 movq %rdx, %r14 + //0x00003cd7 LBB0_731 + 0x45, 0x85, 0xe4, //0x00003cd7 testl %r12d, %r12d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00003cda je LBB0_734 + 0x41, 0x0f, 0xbc, 0xd4, //0x00003ce0 bsfl %r12d, %edx + 0x49, 0x83, 0xf9, 0xff, //0x00003ce4 cmpq $-1, %r9 + 0x0f, 0x85, 0xce, 0x04, 0x00, 0x00, //0x00003ce8 jne LBB0_795 + 0x4c, 0x01, 0xfa, //0x00003cee addq %r15, %rdx + 0x49, 0x89, 0xd1, //0x00003cf1 movq %rdx, %r9 + //0x00003cf4 LBB0_734 + 0x83, 0xf9, 0x10, //0x00003cf4 cmpl $16, %ecx + 0x0f, 0x85, 0xba, 0x01, 0x00, 0x00, //0x00003cf7 jne LBB0_767 + 0x49, 0x83, 0xc3, 0xf0, //0x00003cfd addq $-16, %r11 + 0x49, 0x83, 0xc7, 0x10, //0x00003d01 addq $16, %r15 + 0x49, 0x83, 0xfb, 0x0f, //0x00003d05 cmpq $15, %r11 + 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x00003d09 ja LBB0_720 + 0x4b, 0x8d, 0x34, 0x3a, //0x00003d0f leaq (%r10,%r15), %rsi + 0x49, 0x89, 0xf4, //0x00003d13 movq %rsi, %r12 + 0x4c, 0x39, 0xff, //0x00003d16 cmpq %r15, %rdi + 0x0f, 0x84, 0xac, 0x01, 0x00, 0x00, //0x00003d19 je LBB0_769 + //0x00003d1f LBB0_737 + 0x4e, 0x8d, 0x24, 0x1e, //0x00003d1f leaq (%rsi,%r11), %r12 + 0x49, 0x89, 0xf7, //0x00003d23 movq %rsi, %r15 + 0x4d, 0x29, 0xd7, //0x00003d26 subq %r10, %r15 + 0x31, 0xc9, //0x00003d29 xorl %ecx, %ecx + 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00003d2b jmp LBB0_741 + //0x00003d30 LBB0_738 + 0x49, 0x83, 0xf9, 0xff, //0x00003d30 cmpq $-1, %r9 + 0x0f, 0x85, 0x6f, 0x04, 0x00, 0x00, //0x00003d34 jne LBB0_794 + 0x4d, 0x8d, 0x0c, 0x0f, //0x00003d3a leaq (%r15,%rcx), %r9 + 0x90, 0x90, //0x00003d3e .p2align 4, 0x90 + //0x00003d40 LBB0_740 + 0x48, 0x83, 0xc1, 0x01, //0x00003d40 addq $1, %rcx + 0x49, 0x39, 0xcb, //0x00003d44 cmpq %rcx, %r11 + 0x0f, 0x84, 0x7e, 0x01, 0x00, 0x00, //0x00003d47 je LBB0_769 + //0x00003d4d LBB0_741 + 0x0f, 0xbe, 0x14, 0x0e, //0x00003d4d movsbl (%rsi,%rcx), %edx + 0x8d, 0x5a, 0xd0, //0x00003d51 leal $-48(%rdx), %ebx + 0x83, 0xfb, 0x0a, //0x00003d54 cmpl $10, %ebx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00003d57 jb LBB0_740 + 0x8d, 0x5a, 0xd5, //0x00003d5d leal $-43(%rdx), %ebx + 0x83, 0xfb, 0x1a, //0x00003d60 cmpl $26, %ebx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00003d63 ja LBB0_746 + 0x48, 0x8d, 0x3d, 0x48, 0x1e, 0x00, 0x00, //0x00003d69 leaq $7752(%rip), %rdi /* LJTI0_4+0(%rip) */ + 0x48, 0x63, 0x14, 0x9f, //0x00003d70 movslq (%rdi,%rbx,4), %rdx + 0x48, 0x01, 0xfa, //0x00003d74 addq %rdi, %rdx + 0xff, 0xe2, //0x00003d77 jmpq *%rdx + //0x00003d79 LBB0_744 + 0x49, 0x83, 0xf8, 0xff, //0x00003d79 cmpq $-1, %r8 + 0x0f, 0x85, 0x26, 0x04, 0x00, 0x00, //0x00003d7d jne LBB0_794 + 0x4d, 0x8d, 0x04, 0x0f, //0x00003d83 leaq (%r15,%rcx), %r8 + 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x00003d87 jmp LBB0_740 + //0x00003d8c LBB0_746 + 0x83, 0xfa, 0x65, //0x00003d8c cmpl $101, %edx + 0x0f, 0x85, 0x30, 0x01, 0x00, 0x00, //0x00003d8f jne LBB0_768 + //0x00003d95 LBB0_747 + 0x49, 0x83, 0xfe, 0xff, //0x00003d95 cmpq $-1, %r14 + 0x0f, 0x85, 0x0a, 0x04, 0x00, 0x00, //0x00003d99 jne LBB0_794 + 0x4d, 0x8d, 0x34, 0x0f, //0x00003d9f leaq (%r15,%rcx), %r14 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00003da3 jmp LBB0_740 + //0x00003da8 LBB0_749 + 0x49, 0x8b, 0x02, //0x00003da8 movq (%r10), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00003dab cmpq $4095, %rax + 0x0f, 0x8f, 0x61, 0x0b, 0x00, 0x00, //0x00003db1 jg LBB0_980 + 0x48, 0x8d, 0x48, 0x01, //0x00003db7 leaq $1(%rax), %rcx + 0x49, 0x89, 0x0a, //0x00003dbb movq %rcx, (%r10) + 0x49, 0xc7, 0x44, 0xc2, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00003dbe movq $5, $8(%r10,%rax,8) + 0xe9, 0xe4, 0xf2, 0xff, 0xff, //0x00003dc7 jmp LBB0_560 + //0x00003dcc LBB0_751 + 0x48, 0x8b, 0x7d, 0xc8, //0x00003dcc movq $-56(%rbp), %rdi + 0x48, 0x8b, 0x0f, //0x00003dd0 movq (%rdi), %rcx + 0x49, 0x8b, 0x11, //0x00003dd3 movq (%r9), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00003dd6 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00003dda cmpq %rsi, %rcx + 0x0f, 0x87, 0xa0, 0x15, 0x00, 0x00, //0x00003ddd ja LBB0_979 + 0x41, 0x8b, 0x54, 0x0d, 0x00, //0x00003de3 movl (%r13,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00003de8 cmpl $1702063201, %edx + 0x0f, 0x85, 0x30, 0x16, 0x00, 0x00, //0x00003dee jne LBB0_981 + 0x48, 0x8d, 0x41, 0x04, //0x00003df4 leaq $4(%rcx), %rax + 0x48, 0x89, 0x07, //0x00003df8 movq %rax, (%rdi) + 0x48, 0x85, 0xc9, //0x00003dfb testq %rcx, %rcx + 0x0f, 0x8f, 0xac, 0xf2, 0xff, 0xff, //0x00003dfe jg LBB0_560 + 0xe9, 0x11, 0x17, 0x00, 0x00, //0x00003e04 jmp LBB0_754 + //0x00003e09 LBB0_755 + 0x48, 0x8b, 0x7d, 0xc8, //0x00003e09 movq $-56(%rbp), %rdi + 0x48, 0x8b, 0x0f, //0x00003e0d movq (%rdi), %rcx + 0x49, 0x8b, 0x11, //0x00003e10 movq (%r9), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00003e13 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00003e17 cmpq %rsi, %rcx + 0x0f, 0x87, 0x63, 0x15, 0x00, 0x00, //0x00003e1a ja LBB0_979 + 0x48, 0x8d, 0x41, 0xff, //0x00003e20 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0d, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00003e24 cmpl $1819047278, $-1(%r13,%rcx) + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00003e2d je LBB0_763 + 0xe9, 0x45, 0x16, 0x00, 0x00, //0x00003e33 jmp LBB0_757 + //0x00003e38 LBB0_761 + 0x48, 0x8b, 0x7d, 0xc8, //0x00003e38 movq $-56(%rbp), %rdi + 0x48, 0x8b, 0x0f, //0x00003e3c movq (%rdi), %rcx + 0x49, 0x8b, 0x11, //0x00003e3f movq (%r9), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00003e42 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00003e46 cmpq %rsi, %rcx + 0x0f, 0x87, 0x34, 0x15, 0x00, 0x00, //0x00003e49 ja LBB0_979 + 0x48, 0x8d, 0x41, 0xff, //0x00003e4f leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0d, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00003e53 cmpl $1702195828, $-1(%r13,%rcx) + 0x0f, 0x85, 0x64, 0x16, 0x00, 0x00, //0x00003e5c jne LBB0_987 + //0x00003e62 LBB0_763 + 0x48, 0x8d, 0x51, 0x03, //0x00003e62 leaq $3(%rcx), %rdx + 0x48, 0x89, 0x17, //0x00003e66 movq %rdx, (%rdi) + 0x48, 0x85, 0xc9, //0x00003e69 testq %rcx, %rcx + 0x0f, 0x8f, 0x3e, 0xf2, 0xff, 0xff, //0x00003e6c jg LBB0_560 + 0xe9, 0xf2, 0x08, 0x00, 0x00, //0x00003e72 jmp LBB0_874 + //0x00003e77 LBB0_764 + 0x49, 0x8b, 0x02, //0x00003e77 movq (%r10), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00003e7a cmpq $4095, %rax + 0x0f, 0x8f, 0x92, 0x0a, 0x00, 0x00, //0x00003e80 jg LBB0_980 + 0x48, 0x8d, 0x48, 0x01, //0x00003e86 leaq $1(%rax), %rcx + 0x49, 0x89, 0x0a, //0x00003e8a movq %rcx, (%r10) + 0x49, 0xc7, 0x44, 0xc2, 0x08, 0x06, 0x00, 0x00, 0x00, //0x00003e8d movq $6, $8(%r10,%rax,8) + 0xe9, 0x15, 0xf2, 0xff, 0xff, //0x00003e96 jmp LBB0_560 + //0x00003e9b LBB0_766 + 0x49, 0x8d, 0x57, 0xff, //0x00003e9b leaq $-1(%r15), %rdx + 0x49, 0x39, 0xd1, //0x00003e9f cmpq %rdx, %r9 + 0x49, 0xf7, 0xd7, //0x00003ea2 notq %r15 + 0x4d, 0x0f, 0x45, 0xfc, //0x00003ea5 cmovneq %r12, %r15 + 0x84, 0xc9, //0x00003ea9 testb %cl, %cl + 0x4d, 0x0f, 0x44, 0xfc, //0x00003eab cmoveq %r12, %r15 + 0x4d, 0x89, 0xf8, //0x00003eaf movq %r15, %r8 + 0xe9, 0xb7, 0xf1, 0xff, 0xff, //0x00003eb2 jmp LBB0_558 + //0x00003eb7 LBB0_767 + 0x41, 0x89, 0xcc, //0x00003eb7 movl %ecx, %r12d + 0x4d, 0x01, 0xd4, //0x00003eba addq %r10, %r12 + 0x4d, 0x01, 0xfc, //0x00003ebd addq %r15, %r12 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00003ec0 jmp LBB0_769 + //0x00003ec5 LBB0_768 + 0x48, 0x01, 0xce, //0x00003ec5 addq %rcx, %rsi + 0x49, 0x89, 0xf4, //0x00003ec8 movq %rsi, %r12 + //0x00003ecb LBB0_769 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00003ecb movq $-1, %r15 + 0x4d, 0x85, 0xc0, //0x00003ed2 testq %r8, %r8 + 0x0f, 0x84, 0x37, 0x15, 0x00, 0x00, //0x00003ed5 je LBB0_978 + 0x4d, 0x85, 0xc9, //0x00003edb testq %r9, %r9 + 0x0f, 0x84, 0x2e, 0x15, 0x00, 0x00, //0x00003ede je LBB0_978 + 0x4d, 0x85, 0xf6, //0x00003ee4 testq %r14, %r14 + 0x0f, 0x84, 0x25, 0x15, 0x00, 0x00, //0x00003ee7 je LBB0_978 + 0x4d, 0x29, 0xd4, //0x00003eed subq %r10, %r12 + 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00003ef0 leaq $-1(%r12), %rcx + 0x49, 0x39, 0xc8, //0x00003ef5 cmpq %rcx, %r8 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00003ef8 je LBB0_778 + 0x49, 0x39, 0xc9, //0x00003efe cmpq %rcx, %r9 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00003f01 je LBB0_778 + 0x49, 0x39, 0xce, //0x00003f07 cmpq %rcx, %r14 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00003f0a je LBB0_778 + 0x4d, 0x85, 0xc9, //0x00003f10 testq %r9, %r9 + 0x0f, 0x8e, 0xdf, 0x00, 0x00, 0x00, //0x00003f13 jle LBB0_782 + 0x49, 0x8d, 0x49, 0xff, //0x00003f19 leaq $-1(%r9), %rcx + 0x49, 0x39, 0xce, //0x00003f1d cmpq %rcx, %r14 + 0x0f, 0x84, 0xd2, 0x00, 0x00, 0x00, //0x00003f20 je LBB0_782 + 0x49, 0xf7, 0xd1, //0x00003f26 notq %r9 + 0x4d, 0x89, 0xcf, //0x00003f29 movq %r9, %r15 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00003f2c jmp LBB0_779 + //0x00003f31 LBB0_778 + 0x49, 0xf7, 0xdc, //0x00003f31 negq %r12 + 0x4d, 0x89, 0xe7, //0x00003f34 movq %r12, %r15 + //0x00003f37 LBB0_779 + 0x4d, 0x85, 0xff, //0x00003f37 testq %r15, %r15 + 0x0f, 0x88, 0xd2, 0x14, 0x00, 0x00, //0x00003f3a js LBB0_978 + //0x00003f40 LBB0_780 + 0x49, 0x01, 0xc7, //0x00003f40 addq %rax, %r15 + 0x48, 0x8b, 0x4d, 0xc8, //0x00003f43 movq $-56(%rbp), %rcx + 0x4c, 0x89, 0x39, //0x00003f47 movq %r15, (%rcx) + 0x48, 0x85, 0xc0, //0x00003f4a testq %rax, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x00003f4d movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00003f51 movq $-96(%rbp), %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003f55 movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0x4a, 0x1a, 0x00, 0x00, //0x00003f5f leaq $6730(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x4c, 0x8b, 0x7d, 0xb0, //0x00003f66 movq $-80(%rbp), %r15 + 0x0f, 0x8f, 0x40, 0xf1, 0xff, 0xff, //0x00003f6a jg LBB0_560 + 0xe9, 0xb1, 0x15, 0x00, 0x00, //0x00003f70 jmp LBB0_781 + //0x00003f75 LBB0_608 + 0x4c, 0x01, 0xe8, //0x00003f75 addq %r13, %rax + 0x49, 0x83, 0xfe, 0x20, //0x00003f78 cmpq $32, %r14 + 0x0f, 0x82, 0x5a, 0x02, 0x00, 0x00, //0x00003f7c jb LBB0_797 + //0x00003f82 LBB0_609 + 0xf3, 0x0f, 0x6f, 0x10, //0x00003f82 movdqu (%rax), %xmm2 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00003f86 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xea, //0x00003f8b movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00003f8f pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00003f93 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00003f97 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00003f9b pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00003f9f pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x74, 0xd1, //0x00003fa3 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00003fa7 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x74, 0xe1, //0x00003fab pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00003faf pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe6, 0x10, //0x00003fb3 shlq $16, %rsi + 0x48, 0x09, 0xf1, //0x00003fb7 orq %rsi, %rcx + 0x48, 0xc1, 0xe7, 0x10, //0x00003fba shlq $16, %rdi + 0x48, 0x09, 0xfa, //0x00003fbe orq %rdi, %rdx + 0x4c, 0x8b, 0x7d, 0xb0, //0x00003fc1 movq $-80(%rbp), %r15 + 0x0f, 0x85, 0xbf, 0x02, 0x00, 0x00, //0x00003fc5 jne LBB0_805 + 0x4d, 0x85, 0xdb, //0x00003fcb testq %r11, %r11 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00003fce movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00003fd2 movq $-96(%rbp), %r10 + 0x0f, 0x85, 0xca, 0x02, 0x00, 0x00, //0x00003fd6 jne LBB0_807 + 0x45, 0x31, 0xdb, //0x00003fdc xorl %r11d, %r11d + 0x48, 0x85, 0xc9, //0x00003fdf testq %rcx, %rcx + 0x0f, 0x84, 0x02, 0x03, 0x00, 0x00, //0x00003fe2 je LBB0_808 + //0x00003fe8 LBB0_612 + 0x48, 0x0f, 0xbc, 0xc9, //0x00003fe8 bsfq %rcx, %rcx + 0x48, 0x03, 0x45, 0x98, //0x00003fec addq $-104(%rbp), %rax + 0x48, 0x01, 0xc8, //0x00003ff0 addq %rcx, %rax + 0xe9, 0xa4, 0x03, 0x00, 0x00, //0x00003ff3 jmp LBB0_821 + //0x00003ff8 LBB0_782 + 0x4c, 0x89, 0xc1, //0x00003ff8 movq %r8, %rcx + 0x4c, 0x09, 0xf1, //0x00003ffb orq %r14, %rcx + 0x0f, 0x99, 0xc1, //0x00003ffe setns %cl + 0x0f, 0x88, 0xb9, 0x00, 0x00, 0x00, //0x00004001 js LBB0_787 + 0x4d, 0x39, 0xf0, //0x00004007 cmpq %r14, %r8 + 0x0f, 0x8c, 0xb0, 0x00, 0x00, 0x00, //0x0000400a jl LBB0_787 + 0x49, 0xf7, 0xd0, //0x00004010 notq %r8 + 0x4d, 0x89, 0xc7, //0x00004013 movq %r8, %r15 + 0xe9, 0x1c, 0xff, 0xff, 0xff, //0x00004016 jmp LBB0_779 + //0x0000401b LBB0_785 + 0x48, 0x8b, 0x8d, 0x40, 0xff, 0xff, 0xff, //0x0000401b movq $-192(%rbp), %rcx + 0x48, 0x8b, 0x7d, 0xb8, //0x00004022 movq $-72(%rbp), %rdi + 0x4c, 0x8d, 0x04, 0x39, //0x00004026 leaq (%rcx,%rdi), %r8 + 0x49, 0x29, 0xf0, //0x0000402a subq %rsi, %r8 + 0x49, 0x29, 0xd0, //0x0000402d subq %rdx, %r8 + 0xe9, 0x39, 0xf0, 0xff, 0xff, //0x00004030 jmp LBB0_558 + //0x00004035 LBB0_786 + 0x0f, 0xbc, 0xca, //0x00004035 bsfl %edx, %ecx + 0xe9, 0xb8, 0x00, 0x00, 0x00, //0x00004038 jmp LBB0_792 + //0x0000403d LBB0_670 + 0x4c, 0x01, 0xe8, //0x0000403d addq %r13, %rax + 0x49, 0x83, 0xfe, 0x20, //0x00004040 cmpq $32, %r14 + 0x0f, 0x82, 0xf1, 0x01, 0x00, 0x00, //0x00004044 jb LBB0_802 + //0x0000404a LBB0_671 + 0xf3, 0x0f, 0x6f, 0x10, //0x0000404a movdqu (%rax), %xmm2 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x0000404e movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xea, //0x00004053 movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00004057 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000405b pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000405f movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00004063 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00004067 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd1, //0x0000406b pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x0000406f pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00004073 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00004077 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x0000407b shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000407f orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00004082 shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00004086 orq %rdi, %rsi + 0x0f, 0x85, 0x49, 0x03, 0x00, 0x00, //0x00004089 jne LBB0_825 + 0x4d, 0x85, 0xdb, //0x0000408f testq %r11, %r11 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00004092 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00004096 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x0000409a movq $-80(%rbp), %r15 + 0x0f, 0x85, 0x50, 0x03, 0x00, 0x00, //0x0000409e jne LBB0_827 + 0x45, 0x31, 0xdb, //0x000040a4 xorl %r11d, %r11d + 0x48, 0x85, 0xd2, //0x000040a7 testq %rdx, %rdx + 0x0f, 0x84, 0x88, 0x03, 0x00, 0x00, //0x000040aa je LBB0_828 + //0x000040b0 LBB0_674 + 0x48, 0x0f, 0xbc, 0xca, //0x000040b0 bsfq %rdx, %rcx + 0x48, 0x03, 0x45, 0x98, //0x000040b4 addq $-104(%rbp), %rax + 0x48, 0x01, 0xc8, //0x000040b8 addq %rcx, %rax + 0xe9, 0x2a, 0x04, 0x00, 0x00, //0x000040bb jmp LBB0_841 + //0x000040c0 LBB0_787 + 0x49, 0x8d, 0x56, 0xff, //0x000040c0 leaq $-1(%r14), %rdx + 0x49, 0x39, 0xd0, //0x000040c4 cmpq %rdx, %r8 + 0x49, 0xf7, 0xd6, //0x000040c7 notq %r14 + 0x4d, 0x0f, 0x45, 0xf4, //0x000040ca cmovneq %r12, %r14 + 0x84, 0xc9, //0x000040ce testb %cl, %cl + 0x4d, 0x0f, 0x44, 0xf4, //0x000040d0 cmoveq %r12, %r14 + 0x4d, 0x89, 0xf7, //0x000040d4 movq %r14, %r15 + 0xe9, 0x5b, 0xfe, 0xff, 0xff, //0x000040d7 jmp LBB0_779 + //0x000040dc LBB0_788 + 0x41, 0x0f, 0xbc, 0xca, //0x000040dc bsfl %r10d, %ecx + 0xe9, 0x10, 0x00, 0x00, 0x00, //0x000040e0 jmp LBB0_792 + //0x000040e5 LBB0_789 + 0x89, 0xf9, //0x000040e5 movl %edi, %ecx + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000040e7 jmp LBB0_792 + //0x000040ec LBB0_790 + 0x89, 0xf1, //0x000040ec movl %esi, %ecx + 0xe9, 0x02, 0x00, 0x00, 0x00, //0x000040ee jmp LBB0_792 + //0x000040f3 LBB0_791 + 0x89, 0xd1, //0x000040f3 movl %edx, %ecx + //0x000040f5 LBB0_792 + 0x49, 0xf7, 0xd0, //0x000040f5 notq %r8 + 0x49, 0x29, 0xc8, //0x000040f8 subq %rcx, %r8 + 0x48, 0x8b, 0x7d, 0xb8, //0x000040fb movq $-72(%rbp), %rdi + 0xe9, 0x6a, 0xef, 0xff, 0xff, //0x000040ff jmp LBB0_558 + //0x00004104 LBB0_793 + 0x0f, 0xbc, 0xce, //0x00004104 bsfl %esi, %ecx + 0xe9, 0x0b, 0x01, 0x00, 0x00, //0x00004107 jmp LBB0_800 + //0x0000410c LBB0_703 + 0x4c, 0x01, 0xe8, //0x0000410c addq %r13, %rax + 0x49, 0x83, 0xfe, 0x20, //0x0000410f cmpq $32, %r14 + 0x0f, 0x82, 0x0e, 0x05, 0x00, 0x00, //0x00004113 jb LBB0_850 + //0x00004119 LBB0_704 + 0xf3, 0x0f, 0x6f, 0x10, //0x00004119 movdqu (%rax), %xmm2 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x0000411d movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xea, //0x00004122 movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00004126 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000412a pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000412e movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00004132 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00004136 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd1, //0x0000413a pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x0000413e pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00004142 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00004146 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x0000414a shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000414e orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00004151 shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00004155 orq %rdi, %rsi + 0x0f, 0x85, 0x61, 0x04, 0x00, 0x00, //0x00004158 jne LBB0_846 + 0x4d, 0x85, 0xdb, //0x0000415e testq %r11, %r11 + 0x4c, 0x8b, 0x4d, 0xc0, //0x00004161 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00004165 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00004169 movq $-80(%rbp), %r15 + 0x0f, 0x85, 0x68, 0x04, 0x00, 0x00, //0x0000416d jne LBB0_848 + 0x45, 0x31, 0xdb, //0x00004173 xorl %r11d, %r11d + 0x48, 0x85, 0xd2, //0x00004176 testq %rdx, %rdx + 0x0f, 0x84, 0xa0, 0x04, 0x00, 0x00, //0x00004179 je LBB0_849 + //0x0000417f LBB0_707 + 0x48, 0x0f, 0xbc, 0xca, //0x0000417f bsfq %rdx, %rcx + 0x48, 0x03, 0x45, 0x98, //0x00004183 addq $-104(%rbp), %rax + 0x48, 0x01, 0xc8, //0x00004187 addq %rcx, %rax + 0x48, 0x85, 0xc0, //0x0000418a testq %rax, %rax + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000418d movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0x12, 0x18, 0x00, 0x00, //0x00004197 leaq $6162(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x0f, 0x89, 0x31, 0xf5, 0xff, 0xff, //0x0000419e jns LBB0_617 + 0xe9, 0x7b, 0x07, 0x00, 0x00, //0x000041a4 jmp LBB0_822 + //0x000041a9 LBB0_794 + 0x48, 0x8b, 0x55, 0xa8, //0x000041a9 movq $-88(%rbp), %rdx + 0x4c, 0x8d, 0x3c, 0x02, //0x000041ad leaq (%rdx,%rax), %r15 + 0x49, 0x29, 0xf7, //0x000041b1 subq %rsi, %r15 + 0x49, 0x29, 0xcf, //0x000041b4 subq %rcx, %r15 + 0xe9, 0x7b, 0xfd, 0xff, 0xff, //0x000041b7 jmp LBB0_779 + //0x000041bc LBB0_795 + 0x89, 0xd1, //0x000041bc movl %edx, %ecx + 0xe9, 0x54, 0x00, 0x00, 0x00, //0x000041be jmp LBB0_800 + //0x000041c3 LBB0_796 + 0x4b, 0x8d, 0x04, 0x28, //0x000041c3 leaq (%r8,%r13), %rax + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x000041c7 movq $-1, $-48(%rbp) + 0x45, 0x31, 0xdb, //0x000041cf xorl %r11d, %r11d + 0x49, 0x83, 0xfe, 0x20, //0x000041d2 cmpq $32, %r14 + 0x0f, 0x83, 0xa6, 0xfd, 0xff, 0xff, //0x000041d6 jae LBB0_609 + //0x000041dc LBB0_797 + 0x4c, 0x8b, 0x4d, 0xc0, //0x000041dc movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000041e0 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x000041e4 movq $-80(%rbp), %r15 + 0xe9, 0x05, 0x01, 0x00, 0x00, //0x000041e8 jmp LBB0_809 + //0x000041ed LBB0_798 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000041ed movq $-1, %r9 + 0x48, 0x8b, 0x75, 0xd0, //0x000041f4 movq $-48(%rbp), %rsi + 0x4c, 0x89, 0xdb, //0x000041f8 movq %r11, %rbx + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000041fb movq $-1, %r15 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004202 movq $-1, %r14 + 0x4c, 0x8d, 0x15, 0x14, 0x1a, 0x00, 0x00, //0x00004209 leaq $6676(%rip), %r10 /* LJTI0_5+0(%rip) */ + 0xe9, 0x50, 0xf2, 0xff, 0xff, //0x00004210 jmp LBB0_647 + //0x00004215 LBB0_799 + 0x89, 0xd9, //0x00004215 movl %ebx, %ecx + //0x00004217 LBB0_800 + 0x49, 0xf7, 0xd7, //0x00004217 notq %r15 + 0x49, 0x29, 0xcf, //0x0000421a subq %rcx, %r15 + 0xe9, 0x15, 0xfd, 0xff, 0xff, //0x0000421d jmp LBB0_779 + //0x00004222 LBB0_801 + 0x4b, 0x8d, 0x04, 0x28, //0x00004222 leaq (%r8,%r13), %rax + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x00004226 movq $-1, $-48(%rbp) + 0x45, 0x31, 0xdb, //0x0000422e xorl %r11d, %r11d + 0x49, 0x83, 0xfe, 0x20, //0x00004231 cmpq $32, %r14 + 0x0f, 0x83, 0x0f, 0xfe, 0xff, 0xff, //0x00004235 jae LBB0_671 + //0x0000423b LBB0_802 + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000423b movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x0000423f movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00004243 movq $-80(%rbp), %r15 + 0xe9, 0xf4, 0x01, 0x00, 0x00, //0x00004247 jmp LBB0_829 + //0x0000424c LBB0_803 + 0x4b, 0x8d, 0x04, 0x28, //0x0000424c leaq (%r8,%r13), %rax + 0x48, 0xc7, 0x45, 0xd0, 0xff, 0xff, 0xff, 0xff, //0x00004250 movq $-1, $-48(%rbp) + 0x45, 0x31, 0xdb, //0x00004258 xorl %r11d, %r11d + 0x49, 0x83, 0xfe, 0x20, //0x0000425b cmpq $32, %r14 + 0x0f, 0x83, 0xb4, 0xfe, 0xff, 0xff, //0x0000425f jae LBB0_704 + 0xe9, 0xbd, 0x03, 0x00, 0x00, //0x00004265 jmp LBB0_850 + //0x0000426a LBB0_804 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000426a movq $-1, %r8 + 0x4c, 0x89, 0xd6, //0x00004271 movq %r10, %rsi + 0x49, 0x89, 0xfb, //0x00004274 movq %rdi, %r11 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004277 movq $-1, %r14 + 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000427e movq $-1, %r9 + 0xe9, 0x95, 0xfa, 0xff, 0xff, //0x00004285 jmp LBB0_737 + //0x0000428a LBB0_805 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x0000428a cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x0000428f jne LBB0_807 + 0x48, 0x89, 0xc6, //0x00004295 movq %rax, %rsi + 0x4c, 0x29, 0xee, //0x00004298 subq %r13, %rsi + 0x48, 0x0f, 0xbc, 0xfa, //0x0000429b bsfq %rdx, %rdi + 0x48, 0x01, 0xf7, //0x0000429f addq %rsi, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x000042a2 movq %rdi, $-48(%rbp) + //0x000042a6 LBB0_807 + 0x44, 0x89, 0xde, //0x000042a6 movl %r11d, %esi + 0xf7, 0xd6, //0x000042a9 notl %esi + 0x21, 0xd6, //0x000042ab andl %edx, %esi + 0x41, 0x8d, 0x3c, 0x73, //0x000042ad leal (%r11,%rsi,2), %edi + 0x8d, 0x1c, 0x36, //0x000042b1 leal (%rsi,%rsi), %ebx + 0xf7, 0xd3, //0x000042b4 notl %ebx + 0x21, 0xd3, //0x000042b6 andl %edx, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000042b8 andl $-1431655766, %ebx + 0x45, 0x31, 0xdb, //0x000042be xorl %r11d, %r11d + 0x01, 0xf3, //0x000042c1 addl %esi, %ebx + 0x41, 0x0f, 0x92, 0xc3, //0x000042c3 setb %r11b + 0x01, 0xdb, //0x000042c7 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000042c9 xorl $1431655765, %ebx + 0x21, 0xfb, //0x000042cf andl %edi, %ebx + 0xf7, 0xd3, //0x000042d1 notl %ebx + 0x21, 0xd9, //0x000042d3 andl %ebx, %ecx + 0x4c, 0x8b, 0x4d, 0xc0, //0x000042d5 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000042d9 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x000042dd movq $-80(%rbp), %r15 + 0x48, 0x85, 0xc9, //0x000042e1 testq %rcx, %rcx + 0x0f, 0x85, 0xfe, 0xfc, 0xff, 0xff, //0x000042e4 jne LBB0_612 + //0x000042ea LBB0_808 + 0x48, 0x83, 0xc0, 0x20, //0x000042ea addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x000042ee addq $-32, %r14 + //0x000042f2 LBB0_809 + 0x4d, 0x85, 0xdb, //0x000042f2 testq %r11, %r11 + 0x0f, 0x85, 0x2b, 0x02, 0x00, 0x00, //0x000042f5 jne LBB0_842 + 0x48, 0x8b, 0x4d, 0xd0, //0x000042fb movq $-48(%rbp), %rcx + 0x4d, 0x85, 0xf6, //0x000042ff testq %r14, %r14 + 0x0f, 0x84, 0x91, 0x00, 0x00, 0x00, //0x00004302 je LBB0_820 + //0x00004308 LBB0_811 + 0x31, 0xd2, //0x00004308 xorl %edx, %edx + //0x0000430a LBB0_812 + 0x0f, 0xb6, 0x1c, 0x10, //0x0000430a movzbl (%rax,%rdx), %ebx + 0x80, 0xfb, 0x22, //0x0000430e cmpb $34, %bl + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x00004311 je LBB0_819 + 0x80, 0xfb, 0x5c, //0x00004317 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000431a je LBB0_817 + 0x48, 0x83, 0xc2, 0x01, //0x00004320 addq $1, %rdx + 0x49, 0x39, 0xd6, //0x00004324 cmpq %rdx, %r14 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00004327 jne LBB0_812 + 0xe9, 0x89, 0x00, 0x00, 0x00, //0x0000432d jmp LBB0_815 + //0x00004332 LBB0_817 + 0x49, 0x8d, 0x76, 0xff, //0x00004332 leaq $-1(%r14), %rsi + 0x48, 0x39, 0xd6, //0x00004336 cmpq %rdx, %rsi + 0x0f, 0x84, 0xef, 0x05, 0x00, 0x00, //0x00004339 je LBB0_823 + 0x48, 0x8b, 0xb5, 0x38, 0xff, 0xff, 0xff, //0x0000433f movq $-200(%rbp), %rsi + 0x48, 0x01, 0xc6, //0x00004346 addq %rax, %rsi + 0x48, 0x01, 0xd6, //0x00004349 addq %rdx, %rsi + 0x48, 0x83, 0xf9, 0xff, //0x0000434c cmpq $-1, %rcx + 0x48, 0x8b, 0x7d, 0xd0, //0x00004350 movq $-48(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xfe, //0x00004354 cmoveq %rsi, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x00004358 movq %rdi, $-48(%rbp) + 0x48, 0x0f, 0x44, 0xce, //0x0000435c cmoveq %rsi, %rcx + 0x48, 0x01, 0xd0, //0x00004360 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00004363 addq $2, %rax + 0x4c, 0x89, 0xf6, //0x00004367 movq %r14, %rsi + 0x48, 0x29, 0xd6, //0x0000436a subq %rdx, %rsi + 0x48, 0x83, 0xc6, 0xfe, //0x0000436d addq $-2, %rsi + 0x49, 0x83, 0xc6, 0xfe, //0x00004371 addq $-2, %r14 + 0x49, 0x39, 0xd6, //0x00004375 cmpq %rdx, %r14 + 0x49, 0x89, 0xf6, //0x00004378 movq %rsi, %r14 + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000437b movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x0000437f movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00004383 movq $-80(%rbp), %r15 + 0x0f, 0x85, 0x7b, 0xff, 0xff, 0xff, //0x00004387 jne LBB0_811 + 0xe9, 0x9c, 0x05, 0x00, 0x00, //0x0000438d jmp LBB0_823 + //0x00004392 LBB0_819 + 0x48, 0x01, 0xd0, //0x00004392 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00004395 addq $1, %rax + //0x00004399 LBB0_820 + 0x4c, 0x29, 0xe8, //0x00004399 subq %r13, %rax + //0x0000439c LBB0_821 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000439c movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0x03, 0x16, 0x00, 0x00, //0x000043a6 leaq $5635(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc0, //0x000043ad testq %rax, %rax + 0x0f, 0x89, 0x1f, 0xf3, 0xff, 0xff, //0x000043b0 jns LBB0_617 + 0xe9, 0x69, 0x05, 0x00, 0x00, //0x000043b6 jmp LBB0_822 + //0x000043bb LBB0_815 + 0x80, 0xfb, 0x22, //0x000043bb cmpb $34, %bl + 0x0f, 0x85, 0x6a, 0x05, 0x00, 0x00, //0x000043be jne LBB0_823 + 0x4c, 0x01, 0xf0, //0x000043c4 addq %r14, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x000043c7 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000043cb movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x000043cf movq $-80(%rbp), %r15 + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x000043d3 jmp LBB0_820 + //0x000043d8 LBB0_825 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x000043d8 cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x000043dd jne LBB0_827 + 0x48, 0x89, 0xc1, //0x000043e3 movq %rax, %rcx + 0x4c, 0x29, 0xe9, //0x000043e6 subq %r13, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x000043e9 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x000043ed addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x000043f0 movq %rdi, $-48(%rbp) + //0x000043f4 LBB0_827 + 0x44, 0x89, 0xd9, //0x000043f4 movl %r11d, %ecx + 0xf7, 0xd1, //0x000043f7 notl %ecx + 0x21, 0xf1, //0x000043f9 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x4b, //0x000043fb leal (%r11,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x000043ff leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00004402 notl %ebx + 0x21, 0xf3, //0x00004404 andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004406 andl $-1431655766, %ebx + 0x45, 0x31, 0xdb, //0x0000440c xorl %r11d, %r11d + 0x01, 0xcb, //0x0000440f addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc3, //0x00004411 setb %r11b + 0x01, 0xdb, //0x00004415 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00004417 xorl $1431655765, %ebx + 0x21, 0xfb, //0x0000441d andl %edi, %ebx + 0xf7, 0xd3, //0x0000441f notl %ebx + 0x21, 0xda, //0x00004421 andl %ebx, %edx + 0x4c, 0x8b, 0x4d, 0xc0, //0x00004423 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00004427 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x0000442b movq $-80(%rbp), %r15 + 0x48, 0x85, 0xd2, //0x0000442f testq %rdx, %rdx + 0x0f, 0x85, 0x78, 0xfc, 0xff, 0xff, //0x00004432 jne LBB0_674 + //0x00004438 LBB0_828 + 0x48, 0x83, 0xc0, 0x20, //0x00004438 addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x0000443c addq $-32, %r14 + //0x00004440 LBB0_829 + 0x4d, 0x85, 0xdb, //0x00004440 testq %r11, %r11 + 0x0f, 0x85, 0x2a, 0x01, 0x00, 0x00, //0x00004443 jne LBB0_844 + 0x48, 0x8b, 0x55, 0xd0, //0x00004449 movq $-48(%rbp), %rdx + 0x4d, 0x85, 0xf6, //0x0000444d testq %r14, %r14 + 0x0f, 0x84, 0x91, 0x00, 0x00, 0x00, //0x00004450 je LBB0_840 + //0x00004456 LBB0_831 + 0x31, 0xf6, //0x00004456 xorl %esi, %esi + //0x00004458 LBB0_832 + 0x0f, 0xb6, 0x0c, 0x30, //0x00004458 movzbl (%rax,%rsi), %ecx + 0x80, 0xf9, 0x22, //0x0000445c cmpb $34, %cl + 0x0f, 0x84, 0x7b, 0x00, 0x00, 0x00, //0x0000445f je LBB0_839 + 0x80, 0xf9, 0x5c, //0x00004465 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00004468 je LBB0_837 + 0x48, 0x83, 0xc6, 0x01, //0x0000446e addq $1, %rsi + 0x49, 0x39, 0xf6, //0x00004472 cmpq %rsi, %r14 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00004475 jne LBB0_832 + 0xe9, 0x89, 0x00, 0x00, 0x00, //0x0000447b jmp LBB0_835 + //0x00004480 LBB0_837 + 0x49, 0x8d, 0x4e, 0xff, //0x00004480 leaq $-1(%r14), %rcx + 0x48, 0x39, 0xf1, //0x00004484 cmpq %rsi, %rcx + 0x0f, 0x84, 0xa1, 0x04, 0x00, 0x00, //0x00004487 je LBB0_823 + 0x48, 0x8b, 0x8d, 0x38, 0xff, 0xff, 0xff, //0x0000448d movq $-200(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x00004494 addq %rax, %rcx + 0x48, 0x01, 0xf1, //0x00004497 addq %rsi, %rcx + 0x48, 0x83, 0xfa, 0xff, //0x0000449a cmpq $-1, %rdx + 0x48, 0x8b, 0x7d, 0xd0, //0x0000449e movq $-48(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xf9, //0x000044a2 cmoveq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x000044a6 movq %rdi, $-48(%rbp) + 0x48, 0x0f, 0x44, 0xd1, //0x000044aa cmoveq %rcx, %rdx + 0x48, 0x01, 0xf0, //0x000044ae addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x000044b1 addq $2, %rax + 0x4c, 0x89, 0xf1, //0x000044b5 movq %r14, %rcx + 0x48, 0x29, 0xf1, //0x000044b8 subq %rsi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x000044bb addq $-2, %rcx + 0x49, 0x83, 0xc6, 0xfe, //0x000044bf addq $-2, %r14 + 0x49, 0x39, 0xf6, //0x000044c3 cmpq %rsi, %r14 + 0x49, 0x89, 0xce, //0x000044c6 movq %rcx, %r14 + 0x4c, 0x8b, 0x4d, 0xc0, //0x000044c9 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000044cd movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x000044d1 movq $-80(%rbp), %r15 + 0x0f, 0x85, 0x7b, 0xff, 0xff, 0xff, //0x000044d5 jne LBB0_831 + 0xe9, 0x4e, 0x04, 0x00, 0x00, //0x000044db jmp LBB0_823 + //0x000044e0 LBB0_839 + 0x48, 0x01, 0xf0, //0x000044e0 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000044e3 addq $1, %rax + //0x000044e7 LBB0_840 + 0x4c, 0x29, 0xe8, //0x000044e7 subq %r13, %rax + //0x000044ea LBB0_841 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000044ea movabsq $4294977024, %r11 + 0x4c, 0x8d, 0x35, 0xb5, 0x14, 0x00, 0x00, //0x000044f4 leaq $5301(%rip), %r14 /* LJTI0_2+0(%rip) */ + 0x48, 0x85, 0xc0, //0x000044fb testq %rax, %rax + 0x0f, 0x89, 0xf1, 0xf3, 0xff, 0xff, //0x000044fe jns LBB0_679 + 0xe9, 0x1b, 0x04, 0x00, 0x00, //0x00004504 jmp LBB0_822 + //0x00004509 LBB0_835 + 0x80, 0xf9, 0x22, //0x00004509 cmpb $34, %cl + 0x0f, 0x85, 0x1c, 0x04, 0x00, 0x00, //0x0000450c jne LBB0_823 + 0x4c, 0x01, 0xf0, //0x00004512 addq %r14, %rax + 0x4c, 0x8b, 0x4d, 0xc0, //0x00004515 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x00004519 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x0000451d movq $-80(%rbp), %r15 + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00004521 jmp LBB0_840 + //0x00004526 LBB0_842 + 0x4d, 0x85, 0xf6, //0x00004526 testq %r14, %r14 + 0x0f, 0x84, 0xff, 0x03, 0x00, 0x00, //0x00004529 je LBB0_823 + 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x0000452f movq $-184(%rbp), %rcx + 0x48, 0x8d, 0x14, 0x08, //0x00004536 leaq (%rax,%rcx), %rdx + 0x48, 0x8b, 0x75, 0xd0, //0x0000453a movq $-48(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000453e cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x00004542 movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xf2, //0x00004545 cmoveq %rdx, %rsi + 0x48, 0x0f, 0x44, 0xca, //0x00004549 cmoveq %rdx, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x0000454d addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00004551 addq $-1, %r14 + 0x48, 0x89, 0x75, 0xd0, //0x00004555 movq %rsi, $-48(%rbp) + 0x4c, 0x8b, 0x4d, 0xc0, //0x00004559 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x0000455d movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00004561 movq $-80(%rbp), %r15 + 0x4d, 0x85, 0xf6, //0x00004565 testq %r14, %r14 + 0x0f, 0x85, 0x9a, 0xfd, 0xff, 0xff, //0x00004568 jne LBB0_811 + 0xe9, 0x26, 0xfe, 0xff, 0xff, //0x0000456e jmp LBB0_820 + //0x00004573 LBB0_844 + 0x4d, 0x85, 0xf6, //0x00004573 testq %r14, %r14 + 0x0f, 0x84, 0xb2, 0x03, 0x00, 0x00, //0x00004576 je LBB0_823 + 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x0000457c movq $-184(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x00004583 addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xd0, //0x00004586 movq $-48(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000458a cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x0000458e movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x00004591 cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x00004595 cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00004599 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x0000459d addq $-1, %r14 + 0x48, 0x89, 0x75, 0xd0, //0x000045a1 movq %rsi, $-48(%rbp) + 0x4c, 0x8b, 0x4d, 0xc0, //0x000045a5 movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x000045a9 movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x000045ad movq $-80(%rbp), %r15 + 0x4d, 0x85, 0xf6, //0x000045b1 testq %r14, %r14 + 0x0f, 0x85, 0x9c, 0xfe, 0xff, 0xff, //0x000045b4 jne LBB0_831 + 0xe9, 0x28, 0xff, 0xff, 0xff, //0x000045ba jmp LBB0_840 + //0x000045bf LBB0_846 + 0x48, 0x83, 0x7d, 0xd0, 0xff, //0x000045bf cmpq $-1, $-48(%rbp) + 0x0f, 0x85, 0x11, 0x00, 0x00, 0x00, //0x000045c4 jne LBB0_848 + 0x48, 0x89, 0xc1, //0x000045ca movq %rax, %rcx + 0x4c, 0x29, 0xe9, //0x000045cd subq %r13, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x000045d0 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x000045d4 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x000045d7 movq %rdi, $-48(%rbp) + //0x000045db LBB0_848 + 0x44, 0x89, 0xd9, //0x000045db movl %r11d, %ecx + 0xf7, 0xd1, //0x000045de notl %ecx + 0x21, 0xf1, //0x000045e0 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x4b, //0x000045e2 leal (%r11,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x000045e6 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x000045e9 notl %ebx + 0x21, 0xf3, //0x000045eb andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000045ed andl $-1431655766, %ebx + 0x45, 0x31, 0xdb, //0x000045f3 xorl %r11d, %r11d + 0x01, 0xcb, //0x000045f6 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc3, //0x000045f8 setb %r11b + 0x01, 0xdb, //0x000045fc addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000045fe xorl $1431655765, %ebx + 0x21, 0xfb, //0x00004604 andl %edi, %ebx + 0xf7, 0xd3, //0x00004606 notl %ebx + 0x21, 0xda, //0x00004608 andl %ebx, %edx + 0x4c, 0x8b, 0x4d, 0xc0, //0x0000460a movq $-64(%rbp), %r9 + 0x4c, 0x8b, 0x55, 0xa0, //0x0000460e movq $-96(%rbp), %r10 + 0x4c, 0x8b, 0x7d, 0xb0, //0x00004612 movq $-80(%rbp), %r15 + 0x48, 0x85, 0xd2, //0x00004616 testq %rdx, %rdx + 0x0f, 0x85, 0x60, 0xfb, 0xff, 0xff, //0x00004619 jne LBB0_707 + //0x0000461f LBB0_849 + 0x48, 0x83, 0xc0, 0x20, //0x0000461f addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00004623 addq $-32, %r14 + //0x00004627 LBB0_850 + 0x4d, 0x85, 0xdb, //0x00004627 testq %r11, %r11 + 0x0f, 0x85, 0xab, 0x00, 0x00, 0x00, //0x0000462a jne LBB0_862 + 0x48, 0x8b, 0x55, 0xd0, //0x00004630 movq $-48(%rbp), %rdx + 0x4d, 0x85, 0xf6, //0x00004634 testq %r14, %r14 + 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x00004637 je LBB0_861 + //0x0000463d LBB0_852 + 0x31, 0xf6, //0x0000463d xorl %esi, %esi + //0x0000463f LBB0_853 + 0x0f, 0xb6, 0x0c, 0x30, //0x0000463f movzbl (%rax,%rsi), %ecx + 0x80, 0xf9, 0x22, //0x00004643 cmpb $34, %cl + 0x0f, 0x84, 0x6f, 0x00, 0x00, 0x00, //0x00004646 je LBB0_860 + 0x80, 0xf9, 0x5c, //0x0000464c cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000464f je LBB0_858 + 0x48, 0x83, 0xc6, 0x01, //0x00004655 addq $1, %rsi + 0x49, 0x39, 0xf6, //0x00004659 cmpq %rsi, %r14 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x0000465c jne LBB0_853 + 0xe9, 0x63, 0x00, 0x00, 0x00, //0x00004662 jmp LBB0_856 + //0x00004667 LBB0_858 + 0x49, 0x8d, 0x4e, 0xff, //0x00004667 leaq $-1(%r14), %rcx + 0x48, 0x39, 0xf1, //0x0000466b cmpq %rsi, %rcx + 0x0f, 0x84, 0xba, 0x02, 0x00, 0x00, //0x0000466e je LBB0_823 + 0x48, 0x8b, 0x8d, 0x38, 0xff, 0xff, 0xff, //0x00004674 movq $-200(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x0000467b addq %rax, %rcx + 0x48, 0x01, 0xf1, //0x0000467e addq %rsi, %rcx + 0x48, 0x83, 0xfa, 0xff, //0x00004681 cmpq $-1, %rdx + 0x48, 0x8b, 0x7d, 0xd0, //0x00004685 movq $-48(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xf9, //0x00004689 cmoveq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xd0, //0x0000468d movq %rdi, $-48(%rbp) + 0x48, 0x0f, 0x44, 0xd1, //0x00004691 cmoveq %rcx, %rdx + 0x48, 0x01, 0xf0, //0x00004695 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00004698 addq $2, %rax + 0x4c, 0x89, 0xf1, //0x0000469c movq %r14, %rcx + 0x48, 0x29, 0xf1, //0x0000469f subq %rsi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x000046a2 addq $-2, %rcx + 0x49, 0x83, 0xc6, 0xfe, //0x000046a6 addq $-2, %r14 + 0x49, 0x39, 0xf6, //0x000046aa cmpq %rsi, %r14 + 0x49, 0x89, 0xce, //0x000046ad movq %rcx, %r14 + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x000046b0 jne LBB0_852 + 0xe9, 0x73, 0x02, 0x00, 0x00, //0x000046b6 jmp LBB0_823 + //0x000046bb LBB0_860 + 0x48, 0x01, 0xf0, //0x000046bb addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000046be addq $1, %rax + //0x000046c2 LBB0_861 + 0x4c, 0x29, 0xe8, //0x000046c2 subq %r13, %rax + 0xe9, 0x85, 0xf4, 0xff, 0xff, //0x000046c5 jmp LBB0_712 + //0x000046ca LBB0_856 + 0x80, 0xf9, 0x22, //0x000046ca cmpb $34, %cl + 0x0f, 0x85, 0x5b, 0x02, 0x00, 0x00, //0x000046cd jne LBB0_823 + 0x4c, 0x01, 0xf0, //0x000046d3 addq %r14, %rax + 0xe9, 0xe7, 0xff, 0xff, 0xff, //0x000046d6 jmp LBB0_861 + //0x000046db LBB0_862 + 0x4d, 0x85, 0xf6, //0x000046db testq %r14, %r14 + 0x0f, 0x84, 0x4a, 0x02, 0x00, 0x00, //0x000046de je LBB0_823 + 0x48, 0x8b, 0x8d, 0x48, 0xff, 0xff, 0xff, //0x000046e4 movq $-184(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x000046eb addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xd0, //0x000046ee movq $-48(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x000046f2 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x000046f6 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x000046f9 cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x000046fd cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00004701 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00004705 addq $-1, %r14 + 0x48, 0x89, 0x75, 0xd0, //0x00004709 movq %rsi, $-48(%rbp) + 0x4d, 0x85, 0xf6, //0x0000470d testq %r14, %r14 + 0x0f, 0x85, 0x27, 0xff, 0xff, 0xff, //0x00004710 jne LBB0_852 + 0xe9, 0xa7, 0xff, 0xff, 0xff, //0x00004716 jmp LBB0_861 + //0x0000471b LBB0_865 + 0x49, 0x83, 0xc3, 0xff, //0x0000471b addq $-1, %r11 + 0x4d, 0x89, 0x18, //0x0000471f movq %r11, (%r8) + 0x48, 0xc7, 0xc0, 0xde, 0xff, 0xff, 0xff, //0x00004722 movq $-34, %rax + 0xe9, 0x3b, 0x00, 0x00, 0x00, //0x00004729 jmp LBB0_874 + //0x0000472e LBB0_866 + 0x48, 0x8b, 0x45, 0xc8, //0x0000472e movq $-56(%rbp), %rax + 0x48, 0x89, 0x30, //0x00004732 movq %rsi, (%rax) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004735 movq $-1, %rax + 0xe9, 0x28, 0x00, 0x00, 0x00, //0x0000473c jmp LBB0_874 + //0x00004741 LBB0_867 + 0x49, 0x89, 0x10, //0x00004741 movq %rdx, (%r8) + //0x00004744 LBB0_868 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004744 movq $-1, %rax + 0xe9, 0x19, 0x00, 0x00, 0x00, //0x0000474b jmp LBB0_874 + //0x00004750 LBB0_869 + 0x49, 0x89, 0xc3, //0x00004750 movq %rax, %r11 + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00004753 jmp LBB0_872 + //0x00004758 LBB0_871 + 0x49, 0x89, 0xcb, //0x00004758 movq %rcx, %r11 + //0x0000475b LBB0_872 + 0x49, 0x83, 0xc3, 0xff, //0x0000475b addq $-1, %r11 + 0x4d, 0x89, 0x18, //0x0000475f movq %r11, (%r8) + //0x00004762 LBB0_873 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00004762 movq $-2, %rax + //0x00004769 LBB0_874 + 0x48, 0x81, 0xc4, 0xa8, 0x00, 0x00, 0x00, //0x00004769 addq $168, %rsp + 0x5b, //0x00004770 popq %rbx + 0x41, 0x5c, //0x00004771 popq %r12 + 0x41, 0x5d, //0x00004773 popq %r13 + 0x41, 0x5e, //0x00004775 popq %r14 + 0x41, 0x5f, //0x00004777 popq %r15 + 0x5d, //0x00004779 popq %rbp + 0xc3, //0x0000477a retq + //0x0000477b LBB0_875 + 0x4c, 0x01, 0xde, //0x0000477b addq %r11, %rsi + 0x48, 0x89, 0xf0, //0x0000477e movq %rsi, %rax + //0x00004781 LBB0_876 + 0x4c, 0x29, 0xd8, //0x00004781 subq %r11, %rax + 0x48, 0x89, 0xc6, //0x00004784 movq %rax, %rsi + //0x00004787 LBB0_877 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004787 movq $-1, %rax + 0x49, 0x89, 0xf4, //0x0000478e movq %rsi, %r12 + 0x48, 0x39, 0xfe, //0x00004791 cmpq %rdi, %rsi + 0x0f, 0x83, 0xcf, 0xff, 0xff, 0xff, //0x00004794 jae LBB0_874 + //0x0000479a LBB0_878 + 0x49, 0x8d, 0x7c, 0x24, 0x01, //0x0000479a leaq $1(%r12), %rdi + 0x48, 0x8b, 0x45, 0xc8, //0x0000479f movq $-56(%rbp), %rax + 0x48, 0x89, 0x38, //0x000047a3 movq %rdi, (%rax) + 0x43, 0x0f, 0xbe, 0x0c, 0x23, //0x000047a6 movsbl (%r11,%r12), %ecx + 0x83, 0xf9, 0x7b, //0x000047ab cmpl $123, %ecx + 0x0f, 0x87, 0xc9, 0x01, 0x00, 0x00, //0x000047ae ja LBB0_902 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000047b4 movq $-1, %rax + 0x48, 0x8d, 0x15, 0xce, 0x14, 0x00, 0x00, //0x000047bb leaq $5326(%rip), %rdx /* LJTI0_6+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000047c2 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000047c6 addq %rdx, %rcx + 0xff, 0xe1, //0x000047c9 jmpq *%rcx + //0x000047cb LBB0_880 + 0x49, 0x8b, 0x01, //0x000047cb movq (%r9), %rax + 0x48, 0x29, 0xf8, //0x000047ce subq %rdi, %rax + 0x48, 0x83, 0xf8, 0x10, //0x000047d1 cmpq $16, %rax + 0x0f, 0x82, 0xa5, 0x0d, 0x00, 0x00, //0x000047d5 jb LBB0_997 + 0x31, 0xf6, //0x000047db xorl %esi, %esi + 0xf3, 0x0f, 0x6f, 0x05, 0x1b, 0xb8, 0xff, 0xff, //0x000047dd movdqu $-18405(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x23, 0xb8, 0xff, 0xff, //0x000047e5 movdqu $-18397(%rip), %xmm1 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0x2b, 0xb8, 0xff, 0xff, //0x000047ed movdqu $-18389(%rip), %xmm2 /* LCPI0_2+0(%rip) */ + 0x4c, 0x89, 0xda, //0x000047f5 movq %r11, %rdx + 0x48, 0x8b, 0x5d, 0xc8, //0x000047f8 movq $-56(%rbp), %rbx + 0x90, 0x90, 0x90, 0x90, //0x000047fc .p2align 4, 0x90 + //0x00004800 LBB0_882 + 0xf3, 0x42, 0x0f, 0x6f, 0x5c, 0x22, 0x01, //0x00004800 movdqu $1(%rdx,%r12), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00004807 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x0000480b pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xdb, 0xd9, //0x0000480f pand %xmm1, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00004813 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00004817 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000481b pmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x0000481f testl %ecx, %ecx + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00004821 jne LBB0_893 + 0x48, 0x83, 0xc2, 0x10, //0x00004827 addq $16, %rdx + 0x48, 0x8d, 0x0c, 0x30, //0x0000482b leaq (%rax,%rsi), %rcx + 0x48, 0x83, 0xc1, 0xf0, //0x0000482f addq $-16, %rcx + 0x48, 0x83, 0xc6, 0xf0, //0x00004833 addq $-16, %rsi + 0x48, 0x83, 0xf9, 0x0f, //0x00004837 cmpq $15, %rcx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x0000483b ja LBB0_882 + 0x4a, 0x8d, 0x3c, 0x22, //0x00004841 leaq (%rdx,%r12), %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00004845 addq $1, %rdi + 0x48, 0x01, 0xf0, //0x00004849 addq %rsi, %rax + 0x48, 0x85, 0xc0, //0x0000484c testq %rax, %rax + 0x0f, 0x84, 0x48, 0x00, 0x00, 0x00, //0x0000484f je LBB0_892 + //0x00004855 LBB0_885 + 0x48, 0x8d, 0x14, 0x07, //0x00004855 leaq (%rdi,%rax), %rdx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00004859 movabsq $17596481021440, %rsi + //0x00004863 LBB0_886 + 0x0f, 0xb6, 0x0f, //0x00004863 movzbl (%rdi), %ecx + 0x48, 0x83, 0xf9, 0x2c, //0x00004866 cmpq $44, %rcx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x0000486a ja LBB0_888 + 0x48, 0x0f, 0xa3, 0xce, //0x00004870 btq %rcx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00004874 jb LBB0_892 + //0x0000487a LBB0_888 + 0x80, 0xf9, 0x5d, //0x0000487a cmpb $93, %cl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x0000487d je LBB0_892 + 0x80, 0xf9, 0x7d, //0x00004883 cmpb $125, %cl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00004886 je LBB0_892 + 0x48, 0x83, 0xc7, 0x01, //0x0000488c addq $1, %rdi + 0x48, 0x83, 0xc0, 0xff, //0x00004890 addq $-1, %rax + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x00004894 jne LBB0_886 + 0x48, 0x89, 0xd7, //0x0000489a movq %rdx, %rdi + //0x0000489d LBB0_892 + 0x4c, 0x29, 0xdf, //0x0000489d subq %r11, %rdi + 0x48, 0x89, 0x3b, //0x000048a0 movq %rdi, (%rbx) + 0x4c, 0x89, 0xe0, //0x000048a3 movq %r12, %rax + 0xe9, 0xbe, 0xfe, 0xff, 0xff, //0x000048a6 jmp LBB0_874 + //0x000048ab LBB0_893 + 0x66, 0x0f, 0xbc, 0xc1, //0x000048ab bsfw %cx, %ax + 0x0f, 0xb7, 0xc8, //0x000048af movzwl %ax, %ecx + 0x4c, 0x01, 0xe1, //0x000048b2 addq %r12, %rcx + 0x48, 0x89, 0xc8, //0x000048b5 movq %rcx, %rax + 0x48, 0x29, 0xf0, //0x000048b8 subq %rsi, %rax + 0x48, 0x8d, 0x70, 0x01, //0x000048bb leaq $1(%rax), %rsi + 0x48, 0x89, 0x33, //0x000048bf movq %rsi, (%rbx) + 0x48, 0x85, 0xf6, //0x000048c2 testq %rsi, %rsi + 0x0f, 0x8e, 0x45, 0x00, 0x00, 0x00, //0x000048c5 jle LBB0_898 + 0x48, 0x8d, 0x70, 0x02, //0x000048cb leaq $2(%rax), %rsi + 0x48, 0x01, 0xca, //0x000048cf addq %rcx, %rdx + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000048d2 movabsq $4294977024, %rdi + 0x90, 0x90, 0x90, 0x90, //0x000048dc .p2align 4, 0x90 + //0x000048e0 LBB0_895 + 0x0f, 0xb6, 0x0a, //0x000048e0 movzbl (%rdx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x000048e3 cmpq $32, %rcx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x000048e7 ja LBB0_898 + 0x48, 0x0f, 0xa3, 0xcf, //0x000048ed btq %rcx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x000048f1 jae LBB0_898 + 0x48, 0x89, 0x03, //0x000048f7 movq %rax, (%rbx) + 0x48, 0x83, 0xc6, 0xff, //0x000048fa addq $-1, %rsi + 0x48, 0x83, 0xc0, 0xff, //0x000048fe addq $-1, %rax + 0x48, 0x83, 0xc2, 0xff, //0x00004902 addq $-1, %rdx + 0x48, 0x83, 0xfe, 0x01, //0x00004906 cmpq $1, %rsi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000490a jg LBB0_895 + //0x00004910 LBB0_898 + 0x4c, 0x89, 0xe0, //0x00004910 movq %r12, %rax + 0xe9, 0x51, 0xfe, 0xff, 0xff, //0x00004913 jmp LBB0_874 + //0x00004918 LBB0_980 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00004918 movq $-7, %rax + 0xe9, 0x45, 0xfe, 0xff, 0xff, //0x0000491f jmp LBB0_874 + //0x00004924 LBB0_822 + 0x48, 0x83, 0xf8, 0xff, //0x00004924 cmpq $-1, %rax + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00004928 jne LBB0_824 + //0x0000492e LBB0_823 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000492e movq $-1, %rax + 0x48, 0x8b, 0x4d, 0xb8, //0x00004935 movq $-72(%rbp), %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x00004939 movq %rcx, $-48(%rbp) + //0x0000493d LBB0_824 + 0x48, 0x8b, 0x4d, 0xc8, //0x0000493d movq $-56(%rbp), %rcx + 0x48, 0x8b, 0x55, 0xd0, //0x00004941 movq $-48(%rbp), %rdx + 0x48, 0x89, 0x11, //0x00004945 movq %rdx, (%rcx) + 0xe9, 0x1c, 0xfe, 0xff, 0xff, //0x00004948 jmp LBB0_874 + //0x0000494d LBB0_618 + 0x49, 0x83, 0xc0, 0xff, //0x0000494d addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00004951 movq %r8, %rax + 0xe9, 0x10, 0xfe, 0xff, 0xff, //0x00004954 jmp LBB0_874 + //0x00004959 LBB0_899 + 0x49, 0x8d, 0x4c, 0x24, 0x04, //0x00004959 leaq $4(%r12), %rcx + 0xe9, 0x70, 0x05, 0x00, 0x00, //0x0000495e jmp LBB0_939 + //0x00004963 LBB0_900 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00004963 movq $-1, %r8 + //0x0000496a LBB0_901 + 0x4c, 0x29, 0xc7, //0x0000496a subq %r8, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x0000496d addq $-2, %rdi + 0x48, 0x8b, 0x45, 0xc8, //0x00004971 movq $-56(%rbp), %rax + 0x48, 0x89, 0x38, //0x00004975 movq %rdi, (%rax) + 0xe9, 0xe5, 0xfd, 0xff, 0xff, //0x00004978 jmp LBB0_873 + //0x0000497d LBB0_902 + 0x48, 0x8b, 0x45, 0xc8, //0x0000497d movq $-56(%rbp), %rax + 0x4c, 0x89, 0x20, //0x00004981 movq %r12, (%rax) + 0xe9, 0xd9, 0xfd, 0xff, 0xff, //0x00004984 jmp LBB0_873 + //0x00004989 LBB0_903 + 0x4d, 0x8b, 0x01, //0x00004989 movq (%r9), %r8 + 0x4d, 0x89, 0xc6, //0x0000498c movq %r8, %r14 + 0x49, 0x29, 0xfe, //0x0000498f subq %rdi, %r14 + 0x49, 0x83, 0xfe, 0x20, //0x00004992 cmpq $32, %r14 + 0x0f, 0x8c, 0xf9, 0x0b, 0x00, 0x00, //0x00004996 jl LBB0_999 + 0x4f, 0x8d, 0x0c, 0x23, //0x0000499c leaq (%r11,%r12), %r9 + 0x4d, 0x29, 0xe0, //0x000049a0 subq %r12, %r8 + 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x000049a3 movl $31, %r15d + 0x45, 0x31, 0xf6, //0x000049a9 xorl %r14d, %r14d + 0xf3, 0x0f, 0x6f, 0x05, 0x7c, 0xb6, 0xff, 0xff, //0x000049ac movdqu $-18820(%rip), %xmm0 /* LCPI0_3+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x84, 0xb6, 0xff, 0xff, //0x000049b4 movdqu $-18812(%rip), %xmm1 /* LCPI0_4+0(%rip) */ + 0x45, 0x31, 0xd2, //0x000049bc xorl %r10d, %r10d + //0x000049bf LBB0_905 + 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x31, 0x01, //0x000049bf movdqu $1(%r9,%r14), %xmm2 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x31, 0x11, //0x000049c6 movdqu $17(%r9,%r14), %xmm3 + 0x66, 0x0f, 0x6f, 0xe2, //0x000049cd movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000049d1 pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x000049d5 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x6f, 0xe3, //0x000049d9 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000049dd pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000049e1 pmovmskb %xmm4, %esi + 0x48, 0xc1, 0xe6, 0x10, //0x000049e5 shlq $16, %rsi + 0x48, 0x09, 0xce, //0x000049e9 orq %rcx, %rsi + 0x66, 0x0f, 0x74, 0xd1, //0x000049ec pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000049f0 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x000049f4 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x000049f8 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x000049fc shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00004a00 orq %rdx, %rcx + 0x48, 0x89, 0xca, //0x00004a03 movq %rcx, %rdx + 0x4c, 0x09, 0xd2, //0x00004a06 orq %r10, %rdx + 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00004a09 je LBB0_907 + 0x44, 0x89, 0xd2, //0x00004a0f movl %r10d, %edx + 0xf7, 0xd2, //0x00004a12 notl %edx + 0x21, 0xca, //0x00004a14 andl %ecx, %edx + 0x8d, 0x1c, 0x12, //0x00004a16 leal (%rdx,%rdx), %ebx + 0x44, 0x09, 0xd3, //0x00004a19 orl %r10d, %ebx + 0x89, 0xdf, //0x00004a1c movl %ebx, %edi + 0xf7, 0xd7, //0x00004a1e notl %edi + 0x21, 0xcf, //0x00004a20 andl %ecx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004a22 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00004a28 xorl %r10d, %r10d + 0x01, 0xd7, //0x00004a2b addl %edx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x00004a2d setb %r10b + 0x01, 0xff, //0x00004a31 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00004a33 xorl $1431655765, %edi + 0x21, 0xdf, //0x00004a39 andl %ebx, %edi + 0xf7, 0xd7, //0x00004a3b notl %edi + 0x21, 0xfe, //0x00004a3d andl %edi, %esi + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00004a3f jmp LBB0_908 + //0x00004a44 LBB0_907 + 0x45, 0x31, 0xd2, //0x00004a44 xorl %r10d, %r10d + //0x00004a47 LBB0_908 + 0x48, 0x85, 0xf6, //0x00004a47 testq %rsi, %rsi + 0x0f, 0x85, 0x17, 0x09, 0x00, 0x00, //0x00004a4a jne LBB0_967 + 0x49, 0x83, 0xc6, 0x20, //0x00004a50 addq $32, %r14 + 0x4b, 0x8d, 0x0c, 0x38, //0x00004a54 leaq (%r8,%r15), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00004a58 addq $-32, %rcx + 0x49, 0x83, 0xc7, 0xe0, //0x00004a5c addq $-32, %r15 + 0x48, 0x83, 0xf9, 0x3f, //0x00004a60 cmpq $63, %rcx + 0x0f, 0x8f, 0x55, 0xff, 0xff, 0xff, //0x00004a64 jg LBB0_905 + 0x4d, 0x85, 0xd2, //0x00004a6a testq %r10, %r10 + 0x0f, 0x85, 0x36, 0x0b, 0x00, 0x00, //0x00004a6d jne LBB0_1001 + 0x4b, 0x8d, 0x3c, 0x0e, //0x00004a73 leaq (%r14,%r9), %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00004a77 addq $1, %rdi + 0x49, 0xf7, 0xd6, //0x00004a7b notq %r14 + 0x4d, 0x01, 0xc6, //0x00004a7e addq %r8, %r14 + //0x00004a81 LBB0_912 + 0x4d, 0x85, 0xf6, //0x00004a81 testq %r14, %r14 + 0x0f, 0x8f, 0x20, 0x09, 0x00, 0x00, //0x00004a84 jg LBB0_970 + 0xe9, 0xda, 0xfc, 0xff, 0xff, //0x00004a8a jmp LBB0_874 + //0x00004a8f LBB0_913 + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004a8f movabsq $6148914691236517205, %r14 + 0x49, 0x8b, 0x09, //0x00004a99 movq (%r9), %rcx + 0x48, 0x29, 0xf9, //0x00004a9c subq %rdi, %rcx + 0x49, 0x01, 0xfb, //0x00004a9f addq %rdi, %r11 + 0x31, 0xd2, //0x00004aa2 xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb0, //0x00004aa4 movq %rdx, $-80(%rbp) + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x8f, 0xb5, 0xff, 0xff, //0x00004aa8 movdqu $-19057(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x77, 0xb5, 0xff, 0xff, //0x00004ab1 movdqu $-19081(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00004ab9 pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0xaa, 0xb5, 0xff, 0xff, //0x00004abe movdqu $-19030(%rip), %xmm3 /* LCPI0_7+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x52, 0xb5, 0xff, 0xff, //0x00004ac6 movdqu $-19118(%rip), %xmm4 /* LCPI0_2+0(%rip) */ + 0x49, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00004ace movabsq $3689348814741910323, %r9 + 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00004ad8 pxor %xmm8, %xmm8 + 0x45, 0x31, 0xff, //0x00004add xorl %r15d, %r15d + 0x45, 0x31, 0xc0, //0x00004ae0 xorl %r8d, %r8d + 0x45, 0x31, 0xd2, //0x00004ae3 xorl %r10d, %r10d + 0xe9, 0x56, 0x00, 0x00, 0x00, //0x00004ae6 jmp LBB0_915 + //0x00004aeb LBB0_914 + 0x49, 0xc1, 0xfd, 0x3f, //0x00004aeb sarq $63, %r13 + 0x48, 0x89, 0xd9, //0x00004aef movq %rbx, %rcx + 0x48, 0xd1, 0xe9, //0x00004af2 shrq %rcx + 0x4c, 0x21, 0xf1, //0x00004af5 andq %r14, %rcx + 0x48, 0x29, 0xcb, //0x00004af8 subq %rcx, %rbx + 0x48, 0x89, 0xd9, //0x00004afb movq %rbx, %rcx + 0x4c, 0x21, 0xc9, //0x00004afe andq %r9, %rcx + 0x48, 0xc1, 0xeb, 0x02, //0x00004b01 shrq $2, %rbx + 0x4c, 0x21, 0xcb, //0x00004b05 andq %r9, %rbx + 0x48, 0x01, 0xcb, //0x00004b08 addq %rcx, %rbx + 0x48, 0x89, 0xd9, //0x00004b0b movq %rbx, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00004b0e shrq $4, %rcx + 0x48, 0x01, 0xd9, //0x00004b12 addq %rbx, %rcx + 0x4c, 0x21, 0xf9, //0x00004b15 andq %r15, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00004b18 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00004b22 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00004b26 shrq $56, %rcx + 0x49, 0x01, 0xc8, //0x00004b2a addq %rcx, %r8 + 0x49, 0x83, 0xc3, 0x40, //0x00004b2d addq $64, %r11 + 0x48, 0x8b, 0x4d, 0xd0, //0x00004b31 movq $-48(%rbp), %rcx + 0x48, 0x83, 0xc1, 0xc0, //0x00004b35 addq $-64, %rcx + 0x4c, 0x89, 0x6d, 0xb0, //0x00004b39 movq %r13, $-80(%rbp) + 0x4c, 0x8b, 0x7d, 0xb8, //0x00004b3d movq $-72(%rbp), %r15 + //0x00004b41 LBB0_915 + 0x48, 0x83, 0xf9, 0x40, //0x00004b41 cmpq $64, %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x00004b45 movq %rcx, $-48(%rbp) + 0x0f, 0x8c, 0x1e, 0x02, 0x00, 0x00, //0x00004b49 jl LBB0_922 + //0x00004b4f LBB0_916 + 0xf3, 0x41, 0x0f, 0x6f, 0x03, //0x00004b4f movdqu (%r11), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x6b, 0x10, //0x00004b54 movdqu $16(%r11), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7b, 0x20, //0x00004b5a movdqu $32(%r11), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x73, 0x30, //0x00004b60 movdqu $48(%r11), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x00004b66 movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b6a pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00004b6f pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd5, //0x00004b73 movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b77 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00004b7c pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x00004b80 movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b84 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00004b89 pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd6, //0x00004b8d movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004b91 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x00004b96 pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00004b9a shlq $48, %rbx + 0x48, 0xc1, 0xe7, 0x20, //0x00004b9e shlq $32, %rdi + 0x48, 0x09, 0xdf, //0x00004ba2 orq %rbx, %rdi + 0x48, 0xc1, 0xe2, 0x10, //0x00004ba5 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x00004ba9 orq %rdi, %rdx + 0x48, 0x09, 0xd6, //0x00004bac orq %rdx, %rsi + 0x48, 0x89, 0xf2, //0x00004baf movq %rsi, %rdx + 0x4c, 0x09, 0xfa, //0x00004bb2 orq %r15, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00004bb5 jne LBB0_918 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00004bbb movq $-1, %rsi + 0x31, 0xc9, //0x00004bc2 xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0xb8, //0x00004bc4 movq %rcx, $-72(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00004bc8 jmp LBB0_919 + //0x00004bcd LBB0_918 + 0x4c, 0x89, 0xfa, //0x00004bcd movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x00004bd0 notq %rdx + 0x48, 0x21, 0xf2, //0x00004bd3 andq %rsi, %rdx + 0x48, 0x8d, 0x3c, 0x12, //0x00004bd6 leaq (%rdx,%rdx), %rdi + 0x4c, 0x09, 0xff, //0x00004bda orq %r15, %rdi + 0x48, 0x89, 0xf9, //0x00004bdd movq %rdi, %rcx + 0x48, 0xf7, 0xd1, //0x00004be0 notq %rcx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00004be3 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xde, //0x00004bed andq %rbx, %rsi + 0x48, 0x21, 0xce, //0x00004bf0 andq %rcx, %rsi + 0x31, 0xc9, //0x00004bf3 xorl %ecx, %ecx + 0x48, 0x01, 0xd6, //0x00004bf5 addq %rdx, %rsi + 0x0f, 0x92, 0xc1, //0x00004bf8 setb %cl + 0x48, 0x89, 0x4d, 0xb8, //0x00004bfb movq %rcx, $-72(%rbp) + 0x48, 0x01, 0xf6, //0x00004bff addq %rsi, %rsi + 0x4c, 0x31, 0xf6, //0x00004c02 xorq %r14, %rsi + 0x48, 0x21, 0xfe, //0x00004c05 andq %rdi, %rsi + 0x48, 0xf7, 0xd6, //0x00004c08 notq %rsi + //0x00004c0b LBB0_919 + 0x66, 0x0f, 0x6f, 0xd6, //0x00004c0b movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00004c0f pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00004c13 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00004c17 shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xd7, //0x00004c1b movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00004c1f pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00004c23 pmovmskb %xmm2, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00004c27 shlq $32, %rdi + 0x48, 0x09, 0xd7, //0x00004c2b orq %rdx, %rdi + 0x66, 0x0f, 0x6f, 0xd5, //0x00004c2e movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00004c32 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00004c36 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x00004c3a shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x00004c3e orq %rdi, %rdx + 0x66, 0x0f, 0x6f, 0xd0, //0x00004c41 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00004c45 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00004c49 pmovmskb %xmm2, %edi + 0x48, 0x09, 0xd7, //0x00004c4d orq %rdx, %rdi + 0x48, 0x21, 0xf7, //0x00004c50 andq %rsi, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x00004c53 movq %rdi, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00004c58 pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd5, //0x00004c5f movq %xmm2, %r13 + 0x4c, 0x33, 0x6d, 0xb0, //0x00004c64 xorq $-80(%rbp), %r13 + 0x66, 0x0f, 0x6f, 0xd0, //0x00004c68 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00004c6c pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x00004c70 pmovmskb %xmm2, %ebx + 0x66, 0x0f, 0x6f, 0xd5, //0x00004c74 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00004c78 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00004c7c pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x00004c80 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00004c84 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00004c88 pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd6, //0x00004c8c movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00004c90 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x00004c94 pmovmskb %xmm2, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00004c98 shlq $48, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x00004c9c shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00004ca0 orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x00004ca3 shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x00004ca7 orq %rsi, %rdx + 0x48, 0x09, 0xd3, //0x00004caa orq %rdx, %rbx + 0x4c, 0x89, 0xe9, //0x00004cad movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x00004cb0 notq %rcx + 0x48, 0x21, 0xcb, //0x00004cb3 andq %rcx, %rbx + 0x66, 0x0f, 0x74, 0xc4, //0x00004cb6 pcmpeqb %xmm4, %xmm0 + 0x66, 0x0f, 0xd7, 0xf0, //0x00004cba pmovmskb %xmm0, %esi + 0x66, 0x0f, 0x74, 0xec, //0x00004cbe pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00004cc2 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x00004cc6 pcmpeqb %xmm4, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xf7, //0x00004cca pmovmskb %xmm7, %r14d + 0x66, 0x0f, 0x74, 0xf4, //0x00004ccf pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00004cd3 pmovmskb %xmm6, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00004cd8 shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x00004cdc shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x00004ce0 orq %r15, %r14 + 0x48, 0xc1, 0xe2, 0x10, //0x00004ce3 shlq $16, %rdx + 0x4c, 0x09, 0xf2, //0x00004ce7 orq %r14, %rdx + 0x48, 0x09, 0xd6, //0x00004cea orq %rdx, %rsi + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004ced movabsq $6148914691236517205, %r14 + 0x49, 0xbf, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00004cf7 movabsq $1085102592571150095, %r15 + 0x48, 0x21, 0xce, //0x00004d01 andq %rcx, %rsi + 0x0f, 0x84, 0xe1, 0xfd, 0xff, 0xff, //0x00004d04 je LBB0_914 + //0x00004d0a LBB0_920 + 0x48, 0x8d, 0x7e, 0xff, //0x00004d0a leaq $-1(%rsi), %rdi + 0x48, 0x89, 0xfa, //0x00004d0e movq %rdi, %rdx + 0x48, 0x21, 0xda, //0x00004d11 andq %rbx, %rdx + 0x48, 0x89, 0xd1, //0x00004d14 movq %rdx, %rcx + 0x48, 0xd1, 0xe9, //0x00004d17 shrq %rcx + 0x4c, 0x21, 0xf1, //0x00004d1a andq %r14, %rcx + 0x48, 0x29, 0xca, //0x00004d1d subq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00004d20 movq %rdx, %rcx + 0x4c, 0x21, 0xc9, //0x00004d23 andq %r9, %rcx + 0x48, 0xc1, 0xea, 0x02, //0x00004d26 shrq $2, %rdx + 0x4c, 0x21, 0xca, //0x00004d2a andq %r9, %rdx + 0x48, 0x01, 0xca, //0x00004d2d addq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00004d30 movq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00004d33 shrq $4, %rcx + 0x48, 0x01, 0xd1, //0x00004d37 addq %rdx, %rcx + 0x4c, 0x21, 0xf9, //0x00004d3a andq %r15, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00004d3d movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00004d47 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00004d4b shrq $56, %rcx + 0x4c, 0x01, 0xc1, //0x00004d4f addq %r8, %rcx + 0x4c, 0x39, 0xd1, //0x00004d52 cmpq %r10, %rcx + 0x0f, 0x86, 0xcf, 0x05, 0x00, 0x00, //0x00004d55 jbe LBB0_966 + 0x49, 0x83, 0xc2, 0x01, //0x00004d5b addq $1, %r10 + 0x48, 0x21, 0xfe, //0x00004d5f andq %rdi, %rsi + 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x00004d62 jne LBB0_920 + 0xe9, 0x7e, 0xfd, 0xff, 0xff, //0x00004d68 jmp LBB0_914 + //0x00004d6d LBB0_922 + 0x48, 0x85, 0xc9, //0x00004d6d testq %rcx, %rcx + 0x0f, 0x8e, 0x27, 0x08, 0x00, 0x00, //0x00004d70 jle LBB0_1000 + 0x4c, 0x89, 0xfb, //0x00004d76 movq %r15, %rbx + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x00004d79 movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00004d7f movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00004d88 movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00004d91 movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xd9, //0x00004d9a movl %r11d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00004d9d andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00004da3 cmpl $4033, %ecx + 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x00004da9 jb LBB0_926 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00004daf cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x43, 0x00, 0x00, 0x00, //0x00004db4 jb LBB0_927 + 0x41, 0x0f, 0x10, 0x03, //0x00004dba movups (%r11), %xmm0 + 0x0f, 0x11, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00004dbe movups %xmm0, $-176(%rbp) + 0xf3, 0x41, 0x0f, 0x6f, 0x43, 0x10, //0x00004dc5 movdqu $16(%r11), %xmm0 + 0xf3, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00004dcb movdqu %xmm0, $-160(%rbp) + 0x49, 0x83, 0xc3, 0x20, //0x00004dd3 addq $32, %r11 + 0x48, 0x8b, 0x4d, 0xd0, //0x00004dd7 movq $-48(%rbp), %rcx + 0x48, 0x8d, 0x79, 0xe0, //0x00004ddb leaq $-32(%rcx), %rdi + 0x48, 0x8d, 0xb5, 0x70, 0xff, 0xff, 0xff, //0x00004ddf leaq $-144(%rbp), %rsi + 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00004de6 jmp LBB0_928 + //0x00004deb LBB0_926 + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004deb movabsq $6148914691236517205, %r14 + 0x49, 0x89, 0xdf, //0x00004df5 movq %rbx, %r15 + 0xe9, 0x52, 0xfd, 0xff, 0xff, //0x00004df8 jmp LBB0_916 + //0x00004dfd LBB0_927 + 0x48, 0x8d, 0xb5, 0x50, 0xff, 0xff, 0xff, //0x00004dfd leaq $-176(%rbp), %rsi + 0x48, 0x8b, 0x7d, 0xd0, //0x00004e04 movq $-48(%rbp), %rdi + //0x00004e08 LBB0_928 + 0x48, 0x83, 0xff, 0x10, //0x00004e08 cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00004e0c jb LBB0_929 + 0xf3, 0x41, 0x0f, 0x6f, 0x03, //0x00004e12 movdqu (%r11), %xmm0 + 0xf3, 0x0f, 0x7f, 0x06, //0x00004e17 movdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc3, 0x10, //0x00004e1b addq $16, %r11 + 0x48, 0x83, 0xc6, 0x10, //0x00004e1f addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x00004e23 addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00004e27 cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00004e2b jae LBB0_936 + //0x00004e31 LBB0_930 + 0x48, 0x83, 0xff, 0x04, //0x00004e31 cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00004e35 jl LBB0_931 + //0x00004e3b LBB0_937 + 0x41, 0x8b, 0x0b, //0x00004e3b movl (%r11), %ecx + 0x89, 0x0e, //0x00004e3e movl %ecx, (%rsi) + 0x49, 0x83, 0xc3, 0x04, //0x00004e40 addq $4, %r11 + 0x48, 0x83, 0xc6, 0x04, //0x00004e44 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x00004e48 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x00004e4c cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00004e50 jae LBB0_932 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00004e56 jmp LBB0_933 + //0x00004e5b LBB0_929 + 0x48, 0x83, 0xff, 0x08, //0x00004e5b cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00004e5f jb LBB0_930 + //0x00004e65 LBB0_936 + 0x49, 0x8b, 0x0b, //0x00004e65 movq (%r11), %rcx + 0x48, 0x89, 0x0e, //0x00004e68 movq %rcx, (%rsi) + 0x49, 0x83, 0xc3, 0x08, //0x00004e6b addq $8, %r11 + 0x48, 0x83, 0xc6, 0x08, //0x00004e6f addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x00004e73 addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x00004e77 cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00004e7b jge LBB0_937 + //0x00004e81 LBB0_931 + 0x48, 0x83, 0xff, 0x02, //0x00004e81 cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00004e85 jb LBB0_933 + //0x00004e8b LBB0_932 + 0x41, 0x0f, 0xb7, 0x0b, //0x00004e8b movzwl (%r11), %ecx + 0x66, 0x89, 0x0e, //0x00004e8f movw %cx, (%rsi) + 0x49, 0x83, 0xc3, 0x02, //0x00004e92 addq $2, %r11 + 0x48, 0x83, 0xc6, 0x02, //0x00004e96 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x00004e9a addq $-2, %rdi + //0x00004e9e LBB0_933 + 0x4c, 0x89, 0xda, //0x00004e9e movq %r11, %rdx + 0x4c, 0x8d, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00004ea1 leaq $-176(%rbp), %r11 + 0x48, 0x85, 0xff, //0x00004ea8 testq %rdi, %rdi + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004eab movabsq $6148914691236517205, %r14 + 0x49, 0x89, 0xdf, //0x00004eb5 movq %rbx, %r15 + 0x0f, 0x84, 0x91, 0xfc, 0xff, 0xff, //0x00004eb8 je LBB0_916 + 0x8a, 0x0a, //0x00004ebe movb (%rdx), %cl + 0x88, 0x0e, //0x00004ec0 movb %cl, (%rsi) + 0x4c, 0x8d, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00004ec2 leaq $-176(%rbp), %r11 + 0xe9, 0x81, 0xfc, 0xff, 0xff, //0x00004ec9 jmp LBB0_916 + //0x00004ece LBB0_938 + 0x49, 0x8d, 0x4c, 0x24, 0x05, //0x00004ece leaq $5(%r12), %rcx + //0x00004ed3 LBB0_939 + 0x49, 0x3b, 0x09, //0x00004ed3 cmpq (%r9), %rcx + 0x0f, 0x87, 0x8d, 0xf8, 0xff, 0xff, //0x00004ed6 ja LBB0_874 + 0x48, 0x8b, 0x45, 0xc8, //0x00004edc movq $-56(%rbp), %rax + 0x48, 0x89, 0x08, //0x00004ee0 movq %rcx, (%rax) + 0x4c, 0x89, 0xe0, //0x00004ee3 movq %r12, %rax + 0xe9, 0x7e, 0xf8, 0xff, 0xff, //0x00004ee6 jmp LBB0_874 + //0x00004eeb LBB0_941 + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00004eeb movabsq $6148914691236517205, %r14 + 0x49, 0x8b, 0x09, //0x00004ef5 movq (%r9), %rcx + 0x48, 0x29, 0xf9, //0x00004ef8 subq %rdi, %rcx + 0x49, 0x01, 0xfb, //0x00004efb addq %rdi, %r11 + 0x31, 0xd2, //0x00004efe xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb0, //0x00004f00 movq %rdx, $-80(%rbp) + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x33, 0xb1, 0xff, 0xff, //0x00004f04 movdqu $-20173(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x1b, 0xb1, 0xff, 0xff, //0x00004f0d movdqu $-20197(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00004f15 pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0x2e, 0xb1, 0xff, 0xff, //0x00004f1a movdqu $-20178(%rip), %xmm3 /* LCPI0_5+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x36, 0xb1, 0xff, 0xff, //0x00004f22 movdqu $-20170(%rip), %xmm4 /* LCPI0_6+0(%rip) */ + 0x49, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00004f2a movabsq $3689348814741910323, %r9 + 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00004f34 pxor %xmm8, %xmm8 + 0x45, 0x31, 0xff, //0x00004f39 xorl %r15d, %r15d + 0x45, 0x31, 0xc0, //0x00004f3c xorl %r8d, %r8d + 0x45, 0x31, 0xd2, //0x00004f3f xorl %r10d, %r10d + 0xe9, 0x56, 0x00, 0x00, 0x00, //0x00004f42 jmp LBB0_943 + //0x00004f47 LBB0_942 + 0x49, 0xc1, 0xfd, 0x3f, //0x00004f47 sarq $63, %r13 + 0x48, 0x89, 0xd9, //0x00004f4b movq %rbx, %rcx + 0x48, 0xd1, 0xe9, //0x00004f4e shrq %rcx + 0x4c, 0x21, 0xf1, //0x00004f51 andq %r14, %rcx + 0x48, 0x29, 0xcb, //0x00004f54 subq %rcx, %rbx + 0x48, 0x89, 0xd9, //0x00004f57 movq %rbx, %rcx + 0x4c, 0x21, 0xc9, //0x00004f5a andq %r9, %rcx + 0x48, 0xc1, 0xeb, 0x02, //0x00004f5d shrq $2, %rbx + 0x4c, 0x21, 0xcb, //0x00004f61 andq %r9, %rbx + 0x48, 0x01, 0xcb, //0x00004f64 addq %rcx, %rbx + 0x48, 0x89, 0xd9, //0x00004f67 movq %rbx, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00004f6a shrq $4, %rcx + 0x48, 0x01, 0xd9, //0x00004f6e addq %rbx, %rcx + 0x4c, 0x21, 0xf9, //0x00004f71 andq %r15, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00004f74 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00004f7e imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00004f82 shrq $56, %rcx + 0x49, 0x01, 0xc8, //0x00004f86 addq %rcx, %r8 + 0x49, 0x83, 0xc3, 0x40, //0x00004f89 addq $64, %r11 + 0x48, 0x8b, 0x4d, 0xd0, //0x00004f8d movq $-48(%rbp), %rcx + 0x48, 0x83, 0xc1, 0xc0, //0x00004f91 addq $-64, %rcx + 0x4c, 0x89, 0x6d, 0xb0, //0x00004f95 movq %r13, $-80(%rbp) + 0x4c, 0x8b, 0x7d, 0xb8, //0x00004f99 movq $-72(%rbp), %r15 + //0x00004f9d LBB0_943 + 0x48, 0x83, 0xf9, 0x40, //0x00004f9d cmpq $64, %rcx + 0x48, 0x89, 0x4d, 0xd0, //0x00004fa1 movq %rcx, $-48(%rbp) + 0x0f, 0x8c, 0x1e, 0x02, 0x00, 0x00, //0x00004fa5 jl LBB0_950 + //0x00004fab LBB0_944 + 0xf3, 0x41, 0x0f, 0x6f, 0x03, //0x00004fab movdqu (%r11), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x6b, 0x10, //0x00004fb0 movdqu $16(%r11), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7b, 0x20, //0x00004fb6 movdqu $32(%r11), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x73, 0x30, //0x00004fbc movdqu $48(%r11), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x00004fc2 movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004fc6 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00004fcb pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd5, //0x00004fcf movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004fd3 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00004fd8 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x00004fdc movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004fe0 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00004fe5 pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd6, //0x00004fe9 movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00004fed pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x00004ff2 pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00004ff6 shlq $48, %rbx + 0x48, 0xc1, 0xe7, 0x20, //0x00004ffa shlq $32, %rdi + 0x48, 0x09, 0xdf, //0x00004ffe orq %rbx, %rdi + 0x48, 0xc1, 0xe2, 0x10, //0x00005001 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x00005005 orq %rdi, %rdx + 0x48, 0x09, 0xd6, //0x00005008 orq %rdx, %rsi + 0x48, 0x89, 0xf2, //0x0000500b movq %rsi, %rdx + 0x4c, 0x09, 0xfa, //0x0000500e orq %r15, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00005011 jne LBB0_946 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00005017 movq $-1, %rsi + 0x31, 0xc9, //0x0000501e xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0xb8, //0x00005020 movq %rcx, $-72(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00005024 jmp LBB0_947 + //0x00005029 LBB0_946 + 0x4c, 0x89, 0xfa, //0x00005029 movq %r15, %rdx + 0x48, 0xf7, 0xd2, //0x0000502c notq %rdx + 0x48, 0x21, 0xf2, //0x0000502f andq %rsi, %rdx + 0x48, 0x8d, 0x3c, 0x12, //0x00005032 leaq (%rdx,%rdx), %rdi + 0x4c, 0x09, 0xff, //0x00005036 orq %r15, %rdi + 0x48, 0x89, 0xf9, //0x00005039 movq %rdi, %rcx + 0x48, 0xf7, 0xd1, //0x0000503c notq %rcx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000503f movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xde, //0x00005049 andq %rbx, %rsi + 0x48, 0x21, 0xce, //0x0000504c andq %rcx, %rsi + 0x31, 0xc9, //0x0000504f xorl %ecx, %ecx + 0x48, 0x01, 0xd6, //0x00005051 addq %rdx, %rsi + 0x0f, 0x92, 0xc1, //0x00005054 setb %cl + 0x48, 0x89, 0x4d, 0xb8, //0x00005057 movq %rcx, $-72(%rbp) + 0x48, 0x01, 0xf6, //0x0000505b addq %rsi, %rsi + 0x4c, 0x31, 0xf6, //0x0000505e xorq %r14, %rsi + 0x48, 0x21, 0xfe, //0x00005061 andq %rdi, %rsi + 0x48, 0xf7, 0xd6, //0x00005064 notq %rsi + //0x00005067 LBB0_947 + 0x66, 0x0f, 0x6f, 0xd6, //0x00005067 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000506b pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x0000506f pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00005073 shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xd7, //0x00005077 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000507b pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x0000507f pmovmskb %xmm2, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00005083 shlq $32, %rdi + 0x48, 0x09, 0xd7, //0x00005087 orq %rdx, %rdi + 0x66, 0x0f, 0x6f, 0xd5, //0x0000508a movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000508e pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00005092 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x00005096 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x0000509a orq %rdi, %rdx + 0x66, 0x0f, 0x6f, 0xd0, //0x0000509d movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x000050a1 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x000050a5 pmovmskb %xmm2, %edi + 0x48, 0x09, 0xd7, //0x000050a9 orq %rdx, %rdi + 0x48, 0x21, 0xf7, //0x000050ac andq %rsi, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x000050af movq %rdi, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x000050b4 pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd5, //0x000050bb movq %xmm2, %r13 + 0x4c, 0x33, 0x6d, 0xb0, //0x000050c0 xorq $-80(%rbp), %r13 + 0x66, 0x0f, 0x6f, 0xd0, //0x000050c4 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000050c8 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x000050cc pmovmskb %xmm2, %ebx + 0x66, 0x0f, 0x6f, 0xd5, //0x000050d0 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000050d4 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000050d8 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x000050dc movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000050e0 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x000050e4 pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd6, //0x000050e8 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000050ec pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x000050f0 pmovmskb %xmm2, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x000050f4 shlq $48, %rcx + 0x48, 0xc1, 0xe6, 0x20, //0x000050f8 shlq $32, %rsi + 0x48, 0x09, 0xce, //0x000050fc orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x000050ff shlq $16, %rdx + 0x48, 0x09, 0xf2, //0x00005103 orq %rsi, %rdx + 0x48, 0x09, 0xd3, //0x00005106 orq %rdx, %rbx + 0x4c, 0x89, 0xe9, //0x00005109 movq %r13, %rcx + 0x48, 0xf7, 0xd1, //0x0000510c notq %rcx + 0x48, 0x21, 0xcb, //0x0000510f andq %rcx, %rbx + 0x66, 0x0f, 0x74, 0xc4, //0x00005112 pcmpeqb %xmm4, %xmm0 + 0x66, 0x0f, 0xd7, 0xf0, //0x00005116 pmovmskb %xmm0, %esi + 0x66, 0x0f, 0x74, 0xec, //0x0000511a pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000511e pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x00005122 pcmpeqb %xmm4, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xf7, //0x00005126 pmovmskb %xmm7, %r14d + 0x66, 0x0f, 0x74, 0xf4, //0x0000512b pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x0000512f pmovmskb %xmm6, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00005134 shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x00005138 shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x0000513c orq %r15, %r14 + 0x48, 0xc1, 0xe2, 0x10, //0x0000513f shlq $16, %rdx + 0x4c, 0x09, 0xf2, //0x00005143 orq %r14, %rdx + 0x48, 0x09, 0xd6, //0x00005146 orq %rdx, %rsi + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005149 movabsq $6148914691236517205, %r14 + 0x49, 0xbf, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00005153 movabsq $1085102592571150095, %r15 + 0x48, 0x21, 0xce, //0x0000515d andq %rcx, %rsi + 0x0f, 0x84, 0xe1, 0xfd, 0xff, 0xff, //0x00005160 je LBB0_942 + //0x00005166 LBB0_948 + 0x48, 0x8d, 0x7e, 0xff, //0x00005166 leaq $-1(%rsi), %rdi + 0x48, 0x89, 0xfa, //0x0000516a movq %rdi, %rdx + 0x48, 0x21, 0xda, //0x0000516d andq %rbx, %rdx + 0x48, 0x89, 0xd1, //0x00005170 movq %rdx, %rcx + 0x48, 0xd1, 0xe9, //0x00005173 shrq %rcx + 0x4c, 0x21, 0xf1, //0x00005176 andq %r14, %rcx + 0x48, 0x29, 0xca, //0x00005179 subq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x0000517c movq %rdx, %rcx + 0x4c, 0x21, 0xc9, //0x0000517f andq %r9, %rcx + 0x48, 0xc1, 0xea, 0x02, //0x00005182 shrq $2, %rdx + 0x4c, 0x21, 0xca, //0x00005186 andq %r9, %rdx + 0x48, 0x01, 0xca, //0x00005189 addq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x0000518c movq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x0000518f shrq $4, %rcx + 0x48, 0x01, 0xd1, //0x00005193 addq %rdx, %rcx + 0x4c, 0x21, 0xf9, //0x00005196 andq %r15, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00005199 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x000051a3 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x000051a7 shrq $56, %rcx + 0x4c, 0x01, 0xc1, //0x000051ab addq %r8, %rcx + 0x4c, 0x39, 0xd1, //0x000051ae cmpq %r10, %rcx + 0x0f, 0x86, 0x73, 0x01, 0x00, 0x00, //0x000051b1 jbe LBB0_966 + 0x49, 0x83, 0xc2, 0x01, //0x000051b7 addq $1, %r10 + 0x48, 0x21, 0xfe, //0x000051bb andq %rdi, %rsi + 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x000051be jne LBB0_948 + 0xe9, 0x7e, 0xfd, 0xff, 0xff, //0x000051c4 jmp LBB0_942 + //0x000051c9 LBB0_950 + 0x48, 0x85, 0xc9, //0x000051c9 testq %rcx, %rcx + 0x0f, 0x8e, 0xcb, 0x03, 0x00, 0x00, //0x000051cc jle LBB0_1000 + 0x4c, 0x89, 0xfb, //0x000051d2 movq %r15, %rbx + 0xf3, 0x44, 0x0f, 0x7f, 0x45, 0x80, //0x000051d5 movdqu %xmm8, $-128(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x000051db movdqu %xmm8, $-144(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x000051e4 movdqu %xmm8, $-160(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000051ed movdqu %xmm8, $-176(%rbp) + 0x44, 0x89, 0xd9, //0x000051f6 movl %r11d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000051f9 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000051ff cmpl $4033, %ecx + 0x0f, 0x82, 0x3c, 0x00, 0x00, 0x00, //0x00005205 jb LBB0_954 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x0000520b cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x43, 0x00, 0x00, 0x00, //0x00005210 jb LBB0_955 + 0x41, 0x0f, 0x10, 0x03, //0x00005216 movups (%r11), %xmm0 + 0x0f, 0x11, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000521a movups %xmm0, $-176(%rbp) + 0xf3, 0x41, 0x0f, 0x6f, 0x43, 0x10, //0x00005221 movdqu $16(%r11), %xmm0 + 0xf3, 0x0f, 0x7f, 0x85, 0x60, 0xff, 0xff, 0xff, //0x00005227 movdqu %xmm0, $-160(%rbp) + 0x49, 0x83, 0xc3, 0x20, //0x0000522f addq $32, %r11 + 0x48, 0x8b, 0x4d, 0xd0, //0x00005233 movq $-48(%rbp), %rcx + 0x48, 0x8d, 0x79, 0xe0, //0x00005237 leaq $-32(%rcx), %rdi + 0x48, 0x8d, 0xb5, 0x70, 0xff, 0xff, 0xff, //0x0000523b leaq $-144(%rbp), %rsi + 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00005242 jmp LBB0_956 + //0x00005247 LBB0_954 + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005247 movabsq $6148914691236517205, %r14 + 0x49, 0x89, 0xdf, //0x00005251 movq %rbx, %r15 + 0xe9, 0x52, 0xfd, 0xff, 0xff, //0x00005254 jmp LBB0_944 + //0x00005259 LBB0_955 + 0x48, 0x8d, 0xb5, 0x50, 0xff, 0xff, 0xff, //0x00005259 leaq $-176(%rbp), %rsi + 0x48, 0x8b, 0x7d, 0xd0, //0x00005260 movq $-48(%rbp), %rdi + //0x00005264 LBB0_956 + 0x48, 0x83, 0xff, 0x10, //0x00005264 cmpq $16, %rdi + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00005268 jb LBB0_957 + 0xf3, 0x41, 0x0f, 0x6f, 0x03, //0x0000526e movdqu (%r11), %xmm0 + 0xf3, 0x0f, 0x7f, 0x06, //0x00005273 movdqu %xmm0, (%rsi) + 0x49, 0x83, 0xc3, 0x10, //0x00005277 addq $16, %r11 + 0x48, 0x83, 0xc6, 0x10, //0x0000527b addq $16, %rsi + 0x48, 0x83, 0xc7, 0xf0, //0x0000527f addq $-16, %rdi + 0x48, 0x83, 0xff, 0x08, //0x00005283 cmpq $8, %rdi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00005287 jae LBB0_964 + //0x0000528d LBB0_958 + 0x48, 0x83, 0xff, 0x04, //0x0000528d cmpq $4, %rdi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00005291 jl LBB0_959 + //0x00005297 LBB0_965 + 0x41, 0x8b, 0x0b, //0x00005297 movl (%r11), %ecx + 0x89, 0x0e, //0x0000529a movl %ecx, (%rsi) + 0x49, 0x83, 0xc3, 0x04, //0x0000529c addq $4, %r11 + 0x48, 0x83, 0xc6, 0x04, //0x000052a0 addq $4, %rsi + 0x48, 0x83, 0xc7, 0xfc, //0x000052a4 addq $-4, %rdi + 0x48, 0x83, 0xff, 0x02, //0x000052a8 cmpq $2, %rdi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000052ac jae LBB0_960 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x000052b2 jmp LBB0_961 + //0x000052b7 LBB0_957 + 0x48, 0x83, 0xff, 0x08, //0x000052b7 cmpq $8, %rdi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x000052bb jb LBB0_958 + //0x000052c1 LBB0_964 + 0x49, 0x8b, 0x0b, //0x000052c1 movq (%r11), %rcx + 0x48, 0x89, 0x0e, //0x000052c4 movq %rcx, (%rsi) + 0x49, 0x83, 0xc3, 0x08, //0x000052c7 addq $8, %r11 + 0x48, 0x83, 0xc6, 0x08, //0x000052cb addq $8, %rsi + 0x48, 0x83, 0xc7, 0xf8, //0x000052cf addq $-8, %rdi + 0x48, 0x83, 0xff, 0x04, //0x000052d3 cmpq $4, %rdi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x000052d7 jge LBB0_965 + //0x000052dd LBB0_959 + 0x48, 0x83, 0xff, 0x02, //0x000052dd cmpq $2, %rdi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x000052e1 jb LBB0_961 + //0x000052e7 LBB0_960 + 0x41, 0x0f, 0xb7, 0x0b, //0x000052e7 movzwl (%r11), %ecx + 0x66, 0x89, 0x0e, //0x000052eb movw %cx, (%rsi) + 0x49, 0x83, 0xc3, 0x02, //0x000052ee addq $2, %r11 + 0x48, 0x83, 0xc6, 0x02, //0x000052f2 addq $2, %rsi + 0x48, 0x83, 0xc7, 0xfe, //0x000052f6 addq $-2, %rdi + //0x000052fa LBB0_961 + 0x4c, 0x89, 0xda, //0x000052fa movq %r11, %rdx + 0x4c, 0x8d, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x000052fd leaq $-176(%rbp), %r11 + 0x48, 0x85, 0xff, //0x00005304 testq %rdi, %rdi + 0x49, 0xbe, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00005307 movabsq $6148914691236517205, %r14 + 0x49, 0x89, 0xdf, //0x00005311 movq %rbx, %r15 + 0x0f, 0x84, 0x91, 0xfc, 0xff, 0xff, //0x00005314 je LBB0_944 + 0x8a, 0x0a, //0x0000531a movb (%rdx), %cl + 0x88, 0x0e, //0x0000531c movb %cl, (%rsi) + 0x4c, 0x8d, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x0000531e leaq $-176(%rbp), %r11 + 0xe9, 0x81, 0xfc, 0xff, 0xff, //0x00005325 jmp LBB0_944 + //0x0000532a LBB0_966 + 0x48, 0x8b, 0x7d, 0xc0, //0x0000532a movq $-64(%rbp), %rdi + 0x48, 0x8b, 0x07, //0x0000532e movq (%rdi), %rax + 0x48, 0x0f, 0xbc, 0xce, //0x00005331 bsfq %rsi, %rcx + 0x48, 0x2b, 0x4d, 0xd0, //0x00005335 subq $-48(%rbp), %rcx + 0x48, 0x01, 0xc8, //0x00005339 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000533c addq $1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x00005340 movq $-56(%rbp), %rdx + 0x48, 0x89, 0x02, //0x00005344 movq %rax, (%rdx) + 0x48, 0x8b, 0x0f, //0x00005347 movq (%rdi), %rcx + 0x48, 0x39, 0xc8, //0x0000534a cmpq %rcx, %rax + 0x48, 0x0f, 0x47, 0xc1, //0x0000534d cmovaq %rcx, %rax + 0x48, 0x89, 0x02, //0x00005351 movq %rax, (%rdx) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00005354 movq $-1, %rax + 0x4c, 0x0f, 0x47, 0xe0, //0x0000535b cmovaq %rax, %r12 + 0x4c, 0x89, 0xe0, //0x0000535f movq %r12, %rax + 0xe9, 0x02, 0xf4, 0xff, 0xff, //0x00005362 jmp LBB0_874 + //0x00005367 LBB0_967 + 0x0f, 0xbc, 0xc6, //0x00005367 bsfl %esi, %eax + 0x4c, 0x01, 0xe0, //0x0000536a addq %r12, %rax + 0x4c, 0x01, 0xf0, //0x0000536d addq %r14, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00005370 addq $2, %rax + 0x48, 0x8b, 0x4d, 0xc8, //0x00005374 movq $-56(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00005378 movq %rax, (%rcx) + 0x4c, 0x89, 0xe0, //0x0000537b movq %r12, %rax + 0xe9, 0xe6, 0xf3, 0xff, 0xff, //0x0000537e jmp LBB0_874 + //0x00005383 LBB0_979 + 0x48, 0x89, 0x17, //0x00005383 movq %rdx, (%rdi) + 0xe9, 0xde, 0xf3, 0xff, 0xff, //0x00005386 jmp LBB0_874 + //0x0000538b LBB0_968 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000538b movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00005392 movl $2, %eax + 0x48, 0x01, 0xc7, //0x00005397 addq %rax, %rdi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000539a movq $-1, %rax + 0x49, 0x01, 0xce, //0x000053a1 addq %rcx, %r14 + 0x0f, 0x8e, 0xbf, 0xf3, 0xff, 0xff, //0x000053a4 jle LBB0_874 + //0x000053aa LBB0_970 + 0x0f, 0xb6, 0x07, //0x000053aa movzbl (%rdi), %eax + 0x3c, 0x5c, //0x000053ad cmpb $92, %al + 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x000053af je LBB0_968 + 0x3c, 0x22, //0x000053b5 cmpb $34, %al + 0x0f, 0x84, 0x87, 0x01, 0x00, 0x00, //0x000053b7 je LBB0_992 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000053bd movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000053c4 movl $1, %eax + 0x48, 0x01, 0xc7, //0x000053c9 addq %rax, %rdi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000053cc movq $-1, %rax + 0x49, 0x01, 0xce, //0x000053d3 addq %rcx, %r14 + 0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x000053d6 jg LBB0_970 + 0xe9, 0x88, 0xf3, 0xff, 0xff, //0x000053dc jmp LBB0_874 + //0x000053e1 LBB0_973 + 0x48, 0x8b, 0x7d, 0xb8, //0x000053e1 movq $-72(%rbp), %rdi + 0xe9, 0x80, 0xf5, 0xff, 0xff, //0x000053e5 jmp LBB0_901 + //0x000053ea LBB0_974 + 0x4c, 0x89, 0x9d, 0x48, 0xff, 0xff, 0xff, //0x000053ea movq %r11, $-184(%rbp) + //0x000053f1 LBB0_975 + 0x4c, 0x8b, 0x45, 0xc8, //0x000053f1 movq $-56(%rbp), %r8 + //0x000053f5 LBB0_976 + 0x48, 0x8b, 0x85, 0x48, 0xff, 0xff, 0xff, //0x000053f5 movq $-184(%rbp), %rax + 0x49, 0x89, 0x00, //0x000053fc movq %rax, (%r8) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000053ff movq $-1, %rax + 0xe9, 0x5e, 0xf3, 0xff, 0xff, //0x00005406 jmp LBB0_874 + //0x0000540b LBB0_977 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000540b movq $-1, %r15 + //0x00005412 LBB0_978 + 0x49, 0xf7, 0xd7, //0x00005412 notq %r15 + 0x4c, 0x01, 0xf8, //0x00005415 addq %r15, %rax + 0x48, 0x8b, 0x4d, 0xc8, //0x00005418 movq $-56(%rbp), %rcx + 0x48, 0x89, 0x01, //0x0000541c movq %rax, (%rcx) + 0xe9, 0x3e, 0xf3, 0xff, 0xff, //0x0000541f jmp LBB0_873 + //0x00005424 LBB0_981 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00005424 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x0000542b cmpb $97, %dl + 0x0f, 0x85, 0x35, 0xf3, 0xff, 0xff, //0x0000542e jne LBB0_874 + 0x48, 0x8d, 0x51, 0x01, //0x00005434 leaq $1(%rcx), %rdx + 0x48, 0x89, 0x17, //0x00005438 movq %rdx, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x6c, //0x0000543b cmpb $108, $1(%r13,%rcx) + 0x0f, 0x85, 0x22, 0xf3, 0xff, 0xff, //0x00005441 jne LBB0_874 + 0x48, 0x8d, 0x51, 0x02, //0x00005447 leaq $2(%rcx), %rdx + 0x48, 0x89, 0x17, //0x0000544b movq %rdx, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x73, //0x0000544e cmpb $115, $2(%r13,%rcx) + 0x0f, 0x85, 0x0f, 0xf3, 0xff, 0xff, //0x00005454 jne LBB0_874 + 0x48, 0x8d, 0x51, 0x03, //0x0000545a leaq $3(%rcx), %rdx + 0x48, 0x89, 0x17, //0x0000545e movq %rdx, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x03, 0x65, //0x00005461 cmpb $101, $3(%r13,%rcx) + 0x0f, 0x85, 0xfc, 0xf2, 0xff, 0xff, //0x00005467 jne LBB0_874 + 0x48, 0x83, 0xc1, 0x04, //0x0000546d addq $4, %rcx + //0x00005471 LBB0_986 + 0x48, 0x8b, 0x55, 0xc8, //0x00005471 movq $-56(%rbp), %rdx + 0x48, 0x89, 0x0a, //0x00005475 movq %rcx, (%rdx) + 0xe9, 0xec, 0xf2, 0xff, 0xff, //0x00005478 jmp LBB0_874 + //0x0000547d LBB0_757 + 0x48, 0x89, 0x07, //0x0000547d movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x05, 0x00, 0x6e, //0x00005480 cmpb $110, (%r13,%rax) + 0x0f, 0x85, 0xd6, 0xf2, 0xff, 0xff, //0x00005486 jne LBB0_873 + 0x48, 0x89, 0x0f, //0x0000548c movq %rcx, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x00, 0x75, //0x0000548f cmpb $117, (%r13,%rcx) + 0x0f, 0x85, 0xc7, 0xf2, 0xff, 0xff, //0x00005495 jne LBB0_873 + 0x48, 0x8d, 0x41, 0x01, //0x0000549b leaq $1(%rcx), %rax + 0x48, 0x89, 0x07, //0x0000549f movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x6c, //0x000054a2 cmpb $108, $1(%r13,%rcx) + 0x0f, 0x85, 0xb4, 0xf2, 0xff, 0xff, //0x000054a8 jne LBB0_873 + 0x48, 0x8d, 0x41, 0x02, //0x000054ae leaq $2(%rcx), %rax + 0x48, 0x89, 0x07, //0x000054b2 movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x6c, //0x000054b5 cmpb $108, $2(%r13,%rcx) + 0x0f, 0x85, 0xa1, 0xf2, 0xff, 0xff, //0x000054bb jne LBB0_873 + 0xe9, 0x44, 0x00, 0x00, 0x00, //0x000054c1 jmp LBB0_991 + //0x000054c6 LBB0_987 + 0x48, 0x89, 0x07, //0x000054c6 movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x05, 0x00, 0x74, //0x000054c9 cmpb $116, (%r13,%rax) + 0x0f, 0x85, 0x8d, 0xf2, 0xff, 0xff, //0x000054cf jne LBB0_873 + 0x48, 0x89, 0x0f, //0x000054d5 movq %rcx, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x00, 0x72, //0x000054d8 cmpb $114, (%r13,%rcx) + 0x0f, 0x85, 0x7e, 0xf2, 0xff, 0xff, //0x000054de jne LBB0_873 + 0x48, 0x8d, 0x41, 0x01, //0x000054e4 leaq $1(%rcx), %rax + 0x48, 0x89, 0x07, //0x000054e8 movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x01, 0x75, //0x000054eb cmpb $117, $1(%r13,%rcx) + 0x0f, 0x85, 0x6b, 0xf2, 0xff, 0xff, //0x000054f1 jne LBB0_873 + 0x48, 0x8d, 0x41, 0x02, //0x000054f7 leaq $2(%rcx), %rax + 0x48, 0x89, 0x07, //0x000054fb movq %rax, (%rdi) + 0x41, 0x80, 0x7c, 0x0d, 0x02, 0x65, //0x000054fe cmpb $101, $2(%r13,%rcx) + 0x0f, 0x85, 0x58, 0xf2, 0xff, 0xff, //0x00005504 jne LBB0_873 + //0x0000550a LBB0_991 + 0x48, 0x83, 0xc1, 0x03, //0x0000550a addq $3, %rcx + 0x48, 0x8b, 0x45, 0xc8, //0x0000550e movq $-56(%rbp), %rax + 0x48, 0x89, 0x08, //0x00005512 movq %rcx, (%rax) + 0xe9, 0x48, 0xf2, 0xff, 0xff, //0x00005515 jmp LBB0_873 + //0x0000551a LBB0_754 + 0x48, 0x83, 0xc1, 0xff, //0x0000551a addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x0000551e movq %rcx, %rax + 0xe9, 0x43, 0xf2, 0xff, 0xff, //0x00005521 jmp LBB0_874 + //0x00005526 LBB0_781 + 0x48, 0x83, 0xc0, 0xff, //0x00005526 addq $-1, %rax + 0xe9, 0x3a, 0xf2, 0xff, 0xff, //0x0000552a jmp LBB0_874 + //0x0000552f LBB0_998 + 0x4c, 0x89, 0x45, 0xb8, //0x0000552f movq %r8, $-72(%rbp) + 0xe9, 0xf6, 0xf3, 0xff, 0xff, //0x00005533 jmp LBB0_823 + //0x00005538 LBB0_1003 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00005538 movq $-2, %rax + 0xe9, 0x2d, 0x00, 0x00, 0x00, //0x0000553f jmp LBB0_996 + //0x00005544 LBB0_992 + 0x4c, 0x29, 0xdf, //0x00005544 subq %r11, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x00005547 addq $1, %rdi + 0x48, 0x8b, 0x45, 0xc8, //0x0000554b movq $-56(%rbp), %rax + 0x48, 0x89, 0x38, //0x0000554f movq %rdi, (%rax) + 0x4c, 0x89, 0xe0, //0x00005552 movq %r12, %rax + 0xe9, 0x0f, 0xf2, 0xff, 0xff, //0x00005555 jmp LBB0_874 + //0x0000555a LBB0_993 + 0x48, 0x83, 0xc7, 0x01, //0x0000555a addq $1, %rdi + 0x48, 0xc7, 0xc0, 0xfd, 0xff, 0xff, 0xff, //0x0000555e movq $-3, %rax + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00005565 jmp LBB0_995 + //0x0000556a LBB0_994 + 0x48, 0x83, 0xc7, 0x01, //0x0000556a addq $1, %rdi + //0x0000556e LBB0_995 + 0x49, 0x89, 0xf9, //0x0000556e movq %rdi, %r9 + //0x00005571 LBB0_996 + 0x4d, 0x29, 0xe9, //0x00005571 subq %r13, %r9 + 0x48, 0x8b, 0x4d, 0xc8, //0x00005574 movq $-56(%rbp), %rcx + 0x4c, 0x89, 0x09, //0x00005578 movq %r9, (%rcx) + 0xe9, 0xe9, 0xf1, 0xff, 0xff, //0x0000557b jmp LBB0_874 + //0x00005580 LBB0_997 + 0x4c, 0x01, 0xdf, //0x00005580 addq %r11, %rdi + 0x48, 0x8b, 0x5d, 0xc8, //0x00005583 movq $-56(%rbp), %rbx + 0x48, 0x85, 0xc0, //0x00005587 testq %rax, %rax + 0x0f, 0x85, 0xc5, 0xf2, 0xff, 0xff, //0x0000558a jne LBB0_885 + 0xe9, 0x08, 0xf3, 0xff, 0xff, //0x00005590 jmp LBB0_892 + //0x00005595 LBB0_999 + 0x4c, 0x01, 0xdf, //0x00005595 addq %r11, %rdi + 0xe9, 0xe4, 0xf4, 0xff, 0xff, //0x00005598 jmp LBB0_912 + //0x0000559d LBB0_1000 + 0x48, 0x8b, 0x4d, 0xc0, //0x0000559d movq $-64(%rbp), %rcx + 0x48, 0x8b, 0x09, //0x000055a1 movq (%rcx), %rcx + 0xe9, 0xc8, 0xfe, 0xff, 0xff, //0x000055a4 jmp LBB0_986 + //0x000055a9 LBB0_1001 + 0x49, 0x8d, 0x48, 0xff, //0x000055a9 leaq $-1(%r8), %rcx + 0x4c, 0x39, 0xf1, //0x000055ad cmpq %r14, %rcx + 0x0f, 0x84, 0xb3, 0xf1, 0xff, 0xff, //0x000055b0 je LBB0_874 + 0x4b, 0x8d, 0x3c, 0x0e, //0x000055b6 leaq (%r14,%r9), %rdi + 0x48, 0x83, 0xc7, 0x02, //0x000055ba addq $2, %rdi + 0x4d, 0x29, 0xf0, //0x000055be subq %r14, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x000055c1 addq $-2, %r8 + 0x4d, 0x89, 0xc6, //0x000055c5 movq %r8, %r14 + 0xe9, 0xb4, 0xf4, 0xff, 0xff, //0x000055c8 jmp LBB0_912 + 0x90, 0x90, 0x90, //0x000055cd .p2align 2, 0x90 + // // .set L0_0_set_436, LBB0_436-LJTI0_0 + // // .set L0_0_set_435, LBB0_435-LJTI0_0 + // // .set L0_0_set_421, LBB0_421-LJTI0_0 // // .set L0_0_set_401, LBB0_401-LJTI0_0 - // // .set L0_0_set_461, LBB0_461-LJTI0_0 - // // .set L0_0_set_428, LBB0_428-LJTI0_0 - // // .set L0_0_set_414, LBB0_414-LJTI0_0 - // // .set L0_0_set_487, LBB0_487-LJTI0_0 - //0x00005498 LJTI0_0 - 0x3e, 0xce, 0xff, 0xff, //0x00005498 .long L0_0_set_430 - 0x38, 0xce, 0xff, 0xff, //0x0000549c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054a0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054a4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054a8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054ac .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054b0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054b4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054b8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054bc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054c0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054c4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054c8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054cc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054d0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054d4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054d8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054dc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054e0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054e4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054e8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054ec .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054f0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054f4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054f8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000054fc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005500 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005504 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005508 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000550c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005510 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005514 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005518 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000551c .long L0_0_set_429 - 0x0d, 0xcd, 0xff, 0xff, //0x00005520 .long L0_0_set_415 - 0x38, 0xce, 0xff, 0xff, //0x00005524 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005528 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000552c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005530 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005534 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005538 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000553c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005540 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005544 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005548 .long L0_0_set_429 - 0x0e, 0xcc, 0xff, 0xff, //0x0000554c .long L0_0_set_401 - 0x38, 0xce, 0xff, 0xff, //0x00005550 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005554 .long L0_0_set_429 - 0x0e, 0xcc, 0xff, 0xff, //0x00005558 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x0000555c .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005560 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005564 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005568 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x0000556c .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005570 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005574 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x00005578 .long L0_0_set_401 - 0x0e, 0xcc, 0xff, 0xff, //0x0000557c .long L0_0_set_401 - 0x38, 0xce, 0xff, 0xff, //0x00005580 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005584 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005588 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000558c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005590 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005594 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005598 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000559c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055a0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055a4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055a8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055ac .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055b0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055b4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055b8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055bc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055c0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055c4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055c8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055cc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055d0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055d4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055d8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055dc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055e0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055e4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055e8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055ec .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055f0 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055f4 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055f8 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x000055fc .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005600 .long L0_0_set_429 - 0x97, 0xcf, 0xff, 0xff, //0x00005604 .long L0_0_set_461 - 0x38, 0xce, 0xff, 0xff, //0x00005608 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000560c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005610 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005614 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005618 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000561c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005620 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005624 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005628 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000562c .long L0_0_set_429 - 0x27, 0xce, 0xff, 0xff, //0x00005630 .long L0_0_set_428 - 0x38, 0xce, 0xff, 0xff, //0x00005634 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005638 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000563c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005640 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005644 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005648 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000564c .long L0_0_set_429 - 0xfb, 0xcc, 0xff, 0xff, //0x00005650 .long L0_0_set_414 - 0x38, 0xce, 0xff, 0xff, //0x00005654 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005658 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000565c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005660 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005664 .long L0_0_set_429 - 0xfb, 0xcc, 0xff, 0xff, //0x00005668 .long L0_0_set_414 - 0x38, 0xce, 0xff, 0xff, //0x0000566c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005670 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005674 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005678 .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x0000567c .long L0_0_set_429 - 0x38, 0xce, 0xff, 0xff, //0x00005680 .long L0_0_set_429 - 0xcd, 0xd3, 0xff, 0xff, //0x00005684 .long L0_0_set_487 - // // .set L0_1_set_164, LBB0_164-LJTI0_1 - // // .set L0_1_set_231, LBB0_231-LJTI0_1 - // // .set L0_1_set_193, LBB0_193-LJTI0_1 + // // .set L0_0_set_467, LBB0_467-LJTI0_0 + // // .set L0_0_set_434, LBB0_434-LJTI0_0 + // // .set L0_0_set_420, LBB0_420-LJTI0_0 + // // .set L0_0_set_493, LBB0_493-LJTI0_0 + //0x000055d0 LJTI0_0 + 0x86, 0xcd, 0xff, 0xff, //0x000055d0 .long L0_0_set_436 + 0x80, 0xcd, 0xff, 0xff, //0x000055d4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055d8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055dc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055e0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055e4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055e8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055ec .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055f0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055f4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055f8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000055fc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005600 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005604 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005608 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000560c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005610 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005614 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005618 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000561c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005620 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005624 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005628 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000562c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005630 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005634 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005638 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000563c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005640 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005644 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005648 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000564c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005650 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005654 .long L0_0_set_435 + 0x5e, 0xcc, 0xff, 0xff, //0x00005658 .long L0_0_set_421 + 0x80, 0xcd, 0xff, 0xff, //0x0000565c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005660 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005664 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005668 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000566c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005670 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005674 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005678 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000567c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005680 .long L0_0_set_435 + 0xf6, 0xca, 0xff, 0xff, //0x00005684 .long L0_0_set_401 + 0x80, 0xcd, 0xff, 0xff, //0x00005688 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000568c .long L0_0_set_435 + 0xf6, 0xca, 0xff, 0xff, //0x00005690 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x00005694 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x00005698 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x0000569c .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056a0 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056a4 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056a8 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056ac .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056b0 .long L0_0_set_401 + 0xf6, 0xca, 0xff, 0xff, //0x000056b4 .long L0_0_set_401 + 0x80, 0xcd, 0xff, 0xff, //0x000056b8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056bc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056c0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056c4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056c8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056cc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056d0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056d4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056d8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056dc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056e0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056e4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056e8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056ec .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056f0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056f4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056f8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000056fc .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005700 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005704 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005708 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000570c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005710 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005714 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005718 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000571c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005720 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005724 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005728 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000572c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005730 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005734 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005738 .long L0_0_set_435 + 0xdf, 0xce, 0xff, 0xff, //0x0000573c .long L0_0_set_467 + 0x80, 0xcd, 0xff, 0xff, //0x00005740 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005744 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005748 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000574c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005750 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005754 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005758 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000575c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005760 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005764 .long L0_0_set_435 + 0x6b, 0xcd, 0xff, 0xff, //0x00005768 .long L0_0_set_434 + 0x80, 0xcd, 0xff, 0xff, //0x0000576c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005770 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005774 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005778 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000577c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005780 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005784 .long L0_0_set_435 + 0x4c, 0xcc, 0xff, 0xff, //0x00005788 .long L0_0_set_420 + 0x80, 0xcd, 0xff, 0xff, //0x0000578c .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005790 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005794 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x00005798 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x0000579c .long L0_0_set_435 + 0x4c, 0xcc, 0xff, 0xff, //0x000057a0 .long L0_0_set_420 + 0x80, 0xcd, 0xff, 0xff, //0x000057a4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000057a8 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000057ac .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000057b0 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000057b4 .long L0_0_set_435 + 0x80, 0xcd, 0xff, 0xff, //0x000057b8 .long L0_0_set_435 + 0x05, 0xd3, 0xff, 0xff, //0x000057bc .long L0_0_set_493 + // // .set L0_1_set_236, LBB0_236-LJTI0_1 + // // .set L0_1_set_206, LBB0_206-LJTI0_1 + // // .set L0_1_set_169, LBB0_169-LJTI0_1 // // .set L0_1_set_150, LBB0_150-LJTI0_1 - // // .set L0_1_set_204, LBB0_204-LJTI0_1 - // // .set L0_1_set_230, LBB0_230-LJTI0_1 - // // .set L0_1_set_192, LBB0_192-LJTI0_1 - // // .set L0_1_set_232, LBB0_232-LJTI0_1 - //0x00005688 LJTI0_1 - 0x96, 0xb4, 0xff, 0xff, //0x00005688 .long L0_1_set_164 - 0x66, 0xbb, 0xff, 0xff, //0x0000568c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005690 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005694 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005698 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000569c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056a0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056a4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056a8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056ac .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056b0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056b4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056b8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056bc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056c0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056c4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056c8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056cc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056d0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056d4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056d8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056dc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056e0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056e4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056e8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056ec .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056f0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056f4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056f8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000056fc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005700 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005704 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005708 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000570c .long L0_1_set_231 - 0xf8, 0xb5, 0xff, 0xff, //0x00005710 .long L0_1_set_193 - 0x66, 0xbb, 0xff, 0xff, //0x00005714 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005718 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000571c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005720 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005724 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005728 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000572c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005730 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005734 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005738 .long L0_1_set_231 - 0xb7, 0xb3, 0xff, 0xff, //0x0000573c .long L0_1_set_150 - 0x66, 0xbb, 0xff, 0xff, //0x00005740 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005744 .long L0_1_set_231 - 0xb7, 0xb3, 0xff, 0xff, //0x00005748 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x0000574c .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005750 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005754 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005758 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x0000575c .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005760 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005764 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x00005768 .long L0_1_set_150 - 0xb7, 0xb3, 0xff, 0xff, //0x0000576c .long L0_1_set_150 - 0x66, 0xbb, 0xff, 0xff, //0x00005770 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005774 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005778 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000577c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005780 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005784 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005788 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000578c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005790 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005794 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005798 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000579c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057a0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057a4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057a8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057ac .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057b0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057b4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057b8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057bc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057c0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057c4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057c8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057cc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057d0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057d4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057d8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057dc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057e0 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057e4 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057e8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057ec .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057f0 .long L0_1_set_231 - 0x19, 0xb7, 0xff, 0xff, //0x000057f4 .long L0_1_set_204 - 0x66, 0xbb, 0xff, 0xff, //0x000057f8 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x000057fc .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005800 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005804 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005808 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000580c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005810 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005814 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005818 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000581c .long L0_1_set_231 - 0x59, 0xbb, 0xff, 0xff, //0x00005820 .long L0_1_set_230 - 0x66, 0xbb, 0xff, 0xff, //0x00005824 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005828 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000582c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005830 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005834 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005838 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000583c .long L0_1_set_231 - 0xe6, 0xb5, 0xff, 0xff, //0x00005840 .long L0_1_set_192 - 0x66, 0xbb, 0xff, 0xff, //0x00005844 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005848 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000584c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005850 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005854 .long L0_1_set_231 - 0xe6, 0xb5, 0xff, 0xff, //0x00005858 .long L0_1_set_192 - 0x66, 0xbb, 0xff, 0xff, //0x0000585c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005860 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005864 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005868 .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x0000586c .long L0_1_set_231 - 0x66, 0xbb, 0xff, 0xff, //0x00005870 .long L0_1_set_231 - 0x71, 0xbb, 0xff, 0xff, //0x00005874 .long L0_1_set_232 - // // .set L0_2_set_586, LBB0_586-LJTI0_2 - // // .set L0_2_set_593, LBB0_593-LJTI0_2 - // // .set L0_2_set_595, LBB0_595-LJTI0_2 - // // .set L0_2_set_615, LBB0_615-LJTI0_2 - // // .set L0_2_set_589, LBB0_589-LJTI0_2 - // // .set L0_2_set_617, LBB0_617-LJTI0_2 - //0x00005878 LJTI0_2 - 0x64, 0xd9, 0xff, 0xff, //0x00005878 .long L0_2_set_586 - 0x19, 0xdc, 0xff, 0xff, //0x0000587c .long L0_2_set_593 - 0x44, 0xdc, 0xff, 0xff, //0x00005880 .long L0_2_set_595 - 0x12, 0xde, 0xff, 0xff, //0x00005884 .long L0_2_set_615 - 0x7b, 0xd9, 0xff, 0xff, //0x00005888 .long L0_2_set_589 - 0x29, 0xde, 0xff, 0xff, //0x0000588c .long L0_2_set_617 - // // .set L0_3_set_870, LBB0_870-LJTI0_3 - // // .set L0_3_set_869, LBB0_869-LJTI0_3 - // // .set L0_3_set_693, LBB0_693-LJTI0_3 - // // .set L0_3_set_714, LBB0_714-LJTI0_3 - // // .set L0_3_set_619, LBB0_619-LJTI0_3 - // // .set L0_3_set_750, LBB0_750-LJTI0_3 - // // .set L0_3_set_752, LBB0_752-LJTI0_3 - // // .set L0_3_set_756, LBB0_756-LJTI0_3 - // // .set L0_3_set_762, LBB0_762-LJTI0_3 - // // .set L0_3_set_765, LBB0_765-LJTI0_3 - //0x00005890 LJTI0_3 - 0xc1, 0xed, 0xff, 0xff, //0x00005890 .long L0_3_set_870 - 0xba, 0xed, 0xff, 0xff, //0x00005894 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005898 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000589c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058a0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058a4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058a8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058ac .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058b0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058b4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058b8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058bc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058c0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058c4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058c8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058cc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058d0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058d4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058d8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058dc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058e0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058e4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058e8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058ec .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058f0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058f4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058f8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000058fc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005900 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005904 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005908 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000590c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005910 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005914 .long L0_3_set_869 - 0xdc, 0xe0, 0xff, 0xff, //0x00005918 .long L0_3_set_693 - 0xba, 0xed, 0xff, 0xff, //0x0000591c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005920 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005924 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005928 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000592c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005930 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005934 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005938 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000593c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005940 .long L0_3_set_869 - 0x8a, 0xe2, 0xff, 0xff, //0x00005944 .long L0_3_set_714 - 0xba, 0xed, 0xff, 0xff, //0x00005948 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000594c .long L0_3_set_869 - 0xa1, 0xd9, 0xff, 0xff, //0x00005950 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005954 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005958 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x0000595c .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005960 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005964 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005968 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x0000596c .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005970 .long L0_3_set_619 - 0xa1, 0xd9, 0xff, 0xff, //0x00005974 .long L0_3_set_619 - 0xba, 0xed, 0xff, 0xff, //0x00005978 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000597c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005980 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005984 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005988 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000598c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005990 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005994 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005998 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x0000599c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059a0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059a4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059a8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059ac .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059b0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059b4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059b8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059bc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059c0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059c4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059c8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059cc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059d0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059d4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059d8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059dc .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059e0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059e4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059e8 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059ec .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059f0 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059f4 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x000059f8 .long L0_3_set_869 - 0xc1, 0xe4, 0xff, 0xff, //0x000059fc .long L0_3_set_750 - 0xba, 0xed, 0xff, 0xff, //0x00005a00 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a04 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a08 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a0c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a10 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a14 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a18 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a1c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a20 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a24 .long L0_3_set_869 - 0xe5, 0xe4, 0xff, 0xff, //0x00005a28 .long L0_3_set_752 - 0xba, 0xed, 0xff, 0xff, //0x00005a2c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a30 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a34 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a38 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a3c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a40 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a44 .long L0_3_set_869 - 0x22, 0xe5, 0xff, 0xff, //0x00005a48 .long L0_3_set_756 - 0xba, 0xed, 0xff, 0xff, //0x00005a4c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a50 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a54 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a58 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a5c .long L0_3_set_869 - 0x51, 0xe5, 0xff, 0xff, //0x00005a60 .long L0_3_set_762 - 0xba, 0xed, 0xff, 0xff, //0x00005a64 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a68 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a6c .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a70 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a74 .long L0_3_set_869 - 0xba, 0xed, 0xff, 0xff, //0x00005a78 .long L0_3_set_869 - 0x90, 0xe5, 0xff, 0xff, //0x00005a7c .long L0_3_set_765 - // // .set L0_4_set_739, LBB0_739-LJTI0_4 - // // .set L0_4_set_769, LBB0_769-LJTI0_4 - // // .set L0_4_set_745, LBB0_745-LJTI0_4 - // // .set L0_4_set_748, LBB0_748-LJTI0_4 - //0x00005a80 LJTI0_4 - 0x57, 0xe2, 0xff, 0xff, //0x00005a80 .long L0_4_set_739 - 0xee, 0xe3, 0xff, 0xff, //0x00005a84 .long L0_4_set_769 - 0x57, 0xe2, 0xff, 0xff, //0x00005a88 .long L0_4_set_739 - 0xa2, 0xe2, 0xff, 0xff, //0x00005a8c .long L0_4_set_745 - 0xee, 0xe3, 0xff, 0xff, //0x00005a90 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005a94 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005a98 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005a9c .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005aa0 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005aa4 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005aa8 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005aac .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ab0 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ab4 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ab8 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005abc .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ac0 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ac4 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ac8 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005acc .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ad0 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ad4 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ad8 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005adc .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ae0 .long L0_4_set_769 - 0xee, 0xe3, 0xff, 0xff, //0x00005ae4 .long L0_4_set_769 - 0xbe, 0xe2, 0xff, 0xff, //0x00005ae8 .long L0_4_set_748 - // // .set L0_5_set_644, LBB0_644-LJTI0_5 - // // .set L0_5_set_680, LBB0_680-LJTI0_5 - // // .set L0_5_set_650, LBB0_650-LJTI0_5 - // // .set L0_5_set_653, LBB0_653-LJTI0_5 - //0x00005aec LJTI0_5 - 0x30, 0xd9, 0xff, 0xff, //0x00005aec .long L0_5_set_644 - 0xec, 0xdd, 0xff, 0xff, //0x00005af0 .long L0_5_set_680 - 0x30, 0xd9, 0xff, 0xff, //0x00005af4 .long L0_5_set_644 - 0x76, 0xd9, 0xff, 0xff, //0x00005af8 .long L0_5_set_650 - 0xec, 0xdd, 0xff, 0xff, //0x00005afc .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b00 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b04 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b08 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b0c .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b10 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b14 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b18 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b1c .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b20 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b24 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b28 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b2c .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b30 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b34 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b38 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b3c .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b40 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b44 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b48 .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b4c .long L0_5_set_680 - 0xec, 0xdd, 0xff, 0xff, //0x00005b50 .long L0_5_set_680 - 0x92, 0xd9, 0xff, 0xff, //0x00005b54 .long L0_5_set_653 - // // .set L0_6_set_870, LBB0_870-LJTI0_6 - // // .set L0_6_set_892, LBB0_892-LJTI0_6 - // // .set L0_6_set_893, LBB0_893-LJTI0_6 - // // .set L0_6_set_876, LBB0_876-LJTI0_6 + // // .set L0_1_set_179, LBB0_179-LJTI0_1 + // // .set L0_1_set_205, LBB0_205-LJTI0_1 + // // .set L0_1_set_168, LBB0_168-LJTI0_1 + // // .set L0_1_set_207, LBB0_207-LJTI0_1 + //0x000057c0 LJTI0_1 + 0x30, 0xb9, 0xff, 0xff, //0x000057c0 .long L0_1_set_236 + 0x27, 0xb9, 0xff, 0xff, //0x000057c4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057c8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057cc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057d0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057d4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057d8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057dc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057e0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057e4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057e8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057ec .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057f0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057f4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057f8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000057fc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005800 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005804 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005808 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000580c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005810 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005814 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005818 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000581c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005820 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005824 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005828 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000582c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005830 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005834 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005838 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000583c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005840 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005844 .long L0_1_set_206 + 0xfb, 0xb3, 0xff, 0xff, //0x00005848 .long L0_1_set_169 + 0x27, 0xb9, 0xff, 0xff, //0x0000584c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005850 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005854 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005858 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000585c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005860 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005864 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005868 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000586c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005870 .long L0_1_set_206 + 0x7f, 0xb2, 0xff, 0xff, //0x00005874 .long L0_1_set_150 + 0x27, 0xb9, 0xff, 0xff, //0x00005878 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000587c .long L0_1_set_206 + 0x7f, 0xb2, 0xff, 0xff, //0x00005880 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x00005884 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x00005888 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x0000588c .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x00005890 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x00005894 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x00005898 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x0000589c .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x000058a0 .long L0_1_set_150 + 0x7f, 0xb2, 0xff, 0xff, //0x000058a4 .long L0_1_set_150 + 0x27, 0xb9, 0xff, 0xff, //0x000058a8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058ac .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058b0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058b4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058b8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058bc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058c0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058c4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058c8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058cc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058d0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058d4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058d8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058dc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058e0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058e4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058e8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058ec .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058f0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058f4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058f8 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000058fc .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005900 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005904 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005908 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000590c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005910 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005914 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005918 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000591c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005920 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005924 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005928 .long L0_1_set_206 + 0x13, 0xb5, 0xff, 0xff, //0x0000592c .long L0_1_set_179 + 0x27, 0xb9, 0xff, 0xff, //0x00005930 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005934 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005938 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000593c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005940 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005944 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005948 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000594c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005950 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005954 .long L0_1_set_206 + 0x1a, 0xb9, 0xff, 0xff, //0x00005958 .long L0_1_set_205 + 0x27, 0xb9, 0xff, 0xff, //0x0000595c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005960 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005964 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005968 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000596c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005970 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005974 .long L0_1_set_206 + 0xe9, 0xb3, 0xff, 0xff, //0x00005978 .long L0_1_set_168 + 0x27, 0xb9, 0xff, 0xff, //0x0000597c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005980 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005984 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005988 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000598c .long L0_1_set_206 + 0xe9, 0xb3, 0xff, 0xff, //0x00005990 .long L0_1_set_168 + 0x27, 0xb9, 0xff, 0xff, //0x00005994 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x00005998 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x0000599c .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000059a0 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000059a4 .long L0_1_set_206 + 0x27, 0xb9, 0xff, 0xff, //0x000059a8 .long L0_1_set_206 + 0x6d, 0xb9, 0xff, 0xff, //0x000059ac .long L0_1_set_207 + // // .set L0_2_set_591, LBB0_591-LJTI0_2 + // // .set L0_2_set_598, LBB0_598-LJTI0_2 + // // .set L0_2_set_600, LBB0_600-LJTI0_2 + // // .set L0_2_set_619, LBB0_619-LJTI0_2 + // // .set L0_2_set_594, LBB0_594-LJTI0_2 + // // .set L0_2_set_621, LBB0_621-LJTI0_2 + //0x000059b0 LJTI0_2 + 0x8c, 0xd8, 0xff, 0xff, //0x000059b0 .long L0_2_set_591 + 0x41, 0xdb, 0xff, 0xff, //0x000059b4 .long L0_2_set_598 + 0x6c, 0xdb, 0xff, 0xff, //0x000059b8 .long L0_2_set_600 + 0x3a, 0xdd, 0xff, 0xff, //0x000059bc .long L0_2_set_619 + 0xa3, 0xd8, 0xff, 0xff, //0x000059c0 .long L0_2_set_594 + 0x51, 0xdd, 0xff, 0xff, //0x000059c4 .long L0_2_set_621 + // // .set L0_3_set_874, LBB0_874-LJTI0_3 + // // .set L0_3_set_873, LBB0_873-LJTI0_3 + // // .set L0_3_set_696, LBB0_696-LJTI0_3 + // // .set L0_3_set_713, LBB0_713-LJTI0_3 + // // .set L0_3_set_623, LBB0_623-LJTI0_3 + // // .set L0_3_set_749, LBB0_749-LJTI0_3 + // // .set L0_3_set_751, LBB0_751-LJTI0_3 + // // .set L0_3_set_755, LBB0_755-LJTI0_3 + // // .set L0_3_set_761, LBB0_761-LJTI0_3 + // // .set L0_3_set_764, LBB0_764-LJTI0_3 + //0x000059c8 LJTI0_3 + 0xa1, 0xed, 0xff, 0xff, //0x000059c8 .long L0_3_set_874 + 0x9a, 0xed, 0xff, 0xff, //0x000059cc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059d0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059d4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059d8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059dc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059e0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059e4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059e8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059ec .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059f0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059f4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059f8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x000059fc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a00 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a04 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a08 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a0c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a10 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a14 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a18 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a1c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a20 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a24 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a28 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a2c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a30 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a34 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a38 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a3c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a40 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a44 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a48 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a4c .long L0_3_set_873 + 0x04, 0xe0, 0xff, 0xff, //0x00005a50 .long L0_3_set_696 + 0x9a, 0xed, 0xff, 0xff, //0x00005a54 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a58 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a5c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a60 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a64 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a68 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a6c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a70 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a74 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a78 .long L0_3_set_873 + 0xb2, 0xe1, 0xff, 0xff, //0x00005a7c .long L0_3_set_713 + 0x9a, 0xed, 0xff, 0xff, //0x00005a80 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005a84 .long L0_3_set_873 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a88 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a8c .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a90 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a94 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a98 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005a9c .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005aa0 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005aa4 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005aa8 .long L0_3_set_623 + 0xc9, 0xd8, 0xff, 0xff, //0x00005aac .long L0_3_set_623 + 0x9a, 0xed, 0xff, 0xff, //0x00005ab0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ab4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ab8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005abc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ac0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ac4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ac8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005acc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ad0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ad4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ad8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005adc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ae0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ae4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ae8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005aec .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005af0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005af4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005af8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005afc .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b00 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b04 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b08 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b0c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b10 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b14 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b18 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b1c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b20 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b24 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b28 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b2c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b30 .long L0_3_set_873 + 0xe0, 0xe3, 0xff, 0xff, //0x00005b34 .long L0_3_set_749 + 0x9a, 0xed, 0xff, 0xff, //0x00005b38 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b3c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b40 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b44 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b48 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b4c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b50 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b54 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b58 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b5c .long L0_3_set_873 + 0x04, 0xe4, 0xff, 0xff, //0x00005b60 .long L0_3_set_751 + 0x9a, 0xed, 0xff, 0xff, //0x00005b64 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b68 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b6c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b70 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b74 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b78 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b7c .long L0_3_set_873 + 0x41, 0xe4, 0xff, 0xff, //0x00005b80 .long L0_3_set_755 + 0x9a, 0xed, 0xff, 0xff, //0x00005b84 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b88 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b8c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b90 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005b94 .long L0_3_set_873 + 0x70, 0xe4, 0xff, 0xff, //0x00005b98 .long L0_3_set_761 + 0x9a, 0xed, 0xff, 0xff, //0x00005b9c .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ba0 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ba4 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005ba8 .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005bac .long L0_3_set_873 + 0x9a, 0xed, 0xff, 0xff, //0x00005bb0 .long L0_3_set_873 + 0xaf, 0xe4, 0xff, 0xff, //0x00005bb4 .long L0_3_set_764 + // // .set L0_4_set_738, LBB0_738-LJTI0_4 + // // .set L0_4_set_768, LBB0_768-LJTI0_4 + // // .set L0_4_set_744, LBB0_744-LJTI0_4 + // // .set L0_4_set_747, LBB0_747-LJTI0_4 + //0x00005bb8 LJTI0_4 + 0x78, 0xe1, 0xff, 0xff, //0x00005bb8 .long L0_4_set_738 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bbc .long L0_4_set_768 + 0x78, 0xe1, 0xff, 0xff, //0x00005bc0 .long L0_4_set_738 + 0xc1, 0xe1, 0xff, 0xff, //0x00005bc4 .long L0_4_set_744 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bc8 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bcc .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bd0 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bd4 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bd8 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bdc .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005be0 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005be4 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005be8 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bec .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bf0 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bf4 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bf8 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005bfc .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c00 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c04 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c08 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c0c .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c10 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c14 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c18 .long L0_4_set_768 + 0x0d, 0xe3, 0xff, 0xff, //0x00005c1c .long L0_4_set_768 + 0xdd, 0xe1, 0xff, 0xff, //0x00005c20 .long L0_4_set_747 + // // .set L0_5_set_648, LBB0_648-LJTI0_5 + // // .set L0_5_set_683, LBB0_683-LJTI0_5 + // // .set L0_5_set_654, LBB0_654-LJTI0_5 + // // .set L0_5_set_657, LBB0_657-LJTI0_5 + //0x00005c24 LJTI0_5 + 0x58, 0xd8, 0xff, 0xff, //0x00005c24 .long L0_5_set_648 + 0x14, 0xdd, 0xff, 0xff, //0x00005c28 .long L0_5_set_683 + 0x58, 0xd8, 0xff, 0xff, //0x00005c2c .long L0_5_set_648 + 0x9e, 0xd8, 0xff, 0xff, //0x00005c30 .long L0_5_set_654 + 0x14, 0xdd, 0xff, 0xff, //0x00005c34 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c38 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c3c .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c40 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c44 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c48 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c4c .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c50 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c54 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c58 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c5c .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c60 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c64 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c68 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c6c .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c70 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c74 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c78 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c7c .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c80 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c84 .long L0_5_set_683 + 0x14, 0xdd, 0xff, 0xff, //0x00005c88 .long L0_5_set_683 + 0xba, 0xd8, 0xff, 0xff, //0x00005c8c .long L0_5_set_657 + // // .set L0_6_set_874, LBB0_874-LJTI0_6 + // // .set L0_6_set_902, LBB0_902-LJTI0_6 // // .set L0_6_set_903, LBB0_903-LJTI0_6 - // // .set L0_6_set_929, LBB0_929-LJTI0_6 - // // .set L0_6_set_889, LBB0_889-LJTI0_6 - // // .set L0_6_set_932, LBB0_932-LJTI0_6 - //0x00005b58 LJTI0_6 - 0xf9, 0xea, 0xff, 0xff, //0x00005b58 .long L0_6_set_870 - 0xa3, 0xec, 0xff, 0xff, //0x00005b5c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b60 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b64 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b68 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b6c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b70 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b74 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b78 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b7c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b80 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b84 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b88 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b8c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b90 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b94 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b98 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005b9c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ba0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ba4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ba8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bac .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bb0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bb4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bb8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bbc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bc0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bc4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bc8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bcc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bd0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bd4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bd8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bdc .long L0_6_set_892 - 0xaf, 0xec, 0xff, 0xff, //0x00005be0 .long L0_6_set_893 - 0xa3, 0xec, 0xff, 0xff, //0x00005be4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005be8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bec .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bf0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bf4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bf8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005bfc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c00 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c04 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c08 .long L0_6_set_892 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c0c .long L0_6_set_876 - 0xa3, 0xec, 0xff, 0xff, //0x00005c10 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c14 .long L0_6_set_892 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c18 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c1c .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c20 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c24 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c28 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c2c .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c30 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c34 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c38 .long L0_6_set_876 - 0x5a, 0xeb, 0xff, 0xff, //0x00005c3c .long L0_6_set_876 - 0xa3, 0xec, 0xff, 0xff, //0x00005c40 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c44 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c48 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c4c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c50 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c54 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c58 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c5c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c60 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c64 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c68 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c6c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c70 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c74 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c78 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c7c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c80 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c84 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c88 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c8c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c90 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c94 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c98 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005c9c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ca0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ca4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ca8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cac .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cb0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cb4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cb8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cbc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cc0 .long L0_6_set_892 - 0xb5, 0xed, 0xff, 0xff, //0x00005cc4 .long L0_6_set_903 - 0xa3, 0xec, 0xff, 0xff, //0x00005cc8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ccc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cd0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cd4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cd8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cdc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ce0 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ce4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005ce8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cec .long L0_6_set_892 - 0x13, 0xf2, 0xff, 0xff, //0x00005cf0 .long L0_6_set_929 - 0xa3, 0xec, 0xff, 0xff, //0x00005cf4 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cf8 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005cfc .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d00 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d04 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d08 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d0c .long L0_6_set_892 - 0x80, 0xec, 0xff, 0xff, //0x00005d10 .long L0_6_set_889 - 0xa3, 0xec, 0xff, 0xff, //0x00005d14 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d18 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d1c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d20 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d24 .long L0_6_set_892 - 0x80, 0xec, 0xff, 0xff, //0x00005d28 .long L0_6_set_889 - 0xa3, 0xec, 0xff, 0xff, //0x00005d2c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d30 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d34 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d38 .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d3c .long L0_6_set_892 - 0xa3, 0xec, 0xff, 0xff, //0x00005d40 .long L0_6_set_892 - 0x2f, 0xf2, 0xff, 0xff, //0x00005d44 .long L0_6_set_932 - //0x00005d48 .p2align 2, 0x00 - //0x00005d48 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00005d48 .long 2 - 0x00, 0x00, 0x00, 0x00, //0x00005d4c .p2align 4, 0x00 - //0x00005d50 __UnquoteTab - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005d50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005d60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, //0x00005d70 QUAD $0x0000000000220000; QUAD $0x2f00000000000000 // .ascii 16, '\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, //0x00005d80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005d90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, 0x5c, 0x00, 0x00, 0x00, //0x00005da0 QUAD $0x0000000000000000; QUAD $0x0000005c00000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00' - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, //0x00005db0 QUAD $0x000c000000080000; QUAD $0x000a000000000000 // .ascii 16, '\x00\x00\x08\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\n\x00' - 0x00, 0x00, 0x0d, 0x00, 0x09, 0xff, //0x00005dc0 LONG $0x000d0000; WORD $0xff09 // .ascii 6, '\x00\x00\r\x00\t\xff' - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005dc6 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, //0x00005dd6 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, //0x00005de6 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, //0x00005df6 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, //0x00005e06 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, //0x00005e16 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, //0x00005e26 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, //0x00005e36 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, //0x00005e46 QUAD $0x0000000000000000; WORD $0x0000 // .space 10, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + // // .set L0_6_set_880, LBB0_880-LJTI0_6 + // // .set L0_6_set_913, LBB0_913-LJTI0_6 + // // .set L0_6_set_938, LBB0_938-LJTI0_6 + // // .set L0_6_set_899, LBB0_899-LJTI0_6 + // // .set L0_6_set_941, LBB0_941-LJTI0_6 + //0x00005c90 LJTI0_6 + 0xd9, 0xea, 0xff, 0xff, //0x00005c90 .long L0_6_set_874 + 0xed, 0xec, 0xff, 0xff, //0x00005c94 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005c98 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005c9c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ca0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ca4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ca8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cac .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cb0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cb4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cb8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cbc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cc0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cc4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cc8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ccc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cd0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cd4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cd8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cdc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ce0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ce4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ce8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cec .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cf0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cf4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cf8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005cfc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d00 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d04 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d08 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d0c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d10 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d14 .long L0_6_set_902 + 0xf9, 0xec, 0xff, 0xff, //0x00005d18 .long L0_6_set_903 + 0xed, 0xec, 0xff, 0xff, //0x00005d1c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d20 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d24 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d28 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d2c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d30 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d34 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d38 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d3c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d40 .long L0_6_set_902 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d44 .long L0_6_set_880 + 0xed, 0xec, 0xff, 0xff, //0x00005d48 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d4c .long L0_6_set_902 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d50 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d54 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d58 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d5c .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d60 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d64 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d68 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d6c .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d70 .long L0_6_set_880 + 0x3b, 0xeb, 0xff, 0xff, //0x00005d74 .long L0_6_set_880 + 0xed, 0xec, 0xff, 0xff, //0x00005d78 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d7c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d80 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d84 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d88 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d8c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d90 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d94 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d98 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005d9c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005da0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005da4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005da8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dac .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005db0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005db4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005db8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dbc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dc0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dc4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dc8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dcc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dd0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dd4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dd8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005ddc .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005de0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005de4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005de8 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005dec .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005df0 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005df4 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005df8 .long L0_6_set_902 + 0xff, 0xed, 0xff, 0xff, //0x00005dfc .long L0_6_set_913 + 0xed, 0xec, 0xff, 0xff, //0x00005e00 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e04 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e08 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e0c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e10 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e14 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e18 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e1c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e20 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e24 .long L0_6_set_902 + 0x3e, 0xf2, 0xff, 0xff, //0x00005e28 .long L0_6_set_938 + 0xed, 0xec, 0xff, 0xff, //0x00005e2c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e30 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e34 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e38 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e3c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e40 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e44 .long L0_6_set_902 + 0xc9, 0xec, 0xff, 0xff, //0x00005e48 .long L0_6_set_899 + 0xed, 0xec, 0xff, 0xff, //0x00005e4c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e50 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e54 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e58 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e5c .long L0_6_set_902 + 0xc9, 0xec, 0xff, 0xff, //0x00005e60 .long L0_6_set_899 + 0xed, 0xec, 0xff, 0xff, //0x00005e64 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e68 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e6c .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e70 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e74 .long L0_6_set_902 + 0xed, 0xec, 0xff, 0xff, //0x00005e78 .long L0_6_set_902 + 0x5b, 0xf2, 0xff, 0xff, //0x00005e7c .long L0_6_set_941 + //0x00005e80 .p2align 2, 0x00 + //0x00005e80 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00005e80 .long 2 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005e84 .p2align 4, 0x00 + //0x00005e90 __UnquoteTab + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005e90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005ea0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, //0x00005eb0 QUAD $0x0000000000220000; QUAD $0x2f00000000000000 // .ascii 16, '\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, //0x00005ec0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, //0x00005ed0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .ascii 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, 0x5c, 0x00, 0x00, 0x00, //0x00005ee0 QUAD $0x0000000000000000; QUAD $0x0000005c00000000 // .ascii 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00' + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, //0x00005ef0 QUAD $0x000c000000080000; QUAD $0x000a000000000000 // .ascii 16, '\x00\x00\x08\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\n\x00' + 0x00, 0x00, 0x0d, 0x00, 0x09, 0xff, //0x00005f00 LONG $0x000d0000; WORD $0xff09 // .ascii 6, '\x00\x00\r\x00\t\xff' + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00005f06 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, //0x00005f16 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, //0x00005f26 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, //0x00005f36 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, //0x00005f46 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, //0x00005f56 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, //0x00005f66 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, //0x00005f76 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, //0x00005f86 QUAD $0x0000000000000000; WORD $0x0000 // .space 10, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' } diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_subr.go index e9f3f67eb..cb7825d69 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_array = 15328 + _size__skip_array = 15436 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x394e, 184}, - {0x394f, 48}, - {0x3951, 40}, - {0x3953, 32}, - {0x3955, 24}, - {0x3957, 16}, - {0x3958, 8}, - {0x3959, 0}, - {0x3be0, 184}, + {0x39b6, 184}, + {0x39b7, 48}, + {0x39b9, 40}, + {0x39bb, 32}, + {0x39bd, 24}, + {0x39bf, 16}, + {0x39c0, 8}, + {0x39c1, 0}, + {0x3c4c, 184}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_text_amd64.go index 1802875f5..00de5d1af 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_array_text_amd64.go @@ -54,815 +54,818 @@ var _text_skip_array = []byte{ 0x48, 0x89, 0x7d, 0xa8, //0x0000011e movq %rdi, $-88(%rbp) 0x0f, 0x10, 0x05, 0xd7, 0xfe, 0xff, 0xff, //0x00000122 movups $-297(%rip), %xmm0 /* LCPI0_0+0(%rip) */ 0x0f, 0x11, 0x02, //0x00000129 movups %xmm0, (%rdx) - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, %rcx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000133 movabsq $4294977024, %r11 - 0xf3, 0x0f, 0x6f, 0x05, 0xcb, 0xfe, 0xff, 0xff, //0x0000013d movdqu $-309(%rip), %xmm0 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xd3, 0xfe, 0xff, 0xff, //0x00000145 movdqu $-301(%rip), %xmm1 /* LCPI0_2+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xda, 0xfe, 0xff, 0xff, //0x0000014d movdqu $-294(%rip), %xmm12 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000156 pcmpeqd %xmm10, %xmm10 - 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4c, 0xff, 0xff, 0xff, //0x0000015b movdqu $-180(%rip), %xmm15 /* LCPI0_11+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x23, 0xff, 0xff, 0xff, //0x00000164 movdqu $-221(%rip), %xmm9 /* LCPI0_9+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x7a, 0xff, 0xff, 0xff, //0x0000016d movdqu $-134(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x01, 0xff, 0xff, 0xff, //0x00000176 movdqu $-255(%rip), %xmm14 /* LCPI0_8+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0xe9, 0xfe, 0xff, 0xff, //0x0000017f movdqu $-279(%rip), %xmm2 /* LCPI0_7+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb0, 0xfe, 0xff, 0xff, //0x00000187 movdqu $-336(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb7, 0xfe, 0xff, 0xff, //0x00000190 movdqu $-329(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x48, 0x89, 0x75, 0xd0, //0x00000199 movq %rsi, $-48(%rbp) - 0x48, 0x89, 0x55, 0xb8, //0x0000019d movq %rdx, $-72(%rbp) - 0xe9, 0x7a, 0x00, 0x00, 0x00, //0x000001a1 jmp LBB0_6 - //0x000001a6 LBB0_613 - 0x66, 0x0f, 0xbc, 0xc2, //0x000001a6 bsfw %dx, %ax - 0x0f, 0xb7, 0xc0, //0x000001aa movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x000001ad subq %rcx, %rax - 0x49, 0x89, 0x06, //0x000001b0 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x000001b3 testq %rsi, %rsi - 0x0f, 0x8e, 0x9d, 0x38, 0x00, 0x00, //0x000001b6 jle LBB0_614 - 0x90, 0x90, 0x90, 0x90, //0x000001bc .p2align 4, 0x90 - //0x000001c0 LBB0_4 - 0x4d, 0x8b, 0x45, 0x00, //0x000001c0 movq (%r13), %r8 - 0x48, 0x8b, 0x75, 0x90, //0x000001c4 movq $-112(%rbp), %rsi - 0x48, 0x89, 0xf1, //0x000001c8 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x000001cb movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x000001ce testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000001d1 jne LBB0_6 - 0xe9, 0x6b, 0x38, 0x00, 0x00, //0x000001d7 jmp LBB0_638 - //0x000001dc LBB0_1 - 0x49, 0xf7, 0xdb, //0x000001dc negq %r11 - 0x4d, 0x89, 0xdd, //0x000001df movq %r11, %r13 - //0x000001e2 LBB0_2 - 0x4d, 0x85, 0xed, //0x000001e2 testq %r13, %r13 - 0x0f, 0x88, 0x47, 0x38, 0x00, 0x00, //0x000001e5 js LBB0_612 - //0x000001eb LBB0_3 - 0x49, 0x01, 0xc5, //0x000001eb addq %rax, %r13 - 0x4c, 0x8b, 0x75, 0xd0, //0x000001ee movq $-48(%rbp), %r14 - 0x4d, 0x89, 0x2e, //0x000001f2 movq %r13, (%r14) - 0x48, 0x85, 0xc0, //0x000001f5 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x000001f8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001fc movabsq $4294977024, %r11 - 0x0f, 0x89, 0xb4, 0xff, 0xff, 0xff, //0x00000206 jns LBB0_4 - 0xe9, 0x36, 0x38, 0x00, 0x00, //0x0000020c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000211 .p2align 4, 0x90 - //0x00000220 LBB0_6 - 0x48, 0x8b, 0x45, 0xa8, //0x00000220 movq $-88(%rbp), %rax - 0x4c, 0x8b, 0x20, //0x00000224 movq (%rax), %r12 - 0x48, 0x8b, 0x40, 0x08, //0x00000227 movq $8(%rax), %rax - 0x49, 0x8b, 0x16, //0x0000022b movq (%r14), %rdx - 0x48, 0x39, 0xc2, //0x0000022e cmpq %rax, %rdx - 0x0f, 0x83, 0x39, 0x00, 0x00, 0x00, //0x00000231 jae LBB0_11 - 0x41, 0x8a, 0x1c, 0x14, //0x00000237 movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x0000023b cmpb $13, %bl - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x0000023e je LBB0_11 - 0x80, 0xfb, 0x20, //0x00000244 cmpb $32, %bl - 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x00000247 je LBB0_11 - 0x80, 0xc3, 0xf7, //0x0000024d addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000250 cmpb $1, %bl - 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000253 jbe LBB0_11 - 0x48, 0x89, 0xd6, //0x00000259 movq %rdx, %rsi - 0xe9, 0x07, 0x01, 0x00, 0x00, //0x0000025c jmp LBB0_32 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000261 .p2align 4, 0x90 - //0x00000270 LBB0_11 - 0x48, 0x8d, 0x72, 0x01, //0x00000270 leaq $1(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x00000274 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000277 jae LBB0_15 - 0x41, 0x8a, 0x1c, 0x34, //0x0000027d movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x00000281 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000284 je LBB0_15 - 0x80, 0xfb, 0x20, //0x0000028a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000028d je LBB0_15 - 0x80, 0xc3, 0xf7, //0x00000293 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000296 cmpb $1, %bl - 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000299 ja LBB0_32 - 0x90, //0x0000029f .p2align 4, 0x90 - //0x000002a0 LBB0_15 - 0x48, 0x8d, 0x72, 0x02, //0x000002a0 leaq $2(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002a4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002a7 jae LBB0_19 - 0x41, 0x8a, 0x1c, 0x34, //0x000002ad movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002b1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002b4 je LBB0_19 - 0x80, 0xfb, 0x20, //0x000002ba cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002bd je LBB0_19 - 0x80, 0xc3, 0xf7, //0x000002c3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002c6 cmpb $1, %bl - 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x000002c9 ja LBB0_32 - 0x90, //0x000002cf .p2align 4, 0x90 - //0x000002d0 LBB0_19 - 0x48, 0x8d, 0x72, 0x03, //0x000002d0 leaq $3(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002d4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002d7 jae LBB0_23 - 0x41, 0x8a, 0x1c, 0x34, //0x000002dd movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002e1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002e4 je LBB0_23 - 0x80, 0xfb, 0x20, //0x000002ea cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ed je LBB0_23 - 0x80, 0xc3, 0xf7, //0x000002f3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002f6 cmpb $1, %bl - 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002f9 ja LBB0_32 - 0x90, //0x000002ff .p2align 4, 0x90 - //0x00000300 LBB0_23 - 0x48, 0x83, 0xc2, 0x04, //0x00000300 addq $4, %rdx - 0x48, 0x39, 0xd0, //0x00000304 cmpq %rdx, %rax - 0x0f, 0x86, 0xd0, 0x36, 0x00, 0x00, //0x00000307 jbe LBB0_603 - 0x48, 0x39, 0xd0, //0x0000030d cmpq %rdx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000310 je LBB0_29 - 0x49, 0x8d, 0x34, 0x04, //0x00000316 leaq (%r12,%rax), %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000031a .p2align 4, 0x90 - //0x00000320 LBB0_26 - 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x00000320 movsbl (%r12,%rdx), %edi - 0x83, 0xff, 0x20, //0x00000325 cmpl $32, %edi - 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x00000328 ja LBB0_31 - 0x49, 0x0f, 0xa3, 0xfb, //0x0000032e btq %rdi, %r11 - 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x00000332 jae LBB0_31 - 0x48, 0x83, 0xc2, 0x01, //0x00000338 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x0000033c cmpq %rdx, %rax - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000033f jne LBB0_26 - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000345 jmp LBB0_30 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000034a .p2align 4, 0x90 - //0x00000350 LBB0_29 - 0x4c, 0x01, 0xe2, //0x00000350 addq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00000353 movq %rdx, %rsi - //0x00000356 LBB0_30 - 0x4c, 0x29, 0xe6, //0x00000356 subq %r12, %rsi - 0x48, 0x89, 0xf2, //0x00000359 movq %rsi, %rdx - //0x0000035c LBB0_31 - 0x48, 0x89, 0xd6, //0x0000035c movq %rdx, %rsi - 0x48, 0x39, 0xc2, //0x0000035f cmpq %rax, %rdx - 0x0f, 0x83, 0x78, 0x36, 0x00, 0x00, //0x00000362 jae LBB0_604 - //0x00000368 LBB0_32 - 0x48, 0x8d, 0x46, 0x01, //0x00000368 leaq $1(%rsi), %rax - 0x49, 0x89, 0x06, //0x0000036c movq %rax, (%r14) - 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x0000036f movsbl (%r12,%rsi), %edi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000374 movq $-1, %rax - 0x85, 0xff, //0x0000037b testl %edi, %edi - 0x0f, 0x84, 0xc4, 0x36, 0x00, 0x00, //0x0000037d je LBB0_638 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000383 movq (%r13), %r9 - 0x4d, 0x8d, 0x41, 0xff, //0x00000387 leaq $-1(%r9), %r8 - 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000038b movl (%r13,%r9,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x00000390 cmpq $-1, %rcx - 0x48, 0x0f, 0x45, 0xf1, //0x00000394 cmovneq %rcx, %rsi - 0x83, 0xc3, 0xff, //0x00000398 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x0000039b cmpl $5, %ebx - 0x0f, 0x87, 0x82, 0x02, 0x00, 0x00, //0x0000039e ja LBB0_78 - 0x48, 0x8d, 0x15, 0x35, 0x39, 0x00, 0x00, //0x000003a4 leaq $14645(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000003ab movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000003af addq %rdx, %rcx - 0xff, 0xe1, //0x000003b2 jmpq *%rcx - //0x000003b4 LBB0_35 - 0x83, 0xff, 0x2c, //0x000003b4 cmpl $44, %edi - 0x0f, 0x84, 0xec, 0x04, 0x00, 0x00, //0x000003b7 je LBB0_117 - 0x83, 0xff, 0x5d, //0x000003bd cmpl $93, %edi - 0x0f, 0x84, 0x48, 0x02, 0x00, 0x00, //0x000003c0 je LBB0_37 - 0xe9, 0x75, 0x36, 0x00, 0x00, //0x000003c6 jmp LBB0_637 - //0x000003cb LBB0_38 - 0x40, 0x80, 0xff, 0x5d, //0x000003cb cmpb $93, %dil - 0x0f, 0x84, 0x39, 0x02, 0x00, 0x00, //0x000003cf je LBB0_37 - 0x48, 0x89, 0x75, 0x90, //0x000003d5 movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000003d9 movq $1, (%r13,%r9,8) - 0x83, 0xff, 0x7b, //0x000003e2 cmpl $123, %edi - 0x0f, 0x86, 0x4c, 0x02, 0x00, 0x00, //0x000003e5 jbe LBB0_79 - 0xe9, 0x50, 0x36, 0x00, 0x00, //0x000003eb jmp LBB0_637 - //0x000003f0 LBB0_40 - 0x40, 0x80, 0xff, 0x22, //0x000003f0 cmpb $34, %dil - 0x0f, 0x85, 0x46, 0x36, 0x00, 0x00, //0x000003f4 jne LBB0_637 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003fa movq $4, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x00000403 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00000407 testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x0000040a movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x7c, 0x06, 0x00, 0x00, //0x0000040e jne LBB0_125 - 0x49, 0x8b, 0x16, //0x00000414 movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00000417 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x0000041b movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x0000041f testb $32, %cl - 0x48, 0x89, 0x45, 0xa0, //0x00000422 movq %rax, $-96(%rbp) - 0x48, 0x89, 0x55, 0xb0, //0x00000426 movq %rdx, $-80(%rbp) - 0x0f, 0x85, 0x5e, 0x09, 0x00, 0x00, //0x0000042a jne LBB0_157 - 0x49, 0x89, 0xc1, //0x00000430 movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00000433 subq %rdx, %r9 - 0x0f, 0x84, 0xc2, 0x37, 0x00, 0x00, //0x00000436 je LBB0_642 - 0x49, 0x83, 0xf9, 0x40, //0x0000043c cmpq $64, %r9 - 0x0f, 0x82, 0x4a, 0x2a, 0x00, 0x00, //0x00000440 jb LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00000446 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x0000044a movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000044d notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000450 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000458 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000045b .p2align 4, 0x90 - //0x00000460 LBB0_46 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000460 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000466 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000046d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000474 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000047b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000047f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000483 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000488 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000048c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000490 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000494 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000498 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000049c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000004a0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000004a4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000004a8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000004ac pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000004b0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000004b5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000004b9 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x000004bd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000004c1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000004c5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000004c9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000004ce shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000004d2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000004d6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000004d9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000004dd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000004e0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000004e3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000004e7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000004eb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000004ee shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000004f2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000004f5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004f8 jne LBB0_55 - 0x4d, 0x85, 0xc0, //0x000004fe testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000501 jne LBB0_57 - 0x45, 0x31, 0xc0, //0x00000507 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000050a testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000050d jne LBB0_58 - //0x00000513 LBB0_49 - 0x49, 0x83, 0xc1, 0xc0, //0x00000513 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00000517 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x0000051b addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x0000051f cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000523 ja LBB0_46 - 0xe9, 0xce, 0x21, 0x00, 0x00, //0x00000529 jmp LBB0_50 - //0x0000052e LBB0_55 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000052e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000533 jne LBB0_57 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000539 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x0000053d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000540 movq %rcx, $-56(%rbp) - //0x00000544 LBB0_57 - 0x4c, 0x89, 0xc1, //0x00000544 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000547 notq %rcx - 0x4c, 0x21, 0xd9, //0x0000054a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000054d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000551 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000554 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000557 notq %rsi - 0x4c, 0x21, 0xde, //0x0000055a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000055d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000567 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x0000056a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x0000056d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000570 setb %r8b - 0x48, 0x01, 0xf6, //0x00000574 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000577 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000581 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000584 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000587 notq %rsi - 0x49, 0x21, 0xf2, //0x0000058a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x0000058d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000590 je LBB0_49 - //0x00000596 LBB0_58 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000596 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x0000059a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000059d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000005a1 movabsq $4294977024, %r11 - 0xe9, 0xd6, 0x0c, 0x00, 0x00, //0x000005ab jmp LBB0_223 - //0x000005b0 LBB0_59 - 0x40, 0x80, 0xff, 0x3a, //0x000005b0 cmpb $58, %dil - 0x0f, 0x85, 0x86, 0x34, 0x00, 0x00, //0x000005b4 jne LBB0_637 - 0x48, 0x89, 0x75, 0x90, //0x000005ba movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005be movq $0, (%r13,%r9,8) - 0xe9, 0xf4, 0xfb, 0xff, 0xff, //0x000005c7 jmp LBB0_4 - //0x000005cc LBB0_61 - 0x83, 0xff, 0x2c, //0x000005cc cmpl $44, %edi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000005cf jne LBB0_62 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000005d5 cmpq $4095, %r9 - 0x0f, 0x8f, 0x0a, 0x34, 0x00, 0x00, //0x000005dc jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000005e2 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000005e6 leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000005ea movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005ee movq $3, $8(%r13,%r9,8) - 0xe9, 0xc4, 0xfb, 0xff, 0xff, //0x000005f7 jmp LBB0_4 - //0x000005fc LBB0_63 - 0x83, 0xff, 0x22, //0x000005fc cmpl $34, %edi - 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000005ff je LBB0_64 - //0x00000605 LBB0_62 - 0x83, 0xff, 0x7d, //0x00000605 cmpl $125, %edi - 0x0f, 0x85, 0x32, 0x34, 0x00, 0x00, //0x00000608 jne LBB0_637 - //0x0000060e LBB0_37 - 0x4d, 0x89, 0x45, 0x00, //0x0000060e movq %r8, (%r13) - 0x48, 0x89, 0xf1, //0x00000612 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x00000615 movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x00000618 testq %r8, %r8 - 0x0f, 0x85, 0xff, 0xfb, 0xff, 0xff, //0x0000061b jne LBB0_6 - 0xe9, 0x21, 0x34, 0x00, 0x00, //0x00000621 jmp LBB0_638 - //0x00000626 LBB0_78 - 0x48, 0x89, 0x75, 0x90, //0x00000626 movq %rsi, $-112(%rbp) - 0x4d, 0x89, 0x45, 0x00, //0x0000062a movq %r8, (%r13) - 0x83, 0xff, 0x7b, //0x0000062e cmpl $123, %edi - 0x0f, 0x87, 0x09, 0x34, 0x00, 0x00, //0x00000631 ja LBB0_637 - //0x00000637 LBB0_79 - 0x89, 0xf9, //0x00000637 movl %edi, %ecx - 0x48, 0x8d, 0x15, 0xb8, 0x36, 0x00, 0x00, //0x00000639 leaq $14008(%rip), %rdx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00000640 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00000644 addq %rdx, %rcx - 0xff, 0xe1, //0x00000647 jmpq *%rcx - //0x00000649 LBB0_80 - 0x48, 0x8b, 0x45, 0xa8, //0x00000649 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x0000064d movq $8(%rax), %rdi - 0x49, 0x8b, 0x36, //0x00000651 movq (%r14), %rsi - 0xf6, 0x45, 0x98, 0x40, //0x00000654 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x40, 0x05, 0x00, 0x00, //0x00000658 jne LBB0_135 - 0x48, 0x8d, 0x46, 0xff, //0x0000065e leaq $-1(%rsi), %rax - 0x48, 0x29, 0xc7, //0x00000662 subq %rax, %rdi - 0x0f, 0x84, 0xc0, 0x33, 0x00, 0x00, //0x00000665 je LBB0_611 - 0x4d, 0x8d, 0x34, 0x34, //0x0000066b leaq (%r12,%rsi), %r14 - 0x49, 0x83, 0xc6, 0xff, //0x0000066f addq $-1, %r14 - 0x41, 0x80, 0x3e, 0x30, //0x00000673 cmpb $48, (%r14) - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00000677 jne LBB0_86 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x0000067d movl $1, %r13d - 0x48, 0x83, 0xff, 0x01, //0x00000683 cmpq $1, %rdi - 0x0f, 0x84, 0x5e, 0xfb, 0xff, 0xff, //0x00000687 je LBB0_3 - 0x41, 0x8a, 0x0c, 0x34, //0x0000068d movb (%r12,%rsi), %cl - 0x80, 0xc1, 0xd2, //0x00000691 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000694 cmpb $55, %cl - 0x0f, 0x87, 0x4e, 0xfb, 0xff, 0xff, //0x00000697 ja LBB0_3 - 0x0f, 0xb6, 0xc9, //0x0000069d movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000006a0 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x000006aa btq %rcx, %rdx - 0x0f, 0x83, 0x37, 0xfb, 0xff, 0xff, //0x000006ae jae LBB0_3 - //0x000006b4 LBB0_86 - 0x48, 0x89, 0x75, 0xc0, //0x000006b4 movq %rsi, $-64(%rbp) - 0x48, 0x83, 0xff, 0x10, //0x000006b8 cmpq $16, %rdi - 0x0f, 0x82, 0x14, 0x27, 0x00, 0x00, //0x000006bc jb LBB0_472 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000006c2 movq $-1, %r9 - 0x45, 0x31, 0xed, //0x000006c9 xorl %r13d, %r13d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006cc movq $-1, %r15 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000006d3 movq $-1, %r8 - 0x49, 0x89, 0xfa, //0x000006da movq %rdi, %r10 - 0x90, 0x90, 0x90, //0x000006dd .p2align 4, 0x90 - //0x000006e0 LBB0_88 - 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x2e, //0x000006e0 movdqu (%r14,%r13), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006e6 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0xae, 0xf9, 0xff, 0xff, //0x000006ea pcmpgtb $-1618(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006f2 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000006f7 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x000006fb pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006ff movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0xb5, 0xf9, 0xff, 0xff, //0x00000703 pcmpeqb $-1611(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000070b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0xb9, 0xf9, 0xff, 0xff, //0x0000070f pcmpeqb $-1607(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00000717 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000071b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000071f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0xb4, 0xf9, 0xff, 0xff, //0x00000724 pcmpeqb $-1612(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000072c pcmpeqb %xmm11, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00000731 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0xeb, 0xe3, //0x00000735 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x00000739 por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x0000073d por %xmm4, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000741 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0xd7, 0xf6, //0x00000746 pmovmskb %xmm6, %esi - 0x66, 0x0f, 0xd7, 0xcd, //0x0000074a pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x0000074e notl %ecx - 0x0f, 0xbc, 0xc9, //0x00000750 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00000753 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000756 je LBB0_90 - 0xbb, 0xff, 0xff, 0xff, 0xff, //0x0000075c movl $-1, %ebx - 0xd3, 0xe3, //0x00000761 shll %cl, %ebx - 0xf7, 0xd3, //0x00000763 notl %ebx - 0x41, 0x21, 0xdb, //0x00000765 andl %ebx, %r11d - 0x21, 0xda, //0x00000768 andl %ebx, %edx - 0x21, 0xf3, //0x0000076a andl %esi, %ebx - 0x89, 0xde, //0x0000076c movl %ebx, %esi - //0x0000076e LBB0_90 - 0x41, 0x8d, 0x5b, 0xff, //0x0000076e leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000772 andl %r11d, %ebx - 0x0f, 0x85, 0x12, 0x1f, 0x00, 0x00, //0x00000775 jne LBB0_429 - 0x8d, 0x5a, 0xff, //0x0000077b leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x0000077e andl %edx, %ebx - 0x0f, 0x85, 0x07, 0x1f, 0x00, 0x00, //0x00000780 jne LBB0_429 - 0x8d, 0x5e, 0xff, //0x00000786 leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000789 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x1e, 0x00, 0x00, //0x0000078b jne LBB0_429 - 0x45, 0x85, 0xdb, //0x00000791 testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000794 je LBB0_96 - 0x41, 0x0f, 0xbc, 0xdb, //0x0000079a bsfl %r11d, %ebx - 0x49, 0x83, 0xf8, 0xff, //0x0000079e cmpq $-1, %r8 - 0x0f, 0x85, 0x75, 0x22, 0x00, 0x00, //0x000007a2 jne LBB0_436 - 0x4c, 0x01, 0xeb, //0x000007a8 addq %r13, %rbx - 0x49, 0x89, 0xd8, //0x000007ab movq %rbx, %r8 - //0x000007ae LBB0_96 - 0x85, 0xd2, //0x000007ae testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007b0 je LBB0_99 - 0x0f, 0xbc, 0xd2, //0x000007b6 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000007b9 cmpq $-1, %r15 - 0x0f, 0x85, 0xd1, 0x20, 0x00, 0x00, //0x000007bd jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007c3 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000007c6 movq %rdx, %r15 - //0x000007c9 LBB0_99 - 0x85, 0xf6, //0x000007c9 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007cb je LBB0_102 - 0x0f, 0xbc, 0xd6, //0x000007d1 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x000007d4 cmpq $-1, %r9 - 0x0f, 0x85, 0xb6, 0x20, 0x00, 0x00, //0x000007d8 jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007de addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x000007e1 movq %rdx, %r9 - //0x000007e4 LBB0_102 - 0x83, 0xf9, 0x10, //0x000007e4 cmpl $16, %ecx - 0x0f, 0x85, 0xbb, 0x07, 0x00, 0x00, //0x000007e7 jne LBB0_183 - 0x49, 0x83, 0xc2, 0xf0, //0x000007ed addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000007f1 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000007f5 cmpq $15, %r10 - 0x0f, 0x87, 0xe1, 0xfe, 0xff, 0xff, //0x000007f9 ja LBB0_88 - 0x4b, 0x8d, 0x0c, 0x2e, //0x000007ff leaq (%r14,%r13), %rcx - 0x49, 0x89, 0xcb, //0x00000803 movq %rcx, %r11 - 0x4c, 0x39, 0xef, //0x00000806 cmpq %r13, %rdi - 0x0f, 0x84, 0xa2, 0x07, 0x00, 0x00, //0x00000809 je LBB0_184 - //0x0000080f LBB0_105 - 0x4e, 0x8d, 0x1c, 0x11, //0x0000080f leaq (%rcx,%r10), %r11 - 0x48, 0x89, 0xca, //0x00000813 movq %rcx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00000816 subq $-64(%rbp), %rdx - 0x4c, 0x29, 0xe2, //0x0000081a subq %r12, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x0000081d addq $1, %rdx - 0x31, 0xff, //0x00000821 xorl %edi, %edi - 0x4c, 0x8d, 0x2d, 0x2a, 0x37, 0x00, 0x00, //0x00000823 leaq $14122(%rip), %r13 /* LJTI0_3+0(%rip) */ - 0xe9, 0x2e, 0x00, 0x00, 0x00, //0x0000082a jmp LBB0_110 - //0x0000082f LBB0_106 - 0x83, 0xfe, 0x65, //0x0000082f cmpl $101, %esi - 0x0f, 0x85, 0xbc, 0x09, 0x00, 0x00, //0x00000832 jne LBB0_212 - //0x00000838 LBB0_107 - 0x49, 0x83, 0xff, 0xff, //0x00000838 cmpq $-1, %r15 - 0x0f, 0x85, 0x76, 0x1e, 0x00, 0x00, //0x0000083c jne LBB0_433 - 0x4c, 0x8d, 0x3c, 0x3a, //0x00000842 leaq (%rdx,%rdi), %r15 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000846 .p2align 4, 0x90 - //0x00000850 LBB0_109 - 0x48, 0x83, 0xc7, 0x01, //0x00000850 addq $1, %rdi - 0x49, 0x39, 0xfa, //0x00000854 cmpq %rdi, %r10 - 0x0f, 0x84, 0x54, 0x07, 0x00, 0x00, //0x00000857 je LBB0_184 - //0x0000085d LBB0_110 - 0x0f, 0xbe, 0x34, 0x39, //0x0000085d movsbl (%rcx,%rdi), %esi - 0x8d, 0x5e, 0xd0, //0x00000861 leal $-48(%rsi), %ebx - 0x83, 0xfb, 0x0a, //0x00000864 cmpl $10, %ebx - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000867 jb LBB0_109 - 0x8d, 0x5e, 0xd5, //0x0000086d leal $-43(%rsi), %ebx - 0x83, 0xfb, 0x1a, //0x00000870 cmpl $26, %ebx - 0x0f, 0x87, 0xb6, 0xff, 0xff, 0xff, //0x00000873 ja LBB0_106 - 0x49, 0x63, 0x74, 0x9d, 0x00, //0x00000879 movslq (%r13,%rbx,4), %rsi - 0x4c, 0x01, 0xee, //0x0000087e addq %r13, %rsi - 0xff, 0xe6, //0x00000881 jmpq *%rsi - //0x00000883 LBB0_113 - 0x49, 0x83, 0xf9, 0xff, //0x00000883 cmpq $-1, %r9 - 0x0f, 0x85, 0x2b, 0x1e, 0x00, 0x00, //0x00000887 jne LBB0_433 - 0x4c, 0x8d, 0x0c, 0x3a, //0x0000088d leaq (%rdx,%rdi), %r9 - 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00000891 jmp LBB0_109 - //0x00000896 LBB0_115 - 0x49, 0x83, 0xf8, 0xff, //0x00000896 cmpq $-1, %r8 - 0x0f, 0x85, 0x18, 0x1e, 0x00, 0x00, //0x0000089a jne LBB0_433 - 0x4c, 0x8d, 0x04, 0x3a, //0x000008a0 leaq (%rdx,%rdi), %r8 - 0xe9, 0xa7, 0xff, 0xff, 0xff, //0x000008a4 jmp LBB0_109 - //0x000008a9 LBB0_117 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000008a9 cmpq $4095, %r9 - 0x0f, 0x8f, 0x36, 0x31, 0x00, 0x00, //0x000008b0 jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000008b6 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000008ba leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000008be movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x000008c2 movq $0, $8(%r13,%r9,8) - 0xe9, 0xf0, 0xf8, 0xff, 0xff, //0x000008cb jmp LBB0_4 - //0x000008d0 LBB0_64 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x000008d0 movq $2, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x000008d9 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x000008dd testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x000008e0 movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x9a, 0x03, 0x00, 0x00, //0x000008e4 jne LBB0_147 - 0x49, 0x8b, 0x16, //0x000008ea movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x000008ed movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x000008f1 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x000008f5 testb $32, %cl - 0x48, 0x89, 0xd1, //0x000008f8 movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x000008fb movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x000008ff movq %rax, $-96(%rbp) - 0x49, 0x89, 0xc1, //0x00000903 movq %rax, %r9 - 0x0f, 0x85, 0xba, 0x06, 0x00, 0x00, //0x00000906 jne LBB0_186 - 0x49, 0x29, 0xd1, //0x0000090c subq %rdx, %r9 - 0x0f, 0x84, 0x23, 0x33, 0x00, 0x00, //0x0000090f je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00000915 cmpq $64, %r9 - 0x0f, 0x82, 0x30, 0x26, 0x00, 0x00, //0x00000919 jb LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x0000091f movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00000923 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x00000926 notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000929 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000931 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000934 .p2align 4, 0x90 - //0x00000940 LBB0_69 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000940 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000946 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000094d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000954 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000095b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000095f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000963 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000968 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000096c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000970 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000974 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000978 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000097c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x00000980 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000984 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00000988 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x0000098c pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000990 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x00000995 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000999 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x0000099d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000009a1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000009a5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000009a9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000009ae shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000009b2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000009b6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000009b9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000009bd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000009c0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000009c3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000009c7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000009cb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000009ce shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000009d2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000009d5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000009d8 jne LBB0_121 - 0x4d, 0x85, 0xc0, //0x000009de testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000009e1 jne LBB0_123 - 0x45, 0x31, 0xc0, //0x000009e7 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x000009ea testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000009ed jne LBB0_124 - //0x000009f3 LBB0_72 - 0x49, 0x83, 0xc1, 0xc0, //0x000009f3 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x000009f7 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x000009fb addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x000009ff cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000a03 ja LBB0_69 - 0xe9, 0x8d, 0x1e, 0x00, 0x00, //0x00000a09 jmp LBB0_73 - //0x00000a0e LBB0_121 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000a0e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000a13 jne LBB0_123 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000a19 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00000a1d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000a20 movq %rcx, $-56(%rbp) - //0x00000a24 LBB0_123 - 0x4c, 0x89, 0xc1, //0x00000a24 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000a27 notq %rcx - 0x4c, 0x21, 0xd9, //0x00000a2a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000a2d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000a31 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000a34 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a37 notq %rsi - 0x4c, 0x21, 0xde, //0x00000a3a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a3d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000a47 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00000a4a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00000a4d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000a50 setb %r8b - 0x48, 0x01, 0xf6, //0x00000a54 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a57 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000a61 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000a64 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a67 notq %rsi - 0x49, 0x21, 0xf2, //0x00000a6a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x00000a6d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a70 je LBB0_72 - //0x00000a76 LBB0_124 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000a76 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x00000a7a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000a7d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a81 movabsq $4294977024, %r11 - 0xe9, 0x73, 0x0d, 0x00, 0x00, //0x00000a8b jmp LBB0_304 - //0x00000a90 LBB0_125 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000a90 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000a94 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000a98 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000a9b leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000a9f subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000aa2 cmpq $32, %r9 - 0x0f, 0x8c, 0xbc, 0x1b, 0x00, 0x00, //0x00000aa6 jl LBB0_134 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000aac movl $32, %r14d - 0x31, 0xd2, //0x00000ab2 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ab4 xorl %r11d, %r11d - 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x00000ab7 jmp LBB0_127 - 0x90, 0x90, 0x90, 0x90, //0x00000abc .p2align 4, 0x90 - //0x00000ac0 LBB0_130 - 0x45, 0x31, 0xdb, //0x00000ac0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000ac3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000ac6 jne LBB0_129 - //0x00000acc LBB0_131 - 0x48, 0x83, 0xc2, 0x20, //0x00000acc addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00000ad0 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00000ad4 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00000ad8 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00000adc cmpq $63, %rcx - 0x0f, 0x8e, 0x65, 0x1b, 0x00, 0x00, //0x00000ae0 jle LBB0_132 - //0x00000ae6 LBB0_127 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x12, //0x00000ae6 movdqu (%r10,%rdx), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x12, 0x10, //0x00000aec movdqu $16(%r10,%rdx), %xmm5 - 0x66, 0x0f, 0x6f, 0xf4, //0x00000af3 movdqa %xmm4, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000af7 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xf6, //0x00000afb pmovmskb %xmm6, %esi - 0x66, 0x0f, 0x6f, 0xf5, //0x00000aff movdqa %xmm5, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000b03 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00000b07 pmovmskb %xmm6, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000b0b shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000b0f orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xe1, //0x00000b12 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000b16 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x00000b1a pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000b1e pmovmskb %xmm5, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000b22 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000b26 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000b29 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00000b2c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000b2f je LBB0_130 - 0x44, 0x89, 0xd9, //0x00000b35 movl %r11d, %ecx - 0xf7, 0xd1, //0x00000b38 notl %ecx - 0x21, 0xf1, //0x00000b3a andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00000b3c leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00000b40 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000b43 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000b46 notl %ebx - 0x21, 0xf3, //0x00000b48 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000b4a andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00000b50 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000b53 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00000b55 setb %r11b - 0x01, 0xdb, //0x00000b59 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000b5b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000b61 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000b64 notl %ebx - 0x21, 0xdf, //0x00000b66 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000b68 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b6b je LBB0_131 - //0x00000b71 LBB0_129 - 0x0f, 0xbc, 0xc7, //0x00000b71 bsfl %edi, %eax - 0x4c, 0x01, 0xc0, //0x00000b74 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000b77 leaq (%rdx,%rax), %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00000b7b addq $1, %r10 - 0x4c, 0x8b, 0x75, 0xd0, //0x00000b7f movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000b83 movabsq $4294977024, %r11 - 0x4d, 0x89, 0x16, //0x00000b8d movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x00000b90 testq %r8, %r8 - 0x0f, 0x8f, 0x27, 0xf6, 0xff, 0xff, //0x00000b93 jg LBB0_4 - 0xe9, 0x63, 0x2e, 0x00, 0x00, //0x00000b99 jmp LBB0_608 - //0x00000b9e LBB0_135 - 0x48, 0x89, 0xf9, //0x00000b9e movq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00000ba1 subq %rsi, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x00000ba4 cmpq $16, %rcx - 0x0f, 0x82, 0x0d, 0x22, 0x00, 0x00, //0x00000ba8 jb LBB0_470 - 0x48, 0x89, 0xf1, //0x00000bae movq %rsi, %rcx - 0x48, 0xf7, 0xd9, //0x00000bb1 negq %rcx - 0x48, 0x89, 0xf0, //0x00000bb4 movq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bb7 .p2align 4, 0x90 - //0x00000bc0 LBB0_137 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000bc0 movdqu (%r12,%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00000bc6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000bca pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000bcf pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00000bd4 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00000bd8 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00000bdc pmovmskb %xmm3, %edx - 0x85, 0xd2, //0x00000be0 testl %edx, %edx - 0x0f, 0x85, 0xbe, 0xf5, 0xff, 0xff, //0x00000be2 jne LBB0_613 - 0x48, 0x83, 0xc0, 0x10, //0x00000be8 addq $16, %rax - 0x48, 0x8d, 0x14, 0x0f, //0x00000bec leaq (%rdi,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xf0, //0x00000bf0 addq $-16, %rdx - 0x48, 0x83, 0xc1, 0xf0, //0x00000bf4 addq $-16, %rcx - 0x48, 0x83, 0xfa, 0x0f, //0x00000bf8 cmpq $15, %rdx - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000bfc ja LBB0_137 - 0x4c, 0x89, 0xe0, //0x00000c02 movq %r12, %rax - 0x48, 0x29, 0xc8, //0x00000c05 subq %rcx, %rax - 0x48, 0x01, 0xcf, //0x00000c08 addq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x00000c0b movq %rdi, %rcx - 0x48, 0x85, 0xc9, //0x00000c0e testq %rcx, %rcx - 0x0f, 0x84, 0xb1, 0x21, 0x00, 0x00, //0x00000c11 je LBB0_471 - //0x00000c17 LBB0_140 - 0x48, 0x8d, 0x3c, 0x08, //0x00000c17 leaq (%rax,%rcx), %rdi - 0x31, 0xd2, //0x00000c1b xorl %edx, %edx - //0x00000c1d LBB0_141 - 0x0f, 0xb6, 0x1c, 0x10, //0x00000c1d movzbl (%rax,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000c21 cmpb $44, %bl - 0x0f, 0x84, 0x4c, 0x1a, 0x00, 0x00, //0x00000c24 je LBB0_428 - 0x80, 0xfb, 0x7d, //0x00000c2a cmpb $125, %bl - 0x0f, 0x84, 0x43, 0x1a, 0x00, 0x00, //0x00000c2d je LBB0_428 - 0x80, 0xfb, 0x5d, //0x00000c33 cmpb $93, %bl - 0x0f, 0x84, 0x3a, 0x1a, 0x00, 0x00, //0x00000c36 je LBB0_428 - 0x48, 0x83, 0xc2, 0x01, //0x00000c3c addq $1, %rdx - 0x48, 0x39, 0xd1, //0x00000c40 cmpq %rdx, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000c43 jne LBB0_141 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00000c49 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00000c4e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf8, //0x00000c52 movq %rdi, %rax - //0x00000c55 LBB0_146 - 0x4c, 0x29, 0xe0, //0x00000c55 subq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000c58 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000c5c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c60 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00000c6a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00000c6e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x06, //0x00000c73 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x00000c76 testq %rsi, %rsi - 0x0f, 0x8f, 0x41, 0xf5, 0xff, 0xff, //0x00000c79 jg LBB0_4 - 0xe9, 0xd5, 0x2d, 0x00, 0x00, //0x00000c7f jmp LBB0_614 - //0x00000c84 LBB0_147 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000c84 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000c88 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000c8c movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000c8f leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000c93 subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000c96 cmpq $32, %r9 - 0x0f, 0x8c, 0x4e, 0x1a, 0x00, 0x00, //0x00000c9a jl LBB0_156 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000ca0 movl $32, %r14d - 0x31, 0xd2, //0x00000ca6 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ca8 xorl %r11d, %r11d - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000cab jmp LBB0_149 - //0x00000cb0 .p2align 4, 0x90 - //0x00000cb0 LBB0_152 + 0x48, 0xc7, 0x45, 0x90, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, $-112(%rbp) + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000134 movabsq $4294977024, %r11 + 0xf3, 0x0f, 0x6f, 0x05, 0xca, 0xfe, 0xff, 0xff, //0x0000013e movdqu $-310(%rip), %xmm0 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xd2, 0xfe, 0xff, 0xff, //0x00000146 movdqu $-302(%rip), %xmm1 /* LCPI0_2+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xd9, 0xfe, 0xff, 0xff, //0x0000014e movdqu $-295(%rip), %xmm12 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000157 pcmpeqd %xmm10, %xmm10 + 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4b, 0xff, 0xff, 0xff, //0x0000015c movdqu $-181(%rip), %xmm15 /* LCPI0_11+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x22, 0xff, 0xff, 0xff, //0x00000165 movdqu $-222(%rip), %xmm9 /* LCPI0_9+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x79, 0xff, 0xff, 0xff, //0x0000016e movdqu $-135(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x00, 0xff, 0xff, 0xff, //0x00000177 movdqu $-256(%rip), %xmm14 /* LCPI0_8+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0xe8, 0xfe, 0xff, 0xff, //0x00000180 movdqu $-280(%rip), %xmm2 /* LCPI0_7+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xaf, 0xfe, 0xff, 0xff, //0x00000188 movdqu $-337(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb6, 0xfe, 0xff, 0xff, //0x00000191 movdqu $-330(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x48, 0x89, 0x75, 0xd0, //0x0000019a movq %rsi, $-48(%rbp) + 0x48, 0x89, 0x55, 0xb0, //0x0000019e movq %rdx, $-80(%rbp) + 0xe9, 0x3d, 0x00, 0x00, 0x00, //0x000001a2 jmp LBB0_6 + //0x000001a7 LBB0_1 + 0x0f, 0xbc, 0xc3, //0x000001a7 bsfl %ebx, %eax + 0x4c, 0x01, 0xc0, //0x000001aa addq %r8, %rax + 0x4c, 0x8d, 0x14, 0x06, //0x000001ad leaq (%rsi,%rax), %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000001b1 addq $1, %r10 + 0x4c, 0x8b, 0x75, 0xd0, //0x000001b5 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001b9 movabsq $4294977024, %r11 + //0x000001c3 LBB0_2 + 0x4d, 0x89, 0x16, //0x000001c3 movq %r10, (%r14) + //0x000001c6 LBB0_3 + 0x4d, 0x85, 0xc0, //0x000001c6 testq %r8, %r8 + 0x0f, 0x8e, 0x8d, 0x38, 0x00, 0x00, //0x000001c9 jle LBB0_622 + 0x90, //0x000001cf .p2align 4, 0x90 + //0x000001d0 LBB0_4 + 0x4d, 0x8b, 0x45, 0x00, //0x000001d0 movq (%r13), %r8 + 0x48, 0x8b, 0x55, 0x90, //0x000001d4 movq $-112(%rbp), %rdx + 0x48, 0x89, 0xd0, //0x000001d8 movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000001db testq %r8, %r8 + 0x0f, 0x84, 0xcb, 0x38, 0x00, 0x00, //0x000001de je LBB0_650 + //0x000001e4 LBB0_6 + 0x48, 0x8b, 0x4d, 0x90, //0x000001e4 movq $-112(%rbp), %rcx + 0x48, 0x8b, 0x45, 0xa8, //0x000001e8 movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x20, //0x000001ec movq (%rax), %r12 + 0x48, 0x8b, 0x40, 0x08, //0x000001ef movq $8(%rax), %rax + 0x49, 0x8b, 0x36, //0x000001f3 movq (%r14), %rsi + 0x48, 0x39, 0xc6, //0x000001f6 cmpq %rax, %rsi + 0x0f, 0x83, 0x31, 0x00, 0x00, 0x00, //0x000001f9 jae LBB0_11 + 0x41, 0x8a, 0x14, 0x34, //0x000001ff movb (%r12,%rsi), %dl + 0x80, 0xfa, 0x0d, //0x00000203 cmpb $13, %dl + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00000206 je LBB0_11 + 0x80, 0xfa, 0x20, //0x0000020c cmpb $32, %dl + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x0000020f je LBB0_11 + 0x80, 0xc2, 0xf7, //0x00000215 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000218 cmpb $1, %dl + 0x0f, 0x86, 0x0f, 0x00, 0x00, 0x00, //0x0000021b jbe LBB0_11 + 0x48, 0x89, 0xf2, //0x00000221 movq %rsi, %rdx + 0xe9, 0xff, 0x00, 0x00, 0x00, //0x00000224 jmp LBB0_32 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000229 .p2align 4, 0x90 + //0x00000230 LBB0_11 + 0x48, 0x8d, 0x56, 0x01, //0x00000230 leaq $1(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000234 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000237 jae LBB0_15 + 0x41, 0x8a, 0x1c, 0x14, //0x0000023d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000241 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000244 je LBB0_15 + 0x80, 0xfb, 0x20, //0x0000024a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000024d je LBB0_15 + 0x80, 0xc3, 0xf7, //0x00000253 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000256 cmpb $1, %bl + 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000259 ja LBB0_32 + 0x90, //0x0000025f .p2align 4, 0x90 + //0x00000260 LBB0_15 + 0x48, 0x8d, 0x56, 0x02, //0x00000260 leaq $2(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000264 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000267 jae LBB0_19 + 0x41, 0x8a, 0x1c, 0x14, //0x0000026d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000271 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000274 je LBB0_19 + 0x80, 0xfb, 0x20, //0x0000027a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000027d je LBB0_19 + 0x80, 0xc3, 0xf7, //0x00000283 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000286 cmpb $1, %bl + 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x00000289 ja LBB0_32 + 0x90, //0x0000028f .p2align 4, 0x90 + //0x00000290 LBB0_19 + 0x48, 0x8d, 0x56, 0x03, //0x00000290 leaq $3(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000294 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000297 jae LBB0_23 + 0x41, 0x8a, 0x1c, 0x14, //0x0000029d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000002a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002a4 je LBB0_23 + 0x80, 0xfb, 0x20, //0x000002aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ad je LBB0_23 + 0x80, 0xc3, 0xf7, //0x000002b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000002b6 cmpb $1, %bl + 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002b9 ja LBB0_32 + 0x90, //0x000002bf .p2align 4, 0x90 + //0x000002c0 LBB0_23 + 0x48, 0x83, 0xc6, 0x04, //0x000002c0 addq $4, %rsi + 0x48, 0x39, 0xf0, //0x000002c4 cmpq %rsi, %rax + 0x0f, 0x86, 0x74, 0x37, 0x00, 0x00, //0x000002c7 jbe LBB0_619 + 0x48, 0x39, 0xf0, //0x000002cd cmpq %rsi, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000002d0 je LBB0_29 + 0x49, 0x8d, 0x14, 0x04, //0x000002d6 leaq (%r12,%rax), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000002da .p2align 4, 0x90 + //0x000002e0 LBB0_26 + 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x000002e0 movsbl (%r12,%rsi), %edi + 0x83, 0xff, 0x20, //0x000002e5 cmpl $32, %edi + 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x000002e8 ja LBB0_31 + 0x49, 0x0f, 0xa3, 0xfb, //0x000002ee btq %rdi, %r11 + 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x000002f2 jae LBB0_31 + 0x48, 0x83, 0xc6, 0x01, //0x000002f8 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x000002fc cmpq %rsi, %rax + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002ff jne LBB0_26 + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000305 jmp LBB0_30 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000030a .p2align 4, 0x90 + //0x00000310 LBB0_29 + 0x4c, 0x01, 0xe6, //0x00000310 addq %r12, %rsi + 0x48, 0x89, 0xf2, //0x00000313 movq %rsi, %rdx + //0x00000316 LBB0_30 + 0x4c, 0x29, 0xe2, //0x00000316 subq %r12, %rdx + 0x48, 0x89, 0xd6, //0x00000319 movq %rdx, %rsi + //0x0000031c LBB0_31 + 0x48, 0x89, 0xf2, //0x0000031c movq %rsi, %rdx + 0x48, 0x39, 0xc6, //0x0000031f cmpq %rax, %rsi + 0x0f, 0x83, 0x1c, 0x37, 0x00, 0x00, //0x00000322 jae LBB0_620 + //0x00000328 LBB0_32 + 0x48, 0x8d, 0x42, 0x01, //0x00000328 leaq $1(%rdx), %rax + 0x49, 0x89, 0x06, //0x0000032c movq %rax, (%r14) + 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x0000032f movsbl (%r12,%rdx), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000334 movq $-1, %rax + 0x85, 0xff, //0x0000033b testl %edi, %edi + 0x0f, 0x84, 0x6c, 0x37, 0x00, 0x00, //0x0000033d je LBB0_650 + 0x4d, 0x8b, 0x4d, 0x00, //0x00000343 movq (%r13), %r9 + 0x4d, 0x8d, 0x41, 0xff, //0x00000347 leaq $-1(%r9), %r8 + 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000034b movl (%r13,%r9,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x00000350 cmpq $-1, %rcx + 0x48, 0x0f, 0x45, 0xd1, //0x00000354 cmovneq %rcx, %rdx + 0x83, 0xc3, 0xff, //0x00000358 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x0000035b cmpl $5, %ebx + 0x48, 0x89, 0x55, 0x90, //0x0000035e movq %rdx, $-112(%rbp) + 0x0f, 0x87, 0x73, 0x02, 0x00, 0x00, //0x00000362 ja LBB0_78 + 0x48, 0x8d, 0x35, 0xdd, 0x39, 0x00, 0x00, //0x00000368 leaq $14813(%rip), %rsi /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9e, //0x0000036f movslq (%rsi,%rbx,4), %rcx + 0x48, 0x01, 0xf1, //0x00000373 addq %rsi, %rcx + 0xff, 0xe1, //0x00000376 jmpq *%rcx + //0x00000378 LBB0_35 + 0x83, 0xff, 0x2c, //0x00000378 cmpl $44, %edi + 0x0f, 0x84, 0xf0, 0x04, 0x00, 0x00, //0x0000037b je LBB0_117 + 0x83, 0xff, 0x5d, //0x00000381 cmpl $93, %edi + 0x0f, 0x84, 0x3c, 0x02, 0x00, 0x00, //0x00000384 je LBB0_37 + 0xe9, 0x19, 0x37, 0x00, 0x00, //0x0000038a jmp LBB0_649 + //0x0000038f LBB0_38 + 0x40, 0x80, 0xff, 0x5d, //0x0000038f cmpb $93, %dil + 0x0f, 0x84, 0x2d, 0x02, 0x00, 0x00, //0x00000393 je LBB0_37 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000399 movq $1, (%r13,%r9,8) + 0x83, 0xff, 0x7b, //0x000003a2 cmpl $123, %edi + 0x0f, 0x86, 0x3d, 0x02, 0x00, 0x00, //0x000003a5 jbe LBB0_79 + 0xe9, 0xf8, 0x36, 0x00, 0x00, //0x000003ab jmp LBB0_649 + //0x000003b0 LBB0_40 + 0x40, 0x80, 0xff, 0x22, //0x000003b0 cmpb $34, %dil + 0x0f, 0x85, 0xee, 0x36, 0x00, 0x00, //0x000003b4 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003ba movq $4, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x000003c3 movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000003c7 testb $64, %cl + 0x0f, 0x85, 0x74, 0x06, 0x00, 0x00, //0x000003ca jne LBB0_125 + 0x49, 0x8b, 0x16, //0x000003d0 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000003d3 movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000003d7 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000003db testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000003de movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000003e2 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xa2, 0x09, 0x00, 0x00, //0x000003e6 jne LBB0_162 + 0x49, 0x89, 0xc1, //0x000003ec movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000003ef subq %rdx, %r9 + 0x0f, 0x84, 0x71, 0x38, 0x00, 0x00, //0x000003f2 je LBB0_656 + 0x49, 0x83, 0xf9, 0x40, //0x000003f8 cmpq $64, %r9 + 0x0f, 0x82, 0xd5, 0x2a, 0x00, 0x00, //0x000003fc jb LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00000402 movq $-64(%rbp), %rax + 0x49, 0x89, 0xc6, //0x00000406 movq %rax, %r14 + 0x49, 0xf7, 0xd6, //0x00000409 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000040c movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00000414 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000417 .p2align 4, 0x90 + //0x00000420 LBB0_46 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000420 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000426 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000042d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000434 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000043b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000043f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000443 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000448 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000044c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000450 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000454 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000458 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000045c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000460 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000464 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000468 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000046c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000470 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000475 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000479 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000047d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000481 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000485 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000489 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000048e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000492 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000496 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000499 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000049d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x000004a0 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000004a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000004a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000004ab orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000004ae shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000004b2 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x000004b5 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004b8 jne LBB0_55 + 0x4d, 0x85, 0xc0, //0x000004be testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000004c1 jne LBB0_57 + 0x45, 0x31, 0xc0, //0x000004c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000004ca testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000004cd jne LBB0_58 + //0x000004d3 LBB0_49 + 0x49, 0x83, 0xc1, 0xc0, //0x000004d3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000004d7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000004db addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000004df cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000004e3 ja LBB0_46 + 0xe9, 0x56, 0x22, 0x00, 0x00, //0x000004e9 jmp LBB0_50 + //0x000004ee LBB0_55 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000004ee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000004f3 jne LBB0_57 + 0x49, 0x0f, 0xbc, 0xcb, //0x000004f9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000004fd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000500 movq %rcx, $-56(%rbp) + //0x00000504 LBB0_57 + 0x4c, 0x89, 0xc1, //0x00000504 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000507 notq %rcx + 0x4c, 0x21, 0xd9, //0x0000050a andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000050d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00000511 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00000514 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000517 notq %rsi + 0x4c, 0x21, 0xde, //0x0000051a andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000051d movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00000527 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x0000052a xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x0000052d addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000530 setb %r8b + 0x48, 0x01, 0xf6, //0x00000534 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000537 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000541 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000544 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000547 notq %rsi + 0x49, 0x21, 0xf2, //0x0000054a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x0000054d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000550 je LBB0_49 + //0x00000556 LBB0_58 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000556 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000055a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000055d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000561 movabsq $4294977024, %r11 + 0xe9, 0xff, 0x0c, 0x00, 0x00, //0x0000056b jmp LBB0_229 + //0x00000570 LBB0_59 + 0x40, 0x80, 0xff, 0x3a, //0x00000570 cmpb $58, %dil + 0x0f, 0x85, 0x2e, 0x35, 0x00, 0x00, //0x00000574 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0000057a movq $0, (%r13,%r9,8) + 0xe9, 0x48, 0xfc, 0xff, 0xff, //0x00000583 jmp LBB0_4 + //0x00000588 LBB0_61 + 0x83, 0xff, 0x2c, //0x00000588 cmpl $44, %edi + 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000058b jne LBB0_62 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000591 cmpq $4095, %r9 + 0x0f, 0x8f, 0xb2, 0x34, 0x00, 0x00, //0x00000598 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000059e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x000005a2 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005a6 movq $3, $8(%r13,%r9,8) + 0xe9, 0x1c, 0xfc, 0xff, 0xff, //0x000005af jmp LBB0_4 + //0x000005b4 LBB0_63 + 0x83, 0xff, 0x22, //0x000005b4 cmpl $34, %edi + 0x0f, 0x84, 0xd7, 0x02, 0x00, 0x00, //0x000005b7 je LBB0_64 + //0x000005bd LBB0_62 + 0x83, 0xff, 0x7d, //0x000005bd cmpl $125, %edi + 0x0f, 0x85, 0xe2, 0x34, 0x00, 0x00, //0x000005c0 jne LBB0_649 + //0x000005c6 LBB0_37 + 0x4d, 0x89, 0x45, 0x00, //0x000005c6 movq %r8, (%r13) + 0x48, 0x89, 0xd0, //0x000005ca movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000005cd testq %r8, %r8 + 0x0f, 0x85, 0x0e, 0xfc, 0xff, 0xff, //0x000005d0 jne LBB0_6 + 0xe9, 0xd4, 0x34, 0x00, 0x00, //0x000005d6 jmp LBB0_650 + //0x000005db LBB0_78 + 0x4d, 0x89, 0x45, 0x00, //0x000005db movq %r8, (%r13) + 0x83, 0xff, 0x7b, //0x000005df cmpl $123, %edi + 0x0f, 0x87, 0xc0, 0x34, 0x00, 0x00, //0x000005e2 ja LBB0_649 + //0x000005e8 LBB0_79 + 0x89, 0xf9, //0x000005e8 movl %edi, %ecx + 0x48, 0x8d, 0x15, 0x73, 0x37, 0x00, 0x00, //0x000005ea leaq $14195(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000005f1 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000005f5 addq %rdx, %rcx + 0xff, 0xe1, //0x000005f8 jmpq *%rcx + //0x000005fa LBB0_80 + 0x4c, 0x89, 0xf0, //0x000005fa movq %r14, %rax + 0x48, 0x8b, 0x4d, 0xa8, //0x000005fd movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x71, 0x08, //0x00000601 movq $8(%rcx), %r14 + 0x4c, 0x8b, 0x00, //0x00000605 movq (%rax), %r8 + 0xf6, 0x45, 0x98, 0x40, //0x00000608 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x14, 0x05, 0x00, 0x00, //0x0000060c jne LBB0_134 + 0x49, 0x8d, 0x40, 0xff, //0x00000612 leaq $-1(%r8), %rax + 0x49, 0x29, 0xc6, //0x00000616 subq %rax, %r14 + 0x4c, 0x89, 0x45, 0xc0, //0x00000619 movq %r8, $-64(%rbp) + 0x0f, 0x84, 0x6c, 0x34, 0x00, 0x00, //0x0000061d je LBB0_625 + 0x4b, 0x8d, 0x3c, 0x04, //0x00000623 leaq (%r12,%r8), %rdi + 0x48, 0x83, 0xc7, 0xff, //0x00000627 addq $-1, %rdi + 0x80, 0x3f, 0x30, //0x0000062b cmpb $48, (%rdi) + 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x0000062e jne LBB0_86 + 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000634 movl $1, %r13d + 0x49, 0x83, 0xfe, 0x01, //0x0000063a cmpq $1, %r14 + 0x0f, 0x84, 0xb9, 0x20, 0x00, 0x00, //0x0000063e je LBB0_452 + 0x48, 0x8b, 0x4d, 0xc0, //0x00000644 movq $-64(%rbp), %rcx + 0x41, 0x8a, 0x0c, 0x0c, //0x00000648 movb (%r12,%rcx), %cl + 0x80, 0xc1, 0xd2, //0x0000064c addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000064f cmpb $55, %cl + 0x0f, 0x87, 0xa5, 0x20, 0x00, 0x00, //0x00000652 ja LBB0_452 + 0x0f, 0xb6, 0xc9, //0x00000658 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x0000065b movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00000665 btq %rcx, %rdx + 0x0f, 0x83, 0x8e, 0x20, 0x00, 0x00, //0x00000669 jae LBB0_452 + //0x0000066f LBB0_86 + 0x49, 0x83, 0xfe, 0x10, //0x0000066f cmpq $16, %r14 + 0x48, 0x89, 0x7d, 0xb8, //0x00000673 movq %rdi, $-72(%rbp) + 0x0f, 0x82, 0xa0, 0x27, 0x00, 0x00, //0x00000677 jb LBB0_490 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000067d movq $-1, %r10 + 0x45, 0x31, 0xed, //0x00000684 xorl %r13d, %r13d + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000687 movq $-1, %r15 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000068e movq $-1, %r8 + 0x4d, 0x89, 0xf3, //0x00000695 movq %r14, %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000698 .p2align 4, 0x90 + //0x000006a0 LBB0_88 + 0xf3, 0x42, 0x0f, 0x6f, 0x1c, 0x2f, //0x000006a0 movdqu (%rdi,%r13), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006a6 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0xee, 0xf9, 0xff, 0xff, //0x000006aa pcmpgtb $-1554(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006b2 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000006b7 pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x000006bb pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006bf movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0xf5, 0xf9, 0xff, 0xff, //0x000006c3 pcmpeqb $-1547(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x000006cb movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0xf9, 0xf9, 0xff, 0xff, //0x000006cf pcmpeqb $-1543(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x000006d7 por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006db movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x000006df pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0xf4, 0xf9, 0xff, 0xff, //0x000006e4 pcmpeqb $-1548(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x000006ec pcmpeqb %xmm11, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000006f1 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe3, //0x000006f5 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x000006f9 por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x000006fd por %xmm4, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00000701 pmovmskb %xmm3, %r9d + 0x66, 0x0f, 0xd7, 0xd6, //0x00000706 pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xcd, //0x0000070a pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x0000070e notl %ecx + 0x0f, 0xbc, 0xc9, //0x00000710 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00000713 cmpl $16, %ecx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000716 je LBB0_90 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000071c movl $-1, %edi + 0xd3, 0xe7, //0x00000721 shll %cl, %edi + 0xf7, 0xd7, //0x00000723 notl %edi + 0x41, 0x21, 0xf9, //0x00000725 andl %edi, %r9d + 0x21, 0xfe, //0x00000728 andl %edi, %esi + 0x21, 0xd7, //0x0000072a andl %edx, %edi + 0x89, 0xfa, //0x0000072c movl %edi, %edx + 0x48, 0x8b, 0x7d, 0xb8, //0x0000072e movq $-72(%rbp), %rdi + //0x00000732 LBB0_90 + 0x41, 0x8d, 0x59, 0xff, //0x00000732 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00000736 andl %r9d, %ebx + 0x0f, 0x85, 0x69, 0x1f, 0x00, 0x00, //0x00000739 jne LBB0_444 + 0x8d, 0x5e, 0xff, //0x0000073f leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x00000742 andl %esi, %ebx + 0x0f, 0x85, 0x5e, 0x1f, 0x00, 0x00, //0x00000744 jne LBB0_444 + 0x8d, 0x5a, 0xff, //0x0000074a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000074d andl %edx, %ebx + 0x0f, 0x85, 0x53, 0x1f, 0x00, 0x00, //0x0000074f jne LBB0_444 + 0x45, 0x85, 0xc9, //0x00000755 testl %r9d, %r9d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000758 je LBB0_96 + 0x41, 0x0f, 0xbc, 0xd9, //0x0000075e bsfl %r9d, %ebx + 0x49, 0x83, 0xf8, 0xff, //0x00000762 cmpq $-1, %r8 + 0x0f, 0x85, 0xfa, 0x22, 0x00, 0x00, //0x00000766 jne LBB0_454 + 0x4c, 0x01, 0xeb, //0x0000076c addq %r13, %rbx + 0x49, 0x89, 0xd8, //0x0000076f movq %rbx, %r8 + //0x00000772 LBB0_96 + 0x85, 0xf6, //0x00000772 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000774 je LBB0_99 + 0x0f, 0xbc, 0xf6, //0x0000077a bsfl %esi, %esi + 0x49, 0x83, 0xff, 0xff, //0x0000077d cmpq $-1, %r15 + 0x0f, 0x85, 0xe6, 0x22, 0x00, 0x00, //0x00000781 jne LBB0_455 + 0x4c, 0x01, 0xee, //0x00000787 addq %r13, %rsi + 0x49, 0x89, 0xf7, //0x0000078a movq %rsi, %r15 + //0x0000078d LBB0_99 + 0x85, 0xd2, //0x0000078d testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000078f je LBB0_102 + 0x0f, 0xbc, 0xd2, //0x00000795 bsfl %edx, %edx + 0x49, 0x83, 0xfa, 0xff, //0x00000798 cmpq $-1, %r10 + 0x0f, 0x85, 0xd2, 0x22, 0x00, 0x00, //0x0000079c jne LBB0_456 + 0x4c, 0x01, 0xea, //0x000007a2 addq %r13, %rdx + 0x49, 0x89, 0xd2, //0x000007a5 movq %rdx, %r10 + //0x000007a8 LBB0_102 + 0x83, 0xf9, 0x10, //0x000007a8 cmpl $16, %ecx + 0x0f, 0x85, 0xf7, 0x07, 0x00, 0x00, //0x000007ab jne LBB0_188 + 0x49, 0x83, 0xc3, 0xf0, //0x000007b1 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000007b5 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000007b9 cmpq $15, %r11 + 0x0f, 0x87, 0xdd, 0xfe, 0xff, 0xff, //0x000007bd ja LBB0_88 + 0x4a, 0x8d, 0x34, 0x2f, //0x000007c3 leaq (%rdi,%r13), %rsi + 0x49, 0x89, 0xf1, //0x000007c7 movq %rsi, %r9 + 0x4d, 0x39, 0xee, //0x000007ca cmpq %r13, %r14 + 0x0f, 0x84, 0xff, 0x09, 0x00, 0x00, //0x000007cd je LBB0_217 + //0x000007d3 LBB0_105 + 0x4e, 0x8d, 0x0c, 0x1e, //0x000007d3 leaq (%rsi,%r11), %r9 + 0x48, 0x89, 0xf7, //0x000007d7 movq %rsi, %rdi + 0x48, 0x2b, 0x7d, 0xc0, //0x000007da subq $-64(%rbp), %rdi + 0x4c, 0x29, 0xe7, //0x000007de subq %r12, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x000007e1 addq $1, %rdi + 0x31, 0xd2, //0x000007e5 xorl %edx, %edx + 0x4c, 0x8d, 0x35, 0xd2, 0x37, 0x00, 0x00, //0x000007e7 leaq $14290(%rip), %r14 /* LJTI0_3+0(%rip) */ + 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x000007ee jmp LBB0_109 + //0x000007f3 LBB0_106 + 0x49, 0x83, 0xfa, 0xff, //0x000007f3 cmpq $-1, %r10 + 0x0f, 0x85, 0xdc, 0x1e, 0x00, 0x00, //0x000007f7 jne LBB0_449 + 0x4c, 0x8d, 0x14, 0x17, //0x000007fd leaq (%rdi,%rdx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000801 .p2align 4, 0x90 + //0x00000810 LBB0_108 + 0x48, 0x83, 0xc2, 0x01, //0x00000810 addq $1, %rdx + 0x49, 0x39, 0xd3, //0x00000814 cmpq %rdx, %r11 + 0x0f, 0x84, 0xb1, 0x09, 0x00, 0x00, //0x00000817 je LBB0_216 + //0x0000081d LBB0_109 + 0x0f, 0xbe, 0x0c, 0x16, //0x0000081d movsbl (%rsi,%rdx), %ecx + 0x8d, 0x59, 0xd0, //0x00000821 leal $-48(%rcx), %ebx + 0x83, 0xfb, 0x0a, //0x00000824 cmpl $10, %ebx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000827 jb LBB0_108 + 0x8d, 0x59, 0xd5, //0x0000082d leal $-43(%rcx), %ebx + 0x83, 0xfb, 0x1a, //0x00000830 cmpl $26, %ebx + 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00000833 ja LBB0_114 + 0x49, 0x63, 0x0c, 0x9e, //0x00000839 movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x0000083d addq %r14, %rcx + 0xff, 0xe1, //0x00000840 jmpq *%rcx + //0x00000842 LBB0_112 + 0x49, 0x83, 0xf8, 0xff, //0x00000842 cmpq $-1, %r8 + 0x0f, 0x85, 0x8d, 0x1e, 0x00, 0x00, //0x00000846 jne LBB0_449 + 0x4c, 0x8d, 0x04, 0x17, //0x0000084c leaq (%rdi,%rdx), %r8 + 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00000850 jmp LBB0_108 + //0x00000855 LBB0_114 + 0x83, 0xf9, 0x65, //0x00000855 cmpl $101, %ecx + 0x0f, 0x85, 0x6a, 0x09, 0x00, 0x00, //0x00000858 jne LBB0_215 + //0x0000085e LBB0_115 + 0x49, 0x83, 0xff, 0xff, //0x0000085e cmpq $-1, %r15 + 0x0f, 0x85, 0x71, 0x1e, 0x00, 0x00, //0x00000862 jne LBB0_449 + 0x4c, 0x8d, 0x3c, 0x17, //0x00000868 leaq (%rdi,%rdx), %r15 + 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000086c jmp LBB0_108 + //0x00000871 LBB0_117 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000871 cmpq $4095, %r9 + 0x0f, 0x8f, 0xd2, 0x31, 0x00, 0x00, //0x00000878 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000087e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x00000882 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000886 movq $0, $8(%r13,%r9,8) + 0xe9, 0x3c, 0xf9, 0xff, 0xff, //0x0000088f jmp LBB0_4 + //0x00000894 LBB0_64 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x00000894 movq $2, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x0000089d movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000008a1 testb $64, %cl + 0x0f, 0x85, 0xcb, 0x03, 0x00, 0x00, //0x000008a4 jne LBB0_152 + 0x49, 0x8b, 0x16, //0x000008aa movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000008ad movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000008b1 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000008b5 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000008b8 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000008bc movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x000008c0 jne LBB0_189 + 0x49, 0x89, 0xc1, //0x000008c6 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000008c9 subq %rdx, %r9 + 0x0f, 0x84, 0xde, 0x33, 0x00, 0x00, //0x000008cc je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000008d2 cmpq $64, %r9 + 0x0f, 0x82, 0xd9, 0x26, 0x00, 0x00, //0x000008d6 jb LBB0_510 + 0x49, 0x89, 0xd6, //0x000008dc movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x000008df notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000008e2 movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x000008ea movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x000008ed xorl %r8d, %r8d + //0x000008f0 .p2align 4, 0x90 + //0x000008f0 LBB0_69 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x000008f0 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x000008f6 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x000008fd movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000904 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000090b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000090f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000913 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000918 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000091c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000920 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000924 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000928 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000092c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000930 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000934 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000938 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000093c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000940 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000945 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000949 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000094d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000951 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000955 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000959 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000095e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000962 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000966 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000969 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000096d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x00000970 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x00000973 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x00000977 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x0000097b orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x0000097e shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x00000982 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x00000985 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000988 jne LBB0_121 + 0x4d, 0x85, 0xc0, //0x0000098e testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000991 jne LBB0_123 + 0x45, 0x31, 0xc0, //0x00000997 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x0000099a testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000099d jne LBB0_124 + //0x000009a3 LBB0_72 + 0x49, 0x83, 0xc1, 0xc0, //0x000009a3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000009a7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000009ab addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000009af cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000009b3 ja LBB0_69 + 0xe9, 0x1e, 0x1f, 0x00, 0x00, //0x000009b9 jmp LBB0_73 + //0x000009be LBB0_121 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000009be cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000009c3 jne LBB0_123 + 0x49, 0x0f, 0xbc, 0xcb, //0x000009c9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000009cd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x000009d0 movq %rcx, $-56(%rbp) + //0x000009d4 LBB0_123 + 0x4c, 0x89, 0xc1, //0x000009d4 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x000009d7 notq %rcx + 0x4c, 0x21, 0xd9, //0x000009da andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x000009dd leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x000009e1 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x000009e4 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x000009e7 notq %rsi + 0x4c, 0x21, 0xde, //0x000009ea andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000009ed movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x000009f7 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x000009fa xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x000009fd addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000a00 setb %r8b + 0x48, 0x01, 0xf6, //0x00000a04 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a07 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000a11 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000a14 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000a17 notq %rsi + 0x49, 0x21, 0xf2, //0x00000a1a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00000a1d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a20 je LBB0_72 + //0x00000a26 LBB0_124 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000a26 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x00000a2a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00000a2d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a31 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x75, 0xc0, //0x00000a3b movq $-64(%rbp), %rsi + 0xe9, 0xb3, 0x0d, 0x00, 0x00, //0x00000a3f jmp LBB0_313 + //0x00000a44 LBB0_125 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000a44 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000a48 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000a4c movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000a4f leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000a53 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000a56 cmpq $32, %r9 + 0x0f, 0x8c, 0x3a, 0x1c, 0x00, 0x00, //0x00000a5a jl LBB0_133 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000a60 movl $32, %r14d + 0x31, 0xf6, //0x00000a66 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000a68 xorl %r11d, %r11d + 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000a6b jmp LBB0_127 + //0x00000a70 .p2align 4, 0x90 + //0x00000a70 LBB0_129 + 0x45, 0x31, 0xdb, //0x00000a70 xorl %r11d, %r11d + 0x48, 0x85, 0xdb, //0x00000a73 testq %rbx, %rbx + 0x0f, 0x85, 0x2b, 0xf7, 0xff, 0xff, //0x00000a76 jne LBB0_1 + //0x00000a7c LBB0_130 + 0x48, 0x83, 0xc6, 0x20, //0x00000a7c addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00000a80 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a84 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00000a88 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x00000a8c cmpq $63, %rcx + 0x0f, 0x8e, 0xe7, 0x1b, 0x00, 0x00, //0x00000a90 jle LBB0_131 + //0x00000a96 LBB0_127 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x32, //0x00000a96 movdqu (%r10,%rsi), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x32, 0x10, //0x00000a9c movdqu $16(%r10,%rsi), %xmm5 + 0x66, 0x0f, 0x6f, 0xf4, //0x00000aa3 movdqa %xmm4, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000aa7 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xfe, //0x00000aab pmovmskb %xmm6, %edi + 0x66, 0x0f, 0x6f, 0xf5, //0x00000aaf movdqa %xmm5, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000ab3 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xde, //0x00000ab7 pmovmskb %xmm6, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000abb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000abf orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xe1, //0x00000ac2 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000ac6 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x00000aca pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ace pmovmskb %xmm5, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000ad2 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000ad6 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000ad9 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x00000adc orq %r11, %rcx + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000adf je LBB0_129 + 0x44, 0x89, 0xd9, //0x00000ae5 movl %r11d, %ecx + 0xf7, 0xd1, //0x00000ae8 notl %ecx + 0x21, 0xf9, //0x00000aea andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x00000aec leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x00000af0 orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x00000af3 movl %r15d, %edx + 0xf7, 0xd2, //0x00000af6 notl %edx + 0x21, 0xfa, //0x00000af8 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000afa andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x00000b00 xorl %r11d, %r11d + 0x01, 0xca, //0x00000b03 addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x00000b05 setb %r11b + 0x01, 0xd2, //0x00000b09 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000b0b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000b11 andl %r15d, %edx + 0xf7, 0xd2, //0x00000b14 notl %edx + 0x21, 0xd3, //0x00000b16 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000b18 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b1b je LBB0_130 + 0xe9, 0x81, 0xf6, 0xff, 0xff, //0x00000b21 jmp LBB0_1 + //0x00000b26 LBB0_134 + 0x4c, 0x89, 0xf1, //0x00000b26 movq %r14, %rcx + 0x4c, 0x29, 0xc1, //0x00000b29 subq %r8, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x00000b2c cmpq $16, %rcx + 0x0f, 0x82, 0xc7, 0x22, 0x00, 0x00, //0x00000b30 jb LBB0_489 + 0x4c, 0x89, 0xc6, //0x00000b36 movq %r8, %rsi + 0x48, 0xf7, 0xde, //0x00000b39 negq %rsi + 0x49, 0x8d, 0x40, 0x01, //0x00000b3c leaq $1(%r8), %rax + 0x49, 0x8d, 0x48, 0xff, //0x00000b40 leaq $-1(%r8), %rcx + 0x4b, 0x8d, 0x14, 0x04, //0x00000b44 leaq (%r12,%r8), %rdx + 0x48, 0x83, 0xc2, 0xff, //0x00000b48 addq $-1, %rdx + 0x4c, 0x89, 0xc3, //0x00000b4c movq %r8, %rbx + 0x90, //0x00000b4f .p2align 4, 0x90 + //0x00000b50 LBB0_136 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00000b50 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000b56 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000b5a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000b5f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00000b64 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00000b68 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000b6c pmovmskb %xmm3, %edi + 0x85, 0xff, //0x00000b70 testl %edi, %edi + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00000b72 jne LBB0_147 + 0x48, 0x83, 0xc3, 0x10, //0x00000b78 addq $16, %rbx + 0x49, 0x8d, 0x3c, 0x36, //0x00000b7c leaq (%r14,%rsi), %rdi + 0x48, 0x83, 0xc7, 0xf0, //0x00000b80 addq $-16, %rdi + 0x48, 0x83, 0xc6, 0xf0, //0x00000b84 addq $-16, %rsi + 0x48, 0x83, 0xc0, 0x10, //0x00000b88 addq $16, %rax + 0x48, 0x83, 0xc1, 0x10, //0x00000b8c addq $16, %rcx + 0x48, 0x83, 0xc2, 0x10, //0x00000b90 addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000b94 cmpq $15, %rdi + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x00000b98 ja LBB0_136 + 0x4c, 0x89, 0xe0, //0x00000b9e movq %r12, %rax + 0x48, 0x29, 0xf0, //0x00000ba1 subq %rsi, %rax + 0x49, 0x01, 0xf6, //0x00000ba4 addq %rsi, %r14 + 0x4c, 0x89, 0xf1, //0x00000ba7 movq %r14, %rcx + 0x48, 0x85, 0xc9, //0x00000baa testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00000bad movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bb1 movabsq $17596481021440, %rdi + 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bbb je LBB0_146 + //0x00000bc1 LBB0_139 + 0x48, 0x8d, 0x14, 0x08, //0x00000bc1 leaq (%rax,%rcx), %rdx + //0x00000bc5 LBB0_140 + 0x0f, 0xb6, 0x30, //0x00000bc5 movzbl (%rax), %esi + 0x48, 0x83, 0xfe, 0x2c, //0x00000bc8 cmpq $44, %rsi + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000bcc ja LBB0_142 + 0x48, 0x0f, 0xa3, 0xf7, //0x00000bd2 btq %rsi, %rdi + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x00000bd6 jb LBB0_146 + //0x00000bdc LBB0_142 + 0x40, 0x80, 0xfe, 0x5d, //0x00000bdc cmpb $93, %sil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000be0 je LBB0_146 + 0x40, 0x80, 0xfe, 0x7d, //0x00000be6 cmpb $125, %sil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000bea je LBB0_146 + 0x48, 0x83, 0xc0, 0x01, //0x00000bf0 addq $1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000bf4 addq $-1, %rcx + 0x0f, 0x85, 0xc7, 0xff, 0xff, 0xff, //0x00000bf8 jne LBB0_140 + 0x48, 0x89, 0xd0, //0x00000bfe movq %rdx, %rax + //0x00000c01 LBB0_146 + 0x4c, 0x29, 0xe0, //0x00000c01 subq %r12, %rax + 0x49, 0x89, 0x06, //0x00000c04 movq %rax, (%r14) + 0xe9, 0xba, 0xf5, 0xff, 0xff, //0x00000c07 jmp LBB0_3 + //0x00000c0c LBB0_147 + 0x66, 0x0f, 0xbc, 0xff, //0x00000c0c bsfw %di, %di + 0x0f, 0xb7, 0xdf, //0x00000c10 movzwl %di, %ebx + 0x48, 0x89, 0xdf, //0x00000c13 movq %rbx, %rdi + 0x48, 0x29, 0xf7, //0x00000c16 subq %rsi, %rdi + 0x4c, 0x8b, 0x75, 0xd0, //0x00000c19 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x3e, //0x00000c1d movq %rdi, (%r14) + 0x48, 0x85, 0xff, //0x00000c20 testq %rdi, %rdi + 0x0f, 0x8e, 0x9d, 0xf5, 0xff, 0xff, //0x00000c23 jle LBB0_3 + 0x48, 0x01, 0xd8, //0x00000c29 addq %rbx, %rax + 0x48, 0x01, 0xd9, //0x00000c2c addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c2f addq %rbx, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c32 .p2align 4, 0x90 + //0x00000c40 LBB0_149 + 0x0f, 0xb6, 0x32, //0x00000c40 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x00000c43 cmpq $32, %rsi + 0x0f, 0x87, 0x79, 0xf5, 0xff, 0xff, //0x00000c47 ja LBB0_3 + 0x49, 0x0f, 0xa3, 0xf3, //0x00000c4d btq %rsi, %r11 + 0x0f, 0x83, 0x6f, 0xf5, 0xff, 0xff, //0x00000c51 jae LBB0_3 + 0x49, 0x89, 0x0e, //0x00000c57 movq %rcx, (%r14) + 0x48, 0x83, 0xc0, 0xff, //0x00000c5a addq $-1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000c5e addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c62 addq $-1, %rdx + 0x48, 0x83, 0xf8, 0x01, //0x00000c66 cmpq $1, %rax + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c6a jg LBB0_149 + 0xe9, 0x51, 0xf5, 0xff, 0xff, //0x00000c70 jmp LBB0_3 + //0x00000c75 LBB0_152 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000c75 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000c79 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000c7d movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000c80 leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000c84 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000c87 cmpq $32, %r9 + 0x0f, 0x8c, 0xa5, 0x1a, 0x00, 0x00, //0x00000c8b jl LBB0_161 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000c91 movl $32, %r14d + 0x31, 0xf6, //0x00000c97 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000c99 xorl %r11d, %r11d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x00000c9c jmp LBB0_154 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ca1 .p2align 4, 0x90 + //0x00000cb0 LBB0_157 0x45, 0x31, 0xdb, //0x00000cb0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000cb3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_151 - //0x00000cbc LBB0_153 - 0x48, 0x83, 0xc2, 0x20, //0x00000cbc addq $32, %rdx + 0x48, 0x85, 0xdb, //0x00000cb3 testq %rbx, %rbx + 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_156 + //0x00000cbc LBB0_158 + 0x48, 0x83, 0xc6, 0x20, //0x00000cbc addq $32, %rsi 0x4b, 0x8d, 0x0c, 0x31, //0x00000cc0 leaq (%r9,%r14), %rcx 0x48, 0x83, 0xc1, 0xe0, //0x00000cc4 addq $-32, %rcx 0x49, 0x83, 0xc6, 0xe0, //0x00000cc8 addq $-32, %r14 0x48, 0x83, 0xf9, 0x3f, //0x00000ccc cmpq $63, %rcx - 0x0f, 0x8e, 0xfb, 0x19, 0x00, 0x00, //0x00000cd0 jle LBB0_154 - //0x00000cd6 LBB0_149 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00000cd6 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00000cdc movdqu $16(%r10,%rdx), %xmm4 + 0x0f, 0x8e, 0x43, 0x1a, 0x00, 0x00, //0x00000cd0 jle LBB0_159 + //0x00000cd6 LBB0_154 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00000cd6 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00000cdc movdqu $16(%r10,%rsi), %xmm4 0x66, 0x0f, 0x6f, 0xeb, //0x00000ce3 movdqa %xmm3, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000ce7 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000ceb pmovmskb %xmm5, %esi + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ceb pmovmskb %xmm5, %edi 0x66, 0x0f, 0x6f, 0xec, //0x00000cef movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000cf3 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000cf7 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000cfb shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000cff orq %rsi, %rdi + 0x66, 0x0f, 0xd7, 0xdd, //0x00000cf7 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000cfb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000cff orq %rdi, %rbx 0x66, 0x0f, 0x74, 0xd9, //0x00000d02 pcmpeqb %xmm1, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000d06 pmovmskb %xmm3, %ecx 0x66, 0x0f, 0x74, 0xe1, //0x00000d0a pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00000d0e pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000d12 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000d16 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000d19 movq %rsi, %rcx + 0x66, 0x0f, 0xd7, 0xfc, //0x00000d0e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000d12 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000d16 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000d19 movq %rdi, %rcx 0x4c, 0x09, 0xd9, //0x00000d1c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_152 + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_157 0x44, 0x89, 0xd9, //0x00000d25 movl %r11d, %ecx 0xf7, 0xd1, //0x00000d28 notl %ecx - 0x21, 0xf1, //0x00000d2a andl %esi, %ecx + 0x21, 0xf9, //0x00000d2a andl %edi, %ecx 0x44, 0x8d, 0x3c, 0x09, //0x00000d2c leal (%rcx,%rcx), %r15d 0x45, 0x09, 0xdf, //0x00000d30 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000d33 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000d36 notl %ebx - 0x21, 0xf3, //0x00000d38 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %ebx + 0x44, 0x89, 0xfa, //0x00000d33 movl %r15d, %edx + 0xf7, 0xd2, //0x00000d36 notl %edx + 0x21, 0xfa, //0x00000d38 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %edx 0x45, 0x31, 0xdb, //0x00000d40 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000d43 addl %ecx, %ebx + 0x01, 0xca, //0x00000d43 addl %ecx, %edx 0x41, 0x0f, 0x92, 0xc3, //0x00000d45 setb %r11b - 0x01, 0xdb, //0x00000d49 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000d51 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000d54 notl %ebx - 0x21, 0xdf, //0x00000d56 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000d58 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_153 - //0x00000d61 LBB0_151 - 0x0f, 0xbc, 0xc7, //0x00000d61 bsfl %edi, %eax + 0x01, 0xd2, //0x00000d49 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000d51 andl %r15d, %edx + 0xf7, 0xd2, //0x00000d54 notl %edx + 0x21, 0xd3, //0x00000d56 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000d58 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_158 + //0x00000d61 LBB0_156 + 0x0f, 0xbc, 0xc3, //0x00000d61 bsfl %ebx, %eax 0x4c, 0x01, 0xc0, //0x00000d64 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000d67 leaq (%rdx,%rax), %r10 + 0x4c, 0x8d, 0x14, 0x06, //0x00000d67 leaq (%rsi,%rax), %r10 0x49, 0x83, 0xc2, 0x01, //0x00000d6b addq $1, %r10 0x4c, 0x8b, 0x75, 0xd0, //0x00000d6f movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000d73 movabsq $4294977024, %r11 0x4d, 0x89, 0x16, //0x00000d7d movq %r10, (%r14) 0x4d, 0x85, 0xc0, //0x00000d80 testq %r8, %r8 - 0x0f, 0x8f, 0x93, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_306 - 0xe9, 0x73, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_608 - //0x00000d8e LBB0_157 + 0x0f, 0x8f, 0x83, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_315 + 0xe9, 0xce, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_622 + //0x00000d8e LBB0_162 0x49, 0x89, 0xc6, //0x00000d8e movq %rax, %r14 0x49, 0x29, 0xd6, //0x00000d91 subq %rdx, %r14 - 0x0f, 0x84, 0x71, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_643 + 0x0f, 0x84, 0xdc, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_657 0x49, 0x83, 0xfe, 0x40, //0x00000d9a cmpq $64, %r14 - 0x0f, 0x82, 0x17, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_486 - 0x4c, 0x89, 0x65, 0xc0, //0x00000da4 movq %r12, $-64(%rbp) + 0x0f, 0x82, 0x5e, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_504 + 0x4c, 0x89, 0x65, 0xb8, //0x00000da4 movq %r12, $-72(%rbp) 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000da8 movq $-1, $-56(%rbp) - 0x48, 0x8b, 0x45, 0xb0, //0x00000db0 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x45, 0xc0, //0x00000db0 movq $-64(%rbp), %rax 0x31, 0xdb, //0x00000db4 xorl %ebx, %ebx 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000db6 .p2align 4, 0x90 - //0x00000dc0 LBB0_160 + //0x00000dc0 LBB0_165 0x49, 0x89, 0xdc, //0x00000dc0 movq %rbx, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000dc3 movq $-64(%rbp), %rcx + 0x48, 0x8b, 0x4d, 0xb8, //0x00000dc3 movq $-72(%rbp), %rcx 0xf3, 0x0f, 0x6f, 0x1c, 0x01, //0x00000dc7 movdqu (%rcx,%rax), %xmm3 0xf3, 0x0f, 0x6f, 0x7c, 0x01, 0x10, //0x00000dcc movdqu $16(%rcx,%rax), %xmm7 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x20, //0x00000dd2 movdqu $32(%rcx,%rax), %xmm6 @@ -875,7 +878,7 @@ var _text_skip_array = []byte{ 0x66, 0x0f, 0xd7, 0xdd, //0x00000df3 pmovmskb %xmm5, %ebx 0x66, 0x0f, 0x6f, 0xee, //0x00000df7 movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000dfb pcmpeqb %xmm0, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x00000dff pmovmskb %xmm5, %r10d + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00000dff pmovmskb %xmm5, %r9d 0x66, 0x0f, 0x6f, 0xec, //0x00000e04 movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000e08 pcmpeqb %xmm0, %xmm5 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00000e0c pmovmskb %xmm5, %r15d @@ -884,7 +887,7 @@ var _text_skip_array = []byte{ 0x66, 0x44, 0x0f, 0xd7, 0xed, //0x00000e19 pmovmskb %xmm5, %r13d 0x66, 0x0f, 0x6f, 0xef, //0x00000e1e movdqa %xmm7, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e22 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000e26 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0xd7, 0xd5, //0x00000e26 pmovmskb %xmm5, %edx 0x66, 0x0f, 0x6f, 0xee, //0x00000e2a movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e2e pcmpeqb %xmm1, %xmm5 0x66, 0x0f, 0xd7, 0xcd, //0x00000e32 pmovmskb %xmm5, %ecx @@ -895,3281 +898,3312 @@ var _text_skip_array = []byte{ 0x66, 0x0f, 0x64, 0xef, //0x00000e48 pcmpgtb %xmm7, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00000e4c pcmpgtb %xmm10, %xmm7 0x66, 0x0f, 0xdb, 0xfd, //0x00000e51 pand %xmm5, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00000e55 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0xd7, 0xff, //0x00000e55 pmovmskb %xmm7, %edi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e59 movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xee, //0x00000e5e pcmpgtb %xmm6, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00000e62 pcmpgtb %xmm10, %xmm6 0x66, 0x0f, 0xdb, 0xf5, //0x00000e67 pand %xmm5, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x00000e6b pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xf6, //0x00000e6b pmovmskb %xmm6, %esi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e6f movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xec, //0x00000e74 pcmpgtb %xmm4, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00000e78 pcmpgtb %xmm10, %xmm4 0x66, 0x0f, 0xdb, 0xe5, //0x00000e7d pand %xmm5, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xcc, //0x00000e81 pmovmskb %xmm4, %r9d + 0x66, 0x44, 0x0f, 0xd7, 0xd4, //0x00000e81 pmovmskb %xmm4, %r10d 0x49, 0xc1, 0xe7, 0x30, //0x00000e86 shlq $48, %r15 - 0x49, 0xc1, 0xe2, 0x20, //0x00000e8a shlq $32, %r10 - 0x4d, 0x09, 0xfa, //0x00000e8e orq %r15, %r10 + 0x49, 0xc1, 0xe1, 0x20, //0x00000e8a shlq $32, %r9 + 0x4d, 0x09, 0xf9, //0x00000e8e orq %r15, %r9 0x48, 0xc1, 0xe3, 0x10, //0x00000e91 shlq $16, %rbx - 0x4c, 0x09, 0xd3, //0x00000e95 orq %r10, %rbx + 0x4c, 0x09, 0xcb, //0x00000e95 orq %r9, %rbx 0x49, 0x09, 0xdb, //0x00000e98 orq %rbx, %r11 0x49, 0xc1, 0xe0, 0x30, //0x00000e9b shlq $48, %r8 0x48, 0xc1, 0xe1, 0x20, //0x00000e9f shlq $32, %rcx 0x4c, 0x09, 0xc1, //0x00000ea3 orq %r8, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x00000ea6 shlq $16, %rdi - 0x48, 0x09, 0xcf, //0x00000eaa orq %rcx, %rdi - 0x49, 0xc1, 0xe1, 0x30, //0x00000ead shlq $48, %r9 - 0x48, 0xc1, 0xe2, 0x20, //0x00000eb1 shlq $32, %rdx - 0x4c, 0x09, 0xca, //0x00000eb5 orq %r9, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x00000eb8 shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00000ebc orq %rdx, %rsi - 0x49, 0x09, 0xfd, //0x00000ebf orq %rdi, %r13 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_177 + 0x48, 0xc1, 0xe2, 0x10, //0x00000ea6 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x00000eaa orq %rcx, %rdx + 0x49, 0xc1, 0xe2, 0x30, //0x00000ead shlq $48, %r10 + 0x48, 0xc1, 0xe6, 0x20, //0x00000eb1 shlq $32, %rsi + 0x4c, 0x09, 0xd6, //0x00000eb5 orq %r10, %rsi + 0x48, 0xc1, 0xe7, 0x10, //0x00000eb8 shlq $16, %rdi + 0x48, 0x09, 0xf7, //0x00000ebc orq %rsi, %rdi + 0x49, 0x09, 0xd5, //0x00000ebf orq %rdx, %r13 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_182 0x4d, 0x85, 0xe4, //0x00000ec8 testq %r12, %r12 - 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_179 + 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_184 0x31, 0xdb, //0x00000ed1 xorl %ebx, %ebx - //0x00000ed3 LBB0_163 + //0x00000ed3 LBB0_168 0x66, 0x41, 0x0f, 0x6f, 0xe4, //0x00000ed3 movdqa %xmm12, %xmm4 0x66, 0x0f, 0x64, 0xe3, //0x00000ed8 pcmpgtb %xmm3, %xmm4 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00000edc pcmpgtb %xmm10, %xmm3 0x66, 0x0f, 0xdb, 0xdc, //0x00000ee1 pand %xmm4, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000ee5 pmovmskb %xmm3, %ecx - 0x48, 0x09, 0xce, //0x00000ee9 orq %rcx, %rsi + 0x48, 0x09, 0xcf, //0x00000ee9 orq %rcx, %rdi 0x4d, 0x85, 0xdb, //0x00000eec testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000eef movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_180 - 0x48, 0x85, 0xf6, //0x00000ef9 testq %rsi, %rsi - 0x0f, 0x85, 0x84, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_618 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00000eef movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_185 + 0x48, 0x85, 0xff, //0x00000ef9 testq %rdi, %rdi + 0x0f, 0x85, 0xec, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_631 0x49, 0x83, 0xc6, 0xc0, //0x00000f02 addq $-64, %r14 0x48, 0x83, 0xc0, 0x40, //0x00000f06 addq $64, %rax 0x49, 0x83, 0xfe, 0x3f, //0x00000f0a cmpq $63, %r14 - 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_160 - 0xe9, 0x6b, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_166 - //0x00000f19 LBB0_177 + 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_165 + 0xe9, 0xb3, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_171 + //0x00000f19 LBB0_182 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000f19 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_179 + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_184 0x49, 0x0f, 0xbc, 0xcd, //0x00000f24 bsfq %r13, %rcx 0x48, 0x01, 0xc1, //0x00000f28 addq %rax, %rcx 0x48, 0x89, 0x4d, 0xc8, //0x00000f2b movq %rcx, $-56(%rbp) - //0x00000f2f LBB0_179 + //0x00000f2f LBB0_184 0x4c, 0x89, 0xe1, //0x00000f2f movq %r12, %rcx 0x48, 0xf7, 0xd1, //0x00000f32 notq %rcx 0x4c, 0x21, 0xe9, //0x00000f35 andq %r13, %rcx 0x48, 0x8d, 0x14, 0x09, //0x00000f38 leaq (%rcx,%rcx), %rdx 0x4c, 0x09, 0xe2, //0x00000f3c orq %r12, %rdx - 0x48, 0x89, 0xd7, //0x00000f3f movq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f42 notq %rdi - 0x4c, 0x21, 0xef, //0x00000f45 andq %r13, %rdi + 0x48, 0x89, 0xd6, //0x00000f3f movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f42 notq %rsi + 0x4c, 0x21, 0xee, //0x00000f45 andq %r13, %rsi 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000f48 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xdf, //0x00000f52 andq %rbx, %rdi + 0x48, 0x21, 0xde, //0x00000f52 andq %rbx, %rsi 0x31, 0xdb, //0x00000f55 xorl %ebx, %ebx - 0x48, 0x01, 0xcf, //0x00000f57 addq %rcx, %rdi + 0x48, 0x01, 0xce, //0x00000f57 addq %rcx, %rsi 0x0f, 0x92, 0xc3, //0x00000f5a setb %bl - 0x48, 0x01, 0xff, //0x00000f5d addq %rdi, %rdi + 0x48, 0x01, 0xf6, //0x00000f5d addq %rsi, %rsi 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f60 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xcf, //0x00000f6a xorq %rcx, %rdi - 0x48, 0x21, 0xd7, //0x00000f6d andq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f70 notq %rdi - 0x49, 0x21, 0xfb, //0x00000f73 andq %rdi, %r11 - 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_163 - //0x00000f7b LBB0_180 + 0x48, 0x31, 0xce, //0x00000f6a xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000f6d andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f70 notq %rsi + 0x49, 0x21, 0xf3, //0x00000f73 andq %rsi, %r11 + 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_168 + //0x00000f7b LBB0_185 0x49, 0x0f, 0xbc, 0xcb, //0x00000f7b bsfq %r11, %rcx - 0x48, 0x85, 0xf6, //0x00000f7f testq %rsi, %rsi - 0x0f, 0x84, 0xdb, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_221 - 0x48, 0x0f, 0xbc, 0xd6, //0x00000f88 bsfq %rsi, %rdx + 0x48, 0x85, 0xff, //0x00000f7f testq %rdi, %rdi + 0x0f, 0x84, 0xc4, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_227 + 0x48, 0x0f, 0xbc, 0xd7, //0x00000f88 bsfq %rdi, %rdx 0x4c, 0x8b, 0x75, 0xd0, //0x00000f8c movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000f90 movabsq $4294977024, %r11 0x48, 0x39, 0xca, //0x00000f9a cmpq %rcx, %rdx - 0x0f, 0x83, 0xdc, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_222 - 0xe9, 0x74, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_182 - //0x00000fa8 LBB0_183 - 0x41, 0x89, 0xcb, //0x00000fa8 movl %ecx, %r11d - 0x4d, 0x01, 0xf3, //0x00000fab addq %r14, %r11 - 0x4d, 0x01, 0xeb, //0x00000fae addq %r13, %r11 - //0x00000fb1 LBB0_184 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000fb1 movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00000fb8 testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x02, 0x00, 0x00, //0x00000fbb jne LBB0_213 - 0xe9, 0x00, 0x2c, 0x00, 0x00, //0x00000fc1 jmp LBB0_185 - //0x00000fc6 LBB0_186 - 0x49, 0x29, 0xd1, //0x00000fc6 subq %rdx, %r9 - 0x48, 0x89, 0xd1, //0x00000fc9 movq %rdx, %rcx - 0x0f, 0x84, 0x73, 0x2c, 0x00, 0x00, //0x00000fcc je LBB0_644 - 0x4c, 0x89, 0x65, 0xc0, //0x00000fd2 movq %r12, $-64(%rbp) - 0x49, 0x83, 0xf9, 0x40, //0x00000fd6 cmpq $64, %r9 - 0x0f, 0x82, 0x9e, 0x1f, 0x00, 0x00, //0x00000fda jb LBB0_494 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fe0 movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x00000fe8 movq %rcx, %rax - 0x45, 0x31, 0xe4, //0x00000feb xorl %r12d, %r12d - 0x90, 0x90, //0x00000fee .p2align 4, 0x90 - //0x00000ff0 LBB0_189 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000ff0 movq $-64(%rbp), %rcx - 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000ff4 movdqu (%rcx,%rax), %xmm13 - 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000ffa movdqu $16(%rcx,%rax), %xmm6 - 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00001000 movdqu $32(%rcx,%rax), %xmm5 - 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00001006 movdqu $48(%rcx,%rax), %xmm4 - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x0000100c movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001011 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001015 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xde, //0x0000101a movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000101e pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00001022 pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001026 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000102a pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000102e pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x00001033 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001037 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000103b pmovmskb %xmm3, %r15d - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001040 movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001045 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001049 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xde, //0x0000104e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001052 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001056 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xdd, //0x0000105a movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000105e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001062 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x00001066 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000106a pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x0000106e pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001073 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00001078 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000107c pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x00001081 pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00001085 pmovmskb %xmm6, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001089 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x0000108e pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001092 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x00001097 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000109b pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000109f movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000010a4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000010a8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000010ad pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010b1 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x000010b6 shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x000010ba shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x000010be orq %r15, %r14 - 0x48, 0xc1, 0xe3, 0x10, //0x000010c1 shlq $16, %rbx - 0x4c, 0x09, 0xf3, //0x000010c5 orq %r14, %rbx - 0x49, 0x09, 0xdb, //0x000010c8 orq %rbx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x000010cb shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x000010cf shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x000010d3 orq %r10, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000010d6 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000010da orq %rsi, %rcx - 0x49, 0xc1, 0xe0, 0x30, //0x000010dd shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000010e1 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000010e5 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000010e8 shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000010ec orq %rdx, %rdi - 0x49, 0x09, 0xcd, //0x000010ef orq %rcx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010f2 jne LBB0_206 - 0x4d, 0x85, 0xe4, //0x000010f8 testq %r12, %r12 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010fb jne LBB0_208 - 0x45, 0x31, 0xe4, //0x00001101 xorl %r12d, %r12d - 0x4c, 0x8b, 0x75, 0xd0, //0x00001104 movq $-48(%rbp), %r14 - //0x00001108 LBB0_192 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001108 movdqa %xmm12, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x0000110d pcmpgtb %xmm13, %xmm3 - 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001112 pcmpgtb %xmm10, %xmm13 - 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001117 pand %xmm3, %xmm13 - 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000111c pmovmskb %xmm13, %ecx - 0x48, 0x09, 0xcf, //0x00001121 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x00001124 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001127 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000112b jne LBB0_210 - 0x48, 0x85, 0xff, //0x00001131 testq %rdi, %rdi - 0x0f, 0x85, 0x6f, 0x2a, 0x00, 0x00, //0x00001134 jne LBB0_632 - 0x49, 0x83, 0xc1, 0xc0, //0x0000113a addq $-64, %r9 - 0x48, 0x83, 0xc0, 0x40, //0x0000113e addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001142 cmpq $63, %r9 - 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001146 ja LBB0_189 - 0xe9, 0xd2, 0x17, 0x00, 0x00, //0x0000114c jmp LBB0_195 - //0x00001151 LBB0_206 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001151 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00001156 movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000115a jne LBB0_209 - 0x49, 0x0f, 0xbc, 0xcd, //0x00001160 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00001164 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00001167 movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000116b jmp LBB0_209 - //0x00001170 LBB0_208 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001170 movq $-48(%rbp), %r14 - //0x00001174 LBB0_209 - 0x4c, 0x89, 0xe1, //0x00001174 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00001177 notq %rcx - 0x4c, 0x21, 0xe9, //0x0000117a andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000117d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xe2, //0x00001181 orq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00001184 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001187 notq %rsi - 0x4c, 0x21, 0xee, //0x0000118a andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000118d movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00001197 andq %rbx, %rsi - 0x45, 0x31, 0xe4, //0x0000119a xorl %r12d, %r12d - 0x48, 0x01, 0xce, //0x0000119d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc4, //0x000011a0 setb %r12b - 0x48, 0x01, 0xf6, //0x000011a4 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000011a7 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x000011b1 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x000011b4 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000011b7 notq %rsi - 0x49, 0x21, 0xf3, //0x000011ba andq %rsi, %r11 - 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011bd jmp LBB0_192 - //0x000011c2 LBB0_210 - 0x49, 0x0f, 0xbc, 0xcb, //0x000011c2 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x000011c6 testq %rdi, %rdi - 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011c9 je LBB0_302 - 0x48, 0x0f, 0xbc, 0xd7, //0x000011cf bsfq %rdi, %rdx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011d3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5a, 0xee, 0xff, 0xff, //0x000011dd movdqu $-4518(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000011e6 cmpq %rcx, %rdx - 0x0f, 0x83, 0x0d, 0x06, 0x00, 0x00, //0x000011e9 jae LBB0_303 - 0xe9, 0xf8, 0x29, 0x00, 0x00, //0x000011ef jmp LBB0_640 - //0x000011f4 LBB0_212 - 0x48, 0x01, 0xf9, //0x000011f4 addq %rdi, %rcx - 0x49, 0x89, 0xcb, //0x000011f7 movq %rcx, %r11 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011fa movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00001201 testq %r8, %r8 - 0x0f, 0x84, 0xbc, 0x29, 0x00, 0x00, //0x00001204 je LBB0_185 - //0x0000120a LBB0_213 - 0x4d, 0x85, 0xc9, //0x0000120a testq %r9, %r9 - 0x48, 0x8b, 0x75, 0xc0, //0x0000120d movq $-64(%rbp), %rsi - 0x0f, 0x84, 0x1b, 0x28, 0x00, 0x00, //0x00001211 je LBB0_612 - 0x4d, 0x85, 0xff, //0x00001217 testq %r15, %r15 - 0x0f, 0x84, 0x12, 0x28, 0x00, 0x00, //0x0000121a je LBB0_612 - 0x4d, 0x29, 0xf3, //0x00001220 subq %r14, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x00001223 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xc8, //0x00001227 cmpq %rcx, %r8 - 0x0f, 0x84, 0xac, 0xef, 0xff, 0xff, //0x0000122a je LBB0_1 - 0x49, 0x39, 0xc9, //0x00001230 cmpq %rcx, %r9 - 0x0f, 0x84, 0xa3, 0xef, 0xff, 0xff, //0x00001233 je LBB0_1 - 0x49, 0x39, 0xcf, //0x00001239 cmpq %rcx, %r15 - 0x0f, 0x84, 0x9a, 0xef, 0xff, 0xff, //0x0000123c je LBB0_1 - 0x4d, 0x85, 0xc9, //0x00001242 testq %r9, %r9 - 0x0f, 0x8e, 0x6d, 0x05, 0x00, 0x00, //0x00001245 jle LBB0_299 - 0x49, 0x8d, 0x49, 0xff, //0x0000124b leaq $-1(%r9), %rcx - 0x49, 0x39, 0xcf, //0x0000124f cmpq %rcx, %r15 - 0x0f, 0x84, 0x60, 0x05, 0x00, 0x00, //0x00001252 je LBB0_299 - 0x49, 0xf7, 0xd1, //0x00001258 notq %r9 - 0x4d, 0x89, 0xcd, //0x0000125b movq %r9, %r13 - 0xe9, 0x7f, 0xef, 0xff, 0xff, //0x0000125e jmp LBB0_2 - //0x00001263 LBB0_221 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001263 movl $64, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001268 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000126c movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x00001276 cmpq %rcx, %rdx - 0x0f, 0x82, 0x9d, 0x29, 0x00, 0x00, //0x00001279 jb LBB0_182 - //0x0000127f LBB0_222 - 0x48, 0x01, 0xc8, //0x0000127f addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001282 addq $1, %rax - //0x00001286 LBB0_223 - 0x48, 0x85, 0xc0, //0x00001286 testq %rax, %rax - 0x0f, 0x88, 0x7e, 0x27, 0x00, 0x00, //0x00001289 js LBB0_609 - //0x0000128f LBB0_224 - 0x49, 0x89, 0x06, //0x0000128f movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x00001292 movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001296 testq %rax, %rax - 0x0f, 0x8f, 0x21, 0xef, 0xff, 0xff, //0x00001299 jg LBB0_4 - 0xe9, 0x54, 0x27, 0x00, 0x00, //0x0000129f jmp LBB0_606 - //0x000012a4 LBB0_225 - 0x49, 0x8b, 0x0e, //0x000012a4 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x000012a7 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x000012ab movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfc, //0x000012af leaq $-4(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x000012b3 cmpq %rsi, %rcx - 0x0f, 0x87, 0xc2, 0x27, 0x00, 0x00, //0x000012b6 ja LBB0_617 - 0x41, 0x8b, 0x14, 0x0c, //0x000012bc movl (%r12,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012c0 cmpl $1702063201, %edx - 0x0f, 0x85, 0xe7, 0x27, 0x00, 0x00, //0x000012c6 jne LBB0_622 - 0x48, 0x8d, 0x41, 0x04, //0x000012cc leaq $4(%rcx), %rax - 0x49, 0x89, 0x06, //0x000012d0 movq %rax, (%r14) - 0x48, 0x85, 0xc9, //0x000012d3 testq %rcx, %rcx - 0x0f, 0x8f, 0xe4, 0xee, 0xff, 0xff, //0x000012d6 jg LBB0_4 - 0xe9, 0xbc, 0x28, 0x00, 0x00, //0x000012dc jmp LBB0_228 - //0x000012e1 LBB0_229 - 0xf6, 0x45, 0x98, 0x40, //0x000012e1 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x57, 0x05, 0x00, 0x00, //0x000012e5 jne LBB0_308 - 0x49, 0x8b, 0x45, 0x00, //0x000012eb movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000012ef cmpq $4095, %rax - 0x0f, 0x8f, 0xf1, 0x26, 0x00, 0x00, //0x000012f5 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x000012fb leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x000012ff movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00001303 movq $5, $8(%r13,%rax,8) - 0xe9, 0xaf, 0xee, 0xff, 0xff, //0x0000130c jmp LBB0_4 - //0x00001311 LBB0_232 - 0x48, 0x8b, 0x4d, 0x98, //0x00001311 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00001315 testb $64, %cl - 0x0f, 0x85, 0xa0, 0x09, 0x00, 0x00, //0x00001318 jne LBB0_334 - 0x49, 0x8b, 0x16, //0x0000131e movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00001321 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00001325 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x00001329 testb $32, %cl - 0x48, 0x89, 0xd1, //0x0000132c movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x0000132f movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x00001333 movq %rax, $-96(%rbp) - 0x0f, 0x85, 0x45, 0x10, 0x00, 0x00, //0x00001337 jne LBB0_385 - 0x49, 0x89, 0xc1, //0x0000133d movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00001340 subq %rdx, %r9 - 0x0f, 0x84, 0xef, 0x28, 0x00, 0x00, //0x00001343 je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00001349 cmpq $64, %r9 - 0x0f, 0x82, 0x05, 0x1d, 0x00, 0x00, //0x0000134d jb LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00001353 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00001357 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000135a notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000135d movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00001365 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001368 .p2align 4, 0x90 - //0x00001370 LBB0_237 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001370 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001376 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000137d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001384 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000138b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000138f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001393 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00001398 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000139c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x000013a0 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x000013a4 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013a8 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x000013ac pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000013b0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013b4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000013b8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000013bc pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000013c0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000013c5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x000013c9 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x74, 0xe9, //0x000013cd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000013d1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000013d5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000013d9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000013de shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000013e2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000013e6 orq %rdx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x000013e9 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x000013ed orq %rdi, %rcx - 0x49, 0x09, 0xca, //0x000013f0 orq %rcx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000013f3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000013f7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000013fb orq %r15, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x000013fe shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00001402 orq %rsi, %rbx - 0x49, 0x09, 0xdb, //0x00001405 orq %rbx, %r11 - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x00001408 jne LBB0_246 - 0x4d, 0x85, 0xc0, //0x0000140e testq %r8, %r8 - 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x00001411 jne LBB0_248 - 0x45, 0x31, 0xc0, //0x00001417 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000141a testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000141d movabsq $4294977024, %r11 - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001427 jne LBB0_249 - //0x0000142d LBB0_240 - 0x49, 0x83, 0xc1, 0xc0, //0x0000142d addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00001431 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00001435 addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001439 cmpq $63, %r9 - 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x0000143d ja LBB0_237 - 0xe9, 0x06, 0x18, 0x00, 0x00, //0x00001443 jmp LBB0_241 - //0x00001448 LBB0_246 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001448 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x0000144d jne LBB0_248 - 0x49, 0x0f, 0xbc, 0xcb, //0x00001453 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00001457 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000145a movq %rcx, $-56(%rbp) - //0x0000145e LBB0_248 - 0x4c, 0x89, 0xc1, //0x0000145e movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00001461 notq %rcx - 0x4c, 0x21, 0xd9, //0x00001464 andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00001467 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x0000146b orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x0000146e movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001471 notq %rsi - 0x4c, 0x21, 0xde, //0x00001474 andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001477 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00001481 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00001484 xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00001487 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x0000148a setb %r8b - 0x48, 0x01, 0xf6, //0x0000148e addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001491 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x0000149b xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x0000149e andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000014a1 notq %rsi - 0x49, 0x21, 0xf2, //0x000014a4 andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x000014a7 testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000014aa movabsq $4294977024, %r11 - 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x000014b4 je LBB0_240 - //0x000014ba LBB0_249 - 0x49, 0x0f, 0xbc, 0xc2, //0x000014ba bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x000014be subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000014c1 movq $-48(%rbp), %r14 - 0xe9, 0x73, 0x11, 0x00, 0x00, //0x000014c5 jmp LBB0_426 - //0x000014ca LBB0_250 - 0x48, 0x8b, 0x45, 0xa8, //0x000014ca movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x000014ce movq $8(%rax), %rdi - 0x49, 0x8b, 0x06, //0x000014d2 movq (%r14), %rax - 0xf6, 0x45, 0x98, 0x40, //0x000014d5 testb $64, $-104(%rbp) - 0x0f, 0x85, 0xf2, 0x08, 0x00, 0x00, //0x000014d9 jne LBB0_344 - 0x48, 0x29, 0xc7, //0x000014df subq %rax, %rdi - 0x0f, 0x84, 0xe7, 0x26, 0x00, 0x00, //0x000014e2 je LBB0_635 - 0x4d, 0x8d, 0x04, 0x04, //0x000014e8 leaq (%r12,%rax), %r8 - 0x41, 0x80, 0x38, 0x30, //0x000014ec cmpb $48, (%r8) - 0x0f, 0x85, 0x36, 0x00, 0x00, 0x00, //0x000014f0 jne LBB0_256 - 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014f6 movl $1, %ebx - 0x48, 0x83, 0xff, 0x01, //0x000014fb cmpq $1, %rdi - 0x0f, 0x84, 0x23, 0x17, 0x00, 0x00, //0x000014ff je LBB0_469 - 0x41, 0x8a, 0x48, 0x01, //0x00001505 movb $1(%r8), %cl - 0x80, 0xc1, 0xd2, //0x00001509 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x0000150c cmpb $55, %cl - 0x0f, 0x87, 0x13, 0x17, 0x00, 0x00, //0x0000150f ja LBB0_469 - 0x0f, 0xb6, 0xc9, //0x00001515 movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001518 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x00001522 btq %rcx, %rdx - 0x0f, 0x83, 0xfc, 0x16, 0x00, 0x00, //0x00001526 jae LBB0_469 - //0x0000152c LBB0_256 - 0x48, 0x83, 0xff, 0x10, //0x0000152c cmpq $16, %rdi - 0x0f, 0x82, 0x02, 0x1b, 0x00, 0x00, //0x00001530 jb LBB0_500 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00001536 movq $-1, %r13 - 0x31, 0xdb, //0x0000153d xorl %ebx, %ebx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000153f movq $-1, %r10 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001546 movq $-1, %r14 - 0x49, 0x89, 0xf9, //0x0000154d movq %rdi, %r9 - //0x00001550 .p2align 4, 0x90 - //0x00001550 LBB0_258 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x18, //0x00001550 movdqu (%r8,%rbx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001556 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0x3e, 0xeb, 0xff, 0xff, //0x0000155a pcmpgtb $-5314(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001562 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001567 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x0000156b pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000156f movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0x45, 0xeb, 0xff, 0xff, //0x00001573 pcmpeqb $-5307(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000157b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0x49, 0xeb, 0xff, 0xff, //0x0000157f pcmpeqb $-5303(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00001587 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000158b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000158f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0x44, 0xeb, 0xff, 0xff, //0x00001594 pcmpeqb $-5308(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000159c pcmpeqb %xmm11, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x000015a1 pmovmskb %xmm4, %r15d - 0x66, 0x0f, 0xeb, 0xe3, //0x000015a6 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x000015aa por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x000015ae por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd3, //0x000015b2 pmovmskb %xmm3, %edx - 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x000015b6 pmovmskb %xmm6, %r11d - 0x66, 0x0f, 0xd7, 0xcd, //0x000015bb pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x000015bf notl %ecx - 0x0f, 0xbc, 0xc9, //0x000015c1 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x000015c4 cmpl $16, %ecx - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015c7 je LBB0_260 - 0xbe, 0xff, 0xff, 0xff, 0xff, //0x000015cd movl $-1, %esi - 0xd3, 0xe6, //0x000015d2 shll %cl, %esi - 0xf7, 0xd6, //0x000015d4 notl %esi - 0x21, 0xf2, //0x000015d6 andl %esi, %edx - 0x41, 0x21, 0xf7, //0x000015d8 andl %esi, %r15d - 0x44, 0x21, 0xde, //0x000015db andl %r11d, %esi - 0x41, 0x89, 0xf3, //0x000015de movl %esi, %r11d - //0x000015e1 LBB0_260 - 0x8d, 0x72, 0xff, //0x000015e1 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x000015e4 andl %edx, %esi - 0x0f, 0x85, 0x06, 0x16, 0x00, 0x00, //0x000015e6 jne LBB0_463 - 0x41, 0x8d, 0x77, 0xff, //0x000015ec leal $-1(%r15), %esi - 0x44, 0x21, 0xfe, //0x000015f0 andl %r15d, %esi - 0x0f, 0x85, 0xf9, 0x15, 0x00, 0x00, //0x000015f3 jne LBB0_463 - 0x41, 0x8d, 0x73, 0xff, //0x000015f9 leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x000015fd andl %r11d, %esi - 0x0f, 0x85, 0xec, 0x15, 0x00, 0x00, //0x00001600 jne LBB0_463 - 0x85, 0xd2, //0x00001606 testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001608 je LBB0_266 - 0x0f, 0xbc, 0xd2, //0x0000160e bsfl %edx, %edx - 0x49, 0x83, 0xfe, 0xff, //0x00001611 cmpq $-1, %r14 - 0x0f, 0x85, 0xfc, 0x15, 0x00, 0x00, //0x00001615 jne LBB0_466 - 0x48, 0x01, 0xda, //0x0000161b addq %rbx, %rdx - 0x49, 0x89, 0xd6, //0x0000161e movq %rdx, %r14 - //0x00001621 LBB0_266 - 0x45, 0x85, 0xff, //0x00001621 testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001624 je LBB0_269 - 0x41, 0x0f, 0xbc, 0xd7, //0x0000162a bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x0000162e cmpq $-1, %r10 - 0x0f, 0x85, 0xdf, 0x15, 0x00, 0x00, //0x00001632 jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001638 addq %rbx, %rdx - 0x49, 0x89, 0xd2, //0x0000163b movq %rdx, %r10 - //0x0000163e LBB0_269 - 0x45, 0x85, 0xdb, //0x0000163e testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001641 je LBB0_272 - 0x41, 0x0f, 0xbc, 0xd3, //0x00001647 bsfl %r11d, %edx - 0x49, 0x83, 0xfd, 0xff, //0x0000164b cmpq $-1, %r13 - 0x0f, 0x85, 0xc2, 0x15, 0x00, 0x00, //0x0000164f jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001655 addq %rbx, %rdx - 0x49, 0x89, 0xd5, //0x00001658 movq %rdx, %r13 - //0x0000165b LBB0_272 - 0x83, 0xf9, 0x10, //0x0000165b cmpl $16, %ecx - 0x0f, 0x85, 0x36, 0x0f, 0x00, 0x00, //0x0000165e jne LBB0_411 - 0x49, 0x83, 0xc1, 0xf0, //0x00001664 addq $-16, %r9 - 0x48, 0x83, 0xc3, 0x10, //0x00001668 addq $16, %rbx - 0x49, 0x83, 0xf9, 0x0f, //0x0000166c cmpq $15, %r9 - 0x0f, 0x87, 0xda, 0xfe, 0xff, 0xff, //0x00001670 ja LBB0_258 - 0x49, 0x8d, 0x14, 0x18, //0x00001676 leaq (%r8,%rbx), %rdx - 0x49, 0x89, 0xd3, //0x0000167a movq %rdx, %r11 - 0x48, 0x39, 0xdf, //0x0000167d cmpq %rbx, %rdi - 0x0f, 0x84, 0x28, 0x0f, 0x00, 0x00, //0x00001680 je LBB0_413 - //0x00001686 LBB0_275 - 0x4e, 0x8d, 0x1c, 0x0a, //0x00001686 leaq (%rdx,%r9), %r11 - 0x49, 0x89, 0xd7, //0x0000168a movq %rdx, %r15 - 0x4d, 0x29, 0xc7, //0x0000168d subq %r8, %r15 - 0x31, 0xdb, //0x00001690 xorl %ebx, %ebx - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00001692 jmp LBB0_279 - //0x00001697 LBB0_276 - 0x49, 0x83, 0xfd, 0xff, //0x00001697 cmpq $-1, %r13 - 0x0f, 0x85, 0x65, 0x15, 0x00, 0x00, //0x0000169b jne LBB0_465 - 0x4d, 0x8d, 0x2c, 0x1f, //0x000016a1 leaq (%r15,%rbx), %r13 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000016a5 .p2align 4, 0x90 - //0x000016b0 LBB0_278 - 0x48, 0x83, 0xc3, 0x01, //0x000016b0 addq $1, %rbx - 0x49, 0x39, 0xd9, //0x000016b4 cmpq %rbx, %r9 - 0x0f, 0x84, 0xf1, 0x0e, 0x00, 0x00, //0x000016b7 je LBB0_413 - //0x000016bd LBB0_279 - 0x0f, 0xbe, 0x0c, 0x1a, //0x000016bd movsbl (%rdx,%rbx), %ecx - 0x8d, 0x71, 0xd0, //0x000016c1 leal $-48(%rcx), %esi - 0x83, 0xfe, 0x0a, //0x000016c4 cmpl $10, %esi - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x000016c7 jb LBB0_278 - 0x8d, 0x71, 0xd5, //0x000016cd leal $-43(%rcx), %esi - 0x83, 0xfe, 0x1a, //0x000016d0 cmpl $26, %esi - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x000016d3 ja LBB0_284 - 0x48, 0x8d, 0x3d, 0x08, 0x28, 0x00, 0x00, //0x000016d9 leaq $10248(%rip), %rdi /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x0c, 0xb7, //0x000016e0 movslq (%rdi,%rsi,4), %rcx - 0x48, 0x01, 0xf9, //0x000016e4 addq %rdi, %rcx - 0xff, 0xe1, //0x000016e7 jmpq *%rcx - //0x000016e9 LBB0_282 - 0x49, 0x83, 0xfe, 0xff, //0x000016e9 cmpq $-1, %r14 - 0x0f, 0x85, 0x13, 0x15, 0x00, 0x00, //0x000016ed jne LBB0_465 - 0x4d, 0x8d, 0x34, 0x1f, //0x000016f3 leaq (%r15,%rbx), %r14 - 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016f7 jmp LBB0_278 - //0x000016fc LBB0_284 - 0x83, 0xf9, 0x65, //0x000016fc cmpl $101, %ecx - 0x0f, 0x85, 0xa3, 0x0e, 0x00, 0x00, //0x000016ff jne LBB0_412 - //0x00001705 LBB0_285 - 0x49, 0x83, 0xfa, 0xff, //0x00001705 cmpq $-1, %r10 - 0x0f, 0x85, 0xf7, 0x14, 0x00, 0x00, //0x00001709 jne LBB0_465 - 0x4d, 0x8d, 0x14, 0x1f, //0x0000170f leaq (%r15,%rbx), %r10 - 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00001713 jmp LBB0_278 - //0x00001718 LBB0_287 - 0x49, 0x8b, 0x0e, //0x00001718 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000171b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000171f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001723 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001727 cmpq %rsi, %rcx - 0x0f, 0x87, 0x4e, 0x23, 0x00, 0x00, //0x0000172a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001730 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001734 cmpl $1819047278, $-1(%r12,%rcx) - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000173d je LBB0_298 - 0xe9, 0x07, 0x24, 0x00, 0x00, //0x00001743 jmp LBB0_289 - //0x00001748 LBB0_293 - 0xf6, 0x45, 0x98, 0x40, //0x00001748 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x62, 0x07, 0x00, 0x00, //0x0000174c jne LBB0_356 - 0x49, 0x8b, 0x45, 0x00, //0x00001752 movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001756 cmpq $4095, %rax - 0x0f, 0x8f, 0x8a, 0x22, 0x00, 0x00, //0x0000175c jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x00001762 leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001766 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000176a movq $6, $8(%r13,%rax,8) - 0xe9, 0x48, 0xea, 0xff, 0xff, //0x00001773 jmp LBB0_4 - //0x00001778 LBB0_296 - 0x49, 0x8b, 0x0e, //0x00001778 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000177b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000177f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001783 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001787 cmpq %rsi, %rcx - 0x0f, 0x87, 0xee, 0x22, 0x00, 0x00, //0x0000178a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001790 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001794 cmpl $1702195828, $-1(%r12,%rcx) - 0x0f, 0x85, 0x65, 0x23, 0x00, 0x00, //0x0000179d jne LBB0_627 - //0x000017a3 LBB0_298 - 0x48, 0x8d, 0x51, 0x03, //0x000017a3 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x000017a7 movq %rdx, (%r14) - 0x48, 0x85, 0xc9, //0x000017aa testq %rcx, %rcx - 0x0f, 0x8f, 0x0d, 0xea, 0xff, 0xff, //0x000017ad jg LBB0_4 - 0xe9, 0x8f, 0x22, 0x00, 0x00, //0x000017b3 jmp LBB0_638 - //0x000017b8 LBB0_299 - 0x4c, 0x89, 0xc1, //0x000017b8 movq %r8, %rcx - 0x4c, 0x09, 0xf9, //0x000017bb orq %r15, %rcx - 0x0f, 0x99, 0xc1, //0x000017be setns %cl - 0x0f, 0x88, 0x9f, 0x0b, 0x00, 0x00, //0x000017c1 js LBB0_384 - 0x4d, 0x39, 0xf8, //0x000017c7 cmpq %r15, %r8 - 0x0f, 0x8c, 0x96, 0x0b, 0x00, 0x00, //0x000017ca jl LBB0_384 - 0x49, 0xf7, 0xd0, //0x000017d0 notq %r8 - 0x4d, 0x89, 0xc5, //0x000017d3 movq %r8, %r13 - 0xe9, 0x07, 0xea, 0xff, 0xff, //0x000017d6 jmp LBB0_2 - //0x000017db LBB0_302 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017db movl $64, %edx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017e0 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x4d, 0xe8, 0xff, 0xff, //0x000017ea movdqu $-6067(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000017f3 cmpq %rcx, %rdx - 0x0f, 0x82, 0xf0, 0x23, 0x00, 0x00, //0x000017f6 jb LBB0_640 - //0x000017fc LBB0_303 - 0x48, 0x01, 0xc8, //0x000017fc addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000017ff addq $1, %rax - //0x00001803 LBB0_304 - 0x48, 0x85, 0xc0, //0x00001803 testq %rax, %rax - 0x0f, 0x88, 0x59, 0x22, 0x00, 0x00, //0x00001806 js LBB0_615 - 0x49, 0x89, 0x06, //0x0000180c movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x0000180f movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001813 testq %rax, %rax - 0x0f, 0x8e, 0xdc, 0x21, 0x00, 0x00, //0x00001816 jle LBB0_606 - //0x0000181c LBB0_306 - 0x49, 0x8b, 0x45, 0x00, //0x0000181c movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001820 cmpq $4095, %rax - 0x0f, 0x8f, 0xc0, 0x21, 0x00, 0x00, //0x00001826 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x0000182c leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001830 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001834 movq $4, $8(%r13,%rax,8) - 0xe9, 0x7e, 0xe9, 0xff, 0xff, //0x0000183d jmp LBB0_4 - //0x00001842 LBB0_308 - 0x48, 0x8b, 0x55, 0xa8, //0x00001842 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001846 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x0000184a movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x0000184d subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001850 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001854 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001857 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x0000185a xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x0000185d xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001860 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001863 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001867 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x0000186b jge LBB0_309 - //0x00001871 LBB0_318 - 0x48, 0x85, 0xd2, //0x00001871 testq %rdx, %rdx - 0x0f, 0x8e, 0xdd, 0x23, 0x00, 0x00, //0x00001874 jle LBB0_648 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000187a movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x0000187e pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001882 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001887 movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000188f movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001897 movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x0000189f movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x000018a2 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000018a5 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000018ab cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x000018b1 jb LBB0_322 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x000018b7 cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x000018bc jb LBB0_323 - 0x0f, 0x10, 0x1f, //0x000018c2 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x000018c5 movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x000018cc movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x000018d1 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x000018d9 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x000018dd movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x000018e1 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x000018e5 leaq $-144(%rbp), %rdx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000018ec jmp LBB0_324 - //0x000018f1 LBB0_322 - 0x66, 0x0f, 0x6f, 0xd6, //0x000018f1 movdqa %xmm6, %xmm2 - 0x49, 0x89, 0xfc, //0x000018f5 movq %rdi, %r12 - 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x000018f8 jmp LBB0_309 - //0x000018fd LBB0_323 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000018fd leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001904 movq $-64(%rbp), %rsi - //0x00001908 LBB0_324 - 0x48, 0x83, 0xfe, 0x10, //0x00001908 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x0000190c jb LBB0_325 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001912 movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001916 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x0000191a addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x0000191e addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001922 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001926 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x0000192a jae LBB0_332 - //0x00001930 LBB0_326 - 0x48, 0x83, 0xfe, 0x04, //0x00001930 cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001934 jl LBB0_327 - //0x0000193a LBB0_333 - 0x8b, 0x0f, //0x0000193a movl (%rdi), %ecx - 0x89, 0x0a, //0x0000193c movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x0000193e addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001942 addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001946 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x0000194a cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000194e jae LBB0_328 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001954 jmp LBB0_329 - //0x00001959 LBB0_325 - 0x48, 0x83, 0xfe, 0x08, //0x00001959 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x0000195d jb LBB0_326 - //0x00001963 LBB0_332 - 0x48, 0x8b, 0x0f, //0x00001963 movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001966 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001969 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x0000196d addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001971 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001975 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001979 jge LBB0_333 - //0x0000197f LBB0_327 - 0x48, 0x83, 0xfe, 0x02, //0x0000197f cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001983 jb LBB0_329 - //0x00001989 LBB0_328 - 0x0f, 0xb7, 0x0f, //0x00001989 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x0000198c movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000198f addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x00001993 addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00001997 addq $-2, %rsi - //0x0000199b LBB0_329 - 0x48, 0x89, 0xf9, //0x0000199b movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000199e leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x000019a5 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x000019a8 movdqa %xmm6, %xmm2 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x000019ac je LBB0_309 - 0x8a, 0x09, //0x000019b2 movb (%rcx), %cl - 0x88, 0x0a, //0x000019b4 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x000019b6 leaq $-176(%rbp), %r12 - //0x000019bd LBB0_309 - 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x000019bd movdqa %xmm2, %xmm8 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x000019c2 movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x000019c8 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x000019cf movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x000019d6 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x000019dd movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019e1 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000019e5 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x000019e9 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019ed pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000019f1 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000019f5 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019f9 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000019fd pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a01 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001a05 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001a09 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00001a0d shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x00001a11 shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00001a15 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00001a18 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001a1c orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x00001a1f orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00001a22 movq %rdx, %rcx - 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001a25 movdqa %xmm14, %xmm13 - 0x4c, 0x09, 0xd1, //0x00001a2a orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a2d jne LBB0_311 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a33 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a3a xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a3d jmp LBB0_312 - //0x00001a42 LBB0_311 - 0x4c, 0x89, 0xd1, //0x00001a42 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x00001a45 notq %rcx - 0x48, 0x21, 0xd1, //0x00001a48 andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x00001a4b leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x00001a4f orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x00001a52 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x00001a55 notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a58 movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x00001a62 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x00001a65 andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x00001a68 xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x00001a6b addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a6e setb %r10b - 0x48, 0x01, 0xd2, //0x00001a72 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a75 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x00001a7f xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x00001a82 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x00001a85 notq %rdx - //0x00001a88 LBB0_312 - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a88 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a8c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001a90 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00001a94 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x00001a98 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a9c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001aa0 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x00001aa4 shlq $32, %rsi - 0x48, 0x09, 0xce, //0x00001aa8 orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00001aab movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001aaf pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001ab3 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00001ab7 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001abb orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00001abe movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001ac2 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001ac6 pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00001aca orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00001acd andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001ad0 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001ad5 pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001adc movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00001ae1 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x00001ae4 movdqa %xmm4, %xmm3 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x6f, 0xe5, 0xff, 0xff, //0x00001ae8 movdqu $-6801(%rip), %xmm11 /* LCPI0_6+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001af1 pcmpeqb %xmm11, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001af6 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00001afb movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001aff pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001b04 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00001b08 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b0c pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00001b11 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001b15 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b19 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001b1e pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00001b22 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00001b26 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00001b2a orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x00001b2d shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x00001b31 orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x00001b34 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x00001b37 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x00001b3a notq %r8 - 0x4d, 0x21, 0xc5, //0x00001b3d andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b40 movdqa %xmm8, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001b45 pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00001b4a pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001b4e pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00001b53 pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001b57 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x00001b5c pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001b60 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001b65 pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x00001b6a shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x00001b6e shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x00001b72 orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x00001b75 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001b79 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x00001b7c orq %rsi, %rdx - 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001b7f movdqa %xmm13, %xmm14 - 0x4c, 0x21, 0xc2, //0x00001b84 andq %r8, %rdx - 0x0f, 0x84, 0xaa, 0x00, 0x00, 0x00, //0x00001b87 je LBB0_316 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x5a, 0xe5, 0xff, 0xff, //0x00001b8d movdqu $-6822(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b96 movdqa %xmm8, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x9c, 0xe4, 0xff, 0xff, //0x00001b9b movdqu $-7012(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001ba4 movabsq $3689348814741910323, %r8 - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0x99, 0xe4, 0xff, 0xff, //0x00001bae movdqu $-7015(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001bb7 .p2align 4, 0x90 - //0x00001bc0 LBB0_314 - 0x48, 0x8d, 0x7a, 0xff, //0x00001bc0 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00001bc4 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00001bc7 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x00001bca movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x00001bcd shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001bd0 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x00001bda andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x00001bdd subq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001be0 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00001be3 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00001be6 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x00001bea andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x00001bed addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001bf0 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00001bf3 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00001bf7 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001bfa movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00001c04 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c07 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00001c11 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00001c15 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00001c19 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x00001c1c cmpq %r14, %rsi - 0x0f, 0x86, 0xd4, 0x06, 0x00, 0x00, //0x00001c1f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00001c25 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00001c29 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001c2c jne LBB0_314 - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_317 - //0x00001c37 LBB0_316 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001c37 movdqa %xmm8, %xmm2 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001c3c movabsq $3689348814741910323, %r8 - //0x00001c46 LBB0_317 - 0x49, 0xc1, 0xfb, 0x3f, //0x00001c46 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00001c4a movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00001c4d shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c50 movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00001c5a andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00001c5d subq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c60 movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x00001c63 andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x00001c66 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x00001c6a andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x00001c6d addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c70 movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00001c73 shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x00001c77 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001c7a movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x00001c84 andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c87 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00001c91 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00001c95 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x00001c99 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x00001c9c addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x00001ca0 movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x00001ca4 addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x00001ca8 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x00001cab cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001caf movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x04, 0xfd, 0xff, 0xff, //0x00001cb3 jge LBB0_309 - 0xe9, 0xb3, 0xfb, 0xff, 0xff, //0x00001cb9 jmp LBB0_318 - //0x00001cbe LBB0_334 - 0x48, 0x8b, 0x4d, 0xa8, //0x00001cbe movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00001cc2 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00001cc6 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00001cc9 leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00001ccd subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00001cd0 cmpq $32, %r9 - 0x0f, 0x8c, 0xdb, 0x00, 0x00, 0x00, //0x00001cd4 jl LBB0_343 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00001cda movl $32, %r14d - 0x31, 0xd2, //0x00001ce0 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00001ce2 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001ce5 .p2align 4, 0x90 - //0x00001cf0 LBB0_336 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00001cf0 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00001cf6 movdqu $16(%r10,%rdx), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00001cfd movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d01 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001d05 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xec, //0x00001d09 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d0d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00001d11 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00001d15 shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00001d19 orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xd9, //0x00001d1c pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001d20 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x74, 0xe1, //0x00001d24 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00001d28 pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00001d2c shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001d30 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00001d33 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00001d36 orq %r11, %rcx - 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x00001d39 je LBB0_338 - 0x44, 0x89, 0xd9, //0x00001d3f movl %r11d, %ecx - 0xf7, 0xd1, //0x00001d42 notl %ecx - 0x21, 0xf1, //0x00001d44 andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00001d46 leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00001d4a orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00001d4d movl %r15d, %ebx - 0xf7, 0xd3, //0x00001d50 notl %ebx - 0x21, 0xf3, //0x00001d52 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d54 andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00001d5a xorl %r11d, %r11d - 0x01, 0xcb, //0x00001d5d addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00001d5f setb %r11b - 0x01, 0xdb, //0x00001d63 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00001d65 xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00001d6b andl %r15d, %ebx - 0xf7, 0xd3, //0x00001d6e notl %ebx - 0x21, 0xdf, //0x00001d70 andl %ebx, %edi - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00001d72 jmp LBB0_339 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001d77 .p2align 4, 0x90 - //0x00001d80 LBB0_338 - 0x45, 0x31, 0xdb, //0x00001d80 xorl %r11d, %r11d - //0x00001d83 LBB0_339 - 0x48, 0x85, 0xff, //0x00001d83 testq %rdi, %rdi - 0x0f, 0x85, 0xe5, 0xed, 0xff, 0xff, //0x00001d86 jne LBB0_129 - 0x48, 0x83, 0xc2, 0x20, //0x00001d8c addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00001d90 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00001d94 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00001d98 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00001d9c cmpq $63, %rcx - 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001da0 jg LBB0_336 - 0x4d, 0x85, 0xdb, //0x00001da6 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x19, 0x00, 0x00, //0x00001da9 jne LBB0_570 - 0x49, 0x01, 0xd2, //0x00001daf addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00001db2 subq %rdx, %r9 - //0x00001db5 LBB0_343 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001db5 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001db9 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00001dc3 testq %r9, %r9 - 0x0f, 0x8f, 0x8e, 0x19, 0x00, 0x00, //0x00001dc6 jg LBB0_574 - 0xe9, 0x76, 0x1c, 0x00, 0x00, //0x00001dcc jmp LBB0_638 - //0x00001dd1 LBB0_344 - 0x48, 0x89, 0xfa, //0x00001dd1 movq %rdi, %rdx - 0x48, 0x29, 0xc2, //0x00001dd4 subq %rax, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x00001dd7 cmpq $16, %rdx - 0x0f, 0x82, 0x3c, 0x12, 0x00, 0x00, //0x00001ddb jb LBB0_498 - 0x48, 0x89, 0xc2, //0x00001de1 movq %rax, %rdx - 0x48, 0xf7, 0xda, //0x00001de4 negq %rdx - 0x48, 0x89, 0xc1, //0x00001de7 movq %rax, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_346 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x0c, //0x00001df0 movdqu (%r12,%rcx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001df6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00001dfa pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00001dff pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00001e04 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00001e08 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001e0c pmovmskb %xmm3, %esi - 0x85, 0xf6, //0x00001e10 testl %esi, %esi - 0x0f, 0x85, 0x33, 0x05, 0x00, 0x00, //0x00001e12 jne LBB0_605 - 0x48, 0x83, 0xc1, 0x10, //0x00001e18 addq $16, %rcx - 0x48, 0x8d, 0x34, 0x17, //0x00001e1c leaq (%rdi,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xf0, //0x00001e20 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001e24 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001e28 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00001e2c ja LBB0_346 - 0x4c, 0x89, 0xe1, //0x00001e32 movq %r12, %rcx - 0x48, 0x29, 0xd1, //0x00001e35 subq %rdx, %rcx - 0x48, 0x01, 0xd7, //0x00001e38 addq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00001e3b movq %rdi, %rdx - 0x48, 0x85, 0xd2, //0x00001e3e testq %rdx, %rdx - 0x0f, 0x84, 0xe3, 0x11, 0x00, 0x00, //0x00001e41 je LBB0_499 - //0x00001e47 LBB0_349 - 0x48, 0x8d, 0x3c, 0x11, //0x00001e47 leaq (%rcx,%rdx), %rdi - 0x31, 0xf6, //0x00001e4b xorl %esi, %esi - //0x00001e4d LBB0_350 - 0x0f, 0xb6, 0x1c, 0x31, //0x00001e4d movzbl (%rcx,%rsi), %ebx - 0x80, 0xfb, 0x2c, //0x00001e51 cmpb $44, %bl - 0x0f, 0x84, 0x81, 0x0d, 0x00, 0x00, //0x00001e54 je LBB0_462 - 0x80, 0xfb, 0x7d, //0x00001e5a cmpb $125, %bl - 0x0f, 0x84, 0x78, 0x0d, 0x00, 0x00, //0x00001e5d je LBB0_462 - 0x80, 0xfb, 0x5d, //0x00001e63 cmpb $93, %bl - 0x0f, 0x84, 0x6f, 0x0d, 0x00, 0x00, //0x00001e66 je LBB0_462 - 0x48, 0x83, 0xc6, 0x01, //0x00001e6c addq $1, %rsi - 0x48, 0x39, 0xf2, //0x00001e70 cmpq %rsi, %rdx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00001e73 jne LBB0_350 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00001e79 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00001e7e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf9, //0x00001e82 movq %rdi, %rcx - //0x00001e85 LBB0_355 - 0x4c, 0x29, 0xe1, //0x00001e85 subq %r12, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001e88 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001e8c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e90 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00001e9a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00001e9e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x0e, //0x00001ea3 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00001ea6 testq %rax, %rax - 0x0f, 0x8f, 0x11, 0xe3, 0xff, 0xff, //0x00001ea9 jg LBB0_4 - 0xe9, 0x44, 0x1b, 0x00, 0x00, //0x00001eaf jmp LBB0_606 - //0x00001eb4 LBB0_356 - 0x48, 0x8b, 0x55, 0xa8, //0x00001eb4 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001eb8 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x00001ebc movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x00001ebf subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001ec2 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001ec6 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001ec9 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x00001ecc xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x00001ecf xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001ed2 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001ed5 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001ed9 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001edd jge LBB0_357 - //0x00001ee3 LBB0_366 - 0x48, 0x85, 0xd2, //0x00001ee3 testq %rdx, %rdx - 0x0f, 0x8e, 0x6b, 0x1d, 0x00, 0x00, //0x00001ee6 jle LBB0_648 - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001eec movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00001ef1 movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x00001ef5 pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ef9 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001efe movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001f06 movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f0e movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x00001f16 movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x00001f19 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f1c andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f22 cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f28 jb LBB0_370 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00001f2e cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f33 jb LBB0_371 - 0x0f, 0x10, 0x1f, //0x00001f39 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f3c movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f43 movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f48 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x00001f50 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x00001f54 movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x00001f58 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f5c leaq $-144(%rbp), %rdx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f63 jmp LBB0_372 - //0x00001f68 LBB0_370 - 0x66, 0x0f, 0x6f, 0xd6, //0x00001f68 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f6c movdqa %xmm7, %xmm13 - 0x49, 0x89, 0xfc, //0x00001f71 movq %rdi, %r12 - 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f74 jmp LBB0_357 - //0x00001f79 LBB0_371 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f79 leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001f80 movq $-64(%rbp), %rsi - //0x00001f84 LBB0_372 - 0x48, 0x83, 0xfe, 0x10, //0x00001f84 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f88 jb LBB0_373 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f8e movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f92 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x00001f96 addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x00001f9a addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001f9e addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001fa2 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001fa6 jae LBB0_380 - //0x00001fac LBB0_374 - 0x48, 0x83, 0xfe, 0x04, //0x00001fac cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001fb0 jl LBB0_375 - //0x00001fb6 LBB0_381 - 0x8b, 0x0f, //0x00001fb6 movl (%rdi), %ecx - 0x89, 0x0a, //0x00001fb8 movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x00001fba addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001fbe addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001fc2 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00001fc6 cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fca jae LBB0_376 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fd0 jmp LBB0_377 - //0x00001fd5 LBB0_373 - 0x48, 0x83, 0xfe, 0x08, //0x00001fd5 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fd9 jb LBB0_374 - //0x00001fdf LBB0_380 - 0x48, 0x8b, 0x0f, //0x00001fdf movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001fe2 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001fe5 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x00001fe9 addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001fed addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001ff1 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001ff5 jge LBB0_381 - //0x00001ffb LBB0_375 - 0x48, 0x83, 0xfe, 0x02, //0x00001ffb cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fff jb LBB0_377 - //0x00002005 LBB0_376 - 0x0f, 0xb7, 0x0f, //0x00002005 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x00002008 movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000200b addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x0000200f addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00002013 addq $-2, %rsi - //0x00002017 LBB0_377 - 0x48, 0x89, 0xf9, //0x00002017 movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000201a leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x00002021 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x00002024 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002028 movdqa %xmm7, %xmm13 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x0000202d je LBB0_357 - 0x8a, 0x09, //0x00002033 movb (%rcx), %cl - 0x88, 0x0a, //0x00002035 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002037 leaq $-176(%rbp), %r12 - //0x0000203e LBB0_357 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x0000203e movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00002044 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x0000204b movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00002052 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x00002059 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000205d pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00002061 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x00002065 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002069 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000206d pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002071 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002075 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002079 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x0000207d movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002081 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002085 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00002089 shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x0000208d shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00002091 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00002094 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002098 orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x0000209b orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x0000209e movq %rdx, %rcx - 0x4c, 0x09, 0xd1, //0x000020a1 orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000020a4 jne LBB0_359 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000020aa movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x000020b1 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000020b4 jmp LBB0_360 - //0x000020b9 LBB0_359 - 0x4c, 0x89, 0xd1, //0x000020b9 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x000020bc notq %rcx - 0x48, 0x21, 0xd1, //0x000020bf andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x000020c2 leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x000020c6 orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x000020c9 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x000020cc notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020cf movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x000020d9 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x000020dc andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x000020df xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x000020e2 addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x000020e5 setb %r10b - 0x48, 0x01, 0xd2, //0x000020e9 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020ec movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x000020f6 xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x000020f9 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x000020fc notq %rdx - //0x000020ff LBB0_360 - 0x66, 0x0f, 0x6f, 0xdd, //0x000020ff movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002103 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002107 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x0000210b shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x0000210f movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002113 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002117 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x0000211b shlq $32, %rsi - 0x48, 0x09, 0xce, //0x0000211f orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00002122 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002126 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000212a pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x0000212e shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002132 orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00002135 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002139 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000213d pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00002141 orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002144 andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002147 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x0000214c pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00002153 movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00002158 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x0000215b movdqa %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000215f pcmpeqb %xmm13, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00002164 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002169 movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000216d pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002172 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002176 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000217a pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x0000217f pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00002183 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002187 pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000218c pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00002190 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00002194 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00002198 orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x0000219b shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x0000219f orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x000021a2 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x000021a5 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x000021a8 notq %r8 - 0x4d, 0x21, 0xc5, //0x000021ab andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x000021ae pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x000021b3 pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021b7 pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x000021bc pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021c0 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x000021c5 pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021c9 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021ce pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x000021d3 shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x000021d7 shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x000021db orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x000021de shlq $16, %rsi - 0x48, 0x09, 0xce, //0x000021e2 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x000021e5 orq %rsi, %rdx - 0x4c, 0x21, 0xc2, //0x000021e8 andq %r8, %rdx - 0x0f, 0x84, 0x86, 0x00, 0x00, 0x00, //0x000021eb je LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021f1 movabsq $3689348814741910323, %r8 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021fb .p2align 4, 0x90 - //0x00002200 LBB0_362 - 0x48, 0x8d, 0x7a, 0xff, //0x00002200 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00002204 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00002207 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x0000220a movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x0000220d shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002210 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x0000221a andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x0000221d subq %rsi, %rcx + 0x0f, 0x83, 0xc5, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_228 + 0xe9, 0xdf, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_187 + //0x00000fa8 LBB0_188 + 0x41, 0x89, 0xc9, //0x00000fa8 movl %ecx, %r9d + 0x49, 0x01, 0xf9, //0x00000fab addq %rdi, %r9 + 0x4d, 0x01, 0xe9, //0x00000fae addq %r13, %r9 + 0xe9, 0x1c, 0x02, 0x00, 0x00, //0x00000fb1 jmp LBB0_217 + //0x00000fb6 LBB0_189 + 0x49, 0x89, 0xc2, //0x00000fb6 movq %rax, %r10 + 0x49, 0x29, 0xd2, //0x00000fb9 subq %rdx, %r10 + 0x0f, 0x84, 0xe1, 0x2c, 0x00, 0x00, //0x00000fbc je LBB0_658 + 0x4c, 0x89, 0x65, 0xb8, //0x00000fc2 movq %r12, $-72(%rbp) + 0x49, 0x83, 0xfa, 0x40, //0x00000fc6 cmpq $64, %r10 + 0x0f, 0x82, 0x15, 0x20, 0x00, 0x00, //0x00000fca jb LBB0_512 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fd0 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x00000fd8 movq $-64(%rbp), %rax + 0x45, 0x31, 0xe4, //0x00000fdc xorl %r12d, %r12d + 0x90, //0x00000fdf .p2align 4, 0x90 + //0x00000fe0 LBB0_192 + 0x48, 0x8b, 0x4d, 0xb8, //0x00000fe0 movq $-72(%rbp), %rcx + 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000fe4 movdqu (%rcx,%rax), %xmm13 + 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000fea movdqu $16(%rcx,%rax), %xmm6 + 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00000ff0 movdqu $32(%rcx,%rax), %xmm5 + 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00000ff6 movdqu $48(%rcx,%rax), %xmm4 + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00000ffc movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001001 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001005 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xde, //0x0000100a movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000100e pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00001012 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001016 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000101a pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000101e pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00001023 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001027 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000102b pmovmskb %xmm3, %r15d + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001030 movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001035 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001039 pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xde, //0x0000103e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001042 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001046 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000104a movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000104e pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001052 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x00001056 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000105a pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x0000105e pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001063 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00001068 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000106c pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x00001071 pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xf6, //0x00001075 pmovmskb %xmm6, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001079 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x0000107e pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001082 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x00001087 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000108b pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000108f movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001094 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00001098 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000109d pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010a1 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x000010a6 shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x000010aa shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000010ae orq %r15, %r14 + 0x48, 0xc1, 0xe3, 0x10, //0x000010b1 shlq $16, %rbx + 0x4c, 0x09, 0xf3, //0x000010b5 orq %r14, %rbx + 0x49, 0x09, 0xdb, //0x000010b8 orq %rbx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000010bb shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000010bf shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000010c3 orq %r9, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000010c6 shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000010ca orq %rdi, %rcx + 0x49, 0xc1, 0xe0, 0x30, //0x000010cd shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000010d1 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000010d5 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000010d8 shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000010dc orq %rdx, %rsi + 0x49, 0x09, 0xcd, //0x000010df orq %rcx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010e2 jne LBB0_209 + 0x4d, 0x85, 0xe4, //0x000010e8 testq %r12, %r12 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010eb jne LBB0_211 + 0x45, 0x31, 0xe4, //0x000010f1 xorl %r12d, %r12d + 0x4c, 0x8b, 0x75, 0xd0, //0x000010f4 movq $-48(%rbp), %r14 + //0x000010f8 LBB0_195 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000010f8 movdqa %xmm12, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x000010fd pcmpgtb %xmm13, %xmm3 + 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001102 pcmpgtb %xmm10, %xmm13 + 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001107 pand %xmm3, %xmm13 + 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000110c pmovmskb %xmm13, %ecx + 0x48, 0x09, 0xce, //0x00001111 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00001114 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00001117 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000111b jne LBB0_213 + 0x48, 0x85, 0xf6, //0x00001121 testq %rsi, %rsi + 0x0f, 0x85, 0xe7, 0x2a, 0x00, 0x00, //0x00001124 jne LBB0_645 + 0x49, 0x83, 0xc2, 0xc0, //0x0000112a addq $-64, %r10 + 0x48, 0x83, 0xc0, 0x40, //0x0000112e addq $64, %rax + 0x49, 0x83, 0xfa, 0x3f, //0x00001132 cmpq $63, %r10 + 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001136 ja LBB0_192 + 0xe9, 0x27, 0x18, 0x00, 0x00, //0x0000113c jmp LBB0_198 + //0x00001141 LBB0_209 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001141 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00001146 movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000114a jne LBB0_212 + 0x49, 0x0f, 0xbc, 0xcd, //0x00001150 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00001154 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001157 movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000115b jmp LBB0_212 + //0x00001160 LBB0_211 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001160 movq $-48(%rbp), %r14 + //0x00001164 LBB0_212 + 0x4c, 0x89, 0xe1, //0x00001164 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00001167 notq %rcx + 0x4c, 0x21, 0xe9, //0x0000116a andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000116d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xe2, //0x00001171 orq %r12, %rdx + 0x48, 0x89, 0xd7, //0x00001174 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00001177 notq %rdi + 0x4c, 0x21, 0xef, //0x0000117a andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000117d movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x00001187 andq %rbx, %rdi + 0x45, 0x31, 0xe4, //0x0000118a xorl %r12d, %r12d + 0x48, 0x01, 0xcf, //0x0000118d addq %rcx, %rdi + 0x41, 0x0f, 0x92, 0xc4, //0x00001190 setb %r12b + 0x48, 0x01, 0xff, //0x00001194 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001197 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x000011a1 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x000011a4 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x000011a7 notq %rdi + 0x49, 0x21, 0xfb, //0x000011aa andq %rdi, %r11 + 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011ad jmp LBB0_195 + //0x000011b2 LBB0_213 + 0x49, 0x0f, 0xbc, 0xcb, //0x000011b2 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000011b6 testq %rsi, %rsi + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011b9 je LBB0_310 + 0x48, 0x0f, 0xbc, 0xd6, //0x000011bf bsfq %rsi, %rdx + 0xe9, 0x08, 0x06, 0x00, 0x00, //0x000011c3 jmp LBB0_311 + //0x000011c8 LBB0_215 + 0x48, 0x01, 0xd6, //0x000011c8 addq %rdx, %rsi + 0x49, 0x89, 0xf1, //0x000011cb movq %rsi, %r9 + //0x000011ce LBB0_216 + 0x48, 0x8b, 0x7d, 0xb8, //0x000011ce movq $-72(%rbp), %rdi + //0x000011d2 LBB0_217 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011d2 movq $-1, %r13 + 0x4d, 0x85, 0xc0, //0x000011d9 testq %r8, %r8 + 0x0f, 0x84, 0xb4, 0x28, 0x00, 0x00, //0x000011dc je LBB0_626 + 0x4d, 0x85, 0xd2, //0x000011e2 testq %r10, %r10 + 0x0f, 0x84, 0xab, 0x28, 0x00, 0x00, //0x000011e5 je LBB0_626 + 0x4d, 0x85, 0xff, //0x000011eb testq %r15, %r15 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011ee movabsq $4294977024, %r11 + 0x0f, 0x84, 0x98, 0x28, 0x00, 0x00, //0x000011f8 je LBB0_626 + 0x49, 0x29, 0xf9, //0x000011fe subq %rdi, %r9 + 0x49, 0x8d, 0x49, 0xff, //0x00001201 leaq $-1(%r9), %rcx + 0x49, 0x39, 0xc8, //0x00001205 cmpq %rcx, %r8 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00001208 je LBB0_226 + 0x49, 0x39, 0xca, //0x0000120e cmpq %rcx, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00001211 je LBB0_226 + 0x49, 0x39, 0xcf, //0x00001217 cmpq %rcx, %r15 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000121a je LBB0_226 + 0x4d, 0x85, 0xd2, //0x00001220 testq %r10, %r10 + 0x0f, 0x8e, 0x7f, 0x05, 0x00, 0x00, //0x00001223 jle LBB0_307 + 0x49, 0x8d, 0x4a, 0xff, //0x00001229 leaq $-1(%r10), %rcx + 0x49, 0x39, 0xcf, //0x0000122d cmpq %rcx, %r15 + 0x0f, 0x84, 0x72, 0x05, 0x00, 0x00, //0x00001230 je LBB0_307 + 0x49, 0xf7, 0xd2, //0x00001236 notq %r10 + 0x4d, 0x89, 0xd5, //0x00001239 movq %r10, %r13 + 0xe9, 0xb3, 0x14, 0x00, 0x00, //0x0000123c jmp LBB0_451 + //0x00001241 LBB0_226 + 0x49, 0xf7, 0xd9, //0x00001241 negq %r9 + 0x4d, 0x89, 0xcd, //0x00001244 movq %r9, %r13 + 0xe9, 0xa8, 0x14, 0x00, 0x00, //0x00001247 jmp LBB0_451 + //0x0000124c LBB0_227 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000124c movl $64, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00001251 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001255 movabsq $4294977024, %r11 + 0x48, 0x39, 0xca, //0x0000125f cmpq %rcx, %rdx + 0x0f, 0x82, 0x1f, 0x2a, 0x00, 0x00, //0x00001262 jb LBB0_187 + //0x00001268 LBB0_228 + 0x48, 0x01, 0xc8, //0x00001268 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000126b addq $1, %rax + //0x0000126f LBB0_229 + 0x48, 0x85, 0xc0, //0x0000126f testq %rax, %rax + 0x0f, 0x88, 0xf9, 0x27, 0x00, 0x00, //0x00001272 js LBB0_623 + 0x49, 0x89, 0x06, //0x00001278 movq %rax, (%r14) + 0x48, 0x8b, 0x45, 0xc0, //0x0000127b movq $-64(%rbp), %rax + //0x0000127f LBB0_231 + 0x48, 0x85, 0xc0, //0x0000127f testq %rax, %rax + 0x0f, 0x8f, 0x48, 0xef, 0xff, 0xff, //0x00001282 jg LBB0_4 + 0xe9, 0xdb, 0x27, 0x00, 0x00, //0x00001288 jmp LBB0_232 + //0x0000128d LBB0_233 + 0x49, 0x8b, 0x0e, //0x0000128d movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x00001290 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001294 movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001298 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x0000129c cmpq %rsi, %rcx + 0x0f, 0x87, 0x35, 0x28, 0x00, 0x00, //0x0000129f ja LBB0_629 + 0x41, 0x8b, 0x14, 0x0c, //0x000012a5 movl (%r12,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012a9 cmpl $1702063201, %edx + 0x0f, 0x85, 0xfb, 0x28, 0x00, 0x00, //0x000012af jne LBB0_640 + 0x48, 0x8d, 0x41, 0x04, //0x000012b5 leaq $4(%rcx), %rax + 0x49, 0x89, 0x06, //0x000012b9 movq %rax, (%r14) + 0x48, 0x85, 0xc9, //0x000012bc testq %rcx, %rcx + 0x0f, 0x8f, 0x0b, 0xef, 0xff, 0xff, //0x000012bf jg LBB0_4 + 0xe9, 0x3b, 0x29, 0x00, 0x00, //0x000012c5 jmp LBB0_236 + //0x000012ca LBB0_237 + 0x48, 0x8b, 0x4d, 0x98, //0x000012ca movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000012ce testb $64, %cl + 0x0f, 0x85, 0x5b, 0x05, 0x00, 0x00, //0x000012d1 jne LBB0_317 + 0x49, 0x8b, 0x16, //0x000012d7 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000012da movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000012de movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000012e2 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000012e5 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000012e9 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xae, 0x10, 0x00, 0x00, //0x000012ed jne LBB0_400 + 0x49, 0x89, 0xc1, //0x000012f3 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000012f6 subq %rdx, %r9 + 0x0f, 0x84, 0xb1, 0x29, 0x00, 0x00, //0x000012f9 je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000012ff cmpq $64, %r9 + 0x0f, 0x82, 0xb1, 0x1d, 0x00, 0x00, //0x00001303 jb LBB0_518 + 0x49, 0x89, 0xd6, //0x00001309 movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x0000130c notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000130f movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x00001317 movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x0000131a xorl %r8d, %r8d + 0x90, 0x90, 0x90, //0x0000131d .p2align 4, 0x90 + //0x00001320 LBB0_242 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001320 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001326 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000132d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001334 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000133b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000133f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001343 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00001348 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000134c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x00001350 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x00001354 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001358 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000135c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00001360 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001364 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00001368 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000136c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001370 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00001375 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001379 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x74, 0xe9, //0x0000137d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001381 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00001385 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00001389 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000138e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00001392 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00001396 orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001399 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000139d orq %rsi, %rcx + 0x49, 0x09, 0xca, //0x000013a0 orq %rcx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000013a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000013a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000013ab orq %r15, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000013ae shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000013b2 orq %rdi, %rbx + 0x49, 0x09, 0xdb, //0x000013b5 orq %rbx, %r11 + 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000013b8 jne LBB0_251 + 0x4d, 0x85, 0xc0, //0x000013be testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x000013c1 jne LBB0_253 + 0x45, 0x31, 0xc0, //0x000013c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000013ca testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000013cd movabsq $4294977024, %r11 + 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_254 + //0x000013dd LBB0_245 + 0x49, 0x83, 0xc1, 0xc0, //0x000013dd addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000013e1 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000013e5 addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000013e9 cmpq $63, %r9 + 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x000013ed ja LBB0_242 + 0xe9, 0x90, 0x18, 0x00, 0x00, //0x000013f3 jmp LBB0_246 + //0x000013f8 LBB0_251 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000013f8 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000013fd jne LBB0_253 + 0x49, 0x0f, 0xbc, 0xcb, //0x00001403 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x00001407 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000140a movq %rcx, $-56(%rbp) + //0x0000140e LBB0_253 + 0x4c, 0x89, 0xc1, //0x0000140e movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00001411 notq %rcx + 0x4c, 0x21, 0xd9, //0x00001414 andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00001417 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x0000141b orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x0000141e movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001421 notq %rsi + 0x4c, 0x21, 0xde, //0x00001424 andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001427 movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00001431 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x00001434 xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x00001437 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x0000143a setb %r8b + 0x48, 0x01, 0xf6, //0x0000143e addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001441 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x0000144b xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000144e andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001451 notq %rsi + 0x49, 0x21, 0xf2, //0x00001454 andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00001457 testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000145a movabsq $4294977024, %r11 + 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x00001464 je LBB0_245 + //0x0000146a LBB0_254 + 0x49, 0x0f, 0xbc, 0xc2, //0x0000146a bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000146e subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00001471 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00001475 movq $-64(%rbp), %rbx + 0xe9, 0xe5, 0x11, 0x00, 0x00, //0x00001479 jmp LBB0_441 + //0x0000147e LBB0_255 + 0x48, 0x8b, 0x45, 0xa8, //0x0000147e movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00001482 movq $8(%rax), %r9 + 0x49, 0x8b, 0x06, //0x00001486 movq (%r14), %rax + 0xf6, 0x45, 0x98, 0x40, //0x00001489 testb $64, $-104(%rbp) + 0x0f, 0x85, 0xae, 0x04, 0x00, 0x00, //0x0000148d jne LBB0_327 + 0x49, 0x29, 0xc1, //0x00001493 subq %rax, %r9 + 0x0f, 0x84, 0x92, 0x27, 0x00, 0x00, //0x00001496 je LBB0_647 + 0x49, 0x8d, 0x0c, 0x04, //0x0000149c leaq (%r12,%rax), %rcx + 0x48, 0x89, 0x4d, 0xb8, //0x000014a0 movq %rcx, $-72(%rbp) + 0x80, 0x39, 0x30, //0x000014a4 cmpb $48, (%rcx) + 0x0f, 0x85, 0x39, 0x00, 0x00, 0x00, //0x000014a7 jne LBB0_261 + 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014ad movl $1, %ebx + 0x49, 0x83, 0xf9, 0x01, //0x000014b2 cmpq $1, %r9 + 0x0f, 0x84, 0xa6, 0x17, 0x00, 0x00, //0x000014b6 je LBB0_487 + 0x48, 0x8b, 0x4d, 0xb8, //0x000014bc movq $-72(%rbp), %rcx + 0x8a, 0x49, 0x01, //0x000014c0 movb $1(%rcx), %cl + 0x80, 0xc1, 0xd2, //0x000014c3 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000014c6 cmpb $55, %cl + 0x0f, 0x87, 0x93, 0x17, 0x00, 0x00, //0x000014c9 ja LBB0_487 + 0x0f, 0xb6, 0xc9, //0x000014cf movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000014d2 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x000014dc btq %rcx, %rdx + 0x0f, 0x83, 0x7c, 0x17, 0x00, 0x00, //0x000014e0 jae LBB0_487 + //0x000014e6 LBB0_261 + 0x49, 0x83, 0xf9, 0x10, //0x000014e6 cmpq $16, %r9 + 0x0f, 0x82, 0xa9, 0x1b, 0x00, 0x00, //0x000014ea jb LBB0_517 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000014f0 movq $-1, %r13 + 0x31, 0xdb, //0x000014f7 xorl %ebx, %ebx + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000014f9 movq $-1, %r8 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001500 movq $-1, %r14 + 0x4d, 0x89, 0xca, //0x00001507 movq %r9, %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000150a .p2align 4, 0x90 + //0x00001510 LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001510 movq $-72(%rbp), %rcx + 0xf3, 0x0f, 0x6f, 0x1c, 0x19, //0x00001514 movdqu (%rcx,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001519 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0x7b, 0xeb, 0xff, 0xff, //0x0000151d pcmpgtb $-5253(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001525 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000152a pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x0000152e pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001532 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0x82, 0xeb, 0xff, 0xff, //0x00001536 pcmpeqb $-5246(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x0000153e movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0x86, 0xeb, 0xff, 0xff, //0x00001542 pcmpeqb $-5242(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x0000154a por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x0000154e movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x00001552 pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0x81, 0xeb, 0xff, 0xff, //0x00001557 pcmpeqb $-5247(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000155f pcmpeqb %xmm11, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00001564 pmovmskb %xmm4, %r15d + 0x66, 0x0f, 0xeb, 0xe3, //0x00001569 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x0000156d por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00001571 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001575 pmovmskb %xmm3, %edx + 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x00001579 pmovmskb %xmm6, %r11d + 0x66, 0x0f, 0xd7, 0xcd, //0x0000157e pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00001582 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00001584 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001587 cmpl $16, %ecx + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000158a je LBB0_265 + 0xbe, 0xff, 0xff, 0xff, 0xff, //0x00001590 movl $-1, %esi + 0xd3, 0xe6, //0x00001595 shll %cl, %esi + 0xf7, 0xd6, //0x00001597 notl %esi + 0x21, 0xf2, //0x00001599 andl %esi, %edx + 0x41, 0x21, 0xf7, //0x0000159b andl %esi, %r15d + 0x44, 0x21, 0xde, //0x0000159e andl %r11d, %esi + 0x41, 0x89, 0xf3, //0x000015a1 movl %esi, %r11d + //0x000015a4 LBB0_265 + 0x8d, 0x72, 0xff, //0x000015a4 leal $-1(%rdx), %esi + 0x21, 0xd6, //0x000015a7 andl %edx, %esi + 0x0f, 0x85, 0x79, 0x16, 0x00, 0x00, //0x000015a9 jne LBB0_481 + 0x41, 0x8d, 0x77, 0xff, //0x000015af leal $-1(%r15), %esi + 0x44, 0x21, 0xfe, //0x000015b3 andl %r15d, %esi + 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x000015b6 jne LBB0_481 + 0x41, 0x8d, 0x73, 0xff, //0x000015bc leal $-1(%r11), %esi + 0x44, 0x21, 0xde, //0x000015c0 andl %r11d, %esi + 0x0f, 0x85, 0x5f, 0x16, 0x00, 0x00, //0x000015c3 jne LBB0_481 + 0x85, 0xd2, //0x000015c9 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000015cb je LBB0_271 + 0x0f, 0xbc, 0xd2, //0x000015d1 bsfl %edx, %edx + 0x49, 0x83, 0xfe, 0xff, //0x000015d4 cmpq $-1, %r14 + 0x0f, 0x85, 0x73, 0x16, 0x00, 0x00, //0x000015d8 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015de addq %rbx, %rdx + 0x49, 0x89, 0xd6, //0x000015e1 movq %rdx, %r14 + //0x000015e4 LBB0_271 + 0x45, 0x85, 0xff, //0x000015e4 testl %r15d, %r15d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015e7 je LBB0_274 + 0x41, 0x0f, 0xbc, 0xd7, //0x000015ed bsfl %r15d, %edx + 0x49, 0x83, 0xf8, 0xff, //0x000015f1 cmpq $-1, %r8 + 0x0f, 0x85, 0x56, 0x16, 0x00, 0x00, //0x000015f5 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015fb addq %rbx, %rdx + 0x49, 0x89, 0xd0, //0x000015fe movq %rdx, %r8 + //0x00001601 LBB0_274 + 0x45, 0x85, 0xdb, //0x00001601 testl %r11d, %r11d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001604 je LBB0_277 + 0x41, 0x0f, 0xbc, 0xd3, //0x0000160a bsfl %r11d, %edx + 0x49, 0x83, 0xfd, 0xff, //0x0000160e cmpq $-1, %r13 + 0x0f, 0x85, 0x39, 0x16, 0x00, 0x00, //0x00001612 jne LBB0_484 + 0x48, 0x01, 0xda, //0x00001618 addq %rbx, %rdx + 0x49, 0x89, 0xd5, //0x0000161b movq %rdx, %r13 + //0x0000161e LBB0_277 + 0x83, 0xf9, 0x10, //0x0000161e cmpl $16, %ecx + 0x0f, 0x85, 0x93, 0x0f, 0x00, 0x00, //0x00001621 jne LBB0_426 + 0x49, 0x83, 0xc2, 0xf0, //0x00001627 addq $-16, %r10 + 0x48, 0x83, 0xc3, 0x10, //0x0000162b addq $16, %rbx + 0x49, 0x83, 0xfa, 0x0f, //0x0000162f cmpq $15, %r10 + 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x00001633 ja LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001639 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x34, 0x19, //0x0000163d leaq (%rcx,%rbx), %rsi + 0x49, 0x89, 0xf3, //0x00001641 movq %rsi, %r11 + 0x49, 0x39, 0xd9, //0x00001644 cmpq %rbx, %r9 + 0x0f, 0x84, 0x82, 0x0f, 0x00, 0x00, //0x00001647 je LBB0_428 + //0x0000164d LBB0_280 + 0x4e, 0x8d, 0x1c, 0x16, //0x0000164d leaq (%rsi,%r10), %r11 + 0x49, 0x89, 0xf1, //0x00001651 movq %rsi, %r9 + 0x4c, 0x2b, 0x4d, 0xb8, //0x00001654 subq $-72(%rbp), %r9 + 0x31, 0xdb, //0x00001658 xorl %ebx, %ebx + 0xe9, 0x1e, 0x00, 0x00, 0x00, //0x0000165a jmp LBB0_284 + //0x0000165f LBB0_281 + 0x49, 0x83, 0xfd, 0xff, //0x0000165f cmpq $-1, %r13 + 0x0f, 0x85, 0xd7, 0x15, 0x00, 0x00, //0x00001663 jne LBB0_483 + 0x4d, 0x8d, 0x2c, 0x19, //0x00001669 leaq (%r9,%rbx), %r13 + 0x90, 0x90, 0x90, //0x0000166d .p2align 4, 0x90 + //0x00001670 LBB0_283 + 0x48, 0x83, 0xc3, 0x01, //0x00001670 addq $1, %rbx + 0x49, 0x39, 0xda, //0x00001674 cmpq %rbx, %r10 + 0x0f, 0x84, 0x52, 0x0f, 0x00, 0x00, //0x00001677 je LBB0_428 + //0x0000167d LBB0_284 + 0x0f, 0xbe, 0x0c, 0x1e, //0x0000167d movsbl (%rsi,%rbx), %ecx + 0x8d, 0x51, 0xd0, //0x00001681 leal $-48(%rcx), %edx + 0x83, 0xfa, 0x0a, //0x00001684 cmpl $10, %edx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00001687 jb LBB0_283 + 0x8d, 0x51, 0xd5, //0x0000168d leal $-43(%rcx), %edx + 0x83, 0xfa, 0x1a, //0x00001690 cmpl $26, %edx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00001693 ja LBB0_289 + 0x48, 0x8d, 0x3d, 0xb4, 0x28, 0x00, 0x00, //0x00001699 leaq $10420(%rip), %rdi /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x0c, 0x97, //0x000016a0 movslq (%rdi,%rdx,4), %rcx + 0x48, 0x01, 0xf9, //0x000016a4 addq %rdi, %rcx + 0xff, 0xe1, //0x000016a7 jmpq *%rcx + //0x000016a9 LBB0_287 + 0x49, 0x83, 0xfe, 0xff, //0x000016a9 cmpq $-1, %r14 + 0x0f, 0x85, 0x8d, 0x15, 0x00, 0x00, //0x000016ad jne LBB0_483 + 0x4d, 0x8d, 0x34, 0x19, //0x000016b3 leaq (%r9,%rbx), %r14 + 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016b7 jmp LBB0_283 + //0x000016bc LBB0_289 + 0x83, 0xf9, 0x65, //0x000016bc cmpl $101, %ecx + 0x0f, 0x85, 0x04, 0x0f, 0x00, 0x00, //0x000016bf jne LBB0_427 + //0x000016c5 LBB0_290 + 0x49, 0x83, 0xf8, 0xff, //0x000016c5 cmpq $-1, %r8 + 0x0f, 0x85, 0x71, 0x15, 0x00, 0x00, //0x000016c9 jne LBB0_483 + 0x4d, 0x8d, 0x04, 0x19, //0x000016cf leaq (%r9,%rbx), %r8 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x000016d3 jmp LBB0_283 + //0x000016d8 LBB0_292 + 0xf6, 0x45, 0x98, 0x40, //0x000016d8 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x46, 0x03, 0x00, 0x00, //0x000016dc jne LBB0_340 + 0x49, 0x8b, 0x45, 0x00, //0x000016e2 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000016e6 cmpq $4095, %rax + 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000016ec jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x000016f2 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x000016f6 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000016fa movq $5, $8(%r13,%rax,8) + 0xe9, 0xc8, 0xea, 0xff, 0xff, //0x00001703 jmp LBB0_4 + //0x00001708 LBB0_295 + 0x49, 0x8b, 0x0e, //0x00001708 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000170b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000170f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001713 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001717 cmpq %rsi, %rcx + 0x0f, 0x87, 0xba, 0x23, 0x00, 0x00, //0x0000171a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001720 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001724 cmpl $1819047278, $-1(%r12,%rcx) + 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000172d je LBB0_306 + 0xe9, 0x2a, 0x24, 0x00, 0x00, //0x00001733 jmp LBB0_297 + //0x00001738 LBB0_301 + 0xf6, 0x45, 0x98, 0x40, //0x00001738 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x5c, 0x07, 0x00, 0x00, //0x0000173c jne LBB0_366 + 0x49, 0x8b, 0x45, 0x00, //0x00001742 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001746 cmpq $4095, %rax + 0x0f, 0x8f, 0xfe, 0x22, 0x00, 0x00, //0x0000174c jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x00001752 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001756 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000175a movq $6, $8(%r13,%rax,8) + 0xe9, 0x68, 0xea, 0xff, 0xff, //0x00001763 jmp LBB0_4 + //0x00001768 LBB0_304 + 0x49, 0x8b, 0x0e, //0x00001768 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000176b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000176f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001773 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001777 cmpq %rsi, %rcx + 0x0f, 0x87, 0x5a, 0x23, 0x00, 0x00, //0x0000177a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001780 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001784 cmpl $1702195828, $-1(%r12,%rcx) + 0x0f, 0x85, 0x88, 0x23, 0x00, 0x00, //0x0000178d jne LBB0_635 + //0x00001793 LBB0_306 + 0x48, 0x8d, 0x51, 0x03, //0x00001793 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00001797 movq %rdx, (%r14) + 0x48, 0x85, 0xc9, //0x0000179a testq %rcx, %rcx + 0x0f, 0x8f, 0x2d, 0xea, 0xff, 0xff, //0x0000179d jg LBB0_4 + 0xe9, 0x07, 0x23, 0x00, 0x00, //0x000017a3 jmp LBB0_650 + //0x000017a8 LBB0_307 + 0x4c, 0x89, 0xc1, //0x000017a8 movq %r8, %rcx + 0x4c, 0x09, 0xf9, //0x000017ab orq %r15, %rcx + 0x0f, 0x99, 0xc2, //0x000017ae setns %dl + 0x0f, 0x88, 0xce, 0x0b, 0x00, 0x00, //0x000017b1 js LBB0_399 + 0x4d, 0x39, 0xf8, //0x000017b7 cmpq %r15, %r8 + 0x0f, 0x8c, 0xc5, 0x0b, 0x00, 0x00, //0x000017ba jl LBB0_399 + 0x49, 0xf7, 0xd0, //0x000017c0 notq %r8 + 0x4d, 0x89, 0xc5, //0x000017c3 movq %r8, %r13 + 0xe9, 0x29, 0x0f, 0x00, 0x00, //0x000017c6 jmp LBB0_451 + //0x000017cb LBB0_310 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017cb movl $64, %edx + //0x000017d0 LBB0_311 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017d0 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5d, 0xe8, 0xff, 0xff, //0x000017da movdqu $-6051(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x48, 0x8b, 0x75, 0xc0, //0x000017e3 movq $-64(%rbp), %rsi + 0x48, 0x39, 0xca, //0x000017e7 cmpq %rcx, %rdx + 0x0f, 0x82, 0x67, 0x24, 0x00, 0x00, //0x000017ea jb LBB0_654 + 0x48, 0x01, 0xc8, //0x000017f0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000017f3 addq $1, %rax + //0x000017f7 LBB0_313 + 0x48, 0x85, 0xc0, //0x000017f7 testq %rax, %rax + 0x0f, 0x88, 0xc1, 0x22, 0x00, 0x00, //0x000017fa js LBB0_627 + 0x49, 0x89, 0x06, //0x00001800 movq %rax, (%r14) + 0x48, 0x85, 0xf6, //0x00001803 testq %rsi, %rsi + 0x0f, 0x8e, 0xd6, 0x22, 0x00, 0x00, //0x00001806 jle LBB0_630 + //0x0000180c LBB0_315 + 0x49, 0x8b, 0x45, 0x00, //0x0000180c movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001810 cmpq $4095, %rax + 0x0f, 0x8f, 0x34, 0x22, 0x00, 0x00, //0x00001816 jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x0000181c leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001820 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001824 movq $4, $8(%r13,%rax,8) + 0xe9, 0x9e, 0xe9, 0xff, 0xff, //0x0000182d jmp LBB0_4 + //0x00001832 LBB0_317 + 0x48, 0x8b, 0x4d, 0xa8, //0x00001832 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001836 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x0000183a movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x0000183d leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00001841 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00001844 cmpq $32, %r9 + 0x0f, 0x8c, 0xd7, 0x00, 0x00, 0x00, //0x00001848 jl LBB0_326 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x0000184e movl $32, %r14d + 0x31, 0xf6, //0x00001854 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00001856 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001859 .p2align 4, 0x90 + //0x00001860 LBB0_319 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00001860 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00001866 movdqu $16(%r10,%rsi), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000186d movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001871 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001875 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x00001879 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000187d pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001881 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00001885 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00001889 orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xd9, //0x0000188c pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001890 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x74, 0xe1, //0x00001894 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00001898 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x0000189c shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x000018a0 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x000018a3 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x000018a6 orq %r11, %rcx + 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x000018a9 je LBB0_321 + 0x44, 0x89, 0xd9, //0x000018af movl %r11d, %ecx + 0xf7, 0xd1, //0x000018b2 notl %ecx + 0x21, 0xf9, //0x000018b4 andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x000018b6 leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x000018ba orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x000018bd movl %r15d, %edx + 0xf7, 0xd2, //0x000018c0 notl %edx + 0x21, 0xfa, //0x000018c2 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000018c4 andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x000018ca xorl %r11d, %r11d + 0x01, 0xca, //0x000018cd addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x000018cf setb %r11b + 0x01, 0xd2, //0x000018d3 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000018d5 xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x000018db andl %r15d, %edx + 0xf7, 0xd2, //0x000018de notl %edx + 0x21, 0xd3, //0x000018e0 andl %edx, %ebx + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000018e2 jmp LBB0_322 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018e7 .p2align 4, 0x90 + //0x000018f0 LBB0_321 + 0x45, 0x31, 0xdb, //0x000018f0 xorl %r11d, %r11d + //0x000018f3 LBB0_322 + 0x48, 0x85, 0xdb, //0x000018f3 testq %rbx, %rbx + 0x0f, 0x85, 0xab, 0xe8, 0xff, 0xff, //0x000018f6 jne LBB0_1 + 0x48, 0x83, 0xc6, 0x20, //0x000018fc addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00001900 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001904 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00001908 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x0000190c cmpq $63, %rcx + 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001910 jg LBB0_319 + 0x4d, 0x85, 0xdb, //0x00001916 testq %r11, %r11 + 0x0f, 0x85, 0x44, 0x1e, 0x00, 0x00, //0x00001919 jne LBB0_587 + 0x49, 0x01, 0xf2, //0x0000191f addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00001922 subq %rsi, %r9 + //0x00001925 LBB0_326 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001925 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001929 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00001933 testq %r9, %r9 + 0x0f, 0x8f, 0x85, 0x1e, 0x00, 0x00, //0x00001936 jg LBB0_591 + 0xe9, 0x6e, 0x21, 0x00, 0x00, //0x0000193c jmp LBB0_650 + //0x00001941 LBB0_327 + 0x4c, 0x89, 0xca, //0x00001941 movq %r9, %rdx + 0x48, 0x29, 0xc2, //0x00001944 subq %rax, %rdx + 0x48, 0x83, 0xfa, 0x10, //0x00001947 cmpq $16, %rdx + 0x0f, 0x82, 0x36, 0x17, 0x00, 0x00, //0x0000194b jb LBB0_516 + 0x48, 0x89, 0xc7, //0x00001951 movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x00001954 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x00001957 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x0000195b leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x04, //0x0000195f leaq (%r12,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00001963 addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x00001967 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000196a .p2align 4, 0x90 + //0x00001970 LBB0_329 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00001970 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001976 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x0000197a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x0000197f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00001984 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00001988 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000198c pmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x00001990 testl %ecx, %ecx + 0x0f, 0x85, 0x8c, 0x09, 0x00, 0x00, //0x00001992 jne LBB0_394 + 0x48, 0x83, 0xc3, 0x10, //0x00001998 addq $16, %rbx + 0x49, 0x8d, 0x0c, 0x39, //0x0000199c leaq (%r9,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xf0, //0x000019a0 addq $-16, %rcx + 0x48, 0x83, 0xc7, 0xf0, //0x000019a4 addq $-16, %rdi + 0x49, 0x83, 0xc0, 0x10, //0x000019a8 addq $16, %r8 + 0x48, 0x83, 0xc2, 0x10, //0x000019ac addq $16, %rdx + 0x48, 0x83, 0xc6, 0x10, //0x000019b0 addq $16, %rsi + 0x48, 0x83, 0xf9, 0x0f, //0x000019b4 cmpq $15, %rcx + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x000019b8 ja LBB0_329 + 0x4c, 0x89, 0xe1, //0x000019be movq %r12, %rcx + 0x48, 0x29, 0xf9, //0x000019c1 subq %rdi, %rcx + 0x49, 0x01, 0xf9, //0x000019c4 addq %rdi, %r9 + 0x4c, 0x89, 0xca, //0x000019c7 movq %r9, %rdx + 0x48, 0x85, 0xd2, //0x000019ca testq %rdx, %rdx + 0x0f, 0x84, 0x4a, 0x00, 0x00, 0x00, //0x000019cd je LBB0_339 + //0x000019d3 LBB0_332 + 0x48, 0x8d, 0x34, 0x11, //0x000019d3 leaq (%rcx,%rdx), %rsi + //0x000019d7 LBB0_333 + 0x0f, 0xb6, 0x39, //0x000019d7 movzbl (%rcx), %edi + 0x48, 0x83, 0xff, 0x2c, //0x000019da cmpq $44, %rdi + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x000019de ja LBB0_335 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x000019e4 movabsq $17596481021440, %rbx + 0x48, 0x0f, 0xa3, 0xfb, //0x000019ee btq %rdi, %rbx + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x000019f2 jb LBB0_339 + //0x000019f8 LBB0_335 + 0x40, 0x80, 0xff, 0x5d, //0x000019f8 cmpb $93, %dil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x000019fc je LBB0_339 + 0x40, 0x80, 0xff, 0x7d, //0x00001a02 cmpb $125, %dil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001a06 je LBB0_339 + 0x48, 0x83, 0xc1, 0x01, //0x00001a0c addq $1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00001a10 addq $-1, %rdx + 0x0f, 0x85, 0xbd, 0xff, 0xff, 0xff, //0x00001a14 jne LBB0_333 + 0x48, 0x89, 0xf1, //0x00001a1a movq %rsi, %rcx + //0x00001a1d LBB0_339 + 0x4c, 0x29, 0xe1, //0x00001a1d subq %r12, %rcx + 0x49, 0x89, 0x0e, //0x00001a20 movq %rcx, (%r14) + 0xe9, 0x57, 0xf8, 0xff, 0xff, //0x00001a23 jmp LBB0_231 + //0x00001a28 LBB0_340 + 0x48, 0x8b, 0x55, 0xa8, //0x00001a28 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001a2c movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001a30 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001a33 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001a36 movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001a3a addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001a3d xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001a40 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001a46 xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001a49 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001a4d movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x00001a51 jge LBB0_341 + //0x00001a57 LBB0_350 + 0x48, 0x85, 0xd2, //0x00001a57 testq %rdx, %rdx + 0x0f, 0x8e, 0x62, 0x22, 0x00, 0x00, //0x00001a5a jle LBB0_662 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001a60 movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001a64 pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001a68 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001a6d movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001a75 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001a7d movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001a85 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001a88 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001a8b andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001a91 cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001a97 jb LBB0_354 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001a9d cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x00001aa2 jb LBB0_355 + 0x0f, 0x10, 0x1f, //0x00001aa8 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001aab movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001ab2 movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001ab7 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001abf addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001ac3 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001ac7 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001acb leaq $-144(%rbp), %rdx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001ad2 jmp LBB0_356 + //0x00001ad7 LBB0_354 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001ad7 movdqa %xmm6, %xmm2 + 0x49, 0x89, 0xfc, //0x00001adb movq %rdi, %r12 + 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x00001ade jmp LBB0_341 + //0x00001ae3 LBB0_355 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ae3 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001aea movq $-72(%rbp), %rsi + //0x00001aee LBB0_356 + 0x48, 0x83, 0xfe, 0x10, //0x00001aee cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001af2 jb LBB0_357 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001af8 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001afc movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001b00 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001b04 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001b08 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001b0c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001b10 jae LBB0_364 + //0x00001b16 LBB0_358 + 0x48, 0x83, 0xfe, 0x04, //0x00001b16 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001b1a jl LBB0_359 + //0x00001b20 LBB0_365 + 0x8b, 0x0f, //0x00001b20 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001b22 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001b24 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001b28 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001b2c addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001b30 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001b34 jae LBB0_360 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001b3a jmp LBB0_361 + //0x00001b3f LBB0_357 + 0x48, 0x83, 0xfe, 0x08, //0x00001b3f cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001b43 jb LBB0_358 + //0x00001b49 LBB0_364 + 0x48, 0x8b, 0x0f, //0x00001b49 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001b4c movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001b4f addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001b53 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001b57 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001b5b cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001b5f jge LBB0_365 + //0x00001b65 LBB0_359 + 0x48, 0x83, 0xfe, 0x02, //0x00001b65 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001b69 jb LBB0_361 + //0x00001b6f LBB0_360 + 0x0f, 0xb7, 0x0f, //0x00001b6f movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001b72 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001b75 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001b79 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001b7d addq $-2, %rsi + //0x00001b81 LBB0_361 + 0x48, 0x89, 0xf9, //0x00001b81 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b84 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x00001b8b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x00001b8e movdqa %xmm6, %xmm2 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00001b92 je LBB0_341 + 0x8a, 0x09, //0x00001b98 movb (%rcx), %cl + 0x88, 0x0a, //0x00001b9a movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b9c leaq $-176(%rbp), %r12 + //0x00001ba3 LBB0_341 + 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x00001ba3 movdqa %xmm2, %xmm8 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00001ba8 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00001bae movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00001bb5 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00001bbc movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001bc3 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bc7 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001bcb pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x00001bcf movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bd3 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001bd7 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001bdb movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bdf pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001be3 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00001be7 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001beb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001bef pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00001bf3 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00001bf7 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x00001bfb orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001bfe shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001c02 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00001c05 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001c08 movq %rdx, %rcx + 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001c0b movdqa %xmm14, %xmm13 + 0x4c, 0x09, 0xc9, //0x00001c10 orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001c13 jne LBB0_343 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001c19 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x00001c20 xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001c23 jmp LBB0_344 + //0x00001c28 LBB0_343 + 0x4c, 0x89, 0xc9, //0x00001c28 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x00001c2b notq %rcx + 0x48, 0x21, 0xd1, //0x00001c2e andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x00001c31 leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x00001c35 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x00001c38 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x00001c3b notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001c3e movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001c48 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001c4b andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x00001c4e xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x00001c51 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x00001c54 setb %r9b + 0x48, 0x01, 0xd2, //0x00001c58 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c5b movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001c65 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x00001c68 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x00001c6b notq %rdx + //0x00001c6e LBB0_344 + 0x66, 0x0f, 0x6f, 0xdd, //0x00001c6e movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c72 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c76 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00001c7a shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x00001c7e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c82 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001c86 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00001c8a shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00001c8e orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x00001c91 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c95 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c99 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00001c9d shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001ca1 orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x00001ca4 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001ca8 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001cac pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x00001cb0 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001cb3 andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001cb6 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001cbb pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001cc2 movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00001cc7 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001cca movdqa %xmm4, %xmm3 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x89, 0xe3, 0xff, 0xff, //0x00001cce movdqu $-7287(%rip), %xmm11 /* LCPI0_6+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cd7 pcmpeqb %xmm11, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001cdc pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00001ce1 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001ce5 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001cea pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001cee movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cf2 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001cf7 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001cfb movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cff pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001d04 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00001d08 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x00001d0c shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00001d10 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00001d13 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00001d17 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x00001d1a orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x00001d1d movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00001d20 notq %r8 + 0x4d, 0x21, 0xc5, //0x00001d23 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d26 movdqa %xmm8, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001d2b pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00001d30 pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001d34 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00001d39 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001d3d pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x00001d42 pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001d46 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001d4b pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00001d50 shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x00001d54 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x00001d58 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x00001d5b shlq $16, %rsi + 0x48, 0x09, 0xce, //0x00001d5f orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x00001d62 orq %rsi, %rdx + 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001d65 movdqa %xmm13, %xmm14 + 0x4c, 0x21, 0xc2, //0x00001d6a andq %r8, %rdx + 0x0f, 0x84, 0xa4, 0x00, 0x00, 0x00, //0x00001d6d je LBB0_348 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x74, 0xe3, 0xff, 0xff, //0x00001d73 movdqu $-7308(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d7c movdqa %xmm8, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb6, 0xe2, 0xff, 0xff, //0x00001d81 movdqu $-7498(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001d8a movabsq $3689348814741910323, %r8 + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb3, 0xe2, 0xff, 0xff, //0x00001d94 movdqu $-7501(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x90, 0x90, 0x90, //0x00001d9d .p2align 4, 0x90 + //0x00001da0 LBB0_346 + 0x48, 0x8d, 0x7a, 0xff, //0x00001da0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x00001da4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x00001da7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x00001daa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x00001dad shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001db0 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x00001dba andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x00001dbd subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dc0 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00001dc3 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00001dc6 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x00001dca andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x00001dcd addq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dd0 movq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x04, //0x00001dd3 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00001dd7 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001dda movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00001de4 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001de7 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00001df1 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00001df5 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00001df9 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x00001dfc cmpq %r14, %rsi + 0x0f, 0x86, 0xe4, 0x04, 0x00, 0x00, //0x00001dff jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00001e05 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00001e09 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001e0c jne LBB0_346 + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001e12 jmp LBB0_349 + //0x00001e17 LBB0_348 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001e17 movdqa %xmm8, %xmm2 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001e1c movabsq $3689348814741910323, %r8 + //0x00001e26 LBB0_349 + 0x49, 0xc1, 0xfb, 0x3f, //0x00001e26 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00001e2a movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00001e2d shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001e30 movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00001e3a andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00001e3d subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e40 movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x00001e43 andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00001e46 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00001e4a andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00001e4d addq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e50 movq %r13, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00001e53 shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x00001e57 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001e5a movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x00001e64 andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001e67 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00001e71 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00001e75 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x00001e79 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x00001e7c addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x00001e80 movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x00001e84 addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x00001e88 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x00001e8b cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001e8f movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x0a, 0xfd, 0xff, 0xff, //0x00001e93 jge LBB0_341 + 0xe9, 0xb9, 0xfb, 0xff, 0xff, //0x00001e99 jmp LBB0_350 + //0x00001e9e LBB0_366 + 0x48, 0x8b, 0x55, 0xa8, //0x00001e9e movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001ea2 movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001ea6 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001ea9 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001eac movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001eb0 addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001eb3 xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001eb6 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001eb9 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001ebc xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001ebf cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001ec3 movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001ec7 jge LBB0_367 + //0x00001ecd LBB0_376 + 0x48, 0x85, 0xd2, //0x00001ecd testq %rdx, %rdx + 0x0f, 0x8e, 0xec, 0x1d, 0x00, 0x00, //0x00001ed0 jle LBB0_662 + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001ed6 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001edb movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001edf pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ee3 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001ee8 movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001ef0 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ef8 movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001f00 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001f03 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f06 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f0c cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f12 jb LBB0_380 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001f18 cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f1d jb LBB0_381 + 0x0f, 0x10, 0x1f, //0x00001f23 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f26 movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f2d movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f32 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001f3a addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001f3e movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001f42 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f46 leaq $-144(%rbp), %rdx + 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f4d jmp LBB0_382 + //0x00001f52 LBB0_380 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001f52 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f56 movdqa %xmm7, %xmm13 + 0x49, 0x89, 0xfc, //0x00001f5b movq %rdi, %r12 + 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f5e jmp LBB0_367 + //0x00001f63 LBB0_381 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f63 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001f6a movq $-72(%rbp), %rsi + //0x00001f6e LBB0_382 + 0x48, 0x83, 0xfe, 0x10, //0x00001f6e cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f72 jb LBB0_383 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f78 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f7c movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001f80 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001f84 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001f88 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001f8c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001f90 jae LBB0_390 + //0x00001f96 LBB0_384 + 0x48, 0x83, 0xfe, 0x04, //0x00001f96 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001f9a jl LBB0_385 + //0x00001fa0 LBB0_391 + 0x8b, 0x0f, //0x00001fa0 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001fa2 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001fa4 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001fa8 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001fac addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001fb0 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fb4 jae LBB0_386 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fba jmp LBB0_387 + //0x00001fbf LBB0_383 + 0x48, 0x83, 0xfe, 0x08, //0x00001fbf cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fc3 jb LBB0_384 + //0x00001fc9 LBB0_390 + 0x48, 0x8b, 0x0f, //0x00001fc9 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001fcc movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001fcf addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001fd3 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001fd7 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001fdb cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001fdf jge LBB0_391 + //0x00001fe5 LBB0_385 + 0x48, 0x83, 0xfe, 0x02, //0x00001fe5 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fe9 jb LBB0_387 + //0x00001fef LBB0_386 + 0x0f, 0xb7, 0x0f, //0x00001fef movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001ff2 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001ff5 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001ff9 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001ffd addq $-2, %rsi + //0x00002001 LBB0_387 + 0x48, 0x89, 0xf9, //0x00002001 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002004 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x0000200b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x0000200e movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002012 movdqa %xmm7, %xmm13 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00002017 je LBB0_367 + 0x8a, 0x09, //0x0000201d movb (%rcx), %cl + 0x88, 0x0a, //0x0000201f movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002021 leaq $-176(%rbp), %r12 + //0x00002028 LBB0_367 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00002028 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x0000202e movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00002035 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x0000203c movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002043 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002047 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x0000204b pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x0000204f movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002053 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002057 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000205b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000205f pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002063 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00002067 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000206b pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x0000206f pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00002073 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00002077 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x0000207b orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x0000207e shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00002082 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00002085 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00002088 movq %rdx, %rcx + 0x4c, 0x09, 0xc9, //0x0000208b orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000208e jne LBB0_369 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002094 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x0000209b xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000209e jmp LBB0_370 + //0x000020a3 LBB0_369 + 0x4c, 0x89, 0xc9, //0x000020a3 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x000020a6 notq %rcx + 0x48, 0x21, 0xd1, //0x000020a9 andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x000020ac leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x000020b0 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x000020b3 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x000020b6 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020b9 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x000020c3 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x000020c6 andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x000020c9 xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x000020cc addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x000020cf setb %r9b + 0x48, 0x01, 0xd2, //0x000020d3 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020d6 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x000020e0 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x000020e3 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x000020e6 notq %rdx + //0x000020e9 LBB0_370 + 0x66, 0x0f, 0x6f, 0xdd, //0x000020e9 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020ed pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x000020f1 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x000020f5 shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x000020f9 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020fd pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002101 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00002105 shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00002109 orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x0000210c movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002110 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002114 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00002118 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000211c orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x0000211f movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002123 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002127 pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x0000212b orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000212e andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002131 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00002136 pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x0000213d movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00002142 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002145 movdqa %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002149 pcmpeqb %xmm13, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000214e pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002153 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002157 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000215c pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00002160 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002164 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002169 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000216d movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002171 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002176 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x0000217a shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x0000217e shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00002182 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00002185 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00002189 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x0000218c orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x0000218f movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00002192 notq %r8 + 0x4d, 0x21, 0xc5, //0x00002195 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00002198 pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x0000219d pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021a1 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x000021a6 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021aa pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x000021af pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021b3 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021b8 pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x000021bd shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x000021c1 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x000021c5 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x000021c8 shlq $16, %rsi + 0x48, 0x09, 0xce, //0x000021cc orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x000021cf orq %rsi, %rdx + 0x4c, 0x21, 0xc2, //0x000021d2 andq %r8, %rdx + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000021d5 je LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021db movabsq $3689348814741910323, %r8 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021e5 .p2align 4, 0x90 + //0x000021f0 LBB0_372 + 0x48, 0x8d, 0x7a, 0xff, //0x000021f0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x000021f4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x000021f7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x000021fa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x000021fd shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002200 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x0000220a andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x0000220d subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00002210 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00002213 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00002216 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x0000221a andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x0000221d addq %rsi, %rcx 0x48, 0x89, 0xce, //0x00002220 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00002223 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00002226 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x0000222a andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x0000222d addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00002230 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00002233 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00002237 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000223a movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00002244 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002247 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00002251 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00002255 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00002259 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x0000225c cmpq %r14, %rsi - 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000225f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00002265 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00002269 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000226c jne LBB0_362 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002272 jmp LBB0_365 - //0x00002277 LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002277 movabsq $3689348814741910323, %r8 - //0x00002281 LBB0_365 - 0x49, 0xc1, 0xfb, 0x3f, //0x00002281 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00002285 movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00002288 shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000228b movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00002295 andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00002298 subq %rcx, %r13 + 0x48, 0xc1, 0xee, 0x04, //0x00002223 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00002227 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000222a movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00002234 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002237 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00002241 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00002245 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00002249 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x0000224c cmpq %r14, %rsi + 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000224f jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00002255 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00002259 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000225c jne LBB0_372 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002262 jmp LBB0_375 + //0x00002267 LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002267 movabsq $3689348814741910323, %r8 + //0x00002271 LBB0_375 + 0x49, 0xc1, 0xfb, 0x3f, //0x00002271 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00002275 movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00002278 shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000227b movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00002285 andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00002288 subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x0000228b movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x0000228e andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00002291 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00002295 andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00002298 addq %rcx, %r13 0x4c, 0x89, 0xe9, //0x0000229b movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x0000229e andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x000022a1 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x000022a5 andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x000022a8 addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x000022ab movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x000022ae shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x000022b2 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022b5 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x000022bf andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022c2 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x000022cc imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x000022d0 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x000022d4 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x000022d7 addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x000022db movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x000022df addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x000022e3 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x000022e6 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x000022ea movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4a, 0xfd, 0xff, 0xff, //0x000022ee jge LBB0_357 - 0xe9, 0xea, 0xfb, 0xff, 0xff, //0x000022f4 jmp LBB0_366 - //0x000022f9 LBB0_382 - 0x48, 0x8b, 0x75, 0xa8, //0x000022f9 movq $-88(%rbp), %rsi - 0x48, 0x8b, 0x4e, 0x08, //0x000022fd movq $8(%rsi), %rcx - 0x48, 0x0f, 0xbc, 0xd2, //0x00002301 bsfq %rdx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00002305 subq $-64(%rbp), %rdx - 0x48, 0x01, 0xd1, //0x00002309 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000230c addq $1, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002310 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x0e, //0x00002314 movq %rcx, (%r14) - 0x48, 0x8b, 0x56, 0x08, //0x00002317 movq $8(%rsi), %rdx - 0x48, 0x39, 0xd1, //0x0000231b cmpq %rdx, %rcx - 0x48, 0x0f, 0x47, 0xca, //0x0000231e cmovaq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002322 movq %rcx, (%r14) - 0x0f, 0x87, 0x1c, 0x17, 0x00, 0x00, //0x00002325 ja LBB0_638 - 0x48, 0x8b, 0x45, 0xb0, //0x0000232b movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x0000232f testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002332 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002336 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x7a, 0xde, 0xff, 0xff, //0x00002340 jg LBB0_4 - 0xe9, 0xad, 0x16, 0x00, 0x00, //0x00002346 jmp LBB0_606 - //0x0000234b LBB0_605 - 0x66, 0x0f, 0xbc, 0xce, //0x0000234b bsfw %si, %cx - 0x0f, 0xb7, 0xc9, //0x0000234f movzwl %cx, %ecx - 0x48, 0x29, 0xd1, //0x00002352 subq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002355 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002358 testq %rax, %rax - 0x0f, 0x8f, 0x5f, 0xde, 0xff, 0xff, //0x0000235b jg LBB0_4 - 0xe9, 0x92, 0x16, 0x00, 0x00, //0x00002361 jmp LBB0_606 - //0x00002366 LBB0_384 - 0x49, 0x8d, 0x57, 0xff, //0x00002366 leaq $-1(%r15), %rdx - 0x49, 0x39, 0xd0, //0x0000236a cmpq %rdx, %r8 - 0x49, 0xf7, 0xd7, //0x0000236d notq %r15 - 0x4d, 0x0f, 0x45, 0xfb, //0x00002370 cmovneq %r11, %r15 - 0x84, 0xc9, //0x00002374 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xfb, //0x00002376 cmoveq %r11, %r15 - 0x4d, 0x89, 0xfd, //0x0000237a movq %r15, %r13 - 0xe9, 0x60, 0xde, 0xff, 0xff, //0x0000237d jmp LBB0_2 - //0x00002382 LBB0_385 - 0x48, 0x89, 0xc6, //0x00002382 movq %rax, %rsi - 0x48, 0x29, 0xd6, //0x00002385 subq %rdx, %rsi - 0x48, 0x89, 0xd1, //0x00002388 movq %rdx, %rcx - 0x0f, 0x84, 0xb4, 0x18, 0x00, 0x00, //0x0000238b je LBB0_644 - 0x48, 0x83, 0xfe, 0x40, //0x00002391 cmpq $64, %rsi - 0x0f, 0x82, 0xeb, 0x0c, 0x00, 0x00, //0x00002395 jb LBB0_503 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000239b movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x000023a3 movq %rcx, %rax - 0x31, 0xdb, //0x000023a6 xorl %ebx, %ebx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023a8 .p2align 4, 0x90 - //0x000023b0 LBB0_388 - 0x48, 0x89, 0x75, 0xc0, //0x000023b0 movq %rsi, $-64(%rbp) - 0x49, 0x89, 0xd9, //0x000023b4 movq %rbx, %r9 - 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023b7 movdqu (%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023bd movdqu $16(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023c4 movdqu $32(%r12,%rax), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023cb movdqu $48(%r12,%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xdd, //0x000023d2 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023d6 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023da pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xdf, //0x000023df movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023e3 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000023e7 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000023eb movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023ef pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x000023f3 pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x000023f8 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023fc pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002400 pmovmskb %xmm3, %r15d - 0x66, 0x0f, 0x6f, 0xdd, //0x00002405 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002409 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000240d pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002412 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002416 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x0000241a pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xde, //0x0000241e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002422 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002426 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x0000242a movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000242e pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002432 pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002437 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdf, //0x0000243c pcmpgtb %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002440 pcmpgtb %xmm10, %xmm7 - 0x66, 0x0f, 0xdb, 0xfb, //0x00002445 pand %xmm3, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00002449 pmovmskb %xmm7, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000244d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00002452 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002456 pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x0000245b pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x0000245f pmovmskb %xmm6, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002463 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002468 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000246c pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002471 pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002475 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x0000247a shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x0000247e shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x00002482 orq %r15, %r14 - 0x48, 0xc1, 0xe1, 0x10, //0x00002485 shlq $16, %rcx - 0x4c, 0x09, 0xf1, //0x00002489 orq %r14, %rcx - 0x49, 0x09, 0xcb, //0x0000248c orq %rcx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x0000248f shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x00002493 shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x00002497 orq %r10, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x0000249a shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x0000249e orq %rsi, %rbx - 0x49, 0xc1, 0xe0, 0x30, //0x000024a1 shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000024a5 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000024a9 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000024ac shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000024b0 orq %rdx, %rdi - 0x49, 0x09, 0xdd, //0x000024b3 orq %rbx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024b6 jne LBB0_405 - 0x4d, 0x85, 0xc9, //0x000024bc testq %r9, %r9 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024bf jne LBB0_407 - 0x31, 0xdb, //0x000024c5 xorl %ebx, %ebx - 0x4c, 0x8b, 0x75, 0xd0, //0x000024c7 movq $-48(%rbp), %r14 - //0x000024cb LBB0_391 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024cb movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x000024d0 pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024d4 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x000024d9 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000024dd pmovmskb %xmm5, %ecx - 0x48, 0x09, 0xcf, //0x000024e1 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x000024e4 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000024e7 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x000024eb jne LBB0_409 - 0x48, 0x85, 0xff, //0x000024f1 testq %rdi, %rdi - 0x0f, 0x85, 0xaf, 0x16, 0x00, 0x00, //0x000024f4 jne LBB0_632 - 0x48, 0x8b, 0x75, 0xc0, //0x000024fa movq $-64(%rbp), %rsi - 0x48, 0x83, 0xc6, 0xc0, //0x000024fe addq $-64, %rsi - 0x48, 0x83, 0xc0, 0x40, //0x00002502 addq $64, %rax - 0x48, 0x83, 0xfe, 0x3f, //0x00002506 cmpq $63, %rsi - 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000250a ja LBB0_388 - 0xe9, 0xb7, 0x07, 0x00, 0x00, //0x00002510 jmp LBB0_394 - //0x00002515 LBB0_405 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002515 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x0000251a movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000251e jne LBB0_408 - 0x49, 0x0f, 0xbc, 0xcd, //0x00002524 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00002528 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000252b movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000252f jmp LBB0_408 - //0x00002534 LBB0_407 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002534 movq $-48(%rbp), %r14 - //0x00002538 LBB0_408 - 0x4c, 0x89, 0xc9, //0x00002538 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x0000253b notq %rcx - 0x4c, 0x21, 0xe9, //0x0000253e andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00002541 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xca, //0x00002545 orq %r9, %rdx - 0x48, 0x89, 0xd6, //0x00002548 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x0000254b notq %rsi - 0x4c, 0x21, 0xee, //0x0000254e andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002551 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x0000255b andq %rbx, %rsi - 0x31, 0xdb, //0x0000255e xorl %ebx, %ebx - 0x48, 0x01, 0xce, //0x00002560 addq %rcx, %rsi - 0x0f, 0x92, 0xc3, //0x00002563 setb %bl - 0x48, 0x01, 0xf6, //0x00002566 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002569 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00002573 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002576 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00002579 notq %rsi - 0x49, 0x21, 0xf3, //0x0000257c andq %rsi, %r11 - 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000257f jmp LBB0_391 - //0x00002584 LBB0_409 - 0x49, 0x0f, 0xbc, 0xcb, //0x00002584 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x00002588 testq %rdi, %rdi - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x0000258b je LBB0_423 - 0x48, 0x0f, 0xbc, 0xd7, //0x00002591 bsfq %rdi, %rdx - 0xe9, 0x89, 0x00, 0x00, 0x00, //0x00002595 jmp LBB0_424 - //0x0000259a LBB0_411 - 0x41, 0x89, 0xcb, //0x0000259a movl %ecx, %r11d - 0x4d, 0x01, 0xc3, //0x0000259d addq %r8, %r11 - 0x49, 0x01, 0xdb, //0x000025a0 addq %rbx, %r11 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025a3 jmp LBB0_413 - //0x000025a8 LBB0_412 - 0x48, 0x01, 0xda, //0x000025a8 addq %rbx, %rdx - 0x49, 0x89, 0xd3, //0x000025ab movq %rdx, %r11 - //0x000025ae LBB0_413 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025ae movq $-1, %rbx - 0x4d, 0x85, 0xf6, //0x000025b5 testq %r14, %r14 - 0x0f, 0x84, 0x18, 0x16, 0x00, 0x00, //0x000025b8 je LBB0_636 - 0x4d, 0x85, 0xed, //0x000025be testq %r13, %r13 - 0x0f, 0x84, 0x0f, 0x16, 0x00, 0x00, //0x000025c1 je LBB0_636 - 0x4d, 0x85, 0xd2, //0x000025c7 testq %r10, %r10 - 0x0f, 0x84, 0x06, 0x16, 0x00, 0x00, //0x000025ca je LBB0_636 - 0x4d, 0x29, 0xc3, //0x000025d0 subq %r8, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x000025d3 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xce, //0x000025d7 cmpq %rcx, %r14 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025da je LBB0_422 - 0x49, 0x39, 0xcd, //0x000025e0 cmpq %rcx, %r13 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x000025e3 je LBB0_422 - 0x49, 0x39, 0xca, //0x000025e9 cmpq %rcx, %r10 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000025ec je LBB0_422 - 0x4d, 0x85, 0xed, //0x000025f2 testq %r13, %r13 - 0x0f, 0x8e, 0x9a, 0x00, 0x00, 0x00, //0x000025f5 jle LBB0_430 - 0x49, 0x8d, 0x4d, 0xff, //0x000025fb leaq $-1(%r13), %rcx - 0x49, 0x39, 0xca, //0x000025ff cmpq %rcx, %r10 - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x00002602 je LBB0_430 - 0x49, 0xf7, 0xd5, //0x00002608 notq %r13 - 0x4c, 0x89, 0xeb, //0x0000260b movq %r13, %rbx - 0xe9, 0x0c, 0x06, 0x00, 0x00, //0x0000260e jmp LBB0_468 - //0x00002613 LBB0_422 - 0x49, 0xf7, 0xdb, //0x00002613 negq %r11 - 0x4c, 0x89, 0xdb, //0x00002616 movq %r11, %rbx - 0xe9, 0x01, 0x06, 0x00, 0x00, //0x00002619 jmp LBB0_468 - //0x0000261e LBB0_423 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000261e movl $64, %edx - //0x00002623 LBB0_424 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002623 movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x0000262d cmpq %rcx, %rdx - 0x0f, 0x82, 0xb6, 0x15, 0x00, 0x00, //0x00002630 jb LBB0_640 - 0x48, 0x01, 0xc8, //0x00002636 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002639 addq $1, %rax - //0x0000263d LBB0_426 - 0x48, 0x85, 0xc0, //0x0000263d testq %rax, %rax - 0x0f, 0x89, 0x49, 0xec, 0xff, 0xff, //0x00002640 jns LBB0_224 - 0xe9, 0x1a, 0x14, 0x00, 0x00, //0x00002646 jmp LBB0_615 - //0x0000264b LBB0_132 - 0x4d, 0x85, 0xdb, //0x0000264b testq %r11, %r11 - 0x0f, 0x85, 0x9e, 0x0a, 0x00, 0x00, //0x0000264e jne LBB0_508 - 0x49, 0x01, 0xd2, //0x00002654 addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00002657 subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000265a movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000265e movabsq $4294977024, %r11 - //0x00002668 LBB0_134 - 0x4d, 0x85, 0xc9, //0x00002668 testq %r9, %r9 - 0x0f, 0x8f, 0xee, 0x0a, 0x00, 0x00, //0x0000266b jg LBB0_512 - 0xe9, 0xd1, 0x13, 0x00, 0x00, //0x00002671 jmp LBB0_638 - //0x00002676 LBB0_428 - 0x4c, 0x29, 0xe0, //0x00002676 subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00002679 addq %rdx, %rax - 0x49, 0x89, 0x06, //0x0000267c movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x0000267f testq %rsi, %rsi - 0x0f, 0x8f, 0x38, 0xdb, 0xff, 0xff, //0x00002682 jg LBB0_4 - 0xe9, 0xcc, 0x13, 0x00, 0x00, //0x00002688 jmp LBB0_614 - //0x0000268d LBB0_429 - 0x0f, 0xbc, 0xcb, //0x0000268d bsfl %ebx, %ecx - 0xe9, 0x8a, 0x03, 0x00, 0x00, //0x00002690 jmp LBB0_437 - //0x00002695 LBB0_430 - 0x4c, 0x89, 0xf1, //0x00002695 movq %r14, %rcx - 0x4c, 0x09, 0xd1, //0x00002698 orq %r10, %rcx - 0x0f, 0x99, 0xc2, //0x0000269b setns %dl - 0x0f, 0x88, 0xd4, 0x01, 0x00, 0x00, //0x0000269e js LBB0_434 - 0x4d, 0x39, 0xd6, //0x000026a4 cmpq %r10, %r14 - 0x0f, 0x8c, 0xcb, 0x01, 0x00, 0x00, //0x000026a7 jl LBB0_434 - 0x49, 0xf7, 0xd6, //0x000026ad notq %r14 - 0x4c, 0x89, 0xf3, //0x000026b0 movq %r14, %rbx - 0xe9, 0x67, 0x05, 0x00, 0x00, //0x000026b3 jmp LBB0_468 - //0x000026b8 LBB0_433 - 0x48, 0x8b, 0x75, 0xc0, //0x000026b8 movq $-64(%rbp), %rsi - 0x49, 0x01, 0xf4, //0x000026bc addq %rsi, %r12 - 0x49, 0x29, 0xcc, //0x000026bf subq %rcx, %r12 - 0x49, 0x29, 0xfc, //0x000026c2 subq %rdi, %r12 - 0x49, 0x83, 0xc4, 0xfe, //0x000026c5 addq $-2, %r12 - 0x4d, 0x89, 0xe5, //0x000026c9 movq %r12, %r13 - 0xe9, 0x11, 0xdb, 0xff, 0xff, //0x000026cc jmp LBB0_2 - //0x000026d1 LBB0_154 - 0x4d, 0x85, 0xdb, //0x000026d1 testq %r11, %r11 - 0x0f, 0x85, 0x66, 0x0c, 0x00, 0x00, //0x000026d4 jne LBB0_535 - 0x49, 0x01, 0xd2, //0x000026da addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x000026dd subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000026e0 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026e4 movabsq $4294977024, %r11 - //0x000026ee LBB0_156 - 0x4d, 0x85, 0xc9, //0x000026ee testq %r9, %r9 - 0x0f, 0x8f, 0xa7, 0x0c, 0x00, 0x00, //0x000026f1 jg LBB0_539 - 0xe9, 0x4b, 0x13, 0x00, 0x00, //0x000026f7 jmp LBB0_638 - //0x000026fc LBB0_50 - 0x4c, 0x01, 0xe0, //0x000026fc addq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000026ff movq $-48(%rbp), %r14 - 0x49, 0x83, 0xf9, 0x20, //0x00002703 cmpq $32, %r9 - 0x0f, 0x82, 0x9f, 0x07, 0x00, 0x00, //0x00002707 jb LBB0_485 - //0x0000270d LBB0_51 - 0xf3, 0x0f, 0x6f, 0x18, //0x0000270d movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002711 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002716 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000271a pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000271e pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002722 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002726 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000272a pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x0000272e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002732 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002736 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x0000273a pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x0000273e shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002742 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002745 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002749 orq %rdi, %rsi - 0x0f, 0x85, 0x45, 0x0a, 0x00, 0x00, //0x0000274c jne LBB0_515 - 0x4d, 0x85, 0xc0, //0x00002752 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002755 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x5c, 0x0a, 0x00, 0x00, //0x0000275f jne LBB0_517 - 0x45, 0x31, 0xc0, //0x00002765 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002768 testq %rdx, %rdx - 0x0f, 0x84, 0xac, 0x0a, 0x00, 0x00, //0x0000276b je LBB0_519 - //0x00002771 LBB0_54 - 0x48, 0x0f, 0xbc, 0xca, //0x00002771 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002775 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002778 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000277b addq $1, %rax - 0xe9, 0x02, 0xeb, 0xff, 0xff, //0x0000277f jmp LBB0_223 - //0x00002784 LBB0_166 - 0x4c, 0x8b, 0x65, 0xc0, //0x00002784 movq $-64(%rbp), %r12 - 0x4c, 0x01, 0xe0, //0x00002788 addq %r12, %rax - 0x49, 0x83, 0xfe, 0x20, //0x0000278b cmpq $32, %r14 - 0x0f, 0x82, 0x41, 0x07, 0x00, 0x00, //0x0000278f jb LBB0_487 - //0x00002795 LBB0_167 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002795 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002799 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000279e movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027a2 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000027a6 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xeb, //0x000027aa movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027ae pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x000027b2 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xec, //0x000027b6 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027ba pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000027be pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x000027c3 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027c7 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000027cb pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000027cf movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000027d4 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000027d8 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x000027dd pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000027e1 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe7, 0x10, //0x000027e5 shlq $16, %rdi - 0x48, 0x09, 0xf9, //0x000027e9 orq %rdi, %rcx - 0x48, 0xc1, 0xe2, 0x10, //0x000027ec shlq $16, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x000027f0 shlq $16, %rsi - 0x49, 0x09, 0xd1, //0x000027f4 orq %rdx, %r9 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000027f7 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x0c, 0x0b, 0x00, 0x00, //0x00002801 jne LBB0_533 - 0x48, 0x85, 0xdb, //0x00002807 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000280a movq $-72(%rbp), %r13 - 0x0f, 0x85, 0xda, 0x0b, 0x00, 0x00, //0x0000280e jne LBB0_542 - 0x31, 0xdb, //0x00002814 xorl %ebx, %ebx - //0x00002816 LBB0_170 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002816 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x0000281b pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000281f pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002824 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00002828 pmovmskb %xmm4, %edx - 0x48, 0x09, 0xd6, //0x0000282c orq %rdx, %rsi - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000282f movl $64, %edx - 0xbf, 0x40, 0x00, 0x00, 0x00, //0x00002834 movl $64, %edi - 0x48, 0x85, 0xc9, //0x00002839 testq %rcx, %rcx - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x0000283c je LBB0_172 - 0x48, 0x0f, 0xbc, 0xf9, //0x00002842 bsfq %rcx, %rdi - //0x00002846 LBB0_172 - 0x48, 0x85, 0xf6, //0x00002846 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002849 je LBB0_174 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000284f bsfq %rsi, %rdx - //0x00002853 LBB0_174 - 0x48, 0x85, 0xc9, //0x00002853 testq %rcx, %rcx - 0x0f, 0x84, 0xd2, 0x01, 0x00, 0x00, //0x00002856 je LBB0_438 - 0x48, 0x39, 0xfa, //0x0000285c cmpq %rdi, %rdx - 0x0f, 0x82, 0x06, 0x14, 0x00, 0x00, //0x0000285f jb LBB0_649 - 0x4c, 0x29, 0xe0, //0x00002865 subq %r12, %rax - 0x48, 0x01, 0xf8, //0x00002868 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000286b addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000286f movq $-48(%rbp), %r14 - 0xe9, 0x0e, 0xea, 0xff, 0xff, //0x00002873 jmp LBB0_223 - //0x00002878 LBB0_434 - 0x49, 0x8d, 0x4a, 0xff, //0x00002878 leaq $-1(%r10), %rcx - 0x49, 0x39, 0xce, //0x0000287c cmpq %rcx, %r14 - 0x49, 0xf7, 0xd2, //0x0000287f notq %r10 - 0x4d, 0x0f, 0x45, 0xd3, //0x00002882 cmovneq %r11, %r10 - 0x84, 0xd2, //0x00002886 testb %dl, %dl - 0x4d, 0x0f, 0x44, 0xd3, //0x00002888 cmoveq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x0000288c movq %r10, %rbx - 0xe9, 0x8b, 0x03, 0x00, 0x00, //0x0000288f jmp LBB0_468 - //0x00002894 LBB0_435 - 0x89, 0xd1, //0x00002894 movl %edx, %ecx - 0xe9, 0x84, 0x01, 0x00, 0x00, //0x00002896 jmp LBB0_437 - //0x0000289b LBB0_73 - 0x4c, 0x01, 0xe0, //0x0000289b addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000289e cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000028a2 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0xc3, 0x06, 0x00, 0x00, //0x000028a6 jb LBB0_493 - //0x000028ac LBB0_74 - 0xf3, 0x0f, 0x6f, 0x18, //0x000028ac movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028b0 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x000028b5 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028b9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000028bd pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x000028c1 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028c5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000028c9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x000028cd pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000028d1 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x000028d5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x000028d9 pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x000028dd shlq $16, %rcx - 0x48, 0x09, 0xca, //0x000028e1 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000028e4 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x000028e8 orq %rdi, %rsi - 0x0f, 0x85, 0x55, 0x0b, 0x00, 0x00, //0x000028eb jne LBB0_544 - 0x4d, 0x85, 0xc0, //0x000028f1 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000028f4 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x6c, 0x0b, 0x00, 0x00, //0x000028fe jne LBB0_546 - 0x45, 0x31, 0xc0, //0x00002904 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002907 testq %rdx, %rdx - 0x0f, 0x84, 0xbc, 0x0b, 0x00, 0x00, //0x0000290a je LBB0_548 - //0x00002910 LBB0_77 - 0x48, 0x0f, 0xbc, 0xca, //0x00002910 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002914 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002917 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000291a addq $1, %rax - 0xe9, 0xe0, 0xee, 0xff, 0xff, //0x0000291e jmp LBB0_304 - //0x00002923 LBB0_195 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002923 movq $-64(%rbp), %r8 - 0x4c, 0x01, 0xc0, //0x00002927 addq %r8, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000292a cmpq $32, %r9 - 0x0f, 0x82, 0x67, 0x06, 0x00, 0x00, //0x0000292e jb LBB0_495 - //0x00002934 LBB0_196 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002934 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002938 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000293d movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002941 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002945 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002949 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000294d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002951 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002955 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002959 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x0000295d pmovmskb %xmm5, %r10d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002962 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002966 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000296a pmovmskb %xmm5, %ecx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x0000296e movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002973 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002977 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x0000297c pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002980 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe2, 0x10, //0x00002984 shlq $16, %rdx - 0x48, 0x09, 0xd6, //0x00002988 orq %rdx, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x0000298b shlq $16, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x0000298f shlq $16, %rdi - 0x49, 0x09, 0xca, //0x00002993 orq %rcx, %r10 - 0x0f, 0x85, 0x26, 0x0c, 0x00, 0x00, //0x00002996 jne LBB0_562 - 0x4d, 0x85, 0xe4, //0x0000299c testq %r12, %r12 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000299f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029a3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8a, 0xd6, 0xff, 0xff, //0x000029ad movdqu $-10614(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x0f, 0x85, 0x2c, 0x0c, 0x00, 0x00, //0x000029b6 jne LBB0_564 - 0x45, 0x31, 0xe4, //0x000029bc xorl %r12d, %r12d - //0x000029bf LBB0_199 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000029bf movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000029c4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000029c8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000029cd pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000029d1 pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x000029d5 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x000029d8 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000029dd movl $64, %edx - 0x48, 0x85, 0xf6, //0x000029e2 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029e5 je LBB0_201 - 0x48, 0x0f, 0xbc, 0xd6, //0x000029eb bsfq %rsi, %rdx - //0x000029ef LBB0_201 - 0x48, 0x85, 0xff, //0x000029ef testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029f2 je LBB0_203 - 0x48, 0x0f, 0xbc, 0xcf, //0x000029f8 bsfq %rdi, %rcx - //0x000029fc LBB0_203 - 0x48, 0x85, 0xf6, //0x000029fc testq %rsi, %rsi - 0x0f, 0x84, 0xf6, 0x00, 0x00, 0x00, //0x000029ff je LBB0_450 - 0x48, 0x39, 0xd1, //0x00002a05 cmpq %rdx, %rcx - 0x0f, 0x82, 0x6c, 0x12, 0x00, 0x00, //0x00002a08 jb LBB0_650 - 0x4c, 0x29, 0xc0, //0x00002a0e subq %r8, %rax - 0x48, 0x01, 0xd0, //0x00002a11 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002a14 addq $1, %rax - 0xe9, 0xe6, 0xed, 0xff, 0xff, //0x00002a18 jmp LBB0_304 - //0x00002a1d LBB0_436 - 0x89, 0xd9, //0x00002a1d movl %ebx, %ecx - //0x00002a1f LBB0_437 - 0x49, 0xf7, 0xd5, //0x00002a1f notq %r13 - 0x49, 0x29, 0xcd, //0x00002a22 subq %rcx, %r13 - 0x48, 0x8b, 0x75, 0xc0, //0x00002a25 movq $-64(%rbp), %rsi - 0xe9, 0xb4, 0xd7, 0xff, 0xff, //0x00002a29 jmp LBB0_2 - //0x00002a2e LBB0_438 - 0x48, 0x85, 0xf6, //0x00002a2e testq %rsi, %rsi - 0x0f, 0x85, 0x34, 0x12, 0x00, 0x00, //0x00002a31 jne LBB0_649 - 0x48, 0x83, 0xc0, 0x20, //0x00002a37 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00002a3b addq $-32, %r14 - 0x48, 0x85, 0xdb, //0x00002a3f testq %rbx, %rbx - 0x0f, 0x85, 0xa5, 0x04, 0x00, 0x00, //0x00002a42 jne LBB0_488 - //0x00002a48 LBB0_440 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002a48 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xf6, //0x00002a4c testq %r14, %r14 - 0x0f, 0x84, 0xda, 0x11, 0x00, 0x00, //0x00002a4f je LBB0_490 - //0x00002a55 LBB0_441 - 0x0f, 0xb6, 0x10, //0x00002a55 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002a58 cmpb $34, %dl - 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002a5b je LBB0_449 - 0x80, 0xfa, 0x5c, //0x00002a61 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002a64 je LBB0_445 - 0x80, 0xfa, 0x1f, //0x00002a6a cmpb $31, %dl - 0x0f, 0x86, 0x12, 0x12, 0x00, 0x00, //0x00002a6d jbe LBB0_651 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002a73 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002a7a movl $1, %esi - 0x48, 0x01, 0xf0, //0x00002a7f addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002a82 addq %rdx, %r14 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002a85 jne LBB0_441 - 0xe9, 0x9f, 0x11, 0x00, 0x00, //0x00002a8b jmp LBB0_490 - //0x00002a90 LBB0_445 - 0x49, 0x83, 0xfe, 0x01, //0x00002a90 cmpq $1, %r14 - 0x0f, 0x84, 0x95, 0x11, 0x00, 0x00, //0x00002a94 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002a9a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002a9f movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002aa3 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002aaa movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002aaf cmpq $-1, %rcx - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002ab3 jne LBB0_448 - 0x48, 0x89, 0xc1, //0x00002ab9 movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x00002abc subq %r12, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002abf movq %rcx, $-56(%rbp) - //0x00002ac3 LBB0_448 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ac3 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002ad1 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002ad5 movdqa %xmm6, %xmm13 - 0x48, 0x01, 0xf0, //0x00002ada addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002add addq %rdx, %r14 - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002ae0 jne LBB0_441 - 0xe9, 0x44, 0x11, 0x00, 0x00, //0x00002ae6 jmp LBB0_490 - //0x00002aeb LBB0_449 - 0x4c, 0x29, 0xe0, //0x00002aeb subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002aee addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00002af2 movq $-48(%rbp), %r14 - 0xe9, 0x8b, 0xe7, 0xff, 0xff, //0x00002af6 jmp LBB0_223 - //0x00002afb LBB0_450 - 0x48, 0x85, 0xff, //0x00002afb testq %rdi, %rdi - 0x0f, 0x85, 0x76, 0x11, 0x00, 0x00, //0x00002afe jne LBB0_650 - 0x48, 0x83, 0xc0, 0x20, //0x00002b04 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00002b08 addq $-32, %r9 - 0x4d, 0x85, 0xe4, //0x00002b0c testq %r12, %r12 - 0x0f, 0x85, 0xa6, 0x04, 0x00, 0x00, //0x00002b0f jne LBB0_496 - //0x00002b15 LBB0_452 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002b15 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xc9, //0x00002b19 testq %r9, %r9 - 0x0f, 0x84, 0x51, 0x0f, 0x00, 0x00, //0x00002b1c je LBB0_616 - //0x00002b22 LBB0_453 - 0x0f, 0xb6, 0x10, //0x00002b22 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002b25 cmpb $34, %dl - 0x0f, 0x84, 0xcc, 0x00, 0x00, 0x00, //0x00002b28 je LBB0_464 - 0x80, 0xfa, 0x5c, //0x00002b2e cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b31 je LBB0_458 - 0x80, 0xfa, 0x1f, //0x00002b37 cmpb $31, %dl - 0x0f, 0x86, 0x51, 0x11, 0x00, 0x00, //0x00002b3a jbe LBB0_652 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b40 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b47 movl $1, %esi - //0x00002b4c LBB0_457 - 0x48, 0x01, 0xf0, //0x00002b4c addq %rsi, %rax - 0x49, 0x01, 0xd1, //0x00002b4f addq %rdx, %r9 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b52 jne LBB0_453 - 0xe9, 0x16, 0x0f, 0x00, 0x00, //0x00002b58 jmp LBB0_616 - //0x00002b5d LBB0_458 - 0x49, 0x83, 0xf9, 0x01, //0x00002b5d cmpq $1, %r9 - 0x0f, 0x84, 0xe7, 0x10, 0x00, 0x00, //0x00002b61 je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002b67 movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002b6b movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002b72 movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002b77 cmpq $-1, %rcx - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002b7b je LBB0_461 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002b81 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002b85 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b89 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002b93 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa0, 0xd4, 0xff, 0xff, //0x00002b97 movdqu $-11104(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x00002ba0 movq $-64(%rbp), %r8 - 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002ba4 jmp LBB0_457 - //0x00002ba9 LBB0_461 - 0x48, 0x89, 0xc1, //0x00002ba9 movq %rax, %rcx - 0x4c, 0x8b, 0x45, 0xc0, //0x00002bac movq $-64(%rbp), %r8 - 0x4c, 0x29, 0xc1, //0x00002bb0 subq %r8, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002bb3 movq %rcx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002bb7 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002bbb movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bbf movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002bc9 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x6a, 0xd4, 0xff, 0xff, //0x00002bcd movdqu $-11158(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002bd6 jmp LBB0_457 - //0x00002bdb LBB0_462 - 0x4c, 0x29, 0xe1, //0x00002bdb subq %r12, %rcx - 0x48, 0x01, 0xf1, //0x00002bde addq %rsi, %rcx - 0x49, 0x89, 0x0e, //0x00002be1 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002be4 testq %rax, %rax - 0x0f, 0x8f, 0xd3, 0xd5, 0xff, 0xff, //0x00002be7 jg LBB0_4 - 0xe9, 0x06, 0x0e, 0x00, 0x00, //0x00002bed jmp LBB0_606 - //0x00002bf2 LBB0_463 - 0x0f, 0xbc, 0xce, //0x00002bf2 bsfl %esi, %ecx - 0xe9, 0x1f, 0x00, 0x00, 0x00, //0x00002bf5 jmp LBB0_467 - //0x00002bfa LBB0_464 - 0x4c, 0x29, 0xc0, //0x00002bfa subq %r8, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002bfd addq $1, %rax - 0xe9, 0xfd, 0xeb, 0xff, 0xff, //0x00002c01 jmp LBB0_304 - //0x00002c06 LBB0_465 - 0x49, 0x01, 0xc4, //0x00002c06 addq %rax, %r12 - 0x49, 0x29, 0xd4, //0x00002c09 subq %rdx, %r12 - 0x48, 0xf7, 0xd3, //0x00002c0c notq %rbx - 0x4c, 0x01, 0xe3, //0x00002c0f addq %r12, %rbx - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c12 jmp LBB0_468 - //0x00002c17 LBB0_466 - 0x89, 0xd1, //0x00002c17 movl %edx, %ecx - //0x00002c19 LBB0_467 - 0x48, 0xf7, 0xd3, //0x00002c19 notq %rbx - 0x48, 0x29, 0xcb, //0x00002c1c subq %rcx, %rbx - //0x00002c1f LBB0_468 - 0x48, 0x85, 0xdb, //0x00002c1f testq %rbx, %rbx - 0x0f, 0x88, 0xae, 0x0f, 0x00, 0x00, //0x00002c22 js LBB0_636 - //0x00002c28 LBB0_469 - 0x48, 0x01, 0xc3, //0x00002c28 addq %rax, %rbx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c2b movq $-48(%rbp), %r14 - 0x49, 0x89, 0x1e, //0x00002c2f movq %rbx, (%r14) - 0x48, 0x85, 0xc0, //0x00002c32 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002c35 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c39 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x77, 0xd5, 0xff, 0xff, //0x00002c43 jg LBB0_4 - 0xe9, 0xaa, 0x0d, 0x00, 0x00, //0x00002c49 jmp LBB0_606 - //0x00002c4e LBB0_241 - 0x4c, 0x01, 0xe0, //0x00002c4e addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x00002c51 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c55 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0x19, 0x04, 0x00, 0x00, //0x00002c59 jb LBB0_502 - //0x00002c5f LBB0_242 - 0xf3, 0x0f, 0x6f, 0x18, //0x00002c5f movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002c63 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002c68 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c6c pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002c70 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002c74 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c78 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002c7c pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00002c80 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002c84 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002c88 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00002c8c pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002c90 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002c94 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002c97 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002c9b orq %rdi, %rsi - 0x0f, 0x85, 0x06, 0x0b, 0x00, 0x00, //0x00002c9e jne LBB0_578 - 0x4d, 0x85, 0xc0, //0x00002ca4 testq %r8, %r8 - 0x0f, 0x85, 0x27, 0x0b, 0x00, 0x00, //0x00002ca7 jne LBB0_580 - 0x45, 0x31, 0xc0, //0x00002cad xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002cb0 testq %rdx, %rdx - 0x0f, 0x84, 0x77, 0x0b, 0x00, 0x00, //0x00002cb3 je LBB0_582 - //0x00002cb9 LBB0_245 - 0x48, 0x0f, 0xbc, 0xca, //0x00002cb9 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002cbd subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002cc0 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002cc3 addq $1, %rax - 0xe9, 0x71, 0xf9, 0xff, 0xff, //0x00002cc7 jmp LBB0_426 - //0x00002ccc LBB0_394 - 0x4c, 0x01, 0xe0, //0x00002ccc addq %r12, %rax - 0x49, 0x89, 0xf2, //0x00002ccf movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00002cd2 cmpq $32, %rsi - 0x0f, 0x82, 0xc5, 0x03, 0x00, 0x00, //0x00002cd6 jb LBB0_504 - //0x00002cdc LBB0_395 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002cdc movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002ce0 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x00002ce5 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002ce9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002ced pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002cf1 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002cf5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002cf9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00002cfd movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d01 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d05 pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002d0a movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d0e pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002d12 pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d16 movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002d1b pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d1f pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x00002d24 pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002d28 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002d2c shlq $16, %rcx - 0x48, 0x09, 0xce, //0x00002d30 orq %rcx, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x00002d33 shlq $16, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002d37 shlq $16, %rdi - 0x49, 0x09, 0xd1, //0x00002d3b orq %rdx, %r9 - 0x0f, 0x85, 0xd0, 0x0b, 0x00, 0x00, //0x00002d3e jne LBB0_597 - 0x48, 0x85, 0xdb, //0x00002d44 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002d47 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d4b movabsq $4294977024, %r11 - 0x0f, 0x85, 0xe6, 0x0b, 0x00, 0x00, //0x00002d55 jne LBB0_599 - 0x31, 0xdb, //0x00002d5b xorl %ebx, %ebx - //0x00002d5d LBB0_398 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d5d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002d62 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002d66 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002d6b pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00002d6f pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00002d73 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002d76 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002d7b movl $64, %edx - 0x48, 0x85, 0xf6, //0x00002d80 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d83 je LBB0_400 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002d89 bsfq %rsi, %rdx - //0x00002d8d LBB0_400 - 0x48, 0x85, 0xff, //0x00002d8d testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d90 je LBB0_402 - 0x48, 0x0f, 0xbc, 0xcf, //0x00002d96 bsfq %rdi, %rcx - //0x00002d9a LBB0_402 - 0x48, 0x85, 0xf6, //0x00002d9a testq %rsi, %rsi - 0x0f, 0x84, 0x53, 0x00, 0x00, 0x00, //0x00002d9d je LBB0_473 - 0x4c, 0x29, 0xe0, //0x00002da3 subq %r12, %rax - 0x48, 0x39, 0xd1, //0x00002da6 cmpq %rdx, %rcx - 0x0f, 0x82, 0xf7, 0x0e, 0x00, 0x00, //0x00002da9 jb LBB0_654 - 0x48, 0x01, 0xd0, //0x00002daf addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002db2 addq $1, %rax - 0xe9, 0x82, 0xf8, 0xff, 0xff, //0x00002db6 jmp LBB0_426 - //0x00002dbb LBB0_470 - 0x49, 0x8d, 0x04, 0x34, //0x00002dbb leaq (%r12,%rsi), %rax - 0x48, 0x85, 0xc9, //0x00002dbf testq %rcx, %rcx - 0x0f, 0x85, 0x4f, 0xde, 0xff, 0xff, //0x00002dc2 jne LBB0_140 - //0x00002dc8 LBB0_471 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dc8 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002dcd movdqa %xmm2, %xmm5 - 0xe9, 0x7f, 0xde, 0xff, 0xff, //0x00002dd1 jmp LBB0_146 - //0x00002dd6 LBB0_472 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002dd6 movq $-1, %r8 - 0x4c, 0x89, 0xf1, //0x00002ddd movq %r14, %rcx - 0x49, 0x89, 0xfa, //0x00002de0 movq %rdi, %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002de3 movq $-1, %r15 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r9 - 0xe9, 0x19, 0xda, 0xff, 0xff, //0x00002df1 jmp LBB0_105 - //0x00002df6 LBB0_473 - 0x48, 0x85, 0xff, //0x00002df6 testq %rdi, %rdi - 0x0f, 0x85, 0xbc, 0x0e, 0x00, 0x00, //0x00002df9 jne LBB0_655 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dff movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002e04 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00002e08 addq $32, %rax - 0x49, 0x83, 0xc2, 0xe0, //0x00002e0c addq $-32, %r10 - 0x48, 0x85, 0xdb, //0x00002e10 testq %rbx, %rbx - 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x00, //0x00002e13 jne LBB0_505 - //0x00002e19 LBB0_475 - 0x48, 0x8b, 0x55, 0xc8, //0x00002e19 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xd2, //0x00002e1d testq %r10, %r10 - 0x0f, 0x84, 0x28, 0x0e, 0x00, 0x00, //0x00002e20 je LBB0_507 - //0x00002e26 LBB0_476 - 0x0f, 0xb6, 0x08, //0x00002e26 movzbl (%rax), %ecx - 0x80, 0xf9, 0x22, //0x00002e29 cmpb $34, %cl - 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e2c je LBB0_491 - 0x80, 0xf9, 0x5c, //0x00002e32 cmpb $92, %cl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e35 je LBB0_481 - 0x80, 0xf9, 0x1f, //0x00002e3b cmpb $31, %cl - 0x0f, 0x86, 0x82, 0x0e, 0x00, 0x00, //0x00002e3e jbe LBB0_656 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e44 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e4b movl $1, %esi - //0x00002e50 LBB0_480 - 0x48, 0x01, 0xf0, //0x00002e50 addq %rsi, %rax - 0x49, 0x01, 0xca, //0x00002e53 addq %rcx, %r10 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e56 jne LBB0_476 - 0xe9, 0xed, 0x0d, 0x00, 0x00, //0x00002e5c jmp LBB0_507 - //0x00002e61 LBB0_481 - 0x49, 0x83, 0xfa, 0x01, //0x00002e61 cmpq $1, %r10 - 0x0f, 0x84, 0xe3, 0x0d, 0x00, 0x00, //0x00002e65 je LBB0_507 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002e6b movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002e72 movl $2, %esi - 0x48, 0x83, 0xfa, 0xff, //0x00002e77 cmpq $-1, %rdx - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002e7b jne LBB0_480 - 0x48, 0x89, 0xc2, //0x00002e81 movq %rax, %rdx - 0x4c, 0x29, 0xe2, //0x00002e84 subq %r12, %rdx - 0x48, 0x89, 0x55, 0xc8, //0x00002e87 movq %rdx, $-56(%rbp) - 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002e8b jmp LBB0_480 - //0x00002e90 LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00002e90 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002e94 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002e97 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002e9f xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002ea2 cmpq $32, %r9 - 0x0f, 0x83, 0x61, 0xf8, 0xff, 0xff, //0x00002ea6 jae LBB0_51 - //0x00002eac LBB0_485 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eac movabsq $4294977024, %r11 - 0xe9, 0x6a, 0x03, 0x00, 0x00, //0x00002eb6 jmp LBB0_520 - //0x00002ebb LBB0_486 - 0x48, 0x8b, 0x45, 0xb0, //0x00002ebb movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002ebf addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ec2 movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00002eca xorl %ebx, %ebx - 0x49, 0x83, 0xfe, 0x20, //0x00002ecc cmpq $32, %r14 - 0x0f, 0x83, 0xbf, 0xf8, 0xff, 0xff, //0x00002ed0 jae LBB0_167 - //0x00002ed6 LBB0_487 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ed6 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eda movabsq $4294977024, %r11 - 0x48, 0x85, 0xdb, //0x00002ee4 testq %rbx, %rbx - 0x0f, 0x84, 0x5b, 0xfb, 0xff, 0xff, //0x00002ee7 je LBB0_440 - //0x00002eed LBB0_488 - 0x4d, 0x85, 0xf6, //0x00002eed testq %r14, %r14 - 0x0f, 0x84, 0x39, 0x0d, 0x00, 0x00, //0x00002ef0 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ef6 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002efb movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00002eff movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00002f02 notq %rcx - 0x48, 0x01, 0xc1, //0x00002f05 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002f08 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002f0c cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002f10 movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002f13 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002f17 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002f1b addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00002f1f addq $-1, %r14 - 0x48, 0x89, 0x55, 0xc8, //0x00002f23 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f27 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f2b movabsq $4294977024, %r11 - 0x4d, 0x85, 0xf6, //0x00002f35 testq %r14, %r14 - 0x0f, 0x85, 0x17, 0xfb, 0xff, 0xff, //0x00002f38 jne LBB0_441 - 0xe9, 0xec, 0x0c, 0x00, 0x00, //0x00002f3e jmp LBB0_490 - //0x00002f43 LBB0_491 - 0x4c, 0x29, 0xe0, //0x00002f43 subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002f46 addq $1, %rax - 0xe9, 0x94, 0x09, 0x00, 0x00, //0x00002f4a jmp LBB0_596 - //0x00002f4f LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x00002f4f movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002f53 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f56 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002f5e xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002f61 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002f65 movq $-48(%rbp), %r14 - 0x0f, 0x83, 0x3d, 0xf9, 0xff, 0xff, //0x00002f69 jae LBB0_74 - //0x00002f6f LBB0_493 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f6f movabsq $4294977024, %r11 - 0xe9, 0x56, 0x05, 0x00, 0x00, //0x00002f79 jmp LBB0_549 - //0x00002f7e LBB0_494 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002f7e movq $-64(%rbp), %r8 - 0x49, 0x8d, 0x04, 0x08, //0x00002f82 leaq (%r8,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f86 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xe4, //0x00002f8e xorl %r12d, %r12d - 0x49, 0x83, 0xf9, 0x20, //0x00002f91 cmpq $32, %r9 - 0x0f, 0x83, 0x99, 0xf9, 0xff, 0xff, //0x00002f95 jae LBB0_196 - //0x00002f9b LBB0_495 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f9b movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f9f movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8e, 0xd0, 0xff, 0xff, //0x00002fa9 movdqu $-12146(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xe4, //0x00002fb2 testq %r12, %r12 - 0x0f, 0x84, 0x5a, 0xfb, 0xff, 0xff, //0x00002fb5 je LBB0_452 - //0x00002fbb LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002fbb testq %r9, %r9 - 0x0f, 0x84, 0x8a, 0x0c, 0x00, 0x00, //0x00002fbe je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002fc4 movdqa %xmm2, %xmm5 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002fc8 movq $-64(%rbp), %r8 - 0x4c, 0x89, 0xc1, //0x00002fcc movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00002fcf notq %rcx - 0x48, 0x01, 0xc1, //0x00002fd2 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002fd5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002fd9 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002fdd movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002fe0 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002fe4 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002fe8 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00002fec addq $-1, %r9 - 0x48, 0x89, 0x55, 0xc8, //0x00002ff0 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002ff4 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ff8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ffc movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x31, 0xd0, 0xff, 0xff, //0x00003006 movdqu $-12239(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xc9, //0x0000300f testq %r9, %r9 - 0x0f, 0x85, 0x0a, 0xfb, 0xff, 0xff, //0x00003012 jne LBB0_453 - 0xe9, 0x56, 0x0a, 0x00, 0x00, //0x00003018 jmp LBB0_616 - //0x0000301d LBB0_498 - 0x49, 0x8d, 0x0c, 0x04, //0x0000301d leaq (%r12,%rax), %rcx - 0x48, 0x85, 0xd2, //0x00003021 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0xee, 0xff, 0xff, //0x00003024 jne LBB0_349 - //0x0000302a LBB0_499 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000302a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000302f movdqa %xmm2, %xmm5 - 0xe9, 0x4d, 0xee, 0xff, 0xff, //0x00003033 jmp LBB0_355 - //0x00003038 LBB0_500 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003038 movq $-1, %r14 - 0x4c, 0x89, 0xc2, //0x0000303f movq %r8, %rdx - 0x49, 0x89, 0xf9, //0x00003042 movq %rdi, %r9 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003045 movq $-1, %r10 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000304c movq $-1, %r13 - 0xe9, 0x2e, 0xe6, 0xff, 0xff, //0x00003053 jmp LBB0_275 - //0x00003058 LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00003058 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x0000305c addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000305f movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00003067 xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x0000306a cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000306e movq $-48(%rbp), %r14 - 0x0f, 0x83, 0xe7, 0xfb, 0xff, 0xff, //0x00003072 jae LBB0_242 - //0x00003078 LBB0_502 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003078 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000307d movdqa %xmm2, %xmm5 - 0xe9, 0xbb, 0x07, 0x00, 0x00, //0x00003081 jmp LBB0_583 - //0x00003086 LBB0_503 - 0x49, 0x8d, 0x04, 0x0c, //0x00003086 leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000308a movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00003092 xorl %ebx, %ebx - 0x49, 0x89, 0xf2, //0x00003094 movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00003097 cmpq $32, %rsi - 0x0f, 0x83, 0x3b, 0xfc, 0xff, 0xff, //0x0000309b jae LBB0_395 - //0x000030a1 LBB0_504 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030a1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000030a6 movdqa %xmm2, %xmm5 - 0x48, 0x85, 0xdb, //0x000030aa testq %rbx, %rbx - 0x0f, 0x84, 0x66, 0xfd, 0xff, 0xff, //0x000030ad je LBB0_475 - //0x000030b3 LBB0_505 - 0x4d, 0x85, 0xd2, //0x000030b3 testq %r10, %r10 - 0x0f, 0x84, 0x92, 0x0b, 0x00, 0x00, //0x000030b6 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000030bc movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000030bf notq %rdx - 0x48, 0x01, 0xc2, //0x000030c2 addq %rax, %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x000030c5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000030c9 cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x000030cd movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xca, //0x000030d0 cmoveq %rdx, %rcx - 0x48, 0x0f, 0x45, 0xd6, //0x000030d4 cmovneq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000030d8 addq $1, %rax - 0x49, 0x83, 0xc2, 0xff, //0x000030dc addq $-1, %r10 - 0x48, 0x89, 0x4d, 0xc8, //0x000030e0 movq %rcx, $-56(%rbp) - 0x4d, 0x85, 0xd2, //0x000030e4 testq %r10, %r10 - 0x0f, 0x85, 0x39, 0xfd, 0xff, 0xff, //0x000030e7 jne LBB0_476 - 0xe9, 0x5c, 0x0b, 0x00, 0x00, //0x000030ed jmp LBB0_507 - //0x000030f2 LBB0_508 - 0x49, 0x39, 0xd1, //0x000030f2 cmpq %rdx, %r9 - 0x0f, 0x84, 0x4c, 0x09, 0x00, 0x00, //0x000030f5 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030fb movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003100 movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003104 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003107 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x0000310b notq %rdx - 0x49, 0x01, 0xd1, //0x0000310e addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003111 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003115 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003119 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003123 testq %r9, %r9 - 0x0f, 0x8f, 0x33, 0x00, 0x00, 0x00, //0x00003126 jg LBB0_512 - 0xe9, 0x16, 0x09, 0x00, 0x00, //0x0000312c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003131 .p2align 4, 0x90 - //0x00003140 LBB0_510 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003140 movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003147 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000314c addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000314f movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003156 addq %rcx, %r9 - 0x0f, 0x8e, 0xe8, 0x08, 0x00, 0x00, //0x00003159 jle LBB0_638 - //0x0000315f LBB0_512 - 0x41, 0x0f, 0xb6, 0x02, //0x0000315f movzbl (%r10), %eax - 0x3c, 0x5c, //0x00003163 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003165 je LBB0_510 - 0x3c, 0x22, //0x0000316b cmpb $34, %al - 0x0f, 0x84, 0x1f, 0x06, 0x00, 0x00, //0x0000316d je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003173 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x0000317a movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000317f addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003182 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003189 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000318c jg LBB0_512 - 0xe9, 0xb0, 0x08, 0x00, 0x00, //0x00003192 jmp LBB0_638 - //0x00003197 LBB0_515 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003197 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000319c movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000031a0 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000031a5 jne LBB0_518 - 0x48, 0x89, 0xc1, //0x000031ab movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000031ae subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000031b1 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000031b5 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000031b8 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000031bc jmp LBB0_518 - //0x000031c1 LBB0_517 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031c1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000031c6 movdqa %xmm2, %xmm5 - //0x000031ca LBB0_518 - 0x44, 0x89, 0xc1, //0x000031ca movl %r8d, %ecx - 0xf7, 0xd1, //0x000031cd notl %ecx - 0x21, 0xf1, //0x000031cf andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000031d1 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000031d5 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000031d8 notl %ebx - 0x21, 0xf3, //0x000031da andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031dc andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000031e2 xorl %r8d, %r8d - 0x01, 0xcb, //0x000031e5 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000031e7 setb %r8b - 0x01, 0xdb, //0x000031eb addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000031ed xorl $1431655765, %ebx - 0x21, 0xfb, //0x000031f3 andl %edi, %ebx - 0xf7, 0xd3, //0x000031f5 notl %ebx - 0x21, 0xda, //0x000031f7 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000031f9 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000031fd movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003201 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000320b movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000320f movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003214 testq %rdx, %rdx - 0x0f, 0x85, 0x54, 0xf5, 0xff, 0xff, //0x00003217 jne LBB0_54 - //0x0000321d LBB0_519 - 0x48, 0x83, 0xc0, 0x20, //0x0000321d addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00003221 addq $-32, %r9 - //0x00003225 LBB0_520 - 0x4d, 0x85, 0xc0, //0x00003225 testq %r8, %r8 - 0x0f, 0x85, 0x18, 0x04, 0x00, 0x00, //0x00003228 jne LBB0_566 - 0x4c, 0x89, 0xe1, //0x0000322e movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00003231 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x00003234 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x00003238 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000323b je LBB0_532 - //0x00003241 LBB0_522 - 0x48, 0x83, 0xc1, 0x01, //0x00003241 addq $1, %rcx - //0x00003245 LBB0_523 - 0x31, 0xf6, //0x00003245 xorl %esi, %esi - //0x00003247 LBB0_524 - 0x0f, 0xb6, 0x1c, 0x30, //0x00003247 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x0000324b cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000324e je LBB0_531 - 0x80, 0xfb, 0x5c, //0x00003254 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003257 je LBB0_529 - 0x48, 0x83, 0xc6, 0x01, //0x0000325d addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003261 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003264 jne LBB0_524 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000326a jmp LBB0_527 - //0x0000326f LBB0_529 - 0x49, 0x8d, 0x79, 0xff, //0x0000326f leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003273 cmpq %rsi, %rdi - 0x0f, 0x84, 0xb3, 0x09, 0x00, 0x00, //0x00003276 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000327c movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003281 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003285 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003289 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000328c cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x00003290 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003294 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003298 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000329c cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x000032a0 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000032a3 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x000032a7 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x000032aa subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x000032ad addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x000032b1 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x000032b5 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x000032b8 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000032bb movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000032bf movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000032c3 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000032cd jne LBB0_523 - 0xe9, 0x3f, 0x07, 0x00, 0x00, //0x000032d3 jmp LBB0_610 - //0x000032d8 LBB0_531 - 0x48, 0x01, 0xf0, //0x000032d8 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000032db addq $1, %rax - //0x000032df LBB0_532 - 0x4c, 0x29, 0xe0, //0x000032df subq %r12, %rax - 0xe9, 0x9f, 0xdf, 0xff, 0xff, //0x000032e2 jmp LBB0_223 - //0x000032e7 LBB0_527 - 0x80, 0xfb, 0x22, //0x000032e7 cmpb $34, %bl - 0x0f, 0x85, 0x3f, 0x09, 0x00, 0x00, //0x000032ea jne LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032f0 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000032f5 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000032f9 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000032fc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003300 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003304 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000330e jmp LBB0_532 - //0x00003313 LBB0_533 - 0x48, 0x89, 0xdf, //0x00003313 movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003316 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000331b movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000331f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003324 jne LBB0_543 - 0x49, 0x89, 0xc0, //0x0000332a movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000332d subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003330 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003334 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003337 movq %rbx, $-56(%rbp) - 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000333b jmp LBB0_543 - //0x00003340 LBB0_535 - 0x49, 0x39, 0xd1, //0x00003340 cmpq %rdx, %r9 - 0x0f, 0x84, 0xfe, 0x06, 0x00, 0x00, //0x00003343 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003349 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000334e movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003352 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003355 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003359 notq %rdx - 0x49, 0x01, 0xd1, //0x0000335c addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000335f movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003363 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003367 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003371 testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003374 jg LBB0_539 - 0xe9, 0xc8, 0x06, 0x00, 0x00, //0x0000337a jmp LBB0_638 - //0x0000337f LBB0_537 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000337f movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003386 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000338b addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000338e movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003395 addq %rcx, %r9 - 0x0f, 0x8e, 0xa9, 0x06, 0x00, 0x00, //0x00003398 jle LBB0_638 - //0x0000339e LBB0_539 - 0x41, 0x0f, 0xb6, 0x02, //0x0000339e movzbl (%r10), %eax - 0x3c, 0x5c, //0x000033a2 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000033a4 je LBB0_537 - 0x3c, 0x22, //0x000033aa cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000033ac je LBB0_607 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000033b2 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000033b9 movl $1, %eax - 0x49, 0x01, 0xc2, //0x000033be addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033c1 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x000033c8 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000033cb jg LBB0_539 - 0xe9, 0x71, 0x06, 0x00, 0x00, //0x000033d1 jmp LBB0_638 - //0x000033d6 LBB0_607 - 0x4d, 0x29, 0xe2, //0x000033d6 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033d9 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x000033dd movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x000033e0 testq %r8, %r8 - 0x0f, 0x8f, 0x33, 0xe4, 0xff, 0xff, //0x000033e3 jg LBB0_306 - 0xe9, 0x13, 0x06, 0x00, 0x00, //0x000033e9 jmp LBB0_608 - //0x000033ee LBB0_542 - 0x48, 0x89, 0xdf, //0x000033ee movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000033f1 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x000033f6 movdqa %xmm2, %xmm6 - //0x000033fa LBB0_543 - 0x48, 0x89, 0xfb, //0x000033fa movq %rdi, %rbx - 0xf7, 0xd7, //0x000033fd notl %edi - 0x44, 0x21, 0xcf, //0x000033ff andl %r9d, %edi - 0x44, 0x8d, 0x04, 0x7b, //0x00003402 leal (%rbx,%rdi,2), %r8d - 0x8d, 0x14, 0x3f, //0x00003406 leal (%rdi,%rdi), %edx - 0xf7, 0xd2, //0x00003409 notl %edx - 0x44, 0x21, 0xca, //0x0000340b andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000340e andl $-1431655766, %edx - 0x31, 0xdb, //0x00003414 xorl %ebx, %ebx - 0x01, 0xfa, //0x00003416 addl %edi, %edx - 0x0f, 0x92, 0xc3, //0x00003418 setb %bl - 0x01, 0xd2, //0x0000341b addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000341d xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003423 andl %r8d, %edx - 0xf7, 0xd2, //0x00003426 notl %edx - 0x21, 0xd1, //0x00003428 andl %edx, %ecx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000342a movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000342e movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003438 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000343c movdqa %xmm7, %xmm13 - 0xe9, 0xd0, 0xf3, 0xff, 0xff, //0x00003441 jmp LBB0_170 - //0x00003446 LBB0_544 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003446 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000344b movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000344f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003454 jne LBB0_547 - 0x48, 0x89, 0xc1, //0x0000345a movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x0000345d subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x00003460 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x00003464 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x00003467 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000346b jmp LBB0_547 - //0x00003470 LBB0_546 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003470 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003475 movdqa %xmm2, %xmm5 - //0x00003479 LBB0_547 - 0x44, 0x89, 0xc1, //0x00003479 movl %r8d, %ecx - 0xf7, 0xd1, //0x0000347c notl %ecx - 0x21, 0xf1, //0x0000347e andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x00003480 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00003484 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00003487 notl %ebx - 0x21, 0xf3, //0x00003489 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000348b andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00003491 xorl %r8d, %r8d - 0x01, 0xcb, //0x00003494 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00003496 setb %r8b - 0x01, 0xdb, //0x0000349a addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000349c xorl $1431655765, %ebx - 0x21, 0xfb, //0x000034a2 andl %edi, %ebx - 0xf7, 0xd3, //0x000034a4 notl %ebx - 0x21, 0xda, //0x000034a6 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000034a8 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000034ac movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000034b0 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000034ba movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000034be movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x000034c3 testq %rdx, %rdx - 0x0f, 0x85, 0x44, 0xf4, 0xff, 0xff, //0x000034c6 jne LBB0_77 - //0x000034cc LBB0_548 - 0x48, 0x83, 0xc0, 0x20, //0x000034cc addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x000034d0 addq $-32, %r9 - //0x000034d4 LBB0_549 - 0x4d, 0x85, 0xc0, //0x000034d4 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x000034d7 jne LBB0_568 - 0x4c, 0x89, 0xe1, //0x000034dd movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000034e0 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x000034e3 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x000034e7 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x000034ea je LBB0_561 - //0x000034f0 LBB0_551 - 0x48, 0x83, 0xc1, 0x01, //0x000034f0 addq $1, %rcx - //0x000034f4 LBB0_552 - 0x31, 0xf6, //0x000034f4 xorl %esi, %esi - //0x000034f6 LBB0_553 - 0x0f, 0xb6, 0x1c, 0x30, //0x000034f6 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x000034fa cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000034fd je LBB0_560 - 0x80, 0xfb, 0x5c, //0x00003503 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003506 je LBB0_558 - 0x48, 0x83, 0xc6, 0x01, //0x0000350c addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003510 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003513 jne LBB0_553 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003519 jmp LBB0_556 - //0x0000351e LBB0_558 - 0x49, 0x8d, 0x79, 0xff, //0x0000351e leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003522 cmpq %rsi, %rdi - 0x0f, 0x84, 0x23, 0x07, 0x00, 0x00, //0x00003525 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000352b movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003530 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003534 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003538 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000353b cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x0000353f movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003543 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003547 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000354b cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x0000354f addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00003552 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x00003556 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x00003559 subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x0000355c addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x00003560 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x00003564 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x00003567 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000356a movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000356e movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003572 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000357c jne LBB0_552 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x00003582 jmp LBB0_616 - //0x00003587 LBB0_560 - 0x48, 0x01, 0xf0, //0x00003587 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000358a addq $1, %rax - //0x0000358e LBB0_561 - 0x4c, 0x29, 0xe0, //0x0000358e subq %r12, %rax - 0xe9, 0x6d, 0xe2, 0xff, 0xff, //0x00003591 jmp LBB0_304 - //0x00003596 LBB0_556 - 0x80, 0xfb, 0x22, //0x00003596 cmpb $34, %bl - 0x0f, 0x85, 0xaf, 0x06, 0x00, 0x00, //0x00003599 jne LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000359f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000035a4 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000035a8 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000035ab movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000035af movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035b3 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x000035bd jmp LBB0_561 - //0x000035c2 LBB0_562 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035c2 movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000035c6 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x000035cb jne LBB0_565 - 0x49, 0x89, 0xc0, //0x000035d1 movq %rax, %r8 - 0x4c, 0x2b, 0x45, 0xc0, //0x000035d4 subq $-64(%rbp), %r8 - 0x49, 0x0f, 0xbc, 0xda, //0x000035d8 bsfq %r10, %rbx - 0x4c, 0x01, 0xc3, //0x000035dc addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000035df movq %rbx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x000035e3 jmp LBB0_565 - //0x000035e8 LBB0_564 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035e8 movdqa %xmm2, %xmm6 - //0x000035ec LBB0_565 - 0x44, 0x89, 0xe2, //0x000035ec movl %r12d, %edx - 0xf7, 0xd2, //0x000035ef notl %edx - 0x44, 0x21, 0xd2, //0x000035f1 andl %r10d, %edx - 0x45, 0x8d, 0x04, 0x54, //0x000035f4 leal (%r12,%rdx,2), %r8d - 0x8d, 0x0c, 0x12, //0x000035f8 leal (%rdx,%rdx), %ecx - 0xf7, 0xd1, //0x000035fb notl %ecx - 0x44, 0x21, 0xd1, //0x000035fd andl %r10d, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003600 andl $-1431655766, %ecx - 0x45, 0x31, 0xe4, //0x00003606 xorl %r12d, %r12d - 0x01, 0xd1, //0x00003609 addl %edx, %ecx - 0x41, 0x0f, 0x92, 0xc4, //0x0000360b setb %r12b - 0x01, 0xc9, //0x0000360f addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003611 xorl $1431655765, %ecx - 0x44, 0x21, 0xc1, //0x00003617 andl %r8d, %ecx - 0xf7, 0xd1, //0x0000361a notl %ecx - 0x21, 0xce, //0x0000361c andl %ecx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000361e movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003622 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003626 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003630 movdqa %xmm6, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x03, 0xca, 0xff, 0xff, //0x00003634 movdqu $-13821(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x0000363d movq $-64(%rbp), %r8 - 0xe9, 0x79, 0xf3, 0xff, 0xff, //0x00003641 jmp LBB0_199 - //0x00003646 LBB0_566 - 0x4d, 0x85, 0xc9, //0x00003646 testq %r9, %r9 - 0x0f, 0x84, 0xe0, 0x05, 0x00, 0x00, //0x00003649 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000364f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003654 movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00003658 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x0000365b notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x0000365e leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x00003662 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x00003666 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x0000366a movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x0000366d cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x00003671 cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00003675 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00003679 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x0000367d movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003681 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003685 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003689 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003693 testq %r9, %r9 - 0x0f, 0x85, 0xa5, 0xfb, 0xff, 0xff, //0x00003696 jne LBB0_522 - 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x0000369c jmp LBB0_532 - //0x000036a1 LBB0_568 - 0x4d, 0x85, 0xc9, //0x000036a1 testq %r9, %r9 - 0x0f, 0x84, 0xa4, 0x05, 0x00, 0x00, //0x000036a4 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000036af movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x000036b3 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000036b6 notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x000036b9 leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x000036bd movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000036c1 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x000036c5 movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x000036c8 cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x000036cc cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000036d0 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000036d4 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000036d8 movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x000036dc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000036e0 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036e4 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x000036ee testq %r9, %r9 - 0x0f, 0x85, 0xf9, 0xfd, 0xff, 0xff, //0x000036f1 jne LBB0_551 - 0xe9, 0x92, 0xfe, 0xff, 0xff, //0x000036f7 jmp LBB0_561 - //0x000036fc LBB0_570 - 0x49, 0x39, 0xd1, //0x000036fc cmpq %rdx, %r9 - 0x0f, 0x84, 0x42, 0x03, 0x00, 0x00, //0x000036ff je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003705 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000370a movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x0000370e addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003711 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003715 notq %rdx - 0x49, 0x01, 0xd1, //0x00003718 addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000371b movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000371f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003723 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x0000372d testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003730 jg LBB0_574 - 0xe9, 0x0c, 0x03, 0x00, 0x00, //0x00003736 jmp LBB0_638 - //0x0000373b LBB0_572 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000373b movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003742 movl $2, %eax - 0x49, 0x01, 0xc2, //0x00003747 addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000374a movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003751 addq %rcx, %r9 - 0x0f, 0x8e, 0xed, 0x02, 0x00, 0x00, //0x00003754 jle LBB0_638 - //0x0000375a LBB0_574 - 0x41, 0x0f, 0xb6, 0x02, //0x0000375a movzbl (%r10), %eax - 0x3c, 0x5c, //0x0000375e cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003760 je LBB0_572 - 0x3c, 0x22, //0x00003766 cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003768 je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000376e movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003775 movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000377a addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000377d movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003784 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003787 jg LBB0_574 - 0xe9, 0xb5, 0x02, 0x00, 0x00, //0x0000378d jmp LBB0_638 - //0x00003792 LBB0_577 - 0x4d, 0x29, 0xe2, //0x00003792 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003795 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x00003799 movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x0000379c testq %r8, %r8 - 0x0f, 0x8f, 0x1b, 0xca, 0xff, 0xff, //0x0000379f jg LBB0_4 - 0xe9, 0x57, 0x02, 0x00, 0x00, //0x000037a5 jmp LBB0_608 - //0x000037aa LBB0_578 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037af movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000037b3 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000037b8 jne LBB0_581 - 0x48, 0x89, 0xc1, //0x000037be movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000037c1 subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000037c4 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000037c8 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000037cb movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000037cf jmp LBB0_581 - //0x000037d4 LBB0_580 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037d4 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037d9 movdqa %xmm2, %xmm5 - //0x000037dd LBB0_581 - 0x44, 0x89, 0xc1, //0x000037dd movl %r8d, %ecx - 0xf7, 0xd1, //0x000037e0 notl %ecx - 0x21, 0xf1, //0x000037e2 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000037e4 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000037e8 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000037eb notl %ebx - 0x21, 0xf3, //0x000037ed andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000037ef andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000037f5 xorl %r8d, %r8d - 0x01, 0xcb, //0x000037f8 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000037fa setb %r8b - 0x01, 0xdb, //0x000037fe addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003800 xorl $1431655765, %ebx - 0x21, 0xfb, //0x00003806 andl %edi, %ebx - 0xf7, 0xd3, //0x00003808 notl %ebx - 0x21, 0xda, //0x0000380a andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x0000380c movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003810 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003814 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000381e movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003822 movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003827 testq %rdx, %rdx - 0x0f, 0x85, 0x89, 0xf4, 0xff, 0xff, //0x0000382a jne LBB0_245 - //0x00003830 LBB0_582 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003830 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003835 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00003839 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x0000383d addq $-32, %r9 - //0x00003841 LBB0_583 - 0x4d, 0x85, 0xc0, //0x00003841 testq %r8, %r8 - 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x00003844 jne LBB0_601 - 0x4c, 0x89, 0xe2, //0x0000384a movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x0000384d notq %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x00003850 movq $-56(%rbp), %rsi - 0x4d, 0x85, 0xc9, //0x00003854 testq %r9, %r9 - 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x00003857 je LBB0_595 - //0x0000385d LBB0_585 - 0x48, 0x83, 0xc2, 0x01, //0x0000385d addq $1, %rdx - //0x00003861 LBB0_586 - 0x31, 0xff, //0x00003861 xorl %edi, %edi - //0x00003863 LBB0_587 - 0x0f, 0xb6, 0x0c, 0x38, //0x00003863 movzbl (%rax,%rdi), %ecx - 0x80, 0xf9, 0x22, //0x00003867 cmpb $34, %cl - 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x0000386a je LBB0_594 - 0x80, 0xf9, 0x5c, //0x00003870 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003873 je LBB0_592 - 0x48, 0x83, 0xc7, 0x01, //0x00003879 addq $1, %rdi - 0x49, 0x39, 0xf9, //0x0000387d cmpq %rdi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003880 jne LBB0_587 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003886 jmp LBB0_590 - //0x0000388b LBB0_592 - 0x49, 0x8d, 0x49, 0xff, //0x0000388b leaq $-1(%r9), %rcx - 0x48, 0x39, 0xf9, //0x0000388f cmpq %rdi, %rcx - 0x0f, 0x84, 0xb6, 0x03, 0x00, 0x00, //0x00003892 je LBB0_507 - 0x48, 0x8d, 0x0c, 0x02, //0x00003898 leaq (%rdx,%rax), %rcx - 0x48, 0x01, 0xf9, //0x0000389c addq %rdi, %rcx - 0x48, 0x83, 0xfe, 0xff, //0x0000389f cmpq $-1, %rsi - 0x48, 0x8b, 0x5d, 0xc8, //0x000038a3 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xd9, //0x000038a7 cmoveq %rcx, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000038ab movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xf1, //0x000038af cmoveq %rcx, %rsi - 0x48, 0x01, 0xf8, //0x000038b3 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000038b6 addq $2, %rax - 0x4c, 0x89, 0xc9, //0x000038ba movq %r9, %rcx - 0x48, 0x29, 0xf9, //0x000038bd subq %rdi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000038c0 addq $-2, %rcx - 0x49, 0x83, 0xc1, 0xfe, //0x000038c4 addq $-2, %r9 - 0x49, 0x39, 0xf9, //0x000038c8 cmpq %rdi, %r9 - 0x49, 0x89, 0xc9, //0x000038cb movq %rcx, %r9 - 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x000038ce jne LBB0_586 - 0xe9, 0x75, 0x03, 0x00, 0x00, //0x000038d4 jmp LBB0_507 - //0x000038d9 LBB0_594 - 0x48, 0x01, 0xf8, //0x000038d9 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000038dc addq $1, %rax - //0x000038e0 LBB0_595 - 0x4c, 0x29, 0xe0, //0x000038e0 subq %r12, %rax - //0x000038e3 LBB0_596 - 0x4c, 0x8b, 0x75, 0xd0, //0x000038e3 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000038e7 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000038eb movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000038f5 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000038f9 movdqa %xmm6, %xmm13 - 0xe9, 0x3a, 0xed, 0xff, 0xff, //0x000038fe jmp LBB0_426 - //0x00003903 LBB0_590 - 0x80, 0xf9, 0x22, //0x00003903 cmpb $34, %cl - 0x0f, 0x85, 0x42, 0x03, 0x00, 0x00, //0x00003906 jne LBB0_507 - 0x4c, 0x01, 0xc8, //0x0000390c addq %r9, %rax - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000390f jmp LBB0_595 - //0x00003914 LBB0_597 - 0x48, 0x89, 0xd9, //0x00003914 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003917 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000391c movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003920 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003925 jne LBB0_600 - 0x49, 0x89, 0xc0, //0x0000392b movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000392e subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003931 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003935 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003938 movq %rbx, $-56(%rbp) - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000393c jmp LBB0_600 - //0x00003941 LBB0_599 - 0x48, 0x89, 0xd9, //0x00003941 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003944 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00003949 movdqa %xmm2, %xmm6 - //0x0000394d LBB0_600 - 0x48, 0x89, 0xcb, //0x0000394d movq %rcx, %rbx - 0xf7, 0xd1, //0x00003950 notl %ecx - 0x44, 0x21, 0xc9, //0x00003952 andl %r9d, %ecx - 0x44, 0x8d, 0x04, 0x4b, //0x00003955 leal (%rbx,%rcx,2), %r8d - 0x8d, 0x14, 0x09, //0x00003959 leal (%rcx,%rcx), %edx - 0xf7, 0xd2, //0x0000395c notl %edx - 0x44, 0x21, 0xca, //0x0000395e andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003961 andl $-1431655766, %edx - 0x31, 0xdb, //0x00003967 xorl %ebx, %ebx - 0x01, 0xca, //0x00003969 addl %ecx, %edx - 0x0f, 0x92, 0xc3, //0x0000396b setb %bl - 0x01, 0xd2, //0x0000396e addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00003970 xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003976 andl %r8d, %edx - 0xf7, 0xd2, //0x00003979 notl %edx - 0x21, 0xd6, //0x0000397b andl %edx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000397d movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003981 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003985 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x0000398f movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00003993 movdqa %xmm7, %xmm13 - 0xe9, 0xc0, 0xf3, 0xff, 0xff, //0x00003998 jmp LBB0_398 - //0x0000399d LBB0_601 - 0x4d, 0x85, 0xc9, //0x0000399d testq %r9, %r9 - 0x0f, 0x84, 0xa8, 0x02, 0x00, 0x00, //0x000039a0 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000039a6 movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000039a9 notq %rdx - 0x48, 0x8d, 0x0c, 0x10, //0x000039ac leaq (%rax,%rdx), %rcx - 0x48, 0x8b, 0x7d, 0xc8, //0x000039b0 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000039b4 cmpq $-1, %rdi - 0x48, 0x89, 0xfe, //0x000039b8 movq %rdi, %rsi - 0x48, 0x0f, 0x44, 0xf9, //0x000039bb cmoveq %rcx, %rdi - 0x48, 0x0f, 0x44, 0xf1, //0x000039bf cmoveq %rcx, %rsi - 0x48, 0x83, 0xc0, 0x01, //0x000039c3 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000039c7 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000039cb movq %rdi, $-56(%rbp) - 0x4d, 0x85, 0xc9, //0x000039cf testq %r9, %r9 - 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x000039d2 jne LBB0_585 - 0xe9, 0x03, 0xff, 0xff, 0xff, //0x000039d8 jmp LBB0_595 - //0x000039dd LBB0_603 - 0x49, 0x89, 0x16, //0x000039dd movq %rdx, (%r14) - //0x000039e0 LBB0_604 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000039e0 movq $-1, %rax - 0xe9, 0x5b, 0x00, 0x00, 0x00, //0x000039e7 jmp LBB0_638 - //0x000039ec LBB0_634 - 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x000039ec movq $-7, %rax - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x000039f3 jmp LBB0_638 - //0x000039f8 LBB0_606 - 0x48, 0x83, 0xc0, 0xff, //0x000039f8 addq $-1, %rax - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000039fc jmp LBB0_638 - //0x00003a01 LBB0_608 - 0x49, 0x83, 0xc0, 0xff, //0x00003a01 addq $-1, %r8 - 0x4c, 0x89, 0xc0, //0x00003a05 movq %r8, %rax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x00003a08 jmp LBB0_638 - //0x00003a0d LBB0_609 - 0x48, 0x83, 0xf8, 0xff, //0x00003a0d cmpq $-1, %rax - 0x0f, 0x85, 0x90, 0x00, 0x00, 0x00, //0x00003a11 jne LBB0_621 - //0x00003a17 LBB0_610 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a17 movq $-1, %rax - 0x48, 0x8b, 0x4d, 0xa0, //0x00003a1e movq $-96(%rbp), %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a22 movq %rcx, $-56(%rbp) - 0xe9, 0x7c, 0x00, 0x00, 0x00, //0x00003a26 jmp LBB0_621 - //0x00003a2b LBB0_611 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a2b movq $-1, %r13 - //0x00003a32 LBB0_612 - 0x4c, 0x29, 0xee, //0x00003a32 subq %r13, %rsi - 0x48, 0x83, 0xc6, 0xfe, //0x00003a35 addq $-2, %rsi - 0x48, 0x8b, 0x45, 0xd0, //0x00003a39 movq $-48(%rbp), %rax - 0x48, 0x89, 0x30, //0x00003a3d movq %rsi, (%rax) - //0x00003a40 LBB0_637 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a40 movq $-2, %rax - //0x00003a47 LBB0_638 - 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003a47 addq $136, %rsp - 0x5b, //0x00003a4e popq %rbx - 0x41, 0x5c, //0x00003a4f popq %r12 - 0x41, 0x5d, //0x00003a51 popq %r13 - 0x41, 0x5e, //0x00003a53 popq %r14 - 0x41, 0x5f, //0x00003a55 popq %r15 - 0x5d, //0x00003a57 popq %rbp - 0xc3, //0x00003a58 retq - //0x00003a59 LBB0_614 - 0x48, 0x83, 0xc6, 0xff, //0x00003a59 addq $-1, %rsi - 0x48, 0x89, 0xf0, //0x00003a5d movq %rsi, %rax - 0xe9, 0xe2, 0xff, 0xff, 0xff, //0x00003a60 jmp LBB0_638 - //0x00003a65 LBB0_615 - 0x48, 0x83, 0xf8, 0xff, //0x00003a65 cmpq $-1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x00003a69 movq $-56(%rbp), %rdx - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a6d jne LBB0_617 - //0x00003a73 LBB0_616 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a73 movq $-1, %rax - 0x48, 0x8b, 0x55, 0xa0, //0x00003a7a movq $-96(%rbp), %rdx - //0x00003a7e LBB0_617 - 0x49, 0x89, 0x16, //0x00003a7e movq %rdx, (%r14) - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a81 jmp LBB0_638 - //0x00003a86 LBB0_618 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003a86 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a8b jne LBB0_620 - 0x48, 0x0f, 0xbc, 0xce, //0x00003a91 bsfq %rsi, %rcx - 0x48, 0x01, 0xc1, //0x00003a95 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a98 movq %rcx, $-56(%rbp) - //0x00003a9c LBB0_620 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a9c movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003aa3 movq $-48(%rbp), %r14 - //0x00003aa7 LBB0_621 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003aa7 movq $-56(%rbp), %rcx - 0x49, 0x89, 0x0e, //0x00003aab movq %rcx, (%r14) - 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003aae jmp LBB0_638 - //0x00003ab3 LBB0_622 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ab3 movq $-2, %rax - 0x80, 0xfa, 0x61, //0x00003aba cmpb $97, %dl - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00003abd jne LBB0_638 - 0x48, 0x8d, 0x51, 0x01, //0x00003ac3 leaq $1(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003ac7 movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003aca cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003ad0 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x02, //0x00003ad6 leaq $2(%rcx), %rdx + 0x48, 0xc1, 0xe9, 0x04, //0x0000229e shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x000022a2 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022a5 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x000022af andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022b2 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x000022bc imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x000022c0 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x000022c4 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x000022c7 addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x000022cb movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x000022cf addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x000022d3 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x000022d6 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x000022da movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x44, 0xfd, 0xff, 0xff, //0x000022de jge LBB0_367 + 0xe9, 0xe4, 0xfb, 0xff, 0xff, //0x000022e4 jmp LBB0_376 + //0x000022e9 LBB0_392 + 0x48, 0x8b, 0x75, 0xa8, //0x000022e9 movq $-88(%rbp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x000022ed movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd2, //0x000022f1 bsfq %rdx, %rdx + 0x48, 0x2b, 0x55, 0xb8, //0x000022f5 subq $-72(%rbp), %rdx + 0x48, 0x01, 0xd1, //0x000022f9 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000022fc addq $1, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002300 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x0e, //0x00002304 movq %rcx, (%r14) + 0x48, 0x8b, 0x56, 0x08, //0x00002307 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x0000230b cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000230e cmovaq %rdx, %rcx + 0x49, 0x89, 0x0e, //0x00002312 movq %rcx, (%r14) + 0x0f, 0x87, 0x94, 0x17, 0x00, 0x00, //0x00002315 ja LBB0_650 + 0x48, 0x8b, 0x45, 0xc0, //0x0000231b movq $-64(%rbp), %rax + 0xe9, 0x48, 0x09, 0x00, 0x00, //0x0000231f jmp LBB0_488 + //0x00002324 LBB0_394 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002324 bsfw %cx, %cx + 0x0f, 0xb7, 0xd9, //0x00002328 movzwl %cx, %ebx + 0x48, 0x89, 0xd9, //0x0000232b movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x0000232e subq %rdi, %rcx + 0x49, 0x89, 0x0e, //0x00002331 movq %rcx, (%r14) + 0x48, 0x85, 0xc9, //0x00002334 testq %rcx, %rcx + 0x0f, 0x8e, 0x42, 0xef, 0xff, 0xff, //0x00002337 jle LBB0_231 + 0x49, 0x01, 0xd8, //0x0000233d addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002340 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002343 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002346 .p2align 4, 0x90 + //0x00002350 LBB0_396 + 0x0f, 0xb6, 0x0e, //0x00002350 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002353 cmpq $32, %rcx + 0x0f, 0x87, 0x22, 0xef, 0xff, 0xff, //0x00002357 ja LBB0_231 + 0x49, 0x0f, 0xa3, 0xcb, //0x0000235d btq %rcx, %r11 + 0x0f, 0x83, 0x18, 0xef, 0xff, 0xff, //0x00002361 jae LBB0_231 + 0x49, 0x89, 0x16, //0x00002367 movq %rdx, (%r14) + 0x49, 0x83, 0xc0, 0xff, //0x0000236a addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x0000236e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00002372 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x00002376 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000237a jg LBB0_396 + 0xe9, 0xfa, 0xee, 0xff, 0xff, //0x00002380 jmp LBB0_231 + //0x00002385 LBB0_399 + 0x49, 0x8d, 0x4f, 0xff, //0x00002385 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xc8, //0x00002389 cmpq %rcx, %r8 + 0x49, 0xf7, 0xd7, //0x0000238c notq %r15 + 0x4d, 0x0f, 0x45, 0xf9, //0x0000238f cmovneq %r9, %r15 + 0x84, 0xd2, //0x00002393 testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xf9, //0x00002395 cmoveq %r9, %r15 + 0x4d, 0x89, 0xfd, //0x00002399 movq %r15, %r13 + 0xe9, 0x53, 0x03, 0x00, 0x00, //0x0000239c jmp LBB0_451 + //0x000023a1 LBB0_400 + 0x48, 0x89, 0xc6, //0x000023a1 movq %rax, %rsi + 0x48, 0x29, 0xd6, //0x000023a4 subq %rdx, %rsi + 0x0f, 0x84, 0xf6, 0x18, 0x00, 0x00, //0x000023a7 je LBB0_658 + 0x48, 0x83, 0xfe, 0x40, //0x000023ad cmpq $64, %rsi + 0x0f, 0x82, 0x32, 0x0d, 0x00, 0x00, //0x000023b1 jb LBB0_520 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000023b7 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x000023bf movq $-64(%rbp), %rax + 0x31, 0xdb, //0x000023c3 xorl %ebx, %ebx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023c5 .p2align 4, 0x90 + //0x000023d0 LBB0_403 + 0x48, 0x89, 0x75, 0xb8, //0x000023d0 movq %rsi, $-72(%rbp) + 0x49, 0x89, 0xda, //0x000023d4 movq %rbx, %r10 + 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023d7 movdqu (%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023dd movdqu $16(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023e4 movdqu $32(%r12,%rax), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023eb movdqu $48(%r12,%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xdd, //0x000023f2 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000023f6 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023fa pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xdf, //0x000023ff movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002403 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002407 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000240b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000240f pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x00002413 pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00002418 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000241c pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002420 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00002425 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002429 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000242d pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002432 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002436 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x0000243a pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xde, //0x0000243e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002442 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002446 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x0000244a movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000244e pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00002452 pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002457 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdf, //0x0000245c pcmpgtb %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002460 pcmpgtb %xmm10, %xmm7 + 0x66, 0x0f, 0xdb, 0xfb, //0x00002465 pand %xmm3, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00002469 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000246d movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00002472 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002476 pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x0000247b pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xd6, //0x0000247f pmovmskb %xmm6, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002483 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002488 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000248c pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002491 pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002495 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x0000249a shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x0000249e shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000024a2 orq %r15, %r14 + 0x48, 0xc1, 0xe1, 0x10, //0x000024a5 shlq $16, %rcx + 0x4c, 0x09, 0xf1, //0x000024a9 orq %r14, %rcx + 0x49, 0x09, 0xcb, //0x000024ac orq %rcx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000024af shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000024b3 shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000024b7 orq %r9, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000024ba shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000024be orq %rdi, %rbx + 0x49, 0xc1, 0xe0, 0x30, //0x000024c1 shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000024c5 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000024c9 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000024cc shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000024d0 orq %rdx, %rsi + 0x49, 0x09, 0xdd, //0x000024d3 orq %rbx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024d6 jne LBB0_420 + 0x4d, 0x85, 0xd2, //0x000024dc testq %r10, %r10 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024df jne LBB0_422 + 0x31, 0xdb, //0x000024e5 xorl %ebx, %ebx + 0x4c, 0x8b, 0x75, 0xd0, //0x000024e7 movq $-48(%rbp), %r14 + //0x000024eb LBB0_406 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024eb movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x000024f0 pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024f4 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x000024f9 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000024fd pmovmskb %xmm5, %ecx + 0x48, 0x09, 0xce, //0x00002501 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00002504 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002507 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x0000250b jne LBB0_424 + 0x48, 0x85, 0xf6, //0x00002511 testq %rsi, %rsi + 0x0f, 0x85, 0xf7, 0x16, 0x00, 0x00, //0x00002514 jne LBB0_645 + 0x48, 0x8b, 0x75, 0xb8, //0x0000251a movq $-72(%rbp), %rsi + 0x48, 0x83, 0xc6, 0xc0, //0x0000251e addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x00002522 addq $64, %rax + 0x48, 0x83, 0xfe, 0x3f, //0x00002526 cmpq $63, %rsi + 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000252a ja LBB0_403 + 0xe9, 0xd5, 0x07, 0x00, 0x00, //0x00002530 jmp LBB0_409 + //0x00002535 LBB0_420 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002535 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000253a movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000253e jne LBB0_423 + 0x49, 0x0f, 0xbc, 0xcd, //0x00002544 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00002548 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000254b movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000254f jmp LBB0_423 + //0x00002554 LBB0_422 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002554 movq $-48(%rbp), %r14 + //0x00002558 LBB0_423 + 0x4c, 0x89, 0xd1, //0x00002558 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000255b notq %rcx + 0x4c, 0x21, 0xe9, //0x0000255e andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00002561 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xd2, //0x00002565 orq %r10, %rdx + 0x48, 0x89, 0xd7, //0x00002568 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x0000256b notq %rdi + 0x4c, 0x21, 0xef, //0x0000256e andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002571 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x0000257b andq %rbx, %rdi + 0x31, 0xdb, //0x0000257e xorl %ebx, %ebx + 0x48, 0x01, 0xcf, //0x00002580 addq %rcx, %rdi + 0x0f, 0x92, 0xc3, //0x00002583 setb %bl + 0x48, 0x01, 0xff, //0x00002586 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002589 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x00002593 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x00002596 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00002599 notq %rdi + 0x49, 0x21, 0xfb, //0x0000259c andq %rdi, %r11 + 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000259f jmp LBB0_406 + //0x000025a4 LBB0_424 + 0x49, 0x0f, 0xbc, 0xcb, //0x000025a4 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000025a8 testq %rsi, %rsi + 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, //0x000025ab je LBB0_438 + 0x48, 0x0f, 0xbc, 0xd6, //0x000025b1 bsfq %rsi, %rdx + 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x000025b5 jmp LBB0_439 + //0x000025ba LBB0_426 + 0x41, 0x89, 0xcb, //0x000025ba movl %ecx, %r11d + 0x4c, 0x03, 0x5d, 0xb8, //0x000025bd addq $-72(%rbp), %r11 + 0x49, 0x01, 0xdb, //0x000025c1 addq %rbx, %r11 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025c4 jmp LBB0_428 + //0x000025c9 LBB0_427 + 0x48, 0x01, 0xde, //0x000025c9 addq %rbx, %rsi + 0x49, 0x89, 0xf3, //0x000025cc movq %rsi, %r11 + //0x000025cf LBB0_428 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025cf movq $-1, %rbx + 0x4d, 0x85, 0xf6, //0x000025d6 testq %r14, %r14 + 0x0f, 0x84, 0x56, 0x16, 0x00, 0x00, //0x000025d9 je LBB0_648 + 0x4d, 0x85, 0xed, //0x000025df testq %r13, %r13 + 0x0f, 0x84, 0x4d, 0x16, 0x00, 0x00, //0x000025e2 je LBB0_648 + 0x4d, 0x85, 0xc0, //0x000025e8 testq %r8, %r8 + 0x0f, 0x84, 0x44, 0x16, 0x00, 0x00, //0x000025eb je LBB0_648 + 0x4c, 0x2b, 0x5d, 0xb8, //0x000025f1 subq $-72(%rbp), %r11 + 0x49, 0x8d, 0x4b, 0xff, //0x000025f5 leaq $-1(%r11), %rcx + 0x49, 0x39, 0xce, //0x000025f9 cmpq %rcx, %r14 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025fc je LBB0_437 + 0x49, 0x39, 0xcd, //0x00002602 cmpq %rcx, %r13 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00002605 je LBB0_437 + 0x49, 0x39, 0xc8, //0x0000260b cmpq %rcx, %r8 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000260e je LBB0_437 + 0x4d, 0x85, 0xed, //0x00002614 testq %r13, %r13 + 0x0f, 0x8e, 0x99, 0x00, 0x00, 0x00, //0x00002617 jle LBB0_446 + 0x49, 0x8d, 0x4d, 0xff, //0x0000261d leaq $-1(%r13), %rcx + 0x49, 0x39, 0xc8, //0x00002621 cmpq %rcx, %r8 + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x00002624 je LBB0_446 + 0x49, 0xf7, 0xd5, //0x0000262a notq %r13 + 0x4c, 0x89, 0xeb, //0x0000262d movq %r13, %rbx + 0xe9, 0x24, 0x06, 0x00, 0x00, //0x00002630 jmp LBB0_486 + //0x00002635 LBB0_437 + 0x49, 0xf7, 0xdb, //0x00002635 negq %r11 + 0x4c, 0x89, 0xdb, //0x00002638 movq %r11, %rbx + 0xe9, 0x19, 0x06, 0x00, 0x00, //0x0000263b jmp LBB0_486 + //0x00002640 LBB0_438 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002640 movl $64, %edx + //0x00002645 LBB0_439 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002645 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x5d, 0xc0, //0x0000264f movq $-64(%rbp), %rbx + 0x48, 0x39, 0xca, //0x00002653 cmpq %rcx, %rdx + 0x0f, 0x82, 0xfb, 0x15, 0x00, 0x00, //0x00002656 jb LBB0_654 + 0x48, 0x01, 0xc8, //0x0000265c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000265f addq $1, %rax + //0x00002663 LBB0_441 + 0x48, 0x85, 0xc0, //0x00002663 testq %rax, %rax + 0x0f, 0x88, 0x55, 0x14, 0x00, 0x00, //0x00002666 js LBB0_627 + 0x49, 0x89, 0x06, //0x0000266c movq %rax, (%r14) + 0x48, 0x85, 0xdb, //0x0000266f testq %rbx, %rbx + 0x0f, 0x8f, 0x58, 0xdb, 0xff, 0xff, //0x00002672 jg LBB0_4 + 0xe9, 0xca, 0x15, 0x00, 0x00, //0x00002678 jmp LBB0_443 + //0x0000267d LBB0_131 + 0x4d, 0x85, 0xdb, //0x0000267d testq %r11, %r11 + 0x0f, 0x85, 0xd2, 0x0a, 0x00, 0x00, //0x00002680 jne LBB0_525 + 0x49, 0x01, 0xf2, //0x00002686 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002689 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000268c movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002690 movabsq $4294977024, %r11 + //0x0000269a LBB0_133 + 0x4d, 0x85, 0xc9, //0x0000269a testq %r9, %r9 + 0x0f, 0x8f, 0x1c, 0x0b, 0x00, 0x00, //0x0000269d jg LBB0_529 + 0xe9, 0x07, 0x14, 0x00, 0x00, //0x000026a3 jmp LBB0_650 + //0x000026a8 LBB0_444 + 0x0f, 0xbc, 0xcb, //0x000026a8 bsfl %ebx, %ecx + //0x000026ab LBB0_445 + 0x49, 0xf7, 0xd5, //0x000026ab notq %r13 + 0x49, 0x29, 0xcd, //0x000026ae subq %rcx, %r13 + 0xe9, 0x34, 0x00, 0x00, 0x00, //0x000026b1 jmp LBB0_450 + //0x000026b6 LBB0_446 + 0x4c, 0x89, 0xf1, //0x000026b6 movq %r14, %rcx + 0x4c, 0x09, 0xc1, //0x000026b9 orq %r8, %rcx + 0x0f, 0x99, 0xc2, //0x000026bc setns %dl + 0x0f, 0x88, 0xfb, 0x01, 0x00, 0x00, //0x000026bf js LBB0_453 + 0x4d, 0x39, 0xc6, //0x000026c5 cmpq %r8, %r14 + 0x0f, 0x8c, 0xf2, 0x01, 0x00, 0x00, //0x000026c8 jl LBB0_453 + 0x49, 0xf7, 0xd6, //0x000026ce notq %r14 + 0x4c, 0x89, 0xf3, //0x000026d1 movq %r14, %rbx + 0xe9, 0x80, 0x05, 0x00, 0x00, //0x000026d4 jmp LBB0_486 + //0x000026d9 LBB0_449 + 0x4c, 0x03, 0x65, 0xc0, //0x000026d9 addq $-64(%rbp), %r12 + 0x49, 0x29, 0xf4, //0x000026dd subq %rsi, %r12 + 0x49, 0x29, 0xd4, //0x000026e0 subq %rdx, %r12 + 0x49, 0x83, 0xc4, 0xfe, //0x000026e3 addq $-2, %r12 + 0x4d, 0x89, 0xe5, //0x000026e7 movq %r12, %r13 + //0x000026ea LBB0_450 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026ea movabsq $4294977024, %r11 + //0x000026f4 LBB0_451 + 0x4d, 0x85, 0xed, //0x000026f4 testq %r13, %r13 + 0x0f, 0x88, 0x99, 0x13, 0x00, 0x00, //0x000026f7 js LBB0_626 + //0x000026fd LBB0_452 + 0x49, 0x01, 0xc5, //0x000026fd addq %rax, %r13 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002700 movq $-48(%rbp), %r14 + 0x4d, 0x89, 0x2e, //0x00002704 movq %r13, (%r14) + 0x48, 0x85, 0xc0, //0x00002707 testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000270a movq $-80(%rbp), %r13 + 0x0f, 0x89, 0xbc, 0xda, 0xff, 0xff, //0x0000270e jns LBB0_4 + 0xe9, 0x96, 0x13, 0x00, 0x00, //0x00002714 jmp LBB0_650 + //0x00002719 LBB0_159 + 0x4d, 0x85, 0xdb, //0x00002719 testq %r11, %r11 + 0x0f, 0x85, 0x7e, 0x0c, 0x00, 0x00, //0x0000271c jne LBB0_552 + 0x49, 0x01, 0xf2, //0x00002722 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002725 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002728 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000272c movabsq $4294977024, %r11 + //0x00002736 LBB0_161 + 0x4d, 0x85, 0xc9, //0x00002736 testq %r9, %r9 + 0x0f, 0x8f, 0xbf, 0x0c, 0x00, 0x00, //0x00002739 jg LBB0_556 + 0xe9, 0x6b, 0x13, 0x00, 0x00, //0x0000273f jmp LBB0_650 + //0x00002744 LBB0_50 + 0x4c, 0x01, 0xe0, //0x00002744 addq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002747 movq $-48(%rbp), %r14 + 0x49, 0x83, 0xf9, 0x20, //0x0000274b cmpq $32, %r9 + 0x0f, 0x82, 0x9e, 0x07, 0x00, 0x00, //0x0000274f jb LBB0_503 + //0x00002755 LBB0_51 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002755 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002759 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000275e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002762 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002766 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000276a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000276e pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002772 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002776 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000277a pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x0000277e pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002782 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002786 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000278a orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x0000278d shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002791 orq %rdi, %rsi + 0x0f, 0x85, 0x5d, 0x0a, 0x00, 0x00, //0x00002794 jne LBB0_532 + 0x4d, 0x85, 0xc0, //0x0000279a testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000279d movabsq $4294977024, %r11 + 0x0f, 0x85, 0x74, 0x0a, 0x00, 0x00, //0x000027a7 jne LBB0_534 + 0x45, 0x31, 0xc0, //0x000027ad xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x000027b0 testq %rdx, %rdx + 0x0f, 0x84, 0xc4, 0x0a, 0x00, 0x00, //0x000027b3 je LBB0_536 + //0x000027b9 LBB0_54 + 0x48, 0x0f, 0xbc, 0xca, //0x000027b9 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x000027bd subq %r12, %rax + 0x48, 0x01, 0xc8, //0x000027c0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000027c3 addq $1, %rax + 0xe9, 0xa3, 0xea, 0xff, 0xff, //0x000027c7 jmp LBB0_229 + //0x000027cc LBB0_171 + 0x4c, 0x8b, 0x65, 0xb8, //0x000027cc movq $-72(%rbp), %r12 + 0x4c, 0x01, 0xe0, //0x000027d0 addq %r12, %rax + 0x49, 0x83, 0xfe, 0x20, //0x000027d3 cmpq $32, %r14 + 0x0f, 0x82, 0x40, 0x07, 0x00, 0x00, //0x000027d7 jb LBB0_505 + //0x000027dd LBB0_172 + 0xf3, 0x0f, 0x6f, 0x20, //0x000027dd movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x000027e1 movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x000027e6 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027ea pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000027ee pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xeb, //0x000027f2 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027f6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000027fa pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x000027fe movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002802 pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002806 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x0000280b movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000280f pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002813 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002817 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000281c pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002820 pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002825 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002829 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe7, 0x10, //0x0000282d shlq $16, %rdi + 0x48, 0x09, 0xf9, //0x00002831 orq %rdi, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x00002834 shlq $16, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x00002838 shlq $16, %rsi + 0x49, 0x09, 0xd1, //0x0000283c orq %rdx, %r9 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000283f movabsq $4294977024, %r11 + 0x0f, 0x85, 0x24, 0x0b, 0x00, 0x00, //0x00002849 jne LBB0_550 + 0x48, 0x85, 0xdb, //0x0000284f testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002852 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0xf2, 0x0b, 0x00, 0x00, //0x00002856 jne LBB0_559 + 0x31, 0xdb, //0x0000285c xorl %ebx, %ebx + //0x0000285e LBB0_175 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000285e movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002863 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002867 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000286c pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00002870 pmovmskb %xmm4, %edx + 0x48, 0x09, 0xd6, //0x00002874 orq %rdx, %rsi + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002877 movl $64, %edx + 0xbf, 0x40, 0x00, 0x00, 0x00, //0x0000287c movl $64, %edi + 0x48, 0x85, 0xc9, //0x00002881 testq %rcx, %rcx + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002884 je LBB0_177 + 0x48, 0x0f, 0xbc, 0xf9, //0x0000288a bsfq %rcx, %rdi + //0x0000288e LBB0_177 + 0x48, 0x85, 0xf6, //0x0000288e testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002891 je LBB0_179 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002897 bsfq %rsi, %rdx + //0x0000289b LBB0_179 + 0x48, 0x85, 0xc9, //0x0000289b testq %rcx, %rcx + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x0000289e je LBB0_457 + 0x48, 0x39, 0xfa, //0x000028a4 cmpq %rdi, %rdx + 0x0f, 0x82, 0x29, 0x14, 0x00, 0x00, //0x000028a7 jb LBB0_663 + 0x4c, 0x29, 0xe0, //0x000028ad subq %r12, %rax + 0x48, 0x01, 0xf8, //0x000028b0 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000028b3 addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x000028b7 movq $-48(%rbp), %r14 + 0xe9, 0xaf, 0xe9, 0xff, 0xff, //0x000028bb jmp LBB0_229 + //0x000028c0 LBB0_453 + 0x49, 0x8d, 0x48, 0xff, //0x000028c0 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xce, //0x000028c4 cmpq %rcx, %r14 + 0x49, 0xf7, 0xd0, //0x000028c7 notq %r8 + 0x4d, 0x0f, 0x45, 0xc3, //0x000028ca cmovneq %r11, %r8 + 0x84, 0xd2, //0x000028ce testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xc3, //0x000028d0 cmoveq %r11, %r8 + 0x4c, 0x89, 0xc3, //0x000028d4 movq %r8, %rbx + 0xe9, 0x7d, 0x03, 0x00, 0x00, //0x000028d7 jmp LBB0_486 + //0x000028dc LBB0_73 + 0x4c, 0x01, 0xe0, //0x000028dc addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x000028df cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000028e3 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x000028e7 movq $-64(%rbp), %rsi + 0x0f, 0x82, 0xe5, 0x06, 0x00, 0x00, //0x000028eb jb LBB0_511 + //0x000028f1 LBB0_74 + 0xf3, 0x0f, 0x6f, 0x18, //0x000028f1 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028f5 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x000028fa movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000028fe pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002902 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002906 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000290a pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x0000290e pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002912 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00002916 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x74, 0xe1, //0x0000291a pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x0000291e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002922 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002926 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002929 shlq $16, %rdi + 0x48, 0x09, 0xfb, //0x0000292d orq %rdi, %rbx + 0x0f, 0x85, 0x70, 0x0b, 0x00, 0x00, //0x00002930 jne LBB0_561 + 0x4d, 0x85, 0xc0, //0x00002936 testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002939 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x87, 0x0b, 0x00, 0x00, //0x00002943 jne LBB0_563 + 0x45, 0x31, 0xc0, //0x00002949 xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x0000294c testq %rdx, %rdx + 0x0f, 0x84, 0xd8, 0x0b, 0x00, 0x00, //0x0000294f je LBB0_565 + //0x00002955 LBB0_77 + 0x48, 0x0f, 0xbc, 0xca, //0x00002955 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002959 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x0000295c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000295f addq $1, %rax + 0xe9, 0x8f, 0xee, 0xff, 0xff, //0x00002963 jmp LBB0_313 + //0x00002968 LBB0_198 + 0x4c, 0x8b, 0x45, 0xb8, //0x00002968 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x0000296c addq %r8, %rax + 0x49, 0x83, 0xfa, 0x20, //0x0000296f cmpq $32, %r10 + 0x0f, 0x82, 0x8c, 0x06, 0x00, 0x00, //0x00002973 jb LBB0_513 + //0x00002979 LBB0_199 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002979 movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x0000297d movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002982 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002986 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x0000298a pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x0000298e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002992 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002996 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000299a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000299e pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000029a2 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x000029a7 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x000029ab pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000029af pmovmskb %xmm5, %ecx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000029b3 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000029b8 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000029bc pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x000029c1 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000029c5 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe2, 0x10, //0x000029c9 shlq $16, %rdx + 0x48, 0x09, 0xd6, //0x000029cd orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x000029d0 shlq $16, %rcx + 0x48, 0xc1, 0xe7, 0x10, //0x000029d4 shlq $16, %rdi + 0x49, 0x09, 0xc9, //0x000029d8 orq %rcx, %r9 + 0x0f, 0x85, 0x42, 0x0c, 0x00, 0x00, //0x000029db jne LBB0_579 + 0x4d, 0x85, 0xe4, //0x000029e1 testq %r12, %r12 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000029e4 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029e8 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x45, 0xd6, 0xff, 0xff, //0x000029f2 movdqu $-10683(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x0f, 0x85, 0x48, 0x0c, 0x00, 0x00, //0x000029fb jne LBB0_581 + 0x45, 0x31, 0xe4, //0x00002a01 xorl %r12d, %r12d + //0x00002a04 LBB0_202 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002a04 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002a09 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002a0d pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002a12 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002a16 pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002a1a orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002a1d movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002a22 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002a27 testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a2a je LBB0_204 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002a30 bsfq %rsi, %rdx + //0x00002a34 LBB0_204 + 0x48, 0x85, 0xff, //0x00002a34 testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a37 je LBB0_206 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002a3d bsfq %rdi, %rcx + //0x00002a41 LBB0_206 + 0x48, 0x85, 0xf6, //0x00002a41 testq %rsi, %rsi + 0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, //0x00002a44 je LBB0_469 + 0x48, 0x39, 0xd1, //0x00002a4a cmpq %rdx, %rcx + 0x0f, 0x82, 0x92, 0x12, 0x00, 0x00, //0x00002a4d jb LBB0_664 + 0x4c, 0x29, 0xc0, //0x00002a53 subq %r8, %rax + 0x48, 0x01, 0xd0, //0x00002a56 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002a59 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002a5d movq $-64(%rbp), %rsi + 0xe9, 0x91, 0xed, 0xff, 0xff, //0x00002a61 jmp LBB0_313 + //0x00002a66 LBB0_454 + 0x89, 0xd9, //0x00002a66 movl %ebx, %ecx + 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x00002a68 jmp LBB0_445 + //0x00002a6d LBB0_455 + 0x89, 0xf1, //0x00002a6d movl %esi, %ecx + 0xe9, 0x37, 0xfc, 0xff, 0xff, //0x00002a6f jmp LBB0_445 + //0x00002a74 LBB0_456 + 0x89, 0xd1, //0x00002a74 movl %edx, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002a76 jmp LBB0_445 + //0x00002a7b LBB0_457 + 0x48, 0x85, 0xf6, //0x00002a7b testq %rsi, %rsi + 0x0f, 0x85, 0x52, 0x12, 0x00, 0x00, //0x00002a7e jne LBB0_663 + 0x48, 0x83, 0xc0, 0x20, //0x00002a84 addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00002a88 addq $-32, %r14 + 0x48, 0x85, 0xdb, //0x00002a8c testq %rbx, %rbx + 0x0f, 0x85, 0x9f, 0x04, 0x00, 0x00, //0x00002a8f jne LBB0_506 + //0x00002a95 LBB0_459 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002a95 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xf6, //0x00002a99 testq %r14, %r14 + 0x0f, 0x84, 0xf8, 0x11, 0x00, 0x00, //0x00002a9c je LBB0_508 + //0x00002aa2 LBB0_460 + 0x0f, 0xb6, 0x10, //0x00002aa2 movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002aa5 cmpb $34, %dl + 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002aa8 je LBB0_468 + 0x80, 0xfa, 0x5c, //0x00002aae cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002ab1 je LBB0_464 + 0x80, 0xfa, 0x1f, //0x00002ab7 cmpb $31, %dl + 0x0f, 0x86, 0x30, 0x12, 0x00, 0x00, //0x00002aba jbe LBB0_665 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002ac0 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00002acc addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002acf addq %rdx, %r14 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002ad2 jne LBB0_460 + 0xe9, 0xbd, 0x11, 0x00, 0x00, //0x00002ad8 jmp LBB0_508 + //0x00002add LBB0_464 + 0x49, 0x83, 0xfe, 0x01, //0x00002add cmpq $1, %r14 + 0x0f, 0x84, 0xb3, 0x11, 0x00, 0x00, //0x00002ae1 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ae7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002aec movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002af0 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002af7 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002afc cmpq $-1, %rcx + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002b00 jne LBB0_467 + 0x48, 0x89, 0xc1, //0x00002b06 movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x00002b09 subq %r12, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002b0c movq %rcx, $-56(%rbp) + //0x00002b10 LBB0_467 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002b10 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b14 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002b1e movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002b22 movdqa %xmm6, %xmm13 + 0x48, 0x01, 0xf0, //0x00002b27 addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002b2a addq %rdx, %r14 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002b2d jne LBB0_460 + 0xe9, 0x62, 0x11, 0x00, 0x00, //0x00002b33 jmp LBB0_508 + //0x00002b38 LBB0_468 + 0x4c, 0x29, 0xe0, //0x00002b38 subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002b3b addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002b3f movq $-48(%rbp), %r14 + 0xe9, 0x27, 0xe7, 0xff, 0xff, //0x00002b43 jmp LBB0_229 + //0x00002b48 LBB0_469 + 0x48, 0x85, 0xff, //0x00002b48 testq %rdi, %rdi + 0x0f, 0x85, 0x94, 0x11, 0x00, 0x00, //0x00002b4b jne LBB0_664 + 0x48, 0x83, 0xc0, 0x20, //0x00002b51 addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002b55 addq $-32, %r10 + 0x4d, 0x85, 0xe4, //0x00002b59 testq %r12, %r12 + 0x0f, 0x85, 0xc3, 0x04, 0x00, 0x00, //0x00002b5c jne LBB0_514 + //0x00002b62 LBB0_471 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002b62 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xd2, //0x00002b66 testq %r10, %r10 + 0x0f, 0x84, 0x60, 0x0f, 0x00, 0x00, //0x00002b69 je LBB0_628 + //0x00002b6f LBB0_472 + 0x0f, 0xb6, 0x10, //0x00002b6f movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002b72 cmpb $34, %dl + 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, //0x00002b75 je LBB0_482 + 0x80, 0xfa, 0x5c, //0x00002b7b cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b7e je LBB0_477 + 0x80, 0xfa, 0x1f, //0x00002b84 cmpb $31, %dl + 0x0f, 0x86, 0x6f, 0x11, 0x00, 0x00, //0x00002b87 jbe LBB0_666 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b8d movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b94 movl $1, %esi + //0x00002b99 LBB0_476 + 0x48, 0x01, 0xf0, //0x00002b99 addq %rsi, %rax + 0x49, 0x01, 0xd2, //0x00002b9c addq %rdx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b9f jne LBB0_472 + 0xe9, 0x25, 0x0f, 0x00, 0x00, //0x00002ba5 jmp LBB0_628 + //0x00002baa LBB0_477 + 0x49, 0x83, 0xfa, 0x01, //0x00002baa cmpq $1, %r10 + 0x0f, 0x84, 0x05, 0x11, 0x00, 0x00, //0x00002bae je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x00002bb4 movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002bb8 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002bbf movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002bc4 cmpq $-1, %rcx + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002bc8 je LBB0_480 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002bce movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002bd2 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bd6 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002be0 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x53, 0xd4, 0xff, 0xff, //0x00002be4 movdqu $-11181(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bed movq $-72(%rbp), %r8 + 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002bf1 jmp LBB0_476 + //0x00002bf6 LBB0_480 + 0x48, 0x89, 0xc1, //0x00002bf6 movq %rax, %rcx + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bf9 movq $-72(%rbp), %r8 + 0x4c, 0x29, 0xc1, //0x00002bfd subq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002c00 movq %rcx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c04 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c08 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c0c movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002c16 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x1d, 0xd4, 0xff, 0xff, //0x00002c1a movdqu $-11235(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002c23 jmp LBB0_476 + //0x00002c28 LBB0_481 + 0x0f, 0xbc, 0xce, //0x00002c28 bsfl %esi, %ecx + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00002c2b jmp LBB0_485 + //0x00002c30 LBB0_482 + 0x4c, 0x29, 0xc0, //0x00002c30 subq %r8, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c33 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002c37 movq $-64(%rbp), %rsi + 0xe9, 0xb7, 0xeb, 0xff, 0xff, //0x00002c3b jmp LBB0_313 + //0x00002c40 LBB0_483 + 0x49, 0x01, 0xc4, //0x00002c40 addq %rax, %r12 + 0x49, 0x29, 0xf4, //0x00002c43 subq %rsi, %r12 + 0x48, 0xf7, 0xd3, //0x00002c46 notq %rbx + 0x4c, 0x01, 0xe3, //0x00002c49 addq %r12, %rbx + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c4c jmp LBB0_486 + //0x00002c51 LBB0_484 + 0x89, 0xd1, //0x00002c51 movl %edx, %ecx + //0x00002c53 LBB0_485 + 0x48, 0xf7, 0xd3, //0x00002c53 notq %rbx + 0x48, 0x29, 0xcb, //0x00002c56 subq %rcx, %rbx + //0x00002c59 LBB0_486 + 0x48, 0x85, 0xdb, //0x00002c59 testq %rbx, %rbx + 0x0f, 0x88, 0xd3, 0x0f, 0x00, 0x00, //0x00002c5c js LBB0_648 + //0x00002c62 LBB0_487 + 0x48, 0x01, 0xc3, //0x00002c62 addq %rax, %rbx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c65 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x1e, //0x00002c69 movq %rbx, (%r14) + //0x00002c6c LBB0_488 + 0x48, 0x85, 0xc0, //0x00002c6c testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c6f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c73 movabsq $4294977024, %r11 + 0x0f, 0x8f, 0x4d, 0xd5, 0xff, 0xff, //0x00002c7d jg LBB0_4 + 0xe9, 0xe0, 0x0d, 0x00, 0x00, //0x00002c83 jmp LBB0_232 + //0x00002c88 LBB0_246 + 0x4c, 0x01, 0xe0, //0x00002c88 addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x00002c8b cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c8f movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002c93 movq $-64(%rbp), %rbx + 0x0f, 0x82, 0x3e, 0x04, 0x00, 0x00, //0x00002c97 jb LBB0_519 + //0x00002c9d LBB0_247 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002c9d movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002ca1 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00002ca6 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002caa pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002cae pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002cb2 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002cb6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002cba pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002cbe pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002cc2 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00002cc6 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002cca pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002cce shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002cd2 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002cd5 shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002cd9 orq %rdi, %rsi + 0x0f, 0x85, 0x23, 0x0b, 0x00, 0x00, //0x00002cdc jne LBB0_595 + 0x4d, 0x85, 0xc0, //0x00002ce2 testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x0b, 0x00, 0x00, //0x00002ce5 jne LBB0_597 + 0x45, 0x31, 0xc0, //0x00002ceb xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x00002cee testq %rdx, %rdx + 0x0f, 0x84, 0x9d, 0x0b, 0x00, 0x00, //0x00002cf1 je LBB0_599 + //0x00002cf7 LBB0_250 + 0x48, 0x0f, 0xbc, 0xca, //0x00002cf7 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002cfb subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00002cfe addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002d01 addq $1, %rax + 0xe9, 0x59, 0xf9, 0xff, 0xff, //0x00002d05 jmp LBB0_441 + //0x00002d0a LBB0_409 + 0x4c, 0x01, 0xe0, //0x00002d0a addq %r12, %rax + 0x49, 0x89, 0xf2, //0x00002d0d movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x00002d10 cmpq $32, %rsi + 0x0f, 0x82, 0xed, 0x03, 0x00, 0x00, //0x00002d14 jb LBB0_521 + //0x00002d1a LBB0_410 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002d1a movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002d1e movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002d23 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d27 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00002d2b pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d2f movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d33 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002d37 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00002d3b movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d3f pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d43 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d48 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d4c pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002d50 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d54 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00002d59 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d5d pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002d62 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002d66 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002d6a shlq $16, %rcx + 0x48, 0x09, 0xce, //0x00002d6e orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x00002d71 shlq $16, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002d75 shlq $16, %rdi + 0x49, 0x09, 0xd1, //0x00002d79 orq %rdx, %r9 + 0x0f, 0x85, 0xf6, 0x0b, 0x00, 0x00, //0x00002d7c jne LBB0_613 + 0x48, 0x85, 0xdb, //0x00002d82 testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002d85 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d89 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x0c, 0x0c, 0x00, 0x00, //0x00002d93 jne LBB0_615 + 0x31, 0xdb, //0x00002d99 xorl %ebx, %ebx + //0x00002d9b LBB0_413 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d9b movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002da0 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002da4 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002da9 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002dad pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002db1 orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002db4 movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002db9 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002dbe testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dc1 je LBB0_415 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002dc7 bsfq %rsi, %rdx + //0x00002dcb LBB0_415 + 0x48, 0x85, 0xff, //0x00002dcb testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dce je LBB0_417 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002dd4 bsfq %rdi, %rcx + //0x00002dd8 LBB0_417 + 0x48, 0x85, 0xf6, //0x00002dd8 testq %rsi, %rsi + 0x0f, 0x84, 0x5c, 0x00, 0x00, 0x00, //0x00002ddb je LBB0_491 + 0x4c, 0x29, 0xe0, //0x00002de1 subq %r12, %rax + 0x48, 0x39, 0xd1, //0x00002de4 cmpq %rdx, %rcx + 0x0f, 0x82, 0x24, 0x0f, 0x00, 0x00, //0x00002de7 jb LBB0_668 + 0x48, 0x01, 0xd0, //0x00002ded addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002df0 addq $1, %rax + 0x48, 0x8b, 0x5d, 0xc0, //0x00002df4 movq $-64(%rbp), %rbx + 0xe9, 0x66, 0xf8, 0xff, 0xff, //0x00002df8 jmp LBB0_441 + //0x00002dfd LBB0_489 + 0x4b, 0x8d, 0x04, 0x04, //0x00002dfd leaq (%r12,%r8), %rax + 0x48, 0x85, 0xc9, //0x00002e01 testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002e04 movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00002e08 movabsq $17596481021440, %rdi + 0x0f, 0x85, 0xa9, 0xdd, 0xff, 0xff, //0x00002e12 jne LBB0_139 + 0xe9, 0xe4, 0xdd, 0xff, 0xff, //0x00002e18 jmp LBB0_146 + //0x00002e1d LBB0_490 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002e1d movq $-1, %r8 + 0x48, 0x89, 0xfe, //0x00002e24 movq %rdi, %rsi + 0x4d, 0x89, 0xf3, //0x00002e27 movq %r14, %r11 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e2a movq $-1, %r15 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002e31 movq $-1, %r10 + 0xe9, 0x96, 0xd9, 0xff, 0xff, //0x00002e38 jmp LBB0_105 + //0x00002e3d LBB0_491 + 0x48, 0x85, 0xff, //0x00002e3d testq %rdi, %rdi + 0x0f, 0x85, 0xe0, 0x0e, 0x00, 0x00, //0x00002e40 jne LBB0_669 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002e46 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002e4b movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x00002e4f addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002e53 addq $-32, %r10 + 0x48, 0x85, 0xdb, //0x00002e57 testq %rbx, %rbx + 0x0f, 0x85, 0xb9, 0x02, 0x00, 0x00, //0x00002e5a jne LBB0_522 + //0x00002e60 LBB0_493 + 0x48, 0x8b, 0x55, 0xc8, //0x00002e60 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xd2, //0x00002e64 testq %r10, %r10 + 0x0f, 0x84, 0x4c, 0x0e, 0x00, 0x00, //0x00002e67 je LBB0_524 + //0x00002e6d LBB0_494 + 0x0f, 0xb6, 0x08, //0x00002e6d movzbl (%rax), %ecx + 0x80, 0xf9, 0x22, //0x00002e70 cmpb $34, %cl + 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e73 je LBB0_509 + 0x80, 0xf9, 0x5c, //0x00002e79 cmpb $92, %cl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e7c je LBB0_499 + 0x80, 0xf9, 0x1f, //0x00002e82 cmpb $31, %cl + 0x0f, 0x86, 0xa6, 0x0e, 0x00, 0x00, //0x00002e85 jbe LBB0_670 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e8b movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e92 movl $1, %esi + //0x00002e97 LBB0_498 + 0x48, 0x01, 0xf0, //0x00002e97 addq %rsi, %rax + 0x49, 0x01, 0xca, //0x00002e9a addq %rcx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e9d jne LBB0_494 + 0xe9, 0x11, 0x0e, 0x00, 0x00, //0x00002ea3 jmp LBB0_524 + //0x00002ea8 LBB0_499 + 0x49, 0x83, 0xfa, 0x01, //0x00002ea8 cmpq $1, %r10 + 0x0f, 0x84, 0x07, 0x0e, 0x00, 0x00, //0x00002eac je LBB0_524 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002eb2 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002eb9 movl $2, %esi + 0x48, 0x83, 0xfa, 0xff, //0x00002ebe cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002ec2 jne LBB0_498 + 0x48, 0x89, 0xc2, //0x00002ec8 movq %rax, %rdx + 0x4c, 0x29, 0xe2, //0x00002ecb subq %r12, %rdx + 0x48, 0x89, 0x55, 0xc8, //0x00002ece movq %rdx, $-56(%rbp) + 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002ed2 jmp LBB0_498 + //0x00002ed7 LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00002ed7 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002edb addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ede movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002ee6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002ee9 cmpq $32, %r9 + 0x0f, 0x83, 0x62, 0xf8, 0xff, 0xff, //0x00002eed jae LBB0_51 + //0x00002ef3 LBB0_503 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ef3 movabsq $4294977024, %r11 + 0xe9, 0x83, 0x03, 0x00, 0x00, //0x00002efd jmp LBB0_537 + //0x00002f02 LBB0_504 + 0x48, 0x8b, 0x45, 0xc0, //0x00002f02 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002f06 addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f09 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x00002f11 xorl %ebx, %ebx + 0x49, 0x83, 0xfe, 0x20, //0x00002f13 cmpq $32, %r14 + 0x0f, 0x83, 0xc0, 0xf8, 0xff, 0xff, //0x00002f17 jae LBB0_172 + //0x00002f1d LBB0_505 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f1d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f21 movabsq $4294977024, %r11 + 0x48, 0x85, 0xdb, //0x00002f2b testq %rbx, %rbx + 0x0f, 0x84, 0x61, 0xfb, 0xff, 0xff, //0x00002f2e je LBB0_459 + //0x00002f34 LBB0_506 + 0x4d, 0x85, 0xf6, //0x00002f34 testq %r14, %r14 + 0x0f, 0x84, 0x5d, 0x0d, 0x00, 0x00, //0x00002f37 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002f3d movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002f42 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00002f46 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00002f49 notq %rcx + 0x48, 0x01, 0xc1, //0x00002f4c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x00002f4f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002f53 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002f57 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00002f5a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x00002f5e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00002f62 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00002f66 addq $-1, %r14 + 0x48, 0x89, 0x55, 0xc8, //0x00002f6a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f6e movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f72 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xf6, //0x00002f7c testq %r14, %r14 + 0x0f, 0x85, 0x1d, 0xfb, 0xff, 0xff, //0x00002f7f jne LBB0_460 + 0xe9, 0x10, 0x0d, 0x00, 0x00, //0x00002f85 jmp LBB0_508 + //0x00002f8a LBB0_509 + 0x4c, 0x29, 0xe0, //0x00002f8a subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002f8d addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002f91 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f95 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f99 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002fa3 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002fa7 movdqa %xmm6, %xmm13 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002fac movq $-64(%rbp), %rbx + 0xe9, 0xae, 0xf6, 0xff, 0xff, //0x00002fb0 jmp LBB0_441 + //0x00002fb5 LBB0_510 + 0x49, 0x8d, 0x04, 0x14, //0x00002fb5 leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002fb9 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002fc1 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002fc4 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002fc8 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x00002fcc movq $-64(%rbp), %rsi + 0x0f, 0x83, 0x1b, 0xf9, 0xff, 0xff, //0x00002fd0 jae LBB0_74 + //0x00002fd6 LBB0_511 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002fd6 movabsq $4294977024, %r11 + 0xe9, 0x50, 0x05, 0x00, 0x00, //0x00002fe0 jmp LBB0_566 + //0x00002fe5 LBB0_512 + 0x48, 0x8b, 0x45, 0xc0, //0x00002fe5 movq $-64(%rbp), %rax + 0x4c, 0x8b, 0x45, 0xb8, //0x00002fe9 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x00002fed addq %r8, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ff0 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xe4, //0x00002ff8 xorl %r12d, %r12d + 0x49, 0x83, 0xfa, 0x20, //0x00002ffb cmpq $32, %r10 + 0x0f, 0x83, 0x74, 0xf9, 0xff, 0xff, //0x00002fff jae LBB0_199 + //0x00003005 LBB0_513 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003005 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003009 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x24, 0xd0, 0xff, 0xff, //0x00003013 movdqu $-12252(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xe4, //0x0000301c testq %r12, %r12 + 0x0f, 0x84, 0x3d, 0xfb, 0xff, 0xff, //0x0000301f je LBB0_471 + //0x00003025 LBB0_514 + 0x4d, 0x85, 0xd2, //0x00003025 testq %r10, %r10 + 0x0f, 0x84, 0x8b, 0x0c, 0x00, 0x00, //0x00003028 je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x0000302e movdqa %xmm2, %xmm5 + 0x4c, 0x8b, 0x45, 0xb8, //0x00003032 movq $-72(%rbp), %r8 + 0x4c, 0x89, 0xc1, //0x00003036 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00003039 notq %rcx + 0x48, 0x01, 0xc1, //0x0000303c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x0000303f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00003043 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00003047 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x0000304a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x0000304e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00003052 addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003056 addq $-1, %r10 + 0x48, 0x89, 0x55, 0xc8, //0x0000305a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000305e movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003062 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003066 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xc7, 0xcf, 0xff, 0xff, //0x00003070 movdqu $-12345(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x00003079 testq %r10, %r10 + 0x0f, 0x85, 0xed, 0xfa, 0xff, 0xff, //0x0000307c jne LBB0_472 + 0xe9, 0x48, 0x0a, 0x00, 0x00, //0x00003082 jmp LBB0_628 + //0x00003087 LBB0_516 + 0x49, 0x8d, 0x0c, 0x04, //0x00003087 leaq (%r12,%rax), %rcx + 0x48, 0x85, 0xd2, //0x0000308b testq %rdx, %rdx + 0x0f, 0x85, 0x3f, 0xe9, 0xff, 0xff, //0x0000308e jne LBB0_332 + 0xe9, 0x84, 0xe9, 0xff, 0xff, //0x00003094 jmp LBB0_339 + //0x00003099 LBB0_517 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003099 movq $-1, %r14 + 0x48, 0x8b, 0x75, 0xb8, //0x000030a0 movq $-72(%rbp), %rsi + 0x4d, 0x89, 0xca, //0x000030a4 movq %r9, %r10 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030a7 movq $-1, %r8 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000030ae movq $-1, %r13 + 0xe9, 0x93, 0xe5, 0xff, 0xff, //0x000030b5 jmp LBB0_280 + //0x000030ba LBB0_518 + 0x49, 0x8d, 0x04, 0x14, //0x000030ba leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030be movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000030c6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x000030c9 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000030cd movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x000030d1 movq $-64(%rbp), %rbx + 0x0f, 0x83, 0xc2, 0xfb, 0xff, 0xff, //0x000030d5 jae LBB0_247 + //0x000030db LBB0_519 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030db movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000030e0 movdqa %xmm2, %xmm5 + 0xe9, 0xbc, 0x07, 0x00, 0x00, //0x000030e4 jmp LBB0_600 + //0x000030e9 LBB0_520 + 0x48, 0x8b, 0x45, 0xc0, //0x000030e9 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x000030ed addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030f0 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x000030f8 xorl %ebx, %ebx + 0x49, 0x89, 0xf2, //0x000030fa movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x000030fd cmpq $32, %rsi + 0x0f, 0x83, 0x13, 0xfc, 0xff, 0xff, //0x00003101 jae LBB0_410 + //0x00003107 LBB0_521 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003107 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000310c movdqa %xmm2, %xmm5 + 0x48, 0x85, 0xdb, //0x00003110 testq %rbx, %rbx + 0x0f, 0x84, 0x47, 0xfd, 0xff, 0xff, //0x00003113 je LBB0_493 + //0x00003119 LBB0_522 + 0x4d, 0x85, 0xd2, //0x00003119 testq %r10, %r10 + 0x0f, 0x84, 0x97, 0x0b, 0x00, 0x00, //0x0000311c je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003122 movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003125 notq %rdx + 0x48, 0x01, 0xc2, //0x00003128 addq %rax, %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x0000312b movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000312f cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x00003133 movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003136 cmoveq %rdx, %rcx + 0x48, 0x0f, 0x45, 0xd6, //0x0000313a cmovneq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x0000313e addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003142 addq $-1, %r10 + 0x48, 0x89, 0x4d, 0xc8, //0x00003146 movq %rcx, $-56(%rbp) + 0x4d, 0x85, 0xd2, //0x0000314a testq %r10, %r10 + 0x0f, 0x85, 0x1a, 0xfd, 0xff, 0xff, //0x0000314d jne LBB0_494 + 0xe9, 0x61, 0x0b, 0x00, 0x00, //0x00003153 jmp LBB0_524 + //0x00003158 LBB0_525 + 0x49, 0x39, 0xf1, //0x00003158 cmpq %rsi, %r9 + 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x0000315b je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003161 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003166 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x0000316a addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x0000316d addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x00003171 notq %rsi + 0x49, 0x01, 0xf1, //0x00003174 addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003177 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000317b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000317f movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003189 testq %r9, %r9 + 0x0f, 0x8f, 0x2d, 0x00, 0x00, 0x00, //0x0000318c jg LBB0_529 + 0xe9, 0x18, 0x09, 0x00, 0x00, //0x00003192 jmp LBB0_650 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003197 .p2align 4, 0x90 + //0x000031a0 LBB0_527 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000031a0 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000031a7 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000031ac addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031af movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031b6 addq %rcx, %r9 + 0x0f, 0x8e, 0xf0, 0x08, 0x00, 0x00, //0x000031b9 jle LBB0_650 + //0x000031bf LBB0_529 + 0x41, 0x0f, 0xb6, 0x02, //0x000031bf movzbl (%r10), %eax + 0x3c, 0x5c, //0x000031c3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000031c5 je LBB0_527 + 0x3c, 0x22, //0x000031cb cmpb $34, %al + 0x0f, 0x84, 0x26, 0x06, 0x00, 0x00, //0x000031cd je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000031d3 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000031da movl $1, %eax + 0x49, 0x01, 0xc2, //0x000031df addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031e2 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031e9 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000031ec jg LBB0_529 + 0xe9, 0xb8, 0x08, 0x00, 0x00, //0x000031f2 jmp LBB0_650 + //0x000031f7 LBB0_532 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031f7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000031fc movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003200 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003205 jne LBB0_535 + 0x48, 0x89, 0xc1, //0x0000320b movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000320e subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003211 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003215 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003218 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000321c jmp LBB0_535 + //0x00003221 LBB0_534 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003221 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003226 movdqa %xmm2, %xmm5 + //0x0000322a LBB0_535 + 0x44, 0x89, 0xc1, //0x0000322a movl %r8d, %ecx + 0xf7, 0xd1, //0x0000322d notl %ecx + 0x21, 0xf1, //0x0000322f andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003231 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003235 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00003238 notl %ebx + 0x21, 0xf3, //0x0000323a andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000323c andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003242 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003245 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x00003247 setb %r8b + 0x01, 0xdb, //0x0000324b addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000324d xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003253 andl %edi, %ebx + 0xf7, 0xd3, //0x00003255 notl %ebx + 0x21, 0xda, //0x00003257 andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003259 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000325d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003261 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000326b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000326f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003274 testq %rdx, %rdx + 0x0f, 0x85, 0x3c, 0xf5, 0xff, 0xff, //0x00003277 jne LBB0_54 + //0x0000327d LBB0_536 + 0x48, 0x83, 0xc0, 0x20, //0x0000327d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003281 addq $-32, %r9 + //0x00003285 LBB0_537 + 0x4d, 0x85, 0xc0, //0x00003285 testq %r8, %r8 + 0x0f, 0x85, 0x19, 0x04, 0x00, 0x00, //0x00003288 jne LBB0_583 + 0x4c, 0x89, 0xe1, //0x0000328e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003291 notq %rcx + 0x48, 0x8b, 0x55, 0xc8, //0x00003294 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xc9, //0x00003298 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000329b je LBB0_549 + //0x000032a1 LBB0_539 + 0x48, 0x83, 0xc1, 0x01, //0x000032a1 addq $1, %rcx + //0x000032a5 LBB0_540 + 0x31, 0xf6, //0x000032a5 xorl %esi, %esi + //0x000032a7 LBB0_541 + 0x0f, 0xb6, 0x1c, 0x30, //0x000032a7 movzbl (%rax,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x000032ab cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000032ae je LBB0_548 + 0x80, 0xfb, 0x5c, //0x000032b4 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000032b7 je LBB0_546 + 0x48, 0x83, 0xc6, 0x01, //0x000032bd addq $1, %rsi + 0x49, 0x39, 0xf1, //0x000032c1 cmpq %rsi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000032c4 jne LBB0_541 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000032ca jmp LBB0_544 + //0x000032cf LBB0_546 + 0x49, 0x8d, 0x79, 0xff, //0x000032cf leaq $-1(%r9), %rdi + 0x48, 0x39, 0xf7, //0x000032d3 cmpq %rsi, %rdi + 0x0f, 0x84, 0xbe, 0x09, 0x00, 0x00, //0x000032d6 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032dc movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000032e1 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x000032e5 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xf7, //0x000032e9 addq %rsi, %rdi + 0x48, 0x83, 0xfa, 0xff, //0x000032ec cmpq $-1, %rdx + 0x48, 0x8b, 0x5d, 0xc8, //0x000032f0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000032f4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000032f8 movq %rbx, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xd7, //0x000032fc cmoveq %rdi, %rdx + 0x48, 0x01, 0xf0, //0x00003300 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003303 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x00003307 movq %r9, %rdi + 0x48, 0x29, 0xf7, //0x0000330a subq %rsi, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x0000330d addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x00003311 addq $-2, %r9 + 0x49, 0x39, 0xf1, //0x00003315 cmpq %rsi, %r9 + 0x49, 0x89, 0xf9, //0x00003318 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000331b movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000331f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003323 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000332d jne LBB0_540 + 0xe9, 0x43, 0x07, 0x00, 0x00, //0x00003333 jmp LBB0_624 + //0x00003338 LBB0_548 + 0x48, 0x01, 0xf0, //0x00003338 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000333b addq $1, %rax + //0x0000333f LBB0_549 + 0x4c, 0x29, 0xe0, //0x0000333f subq %r12, %rax + 0xe9, 0x28, 0xdf, 0xff, 0xff, //0x00003342 jmp LBB0_229 + //0x00003347 LBB0_544 + 0x80, 0xfb, 0x22, //0x00003347 cmpb $34, %bl + 0x0f, 0x85, 0x4a, 0x09, 0x00, 0x00, //0x0000334a jne LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003350 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003355 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003359 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000335c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003360 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003364 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000336e jmp LBB0_549 + //0x00003373 LBB0_550 + 0x48, 0x89, 0xdf, //0x00003373 movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003376 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x0000337b movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000337f cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003384 jne LBB0_560 + 0x49, 0x89, 0xc0, //0x0000338a movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x0000338d subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003390 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003394 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003397 movq %rbx, $-56(%rbp) + 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000339b jmp LBB0_560 + //0x000033a0 LBB0_552 + 0x49, 0x39, 0xf1, //0x000033a0 cmpq %rsi, %r9 + 0x0f, 0x84, 0x06, 0x07, 0x00, 0x00, //0x000033a3 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000033a9 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000033ae movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x000033b2 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000033b5 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x000033b9 notq %rsi + 0x49, 0x01, 0xf1, //0x000033bc addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000033bf movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000033c3 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000033c7 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000033d1 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000033d4 jg LBB0_556 + 0xe9, 0xd0, 0x06, 0x00, 0x00, //0x000033da jmp LBB0_650 + //0x000033df LBB0_554 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000033df movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000033e6 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000033eb addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033ee movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000033f5 addq %rcx, %r9 + 0x0f, 0x8e, 0xb1, 0x06, 0x00, 0x00, //0x000033f8 jle LBB0_650 + //0x000033fe LBB0_556 + 0x41, 0x0f, 0xb6, 0x02, //0x000033fe movzbl (%r10), %eax + 0x3c, 0x5c, //0x00003402 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003404 je LBB0_554 + 0x3c, 0x22, //0x0000340a cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x0000340c je LBB0_621 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003412 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003419 movl $1, %eax + 0x49, 0x01, 0xc2, //0x0000341e addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003421 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x00003428 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000342b jg LBB0_556 + 0xe9, 0x79, 0x06, 0x00, 0x00, //0x00003431 jmp LBB0_650 + //0x00003436 LBB0_621 + 0x4d, 0x29, 0xe2, //0x00003436 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003439 addq $1, %r10 + 0x4d, 0x89, 0x16, //0x0000343d movq %r10, (%r14) + 0x4d, 0x85, 0xc0, //0x00003440 testq %r8, %r8 + 0x0f, 0x8f, 0xc3, 0xe3, 0xff, 0xff, //0x00003443 jg LBB0_315 + 0xe9, 0x0e, 0x06, 0x00, 0x00, //0x00003449 jmp LBB0_622 + //0x0000344e LBB0_559 + 0x48, 0x89, 0xdf, //0x0000344e movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003451 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003456 movdqa %xmm2, %xmm6 + //0x0000345a LBB0_560 + 0x48, 0x89, 0xfb, //0x0000345a movq %rdi, %rbx + 0xf7, 0xd7, //0x0000345d notl %edi + 0x44, 0x21, 0xcf, //0x0000345f andl %r9d, %edi + 0x44, 0x8d, 0x04, 0x7b, //0x00003462 leal (%rbx,%rdi,2), %r8d + 0x8d, 0x14, 0x3f, //0x00003466 leal (%rdi,%rdi), %edx + 0xf7, 0xd2, //0x00003469 notl %edx + 0x44, 0x21, 0xca, //0x0000346b andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000346e andl $-1431655766, %edx + 0x31, 0xdb, //0x00003474 xorl %ebx, %ebx + 0x01, 0xfa, //0x00003476 addl %edi, %edx + 0x0f, 0x92, 0xc3, //0x00003478 setb %bl + 0x01, 0xd2, //0x0000347b addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000347d xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x00003483 andl %r8d, %edx + 0xf7, 0xd2, //0x00003486 notl %edx + 0x21, 0xd1, //0x00003488 andl %edx, %ecx + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000348a movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000348e movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003498 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000349c movdqa %xmm7, %xmm13 + 0xe9, 0xb8, 0xf3, 0xff, 0xff, //0x000034a1 jmp LBB0_175 + //0x000034a6 LBB0_561 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034a6 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034ab movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000034af cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000034b4 jne LBB0_564 + 0x48, 0x89, 0xc1, //0x000034ba movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x000034bd subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfb, //0x000034c0 bsfq %rbx, %rdi + 0x48, 0x01, 0xcf, //0x000034c4 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x000034c7 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000034cb jmp LBB0_564 + //0x000034d0 LBB0_563 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034d0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034d5 movdqa %xmm2, %xmm5 + //0x000034d9 LBB0_564 + 0x44, 0x89, 0xc1, //0x000034d9 movl %r8d, %ecx + 0xf7, 0xd1, //0x000034dc notl %ecx + 0x21, 0xd9, //0x000034de andl %ebx, %ecx + 0x45, 0x8d, 0x14, 0x48, //0x000034e0 leal (%r8,%rcx,2), %r10d + 0x8d, 0x3c, 0x09, //0x000034e4 leal (%rcx,%rcx), %edi + 0xf7, 0xd7, //0x000034e7 notl %edi + 0x21, 0xdf, //0x000034e9 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000034eb andl $-1431655766, %edi + 0x45, 0x31, 0xc0, //0x000034f1 xorl %r8d, %r8d + 0x01, 0xcf, //0x000034f4 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc0, //0x000034f6 setb %r8b + 0x01, 0xff, //0x000034fa addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000034fc xorl $1431655765, %edi + 0x44, 0x21, 0xd7, //0x00003502 andl %r10d, %edi + 0xf7, 0xd7, //0x00003505 notl %edi + 0x21, 0xfa, //0x00003507 andl %edi, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003509 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000350d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003511 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000351b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000351f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003524 testq %rdx, %rdx + 0x0f, 0x85, 0x28, 0xf4, 0xff, 0xff, //0x00003527 jne LBB0_77 + //0x0000352d LBB0_565 + 0x48, 0x83, 0xc0, 0x20, //0x0000352d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003531 addq $-32, %r9 + //0x00003535 LBB0_566 + 0x4d, 0x85, 0xc0, //0x00003535 testq %r8, %r8 + 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x00003538 jne LBB0_585 + 0x4c, 0x89, 0xe1, //0x0000353e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003541 notq %rcx + 0x4c, 0x8b, 0x45, 0xc8, //0x00003544 movq $-56(%rbp), %r8 + 0x4d, 0x85, 0xc9, //0x00003548 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000354b je LBB0_578 + //0x00003551 LBB0_568 + 0x48, 0x83, 0xc1, 0x01, //0x00003551 addq $1, %rcx + //0x00003555 LBB0_569 + 0x31, 0xd2, //0x00003555 xorl %edx, %edx + //0x00003557 LBB0_570 + 0x0f, 0xb6, 0x1c, 0x10, //0x00003557 movzbl (%rax,%rdx), %ebx + 0x80, 0xfb, 0x22, //0x0000355b cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000355e je LBB0_577 + 0x80, 0xfb, 0x5c, //0x00003564 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003567 je LBB0_575 + 0x48, 0x83, 0xc2, 0x01, //0x0000356d addq $1, %rdx + 0x49, 0x39, 0xd1, //0x00003571 cmpq %rdx, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003574 jne LBB0_570 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000357a jmp LBB0_573 + //0x0000357f LBB0_575 + 0x49, 0x8d, 0x79, 0xff, //0x0000357f leaq $-1(%r9), %rdi + 0x48, 0x39, 0xd7, //0x00003583 cmpq %rdx, %rdi + 0x0f, 0x84, 0x2d, 0x07, 0x00, 0x00, //0x00003586 je LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000358c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003591 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x00003595 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xd7, //0x00003599 addq %rdx, %rdi + 0x49, 0x83, 0xf8, 0xff, //0x0000359c cmpq $-1, %r8 + 0x48, 0x8b, 0x5d, 0xc8, //0x000035a0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000035a4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000035a8 movq %rbx, $-56(%rbp) + 0x4c, 0x0f, 0x44, 0xc7, //0x000035ac cmoveq %rdi, %r8 + 0x48, 0x01, 0xd0, //0x000035b0 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x02, //0x000035b3 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x000035b7 movq %r9, %rdi + 0x48, 0x29, 0xd7, //0x000035ba subq %rdx, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x000035bd addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x000035c1 addq $-2, %r9 + 0x49, 0x39, 0xd1, //0x000035c5 cmpq %rdx, %r9 + 0x49, 0x89, 0xf9, //0x000035c8 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000035cb movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000035cf movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035d3 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000035dd jne LBB0_569 + 0xe9, 0xe7, 0x04, 0x00, 0x00, //0x000035e3 jmp LBB0_628 + //0x000035e8 LBB0_577 + 0x48, 0x01, 0xd0, //0x000035e8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035eb addq $1, %rax + //0x000035ef LBB0_578 + 0x4c, 0x29, 0xe0, //0x000035ef subq %r12, %rax + 0xe9, 0x00, 0xe2, 0xff, 0xff, //0x000035f2 jmp LBB0_313 + //0x000035f7 LBB0_573 + 0x80, 0xfb, 0x22, //0x000035f7 cmpb $34, %bl + 0x0f, 0x85, 0xb9, 0x06, 0x00, 0x00, //0x000035fa jne LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003600 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003605 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003609 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000360c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003610 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003614 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000361e jmp LBB0_578 + //0x00003623 LBB0_579 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003623 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003627 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x0000362c jne LBB0_582 + 0x49, 0x89, 0xc0, //0x00003632 movq %rax, %r8 + 0x4c, 0x2b, 0x45, 0xb8, //0x00003635 subq $-72(%rbp), %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003639 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x0000363d addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003640 movq %rbx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00003644 jmp LBB0_582 + //0x00003649 LBB0_581 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003649 movdqa %xmm2, %xmm6 + //0x0000364d LBB0_582 + 0x44, 0x89, 0xe2, //0x0000364d movl %r12d, %edx + 0xf7, 0xd2, //0x00003650 notl %edx + 0x44, 0x21, 0xca, //0x00003652 andl %r9d, %edx + 0x45, 0x8d, 0x04, 0x54, //0x00003655 leal (%r12,%rdx,2), %r8d + 0x8d, 0x0c, 0x12, //0x00003659 leal (%rdx,%rdx), %ecx + 0xf7, 0xd1, //0x0000365c notl %ecx + 0x44, 0x21, 0xc9, //0x0000365e andl %r9d, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003661 andl $-1431655766, %ecx + 0x45, 0x31, 0xe4, //0x00003667 xorl %r12d, %r12d + 0x01, 0xd1, //0x0000366a addl %edx, %ecx + 0x41, 0x0f, 0x92, 0xc4, //0x0000366c setb %r12b + 0x01, 0xc9, //0x00003670 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003672 xorl $1431655765, %ecx + 0x44, 0x21, 0xc1, //0x00003678 andl %r8d, %ecx + 0xf7, 0xd1, //0x0000367b notl %ecx + 0x21, 0xce, //0x0000367d andl %ecx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x0000367f movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003683 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003687 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003691 movdqa %xmm6, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa2, 0xc9, 0xff, 0xff, //0x00003695 movdqu $-13918(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x0000369e movq $-72(%rbp), %r8 + 0xe9, 0x5d, 0xf3, 0xff, 0xff, //0x000036a2 jmp LBB0_202 + //0x000036a7 LBB0_583 + 0x4d, 0x85, 0xc9, //0x000036a7 testq %r9, %r9 + 0x0f, 0x84, 0xea, 0x05, 0x00, 0x00, //0x000036aa je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036b0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000036b5 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x000036b9 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x000036bc notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x000036bf leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x000036c3 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x000036c7 cmpq $-1, %rdi + 0x48, 0x89, 0xfa, //0x000036cb movq %rdi, %rdx + 0x48, 0x0f, 0x44, 0xfe, //0x000036ce cmoveq %rsi, %rdi + 0x48, 0x0f, 0x44, 0xd6, //0x000036d2 cmoveq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x000036d6 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x000036da addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x000036de movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x000036e2 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000036e6 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036ea movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000036f4 testq %r9, %r9 + 0x0f, 0x85, 0xa4, 0xfb, 0xff, 0xff, //0x000036f7 jne LBB0_539 + 0xe9, 0x3d, 0xfc, 0xff, 0xff, //0x000036fd jmp LBB0_549 + //0x00003702 LBB0_585 + 0x4d, 0x85, 0xc9, //0x00003702 testq %r9, %r9 + 0x0f, 0x84, 0xae, 0x05, 0x00, 0x00, //0x00003705 je LBB0_524 + 0x48, 0x89, 0xf2, //0x0000370b movq %rsi, %rdx + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000370e movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003713 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00003717 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x0000371a notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x0000371d leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x00003721 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003725 cmpq $-1, %rdi + 0x49, 0x89, 0xf8, //0x00003729 movq %rdi, %r8 + 0x48, 0x0f, 0x44, 0xfe, //0x0000372c cmoveq %rsi, %rdi + 0x4c, 0x0f, 0x44, 0xc6, //0x00003730 cmoveq %rsi, %r8 + 0x48, 0x83, 0xc0, 0x01, //0x00003734 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003738 addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x0000373c movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003740 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003744 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003748 movabsq $4294977024, %r11 + 0x48, 0x89, 0xd6, //0x00003752 movq %rdx, %rsi + 0x4d, 0x85, 0xc9, //0x00003755 testq %r9, %r9 + 0x0f, 0x85, 0xf3, 0xfd, 0xff, 0xff, //0x00003758 jne LBB0_568 + 0xe9, 0x8c, 0xfe, 0xff, 0xff, //0x0000375e jmp LBB0_578 + //0x00003763 LBB0_587 + 0x49, 0x39, 0xf1, //0x00003763 cmpq %rsi, %r9 + 0x0f, 0x84, 0x43, 0x03, 0x00, 0x00, //0x00003766 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000376c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003771 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x00003775 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003778 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x0000377c notq %rsi + 0x49, 0x01, 0xf1, //0x0000377f addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003782 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003786 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000378a movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003794 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003797 jg LBB0_591 + 0xe9, 0x0d, 0x03, 0x00, 0x00, //0x0000379d jmp LBB0_650 + //0x000037a2 LBB0_589 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000037a2 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000037a9 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000037ae addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037b1 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037b8 addq %rcx, %r9 + 0x0f, 0x8e, 0xee, 0x02, 0x00, 0x00, //0x000037bb jle LBB0_650 + //0x000037c1 LBB0_591 + 0x41, 0x0f, 0xb6, 0x02, //0x000037c1 movzbl (%r10), %eax + 0x3c, 0x5c, //0x000037c5 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000037c7 je LBB0_589 + 0x3c, 0x22, //0x000037cd cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000037cf je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000037d5 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000037dc movl $1, %eax + 0x49, 0x01, 0xc2, //0x000037e1 addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037e4 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037eb addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000037ee jg LBB0_591 + 0xe9, 0xb6, 0x02, 0x00, 0x00, //0x000037f4 jmp LBB0_650 + //0x000037f9 LBB0_594 + 0x4d, 0x29, 0xe2, //0x000037f9 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000037fc addq $1, %r10 + 0xe9, 0xbe, 0xc9, 0xff, 0xff, //0x00003800 jmp LBB0_2 + //0x00003805 LBB0_595 + 0x49, 0x89, 0xda, //0x00003805 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003808 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000380d movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003811 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003816 jne LBB0_598 + 0x48, 0x89, 0xc1, //0x0000381c movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000381f subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003822 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003826 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003829 movq %rdi, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000382d jmp LBB0_598 + //0x00003832 LBB0_597 + 0x49, 0x89, 0xda, //0x00003832 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003835 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000383a movdqa %xmm2, %xmm5 + //0x0000383e LBB0_598 + 0x44, 0x89, 0xc1, //0x0000383e movl %r8d, %ecx + 0xf7, 0xd1, //0x00003841 notl %ecx + 0x21, 0xf1, //0x00003843 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003845 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003849 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x0000384c notl %ebx + 0x21, 0xf3, //0x0000384e andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003850 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003856 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003859 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x0000385b setb %r8b + 0x01, 0xdb, //0x0000385f addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003861 xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003867 andl %edi, %ebx + 0xf7, 0xd3, //0x00003869 notl %ebx + 0x21, 0xda, //0x0000386b andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x0000386d movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003871 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003875 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000387f movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003883 movdqa %xmm6, %xmm13 + 0x4c, 0x89, 0xd3, //0x00003888 movq %r10, %rbx + 0x48, 0x85, 0xd2, //0x0000388b testq %rdx, %rdx + 0x0f, 0x85, 0x63, 0xf4, 0xff, 0xff, //0x0000388e jne LBB0_250 + //0x00003894 LBB0_599 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003894 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003899 movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x0000389d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x000038a1 addq $-32, %r9 + //0x000038a5 LBB0_600 + 0x4d, 0x85, 0xc0, //0x000038a5 testq %r8, %r8 + 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x000038a8 jne LBB0_617 + 0x4c, 0x89, 0xe2, //0x000038ae movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x000038b1 notq %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x000038b4 movq $-56(%rbp), %rsi + 0x4d, 0x85, 0xc9, //0x000038b8 testq %r9, %r9 + 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x000038bb je LBB0_612 + //0x000038c1 LBB0_602 + 0x48, 0x83, 0xc2, 0x01, //0x000038c1 addq $1, %rdx + //0x000038c5 LBB0_603 + 0x31, 0xff, //0x000038c5 xorl %edi, %edi + //0x000038c7 LBB0_604 + 0x0f, 0xb6, 0x0c, 0x38, //0x000038c7 movzbl (%rax,%rdi), %ecx + 0x80, 0xf9, 0x22, //0x000038cb cmpb $34, %cl + 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x000038ce je LBB0_611 + 0x80, 0xf9, 0x5c, //0x000038d4 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000038d7 je LBB0_609 + 0x48, 0x83, 0xc7, 0x01, //0x000038dd addq $1, %rdi + 0x49, 0x39, 0xf9, //0x000038e1 cmpq %rdi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000038e4 jne LBB0_604 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000038ea jmp LBB0_607 + //0x000038ef LBB0_609 + 0x49, 0x8d, 0x49, 0xff, //0x000038ef leaq $-1(%r9), %rcx + 0x48, 0x39, 0xf9, //0x000038f3 cmpq %rdi, %rcx + 0x0f, 0x84, 0xbd, 0x03, 0x00, 0x00, //0x000038f6 je LBB0_524 + 0x4c, 0x8d, 0x04, 0x02, //0x000038fc leaq (%rdx,%rax), %r8 + 0x49, 0x01, 0xf8, //0x00003900 addq %rdi, %r8 + 0x48, 0x83, 0xfe, 0xff, //0x00003903 cmpq $-1, %rsi + 0x48, 0x8b, 0x4d, 0xc8, //0x00003907 movq $-56(%rbp), %rcx + 0x49, 0x0f, 0x44, 0xc8, //0x0000390b cmoveq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000390f movq %rcx, $-56(%rbp) + 0x49, 0x0f, 0x44, 0xf0, //0x00003913 cmoveq %r8, %rsi + 0x48, 0x01, 0xf8, //0x00003917 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000391a addq $2, %rax + 0x4c, 0x89, 0xc9, //0x0000391e movq %r9, %rcx + 0x48, 0x29, 0xf9, //0x00003921 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003924 addq $-2, %rcx + 0x49, 0x83, 0xc1, 0xfe, //0x00003928 addq $-2, %r9 + 0x49, 0x39, 0xf9, //0x0000392c cmpq %rdi, %r9 + 0x49, 0x89, 0xc9, //0x0000392f movq %rcx, %r9 + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x00003932 jne LBB0_603 + 0xe9, 0x7c, 0x03, 0x00, 0x00, //0x00003938 jmp LBB0_524 + //0x0000393d LBB0_611 + 0x48, 0x01, 0xf8, //0x0000393d addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003940 addq $1, %rax + //0x00003944 LBB0_612 + 0x4c, 0x29, 0xe0, //0x00003944 subq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003947 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000394b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000394f movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00003959 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000395d movdqa %xmm6, %xmm13 + 0xe9, 0xfc, 0xec, 0xff, 0xff, //0x00003962 jmp LBB0_441 + //0x00003967 LBB0_607 + 0x80, 0xf9, 0x22, //0x00003967 cmpb $34, %cl + 0x0f, 0x85, 0x49, 0x03, 0x00, 0x00, //0x0000396a jne LBB0_524 + 0x4c, 0x01, 0xc8, //0x00003970 addq %r9, %rax + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x00003973 jmp LBB0_612 + //0x00003978 LBB0_613 + 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x0000397b movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003980 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003984 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003989 jne LBB0_616 + 0x49, 0x89, 0xc0, //0x0000398f movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x00003992 subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003995 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003999 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x0000399c movq %rbx, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000039a0 jmp LBB0_616 + //0x000039a5 LBB0_615 + 0x48, 0x89, 0xd9, //0x000039a5 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000039a8 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x000039ad movdqa %xmm2, %xmm6 + //0x000039b1 LBB0_616 + 0x48, 0x89, 0xcb, //0x000039b1 movq %rcx, %rbx + 0xf7, 0xd1, //0x000039b4 notl %ecx + 0x44, 0x21, 0xc9, //0x000039b6 andl %r9d, %ecx + 0x44, 0x8d, 0x04, 0x4b, //0x000039b9 leal (%rbx,%rcx,2), %r8d + 0x8d, 0x14, 0x09, //0x000039bd leal (%rcx,%rcx), %edx + 0xf7, 0xd2, //0x000039c0 notl %edx + 0x44, 0x21, 0xca, //0x000039c2 andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000039c5 andl $-1431655766, %edx + 0x31, 0xdb, //0x000039cb xorl %ebx, %ebx + 0x01, 0xca, //0x000039cd addl %ecx, %edx + 0x0f, 0x92, 0xc3, //0x000039cf setb %bl + 0x01, 0xd2, //0x000039d2 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000039d4 xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x000039da andl %r8d, %edx + 0xf7, 0xd2, //0x000039dd notl %edx + 0x21, 0xd6, //0x000039df andl %edx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x000039e1 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000039e5 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000039e9 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x000039f3 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x000039f7 movdqa %xmm7, %xmm13 + 0xe9, 0x9a, 0xf3, 0xff, 0xff, //0x000039fc jmp LBB0_413 + //0x00003a01 LBB0_617 + 0x4d, 0x85, 0xc9, //0x00003a01 testq %r9, %r9 + 0x0f, 0x84, 0xaf, 0x02, 0x00, 0x00, //0x00003a04 je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003a0a movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003a0d notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003a10 leaq (%rax,%rdx), %rcx + 0x48, 0x8b, 0x7d, 0xc8, //0x00003a14 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003a18 cmpq $-1, %rdi + 0x48, 0x89, 0xfe, //0x00003a1c movq %rdi, %rsi + 0x48, 0x0f, 0x44, 0xf9, //0x00003a1f cmoveq %rcx, %rdi + 0x48, 0x0f, 0x44, 0xf1, //0x00003a23 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003a27 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003a2b addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x00003a2f movq %rdi, $-56(%rbp) + 0x4d, 0x85, 0xc9, //0x00003a33 testq %r9, %r9 + 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x00003a36 jne LBB0_602 + 0xe9, 0x03, 0xff, 0xff, 0xff, //0x00003a3c jmp LBB0_612 + //0x00003a41 LBB0_619 + 0x49, 0x89, 0x36, //0x00003a41 movq %rsi, (%r14) + //0x00003a44 LBB0_620 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a44 movq $-1, %rax + 0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00003a4b jmp LBB0_650 + //0x00003a50 LBB0_651 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003a50 movq $-7, %rax + 0xe9, 0x53, 0x00, 0x00, 0x00, //0x00003a57 jmp LBB0_650 + //0x00003a5c LBB0_622 + 0x49, 0x83, 0xc0, 0xff, //0x00003a5c addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003a60 movq %r8, %rax + 0xe9, 0x47, 0x00, 0x00, 0x00, //0x00003a63 jmp LBB0_650 + //0x00003a68 LBB0_232 + 0x48, 0x83, 0xc0, 0xff, //0x00003a68 addq $-1, %rax + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00003a6c jmp LBB0_650 + //0x00003a71 LBB0_623 + 0x48, 0x83, 0xf8, 0xff, //0x00003a71 cmpq $-1, %rax + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00003a75 jne LBB0_634 + //0x00003a7b LBB0_624 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a7b movq $-1, %rax + 0x48, 0x8b, 0x4d, 0xa0, //0x00003a82 movq $-96(%rbp), %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003a86 movq %rcx, $-56(%rbp) + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x00003a8a jmp LBB0_634 + //0x00003a8f LBB0_625 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a8f movq $-1, %r13 + //0x00003a96 LBB0_626 + 0x48, 0x8b, 0x4d, 0xc0, //0x00003a96 movq $-64(%rbp), %rcx + 0x4c, 0x29, 0xe9, //0x00003a9a subq %r13, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a9d addq $-2, %rcx + 0x48, 0x8b, 0x45, 0xd0, //0x00003aa1 movq $-48(%rbp), %rax + 0x48, 0x89, 0x08, //0x00003aa5 movq %rcx, (%rax) + //0x00003aa8 LBB0_649 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003aa8 movq $-2, %rax + //0x00003aaf LBB0_650 + 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003aaf addq $136, %rsp + 0x5b, //0x00003ab6 popq %rbx + 0x41, 0x5c, //0x00003ab7 popq %r12 + 0x41, 0x5d, //0x00003ab9 popq %r13 + 0x41, 0x5e, //0x00003abb popq %r14 + 0x41, 0x5f, //0x00003abd popq %r15 + 0x5d, //0x00003abf popq %rbp + 0xc3, //0x00003ac0 retq + //0x00003ac1 LBB0_627 + 0x48, 0x83, 0xf8, 0xff, //0x00003ac1 cmpq $-1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x00003ac5 movq $-56(%rbp), %rdx + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003ac9 jne LBB0_629 + //0x00003acf LBB0_628 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003acf movq $-1, %rax + 0x48, 0x8b, 0x55, 0xa0, //0x00003ad6 movq $-96(%rbp), %rdx + //0x00003ada LBB0_629 0x49, 0x89, 0x16, //0x00003ada movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003add cmpb $115, $2(%r12,%rcx) - 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003ae3 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x03, //0x00003ae9 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003aed movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003af0 cmpb $101, $3(%r12,%rcx) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003af6 jne LBB0_638 - 0x48, 0x83, 0xc1, 0x04, //0x00003afc addq $4, %rcx - 0x49, 0x89, 0x0e, //0x00003b00 movq %rcx, (%r14) - 0xe9, 0x3f, 0xff, 0xff, 0xff, //0x00003b03 jmp LBB0_638 - //0x00003b08 LBB0_627 - 0x49, 0x89, 0x06, //0x00003b08 movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b0b cmpb $116, (%r12,%rax) - 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b10 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b16 movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b19 cmpb $114, (%r12,%rcx) - 0x0f, 0x85, 0x1c, 0xff, 0xff, 0xff, //0x00003b1e jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b24 leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b28 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b2b cmpb $117, $1(%r12,%rcx) - 0x0f, 0x85, 0x09, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b37 leaq $2(%rcx), %rax + 0xe9, 0xcd, 0xff, 0xff, 0xff, //0x00003add jmp LBB0_650 + //0x00003ae2 LBB0_630 + 0x48, 0x83, 0xc6, 0xff, //0x00003ae2 addq $-1, %rsi + 0x48, 0x89, 0xf0, //0x00003ae6 movq %rsi, %rax + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003ae9 jmp LBB0_650 + //0x00003aee LBB0_631 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003aee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003af3 jne LBB0_633 + 0x48, 0x0f, 0xbc, 0xcf, //0x00003af9 bsfq %rdi, %rcx + 0x48, 0x01, 0xc1, //0x00003afd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003b00 movq %rcx, $-56(%rbp) + //0x00003b04 LBB0_633 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003b04 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003b0b movq $-48(%rbp), %r14 + //0x00003b0f LBB0_634 + 0x48, 0x8b, 0x4d, 0xc8, //0x00003b0f movq $-56(%rbp), %rcx + 0x49, 0x89, 0x0e, //0x00003b13 movq %rcx, (%r14) + 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003b16 jmp LBB0_650 + //0x00003b1b LBB0_635 + 0x49, 0x89, 0x06, //0x00003b1b movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b1e cmpb $116, (%r12,%rax) + 0x0f, 0x85, 0x7f, 0xff, 0xff, 0xff, //0x00003b23 jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b29 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b2c cmpb $114, (%r12,%rcx) + 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b37 leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b3b movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b3e cmpb $101, $2(%r12,%rcx) - 0x0f, 0x85, 0xf6, 0xfe, 0xff, 0xff, //0x00003b44 jne LBB0_637 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b4a jmp LBB0_631 - //0x00003b4f LBB0_289 - 0x49, 0x89, 0x06, //0x00003b4f movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b52 cmpb $110, (%r12,%rax) - 0x0f, 0x85, 0xe3, 0xfe, 0xff, 0xff, //0x00003b57 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b5d movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b60 cmpb $117, (%r12,%rcx) - 0x0f, 0x85, 0xd5, 0xfe, 0xff, 0xff, //0x00003b65 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b6b leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b6f movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b72 cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0xc2, 0xfe, 0xff, 0xff, //0x00003b78 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b7e leaq $2(%rcx), %rax + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b3e cmpb $117, $1(%r12,%rcx) + 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003b44 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b4a leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b4e movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b51 cmpb $101, $2(%r12,%rcx) + 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003b57 jne LBB0_649 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b5d jmp LBB0_639 + //0x00003b62 LBB0_297 + 0x49, 0x89, 0x06, //0x00003b62 movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b65 cmpb $110, (%r12,%rax) + 0x0f, 0x85, 0x38, 0xff, 0xff, 0xff, //0x00003b6a jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b70 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b73 cmpb $117, (%r12,%rcx) + 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b78 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b7e leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b82 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b85 cmpb $108, $2(%r12,%rcx) - 0x0f, 0x85, 0xaf, 0xfe, 0xff, 0xff, //0x00003b8b jne LBB0_637 - //0x00003b91 LBB0_631 - 0x48, 0x83, 0xc1, 0x03, //0x00003b91 addq $3, %rcx - 0x49, 0x89, 0x0e, //0x00003b95 movq %rcx, (%r14) - 0xe9, 0xa3, 0xfe, 0xff, 0xff, //0x00003b98 jmp LBB0_637 - //0x00003b9d LBB0_228 - 0x48, 0x83, 0xc1, 0xff, //0x00003b9d addq $-1, %rcx - 0x48, 0x89, 0xc8, //0x00003ba1 movq %rcx, %rax - 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003ba4 jmp LBB0_638 - //0x00003ba9 LBB0_632 - 0x48, 0x8b, 0x55, 0xc8, //0x00003ba9 movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00003bad cmpq $-1, %rdx - 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00003bb1 je LBB0_639 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb7 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bbe movq %rdx, (%r14) - 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003bc1 jmp LBB0_638 - //0x00003bc6 LBB0_185 - 0x48, 0x8b, 0x75, 0xc0, //0x00003bc6 movq $-64(%rbp), %rsi - 0xe9, 0x63, 0xfe, 0xff, 0xff, //0x00003bca jmp LBB0_612 - //0x00003bcf LBB0_635 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003bcf movq $-1, %rbx - //0x00003bd6 LBB0_636 - 0x48, 0xf7, 0xd3, //0x00003bd6 notq %rbx - 0x48, 0x01, 0xd8, //0x00003bd9 addq %rbx, %rax - 0x48, 0x8b, 0x4d, 0xd0, //0x00003bdc movq $-48(%rbp), %rcx - 0x48, 0x89, 0x01, //0x00003be0 movq %rax, (%rcx) - 0xe9, 0x58, 0xfe, 0xff, 0xff, //0x00003be3 jmp LBB0_637 - //0x00003be8 LBB0_639 - 0x48, 0x0f, 0xbc, 0xd7, //0x00003be8 bsfq %rdi, %rdx - //0x00003bec LBB0_640 - 0x48, 0x01, 0xc2, //0x00003bec addq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bef movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bf6 movq %rdx, (%r14) - 0xe9, 0x49, 0xfe, 0xff, 0xff, //0x00003bf9 jmp LBB0_638 - //0x00003bfe LBB0_642 - 0x48, 0x8b, 0x45, 0xb0, //0x00003bfe movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c02 movq %rax, $-96(%rbp) - 0xe9, 0x0c, 0xfe, 0xff, 0xff, //0x00003c06 jmp LBB0_610 - //0x00003c0b LBB0_643 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c0b movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c0f movq %rax, $-96(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c13 movq $-48(%rbp), %r14 - 0xe9, 0xfb, 0xfd, 0xff, 0xff, //0x00003c17 jmp LBB0_610 - //0x00003c1c LBB0_182 - 0x48, 0x01, 0xc2, //0x00003c1c addq %rax, %rdx + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b85 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0x17, 0xff, 0xff, 0xff, //0x00003b8b jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b91 leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b95 movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b98 cmpb $108, $2(%r12,%rcx) + 0x0f, 0x85, 0x04, 0xff, 0xff, 0xff, //0x00003b9e jne LBB0_649 + //0x00003ba4 LBB0_639 + 0x48, 0x83, 0xc1, 0x03, //0x00003ba4 addq $3, %rcx + 0x49, 0x89, 0x0e, //0x00003ba8 movq %rcx, (%r14) + 0xe9, 0xf8, 0xfe, 0xff, 0xff, //0x00003bab jmp LBB0_649 + //0x00003bb0 LBB0_640 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb0 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003bb7 cmpb $97, %dl + 0x0f, 0x85, 0xef, 0xfe, 0xff, 0xff, //0x00003bba jne LBB0_650 + 0x48, 0x8d, 0x51, 0x01, //0x00003bc0 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bc4 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003bc7 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0xdc, 0xfe, 0xff, 0xff, //0x00003bcd jne LBB0_650 + 0x48, 0x8d, 0x51, 0x02, //0x00003bd3 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bd7 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003bda cmpb $115, $2(%r12,%rcx) + 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003be0 jne LBB0_650 + 0x48, 0x8d, 0x51, 0x03, //0x00003be6 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bea movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003bed cmpb $101, $3(%r12,%rcx) + 0x0f, 0x85, 0xb6, 0xfe, 0xff, 0xff, //0x00003bf3 jne LBB0_650 + 0x48, 0x83, 0xc1, 0x04, //0x00003bf9 addq $4, %rcx + 0x49, 0x89, 0x0e, //0x00003bfd movq %rcx, (%r14) + 0xe9, 0xaa, 0xfe, 0xff, 0xff, //0x00003c00 jmp LBB0_650 + //0x00003c05 LBB0_236 + 0x48, 0x83, 0xc1, 0xff, //0x00003c05 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003c09 movq %rcx, %rax + 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003c0c jmp LBB0_650 + //0x00003c11 LBB0_645 + 0x48, 0x8b, 0x55, 0xc8, //0x00003c11 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00003c15 cmpq $-1, %rdx + 0x0f, 0x84, 0x34, 0x00, 0x00, 0x00, //0x00003c19 je LBB0_653 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c1f movq $-2, %rax - 0x48, 0x89, 0x55, 0xc8, //0x00003c26 movq %rdx, $-56(%rbp) - 0xe9, 0x78, 0xfe, 0xff, 0xff, //0x00003c2a jmp LBB0_621 - //0x00003c2f LBB0_490 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c2f movq $-48(%rbp), %r14 - 0xe9, 0xdf, 0xfd, 0xff, 0xff, //0x00003c33 jmp LBB0_610 - //0x00003c38 LBB0_646 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c38 movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c3c movq %rax, $-96(%rbp) - 0xe9, 0x2e, 0xfe, 0xff, 0xff, //0x00003c40 jmp LBB0_616 - //0x00003c45 LBB0_644 - 0x48, 0x89, 0x4d, 0xa0, //0x00003c45 movq %rcx, $-96(%rbp) - 0xe9, 0x25, 0xfe, 0xff, 0xff, //0x00003c49 jmp LBB0_616 - //0x00003c4e LBB0_507 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c4e movq $-48(%rbp), %r14 - 0xe9, 0x1c, 0xfe, 0xff, 0xff, //0x00003c52 jmp LBB0_616 - //0x00003c57 LBB0_648 - 0x48, 0x8b, 0x4d, 0xa8, //0x00003c57 movq $-88(%rbp), %rcx - 0x48, 0x8b, 0x49, 0x08, //0x00003c5b movq $8(%rcx), %rcx - 0x48, 0x8b, 0x55, 0xd0, //0x00003c5f movq $-48(%rbp), %rdx - 0x48, 0x89, 0x0a, //0x00003c63 movq %rcx, (%rdx) - 0xe9, 0xdc, 0xfd, 0xff, 0xff, //0x00003c66 jmp LBB0_638 - //0x00003c6b LBB0_649 - 0x4c, 0x29, 0xe0, //0x00003c6b subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00003c6e addq %rdx, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c71 movq %rax, $-56(%rbp) - 0xe9, 0x22, 0xfe, 0xff, 0xff, //0x00003c75 jmp LBB0_620 - //0x00003c7a LBB0_650 - 0x4c, 0x29, 0xc0, //0x00003c7a subq %r8, %rax - 0x48, 0x01, 0xc8, //0x00003c7d addq %rcx, %rax - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003c80 jmp LBB0_653 - //0x00003c85 LBB0_651 - 0x4c, 0x29, 0xe0, //0x00003c85 subq %r12, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c88 movq %rax, $-56(%rbp) - 0xe9, 0x0b, 0xfe, 0xff, 0xff, //0x00003c8c jmp LBB0_620 - //0x00003c91 LBB0_652 - 0x4c, 0x29, 0xc0, //0x00003c91 subq %r8, %rax - //0x00003c94 LBB0_653 - 0x48, 0x89, 0xc2, //0x00003c94 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c97 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003c9e movq %rdx, (%r14) - 0xe9, 0xa1, 0xfd, 0xff, 0xff, //0x00003ca1 jmp LBB0_638 - //0x00003ca6 LBB0_654 - 0x48, 0x01, 0xc8, //0x00003ca6 addq %rcx, %rax - 0x48, 0x89, 0xc2, //0x00003ca9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003cac movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003cb3 movq %rdx, (%r14) - 0xe9, 0x8c, 0xfd, 0xff, 0xff, //0x00003cb6 jmp LBB0_638 - //0x00003cbb LBB0_655 - 0x4c, 0x29, 0xe0, //0x00003cbb subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00003cbe addq %rcx, %rax - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cc1 jmp LBB0_657 - //0x00003cc6 LBB0_656 - 0x4c, 0x29, 0xe0, //0x00003cc6 subq %r12, %rax - //0x00003cc9 LBB0_657 - 0x48, 0x89, 0xc2, //0x00003cc9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ccc movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003cd3 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x16, //0x00003cd7 movq %rdx, (%r14) - 0xe9, 0x68, 0xfd, 0xff, 0xff, //0x00003cda jmp LBB0_638 - 0x90, //0x00003cdf .p2align 2, 0x90 + 0x49, 0x89, 0x16, //0x00003c26 movq %rdx, (%r14) + 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003c29 jmp LBB0_650 + //0x00003c2e LBB0_647 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003c2e movq $-1, %rbx + //0x00003c35 LBB0_648 + 0x48, 0xf7, 0xd3, //0x00003c35 notq %rbx + 0x48, 0x01, 0xd8, //0x00003c38 addq %rbx, %rax + 0x48, 0x8b, 0x4d, 0xd0, //0x00003c3b movq $-48(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00003c3f movq %rax, (%rcx) + 0xe9, 0x61, 0xfe, 0xff, 0xff, //0x00003c42 jmp LBB0_649 + //0x00003c47 LBB0_443 + 0x48, 0x83, 0xc3, 0xff, //0x00003c47 addq $-1, %rbx + 0x48, 0x89, 0xd8, //0x00003c4b movq %rbx, %rax + 0xe9, 0x5c, 0xfe, 0xff, 0xff, //0x00003c4e jmp LBB0_650 + //0x00003c53 LBB0_653 + 0x48, 0x0f, 0xbc, 0xd6, //0x00003c53 bsfq %rsi, %rdx + //0x00003c57 LBB0_654 + 0x48, 0x01, 0xc2, //0x00003c57 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c5a movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003c61 movq %rdx, (%r14) + 0xe9, 0x46, 0xfe, 0xff, 0xff, //0x00003c64 jmp LBB0_650 + //0x00003c69 LBB0_656 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c69 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c6d movq %rax, $-96(%rbp) + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x00003c71 jmp LBB0_624 + //0x00003c76 LBB0_657 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c76 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c7a movq %rax, $-96(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c7e movq $-48(%rbp), %r14 + 0xe9, 0xf4, 0xfd, 0xff, 0xff, //0x00003c82 jmp LBB0_624 + //0x00003c87 LBB0_187 + 0x48, 0x01, 0xc2, //0x00003c87 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c8a movq $-2, %rax + 0x48, 0x89, 0x55, 0xc8, //0x00003c91 movq %rdx, $-56(%rbp) + 0xe9, 0x75, 0xfe, 0xff, 0xff, //0x00003c95 jmp LBB0_634 + //0x00003c9a LBB0_508 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c9a movq $-48(%rbp), %r14 + 0xe9, 0xd8, 0xfd, 0xff, 0xff, //0x00003c9e jmp LBB0_624 + //0x00003ca3 LBB0_658 + 0x48, 0x8b, 0x45, 0xc0, //0x00003ca3 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003ca7 movq %rax, $-96(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003cab jmp LBB0_628 + //0x00003cb0 LBB0_660 + 0x48, 0x89, 0x55, 0xa0, //0x00003cb0 movq %rdx, $-96(%rbp) + 0xe9, 0x16, 0xfe, 0xff, 0xff, //0x00003cb4 jmp LBB0_628 + //0x00003cb9 LBB0_524 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003cb9 movq $-48(%rbp), %r14 + 0xe9, 0x0d, 0xfe, 0xff, 0xff, //0x00003cbd jmp LBB0_628 + //0x00003cc2 LBB0_662 + 0x48, 0x8b, 0x4d, 0xa8, //0x00003cc2 movq $-88(%rbp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003cc6 movq $8(%rcx), %rcx + 0x48, 0x8b, 0x55, 0xd0, //0x00003cca movq $-48(%rbp), %rdx + 0x48, 0x89, 0x0a, //0x00003cce movq %rcx, (%rdx) + 0xe9, 0xd9, 0xfd, 0xff, 0xff, //0x00003cd1 jmp LBB0_650 + //0x00003cd6 LBB0_663 + 0x4c, 0x29, 0xe0, //0x00003cd6 subq %r12, %rax + 0x48, 0x01, 0xd0, //0x00003cd9 addq %rdx, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cdc movq %rax, $-56(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003ce0 jmp LBB0_633 + //0x00003ce5 LBB0_664 + 0x4c, 0x29, 0xc0, //0x00003ce5 subq %r8, %rax + 0x48, 0x01, 0xc8, //0x00003ce8 addq %rcx, %rax + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003ceb jmp LBB0_667 + //0x00003cf0 LBB0_665 + 0x4c, 0x29, 0xe0, //0x00003cf0 subq %r12, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cf3 movq %rax, $-56(%rbp) + 0xe9, 0x08, 0xfe, 0xff, 0xff, //0x00003cf7 jmp LBB0_633 + //0x00003cfc LBB0_666 + 0x4c, 0x29, 0xc0, //0x00003cfc subq %r8, %rax + //0x00003cff LBB0_667 + 0x48, 0x89, 0xc2, //0x00003cff movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d02 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d09 movq %rdx, (%r14) + 0xe9, 0x9e, 0xfd, 0xff, 0xff, //0x00003d0c jmp LBB0_650 + //0x00003d11 LBB0_668 + 0x48, 0x01, 0xc8, //0x00003d11 addq %rcx, %rax + 0x48, 0x89, 0xc2, //0x00003d14 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d17 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d1e movq %rdx, (%r14) + 0xe9, 0x89, 0xfd, 0xff, 0xff, //0x00003d21 jmp LBB0_650 + //0x00003d26 LBB0_669 + 0x4c, 0x29, 0xe0, //0x00003d26 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00003d29 addq %rcx, %rax + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003d2c jmp LBB0_671 + //0x00003d31 LBB0_670 + 0x4c, 0x29, 0xe0, //0x00003d31 subq %r12, %rax + //0x00003d34 LBB0_671 + 0x48, 0x89, 0xc2, //0x00003d34 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d37 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003d3e movq $-48(%rbp), %r14 + 0x49, 0x89, 0x16, //0x00003d42 movq %rdx, (%r14) + 0xe9, 0x65, 0xfd, 0xff, 0xff, //0x00003d45 jmp LBB0_650 + 0x90, 0x90, //0x00003d4a .p2align 2, 0x90 // // .set L0_0_set_35, LBB0_35-LJTI0_0 // // .set L0_0_set_61, LBB0_61-LJTI0_0 // // .set L0_0_set_40, LBB0_40-LJTI0_0 // // .set L0_0_set_59, LBB0_59-LJTI0_0 // // .set L0_0_set_38, LBB0_38-LJTI0_0 // // .set L0_0_set_63, LBB0_63-LJTI0_0 - //0x00003ce0 LJTI0_0 - 0xd4, 0xc6, 0xff, 0xff, //0x00003ce0 .long L0_0_set_35 - 0xec, 0xc8, 0xff, 0xff, //0x00003ce4 .long L0_0_set_61 - 0x10, 0xc7, 0xff, 0xff, //0x00003ce8 .long L0_0_set_40 - 0xd0, 0xc8, 0xff, 0xff, //0x00003cec .long L0_0_set_59 - 0xeb, 0xc6, 0xff, 0xff, //0x00003cf0 .long L0_0_set_38 - 0x1c, 0xc9, 0xff, 0xff, //0x00003cf4 .long L0_0_set_63 - // // .set L0_1_set_638, LBB0_638-LJTI0_1 - // // .set L0_1_set_637, LBB0_637-LJTI0_1 - // // .set L0_1_set_232, LBB0_232-LJTI0_1 - // // .set L0_1_set_250, LBB0_250-LJTI0_1 + //0x00003d4c LJTI0_0 + 0x2c, 0xc6, 0xff, 0xff, //0x00003d4c .long L0_0_set_35 + 0x3c, 0xc8, 0xff, 0xff, //0x00003d50 .long L0_0_set_61 + 0x64, 0xc6, 0xff, 0xff, //0x00003d54 .long L0_0_set_40 + 0x24, 0xc8, 0xff, 0xff, //0x00003d58 .long L0_0_set_59 + 0x43, 0xc6, 0xff, 0xff, //0x00003d5c .long L0_0_set_38 + 0x68, 0xc8, 0xff, 0xff, //0x00003d60 .long L0_0_set_63 + // // .set L0_1_set_650, LBB0_650-LJTI0_1 + // // .set L0_1_set_649, LBB0_649-LJTI0_1 + // // .set L0_1_set_237, LBB0_237-LJTI0_1 + // // .set L0_1_set_255, LBB0_255-LJTI0_1 // // .set L0_1_set_80, LBB0_80-LJTI0_1 - // // .set L0_1_set_229, LBB0_229-LJTI0_1 - // // .set L0_1_set_225, LBB0_225-LJTI0_1 - // // .set L0_1_set_287, LBB0_287-LJTI0_1 - // // .set L0_1_set_296, LBB0_296-LJTI0_1 - // // .set L0_1_set_293, LBB0_293-LJTI0_1 - //0x00003cf8 LJTI0_1 - 0x4f, 0xfd, 0xff, 0xff, //0x00003cf8 .long L0_1_set_638 - 0x48, 0xfd, 0xff, 0xff, //0x00003cfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d60 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_637 - 0x19, 0xd6, 0xff, 0xff, //0x00003d80 .long L0_1_set_232 - 0x48, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_637 - 0xd2, 0xd7, 0xff, 0xff, //0x00003dac .long L0_1_set_250 - 0x48, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_637 - 0x51, 0xc9, 0xff, 0xff, //0x00003db8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dbc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dcc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003ddc .long L0_1_set_80 - 0x48, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dec .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_637 - 0xe9, 0xd5, 0xff, 0xff, //0x00003e64 .long L0_1_set_229 - 0x48, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_637 - 0xac, 0xd5, 0xff, 0xff, //0x00003e90 .long L0_1_set_225 - 0x48, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_637 - 0x20, 0xda, 0xff, 0xff, //0x00003eb0 .long L0_1_set_287 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_637 - 0x80, 0xda, 0xff, 0xff, //0x00003ec8 .long L0_1_set_296 - 0x48, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_637 - 0x50, 0xda, 0xff, 0xff, //0x00003ee4 .long L0_1_set_293 - // // .set L0_2_set_276, LBB0_276-LJTI0_2 - // // .set L0_2_set_412, LBB0_412-LJTI0_2 - // // .set L0_2_set_282, LBB0_282-LJTI0_2 - // // .set L0_2_set_285, LBB0_285-LJTI0_2 - //0x00003ee8 LJTI0_2 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ee8 .long L0_2_set_276 - 0xc0, 0xe6, 0xff, 0xff, //0x00003eec .long L0_2_set_412 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ef0 .long L0_2_set_276 - 0x01, 0xd8, 0xff, 0xff, //0x00003ef4 .long L0_2_set_282 - 0xc0, 0xe6, 0xff, 0xff, //0x00003ef8 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003efc .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f00 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f04 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f08 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f0c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f10 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f14 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f18 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f1c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f20 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f24 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f28 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f2c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f30 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f34 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f38 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f3c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f40 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f44 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f48 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f4c .long L0_2_set_412 - 0x1d, 0xd8, 0xff, 0xff, //0x00003f50 .long L0_2_set_285 - // // .set L0_3_set_113, LBB0_113-LJTI0_3 - // // .set L0_3_set_212, LBB0_212-LJTI0_3 + // // .set L0_1_set_292, LBB0_292-LJTI0_1 + // // .set L0_1_set_233, LBB0_233-LJTI0_1 + // // .set L0_1_set_295, LBB0_295-LJTI0_1 + // // .set L0_1_set_304, LBB0_304-LJTI0_1 + // // .set L0_1_set_301, LBB0_301-LJTI0_1 + //0x00003d64 LJTI0_1 + 0x4b, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_650 + 0x44, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dbc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dcc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ddc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_649 + 0x66, 0xd5, 0xff, 0xff, //0x00003dec .long L0_1_set_237 + 0x44, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_649 + 0x1a, 0xd7, 0xff, 0xff, //0x00003e18 .long L0_1_set_255 + 0x44, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_649 + 0x96, 0xc8, 0xff, 0xff, //0x00003e24 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e28 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e2c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e30 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e34 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e38 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e3c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e40 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e44 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e48 .long L0_1_set_80 + 0x44, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_649 + 0x74, 0xd9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_292 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_649 + 0x29, 0xd5, 0xff, 0xff, //0x00003efc .long L0_1_set_233 + 0x44, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_649 + 0xa4, 0xd9, 0xff, 0xff, //0x00003f1c .long L0_1_set_295 + 0x44, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_649 + 0x04, 0xda, 0xff, 0xff, //0x00003f34 .long L0_1_set_304 + 0x44, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_649 + 0xd4, 0xd9, 0xff, 0xff, //0x00003f50 .long L0_1_set_301 + // // .set L0_2_set_281, LBB0_281-LJTI0_2 + // // .set L0_2_set_427, LBB0_427-LJTI0_2 + // // .set L0_2_set_287, LBB0_287-LJTI0_2 + // // .set L0_2_set_290, LBB0_290-LJTI0_2 + //0x00003f54 LJTI0_2 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f54 .long L0_2_set_281 + 0x75, 0xe6, 0xff, 0xff, //0x00003f58 .long L0_2_set_427 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f5c .long L0_2_set_281 + 0x55, 0xd7, 0xff, 0xff, //0x00003f60 .long L0_2_set_287 + 0x75, 0xe6, 0xff, 0xff, //0x00003f64 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f68 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f6c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f70 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f74 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f78 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f7c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f80 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f84 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f88 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f8c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f90 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f94 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f98 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f9c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa8 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fac .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb8 .long L0_2_set_427 + 0x71, 0xd7, 0xff, 0xff, //0x00003fbc .long L0_2_set_290 + // // .set L0_3_set_106, LBB0_106-LJTI0_3 + // // .set L0_3_set_215, LBB0_215-LJTI0_3 + // // .set L0_3_set_112, LBB0_112-LJTI0_3 // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_107, LBB0_107-LJTI0_3 - //0x00003f54 LJTI0_3 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f54 .long L0_3_set_113 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f58 .long L0_3_set_212 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f5c .long L0_3_set_113 - 0x42, 0xc9, 0xff, 0xff, //0x00003f60 .long L0_3_set_115 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f64 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f68 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f6c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f70 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f74 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f78 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f7c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f80 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f84 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f88 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f8c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f90 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f94 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f98 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f9c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa8 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fac .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb8 .long L0_3_set_212 - 0xe4, 0xc8, 0xff, 0xff, //0x00003fbc .long L0_3_set_107 - //0x00003fc0 .p2align 2, 0x00 - //0x00003fc0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00003fc0 .long 2 + //0x00003fc0 LJTI0_3 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc0 .long L0_3_set_106 + 0x08, 0xd2, 0xff, 0xff, //0x00003fc4 .long L0_3_set_215 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc8 .long L0_3_set_106 + 0x82, 0xc8, 0xff, 0xff, //0x00003fcc .long L0_3_set_112 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fdc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fec .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ffc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004000 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004004 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004008 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000400c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004010 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004014 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004018 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000401c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004020 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004024 .long L0_3_set_215 + 0x9e, 0xc8, 0xff, 0xff, //0x00004028 .long L0_3_set_115 + //0x0000402c .p2align 2, 0x00 + //0x0000402c _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x0000402c .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_subr.go index ec3fb4302..dd2581ba8 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_object = 15328 + _size__skip_object = 15436 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x394e, 184}, - {0x394f, 48}, - {0x3951, 40}, - {0x3953, 32}, - {0x3955, 24}, - {0x3957, 16}, - {0x3958, 8}, - {0x3959, 0}, - {0x3be0, 184}, + {0x39b6, 184}, + {0x39b7, 48}, + {0x39b9, 40}, + {0x39bb, 32}, + {0x39bd, 24}, + {0x39bf, 16}, + {0x39c0, 8}, + {0x39c1, 0}, + {0x3c4c, 184}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_text_amd64.go index b01f98d55..ddaf84cee 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_object_text_amd64.go @@ -54,815 +54,818 @@ var _text_skip_object = []byte{ 0x48, 0x89, 0x7d, 0xa8, //0x0000011e movq %rdi, $-88(%rbp) 0x0f, 0x10, 0x05, 0xd7, 0xfe, 0xff, 0xff, //0x00000122 movups $-297(%rip), %xmm0 /* LCPI0_0+0(%rip) */ 0x0f, 0x11, 0x02, //0x00000129 movups %xmm0, (%rdx) - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, %rcx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000133 movabsq $4294977024, %r11 - 0xf3, 0x0f, 0x6f, 0x05, 0xcb, 0xfe, 0xff, 0xff, //0x0000013d movdqu $-309(%rip), %xmm0 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xd3, 0xfe, 0xff, 0xff, //0x00000145 movdqu $-301(%rip), %xmm1 /* LCPI0_2+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xda, 0xfe, 0xff, 0xff, //0x0000014d movdqu $-294(%rip), %xmm12 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000156 pcmpeqd %xmm10, %xmm10 - 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4c, 0xff, 0xff, 0xff, //0x0000015b movdqu $-180(%rip), %xmm15 /* LCPI0_11+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x23, 0xff, 0xff, 0xff, //0x00000164 movdqu $-221(%rip), %xmm9 /* LCPI0_9+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x7a, 0xff, 0xff, 0xff, //0x0000016d movdqu $-134(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x01, 0xff, 0xff, 0xff, //0x00000176 movdqu $-255(%rip), %xmm14 /* LCPI0_8+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0xe9, 0xfe, 0xff, 0xff, //0x0000017f movdqu $-279(%rip), %xmm2 /* LCPI0_7+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb0, 0xfe, 0xff, 0xff, //0x00000187 movdqu $-336(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb7, 0xfe, 0xff, 0xff, //0x00000190 movdqu $-329(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x48, 0x89, 0x75, 0xd0, //0x00000199 movq %rsi, $-48(%rbp) - 0x48, 0x89, 0x55, 0xb8, //0x0000019d movq %rdx, $-72(%rbp) - 0xe9, 0x7a, 0x00, 0x00, 0x00, //0x000001a1 jmp LBB0_6 - //0x000001a6 LBB0_613 - 0x66, 0x0f, 0xbc, 0xc2, //0x000001a6 bsfw %dx, %ax - 0x0f, 0xb7, 0xc0, //0x000001aa movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x000001ad subq %rcx, %rax - 0x49, 0x89, 0x06, //0x000001b0 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x000001b3 testq %rsi, %rsi - 0x0f, 0x8e, 0x9d, 0x38, 0x00, 0x00, //0x000001b6 jle LBB0_614 - 0x90, 0x90, 0x90, 0x90, //0x000001bc .p2align 4, 0x90 - //0x000001c0 LBB0_4 - 0x4d, 0x8b, 0x45, 0x00, //0x000001c0 movq (%r13), %r8 - 0x48, 0x8b, 0x75, 0x90, //0x000001c4 movq $-112(%rbp), %rsi - 0x48, 0x89, 0xf1, //0x000001c8 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x000001cb movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x000001ce testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000001d1 jne LBB0_6 - 0xe9, 0x6b, 0x38, 0x00, 0x00, //0x000001d7 jmp LBB0_638 - //0x000001dc LBB0_1 - 0x49, 0xf7, 0xdb, //0x000001dc negq %r11 - 0x4d, 0x89, 0xdd, //0x000001df movq %r11, %r13 - //0x000001e2 LBB0_2 - 0x4d, 0x85, 0xed, //0x000001e2 testq %r13, %r13 - 0x0f, 0x88, 0x47, 0x38, 0x00, 0x00, //0x000001e5 js LBB0_612 - //0x000001eb LBB0_3 - 0x49, 0x01, 0xc5, //0x000001eb addq %rax, %r13 - 0x4c, 0x8b, 0x75, 0xd0, //0x000001ee movq $-48(%rbp), %r14 - 0x4d, 0x89, 0x2e, //0x000001f2 movq %r13, (%r14) - 0x48, 0x85, 0xc0, //0x000001f5 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x000001f8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001fc movabsq $4294977024, %r11 - 0x0f, 0x89, 0xb4, 0xff, 0xff, 0xff, //0x00000206 jns LBB0_4 - 0xe9, 0x36, 0x38, 0x00, 0x00, //0x0000020c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000211 .p2align 4, 0x90 - //0x00000220 LBB0_6 - 0x48, 0x8b, 0x45, 0xa8, //0x00000220 movq $-88(%rbp), %rax - 0x4c, 0x8b, 0x20, //0x00000224 movq (%rax), %r12 - 0x48, 0x8b, 0x40, 0x08, //0x00000227 movq $8(%rax), %rax - 0x49, 0x8b, 0x16, //0x0000022b movq (%r14), %rdx - 0x48, 0x39, 0xc2, //0x0000022e cmpq %rax, %rdx - 0x0f, 0x83, 0x39, 0x00, 0x00, 0x00, //0x00000231 jae LBB0_11 - 0x41, 0x8a, 0x1c, 0x14, //0x00000237 movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x0000023b cmpb $13, %bl - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x0000023e je LBB0_11 - 0x80, 0xfb, 0x20, //0x00000244 cmpb $32, %bl - 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x00000247 je LBB0_11 - 0x80, 0xc3, 0xf7, //0x0000024d addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000250 cmpb $1, %bl - 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000253 jbe LBB0_11 - 0x48, 0x89, 0xd6, //0x00000259 movq %rdx, %rsi - 0xe9, 0x07, 0x01, 0x00, 0x00, //0x0000025c jmp LBB0_32 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000261 .p2align 4, 0x90 - //0x00000270 LBB0_11 - 0x48, 0x8d, 0x72, 0x01, //0x00000270 leaq $1(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x00000274 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000277 jae LBB0_15 - 0x41, 0x8a, 0x1c, 0x34, //0x0000027d movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x00000281 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000284 je LBB0_15 - 0x80, 0xfb, 0x20, //0x0000028a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000028d je LBB0_15 - 0x80, 0xc3, 0xf7, //0x00000293 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000296 cmpb $1, %bl - 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000299 ja LBB0_32 - 0x90, //0x0000029f .p2align 4, 0x90 - //0x000002a0 LBB0_15 - 0x48, 0x8d, 0x72, 0x02, //0x000002a0 leaq $2(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002a4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002a7 jae LBB0_19 - 0x41, 0x8a, 0x1c, 0x34, //0x000002ad movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002b1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002b4 je LBB0_19 - 0x80, 0xfb, 0x20, //0x000002ba cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002bd je LBB0_19 - 0x80, 0xc3, 0xf7, //0x000002c3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002c6 cmpb $1, %bl - 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x000002c9 ja LBB0_32 - 0x90, //0x000002cf .p2align 4, 0x90 - //0x000002d0 LBB0_19 - 0x48, 0x8d, 0x72, 0x03, //0x000002d0 leaq $3(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002d4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002d7 jae LBB0_23 - 0x41, 0x8a, 0x1c, 0x34, //0x000002dd movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002e1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002e4 je LBB0_23 - 0x80, 0xfb, 0x20, //0x000002ea cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ed je LBB0_23 - 0x80, 0xc3, 0xf7, //0x000002f3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002f6 cmpb $1, %bl - 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002f9 ja LBB0_32 - 0x90, //0x000002ff .p2align 4, 0x90 - //0x00000300 LBB0_23 - 0x48, 0x83, 0xc2, 0x04, //0x00000300 addq $4, %rdx - 0x48, 0x39, 0xd0, //0x00000304 cmpq %rdx, %rax - 0x0f, 0x86, 0xd0, 0x36, 0x00, 0x00, //0x00000307 jbe LBB0_603 - 0x48, 0x39, 0xd0, //0x0000030d cmpq %rdx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000310 je LBB0_29 - 0x49, 0x8d, 0x34, 0x04, //0x00000316 leaq (%r12,%rax), %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000031a .p2align 4, 0x90 - //0x00000320 LBB0_26 - 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x00000320 movsbl (%r12,%rdx), %edi - 0x83, 0xff, 0x20, //0x00000325 cmpl $32, %edi - 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x00000328 ja LBB0_31 - 0x49, 0x0f, 0xa3, 0xfb, //0x0000032e btq %rdi, %r11 - 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x00000332 jae LBB0_31 - 0x48, 0x83, 0xc2, 0x01, //0x00000338 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x0000033c cmpq %rdx, %rax - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000033f jne LBB0_26 - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000345 jmp LBB0_30 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000034a .p2align 4, 0x90 - //0x00000350 LBB0_29 - 0x4c, 0x01, 0xe2, //0x00000350 addq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00000353 movq %rdx, %rsi - //0x00000356 LBB0_30 - 0x4c, 0x29, 0xe6, //0x00000356 subq %r12, %rsi - 0x48, 0x89, 0xf2, //0x00000359 movq %rsi, %rdx - //0x0000035c LBB0_31 - 0x48, 0x89, 0xd6, //0x0000035c movq %rdx, %rsi - 0x48, 0x39, 0xc2, //0x0000035f cmpq %rax, %rdx - 0x0f, 0x83, 0x78, 0x36, 0x00, 0x00, //0x00000362 jae LBB0_604 - //0x00000368 LBB0_32 - 0x48, 0x8d, 0x46, 0x01, //0x00000368 leaq $1(%rsi), %rax - 0x49, 0x89, 0x06, //0x0000036c movq %rax, (%r14) - 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x0000036f movsbl (%r12,%rsi), %edi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000374 movq $-1, %rax - 0x85, 0xff, //0x0000037b testl %edi, %edi - 0x0f, 0x84, 0xc4, 0x36, 0x00, 0x00, //0x0000037d je LBB0_638 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000383 movq (%r13), %r9 - 0x4d, 0x8d, 0x41, 0xff, //0x00000387 leaq $-1(%r9), %r8 - 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000038b movl (%r13,%r9,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x00000390 cmpq $-1, %rcx - 0x48, 0x0f, 0x45, 0xf1, //0x00000394 cmovneq %rcx, %rsi - 0x83, 0xc3, 0xff, //0x00000398 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x0000039b cmpl $5, %ebx - 0x0f, 0x87, 0x82, 0x02, 0x00, 0x00, //0x0000039e ja LBB0_78 - 0x48, 0x8d, 0x15, 0x35, 0x39, 0x00, 0x00, //0x000003a4 leaq $14645(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000003ab movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000003af addq %rdx, %rcx - 0xff, 0xe1, //0x000003b2 jmpq *%rcx - //0x000003b4 LBB0_35 - 0x83, 0xff, 0x2c, //0x000003b4 cmpl $44, %edi - 0x0f, 0x84, 0xec, 0x04, 0x00, 0x00, //0x000003b7 je LBB0_117 - 0x83, 0xff, 0x5d, //0x000003bd cmpl $93, %edi - 0x0f, 0x84, 0x48, 0x02, 0x00, 0x00, //0x000003c0 je LBB0_37 - 0xe9, 0x75, 0x36, 0x00, 0x00, //0x000003c6 jmp LBB0_637 - //0x000003cb LBB0_38 - 0x40, 0x80, 0xff, 0x5d, //0x000003cb cmpb $93, %dil - 0x0f, 0x84, 0x39, 0x02, 0x00, 0x00, //0x000003cf je LBB0_37 - 0x48, 0x89, 0x75, 0x90, //0x000003d5 movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000003d9 movq $1, (%r13,%r9,8) - 0x83, 0xff, 0x7b, //0x000003e2 cmpl $123, %edi - 0x0f, 0x86, 0x4c, 0x02, 0x00, 0x00, //0x000003e5 jbe LBB0_79 - 0xe9, 0x50, 0x36, 0x00, 0x00, //0x000003eb jmp LBB0_637 - //0x000003f0 LBB0_40 - 0x40, 0x80, 0xff, 0x22, //0x000003f0 cmpb $34, %dil - 0x0f, 0x85, 0x46, 0x36, 0x00, 0x00, //0x000003f4 jne LBB0_637 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003fa movq $4, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x00000403 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00000407 testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x0000040a movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x7c, 0x06, 0x00, 0x00, //0x0000040e jne LBB0_125 - 0x49, 0x8b, 0x16, //0x00000414 movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00000417 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x0000041b movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x0000041f testb $32, %cl - 0x48, 0x89, 0x45, 0xa0, //0x00000422 movq %rax, $-96(%rbp) - 0x48, 0x89, 0x55, 0xb0, //0x00000426 movq %rdx, $-80(%rbp) - 0x0f, 0x85, 0x5e, 0x09, 0x00, 0x00, //0x0000042a jne LBB0_157 - 0x49, 0x89, 0xc1, //0x00000430 movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00000433 subq %rdx, %r9 - 0x0f, 0x84, 0xc2, 0x37, 0x00, 0x00, //0x00000436 je LBB0_642 - 0x49, 0x83, 0xf9, 0x40, //0x0000043c cmpq $64, %r9 - 0x0f, 0x82, 0x4a, 0x2a, 0x00, 0x00, //0x00000440 jb LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00000446 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x0000044a movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000044d notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000450 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000458 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000045b .p2align 4, 0x90 - //0x00000460 LBB0_46 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000460 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000466 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000046d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000474 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000047b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000047f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000483 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000488 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000048c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000490 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000494 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000498 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000049c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000004a0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000004a4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000004a8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000004ac pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000004b0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000004b5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000004b9 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x000004bd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000004c1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000004c5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000004c9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000004ce shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000004d2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000004d6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000004d9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000004dd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000004e0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000004e3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000004e7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000004eb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000004ee shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000004f2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000004f5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004f8 jne LBB0_55 - 0x4d, 0x85, 0xc0, //0x000004fe testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000501 jne LBB0_57 - 0x45, 0x31, 0xc0, //0x00000507 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000050a testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000050d jne LBB0_58 - //0x00000513 LBB0_49 - 0x49, 0x83, 0xc1, 0xc0, //0x00000513 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00000517 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x0000051b addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x0000051f cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000523 ja LBB0_46 - 0xe9, 0xce, 0x21, 0x00, 0x00, //0x00000529 jmp LBB0_50 - //0x0000052e LBB0_55 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000052e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000533 jne LBB0_57 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000539 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x0000053d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000540 movq %rcx, $-56(%rbp) - //0x00000544 LBB0_57 - 0x4c, 0x89, 0xc1, //0x00000544 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000547 notq %rcx - 0x4c, 0x21, 0xd9, //0x0000054a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000054d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000551 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000554 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000557 notq %rsi - 0x4c, 0x21, 0xde, //0x0000055a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000055d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000567 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x0000056a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x0000056d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000570 setb %r8b - 0x48, 0x01, 0xf6, //0x00000574 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000577 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000581 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000584 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000587 notq %rsi - 0x49, 0x21, 0xf2, //0x0000058a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x0000058d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000590 je LBB0_49 - //0x00000596 LBB0_58 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000596 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x0000059a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000059d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000005a1 movabsq $4294977024, %r11 - 0xe9, 0xd6, 0x0c, 0x00, 0x00, //0x000005ab jmp LBB0_223 - //0x000005b0 LBB0_59 - 0x40, 0x80, 0xff, 0x3a, //0x000005b0 cmpb $58, %dil - 0x0f, 0x85, 0x86, 0x34, 0x00, 0x00, //0x000005b4 jne LBB0_637 - 0x48, 0x89, 0x75, 0x90, //0x000005ba movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005be movq $0, (%r13,%r9,8) - 0xe9, 0xf4, 0xfb, 0xff, 0xff, //0x000005c7 jmp LBB0_4 - //0x000005cc LBB0_61 - 0x83, 0xff, 0x2c, //0x000005cc cmpl $44, %edi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000005cf jne LBB0_62 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000005d5 cmpq $4095, %r9 - 0x0f, 0x8f, 0x0a, 0x34, 0x00, 0x00, //0x000005dc jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000005e2 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000005e6 leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000005ea movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005ee movq $3, $8(%r13,%r9,8) - 0xe9, 0xc4, 0xfb, 0xff, 0xff, //0x000005f7 jmp LBB0_4 - //0x000005fc LBB0_63 - 0x83, 0xff, 0x22, //0x000005fc cmpl $34, %edi - 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000005ff je LBB0_64 - //0x00000605 LBB0_62 - 0x83, 0xff, 0x7d, //0x00000605 cmpl $125, %edi - 0x0f, 0x85, 0x32, 0x34, 0x00, 0x00, //0x00000608 jne LBB0_637 - //0x0000060e LBB0_37 - 0x4d, 0x89, 0x45, 0x00, //0x0000060e movq %r8, (%r13) - 0x48, 0x89, 0xf1, //0x00000612 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x00000615 movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x00000618 testq %r8, %r8 - 0x0f, 0x85, 0xff, 0xfb, 0xff, 0xff, //0x0000061b jne LBB0_6 - 0xe9, 0x21, 0x34, 0x00, 0x00, //0x00000621 jmp LBB0_638 - //0x00000626 LBB0_78 - 0x48, 0x89, 0x75, 0x90, //0x00000626 movq %rsi, $-112(%rbp) - 0x4d, 0x89, 0x45, 0x00, //0x0000062a movq %r8, (%r13) - 0x83, 0xff, 0x7b, //0x0000062e cmpl $123, %edi - 0x0f, 0x87, 0x09, 0x34, 0x00, 0x00, //0x00000631 ja LBB0_637 - //0x00000637 LBB0_79 - 0x89, 0xf9, //0x00000637 movl %edi, %ecx - 0x48, 0x8d, 0x15, 0xb8, 0x36, 0x00, 0x00, //0x00000639 leaq $14008(%rip), %rdx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00000640 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00000644 addq %rdx, %rcx - 0xff, 0xe1, //0x00000647 jmpq *%rcx - //0x00000649 LBB0_80 - 0x48, 0x8b, 0x45, 0xa8, //0x00000649 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x0000064d movq $8(%rax), %rdi - 0x49, 0x8b, 0x36, //0x00000651 movq (%r14), %rsi - 0xf6, 0x45, 0x98, 0x40, //0x00000654 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x40, 0x05, 0x00, 0x00, //0x00000658 jne LBB0_135 - 0x48, 0x8d, 0x46, 0xff, //0x0000065e leaq $-1(%rsi), %rax - 0x48, 0x29, 0xc7, //0x00000662 subq %rax, %rdi - 0x0f, 0x84, 0xc0, 0x33, 0x00, 0x00, //0x00000665 je LBB0_611 - 0x4d, 0x8d, 0x34, 0x34, //0x0000066b leaq (%r12,%rsi), %r14 - 0x49, 0x83, 0xc6, 0xff, //0x0000066f addq $-1, %r14 - 0x41, 0x80, 0x3e, 0x30, //0x00000673 cmpb $48, (%r14) - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00000677 jne LBB0_86 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x0000067d movl $1, %r13d - 0x48, 0x83, 0xff, 0x01, //0x00000683 cmpq $1, %rdi - 0x0f, 0x84, 0x5e, 0xfb, 0xff, 0xff, //0x00000687 je LBB0_3 - 0x41, 0x8a, 0x0c, 0x34, //0x0000068d movb (%r12,%rsi), %cl - 0x80, 0xc1, 0xd2, //0x00000691 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000694 cmpb $55, %cl - 0x0f, 0x87, 0x4e, 0xfb, 0xff, 0xff, //0x00000697 ja LBB0_3 - 0x0f, 0xb6, 0xc9, //0x0000069d movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000006a0 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x000006aa btq %rcx, %rdx - 0x0f, 0x83, 0x37, 0xfb, 0xff, 0xff, //0x000006ae jae LBB0_3 - //0x000006b4 LBB0_86 - 0x48, 0x89, 0x75, 0xc0, //0x000006b4 movq %rsi, $-64(%rbp) - 0x48, 0x83, 0xff, 0x10, //0x000006b8 cmpq $16, %rdi - 0x0f, 0x82, 0x14, 0x27, 0x00, 0x00, //0x000006bc jb LBB0_472 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000006c2 movq $-1, %r9 - 0x45, 0x31, 0xed, //0x000006c9 xorl %r13d, %r13d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006cc movq $-1, %r15 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000006d3 movq $-1, %r8 - 0x49, 0x89, 0xfa, //0x000006da movq %rdi, %r10 - 0x90, 0x90, 0x90, //0x000006dd .p2align 4, 0x90 - //0x000006e0 LBB0_88 - 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x2e, //0x000006e0 movdqu (%r14,%r13), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006e6 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0xae, 0xf9, 0xff, 0xff, //0x000006ea pcmpgtb $-1618(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006f2 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000006f7 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x000006fb pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006ff movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0xb5, 0xf9, 0xff, 0xff, //0x00000703 pcmpeqb $-1611(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000070b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0xb9, 0xf9, 0xff, 0xff, //0x0000070f pcmpeqb $-1607(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00000717 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000071b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000071f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0xb4, 0xf9, 0xff, 0xff, //0x00000724 pcmpeqb $-1612(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000072c pcmpeqb %xmm11, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00000731 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0xeb, 0xe3, //0x00000735 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x00000739 por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x0000073d por %xmm4, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000741 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0xd7, 0xf6, //0x00000746 pmovmskb %xmm6, %esi - 0x66, 0x0f, 0xd7, 0xcd, //0x0000074a pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x0000074e notl %ecx - 0x0f, 0xbc, 0xc9, //0x00000750 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00000753 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000756 je LBB0_90 - 0xbb, 0xff, 0xff, 0xff, 0xff, //0x0000075c movl $-1, %ebx - 0xd3, 0xe3, //0x00000761 shll %cl, %ebx - 0xf7, 0xd3, //0x00000763 notl %ebx - 0x41, 0x21, 0xdb, //0x00000765 andl %ebx, %r11d - 0x21, 0xda, //0x00000768 andl %ebx, %edx - 0x21, 0xf3, //0x0000076a andl %esi, %ebx - 0x89, 0xde, //0x0000076c movl %ebx, %esi - //0x0000076e LBB0_90 - 0x41, 0x8d, 0x5b, 0xff, //0x0000076e leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000772 andl %r11d, %ebx - 0x0f, 0x85, 0x12, 0x1f, 0x00, 0x00, //0x00000775 jne LBB0_429 - 0x8d, 0x5a, 0xff, //0x0000077b leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x0000077e andl %edx, %ebx - 0x0f, 0x85, 0x07, 0x1f, 0x00, 0x00, //0x00000780 jne LBB0_429 - 0x8d, 0x5e, 0xff, //0x00000786 leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000789 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x1e, 0x00, 0x00, //0x0000078b jne LBB0_429 - 0x45, 0x85, 0xdb, //0x00000791 testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000794 je LBB0_96 - 0x41, 0x0f, 0xbc, 0xdb, //0x0000079a bsfl %r11d, %ebx - 0x49, 0x83, 0xf8, 0xff, //0x0000079e cmpq $-1, %r8 - 0x0f, 0x85, 0x75, 0x22, 0x00, 0x00, //0x000007a2 jne LBB0_436 - 0x4c, 0x01, 0xeb, //0x000007a8 addq %r13, %rbx - 0x49, 0x89, 0xd8, //0x000007ab movq %rbx, %r8 - //0x000007ae LBB0_96 - 0x85, 0xd2, //0x000007ae testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007b0 je LBB0_99 - 0x0f, 0xbc, 0xd2, //0x000007b6 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000007b9 cmpq $-1, %r15 - 0x0f, 0x85, 0xd1, 0x20, 0x00, 0x00, //0x000007bd jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007c3 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000007c6 movq %rdx, %r15 - //0x000007c9 LBB0_99 - 0x85, 0xf6, //0x000007c9 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007cb je LBB0_102 - 0x0f, 0xbc, 0xd6, //0x000007d1 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x000007d4 cmpq $-1, %r9 - 0x0f, 0x85, 0xb6, 0x20, 0x00, 0x00, //0x000007d8 jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007de addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x000007e1 movq %rdx, %r9 - //0x000007e4 LBB0_102 - 0x83, 0xf9, 0x10, //0x000007e4 cmpl $16, %ecx - 0x0f, 0x85, 0xbb, 0x07, 0x00, 0x00, //0x000007e7 jne LBB0_183 - 0x49, 0x83, 0xc2, 0xf0, //0x000007ed addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000007f1 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000007f5 cmpq $15, %r10 - 0x0f, 0x87, 0xe1, 0xfe, 0xff, 0xff, //0x000007f9 ja LBB0_88 - 0x4b, 0x8d, 0x0c, 0x2e, //0x000007ff leaq (%r14,%r13), %rcx - 0x49, 0x89, 0xcb, //0x00000803 movq %rcx, %r11 - 0x4c, 0x39, 0xef, //0x00000806 cmpq %r13, %rdi - 0x0f, 0x84, 0xa2, 0x07, 0x00, 0x00, //0x00000809 je LBB0_184 - //0x0000080f LBB0_105 - 0x4e, 0x8d, 0x1c, 0x11, //0x0000080f leaq (%rcx,%r10), %r11 - 0x48, 0x89, 0xca, //0x00000813 movq %rcx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00000816 subq $-64(%rbp), %rdx - 0x4c, 0x29, 0xe2, //0x0000081a subq %r12, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x0000081d addq $1, %rdx - 0x31, 0xff, //0x00000821 xorl %edi, %edi - 0x4c, 0x8d, 0x2d, 0x2a, 0x37, 0x00, 0x00, //0x00000823 leaq $14122(%rip), %r13 /* LJTI0_3+0(%rip) */ - 0xe9, 0x2e, 0x00, 0x00, 0x00, //0x0000082a jmp LBB0_110 - //0x0000082f LBB0_106 - 0x83, 0xfe, 0x65, //0x0000082f cmpl $101, %esi - 0x0f, 0x85, 0xbc, 0x09, 0x00, 0x00, //0x00000832 jne LBB0_212 - //0x00000838 LBB0_107 - 0x49, 0x83, 0xff, 0xff, //0x00000838 cmpq $-1, %r15 - 0x0f, 0x85, 0x76, 0x1e, 0x00, 0x00, //0x0000083c jne LBB0_433 - 0x4c, 0x8d, 0x3c, 0x3a, //0x00000842 leaq (%rdx,%rdi), %r15 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000846 .p2align 4, 0x90 - //0x00000850 LBB0_109 - 0x48, 0x83, 0xc7, 0x01, //0x00000850 addq $1, %rdi - 0x49, 0x39, 0xfa, //0x00000854 cmpq %rdi, %r10 - 0x0f, 0x84, 0x54, 0x07, 0x00, 0x00, //0x00000857 je LBB0_184 - //0x0000085d LBB0_110 - 0x0f, 0xbe, 0x34, 0x39, //0x0000085d movsbl (%rcx,%rdi), %esi - 0x8d, 0x5e, 0xd0, //0x00000861 leal $-48(%rsi), %ebx - 0x83, 0xfb, 0x0a, //0x00000864 cmpl $10, %ebx - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000867 jb LBB0_109 - 0x8d, 0x5e, 0xd5, //0x0000086d leal $-43(%rsi), %ebx - 0x83, 0xfb, 0x1a, //0x00000870 cmpl $26, %ebx - 0x0f, 0x87, 0xb6, 0xff, 0xff, 0xff, //0x00000873 ja LBB0_106 - 0x49, 0x63, 0x74, 0x9d, 0x00, //0x00000879 movslq (%r13,%rbx,4), %rsi - 0x4c, 0x01, 0xee, //0x0000087e addq %r13, %rsi - 0xff, 0xe6, //0x00000881 jmpq *%rsi - //0x00000883 LBB0_113 - 0x49, 0x83, 0xf9, 0xff, //0x00000883 cmpq $-1, %r9 - 0x0f, 0x85, 0x2b, 0x1e, 0x00, 0x00, //0x00000887 jne LBB0_433 - 0x4c, 0x8d, 0x0c, 0x3a, //0x0000088d leaq (%rdx,%rdi), %r9 - 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00000891 jmp LBB0_109 - //0x00000896 LBB0_115 - 0x49, 0x83, 0xf8, 0xff, //0x00000896 cmpq $-1, %r8 - 0x0f, 0x85, 0x18, 0x1e, 0x00, 0x00, //0x0000089a jne LBB0_433 - 0x4c, 0x8d, 0x04, 0x3a, //0x000008a0 leaq (%rdx,%rdi), %r8 - 0xe9, 0xa7, 0xff, 0xff, 0xff, //0x000008a4 jmp LBB0_109 - //0x000008a9 LBB0_117 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000008a9 cmpq $4095, %r9 - 0x0f, 0x8f, 0x36, 0x31, 0x00, 0x00, //0x000008b0 jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000008b6 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000008ba leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000008be movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x000008c2 movq $0, $8(%r13,%r9,8) - 0xe9, 0xf0, 0xf8, 0xff, 0xff, //0x000008cb jmp LBB0_4 - //0x000008d0 LBB0_64 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x000008d0 movq $2, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x000008d9 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x000008dd testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x000008e0 movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x9a, 0x03, 0x00, 0x00, //0x000008e4 jne LBB0_147 - 0x49, 0x8b, 0x16, //0x000008ea movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x000008ed movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x000008f1 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x000008f5 testb $32, %cl - 0x48, 0x89, 0xd1, //0x000008f8 movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x000008fb movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x000008ff movq %rax, $-96(%rbp) - 0x49, 0x89, 0xc1, //0x00000903 movq %rax, %r9 - 0x0f, 0x85, 0xba, 0x06, 0x00, 0x00, //0x00000906 jne LBB0_186 - 0x49, 0x29, 0xd1, //0x0000090c subq %rdx, %r9 - 0x0f, 0x84, 0x23, 0x33, 0x00, 0x00, //0x0000090f je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00000915 cmpq $64, %r9 - 0x0f, 0x82, 0x30, 0x26, 0x00, 0x00, //0x00000919 jb LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x0000091f movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00000923 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x00000926 notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000929 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000931 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000934 .p2align 4, 0x90 - //0x00000940 LBB0_69 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000940 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000946 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000094d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000954 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000095b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000095f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000963 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000968 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000096c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000970 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000974 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000978 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000097c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x00000980 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000984 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00000988 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x0000098c pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000990 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x00000995 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000999 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x0000099d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000009a1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000009a5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000009a9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000009ae shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000009b2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000009b6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000009b9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000009bd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000009c0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000009c3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000009c7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000009cb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000009ce shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000009d2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000009d5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000009d8 jne LBB0_121 - 0x4d, 0x85, 0xc0, //0x000009de testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000009e1 jne LBB0_123 - 0x45, 0x31, 0xc0, //0x000009e7 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x000009ea testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000009ed jne LBB0_124 - //0x000009f3 LBB0_72 - 0x49, 0x83, 0xc1, 0xc0, //0x000009f3 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x000009f7 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x000009fb addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x000009ff cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000a03 ja LBB0_69 - 0xe9, 0x8d, 0x1e, 0x00, 0x00, //0x00000a09 jmp LBB0_73 - //0x00000a0e LBB0_121 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000a0e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000a13 jne LBB0_123 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000a19 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00000a1d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000a20 movq %rcx, $-56(%rbp) - //0x00000a24 LBB0_123 - 0x4c, 0x89, 0xc1, //0x00000a24 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000a27 notq %rcx - 0x4c, 0x21, 0xd9, //0x00000a2a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000a2d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000a31 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000a34 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a37 notq %rsi - 0x4c, 0x21, 0xde, //0x00000a3a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a3d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000a47 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00000a4a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00000a4d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000a50 setb %r8b - 0x48, 0x01, 0xf6, //0x00000a54 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a57 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000a61 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000a64 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a67 notq %rsi - 0x49, 0x21, 0xf2, //0x00000a6a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x00000a6d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a70 je LBB0_72 - //0x00000a76 LBB0_124 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000a76 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x00000a7a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000a7d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a81 movabsq $4294977024, %r11 - 0xe9, 0x73, 0x0d, 0x00, 0x00, //0x00000a8b jmp LBB0_304 - //0x00000a90 LBB0_125 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000a90 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000a94 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000a98 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000a9b leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000a9f subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000aa2 cmpq $32, %r9 - 0x0f, 0x8c, 0xbc, 0x1b, 0x00, 0x00, //0x00000aa6 jl LBB0_134 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000aac movl $32, %r14d - 0x31, 0xd2, //0x00000ab2 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ab4 xorl %r11d, %r11d - 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x00000ab7 jmp LBB0_127 - 0x90, 0x90, 0x90, 0x90, //0x00000abc .p2align 4, 0x90 - //0x00000ac0 LBB0_130 - 0x45, 0x31, 0xdb, //0x00000ac0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000ac3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000ac6 jne LBB0_129 - //0x00000acc LBB0_131 - 0x48, 0x83, 0xc2, 0x20, //0x00000acc addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00000ad0 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00000ad4 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00000ad8 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00000adc cmpq $63, %rcx - 0x0f, 0x8e, 0x65, 0x1b, 0x00, 0x00, //0x00000ae0 jle LBB0_132 - //0x00000ae6 LBB0_127 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x12, //0x00000ae6 movdqu (%r10,%rdx), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x12, 0x10, //0x00000aec movdqu $16(%r10,%rdx), %xmm5 - 0x66, 0x0f, 0x6f, 0xf4, //0x00000af3 movdqa %xmm4, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000af7 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xf6, //0x00000afb pmovmskb %xmm6, %esi - 0x66, 0x0f, 0x6f, 0xf5, //0x00000aff movdqa %xmm5, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000b03 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00000b07 pmovmskb %xmm6, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000b0b shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000b0f orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xe1, //0x00000b12 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000b16 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x00000b1a pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000b1e pmovmskb %xmm5, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000b22 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000b26 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000b29 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00000b2c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000b2f je LBB0_130 - 0x44, 0x89, 0xd9, //0x00000b35 movl %r11d, %ecx - 0xf7, 0xd1, //0x00000b38 notl %ecx - 0x21, 0xf1, //0x00000b3a andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00000b3c leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00000b40 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000b43 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000b46 notl %ebx - 0x21, 0xf3, //0x00000b48 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000b4a andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00000b50 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000b53 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00000b55 setb %r11b - 0x01, 0xdb, //0x00000b59 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000b5b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000b61 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000b64 notl %ebx - 0x21, 0xdf, //0x00000b66 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000b68 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b6b je LBB0_131 - //0x00000b71 LBB0_129 - 0x0f, 0xbc, 0xc7, //0x00000b71 bsfl %edi, %eax - 0x4c, 0x01, 0xc0, //0x00000b74 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000b77 leaq (%rdx,%rax), %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00000b7b addq $1, %r10 - 0x4c, 0x8b, 0x75, 0xd0, //0x00000b7f movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000b83 movabsq $4294977024, %r11 - 0x4d, 0x89, 0x16, //0x00000b8d movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x00000b90 testq %r8, %r8 - 0x0f, 0x8f, 0x27, 0xf6, 0xff, 0xff, //0x00000b93 jg LBB0_4 - 0xe9, 0x63, 0x2e, 0x00, 0x00, //0x00000b99 jmp LBB0_608 - //0x00000b9e LBB0_135 - 0x48, 0x89, 0xf9, //0x00000b9e movq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00000ba1 subq %rsi, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x00000ba4 cmpq $16, %rcx - 0x0f, 0x82, 0x0d, 0x22, 0x00, 0x00, //0x00000ba8 jb LBB0_470 - 0x48, 0x89, 0xf1, //0x00000bae movq %rsi, %rcx - 0x48, 0xf7, 0xd9, //0x00000bb1 negq %rcx - 0x48, 0x89, 0xf0, //0x00000bb4 movq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bb7 .p2align 4, 0x90 - //0x00000bc0 LBB0_137 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000bc0 movdqu (%r12,%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00000bc6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000bca pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000bcf pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00000bd4 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00000bd8 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00000bdc pmovmskb %xmm3, %edx - 0x85, 0xd2, //0x00000be0 testl %edx, %edx - 0x0f, 0x85, 0xbe, 0xf5, 0xff, 0xff, //0x00000be2 jne LBB0_613 - 0x48, 0x83, 0xc0, 0x10, //0x00000be8 addq $16, %rax - 0x48, 0x8d, 0x14, 0x0f, //0x00000bec leaq (%rdi,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xf0, //0x00000bf0 addq $-16, %rdx - 0x48, 0x83, 0xc1, 0xf0, //0x00000bf4 addq $-16, %rcx - 0x48, 0x83, 0xfa, 0x0f, //0x00000bf8 cmpq $15, %rdx - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000bfc ja LBB0_137 - 0x4c, 0x89, 0xe0, //0x00000c02 movq %r12, %rax - 0x48, 0x29, 0xc8, //0x00000c05 subq %rcx, %rax - 0x48, 0x01, 0xcf, //0x00000c08 addq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x00000c0b movq %rdi, %rcx - 0x48, 0x85, 0xc9, //0x00000c0e testq %rcx, %rcx - 0x0f, 0x84, 0xb1, 0x21, 0x00, 0x00, //0x00000c11 je LBB0_471 - //0x00000c17 LBB0_140 - 0x48, 0x8d, 0x3c, 0x08, //0x00000c17 leaq (%rax,%rcx), %rdi - 0x31, 0xd2, //0x00000c1b xorl %edx, %edx - //0x00000c1d LBB0_141 - 0x0f, 0xb6, 0x1c, 0x10, //0x00000c1d movzbl (%rax,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000c21 cmpb $44, %bl - 0x0f, 0x84, 0x4c, 0x1a, 0x00, 0x00, //0x00000c24 je LBB0_428 - 0x80, 0xfb, 0x7d, //0x00000c2a cmpb $125, %bl - 0x0f, 0x84, 0x43, 0x1a, 0x00, 0x00, //0x00000c2d je LBB0_428 - 0x80, 0xfb, 0x5d, //0x00000c33 cmpb $93, %bl - 0x0f, 0x84, 0x3a, 0x1a, 0x00, 0x00, //0x00000c36 je LBB0_428 - 0x48, 0x83, 0xc2, 0x01, //0x00000c3c addq $1, %rdx - 0x48, 0x39, 0xd1, //0x00000c40 cmpq %rdx, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000c43 jne LBB0_141 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00000c49 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00000c4e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf8, //0x00000c52 movq %rdi, %rax - //0x00000c55 LBB0_146 - 0x4c, 0x29, 0xe0, //0x00000c55 subq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000c58 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000c5c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c60 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00000c6a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00000c6e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x06, //0x00000c73 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x00000c76 testq %rsi, %rsi - 0x0f, 0x8f, 0x41, 0xf5, 0xff, 0xff, //0x00000c79 jg LBB0_4 - 0xe9, 0xd5, 0x2d, 0x00, 0x00, //0x00000c7f jmp LBB0_614 - //0x00000c84 LBB0_147 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000c84 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000c88 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000c8c movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000c8f leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000c93 subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000c96 cmpq $32, %r9 - 0x0f, 0x8c, 0x4e, 0x1a, 0x00, 0x00, //0x00000c9a jl LBB0_156 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000ca0 movl $32, %r14d - 0x31, 0xd2, //0x00000ca6 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ca8 xorl %r11d, %r11d - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000cab jmp LBB0_149 - //0x00000cb0 .p2align 4, 0x90 - //0x00000cb0 LBB0_152 + 0x48, 0xc7, 0x45, 0x90, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, $-112(%rbp) + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000134 movabsq $4294977024, %r11 + 0xf3, 0x0f, 0x6f, 0x05, 0xca, 0xfe, 0xff, 0xff, //0x0000013e movdqu $-310(%rip), %xmm0 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xd2, 0xfe, 0xff, 0xff, //0x00000146 movdqu $-302(%rip), %xmm1 /* LCPI0_2+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xd9, 0xfe, 0xff, 0xff, //0x0000014e movdqu $-295(%rip), %xmm12 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000157 pcmpeqd %xmm10, %xmm10 + 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4b, 0xff, 0xff, 0xff, //0x0000015c movdqu $-181(%rip), %xmm15 /* LCPI0_11+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x22, 0xff, 0xff, 0xff, //0x00000165 movdqu $-222(%rip), %xmm9 /* LCPI0_9+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x79, 0xff, 0xff, 0xff, //0x0000016e movdqu $-135(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x00, 0xff, 0xff, 0xff, //0x00000177 movdqu $-256(%rip), %xmm14 /* LCPI0_8+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0xe8, 0xfe, 0xff, 0xff, //0x00000180 movdqu $-280(%rip), %xmm2 /* LCPI0_7+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xaf, 0xfe, 0xff, 0xff, //0x00000188 movdqu $-337(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb6, 0xfe, 0xff, 0xff, //0x00000191 movdqu $-330(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x48, 0x89, 0x75, 0xd0, //0x0000019a movq %rsi, $-48(%rbp) + 0x48, 0x89, 0x55, 0xb0, //0x0000019e movq %rdx, $-80(%rbp) + 0xe9, 0x3d, 0x00, 0x00, 0x00, //0x000001a2 jmp LBB0_6 + //0x000001a7 LBB0_1 + 0x0f, 0xbc, 0xc3, //0x000001a7 bsfl %ebx, %eax + 0x4c, 0x01, 0xc0, //0x000001aa addq %r8, %rax + 0x4c, 0x8d, 0x14, 0x06, //0x000001ad leaq (%rsi,%rax), %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000001b1 addq $1, %r10 + 0x4c, 0x8b, 0x75, 0xd0, //0x000001b5 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001b9 movabsq $4294977024, %r11 + //0x000001c3 LBB0_2 + 0x4d, 0x89, 0x16, //0x000001c3 movq %r10, (%r14) + //0x000001c6 LBB0_3 + 0x4d, 0x85, 0xc0, //0x000001c6 testq %r8, %r8 + 0x0f, 0x8e, 0x8d, 0x38, 0x00, 0x00, //0x000001c9 jle LBB0_622 + 0x90, //0x000001cf .p2align 4, 0x90 + //0x000001d0 LBB0_4 + 0x4d, 0x8b, 0x45, 0x00, //0x000001d0 movq (%r13), %r8 + 0x48, 0x8b, 0x55, 0x90, //0x000001d4 movq $-112(%rbp), %rdx + 0x48, 0x89, 0xd0, //0x000001d8 movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000001db testq %r8, %r8 + 0x0f, 0x84, 0xcb, 0x38, 0x00, 0x00, //0x000001de je LBB0_650 + //0x000001e4 LBB0_6 + 0x48, 0x8b, 0x4d, 0x90, //0x000001e4 movq $-112(%rbp), %rcx + 0x48, 0x8b, 0x45, 0xa8, //0x000001e8 movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x20, //0x000001ec movq (%rax), %r12 + 0x48, 0x8b, 0x40, 0x08, //0x000001ef movq $8(%rax), %rax + 0x49, 0x8b, 0x36, //0x000001f3 movq (%r14), %rsi + 0x48, 0x39, 0xc6, //0x000001f6 cmpq %rax, %rsi + 0x0f, 0x83, 0x31, 0x00, 0x00, 0x00, //0x000001f9 jae LBB0_11 + 0x41, 0x8a, 0x14, 0x34, //0x000001ff movb (%r12,%rsi), %dl + 0x80, 0xfa, 0x0d, //0x00000203 cmpb $13, %dl + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00000206 je LBB0_11 + 0x80, 0xfa, 0x20, //0x0000020c cmpb $32, %dl + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x0000020f je LBB0_11 + 0x80, 0xc2, 0xf7, //0x00000215 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000218 cmpb $1, %dl + 0x0f, 0x86, 0x0f, 0x00, 0x00, 0x00, //0x0000021b jbe LBB0_11 + 0x48, 0x89, 0xf2, //0x00000221 movq %rsi, %rdx + 0xe9, 0xff, 0x00, 0x00, 0x00, //0x00000224 jmp LBB0_32 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000229 .p2align 4, 0x90 + //0x00000230 LBB0_11 + 0x48, 0x8d, 0x56, 0x01, //0x00000230 leaq $1(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000234 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000237 jae LBB0_15 + 0x41, 0x8a, 0x1c, 0x14, //0x0000023d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000241 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000244 je LBB0_15 + 0x80, 0xfb, 0x20, //0x0000024a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000024d je LBB0_15 + 0x80, 0xc3, 0xf7, //0x00000253 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000256 cmpb $1, %bl + 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000259 ja LBB0_32 + 0x90, //0x0000025f .p2align 4, 0x90 + //0x00000260 LBB0_15 + 0x48, 0x8d, 0x56, 0x02, //0x00000260 leaq $2(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000264 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000267 jae LBB0_19 + 0x41, 0x8a, 0x1c, 0x14, //0x0000026d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000271 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000274 je LBB0_19 + 0x80, 0xfb, 0x20, //0x0000027a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000027d je LBB0_19 + 0x80, 0xc3, 0xf7, //0x00000283 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000286 cmpb $1, %bl + 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x00000289 ja LBB0_32 + 0x90, //0x0000028f .p2align 4, 0x90 + //0x00000290 LBB0_19 + 0x48, 0x8d, 0x56, 0x03, //0x00000290 leaq $3(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000294 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000297 jae LBB0_23 + 0x41, 0x8a, 0x1c, 0x14, //0x0000029d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000002a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002a4 je LBB0_23 + 0x80, 0xfb, 0x20, //0x000002aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ad je LBB0_23 + 0x80, 0xc3, 0xf7, //0x000002b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000002b6 cmpb $1, %bl + 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002b9 ja LBB0_32 + 0x90, //0x000002bf .p2align 4, 0x90 + //0x000002c0 LBB0_23 + 0x48, 0x83, 0xc6, 0x04, //0x000002c0 addq $4, %rsi + 0x48, 0x39, 0xf0, //0x000002c4 cmpq %rsi, %rax + 0x0f, 0x86, 0x74, 0x37, 0x00, 0x00, //0x000002c7 jbe LBB0_619 + 0x48, 0x39, 0xf0, //0x000002cd cmpq %rsi, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000002d0 je LBB0_29 + 0x49, 0x8d, 0x14, 0x04, //0x000002d6 leaq (%r12,%rax), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000002da .p2align 4, 0x90 + //0x000002e0 LBB0_26 + 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x000002e0 movsbl (%r12,%rsi), %edi + 0x83, 0xff, 0x20, //0x000002e5 cmpl $32, %edi + 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x000002e8 ja LBB0_31 + 0x49, 0x0f, 0xa3, 0xfb, //0x000002ee btq %rdi, %r11 + 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x000002f2 jae LBB0_31 + 0x48, 0x83, 0xc6, 0x01, //0x000002f8 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x000002fc cmpq %rsi, %rax + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002ff jne LBB0_26 + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000305 jmp LBB0_30 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000030a .p2align 4, 0x90 + //0x00000310 LBB0_29 + 0x4c, 0x01, 0xe6, //0x00000310 addq %r12, %rsi + 0x48, 0x89, 0xf2, //0x00000313 movq %rsi, %rdx + //0x00000316 LBB0_30 + 0x4c, 0x29, 0xe2, //0x00000316 subq %r12, %rdx + 0x48, 0x89, 0xd6, //0x00000319 movq %rdx, %rsi + //0x0000031c LBB0_31 + 0x48, 0x89, 0xf2, //0x0000031c movq %rsi, %rdx + 0x48, 0x39, 0xc6, //0x0000031f cmpq %rax, %rsi + 0x0f, 0x83, 0x1c, 0x37, 0x00, 0x00, //0x00000322 jae LBB0_620 + //0x00000328 LBB0_32 + 0x48, 0x8d, 0x42, 0x01, //0x00000328 leaq $1(%rdx), %rax + 0x49, 0x89, 0x06, //0x0000032c movq %rax, (%r14) + 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x0000032f movsbl (%r12,%rdx), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000334 movq $-1, %rax + 0x85, 0xff, //0x0000033b testl %edi, %edi + 0x0f, 0x84, 0x6c, 0x37, 0x00, 0x00, //0x0000033d je LBB0_650 + 0x4d, 0x8b, 0x4d, 0x00, //0x00000343 movq (%r13), %r9 + 0x4d, 0x8d, 0x41, 0xff, //0x00000347 leaq $-1(%r9), %r8 + 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000034b movl (%r13,%r9,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x00000350 cmpq $-1, %rcx + 0x48, 0x0f, 0x45, 0xd1, //0x00000354 cmovneq %rcx, %rdx + 0x83, 0xc3, 0xff, //0x00000358 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x0000035b cmpl $5, %ebx + 0x48, 0x89, 0x55, 0x90, //0x0000035e movq %rdx, $-112(%rbp) + 0x0f, 0x87, 0x73, 0x02, 0x00, 0x00, //0x00000362 ja LBB0_78 + 0x48, 0x8d, 0x35, 0xdd, 0x39, 0x00, 0x00, //0x00000368 leaq $14813(%rip), %rsi /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9e, //0x0000036f movslq (%rsi,%rbx,4), %rcx + 0x48, 0x01, 0xf1, //0x00000373 addq %rsi, %rcx + 0xff, 0xe1, //0x00000376 jmpq *%rcx + //0x00000378 LBB0_35 + 0x83, 0xff, 0x2c, //0x00000378 cmpl $44, %edi + 0x0f, 0x84, 0xf0, 0x04, 0x00, 0x00, //0x0000037b je LBB0_117 + 0x83, 0xff, 0x5d, //0x00000381 cmpl $93, %edi + 0x0f, 0x84, 0x3c, 0x02, 0x00, 0x00, //0x00000384 je LBB0_37 + 0xe9, 0x19, 0x37, 0x00, 0x00, //0x0000038a jmp LBB0_649 + //0x0000038f LBB0_38 + 0x40, 0x80, 0xff, 0x5d, //0x0000038f cmpb $93, %dil + 0x0f, 0x84, 0x2d, 0x02, 0x00, 0x00, //0x00000393 je LBB0_37 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000399 movq $1, (%r13,%r9,8) + 0x83, 0xff, 0x7b, //0x000003a2 cmpl $123, %edi + 0x0f, 0x86, 0x3d, 0x02, 0x00, 0x00, //0x000003a5 jbe LBB0_79 + 0xe9, 0xf8, 0x36, 0x00, 0x00, //0x000003ab jmp LBB0_649 + //0x000003b0 LBB0_40 + 0x40, 0x80, 0xff, 0x22, //0x000003b0 cmpb $34, %dil + 0x0f, 0x85, 0xee, 0x36, 0x00, 0x00, //0x000003b4 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003ba movq $4, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x000003c3 movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000003c7 testb $64, %cl + 0x0f, 0x85, 0x74, 0x06, 0x00, 0x00, //0x000003ca jne LBB0_125 + 0x49, 0x8b, 0x16, //0x000003d0 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000003d3 movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000003d7 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000003db testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000003de movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000003e2 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xa2, 0x09, 0x00, 0x00, //0x000003e6 jne LBB0_162 + 0x49, 0x89, 0xc1, //0x000003ec movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000003ef subq %rdx, %r9 + 0x0f, 0x84, 0x71, 0x38, 0x00, 0x00, //0x000003f2 je LBB0_656 + 0x49, 0x83, 0xf9, 0x40, //0x000003f8 cmpq $64, %r9 + 0x0f, 0x82, 0xd5, 0x2a, 0x00, 0x00, //0x000003fc jb LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00000402 movq $-64(%rbp), %rax + 0x49, 0x89, 0xc6, //0x00000406 movq %rax, %r14 + 0x49, 0xf7, 0xd6, //0x00000409 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000040c movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00000414 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000417 .p2align 4, 0x90 + //0x00000420 LBB0_46 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000420 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000426 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000042d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000434 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000043b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000043f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000443 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000448 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000044c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000450 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000454 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000458 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000045c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000460 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000464 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000468 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000046c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000470 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000475 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000479 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000047d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000481 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000485 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000489 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000048e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000492 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000496 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000499 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000049d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x000004a0 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000004a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000004a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000004ab orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000004ae shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000004b2 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x000004b5 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004b8 jne LBB0_55 + 0x4d, 0x85, 0xc0, //0x000004be testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000004c1 jne LBB0_57 + 0x45, 0x31, 0xc0, //0x000004c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000004ca testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000004cd jne LBB0_58 + //0x000004d3 LBB0_49 + 0x49, 0x83, 0xc1, 0xc0, //0x000004d3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000004d7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000004db addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000004df cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000004e3 ja LBB0_46 + 0xe9, 0x56, 0x22, 0x00, 0x00, //0x000004e9 jmp LBB0_50 + //0x000004ee LBB0_55 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000004ee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000004f3 jne LBB0_57 + 0x49, 0x0f, 0xbc, 0xcb, //0x000004f9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000004fd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000500 movq %rcx, $-56(%rbp) + //0x00000504 LBB0_57 + 0x4c, 0x89, 0xc1, //0x00000504 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000507 notq %rcx + 0x4c, 0x21, 0xd9, //0x0000050a andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000050d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00000511 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00000514 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000517 notq %rsi + 0x4c, 0x21, 0xde, //0x0000051a andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000051d movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00000527 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x0000052a xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x0000052d addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000530 setb %r8b + 0x48, 0x01, 0xf6, //0x00000534 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000537 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000541 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000544 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000547 notq %rsi + 0x49, 0x21, 0xf2, //0x0000054a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x0000054d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000550 je LBB0_49 + //0x00000556 LBB0_58 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000556 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000055a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000055d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000561 movabsq $4294977024, %r11 + 0xe9, 0xff, 0x0c, 0x00, 0x00, //0x0000056b jmp LBB0_229 + //0x00000570 LBB0_59 + 0x40, 0x80, 0xff, 0x3a, //0x00000570 cmpb $58, %dil + 0x0f, 0x85, 0x2e, 0x35, 0x00, 0x00, //0x00000574 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0000057a movq $0, (%r13,%r9,8) + 0xe9, 0x48, 0xfc, 0xff, 0xff, //0x00000583 jmp LBB0_4 + //0x00000588 LBB0_61 + 0x83, 0xff, 0x2c, //0x00000588 cmpl $44, %edi + 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000058b jne LBB0_62 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000591 cmpq $4095, %r9 + 0x0f, 0x8f, 0xb2, 0x34, 0x00, 0x00, //0x00000598 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000059e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x000005a2 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005a6 movq $3, $8(%r13,%r9,8) + 0xe9, 0x1c, 0xfc, 0xff, 0xff, //0x000005af jmp LBB0_4 + //0x000005b4 LBB0_63 + 0x83, 0xff, 0x22, //0x000005b4 cmpl $34, %edi + 0x0f, 0x84, 0xd7, 0x02, 0x00, 0x00, //0x000005b7 je LBB0_64 + //0x000005bd LBB0_62 + 0x83, 0xff, 0x7d, //0x000005bd cmpl $125, %edi + 0x0f, 0x85, 0xe2, 0x34, 0x00, 0x00, //0x000005c0 jne LBB0_649 + //0x000005c6 LBB0_37 + 0x4d, 0x89, 0x45, 0x00, //0x000005c6 movq %r8, (%r13) + 0x48, 0x89, 0xd0, //0x000005ca movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000005cd testq %r8, %r8 + 0x0f, 0x85, 0x0e, 0xfc, 0xff, 0xff, //0x000005d0 jne LBB0_6 + 0xe9, 0xd4, 0x34, 0x00, 0x00, //0x000005d6 jmp LBB0_650 + //0x000005db LBB0_78 + 0x4d, 0x89, 0x45, 0x00, //0x000005db movq %r8, (%r13) + 0x83, 0xff, 0x7b, //0x000005df cmpl $123, %edi + 0x0f, 0x87, 0xc0, 0x34, 0x00, 0x00, //0x000005e2 ja LBB0_649 + //0x000005e8 LBB0_79 + 0x89, 0xf9, //0x000005e8 movl %edi, %ecx + 0x48, 0x8d, 0x15, 0x73, 0x37, 0x00, 0x00, //0x000005ea leaq $14195(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000005f1 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000005f5 addq %rdx, %rcx + 0xff, 0xe1, //0x000005f8 jmpq *%rcx + //0x000005fa LBB0_80 + 0x4c, 0x89, 0xf0, //0x000005fa movq %r14, %rax + 0x48, 0x8b, 0x4d, 0xa8, //0x000005fd movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x71, 0x08, //0x00000601 movq $8(%rcx), %r14 + 0x4c, 0x8b, 0x00, //0x00000605 movq (%rax), %r8 + 0xf6, 0x45, 0x98, 0x40, //0x00000608 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x14, 0x05, 0x00, 0x00, //0x0000060c jne LBB0_134 + 0x49, 0x8d, 0x40, 0xff, //0x00000612 leaq $-1(%r8), %rax + 0x49, 0x29, 0xc6, //0x00000616 subq %rax, %r14 + 0x4c, 0x89, 0x45, 0xc0, //0x00000619 movq %r8, $-64(%rbp) + 0x0f, 0x84, 0x6c, 0x34, 0x00, 0x00, //0x0000061d je LBB0_625 + 0x4b, 0x8d, 0x3c, 0x04, //0x00000623 leaq (%r12,%r8), %rdi + 0x48, 0x83, 0xc7, 0xff, //0x00000627 addq $-1, %rdi + 0x80, 0x3f, 0x30, //0x0000062b cmpb $48, (%rdi) + 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x0000062e jne LBB0_86 + 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000634 movl $1, %r13d + 0x49, 0x83, 0xfe, 0x01, //0x0000063a cmpq $1, %r14 + 0x0f, 0x84, 0xb9, 0x20, 0x00, 0x00, //0x0000063e je LBB0_452 + 0x48, 0x8b, 0x4d, 0xc0, //0x00000644 movq $-64(%rbp), %rcx + 0x41, 0x8a, 0x0c, 0x0c, //0x00000648 movb (%r12,%rcx), %cl + 0x80, 0xc1, 0xd2, //0x0000064c addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000064f cmpb $55, %cl + 0x0f, 0x87, 0xa5, 0x20, 0x00, 0x00, //0x00000652 ja LBB0_452 + 0x0f, 0xb6, 0xc9, //0x00000658 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x0000065b movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00000665 btq %rcx, %rdx + 0x0f, 0x83, 0x8e, 0x20, 0x00, 0x00, //0x00000669 jae LBB0_452 + //0x0000066f LBB0_86 + 0x49, 0x83, 0xfe, 0x10, //0x0000066f cmpq $16, %r14 + 0x48, 0x89, 0x7d, 0xb8, //0x00000673 movq %rdi, $-72(%rbp) + 0x0f, 0x82, 0xa0, 0x27, 0x00, 0x00, //0x00000677 jb LBB0_490 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000067d movq $-1, %r10 + 0x45, 0x31, 0xed, //0x00000684 xorl %r13d, %r13d + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000687 movq $-1, %r15 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000068e movq $-1, %r8 + 0x4d, 0x89, 0xf3, //0x00000695 movq %r14, %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000698 .p2align 4, 0x90 + //0x000006a0 LBB0_88 + 0xf3, 0x42, 0x0f, 0x6f, 0x1c, 0x2f, //0x000006a0 movdqu (%rdi,%r13), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006a6 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0xee, 0xf9, 0xff, 0xff, //0x000006aa pcmpgtb $-1554(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006b2 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000006b7 pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x000006bb pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006bf movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0xf5, 0xf9, 0xff, 0xff, //0x000006c3 pcmpeqb $-1547(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x000006cb movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0xf9, 0xf9, 0xff, 0xff, //0x000006cf pcmpeqb $-1543(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x000006d7 por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006db movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x000006df pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0xf4, 0xf9, 0xff, 0xff, //0x000006e4 pcmpeqb $-1548(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x000006ec pcmpeqb %xmm11, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000006f1 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe3, //0x000006f5 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x000006f9 por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x000006fd por %xmm4, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00000701 pmovmskb %xmm3, %r9d + 0x66, 0x0f, 0xd7, 0xd6, //0x00000706 pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xcd, //0x0000070a pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x0000070e notl %ecx + 0x0f, 0xbc, 0xc9, //0x00000710 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00000713 cmpl $16, %ecx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000716 je LBB0_90 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000071c movl $-1, %edi + 0xd3, 0xe7, //0x00000721 shll %cl, %edi + 0xf7, 0xd7, //0x00000723 notl %edi + 0x41, 0x21, 0xf9, //0x00000725 andl %edi, %r9d + 0x21, 0xfe, //0x00000728 andl %edi, %esi + 0x21, 0xd7, //0x0000072a andl %edx, %edi + 0x89, 0xfa, //0x0000072c movl %edi, %edx + 0x48, 0x8b, 0x7d, 0xb8, //0x0000072e movq $-72(%rbp), %rdi + //0x00000732 LBB0_90 + 0x41, 0x8d, 0x59, 0xff, //0x00000732 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00000736 andl %r9d, %ebx + 0x0f, 0x85, 0x69, 0x1f, 0x00, 0x00, //0x00000739 jne LBB0_444 + 0x8d, 0x5e, 0xff, //0x0000073f leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x00000742 andl %esi, %ebx + 0x0f, 0x85, 0x5e, 0x1f, 0x00, 0x00, //0x00000744 jne LBB0_444 + 0x8d, 0x5a, 0xff, //0x0000074a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000074d andl %edx, %ebx + 0x0f, 0x85, 0x53, 0x1f, 0x00, 0x00, //0x0000074f jne LBB0_444 + 0x45, 0x85, 0xc9, //0x00000755 testl %r9d, %r9d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000758 je LBB0_96 + 0x41, 0x0f, 0xbc, 0xd9, //0x0000075e bsfl %r9d, %ebx + 0x49, 0x83, 0xf8, 0xff, //0x00000762 cmpq $-1, %r8 + 0x0f, 0x85, 0xfa, 0x22, 0x00, 0x00, //0x00000766 jne LBB0_454 + 0x4c, 0x01, 0xeb, //0x0000076c addq %r13, %rbx + 0x49, 0x89, 0xd8, //0x0000076f movq %rbx, %r8 + //0x00000772 LBB0_96 + 0x85, 0xf6, //0x00000772 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000774 je LBB0_99 + 0x0f, 0xbc, 0xf6, //0x0000077a bsfl %esi, %esi + 0x49, 0x83, 0xff, 0xff, //0x0000077d cmpq $-1, %r15 + 0x0f, 0x85, 0xe6, 0x22, 0x00, 0x00, //0x00000781 jne LBB0_455 + 0x4c, 0x01, 0xee, //0x00000787 addq %r13, %rsi + 0x49, 0x89, 0xf7, //0x0000078a movq %rsi, %r15 + //0x0000078d LBB0_99 + 0x85, 0xd2, //0x0000078d testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000078f je LBB0_102 + 0x0f, 0xbc, 0xd2, //0x00000795 bsfl %edx, %edx + 0x49, 0x83, 0xfa, 0xff, //0x00000798 cmpq $-1, %r10 + 0x0f, 0x85, 0xd2, 0x22, 0x00, 0x00, //0x0000079c jne LBB0_456 + 0x4c, 0x01, 0xea, //0x000007a2 addq %r13, %rdx + 0x49, 0x89, 0xd2, //0x000007a5 movq %rdx, %r10 + //0x000007a8 LBB0_102 + 0x83, 0xf9, 0x10, //0x000007a8 cmpl $16, %ecx + 0x0f, 0x85, 0xf7, 0x07, 0x00, 0x00, //0x000007ab jne LBB0_188 + 0x49, 0x83, 0xc3, 0xf0, //0x000007b1 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000007b5 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000007b9 cmpq $15, %r11 + 0x0f, 0x87, 0xdd, 0xfe, 0xff, 0xff, //0x000007bd ja LBB0_88 + 0x4a, 0x8d, 0x34, 0x2f, //0x000007c3 leaq (%rdi,%r13), %rsi + 0x49, 0x89, 0xf1, //0x000007c7 movq %rsi, %r9 + 0x4d, 0x39, 0xee, //0x000007ca cmpq %r13, %r14 + 0x0f, 0x84, 0xff, 0x09, 0x00, 0x00, //0x000007cd je LBB0_217 + //0x000007d3 LBB0_105 + 0x4e, 0x8d, 0x0c, 0x1e, //0x000007d3 leaq (%rsi,%r11), %r9 + 0x48, 0x89, 0xf7, //0x000007d7 movq %rsi, %rdi + 0x48, 0x2b, 0x7d, 0xc0, //0x000007da subq $-64(%rbp), %rdi + 0x4c, 0x29, 0xe7, //0x000007de subq %r12, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x000007e1 addq $1, %rdi + 0x31, 0xd2, //0x000007e5 xorl %edx, %edx + 0x4c, 0x8d, 0x35, 0xd2, 0x37, 0x00, 0x00, //0x000007e7 leaq $14290(%rip), %r14 /* LJTI0_3+0(%rip) */ + 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x000007ee jmp LBB0_109 + //0x000007f3 LBB0_106 + 0x49, 0x83, 0xfa, 0xff, //0x000007f3 cmpq $-1, %r10 + 0x0f, 0x85, 0xdc, 0x1e, 0x00, 0x00, //0x000007f7 jne LBB0_449 + 0x4c, 0x8d, 0x14, 0x17, //0x000007fd leaq (%rdi,%rdx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000801 .p2align 4, 0x90 + //0x00000810 LBB0_108 + 0x48, 0x83, 0xc2, 0x01, //0x00000810 addq $1, %rdx + 0x49, 0x39, 0xd3, //0x00000814 cmpq %rdx, %r11 + 0x0f, 0x84, 0xb1, 0x09, 0x00, 0x00, //0x00000817 je LBB0_216 + //0x0000081d LBB0_109 + 0x0f, 0xbe, 0x0c, 0x16, //0x0000081d movsbl (%rsi,%rdx), %ecx + 0x8d, 0x59, 0xd0, //0x00000821 leal $-48(%rcx), %ebx + 0x83, 0xfb, 0x0a, //0x00000824 cmpl $10, %ebx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000827 jb LBB0_108 + 0x8d, 0x59, 0xd5, //0x0000082d leal $-43(%rcx), %ebx + 0x83, 0xfb, 0x1a, //0x00000830 cmpl $26, %ebx + 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00000833 ja LBB0_114 + 0x49, 0x63, 0x0c, 0x9e, //0x00000839 movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x0000083d addq %r14, %rcx + 0xff, 0xe1, //0x00000840 jmpq *%rcx + //0x00000842 LBB0_112 + 0x49, 0x83, 0xf8, 0xff, //0x00000842 cmpq $-1, %r8 + 0x0f, 0x85, 0x8d, 0x1e, 0x00, 0x00, //0x00000846 jne LBB0_449 + 0x4c, 0x8d, 0x04, 0x17, //0x0000084c leaq (%rdi,%rdx), %r8 + 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00000850 jmp LBB0_108 + //0x00000855 LBB0_114 + 0x83, 0xf9, 0x65, //0x00000855 cmpl $101, %ecx + 0x0f, 0x85, 0x6a, 0x09, 0x00, 0x00, //0x00000858 jne LBB0_215 + //0x0000085e LBB0_115 + 0x49, 0x83, 0xff, 0xff, //0x0000085e cmpq $-1, %r15 + 0x0f, 0x85, 0x71, 0x1e, 0x00, 0x00, //0x00000862 jne LBB0_449 + 0x4c, 0x8d, 0x3c, 0x17, //0x00000868 leaq (%rdi,%rdx), %r15 + 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000086c jmp LBB0_108 + //0x00000871 LBB0_117 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000871 cmpq $4095, %r9 + 0x0f, 0x8f, 0xd2, 0x31, 0x00, 0x00, //0x00000878 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000087e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x00000882 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000886 movq $0, $8(%r13,%r9,8) + 0xe9, 0x3c, 0xf9, 0xff, 0xff, //0x0000088f jmp LBB0_4 + //0x00000894 LBB0_64 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x00000894 movq $2, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x0000089d movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000008a1 testb $64, %cl + 0x0f, 0x85, 0xcb, 0x03, 0x00, 0x00, //0x000008a4 jne LBB0_152 + 0x49, 0x8b, 0x16, //0x000008aa movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000008ad movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000008b1 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000008b5 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000008b8 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000008bc movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x000008c0 jne LBB0_189 + 0x49, 0x89, 0xc1, //0x000008c6 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000008c9 subq %rdx, %r9 + 0x0f, 0x84, 0xde, 0x33, 0x00, 0x00, //0x000008cc je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000008d2 cmpq $64, %r9 + 0x0f, 0x82, 0xd9, 0x26, 0x00, 0x00, //0x000008d6 jb LBB0_510 + 0x49, 0x89, 0xd6, //0x000008dc movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x000008df notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000008e2 movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x000008ea movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x000008ed xorl %r8d, %r8d + //0x000008f0 .p2align 4, 0x90 + //0x000008f0 LBB0_69 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x000008f0 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x000008f6 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x000008fd movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000904 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000090b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000090f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000913 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000918 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000091c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000920 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000924 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000928 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000092c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000930 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000934 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000938 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000093c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000940 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000945 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000949 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000094d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000951 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000955 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000959 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000095e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000962 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000966 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000969 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000096d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x00000970 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x00000973 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x00000977 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x0000097b orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x0000097e shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x00000982 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x00000985 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000988 jne LBB0_121 + 0x4d, 0x85, 0xc0, //0x0000098e testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000991 jne LBB0_123 + 0x45, 0x31, 0xc0, //0x00000997 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x0000099a testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000099d jne LBB0_124 + //0x000009a3 LBB0_72 + 0x49, 0x83, 0xc1, 0xc0, //0x000009a3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000009a7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000009ab addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000009af cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000009b3 ja LBB0_69 + 0xe9, 0x1e, 0x1f, 0x00, 0x00, //0x000009b9 jmp LBB0_73 + //0x000009be LBB0_121 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000009be cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000009c3 jne LBB0_123 + 0x49, 0x0f, 0xbc, 0xcb, //0x000009c9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000009cd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x000009d0 movq %rcx, $-56(%rbp) + //0x000009d4 LBB0_123 + 0x4c, 0x89, 0xc1, //0x000009d4 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x000009d7 notq %rcx + 0x4c, 0x21, 0xd9, //0x000009da andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x000009dd leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x000009e1 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x000009e4 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x000009e7 notq %rsi + 0x4c, 0x21, 0xde, //0x000009ea andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000009ed movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x000009f7 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x000009fa xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x000009fd addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000a00 setb %r8b + 0x48, 0x01, 0xf6, //0x00000a04 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a07 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000a11 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000a14 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000a17 notq %rsi + 0x49, 0x21, 0xf2, //0x00000a1a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00000a1d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a20 je LBB0_72 + //0x00000a26 LBB0_124 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000a26 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x00000a2a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00000a2d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a31 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x75, 0xc0, //0x00000a3b movq $-64(%rbp), %rsi + 0xe9, 0xb3, 0x0d, 0x00, 0x00, //0x00000a3f jmp LBB0_313 + //0x00000a44 LBB0_125 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000a44 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000a48 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000a4c movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000a4f leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000a53 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000a56 cmpq $32, %r9 + 0x0f, 0x8c, 0x3a, 0x1c, 0x00, 0x00, //0x00000a5a jl LBB0_133 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000a60 movl $32, %r14d + 0x31, 0xf6, //0x00000a66 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000a68 xorl %r11d, %r11d + 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000a6b jmp LBB0_127 + //0x00000a70 .p2align 4, 0x90 + //0x00000a70 LBB0_129 + 0x45, 0x31, 0xdb, //0x00000a70 xorl %r11d, %r11d + 0x48, 0x85, 0xdb, //0x00000a73 testq %rbx, %rbx + 0x0f, 0x85, 0x2b, 0xf7, 0xff, 0xff, //0x00000a76 jne LBB0_1 + //0x00000a7c LBB0_130 + 0x48, 0x83, 0xc6, 0x20, //0x00000a7c addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00000a80 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a84 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00000a88 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x00000a8c cmpq $63, %rcx + 0x0f, 0x8e, 0xe7, 0x1b, 0x00, 0x00, //0x00000a90 jle LBB0_131 + //0x00000a96 LBB0_127 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x32, //0x00000a96 movdqu (%r10,%rsi), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x32, 0x10, //0x00000a9c movdqu $16(%r10,%rsi), %xmm5 + 0x66, 0x0f, 0x6f, 0xf4, //0x00000aa3 movdqa %xmm4, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000aa7 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xfe, //0x00000aab pmovmskb %xmm6, %edi + 0x66, 0x0f, 0x6f, 0xf5, //0x00000aaf movdqa %xmm5, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000ab3 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xde, //0x00000ab7 pmovmskb %xmm6, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000abb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000abf orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xe1, //0x00000ac2 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000ac6 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x00000aca pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ace pmovmskb %xmm5, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000ad2 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000ad6 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000ad9 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x00000adc orq %r11, %rcx + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000adf je LBB0_129 + 0x44, 0x89, 0xd9, //0x00000ae5 movl %r11d, %ecx + 0xf7, 0xd1, //0x00000ae8 notl %ecx + 0x21, 0xf9, //0x00000aea andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x00000aec leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x00000af0 orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x00000af3 movl %r15d, %edx + 0xf7, 0xd2, //0x00000af6 notl %edx + 0x21, 0xfa, //0x00000af8 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000afa andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x00000b00 xorl %r11d, %r11d + 0x01, 0xca, //0x00000b03 addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x00000b05 setb %r11b + 0x01, 0xd2, //0x00000b09 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000b0b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000b11 andl %r15d, %edx + 0xf7, 0xd2, //0x00000b14 notl %edx + 0x21, 0xd3, //0x00000b16 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000b18 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b1b je LBB0_130 + 0xe9, 0x81, 0xf6, 0xff, 0xff, //0x00000b21 jmp LBB0_1 + //0x00000b26 LBB0_134 + 0x4c, 0x89, 0xf1, //0x00000b26 movq %r14, %rcx + 0x4c, 0x29, 0xc1, //0x00000b29 subq %r8, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x00000b2c cmpq $16, %rcx + 0x0f, 0x82, 0xc7, 0x22, 0x00, 0x00, //0x00000b30 jb LBB0_489 + 0x4c, 0x89, 0xc6, //0x00000b36 movq %r8, %rsi + 0x48, 0xf7, 0xde, //0x00000b39 negq %rsi + 0x49, 0x8d, 0x40, 0x01, //0x00000b3c leaq $1(%r8), %rax + 0x49, 0x8d, 0x48, 0xff, //0x00000b40 leaq $-1(%r8), %rcx + 0x4b, 0x8d, 0x14, 0x04, //0x00000b44 leaq (%r12,%r8), %rdx + 0x48, 0x83, 0xc2, 0xff, //0x00000b48 addq $-1, %rdx + 0x4c, 0x89, 0xc3, //0x00000b4c movq %r8, %rbx + 0x90, //0x00000b4f .p2align 4, 0x90 + //0x00000b50 LBB0_136 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00000b50 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000b56 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000b5a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000b5f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00000b64 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00000b68 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000b6c pmovmskb %xmm3, %edi + 0x85, 0xff, //0x00000b70 testl %edi, %edi + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00000b72 jne LBB0_147 + 0x48, 0x83, 0xc3, 0x10, //0x00000b78 addq $16, %rbx + 0x49, 0x8d, 0x3c, 0x36, //0x00000b7c leaq (%r14,%rsi), %rdi + 0x48, 0x83, 0xc7, 0xf0, //0x00000b80 addq $-16, %rdi + 0x48, 0x83, 0xc6, 0xf0, //0x00000b84 addq $-16, %rsi + 0x48, 0x83, 0xc0, 0x10, //0x00000b88 addq $16, %rax + 0x48, 0x83, 0xc1, 0x10, //0x00000b8c addq $16, %rcx + 0x48, 0x83, 0xc2, 0x10, //0x00000b90 addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000b94 cmpq $15, %rdi + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x00000b98 ja LBB0_136 + 0x4c, 0x89, 0xe0, //0x00000b9e movq %r12, %rax + 0x48, 0x29, 0xf0, //0x00000ba1 subq %rsi, %rax + 0x49, 0x01, 0xf6, //0x00000ba4 addq %rsi, %r14 + 0x4c, 0x89, 0xf1, //0x00000ba7 movq %r14, %rcx + 0x48, 0x85, 0xc9, //0x00000baa testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00000bad movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bb1 movabsq $17596481021440, %rdi + 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bbb je LBB0_146 + //0x00000bc1 LBB0_139 + 0x48, 0x8d, 0x14, 0x08, //0x00000bc1 leaq (%rax,%rcx), %rdx + //0x00000bc5 LBB0_140 + 0x0f, 0xb6, 0x30, //0x00000bc5 movzbl (%rax), %esi + 0x48, 0x83, 0xfe, 0x2c, //0x00000bc8 cmpq $44, %rsi + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000bcc ja LBB0_142 + 0x48, 0x0f, 0xa3, 0xf7, //0x00000bd2 btq %rsi, %rdi + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x00000bd6 jb LBB0_146 + //0x00000bdc LBB0_142 + 0x40, 0x80, 0xfe, 0x5d, //0x00000bdc cmpb $93, %sil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000be0 je LBB0_146 + 0x40, 0x80, 0xfe, 0x7d, //0x00000be6 cmpb $125, %sil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000bea je LBB0_146 + 0x48, 0x83, 0xc0, 0x01, //0x00000bf0 addq $1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000bf4 addq $-1, %rcx + 0x0f, 0x85, 0xc7, 0xff, 0xff, 0xff, //0x00000bf8 jne LBB0_140 + 0x48, 0x89, 0xd0, //0x00000bfe movq %rdx, %rax + //0x00000c01 LBB0_146 + 0x4c, 0x29, 0xe0, //0x00000c01 subq %r12, %rax + 0x49, 0x89, 0x06, //0x00000c04 movq %rax, (%r14) + 0xe9, 0xba, 0xf5, 0xff, 0xff, //0x00000c07 jmp LBB0_3 + //0x00000c0c LBB0_147 + 0x66, 0x0f, 0xbc, 0xff, //0x00000c0c bsfw %di, %di + 0x0f, 0xb7, 0xdf, //0x00000c10 movzwl %di, %ebx + 0x48, 0x89, 0xdf, //0x00000c13 movq %rbx, %rdi + 0x48, 0x29, 0xf7, //0x00000c16 subq %rsi, %rdi + 0x4c, 0x8b, 0x75, 0xd0, //0x00000c19 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x3e, //0x00000c1d movq %rdi, (%r14) + 0x48, 0x85, 0xff, //0x00000c20 testq %rdi, %rdi + 0x0f, 0x8e, 0x9d, 0xf5, 0xff, 0xff, //0x00000c23 jle LBB0_3 + 0x48, 0x01, 0xd8, //0x00000c29 addq %rbx, %rax + 0x48, 0x01, 0xd9, //0x00000c2c addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c2f addq %rbx, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c32 .p2align 4, 0x90 + //0x00000c40 LBB0_149 + 0x0f, 0xb6, 0x32, //0x00000c40 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x00000c43 cmpq $32, %rsi + 0x0f, 0x87, 0x79, 0xf5, 0xff, 0xff, //0x00000c47 ja LBB0_3 + 0x49, 0x0f, 0xa3, 0xf3, //0x00000c4d btq %rsi, %r11 + 0x0f, 0x83, 0x6f, 0xf5, 0xff, 0xff, //0x00000c51 jae LBB0_3 + 0x49, 0x89, 0x0e, //0x00000c57 movq %rcx, (%r14) + 0x48, 0x83, 0xc0, 0xff, //0x00000c5a addq $-1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000c5e addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c62 addq $-1, %rdx + 0x48, 0x83, 0xf8, 0x01, //0x00000c66 cmpq $1, %rax + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c6a jg LBB0_149 + 0xe9, 0x51, 0xf5, 0xff, 0xff, //0x00000c70 jmp LBB0_3 + //0x00000c75 LBB0_152 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000c75 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000c79 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000c7d movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000c80 leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000c84 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000c87 cmpq $32, %r9 + 0x0f, 0x8c, 0xa5, 0x1a, 0x00, 0x00, //0x00000c8b jl LBB0_161 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000c91 movl $32, %r14d + 0x31, 0xf6, //0x00000c97 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000c99 xorl %r11d, %r11d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x00000c9c jmp LBB0_154 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ca1 .p2align 4, 0x90 + //0x00000cb0 LBB0_157 0x45, 0x31, 0xdb, //0x00000cb0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000cb3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_151 - //0x00000cbc LBB0_153 - 0x48, 0x83, 0xc2, 0x20, //0x00000cbc addq $32, %rdx + 0x48, 0x85, 0xdb, //0x00000cb3 testq %rbx, %rbx + 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_156 + //0x00000cbc LBB0_158 + 0x48, 0x83, 0xc6, 0x20, //0x00000cbc addq $32, %rsi 0x4b, 0x8d, 0x0c, 0x31, //0x00000cc0 leaq (%r9,%r14), %rcx 0x48, 0x83, 0xc1, 0xe0, //0x00000cc4 addq $-32, %rcx 0x49, 0x83, 0xc6, 0xe0, //0x00000cc8 addq $-32, %r14 0x48, 0x83, 0xf9, 0x3f, //0x00000ccc cmpq $63, %rcx - 0x0f, 0x8e, 0xfb, 0x19, 0x00, 0x00, //0x00000cd0 jle LBB0_154 - //0x00000cd6 LBB0_149 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00000cd6 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00000cdc movdqu $16(%r10,%rdx), %xmm4 + 0x0f, 0x8e, 0x43, 0x1a, 0x00, 0x00, //0x00000cd0 jle LBB0_159 + //0x00000cd6 LBB0_154 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00000cd6 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00000cdc movdqu $16(%r10,%rsi), %xmm4 0x66, 0x0f, 0x6f, 0xeb, //0x00000ce3 movdqa %xmm3, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000ce7 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000ceb pmovmskb %xmm5, %esi + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ceb pmovmskb %xmm5, %edi 0x66, 0x0f, 0x6f, 0xec, //0x00000cef movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000cf3 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000cf7 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000cfb shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000cff orq %rsi, %rdi + 0x66, 0x0f, 0xd7, 0xdd, //0x00000cf7 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000cfb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000cff orq %rdi, %rbx 0x66, 0x0f, 0x74, 0xd9, //0x00000d02 pcmpeqb %xmm1, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000d06 pmovmskb %xmm3, %ecx 0x66, 0x0f, 0x74, 0xe1, //0x00000d0a pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00000d0e pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000d12 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000d16 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000d19 movq %rsi, %rcx + 0x66, 0x0f, 0xd7, 0xfc, //0x00000d0e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000d12 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000d16 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000d19 movq %rdi, %rcx 0x4c, 0x09, 0xd9, //0x00000d1c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_152 + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_157 0x44, 0x89, 0xd9, //0x00000d25 movl %r11d, %ecx 0xf7, 0xd1, //0x00000d28 notl %ecx - 0x21, 0xf1, //0x00000d2a andl %esi, %ecx + 0x21, 0xf9, //0x00000d2a andl %edi, %ecx 0x44, 0x8d, 0x3c, 0x09, //0x00000d2c leal (%rcx,%rcx), %r15d 0x45, 0x09, 0xdf, //0x00000d30 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000d33 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000d36 notl %ebx - 0x21, 0xf3, //0x00000d38 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %ebx + 0x44, 0x89, 0xfa, //0x00000d33 movl %r15d, %edx + 0xf7, 0xd2, //0x00000d36 notl %edx + 0x21, 0xfa, //0x00000d38 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %edx 0x45, 0x31, 0xdb, //0x00000d40 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000d43 addl %ecx, %ebx + 0x01, 0xca, //0x00000d43 addl %ecx, %edx 0x41, 0x0f, 0x92, 0xc3, //0x00000d45 setb %r11b - 0x01, 0xdb, //0x00000d49 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000d51 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000d54 notl %ebx - 0x21, 0xdf, //0x00000d56 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000d58 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_153 - //0x00000d61 LBB0_151 - 0x0f, 0xbc, 0xc7, //0x00000d61 bsfl %edi, %eax + 0x01, 0xd2, //0x00000d49 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000d51 andl %r15d, %edx + 0xf7, 0xd2, //0x00000d54 notl %edx + 0x21, 0xd3, //0x00000d56 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000d58 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_158 + //0x00000d61 LBB0_156 + 0x0f, 0xbc, 0xc3, //0x00000d61 bsfl %ebx, %eax 0x4c, 0x01, 0xc0, //0x00000d64 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000d67 leaq (%rdx,%rax), %r10 + 0x4c, 0x8d, 0x14, 0x06, //0x00000d67 leaq (%rsi,%rax), %r10 0x49, 0x83, 0xc2, 0x01, //0x00000d6b addq $1, %r10 0x4c, 0x8b, 0x75, 0xd0, //0x00000d6f movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000d73 movabsq $4294977024, %r11 0x4d, 0x89, 0x16, //0x00000d7d movq %r10, (%r14) 0x4d, 0x85, 0xc0, //0x00000d80 testq %r8, %r8 - 0x0f, 0x8f, 0x93, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_306 - 0xe9, 0x73, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_608 - //0x00000d8e LBB0_157 + 0x0f, 0x8f, 0x83, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_315 + 0xe9, 0xce, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_622 + //0x00000d8e LBB0_162 0x49, 0x89, 0xc6, //0x00000d8e movq %rax, %r14 0x49, 0x29, 0xd6, //0x00000d91 subq %rdx, %r14 - 0x0f, 0x84, 0x71, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_643 + 0x0f, 0x84, 0xdc, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_657 0x49, 0x83, 0xfe, 0x40, //0x00000d9a cmpq $64, %r14 - 0x0f, 0x82, 0x17, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_486 - 0x4c, 0x89, 0x65, 0xc0, //0x00000da4 movq %r12, $-64(%rbp) + 0x0f, 0x82, 0x5e, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_504 + 0x4c, 0x89, 0x65, 0xb8, //0x00000da4 movq %r12, $-72(%rbp) 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000da8 movq $-1, $-56(%rbp) - 0x48, 0x8b, 0x45, 0xb0, //0x00000db0 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x45, 0xc0, //0x00000db0 movq $-64(%rbp), %rax 0x31, 0xdb, //0x00000db4 xorl %ebx, %ebx 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000db6 .p2align 4, 0x90 - //0x00000dc0 LBB0_160 + //0x00000dc0 LBB0_165 0x49, 0x89, 0xdc, //0x00000dc0 movq %rbx, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000dc3 movq $-64(%rbp), %rcx + 0x48, 0x8b, 0x4d, 0xb8, //0x00000dc3 movq $-72(%rbp), %rcx 0xf3, 0x0f, 0x6f, 0x1c, 0x01, //0x00000dc7 movdqu (%rcx,%rax), %xmm3 0xf3, 0x0f, 0x6f, 0x7c, 0x01, 0x10, //0x00000dcc movdqu $16(%rcx,%rax), %xmm7 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x20, //0x00000dd2 movdqu $32(%rcx,%rax), %xmm6 @@ -875,7 +878,7 @@ var _text_skip_object = []byte{ 0x66, 0x0f, 0xd7, 0xdd, //0x00000df3 pmovmskb %xmm5, %ebx 0x66, 0x0f, 0x6f, 0xee, //0x00000df7 movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000dfb pcmpeqb %xmm0, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x00000dff pmovmskb %xmm5, %r10d + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00000dff pmovmskb %xmm5, %r9d 0x66, 0x0f, 0x6f, 0xec, //0x00000e04 movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000e08 pcmpeqb %xmm0, %xmm5 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00000e0c pmovmskb %xmm5, %r15d @@ -884,7 +887,7 @@ var _text_skip_object = []byte{ 0x66, 0x44, 0x0f, 0xd7, 0xed, //0x00000e19 pmovmskb %xmm5, %r13d 0x66, 0x0f, 0x6f, 0xef, //0x00000e1e movdqa %xmm7, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e22 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000e26 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0xd7, 0xd5, //0x00000e26 pmovmskb %xmm5, %edx 0x66, 0x0f, 0x6f, 0xee, //0x00000e2a movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e2e pcmpeqb %xmm1, %xmm5 0x66, 0x0f, 0xd7, 0xcd, //0x00000e32 pmovmskb %xmm5, %ecx @@ -895,3281 +898,3312 @@ var _text_skip_object = []byte{ 0x66, 0x0f, 0x64, 0xef, //0x00000e48 pcmpgtb %xmm7, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00000e4c pcmpgtb %xmm10, %xmm7 0x66, 0x0f, 0xdb, 0xfd, //0x00000e51 pand %xmm5, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00000e55 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0xd7, 0xff, //0x00000e55 pmovmskb %xmm7, %edi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e59 movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xee, //0x00000e5e pcmpgtb %xmm6, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00000e62 pcmpgtb %xmm10, %xmm6 0x66, 0x0f, 0xdb, 0xf5, //0x00000e67 pand %xmm5, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x00000e6b pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xf6, //0x00000e6b pmovmskb %xmm6, %esi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e6f movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xec, //0x00000e74 pcmpgtb %xmm4, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00000e78 pcmpgtb %xmm10, %xmm4 0x66, 0x0f, 0xdb, 0xe5, //0x00000e7d pand %xmm5, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xcc, //0x00000e81 pmovmskb %xmm4, %r9d + 0x66, 0x44, 0x0f, 0xd7, 0xd4, //0x00000e81 pmovmskb %xmm4, %r10d 0x49, 0xc1, 0xe7, 0x30, //0x00000e86 shlq $48, %r15 - 0x49, 0xc1, 0xe2, 0x20, //0x00000e8a shlq $32, %r10 - 0x4d, 0x09, 0xfa, //0x00000e8e orq %r15, %r10 + 0x49, 0xc1, 0xe1, 0x20, //0x00000e8a shlq $32, %r9 + 0x4d, 0x09, 0xf9, //0x00000e8e orq %r15, %r9 0x48, 0xc1, 0xe3, 0x10, //0x00000e91 shlq $16, %rbx - 0x4c, 0x09, 0xd3, //0x00000e95 orq %r10, %rbx + 0x4c, 0x09, 0xcb, //0x00000e95 orq %r9, %rbx 0x49, 0x09, 0xdb, //0x00000e98 orq %rbx, %r11 0x49, 0xc1, 0xe0, 0x30, //0x00000e9b shlq $48, %r8 0x48, 0xc1, 0xe1, 0x20, //0x00000e9f shlq $32, %rcx 0x4c, 0x09, 0xc1, //0x00000ea3 orq %r8, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x00000ea6 shlq $16, %rdi - 0x48, 0x09, 0xcf, //0x00000eaa orq %rcx, %rdi - 0x49, 0xc1, 0xe1, 0x30, //0x00000ead shlq $48, %r9 - 0x48, 0xc1, 0xe2, 0x20, //0x00000eb1 shlq $32, %rdx - 0x4c, 0x09, 0xca, //0x00000eb5 orq %r9, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x00000eb8 shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00000ebc orq %rdx, %rsi - 0x49, 0x09, 0xfd, //0x00000ebf orq %rdi, %r13 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_177 + 0x48, 0xc1, 0xe2, 0x10, //0x00000ea6 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x00000eaa orq %rcx, %rdx + 0x49, 0xc1, 0xe2, 0x30, //0x00000ead shlq $48, %r10 + 0x48, 0xc1, 0xe6, 0x20, //0x00000eb1 shlq $32, %rsi + 0x4c, 0x09, 0xd6, //0x00000eb5 orq %r10, %rsi + 0x48, 0xc1, 0xe7, 0x10, //0x00000eb8 shlq $16, %rdi + 0x48, 0x09, 0xf7, //0x00000ebc orq %rsi, %rdi + 0x49, 0x09, 0xd5, //0x00000ebf orq %rdx, %r13 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_182 0x4d, 0x85, 0xe4, //0x00000ec8 testq %r12, %r12 - 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_179 + 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_184 0x31, 0xdb, //0x00000ed1 xorl %ebx, %ebx - //0x00000ed3 LBB0_163 + //0x00000ed3 LBB0_168 0x66, 0x41, 0x0f, 0x6f, 0xe4, //0x00000ed3 movdqa %xmm12, %xmm4 0x66, 0x0f, 0x64, 0xe3, //0x00000ed8 pcmpgtb %xmm3, %xmm4 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00000edc pcmpgtb %xmm10, %xmm3 0x66, 0x0f, 0xdb, 0xdc, //0x00000ee1 pand %xmm4, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000ee5 pmovmskb %xmm3, %ecx - 0x48, 0x09, 0xce, //0x00000ee9 orq %rcx, %rsi + 0x48, 0x09, 0xcf, //0x00000ee9 orq %rcx, %rdi 0x4d, 0x85, 0xdb, //0x00000eec testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000eef movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_180 - 0x48, 0x85, 0xf6, //0x00000ef9 testq %rsi, %rsi - 0x0f, 0x85, 0x84, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_618 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00000eef movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_185 + 0x48, 0x85, 0xff, //0x00000ef9 testq %rdi, %rdi + 0x0f, 0x85, 0xec, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_631 0x49, 0x83, 0xc6, 0xc0, //0x00000f02 addq $-64, %r14 0x48, 0x83, 0xc0, 0x40, //0x00000f06 addq $64, %rax 0x49, 0x83, 0xfe, 0x3f, //0x00000f0a cmpq $63, %r14 - 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_160 - 0xe9, 0x6b, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_166 - //0x00000f19 LBB0_177 + 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_165 + 0xe9, 0xb3, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_171 + //0x00000f19 LBB0_182 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000f19 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_179 + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_184 0x49, 0x0f, 0xbc, 0xcd, //0x00000f24 bsfq %r13, %rcx 0x48, 0x01, 0xc1, //0x00000f28 addq %rax, %rcx 0x48, 0x89, 0x4d, 0xc8, //0x00000f2b movq %rcx, $-56(%rbp) - //0x00000f2f LBB0_179 + //0x00000f2f LBB0_184 0x4c, 0x89, 0xe1, //0x00000f2f movq %r12, %rcx 0x48, 0xf7, 0xd1, //0x00000f32 notq %rcx 0x4c, 0x21, 0xe9, //0x00000f35 andq %r13, %rcx 0x48, 0x8d, 0x14, 0x09, //0x00000f38 leaq (%rcx,%rcx), %rdx 0x4c, 0x09, 0xe2, //0x00000f3c orq %r12, %rdx - 0x48, 0x89, 0xd7, //0x00000f3f movq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f42 notq %rdi - 0x4c, 0x21, 0xef, //0x00000f45 andq %r13, %rdi + 0x48, 0x89, 0xd6, //0x00000f3f movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f42 notq %rsi + 0x4c, 0x21, 0xee, //0x00000f45 andq %r13, %rsi 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000f48 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xdf, //0x00000f52 andq %rbx, %rdi + 0x48, 0x21, 0xde, //0x00000f52 andq %rbx, %rsi 0x31, 0xdb, //0x00000f55 xorl %ebx, %ebx - 0x48, 0x01, 0xcf, //0x00000f57 addq %rcx, %rdi + 0x48, 0x01, 0xce, //0x00000f57 addq %rcx, %rsi 0x0f, 0x92, 0xc3, //0x00000f5a setb %bl - 0x48, 0x01, 0xff, //0x00000f5d addq %rdi, %rdi + 0x48, 0x01, 0xf6, //0x00000f5d addq %rsi, %rsi 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f60 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xcf, //0x00000f6a xorq %rcx, %rdi - 0x48, 0x21, 0xd7, //0x00000f6d andq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f70 notq %rdi - 0x49, 0x21, 0xfb, //0x00000f73 andq %rdi, %r11 - 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_163 - //0x00000f7b LBB0_180 + 0x48, 0x31, 0xce, //0x00000f6a xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000f6d andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f70 notq %rsi + 0x49, 0x21, 0xf3, //0x00000f73 andq %rsi, %r11 + 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_168 + //0x00000f7b LBB0_185 0x49, 0x0f, 0xbc, 0xcb, //0x00000f7b bsfq %r11, %rcx - 0x48, 0x85, 0xf6, //0x00000f7f testq %rsi, %rsi - 0x0f, 0x84, 0xdb, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_221 - 0x48, 0x0f, 0xbc, 0xd6, //0x00000f88 bsfq %rsi, %rdx + 0x48, 0x85, 0xff, //0x00000f7f testq %rdi, %rdi + 0x0f, 0x84, 0xc4, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_227 + 0x48, 0x0f, 0xbc, 0xd7, //0x00000f88 bsfq %rdi, %rdx 0x4c, 0x8b, 0x75, 0xd0, //0x00000f8c movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000f90 movabsq $4294977024, %r11 0x48, 0x39, 0xca, //0x00000f9a cmpq %rcx, %rdx - 0x0f, 0x83, 0xdc, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_222 - 0xe9, 0x74, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_182 - //0x00000fa8 LBB0_183 - 0x41, 0x89, 0xcb, //0x00000fa8 movl %ecx, %r11d - 0x4d, 0x01, 0xf3, //0x00000fab addq %r14, %r11 - 0x4d, 0x01, 0xeb, //0x00000fae addq %r13, %r11 - //0x00000fb1 LBB0_184 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000fb1 movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00000fb8 testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x02, 0x00, 0x00, //0x00000fbb jne LBB0_213 - 0xe9, 0x00, 0x2c, 0x00, 0x00, //0x00000fc1 jmp LBB0_185 - //0x00000fc6 LBB0_186 - 0x49, 0x29, 0xd1, //0x00000fc6 subq %rdx, %r9 - 0x48, 0x89, 0xd1, //0x00000fc9 movq %rdx, %rcx - 0x0f, 0x84, 0x73, 0x2c, 0x00, 0x00, //0x00000fcc je LBB0_644 - 0x4c, 0x89, 0x65, 0xc0, //0x00000fd2 movq %r12, $-64(%rbp) - 0x49, 0x83, 0xf9, 0x40, //0x00000fd6 cmpq $64, %r9 - 0x0f, 0x82, 0x9e, 0x1f, 0x00, 0x00, //0x00000fda jb LBB0_494 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fe0 movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x00000fe8 movq %rcx, %rax - 0x45, 0x31, 0xe4, //0x00000feb xorl %r12d, %r12d - 0x90, 0x90, //0x00000fee .p2align 4, 0x90 - //0x00000ff0 LBB0_189 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000ff0 movq $-64(%rbp), %rcx - 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000ff4 movdqu (%rcx,%rax), %xmm13 - 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000ffa movdqu $16(%rcx,%rax), %xmm6 - 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00001000 movdqu $32(%rcx,%rax), %xmm5 - 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00001006 movdqu $48(%rcx,%rax), %xmm4 - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x0000100c movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001011 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001015 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xde, //0x0000101a movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000101e pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00001022 pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001026 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000102a pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000102e pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x00001033 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001037 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000103b pmovmskb %xmm3, %r15d - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001040 movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001045 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001049 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xde, //0x0000104e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001052 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001056 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xdd, //0x0000105a movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000105e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001062 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x00001066 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000106a pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x0000106e pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001073 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00001078 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000107c pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x00001081 pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00001085 pmovmskb %xmm6, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001089 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x0000108e pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001092 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x00001097 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000109b pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000109f movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000010a4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000010a8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000010ad pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010b1 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x000010b6 shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x000010ba shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x000010be orq %r15, %r14 - 0x48, 0xc1, 0xe3, 0x10, //0x000010c1 shlq $16, %rbx - 0x4c, 0x09, 0xf3, //0x000010c5 orq %r14, %rbx - 0x49, 0x09, 0xdb, //0x000010c8 orq %rbx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x000010cb shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x000010cf shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x000010d3 orq %r10, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000010d6 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000010da orq %rsi, %rcx - 0x49, 0xc1, 0xe0, 0x30, //0x000010dd shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000010e1 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000010e5 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000010e8 shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000010ec orq %rdx, %rdi - 0x49, 0x09, 0xcd, //0x000010ef orq %rcx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010f2 jne LBB0_206 - 0x4d, 0x85, 0xe4, //0x000010f8 testq %r12, %r12 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010fb jne LBB0_208 - 0x45, 0x31, 0xe4, //0x00001101 xorl %r12d, %r12d - 0x4c, 0x8b, 0x75, 0xd0, //0x00001104 movq $-48(%rbp), %r14 - //0x00001108 LBB0_192 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001108 movdqa %xmm12, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x0000110d pcmpgtb %xmm13, %xmm3 - 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001112 pcmpgtb %xmm10, %xmm13 - 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001117 pand %xmm3, %xmm13 - 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000111c pmovmskb %xmm13, %ecx - 0x48, 0x09, 0xcf, //0x00001121 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x00001124 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001127 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000112b jne LBB0_210 - 0x48, 0x85, 0xff, //0x00001131 testq %rdi, %rdi - 0x0f, 0x85, 0x6f, 0x2a, 0x00, 0x00, //0x00001134 jne LBB0_632 - 0x49, 0x83, 0xc1, 0xc0, //0x0000113a addq $-64, %r9 - 0x48, 0x83, 0xc0, 0x40, //0x0000113e addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001142 cmpq $63, %r9 - 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001146 ja LBB0_189 - 0xe9, 0xd2, 0x17, 0x00, 0x00, //0x0000114c jmp LBB0_195 - //0x00001151 LBB0_206 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001151 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00001156 movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000115a jne LBB0_209 - 0x49, 0x0f, 0xbc, 0xcd, //0x00001160 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00001164 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00001167 movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000116b jmp LBB0_209 - //0x00001170 LBB0_208 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001170 movq $-48(%rbp), %r14 - //0x00001174 LBB0_209 - 0x4c, 0x89, 0xe1, //0x00001174 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00001177 notq %rcx - 0x4c, 0x21, 0xe9, //0x0000117a andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000117d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xe2, //0x00001181 orq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00001184 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001187 notq %rsi - 0x4c, 0x21, 0xee, //0x0000118a andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000118d movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00001197 andq %rbx, %rsi - 0x45, 0x31, 0xe4, //0x0000119a xorl %r12d, %r12d - 0x48, 0x01, 0xce, //0x0000119d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc4, //0x000011a0 setb %r12b - 0x48, 0x01, 0xf6, //0x000011a4 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000011a7 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x000011b1 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x000011b4 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000011b7 notq %rsi - 0x49, 0x21, 0xf3, //0x000011ba andq %rsi, %r11 - 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011bd jmp LBB0_192 - //0x000011c2 LBB0_210 - 0x49, 0x0f, 0xbc, 0xcb, //0x000011c2 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x000011c6 testq %rdi, %rdi - 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011c9 je LBB0_302 - 0x48, 0x0f, 0xbc, 0xd7, //0x000011cf bsfq %rdi, %rdx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011d3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5a, 0xee, 0xff, 0xff, //0x000011dd movdqu $-4518(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000011e6 cmpq %rcx, %rdx - 0x0f, 0x83, 0x0d, 0x06, 0x00, 0x00, //0x000011e9 jae LBB0_303 - 0xe9, 0xf8, 0x29, 0x00, 0x00, //0x000011ef jmp LBB0_640 - //0x000011f4 LBB0_212 - 0x48, 0x01, 0xf9, //0x000011f4 addq %rdi, %rcx - 0x49, 0x89, 0xcb, //0x000011f7 movq %rcx, %r11 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011fa movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00001201 testq %r8, %r8 - 0x0f, 0x84, 0xbc, 0x29, 0x00, 0x00, //0x00001204 je LBB0_185 - //0x0000120a LBB0_213 - 0x4d, 0x85, 0xc9, //0x0000120a testq %r9, %r9 - 0x48, 0x8b, 0x75, 0xc0, //0x0000120d movq $-64(%rbp), %rsi - 0x0f, 0x84, 0x1b, 0x28, 0x00, 0x00, //0x00001211 je LBB0_612 - 0x4d, 0x85, 0xff, //0x00001217 testq %r15, %r15 - 0x0f, 0x84, 0x12, 0x28, 0x00, 0x00, //0x0000121a je LBB0_612 - 0x4d, 0x29, 0xf3, //0x00001220 subq %r14, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x00001223 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xc8, //0x00001227 cmpq %rcx, %r8 - 0x0f, 0x84, 0xac, 0xef, 0xff, 0xff, //0x0000122a je LBB0_1 - 0x49, 0x39, 0xc9, //0x00001230 cmpq %rcx, %r9 - 0x0f, 0x84, 0xa3, 0xef, 0xff, 0xff, //0x00001233 je LBB0_1 - 0x49, 0x39, 0xcf, //0x00001239 cmpq %rcx, %r15 - 0x0f, 0x84, 0x9a, 0xef, 0xff, 0xff, //0x0000123c je LBB0_1 - 0x4d, 0x85, 0xc9, //0x00001242 testq %r9, %r9 - 0x0f, 0x8e, 0x6d, 0x05, 0x00, 0x00, //0x00001245 jle LBB0_299 - 0x49, 0x8d, 0x49, 0xff, //0x0000124b leaq $-1(%r9), %rcx - 0x49, 0x39, 0xcf, //0x0000124f cmpq %rcx, %r15 - 0x0f, 0x84, 0x60, 0x05, 0x00, 0x00, //0x00001252 je LBB0_299 - 0x49, 0xf7, 0xd1, //0x00001258 notq %r9 - 0x4d, 0x89, 0xcd, //0x0000125b movq %r9, %r13 - 0xe9, 0x7f, 0xef, 0xff, 0xff, //0x0000125e jmp LBB0_2 - //0x00001263 LBB0_221 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001263 movl $64, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001268 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000126c movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x00001276 cmpq %rcx, %rdx - 0x0f, 0x82, 0x9d, 0x29, 0x00, 0x00, //0x00001279 jb LBB0_182 - //0x0000127f LBB0_222 - 0x48, 0x01, 0xc8, //0x0000127f addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001282 addq $1, %rax - //0x00001286 LBB0_223 - 0x48, 0x85, 0xc0, //0x00001286 testq %rax, %rax - 0x0f, 0x88, 0x7e, 0x27, 0x00, 0x00, //0x00001289 js LBB0_609 - //0x0000128f LBB0_224 - 0x49, 0x89, 0x06, //0x0000128f movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x00001292 movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001296 testq %rax, %rax - 0x0f, 0x8f, 0x21, 0xef, 0xff, 0xff, //0x00001299 jg LBB0_4 - 0xe9, 0x54, 0x27, 0x00, 0x00, //0x0000129f jmp LBB0_606 - //0x000012a4 LBB0_225 - 0x49, 0x8b, 0x0e, //0x000012a4 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x000012a7 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x000012ab movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfc, //0x000012af leaq $-4(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x000012b3 cmpq %rsi, %rcx - 0x0f, 0x87, 0xc2, 0x27, 0x00, 0x00, //0x000012b6 ja LBB0_617 - 0x41, 0x8b, 0x14, 0x0c, //0x000012bc movl (%r12,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012c0 cmpl $1702063201, %edx - 0x0f, 0x85, 0xe7, 0x27, 0x00, 0x00, //0x000012c6 jne LBB0_622 - 0x48, 0x8d, 0x41, 0x04, //0x000012cc leaq $4(%rcx), %rax - 0x49, 0x89, 0x06, //0x000012d0 movq %rax, (%r14) - 0x48, 0x85, 0xc9, //0x000012d3 testq %rcx, %rcx - 0x0f, 0x8f, 0xe4, 0xee, 0xff, 0xff, //0x000012d6 jg LBB0_4 - 0xe9, 0xbc, 0x28, 0x00, 0x00, //0x000012dc jmp LBB0_228 - //0x000012e1 LBB0_229 - 0xf6, 0x45, 0x98, 0x40, //0x000012e1 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x57, 0x05, 0x00, 0x00, //0x000012e5 jne LBB0_308 - 0x49, 0x8b, 0x45, 0x00, //0x000012eb movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000012ef cmpq $4095, %rax - 0x0f, 0x8f, 0xf1, 0x26, 0x00, 0x00, //0x000012f5 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x000012fb leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x000012ff movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00001303 movq $5, $8(%r13,%rax,8) - 0xe9, 0xaf, 0xee, 0xff, 0xff, //0x0000130c jmp LBB0_4 - //0x00001311 LBB0_232 - 0x48, 0x8b, 0x4d, 0x98, //0x00001311 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00001315 testb $64, %cl - 0x0f, 0x85, 0xa0, 0x09, 0x00, 0x00, //0x00001318 jne LBB0_334 - 0x49, 0x8b, 0x16, //0x0000131e movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00001321 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00001325 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x00001329 testb $32, %cl - 0x48, 0x89, 0xd1, //0x0000132c movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x0000132f movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x00001333 movq %rax, $-96(%rbp) - 0x0f, 0x85, 0x45, 0x10, 0x00, 0x00, //0x00001337 jne LBB0_385 - 0x49, 0x89, 0xc1, //0x0000133d movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00001340 subq %rdx, %r9 - 0x0f, 0x84, 0xef, 0x28, 0x00, 0x00, //0x00001343 je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00001349 cmpq $64, %r9 - 0x0f, 0x82, 0x05, 0x1d, 0x00, 0x00, //0x0000134d jb LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00001353 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00001357 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000135a notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000135d movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00001365 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001368 .p2align 4, 0x90 - //0x00001370 LBB0_237 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001370 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001376 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000137d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001384 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000138b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000138f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001393 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00001398 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000139c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x000013a0 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x000013a4 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013a8 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x000013ac pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000013b0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013b4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000013b8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000013bc pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000013c0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000013c5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x000013c9 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x74, 0xe9, //0x000013cd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000013d1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000013d5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000013d9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000013de shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000013e2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000013e6 orq %rdx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x000013e9 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x000013ed orq %rdi, %rcx - 0x49, 0x09, 0xca, //0x000013f0 orq %rcx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000013f3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000013f7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000013fb orq %r15, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x000013fe shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00001402 orq %rsi, %rbx - 0x49, 0x09, 0xdb, //0x00001405 orq %rbx, %r11 - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x00001408 jne LBB0_246 - 0x4d, 0x85, 0xc0, //0x0000140e testq %r8, %r8 - 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x00001411 jne LBB0_248 - 0x45, 0x31, 0xc0, //0x00001417 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000141a testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000141d movabsq $4294977024, %r11 - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001427 jne LBB0_249 - //0x0000142d LBB0_240 - 0x49, 0x83, 0xc1, 0xc0, //0x0000142d addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00001431 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00001435 addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001439 cmpq $63, %r9 - 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x0000143d ja LBB0_237 - 0xe9, 0x06, 0x18, 0x00, 0x00, //0x00001443 jmp LBB0_241 - //0x00001448 LBB0_246 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001448 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x0000144d jne LBB0_248 - 0x49, 0x0f, 0xbc, 0xcb, //0x00001453 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00001457 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000145a movq %rcx, $-56(%rbp) - //0x0000145e LBB0_248 - 0x4c, 0x89, 0xc1, //0x0000145e movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00001461 notq %rcx - 0x4c, 0x21, 0xd9, //0x00001464 andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00001467 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x0000146b orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x0000146e movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001471 notq %rsi - 0x4c, 0x21, 0xde, //0x00001474 andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001477 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00001481 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00001484 xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00001487 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x0000148a setb %r8b - 0x48, 0x01, 0xf6, //0x0000148e addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001491 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x0000149b xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x0000149e andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000014a1 notq %rsi - 0x49, 0x21, 0xf2, //0x000014a4 andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x000014a7 testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000014aa movabsq $4294977024, %r11 - 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x000014b4 je LBB0_240 - //0x000014ba LBB0_249 - 0x49, 0x0f, 0xbc, 0xc2, //0x000014ba bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x000014be subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000014c1 movq $-48(%rbp), %r14 - 0xe9, 0x73, 0x11, 0x00, 0x00, //0x000014c5 jmp LBB0_426 - //0x000014ca LBB0_250 - 0x48, 0x8b, 0x45, 0xa8, //0x000014ca movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x000014ce movq $8(%rax), %rdi - 0x49, 0x8b, 0x06, //0x000014d2 movq (%r14), %rax - 0xf6, 0x45, 0x98, 0x40, //0x000014d5 testb $64, $-104(%rbp) - 0x0f, 0x85, 0xf2, 0x08, 0x00, 0x00, //0x000014d9 jne LBB0_344 - 0x48, 0x29, 0xc7, //0x000014df subq %rax, %rdi - 0x0f, 0x84, 0xe7, 0x26, 0x00, 0x00, //0x000014e2 je LBB0_635 - 0x4d, 0x8d, 0x04, 0x04, //0x000014e8 leaq (%r12,%rax), %r8 - 0x41, 0x80, 0x38, 0x30, //0x000014ec cmpb $48, (%r8) - 0x0f, 0x85, 0x36, 0x00, 0x00, 0x00, //0x000014f0 jne LBB0_256 - 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014f6 movl $1, %ebx - 0x48, 0x83, 0xff, 0x01, //0x000014fb cmpq $1, %rdi - 0x0f, 0x84, 0x23, 0x17, 0x00, 0x00, //0x000014ff je LBB0_469 - 0x41, 0x8a, 0x48, 0x01, //0x00001505 movb $1(%r8), %cl - 0x80, 0xc1, 0xd2, //0x00001509 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x0000150c cmpb $55, %cl - 0x0f, 0x87, 0x13, 0x17, 0x00, 0x00, //0x0000150f ja LBB0_469 - 0x0f, 0xb6, 0xc9, //0x00001515 movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001518 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x00001522 btq %rcx, %rdx - 0x0f, 0x83, 0xfc, 0x16, 0x00, 0x00, //0x00001526 jae LBB0_469 - //0x0000152c LBB0_256 - 0x48, 0x83, 0xff, 0x10, //0x0000152c cmpq $16, %rdi - 0x0f, 0x82, 0x02, 0x1b, 0x00, 0x00, //0x00001530 jb LBB0_500 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00001536 movq $-1, %r13 - 0x31, 0xdb, //0x0000153d xorl %ebx, %ebx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000153f movq $-1, %r10 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001546 movq $-1, %r14 - 0x49, 0x89, 0xf9, //0x0000154d movq %rdi, %r9 - //0x00001550 .p2align 4, 0x90 - //0x00001550 LBB0_258 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x18, //0x00001550 movdqu (%r8,%rbx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001556 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0x3e, 0xeb, 0xff, 0xff, //0x0000155a pcmpgtb $-5314(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001562 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001567 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x0000156b pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000156f movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0x45, 0xeb, 0xff, 0xff, //0x00001573 pcmpeqb $-5307(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000157b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0x49, 0xeb, 0xff, 0xff, //0x0000157f pcmpeqb $-5303(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00001587 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000158b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000158f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0x44, 0xeb, 0xff, 0xff, //0x00001594 pcmpeqb $-5308(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000159c pcmpeqb %xmm11, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x000015a1 pmovmskb %xmm4, %r15d - 0x66, 0x0f, 0xeb, 0xe3, //0x000015a6 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x000015aa por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x000015ae por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd3, //0x000015b2 pmovmskb %xmm3, %edx - 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x000015b6 pmovmskb %xmm6, %r11d - 0x66, 0x0f, 0xd7, 0xcd, //0x000015bb pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x000015bf notl %ecx - 0x0f, 0xbc, 0xc9, //0x000015c1 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x000015c4 cmpl $16, %ecx - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015c7 je LBB0_260 - 0xbe, 0xff, 0xff, 0xff, 0xff, //0x000015cd movl $-1, %esi - 0xd3, 0xe6, //0x000015d2 shll %cl, %esi - 0xf7, 0xd6, //0x000015d4 notl %esi - 0x21, 0xf2, //0x000015d6 andl %esi, %edx - 0x41, 0x21, 0xf7, //0x000015d8 andl %esi, %r15d - 0x44, 0x21, 0xde, //0x000015db andl %r11d, %esi - 0x41, 0x89, 0xf3, //0x000015de movl %esi, %r11d - //0x000015e1 LBB0_260 - 0x8d, 0x72, 0xff, //0x000015e1 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x000015e4 andl %edx, %esi - 0x0f, 0x85, 0x06, 0x16, 0x00, 0x00, //0x000015e6 jne LBB0_463 - 0x41, 0x8d, 0x77, 0xff, //0x000015ec leal $-1(%r15), %esi - 0x44, 0x21, 0xfe, //0x000015f0 andl %r15d, %esi - 0x0f, 0x85, 0xf9, 0x15, 0x00, 0x00, //0x000015f3 jne LBB0_463 - 0x41, 0x8d, 0x73, 0xff, //0x000015f9 leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x000015fd andl %r11d, %esi - 0x0f, 0x85, 0xec, 0x15, 0x00, 0x00, //0x00001600 jne LBB0_463 - 0x85, 0xd2, //0x00001606 testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001608 je LBB0_266 - 0x0f, 0xbc, 0xd2, //0x0000160e bsfl %edx, %edx - 0x49, 0x83, 0xfe, 0xff, //0x00001611 cmpq $-1, %r14 - 0x0f, 0x85, 0xfc, 0x15, 0x00, 0x00, //0x00001615 jne LBB0_466 - 0x48, 0x01, 0xda, //0x0000161b addq %rbx, %rdx - 0x49, 0x89, 0xd6, //0x0000161e movq %rdx, %r14 - //0x00001621 LBB0_266 - 0x45, 0x85, 0xff, //0x00001621 testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001624 je LBB0_269 - 0x41, 0x0f, 0xbc, 0xd7, //0x0000162a bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x0000162e cmpq $-1, %r10 - 0x0f, 0x85, 0xdf, 0x15, 0x00, 0x00, //0x00001632 jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001638 addq %rbx, %rdx - 0x49, 0x89, 0xd2, //0x0000163b movq %rdx, %r10 - //0x0000163e LBB0_269 - 0x45, 0x85, 0xdb, //0x0000163e testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001641 je LBB0_272 - 0x41, 0x0f, 0xbc, 0xd3, //0x00001647 bsfl %r11d, %edx - 0x49, 0x83, 0xfd, 0xff, //0x0000164b cmpq $-1, %r13 - 0x0f, 0x85, 0xc2, 0x15, 0x00, 0x00, //0x0000164f jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001655 addq %rbx, %rdx - 0x49, 0x89, 0xd5, //0x00001658 movq %rdx, %r13 - //0x0000165b LBB0_272 - 0x83, 0xf9, 0x10, //0x0000165b cmpl $16, %ecx - 0x0f, 0x85, 0x36, 0x0f, 0x00, 0x00, //0x0000165e jne LBB0_411 - 0x49, 0x83, 0xc1, 0xf0, //0x00001664 addq $-16, %r9 - 0x48, 0x83, 0xc3, 0x10, //0x00001668 addq $16, %rbx - 0x49, 0x83, 0xf9, 0x0f, //0x0000166c cmpq $15, %r9 - 0x0f, 0x87, 0xda, 0xfe, 0xff, 0xff, //0x00001670 ja LBB0_258 - 0x49, 0x8d, 0x14, 0x18, //0x00001676 leaq (%r8,%rbx), %rdx - 0x49, 0x89, 0xd3, //0x0000167a movq %rdx, %r11 - 0x48, 0x39, 0xdf, //0x0000167d cmpq %rbx, %rdi - 0x0f, 0x84, 0x28, 0x0f, 0x00, 0x00, //0x00001680 je LBB0_413 - //0x00001686 LBB0_275 - 0x4e, 0x8d, 0x1c, 0x0a, //0x00001686 leaq (%rdx,%r9), %r11 - 0x49, 0x89, 0xd7, //0x0000168a movq %rdx, %r15 - 0x4d, 0x29, 0xc7, //0x0000168d subq %r8, %r15 - 0x31, 0xdb, //0x00001690 xorl %ebx, %ebx - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00001692 jmp LBB0_279 - //0x00001697 LBB0_276 - 0x49, 0x83, 0xfd, 0xff, //0x00001697 cmpq $-1, %r13 - 0x0f, 0x85, 0x65, 0x15, 0x00, 0x00, //0x0000169b jne LBB0_465 - 0x4d, 0x8d, 0x2c, 0x1f, //0x000016a1 leaq (%r15,%rbx), %r13 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000016a5 .p2align 4, 0x90 - //0x000016b0 LBB0_278 - 0x48, 0x83, 0xc3, 0x01, //0x000016b0 addq $1, %rbx - 0x49, 0x39, 0xd9, //0x000016b4 cmpq %rbx, %r9 - 0x0f, 0x84, 0xf1, 0x0e, 0x00, 0x00, //0x000016b7 je LBB0_413 - //0x000016bd LBB0_279 - 0x0f, 0xbe, 0x0c, 0x1a, //0x000016bd movsbl (%rdx,%rbx), %ecx - 0x8d, 0x71, 0xd0, //0x000016c1 leal $-48(%rcx), %esi - 0x83, 0xfe, 0x0a, //0x000016c4 cmpl $10, %esi - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x000016c7 jb LBB0_278 - 0x8d, 0x71, 0xd5, //0x000016cd leal $-43(%rcx), %esi - 0x83, 0xfe, 0x1a, //0x000016d0 cmpl $26, %esi - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x000016d3 ja LBB0_284 - 0x48, 0x8d, 0x3d, 0x08, 0x28, 0x00, 0x00, //0x000016d9 leaq $10248(%rip), %rdi /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x0c, 0xb7, //0x000016e0 movslq (%rdi,%rsi,4), %rcx - 0x48, 0x01, 0xf9, //0x000016e4 addq %rdi, %rcx - 0xff, 0xe1, //0x000016e7 jmpq *%rcx - //0x000016e9 LBB0_282 - 0x49, 0x83, 0xfe, 0xff, //0x000016e9 cmpq $-1, %r14 - 0x0f, 0x85, 0x13, 0x15, 0x00, 0x00, //0x000016ed jne LBB0_465 - 0x4d, 0x8d, 0x34, 0x1f, //0x000016f3 leaq (%r15,%rbx), %r14 - 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016f7 jmp LBB0_278 - //0x000016fc LBB0_284 - 0x83, 0xf9, 0x65, //0x000016fc cmpl $101, %ecx - 0x0f, 0x85, 0xa3, 0x0e, 0x00, 0x00, //0x000016ff jne LBB0_412 - //0x00001705 LBB0_285 - 0x49, 0x83, 0xfa, 0xff, //0x00001705 cmpq $-1, %r10 - 0x0f, 0x85, 0xf7, 0x14, 0x00, 0x00, //0x00001709 jne LBB0_465 - 0x4d, 0x8d, 0x14, 0x1f, //0x0000170f leaq (%r15,%rbx), %r10 - 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00001713 jmp LBB0_278 - //0x00001718 LBB0_287 - 0x49, 0x8b, 0x0e, //0x00001718 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000171b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000171f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001723 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001727 cmpq %rsi, %rcx - 0x0f, 0x87, 0x4e, 0x23, 0x00, 0x00, //0x0000172a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001730 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001734 cmpl $1819047278, $-1(%r12,%rcx) - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000173d je LBB0_298 - 0xe9, 0x07, 0x24, 0x00, 0x00, //0x00001743 jmp LBB0_289 - //0x00001748 LBB0_293 - 0xf6, 0x45, 0x98, 0x40, //0x00001748 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x62, 0x07, 0x00, 0x00, //0x0000174c jne LBB0_356 - 0x49, 0x8b, 0x45, 0x00, //0x00001752 movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001756 cmpq $4095, %rax - 0x0f, 0x8f, 0x8a, 0x22, 0x00, 0x00, //0x0000175c jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x00001762 leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001766 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000176a movq $6, $8(%r13,%rax,8) - 0xe9, 0x48, 0xea, 0xff, 0xff, //0x00001773 jmp LBB0_4 - //0x00001778 LBB0_296 - 0x49, 0x8b, 0x0e, //0x00001778 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000177b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000177f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001783 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001787 cmpq %rsi, %rcx - 0x0f, 0x87, 0xee, 0x22, 0x00, 0x00, //0x0000178a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001790 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001794 cmpl $1702195828, $-1(%r12,%rcx) - 0x0f, 0x85, 0x65, 0x23, 0x00, 0x00, //0x0000179d jne LBB0_627 - //0x000017a3 LBB0_298 - 0x48, 0x8d, 0x51, 0x03, //0x000017a3 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x000017a7 movq %rdx, (%r14) - 0x48, 0x85, 0xc9, //0x000017aa testq %rcx, %rcx - 0x0f, 0x8f, 0x0d, 0xea, 0xff, 0xff, //0x000017ad jg LBB0_4 - 0xe9, 0x8f, 0x22, 0x00, 0x00, //0x000017b3 jmp LBB0_638 - //0x000017b8 LBB0_299 - 0x4c, 0x89, 0xc1, //0x000017b8 movq %r8, %rcx - 0x4c, 0x09, 0xf9, //0x000017bb orq %r15, %rcx - 0x0f, 0x99, 0xc1, //0x000017be setns %cl - 0x0f, 0x88, 0x9f, 0x0b, 0x00, 0x00, //0x000017c1 js LBB0_384 - 0x4d, 0x39, 0xf8, //0x000017c7 cmpq %r15, %r8 - 0x0f, 0x8c, 0x96, 0x0b, 0x00, 0x00, //0x000017ca jl LBB0_384 - 0x49, 0xf7, 0xd0, //0x000017d0 notq %r8 - 0x4d, 0x89, 0xc5, //0x000017d3 movq %r8, %r13 - 0xe9, 0x07, 0xea, 0xff, 0xff, //0x000017d6 jmp LBB0_2 - //0x000017db LBB0_302 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017db movl $64, %edx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017e0 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x4d, 0xe8, 0xff, 0xff, //0x000017ea movdqu $-6067(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000017f3 cmpq %rcx, %rdx - 0x0f, 0x82, 0xf0, 0x23, 0x00, 0x00, //0x000017f6 jb LBB0_640 - //0x000017fc LBB0_303 - 0x48, 0x01, 0xc8, //0x000017fc addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000017ff addq $1, %rax - //0x00001803 LBB0_304 - 0x48, 0x85, 0xc0, //0x00001803 testq %rax, %rax - 0x0f, 0x88, 0x59, 0x22, 0x00, 0x00, //0x00001806 js LBB0_615 - 0x49, 0x89, 0x06, //0x0000180c movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x0000180f movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001813 testq %rax, %rax - 0x0f, 0x8e, 0xdc, 0x21, 0x00, 0x00, //0x00001816 jle LBB0_606 - //0x0000181c LBB0_306 - 0x49, 0x8b, 0x45, 0x00, //0x0000181c movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001820 cmpq $4095, %rax - 0x0f, 0x8f, 0xc0, 0x21, 0x00, 0x00, //0x00001826 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x0000182c leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001830 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001834 movq $4, $8(%r13,%rax,8) - 0xe9, 0x7e, 0xe9, 0xff, 0xff, //0x0000183d jmp LBB0_4 - //0x00001842 LBB0_308 - 0x48, 0x8b, 0x55, 0xa8, //0x00001842 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001846 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x0000184a movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x0000184d subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001850 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001854 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001857 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x0000185a xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x0000185d xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001860 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001863 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001867 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x0000186b jge LBB0_309 - //0x00001871 LBB0_318 - 0x48, 0x85, 0xd2, //0x00001871 testq %rdx, %rdx - 0x0f, 0x8e, 0xdd, 0x23, 0x00, 0x00, //0x00001874 jle LBB0_648 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000187a movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x0000187e pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001882 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001887 movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000188f movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001897 movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x0000189f movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x000018a2 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000018a5 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000018ab cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x000018b1 jb LBB0_322 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x000018b7 cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x000018bc jb LBB0_323 - 0x0f, 0x10, 0x1f, //0x000018c2 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x000018c5 movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x000018cc movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x000018d1 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x000018d9 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x000018dd movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x000018e1 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x000018e5 leaq $-144(%rbp), %rdx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000018ec jmp LBB0_324 - //0x000018f1 LBB0_322 - 0x66, 0x0f, 0x6f, 0xd6, //0x000018f1 movdqa %xmm6, %xmm2 - 0x49, 0x89, 0xfc, //0x000018f5 movq %rdi, %r12 - 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x000018f8 jmp LBB0_309 - //0x000018fd LBB0_323 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000018fd leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001904 movq $-64(%rbp), %rsi - //0x00001908 LBB0_324 - 0x48, 0x83, 0xfe, 0x10, //0x00001908 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x0000190c jb LBB0_325 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001912 movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001916 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x0000191a addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x0000191e addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001922 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001926 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x0000192a jae LBB0_332 - //0x00001930 LBB0_326 - 0x48, 0x83, 0xfe, 0x04, //0x00001930 cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001934 jl LBB0_327 - //0x0000193a LBB0_333 - 0x8b, 0x0f, //0x0000193a movl (%rdi), %ecx - 0x89, 0x0a, //0x0000193c movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x0000193e addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001942 addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001946 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x0000194a cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000194e jae LBB0_328 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001954 jmp LBB0_329 - //0x00001959 LBB0_325 - 0x48, 0x83, 0xfe, 0x08, //0x00001959 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x0000195d jb LBB0_326 - //0x00001963 LBB0_332 - 0x48, 0x8b, 0x0f, //0x00001963 movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001966 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001969 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x0000196d addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001971 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001975 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001979 jge LBB0_333 - //0x0000197f LBB0_327 - 0x48, 0x83, 0xfe, 0x02, //0x0000197f cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001983 jb LBB0_329 - //0x00001989 LBB0_328 - 0x0f, 0xb7, 0x0f, //0x00001989 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x0000198c movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000198f addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x00001993 addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00001997 addq $-2, %rsi - //0x0000199b LBB0_329 - 0x48, 0x89, 0xf9, //0x0000199b movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000199e leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x000019a5 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x000019a8 movdqa %xmm6, %xmm2 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x000019ac je LBB0_309 - 0x8a, 0x09, //0x000019b2 movb (%rcx), %cl - 0x88, 0x0a, //0x000019b4 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x000019b6 leaq $-176(%rbp), %r12 - //0x000019bd LBB0_309 - 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x000019bd movdqa %xmm2, %xmm8 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x000019c2 movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x000019c8 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x000019cf movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x000019d6 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x000019dd movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019e1 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000019e5 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x000019e9 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019ed pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000019f1 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000019f5 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019f9 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000019fd pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a01 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001a05 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001a09 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00001a0d shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x00001a11 shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00001a15 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00001a18 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001a1c orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x00001a1f orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00001a22 movq %rdx, %rcx - 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001a25 movdqa %xmm14, %xmm13 - 0x4c, 0x09, 0xd1, //0x00001a2a orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a2d jne LBB0_311 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a33 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a3a xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a3d jmp LBB0_312 - //0x00001a42 LBB0_311 - 0x4c, 0x89, 0xd1, //0x00001a42 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x00001a45 notq %rcx - 0x48, 0x21, 0xd1, //0x00001a48 andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x00001a4b leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x00001a4f orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x00001a52 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x00001a55 notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a58 movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x00001a62 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x00001a65 andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x00001a68 xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x00001a6b addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a6e setb %r10b - 0x48, 0x01, 0xd2, //0x00001a72 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a75 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x00001a7f xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x00001a82 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x00001a85 notq %rdx - //0x00001a88 LBB0_312 - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a88 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a8c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001a90 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00001a94 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x00001a98 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a9c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001aa0 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x00001aa4 shlq $32, %rsi - 0x48, 0x09, 0xce, //0x00001aa8 orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00001aab movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001aaf pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001ab3 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00001ab7 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001abb orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00001abe movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001ac2 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001ac6 pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00001aca orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00001acd andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001ad0 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001ad5 pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001adc movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00001ae1 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x00001ae4 movdqa %xmm4, %xmm3 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x6f, 0xe5, 0xff, 0xff, //0x00001ae8 movdqu $-6801(%rip), %xmm11 /* LCPI0_6+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001af1 pcmpeqb %xmm11, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001af6 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00001afb movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001aff pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001b04 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00001b08 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b0c pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00001b11 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001b15 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b19 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001b1e pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00001b22 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00001b26 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00001b2a orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x00001b2d shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x00001b31 orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x00001b34 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x00001b37 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x00001b3a notq %r8 - 0x4d, 0x21, 0xc5, //0x00001b3d andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b40 movdqa %xmm8, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001b45 pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00001b4a pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001b4e pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00001b53 pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001b57 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x00001b5c pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001b60 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001b65 pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x00001b6a shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x00001b6e shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x00001b72 orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x00001b75 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001b79 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x00001b7c orq %rsi, %rdx - 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001b7f movdqa %xmm13, %xmm14 - 0x4c, 0x21, 0xc2, //0x00001b84 andq %r8, %rdx - 0x0f, 0x84, 0xaa, 0x00, 0x00, 0x00, //0x00001b87 je LBB0_316 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x5a, 0xe5, 0xff, 0xff, //0x00001b8d movdqu $-6822(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b96 movdqa %xmm8, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x9c, 0xe4, 0xff, 0xff, //0x00001b9b movdqu $-7012(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001ba4 movabsq $3689348814741910323, %r8 - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0x99, 0xe4, 0xff, 0xff, //0x00001bae movdqu $-7015(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001bb7 .p2align 4, 0x90 - //0x00001bc0 LBB0_314 - 0x48, 0x8d, 0x7a, 0xff, //0x00001bc0 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00001bc4 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00001bc7 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x00001bca movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x00001bcd shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001bd0 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x00001bda andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x00001bdd subq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001be0 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00001be3 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00001be6 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x00001bea andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x00001bed addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001bf0 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00001bf3 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00001bf7 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001bfa movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00001c04 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c07 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00001c11 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00001c15 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00001c19 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x00001c1c cmpq %r14, %rsi - 0x0f, 0x86, 0xd4, 0x06, 0x00, 0x00, //0x00001c1f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00001c25 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00001c29 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001c2c jne LBB0_314 - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_317 - //0x00001c37 LBB0_316 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001c37 movdqa %xmm8, %xmm2 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001c3c movabsq $3689348814741910323, %r8 - //0x00001c46 LBB0_317 - 0x49, 0xc1, 0xfb, 0x3f, //0x00001c46 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00001c4a movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00001c4d shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c50 movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00001c5a andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00001c5d subq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c60 movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x00001c63 andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x00001c66 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x00001c6a andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x00001c6d addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c70 movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00001c73 shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x00001c77 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001c7a movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x00001c84 andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c87 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00001c91 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00001c95 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x00001c99 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x00001c9c addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x00001ca0 movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x00001ca4 addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x00001ca8 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x00001cab cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001caf movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x04, 0xfd, 0xff, 0xff, //0x00001cb3 jge LBB0_309 - 0xe9, 0xb3, 0xfb, 0xff, 0xff, //0x00001cb9 jmp LBB0_318 - //0x00001cbe LBB0_334 - 0x48, 0x8b, 0x4d, 0xa8, //0x00001cbe movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00001cc2 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00001cc6 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00001cc9 leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00001ccd subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00001cd0 cmpq $32, %r9 - 0x0f, 0x8c, 0xdb, 0x00, 0x00, 0x00, //0x00001cd4 jl LBB0_343 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00001cda movl $32, %r14d - 0x31, 0xd2, //0x00001ce0 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00001ce2 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001ce5 .p2align 4, 0x90 - //0x00001cf0 LBB0_336 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00001cf0 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00001cf6 movdqu $16(%r10,%rdx), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00001cfd movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d01 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001d05 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xec, //0x00001d09 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d0d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00001d11 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00001d15 shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00001d19 orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xd9, //0x00001d1c pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001d20 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x74, 0xe1, //0x00001d24 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00001d28 pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00001d2c shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001d30 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00001d33 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00001d36 orq %r11, %rcx - 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x00001d39 je LBB0_338 - 0x44, 0x89, 0xd9, //0x00001d3f movl %r11d, %ecx - 0xf7, 0xd1, //0x00001d42 notl %ecx - 0x21, 0xf1, //0x00001d44 andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00001d46 leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00001d4a orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00001d4d movl %r15d, %ebx - 0xf7, 0xd3, //0x00001d50 notl %ebx - 0x21, 0xf3, //0x00001d52 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d54 andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00001d5a xorl %r11d, %r11d - 0x01, 0xcb, //0x00001d5d addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00001d5f setb %r11b - 0x01, 0xdb, //0x00001d63 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00001d65 xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00001d6b andl %r15d, %ebx - 0xf7, 0xd3, //0x00001d6e notl %ebx - 0x21, 0xdf, //0x00001d70 andl %ebx, %edi - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00001d72 jmp LBB0_339 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001d77 .p2align 4, 0x90 - //0x00001d80 LBB0_338 - 0x45, 0x31, 0xdb, //0x00001d80 xorl %r11d, %r11d - //0x00001d83 LBB0_339 - 0x48, 0x85, 0xff, //0x00001d83 testq %rdi, %rdi - 0x0f, 0x85, 0xe5, 0xed, 0xff, 0xff, //0x00001d86 jne LBB0_129 - 0x48, 0x83, 0xc2, 0x20, //0x00001d8c addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00001d90 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00001d94 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00001d98 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00001d9c cmpq $63, %rcx - 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001da0 jg LBB0_336 - 0x4d, 0x85, 0xdb, //0x00001da6 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x19, 0x00, 0x00, //0x00001da9 jne LBB0_570 - 0x49, 0x01, 0xd2, //0x00001daf addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00001db2 subq %rdx, %r9 - //0x00001db5 LBB0_343 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001db5 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001db9 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00001dc3 testq %r9, %r9 - 0x0f, 0x8f, 0x8e, 0x19, 0x00, 0x00, //0x00001dc6 jg LBB0_574 - 0xe9, 0x76, 0x1c, 0x00, 0x00, //0x00001dcc jmp LBB0_638 - //0x00001dd1 LBB0_344 - 0x48, 0x89, 0xfa, //0x00001dd1 movq %rdi, %rdx - 0x48, 0x29, 0xc2, //0x00001dd4 subq %rax, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x00001dd7 cmpq $16, %rdx - 0x0f, 0x82, 0x3c, 0x12, 0x00, 0x00, //0x00001ddb jb LBB0_498 - 0x48, 0x89, 0xc2, //0x00001de1 movq %rax, %rdx - 0x48, 0xf7, 0xda, //0x00001de4 negq %rdx - 0x48, 0x89, 0xc1, //0x00001de7 movq %rax, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_346 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x0c, //0x00001df0 movdqu (%r12,%rcx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001df6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00001dfa pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00001dff pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00001e04 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00001e08 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001e0c pmovmskb %xmm3, %esi - 0x85, 0xf6, //0x00001e10 testl %esi, %esi - 0x0f, 0x85, 0x33, 0x05, 0x00, 0x00, //0x00001e12 jne LBB0_605 - 0x48, 0x83, 0xc1, 0x10, //0x00001e18 addq $16, %rcx - 0x48, 0x8d, 0x34, 0x17, //0x00001e1c leaq (%rdi,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xf0, //0x00001e20 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001e24 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001e28 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00001e2c ja LBB0_346 - 0x4c, 0x89, 0xe1, //0x00001e32 movq %r12, %rcx - 0x48, 0x29, 0xd1, //0x00001e35 subq %rdx, %rcx - 0x48, 0x01, 0xd7, //0x00001e38 addq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00001e3b movq %rdi, %rdx - 0x48, 0x85, 0xd2, //0x00001e3e testq %rdx, %rdx - 0x0f, 0x84, 0xe3, 0x11, 0x00, 0x00, //0x00001e41 je LBB0_499 - //0x00001e47 LBB0_349 - 0x48, 0x8d, 0x3c, 0x11, //0x00001e47 leaq (%rcx,%rdx), %rdi - 0x31, 0xf6, //0x00001e4b xorl %esi, %esi - //0x00001e4d LBB0_350 - 0x0f, 0xb6, 0x1c, 0x31, //0x00001e4d movzbl (%rcx,%rsi), %ebx - 0x80, 0xfb, 0x2c, //0x00001e51 cmpb $44, %bl - 0x0f, 0x84, 0x81, 0x0d, 0x00, 0x00, //0x00001e54 je LBB0_462 - 0x80, 0xfb, 0x7d, //0x00001e5a cmpb $125, %bl - 0x0f, 0x84, 0x78, 0x0d, 0x00, 0x00, //0x00001e5d je LBB0_462 - 0x80, 0xfb, 0x5d, //0x00001e63 cmpb $93, %bl - 0x0f, 0x84, 0x6f, 0x0d, 0x00, 0x00, //0x00001e66 je LBB0_462 - 0x48, 0x83, 0xc6, 0x01, //0x00001e6c addq $1, %rsi - 0x48, 0x39, 0xf2, //0x00001e70 cmpq %rsi, %rdx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00001e73 jne LBB0_350 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00001e79 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00001e7e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf9, //0x00001e82 movq %rdi, %rcx - //0x00001e85 LBB0_355 - 0x4c, 0x29, 0xe1, //0x00001e85 subq %r12, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001e88 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001e8c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e90 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00001e9a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00001e9e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x0e, //0x00001ea3 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00001ea6 testq %rax, %rax - 0x0f, 0x8f, 0x11, 0xe3, 0xff, 0xff, //0x00001ea9 jg LBB0_4 - 0xe9, 0x44, 0x1b, 0x00, 0x00, //0x00001eaf jmp LBB0_606 - //0x00001eb4 LBB0_356 - 0x48, 0x8b, 0x55, 0xa8, //0x00001eb4 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001eb8 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x00001ebc movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x00001ebf subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001ec2 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001ec6 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001ec9 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x00001ecc xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x00001ecf xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001ed2 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001ed5 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001ed9 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001edd jge LBB0_357 - //0x00001ee3 LBB0_366 - 0x48, 0x85, 0xd2, //0x00001ee3 testq %rdx, %rdx - 0x0f, 0x8e, 0x6b, 0x1d, 0x00, 0x00, //0x00001ee6 jle LBB0_648 - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001eec movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00001ef1 movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x00001ef5 pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ef9 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001efe movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001f06 movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f0e movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x00001f16 movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x00001f19 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f1c andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f22 cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f28 jb LBB0_370 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00001f2e cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f33 jb LBB0_371 - 0x0f, 0x10, 0x1f, //0x00001f39 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f3c movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f43 movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f48 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x00001f50 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x00001f54 movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x00001f58 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f5c leaq $-144(%rbp), %rdx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f63 jmp LBB0_372 - //0x00001f68 LBB0_370 - 0x66, 0x0f, 0x6f, 0xd6, //0x00001f68 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f6c movdqa %xmm7, %xmm13 - 0x49, 0x89, 0xfc, //0x00001f71 movq %rdi, %r12 - 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f74 jmp LBB0_357 - //0x00001f79 LBB0_371 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f79 leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001f80 movq $-64(%rbp), %rsi - //0x00001f84 LBB0_372 - 0x48, 0x83, 0xfe, 0x10, //0x00001f84 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f88 jb LBB0_373 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f8e movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f92 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x00001f96 addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x00001f9a addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001f9e addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001fa2 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001fa6 jae LBB0_380 - //0x00001fac LBB0_374 - 0x48, 0x83, 0xfe, 0x04, //0x00001fac cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001fb0 jl LBB0_375 - //0x00001fb6 LBB0_381 - 0x8b, 0x0f, //0x00001fb6 movl (%rdi), %ecx - 0x89, 0x0a, //0x00001fb8 movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x00001fba addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001fbe addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001fc2 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00001fc6 cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fca jae LBB0_376 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fd0 jmp LBB0_377 - //0x00001fd5 LBB0_373 - 0x48, 0x83, 0xfe, 0x08, //0x00001fd5 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fd9 jb LBB0_374 - //0x00001fdf LBB0_380 - 0x48, 0x8b, 0x0f, //0x00001fdf movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001fe2 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001fe5 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x00001fe9 addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001fed addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001ff1 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001ff5 jge LBB0_381 - //0x00001ffb LBB0_375 - 0x48, 0x83, 0xfe, 0x02, //0x00001ffb cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fff jb LBB0_377 - //0x00002005 LBB0_376 - 0x0f, 0xb7, 0x0f, //0x00002005 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x00002008 movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000200b addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x0000200f addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00002013 addq $-2, %rsi - //0x00002017 LBB0_377 - 0x48, 0x89, 0xf9, //0x00002017 movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000201a leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x00002021 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x00002024 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002028 movdqa %xmm7, %xmm13 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x0000202d je LBB0_357 - 0x8a, 0x09, //0x00002033 movb (%rcx), %cl - 0x88, 0x0a, //0x00002035 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002037 leaq $-176(%rbp), %r12 - //0x0000203e LBB0_357 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x0000203e movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00002044 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x0000204b movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00002052 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x00002059 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000205d pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00002061 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x00002065 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002069 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000206d pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002071 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002075 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002079 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x0000207d movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002081 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002085 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00002089 shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x0000208d shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00002091 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00002094 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002098 orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x0000209b orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x0000209e movq %rdx, %rcx - 0x4c, 0x09, 0xd1, //0x000020a1 orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000020a4 jne LBB0_359 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000020aa movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x000020b1 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000020b4 jmp LBB0_360 - //0x000020b9 LBB0_359 - 0x4c, 0x89, 0xd1, //0x000020b9 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x000020bc notq %rcx - 0x48, 0x21, 0xd1, //0x000020bf andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x000020c2 leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x000020c6 orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x000020c9 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x000020cc notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020cf movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x000020d9 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x000020dc andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x000020df xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x000020e2 addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x000020e5 setb %r10b - 0x48, 0x01, 0xd2, //0x000020e9 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020ec movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x000020f6 xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x000020f9 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x000020fc notq %rdx - //0x000020ff LBB0_360 - 0x66, 0x0f, 0x6f, 0xdd, //0x000020ff movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002103 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002107 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x0000210b shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x0000210f movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002113 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002117 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x0000211b shlq $32, %rsi - 0x48, 0x09, 0xce, //0x0000211f orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00002122 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002126 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000212a pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x0000212e shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002132 orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00002135 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002139 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000213d pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00002141 orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002144 andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002147 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x0000214c pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00002153 movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00002158 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x0000215b movdqa %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000215f pcmpeqb %xmm13, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00002164 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002169 movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000216d pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002172 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002176 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000217a pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x0000217f pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00002183 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002187 pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000218c pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00002190 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00002194 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00002198 orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x0000219b shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x0000219f orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x000021a2 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x000021a5 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x000021a8 notq %r8 - 0x4d, 0x21, 0xc5, //0x000021ab andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x000021ae pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x000021b3 pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021b7 pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x000021bc pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021c0 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x000021c5 pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021c9 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021ce pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x000021d3 shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x000021d7 shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x000021db orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x000021de shlq $16, %rsi - 0x48, 0x09, 0xce, //0x000021e2 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x000021e5 orq %rsi, %rdx - 0x4c, 0x21, 0xc2, //0x000021e8 andq %r8, %rdx - 0x0f, 0x84, 0x86, 0x00, 0x00, 0x00, //0x000021eb je LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021f1 movabsq $3689348814741910323, %r8 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021fb .p2align 4, 0x90 - //0x00002200 LBB0_362 - 0x48, 0x8d, 0x7a, 0xff, //0x00002200 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00002204 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00002207 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x0000220a movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x0000220d shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002210 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x0000221a andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x0000221d subq %rsi, %rcx + 0x0f, 0x83, 0xc5, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_228 + 0xe9, 0xdf, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_187 + //0x00000fa8 LBB0_188 + 0x41, 0x89, 0xc9, //0x00000fa8 movl %ecx, %r9d + 0x49, 0x01, 0xf9, //0x00000fab addq %rdi, %r9 + 0x4d, 0x01, 0xe9, //0x00000fae addq %r13, %r9 + 0xe9, 0x1c, 0x02, 0x00, 0x00, //0x00000fb1 jmp LBB0_217 + //0x00000fb6 LBB0_189 + 0x49, 0x89, 0xc2, //0x00000fb6 movq %rax, %r10 + 0x49, 0x29, 0xd2, //0x00000fb9 subq %rdx, %r10 + 0x0f, 0x84, 0xe1, 0x2c, 0x00, 0x00, //0x00000fbc je LBB0_658 + 0x4c, 0x89, 0x65, 0xb8, //0x00000fc2 movq %r12, $-72(%rbp) + 0x49, 0x83, 0xfa, 0x40, //0x00000fc6 cmpq $64, %r10 + 0x0f, 0x82, 0x15, 0x20, 0x00, 0x00, //0x00000fca jb LBB0_512 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fd0 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x00000fd8 movq $-64(%rbp), %rax + 0x45, 0x31, 0xe4, //0x00000fdc xorl %r12d, %r12d + 0x90, //0x00000fdf .p2align 4, 0x90 + //0x00000fe0 LBB0_192 + 0x48, 0x8b, 0x4d, 0xb8, //0x00000fe0 movq $-72(%rbp), %rcx + 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000fe4 movdqu (%rcx,%rax), %xmm13 + 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000fea movdqu $16(%rcx,%rax), %xmm6 + 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00000ff0 movdqu $32(%rcx,%rax), %xmm5 + 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00000ff6 movdqu $48(%rcx,%rax), %xmm4 + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00000ffc movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001001 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001005 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xde, //0x0000100a movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000100e pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00001012 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001016 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000101a pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000101e pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00001023 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001027 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000102b pmovmskb %xmm3, %r15d + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001030 movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001035 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001039 pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xde, //0x0000103e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001042 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001046 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000104a movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000104e pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001052 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x00001056 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000105a pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x0000105e pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001063 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00001068 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000106c pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x00001071 pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xf6, //0x00001075 pmovmskb %xmm6, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001079 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x0000107e pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001082 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x00001087 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000108b pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000108f movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001094 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00001098 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000109d pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010a1 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x000010a6 shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x000010aa shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000010ae orq %r15, %r14 + 0x48, 0xc1, 0xe3, 0x10, //0x000010b1 shlq $16, %rbx + 0x4c, 0x09, 0xf3, //0x000010b5 orq %r14, %rbx + 0x49, 0x09, 0xdb, //0x000010b8 orq %rbx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000010bb shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000010bf shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000010c3 orq %r9, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000010c6 shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000010ca orq %rdi, %rcx + 0x49, 0xc1, 0xe0, 0x30, //0x000010cd shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000010d1 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000010d5 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000010d8 shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000010dc orq %rdx, %rsi + 0x49, 0x09, 0xcd, //0x000010df orq %rcx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010e2 jne LBB0_209 + 0x4d, 0x85, 0xe4, //0x000010e8 testq %r12, %r12 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010eb jne LBB0_211 + 0x45, 0x31, 0xe4, //0x000010f1 xorl %r12d, %r12d + 0x4c, 0x8b, 0x75, 0xd0, //0x000010f4 movq $-48(%rbp), %r14 + //0x000010f8 LBB0_195 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000010f8 movdqa %xmm12, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x000010fd pcmpgtb %xmm13, %xmm3 + 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001102 pcmpgtb %xmm10, %xmm13 + 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001107 pand %xmm3, %xmm13 + 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000110c pmovmskb %xmm13, %ecx + 0x48, 0x09, 0xce, //0x00001111 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00001114 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00001117 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000111b jne LBB0_213 + 0x48, 0x85, 0xf6, //0x00001121 testq %rsi, %rsi + 0x0f, 0x85, 0xe7, 0x2a, 0x00, 0x00, //0x00001124 jne LBB0_645 + 0x49, 0x83, 0xc2, 0xc0, //0x0000112a addq $-64, %r10 + 0x48, 0x83, 0xc0, 0x40, //0x0000112e addq $64, %rax + 0x49, 0x83, 0xfa, 0x3f, //0x00001132 cmpq $63, %r10 + 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001136 ja LBB0_192 + 0xe9, 0x27, 0x18, 0x00, 0x00, //0x0000113c jmp LBB0_198 + //0x00001141 LBB0_209 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001141 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00001146 movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000114a jne LBB0_212 + 0x49, 0x0f, 0xbc, 0xcd, //0x00001150 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00001154 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001157 movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000115b jmp LBB0_212 + //0x00001160 LBB0_211 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001160 movq $-48(%rbp), %r14 + //0x00001164 LBB0_212 + 0x4c, 0x89, 0xe1, //0x00001164 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00001167 notq %rcx + 0x4c, 0x21, 0xe9, //0x0000116a andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000116d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xe2, //0x00001171 orq %r12, %rdx + 0x48, 0x89, 0xd7, //0x00001174 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00001177 notq %rdi + 0x4c, 0x21, 0xef, //0x0000117a andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000117d movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x00001187 andq %rbx, %rdi + 0x45, 0x31, 0xe4, //0x0000118a xorl %r12d, %r12d + 0x48, 0x01, 0xcf, //0x0000118d addq %rcx, %rdi + 0x41, 0x0f, 0x92, 0xc4, //0x00001190 setb %r12b + 0x48, 0x01, 0xff, //0x00001194 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001197 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x000011a1 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x000011a4 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x000011a7 notq %rdi + 0x49, 0x21, 0xfb, //0x000011aa andq %rdi, %r11 + 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011ad jmp LBB0_195 + //0x000011b2 LBB0_213 + 0x49, 0x0f, 0xbc, 0xcb, //0x000011b2 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000011b6 testq %rsi, %rsi + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011b9 je LBB0_310 + 0x48, 0x0f, 0xbc, 0xd6, //0x000011bf bsfq %rsi, %rdx + 0xe9, 0x08, 0x06, 0x00, 0x00, //0x000011c3 jmp LBB0_311 + //0x000011c8 LBB0_215 + 0x48, 0x01, 0xd6, //0x000011c8 addq %rdx, %rsi + 0x49, 0x89, 0xf1, //0x000011cb movq %rsi, %r9 + //0x000011ce LBB0_216 + 0x48, 0x8b, 0x7d, 0xb8, //0x000011ce movq $-72(%rbp), %rdi + //0x000011d2 LBB0_217 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011d2 movq $-1, %r13 + 0x4d, 0x85, 0xc0, //0x000011d9 testq %r8, %r8 + 0x0f, 0x84, 0xb4, 0x28, 0x00, 0x00, //0x000011dc je LBB0_626 + 0x4d, 0x85, 0xd2, //0x000011e2 testq %r10, %r10 + 0x0f, 0x84, 0xab, 0x28, 0x00, 0x00, //0x000011e5 je LBB0_626 + 0x4d, 0x85, 0xff, //0x000011eb testq %r15, %r15 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011ee movabsq $4294977024, %r11 + 0x0f, 0x84, 0x98, 0x28, 0x00, 0x00, //0x000011f8 je LBB0_626 + 0x49, 0x29, 0xf9, //0x000011fe subq %rdi, %r9 + 0x49, 0x8d, 0x49, 0xff, //0x00001201 leaq $-1(%r9), %rcx + 0x49, 0x39, 0xc8, //0x00001205 cmpq %rcx, %r8 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00001208 je LBB0_226 + 0x49, 0x39, 0xca, //0x0000120e cmpq %rcx, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00001211 je LBB0_226 + 0x49, 0x39, 0xcf, //0x00001217 cmpq %rcx, %r15 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000121a je LBB0_226 + 0x4d, 0x85, 0xd2, //0x00001220 testq %r10, %r10 + 0x0f, 0x8e, 0x7f, 0x05, 0x00, 0x00, //0x00001223 jle LBB0_307 + 0x49, 0x8d, 0x4a, 0xff, //0x00001229 leaq $-1(%r10), %rcx + 0x49, 0x39, 0xcf, //0x0000122d cmpq %rcx, %r15 + 0x0f, 0x84, 0x72, 0x05, 0x00, 0x00, //0x00001230 je LBB0_307 + 0x49, 0xf7, 0xd2, //0x00001236 notq %r10 + 0x4d, 0x89, 0xd5, //0x00001239 movq %r10, %r13 + 0xe9, 0xb3, 0x14, 0x00, 0x00, //0x0000123c jmp LBB0_451 + //0x00001241 LBB0_226 + 0x49, 0xf7, 0xd9, //0x00001241 negq %r9 + 0x4d, 0x89, 0xcd, //0x00001244 movq %r9, %r13 + 0xe9, 0xa8, 0x14, 0x00, 0x00, //0x00001247 jmp LBB0_451 + //0x0000124c LBB0_227 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000124c movl $64, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00001251 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001255 movabsq $4294977024, %r11 + 0x48, 0x39, 0xca, //0x0000125f cmpq %rcx, %rdx + 0x0f, 0x82, 0x1f, 0x2a, 0x00, 0x00, //0x00001262 jb LBB0_187 + //0x00001268 LBB0_228 + 0x48, 0x01, 0xc8, //0x00001268 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000126b addq $1, %rax + //0x0000126f LBB0_229 + 0x48, 0x85, 0xc0, //0x0000126f testq %rax, %rax + 0x0f, 0x88, 0xf9, 0x27, 0x00, 0x00, //0x00001272 js LBB0_623 + 0x49, 0x89, 0x06, //0x00001278 movq %rax, (%r14) + 0x48, 0x8b, 0x45, 0xc0, //0x0000127b movq $-64(%rbp), %rax + //0x0000127f LBB0_231 + 0x48, 0x85, 0xc0, //0x0000127f testq %rax, %rax + 0x0f, 0x8f, 0x48, 0xef, 0xff, 0xff, //0x00001282 jg LBB0_4 + 0xe9, 0xdb, 0x27, 0x00, 0x00, //0x00001288 jmp LBB0_232 + //0x0000128d LBB0_233 + 0x49, 0x8b, 0x0e, //0x0000128d movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x00001290 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001294 movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001298 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x0000129c cmpq %rsi, %rcx + 0x0f, 0x87, 0x35, 0x28, 0x00, 0x00, //0x0000129f ja LBB0_629 + 0x41, 0x8b, 0x14, 0x0c, //0x000012a5 movl (%r12,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012a9 cmpl $1702063201, %edx + 0x0f, 0x85, 0xfb, 0x28, 0x00, 0x00, //0x000012af jne LBB0_640 + 0x48, 0x8d, 0x41, 0x04, //0x000012b5 leaq $4(%rcx), %rax + 0x49, 0x89, 0x06, //0x000012b9 movq %rax, (%r14) + 0x48, 0x85, 0xc9, //0x000012bc testq %rcx, %rcx + 0x0f, 0x8f, 0x0b, 0xef, 0xff, 0xff, //0x000012bf jg LBB0_4 + 0xe9, 0x3b, 0x29, 0x00, 0x00, //0x000012c5 jmp LBB0_236 + //0x000012ca LBB0_237 + 0x48, 0x8b, 0x4d, 0x98, //0x000012ca movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000012ce testb $64, %cl + 0x0f, 0x85, 0x5b, 0x05, 0x00, 0x00, //0x000012d1 jne LBB0_317 + 0x49, 0x8b, 0x16, //0x000012d7 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000012da movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000012de movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000012e2 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000012e5 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000012e9 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xae, 0x10, 0x00, 0x00, //0x000012ed jne LBB0_400 + 0x49, 0x89, 0xc1, //0x000012f3 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000012f6 subq %rdx, %r9 + 0x0f, 0x84, 0xb1, 0x29, 0x00, 0x00, //0x000012f9 je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000012ff cmpq $64, %r9 + 0x0f, 0x82, 0xb1, 0x1d, 0x00, 0x00, //0x00001303 jb LBB0_518 + 0x49, 0x89, 0xd6, //0x00001309 movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x0000130c notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000130f movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x00001317 movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x0000131a xorl %r8d, %r8d + 0x90, 0x90, 0x90, //0x0000131d .p2align 4, 0x90 + //0x00001320 LBB0_242 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001320 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001326 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000132d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001334 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000133b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000133f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001343 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00001348 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000134c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x00001350 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x00001354 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001358 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000135c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00001360 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001364 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00001368 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000136c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001370 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00001375 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001379 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x74, 0xe9, //0x0000137d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001381 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00001385 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00001389 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000138e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00001392 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00001396 orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001399 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000139d orq %rsi, %rcx + 0x49, 0x09, 0xca, //0x000013a0 orq %rcx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000013a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000013a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000013ab orq %r15, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000013ae shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000013b2 orq %rdi, %rbx + 0x49, 0x09, 0xdb, //0x000013b5 orq %rbx, %r11 + 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000013b8 jne LBB0_251 + 0x4d, 0x85, 0xc0, //0x000013be testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x000013c1 jne LBB0_253 + 0x45, 0x31, 0xc0, //0x000013c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000013ca testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000013cd movabsq $4294977024, %r11 + 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_254 + //0x000013dd LBB0_245 + 0x49, 0x83, 0xc1, 0xc0, //0x000013dd addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000013e1 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000013e5 addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000013e9 cmpq $63, %r9 + 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x000013ed ja LBB0_242 + 0xe9, 0x90, 0x18, 0x00, 0x00, //0x000013f3 jmp LBB0_246 + //0x000013f8 LBB0_251 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000013f8 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000013fd jne LBB0_253 + 0x49, 0x0f, 0xbc, 0xcb, //0x00001403 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x00001407 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000140a movq %rcx, $-56(%rbp) + //0x0000140e LBB0_253 + 0x4c, 0x89, 0xc1, //0x0000140e movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00001411 notq %rcx + 0x4c, 0x21, 0xd9, //0x00001414 andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00001417 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x0000141b orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x0000141e movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001421 notq %rsi + 0x4c, 0x21, 0xde, //0x00001424 andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001427 movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00001431 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x00001434 xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x00001437 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x0000143a setb %r8b + 0x48, 0x01, 0xf6, //0x0000143e addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001441 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x0000144b xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000144e andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001451 notq %rsi + 0x49, 0x21, 0xf2, //0x00001454 andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00001457 testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000145a movabsq $4294977024, %r11 + 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x00001464 je LBB0_245 + //0x0000146a LBB0_254 + 0x49, 0x0f, 0xbc, 0xc2, //0x0000146a bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000146e subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00001471 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00001475 movq $-64(%rbp), %rbx + 0xe9, 0xe5, 0x11, 0x00, 0x00, //0x00001479 jmp LBB0_441 + //0x0000147e LBB0_255 + 0x48, 0x8b, 0x45, 0xa8, //0x0000147e movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00001482 movq $8(%rax), %r9 + 0x49, 0x8b, 0x06, //0x00001486 movq (%r14), %rax + 0xf6, 0x45, 0x98, 0x40, //0x00001489 testb $64, $-104(%rbp) + 0x0f, 0x85, 0xae, 0x04, 0x00, 0x00, //0x0000148d jne LBB0_327 + 0x49, 0x29, 0xc1, //0x00001493 subq %rax, %r9 + 0x0f, 0x84, 0x92, 0x27, 0x00, 0x00, //0x00001496 je LBB0_647 + 0x49, 0x8d, 0x0c, 0x04, //0x0000149c leaq (%r12,%rax), %rcx + 0x48, 0x89, 0x4d, 0xb8, //0x000014a0 movq %rcx, $-72(%rbp) + 0x80, 0x39, 0x30, //0x000014a4 cmpb $48, (%rcx) + 0x0f, 0x85, 0x39, 0x00, 0x00, 0x00, //0x000014a7 jne LBB0_261 + 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014ad movl $1, %ebx + 0x49, 0x83, 0xf9, 0x01, //0x000014b2 cmpq $1, %r9 + 0x0f, 0x84, 0xa6, 0x17, 0x00, 0x00, //0x000014b6 je LBB0_487 + 0x48, 0x8b, 0x4d, 0xb8, //0x000014bc movq $-72(%rbp), %rcx + 0x8a, 0x49, 0x01, //0x000014c0 movb $1(%rcx), %cl + 0x80, 0xc1, 0xd2, //0x000014c3 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000014c6 cmpb $55, %cl + 0x0f, 0x87, 0x93, 0x17, 0x00, 0x00, //0x000014c9 ja LBB0_487 + 0x0f, 0xb6, 0xc9, //0x000014cf movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000014d2 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x000014dc btq %rcx, %rdx + 0x0f, 0x83, 0x7c, 0x17, 0x00, 0x00, //0x000014e0 jae LBB0_487 + //0x000014e6 LBB0_261 + 0x49, 0x83, 0xf9, 0x10, //0x000014e6 cmpq $16, %r9 + 0x0f, 0x82, 0xa9, 0x1b, 0x00, 0x00, //0x000014ea jb LBB0_517 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000014f0 movq $-1, %r13 + 0x31, 0xdb, //0x000014f7 xorl %ebx, %ebx + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000014f9 movq $-1, %r8 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001500 movq $-1, %r14 + 0x4d, 0x89, 0xca, //0x00001507 movq %r9, %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000150a .p2align 4, 0x90 + //0x00001510 LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001510 movq $-72(%rbp), %rcx + 0xf3, 0x0f, 0x6f, 0x1c, 0x19, //0x00001514 movdqu (%rcx,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001519 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0x7b, 0xeb, 0xff, 0xff, //0x0000151d pcmpgtb $-5253(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001525 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000152a pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x0000152e pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001532 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0x82, 0xeb, 0xff, 0xff, //0x00001536 pcmpeqb $-5246(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x0000153e movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0x86, 0xeb, 0xff, 0xff, //0x00001542 pcmpeqb $-5242(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x0000154a por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x0000154e movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x00001552 pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0x81, 0xeb, 0xff, 0xff, //0x00001557 pcmpeqb $-5247(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000155f pcmpeqb %xmm11, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00001564 pmovmskb %xmm4, %r15d + 0x66, 0x0f, 0xeb, 0xe3, //0x00001569 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x0000156d por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00001571 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001575 pmovmskb %xmm3, %edx + 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x00001579 pmovmskb %xmm6, %r11d + 0x66, 0x0f, 0xd7, 0xcd, //0x0000157e pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00001582 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00001584 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001587 cmpl $16, %ecx + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000158a je LBB0_265 + 0xbe, 0xff, 0xff, 0xff, 0xff, //0x00001590 movl $-1, %esi + 0xd3, 0xe6, //0x00001595 shll %cl, %esi + 0xf7, 0xd6, //0x00001597 notl %esi + 0x21, 0xf2, //0x00001599 andl %esi, %edx + 0x41, 0x21, 0xf7, //0x0000159b andl %esi, %r15d + 0x44, 0x21, 0xde, //0x0000159e andl %r11d, %esi + 0x41, 0x89, 0xf3, //0x000015a1 movl %esi, %r11d + //0x000015a4 LBB0_265 + 0x8d, 0x72, 0xff, //0x000015a4 leal $-1(%rdx), %esi + 0x21, 0xd6, //0x000015a7 andl %edx, %esi + 0x0f, 0x85, 0x79, 0x16, 0x00, 0x00, //0x000015a9 jne LBB0_481 + 0x41, 0x8d, 0x77, 0xff, //0x000015af leal $-1(%r15), %esi + 0x44, 0x21, 0xfe, //0x000015b3 andl %r15d, %esi + 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x000015b6 jne LBB0_481 + 0x41, 0x8d, 0x73, 0xff, //0x000015bc leal $-1(%r11), %esi + 0x44, 0x21, 0xde, //0x000015c0 andl %r11d, %esi + 0x0f, 0x85, 0x5f, 0x16, 0x00, 0x00, //0x000015c3 jne LBB0_481 + 0x85, 0xd2, //0x000015c9 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000015cb je LBB0_271 + 0x0f, 0xbc, 0xd2, //0x000015d1 bsfl %edx, %edx + 0x49, 0x83, 0xfe, 0xff, //0x000015d4 cmpq $-1, %r14 + 0x0f, 0x85, 0x73, 0x16, 0x00, 0x00, //0x000015d8 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015de addq %rbx, %rdx + 0x49, 0x89, 0xd6, //0x000015e1 movq %rdx, %r14 + //0x000015e4 LBB0_271 + 0x45, 0x85, 0xff, //0x000015e4 testl %r15d, %r15d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015e7 je LBB0_274 + 0x41, 0x0f, 0xbc, 0xd7, //0x000015ed bsfl %r15d, %edx + 0x49, 0x83, 0xf8, 0xff, //0x000015f1 cmpq $-1, %r8 + 0x0f, 0x85, 0x56, 0x16, 0x00, 0x00, //0x000015f5 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015fb addq %rbx, %rdx + 0x49, 0x89, 0xd0, //0x000015fe movq %rdx, %r8 + //0x00001601 LBB0_274 + 0x45, 0x85, 0xdb, //0x00001601 testl %r11d, %r11d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001604 je LBB0_277 + 0x41, 0x0f, 0xbc, 0xd3, //0x0000160a bsfl %r11d, %edx + 0x49, 0x83, 0xfd, 0xff, //0x0000160e cmpq $-1, %r13 + 0x0f, 0x85, 0x39, 0x16, 0x00, 0x00, //0x00001612 jne LBB0_484 + 0x48, 0x01, 0xda, //0x00001618 addq %rbx, %rdx + 0x49, 0x89, 0xd5, //0x0000161b movq %rdx, %r13 + //0x0000161e LBB0_277 + 0x83, 0xf9, 0x10, //0x0000161e cmpl $16, %ecx + 0x0f, 0x85, 0x93, 0x0f, 0x00, 0x00, //0x00001621 jne LBB0_426 + 0x49, 0x83, 0xc2, 0xf0, //0x00001627 addq $-16, %r10 + 0x48, 0x83, 0xc3, 0x10, //0x0000162b addq $16, %rbx + 0x49, 0x83, 0xfa, 0x0f, //0x0000162f cmpq $15, %r10 + 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x00001633 ja LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001639 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x34, 0x19, //0x0000163d leaq (%rcx,%rbx), %rsi + 0x49, 0x89, 0xf3, //0x00001641 movq %rsi, %r11 + 0x49, 0x39, 0xd9, //0x00001644 cmpq %rbx, %r9 + 0x0f, 0x84, 0x82, 0x0f, 0x00, 0x00, //0x00001647 je LBB0_428 + //0x0000164d LBB0_280 + 0x4e, 0x8d, 0x1c, 0x16, //0x0000164d leaq (%rsi,%r10), %r11 + 0x49, 0x89, 0xf1, //0x00001651 movq %rsi, %r9 + 0x4c, 0x2b, 0x4d, 0xb8, //0x00001654 subq $-72(%rbp), %r9 + 0x31, 0xdb, //0x00001658 xorl %ebx, %ebx + 0xe9, 0x1e, 0x00, 0x00, 0x00, //0x0000165a jmp LBB0_284 + //0x0000165f LBB0_281 + 0x49, 0x83, 0xfd, 0xff, //0x0000165f cmpq $-1, %r13 + 0x0f, 0x85, 0xd7, 0x15, 0x00, 0x00, //0x00001663 jne LBB0_483 + 0x4d, 0x8d, 0x2c, 0x19, //0x00001669 leaq (%r9,%rbx), %r13 + 0x90, 0x90, 0x90, //0x0000166d .p2align 4, 0x90 + //0x00001670 LBB0_283 + 0x48, 0x83, 0xc3, 0x01, //0x00001670 addq $1, %rbx + 0x49, 0x39, 0xda, //0x00001674 cmpq %rbx, %r10 + 0x0f, 0x84, 0x52, 0x0f, 0x00, 0x00, //0x00001677 je LBB0_428 + //0x0000167d LBB0_284 + 0x0f, 0xbe, 0x0c, 0x1e, //0x0000167d movsbl (%rsi,%rbx), %ecx + 0x8d, 0x51, 0xd0, //0x00001681 leal $-48(%rcx), %edx + 0x83, 0xfa, 0x0a, //0x00001684 cmpl $10, %edx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00001687 jb LBB0_283 + 0x8d, 0x51, 0xd5, //0x0000168d leal $-43(%rcx), %edx + 0x83, 0xfa, 0x1a, //0x00001690 cmpl $26, %edx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00001693 ja LBB0_289 + 0x48, 0x8d, 0x3d, 0xb4, 0x28, 0x00, 0x00, //0x00001699 leaq $10420(%rip), %rdi /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x0c, 0x97, //0x000016a0 movslq (%rdi,%rdx,4), %rcx + 0x48, 0x01, 0xf9, //0x000016a4 addq %rdi, %rcx + 0xff, 0xe1, //0x000016a7 jmpq *%rcx + //0x000016a9 LBB0_287 + 0x49, 0x83, 0xfe, 0xff, //0x000016a9 cmpq $-1, %r14 + 0x0f, 0x85, 0x8d, 0x15, 0x00, 0x00, //0x000016ad jne LBB0_483 + 0x4d, 0x8d, 0x34, 0x19, //0x000016b3 leaq (%r9,%rbx), %r14 + 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016b7 jmp LBB0_283 + //0x000016bc LBB0_289 + 0x83, 0xf9, 0x65, //0x000016bc cmpl $101, %ecx + 0x0f, 0x85, 0x04, 0x0f, 0x00, 0x00, //0x000016bf jne LBB0_427 + //0x000016c5 LBB0_290 + 0x49, 0x83, 0xf8, 0xff, //0x000016c5 cmpq $-1, %r8 + 0x0f, 0x85, 0x71, 0x15, 0x00, 0x00, //0x000016c9 jne LBB0_483 + 0x4d, 0x8d, 0x04, 0x19, //0x000016cf leaq (%r9,%rbx), %r8 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x000016d3 jmp LBB0_283 + //0x000016d8 LBB0_292 + 0xf6, 0x45, 0x98, 0x40, //0x000016d8 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x46, 0x03, 0x00, 0x00, //0x000016dc jne LBB0_340 + 0x49, 0x8b, 0x45, 0x00, //0x000016e2 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000016e6 cmpq $4095, %rax + 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000016ec jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x000016f2 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x000016f6 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000016fa movq $5, $8(%r13,%rax,8) + 0xe9, 0xc8, 0xea, 0xff, 0xff, //0x00001703 jmp LBB0_4 + //0x00001708 LBB0_295 + 0x49, 0x8b, 0x0e, //0x00001708 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000170b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000170f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001713 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001717 cmpq %rsi, %rcx + 0x0f, 0x87, 0xba, 0x23, 0x00, 0x00, //0x0000171a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001720 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001724 cmpl $1819047278, $-1(%r12,%rcx) + 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000172d je LBB0_306 + 0xe9, 0x2a, 0x24, 0x00, 0x00, //0x00001733 jmp LBB0_297 + //0x00001738 LBB0_301 + 0xf6, 0x45, 0x98, 0x40, //0x00001738 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x5c, 0x07, 0x00, 0x00, //0x0000173c jne LBB0_366 + 0x49, 0x8b, 0x45, 0x00, //0x00001742 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001746 cmpq $4095, %rax + 0x0f, 0x8f, 0xfe, 0x22, 0x00, 0x00, //0x0000174c jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x00001752 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001756 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000175a movq $6, $8(%r13,%rax,8) + 0xe9, 0x68, 0xea, 0xff, 0xff, //0x00001763 jmp LBB0_4 + //0x00001768 LBB0_304 + 0x49, 0x8b, 0x0e, //0x00001768 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000176b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000176f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001773 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001777 cmpq %rsi, %rcx + 0x0f, 0x87, 0x5a, 0x23, 0x00, 0x00, //0x0000177a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001780 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001784 cmpl $1702195828, $-1(%r12,%rcx) + 0x0f, 0x85, 0x88, 0x23, 0x00, 0x00, //0x0000178d jne LBB0_635 + //0x00001793 LBB0_306 + 0x48, 0x8d, 0x51, 0x03, //0x00001793 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00001797 movq %rdx, (%r14) + 0x48, 0x85, 0xc9, //0x0000179a testq %rcx, %rcx + 0x0f, 0x8f, 0x2d, 0xea, 0xff, 0xff, //0x0000179d jg LBB0_4 + 0xe9, 0x07, 0x23, 0x00, 0x00, //0x000017a3 jmp LBB0_650 + //0x000017a8 LBB0_307 + 0x4c, 0x89, 0xc1, //0x000017a8 movq %r8, %rcx + 0x4c, 0x09, 0xf9, //0x000017ab orq %r15, %rcx + 0x0f, 0x99, 0xc2, //0x000017ae setns %dl + 0x0f, 0x88, 0xce, 0x0b, 0x00, 0x00, //0x000017b1 js LBB0_399 + 0x4d, 0x39, 0xf8, //0x000017b7 cmpq %r15, %r8 + 0x0f, 0x8c, 0xc5, 0x0b, 0x00, 0x00, //0x000017ba jl LBB0_399 + 0x49, 0xf7, 0xd0, //0x000017c0 notq %r8 + 0x4d, 0x89, 0xc5, //0x000017c3 movq %r8, %r13 + 0xe9, 0x29, 0x0f, 0x00, 0x00, //0x000017c6 jmp LBB0_451 + //0x000017cb LBB0_310 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017cb movl $64, %edx + //0x000017d0 LBB0_311 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017d0 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5d, 0xe8, 0xff, 0xff, //0x000017da movdqu $-6051(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x48, 0x8b, 0x75, 0xc0, //0x000017e3 movq $-64(%rbp), %rsi + 0x48, 0x39, 0xca, //0x000017e7 cmpq %rcx, %rdx + 0x0f, 0x82, 0x67, 0x24, 0x00, 0x00, //0x000017ea jb LBB0_654 + 0x48, 0x01, 0xc8, //0x000017f0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000017f3 addq $1, %rax + //0x000017f7 LBB0_313 + 0x48, 0x85, 0xc0, //0x000017f7 testq %rax, %rax + 0x0f, 0x88, 0xc1, 0x22, 0x00, 0x00, //0x000017fa js LBB0_627 + 0x49, 0x89, 0x06, //0x00001800 movq %rax, (%r14) + 0x48, 0x85, 0xf6, //0x00001803 testq %rsi, %rsi + 0x0f, 0x8e, 0xd6, 0x22, 0x00, 0x00, //0x00001806 jle LBB0_630 + //0x0000180c LBB0_315 + 0x49, 0x8b, 0x45, 0x00, //0x0000180c movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001810 cmpq $4095, %rax + 0x0f, 0x8f, 0x34, 0x22, 0x00, 0x00, //0x00001816 jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x0000181c leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001820 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001824 movq $4, $8(%r13,%rax,8) + 0xe9, 0x9e, 0xe9, 0xff, 0xff, //0x0000182d jmp LBB0_4 + //0x00001832 LBB0_317 + 0x48, 0x8b, 0x4d, 0xa8, //0x00001832 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001836 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x0000183a movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x0000183d leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00001841 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00001844 cmpq $32, %r9 + 0x0f, 0x8c, 0xd7, 0x00, 0x00, 0x00, //0x00001848 jl LBB0_326 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x0000184e movl $32, %r14d + 0x31, 0xf6, //0x00001854 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00001856 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001859 .p2align 4, 0x90 + //0x00001860 LBB0_319 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00001860 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00001866 movdqu $16(%r10,%rsi), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000186d movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001871 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001875 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x00001879 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000187d pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001881 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00001885 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00001889 orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xd9, //0x0000188c pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001890 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x74, 0xe1, //0x00001894 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00001898 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x0000189c shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x000018a0 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x000018a3 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x000018a6 orq %r11, %rcx + 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x000018a9 je LBB0_321 + 0x44, 0x89, 0xd9, //0x000018af movl %r11d, %ecx + 0xf7, 0xd1, //0x000018b2 notl %ecx + 0x21, 0xf9, //0x000018b4 andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x000018b6 leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x000018ba orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x000018bd movl %r15d, %edx + 0xf7, 0xd2, //0x000018c0 notl %edx + 0x21, 0xfa, //0x000018c2 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000018c4 andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x000018ca xorl %r11d, %r11d + 0x01, 0xca, //0x000018cd addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x000018cf setb %r11b + 0x01, 0xd2, //0x000018d3 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000018d5 xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x000018db andl %r15d, %edx + 0xf7, 0xd2, //0x000018de notl %edx + 0x21, 0xd3, //0x000018e0 andl %edx, %ebx + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000018e2 jmp LBB0_322 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018e7 .p2align 4, 0x90 + //0x000018f0 LBB0_321 + 0x45, 0x31, 0xdb, //0x000018f0 xorl %r11d, %r11d + //0x000018f3 LBB0_322 + 0x48, 0x85, 0xdb, //0x000018f3 testq %rbx, %rbx + 0x0f, 0x85, 0xab, 0xe8, 0xff, 0xff, //0x000018f6 jne LBB0_1 + 0x48, 0x83, 0xc6, 0x20, //0x000018fc addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00001900 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001904 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00001908 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x0000190c cmpq $63, %rcx + 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001910 jg LBB0_319 + 0x4d, 0x85, 0xdb, //0x00001916 testq %r11, %r11 + 0x0f, 0x85, 0x44, 0x1e, 0x00, 0x00, //0x00001919 jne LBB0_587 + 0x49, 0x01, 0xf2, //0x0000191f addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00001922 subq %rsi, %r9 + //0x00001925 LBB0_326 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001925 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001929 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00001933 testq %r9, %r9 + 0x0f, 0x8f, 0x85, 0x1e, 0x00, 0x00, //0x00001936 jg LBB0_591 + 0xe9, 0x6e, 0x21, 0x00, 0x00, //0x0000193c jmp LBB0_650 + //0x00001941 LBB0_327 + 0x4c, 0x89, 0xca, //0x00001941 movq %r9, %rdx + 0x48, 0x29, 0xc2, //0x00001944 subq %rax, %rdx + 0x48, 0x83, 0xfa, 0x10, //0x00001947 cmpq $16, %rdx + 0x0f, 0x82, 0x36, 0x17, 0x00, 0x00, //0x0000194b jb LBB0_516 + 0x48, 0x89, 0xc7, //0x00001951 movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x00001954 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x00001957 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x0000195b leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x04, //0x0000195f leaq (%r12,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00001963 addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x00001967 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000196a .p2align 4, 0x90 + //0x00001970 LBB0_329 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00001970 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001976 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x0000197a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x0000197f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00001984 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00001988 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000198c pmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x00001990 testl %ecx, %ecx + 0x0f, 0x85, 0x8c, 0x09, 0x00, 0x00, //0x00001992 jne LBB0_394 + 0x48, 0x83, 0xc3, 0x10, //0x00001998 addq $16, %rbx + 0x49, 0x8d, 0x0c, 0x39, //0x0000199c leaq (%r9,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xf0, //0x000019a0 addq $-16, %rcx + 0x48, 0x83, 0xc7, 0xf0, //0x000019a4 addq $-16, %rdi + 0x49, 0x83, 0xc0, 0x10, //0x000019a8 addq $16, %r8 + 0x48, 0x83, 0xc2, 0x10, //0x000019ac addq $16, %rdx + 0x48, 0x83, 0xc6, 0x10, //0x000019b0 addq $16, %rsi + 0x48, 0x83, 0xf9, 0x0f, //0x000019b4 cmpq $15, %rcx + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x000019b8 ja LBB0_329 + 0x4c, 0x89, 0xe1, //0x000019be movq %r12, %rcx + 0x48, 0x29, 0xf9, //0x000019c1 subq %rdi, %rcx + 0x49, 0x01, 0xf9, //0x000019c4 addq %rdi, %r9 + 0x4c, 0x89, 0xca, //0x000019c7 movq %r9, %rdx + 0x48, 0x85, 0xd2, //0x000019ca testq %rdx, %rdx + 0x0f, 0x84, 0x4a, 0x00, 0x00, 0x00, //0x000019cd je LBB0_339 + //0x000019d3 LBB0_332 + 0x48, 0x8d, 0x34, 0x11, //0x000019d3 leaq (%rcx,%rdx), %rsi + //0x000019d7 LBB0_333 + 0x0f, 0xb6, 0x39, //0x000019d7 movzbl (%rcx), %edi + 0x48, 0x83, 0xff, 0x2c, //0x000019da cmpq $44, %rdi + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x000019de ja LBB0_335 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x000019e4 movabsq $17596481021440, %rbx + 0x48, 0x0f, 0xa3, 0xfb, //0x000019ee btq %rdi, %rbx + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x000019f2 jb LBB0_339 + //0x000019f8 LBB0_335 + 0x40, 0x80, 0xff, 0x5d, //0x000019f8 cmpb $93, %dil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x000019fc je LBB0_339 + 0x40, 0x80, 0xff, 0x7d, //0x00001a02 cmpb $125, %dil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001a06 je LBB0_339 + 0x48, 0x83, 0xc1, 0x01, //0x00001a0c addq $1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00001a10 addq $-1, %rdx + 0x0f, 0x85, 0xbd, 0xff, 0xff, 0xff, //0x00001a14 jne LBB0_333 + 0x48, 0x89, 0xf1, //0x00001a1a movq %rsi, %rcx + //0x00001a1d LBB0_339 + 0x4c, 0x29, 0xe1, //0x00001a1d subq %r12, %rcx + 0x49, 0x89, 0x0e, //0x00001a20 movq %rcx, (%r14) + 0xe9, 0x57, 0xf8, 0xff, 0xff, //0x00001a23 jmp LBB0_231 + //0x00001a28 LBB0_340 + 0x48, 0x8b, 0x55, 0xa8, //0x00001a28 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001a2c movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001a30 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001a33 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001a36 movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001a3a addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001a3d xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001a40 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001a46 xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001a49 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001a4d movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x00001a51 jge LBB0_341 + //0x00001a57 LBB0_350 + 0x48, 0x85, 0xd2, //0x00001a57 testq %rdx, %rdx + 0x0f, 0x8e, 0x62, 0x22, 0x00, 0x00, //0x00001a5a jle LBB0_662 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001a60 movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001a64 pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001a68 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001a6d movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001a75 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001a7d movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001a85 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001a88 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001a8b andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001a91 cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001a97 jb LBB0_354 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001a9d cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x00001aa2 jb LBB0_355 + 0x0f, 0x10, 0x1f, //0x00001aa8 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001aab movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001ab2 movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001ab7 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001abf addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001ac3 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001ac7 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001acb leaq $-144(%rbp), %rdx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001ad2 jmp LBB0_356 + //0x00001ad7 LBB0_354 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001ad7 movdqa %xmm6, %xmm2 + 0x49, 0x89, 0xfc, //0x00001adb movq %rdi, %r12 + 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x00001ade jmp LBB0_341 + //0x00001ae3 LBB0_355 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ae3 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001aea movq $-72(%rbp), %rsi + //0x00001aee LBB0_356 + 0x48, 0x83, 0xfe, 0x10, //0x00001aee cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001af2 jb LBB0_357 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001af8 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001afc movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001b00 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001b04 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001b08 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001b0c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001b10 jae LBB0_364 + //0x00001b16 LBB0_358 + 0x48, 0x83, 0xfe, 0x04, //0x00001b16 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001b1a jl LBB0_359 + //0x00001b20 LBB0_365 + 0x8b, 0x0f, //0x00001b20 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001b22 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001b24 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001b28 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001b2c addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001b30 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001b34 jae LBB0_360 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001b3a jmp LBB0_361 + //0x00001b3f LBB0_357 + 0x48, 0x83, 0xfe, 0x08, //0x00001b3f cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001b43 jb LBB0_358 + //0x00001b49 LBB0_364 + 0x48, 0x8b, 0x0f, //0x00001b49 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001b4c movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001b4f addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001b53 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001b57 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001b5b cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001b5f jge LBB0_365 + //0x00001b65 LBB0_359 + 0x48, 0x83, 0xfe, 0x02, //0x00001b65 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001b69 jb LBB0_361 + //0x00001b6f LBB0_360 + 0x0f, 0xb7, 0x0f, //0x00001b6f movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001b72 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001b75 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001b79 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001b7d addq $-2, %rsi + //0x00001b81 LBB0_361 + 0x48, 0x89, 0xf9, //0x00001b81 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b84 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x00001b8b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x00001b8e movdqa %xmm6, %xmm2 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00001b92 je LBB0_341 + 0x8a, 0x09, //0x00001b98 movb (%rcx), %cl + 0x88, 0x0a, //0x00001b9a movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b9c leaq $-176(%rbp), %r12 + //0x00001ba3 LBB0_341 + 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x00001ba3 movdqa %xmm2, %xmm8 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00001ba8 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00001bae movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00001bb5 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00001bbc movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001bc3 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bc7 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001bcb pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x00001bcf movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bd3 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001bd7 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001bdb movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bdf pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001be3 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00001be7 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001beb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001bef pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00001bf3 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00001bf7 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x00001bfb orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001bfe shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001c02 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00001c05 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001c08 movq %rdx, %rcx + 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001c0b movdqa %xmm14, %xmm13 + 0x4c, 0x09, 0xc9, //0x00001c10 orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001c13 jne LBB0_343 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001c19 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x00001c20 xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001c23 jmp LBB0_344 + //0x00001c28 LBB0_343 + 0x4c, 0x89, 0xc9, //0x00001c28 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x00001c2b notq %rcx + 0x48, 0x21, 0xd1, //0x00001c2e andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x00001c31 leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x00001c35 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x00001c38 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x00001c3b notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001c3e movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001c48 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001c4b andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x00001c4e xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x00001c51 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x00001c54 setb %r9b + 0x48, 0x01, 0xd2, //0x00001c58 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c5b movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001c65 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x00001c68 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x00001c6b notq %rdx + //0x00001c6e LBB0_344 + 0x66, 0x0f, 0x6f, 0xdd, //0x00001c6e movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c72 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c76 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00001c7a shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x00001c7e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c82 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001c86 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00001c8a shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00001c8e orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x00001c91 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c95 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c99 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00001c9d shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001ca1 orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x00001ca4 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001ca8 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001cac pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x00001cb0 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001cb3 andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001cb6 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001cbb pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001cc2 movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00001cc7 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001cca movdqa %xmm4, %xmm3 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x89, 0xe3, 0xff, 0xff, //0x00001cce movdqu $-7287(%rip), %xmm11 /* LCPI0_6+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cd7 pcmpeqb %xmm11, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001cdc pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00001ce1 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001ce5 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001cea pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001cee movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cf2 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001cf7 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001cfb movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cff pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001d04 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00001d08 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x00001d0c shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00001d10 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00001d13 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00001d17 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x00001d1a orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x00001d1d movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00001d20 notq %r8 + 0x4d, 0x21, 0xc5, //0x00001d23 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d26 movdqa %xmm8, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001d2b pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00001d30 pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001d34 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00001d39 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001d3d pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x00001d42 pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001d46 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001d4b pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00001d50 shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x00001d54 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x00001d58 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x00001d5b shlq $16, %rsi + 0x48, 0x09, 0xce, //0x00001d5f orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x00001d62 orq %rsi, %rdx + 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001d65 movdqa %xmm13, %xmm14 + 0x4c, 0x21, 0xc2, //0x00001d6a andq %r8, %rdx + 0x0f, 0x84, 0xa4, 0x00, 0x00, 0x00, //0x00001d6d je LBB0_348 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x74, 0xe3, 0xff, 0xff, //0x00001d73 movdqu $-7308(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d7c movdqa %xmm8, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb6, 0xe2, 0xff, 0xff, //0x00001d81 movdqu $-7498(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001d8a movabsq $3689348814741910323, %r8 + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb3, 0xe2, 0xff, 0xff, //0x00001d94 movdqu $-7501(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x90, 0x90, 0x90, //0x00001d9d .p2align 4, 0x90 + //0x00001da0 LBB0_346 + 0x48, 0x8d, 0x7a, 0xff, //0x00001da0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x00001da4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x00001da7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x00001daa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x00001dad shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001db0 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x00001dba andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x00001dbd subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dc0 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00001dc3 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00001dc6 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x00001dca andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x00001dcd addq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dd0 movq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x04, //0x00001dd3 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00001dd7 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001dda movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00001de4 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001de7 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00001df1 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00001df5 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00001df9 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x00001dfc cmpq %r14, %rsi + 0x0f, 0x86, 0xe4, 0x04, 0x00, 0x00, //0x00001dff jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00001e05 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00001e09 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001e0c jne LBB0_346 + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001e12 jmp LBB0_349 + //0x00001e17 LBB0_348 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001e17 movdqa %xmm8, %xmm2 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001e1c movabsq $3689348814741910323, %r8 + //0x00001e26 LBB0_349 + 0x49, 0xc1, 0xfb, 0x3f, //0x00001e26 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00001e2a movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00001e2d shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001e30 movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00001e3a andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00001e3d subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e40 movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x00001e43 andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00001e46 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00001e4a andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00001e4d addq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e50 movq %r13, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00001e53 shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x00001e57 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001e5a movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x00001e64 andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001e67 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00001e71 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00001e75 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x00001e79 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x00001e7c addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x00001e80 movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x00001e84 addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x00001e88 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x00001e8b cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001e8f movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x0a, 0xfd, 0xff, 0xff, //0x00001e93 jge LBB0_341 + 0xe9, 0xb9, 0xfb, 0xff, 0xff, //0x00001e99 jmp LBB0_350 + //0x00001e9e LBB0_366 + 0x48, 0x8b, 0x55, 0xa8, //0x00001e9e movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001ea2 movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001ea6 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001ea9 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001eac movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001eb0 addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001eb3 xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001eb6 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001eb9 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001ebc xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001ebf cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001ec3 movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001ec7 jge LBB0_367 + //0x00001ecd LBB0_376 + 0x48, 0x85, 0xd2, //0x00001ecd testq %rdx, %rdx + 0x0f, 0x8e, 0xec, 0x1d, 0x00, 0x00, //0x00001ed0 jle LBB0_662 + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001ed6 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001edb movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001edf pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ee3 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001ee8 movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001ef0 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ef8 movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001f00 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001f03 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f06 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f0c cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f12 jb LBB0_380 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001f18 cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f1d jb LBB0_381 + 0x0f, 0x10, 0x1f, //0x00001f23 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f26 movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f2d movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f32 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001f3a addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001f3e movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001f42 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f46 leaq $-144(%rbp), %rdx + 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f4d jmp LBB0_382 + //0x00001f52 LBB0_380 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001f52 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f56 movdqa %xmm7, %xmm13 + 0x49, 0x89, 0xfc, //0x00001f5b movq %rdi, %r12 + 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f5e jmp LBB0_367 + //0x00001f63 LBB0_381 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f63 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001f6a movq $-72(%rbp), %rsi + //0x00001f6e LBB0_382 + 0x48, 0x83, 0xfe, 0x10, //0x00001f6e cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f72 jb LBB0_383 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f78 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f7c movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001f80 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001f84 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001f88 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001f8c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001f90 jae LBB0_390 + //0x00001f96 LBB0_384 + 0x48, 0x83, 0xfe, 0x04, //0x00001f96 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001f9a jl LBB0_385 + //0x00001fa0 LBB0_391 + 0x8b, 0x0f, //0x00001fa0 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001fa2 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001fa4 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001fa8 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001fac addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001fb0 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fb4 jae LBB0_386 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fba jmp LBB0_387 + //0x00001fbf LBB0_383 + 0x48, 0x83, 0xfe, 0x08, //0x00001fbf cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fc3 jb LBB0_384 + //0x00001fc9 LBB0_390 + 0x48, 0x8b, 0x0f, //0x00001fc9 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001fcc movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001fcf addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001fd3 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001fd7 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001fdb cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001fdf jge LBB0_391 + //0x00001fe5 LBB0_385 + 0x48, 0x83, 0xfe, 0x02, //0x00001fe5 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fe9 jb LBB0_387 + //0x00001fef LBB0_386 + 0x0f, 0xb7, 0x0f, //0x00001fef movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001ff2 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001ff5 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001ff9 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001ffd addq $-2, %rsi + //0x00002001 LBB0_387 + 0x48, 0x89, 0xf9, //0x00002001 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002004 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x0000200b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x0000200e movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002012 movdqa %xmm7, %xmm13 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00002017 je LBB0_367 + 0x8a, 0x09, //0x0000201d movb (%rcx), %cl + 0x88, 0x0a, //0x0000201f movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002021 leaq $-176(%rbp), %r12 + //0x00002028 LBB0_367 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00002028 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x0000202e movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00002035 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x0000203c movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002043 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002047 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x0000204b pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x0000204f movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002053 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002057 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000205b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000205f pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002063 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00002067 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000206b pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x0000206f pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00002073 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00002077 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x0000207b orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x0000207e shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00002082 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00002085 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00002088 movq %rdx, %rcx + 0x4c, 0x09, 0xc9, //0x0000208b orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000208e jne LBB0_369 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002094 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x0000209b xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000209e jmp LBB0_370 + //0x000020a3 LBB0_369 + 0x4c, 0x89, 0xc9, //0x000020a3 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x000020a6 notq %rcx + 0x48, 0x21, 0xd1, //0x000020a9 andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x000020ac leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x000020b0 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x000020b3 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x000020b6 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020b9 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x000020c3 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x000020c6 andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x000020c9 xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x000020cc addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x000020cf setb %r9b + 0x48, 0x01, 0xd2, //0x000020d3 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020d6 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x000020e0 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x000020e3 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x000020e6 notq %rdx + //0x000020e9 LBB0_370 + 0x66, 0x0f, 0x6f, 0xdd, //0x000020e9 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020ed pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x000020f1 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x000020f5 shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x000020f9 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020fd pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002101 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00002105 shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00002109 orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x0000210c movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002110 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002114 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00002118 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000211c orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x0000211f movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002123 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002127 pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x0000212b orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000212e andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002131 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00002136 pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x0000213d movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00002142 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002145 movdqa %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002149 pcmpeqb %xmm13, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000214e pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002153 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002157 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000215c pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00002160 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002164 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002169 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000216d movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002171 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002176 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x0000217a shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x0000217e shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00002182 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00002185 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00002189 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x0000218c orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x0000218f movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00002192 notq %r8 + 0x4d, 0x21, 0xc5, //0x00002195 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00002198 pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x0000219d pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021a1 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x000021a6 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021aa pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x000021af pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021b3 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021b8 pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x000021bd shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x000021c1 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x000021c5 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x000021c8 shlq $16, %rsi + 0x48, 0x09, 0xce, //0x000021cc orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x000021cf orq %rsi, %rdx + 0x4c, 0x21, 0xc2, //0x000021d2 andq %r8, %rdx + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000021d5 je LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021db movabsq $3689348814741910323, %r8 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021e5 .p2align 4, 0x90 + //0x000021f0 LBB0_372 + 0x48, 0x8d, 0x7a, 0xff, //0x000021f0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x000021f4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x000021f7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x000021fa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x000021fd shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002200 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x0000220a andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x0000220d subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00002210 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00002213 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00002216 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x0000221a andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x0000221d addq %rsi, %rcx 0x48, 0x89, 0xce, //0x00002220 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00002223 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00002226 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x0000222a andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x0000222d addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00002230 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00002233 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00002237 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000223a movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00002244 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002247 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00002251 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00002255 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00002259 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x0000225c cmpq %r14, %rsi - 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000225f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00002265 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00002269 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000226c jne LBB0_362 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002272 jmp LBB0_365 - //0x00002277 LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002277 movabsq $3689348814741910323, %r8 - //0x00002281 LBB0_365 - 0x49, 0xc1, 0xfb, 0x3f, //0x00002281 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00002285 movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00002288 shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000228b movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00002295 andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00002298 subq %rcx, %r13 + 0x48, 0xc1, 0xee, 0x04, //0x00002223 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00002227 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000222a movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00002234 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002237 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00002241 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00002245 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00002249 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x0000224c cmpq %r14, %rsi + 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000224f jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00002255 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00002259 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000225c jne LBB0_372 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002262 jmp LBB0_375 + //0x00002267 LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002267 movabsq $3689348814741910323, %r8 + //0x00002271 LBB0_375 + 0x49, 0xc1, 0xfb, 0x3f, //0x00002271 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00002275 movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00002278 shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000227b movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00002285 andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00002288 subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x0000228b movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x0000228e andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00002291 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00002295 andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00002298 addq %rcx, %r13 0x4c, 0x89, 0xe9, //0x0000229b movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x0000229e andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x000022a1 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x000022a5 andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x000022a8 addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x000022ab movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x000022ae shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x000022b2 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022b5 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x000022bf andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022c2 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x000022cc imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x000022d0 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x000022d4 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x000022d7 addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x000022db movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x000022df addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x000022e3 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x000022e6 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x000022ea movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4a, 0xfd, 0xff, 0xff, //0x000022ee jge LBB0_357 - 0xe9, 0xea, 0xfb, 0xff, 0xff, //0x000022f4 jmp LBB0_366 - //0x000022f9 LBB0_382 - 0x48, 0x8b, 0x75, 0xa8, //0x000022f9 movq $-88(%rbp), %rsi - 0x48, 0x8b, 0x4e, 0x08, //0x000022fd movq $8(%rsi), %rcx - 0x48, 0x0f, 0xbc, 0xd2, //0x00002301 bsfq %rdx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00002305 subq $-64(%rbp), %rdx - 0x48, 0x01, 0xd1, //0x00002309 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000230c addq $1, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002310 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x0e, //0x00002314 movq %rcx, (%r14) - 0x48, 0x8b, 0x56, 0x08, //0x00002317 movq $8(%rsi), %rdx - 0x48, 0x39, 0xd1, //0x0000231b cmpq %rdx, %rcx - 0x48, 0x0f, 0x47, 0xca, //0x0000231e cmovaq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002322 movq %rcx, (%r14) - 0x0f, 0x87, 0x1c, 0x17, 0x00, 0x00, //0x00002325 ja LBB0_638 - 0x48, 0x8b, 0x45, 0xb0, //0x0000232b movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x0000232f testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002332 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002336 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x7a, 0xde, 0xff, 0xff, //0x00002340 jg LBB0_4 - 0xe9, 0xad, 0x16, 0x00, 0x00, //0x00002346 jmp LBB0_606 - //0x0000234b LBB0_605 - 0x66, 0x0f, 0xbc, 0xce, //0x0000234b bsfw %si, %cx - 0x0f, 0xb7, 0xc9, //0x0000234f movzwl %cx, %ecx - 0x48, 0x29, 0xd1, //0x00002352 subq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002355 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002358 testq %rax, %rax - 0x0f, 0x8f, 0x5f, 0xde, 0xff, 0xff, //0x0000235b jg LBB0_4 - 0xe9, 0x92, 0x16, 0x00, 0x00, //0x00002361 jmp LBB0_606 - //0x00002366 LBB0_384 - 0x49, 0x8d, 0x57, 0xff, //0x00002366 leaq $-1(%r15), %rdx - 0x49, 0x39, 0xd0, //0x0000236a cmpq %rdx, %r8 - 0x49, 0xf7, 0xd7, //0x0000236d notq %r15 - 0x4d, 0x0f, 0x45, 0xfb, //0x00002370 cmovneq %r11, %r15 - 0x84, 0xc9, //0x00002374 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xfb, //0x00002376 cmoveq %r11, %r15 - 0x4d, 0x89, 0xfd, //0x0000237a movq %r15, %r13 - 0xe9, 0x60, 0xde, 0xff, 0xff, //0x0000237d jmp LBB0_2 - //0x00002382 LBB0_385 - 0x48, 0x89, 0xc6, //0x00002382 movq %rax, %rsi - 0x48, 0x29, 0xd6, //0x00002385 subq %rdx, %rsi - 0x48, 0x89, 0xd1, //0x00002388 movq %rdx, %rcx - 0x0f, 0x84, 0xb4, 0x18, 0x00, 0x00, //0x0000238b je LBB0_644 - 0x48, 0x83, 0xfe, 0x40, //0x00002391 cmpq $64, %rsi - 0x0f, 0x82, 0xeb, 0x0c, 0x00, 0x00, //0x00002395 jb LBB0_503 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000239b movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x000023a3 movq %rcx, %rax - 0x31, 0xdb, //0x000023a6 xorl %ebx, %ebx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023a8 .p2align 4, 0x90 - //0x000023b0 LBB0_388 - 0x48, 0x89, 0x75, 0xc0, //0x000023b0 movq %rsi, $-64(%rbp) - 0x49, 0x89, 0xd9, //0x000023b4 movq %rbx, %r9 - 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023b7 movdqu (%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023bd movdqu $16(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023c4 movdqu $32(%r12,%rax), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023cb movdqu $48(%r12,%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xdd, //0x000023d2 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023d6 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023da pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xdf, //0x000023df movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023e3 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000023e7 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000023eb movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023ef pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x000023f3 pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x000023f8 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023fc pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002400 pmovmskb %xmm3, %r15d - 0x66, 0x0f, 0x6f, 0xdd, //0x00002405 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002409 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000240d pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002412 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002416 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x0000241a pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xde, //0x0000241e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002422 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002426 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x0000242a movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000242e pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002432 pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002437 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdf, //0x0000243c pcmpgtb %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002440 pcmpgtb %xmm10, %xmm7 - 0x66, 0x0f, 0xdb, 0xfb, //0x00002445 pand %xmm3, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00002449 pmovmskb %xmm7, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000244d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00002452 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002456 pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x0000245b pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x0000245f pmovmskb %xmm6, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002463 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002468 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000246c pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002471 pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002475 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x0000247a shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x0000247e shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x00002482 orq %r15, %r14 - 0x48, 0xc1, 0xe1, 0x10, //0x00002485 shlq $16, %rcx - 0x4c, 0x09, 0xf1, //0x00002489 orq %r14, %rcx - 0x49, 0x09, 0xcb, //0x0000248c orq %rcx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x0000248f shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x00002493 shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x00002497 orq %r10, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x0000249a shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x0000249e orq %rsi, %rbx - 0x49, 0xc1, 0xe0, 0x30, //0x000024a1 shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000024a5 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000024a9 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000024ac shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000024b0 orq %rdx, %rdi - 0x49, 0x09, 0xdd, //0x000024b3 orq %rbx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024b6 jne LBB0_405 - 0x4d, 0x85, 0xc9, //0x000024bc testq %r9, %r9 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024bf jne LBB0_407 - 0x31, 0xdb, //0x000024c5 xorl %ebx, %ebx - 0x4c, 0x8b, 0x75, 0xd0, //0x000024c7 movq $-48(%rbp), %r14 - //0x000024cb LBB0_391 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024cb movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x000024d0 pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024d4 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x000024d9 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000024dd pmovmskb %xmm5, %ecx - 0x48, 0x09, 0xcf, //0x000024e1 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x000024e4 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000024e7 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x000024eb jne LBB0_409 - 0x48, 0x85, 0xff, //0x000024f1 testq %rdi, %rdi - 0x0f, 0x85, 0xaf, 0x16, 0x00, 0x00, //0x000024f4 jne LBB0_632 - 0x48, 0x8b, 0x75, 0xc0, //0x000024fa movq $-64(%rbp), %rsi - 0x48, 0x83, 0xc6, 0xc0, //0x000024fe addq $-64, %rsi - 0x48, 0x83, 0xc0, 0x40, //0x00002502 addq $64, %rax - 0x48, 0x83, 0xfe, 0x3f, //0x00002506 cmpq $63, %rsi - 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000250a ja LBB0_388 - 0xe9, 0xb7, 0x07, 0x00, 0x00, //0x00002510 jmp LBB0_394 - //0x00002515 LBB0_405 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002515 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x0000251a movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000251e jne LBB0_408 - 0x49, 0x0f, 0xbc, 0xcd, //0x00002524 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00002528 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000252b movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000252f jmp LBB0_408 - //0x00002534 LBB0_407 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002534 movq $-48(%rbp), %r14 - //0x00002538 LBB0_408 - 0x4c, 0x89, 0xc9, //0x00002538 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x0000253b notq %rcx - 0x4c, 0x21, 0xe9, //0x0000253e andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00002541 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xca, //0x00002545 orq %r9, %rdx - 0x48, 0x89, 0xd6, //0x00002548 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x0000254b notq %rsi - 0x4c, 0x21, 0xee, //0x0000254e andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002551 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x0000255b andq %rbx, %rsi - 0x31, 0xdb, //0x0000255e xorl %ebx, %ebx - 0x48, 0x01, 0xce, //0x00002560 addq %rcx, %rsi - 0x0f, 0x92, 0xc3, //0x00002563 setb %bl - 0x48, 0x01, 0xf6, //0x00002566 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002569 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00002573 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002576 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00002579 notq %rsi - 0x49, 0x21, 0xf3, //0x0000257c andq %rsi, %r11 - 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000257f jmp LBB0_391 - //0x00002584 LBB0_409 - 0x49, 0x0f, 0xbc, 0xcb, //0x00002584 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x00002588 testq %rdi, %rdi - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x0000258b je LBB0_423 - 0x48, 0x0f, 0xbc, 0xd7, //0x00002591 bsfq %rdi, %rdx - 0xe9, 0x89, 0x00, 0x00, 0x00, //0x00002595 jmp LBB0_424 - //0x0000259a LBB0_411 - 0x41, 0x89, 0xcb, //0x0000259a movl %ecx, %r11d - 0x4d, 0x01, 0xc3, //0x0000259d addq %r8, %r11 - 0x49, 0x01, 0xdb, //0x000025a0 addq %rbx, %r11 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025a3 jmp LBB0_413 - //0x000025a8 LBB0_412 - 0x48, 0x01, 0xda, //0x000025a8 addq %rbx, %rdx - 0x49, 0x89, 0xd3, //0x000025ab movq %rdx, %r11 - //0x000025ae LBB0_413 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025ae movq $-1, %rbx - 0x4d, 0x85, 0xf6, //0x000025b5 testq %r14, %r14 - 0x0f, 0x84, 0x18, 0x16, 0x00, 0x00, //0x000025b8 je LBB0_636 - 0x4d, 0x85, 0xed, //0x000025be testq %r13, %r13 - 0x0f, 0x84, 0x0f, 0x16, 0x00, 0x00, //0x000025c1 je LBB0_636 - 0x4d, 0x85, 0xd2, //0x000025c7 testq %r10, %r10 - 0x0f, 0x84, 0x06, 0x16, 0x00, 0x00, //0x000025ca je LBB0_636 - 0x4d, 0x29, 0xc3, //0x000025d0 subq %r8, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x000025d3 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xce, //0x000025d7 cmpq %rcx, %r14 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025da je LBB0_422 - 0x49, 0x39, 0xcd, //0x000025e0 cmpq %rcx, %r13 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x000025e3 je LBB0_422 - 0x49, 0x39, 0xca, //0x000025e9 cmpq %rcx, %r10 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000025ec je LBB0_422 - 0x4d, 0x85, 0xed, //0x000025f2 testq %r13, %r13 - 0x0f, 0x8e, 0x9a, 0x00, 0x00, 0x00, //0x000025f5 jle LBB0_430 - 0x49, 0x8d, 0x4d, 0xff, //0x000025fb leaq $-1(%r13), %rcx - 0x49, 0x39, 0xca, //0x000025ff cmpq %rcx, %r10 - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x00002602 je LBB0_430 - 0x49, 0xf7, 0xd5, //0x00002608 notq %r13 - 0x4c, 0x89, 0xeb, //0x0000260b movq %r13, %rbx - 0xe9, 0x0c, 0x06, 0x00, 0x00, //0x0000260e jmp LBB0_468 - //0x00002613 LBB0_422 - 0x49, 0xf7, 0xdb, //0x00002613 negq %r11 - 0x4c, 0x89, 0xdb, //0x00002616 movq %r11, %rbx - 0xe9, 0x01, 0x06, 0x00, 0x00, //0x00002619 jmp LBB0_468 - //0x0000261e LBB0_423 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000261e movl $64, %edx - //0x00002623 LBB0_424 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002623 movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x0000262d cmpq %rcx, %rdx - 0x0f, 0x82, 0xb6, 0x15, 0x00, 0x00, //0x00002630 jb LBB0_640 - 0x48, 0x01, 0xc8, //0x00002636 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002639 addq $1, %rax - //0x0000263d LBB0_426 - 0x48, 0x85, 0xc0, //0x0000263d testq %rax, %rax - 0x0f, 0x89, 0x49, 0xec, 0xff, 0xff, //0x00002640 jns LBB0_224 - 0xe9, 0x1a, 0x14, 0x00, 0x00, //0x00002646 jmp LBB0_615 - //0x0000264b LBB0_132 - 0x4d, 0x85, 0xdb, //0x0000264b testq %r11, %r11 - 0x0f, 0x85, 0x9e, 0x0a, 0x00, 0x00, //0x0000264e jne LBB0_508 - 0x49, 0x01, 0xd2, //0x00002654 addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00002657 subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000265a movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000265e movabsq $4294977024, %r11 - //0x00002668 LBB0_134 - 0x4d, 0x85, 0xc9, //0x00002668 testq %r9, %r9 - 0x0f, 0x8f, 0xee, 0x0a, 0x00, 0x00, //0x0000266b jg LBB0_512 - 0xe9, 0xd1, 0x13, 0x00, 0x00, //0x00002671 jmp LBB0_638 - //0x00002676 LBB0_428 - 0x4c, 0x29, 0xe0, //0x00002676 subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00002679 addq %rdx, %rax - 0x49, 0x89, 0x06, //0x0000267c movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x0000267f testq %rsi, %rsi - 0x0f, 0x8f, 0x38, 0xdb, 0xff, 0xff, //0x00002682 jg LBB0_4 - 0xe9, 0xcc, 0x13, 0x00, 0x00, //0x00002688 jmp LBB0_614 - //0x0000268d LBB0_429 - 0x0f, 0xbc, 0xcb, //0x0000268d bsfl %ebx, %ecx - 0xe9, 0x8a, 0x03, 0x00, 0x00, //0x00002690 jmp LBB0_437 - //0x00002695 LBB0_430 - 0x4c, 0x89, 0xf1, //0x00002695 movq %r14, %rcx - 0x4c, 0x09, 0xd1, //0x00002698 orq %r10, %rcx - 0x0f, 0x99, 0xc2, //0x0000269b setns %dl - 0x0f, 0x88, 0xd4, 0x01, 0x00, 0x00, //0x0000269e js LBB0_434 - 0x4d, 0x39, 0xd6, //0x000026a4 cmpq %r10, %r14 - 0x0f, 0x8c, 0xcb, 0x01, 0x00, 0x00, //0x000026a7 jl LBB0_434 - 0x49, 0xf7, 0xd6, //0x000026ad notq %r14 - 0x4c, 0x89, 0xf3, //0x000026b0 movq %r14, %rbx - 0xe9, 0x67, 0x05, 0x00, 0x00, //0x000026b3 jmp LBB0_468 - //0x000026b8 LBB0_433 - 0x48, 0x8b, 0x75, 0xc0, //0x000026b8 movq $-64(%rbp), %rsi - 0x49, 0x01, 0xf4, //0x000026bc addq %rsi, %r12 - 0x49, 0x29, 0xcc, //0x000026bf subq %rcx, %r12 - 0x49, 0x29, 0xfc, //0x000026c2 subq %rdi, %r12 - 0x49, 0x83, 0xc4, 0xfe, //0x000026c5 addq $-2, %r12 - 0x4d, 0x89, 0xe5, //0x000026c9 movq %r12, %r13 - 0xe9, 0x11, 0xdb, 0xff, 0xff, //0x000026cc jmp LBB0_2 - //0x000026d1 LBB0_154 - 0x4d, 0x85, 0xdb, //0x000026d1 testq %r11, %r11 - 0x0f, 0x85, 0x66, 0x0c, 0x00, 0x00, //0x000026d4 jne LBB0_535 - 0x49, 0x01, 0xd2, //0x000026da addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x000026dd subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000026e0 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026e4 movabsq $4294977024, %r11 - //0x000026ee LBB0_156 - 0x4d, 0x85, 0xc9, //0x000026ee testq %r9, %r9 - 0x0f, 0x8f, 0xa7, 0x0c, 0x00, 0x00, //0x000026f1 jg LBB0_539 - 0xe9, 0x4b, 0x13, 0x00, 0x00, //0x000026f7 jmp LBB0_638 - //0x000026fc LBB0_50 - 0x4c, 0x01, 0xe0, //0x000026fc addq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000026ff movq $-48(%rbp), %r14 - 0x49, 0x83, 0xf9, 0x20, //0x00002703 cmpq $32, %r9 - 0x0f, 0x82, 0x9f, 0x07, 0x00, 0x00, //0x00002707 jb LBB0_485 - //0x0000270d LBB0_51 - 0xf3, 0x0f, 0x6f, 0x18, //0x0000270d movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002711 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002716 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000271a pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000271e pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002722 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002726 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000272a pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x0000272e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002732 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002736 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x0000273a pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x0000273e shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002742 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002745 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002749 orq %rdi, %rsi - 0x0f, 0x85, 0x45, 0x0a, 0x00, 0x00, //0x0000274c jne LBB0_515 - 0x4d, 0x85, 0xc0, //0x00002752 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002755 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x5c, 0x0a, 0x00, 0x00, //0x0000275f jne LBB0_517 - 0x45, 0x31, 0xc0, //0x00002765 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002768 testq %rdx, %rdx - 0x0f, 0x84, 0xac, 0x0a, 0x00, 0x00, //0x0000276b je LBB0_519 - //0x00002771 LBB0_54 - 0x48, 0x0f, 0xbc, 0xca, //0x00002771 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002775 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002778 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000277b addq $1, %rax - 0xe9, 0x02, 0xeb, 0xff, 0xff, //0x0000277f jmp LBB0_223 - //0x00002784 LBB0_166 - 0x4c, 0x8b, 0x65, 0xc0, //0x00002784 movq $-64(%rbp), %r12 - 0x4c, 0x01, 0xe0, //0x00002788 addq %r12, %rax - 0x49, 0x83, 0xfe, 0x20, //0x0000278b cmpq $32, %r14 - 0x0f, 0x82, 0x41, 0x07, 0x00, 0x00, //0x0000278f jb LBB0_487 - //0x00002795 LBB0_167 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002795 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002799 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000279e movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027a2 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000027a6 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xeb, //0x000027aa movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027ae pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x000027b2 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xec, //0x000027b6 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027ba pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000027be pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x000027c3 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027c7 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000027cb pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000027cf movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000027d4 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000027d8 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x000027dd pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000027e1 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe7, 0x10, //0x000027e5 shlq $16, %rdi - 0x48, 0x09, 0xf9, //0x000027e9 orq %rdi, %rcx - 0x48, 0xc1, 0xe2, 0x10, //0x000027ec shlq $16, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x000027f0 shlq $16, %rsi - 0x49, 0x09, 0xd1, //0x000027f4 orq %rdx, %r9 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000027f7 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x0c, 0x0b, 0x00, 0x00, //0x00002801 jne LBB0_533 - 0x48, 0x85, 0xdb, //0x00002807 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000280a movq $-72(%rbp), %r13 - 0x0f, 0x85, 0xda, 0x0b, 0x00, 0x00, //0x0000280e jne LBB0_542 - 0x31, 0xdb, //0x00002814 xorl %ebx, %ebx - //0x00002816 LBB0_170 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002816 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x0000281b pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000281f pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002824 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00002828 pmovmskb %xmm4, %edx - 0x48, 0x09, 0xd6, //0x0000282c orq %rdx, %rsi - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000282f movl $64, %edx - 0xbf, 0x40, 0x00, 0x00, 0x00, //0x00002834 movl $64, %edi - 0x48, 0x85, 0xc9, //0x00002839 testq %rcx, %rcx - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x0000283c je LBB0_172 - 0x48, 0x0f, 0xbc, 0xf9, //0x00002842 bsfq %rcx, %rdi - //0x00002846 LBB0_172 - 0x48, 0x85, 0xf6, //0x00002846 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002849 je LBB0_174 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000284f bsfq %rsi, %rdx - //0x00002853 LBB0_174 - 0x48, 0x85, 0xc9, //0x00002853 testq %rcx, %rcx - 0x0f, 0x84, 0xd2, 0x01, 0x00, 0x00, //0x00002856 je LBB0_438 - 0x48, 0x39, 0xfa, //0x0000285c cmpq %rdi, %rdx - 0x0f, 0x82, 0x06, 0x14, 0x00, 0x00, //0x0000285f jb LBB0_649 - 0x4c, 0x29, 0xe0, //0x00002865 subq %r12, %rax - 0x48, 0x01, 0xf8, //0x00002868 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000286b addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000286f movq $-48(%rbp), %r14 - 0xe9, 0x0e, 0xea, 0xff, 0xff, //0x00002873 jmp LBB0_223 - //0x00002878 LBB0_434 - 0x49, 0x8d, 0x4a, 0xff, //0x00002878 leaq $-1(%r10), %rcx - 0x49, 0x39, 0xce, //0x0000287c cmpq %rcx, %r14 - 0x49, 0xf7, 0xd2, //0x0000287f notq %r10 - 0x4d, 0x0f, 0x45, 0xd3, //0x00002882 cmovneq %r11, %r10 - 0x84, 0xd2, //0x00002886 testb %dl, %dl - 0x4d, 0x0f, 0x44, 0xd3, //0x00002888 cmoveq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x0000288c movq %r10, %rbx - 0xe9, 0x8b, 0x03, 0x00, 0x00, //0x0000288f jmp LBB0_468 - //0x00002894 LBB0_435 - 0x89, 0xd1, //0x00002894 movl %edx, %ecx - 0xe9, 0x84, 0x01, 0x00, 0x00, //0x00002896 jmp LBB0_437 - //0x0000289b LBB0_73 - 0x4c, 0x01, 0xe0, //0x0000289b addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000289e cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000028a2 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0xc3, 0x06, 0x00, 0x00, //0x000028a6 jb LBB0_493 - //0x000028ac LBB0_74 - 0xf3, 0x0f, 0x6f, 0x18, //0x000028ac movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028b0 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x000028b5 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028b9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000028bd pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x000028c1 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028c5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000028c9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x000028cd pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000028d1 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x000028d5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x000028d9 pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x000028dd shlq $16, %rcx - 0x48, 0x09, 0xca, //0x000028e1 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000028e4 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x000028e8 orq %rdi, %rsi - 0x0f, 0x85, 0x55, 0x0b, 0x00, 0x00, //0x000028eb jne LBB0_544 - 0x4d, 0x85, 0xc0, //0x000028f1 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000028f4 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x6c, 0x0b, 0x00, 0x00, //0x000028fe jne LBB0_546 - 0x45, 0x31, 0xc0, //0x00002904 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002907 testq %rdx, %rdx - 0x0f, 0x84, 0xbc, 0x0b, 0x00, 0x00, //0x0000290a je LBB0_548 - //0x00002910 LBB0_77 - 0x48, 0x0f, 0xbc, 0xca, //0x00002910 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002914 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002917 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000291a addq $1, %rax - 0xe9, 0xe0, 0xee, 0xff, 0xff, //0x0000291e jmp LBB0_304 - //0x00002923 LBB0_195 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002923 movq $-64(%rbp), %r8 - 0x4c, 0x01, 0xc0, //0x00002927 addq %r8, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000292a cmpq $32, %r9 - 0x0f, 0x82, 0x67, 0x06, 0x00, 0x00, //0x0000292e jb LBB0_495 - //0x00002934 LBB0_196 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002934 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002938 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000293d movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002941 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002945 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002949 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000294d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002951 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002955 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002959 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x0000295d pmovmskb %xmm5, %r10d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002962 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002966 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000296a pmovmskb %xmm5, %ecx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x0000296e movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002973 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002977 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x0000297c pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002980 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe2, 0x10, //0x00002984 shlq $16, %rdx - 0x48, 0x09, 0xd6, //0x00002988 orq %rdx, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x0000298b shlq $16, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x0000298f shlq $16, %rdi - 0x49, 0x09, 0xca, //0x00002993 orq %rcx, %r10 - 0x0f, 0x85, 0x26, 0x0c, 0x00, 0x00, //0x00002996 jne LBB0_562 - 0x4d, 0x85, 0xe4, //0x0000299c testq %r12, %r12 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000299f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029a3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8a, 0xd6, 0xff, 0xff, //0x000029ad movdqu $-10614(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x0f, 0x85, 0x2c, 0x0c, 0x00, 0x00, //0x000029b6 jne LBB0_564 - 0x45, 0x31, 0xe4, //0x000029bc xorl %r12d, %r12d - //0x000029bf LBB0_199 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000029bf movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000029c4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000029c8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000029cd pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000029d1 pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x000029d5 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x000029d8 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000029dd movl $64, %edx - 0x48, 0x85, 0xf6, //0x000029e2 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029e5 je LBB0_201 - 0x48, 0x0f, 0xbc, 0xd6, //0x000029eb bsfq %rsi, %rdx - //0x000029ef LBB0_201 - 0x48, 0x85, 0xff, //0x000029ef testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029f2 je LBB0_203 - 0x48, 0x0f, 0xbc, 0xcf, //0x000029f8 bsfq %rdi, %rcx - //0x000029fc LBB0_203 - 0x48, 0x85, 0xf6, //0x000029fc testq %rsi, %rsi - 0x0f, 0x84, 0xf6, 0x00, 0x00, 0x00, //0x000029ff je LBB0_450 - 0x48, 0x39, 0xd1, //0x00002a05 cmpq %rdx, %rcx - 0x0f, 0x82, 0x6c, 0x12, 0x00, 0x00, //0x00002a08 jb LBB0_650 - 0x4c, 0x29, 0xc0, //0x00002a0e subq %r8, %rax - 0x48, 0x01, 0xd0, //0x00002a11 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002a14 addq $1, %rax - 0xe9, 0xe6, 0xed, 0xff, 0xff, //0x00002a18 jmp LBB0_304 - //0x00002a1d LBB0_436 - 0x89, 0xd9, //0x00002a1d movl %ebx, %ecx - //0x00002a1f LBB0_437 - 0x49, 0xf7, 0xd5, //0x00002a1f notq %r13 - 0x49, 0x29, 0xcd, //0x00002a22 subq %rcx, %r13 - 0x48, 0x8b, 0x75, 0xc0, //0x00002a25 movq $-64(%rbp), %rsi - 0xe9, 0xb4, 0xd7, 0xff, 0xff, //0x00002a29 jmp LBB0_2 - //0x00002a2e LBB0_438 - 0x48, 0x85, 0xf6, //0x00002a2e testq %rsi, %rsi - 0x0f, 0x85, 0x34, 0x12, 0x00, 0x00, //0x00002a31 jne LBB0_649 - 0x48, 0x83, 0xc0, 0x20, //0x00002a37 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00002a3b addq $-32, %r14 - 0x48, 0x85, 0xdb, //0x00002a3f testq %rbx, %rbx - 0x0f, 0x85, 0xa5, 0x04, 0x00, 0x00, //0x00002a42 jne LBB0_488 - //0x00002a48 LBB0_440 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002a48 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xf6, //0x00002a4c testq %r14, %r14 - 0x0f, 0x84, 0xda, 0x11, 0x00, 0x00, //0x00002a4f je LBB0_490 - //0x00002a55 LBB0_441 - 0x0f, 0xb6, 0x10, //0x00002a55 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002a58 cmpb $34, %dl - 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002a5b je LBB0_449 - 0x80, 0xfa, 0x5c, //0x00002a61 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002a64 je LBB0_445 - 0x80, 0xfa, 0x1f, //0x00002a6a cmpb $31, %dl - 0x0f, 0x86, 0x12, 0x12, 0x00, 0x00, //0x00002a6d jbe LBB0_651 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002a73 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002a7a movl $1, %esi - 0x48, 0x01, 0xf0, //0x00002a7f addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002a82 addq %rdx, %r14 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002a85 jne LBB0_441 - 0xe9, 0x9f, 0x11, 0x00, 0x00, //0x00002a8b jmp LBB0_490 - //0x00002a90 LBB0_445 - 0x49, 0x83, 0xfe, 0x01, //0x00002a90 cmpq $1, %r14 - 0x0f, 0x84, 0x95, 0x11, 0x00, 0x00, //0x00002a94 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002a9a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002a9f movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002aa3 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002aaa movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002aaf cmpq $-1, %rcx - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002ab3 jne LBB0_448 - 0x48, 0x89, 0xc1, //0x00002ab9 movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x00002abc subq %r12, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002abf movq %rcx, $-56(%rbp) - //0x00002ac3 LBB0_448 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ac3 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002ad1 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002ad5 movdqa %xmm6, %xmm13 - 0x48, 0x01, 0xf0, //0x00002ada addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002add addq %rdx, %r14 - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002ae0 jne LBB0_441 - 0xe9, 0x44, 0x11, 0x00, 0x00, //0x00002ae6 jmp LBB0_490 - //0x00002aeb LBB0_449 - 0x4c, 0x29, 0xe0, //0x00002aeb subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002aee addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00002af2 movq $-48(%rbp), %r14 - 0xe9, 0x8b, 0xe7, 0xff, 0xff, //0x00002af6 jmp LBB0_223 - //0x00002afb LBB0_450 - 0x48, 0x85, 0xff, //0x00002afb testq %rdi, %rdi - 0x0f, 0x85, 0x76, 0x11, 0x00, 0x00, //0x00002afe jne LBB0_650 - 0x48, 0x83, 0xc0, 0x20, //0x00002b04 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00002b08 addq $-32, %r9 - 0x4d, 0x85, 0xe4, //0x00002b0c testq %r12, %r12 - 0x0f, 0x85, 0xa6, 0x04, 0x00, 0x00, //0x00002b0f jne LBB0_496 - //0x00002b15 LBB0_452 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002b15 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xc9, //0x00002b19 testq %r9, %r9 - 0x0f, 0x84, 0x51, 0x0f, 0x00, 0x00, //0x00002b1c je LBB0_616 - //0x00002b22 LBB0_453 - 0x0f, 0xb6, 0x10, //0x00002b22 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002b25 cmpb $34, %dl - 0x0f, 0x84, 0xcc, 0x00, 0x00, 0x00, //0x00002b28 je LBB0_464 - 0x80, 0xfa, 0x5c, //0x00002b2e cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b31 je LBB0_458 - 0x80, 0xfa, 0x1f, //0x00002b37 cmpb $31, %dl - 0x0f, 0x86, 0x51, 0x11, 0x00, 0x00, //0x00002b3a jbe LBB0_652 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b40 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b47 movl $1, %esi - //0x00002b4c LBB0_457 - 0x48, 0x01, 0xf0, //0x00002b4c addq %rsi, %rax - 0x49, 0x01, 0xd1, //0x00002b4f addq %rdx, %r9 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b52 jne LBB0_453 - 0xe9, 0x16, 0x0f, 0x00, 0x00, //0x00002b58 jmp LBB0_616 - //0x00002b5d LBB0_458 - 0x49, 0x83, 0xf9, 0x01, //0x00002b5d cmpq $1, %r9 - 0x0f, 0x84, 0xe7, 0x10, 0x00, 0x00, //0x00002b61 je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002b67 movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002b6b movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002b72 movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002b77 cmpq $-1, %rcx - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002b7b je LBB0_461 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002b81 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002b85 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b89 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002b93 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa0, 0xd4, 0xff, 0xff, //0x00002b97 movdqu $-11104(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x00002ba0 movq $-64(%rbp), %r8 - 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002ba4 jmp LBB0_457 - //0x00002ba9 LBB0_461 - 0x48, 0x89, 0xc1, //0x00002ba9 movq %rax, %rcx - 0x4c, 0x8b, 0x45, 0xc0, //0x00002bac movq $-64(%rbp), %r8 - 0x4c, 0x29, 0xc1, //0x00002bb0 subq %r8, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002bb3 movq %rcx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002bb7 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002bbb movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bbf movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002bc9 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x6a, 0xd4, 0xff, 0xff, //0x00002bcd movdqu $-11158(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002bd6 jmp LBB0_457 - //0x00002bdb LBB0_462 - 0x4c, 0x29, 0xe1, //0x00002bdb subq %r12, %rcx - 0x48, 0x01, 0xf1, //0x00002bde addq %rsi, %rcx - 0x49, 0x89, 0x0e, //0x00002be1 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002be4 testq %rax, %rax - 0x0f, 0x8f, 0xd3, 0xd5, 0xff, 0xff, //0x00002be7 jg LBB0_4 - 0xe9, 0x06, 0x0e, 0x00, 0x00, //0x00002bed jmp LBB0_606 - //0x00002bf2 LBB0_463 - 0x0f, 0xbc, 0xce, //0x00002bf2 bsfl %esi, %ecx - 0xe9, 0x1f, 0x00, 0x00, 0x00, //0x00002bf5 jmp LBB0_467 - //0x00002bfa LBB0_464 - 0x4c, 0x29, 0xc0, //0x00002bfa subq %r8, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002bfd addq $1, %rax - 0xe9, 0xfd, 0xeb, 0xff, 0xff, //0x00002c01 jmp LBB0_304 - //0x00002c06 LBB0_465 - 0x49, 0x01, 0xc4, //0x00002c06 addq %rax, %r12 - 0x49, 0x29, 0xd4, //0x00002c09 subq %rdx, %r12 - 0x48, 0xf7, 0xd3, //0x00002c0c notq %rbx - 0x4c, 0x01, 0xe3, //0x00002c0f addq %r12, %rbx - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c12 jmp LBB0_468 - //0x00002c17 LBB0_466 - 0x89, 0xd1, //0x00002c17 movl %edx, %ecx - //0x00002c19 LBB0_467 - 0x48, 0xf7, 0xd3, //0x00002c19 notq %rbx - 0x48, 0x29, 0xcb, //0x00002c1c subq %rcx, %rbx - //0x00002c1f LBB0_468 - 0x48, 0x85, 0xdb, //0x00002c1f testq %rbx, %rbx - 0x0f, 0x88, 0xae, 0x0f, 0x00, 0x00, //0x00002c22 js LBB0_636 - //0x00002c28 LBB0_469 - 0x48, 0x01, 0xc3, //0x00002c28 addq %rax, %rbx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c2b movq $-48(%rbp), %r14 - 0x49, 0x89, 0x1e, //0x00002c2f movq %rbx, (%r14) - 0x48, 0x85, 0xc0, //0x00002c32 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002c35 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c39 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x77, 0xd5, 0xff, 0xff, //0x00002c43 jg LBB0_4 - 0xe9, 0xaa, 0x0d, 0x00, 0x00, //0x00002c49 jmp LBB0_606 - //0x00002c4e LBB0_241 - 0x4c, 0x01, 0xe0, //0x00002c4e addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x00002c51 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c55 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0x19, 0x04, 0x00, 0x00, //0x00002c59 jb LBB0_502 - //0x00002c5f LBB0_242 - 0xf3, 0x0f, 0x6f, 0x18, //0x00002c5f movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002c63 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002c68 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c6c pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002c70 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002c74 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c78 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002c7c pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00002c80 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002c84 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002c88 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00002c8c pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002c90 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002c94 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002c97 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002c9b orq %rdi, %rsi - 0x0f, 0x85, 0x06, 0x0b, 0x00, 0x00, //0x00002c9e jne LBB0_578 - 0x4d, 0x85, 0xc0, //0x00002ca4 testq %r8, %r8 - 0x0f, 0x85, 0x27, 0x0b, 0x00, 0x00, //0x00002ca7 jne LBB0_580 - 0x45, 0x31, 0xc0, //0x00002cad xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002cb0 testq %rdx, %rdx - 0x0f, 0x84, 0x77, 0x0b, 0x00, 0x00, //0x00002cb3 je LBB0_582 - //0x00002cb9 LBB0_245 - 0x48, 0x0f, 0xbc, 0xca, //0x00002cb9 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002cbd subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002cc0 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002cc3 addq $1, %rax - 0xe9, 0x71, 0xf9, 0xff, 0xff, //0x00002cc7 jmp LBB0_426 - //0x00002ccc LBB0_394 - 0x4c, 0x01, 0xe0, //0x00002ccc addq %r12, %rax - 0x49, 0x89, 0xf2, //0x00002ccf movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00002cd2 cmpq $32, %rsi - 0x0f, 0x82, 0xc5, 0x03, 0x00, 0x00, //0x00002cd6 jb LBB0_504 - //0x00002cdc LBB0_395 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002cdc movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002ce0 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x00002ce5 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002ce9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002ced pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002cf1 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002cf5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002cf9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00002cfd movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d01 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d05 pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002d0a movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d0e pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002d12 pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d16 movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002d1b pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d1f pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x00002d24 pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002d28 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002d2c shlq $16, %rcx - 0x48, 0x09, 0xce, //0x00002d30 orq %rcx, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x00002d33 shlq $16, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002d37 shlq $16, %rdi - 0x49, 0x09, 0xd1, //0x00002d3b orq %rdx, %r9 - 0x0f, 0x85, 0xd0, 0x0b, 0x00, 0x00, //0x00002d3e jne LBB0_597 - 0x48, 0x85, 0xdb, //0x00002d44 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002d47 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d4b movabsq $4294977024, %r11 - 0x0f, 0x85, 0xe6, 0x0b, 0x00, 0x00, //0x00002d55 jne LBB0_599 - 0x31, 0xdb, //0x00002d5b xorl %ebx, %ebx - //0x00002d5d LBB0_398 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d5d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002d62 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002d66 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002d6b pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00002d6f pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00002d73 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002d76 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002d7b movl $64, %edx - 0x48, 0x85, 0xf6, //0x00002d80 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d83 je LBB0_400 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002d89 bsfq %rsi, %rdx - //0x00002d8d LBB0_400 - 0x48, 0x85, 0xff, //0x00002d8d testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d90 je LBB0_402 - 0x48, 0x0f, 0xbc, 0xcf, //0x00002d96 bsfq %rdi, %rcx - //0x00002d9a LBB0_402 - 0x48, 0x85, 0xf6, //0x00002d9a testq %rsi, %rsi - 0x0f, 0x84, 0x53, 0x00, 0x00, 0x00, //0x00002d9d je LBB0_473 - 0x4c, 0x29, 0xe0, //0x00002da3 subq %r12, %rax - 0x48, 0x39, 0xd1, //0x00002da6 cmpq %rdx, %rcx - 0x0f, 0x82, 0xf7, 0x0e, 0x00, 0x00, //0x00002da9 jb LBB0_654 - 0x48, 0x01, 0xd0, //0x00002daf addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002db2 addq $1, %rax - 0xe9, 0x82, 0xf8, 0xff, 0xff, //0x00002db6 jmp LBB0_426 - //0x00002dbb LBB0_470 - 0x49, 0x8d, 0x04, 0x34, //0x00002dbb leaq (%r12,%rsi), %rax - 0x48, 0x85, 0xc9, //0x00002dbf testq %rcx, %rcx - 0x0f, 0x85, 0x4f, 0xde, 0xff, 0xff, //0x00002dc2 jne LBB0_140 - //0x00002dc8 LBB0_471 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dc8 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002dcd movdqa %xmm2, %xmm5 - 0xe9, 0x7f, 0xde, 0xff, 0xff, //0x00002dd1 jmp LBB0_146 - //0x00002dd6 LBB0_472 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002dd6 movq $-1, %r8 - 0x4c, 0x89, 0xf1, //0x00002ddd movq %r14, %rcx - 0x49, 0x89, 0xfa, //0x00002de0 movq %rdi, %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002de3 movq $-1, %r15 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r9 - 0xe9, 0x19, 0xda, 0xff, 0xff, //0x00002df1 jmp LBB0_105 - //0x00002df6 LBB0_473 - 0x48, 0x85, 0xff, //0x00002df6 testq %rdi, %rdi - 0x0f, 0x85, 0xbc, 0x0e, 0x00, 0x00, //0x00002df9 jne LBB0_655 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dff movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002e04 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00002e08 addq $32, %rax - 0x49, 0x83, 0xc2, 0xe0, //0x00002e0c addq $-32, %r10 - 0x48, 0x85, 0xdb, //0x00002e10 testq %rbx, %rbx - 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x00, //0x00002e13 jne LBB0_505 - //0x00002e19 LBB0_475 - 0x48, 0x8b, 0x55, 0xc8, //0x00002e19 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xd2, //0x00002e1d testq %r10, %r10 - 0x0f, 0x84, 0x28, 0x0e, 0x00, 0x00, //0x00002e20 je LBB0_507 - //0x00002e26 LBB0_476 - 0x0f, 0xb6, 0x08, //0x00002e26 movzbl (%rax), %ecx - 0x80, 0xf9, 0x22, //0x00002e29 cmpb $34, %cl - 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e2c je LBB0_491 - 0x80, 0xf9, 0x5c, //0x00002e32 cmpb $92, %cl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e35 je LBB0_481 - 0x80, 0xf9, 0x1f, //0x00002e3b cmpb $31, %cl - 0x0f, 0x86, 0x82, 0x0e, 0x00, 0x00, //0x00002e3e jbe LBB0_656 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e44 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e4b movl $1, %esi - //0x00002e50 LBB0_480 - 0x48, 0x01, 0xf0, //0x00002e50 addq %rsi, %rax - 0x49, 0x01, 0xca, //0x00002e53 addq %rcx, %r10 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e56 jne LBB0_476 - 0xe9, 0xed, 0x0d, 0x00, 0x00, //0x00002e5c jmp LBB0_507 - //0x00002e61 LBB0_481 - 0x49, 0x83, 0xfa, 0x01, //0x00002e61 cmpq $1, %r10 - 0x0f, 0x84, 0xe3, 0x0d, 0x00, 0x00, //0x00002e65 je LBB0_507 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002e6b movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002e72 movl $2, %esi - 0x48, 0x83, 0xfa, 0xff, //0x00002e77 cmpq $-1, %rdx - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002e7b jne LBB0_480 - 0x48, 0x89, 0xc2, //0x00002e81 movq %rax, %rdx - 0x4c, 0x29, 0xe2, //0x00002e84 subq %r12, %rdx - 0x48, 0x89, 0x55, 0xc8, //0x00002e87 movq %rdx, $-56(%rbp) - 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002e8b jmp LBB0_480 - //0x00002e90 LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00002e90 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002e94 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002e97 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002e9f xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002ea2 cmpq $32, %r9 - 0x0f, 0x83, 0x61, 0xf8, 0xff, 0xff, //0x00002ea6 jae LBB0_51 - //0x00002eac LBB0_485 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eac movabsq $4294977024, %r11 - 0xe9, 0x6a, 0x03, 0x00, 0x00, //0x00002eb6 jmp LBB0_520 - //0x00002ebb LBB0_486 - 0x48, 0x8b, 0x45, 0xb0, //0x00002ebb movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002ebf addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ec2 movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00002eca xorl %ebx, %ebx - 0x49, 0x83, 0xfe, 0x20, //0x00002ecc cmpq $32, %r14 - 0x0f, 0x83, 0xbf, 0xf8, 0xff, 0xff, //0x00002ed0 jae LBB0_167 - //0x00002ed6 LBB0_487 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ed6 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eda movabsq $4294977024, %r11 - 0x48, 0x85, 0xdb, //0x00002ee4 testq %rbx, %rbx - 0x0f, 0x84, 0x5b, 0xfb, 0xff, 0xff, //0x00002ee7 je LBB0_440 - //0x00002eed LBB0_488 - 0x4d, 0x85, 0xf6, //0x00002eed testq %r14, %r14 - 0x0f, 0x84, 0x39, 0x0d, 0x00, 0x00, //0x00002ef0 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ef6 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002efb movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00002eff movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00002f02 notq %rcx - 0x48, 0x01, 0xc1, //0x00002f05 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002f08 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002f0c cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002f10 movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002f13 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002f17 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002f1b addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00002f1f addq $-1, %r14 - 0x48, 0x89, 0x55, 0xc8, //0x00002f23 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f27 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f2b movabsq $4294977024, %r11 - 0x4d, 0x85, 0xf6, //0x00002f35 testq %r14, %r14 - 0x0f, 0x85, 0x17, 0xfb, 0xff, 0xff, //0x00002f38 jne LBB0_441 - 0xe9, 0xec, 0x0c, 0x00, 0x00, //0x00002f3e jmp LBB0_490 - //0x00002f43 LBB0_491 - 0x4c, 0x29, 0xe0, //0x00002f43 subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002f46 addq $1, %rax - 0xe9, 0x94, 0x09, 0x00, 0x00, //0x00002f4a jmp LBB0_596 - //0x00002f4f LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x00002f4f movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002f53 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f56 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002f5e xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002f61 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002f65 movq $-48(%rbp), %r14 - 0x0f, 0x83, 0x3d, 0xf9, 0xff, 0xff, //0x00002f69 jae LBB0_74 - //0x00002f6f LBB0_493 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f6f movabsq $4294977024, %r11 - 0xe9, 0x56, 0x05, 0x00, 0x00, //0x00002f79 jmp LBB0_549 - //0x00002f7e LBB0_494 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002f7e movq $-64(%rbp), %r8 - 0x49, 0x8d, 0x04, 0x08, //0x00002f82 leaq (%r8,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f86 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xe4, //0x00002f8e xorl %r12d, %r12d - 0x49, 0x83, 0xf9, 0x20, //0x00002f91 cmpq $32, %r9 - 0x0f, 0x83, 0x99, 0xf9, 0xff, 0xff, //0x00002f95 jae LBB0_196 - //0x00002f9b LBB0_495 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f9b movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f9f movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8e, 0xd0, 0xff, 0xff, //0x00002fa9 movdqu $-12146(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xe4, //0x00002fb2 testq %r12, %r12 - 0x0f, 0x84, 0x5a, 0xfb, 0xff, 0xff, //0x00002fb5 je LBB0_452 - //0x00002fbb LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002fbb testq %r9, %r9 - 0x0f, 0x84, 0x8a, 0x0c, 0x00, 0x00, //0x00002fbe je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002fc4 movdqa %xmm2, %xmm5 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002fc8 movq $-64(%rbp), %r8 - 0x4c, 0x89, 0xc1, //0x00002fcc movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00002fcf notq %rcx - 0x48, 0x01, 0xc1, //0x00002fd2 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002fd5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002fd9 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002fdd movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002fe0 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002fe4 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002fe8 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00002fec addq $-1, %r9 - 0x48, 0x89, 0x55, 0xc8, //0x00002ff0 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002ff4 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ff8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ffc movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x31, 0xd0, 0xff, 0xff, //0x00003006 movdqu $-12239(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xc9, //0x0000300f testq %r9, %r9 - 0x0f, 0x85, 0x0a, 0xfb, 0xff, 0xff, //0x00003012 jne LBB0_453 - 0xe9, 0x56, 0x0a, 0x00, 0x00, //0x00003018 jmp LBB0_616 - //0x0000301d LBB0_498 - 0x49, 0x8d, 0x0c, 0x04, //0x0000301d leaq (%r12,%rax), %rcx - 0x48, 0x85, 0xd2, //0x00003021 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0xee, 0xff, 0xff, //0x00003024 jne LBB0_349 - //0x0000302a LBB0_499 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000302a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000302f movdqa %xmm2, %xmm5 - 0xe9, 0x4d, 0xee, 0xff, 0xff, //0x00003033 jmp LBB0_355 - //0x00003038 LBB0_500 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003038 movq $-1, %r14 - 0x4c, 0x89, 0xc2, //0x0000303f movq %r8, %rdx - 0x49, 0x89, 0xf9, //0x00003042 movq %rdi, %r9 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003045 movq $-1, %r10 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000304c movq $-1, %r13 - 0xe9, 0x2e, 0xe6, 0xff, 0xff, //0x00003053 jmp LBB0_275 - //0x00003058 LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00003058 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x0000305c addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000305f movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00003067 xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x0000306a cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000306e movq $-48(%rbp), %r14 - 0x0f, 0x83, 0xe7, 0xfb, 0xff, 0xff, //0x00003072 jae LBB0_242 - //0x00003078 LBB0_502 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003078 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000307d movdqa %xmm2, %xmm5 - 0xe9, 0xbb, 0x07, 0x00, 0x00, //0x00003081 jmp LBB0_583 - //0x00003086 LBB0_503 - 0x49, 0x8d, 0x04, 0x0c, //0x00003086 leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000308a movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00003092 xorl %ebx, %ebx - 0x49, 0x89, 0xf2, //0x00003094 movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00003097 cmpq $32, %rsi - 0x0f, 0x83, 0x3b, 0xfc, 0xff, 0xff, //0x0000309b jae LBB0_395 - //0x000030a1 LBB0_504 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030a1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000030a6 movdqa %xmm2, %xmm5 - 0x48, 0x85, 0xdb, //0x000030aa testq %rbx, %rbx - 0x0f, 0x84, 0x66, 0xfd, 0xff, 0xff, //0x000030ad je LBB0_475 - //0x000030b3 LBB0_505 - 0x4d, 0x85, 0xd2, //0x000030b3 testq %r10, %r10 - 0x0f, 0x84, 0x92, 0x0b, 0x00, 0x00, //0x000030b6 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000030bc movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000030bf notq %rdx - 0x48, 0x01, 0xc2, //0x000030c2 addq %rax, %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x000030c5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000030c9 cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x000030cd movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xca, //0x000030d0 cmoveq %rdx, %rcx - 0x48, 0x0f, 0x45, 0xd6, //0x000030d4 cmovneq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000030d8 addq $1, %rax - 0x49, 0x83, 0xc2, 0xff, //0x000030dc addq $-1, %r10 - 0x48, 0x89, 0x4d, 0xc8, //0x000030e0 movq %rcx, $-56(%rbp) - 0x4d, 0x85, 0xd2, //0x000030e4 testq %r10, %r10 - 0x0f, 0x85, 0x39, 0xfd, 0xff, 0xff, //0x000030e7 jne LBB0_476 - 0xe9, 0x5c, 0x0b, 0x00, 0x00, //0x000030ed jmp LBB0_507 - //0x000030f2 LBB0_508 - 0x49, 0x39, 0xd1, //0x000030f2 cmpq %rdx, %r9 - 0x0f, 0x84, 0x4c, 0x09, 0x00, 0x00, //0x000030f5 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030fb movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003100 movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003104 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003107 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x0000310b notq %rdx - 0x49, 0x01, 0xd1, //0x0000310e addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003111 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003115 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003119 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003123 testq %r9, %r9 - 0x0f, 0x8f, 0x33, 0x00, 0x00, 0x00, //0x00003126 jg LBB0_512 - 0xe9, 0x16, 0x09, 0x00, 0x00, //0x0000312c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003131 .p2align 4, 0x90 - //0x00003140 LBB0_510 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003140 movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003147 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000314c addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000314f movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003156 addq %rcx, %r9 - 0x0f, 0x8e, 0xe8, 0x08, 0x00, 0x00, //0x00003159 jle LBB0_638 - //0x0000315f LBB0_512 - 0x41, 0x0f, 0xb6, 0x02, //0x0000315f movzbl (%r10), %eax - 0x3c, 0x5c, //0x00003163 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003165 je LBB0_510 - 0x3c, 0x22, //0x0000316b cmpb $34, %al - 0x0f, 0x84, 0x1f, 0x06, 0x00, 0x00, //0x0000316d je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003173 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x0000317a movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000317f addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003182 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003189 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000318c jg LBB0_512 - 0xe9, 0xb0, 0x08, 0x00, 0x00, //0x00003192 jmp LBB0_638 - //0x00003197 LBB0_515 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003197 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000319c movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000031a0 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000031a5 jne LBB0_518 - 0x48, 0x89, 0xc1, //0x000031ab movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000031ae subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000031b1 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000031b5 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000031b8 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000031bc jmp LBB0_518 - //0x000031c1 LBB0_517 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031c1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000031c6 movdqa %xmm2, %xmm5 - //0x000031ca LBB0_518 - 0x44, 0x89, 0xc1, //0x000031ca movl %r8d, %ecx - 0xf7, 0xd1, //0x000031cd notl %ecx - 0x21, 0xf1, //0x000031cf andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000031d1 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000031d5 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000031d8 notl %ebx - 0x21, 0xf3, //0x000031da andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031dc andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000031e2 xorl %r8d, %r8d - 0x01, 0xcb, //0x000031e5 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000031e7 setb %r8b - 0x01, 0xdb, //0x000031eb addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000031ed xorl $1431655765, %ebx - 0x21, 0xfb, //0x000031f3 andl %edi, %ebx - 0xf7, 0xd3, //0x000031f5 notl %ebx - 0x21, 0xda, //0x000031f7 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000031f9 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000031fd movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003201 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000320b movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000320f movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003214 testq %rdx, %rdx - 0x0f, 0x85, 0x54, 0xf5, 0xff, 0xff, //0x00003217 jne LBB0_54 - //0x0000321d LBB0_519 - 0x48, 0x83, 0xc0, 0x20, //0x0000321d addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00003221 addq $-32, %r9 - //0x00003225 LBB0_520 - 0x4d, 0x85, 0xc0, //0x00003225 testq %r8, %r8 - 0x0f, 0x85, 0x18, 0x04, 0x00, 0x00, //0x00003228 jne LBB0_566 - 0x4c, 0x89, 0xe1, //0x0000322e movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00003231 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x00003234 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x00003238 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000323b je LBB0_532 - //0x00003241 LBB0_522 - 0x48, 0x83, 0xc1, 0x01, //0x00003241 addq $1, %rcx - //0x00003245 LBB0_523 - 0x31, 0xf6, //0x00003245 xorl %esi, %esi - //0x00003247 LBB0_524 - 0x0f, 0xb6, 0x1c, 0x30, //0x00003247 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x0000324b cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000324e je LBB0_531 - 0x80, 0xfb, 0x5c, //0x00003254 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003257 je LBB0_529 - 0x48, 0x83, 0xc6, 0x01, //0x0000325d addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003261 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003264 jne LBB0_524 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000326a jmp LBB0_527 - //0x0000326f LBB0_529 - 0x49, 0x8d, 0x79, 0xff, //0x0000326f leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003273 cmpq %rsi, %rdi - 0x0f, 0x84, 0xb3, 0x09, 0x00, 0x00, //0x00003276 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000327c movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003281 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003285 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003289 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000328c cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x00003290 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003294 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003298 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000329c cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x000032a0 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000032a3 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x000032a7 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x000032aa subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x000032ad addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x000032b1 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x000032b5 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x000032b8 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000032bb movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000032bf movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000032c3 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000032cd jne LBB0_523 - 0xe9, 0x3f, 0x07, 0x00, 0x00, //0x000032d3 jmp LBB0_610 - //0x000032d8 LBB0_531 - 0x48, 0x01, 0xf0, //0x000032d8 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000032db addq $1, %rax - //0x000032df LBB0_532 - 0x4c, 0x29, 0xe0, //0x000032df subq %r12, %rax - 0xe9, 0x9f, 0xdf, 0xff, 0xff, //0x000032e2 jmp LBB0_223 - //0x000032e7 LBB0_527 - 0x80, 0xfb, 0x22, //0x000032e7 cmpb $34, %bl - 0x0f, 0x85, 0x3f, 0x09, 0x00, 0x00, //0x000032ea jne LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032f0 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000032f5 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000032f9 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000032fc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003300 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003304 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000330e jmp LBB0_532 - //0x00003313 LBB0_533 - 0x48, 0x89, 0xdf, //0x00003313 movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003316 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000331b movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000331f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003324 jne LBB0_543 - 0x49, 0x89, 0xc0, //0x0000332a movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000332d subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003330 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003334 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003337 movq %rbx, $-56(%rbp) - 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000333b jmp LBB0_543 - //0x00003340 LBB0_535 - 0x49, 0x39, 0xd1, //0x00003340 cmpq %rdx, %r9 - 0x0f, 0x84, 0xfe, 0x06, 0x00, 0x00, //0x00003343 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003349 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000334e movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003352 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003355 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003359 notq %rdx - 0x49, 0x01, 0xd1, //0x0000335c addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000335f movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003363 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003367 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003371 testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003374 jg LBB0_539 - 0xe9, 0xc8, 0x06, 0x00, 0x00, //0x0000337a jmp LBB0_638 - //0x0000337f LBB0_537 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000337f movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003386 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000338b addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000338e movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003395 addq %rcx, %r9 - 0x0f, 0x8e, 0xa9, 0x06, 0x00, 0x00, //0x00003398 jle LBB0_638 - //0x0000339e LBB0_539 - 0x41, 0x0f, 0xb6, 0x02, //0x0000339e movzbl (%r10), %eax - 0x3c, 0x5c, //0x000033a2 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000033a4 je LBB0_537 - 0x3c, 0x22, //0x000033aa cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000033ac je LBB0_607 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000033b2 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000033b9 movl $1, %eax - 0x49, 0x01, 0xc2, //0x000033be addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033c1 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x000033c8 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000033cb jg LBB0_539 - 0xe9, 0x71, 0x06, 0x00, 0x00, //0x000033d1 jmp LBB0_638 - //0x000033d6 LBB0_607 - 0x4d, 0x29, 0xe2, //0x000033d6 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033d9 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x000033dd movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x000033e0 testq %r8, %r8 - 0x0f, 0x8f, 0x33, 0xe4, 0xff, 0xff, //0x000033e3 jg LBB0_306 - 0xe9, 0x13, 0x06, 0x00, 0x00, //0x000033e9 jmp LBB0_608 - //0x000033ee LBB0_542 - 0x48, 0x89, 0xdf, //0x000033ee movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000033f1 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x000033f6 movdqa %xmm2, %xmm6 - //0x000033fa LBB0_543 - 0x48, 0x89, 0xfb, //0x000033fa movq %rdi, %rbx - 0xf7, 0xd7, //0x000033fd notl %edi - 0x44, 0x21, 0xcf, //0x000033ff andl %r9d, %edi - 0x44, 0x8d, 0x04, 0x7b, //0x00003402 leal (%rbx,%rdi,2), %r8d - 0x8d, 0x14, 0x3f, //0x00003406 leal (%rdi,%rdi), %edx - 0xf7, 0xd2, //0x00003409 notl %edx - 0x44, 0x21, 0xca, //0x0000340b andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000340e andl $-1431655766, %edx - 0x31, 0xdb, //0x00003414 xorl %ebx, %ebx - 0x01, 0xfa, //0x00003416 addl %edi, %edx - 0x0f, 0x92, 0xc3, //0x00003418 setb %bl - 0x01, 0xd2, //0x0000341b addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000341d xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003423 andl %r8d, %edx - 0xf7, 0xd2, //0x00003426 notl %edx - 0x21, 0xd1, //0x00003428 andl %edx, %ecx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000342a movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000342e movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003438 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000343c movdqa %xmm7, %xmm13 - 0xe9, 0xd0, 0xf3, 0xff, 0xff, //0x00003441 jmp LBB0_170 - //0x00003446 LBB0_544 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003446 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000344b movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000344f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003454 jne LBB0_547 - 0x48, 0x89, 0xc1, //0x0000345a movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x0000345d subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x00003460 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x00003464 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x00003467 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000346b jmp LBB0_547 - //0x00003470 LBB0_546 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003470 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003475 movdqa %xmm2, %xmm5 - //0x00003479 LBB0_547 - 0x44, 0x89, 0xc1, //0x00003479 movl %r8d, %ecx - 0xf7, 0xd1, //0x0000347c notl %ecx - 0x21, 0xf1, //0x0000347e andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x00003480 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00003484 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00003487 notl %ebx - 0x21, 0xf3, //0x00003489 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000348b andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00003491 xorl %r8d, %r8d - 0x01, 0xcb, //0x00003494 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00003496 setb %r8b - 0x01, 0xdb, //0x0000349a addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000349c xorl $1431655765, %ebx - 0x21, 0xfb, //0x000034a2 andl %edi, %ebx - 0xf7, 0xd3, //0x000034a4 notl %ebx - 0x21, 0xda, //0x000034a6 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000034a8 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000034ac movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000034b0 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000034ba movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000034be movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x000034c3 testq %rdx, %rdx - 0x0f, 0x85, 0x44, 0xf4, 0xff, 0xff, //0x000034c6 jne LBB0_77 - //0x000034cc LBB0_548 - 0x48, 0x83, 0xc0, 0x20, //0x000034cc addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x000034d0 addq $-32, %r9 - //0x000034d4 LBB0_549 - 0x4d, 0x85, 0xc0, //0x000034d4 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x000034d7 jne LBB0_568 - 0x4c, 0x89, 0xe1, //0x000034dd movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000034e0 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x000034e3 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x000034e7 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x000034ea je LBB0_561 - //0x000034f0 LBB0_551 - 0x48, 0x83, 0xc1, 0x01, //0x000034f0 addq $1, %rcx - //0x000034f4 LBB0_552 - 0x31, 0xf6, //0x000034f4 xorl %esi, %esi - //0x000034f6 LBB0_553 - 0x0f, 0xb6, 0x1c, 0x30, //0x000034f6 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x000034fa cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000034fd je LBB0_560 - 0x80, 0xfb, 0x5c, //0x00003503 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003506 je LBB0_558 - 0x48, 0x83, 0xc6, 0x01, //0x0000350c addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003510 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003513 jne LBB0_553 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003519 jmp LBB0_556 - //0x0000351e LBB0_558 - 0x49, 0x8d, 0x79, 0xff, //0x0000351e leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003522 cmpq %rsi, %rdi - 0x0f, 0x84, 0x23, 0x07, 0x00, 0x00, //0x00003525 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000352b movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003530 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003534 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003538 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000353b cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x0000353f movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003543 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003547 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000354b cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x0000354f addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00003552 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x00003556 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x00003559 subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x0000355c addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x00003560 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x00003564 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x00003567 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000356a movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000356e movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003572 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000357c jne LBB0_552 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x00003582 jmp LBB0_616 - //0x00003587 LBB0_560 - 0x48, 0x01, 0xf0, //0x00003587 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000358a addq $1, %rax - //0x0000358e LBB0_561 - 0x4c, 0x29, 0xe0, //0x0000358e subq %r12, %rax - 0xe9, 0x6d, 0xe2, 0xff, 0xff, //0x00003591 jmp LBB0_304 - //0x00003596 LBB0_556 - 0x80, 0xfb, 0x22, //0x00003596 cmpb $34, %bl - 0x0f, 0x85, 0xaf, 0x06, 0x00, 0x00, //0x00003599 jne LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000359f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000035a4 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000035a8 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000035ab movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000035af movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035b3 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x000035bd jmp LBB0_561 - //0x000035c2 LBB0_562 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035c2 movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000035c6 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x000035cb jne LBB0_565 - 0x49, 0x89, 0xc0, //0x000035d1 movq %rax, %r8 - 0x4c, 0x2b, 0x45, 0xc0, //0x000035d4 subq $-64(%rbp), %r8 - 0x49, 0x0f, 0xbc, 0xda, //0x000035d8 bsfq %r10, %rbx - 0x4c, 0x01, 0xc3, //0x000035dc addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000035df movq %rbx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x000035e3 jmp LBB0_565 - //0x000035e8 LBB0_564 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035e8 movdqa %xmm2, %xmm6 - //0x000035ec LBB0_565 - 0x44, 0x89, 0xe2, //0x000035ec movl %r12d, %edx - 0xf7, 0xd2, //0x000035ef notl %edx - 0x44, 0x21, 0xd2, //0x000035f1 andl %r10d, %edx - 0x45, 0x8d, 0x04, 0x54, //0x000035f4 leal (%r12,%rdx,2), %r8d - 0x8d, 0x0c, 0x12, //0x000035f8 leal (%rdx,%rdx), %ecx - 0xf7, 0xd1, //0x000035fb notl %ecx - 0x44, 0x21, 0xd1, //0x000035fd andl %r10d, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003600 andl $-1431655766, %ecx - 0x45, 0x31, 0xe4, //0x00003606 xorl %r12d, %r12d - 0x01, 0xd1, //0x00003609 addl %edx, %ecx - 0x41, 0x0f, 0x92, 0xc4, //0x0000360b setb %r12b - 0x01, 0xc9, //0x0000360f addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003611 xorl $1431655765, %ecx - 0x44, 0x21, 0xc1, //0x00003617 andl %r8d, %ecx - 0xf7, 0xd1, //0x0000361a notl %ecx - 0x21, 0xce, //0x0000361c andl %ecx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000361e movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003622 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003626 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003630 movdqa %xmm6, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x03, 0xca, 0xff, 0xff, //0x00003634 movdqu $-13821(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x0000363d movq $-64(%rbp), %r8 - 0xe9, 0x79, 0xf3, 0xff, 0xff, //0x00003641 jmp LBB0_199 - //0x00003646 LBB0_566 - 0x4d, 0x85, 0xc9, //0x00003646 testq %r9, %r9 - 0x0f, 0x84, 0xe0, 0x05, 0x00, 0x00, //0x00003649 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000364f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003654 movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00003658 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x0000365b notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x0000365e leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x00003662 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x00003666 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x0000366a movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x0000366d cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x00003671 cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00003675 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00003679 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x0000367d movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003681 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003685 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003689 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003693 testq %r9, %r9 - 0x0f, 0x85, 0xa5, 0xfb, 0xff, 0xff, //0x00003696 jne LBB0_522 - 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x0000369c jmp LBB0_532 - //0x000036a1 LBB0_568 - 0x4d, 0x85, 0xc9, //0x000036a1 testq %r9, %r9 - 0x0f, 0x84, 0xa4, 0x05, 0x00, 0x00, //0x000036a4 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000036af movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x000036b3 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000036b6 notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x000036b9 leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x000036bd movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000036c1 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x000036c5 movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x000036c8 cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x000036cc cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000036d0 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000036d4 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000036d8 movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x000036dc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000036e0 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036e4 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x000036ee testq %r9, %r9 - 0x0f, 0x85, 0xf9, 0xfd, 0xff, 0xff, //0x000036f1 jne LBB0_551 - 0xe9, 0x92, 0xfe, 0xff, 0xff, //0x000036f7 jmp LBB0_561 - //0x000036fc LBB0_570 - 0x49, 0x39, 0xd1, //0x000036fc cmpq %rdx, %r9 - 0x0f, 0x84, 0x42, 0x03, 0x00, 0x00, //0x000036ff je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003705 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000370a movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x0000370e addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003711 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003715 notq %rdx - 0x49, 0x01, 0xd1, //0x00003718 addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000371b movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000371f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003723 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x0000372d testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003730 jg LBB0_574 - 0xe9, 0x0c, 0x03, 0x00, 0x00, //0x00003736 jmp LBB0_638 - //0x0000373b LBB0_572 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000373b movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003742 movl $2, %eax - 0x49, 0x01, 0xc2, //0x00003747 addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000374a movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003751 addq %rcx, %r9 - 0x0f, 0x8e, 0xed, 0x02, 0x00, 0x00, //0x00003754 jle LBB0_638 - //0x0000375a LBB0_574 - 0x41, 0x0f, 0xb6, 0x02, //0x0000375a movzbl (%r10), %eax - 0x3c, 0x5c, //0x0000375e cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003760 je LBB0_572 - 0x3c, 0x22, //0x00003766 cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003768 je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000376e movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003775 movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000377a addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000377d movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003784 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003787 jg LBB0_574 - 0xe9, 0xb5, 0x02, 0x00, 0x00, //0x0000378d jmp LBB0_638 - //0x00003792 LBB0_577 - 0x4d, 0x29, 0xe2, //0x00003792 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003795 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x00003799 movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x0000379c testq %r8, %r8 - 0x0f, 0x8f, 0x1b, 0xca, 0xff, 0xff, //0x0000379f jg LBB0_4 - 0xe9, 0x57, 0x02, 0x00, 0x00, //0x000037a5 jmp LBB0_608 - //0x000037aa LBB0_578 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037af movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000037b3 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000037b8 jne LBB0_581 - 0x48, 0x89, 0xc1, //0x000037be movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000037c1 subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000037c4 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000037c8 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000037cb movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000037cf jmp LBB0_581 - //0x000037d4 LBB0_580 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037d4 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037d9 movdqa %xmm2, %xmm5 - //0x000037dd LBB0_581 - 0x44, 0x89, 0xc1, //0x000037dd movl %r8d, %ecx - 0xf7, 0xd1, //0x000037e0 notl %ecx - 0x21, 0xf1, //0x000037e2 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000037e4 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000037e8 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000037eb notl %ebx - 0x21, 0xf3, //0x000037ed andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000037ef andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000037f5 xorl %r8d, %r8d - 0x01, 0xcb, //0x000037f8 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000037fa setb %r8b - 0x01, 0xdb, //0x000037fe addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003800 xorl $1431655765, %ebx - 0x21, 0xfb, //0x00003806 andl %edi, %ebx - 0xf7, 0xd3, //0x00003808 notl %ebx - 0x21, 0xda, //0x0000380a andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x0000380c movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003810 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003814 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000381e movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003822 movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003827 testq %rdx, %rdx - 0x0f, 0x85, 0x89, 0xf4, 0xff, 0xff, //0x0000382a jne LBB0_245 - //0x00003830 LBB0_582 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003830 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003835 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00003839 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x0000383d addq $-32, %r9 - //0x00003841 LBB0_583 - 0x4d, 0x85, 0xc0, //0x00003841 testq %r8, %r8 - 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x00003844 jne LBB0_601 - 0x4c, 0x89, 0xe2, //0x0000384a movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x0000384d notq %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x00003850 movq $-56(%rbp), %rsi - 0x4d, 0x85, 0xc9, //0x00003854 testq %r9, %r9 - 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x00003857 je LBB0_595 - //0x0000385d LBB0_585 - 0x48, 0x83, 0xc2, 0x01, //0x0000385d addq $1, %rdx - //0x00003861 LBB0_586 - 0x31, 0xff, //0x00003861 xorl %edi, %edi - //0x00003863 LBB0_587 - 0x0f, 0xb6, 0x0c, 0x38, //0x00003863 movzbl (%rax,%rdi), %ecx - 0x80, 0xf9, 0x22, //0x00003867 cmpb $34, %cl - 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x0000386a je LBB0_594 - 0x80, 0xf9, 0x5c, //0x00003870 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003873 je LBB0_592 - 0x48, 0x83, 0xc7, 0x01, //0x00003879 addq $1, %rdi - 0x49, 0x39, 0xf9, //0x0000387d cmpq %rdi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003880 jne LBB0_587 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003886 jmp LBB0_590 - //0x0000388b LBB0_592 - 0x49, 0x8d, 0x49, 0xff, //0x0000388b leaq $-1(%r9), %rcx - 0x48, 0x39, 0xf9, //0x0000388f cmpq %rdi, %rcx - 0x0f, 0x84, 0xb6, 0x03, 0x00, 0x00, //0x00003892 je LBB0_507 - 0x48, 0x8d, 0x0c, 0x02, //0x00003898 leaq (%rdx,%rax), %rcx - 0x48, 0x01, 0xf9, //0x0000389c addq %rdi, %rcx - 0x48, 0x83, 0xfe, 0xff, //0x0000389f cmpq $-1, %rsi - 0x48, 0x8b, 0x5d, 0xc8, //0x000038a3 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xd9, //0x000038a7 cmoveq %rcx, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000038ab movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xf1, //0x000038af cmoveq %rcx, %rsi - 0x48, 0x01, 0xf8, //0x000038b3 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000038b6 addq $2, %rax - 0x4c, 0x89, 0xc9, //0x000038ba movq %r9, %rcx - 0x48, 0x29, 0xf9, //0x000038bd subq %rdi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000038c0 addq $-2, %rcx - 0x49, 0x83, 0xc1, 0xfe, //0x000038c4 addq $-2, %r9 - 0x49, 0x39, 0xf9, //0x000038c8 cmpq %rdi, %r9 - 0x49, 0x89, 0xc9, //0x000038cb movq %rcx, %r9 - 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x000038ce jne LBB0_586 - 0xe9, 0x75, 0x03, 0x00, 0x00, //0x000038d4 jmp LBB0_507 - //0x000038d9 LBB0_594 - 0x48, 0x01, 0xf8, //0x000038d9 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000038dc addq $1, %rax - //0x000038e0 LBB0_595 - 0x4c, 0x29, 0xe0, //0x000038e0 subq %r12, %rax - //0x000038e3 LBB0_596 - 0x4c, 0x8b, 0x75, 0xd0, //0x000038e3 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000038e7 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000038eb movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000038f5 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000038f9 movdqa %xmm6, %xmm13 - 0xe9, 0x3a, 0xed, 0xff, 0xff, //0x000038fe jmp LBB0_426 - //0x00003903 LBB0_590 - 0x80, 0xf9, 0x22, //0x00003903 cmpb $34, %cl - 0x0f, 0x85, 0x42, 0x03, 0x00, 0x00, //0x00003906 jne LBB0_507 - 0x4c, 0x01, 0xc8, //0x0000390c addq %r9, %rax - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000390f jmp LBB0_595 - //0x00003914 LBB0_597 - 0x48, 0x89, 0xd9, //0x00003914 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003917 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000391c movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003920 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003925 jne LBB0_600 - 0x49, 0x89, 0xc0, //0x0000392b movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000392e subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003931 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003935 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003938 movq %rbx, $-56(%rbp) - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000393c jmp LBB0_600 - //0x00003941 LBB0_599 - 0x48, 0x89, 0xd9, //0x00003941 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003944 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00003949 movdqa %xmm2, %xmm6 - //0x0000394d LBB0_600 - 0x48, 0x89, 0xcb, //0x0000394d movq %rcx, %rbx - 0xf7, 0xd1, //0x00003950 notl %ecx - 0x44, 0x21, 0xc9, //0x00003952 andl %r9d, %ecx - 0x44, 0x8d, 0x04, 0x4b, //0x00003955 leal (%rbx,%rcx,2), %r8d - 0x8d, 0x14, 0x09, //0x00003959 leal (%rcx,%rcx), %edx - 0xf7, 0xd2, //0x0000395c notl %edx - 0x44, 0x21, 0xca, //0x0000395e andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003961 andl $-1431655766, %edx - 0x31, 0xdb, //0x00003967 xorl %ebx, %ebx - 0x01, 0xca, //0x00003969 addl %ecx, %edx - 0x0f, 0x92, 0xc3, //0x0000396b setb %bl - 0x01, 0xd2, //0x0000396e addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00003970 xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003976 andl %r8d, %edx - 0xf7, 0xd2, //0x00003979 notl %edx - 0x21, 0xd6, //0x0000397b andl %edx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000397d movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003981 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003985 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x0000398f movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00003993 movdqa %xmm7, %xmm13 - 0xe9, 0xc0, 0xf3, 0xff, 0xff, //0x00003998 jmp LBB0_398 - //0x0000399d LBB0_601 - 0x4d, 0x85, 0xc9, //0x0000399d testq %r9, %r9 - 0x0f, 0x84, 0xa8, 0x02, 0x00, 0x00, //0x000039a0 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000039a6 movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000039a9 notq %rdx - 0x48, 0x8d, 0x0c, 0x10, //0x000039ac leaq (%rax,%rdx), %rcx - 0x48, 0x8b, 0x7d, 0xc8, //0x000039b0 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000039b4 cmpq $-1, %rdi - 0x48, 0x89, 0xfe, //0x000039b8 movq %rdi, %rsi - 0x48, 0x0f, 0x44, 0xf9, //0x000039bb cmoveq %rcx, %rdi - 0x48, 0x0f, 0x44, 0xf1, //0x000039bf cmoveq %rcx, %rsi - 0x48, 0x83, 0xc0, 0x01, //0x000039c3 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000039c7 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000039cb movq %rdi, $-56(%rbp) - 0x4d, 0x85, 0xc9, //0x000039cf testq %r9, %r9 - 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x000039d2 jne LBB0_585 - 0xe9, 0x03, 0xff, 0xff, 0xff, //0x000039d8 jmp LBB0_595 - //0x000039dd LBB0_603 - 0x49, 0x89, 0x16, //0x000039dd movq %rdx, (%r14) - //0x000039e0 LBB0_604 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000039e0 movq $-1, %rax - 0xe9, 0x5b, 0x00, 0x00, 0x00, //0x000039e7 jmp LBB0_638 - //0x000039ec LBB0_634 - 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x000039ec movq $-7, %rax - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x000039f3 jmp LBB0_638 - //0x000039f8 LBB0_606 - 0x48, 0x83, 0xc0, 0xff, //0x000039f8 addq $-1, %rax - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000039fc jmp LBB0_638 - //0x00003a01 LBB0_608 - 0x49, 0x83, 0xc0, 0xff, //0x00003a01 addq $-1, %r8 - 0x4c, 0x89, 0xc0, //0x00003a05 movq %r8, %rax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x00003a08 jmp LBB0_638 - //0x00003a0d LBB0_609 - 0x48, 0x83, 0xf8, 0xff, //0x00003a0d cmpq $-1, %rax - 0x0f, 0x85, 0x90, 0x00, 0x00, 0x00, //0x00003a11 jne LBB0_621 - //0x00003a17 LBB0_610 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a17 movq $-1, %rax - 0x48, 0x8b, 0x4d, 0xa0, //0x00003a1e movq $-96(%rbp), %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a22 movq %rcx, $-56(%rbp) - 0xe9, 0x7c, 0x00, 0x00, 0x00, //0x00003a26 jmp LBB0_621 - //0x00003a2b LBB0_611 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a2b movq $-1, %r13 - //0x00003a32 LBB0_612 - 0x4c, 0x29, 0xee, //0x00003a32 subq %r13, %rsi - 0x48, 0x83, 0xc6, 0xfe, //0x00003a35 addq $-2, %rsi - 0x48, 0x8b, 0x45, 0xd0, //0x00003a39 movq $-48(%rbp), %rax - 0x48, 0x89, 0x30, //0x00003a3d movq %rsi, (%rax) - //0x00003a40 LBB0_637 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a40 movq $-2, %rax - //0x00003a47 LBB0_638 - 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003a47 addq $136, %rsp - 0x5b, //0x00003a4e popq %rbx - 0x41, 0x5c, //0x00003a4f popq %r12 - 0x41, 0x5d, //0x00003a51 popq %r13 - 0x41, 0x5e, //0x00003a53 popq %r14 - 0x41, 0x5f, //0x00003a55 popq %r15 - 0x5d, //0x00003a57 popq %rbp - 0xc3, //0x00003a58 retq - //0x00003a59 LBB0_614 - 0x48, 0x83, 0xc6, 0xff, //0x00003a59 addq $-1, %rsi - 0x48, 0x89, 0xf0, //0x00003a5d movq %rsi, %rax - 0xe9, 0xe2, 0xff, 0xff, 0xff, //0x00003a60 jmp LBB0_638 - //0x00003a65 LBB0_615 - 0x48, 0x83, 0xf8, 0xff, //0x00003a65 cmpq $-1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x00003a69 movq $-56(%rbp), %rdx - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a6d jne LBB0_617 - //0x00003a73 LBB0_616 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a73 movq $-1, %rax - 0x48, 0x8b, 0x55, 0xa0, //0x00003a7a movq $-96(%rbp), %rdx - //0x00003a7e LBB0_617 - 0x49, 0x89, 0x16, //0x00003a7e movq %rdx, (%r14) - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a81 jmp LBB0_638 - //0x00003a86 LBB0_618 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003a86 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a8b jne LBB0_620 - 0x48, 0x0f, 0xbc, 0xce, //0x00003a91 bsfq %rsi, %rcx - 0x48, 0x01, 0xc1, //0x00003a95 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a98 movq %rcx, $-56(%rbp) - //0x00003a9c LBB0_620 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a9c movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003aa3 movq $-48(%rbp), %r14 - //0x00003aa7 LBB0_621 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003aa7 movq $-56(%rbp), %rcx - 0x49, 0x89, 0x0e, //0x00003aab movq %rcx, (%r14) - 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003aae jmp LBB0_638 - //0x00003ab3 LBB0_622 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ab3 movq $-2, %rax - 0x80, 0xfa, 0x61, //0x00003aba cmpb $97, %dl - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00003abd jne LBB0_638 - 0x48, 0x8d, 0x51, 0x01, //0x00003ac3 leaq $1(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003ac7 movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003aca cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003ad0 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x02, //0x00003ad6 leaq $2(%rcx), %rdx + 0x48, 0xc1, 0xe9, 0x04, //0x0000229e shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x000022a2 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022a5 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x000022af andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022b2 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x000022bc imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x000022c0 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x000022c4 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x000022c7 addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x000022cb movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x000022cf addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x000022d3 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x000022d6 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x000022da movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x44, 0xfd, 0xff, 0xff, //0x000022de jge LBB0_367 + 0xe9, 0xe4, 0xfb, 0xff, 0xff, //0x000022e4 jmp LBB0_376 + //0x000022e9 LBB0_392 + 0x48, 0x8b, 0x75, 0xa8, //0x000022e9 movq $-88(%rbp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x000022ed movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd2, //0x000022f1 bsfq %rdx, %rdx + 0x48, 0x2b, 0x55, 0xb8, //0x000022f5 subq $-72(%rbp), %rdx + 0x48, 0x01, 0xd1, //0x000022f9 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000022fc addq $1, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002300 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x0e, //0x00002304 movq %rcx, (%r14) + 0x48, 0x8b, 0x56, 0x08, //0x00002307 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x0000230b cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000230e cmovaq %rdx, %rcx + 0x49, 0x89, 0x0e, //0x00002312 movq %rcx, (%r14) + 0x0f, 0x87, 0x94, 0x17, 0x00, 0x00, //0x00002315 ja LBB0_650 + 0x48, 0x8b, 0x45, 0xc0, //0x0000231b movq $-64(%rbp), %rax + 0xe9, 0x48, 0x09, 0x00, 0x00, //0x0000231f jmp LBB0_488 + //0x00002324 LBB0_394 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002324 bsfw %cx, %cx + 0x0f, 0xb7, 0xd9, //0x00002328 movzwl %cx, %ebx + 0x48, 0x89, 0xd9, //0x0000232b movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x0000232e subq %rdi, %rcx + 0x49, 0x89, 0x0e, //0x00002331 movq %rcx, (%r14) + 0x48, 0x85, 0xc9, //0x00002334 testq %rcx, %rcx + 0x0f, 0x8e, 0x42, 0xef, 0xff, 0xff, //0x00002337 jle LBB0_231 + 0x49, 0x01, 0xd8, //0x0000233d addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002340 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002343 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002346 .p2align 4, 0x90 + //0x00002350 LBB0_396 + 0x0f, 0xb6, 0x0e, //0x00002350 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002353 cmpq $32, %rcx + 0x0f, 0x87, 0x22, 0xef, 0xff, 0xff, //0x00002357 ja LBB0_231 + 0x49, 0x0f, 0xa3, 0xcb, //0x0000235d btq %rcx, %r11 + 0x0f, 0x83, 0x18, 0xef, 0xff, 0xff, //0x00002361 jae LBB0_231 + 0x49, 0x89, 0x16, //0x00002367 movq %rdx, (%r14) + 0x49, 0x83, 0xc0, 0xff, //0x0000236a addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x0000236e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00002372 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x00002376 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000237a jg LBB0_396 + 0xe9, 0xfa, 0xee, 0xff, 0xff, //0x00002380 jmp LBB0_231 + //0x00002385 LBB0_399 + 0x49, 0x8d, 0x4f, 0xff, //0x00002385 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xc8, //0x00002389 cmpq %rcx, %r8 + 0x49, 0xf7, 0xd7, //0x0000238c notq %r15 + 0x4d, 0x0f, 0x45, 0xf9, //0x0000238f cmovneq %r9, %r15 + 0x84, 0xd2, //0x00002393 testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xf9, //0x00002395 cmoveq %r9, %r15 + 0x4d, 0x89, 0xfd, //0x00002399 movq %r15, %r13 + 0xe9, 0x53, 0x03, 0x00, 0x00, //0x0000239c jmp LBB0_451 + //0x000023a1 LBB0_400 + 0x48, 0x89, 0xc6, //0x000023a1 movq %rax, %rsi + 0x48, 0x29, 0xd6, //0x000023a4 subq %rdx, %rsi + 0x0f, 0x84, 0xf6, 0x18, 0x00, 0x00, //0x000023a7 je LBB0_658 + 0x48, 0x83, 0xfe, 0x40, //0x000023ad cmpq $64, %rsi + 0x0f, 0x82, 0x32, 0x0d, 0x00, 0x00, //0x000023b1 jb LBB0_520 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000023b7 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x000023bf movq $-64(%rbp), %rax + 0x31, 0xdb, //0x000023c3 xorl %ebx, %ebx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023c5 .p2align 4, 0x90 + //0x000023d0 LBB0_403 + 0x48, 0x89, 0x75, 0xb8, //0x000023d0 movq %rsi, $-72(%rbp) + 0x49, 0x89, 0xda, //0x000023d4 movq %rbx, %r10 + 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023d7 movdqu (%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023dd movdqu $16(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023e4 movdqu $32(%r12,%rax), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023eb movdqu $48(%r12,%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xdd, //0x000023f2 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000023f6 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023fa pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xdf, //0x000023ff movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002403 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002407 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000240b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000240f pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x00002413 pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00002418 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000241c pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002420 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00002425 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002429 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000242d pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002432 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002436 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x0000243a pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xde, //0x0000243e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002442 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002446 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x0000244a movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000244e pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00002452 pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002457 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdf, //0x0000245c pcmpgtb %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002460 pcmpgtb %xmm10, %xmm7 + 0x66, 0x0f, 0xdb, 0xfb, //0x00002465 pand %xmm3, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00002469 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000246d movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00002472 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002476 pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x0000247b pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xd6, //0x0000247f pmovmskb %xmm6, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002483 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002488 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000248c pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002491 pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002495 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x0000249a shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x0000249e shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000024a2 orq %r15, %r14 + 0x48, 0xc1, 0xe1, 0x10, //0x000024a5 shlq $16, %rcx + 0x4c, 0x09, 0xf1, //0x000024a9 orq %r14, %rcx + 0x49, 0x09, 0xcb, //0x000024ac orq %rcx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000024af shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000024b3 shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000024b7 orq %r9, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000024ba shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000024be orq %rdi, %rbx + 0x49, 0xc1, 0xe0, 0x30, //0x000024c1 shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000024c5 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000024c9 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000024cc shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000024d0 orq %rdx, %rsi + 0x49, 0x09, 0xdd, //0x000024d3 orq %rbx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024d6 jne LBB0_420 + 0x4d, 0x85, 0xd2, //0x000024dc testq %r10, %r10 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024df jne LBB0_422 + 0x31, 0xdb, //0x000024e5 xorl %ebx, %ebx + 0x4c, 0x8b, 0x75, 0xd0, //0x000024e7 movq $-48(%rbp), %r14 + //0x000024eb LBB0_406 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024eb movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x000024f0 pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024f4 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x000024f9 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000024fd pmovmskb %xmm5, %ecx + 0x48, 0x09, 0xce, //0x00002501 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00002504 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002507 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x0000250b jne LBB0_424 + 0x48, 0x85, 0xf6, //0x00002511 testq %rsi, %rsi + 0x0f, 0x85, 0xf7, 0x16, 0x00, 0x00, //0x00002514 jne LBB0_645 + 0x48, 0x8b, 0x75, 0xb8, //0x0000251a movq $-72(%rbp), %rsi + 0x48, 0x83, 0xc6, 0xc0, //0x0000251e addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x00002522 addq $64, %rax + 0x48, 0x83, 0xfe, 0x3f, //0x00002526 cmpq $63, %rsi + 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000252a ja LBB0_403 + 0xe9, 0xd5, 0x07, 0x00, 0x00, //0x00002530 jmp LBB0_409 + //0x00002535 LBB0_420 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002535 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000253a movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000253e jne LBB0_423 + 0x49, 0x0f, 0xbc, 0xcd, //0x00002544 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00002548 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000254b movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000254f jmp LBB0_423 + //0x00002554 LBB0_422 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002554 movq $-48(%rbp), %r14 + //0x00002558 LBB0_423 + 0x4c, 0x89, 0xd1, //0x00002558 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000255b notq %rcx + 0x4c, 0x21, 0xe9, //0x0000255e andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00002561 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xd2, //0x00002565 orq %r10, %rdx + 0x48, 0x89, 0xd7, //0x00002568 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x0000256b notq %rdi + 0x4c, 0x21, 0xef, //0x0000256e andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002571 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x0000257b andq %rbx, %rdi + 0x31, 0xdb, //0x0000257e xorl %ebx, %ebx + 0x48, 0x01, 0xcf, //0x00002580 addq %rcx, %rdi + 0x0f, 0x92, 0xc3, //0x00002583 setb %bl + 0x48, 0x01, 0xff, //0x00002586 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002589 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x00002593 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x00002596 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00002599 notq %rdi + 0x49, 0x21, 0xfb, //0x0000259c andq %rdi, %r11 + 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000259f jmp LBB0_406 + //0x000025a4 LBB0_424 + 0x49, 0x0f, 0xbc, 0xcb, //0x000025a4 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000025a8 testq %rsi, %rsi + 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, //0x000025ab je LBB0_438 + 0x48, 0x0f, 0xbc, 0xd6, //0x000025b1 bsfq %rsi, %rdx + 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x000025b5 jmp LBB0_439 + //0x000025ba LBB0_426 + 0x41, 0x89, 0xcb, //0x000025ba movl %ecx, %r11d + 0x4c, 0x03, 0x5d, 0xb8, //0x000025bd addq $-72(%rbp), %r11 + 0x49, 0x01, 0xdb, //0x000025c1 addq %rbx, %r11 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025c4 jmp LBB0_428 + //0x000025c9 LBB0_427 + 0x48, 0x01, 0xde, //0x000025c9 addq %rbx, %rsi + 0x49, 0x89, 0xf3, //0x000025cc movq %rsi, %r11 + //0x000025cf LBB0_428 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025cf movq $-1, %rbx + 0x4d, 0x85, 0xf6, //0x000025d6 testq %r14, %r14 + 0x0f, 0x84, 0x56, 0x16, 0x00, 0x00, //0x000025d9 je LBB0_648 + 0x4d, 0x85, 0xed, //0x000025df testq %r13, %r13 + 0x0f, 0x84, 0x4d, 0x16, 0x00, 0x00, //0x000025e2 je LBB0_648 + 0x4d, 0x85, 0xc0, //0x000025e8 testq %r8, %r8 + 0x0f, 0x84, 0x44, 0x16, 0x00, 0x00, //0x000025eb je LBB0_648 + 0x4c, 0x2b, 0x5d, 0xb8, //0x000025f1 subq $-72(%rbp), %r11 + 0x49, 0x8d, 0x4b, 0xff, //0x000025f5 leaq $-1(%r11), %rcx + 0x49, 0x39, 0xce, //0x000025f9 cmpq %rcx, %r14 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025fc je LBB0_437 + 0x49, 0x39, 0xcd, //0x00002602 cmpq %rcx, %r13 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00002605 je LBB0_437 + 0x49, 0x39, 0xc8, //0x0000260b cmpq %rcx, %r8 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000260e je LBB0_437 + 0x4d, 0x85, 0xed, //0x00002614 testq %r13, %r13 + 0x0f, 0x8e, 0x99, 0x00, 0x00, 0x00, //0x00002617 jle LBB0_446 + 0x49, 0x8d, 0x4d, 0xff, //0x0000261d leaq $-1(%r13), %rcx + 0x49, 0x39, 0xc8, //0x00002621 cmpq %rcx, %r8 + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x00002624 je LBB0_446 + 0x49, 0xf7, 0xd5, //0x0000262a notq %r13 + 0x4c, 0x89, 0xeb, //0x0000262d movq %r13, %rbx + 0xe9, 0x24, 0x06, 0x00, 0x00, //0x00002630 jmp LBB0_486 + //0x00002635 LBB0_437 + 0x49, 0xf7, 0xdb, //0x00002635 negq %r11 + 0x4c, 0x89, 0xdb, //0x00002638 movq %r11, %rbx + 0xe9, 0x19, 0x06, 0x00, 0x00, //0x0000263b jmp LBB0_486 + //0x00002640 LBB0_438 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002640 movl $64, %edx + //0x00002645 LBB0_439 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002645 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x5d, 0xc0, //0x0000264f movq $-64(%rbp), %rbx + 0x48, 0x39, 0xca, //0x00002653 cmpq %rcx, %rdx + 0x0f, 0x82, 0xfb, 0x15, 0x00, 0x00, //0x00002656 jb LBB0_654 + 0x48, 0x01, 0xc8, //0x0000265c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000265f addq $1, %rax + //0x00002663 LBB0_441 + 0x48, 0x85, 0xc0, //0x00002663 testq %rax, %rax + 0x0f, 0x88, 0x55, 0x14, 0x00, 0x00, //0x00002666 js LBB0_627 + 0x49, 0x89, 0x06, //0x0000266c movq %rax, (%r14) + 0x48, 0x85, 0xdb, //0x0000266f testq %rbx, %rbx + 0x0f, 0x8f, 0x58, 0xdb, 0xff, 0xff, //0x00002672 jg LBB0_4 + 0xe9, 0xca, 0x15, 0x00, 0x00, //0x00002678 jmp LBB0_443 + //0x0000267d LBB0_131 + 0x4d, 0x85, 0xdb, //0x0000267d testq %r11, %r11 + 0x0f, 0x85, 0xd2, 0x0a, 0x00, 0x00, //0x00002680 jne LBB0_525 + 0x49, 0x01, 0xf2, //0x00002686 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002689 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000268c movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002690 movabsq $4294977024, %r11 + //0x0000269a LBB0_133 + 0x4d, 0x85, 0xc9, //0x0000269a testq %r9, %r9 + 0x0f, 0x8f, 0x1c, 0x0b, 0x00, 0x00, //0x0000269d jg LBB0_529 + 0xe9, 0x07, 0x14, 0x00, 0x00, //0x000026a3 jmp LBB0_650 + //0x000026a8 LBB0_444 + 0x0f, 0xbc, 0xcb, //0x000026a8 bsfl %ebx, %ecx + //0x000026ab LBB0_445 + 0x49, 0xf7, 0xd5, //0x000026ab notq %r13 + 0x49, 0x29, 0xcd, //0x000026ae subq %rcx, %r13 + 0xe9, 0x34, 0x00, 0x00, 0x00, //0x000026b1 jmp LBB0_450 + //0x000026b6 LBB0_446 + 0x4c, 0x89, 0xf1, //0x000026b6 movq %r14, %rcx + 0x4c, 0x09, 0xc1, //0x000026b9 orq %r8, %rcx + 0x0f, 0x99, 0xc2, //0x000026bc setns %dl + 0x0f, 0x88, 0xfb, 0x01, 0x00, 0x00, //0x000026bf js LBB0_453 + 0x4d, 0x39, 0xc6, //0x000026c5 cmpq %r8, %r14 + 0x0f, 0x8c, 0xf2, 0x01, 0x00, 0x00, //0x000026c8 jl LBB0_453 + 0x49, 0xf7, 0xd6, //0x000026ce notq %r14 + 0x4c, 0x89, 0xf3, //0x000026d1 movq %r14, %rbx + 0xe9, 0x80, 0x05, 0x00, 0x00, //0x000026d4 jmp LBB0_486 + //0x000026d9 LBB0_449 + 0x4c, 0x03, 0x65, 0xc0, //0x000026d9 addq $-64(%rbp), %r12 + 0x49, 0x29, 0xf4, //0x000026dd subq %rsi, %r12 + 0x49, 0x29, 0xd4, //0x000026e0 subq %rdx, %r12 + 0x49, 0x83, 0xc4, 0xfe, //0x000026e3 addq $-2, %r12 + 0x4d, 0x89, 0xe5, //0x000026e7 movq %r12, %r13 + //0x000026ea LBB0_450 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026ea movabsq $4294977024, %r11 + //0x000026f4 LBB0_451 + 0x4d, 0x85, 0xed, //0x000026f4 testq %r13, %r13 + 0x0f, 0x88, 0x99, 0x13, 0x00, 0x00, //0x000026f7 js LBB0_626 + //0x000026fd LBB0_452 + 0x49, 0x01, 0xc5, //0x000026fd addq %rax, %r13 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002700 movq $-48(%rbp), %r14 + 0x4d, 0x89, 0x2e, //0x00002704 movq %r13, (%r14) + 0x48, 0x85, 0xc0, //0x00002707 testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000270a movq $-80(%rbp), %r13 + 0x0f, 0x89, 0xbc, 0xda, 0xff, 0xff, //0x0000270e jns LBB0_4 + 0xe9, 0x96, 0x13, 0x00, 0x00, //0x00002714 jmp LBB0_650 + //0x00002719 LBB0_159 + 0x4d, 0x85, 0xdb, //0x00002719 testq %r11, %r11 + 0x0f, 0x85, 0x7e, 0x0c, 0x00, 0x00, //0x0000271c jne LBB0_552 + 0x49, 0x01, 0xf2, //0x00002722 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002725 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002728 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000272c movabsq $4294977024, %r11 + //0x00002736 LBB0_161 + 0x4d, 0x85, 0xc9, //0x00002736 testq %r9, %r9 + 0x0f, 0x8f, 0xbf, 0x0c, 0x00, 0x00, //0x00002739 jg LBB0_556 + 0xe9, 0x6b, 0x13, 0x00, 0x00, //0x0000273f jmp LBB0_650 + //0x00002744 LBB0_50 + 0x4c, 0x01, 0xe0, //0x00002744 addq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002747 movq $-48(%rbp), %r14 + 0x49, 0x83, 0xf9, 0x20, //0x0000274b cmpq $32, %r9 + 0x0f, 0x82, 0x9e, 0x07, 0x00, 0x00, //0x0000274f jb LBB0_503 + //0x00002755 LBB0_51 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002755 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002759 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000275e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002762 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002766 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000276a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000276e pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002772 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002776 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000277a pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x0000277e pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002782 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002786 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000278a orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x0000278d shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002791 orq %rdi, %rsi + 0x0f, 0x85, 0x5d, 0x0a, 0x00, 0x00, //0x00002794 jne LBB0_532 + 0x4d, 0x85, 0xc0, //0x0000279a testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000279d movabsq $4294977024, %r11 + 0x0f, 0x85, 0x74, 0x0a, 0x00, 0x00, //0x000027a7 jne LBB0_534 + 0x45, 0x31, 0xc0, //0x000027ad xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x000027b0 testq %rdx, %rdx + 0x0f, 0x84, 0xc4, 0x0a, 0x00, 0x00, //0x000027b3 je LBB0_536 + //0x000027b9 LBB0_54 + 0x48, 0x0f, 0xbc, 0xca, //0x000027b9 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x000027bd subq %r12, %rax + 0x48, 0x01, 0xc8, //0x000027c0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000027c3 addq $1, %rax + 0xe9, 0xa3, 0xea, 0xff, 0xff, //0x000027c7 jmp LBB0_229 + //0x000027cc LBB0_171 + 0x4c, 0x8b, 0x65, 0xb8, //0x000027cc movq $-72(%rbp), %r12 + 0x4c, 0x01, 0xe0, //0x000027d0 addq %r12, %rax + 0x49, 0x83, 0xfe, 0x20, //0x000027d3 cmpq $32, %r14 + 0x0f, 0x82, 0x40, 0x07, 0x00, 0x00, //0x000027d7 jb LBB0_505 + //0x000027dd LBB0_172 + 0xf3, 0x0f, 0x6f, 0x20, //0x000027dd movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x000027e1 movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x000027e6 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027ea pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000027ee pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xeb, //0x000027f2 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027f6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000027fa pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x000027fe movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002802 pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002806 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x0000280b movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000280f pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002813 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002817 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000281c pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002820 pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002825 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002829 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe7, 0x10, //0x0000282d shlq $16, %rdi + 0x48, 0x09, 0xf9, //0x00002831 orq %rdi, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x00002834 shlq $16, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x00002838 shlq $16, %rsi + 0x49, 0x09, 0xd1, //0x0000283c orq %rdx, %r9 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000283f movabsq $4294977024, %r11 + 0x0f, 0x85, 0x24, 0x0b, 0x00, 0x00, //0x00002849 jne LBB0_550 + 0x48, 0x85, 0xdb, //0x0000284f testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002852 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0xf2, 0x0b, 0x00, 0x00, //0x00002856 jne LBB0_559 + 0x31, 0xdb, //0x0000285c xorl %ebx, %ebx + //0x0000285e LBB0_175 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000285e movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002863 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002867 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000286c pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00002870 pmovmskb %xmm4, %edx + 0x48, 0x09, 0xd6, //0x00002874 orq %rdx, %rsi + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002877 movl $64, %edx + 0xbf, 0x40, 0x00, 0x00, 0x00, //0x0000287c movl $64, %edi + 0x48, 0x85, 0xc9, //0x00002881 testq %rcx, %rcx + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002884 je LBB0_177 + 0x48, 0x0f, 0xbc, 0xf9, //0x0000288a bsfq %rcx, %rdi + //0x0000288e LBB0_177 + 0x48, 0x85, 0xf6, //0x0000288e testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002891 je LBB0_179 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002897 bsfq %rsi, %rdx + //0x0000289b LBB0_179 + 0x48, 0x85, 0xc9, //0x0000289b testq %rcx, %rcx + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x0000289e je LBB0_457 + 0x48, 0x39, 0xfa, //0x000028a4 cmpq %rdi, %rdx + 0x0f, 0x82, 0x29, 0x14, 0x00, 0x00, //0x000028a7 jb LBB0_663 + 0x4c, 0x29, 0xe0, //0x000028ad subq %r12, %rax + 0x48, 0x01, 0xf8, //0x000028b0 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000028b3 addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x000028b7 movq $-48(%rbp), %r14 + 0xe9, 0xaf, 0xe9, 0xff, 0xff, //0x000028bb jmp LBB0_229 + //0x000028c0 LBB0_453 + 0x49, 0x8d, 0x48, 0xff, //0x000028c0 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xce, //0x000028c4 cmpq %rcx, %r14 + 0x49, 0xf7, 0xd0, //0x000028c7 notq %r8 + 0x4d, 0x0f, 0x45, 0xc3, //0x000028ca cmovneq %r11, %r8 + 0x84, 0xd2, //0x000028ce testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xc3, //0x000028d0 cmoveq %r11, %r8 + 0x4c, 0x89, 0xc3, //0x000028d4 movq %r8, %rbx + 0xe9, 0x7d, 0x03, 0x00, 0x00, //0x000028d7 jmp LBB0_486 + //0x000028dc LBB0_73 + 0x4c, 0x01, 0xe0, //0x000028dc addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x000028df cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000028e3 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x000028e7 movq $-64(%rbp), %rsi + 0x0f, 0x82, 0xe5, 0x06, 0x00, 0x00, //0x000028eb jb LBB0_511 + //0x000028f1 LBB0_74 + 0xf3, 0x0f, 0x6f, 0x18, //0x000028f1 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028f5 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x000028fa movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000028fe pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002902 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002906 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000290a pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x0000290e pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002912 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00002916 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x74, 0xe1, //0x0000291a pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x0000291e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002922 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002926 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002929 shlq $16, %rdi + 0x48, 0x09, 0xfb, //0x0000292d orq %rdi, %rbx + 0x0f, 0x85, 0x70, 0x0b, 0x00, 0x00, //0x00002930 jne LBB0_561 + 0x4d, 0x85, 0xc0, //0x00002936 testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002939 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x87, 0x0b, 0x00, 0x00, //0x00002943 jne LBB0_563 + 0x45, 0x31, 0xc0, //0x00002949 xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x0000294c testq %rdx, %rdx + 0x0f, 0x84, 0xd8, 0x0b, 0x00, 0x00, //0x0000294f je LBB0_565 + //0x00002955 LBB0_77 + 0x48, 0x0f, 0xbc, 0xca, //0x00002955 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002959 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x0000295c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000295f addq $1, %rax + 0xe9, 0x8f, 0xee, 0xff, 0xff, //0x00002963 jmp LBB0_313 + //0x00002968 LBB0_198 + 0x4c, 0x8b, 0x45, 0xb8, //0x00002968 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x0000296c addq %r8, %rax + 0x49, 0x83, 0xfa, 0x20, //0x0000296f cmpq $32, %r10 + 0x0f, 0x82, 0x8c, 0x06, 0x00, 0x00, //0x00002973 jb LBB0_513 + //0x00002979 LBB0_199 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002979 movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x0000297d movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002982 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002986 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x0000298a pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x0000298e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002992 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002996 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000299a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000299e pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000029a2 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x000029a7 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x000029ab pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000029af pmovmskb %xmm5, %ecx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000029b3 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000029b8 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000029bc pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x000029c1 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000029c5 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe2, 0x10, //0x000029c9 shlq $16, %rdx + 0x48, 0x09, 0xd6, //0x000029cd orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x000029d0 shlq $16, %rcx + 0x48, 0xc1, 0xe7, 0x10, //0x000029d4 shlq $16, %rdi + 0x49, 0x09, 0xc9, //0x000029d8 orq %rcx, %r9 + 0x0f, 0x85, 0x42, 0x0c, 0x00, 0x00, //0x000029db jne LBB0_579 + 0x4d, 0x85, 0xe4, //0x000029e1 testq %r12, %r12 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000029e4 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029e8 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x45, 0xd6, 0xff, 0xff, //0x000029f2 movdqu $-10683(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x0f, 0x85, 0x48, 0x0c, 0x00, 0x00, //0x000029fb jne LBB0_581 + 0x45, 0x31, 0xe4, //0x00002a01 xorl %r12d, %r12d + //0x00002a04 LBB0_202 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002a04 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002a09 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002a0d pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002a12 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002a16 pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002a1a orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002a1d movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002a22 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002a27 testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a2a je LBB0_204 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002a30 bsfq %rsi, %rdx + //0x00002a34 LBB0_204 + 0x48, 0x85, 0xff, //0x00002a34 testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a37 je LBB0_206 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002a3d bsfq %rdi, %rcx + //0x00002a41 LBB0_206 + 0x48, 0x85, 0xf6, //0x00002a41 testq %rsi, %rsi + 0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, //0x00002a44 je LBB0_469 + 0x48, 0x39, 0xd1, //0x00002a4a cmpq %rdx, %rcx + 0x0f, 0x82, 0x92, 0x12, 0x00, 0x00, //0x00002a4d jb LBB0_664 + 0x4c, 0x29, 0xc0, //0x00002a53 subq %r8, %rax + 0x48, 0x01, 0xd0, //0x00002a56 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002a59 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002a5d movq $-64(%rbp), %rsi + 0xe9, 0x91, 0xed, 0xff, 0xff, //0x00002a61 jmp LBB0_313 + //0x00002a66 LBB0_454 + 0x89, 0xd9, //0x00002a66 movl %ebx, %ecx + 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x00002a68 jmp LBB0_445 + //0x00002a6d LBB0_455 + 0x89, 0xf1, //0x00002a6d movl %esi, %ecx + 0xe9, 0x37, 0xfc, 0xff, 0xff, //0x00002a6f jmp LBB0_445 + //0x00002a74 LBB0_456 + 0x89, 0xd1, //0x00002a74 movl %edx, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002a76 jmp LBB0_445 + //0x00002a7b LBB0_457 + 0x48, 0x85, 0xf6, //0x00002a7b testq %rsi, %rsi + 0x0f, 0x85, 0x52, 0x12, 0x00, 0x00, //0x00002a7e jne LBB0_663 + 0x48, 0x83, 0xc0, 0x20, //0x00002a84 addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00002a88 addq $-32, %r14 + 0x48, 0x85, 0xdb, //0x00002a8c testq %rbx, %rbx + 0x0f, 0x85, 0x9f, 0x04, 0x00, 0x00, //0x00002a8f jne LBB0_506 + //0x00002a95 LBB0_459 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002a95 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xf6, //0x00002a99 testq %r14, %r14 + 0x0f, 0x84, 0xf8, 0x11, 0x00, 0x00, //0x00002a9c je LBB0_508 + //0x00002aa2 LBB0_460 + 0x0f, 0xb6, 0x10, //0x00002aa2 movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002aa5 cmpb $34, %dl + 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002aa8 je LBB0_468 + 0x80, 0xfa, 0x5c, //0x00002aae cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002ab1 je LBB0_464 + 0x80, 0xfa, 0x1f, //0x00002ab7 cmpb $31, %dl + 0x0f, 0x86, 0x30, 0x12, 0x00, 0x00, //0x00002aba jbe LBB0_665 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002ac0 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00002acc addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002acf addq %rdx, %r14 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002ad2 jne LBB0_460 + 0xe9, 0xbd, 0x11, 0x00, 0x00, //0x00002ad8 jmp LBB0_508 + //0x00002add LBB0_464 + 0x49, 0x83, 0xfe, 0x01, //0x00002add cmpq $1, %r14 + 0x0f, 0x84, 0xb3, 0x11, 0x00, 0x00, //0x00002ae1 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ae7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002aec movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002af0 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002af7 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002afc cmpq $-1, %rcx + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002b00 jne LBB0_467 + 0x48, 0x89, 0xc1, //0x00002b06 movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x00002b09 subq %r12, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002b0c movq %rcx, $-56(%rbp) + //0x00002b10 LBB0_467 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002b10 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b14 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002b1e movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002b22 movdqa %xmm6, %xmm13 + 0x48, 0x01, 0xf0, //0x00002b27 addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002b2a addq %rdx, %r14 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002b2d jne LBB0_460 + 0xe9, 0x62, 0x11, 0x00, 0x00, //0x00002b33 jmp LBB0_508 + //0x00002b38 LBB0_468 + 0x4c, 0x29, 0xe0, //0x00002b38 subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002b3b addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002b3f movq $-48(%rbp), %r14 + 0xe9, 0x27, 0xe7, 0xff, 0xff, //0x00002b43 jmp LBB0_229 + //0x00002b48 LBB0_469 + 0x48, 0x85, 0xff, //0x00002b48 testq %rdi, %rdi + 0x0f, 0x85, 0x94, 0x11, 0x00, 0x00, //0x00002b4b jne LBB0_664 + 0x48, 0x83, 0xc0, 0x20, //0x00002b51 addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002b55 addq $-32, %r10 + 0x4d, 0x85, 0xe4, //0x00002b59 testq %r12, %r12 + 0x0f, 0x85, 0xc3, 0x04, 0x00, 0x00, //0x00002b5c jne LBB0_514 + //0x00002b62 LBB0_471 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002b62 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xd2, //0x00002b66 testq %r10, %r10 + 0x0f, 0x84, 0x60, 0x0f, 0x00, 0x00, //0x00002b69 je LBB0_628 + //0x00002b6f LBB0_472 + 0x0f, 0xb6, 0x10, //0x00002b6f movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002b72 cmpb $34, %dl + 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, //0x00002b75 je LBB0_482 + 0x80, 0xfa, 0x5c, //0x00002b7b cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b7e je LBB0_477 + 0x80, 0xfa, 0x1f, //0x00002b84 cmpb $31, %dl + 0x0f, 0x86, 0x6f, 0x11, 0x00, 0x00, //0x00002b87 jbe LBB0_666 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b8d movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b94 movl $1, %esi + //0x00002b99 LBB0_476 + 0x48, 0x01, 0xf0, //0x00002b99 addq %rsi, %rax + 0x49, 0x01, 0xd2, //0x00002b9c addq %rdx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b9f jne LBB0_472 + 0xe9, 0x25, 0x0f, 0x00, 0x00, //0x00002ba5 jmp LBB0_628 + //0x00002baa LBB0_477 + 0x49, 0x83, 0xfa, 0x01, //0x00002baa cmpq $1, %r10 + 0x0f, 0x84, 0x05, 0x11, 0x00, 0x00, //0x00002bae je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x00002bb4 movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002bb8 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002bbf movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002bc4 cmpq $-1, %rcx + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002bc8 je LBB0_480 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002bce movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002bd2 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bd6 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002be0 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x53, 0xd4, 0xff, 0xff, //0x00002be4 movdqu $-11181(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bed movq $-72(%rbp), %r8 + 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002bf1 jmp LBB0_476 + //0x00002bf6 LBB0_480 + 0x48, 0x89, 0xc1, //0x00002bf6 movq %rax, %rcx + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bf9 movq $-72(%rbp), %r8 + 0x4c, 0x29, 0xc1, //0x00002bfd subq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002c00 movq %rcx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c04 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c08 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c0c movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002c16 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x1d, 0xd4, 0xff, 0xff, //0x00002c1a movdqu $-11235(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002c23 jmp LBB0_476 + //0x00002c28 LBB0_481 + 0x0f, 0xbc, 0xce, //0x00002c28 bsfl %esi, %ecx + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00002c2b jmp LBB0_485 + //0x00002c30 LBB0_482 + 0x4c, 0x29, 0xc0, //0x00002c30 subq %r8, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c33 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002c37 movq $-64(%rbp), %rsi + 0xe9, 0xb7, 0xeb, 0xff, 0xff, //0x00002c3b jmp LBB0_313 + //0x00002c40 LBB0_483 + 0x49, 0x01, 0xc4, //0x00002c40 addq %rax, %r12 + 0x49, 0x29, 0xf4, //0x00002c43 subq %rsi, %r12 + 0x48, 0xf7, 0xd3, //0x00002c46 notq %rbx + 0x4c, 0x01, 0xe3, //0x00002c49 addq %r12, %rbx + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c4c jmp LBB0_486 + //0x00002c51 LBB0_484 + 0x89, 0xd1, //0x00002c51 movl %edx, %ecx + //0x00002c53 LBB0_485 + 0x48, 0xf7, 0xd3, //0x00002c53 notq %rbx + 0x48, 0x29, 0xcb, //0x00002c56 subq %rcx, %rbx + //0x00002c59 LBB0_486 + 0x48, 0x85, 0xdb, //0x00002c59 testq %rbx, %rbx + 0x0f, 0x88, 0xd3, 0x0f, 0x00, 0x00, //0x00002c5c js LBB0_648 + //0x00002c62 LBB0_487 + 0x48, 0x01, 0xc3, //0x00002c62 addq %rax, %rbx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c65 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x1e, //0x00002c69 movq %rbx, (%r14) + //0x00002c6c LBB0_488 + 0x48, 0x85, 0xc0, //0x00002c6c testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c6f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c73 movabsq $4294977024, %r11 + 0x0f, 0x8f, 0x4d, 0xd5, 0xff, 0xff, //0x00002c7d jg LBB0_4 + 0xe9, 0xe0, 0x0d, 0x00, 0x00, //0x00002c83 jmp LBB0_232 + //0x00002c88 LBB0_246 + 0x4c, 0x01, 0xe0, //0x00002c88 addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x00002c8b cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c8f movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002c93 movq $-64(%rbp), %rbx + 0x0f, 0x82, 0x3e, 0x04, 0x00, 0x00, //0x00002c97 jb LBB0_519 + //0x00002c9d LBB0_247 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002c9d movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002ca1 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00002ca6 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002caa pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002cae pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002cb2 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002cb6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002cba pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002cbe pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002cc2 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00002cc6 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002cca pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002cce shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002cd2 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002cd5 shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002cd9 orq %rdi, %rsi + 0x0f, 0x85, 0x23, 0x0b, 0x00, 0x00, //0x00002cdc jne LBB0_595 + 0x4d, 0x85, 0xc0, //0x00002ce2 testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x0b, 0x00, 0x00, //0x00002ce5 jne LBB0_597 + 0x45, 0x31, 0xc0, //0x00002ceb xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x00002cee testq %rdx, %rdx + 0x0f, 0x84, 0x9d, 0x0b, 0x00, 0x00, //0x00002cf1 je LBB0_599 + //0x00002cf7 LBB0_250 + 0x48, 0x0f, 0xbc, 0xca, //0x00002cf7 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002cfb subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00002cfe addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002d01 addq $1, %rax + 0xe9, 0x59, 0xf9, 0xff, 0xff, //0x00002d05 jmp LBB0_441 + //0x00002d0a LBB0_409 + 0x4c, 0x01, 0xe0, //0x00002d0a addq %r12, %rax + 0x49, 0x89, 0xf2, //0x00002d0d movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x00002d10 cmpq $32, %rsi + 0x0f, 0x82, 0xed, 0x03, 0x00, 0x00, //0x00002d14 jb LBB0_521 + //0x00002d1a LBB0_410 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002d1a movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002d1e movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002d23 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d27 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00002d2b pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d2f movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d33 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002d37 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00002d3b movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d3f pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d43 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d48 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d4c pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002d50 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d54 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00002d59 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d5d pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002d62 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002d66 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002d6a shlq $16, %rcx + 0x48, 0x09, 0xce, //0x00002d6e orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x00002d71 shlq $16, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002d75 shlq $16, %rdi + 0x49, 0x09, 0xd1, //0x00002d79 orq %rdx, %r9 + 0x0f, 0x85, 0xf6, 0x0b, 0x00, 0x00, //0x00002d7c jne LBB0_613 + 0x48, 0x85, 0xdb, //0x00002d82 testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002d85 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d89 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x0c, 0x0c, 0x00, 0x00, //0x00002d93 jne LBB0_615 + 0x31, 0xdb, //0x00002d99 xorl %ebx, %ebx + //0x00002d9b LBB0_413 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d9b movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002da0 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002da4 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002da9 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002dad pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002db1 orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002db4 movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002db9 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002dbe testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dc1 je LBB0_415 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002dc7 bsfq %rsi, %rdx + //0x00002dcb LBB0_415 + 0x48, 0x85, 0xff, //0x00002dcb testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dce je LBB0_417 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002dd4 bsfq %rdi, %rcx + //0x00002dd8 LBB0_417 + 0x48, 0x85, 0xf6, //0x00002dd8 testq %rsi, %rsi + 0x0f, 0x84, 0x5c, 0x00, 0x00, 0x00, //0x00002ddb je LBB0_491 + 0x4c, 0x29, 0xe0, //0x00002de1 subq %r12, %rax + 0x48, 0x39, 0xd1, //0x00002de4 cmpq %rdx, %rcx + 0x0f, 0x82, 0x24, 0x0f, 0x00, 0x00, //0x00002de7 jb LBB0_668 + 0x48, 0x01, 0xd0, //0x00002ded addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002df0 addq $1, %rax + 0x48, 0x8b, 0x5d, 0xc0, //0x00002df4 movq $-64(%rbp), %rbx + 0xe9, 0x66, 0xf8, 0xff, 0xff, //0x00002df8 jmp LBB0_441 + //0x00002dfd LBB0_489 + 0x4b, 0x8d, 0x04, 0x04, //0x00002dfd leaq (%r12,%r8), %rax + 0x48, 0x85, 0xc9, //0x00002e01 testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002e04 movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00002e08 movabsq $17596481021440, %rdi + 0x0f, 0x85, 0xa9, 0xdd, 0xff, 0xff, //0x00002e12 jne LBB0_139 + 0xe9, 0xe4, 0xdd, 0xff, 0xff, //0x00002e18 jmp LBB0_146 + //0x00002e1d LBB0_490 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002e1d movq $-1, %r8 + 0x48, 0x89, 0xfe, //0x00002e24 movq %rdi, %rsi + 0x4d, 0x89, 0xf3, //0x00002e27 movq %r14, %r11 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e2a movq $-1, %r15 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002e31 movq $-1, %r10 + 0xe9, 0x96, 0xd9, 0xff, 0xff, //0x00002e38 jmp LBB0_105 + //0x00002e3d LBB0_491 + 0x48, 0x85, 0xff, //0x00002e3d testq %rdi, %rdi + 0x0f, 0x85, 0xe0, 0x0e, 0x00, 0x00, //0x00002e40 jne LBB0_669 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002e46 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002e4b movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x00002e4f addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002e53 addq $-32, %r10 + 0x48, 0x85, 0xdb, //0x00002e57 testq %rbx, %rbx + 0x0f, 0x85, 0xb9, 0x02, 0x00, 0x00, //0x00002e5a jne LBB0_522 + //0x00002e60 LBB0_493 + 0x48, 0x8b, 0x55, 0xc8, //0x00002e60 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xd2, //0x00002e64 testq %r10, %r10 + 0x0f, 0x84, 0x4c, 0x0e, 0x00, 0x00, //0x00002e67 je LBB0_524 + //0x00002e6d LBB0_494 + 0x0f, 0xb6, 0x08, //0x00002e6d movzbl (%rax), %ecx + 0x80, 0xf9, 0x22, //0x00002e70 cmpb $34, %cl + 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e73 je LBB0_509 + 0x80, 0xf9, 0x5c, //0x00002e79 cmpb $92, %cl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e7c je LBB0_499 + 0x80, 0xf9, 0x1f, //0x00002e82 cmpb $31, %cl + 0x0f, 0x86, 0xa6, 0x0e, 0x00, 0x00, //0x00002e85 jbe LBB0_670 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e8b movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e92 movl $1, %esi + //0x00002e97 LBB0_498 + 0x48, 0x01, 0xf0, //0x00002e97 addq %rsi, %rax + 0x49, 0x01, 0xca, //0x00002e9a addq %rcx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e9d jne LBB0_494 + 0xe9, 0x11, 0x0e, 0x00, 0x00, //0x00002ea3 jmp LBB0_524 + //0x00002ea8 LBB0_499 + 0x49, 0x83, 0xfa, 0x01, //0x00002ea8 cmpq $1, %r10 + 0x0f, 0x84, 0x07, 0x0e, 0x00, 0x00, //0x00002eac je LBB0_524 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002eb2 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002eb9 movl $2, %esi + 0x48, 0x83, 0xfa, 0xff, //0x00002ebe cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002ec2 jne LBB0_498 + 0x48, 0x89, 0xc2, //0x00002ec8 movq %rax, %rdx + 0x4c, 0x29, 0xe2, //0x00002ecb subq %r12, %rdx + 0x48, 0x89, 0x55, 0xc8, //0x00002ece movq %rdx, $-56(%rbp) + 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002ed2 jmp LBB0_498 + //0x00002ed7 LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00002ed7 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002edb addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ede movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002ee6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002ee9 cmpq $32, %r9 + 0x0f, 0x83, 0x62, 0xf8, 0xff, 0xff, //0x00002eed jae LBB0_51 + //0x00002ef3 LBB0_503 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ef3 movabsq $4294977024, %r11 + 0xe9, 0x83, 0x03, 0x00, 0x00, //0x00002efd jmp LBB0_537 + //0x00002f02 LBB0_504 + 0x48, 0x8b, 0x45, 0xc0, //0x00002f02 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002f06 addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f09 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x00002f11 xorl %ebx, %ebx + 0x49, 0x83, 0xfe, 0x20, //0x00002f13 cmpq $32, %r14 + 0x0f, 0x83, 0xc0, 0xf8, 0xff, 0xff, //0x00002f17 jae LBB0_172 + //0x00002f1d LBB0_505 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f1d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f21 movabsq $4294977024, %r11 + 0x48, 0x85, 0xdb, //0x00002f2b testq %rbx, %rbx + 0x0f, 0x84, 0x61, 0xfb, 0xff, 0xff, //0x00002f2e je LBB0_459 + //0x00002f34 LBB0_506 + 0x4d, 0x85, 0xf6, //0x00002f34 testq %r14, %r14 + 0x0f, 0x84, 0x5d, 0x0d, 0x00, 0x00, //0x00002f37 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002f3d movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002f42 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00002f46 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00002f49 notq %rcx + 0x48, 0x01, 0xc1, //0x00002f4c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x00002f4f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002f53 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002f57 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00002f5a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x00002f5e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00002f62 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00002f66 addq $-1, %r14 + 0x48, 0x89, 0x55, 0xc8, //0x00002f6a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f6e movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f72 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xf6, //0x00002f7c testq %r14, %r14 + 0x0f, 0x85, 0x1d, 0xfb, 0xff, 0xff, //0x00002f7f jne LBB0_460 + 0xe9, 0x10, 0x0d, 0x00, 0x00, //0x00002f85 jmp LBB0_508 + //0x00002f8a LBB0_509 + 0x4c, 0x29, 0xe0, //0x00002f8a subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002f8d addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002f91 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f95 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f99 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002fa3 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002fa7 movdqa %xmm6, %xmm13 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002fac movq $-64(%rbp), %rbx + 0xe9, 0xae, 0xf6, 0xff, 0xff, //0x00002fb0 jmp LBB0_441 + //0x00002fb5 LBB0_510 + 0x49, 0x8d, 0x04, 0x14, //0x00002fb5 leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002fb9 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002fc1 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002fc4 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002fc8 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x00002fcc movq $-64(%rbp), %rsi + 0x0f, 0x83, 0x1b, 0xf9, 0xff, 0xff, //0x00002fd0 jae LBB0_74 + //0x00002fd6 LBB0_511 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002fd6 movabsq $4294977024, %r11 + 0xe9, 0x50, 0x05, 0x00, 0x00, //0x00002fe0 jmp LBB0_566 + //0x00002fe5 LBB0_512 + 0x48, 0x8b, 0x45, 0xc0, //0x00002fe5 movq $-64(%rbp), %rax + 0x4c, 0x8b, 0x45, 0xb8, //0x00002fe9 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x00002fed addq %r8, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ff0 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xe4, //0x00002ff8 xorl %r12d, %r12d + 0x49, 0x83, 0xfa, 0x20, //0x00002ffb cmpq $32, %r10 + 0x0f, 0x83, 0x74, 0xf9, 0xff, 0xff, //0x00002fff jae LBB0_199 + //0x00003005 LBB0_513 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003005 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003009 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x24, 0xd0, 0xff, 0xff, //0x00003013 movdqu $-12252(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xe4, //0x0000301c testq %r12, %r12 + 0x0f, 0x84, 0x3d, 0xfb, 0xff, 0xff, //0x0000301f je LBB0_471 + //0x00003025 LBB0_514 + 0x4d, 0x85, 0xd2, //0x00003025 testq %r10, %r10 + 0x0f, 0x84, 0x8b, 0x0c, 0x00, 0x00, //0x00003028 je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x0000302e movdqa %xmm2, %xmm5 + 0x4c, 0x8b, 0x45, 0xb8, //0x00003032 movq $-72(%rbp), %r8 + 0x4c, 0x89, 0xc1, //0x00003036 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00003039 notq %rcx + 0x48, 0x01, 0xc1, //0x0000303c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x0000303f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00003043 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00003047 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x0000304a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x0000304e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00003052 addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003056 addq $-1, %r10 + 0x48, 0x89, 0x55, 0xc8, //0x0000305a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000305e movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003062 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003066 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xc7, 0xcf, 0xff, 0xff, //0x00003070 movdqu $-12345(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x00003079 testq %r10, %r10 + 0x0f, 0x85, 0xed, 0xfa, 0xff, 0xff, //0x0000307c jne LBB0_472 + 0xe9, 0x48, 0x0a, 0x00, 0x00, //0x00003082 jmp LBB0_628 + //0x00003087 LBB0_516 + 0x49, 0x8d, 0x0c, 0x04, //0x00003087 leaq (%r12,%rax), %rcx + 0x48, 0x85, 0xd2, //0x0000308b testq %rdx, %rdx + 0x0f, 0x85, 0x3f, 0xe9, 0xff, 0xff, //0x0000308e jne LBB0_332 + 0xe9, 0x84, 0xe9, 0xff, 0xff, //0x00003094 jmp LBB0_339 + //0x00003099 LBB0_517 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003099 movq $-1, %r14 + 0x48, 0x8b, 0x75, 0xb8, //0x000030a0 movq $-72(%rbp), %rsi + 0x4d, 0x89, 0xca, //0x000030a4 movq %r9, %r10 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030a7 movq $-1, %r8 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000030ae movq $-1, %r13 + 0xe9, 0x93, 0xe5, 0xff, 0xff, //0x000030b5 jmp LBB0_280 + //0x000030ba LBB0_518 + 0x49, 0x8d, 0x04, 0x14, //0x000030ba leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030be movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000030c6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x000030c9 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000030cd movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x000030d1 movq $-64(%rbp), %rbx + 0x0f, 0x83, 0xc2, 0xfb, 0xff, 0xff, //0x000030d5 jae LBB0_247 + //0x000030db LBB0_519 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030db movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000030e0 movdqa %xmm2, %xmm5 + 0xe9, 0xbc, 0x07, 0x00, 0x00, //0x000030e4 jmp LBB0_600 + //0x000030e9 LBB0_520 + 0x48, 0x8b, 0x45, 0xc0, //0x000030e9 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x000030ed addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030f0 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x000030f8 xorl %ebx, %ebx + 0x49, 0x89, 0xf2, //0x000030fa movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x000030fd cmpq $32, %rsi + 0x0f, 0x83, 0x13, 0xfc, 0xff, 0xff, //0x00003101 jae LBB0_410 + //0x00003107 LBB0_521 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003107 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000310c movdqa %xmm2, %xmm5 + 0x48, 0x85, 0xdb, //0x00003110 testq %rbx, %rbx + 0x0f, 0x84, 0x47, 0xfd, 0xff, 0xff, //0x00003113 je LBB0_493 + //0x00003119 LBB0_522 + 0x4d, 0x85, 0xd2, //0x00003119 testq %r10, %r10 + 0x0f, 0x84, 0x97, 0x0b, 0x00, 0x00, //0x0000311c je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003122 movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003125 notq %rdx + 0x48, 0x01, 0xc2, //0x00003128 addq %rax, %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x0000312b movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000312f cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x00003133 movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003136 cmoveq %rdx, %rcx + 0x48, 0x0f, 0x45, 0xd6, //0x0000313a cmovneq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x0000313e addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003142 addq $-1, %r10 + 0x48, 0x89, 0x4d, 0xc8, //0x00003146 movq %rcx, $-56(%rbp) + 0x4d, 0x85, 0xd2, //0x0000314a testq %r10, %r10 + 0x0f, 0x85, 0x1a, 0xfd, 0xff, 0xff, //0x0000314d jne LBB0_494 + 0xe9, 0x61, 0x0b, 0x00, 0x00, //0x00003153 jmp LBB0_524 + //0x00003158 LBB0_525 + 0x49, 0x39, 0xf1, //0x00003158 cmpq %rsi, %r9 + 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x0000315b je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003161 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003166 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x0000316a addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x0000316d addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x00003171 notq %rsi + 0x49, 0x01, 0xf1, //0x00003174 addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003177 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000317b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000317f movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003189 testq %r9, %r9 + 0x0f, 0x8f, 0x2d, 0x00, 0x00, 0x00, //0x0000318c jg LBB0_529 + 0xe9, 0x18, 0x09, 0x00, 0x00, //0x00003192 jmp LBB0_650 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003197 .p2align 4, 0x90 + //0x000031a0 LBB0_527 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000031a0 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000031a7 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000031ac addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031af movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031b6 addq %rcx, %r9 + 0x0f, 0x8e, 0xf0, 0x08, 0x00, 0x00, //0x000031b9 jle LBB0_650 + //0x000031bf LBB0_529 + 0x41, 0x0f, 0xb6, 0x02, //0x000031bf movzbl (%r10), %eax + 0x3c, 0x5c, //0x000031c3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000031c5 je LBB0_527 + 0x3c, 0x22, //0x000031cb cmpb $34, %al + 0x0f, 0x84, 0x26, 0x06, 0x00, 0x00, //0x000031cd je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000031d3 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000031da movl $1, %eax + 0x49, 0x01, 0xc2, //0x000031df addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031e2 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031e9 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000031ec jg LBB0_529 + 0xe9, 0xb8, 0x08, 0x00, 0x00, //0x000031f2 jmp LBB0_650 + //0x000031f7 LBB0_532 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031f7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000031fc movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003200 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003205 jne LBB0_535 + 0x48, 0x89, 0xc1, //0x0000320b movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000320e subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003211 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003215 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003218 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000321c jmp LBB0_535 + //0x00003221 LBB0_534 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003221 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003226 movdqa %xmm2, %xmm5 + //0x0000322a LBB0_535 + 0x44, 0x89, 0xc1, //0x0000322a movl %r8d, %ecx + 0xf7, 0xd1, //0x0000322d notl %ecx + 0x21, 0xf1, //0x0000322f andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003231 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003235 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00003238 notl %ebx + 0x21, 0xf3, //0x0000323a andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000323c andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003242 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003245 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x00003247 setb %r8b + 0x01, 0xdb, //0x0000324b addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000324d xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003253 andl %edi, %ebx + 0xf7, 0xd3, //0x00003255 notl %ebx + 0x21, 0xda, //0x00003257 andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003259 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000325d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003261 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000326b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000326f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003274 testq %rdx, %rdx + 0x0f, 0x85, 0x3c, 0xf5, 0xff, 0xff, //0x00003277 jne LBB0_54 + //0x0000327d LBB0_536 + 0x48, 0x83, 0xc0, 0x20, //0x0000327d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003281 addq $-32, %r9 + //0x00003285 LBB0_537 + 0x4d, 0x85, 0xc0, //0x00003285 testq %r8, %r8 + 0x0f, 0x85, 0x19, 0x04, 0x00, 0x00, //0x00003288 jne LBB0_583 + 0x4c, 0x89, 0xe1, //0x0000328e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003291 notq %rcx + 0x48, 0x8b, 0x55, 0xc8, //0x00003294 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xc9, //0x00003298 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000329b je LBB0_549 + //0x000032a1 LBB0_539 + 0x48, 0x83, 0xc1, 0x01, //0x000032a1 addq $1, %rcx + //0x000032a5 LBB0_540 + 0x31, 0xf6, //0x000032a5 xorl %esi, %esi + //0x000032a7 LBB0_541 + 0x0f, 0xb6, 0x1c, 0x30, //0x000032a7 movzbl (%rax,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x000032ab cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000032ae je LBB0_548 + 0x80, 0xfb, 0x5c, //0x000032b4 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000032b7 je LBB0_546 + 0x48, 0x83, 0xc6, 0x01, //0x000032bd addq $1, %rsi + 0x49, 0x39, 0xf1, //0x000032c1 cmpq %rsi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000032c4 jne LBB0_541 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000032ca jmp LBB0_544 + //0x000032cf LBB0_546 + 0x49, 0x8d, 0x79, 0xff, //0x000032cf leaq $-1(%r9), %rdi + 0x48, 0x39, 0xf7, //0x000032d3 cmpq %rsi, %rdi + 0x0f, 0x84, 0xbe, 0x09, 0x00, 0x00, //0x000032d6 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032dc movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000032e1 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x000032e5 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xf7, //0x000032e9 addq %rsi, %rdi + 0x48, 0x83, 0xfa, 0xff, //0x000032ec cmpq $-1, %rdx + 0x48, 0x8b, 0x5d, 0xc8, //0x000032f0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000032f4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000032f8 movq %rbx, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xd7, //0x000032fc cmoveq %rdi, %rdx + 0x48, 0x01, 0xf0, //0x00003300 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003303 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x00003307 movq %r9, %rdi + 0x48, 0x29, 0xf7, //0x0000330a subq %rsi, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x0000330d addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x00003311 addq $-2, %r9 + 0x49, 0x39, 0xf1, //0x00003315 cmpq %rsi, %r9 + 0x49, 0x89, 0xf9, //0x00003318 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000331b movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000331f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003323 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000332d jne LBB0_540 + 0xe9, 0x43, 0x07, 0x00, 0x00, //0x00003333 jmp LBB0_624 + //0x00003338 LBB0_548 + 0x48, 0x01, 0xf0, //0x00003338 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000333b addq $1, %rax + //0x0000333f LBB0_549 + 0x4c, 0x29, 0xe0, //0x0000333f subq %r12, %rax + 0xe9, 0x28, 0xdf, 0xff, 0xff, //0x00003342 jmp LBB0_229 + //0x00003347 LBB0_544 + 0x80, 0xfb, 0x22, //0x00003347 cmpb $34, %bl + 0x0f, 0x85, 0x4a, 0x09, 0x00, 0x00, //0x0000334a jne LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003350 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003355 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003359 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000335c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003360 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003364 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000336e jmp LBB0_549 + //0x00003373 LBB0_550 + 0x48, 0x89, 0xdf, //0x00003373 movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003376 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x0000337b movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000337f cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003384 jne LBB0_560 + 0x49, 0x89, 0xc0, //0x0000338a movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x0000338d subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003390 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003394 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003397 movq %rbx, $-56(%rbp) + 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000339b jmp LBB0_560 + //0x000033a0 LBB0_552 + 0x49, 0x39, 0xf1, //0x000033a0 cmpq %rsi, %r9 + 0x0f, 0x84, 0x06, 0x07, 0x00, 0x00, //0x000033a3 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000033a9 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000033ae movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x000033b2 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000033b5 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x000033b9 notq %rsi + 0x49, 0x01, 0xf1, //0x000033bc addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000033bf movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000033c3 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000033c7 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000033d1 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000033d4 jg LBB0_556 + 0xe9, 0xd0, 0x06, 0x00, 0x00, //0x000033da jmp LBB0_650 + //0x000033df LBB0_554 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000033df movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000033e6 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000033eb addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033ee movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000033f5 addq %rcx, %r9 + 0x0f, 0x8e, 0xb1, 0x06, 0x00, 0x00, //0x000033f8 jle LBB0_650 + //0x000033fe LBB0_556 + 0x41, 0x0f, 0xb6, 0x02, //0x000033fe movzbl (%r10), %eax + 0x3c, 0x5c, //0x00003402 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003404 je LBB0_554 + 0x3c, 0x22, //0x0000340a cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x0000340c je LBB0_621 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003412 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003419 movl $1, %eax + 0x49, 0x01, 0xc2, //0x0000341e addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003421 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x00003428 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000342b jg LBB0_556 + 0xe9, 0x79, 0x06, 0x00, 0x00, //0x00003431 jmp LBB0_650 + //0x00003436 LBB0_621 + 0x4d, 0x29, 0xe2, //0x00003436 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003439 addq $1, %r10 + 0x4d, 0x89, 0x16, //0x0000343d movq %r10, (%r14) + 0x4d, 0x85, 0xc0, //0x00003440 testq %r8, %r8 + 0x0f, 0x8f, 0xc3, 0xe3, 0xff, 0xff, //0x00003443 jg LBB0_315 + 0xe9, 0x0e, 0x06, 0x00, 0x00, //0x00003449 jmp LBB0_622 + //0x0000344e LBB0_559 + 0x48, 0x89, 0xdf, //0x0000344e movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003451 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003456 movdqa %xmm2, %xmm6 + //0x0000345a LBB0_560 + 0x48, 0x89, 0xfb, //0x0000345a movq %rdi, %rbx + 0xf7, 0xd7, //0x0000345d notl %edi + 0x44, 0x21, 0xcf, //0x0000345f andl %r9d, %edi + 0x44, 0x8d, 0x04, 0x7b, //0x00003462 leal (%rbx,%rdi,2), %r8d + 0x8d, 0x14, 0x3f, //0x00003466 leal (%rdi,%rdi), %edx + 0xf7, 0xd2, //0x00003469 notl %edx + 0x44, 0x21, 0xca, //0x0000346b andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000346e andl $-1431655766, %edx + 0x31, 0xdb, //0x00003474 xorl %ebx, %ebx + 0x01, 0xfa, //0x00003476 addl %edi, %edx + 0x0f, 0x92, 0xc3, //0x00003478 setb %bl + 0x01, 0xd2, //0x0000347b addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000347d xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x00003483 andl %r8d, %edx + 0xf7, 0xd2, //0x00003486 notl %edx + 0x21, 0xd1, //0x00003488 andl %edx, %ecx + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000348a movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000348e movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003498 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000349c movdqa %xmm7, %xmm13 + 0xe9, 0xb8, 0xf3, 0xff, 0xff, //0x000034a1 jmp LBB0_175 + //0x000034a6 LBB0_561 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034a6 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034ab movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000034af cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000034b4 jne LBB0_564 + 0x48, 0x89, 0xc1, //0x000034ba movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x000034bd subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfb, //0x000034c0 bsfq %rbx, %rdi + 0x48, 0x01, 0xcf, //0x000034c4 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x000034c7 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000034cb jmp LBB0_564 + //0x000034d0 LBB0_563 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034d0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034d5 movdqa %xmm2, %xmm5 + //0x000034d9 LBB0_564 + 0x44, 0x89, 0xc1, //0x000034d9 movl %r8d, %ecx + 0xf7, 0xd1, //0x000034dc notl %ecx + 0x21, 0xd9, //0x000034de andl %ebx, %ecx + 0x45, 0x8d, 0x14, 0x48, //0x000034e0 leal (%r8,%rcx,2), %r10d + 0x8d, 0x3c, 0x09, //0x000034e4 leal (%rcx,%rcx), %edi + 0xf7, 0xd7, //0x000034e7 notl %edi + 0x21, 0xdf, //0x000034e9 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000034eb andl $-1431655766, %edi + 0x45, 0x31, 0xc0, //0x000034f1 xorl %r8d, %r8d + 0x01, 0xcf, //0x000034f4 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc0, //0x000034f6 setb %r8b + 0x01, 0xff, //0x000034fa addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000034fc xorl $1431655765, %edi + 0x44, 0x21, 0xd7, //0x00003502 andl %r10d, %edi + 0xf7, 0xd7, //0x00003505 notl %edi + 0x21, 0xfa, //0x00003507 andl %edi, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003509 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000350d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003511 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000351b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000351f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003524 testq %rdx, %rdx + 0x0f, 0x85, 0x28, 0xf4, 0xff, 0xff, //0x00003527 jne LBB0_77 + //0x0000352d LBB0_565 + 0x48, 0x83, 0xc0, 0x20, //0x0000352d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003531 addq $-32, %r9 + //0x00003535 LBB0_566 + 0x4d, 0x85, 0xc0, //0x00003535 testq %r8, %r8 + 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x00003538 jne LBB0_585 + 0x4c, 0x89, 0xe1, //0x0000353e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003541 notq %rcx + 0x4c, 0x8b, 0x45, 0xc8, //0x00003544 movq $-56(%rbp), %r8 + 0x4d, 0x85, 0xc9, //0x00003548 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000354b je LBB0_578 + //0x00003551 LBB0_568 + 0x48, 0x83, 0xc1, 0x01, //0x00003551 addq $1, %rcx + //0x00003555 LBB0_569 + 0x31, 0xd2, //0x00003555 xorl %edx, %edx + //0x00003557 LBB0_570 + 0x0f, 0xb6, 0x1c, 0x10, //0x00003557 movzbl (%rax,%rdx), %ebx + 0x80, 0xfb, 0x22, //0x0000355b cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000355e je LBB0_577 + 0x80, 0xfb, 0x5c, //0x00003564 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003567 je LBB0_575 + 0x48, 0x83, 0xc2, 0x01, //0x0000356d addq $1, %rdx + 0x49, 0x39, 0xd1, //0x00003571 cmpq %rdx, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003574 jne LBB0_570 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000357a jmp LBB0_573 + //0x0000357f LBB0_575 + 0x49, 0x8d, 0x79, 0xff, //0x0000357f leaq $-1(%r9), %rdi + 0x48, 0x39, 0xd7, //0x00003583 cmpq %rdx, %rdi + 0x0f, 0x84, 0x2d, 0x07, 0x00, 0x00, //0x00003586 je LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000358c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003591 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x00003595 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xd7, //0x00003599 addq %rdx, %rdi + 0x49, 0x83, 0xf8, 0xff, //0x0000359c cmpq $-1, %r8 + 0x48, 0x8b, 0x5d, 0xc8, //0x000035a0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000035a4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000035a8 movq %rbx, $-56(%rbp) + 0x4c, 0x0f, 0x44, 0xc7, //0x000035ac cmoveq %rdi, %r8 + 0x48, 0x01, 0xd0, //0x000035b0 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x02, //0x000035b3 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x000035b7 movq %r9, %rdi + 0x48, 0x29, 0xd7, //0x000035ba subq %rdx, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x000035bd addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x000035c1 addq $-2, %r9 + 0x49, 0x39, 0xd1, //0x000035c5 cmpq %rdx, %r9 + 0x49, 0x89, 0xf9, //0x000035c8 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000035cb movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000035cf movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035d3 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000035dd jne LBB0_569 + 0xe9, 0xe7, 0x04, 0x00, 0x00, //0x000035e3 jmp LBB0_628 + //0x000035e8 LBB0_577 + 0x48, 0x01, 0xd0, //0x000035e8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035eb addq $1, %rax + //0x000035ef LBB0_578 + 0x4c, 0x29, 0xe0, //0x000035ef subq %r12, %rax + 0xe9, 0x00, 0xe2, 0xff, 0xff, //0x000035f2 jmp LBB0_313 + //0x000035f7 LBB0_573 + 0x80, 0xfb, 0x22, //0x000035f7 cmpb $34, %bl + 0x0f, 0x85, 0xb9, 0x06, 0x00, 0x00, //0x000035fa jne LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003600 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003605 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003609 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000360c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003610 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003614 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000361e jmp LBB0_578 + //0x00003623 LBB0_579 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003623 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003627 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x0000362c jne LBB0_582 + 0x49, 0x89, 0xc0, //0x00003632 movq %rax, %r8 + 0x4c, 0x2b, 0x45, 0xb8, //0x00003635 subq $-72(%rbp), %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003639 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x0000363d addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003640 movq %rbx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00003644 jmp LBB0_582 + //0x00003649 LBB0_581 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003649 movdqa %xmm2, %xmm6 + //0x0000364d LBB0_582 + 0x44, 0x89, 0xe2, //0x0000364d movl %r12d, %edx + 0xf7, 0xd2, //0x00003650 notl %edx + 0x44, 0x21, 0xca, //0x00003652 andl %r9d, %edx + 0x45, 0x8d, 0x04, 0x54, //0x00003655 leal (%r12,%rdx,2), %r8d + 0x8d, 0x0c, 0x12, //0x00003659 leal (%rdx,%rdx), %ecx + 0xf7, 0xd1, //0x0000365c notl %ecx + 0x44, 0x21, 0xc9, //0x0000365e andl %r9d, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003661 andl $-1431655766, %ecx + 0x45, 0x31, 0xe4, //0x00003667 xorl %r12d, %r12d + 0x01, 0xd1, //0x0000366a addl %edx, %ecx + 0x41, 0x0f, 0x92, 0xc4, //0x0000366c setb %r12b + 0x01, 0xc9, //0x00003670 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003672 xorl $1431655765, %ecx + 0x44, 0x21, 0xc1, //0x00003678 andl %r8d, %ecx + 0xf7, 0xd1, //0x0000367b notl %ecx + 0x21, 0xce, //0x0000367d andl %ecx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x0000367f movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003683 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003687 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003691 movdqa %xmm6, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa2, 0xc9, 0xff, 0xff, //0x00003695 movdqu $-13918(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x0000369e movq $-72(%rbp), %r8 + 0xe9, 0x5d, 0xf3, 0xff, 0xff, //0x000036a2 jmp LBB0_202 + //0x000036a7 LBB0_583 + 0x4d, 0x85, 0xc9, //0x000036a7 testq %r9, %r9 + 0x0f, 0x84, 0xea, 0x05, 0x00, 0x00, //0x000036aa je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036b0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000036b5 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x000036b9 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x000036bc notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x000036bf leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x000036c3 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x000036c7 cmpq $-1, %rdi + 0x48, 0x89, 0xfa, //0x000036cb movq %rdi, %rdx + 0x48, 0x0f, 0x44, 0xfe, //0x000036ce cmoveq %rsi, %rdi + 0x48, 0x0f, 0x44, 0xd6, //0x000036d2 cmoveq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x000036d6 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x000036da addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x000036de movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x000036e2 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000036e6 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036ea movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000036f4 testq %r9, %r9 + 0x0f, 0x85, 0xa4, 0xfb, 0xff, 0xff, //0x000036f7 jne LBB0_539 + 0xe9, 0x3d, 0xfc, 0xff, 0xff, //0x000036fd jmp LBB0_549 + //0x00003702 LBB0_585 + 0x4d, 0x85, 0xc9, //0x00003702 testq %r9, %r9 + 0x0f, 0x84, 0xae, 0x05, 0x00, 0x00, //0x00003705 je LBB0_524 + 0x48, 0x89, 0xf2, //0x0000370b movq %rsi, %rdx + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000370e movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003713 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00003717 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x0000371a notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x0000371d leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x00003721 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003725 cmpq $-1, %rdi + 0x49, 0x89, 0xf8, //0x00003729 movq %rdi, %r8 + 0x48, 0x0f, 0x44, 0xfe, //0x0000372c cmoveq %rsi, %rdi + 0x4c, 0x0f, 0x44, 0xc6, //0x00003730 cmoveq %rsi, %r8 + 0x48, 0x83, 0xc0, 0x01, //0x00003734 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003738 addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x0000373c movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003740 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003744 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003748 movabsq $4294977024, %r11 + 0x48, 0x89, 0xd6, //0x00003752 movq %rdx, %rsi + 0x4d, 0x85, 0xc9, //0x00003755 testq %r9, %r9 + 0x0f, 0x85, 0xf3, 0xfd, 0xff, 0xff, //0x00003758 jne LBB0_568 + 0xe9, 0x8c, 0xfe, 0xff, 0xff, //0x0000375e jmp LBB0_578 + //0x00003763 LBB0_587 + 0x49, 0x39, 0xf1, //0x00003763 cmpq %rsi, %r9 + 0x0f, 0x84, 0x43, 0x03, 0x00, 0x00, //0x00003766 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000376c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003771 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x00003775 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003778 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x0000377c notq %rsi + 0x49, 0x01, 0xf1, //0x0000377f addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003782 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003786 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000378a movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003794 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003797 jg LBB0_591 + 0xe9, 0x0d, 0x03, 0x00, 0x00, //0x0000379d jmp LBB0_650 + //0x000037a2 LBB0_589 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000037a2 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000037a9 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000037ae addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037b1 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037b8 addq %rcx, %r9 + 0x0f, 0x8e, 0xee, 0x02, 0x00, 0x00, //0x000037bb jle LBB0_650 + //0x000037c1 LBB0_591 + 0x41, 0x0f, 0xb6, 0x02, //0x000037c1 movzbl (%r10), %eax + 0x3c, 0x5c, //0x000037c5 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000037c7 je LBB0_589 + 0x3c, 0x22, //0x000037cd cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000037cf je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000037d5 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000037dc movl $1, %eax + 0x49, 0x01, 0xc2, //0x000037e1 addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037e4 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037eb addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000037ee jg LBB0_591 + 0xe9, 0xb6, 0x02, 0x00, 0x00, //0x000037f4 jmp LBB0_650 + //0x000037f9 LBB0_594 + 0x4d, 0x29, 0xe2, //0x000037f9 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000037fc addq $1, %r10 + 0xe9, 0xbe, 0xc9, 0xff, 0xff, //0x00003800 jmp LBB0_2 + //0x00003805 LBB0_595 + 0x49, 0x89, 0xda, //0x00003805 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003808 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000380d movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003811 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003816 jne LBB0_598 + 0x48, 0x89, 0xc1, //0x0000381c movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000381f subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003822 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003826 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003829 movq %rdi, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000382d jmp LBB0_598 + //0x00003832 LBB0_597 + 0x49, 0x89, 0xda, //0x00003832 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003835 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000383a movdqa %xmm2, %xmm5 + //0x0000383e LBB0_598 + 0x44, 0x89, 0xc1, //0x0000383e movl %r8d, %ecx + 0xf7, 0xd1, //0x00003841 notl %ecx + 0x21, 0xf1, //0x00003843 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003845 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003849 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x0000384c notl %ebx + 0x21, 0xf3, //0x0000384e andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003850 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003856 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003859 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x0000385b setb %r8b + 0x01, 0xdb, //0x0000385f addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003861 xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003867 andl %edi, %ebx + 0xf7, 0xd3, //0x00003869 notl %ebx + 0x21, 0xda, //0x0000386b andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x0000386d movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003871 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003875 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000387f movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003883 movdqa %xmm6, %xmm13 + 0x4c, 0x89, 0xd3, //0x00003888 movq %r10, %rbx + 0x48, 0x85, 0xd2, //0x0000388b testq %rdx, %rdx + 0x0f, 0x85, 0x63, 0xf4, 0xff, 0xff, //0x0000388e jne LBB0_250 + //0x00003894 LBB0_599 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003894 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003899 movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x0000389d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x000038a1 addq $-32, %r9 + //0x000038a5 LBB0_600 + 0x4d, 0x85, 0xc0, //0x000038a5 testq %r8, %r8 + 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x000038a8 jne LBB0_617 + 0x4c, 0x89, 0xe2, //0x000038ae movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x000038b1 notq %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x000038b4 movq $-56(%rbp), %rsi + 0x4d, 0x85, 0xc9, //0x000038b8 testq %r9, %r9 + 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x000038bb je LBB0_612 + //0x000038c1 LBB0_602 + 0x48, 0x83, 0xc2, 0x01, //0x000038c1 addq $1, %rdx + //0x000038c5 LBB0_603 + 0x31, 0xff, //0x000038c5 xorl %edi, %edi + //0x000038c7 LBB0_604 + 0x0f, 0xb6, 0x0c, 0x38, //0x000038c7 movzbl (%rax,%rdi), %ecx + 0x80, 0xf9, 0x22, //0x000038cb cmpb $34, %cl + 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x000038ce je LBB0_611 + 0x80, 0xf9, 0x5c, //0x000038d4 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000038d7 je LBB0_609 + 0x48, 0x83, 0xc7, 0x01, //0x000038dd addq $1, %rdi + 0x49, 0x39, 0xf9, //0x000038e1 cmpq %rdi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000038e4 jne LBB0_604 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000038ea jmp LBB0_607 + //0x000038ef LBB0_609 + 0x49, 0x8d, 0x49, 0xff, //0x000038ef leaq $-1(%r9), %rcx + 0x48, 0x39, 0xf9, //0x000038f3 cmpq %rdi, %rcx + 0x0f, 0x84, 0xbd, 0x03, 0x00, 0x00, //0x000038f6 je LBB0_524 + 0x4c, 0x8d, 0x04, 0x02, //0x000038fc leaq (%rdx,%rax), %r8 + 0x49, 0x01, 0xf8, //0x00003900 addq %rdi, %r8 + 0x48, 0x83, 0xfe, 0xff, //0x00003903 cmpq $-1, %rsi + 0x48, 0x8b, 0x4d, 0xc8, //0x00003907 movq $-56(%rbp), %rcx + 0x49, 0x0f, 0x44, 0xc8, //0x0000390b cmoveq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000390f movq %rcx, $-56(%rbp) + 0x49, 0x0f, 0x44, 0xf0, //0x00003913 cmoveq %r8, %rsi + 0x48, 0x01, 0xf8, //0x00003917 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000391a addq $2, %rax + 0x4c, 0x89, 0xc9, //0x0000391e movq %r9, %rcx + 0x48, 0x29, 0xf9, //0x00003921 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003924 addq $-2, %rcx + 0x49, 0x83, 0xc1, 0xfe, //0x00003928 addq $-2, %r9 + 0x49, 0x39, 0xf9, //0x0000392c cmpq %rdi, %r9 + 0x49, 0x89, 0xc9, //0x0000392f movq %rcx, %r9 + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x00003932 jne LBB0_603 + 0xe9, 0x7c, 0x03, 0x00, 0x00, //0x00003938 jmp LBB0_524 + //0x0000393d LBB0_611 + 0x48, 0x01, 0xf8, //0x0000393d addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003940 addq $1, %rax + //0x00003944 LBB0_612 + 0x4c, 0x29, 0xe0, //0x00003944 subq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003947 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000394b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000394f movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00003959 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000395d movdqa %xmm6, %xmm13 + 0xe9, 0xfc, 0xec, 0xff, 0xff, //0x00003962 jmp LBB0_441 + //0x00003967 LBB0_607 + 0x80, 0xf9, 0x22, //0x00003967 cmpb $34, %cl + 0x0f, 0x85, 0x49, 0x03, 0x00, 0x00, //0x0000396a jne LBB0_524 + 0x4c, 0x01, 0xc8, //0x00003970 addq %r9, %rax + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x00003973 jmp LBB0_612 + //0x00003978 LBB0_613 + 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x0000397b movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003980 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003984 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003989 jne LBB0_616 + 0x49, 0x89, 0xc0, //0x0000398f movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x00003992 subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003995 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003999 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x0000399c movq %rbx, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000039a0 jmp LBB0_616 + //0x000039a5 LBB0_615 + 0x48, 0x89, 0xd9, //0x000039a5 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000039a8 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x000039ad movdqa %xmm2, %xmm6 + //0x000039b1 LBB0_616 + 0x48, 0x89, 0xcb, //0x000039b1 movq %rcx, %rbx + 0xf7, 0xd1, //0x000039b4 notl %ecx + 0x44, 0x21, 0xc9, //0x000039b6 andl %r9d, %ecx + 0x44, 0x8d, 0x04, 0x4b, //0x000039b9 leal (%rbx,%rcx,2), %r8d + 0x8d, 0x14, 0x09, //0x000039bd leal (%rcx,%rcx), %edx + 0xf7, 0xd2, //0x000039c0 notl %edx + 0x44, 0x21, 0xca, //0x000039c2 andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000039c5 andl $-1431655766, %edx + 0x31, 0xdb, //0x000039cb xorl %ebx, %ebx + 0x01, 0xca, //0x000039cd addl %ecx, %edx + 0x0f, 0x92, 0xc3, //0x000039cf setb %bl + 0x01, 0xd2, //0x000039d2 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000039d4 xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x000039da andl %r8d, %edx + 0xf7, 0xd2, //0x000039dd notl %edx + 0x21, 0xd6, //0x000039df andl %edx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x000039e1 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000039e5 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000039e9 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x000039f3 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x000039f7 movdqa %xmm7, %xmm13 + 0xe9, 0x9a, 0xf3, 0xff, 0xff, //0x000039fc jmp LBB0_413 + //0x00003a01 LBB0_617 + 0x4d, 0x85, 0xc9, //0x00003a01 testq %r9, %r9 + 0x0f, 0x84, 0xaf, 0x02, 0x00, 0x00, //0x00003a04 je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003a0a movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003a0d notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003a10 leaq (%rax,%rdx), %rcx + 0x48, 0x8b, 0x7d, 0xc8, //0x00003a14 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003a18 cmpq $-1, %rdi + 0x48, 0x89, 0xfe, //0x00003a1c movq %rdi, %rsi + 0x48, 0x0f, 0x44, 0xf9, //0x00003a1f cmoveq %rcx, %rdi + 0x48, 0x0f, 0x44, 0xf1, //0x00003a23 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003a27 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003a2b addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x00003a2f movq %rdi, $-56(%rbp) + 0x4d, 0x85, 0xc9, //0x00003a33 testq %r9, %r9 + 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x00003a36 jne LBB0_602 + 0xe9, 0x03, 0xff, 0xff, 0xff, //0x00003a3c jmp LBB0_612 + //0x00003a41 LBB0_619 + 0x49, 0x89, 0x36, //0x00003a41 movq %rsi, (%r14) + //0x00003a44 LBB0_620 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a44 movq $-1, %rax + 0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00003a4b jmp LBB0_650 + //0x00003a50 LBB0_651 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003a50 movq $-7, %rax + 0xe9, 0x53, 0x00, 0x00, 0x00, //0x00003a57 jmp LBB0_650 + //0x00003a5c LBB0_622 + 0x49, 0x83, 0xc0, 0xff, //0x00003a5c addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003a60 movq %r8, %rax + 0xe9, 0x47, 0x00, 0x00, 0x00, //0x00003a63 jmp LBB0_650 + //0x00003a68 LBB0_232 + 0x48, 0x83, 0xc0, 0xff, //0x00003a68 addq $-1, %rax + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00003a6c jmp LBB0_650 + //0x00003a71 LBB0_623 + 0x48, 0x83, 0xf8, 0xff, //0x00003a71 cmpq $-1, %rax + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00003a75 jne LBB0_634 + //0x00003a7b LBB0_624 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a7b movq $-1, %rax + 0x48, 0x8b, 0x4d, 0xa0, //0x00003a82 movq $-96(%rbp), %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003a86 movq %rcx, $-56(%rbp) + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x00003a8a jmp LBB0_634 + //0x00003a8f LBB0_625 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a8f movq $-1, %r13 + //0x00003a96 LBB0_626 + 0x48, 0x8b, 0x4d, 0xc0, //0x00003a96 movq $-64(%rbp), %rcx + 0x4c, 0x29, 0xe9, //0x00003a9a subq %r13, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a9d addq $-2, %rcx + 0x48, 0x8b, 0x45, 0xd0, //0x00003aa1 movq $-48(%rbp), %rax + 0x48, 0x89, 0x08, //0x00003aa5 movq %rcx, (%rax) + //0x00003aa8 LBB0_649 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003aa8 movq $-2, %rax + //0x00003aaf LBB0_650 + 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003aaf addq $136, %rsp + 0x5b, //0x00003ab6 popq %rbx + 0x41, 0x5c, //0x00003ab7 popq %r12 + 0x41, 0x5d, //0x00003ab9 popq %r13 + 0x41, 0x5e, //0x00003abb popq %r14 + 0x41, 0x5f, //0x00003abd popq %r15 + 0x5d, //0x00003abf popq %rbp + 0xc3, //0x00003ac0 retq + //0x00003ac1 LBB0_627 + 0x48, 0x83, 0xf8, 0xff, //0x00003ac1 cmpq $-1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x00003ac5 movq $-56(%rbp), %rdx + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003ac9 jne LBB0_629 + //0x00003acf LBB0_628 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003acf movq $-1, %rax + 0x48, 0x8b, 0x55, 0xa0, //0x00003ad6 movq $-96(%rbp), %rdx + //0x00003ada LBB0_629 0x49, 0x89, 0x16, //0x00003ada movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003add cmpb $115, $2(%r12,%rcx) - 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003ae3 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x03, //0x00003ae9 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003aed movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003af0 cmpb $101, $3(%r12,%rcx) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003af6 jne LBB0_638 - 0x48, 0x83, 0xc1, 0x04, //0x00003afc addq $4, %rcx - 0x49, 0x89, 0x0e, //0x00003b00 movq %rcx, (%r14) - 0xe9, 0x3f, 0xff, 0xff, 0xff, //0x00003b03 jmp LBB0_638 - //0x00003b08 LBB0_627 - 0x49, 0x89, 0x06, //0x00003b08 movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b0b cmpb $116, (%r12,%rax) - 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b10 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b16 movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b19 cmpb $114, (%r12,%rcx) - 0x0f, 0x85, 0x1c, 0xff, 0xff, 0xff, //0x00003b1e jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b24 leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b28 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b2b cmpb $117, $1(%r12,%rcx) - 0x0f, 0x85, 0x09, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b37 leaq $2(%rcx), %rax + 0xe9, 0xcd, 0xff, 0xff, 0xff, //0x00003add jmp LBB0_650 + //0x00003ae2 LBB0_630 + 0x48, 0x83, 0xc6, 0xff, //0x00003ae2 addq $-1, %rsi + 0x48, 0x89, 0xf0, //0x00003ae6 movq %rsi, %rax + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003ae9 jmp LBB0_650 + //0x00003aee LBB0_631 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003aee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003af3 jne LBB0_633 + 0x48, 0x0f, 0xbc, 0xcf, //0x00003af9 bsfq %rdi, %rcx + 0x48, 0x01, 0xc1, //0x00003afd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003b00 movq %rcx, $-56(%rbp) + //0x00003b04 LBB0_633 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003b04 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003b0b movq $-48(%rbp), %r14 + //0x00003b0f LBB0_634 + 0x48, 0x8b, 0x4d, 0xc8, //0x00003b0f movq $-56(%rbp), %rcx + 0x49, 0x89, 0x0e, //0x00003b13 movq %rcx, (%r14) + 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003b16 jmp LBB0_650 + //0x00003b1b LBB0_635 + 0x49, 0x89, 0x06, //0x00003b1b movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b1e cmpb $116, (%r12,%rax) + 0x0f, 0x85, 0x7f, 0xff, 0xff, 0xff, //0x00003b23 jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b29 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b2c cmpb $114, (%r12,%rcx) + 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b37 leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b3b movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b3e cmpb $101, $2(%r12,%rcx) - 0x0f, 0x85, 0xf6, 0xfe, 0xff, 0xff, //0x00003b44 jne LBB0_637 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b4a jmp LBB0_631 - //0x00003b4f LBB0_289 - 0x49, 0x89, 0x06, //0x00003b4f movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b52 cmpb $110, (%r12,%rax) - 0x0f, 0x85, 0xe3, 0xfe, 0xff, 0xff, //0x00003b57 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b5d movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b60 cmpb $117, (%r12,%rcx) - 0x0f, 0x85, 0xd5, 0xfe, 0xff, 0xff, //0x00003b65 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b6b leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b6f movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b72 cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0xc2, 0xfe, 0xff, 0xff, //0x00003b78 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b7e leaq $2(%rcx), %rax + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b3e cmpb $117, $1(%r12,%rcx) + 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003b44 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b4a leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b4e movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b51 cmpb $101, $2(%r12,%rcx) + 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003b57 jne LBB0_649 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b5d jmp LBB0_639 + //0x00003b62 LBB0_297 + 0x49, 0x89, 0x06, //0x00003b62 movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b65 cmpb $110, (%r12,%rax) + 0x0f, 0x85, 0x38, 0xff, 0xff, 0xff, //0x00003b6a jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b70 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b73 cmpb $117, (%r12,%rcx) + 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b78 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b7e leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b82 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b85 cmpb $108, $2(%r12,%rcx) - 0x0f, 0x85, 0xaf, 0xfe, 0xff, 0xff, //0x00003b8b jne LBB0_637 - //0x00003b91 LBB0_631 - 0x48, 0x83, 0xc1, 0x03, //0x00003b91 addq $3, %rcx - 0x49, 0x89, 0x0e, //0x00003b95 movq %rcx, (%r14) - 0xe9, 0xa3, 0xfe, 0xff, 0xff, //0x00003b98 jmp LBB0_637 - //0x00003b9d LBB0_228 - 0x48, 0x83, 0xc1, 0xff, //0x00003b9d addq $-1, %rcx - 0x48, 0x89, 0xc8, //0x00003ba1 movq %rcx, %rax - 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003ba4 jmp LBB0_638 - //0x00003ba9 LBB0_632 - 0x48, 0x8b, 0x55, 0xc8, //0x00003ba9 movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00003bad cmpq $-1, %rdx - 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00003bb1 je LBB0_639 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb7 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bbe movq %rdx, (%r14) - 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003bc1 jmp LBB0_638 - //0x00003bc6 LBB0_185 - 0x48, 0x8b, 0x75, 0xc0, //0x00003bc6 movq $-64(%rbp), %rsi - 0xe9, 0x63, 0xfe, 0xff, 0xff, //0x00003bca jmp LBB0_612 - //0x00003bcf LBB0_635 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003bcf movq $-1, %rbx - //0x00003bd6 LBB0_636 - 0x48, 0xf7, 0xd3, //0x00003bd6 notq %rbx - 0x48, 0x01, 0xd8, //0x00003bd9 addq %rbx, %rax - 0x48, 0x8b, 0x4d, 0xd0, //0x00003bdc movq $-48(%rbp), %rcx - 0x48, 0x89, 0x01, //0x00003be0 movq %rax, (%rcx) - 0xe9, 0x58, 0xfe, 0xff, 0xff, //0x00003be3 jmp LBB0_637 - //0x00003be8 LBB0_639 - 0x48, 0x0f, 0xbc, 0xd7, //0x00003be8 bsfq %rdi, %rdx - //0x00003bec LBB0_640 - 0x48, 0x01, 0xc2, //0x00003bec addq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bef movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bf6 movq %rdx, (%r14) - 0xe9, 0x49, 0xfe, 0xff, 0xff, //0x00003bf9 jmp LBB0_638 - //0x00003bfe LBB0_642 - 0x48, 0x8b, 0x45, 0xb0, //0x00003bfe movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c02 movq %rax, $-96(%rbp) - 0xe9, 0x0c, 0xfe, 0xff, 0xff, //0x00003c06 jmp LBB0_610 - //0x00003c0b LBB0_643 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c0b movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c0f movq %rax, $-96(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c13 movq $-48(%rbp), %r14 - 0xe9, 0xfb, 0xfd, 0xff, 0xff, //0x00003c17 jmp LBB0_610 - //0x00003c1c LBB0_182 - 0x48, 0x01, 0xc2, //0x00003c1c addq %rax, %rdx + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b85 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0x17, 0xff, 0xff, 0xff, //0x00003b8b jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b91 leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b95 movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b98 cmpb $108, $2(%r12,%rcx) + 0x0f, 0x85, 0x04, 0xff, 0xff, 0xff, //0x00003b9e jne LBB0_649 + //0x00003ba4 LBB0_639 + 0x48, 0x83, 0xc1, 0x03, //0x00003ba4 addq $3, %rcx + 0x49, 0x89, 0x0e, //0x00003ba8 movq %rcx, (%r14) + 0xe9, 0xf8, 0xfe, 0xff, 0xff, //0x00003bab jmp LBB0_649 + //0x00003bb0 LBB0_640 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb0 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003bb7 cmpb $97, %dl + 0x0f, 0x85, 0xef, 0xfe, 0xff, 0xff, //0x00003bba jne LBB0_650 + 0x48, 0x8d, 0x51, 0x01, //0x00003bc0 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bc4 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003bc7 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0xdc, 0xfe, 0xff, 0xff, //0x00003bcd jne LBB0_650 + 0x48, 0x8d, 0x51, 0x02, //0x00003bd3 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bd7 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003bda cmpb $115, $2(%r12,%rcx) + 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003be0 jne LBB0_650 + 0x48, 0x8d, 0x51, 0x03, //0x00003be6 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bea movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003bed cmpb $101, $3(%r12,%rcx) + 0x0f, 0x85, 0xb6, 0xfe, 0xff, 0xff, //0x00003bf3 jne LBB0_650 + 0x48, 0x83, 0xc1, 0x04, //0x00003bf9 addq $4, %rcx + 0x49, 0x89, 0x0e, //0x00003bfd movq %rcx, (%r14) + 0xe9, 0xaa, 0xfe, 0xff, 0xff, //0x00003c00 jmp LBB0_650 + //0x00003c05 LBB0_236 + 0x48, 0x83, 0xc1, 0xff, //0x00003c05 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003c09 movq %rcx, %rax + 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003c0c jmp LBB0_650 + //0x00003c11 LBB0_645 + 0x48, 0x8b, 0x55, 0xc8, //0x00003c11 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00003c15 cmpq $-1, %rdx + 0x0f, 0x84, 0x34, 0x00, 0x00, 0x00, //0x00003c19 je LBB0_653 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c1f movq $-2, %rax - 0x48, 0x89, 0x55, 0xc8, //0x00003c26 movq %rdx, $-56(%rbp) - 0xe9, 0x78, 0xfe, 0xff, 0xff, //0x00003c2a jmp LBB0_621 - //0x00003c2f LBB0_490 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c2f movq $-48(%rbp), %r14 - 0xe9, 0xdf, 0xfd, 0xff, 0xff, //0x00003c33 jmp LBB0_610 - //0x00003c38 LBB0_646 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c38 movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c3c movq %rax, $-96(%rbp) - 0xe9, 0x2e, 0xfe, 0xff, 0xff, //0x00003c40 jmp LBB0_616 - //0x00003c45 LBB0_644 - 0x48, 0x89, 0x4d, 0xa0, //0x00003c45 movq %rcx, $-96(%rbp) - 0xe9, 0x25, 0xfe, 0xff, 0xff, //0x00003c49 jmp LBB0_616 - //0x00003c4e LBB0_507 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c4e movq $-48(%rbp), %r14 - 0xe9, 0x1c, 0xfe, 0xff, 0xff, //0x00003c52 jmp LBB0_616 - //0x00003c57 LBB0_648 - 0x48, 0x8b, 0x4d, 0xa8, //0x00003c57 movq $-88(%rbp), %rcx - 0x48, 0x8b, 0x49, 0x08, //0x00003c5b movq $8(%rcx), %rcx - 0x48, 0x8b, 0x55, 0xd0, //0x00003c5f movq $-48(%rbp), %rdx - 0x48, 0x89, 0x0a, //0x00003c63 movq %rcx, (%rdx) - 0xe9, 0xdc, 0xfd, 0xff, 0xff, //0x00003c66 jmp LBB0_638 - //0x00003c6b LBB0_649 - 0x4c, 0x29, 0xe0, //0x00003c6b subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00003c6e addq %rdx, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c71 movq %rax, $-56(%rbp) - 0xe9, 0x22, 0xfe, 0xff, 0xff, //0x00003c75 jmp LBB0_620 - //0x00003c7a LBB0_650 - 0x4c, 0x29, 0xc0, //0x00003c7a subq %r8, %rax - 0x48, 0x01, 0xc8, //0x00003c7d addq %rcx, %rax - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003c80 jmp LBB0_653 - //0x00003c85 LBB0_651 - 0x4c, 0x29, 0xe0, //0x00003c85 subq %r12, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c88 movq %rax, $-56(%rbp) - 0xe9, 0x0b, 0xfe, 0xff, 0xff, //0x00003c8c jmp LBB0_620 - //0x00003c91 LBB0_652 - 0x4c, 0x29, 0xc0, //0x00003c91 subq %r8, %rax - //0x00003c94 LBB0_653 - 0x48, 0x89, 0xc2, //0x00003c94 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c97 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003c9e movq %rdx, (%r14) - 0xe9, 0xa1, 0xfd, 0xff, 0xff, //0x00003ca1 jmp LBB0_638 - //0x00003ca6 LBB0_654 - 0x48, 0x01, 0xc8, //0x00003ca6 addq %rcx, %rax - 0x48, 0x89, 0xc2, //0x00003ca9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003cac movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003cb3 movq %rdx, (%r14) - 0xe9, 0x8c, 0xfd, 0xff, 0xff, //0x00003cb6 jmp LBB0_638 - //0x00003cbb LBB0_655 - 0x4c, 0x29, 0xe0, //0x00003cbb subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00003cbe addq %rcx, %rax - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cc1 jmp LBB0_657 - //0x00003cc6 LBB0_656 - 0x4c, 0x29, 0xe0, //0x00003cc6 subq %r12, %rax - //0x00003cc9 LBB0_657 - 0x48, 0x89, 0xc2, //0x00003cc9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ccc movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003cd3 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x16, //0x00003cd7 movq %rdx, (%r14) - 0xe9, 0x68, 0xfd, 0xff, 0xff, //0x00003cda jmp LBB0_638 - 0x90, //0x00003cdf .p2align 2, 0x90 + 0x49, 0x89, 0x16, //0x00003c26 movq %rdx, (%r14) + 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003c29 jmp LBB0_650 + //0x00003c2e LBB0_647 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003c2e movq $-1, %rbx + //0x00003c35 LBB0_648 + 0x48, 0xf7, 0xd3, //0x00003c35 notq %rbx + 0x48, 0x01, 0xd8, //0x00003c38 addq %rbx, %rax + 0x48, 0x8b, 0x4d, 0xd0, //0x00003c3b movq $-48(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00003c3f movq %rax, (%rcx) + 0xe9, 0x61, 0xfe, 0xff, 0xff, //0x00003c42 jmp LBB0_649 + //0x00003c47 LBB0_443 + 0x48, 0x83, 0xc3, 0xff, //0x00003c47 addq $-1, %rbx + 0x48, 0x89, 0xd8, //0x00003c4b movq %rbx, %rax + 0xe9, 0x5c, 0xfe, 0xff, 0xff, //0x00003c4e jmp LBB0_650 + //0x00003c53 LBB0_653 + 0x48, 0x0f, 0xbc, 0xd6, //0x00003c53 bsfq %rsi, %rdx + //0x00003c57 LBB0_654 + 0x48, 0x01, 0xc2, //0x00003c57 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c5a movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003c61 movq %rdx, (%r14) + 0xe9, 0x46, 0xfe, 0xff, 0xff, //0x00003c64 jmp LBB0_650 + //0x00003c69 LBB0_656 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c69 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c6d movq %rax, $-96(%rbp) + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x00003c71 jmp LBB0_624 + //0x00003c76 LBB0_657 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c76 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c7a movq %rax, $-96(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c7e movq $-48(%rbp), %r14 + 0xe9, 0xf4, 0xfd, 0xff, 0xff, //0x00003c82 jmp LBB0_624 + //0x00003c87 LBB0_187 + 0x48, 0x01, 0xc2, //0x00003c87 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c8a movq $-2, %rax + 0x48, 0x89, 0x55, 0xc8, //0x00003c91 movq %rdx, $-56(%rbp) + 0xe9, 0x75, 0xfe, 0xff, 0xff, //0x00003c95 jmp LBB0_634 + //0x00003c9a LBB0_508 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c9a movq $-48(%rbp), %r14 + 0xe9, 0xd8, 0xfd, 0xff, 0xff, //0x00003c9e jmp LBB0_624 + //0x00003ca3 LBB0_658 + 0x48, 0x8b, 0x45, 0xc0, //0x00003ca3 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003ca7 movq %rax, $-96(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003cab jmp LBB0_628 + //0x00003cb0 LBB0_660 + 0x48, 0x89, 0x55, 0xa0, //0x00003cb0 movq %rdx, $-96(%rbp) + 0xe9, 0x16, 0xfe, 0xff, 0xff, //0x00003cb4 jmp LBB0_628 + //0x00003cb9 LBB0_524 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003cb9 movq $-48(%rbp), %r14 + 0xe9, 0x0d, 0xfe, 0xff, 0xff, //0x00003cbd jmp LBB0_628 + //0x00003cc2 LBB0_662 + 0x48, 0x8b, 0x4d, 0xa8, //0x00003cc2 movq $-88(%rbp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003cc6 movq $8(%rcx), %rcx + 0x48, 0x8b, 0x55, 0xd0, //0x00003cca movq $-48(%rbp), %rdx + 0x48, 0x89, 0x0a, //0x00003cce movq %rcx, (%rdx) + 0xe9, 0xd9, 0xfd, 0xff, 0xff, //0x00003cd1 jmp LBB0_650 + //0x00003cd6 LBB0_663 + 0x4c, 0x29, 0xe0, //0x00003cd6 subq %r12, %rax + 0x48, 0x01, 0xd0, //0x00003cd9 addq %rdx, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cdc movq %rax, $-56(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003ce0 jmp LBB0_633 + //0x00003ce5 LBB0_664 + 0x4c, 0x29, 0xc0, //0x00003ce5 subq %r8, %rax + 0x48, 0x01, 0xc8, //0x00003ce8 addq %rcx, %rax + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003ceb jmp LBB0_667 + //0x00003cf0 LBB0_665 + 0x4c, 0x29, 0xe0, //0x00003cf0 subq %r12, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cf3 movq %rax, $-56(%rbp) + 0xe9, 0x08, 0xfe, 0xff, 0xff, //0x00003cf7 jmp LBB0_633 + //0x00003cfc LBB0_666 + 0x4c, 0x29, 0xc0, //0x00003cfc subq %r8, %rax + //0x00003cff LBB0_667 + 0x48, 0x89, 0xc2, //0x00003cff movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d02 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d09 movq %rdx, (%r14) + 0xe9, 0x9e, 0xfd, 0xff, 0xff, //0x00003d0c jmp LBB0_650 + //0x00003d11 LBB0_668 + 0x48, 0x01, 0xc8, //0x00003d11 addq %rcx, %rax + 0x48, 0x89, 0xc2, //0x00003d14 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d17 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d1e movq %rdx, (%r14) + 0xe9, 0x89, 0xfd, 0xff, 0xff, //0x00003d21 jmp LBB0_650 + //0x00003d26 LBB0_669 + 0x4c, 0x29, 0xe0, //0x00003d26 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00003d29 addq %rcx, %rax + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003d2c jmp LBB0_671 + //0x00003d31 LBB0_670 + 0x4c, 0x29, 0xe0, //0x00003d31 subq %r12, %rax + //0x00003d34 LBB0_671 + 0x48, 0x89, 0xc2, //0x00003d34 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d37 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003d3e movq $-48(%rbp), %r14 + 0x49, 0x89, 0x16, //0x00003d42 movq %rdx, (%r14) + 0xe9, 0x65, 0xfd, 0xff, 0xff, //0x00003d45 jmp LBB0_650 + 0x90, 0x90, //0x00003d4a .p2align 2, 0x90 // // .set L0_0_set_35, LBB0_35-LJTI0_0 // // .set L0_0_set_61, LBB0_61-LJTI0_0 // // .set L0_0_set_40, LBB0_40-LJTI0_0 // // .set L0_0_set_59, LBB0_59-LJTI0_0 // // .set L0_0_set_38, LBB0_38-LJTI0_0 // // .set L0_0_set_63, LBB0_63-LJTI0_0 - //0x00003ce0 LJTI0_0 - 0xd4, 0xc6, 0xff, 0xff, //0x00003ce0 .long L0_0_set_35 - 0xec, 0xc8, 0xff, 0xff, //0x00003ce4 .long L0_0_set_61 - 0x10, 0xc7, 0xff, 0xff, //0x00003ce8 .long L0_0_set_40 - 0xd0, 0xc8, 0xff, 0xff, //0x00003cec .long L0_0_set_59 - 0xeb, 0xc6, 0xff, 0xff, //0x00003cf0 .long L0_0_set_38 - 0x1c, 0xc9, 0xff, 0xff, //0x00003cf4 .long L0_0_set_63 - // // .set L0_1_set_638, LBB0_638-LJTI0_1 - // // .set L0_1_set_637, LBB0_637-LJTI0_1 - // // .set L0_1_set_232, LBB0_232-LJTI0_1 - // // .set L0_1_set_250, LBB0_250-LJTI0_1 + //0x00003d4c LJTI0_0 + 0x2c, 0xc6, 0xff, 0xff, //0x00003d4c .long L0_0_set_35 + 0x3c, 0xc8, 0xff, 0xff, //0x00003d50 .long L0_0_set_61 + 0x64, 0xc6, 0xff, 0xff, //0x00003d54 .long L0_0_set_40 + 0x24, 0xc8, 0xff, 0xff, //0x00003d58 .long L0_0_set_59 + 0x43, 0xc6, 0xff, 0xff, //0x00003d5c .long L0_0_set_38 + 0x68, 0xc8, 0xff, 0xff, //0x00003d60 .long L0_0_set_63 + // // .set L0_1_set_650, LBB0_650-LJTI0_1 + // // .set L0_1_set_649, LBB0_649-LJTI0_1 + // // .set L0_1_set_237, LBB0_237-LJTI0_1 + // // .set L0_1_set_255, LBB0_255-LJTI0_1 // // .set L0_1_set_80, LBB0_80-LJTI0_1 - // // .set L0_1_set_229, LBB0_229-LJTI0_1 - // // .set L0_1_set_225, LBB0_225-LJTI0_1 - // // .set L0_1_set_287, LBB0_287-LJTI0_1 - // // .set L0_1_set_296, LBB0_296-LJTI0_1 - // // .set L0_1_set_293, LBB0_293-LJTI0_1 - //0x00003cf8 LJTI0_1 - 0x4f, 0xfd, 0xff, 0xff, //0x00003cf8 .long L0_1_set_638 - 0x48, 0xfd, 0xff, 0xff, //0x00003cfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d60 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_637 - 0x19, 0xd6, 0xff, 0xff, //0x00003d80 .long L0_1_set_232 - 0x48, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_637 - 0xd2, 0xd7, 0xff, 0xff, //0x00003dac .long L0_1_set_250 - 0x48, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_637 - 0x51, 0xc9, 0xff, 0xff, //0x00003db8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dbc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dcc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003ddc .long L0_1_set_80 - 0x48, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dec .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_637 - 0xe9, 0xd5, 0xff, 0xff, //0x00003e64 .long L0_1_set_229 - 0x48, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_637 - 0xac, 0xd5, 0xff, 0xff, //0x00003e90 .long L0_1_set_225 - 0x48, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_637 - 0x20, 0xda, 0xff, 0xff, //0x00003eb0 .long L0_1_set_287 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_637 - 0x80, 0xda, 0xff, 0xff, //0x00003ec8 .long L0_1_set_296 - 0x48, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_637 - 0x50, 0xda, 0xff, 0xff, //0x00003ee4 .long L0_1_set_293 - // // .set L0_2_set_276, LBB0_276-LJTI0_2 - // // .set L0_2_set_412, LBB0_412-LJTI0_2 - // // .set L0_2_set_282, LBB0_282-LJTI0_2 - // // .set L0_2_set_285, LBB0_285-LJTI0_2 - //0x00003ee8 LJTI0_2 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ee8 .long L0_2_set_276 - 0xc0, 0xe6, 0xff, 0xff, //0x00003eec .long L0_2_set_412 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ef0 .long L0_2_set_276 - 0x01, 0xd8, 0xff, 0xff, //0x00003ef4 .long L0_2_set_282 - 0xc0, 0xe6, 0xff, 0xff, //0x00003ef8 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003efc .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f00 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f04 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f08 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f0c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f10 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f14 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f18 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f1c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f20 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f24 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f28 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f2c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f30 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f34 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f38 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f3c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f40 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f44 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f48 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f4c .long L0_2_set_412 - 0x1d, 0xd8, 0xff, 0xff, //0x00003f50 .long L0_2_set_285 - // // .set L0_3_set_113, LBB0_113-LJTI0_3 - // // .set L0_3_set_212, LBB0_212-LJTI0_3 + // // .set L0_1_set_292, LBB0_292-LJTI0_1 + // // .set L0_1_set_233, LBB0_233-LJTI0_1 + // // .set L0_1_set_295, LBB0_295-LJTI0_1 + // // .set L0_1_set_304, LBB0_304-LJTI0_1 + // // .set L0_1_set_301, LBB0_301-LJTI0_1 + //0x00003d64 LJTI0_1 + 0x4b, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_650 + 0x44, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dbc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dcc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ddc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_649 + 0x66, 0xd5, 0xff, 0xff, //0x00003dec .long L0_1_set_237 + 0x44, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_649 + 0x1a, 0xd7, 0xff, 0xff, //0x00003e18 .long L0_1_set_255 + 0x44, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_649 + 0x96, 0xc8, 0xff, 0xff, //0x00003e24 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e28 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e2c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e30 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e34 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e38 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e3c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e40 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e44 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e48 .long L0_1_set_80 + 0x44, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_649 + 0x74, 0xd9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_292 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_649 + 0x29, 0xd5, 0xff, 0xff, //0x00003efc .long L0_1_set_233 + 0x44, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_649 + 0xa4, 0xd9, 0xff, 0xff, //0x00003f1c .long L0_1_set_295 + 0x44, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_649 + 0x04, 0xda, 0xff, 0xff, //0x00003f34 .long L0_1_set_304 + 0x44, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_649 + 0xd4, 0xd9, 0xff, 0xff, //0x00003f50 .long L0_1_set_301 + // // .set L0_2_set_281, LBB0_281-LJTI0_2 + // // .set L0_2_set_427, LBB0_427-LJTI0_2 + // // .set L0_2_set_287, LBB0_287-LJTI0_2 + // // .set L0_2_set_290, LBB0_290-LJTI0_2 + //0x00003f54 LJTI0_2 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f54 .long L0_2_set_281 + 0x75, 0xe6, 0xff, 0xff, //0x00003f58 .long L0_2_set_427 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f5c .long L0_2_set_281 + 0x55, 0xd7, 0xff, 0xff, //0x00003f60 .long L0_2_set_287 + 0x75, 0xe6, 0xff, 0xff, //0x00003f64 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f68 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f6c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f70 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f74 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f78 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f7c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f80 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f84 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f88 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f8c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f90 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f94 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f98 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f9c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa8 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fac .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb8 .long L0_2_set_427 + 0x71, 0xd7, 0xff, 0xff, //0x00003fbc .long L0_2_set_290 + // // .set L0_3_set_106, LBB0_106-LJTI0_3 + // // .set L0_3_set_215, LBB0_215-LJTI0_3 + // // .set L0_3_set_112, LBB0_112-LJTI0_3 // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_107, LBB0_107-LJTI0_3 - //0x00003f54 LJTI0_3 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f54 .long L0_3_set_113 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f58 .long L0_3_set_212 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f5c .long L0_3_set_113 - 0x42, 0xc9, 0xff, 0xff, //0x00003f60 .long L0_3_set_115 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f64 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f68 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f6c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f70 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f74 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f78 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f7c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f80 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f84 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f88 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f8c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f90 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f94 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f98 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f9c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa8 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fac .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb8 .long L0_3_set_212 - 0xe4, 0xc8, 0xff, 0xff, //0x00003fbc .long L0_3_set_107 - //0x00003fc0 .p2align 2, 0x00 - //0x00003fc0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00003fc0 .long 2 + //0x00003fc0 LJTI0_3 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc0 .long L0_3_set_106 + 0x08, 0xd2, 0xff, 0xff, //0x00003fc4 .long L0_3_set_215 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc8 .long L0_3_set_106 + 0x82, 0xc8, 0xff, 0xff, //0x00003fcc .long L0_3_set_112 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fdc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fec .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ffc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004000 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004004 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004008 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000400c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004010 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004014 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004018 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000401c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004020 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004024 .long L0_3_set_215 + 0x9e, 0xc8, 0xff, 0xff, //0x00004028 .long L0_3_set_115 + //0x0000402c .p2align 2, 0x00 + //0x0000402c _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x0000402c .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_subr.go index bb2f481d7..73e0f10d7 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_one_fast = 3348 + _size__skip_one_fast = 3460 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x11, 48}, - {0x25c, 136}, - {0x25d, 48}, - {0x25f, 40}, - {0x261, 32}, - {0x263, 24}, - {0x265, 16}, - {0x266, 8}, - {0x267, 0}, - {0xd14, 136}, + {0xcd6, 136}, + {0xcd7, 48}, + {0xcd9, 40}, + {0xcdb, 32}, + {0xcdd, 24}, + {0xcdf, 16}, + {0xce0, 8}, + {0xce1, 0}, + {0xd84, 136}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_text_amd64.go index 50a6ed6f1..c0f00fee6 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_fast_text_amd64.go @@ -31,12 +31,12 @@ var _text_skip_one_fast = []byte{ 0x41, 0x54, //0x0000008a pushq %r12 0x53, //0x0000008c pushq %rbx 0x48, 0x83, 0xec, 0x58, //0x0000008d subq $88, %rsp - 0x4c, 0x8b, 0x0f, //0x00000091 movq (%rdi), %r9 - 0x48, 0x8b, 0x57, 0x08, //0x00000094 movq $8(%rdi), %rdx + 0x4c, 0x8b, 0x37, //0x00000091 movq (%rdi), %r14 + 0x48, 0x8b, 0x5f, 0x08, //0x00000094 movq $8(%rdi), %rbx 0x48, 0x8b, 0x0e, //0x00000098 movq (%rsi), %rcx - 0x48, 0x39, 0xd1, //0x0000009b cmpq %rdx, %rcx + 0x48, 0x39, 0xd9, //0x0000009b cmpq %rbx, %rcx 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x0000009e jae LBB0_5 - 0x41, 0x8a, 0x04, 0x09, //0x000000a4 movb (%r9,%rcx), %al + 0x41, 0x8a, 0x04, 0x0e, //0x000000a4 movb (%r14,%rcx), %al 0x3c, 0x0d, //0x000000a8 cmpb $13, %al 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x000000aa je LBB0_5 0x3c, 0x20, //0x000000b0 cmpb $32, %al @@ -48,9 +48,9 @@ var _text_skip_one_fast = []byte{ 0xe9, 0xfe, 0x00, 0x00, 0x00, //0x000000c5 jmp LBB0_27 //0x000000ca LBB0_5 0x4c, 0x8d, 0x61, 0x01, //0x000000ca leaq $1(%rcx), %r12 - 0x49, 0x39, 0xd4, //0x000000ce cmpq %rdx, %r12 + 0x49, 0x39, 0xdc, //0x000000ce cmpq %rbx, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x000000d1 jae LBB0_9 - 0x43, 0x8a, 0x04, 0x21, //0x000000d7 movb (%r9,%r12), %al + 0x43, 0x8a, 0x04, 0x26, //0x000000d7 movb (%r14,%r12), %al 0x3c, 0x0d, //0x000000db cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000000dd je LBB0_9 0x3c, 0x20, //0x000000e3 cmpb $32, %al @@ -60,9 +60,9 @@ var _text_skip_one_fast = []byte{ 0x0f, 0x87, 0xd3, 0x00, 0x00, 0x00, //0x000000ef ja LBB0_27 //0x000000f5 LBB0_9 0x4c, 0x8d, 0x61, 0x02, //0x000000f5 leaq $2(%rcx), %r12 - 0x49, 0x39, 0xd4, //0x000000f9 cmpq %rdx, %r12 + 0x49, 0x39, 0xdc, //0x000000f9 cmpq %rbx, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x000000fc jae LBB0_13 - 0x43, 0x8a, 0x04, 0x21, //0x00000102 movb (%r9,%r12), %al + 0x43, 0x8a, 0x04, 0x26, //0x00000102 movb (%r14,%r12), %al 0x3c, 0x0d, //0x00000106 cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000108 je LBB0_13 0x3c, 0x20, //0x0000010e cmpb $32, %al @@ -72,9 +72,9 @@ var _text_skip_one_fast = []byte{ 0x0f, 0x87, 0xa8, 0x00, 0x00, 0x00, //0x0000011a ja LBB0_27 //0x00000120 LBB0_13 0x4c, 0x8d, 0x61, 0x03, //0x00000120 leaq $3(%rcx), %r12 - 0x49, 0x39, 0xd4, //0x00000124 cmpq %rdx, %r12 + 0x49, 0x39, 0xdc, //0x00000124 cmpq %rbx, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00000127 jae LBB0_17 - 0x43, 0x8a, 0x04, 0x21, //0x0000012d movb (%r9,%r12), %al + 0x43, 0x8a, 0x04, 0x26, //0x0000012d movb (%r14,%r12), %al 0x3c, 0x0d, //0x00000131 cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000133 je LBB0_17 0x3c, 0x20, //0x00000139 cmpb $32, %al @@ -84,955 +84,975 @@ var _text_skip_one_fast = []byte{ 0x0f, 0x87, 0x7d, 0x00, 0x00, 0x00, //0x00000145 ja LBB0_27 //0x0000014b LBB0_17 0x48, 0x83, 0xc1, 0x04, //0x0000014b addq $4, %rcx - 0x48, 0x39, 0xca, //0x0000014f cmpq %rcx, %rdx + 0x48, 0x39, 0xcb, //0x0000014f cmpq %rcx, %rbx 0x0f, 0x86, 0x42, 0x00, 0x00, 0x00, //0x00000152 jbe LBB0_23 - 0x48, 0x39, 0xca, //0x00000158 cmpq %rcx, %rdx + 0x48, 0x39, 0xcb, //0x00000158 cmpq %rcx, %rbx 0x0f, 0x84, 0x48, 0x00, 0x00, 0x00, //0x0000015b je LBB0_24 - 0x4d, 0x8d, 0x04, 0x11, //0x00000161 leaq (%r9,%rdx), %r8 - 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000165 movabsq $4294977024, %rbx + 0x4d, 0x8d, 0x04, 0x1e, //0x00000161 leaq (%r14,%rbx), %r8 + 0x48, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000165 movabsq $4294977024, %rdx 0x90, //0x0000016f .p2align 4, 0x90 //0x00000170 LBB0_20 - 0x41, 0x0f, 0xbe, 0x04, 0x09, //0x00000170 movsbl (%r9,%rcx), %eax + 0x41, 0x0f, 0xbe, 0x04, 0x0e, //0x00000170 movsbl (%r14,%rcx), %eax 0x83, 0xf8, 0x20, //0x00000175 cmpl $32, %eax 0x0f, 0x87, 0x37, 0x00, 0x00, 0x00, //0x00000178 ja LBB0_26 - 0x48, 0x0f, 0xa3, 0xc3, //0x0000017e btq %rax, %rbx + 0x48, 0x0f, 0xa3, 0xc2, //0x0000017e btq %rax, %rdx 0x0f, 0x83, 0x2d, 0x00, 0x00, 0x00, //0x00000182 jae LBB0_26 0x48, 0x83, 0xc1, 0x01, //0x00000188 addq $1, %rcx - 0x48, 0x39, 0xca, //0x0000018c cmpq %rcx, %rdx + 0x48, 0x39, 0xcb, //0x0000018c cmpq %rcx, %rbx 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000018f jne LBB0_20 0xe9, 0x15, 0x00, 0x00, 0x00, //0x00000195 jmp LBB0_25 //0x0000019a LBB0_23 0x48, 0x89, 0x0e, //0x0000019a movq %rcx, (%rsi) - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000019d movq $-1, %r14 - 0xe9, 0x2c, 0x01, 0x00, 0x00, //0x000001a4 jmp LBB0_44 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000019d movq $-1, %r15 + 0xe9, 0xa6, 0x0b, 0x00, 0x00, //0x000001a4 jmp LBB0_115 //0x000001a9 LBB0_24 - 0x4c, 0x01, 0xc9, //0x000001a9 addq %r9, %rcx + 0x4c, 0x01, 0xf1, //0x000001a9 addq %r14, %rcx 0x49, 0x89, 0xc8, //0x000001ac movq %rcx, %r8 //0x000001af LBB0_25 - 0x4d, 0x29, 0xc8, //0x000001af subq %r9, %r8 + 0x4d, 0x29, 0xf0, //0x000001af subq %r14, %r8 0x4c, 0x89, 0xc1, //0x000001b2 movq %r8, %rcx //0x000001b5 LBB0_26 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000001b5 movq $-1, %r14 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000001b5 movq $-1, %r15 0x49, 0x89, 0xcc, //0x000001bc movq %rcx, %r12 - 0x48, 0x39, 0xd1, //0x000001bf cmpq %rdx, %rcx - 0x0f, 0x83, 0x0d, 0x01, 0x00, 0x00, //0x000001c2 jae LBB0_44 + 0x48, 0x39, 0xd9, //0x000001bf cmpq %rbx, %rcx + 0x0f, 0x83, 0x87, 0x0b, 0x00, 0x00, //0x000001c2 jae LBB0_115 //0x000001c8 LBB0_27 - 0x49, 0x8d, 0x54, 0x24, 0x01, //0x000001c8 leaq $1(%r12), %rdx - 0x48, 0x89, 0x16, //0x000001cd movq %rdx, (%rsi) - 0x43, 0x0f, 0xbe, 0x04, 0x21, //0x000001d0 movsbl (%r9,%r12), %eax + 0x49, 0x8d, 0x5c, 0x24, 0x01, //0x000001c8 leaq $1(%r12), %rbx + 0x48, 0x89, 0x1e, //0x000001cd movq %rbx, (%rsi) + 0x43, 0x0f, 0xbe, 0x04, 0x26, //0x000001d0 movsbl (%r14,%r12), %eax 0x83, 0xf8, 0x7b, //0x000001d5 cmpl $123, %eax - 0x0f, 0x87, 0x1d, 0x01, 0x00, 0x00, //0x000001d8 ja LBB0_46 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000001de movq $-1, %r14 - 0x48, 0x8d, 0x0d, 0xa8, 0x0b, 0x00, 0x00, //0x000001e5 leaq $2984(%rip), %rcx /* LJTI0_0+0(%rip) */ + 0x0f, 0x87, 0x7b, 0x01, 0x00, 0x00, //0x000001d8 ja LBB0_48 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000001de movq $-1, %r15 + 0x48, 0x8d, 0x0d, 0x18, 0x0c, 0x00, 0x00, //0x000001e5 leaq $3096(%rip), %rcx /* LJTI0_0+0(%rip) */ 0x48, 0x63, 0x04, 0x81, //0x000001ec movslq (%rcx,%rax,4), %rax 0x48, 0x01, 0xc8, //0x000001f0 addq %rcx, %rax 0xff, 0xe0, //0x000001f3 jmpq *%rax //0x000001f5 LBB0_29 - 0x48, 0x8b, 0x47, 0x08, //0x000001f5 movq $8(%rdi), %rax - 0x48, 0x89, 0xc1, //0x000001f9 movq %rax, %rcx - 0x48, 0x29, 0xd1, //0x000001fc subq %rdx, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x000001ff cmpq $16, %rcx - 0x0f, 0x82, 0x40, 0x0b, 0x00, 0x00, //0x00000203 jb LBB0_117 - 0x4c, 0x89, 0xe1, //0x00000209 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x0000020c notq %rcx - 0xf3, 0x0f, 0x6f, 0x05, 0xe9, 0xfd, 0xff, 0xff, //0x0000020f movdqu $-535(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xf1, 0xfd, 0xff, 0xff, //0x00000217 movdqu $-527(%rip), %xmm1 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0xf9, 0xfd, 0xff, 0xff, //0x0000021f movdqu $-519(%rip), %xmm2 /* LCPI0_2+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000227 .p2align 4, 0x90 + 0x48, 0x8b, 0x4f, 0x08, //0x000001f5 movq $8(%rdi), %rcx + 0x48, 0x29, 0xd9, //0x000001f9 subq %rbx, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x000001fc cmpq $16, %rcx + 0x0f, 0x82, 0xb2, 0x0b, 0x00, 0x00, //0x00000200 jb LBB0_121 + 0x31, 0xff, //0x00000206 xorl %edi, %edi + 0xf3, 0x0f, 0x6f, 0x05, 0xf0, 0xfd, 0xff, 0xff, //0x00000208 movdqu $-528(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xf8, 0xfd, 0xff, 0xff, //0x00000210 movdqu $-520(%rip), %xmm1 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0x00, 0xfe, 0xff, 0xff, //0x00000218 movdqu $-512(%rip), %xmm2 /* LCPI0_2+0(%rip) */ + 0x4c, 0x89, 0xf2, //0x00000220 movq %r14, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000223 .p2align 4, 0x90 //0x00000230 LBB0_31 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x11, //0x00000230 movdqu (%r9,%rdx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00000236 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x0000023a pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xdb, 0xd9, //0x0000023e pand %xmm1, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00000242 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00000246 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x0000024a pmovmskb %xmm3, %edi - 0x85, 0xff, //0x0000024e testl %edi, %edi - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x00000250 jne LBB0_41 - 0x48, 0x83, 0xc2, 0x10, //0x00000256 addq $16, %rdx - 0x48, 0x8d, 0x3c, 0x08, //0x0000025a leaq (%rax,%rcx), %rdi - 0x48, 0x83, 0xc7, 0xf0, //0x0000025e addq $-16, %rdi - 0x48, 0x83, 0xc1, 0xf0, //0x00000262 addq $-16, %rcx - 0x48, 0x83, 0xff, 0x0f, //0x00000266 cmpq $15, %rdi - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000026a ja LBB0_31 - 0x4c, 0x89, 0xca, //0x00000270 movq %r9, %rdx - 0x48, 0x29, 0xca, //0x00000273 subq %rcx, %rdx - 0x48, 0x01, 0xc8, //0x00000276 addq %rcx, %rax - 0x48, 0x89, 0xc1, //0x00000279 movq %rax, %rcx + 0xf3, 0x42, 0x0f, 0x6f, 0x5c, 0x22, 0x01, //0x00000230 movdqu $1(%rdx,%r12), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000237 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x0000023b pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xdb, 0xd9, //0x0000023f pand %xmm1, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00000243 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00000247 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x0000024b pmovmskb %xmm3, %eax + 0x85, 0xc0, //0x0000024f testl %eax, %eax + 0x0f, 0x85, 0x7f, 0x00, 0x00, 0x00, //0x00000251 jne LBB0_42 + 0x48, 0x83, 0xc2, 0x10, //0x00000257 addq $16, %rdx + 0x48, 0x8d, 0x04, 0x39, //0x0000025b leaq (%rcx,%rdi), %rax + 0x48, 0x83, 0xc0, 0xf0, //0x0000025f addq $-16, %rax + 0x48, 0x83, 0xc7, 0xf0, //0x00000263 addq $-16, %rdi + 0x48, 0x83, 0xf8, 0x0f, //0x00000267 cmpq $15, %rax + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x0000026b ja LBB0_31 + 0x4a, 0x8d, 0x1c, 0x22, //0x00000271 leaq (%rdx,%r12), %rbx + 0x48, 0x83, 0xc3, 0x01, //0x00000275 addq $1, %rbx + 0x48, 0x01, 0xf9, //0x00000279 addq %rdi, %rcx 0x48, 0x85, 0xc9, //0x0000027c testq %rcx, %rcx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x0000027f je LBB0_40 + 0x0f, 0x84, 0x46, 0x00, 0x00, 0x00, //0x0000027f je LBB0_41 //0x00000285 LBB0_34 - 0x48, 0x8d, 0x3c, 0x0a, //0x00000285 leaq (%rdx,%rcx), %rdi - 0x31, 0xc0, //0x00000289 xorl %eax, %eax - //0x0000028b LBB0_35 - 0x0f, 0xb6, 0x1c, 0x02, //0x0000028b movzbl (%rdx,%rax), %ebx - 0x80, 0xfb, 0x2c, //0x0000028f cmpb $44, %bl - 0x0f, 0x84, 0x94, 0x0a, 0x00, 0x00, //0x00000292 je LBB0_115 - 0x80, 0xfb, 0x7d, //0x00000298 cmpb $125, %bl - 0x0f, 0x84, 0x8b, 0x0a, 0x00, 0x00, //0x0000029b je LBB0_115 - 0x80, 0xfb, 0x5d, //0x000002a1 cmpb $93, %bl - 0x0f, 0x84, 0x82, 0x0a, 0x00, 0x00, //0x000002a4 je LBB0_115 - 0x48, 0x83, 0xc0, 0x01, //0x000002aa addq $1, %rax - 0x48, 0x39, 0xc1, //0x000002ae cmpq %rax, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x000002b1 jne LBB0_35 - 0x48, 0x89, 0xfa, //0x000002b7 movq %rdi, %rdx - //0x000002ba LBB0_40 - 0x4c, 0x29, 0xca, //0x000002ba subq %r9, %rdx - 0x48, 0x89, 0x16, //0x000002bd movq %rdx, (%rsi) - 0xe9, 0x0d, 0x00, 0x00, 0x00, //0x000002c0 jmp LBB0_43 - //0x000002c5 LBB0_41 - 0x66, 0x0f, 0xbc, 0xc7, //0x000002c5 bsfw %di, %ax - 0x0f, 0xb7, 0xc0, //0x000002c9 movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x000002cc subq %rcx, %rax - //0x000002cf LBB0_42 - 0x48, 0x89, 0x06, //0x000002cf movq %rax, (%rsi) - //0x000002d2 LBB0_43 - 0x4d, 0x89, 0xe6, //0x000002d2 movq %r12, %r14 - //0x000002d5 LBB0_44 - 0x4c, 0x89, 0xf0, //0x000002d5 movq %r14, %rax - 0x48, 0x83, 0xc4, 0x58, //0x000002d8 addq $88, %rsp - 0x5b, //0x000002dc popq %rbx - 0x41, 0x5c, //0x000002dd popq %r12 - 0x41, 0x5d, //0x000002df popq %r13 - 0x41, 0x5e, //0x000002e1 popq %r14 - 0x41, 0x5f, //0x000002e3 popq %r15 - 0x5d, //0x000002e5 popq %rbp - 0xc3, //0x000002e6 retq - //0x000002e7 LBB0_45 - 0x49, 0x8d, 0x44, 0x24, 0x04, //0x000002e7 leaq $4(%r12), %rax - 0x48, 0x3b, 0x47, 0x08, //0x000002ec cmpq $8(%rdi), %rax - 0x0f, 0x86, 0xd9, 0xff, 0xff, 0xff, //0x000002f0 jbe LBB0_42 - 0xe9, 0xda, 0xff, 0xff, 0xff, //0x000002f6 jmp LBB0_44 - //0x000002fb LBB0_46 - 0x4c, 0x89, 0x26, //0x000002fb movq %r12, (%rsi) - 0x49, 0xc7, 0xc6, 0xfe, 0xff, 0xff, 0xff, //0x000002fe movq $-2, %r14 - 0xe9, 0xcb, 0xff, 0xff, 0xff, //0x00000305 jmp LBB0_44 - //0x0000030a LBB0_47 - 0x4c, 0x8b, 0x47, 0x08, //0x0000030a movq $8(%rdi), %r8 - 0x4d, 0x89, 0xc7, //0x0000030e movq %r8, %r15 - 0x49, 0x29, 0xd7, //0x00000311 subq %rdx, %r15 - 0x49, 0x83, 0xff, 0x20, //0x00000314 cmpq $32, %r15 - 0x0f, 0x8c, 0x3c, 0x0a, 0x00, 0x00, //0x00000318 jl LBB0_118 - 0x4f, 0x8d, 0x14, 0x21, //0x0000031e leaq (%r9,%r12), %r10 - 0x4d, 0x29, 0xe0, //0x00000322 subq %r12, %r8 - 0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x00000325 movl $31, %r13d - 0x45, 0x31, 0xff, //0x0000032b xorl %r15d, %r15d - 0xf3, 0x0f, 0x6f, 0x05, 0xfa, 0xfc, 0xff, 0xff, //0x0000032e movdqu $-774(%rip), %xmm0 /* LCPI0_3+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x02, 0xfd, 0xff, 0xff, //0x00000336 movdqu $-766(%rip), %xmm1 /* LCPI0_4+0(%rip) */ - 0x45, 0x31, 0xdb, //0x0000033e xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000341 .p2align 4, 0x90 - //0x00000350 LBB0_49 - 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x3a, 0x01, //0x00000350 movdqu $1(%r10,%r15), %xmm2 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x3a, 0x11, //0x00000357 movdqu $17(%r10,%r15), %xmm3 - 0x66, 0x0f, 0x6f, 0xe2, //0x0000035e movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00000362 pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000366 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x6f, 0xe3, //0x0000036a movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x0000036e pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xc4, //0x00000372 pmovmskb %xmm4, %eax - 0x48, 0xc1, 0xe0, 0x10, //0x00000376 shlq $16, %rax - 0x48, 0x09, 0xc8, //0x0000037a orq %rcx, %rax - 0x66, 0x0f, 0x74, 0xd1, //0x0000037d pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00000381 pmovmskb %xmm2, %ebx - 0x66, 0x0f, 0x74, 0xd9, //0x00000385 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00000389 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x0000038d shlq $16, %rcx - 0x48, 0x09, 0xd9, //0x00000391 orq %rbx, %rcx - 0x48, 0x89, 0xcb, //0x00000394 movq %rcx, %rbx - 0x4c, 0x09, 0xdb, //0x00000397 orq %r11, %rbx - 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x0000039a je LBB0_51 - 0x44, 0x89, 0xdb, //0x000003a0 movl %r11d, %ebx - 0xf7, 0xd3, //0x000003a3 notl %ebx - 0x21, 0xcb, //0x000003a5 andl %ecx, %ebx - 0x8d, 0x14, 0x1b, //0x000003a7 leal (%rbx,%rbx), %edx - 0x44, 0x09, 0xda, //0x000003aa orl %r11d, %edx - 0x89, 0xd7, //0x000003ad movl %edx, %edi - 0xf7, 0xd7, //0x000003af notl %edi - 0x21, 0xcf, //0x000003b1 andl %ecx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000003b3 andl $-1431655766, %edi - 0x45, 0x31, 0xdb, //0x000003b9 xorl %r11d, %r11d - 0x01, 0xdf, //0x000003bc addl %ebx, %edi - 0x41, 0x0f, 0x92, 0xc3, //0x000003be setb %r11b - 0x01, 0xff, //0x000003c2 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000003c4 xorl $1431655765, %edi - 0x21, 0xd7, //0x000003ca andl %edx, %edi - 0xf7, 0xd7, //0x000003cc notl %edi - 0x21, 0xf8, //0x000003ce andl %edi, %eax - 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x000003d0 jmp LBB0_52 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003d5 .p2align 4, 0x90 - //0x000003e0 LBB0_51 - 0x45, 0x31, 0xdb, //0x000003e0 xorl %r11d, %r11d - //0x000003e3 LBB0_52 - 0x48, 0x85, 0xc0, //0x000003e3 testq %rax, %rax - 0x0f, 0x85, 0xe6, 0x08, 0x00, 0x00, //0x000003e6 jne LBB0_110 - 0x49, 0x83, 0xc7, 0x20, //0x000003ec addq $32, %r15 - 0x4b, 0x8d, 0x04, 0x28, //0x000003f0 leaq (%r8,%r13), %rax - 0x48, 0x83, 0xc0, 0xe0, //0x000003f4 addq $-32, %rax - 0x49, 0x83, 0xc5, 0xe0, //0x000003f8 addq $-32, %r13 - 0x48, 0x83, 0xf8, 0x3f, //0x000003fc cmpq $63, %rax - 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00000400 jg LBB0_49 - 0x4d, 0x85, 0xdb, //0x00000406 testq %r11, %r11 - 0x0f, 0x85, 0x5f, 0x09, 0x00, 0x00, //0x00000409 jne LBB0_120 - 0x4b, 0x8d, 0x14, 0x17, //0x0000040f leaq (%r15,%r10), %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00000413 addq $1, %rdx - 0x49, 0xf7, 0xd7, //0x00000417 notq %r15 - 0x4d, 0x01, 0xc7, //0x0000041a addq %r8, %r15 - //0x0000041d LBB0_56 - 0x4d, 0x85, 0xff, //0x0000041d testq %r15, %r15 - 0x0f, 0x8e, 0xaf, 0xfe, 0xff, 0xff, //0x00000420 jle LBB0_44 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00000426 movq $-1, %r14 - 0xe9, 0xca, 0x08, 0x00, 0x00, //0x0000042d jmp LBB0_112 - //0x00000432 LBB0_58 - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000432 movabsq $6148914691236517205, %r10 - 0x48, 0x8b, 0x47, 0x08, //0x0000043c movq $8(%rdi), %rax - 0x48, 0x29, 0xd0, //0x00000440 subq %rdx, %rax - 0x49, 0x01, 0xd1, //0x00000443 addq %rdx, %r9 - 0x45, 0x31, 0xed, //0x00000446 xorl %r13d, %r13d - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xee, 0xfb, 0xff, 0xff, //0x00000449 movdqu $-1042(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xd6, 0xfb, 0xff, 0xff, //0x00000452 movdqu $-1066(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x0000045a pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0x09, 0xfc, 0xff, 0xff, //0x0000045f movdqu $-1015(%rip), %xmm3 /* LCPI0_7+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0xb1, 0xfb, 0xff, 0xff, //0x00000467 movdqu $-1103(%rip), %xmm4 /* LCPI0_2+0(%rip) */ - 0x45, 0x0f, 0x57, 0xc0, //0x0000046f xorps %xmm8, %xmm8 - 0x45, 0x31, 0xff, //0x00000473 xorl %r15d, %r15d - 0x31, 0xc9, //0x00000476 xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xc0, //0x00000478 movq %rcx, $-64(%rbp) - 0x45, 0x31, 0xdb, //0x0000047c xorl %r11d, %r11d - 0xe9, 0x60, 0x00, 0x00, 0x00, //0x0000047f jmp LBB0_60 - //0x00000484 LBB0_59 - 0x49, 0xc1, 0xff, 0x3f, //0x00000484 sarq $63, %r15 - 0x4c, 0x89, 0xc0, //0x00000488 movq %r8, %rax - 0x48, 0xd1, 0xe8, //0x0000048b shrq %rax - 0x4c, 0x21, 0xd0, //0x0000048e andq %r10, %rax - 0x49, 0x29, 0xc0, //0x00000491 subq %rax, %r8 - 0x4c, 0x89, 0xc0, //0x00000494 movq %r8, %rax - 0x4c, 0x21, 0xe8, //0x00000497 andq %r13, %rax - 0x49, 0xc1, 0xe8, 0x02, //0x0000049a shrq $2, %r8 - 0x4d, 0x21, 0xe8, //0x0000049e andq %r13, %r8 - 0x49, 0x01, 0xc0, //0x000004a1 addq %rax, %r8 - 0x4c, 0x89, 0xc0, //0x000004a4 movq %r8, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x000004a7 shrq $4, %rax - 0x4c, 0x01, 0xc0, //0x000004ab addq %r8, %rax - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000004ae movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xc8, //0x000004b8 andq %rcx, %rax - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000004bb movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xc1, //0x000004c5 imulq %rcx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x000004c9 shrq $56, %rax - 0x48, 0x01, 0x45, 0xc0, //0x000004cd addq %rax, $-64(%rbp) - 0x49, 0x83, 0xc1, 0x40, //0x000004d1 addq $64, %r9 - 0x48, 0x8b, 0x45, 0xd0, //0x000004d5 movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x000004d9 addq $-64, %rax - 0x4d, 0x89, 0xfd, //0x000004dd movq %r15, %r13 - 0x4c, 0x8b, 0x7d, 0xc8, //0x000004e0 movq $-56(%rbp), %r15 - //0x000004e4 LBB0_60 - 0x48, 0x83, 0xf8, 0x40, //0x000004e4 cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x000004e8 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x2c, 0x02, 0x00, 0x00, //0x000004ec jl LBB0_67 - //0x000004f2 LBB0_61 - 0xf3, 0x41, 0x0f, 0x6f, 0x01, //0x000004f2 movdqu (%r9), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x69, 0x10, //0x000004f7 movdqu $16(%r9), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x79, 0x20, //0x000004fd movdqu $32(%r9), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x71, 0x30, //0x00000503 movdqu $48(%r9), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00000509 movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x0000050d pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00000512 pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x6f, 0xd5, //0x00000516 movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x0000051a pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x0000051f pmovmskb %xmm2, %eax - 0x66, 0x0f, 0x6f, 0xd7, //0x00000523 movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000527 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000052c pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd6, //0x00000530 movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000534 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00000539 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x0000053d shlq $48, %rbx - 0x48, 0xc1, 0xe1, 0x20, //0x00000541 shlq $32, %rcx - 0x48, 0x09, 0xd9, //0x00000545 orq %rbx, %rcx - 0x48, 0xc1, 0xe0, 0x10, //0x00000548 shlq $16, %rax - 0x48, 0x09, 0xc8, //0x0000054c orq %rcx, %rax - 0x48, 0x09, 0xc2, //0x0000054f orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00000552 movq %rdx, %rax - 0x4c, 0x09, 0xf8, //0x00000555 orq %r15, %rax - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00000558 jne LBB0_63 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000055e movq $-1, %rdx - 0x31, 0xc0, //0x00000565 xorl %eax, %eax - 0x48, 0x89, 0x45, 0xc8, //0x00000567 movq %rax, $-56(%rbp) - 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x0000056b jmp LBB0_64 - //0x00000570 LBB0_63 - 0x4c, 0x89, 0xf8, //0x00000570 movq %r15, %rax - 0x48, 0xf7, 0xd0, //0x00000573 notq %rax - 0x48, 0x21, 0xd0, //0x00000576 andq %rdx, %rax - 0x4c, 0x8d, 0x04, 0x00, //0x00000579 leaq (%rax,%rax), %r8 - 0x4d, 0x09, 0xf8, //0x0000057d orq %r15, %r8 - 0x4c, 0x89, 0xc1, //0x00000580 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000583 notq %rcx - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000586 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xda, //0x00000590 andq %rbx, %rdx - 0x48, 0x21, 0xca, //0x00000593 andq %rcx, %rdx - 0x31, 0xc9, //0x00000596 xorl %ecx, %ecx - 0x48, 0x01, 0xc2, //0x00000598 addq %rax, %rdx - 0x0f, 0x92, 0xc1, //0x0000059b setb %cl - 0x48, 0x89, 0x4d, 0xc8, //0x0000059e movq %rcx, $-56(%rbp) - 0x48, 0x01, 0xd2, //0x000005a2 addq %rdx, %rdx - 0x4c, 0x31, 0xd2, //0x000005a5 xorq %r10, %rdx - 0x4c, 0x21, 0xc2, //0x000005a8 andq %r8, %rdx - 0x48, 0xf7, 0xd2, //0x000005ab notq %rdx - //0x000005ae LBB0_64 - 0x66, 0x0f, 0x6f, 0xd6, //0x000005ae movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x000005b2 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x000005b6 pmovmskb %xmm2, %eax - 0x48, 0xc1, 0xe0, 0x30, //0x000005ba shlq $48, %rax - 0x66, 0x0f, 0x6f, 0xd7, //0x000005be movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x000005c2 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x000005c6 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x000005ca shlq $32, %rcx - 0x48, 0x09, 0xc1, //0x000005ce orq %rax, %rcx - 0x66, 0x0f, 0x6f, 0xd5, //0x000005d1 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x000005d5 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x000005d9 pmovmskb %xmm2, %eax - 0x48, 0xc1, 0xe0, 0x10, //0x000005dd shlq $16, %rax - 0x48, 0x09, 0xc8, //0x000005e1 orq %rcx, %rax - 0x66, 0x0f, 0x6f, 0xd0, //0x000005e4 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x000005e8 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x000005ec pmovmskb %xmm2, %ecx - 0x48, 0x09, 0xc1, //0x000005f0 orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x000005f3 andq %rdx, %rcx - 0x66, 0x48, 0x0f, 0x6e, 0xd1, //0x000005f6 movq %rcx, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x000005fb pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd7, //0x00000602 movq %xmm2, %r15 - 0x4d, 0x31, 0xef, //0x00000607 xorq %r13, %r15 - 0x66, 0x0f, 0x6f, 0xd0, //0x0000060a movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x0000060e pcmpeqb %xmm3, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00000612 pmovmskb %xmm2, %r8d - 0x66, 0x0f, 0x6f, 0xd5, //0x00000617 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x0000061b pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x0000061f pmovmskb %xmm2, %eax - 0x66, 0x0f, 0x6f, 0xd7, //0x00000623 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000627 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000062b pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd6, //0x0000062f movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000633 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00000637 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x0000063b shlq $48, %rbx - 0x48, 0xc1, 0xe1, 0x20, //0x0000063f shlq $32, %rcx - 0x48, 0x09, 0xd9, //0x00000643 orq %rbx, %rcx - 0x48, 0xc1, 0xe0, 0x10, //0x00000646 shlq $16, %rax - 0x48, 0x09, 0xc8, //0x0000064a orq %rcx, %rax - 0x49, 0x09, 0xc0, //0x0000064d orq %rax, %r8 - 0x4c, 0x89, 0xf8, //0x00000650 movq %r15, %rax - 0x48, 0xf7, 0xd0, //0x00000653 notq %rax - 0x49, 0x21, 0xc0, //0x00000656 andq %rax, %r8 - 0x66, 0x0f, 0x74, 0xc4, //0x00000659 pcmpeqb %xmm4, %xmm0 - 0x66, 0x0f, 0xd7, 0xc8, //0x0000065d pmovmskb %xmm0, %ecx - 0x66, 0x0f, 0x74, 0xec, //0x00000661 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00000665 pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x74, 0xfc, //0x00000669 pcmpeqb %xmm4, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x0000066d pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x74, 0xf4, //0x00000672 pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xee, //0x00000676 pmovmskb %xmm6, %r13d - 0x49, 0xc1, 0xe5, 0x30, //0x0000067b shlq $48, %r13 - 0x49, 0xc1, 0xe2, 0x20, //0x0000067f shlq $32, %r10 - 0x4d, 0x09, 0xea, //0x00000683 orq %r13, %r10 - 0x48, 0xc1, 0xe3, 0x10, //0x00000686 shlq $16, %rbx - 0x4c, 0x09, 0xd3, //0x0000068a orq %r10, %rbx - 0x48, 0x09, 0xd9, //0x0000068d orq %rbx, %rcx - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000690 movabsq $6148914691236517205, %r10 - 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000069a movabsq $3689348814741910323, %r13 - 0x48, 0x21, 0xc1, //0x000006a4 andq %rax, %rcx - 0x0f, 0x84, 0xd7, 0xfd, 0xff, 0xff, //0x000006a7 je LBB0_59 - 0x90, 0x90, 0x90, //0x000006ad .p2align 4, 0x90 - //0x000006b0 LBB0_65 - 0x48, 0x8d, 0x51, 0xff, //0x000006b0 leaq $-1(%rcx), %rdx - 0x48, 0x89, 0xd3, //0x000006b4 movq %rdx, %rbx - 0x4c, 0x21, 0xc3, //0x000006b7 andq %r8, %rbx - 0x48, 0x89, 0xd8, //0x000006ba movq %rbx, %rax - 0x48, 0xd1, 0xe8, //0x000006bd shrq %rax - 0x4c, 0x21, 0xd0, //0x000006c0 andq %r10, %rax - 0x48, 0x29, 0xc3, //0x000006c3 subq %rax, %rbx - 0x48, 0x89, 0xd8, //0x000006c6 movq %rbx, %rax - 0x4c, 0x21, 0xe8, //0x000006c9 andq %r13, %rax - 0x48, 0xc1, 0xeb, 0x02, //0x000006cc shrq $2, %rbx - 0x4c, 0x21, 0xeb, //0x000006d0 andq %r13, %rbx - 0x48, 0x01, 0xc3, //0x000006d3 addq %rax, %rbx - 0x48, 0x89, 0xd8, //0x000006d6 movq %rbx, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x000006d9 shrq $4, %rax - 0x48, 0x01, 0xd8, //0x000006dd addq %rbx, %rax - 0x48, 0xbb, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000006e0 movabsq $1085102592571150095, %rbx - 0x48, 0x21, 0xd8, //0x000006ea andq %rbx, %rax - 0x48, 0xbb, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000006ed movabsq $72340172838076673, %rbx - 0x48, 0x0f, 0xaf, 0xc3, //0x000006f7 imulq %rbx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x000006fb shrq $56, %rax - 0x48, 0x03, 0x45, 0xc0, //0x000006ff addq $-64(%rbp), %rax - 0x4c, 0x39, 0xd8, //0x00000703 cmpq %r11, %rax - 0x0f, 0x86, 0x92, 0x05, 0x00, 0x00, //0x00000706 jbe LBB0_109 - 0x49, 0x83, 0xc3, 0x01, //0x0000070c addq $1, %r11 - 0x48, 0x21, 0xd1, //0x00000710 andq %rdx, %rcx - 0x0f, 0x85, 0x97, 0xff, 0xff, 0xff, //0x00000713 jne LBB0_65 - 0xe9, 0x66, 0xfd, 0xff, 0xff, //0x00000719 jmp LBB0_59 - //0x0000071e LBB0_67 - 0x48, 0x85, 0xc0, //0x0000071e testq %rax, %rax - 0x0f, 0x8e, 0x3b, 0x06, 0x00, 0x00, //0x00000721 jle LBB0_119 - 0x4c, 0x89, 0xf9, //0x00000727 movq %r15, %rcx - 0x44, 0x0f, 0x11, 0x45, 0xb0, //0x0000072a movups %xmm8, $-80(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0xa0, //0x0000072f movups %xmm8, $-96(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0x90, //0x00000734 movups %xmm8, $-112(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0x80, //0x00000739 movups %xmm8, $-128(%rbp) - 0x44, 0x89, 0xc8, //0x0000073e movl %r9d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000741 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00000746 cmpl $4033, %eax - 0x0f, 0x82, 0x31, 0x00, 0x00, 0x00, //0x0000074b jb LBB0_71 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00000751 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x00000756 jb LBB0_72 - 0x41, 0x0f, 0x10, 0x01, //0x0000075c movups (%r9), %xmm0 - 0x0f, 0x11, 0x45, 0x80, //0x00000760 movups %xmm0, $-128(%rbp) - 0x41, 0x0f, 0x10, 0x41, 0x10, //0x00000764 movups $16(%r9), %xmm0 - 0x0f, 0x11, 0x45, 0x90, //0x00000769 movups %xmm0, $-112(%rbp) - 0x49, 0x83, 0xc1, 0x20, //0x0000076d addq $32, %r9 - 0x48, 0x8b, 0x45, 0xd0, //0x00000771 movq $-48(%rbp), %rax - 0x48, 0x8d, 0x50, 0xe0, //0x00000775 leaq $-32(%rax), %rdx - 0x4c, 0x8d, 0x45, 0xa0, //0x00000779 leaq $-96(%rbp), %r8 - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x0000077d jmp LBB0_73 - //0x00000782 LBB0_71 - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000782 movabsq $6148914691236517205, %r10 - 0x49, 0x89, 0xcf, //0x0000078c movq %rcx, %r15 - 0xe9, 0x5e, 0xfd, 0xff, 0xff, //0x0000078f jmp LBB0_61 - //0x00000794 LBB0_72 - 0x4c, 0x8d, 0x45, 0x80, //0x00000794 leaq $-128(%rbp), %r8 - 0x48, 0x8b, 0x55, 0xd0, //0x00000798 movq $-48(%rbp), %rdx - //0x0000079c LBB0_73 - 0x48, 0x83, 0xfa, 0x10, //0x0000079c cmpq $16, %rdx - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x000007a0 jb LBB0_74 - 0x41, 0x0f, 0x10, 0x01, //0x000007a6 movups (%r9), %xmm0 - 0x41, 0x0f, 0x11, 0x00, //0x000007aa movups %xmm0, (%r8) - 0x49, 0x83, 0xc1, 0x10, //0x000007ae addq $16, %r9 - 0x49, 0x83, 0xc0, 0x10, //0x000007b2 addq $16, %r8 - 0x48, 0x83, 0xc2, 0xf0, //0x000007b6 addq $-16, %rdx - 0x48, 0x83, 0xfa, 0x08, //0x000007ba cmpq $8, %rdx - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000007be jae LBB0_81 - //0x000007c4 LBB0_75 - 0x48, 0x83, 0xfa, 0x04, //0x000007c4 cmpq $4, %rdx - 0x0f, 0x8c, 0x47, 0x00, 0x00, 0x00, //0x000007c8 jl LBB0_76 - //0x000007ce LBB0_82 - 0x41, 0x8b, 0x01, //0x000007ce movl (%r9), %eax - 0x41, 0x89, 0x00, //0x000007d1 movl %eax, (%r8) - 0x49, 0x83, 0xc1, 0x04, //0x000007d4 addq $4, %r9 - 0x49, 0x83, 0xc0, 0x04, //0x000007d8 addq $4, %r8 - 0x48, 0x83, 0xc2, 0xfc, //0x000007dc addq $-4, %rdx - 0x48, 0x83, 0xfa, 0x02, //0x000007e0 cmpq $2, %rdx - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000007e4 jae LBB0_77 - 0xe9, 0x44, 0x00, 0x00, 0x00, //0x000007ea jmp LBB0_78 - //0x000007ef LBB0_74 - 0x48, 0x83, 0xfa, 0x08, //0x000007ef cmpq $8, %rdx - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x000007f3 jb LBB0_75 - //0x000007f9 LBB0_81 - 0x49, 0x8b, 0x01, //0x000007f9 movq (%r9), %rax - 0x49, 0x89, 0x00, //0x000007fc movq %rax, (%r8) - 0x49, 0x83, 0xc1, 0x08, //0x000007ff addq $8, %r9 - 0x49, 0x83, 0xc0, 0x08, //0x00000803 addq $8, %r8 - 0x48, 0x83, 0xc2, 0xf8, //0x00000807 addq $-8, %rdx - 0x48, 0x83, 0xfa, 0x04, //0x0000080b cmpq $4, %rdx - 0x0f, 0x8d, 0xb9, 0xff, 0xff, 0xff, //0x0000080f jge LBB0_82 - //0x00000815 LBB0_76 - 0x48, 0x83, 0xfa, 0x02, //0x00000815 cmpq $2, %rdx - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00000819 jb LBB0_78 - //0x0000081f LBB0_77 - 0x41, 0x0f, 0xb7, 0x01, //0x0000081f movzwl (%r9), %eax - 0x66, 0x41, 0x89, 0x00, //0x00000823 movw %ax, (%r8) - 0x49, 0x83, 0xc1, 0x02, //0x00000827 addq $2, %r9 - 0x49, 0x83, 0xc0, 0x02, //0x0000082b addq $2, %r8 - 0x48, 0x83, 0xc2, 0xfe, //0x0000082f addq $-2, %rdx - //0x00000833 LBB0_78 - 0x4c, 0x89, 0xc8, //0x00000833 movq %r9, %rax - 0x4c, 0x8d, 0x4d, 0x80, //0x00000836 leaq $-128(%rbp), %r9 - 0x48, 0x85, 0xd2, //0x0000083a testq %rdx, %rdx - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000083d movabsq $6148914691236517205, %r10 - 0x49, 0x89, 0xcf, //0x00000847 movq %rcx, %r15 - 0x0f, 0x84, 0xa2, 0xfc, 0xff, 0xff, //0x0000084a je LBB0_61 - 0x8a, 0x00, //0x00000850 movb (%rax), %al - 0x41, 0x88, 0x00, //0x00000852 movb %al, (%r8) - 0x4c, 0x8d, 0x4d, 0x80, //0x00000855 leaq $-128(%rbp), %r9 - 0xe9, 0x94, 0xfc, 0xff, 0xff, //0x00000859 jmp LBB0_61 - //0x0000085e LBB0_83 - 0x49, 0x8d, 0x44, 0x24, 0x05, //0x0000085e leaq $5(%r12), %rax - 0x48, 0x3b, 0x47, 0x08, //0x00000863 cmpq $8(%rdi), %rax - 0x0f, 0x86, 0x62, 0xfa, 0xff, 0xff, //0x00000867 jbe LBB0_42 - 0xe9, 0x63, 0xfa, 0xff, 0xff, //0x0000086d jmp LBB0_44 - //0x00000872 LBB0_84 - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000872 movabsq $6148914691236517205, %r10 - 0x48, 0x8b, 0x47, 0x08, //0x0000087c movq $8(%rdi), %rax - 0x48, 0x29, 0xd0, //0x00000880 subq %rdx, %rax - 0x49, 0x01, 0xd1, //0x00000883 addq %rdx, %r9 - 0x45, 0x31, 0xed, //0x00000886 xorl %r13d, %r13d - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xae, 0xf7, 0xff, 0xff, //0x00000889 movdqu $-2130(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x96, 0xf7, 0xff, 0xff, //0x00000892 movdqu $-2154(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x0000089a pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0xa9, 0xf7, 0xff, 0xff, //0x0000089f movdqu $-2135(%rip), %xmm3 /* LCPI0_5+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0xb1, 0xf7, 0xff, 0xff, //0x000008a7 movdqu $-2127(%rip), %xmm4 /* LCPI0_6+0(%rip) */ - 0x45, 0x0f, 0x57, 0xc0, //0x000008af xorps %xmm8, %xmm8 - 0x45, 0x31, 0xff, //0x000008b3 xorl %r15d, %r15d - 0x31, 0xc9, //0x000008b6 xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xc0, //0x000008b8 movq %rcx, $-64(%rbp) - 0x45, 0x31, 0xdb, //0x000008bc xorl %r11d, %r11d - 0xe9, 0x60, 0x00, 0x00, 0x00, //0x000008bf jmp LBB0_86 - //0x000008c4 LBB0_85 - 0x49, 0xc1, 0xff, 0x3f, //0x000008c4 sarq $63, %r15 - 0x4c, 0x89, 0xc0, //0x000008c8 movq %r8, %rax - 0x48, 0xd1, 0xe8, //0x000008cb shrq %rax - 0x4c, 0x21, 0xd0, //0x000008ce andq %r10, %rax - 0x49, 0x29, 0xc0, //0x000008d1 subq %rax, %r8 - 0x4c, 0x89, 0xc0, //0x000008d4 movq %r8, %rax - 0x4c, 0x21, 0xe8, //0x000008d7 andq %r13, %rax - 0x49, 0xc1, 0xe8, 0x02, //0x000008da shrq $2, %r8 - 0x4d, 0x21, 0xe8, //0x000008de andq %r13, %r8 - 0x49, 0x01, 0xc0, //0x000008e1 addq %rax, %r8 - 0x4c, 0x89, 0xc0, //0x000008e4 movq %r8, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x000008e7 shrq $4, %rax - 0x4c, 0x01, 0xc0, //0x000008eb addq %r8, %rax - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000008ee movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xc8, //0x000008f8 andq %rcx, %rax - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000008fb movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xc1, //0x00000905 imulq %rcx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x00000909 shrq $56, %rax - 0x48, 0x01, 0x45, 0xc0, //0x0000090d addq %rax, $-64(%rbp) - 0x49, 0x83, 0xc1, 0x40, //0x00000911 addq $64, %r9 - 0x48, 0x8b, 0x45, 0xd0, //0x00000915 movq $-48(%rbp), %rax - 0x48, 0x83, 0xc0, 0xc0, //0x00000919 addq $-64, %rax - 0x4d, 0x89, 0xfd, //0x0000091d movq %r15, %r13 - 0x4c, 0x8b, 0x7d, 0xc8, //0x00000920 movq $-56(%rbp), %r15 - //0x00000924 LBB0_86 - 0x48, 0x83, 0xf8, 0x40, //0x00000924 cmpq $64, %rax - 0x48, 0x89, 0x45, 0xd0, //0x00000928 movq %rax, $-48(%rbp) - 0x0f, 0x8c, 0x2c, 0x02, 0x00, 0x00, //0x0000092c jl LBB0_93 - //0x00000932 LBB0_87 - 0xf3, 0x41, 0x0f, 0x6f, 0x01, //0x00000932 movdqu (%r9), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x69, 0x10, //0x00000937 movdqu $16(%r9), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x79, 0x20, //0x0000093d movdqu $32(%r9), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x71, 0x30, //0x00000943 movdqu $48(%r9), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00000949 movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x0000094d pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00000952 pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x6f, 0xd5, //0x00000956 movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x0000095a pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x0000095f pmovmskb %xmm2, %eax - 0x66, 0x0f, 0x6f, 0xd7, //0x00000963 movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000967 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000096c pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd6, //0x00000970 movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000974 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00000979 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x0000097d shlq $48, %rbx - 0x48, 0xc1, 0xe1, 0x20, //0x00000981 shlq $32, %rcx - 0x48, 0x09, 0xd9, //0x00000985 orq %rbx, %rcx - 0x48, 0xc1, 0xe0, 0x10, //0x00000988 shlq $16, %rax - 0x48, 0x09, 0xc8, //0x0000098c orq %rcx, %rax - 0x48, 0x09, 0xc2, //0x0000098f orq %rax, %rdx - 0x48, 0x89, 0xd0, //0x00000992 movq %rdx, %rax - 0x4c, 0x09, 0xf8, //0x00000995 orq %r15, %rax - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00000998 jne LBB0_89 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000099e movq $-1, %rdx - 0x31, 0xc0, //0x000009a5 xorl %eax, %eax - 0x48, 0x89, 0x45, 0xc8, //0x000009a7 movq %rax, $-56(%rbp) - 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x000009ab jmp LBB0_90 - //0x000009b0 LBB0_89 - 0x4c, 0x89, 0xf8, //0x000009b0 movq %r15, %rax - 0x48, 0xf7, 0xd0, //0x000009b3 notq %rax - 0x48, 0x21, 0xd0, //0x000009b6 andq %rdx, %rax - 0x4c, 0x8d, 0x04, 0x00, //0x000009b9 leaq (%rax,%rax), %r8 - 0x4d, 0x09, 0xf8, //0x000009bd orq %r15, %r8 - 0x4c, 0x89, 0xc1, //0x000009c0 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x000009c3 notq %rcx - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000009c6 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xda, //0x000009d0 andq %rbx, %rdx - 0x48, 0x21, 0xca, //0x000009d3 andq %rcx, %rdx - 0x31, 0xc9, //0x000009d6 xorl %ecx, %ecx - 0x48, 0x01, 0xc2, //0x000009d8 addq %rax, %rdx - 0x0f, 0x92, 0xc1, //0x000009db setb %cl - 0x48, 0x89, 0x4d, 0xc8, //0x000009de movq %rcx, $-56(%rbp) - 0x48, 0x01, 0xd2, //0x000009e2 addq %rdx, %rdx - 0x4c, 0x31, 0xd2, //0x000009e5 xorq %r10, %rdx - 0x4c, 0x21, 0xc2, //0x000009e8 andq %r8, %rdx - 0x48, 0xf7, 0xd2, //0x000009eb notq %rdx - //0x000009ee LBB0_90 - 0x66, 0x0f, 0x6f, 0xd6, //0x000009ee movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x000009f2 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x000009f6 pmovmskb %xmm2, %eax - 0x48, 0xc1, 0xe0, 0x30, //0x000009fa shlq $48, %rax - 0x66, 0x0f, 0x6f, 0xd7, //0x000009fe movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00000a02 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00000a06 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x20, //0x00000a0a shlq $32, %rcx - 0x48, 0x09, 0xc1, //0x00000a0e orq %rax, %rcx - 0x66, 0x0f, 0x6f, 0xd5, //0x00000a11 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00000a15 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x00000a19 pmovmskb %xmm2, %eax - 0x48, 0xc1, 0xe0, 0x10, //0x00000a1d shlq $16, %rax - 0x48, 0x09, 0xc8, //0x00000a21 orq %rcx, %rax - 0x66, 0x0f, 0x6f, 0xd0, //0x00000a24 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00000a28 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00000a2c pmovmskb %xmm2, %ecx - 0x48, 0x09, 0xc1, //0x00000a30 orq %rax, %rcx - 0x48, 0x21, 0xd1, //0x00000a33 andq %rdx, %rcx - 0x66, 0x48, 0x0f, 0x6e, 0xd1, //0x00000a36 movq %rcx, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00000a3b pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd7, //0x00000a42 movq %xmm2, %r15 - 0x4d, 0x31, 0xef, //0x00000a47 xorq %r13, %r15 - 0x66, 0x0f, 0x6f, 0xd0, //0x00000a4a movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000a4e pcmpeqb %xmm3, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00000a52 pmovmskb %xmm2, %r8d - 0x66, 0x0f, 0x6f, 0xd5, //0x00000a57 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000a5b pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xc2, //0x00000a5f pmovmskb %xmm2, %eax - 0x66, 0x0f, 0x6f, 0xd7, //0x00000a63 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000a67 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00000a6b pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd6, //0x00000a6f movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00000a73 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00000a77 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00000a7b shlq $48, %rbx - 0x48, 0xc1, 0xe1, 0x20, //0x00000a7f shlq $32, %rcx - 0x48, 0x09, 0xd9, //0x00000a83 orq %rbx, %rcx - 0x48, 0xc1, 0xe0, 0x10, //0x00000a86 shlq $16, %rax - 0x48, 0x09, 0xc8, //0x00000a8a orq %rcx, %rax - 0x49, 0x09, 0xc0, //0x00000a8d orq %rax, %r8 - 0x4c, 0x89, 0xf8, //0x00000a90 movq %r15, %rax - 0x48, 0xf7, 0xd0, //0x00000a93 notq %rax - 0x49, 0x21, 0xc0, //0x00000a96 andq %rax, %r8 - 0x66, 0x0f, 0x74, 0xc4, //0x00000a99 pcmpeqb %xmm4, %xmm0 - 0x66, 0x0f, 0xd7, 0xc8, //0x00000a9d pmovmskb %xmm0, %ecx - 0x66, 0x0f, 0x74, 0xec, //0x00000aa1 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00000aa5 pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x74, 0xfc, //0x00000aa9 pcmpeqb %xmm4, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000aad pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x74, 0xf4, //0x00000ab2 pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xee, //0x00000ab6 pmovmskb %xmm6, %r13d - 0x49, 0xc1, 0xe5, 0x30, //0x00000abb shlq $48, %r13 - 0x49, 0xc1, 0xe2, 0x20, //0x00000abf shlq $32, %r10 - 0x4d, 0x09, 0xea, //0x00000ac3 orq %r13, %r10 - 0x48, 0xc1, 0xe3, 0x10, //0x00000ac6 shlq $16, %rbx - 0x4c, 0x09, 0xd3, //0x00000aca orq %r10, %rbx - 0x48, 0x09, 0xd9, //0x00000acd orq %rbx, %rcx - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000ad0 movabsq $6148914691236517205, %r10 - 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000ada movabsq $3689348814741910323, %r13 - 0x48, 0x21, 0xc1, //0x00000ae4 andq %rax, %rcx - 0x0f, 0x84, 0xd7, 0xfd, 0xff, 0xff, //0x00000ae7 je LBB0_85 - 0x90, 0x90, 0x90, //0x00000aed .p2align 4, 0x90 - //0x00000af0 LBB0_91 - 0x48, 0x8d, 0x51, 0xff, //0x00000af0 leaq $-1(%rcx), %rdx - 0x48, 0x89, 0xd3, //0x00000af4 movq %rdx, %rbx - 0x4c, 0x21, 0xc3, //0x00000af7 andq %r8, %rbx - 0x48, 0x89, 0xd8, //0x00000afa movq %rbx, %rax - 0x48, 0xd1, 0xe8, //0x00000afd shrq %rax - 0x4c, 0x21, 0xd0, //0x00000b00 andq %r10, %rax - 0x48, 0x29, 0xc3, //0x00000b03 subq %rax, %rbx - 0x48, 0x89, 0xd8, //0x00000b06 movq %rbx, %rax - 0x4c, 0x21, 0xe8, //0x00000b09 andq %r13, %rax - 0x48, 0xc1, 0xeb, 0x02, //0x00000b0c shrq $2, %rbx - 0x4c, 0x21, 0xeb, //0x00000b10 andq %r13, %rbx - 0x48, 0x01, 0xc3, //0x00000b13 addq %rax, %rbx - 0x48, 0x89, 0xd8, //0x00000b16 movq %rbx, %rax - 0x48, 0xc1, 0xe8, 0x04, //0x00000b19 shrq $4, %rax - 0x48, 0x01, 0xd8, //0x00000b1d addq %rbx, %rax - 0x48, 0xbb, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000b20 movabsq $1085102592571150095, %rbx - 0x48, 0x21, 0xd8, //0x00000b2a andq %rbx, %rax - 0x48, 0xbb, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000b2d movabsq $72340172838076673, %rbx - 0x48, 0x0f, 0xaf, 0xc3, //0x00000b37 imulq %rbx, %rax - 0x48, 0xc1, 0xe8, 0x38, //0x00000b3b shrq $56, %rax - 0x48, 0x03, 0x45, 0xc0, //0x00000b3f addq $-64(%rbp), %rax - 0x4c, 0x39, 0xd8, //0x00000b43 cmpq %r11, %rax - 0x0f, 0x86, 0x52, 0x01, 0x00, 0x00, //0x00000b46 jbe LBB0_109 - 0x49, 0x83, 0xc3, 0x01, //0x00000b4c addq $1, %r11 - 0x48, 0x21, 0xd1, //0x00000b50 andq %rdx, %rcx - 0x0f, 0x85, 0x97, 0xff, 0xff, 0xff, //0x00000b53 jne LBB0_91 - 0xe9, 0x66, 0xfd, 0xff, 0xff, //0x00000b59 jmp LBB0_85 - //0x00000b5e LBB0_93 - 0x48, 0x85, 0xc0, //0x00000b5e testq %rax, %rax - 0x0f, 0x8e, 0xfb, 0x01, 0x00, 0x00, //0x00000b61 jle LBB0_119 - 0x4c, 0x89, 0xf9, //0x00000b67 movq %r15, %rcx - 0x44, 0x0f, 0x11, 0x45, 0xb0, //0x00000b6a movups %xmm8, $-80(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0xa0, //0x00000b6f movups %xmm8, $-96(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0x90, //0x00000b74 movups %xmm8, $-112(%rbp) - 0x44, 0x0f, 0x11, 0x45, 0x80, //0x00000b79 movups %xmm8, $-128(%rbp) - 0x44, 0x89, 0xc8, //0x00000b7e movl %r9d, %eax - 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000b81 andl $4095, %eax - 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00000b86 cmpl $4033, %eax - 0x0f, 0x82, 0x31, 0x00, 0x00, 0x00, //0x00000b8b jb LBB0_97 - 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00000b91 cmpq $32, $-48(%rbp) - 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x00000b96 jb LBB0_98 - 0x41, 0x0f, 0x10, 0x01, //0x00000b9c movups (%r9), %xmm0 - 0x0f, 0x11, 0x45, 0x80, //0x00000ba0 movups %xmm0, $-128(%rbp) - 0x41, 0x0f, 0x10, 0x41, 0x10, //0x00000ba4 movups $16(%r9), %xmm0 - 0x0f, 0x11, 0x45, 0x90, //0x00000ba9 movups %xmm0, $-112(%rbp) - 0x49, 0x83, 0xc1, 0x20, //0x00000bad addq $32, %r9 - 0x48, 0x8b, 0x45, 0xd0, //0x00000bb1 movq $-48(%rbp), %rax - 0x48, 0x8d, 0x50, 0xe0, //0x00000bb5 leaq $-32(%rax), %rdx - 0x4c, 0x8d, 0x45, 0xa0, //0x00000bb9 leaq $-96(%rbp), %r8 - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x00000bbd jmp LBB0_99 - //0x00000bc2 LBB0_97 - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000bc2 movabsq $6148914691236517205, %r10 - 0x49, 0x89, 0xcf, //0x00000bcc movq %rcx, %r15 - 0xe9, 0x5e, 0xfd, 0xff, 0xff, //0x00000bcf jmp LBB0_87 - //0x00000bd4 LBB0_98 - 0x4c, 0x8d, 0x45, 0x80, //0x00000bd4 leaq $-128(%rbp), %r8 - 0x48, 0x8b, 0x55, 0xd0, //0x00000bd8 movq $-48(%rbp), %rdx - //0x00000bdc LBB0_99 - 0x48, 0x83, 0xfa, 0x10, //0x00000bdc cmpq $16, %rdx - 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00000be0 jb LBB0_100 - 0x41, 0x0f, 0x10, 0x01, //0x00000be6 movups (%r9), %xmm0 - 0x41, 0x0f, 0x11, 0x00, //0x00000bea movups %xmm0, (%r8) - 0x49, 0x83, 0xc1, 0x10, //0x00000bee addq $16, %r9 - 0x49, 0x83, 0xc0, 0x10, //0x00000bf2 addq $16, %r8 - 0x48, 0x83, 0xc2, 0xf0, //0x00000bf6 addq $-16, %rdx - 0x48, 0x83, 0xfa, 0x08, //0x00000bfa cmpq $8, %rdx - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000bfe jae LBB0_107 - //0x00000c04 LBB0_101 - 0x48, 0x83, 0xfa, 0x04, //0x00000c04 cmpq $4, %rdx - 0x0f, 0x8c, 0x47, 0x00, 0x00, 0x00, //0x00000c08 jl LBB0_102 - //0x00000c0e LBB0_108 - 0x41, 0x8b, 0x01, //0x00000c0e movl (%r9), %eax - 0x41, 0x89, 0x00, //0x00000c11 movl %eax, (%r8) - 0x49, 0x83, 0xc1, 0x04, //0x00000c14 addq $4, %r9 - 0x49, 0x83, 0xc0, 0x04, //0x00000c18 addq $4, %r8 - 0x48, 0x83, 0xc2, 0xfc, //0x00000c1c addq $-4, %rdx - 0x48, 0x83, 0xfa, 0x02, //0x00000c20 cmpq $2, %rdx - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000c24 jae LBB0_103 - 0xe9, 0x44, 0x00, 0x00, 0x00, //0x00000c2a jmp LBB0_104 - //0x00000c2f LBB0_100 - 0x48, 0x83, 0xfa, 0x08, //0x00000c2f cmpq $8, %rdx - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00000c33 jb LBB0_101 - //0x00000c39 LBB0_107 - 0x49, 0x8b, 0x01, //0x00000c39 movq (%r9), %rax - 0x49, 0x89, 0x00, //0x00000c3c movq %rax, (%r8) - 0x49, 0x83, 0xc1, 0x08, //0x00000c3f addq $8, %r9 - 0x49, 0x83, 0xc0, 0x08, //0x00000c43 addq $8, %r8 - 0x48, 0x83, 0xc2, 0xf8, //0x00000c47 addq $-8, %rdx - 0x48, 0x83, 0xfa, 0x04, //0x00000c4b cmpq $4, %rdx - 0x0f, 0x8d, 0xb9, 0xff, 0xff, 0xff, //0x00000c4f jge LBB0_108 - //0x00000c55 LBB0_102 - 0x48, 0x83, 0xfa, 0x02, //0x00000c55 cmpq $2, %rdx - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00000c59 jb LBB0_104 - //0x00000c5f LBB0_103 - 0x41, 0x0f, 0xb7, 0x01, //0x00000c5f movzwl (%r9), %eax - 0x66, 0x41, 0x89, 0x00, //0x00000c63 movw %ax, (%r8) - 0x49, 0x83, 0xc1, 0x02, //0x00000c67 addq $2, %r9 - 0x49, 0x83, 0xc0, 0x02, //0x00000c6b addq $2, %r8 - 0x48, 0x83, 0xc2, 0xfe, //0x00000c6f addq $-2, %rdx - //0x00000c73 LBB0_104 - 0x4c, 0x89, 0xc8, //0x00000c73 movq %r9, %rax - 0x4c, 0x8d, 0x4d, 0x80, //0x00000c76 leaq $-128(%rbp), %r9 - 0x48, 0x85, 0xd2, //0x00000c7a testq %rdx, %rdx - 0x49, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000c7d movabsq $6148914691236517205, %r10 - 0x49, 0x89, 0xcf, //0x00000c87 movq %rcx, %r15 - 0x0f, 0x84, 0xa2, 0xfc, 0xff, 0xff, //0x00000c8a je LBB0_87 - 0x8a, 0x00, //0x00000c90 movb (%rax), %al - 0x41, 0x88, 0x00, //0x00000c92 movb %al, (%r8) - 0x4c, 0x8d, 0x4d, 0x80, //0x00000c95 leaq $-128(%rbp), %r9 - 0xe9, 0x94, 0xfc, 0xff, 0xff, //0x00000c99 jmp LBB0_87 - //0x00000c9e LBB0_109 - 0x48, 0x8b, 0x47, 0x08, //0x00000c9e movq $8(%rdi), %rax - 0x48, 0x0f, 0xbc, 0xc9, //0x00000ca2 bsfq %rcx, %rcx - 0x48, 0x2b, 0x4d, 0xd0, //0x00000ca6 subq $-48(%rbp), %rcx - 0x48, 0x01, 0xc8, //0x00000caa addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00000cad addq $1, %rax - 0x48, 0x89, 0x06, //0x00000cb1 movq %rax, (%rsi) - 0x48, 0x8b, 0x4f, 0x08, //0x00000cb4 movq $8(%rdi), %rcx - 0x48, 0x39, 0xc8, //0x00000cb8 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x00000cbb cmovaq %rcx, %rax - 0x48, 0x89, 0x06, //0x00000cbf movq %rax, (%rsi) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000cc2 movq $-1, %rax - 0x4c, 0x0f, 0x47, 0xe0, //0x00000cc9 cmovaq %rax, %r12 - 0xe9, 0x00, 0xf6, 0xff, 0xff, //0x00000ccd jmp LBB0_43 - //0x00000cd2 LBB0_110 - 0x0f, 0xbc, 0xc0, //0x00000cd2 bsfl %eax, %eax - 0x4c, 0x01, 0xe0, //0x00000cd5 addq %r12, %rax - 0x4c, 0x01, 0xf8, //0x00000cd8 addq %r15, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00000cdb addq $2, %rax - 0xe9, 0xeb, 0xf5, 0xff, 0xff, //0x00000cdf jmp LBB0_42 - //0x00000ce4 LBB0_111 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000ce4 movq $-2, %rax - 0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000ceb movl $2, %ecx - 0x48, 0x01, 0xca, //0x00000cf0 addq %rcx, %rdx - 0x49, 0x01, 0xc7, //0x00000cf3 addq %rax, %r15 - 0x0f, 0x8e, 0xd9, 0xf5, 0xff, 0xff, //0x00000cf6 jle LBB0_44 - //0x00000cfc LBB0_112 - 0x0f, 0xb6, 0x02, //0x00000cfc movzbl (%rdx), %eax - 0x3c, 0x5c, //0x00000cff cmpb $92, %al - 0x0f, 0x84, 0xdd, 0xff, 0xff, 0xff, //0x00000d01 je LBB0_111 - 0x3c, 0x22, //0x00000d07 cmpb $34, %al - 0x0f, 0x84, 0x2b, 0x00, 0x00, 0x00, //0x00000d09 je LBB0_116 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000d0f movq $-1, %rax - 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000d16 movl $1, %ecx - 0x48, 0x01, 0xca, //0x00000d1b addq %rcx, %rdx - 0x49, 0x01, 0xc7, //0x00000d1e addq %rax, %r15 - 0x0f, 0x8f, 0xd5, 0xff, 0xff, 0xff, //0x00000d21 jg LBB0_112 - 0xe9, 0xa9, 0xf5, 0xff, 0xff, //0x00000d27 jmp LBB0_44 - //0x00000d2c LBB0_115 - 0x4c, 0x29, 0xca, //0x00000d2c subq %r9, %rdx - 0x48, 0x01, 0xc2, //0x00000d2f addq %rax, %rdx - 0x48, 0x89, 0x16, //0x00000d32 movq %rdx, (%rsi) - 0xe9, 0x98, 0xf5, 0xff, 0xff, //0x00000d35 jmp LBB0_43 - //0x00000d3a LBB0_116 - 0x4c, 0x29, 0xca, //0x00000d3a subq %r9, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x00000d3d addq $1, %rdx - 0x48, 0x89, 0x16, //0x00000d41 movq %rdx, (%rsi) - 0xe9, 0x89, 0xf5, 0xff, 0xff, //0x00000d44 jmp LBB0_43 - //0x00000d49 LBB0_117 - 0x4c, 0x01, 0xca, //0x00000d49 addq %r9, %rdx - 0x48, 0x85, 0xc9, //0x00000d4c testq %rcx, %rcx - 0x0f, 0x85, 0x30, 0xf5, 0xff, 0xff, //0x00000d4f jne LBB0_34 - 0xe9, 0x60, 0xf5, 0xff, 0xff, //0x00000d55 jmp LBB0_40 - //0x00000d5a LBB0_118 - 0x4c, 0x01, 0xca, //0x00000d5a addq %r9, %rdx - 0xe9, 0xbb, 0xf6, 0xff, 0xff, //0x00000d5d jmp LBB0_56 - //0x00000d62 LBB0_119 - 0x48, 0x8b, 0x47, 0x08, //0x00000d62 movq $8(%rdi), %rax - 0x48, 0x89, 0x06, //0x00000d66 movq %rax, (%rsi) - 0xe9, 0x67, 0xf5, 0xff, 0xff, //0x00000d69 jmp LBB0_44 - //0x00000d6e LBB0_120 - 0x49, 0x8d, 0x40, 0xff, //0x00000d6e leaq $-1(%r8), %rax - 0x4c, 0x39, 0xf8, //0x00000d72 cmpq %r15, %rax - 0x0f, 0x84, 0x5a, 0xf5, 0xff, 0xff, //0x00000d75 je LBB0_44 - 0x4b, 0x8d, 0x14, 0x17, //0x00000d7b leaq (%r15,%r10), %rdx - 0x48, 0x83, 0xc2, 0x02, //0x00000d7f addq $2, %rdx - 0x4d, 0x29, 0xf8, //0x00000d83 subq %r15, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x00000d86 addq $-2, %r8 - 0x4d, 0x89, 0xc7, //0x00000d8a movq %r8, %r15 - 0xe9, 0x8b, 0xf6, 0xff, 0xff, //0x00000d8d jmp LBB0_56 - 0x90, 0x90, //0x00000d92 .p2align 2, 0x90 - // // .set L0_0_set_44, LBB0_44-LJTI0_0 - // // .set L0_0_set_46, LBB0_46-LJTI0_0 - // // .set L0_0_set_47, LBB0_47-LJTI0_0 + 0x48, 0x8d, 0x14, 0x0b, //0x00000285 leaq (%rbx,%rcx), %rdx + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000289 movabsq $17596481021440, %rdi + //0x00000293 LBB0_35 + 0x0f, 0xb6, 0x03, //0x00000293 movzbl (%rbx), %eax + 0x48, 0x83, 0xf8, 0x2c, //0x00000296 cmpq $44, %rax + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x0000029a ja LBB0_37 + 0x48, 0x0f, 0xa3, 0xc7, //0x000002a0 btq %rax, %rdi + 0x0f, 0x82, 0x21, 0x00, 0x00, 0x00, //0x000002a4 jb LBB0_41 + //0x000002aa LBB0_37 + 0x3c, 0x5d, //0x000002aa cmpb $93, %al + 0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x000002ac je LBB0_41 + 0x3c, 0x7d, //0x000002b2 cmpb $125, %al + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000002b4 je LBB0_41 + 0x48, 0x83, 0xc3, 0x01, //0x000002ba addq $1, %rbx + 0x48, 0x83, 0xc1, 0xff, //0x000002be addq $-1, %rcx + 0x0f, 0x85, 0xcb, 0xff, 0xff, 0xff, //0x000002c2 jne LBB0_35 + 0x48, 0x89, 0xd3, //0x000002c8 movq %rdx, %rbx + //0x000002cb LBB0_41 + 0x4c, 0x29, 0xf3, //0x000002cb subq %r14, %rbx + 0x48, 0x89, 0x1e, //0x000002ce movq %rbx, (%rsi) + 0xe9, 0x76, 0x0a, 0x00, 0x00, //0x000002d1 jmp LBB0_114 + //0x000002d6 LBB0_42 + 0x66, 0x0f, 0xbc, 0xc0, //0x000002d6 bsfw %ax, %ax + 0x0f, 0xb7, 0xc0, //0x000002da movzwl %ax, %eax + 0x4c, 0x01, 0xe0, //0x000002dd addq %r12, %rax + 0x48, 0x89, 0xc1, //0x000002e0 movq %rax, %rcx + 0x48, 0x29, 0xf9, //0x000002e3 subq %rdi, %rcx + 0x48, 0x8d, 0x79, 0x01, //0x000002e6 leaq $1(%rcx), %rdi + 0x48, 0x89, 0x3e, //0x000002ea movq %rdi, (%rsi) + 0x48, 0x85, 0xff, //0x000002ed testq %rdi, %rdi + 0x0f, 0x8e, 0x56, 0x0a, 0x00, 0x00, //0x000002f0 jle LBB0_114 + 0x48, 0x8d, 0x79, 0x02, //0x000002f6 leaq $2(%rcx), %rdi + 0x48, 0x01, 0xc2, //0x000002fa addq %rax, %rdx + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000002fd movabsq $4294977024, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000307 .p2align 4, 0x90 + //0x00000310 LBB0_44 + 0x0f, 0xb6, 0x02, //0x00000310 movzbl (%rdx), %eax + 0x48, 0x83, 0xf8, 0x20, //0x00000313 cmpq $32, %rax + 0x0f, 0x87, 0x2f, 0x0a, 0x00, 0x00, //0x00000317 ja LBB0_114 + 0x48, 0x0f, 0xa3, 0xc3, //0x0000031d btq %rax, %rbx + 0x0f, 0x83, 0x25, 0x0a, 0x00, 0x00, //0x00000321 jae LBB0_114 + 0x48, 0x89, 0x0e, //0x00000327 movq %rcx, (%rsi) + 0x48, 0x83, 0xc7, 0xff, //0x0000032a addq $-1, %rdi + 0x48, 0x83, 0xc1, 0xff, //0x0000032e addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000332 addq $-1, %rdx + 0x48, 0x83, 0xff, 0x01, //0x00000336 cmpq $1, %rdi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000033a jg LBB0_44 + 0xe9, 0x07, 0x0a, 0x00, 0x00, //0x00000340 jmp LBB0_114 + //0x00000345 LBB0_47 + 0x49, 0x8d, 0x44, 0x24, 0x04, //0x00000345 leaq $4(%r12), %rax + 0x48, 0x3b, 0x47, 0x08, //0x0000034a cmpq $8(%rdi), %rax + 0x0f, 0x86, 0xf5, 0x09, 0x00, 0x00, //0x0000034e jbe LBB0_113 + 0xe9, 0xf6, 0x09, 0x00, 0x00, //0x00000354 jmp LBB0_115 + //0x00000359 LBB0_48 + 0x4c, 0x89, 0x26, //0x00000359 movq %r12, (%rsi) + 0x49, 0xc7, 0xc7, 0xfe, 0xff, 0xff, 0xff, //0x0000035c movq $-2, %r15 + 0xe9, 0xe7, 0x09, 0x00, 0x00, //0x00000363 jmp LBB0_115 + //0x00000368 LBB0_49 + 0x4c, 0x8b, 0x47, 0x08, //0x00000368 movq $8(%rdi), %r8 + 0x4d, 0x89, 0xc3, //0x0000036c movq %r8, %r11 + 0x49, 0x29, 0xdb, //0x0000036f subq %rbx, %r11 + 0x49, 0x83, 0xfb, 0x20, //0x00000372 cmpq $32, %r11 + 0x0f, 0x8c, 0x4d, 0x0a, 0x00, 0x00, //0x00000376 jl LBB0_122 + 0x4f, 0x8d, 0x0c, 0x26, //0x0000037c leaq (%r14,%r12), %r9 + 0x4d, 0x29, 0xe0, //0x00000380 subq %r12, %r8 + 0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x00000383 movl $31, %r13d + 0x45, 0x31, 0xdb, //0x00000389 xorl %r11d, %r11d + 0xf3, 0x0f, 0x6f, 0x05, 0x9c, 0xfc, 0xff, 0xff, //0x0000038c movdqu $-868(%rip), %xmm0 /* LCPI0_3+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xa4, 0xfc, 0xff, 0xff, //0x00000394 movdqu $-860(%rip), %xmm1 /* LCPI0_4+0(%rip) */ + 0x45, 0x31, 0xd2, //0x0000039c xorl %r10d, %r10d + 0x90, //0x0000039f .p2align 4, 0x90 + //0x000003a0 LBB0_51 + 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x19, 0x01, //0x000003a0 movdqu $1(%r9,%r11), %xmm2 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x19, 0x11, //0x000003a7 movdqu $17(%r9,%r11), %xmm3 + 0x66, 0x0f, 0x6f, 0xe2, //0x000003ae movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000003b2 pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xc4, //0x000003b6 pmovmskb %xmm4, %eax + 0x66, 0x0f, 0x6f, 0xe3, //0x000003ba movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x000003be pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x000003c2 pmovmskb %xmm4, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x000003c6 shlq $16, %rcx + 0x48, 0x09, 0xc1, //0x000003ca orq %rax, %rcx + 0x66, 0x0f, 0x74, 0xd1, //0x000003cd pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000003d1 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x000003d5 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xc3, //0x000003d9 pmovmskb %xmm3, %eax + 0x48, 0xc1, 0xe0, 0x10, //0x000003dd shlq $16, %rax + 0x48, 0x09, 0xd0, //0x000003e1 orq %rdx, %rax + 0x48, 0x89, 0xc2, //0x000003e4 movq %rax, %rdx + 0x4c, 0x09, 0xd2, //0x000003e7 orq %r10, %rdx + 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x000003ea je LBB0_53 + 0x44, 0x89, 0xd2, //0x000003f0 movl %r10d, %edx + 0xf7, 0xd2, //0x000003f3 notl %edx + 0x21, 0xc2, //0x000003f5 andl %eax, %edx + 0x8d, 0x1c, 0x12, //0x000003f7 leal (%rdx,%rdx), %ebx + 0x44, 0x09, 0xd3, //0x000003fa orl %r10d, %ebx + 0x89, 0xdf, //0x000003fd movl %ebx, %edi + 0xf7, 0xd7, //0x000003ff notl %edi + 0x21, 0xc7, //0x00000401 andl %eax, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000403 andl $-1431655766, %edi + 0x45, 0x31, 0xd2, //0x00000409 xorl %r10d, %r10d + 0x01, 0xd7, //0x0000040c addl %edx, %edi + 0x41, 0x0f, 0x92, 0xc2, //0x0000040e setb %r10b + 0x01, 0xff, //0x00000412 addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00000414 xorl $1431655765, %edi + 0x21, 0xdf, //0x0000041a andl %ebx, %edi + 0xf7, 0xd7, //0x0000041c notl %edi + 0x21, 0xf9, //0x0000041e andl %edi, %ecx + 0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00000420 jmp LBB0_54 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000425 .p2align 4, 0x90 + //0x00000430 LBB0_53 + 0x45, 0x31, 0xd2, //0x00000430 xorl %r10d, %r10d + //0x00000433 LBB0_54 + 0x48, 0x85, 0xc9, //0x00000433 testq %rcx, %rcx + 0x0f, 0x85, 0x00, 0x09, 0x00, 0x00, //0x00000436 jne LBB0_112 + 0x49, 0x83, 0xc3, 0x20, //0x0000043c addq $32, %r11 + 0x4b, 0x8d, 0x04, 0x28, //0x00000440 leaq (%r8,%r13), %rax + 0x48, 0x83, 0xc0, 0xe0, //0x00000444 addq $-32, %rax + 0x49, 0x83, 0xc5, 0xe0, //0x00000448 addq $-32, %r13 + 0x48, 0x83, 0xf8, 0x3f, //0x0000044c cmpq $63, %rax + 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00000450 jg LBB0_51 + 0x4d, 0x85, 0xd2, //0x00000456 testq %r10, %r10 + 0x0f, 0x85, 0x7e, 0x09, 0x00, 0x00, //0x00000459 jne LBB0_124 + 0x4b, 0x8d, 0x1c, 0x0b, //0x0000045f leaq (%r11,%r9), %rbx + 0x48, 0x83, 0xc3, 0x01, //0x00000463 addq $1, %rbx + 0x49, 0xf7, 0xd3, //0x00000467 notq %r11 + 0x4d, 0x01, 0xc3, //0x0000046a addq %r8, %r11 + //0x0000046d LBB0_58 + 0x4d, 0x85, 0xdb, //0x0000046d testq %r11, %r11 + 0x0f, 0x8e, 0xd9, 0x08, 0x00, 0x00, //0x00000470 jle LBB0_115 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000476 movq $-1, %r15 + 0xe9, 0xf7, 0x08, 0x00, 0x00, //0x0000047d jmp LBB0_117 + //0x00000482 LBB0_60 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000482 movabsq $6148914691236517205, %r13 + 0x48, 0x8b, 0x47, 0x08, //0x0000048c movq $8(%rdi), %rax + 0x48, 0x29, 0xd8, //0x00000490 subq %rbx, %rax + 0x49, 0x01, 0xde, //0x00000493 addq %rbx, %r14 + 0x45, 0x31, 0xd2, //0x00000496 xorl %r10d, %r10d + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x9e, 0xfb, 0xff, 0xff, //0x00000499 movdqu $-1122(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x86, 0xfb, 0xff, 0xff, //0x000004a2 movdqu $-1146(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x000004aa pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0xb9, 0xfb, 0xff, 0xff, //0x000004af movdqu $-1095(%rip), %xmm3 /* LCPI0_7+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x61, 0xfb, 0xff, 0xff, //0x000004b7 movdqu $-1183(%rip), %xmm4 /* LCPI0_2+0(%rip) */ + 0x45, 0x0f, 0x57, 0xc0, //0x000004bf xorps %xmm8, %xmm8 + 0x45, 0x31, 0xc9, //0x000004c3 xorl %r9d, %r9d + 0x31, 0xc9, //0x000004c6 xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0xc0, //0x000004c8 movq %rcx, $-64(%rbp) + 0x45, 0x31, 0xdb, //0x000004cc xorl %r11d, %r11d + 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x000004cf jmp LBB0_62 + //0x000004d4 LBB0_61 + 0x49, 0xc1, 0xf9, 0x3f, //0x000004d4 sarq $63, %r9 + 0x4c, 0x89, 0xc0, //0x000004d8 movq %r8, %rax + 0x48, 0xd1, 0xe8, //0x000004db shrq %rax + 0x4c, 0x21, 0xe8, //0x000004de andq %r13, %rax + 0x49, 0x29, 0xc0, //0x000004e1 subq %rax, %r8 + 0x4c, 0x89, 0xc0, //0x000004e4 movq %r8, %rax + 0x48, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000004e7 movabsq $3689348814741910323, %rcx + 0x48, 0x21, 0xc8, //0x000004f1 andq %rcx, %rax + 0x49, 0xc1, 0xe8, 0x02, //0x000004f4 shrq $2, %r8 + 0x49, 0x21, 0xc8, //0x000004f8 andq %rcx, %r8 + 0x49, 0x01, 0xc0, //0x000004fb addq %rax, %r8 + 0x4c, 0x89, 0xc0, //0x000004fe movq %r8, %rax + 0x48, 0xc1, 0xe8, 0x04, //0x00000501 shrq $4, %rax + 0x4c, 0x01, 0xc0, //0x00000505 addq %r8, %rax + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000508 movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xc8, //0x00000512 andq %rcx, %rax + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000515 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xc1, //0x0000051f imulq %rcx, %rax + 0x48, 0xc1, 0xe8, 0x38, //0x00000523 shrq $56, %rax + 0x48, 0x01, 0x45, 0xc0, //0x00000527 addq %rax, $-64(%rbp) + 0x49, 0x83, 0xc6, 0x40, //0x0000052b addq $64, %r14 + 0x48, 0x8b, 0x45, 0xd0, //0x0000052f movq $-48(%rbp), %rax + 0x48, 0x83, 0xc0, 0xc0, //0x00000533 addq $-64, %rax + 0x4d, 0x89, 0xca, //0x00000537 movq %r9, %r10 + 0x4c, 0x8b, 0x4d, 0xc8, //0x0000053a movq $-56(%rbp), %r9 + //0x0000053e LBB0_62 + 0x48, 0x83, 0xf8, 0x40, //0x0000053e cmpq $64, %rax + 0x48, 0x89, 0x45, 0xd0, //0x00000542 movq %rax, $-48(%rbp) + 0x0f, 0x8c, 0x2c, 0x02, 0x00, 0x00, //0x00000546 jl LBB0_69 + //0x0000054c LBB0_63 + 0xf3, 0x41, 0x0f, 0x6f, 0x06, //0x0000054c movdqu (%r14), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x6e, 0x10, //0x00000551 movdqu $16(%r14), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7e, 0x20, //0x00000557 movdqu $32(%r14), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x76, 0x30, //0x0000055d movdqu $48(%r14), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x00000563 movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000567 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x0000056c pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd5, //0x00000570 movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000574 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000579 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x0000057d movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00000581 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000586 pmovmskb %xmm2, %eax + 0x66, 0x0f, 0x6f, 0xd6, //0x0000058a movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x0000058e pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x00000593 pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00000597 shlq $48, %rbx + 0x48, 0xc1, 0xe0, 0x20, //0x0000059b shlq $32, %rax + 0x48, 0x09, 0xd8, //0x0000059f orq %rbx, %rax + 0x48, 0xc1, 0xe2, 0x10, //0x000005a2 shlq $16, %rdx + 0x48, 0x09, 0xc2, //0x000005a6 orq %rax, %rdx + 0x48, 0x09, 0xd1, //0x000005a9 orq %rdx, %rcx + 0x48, 0x89, 0xc8, //0x000005ac movq %rcx, %rax + 0x4c, 0x09, 0xc8, //0x000005af orq %r9, %rax + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000005b2 jne LBB0_65 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000005b8 movq $-1, %rcx + 0x31, 0xc0, //0x000005bf xorl %eax, %eax + 0x48, 0x89, 0x45, 0xc8, //0x000005c1 movq %rax, $-56(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x000005c5 jmp LBB0_66 + //0x000005ca LBB0_65 + 0x4c, 0x89, 0xc8, //0x000005ca movq %r9, %rax + 0x48, 0xf7, 0xd0, //0x000005cd notq %rax + 0x48, 0x21, 0xc8, //0x000005d0 andq %rcx, %rax + 0x4c, 0x8d, 0x04, 0x00, //0x000005d3 leaq (%rax,%rax), %r8 + 0x4d, 0x09, 0xc8, //0x000005d7 orq %r9, %r8 + 0x4c, 0x89, 0xc2, //0x000005da movq %r8, %rdx + 0x48, 0xf7, 0xd2, //0x000005dd notq %rdx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000005e0 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xd9, //0x000005ea andq %rbx, %rcx + 0x48, 0x21, 0xd1, //0x000005ed andq %rdx, %rcx + 0x31, 0xd2, //0x000005f0 xorl %edx, %edx + 0x48, 0x01, 0xc1, //0x000005f2 addq %rax, %rcx + 0x0f, 0x92, 0xc2, //0x000005f5 setb %dl + 0x48, 0x89, 0x55, 0xc8, //0x000005f8 movq %rdx, $-56(%rbp) + 0x48, 0x01, 0xc9, //0x000005fc addq %rcx, %rcx + 0x4c, 0x31, 0xe9, //0x000005ff xorq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x00000602 andq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000605 notq %rcx + //0x00000608 LBB0_66 + 0x66, 0x0f, 0x6f, 0xd6, //0x00000608 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000060c pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000610 pmovmskb %xmm2, %eax + 0x48, 0xc1, 0xe0, 0x30, //0x00000614 shlq $48, %rax + 0x66, 0x0f, 0x6f, 0xd7, //0x00000618 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000061c pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000620 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00000624 shlq $32, %rdx + 0x48, 0x09, 0xc2, //0x00000628 orq %rax, %rdx + 0x66, 0x0f, 0x6f, 0xd5, //0x0000062b movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000062f pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000633 pmovmskb %xmm2, %eax + 0x48, 0xc1, 0xe0, 0x10, //0x00000637 shlq $16, %rax + 0x48, 0x09, 0xd0, //0x0000063b orq %rdx, %rax + 0x66, 0x0f, 0x6f, 0xd0, //0x0000063e movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00000642 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000646 pmovmskb %xmm2, %edx + 0x48, 0x09, 0xc2, //0x0000064a orq %rax, %rdx + 0x48, 0x21, 0xca, //0x0000064d andq %rcx, %rdx + 0x66, 0x48, 0x0f, 0x6e, 0xd2, //0x00000650 movq %rdx, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00000655 pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd1, //0x0000065c movq %xmm2, %r9 + 0x4d, 0x31, 0xd1, //0x00000661 xorq %r10, %r9 + 0x66, 0x0f, 0x6f, 0xd0, //0x00000664 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000668 pcmpeqb %xmm3, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x0000066c pmovmskb %xmm2, %r8d + 0x66, 0x0f, 0x6f, 0xd5, //0x00000671 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000675 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000679 pmovmskb %xmm2, %eax + 0x66, 0x0f, 0x6f, 0xd7, //0x0000067d movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000681 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x00000685 pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd6, //0x00000689 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x0000068d pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000691 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00000695 shlq $48, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x00000699 shlq $32, %rcx + 0x48, 0x09, 0xd1, //0x0000069d orq %rdx, %rcx + 0x48, 0xc1, 0xe0, 0x10, //0x000006a0 shlq $16, %rax + 0x48, 0x09, 0xc8, //0x000006a4 orq %rcx, %rax + 0x49, 0x09, 0xc0, //0x000006a7 orq %rax, %r8 + 0x4c, 0x89, 0xc8, //0x000006aa movq %r9, %rax + 0x48, 0xf7, 0xd0, //0x000006ad notq %rax + 0x49, 0x21, 0xc0, //0x000006b0 andq %rax, %r8 + 0x66, 0x0f, 0x74, 0xc4, //0x000006b3 pcmpeqb %xmm4, %xmm0 + 0x66, 0x0f, 0xd7, 0xc8, //0x000006b7 pmovmskb %xmm0, %ecx + 0x66, 0x0f, 0x74, 0xec, //0x000006bb pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x000006bf pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x000006c3 pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x000006c7 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x74, 0xf4, //0x000006cb pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xee, //0x000006cf pmovmskb %xmm6, %r13d + 0x49, 0xc1, 0xe5, 0x30, //0x000006d4 shlq $48, %r13 + 0x48, 0xc1, 0xe3, 0x20, //0x000006d8 shlq $32, %rbx + 0x4c, 0x09, 0xeb, //0x000006dc orq %r13, %rbx + 0x48, 0xc1, 0xe2, 0x10, //0x000006df shlq $16, %rdx + 0x48, 0x09, 0xda, //0x000006e3 orq %rbx, %rdx + 0x48, 0x09, 0xd1, //0x000006e6 orq %rdx, %rcx + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000006e9 movabsq $6148914691236517205, %r13 + 0x48, 0x21, 0xc1, //0x000006f3 andq %rax, %rcx + 0x0f, 0x84, 0xd8, 0xfd, 0xff, 0xff, //0x000006f6 je LBB0_61 + 0x90, 0x90, 0x90, 0x90, //0x000006fc .p2align 4, 0x90 + //0x00000700 LBB0_67 + 0x48, 0x8d, 0x51, 0xff, //0x00000700 leaq $-1(%rcx), %rdx + 0x48, 0x89, 0xd0, //0x00000704 movq %rdx, %rax + 0x4c, 0x21, 0xc0, //0x00000707 andq %r8, %rax + 0x48, 0x89, 0xc3, //0x0000070a movq %rax, %rbx + 0x48, 0xd1, 0xeb, //0x0000070d shrq %rbx + 0x4c, 0x21, 0xeb, //0x00000710 andq %r13, %rbx + 0x48, 0x29, 0xd8, //0x00000713 subq %rbx, %rax + 0x48, 0x89, 0xc3, //0x00000716 movq %rax, %rbx + 0x49, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000719 movabsq $3689348814741910323, %r10 + 0x4c, 0x21, 0xd3, //0x00000723 andq %r10, %rbx + 0x48, 0xc1, 0xe8, 0x02, //0x00000726 shrq $2, %rax + 0x4c, 0x21, 0xd0, //0x0000072a andq %r10, %rax + 0x48, 0x01, 0xd8, //0x0000072d addq %rbx, %rax + 0x48, 0x89, 0xc3, //0x00000730 movq %rax, %rbx + 0x48, 0xc1, 0xeb, 0x04, //0x00000733 shrq $4, %rbx + 0x48, 0x01, 0xc3, //0x00000737 addq %rax, %rbx + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000073a movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc3, //0x00000744 andq %rax, %rbx + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000747 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xd8, //0x00000751 imulq %rax, %rbx + 0x48, 0xc1, 0xeb, 0x38, //0x00000755 shrq $56, %rbx + 0x48, 0x03, 0x5d, 0xc0, //0x00000759 addq $-64(%rbp), %rbx + 0x4c, 0x39, 0xdb, //0x0000075d cmpq %r11, %rbx + 0x0f, 0x86, 0xa2, 0x05, 0x00, 0x00, //0x00000760 jbe LBB0_111 + 0x49, 0x83, 0xc3, 0x01, //0x00000766 addq $1, %r11 + 0x48, 0x21, 0xd1, //0x0000076a andq %rdx, %rcx + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x0000076d jne LBB0_67 + 0xe9, 0x5c, 0xfd, 0xff, 0xff, //0x00000773 jmp LBB0_61 + //0x00000778 LBB0_69 + 0x48, 0x85, 0xc0, //0x00000778 testq %rax, %rax + 0x0f, 0x8e, 0x50, 0x06, 0x00, 0x00, //0x0000077b jle LBB0_123 + 0x4c, 0x89, 0xca, //0x00000781 movq %r9, %rdx + 0x44, 0x0f, 0x11, 0x45, 0xb0, //0x00000784 movups %xmm8, $-80(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0xa0, //0x00000789 movups %xmm8, $-96(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0x90, //0x0000078e movups %xmm8, $-112(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0x80, //0x00000793 movups %xmm8, $-128(%rbp) + 0x44, 0x89, 0xf0, //0x00000798 movl %r14d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x0000079b andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x000007a0 cmpl $4033, %eax + 0x0f, 0x82, 0x31, 0x00, 0x00, 0x00, //0x000007a5 jb LBB0_73 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x000007ab cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x000007b0 jb LBB0_74 + 0x41, 0x0f, 0x10, 0x06, //0x000007b6 movups (%r14), %xmm0 + 0x0f, 0x11, 0x45, 0x80, //0x000007ba movups %xmm0, $-128(%rbp) + 0x41, 0x0f, 0x10, 0x46, 0x10, //0x000007be movups $16(%r14), %xmm0 + 0x0f, 0x11, 0x45, 0x90, //0x000007c3 movups %xmm0, $-112(%rbp) + 0x49, 0x83, 0xc6, 0x20, //0x000007c7 addq $32, %r14 + 0x48, 0x8b, 0x45, 0xd0, //0x000007cb movq $-48(%rbp), %rax + 0x4c, 0x8d, 0x48, 0xe0, //0x000007cf leaq $-32(%rax), %r9 + 0x4c, 0x8d, 0x45, 0xa0, //0x000007d3 leaq $-96(%rbp), %r8 + 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x000007d7 jmp LBB0_75 + //0x000007dc LBB0_73 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000007dc movabsq $6148914691236517205, %r13 + 0x49, 0x89, 0xd1, //0x000007e6 movq %rdx, %r9 + 0xe9, 0x5e, 0xfd, 0xff, 0xff, //0x000007e9 jmp LBB0_63 + //0x000007ee LBB0_74 + 0x4c, 0x8d, 0x45, 0x80, //0x000007ee leaq $-128(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xd0, //0x000007f2 movq $-48(%rbp), %r9 + //0x000007f6 LBB0_75 + 0x49, 0x83, 0xf9, 0x10, //0x000007f6 cmpq $16, %r9 + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x000007fa jb LBB0_76 + 0x41, 0x0f, 0x10, 0x06, //0x00000800 movups (%r14), %xmm0 + 0x41, 0x0f, 0x11, 0x00, //0x00000804 movups %xmm0, (%r8) + 0x49, 0x83, 0xc6, 0x10, //0x00000808 addq $16, %r14 + 0x49, 0x83, 0xc0, 0x10, //0x0000080c addq $16, %r8 + 0x49, 0x83, 0xc1, 0xf0, //0x00000810 addq $-16, %r9 + 0x49, 0x83, 0xf9, 0x08, //0x00000814 cmpq $8, %r9 + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000818 jae LBB0_83 + //0x0000081e LBB0_77 + 0x49, 0x83, 0xf9, 0x04, //0x0000081e cmpq $4, %r9 + 0x0f, 0x8c, 0x47, 0x00, 0x00, 0x00, //0x00000822 jl LBB0_78 + //0x00000828 LBB0_84 + 0x41, 0x8b, 0x06, //0x00000828 movl (%r14), %eax + 0x41, 0x89, 0x00, //0x0000082b movl %eax, (%r8) + 0x49, 0x83, 0xc6, 0x04, //0x0000082e addq $4, %r14 + 0x49, 0x83, 0xc0, 0x04, //0x00000832 addq $4, %r8 + 0x49, 0x83, 0xc1, 0xfc, //0x00000836 addq $-4, %r9 + 0x49, 0x83, 0xf9, 0x02, //0x0000083a cmpq $2, %r9 + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000083e jae LBB0_79 + 0xe9, 0x44, 0x00, 0x00, 0x00, //0x00000844 jmp LBB0_80 + //0x00000849 LBB0_76 + 0x49, 0x83, 0xf9, 0x08, //0x00000849 cmpq $8, %r9 + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x0000084d jb LBB0_77 + //0x00000853 LBB0_83 + 0x49, 0x8b, 0x06, //0x00000853 movq (%r14), %rax + 0x49, 0x89, 0x00, //0x00000856 movq %rax, (%r8) + 0x49, 0x83, 0xc6, 0x08, //0x00000859 addq $8, %r14 + 0x49, 0x83, 0xc0, 0x08, //0x0000085d addq $8, %r8 + 0x49, 0x83, 0xc1, 0xf8, //0x00000861 addq $-8, %r9 + 0x49, 0x83, 0xf9, 0x04, //0x00000865 cmpq $4, %r9 + 0x0f, 0x8d, 0xb9, 0xff, 0xff, 0xff, //0x00000869 jge LBB0_84 + //0x0000086f LBB0_78 + 0x49, 0x83, 0xf9, 0x02, //0x0000086f cmpq $2, %r9 + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00000873 jb LBB0_80 + //0x00000879 LBB0_79 + 0x41, 0x0f, 0xb7, 0x06, //0x00000879 movzwl (%r14), %eax + 0x66, 0x41, 0x89, 0x00, //0x0000087d movw %ax, (%r8) + 0x49, 0x83, 0xc6, 0x02, //0x00000881 addq $2, %r14 + 0x49, 0x83, 0xc0, 0x02, //0x00000885 addq $2, %r8 + 0x49, 0x83, 0xc1, 0xfe, //0x00000889 addq $-2, %r9 + //0x0000088d LBB0_80 + 0x4c, 0x89, 0xf1, //0x0000088d movq %r14, %rcx + 0x4c, 0x8d, 0x75, 0x80, //0x00000890 leaq $-128(%rbp), %r14 + 0x4d, 0x85, 0xc9, //0x00000894 testq %r9, %r9 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000897 movabsq $6148914691236517205, %r13 + 0x49, 0x89, 0xd1, //0x000008a1 movq %rdx, %r9 + 0x0f, 0x84, 0xa2, 0xfc, 0xff, 0xff, //0x000008a4 je LBB0_63 + 0x8a, 0x01, //0x000008aa movb (%rcx), %al + 0x41, 0x88, 0x00, //0x000008ac movb %al, (%r8) + 0x4c, 0x8d, 0x75, 0x80, //0x000008af leaq $-128(%rbp), %r14 + 0xe9, 0x94, 0xfc, 0xff, 0xff, //0x000008b3 jmp LBB0_63 + //0x000008b8 LBB0_85 + 0x49, 0x8d, 0x44, 0x24, 0x05, //0x000008b8 leaq $5(%r12), %rax + 0x48, 0x3b, 0x47, 0x08, //0x000008bd cmpq $8(%rdi), %rax + 0x0f, 0x86, 0x82, 0x04, 0x00, 0x00, //0x000008c1 jbe LBB0_113 + 0xe9, 0x83, 0x04, 0x00, 0x00, //0x000008c7 jmp LBB0_115 + //0x000008cc LBB0_86 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000008cc movabsq $6148914691236517205, %r13 + 0x48, 0x8b, 0x47, 0x08, //0x000008d6 movq $8(%rdi), %rax + 0x48, 0x29, 0xd8, //0x000008da subq %rbx, %rax + 0x49, 0x01, 0xde, //0x000008dd addq %rbx, %r14 + 0x45, 0x31, 0xd2, //0x000008e0 xorl %r10d, %r10d + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x54, 0xf7, 0xff, 0xff, //0x000008e3 movdqu $-2220(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x3c, 0xf7, 0xff, 0xff, //0x000008ec movdqu $-2244(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x000008f4 pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0x4f, 0xf7, 0xff, 0xff, //0x000008f9 movdqu $-2225(%rip), %xmm3 /* LCPI0_5+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x57, 0xf7, 0xff, 0xff, //0x00000901 movdqu $-2217(%rip), %xmm4 /* LCPI0_6+0(%rip) */ + 0x45, 0x0f, 0x57, 0xc0, //0x00000909 xorps %xmm8, %xmm8 + 0x45, 0x31, 0xc9, //0x0000090d xorl %r9d, %r9d + 0x31, 0xc9, //0x00000910 xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0xc0, //0x00000912 movq %rcx, $-64(%rbp) + 0x45, 0x31, 0xdb, //0x00000916 xorl %r11d, %r11d + 0xe9, 0x6a, 0x00, 0x00, 0x00, //0x00000919 jmp LBB0_88 + //0x0000091e LBB0_87 + 0x49, 0xc1, 0xf9, 0x3f, //0x0000091e sarq $63, %r9 + 0x4c, 0x89, 0xc0, //0x00000922 movq %r8, %rax + 0x48, 0xd1, 0xe8, //0x00000925 shrq %rax + 0x4c, 0x21, 0xe8, //0x00000928 andq %r13, %rax + 0x49, 0x29, 0xc0, //0x0000092b subq %rax, %r8 + 0x4c, 0x89, 0xc0, //0x0000092e movq %r8, %rax + 0x48, 0xb9, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000931 movabsq $3689348814741910323, %rcx + 0x48, 0x21, 0xc8, //0x0000093b andq %rcx, %rax + 0x49, 0xc1, 0xe8, 0x02, //0x0000093e shrq $2, %r8 + 0x49, 0x21, 0xc8, //0x00000942 andq %rcx, %r8 + 0x49, 0x01, 0xc0, //0x00000945 addq %rax, %r8 + 0x4c, 0x89, 0xc0, //0x00000948 movq %r8, %rax + 0x48, 0xc1, 0xe8, 0x04, //0x0000094b shrq $4, %rax + 0x4c, 0x01, 0xc0, //0x0000094f addq %r8, %rax + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000952 movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xc8, //0x0000095c andq %rcx, %rax + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0000095f movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xc1, //0x00000969 imulq %rcx, %rax + 0x48, 0xc1, 0xe8, 0x38, //0x0000096d shrq $56, %rax + 0x48, 0x01, 0x45, 0xc0, //0x00000971 addq %rax, $-64(%rbp) + 0x49, 0x83, 0xc6, 0x40, //0x00000975 addq $64, %r14 + 0x48, 0x8b, 0x45, 0xd0, //0x00000979 movq $-48(%rbp), %rax + 0x48, 0x83, 0xc0, 0xc0, //0x0000097d addq $-64, %rax + 0x4d, 0x89, 0xca, //0x00000981 movq %r9, %r10 + 0x4c, 0x8b, 0x4d, 0xc8, //0x00000984 movq $-56(%rbp), %r9 + //0x00000988 LBB0_88 + 0x48, 0x83, 0xf8, 0x40, //0x00000988 cmpq $64, %rax + 0x48, 0x89, 0x45, 0xd0, //0x0000098c movq %rax, $-48(%rbp) + 0x0f, 0x8c, 0x32, 0x02, 0x00, 0x00, //0x00000990 jl LBB0_95 + //0x00000996 LBB0_89 + 0xf3, 0x41, 0x0f, 0x6f, 0x06, //0x00000996 movdqu (%r14), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x6e, 0x10, //0x0000099b movdqu $16(%r14), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7e, 0x20, //0x000009a1 movdqu $32(%r14), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x76, 0x30, //0x000009a7 movdqu $48(%r14), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x000009ad movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000009b1 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x000009b6 pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd5, //0x000009ba movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000009be pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000009c3 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x000009c7 movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000009cb pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x000009d0 pmovmskb %xmm2, %eax + 0x66, 0x0f, 0x6f, 0xd6, //0x000009d4 movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000009d8 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x000009dd pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x000009e1 shlq $48, %rbx + 0x48, 0xc1, 0xe0, 0x20, //0x000009e5 shlq $32, %rax + 0x48, 0x09, 0xd8, //0x000009e9 orq %rbx, %rax + 0x48, 0xc1, 0xe2, 0x10, //0x000009ec shlq $16, %rdx + 0x48, 0x09, 0xc2, //0x000009f0 orq %rax, %rdx + 0x48, 0x09, 0xd1, //0x000009f3 orq %rdx, %rcx + 0x48, 0x89, 0xc8, //0x000009f6 movq %rcx, %rax + 0x4c, 0x09, 0xc8, //0x000009f9 orq %r9, %rax + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000009fc jne LBB0_91 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000a02 movq $-1, %rcx + 0x31, 0xc0, //0x00000a09 xorl %eax, %eax + 0x48, 0x89, 0x45, 0xc8, //0x00000a0b movq %rax, $-56(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00000a0f jmp LBB0_92 + //0x00000a14 LBB0_91 + 0x4c, 0x89, 0xc8, //0x00000a14 movq %r9, %rax + 0x48, 0xf7, 0xd0, //0x00000a17 notq %rax + 0x48, 0x21, 0xc8, //0x00000a1a andq %rcx, %rax + 0x4c, 0x8d, 0x04, 0x00, //0x00000a1d leaq (%rax,%rax), %r8 + 0x4d, 0x09, 0xc8, //0x00000a21 orq %r9, %r8 + 0x4c, 0x89, 0xc2, //0x00000a24 movq %r8, %rdx + 0x48, 0xf7, 0xd2, //0x00000a27 notq %rdx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a2a movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xd9, //0x00000a34 andq %rbx, %rcx + 0x48, 0x21, 0xd1, //0x00000a37 andq %rdx, %rcx + 0x31, 0xd2, //0x00000a3a xorl %edx, %edx + 0x48, 0x01, 0xc1, //0x00000a3c addq %rax, %rcx + 0x0f, 0x92, 0xc2, //0x00000a3f setb %dl + 0x48, 0x89, 0x55, 0xc8, //0x00000a42 movq %rdx, $-56(%rbp) + 0x48, 0x01, 0xc9, //0x00000a46 addq %rcx, %rcx + 0x4c, 0x31, 0xe9, //0x00000a49 xorq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x00000a4c andq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000a4f notq %rcx + //0x00000a52 LBB0_92 + 0x66, 0x0f, 0x6f, 0xd6, //0x00000a52 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00000a56 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000a5a pmovmskb %xmm2, %eax + 0x48, 0xc1, 0xe0, 0x30, //0x00000a5e shlq $48, %rax + 0x66, 0x0f, 0x6f, 0xd7, //0x00000a62 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00000a66 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000a6a pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x20, //0x00000a6e shlq $32, %rdx + 0x48, 0x09, 0xc2, //0x00000a72 orq %rax, %rdx + 0x66, 0x0f, 0x6f, 0xd5, //0x00000a75 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00000a79 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000a7d pmovmskb %xmm2, %eax + 0x48, 0xc1, 0xe0, 0x10, //0x00000a81 shlq $16, %rax + 0x48, 0x09, 0xd0, //0x00000a85 orq %rdx, %rax + 0x66, 0x0f, 0x6f, 0xd0, //0x00000a88 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00000a8c pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000a90 pmovmskb %xmm2, %edx + 0x48, 0x09, 0xc2, //0x00000a94 orq %rax, %rdx + 0x48, 0x21, 0xca, //0x00000a97 andq %rcx, %rdx + 0x66, 0x48, 0x0f, 0x6e, 0xd2, //0x00000a9a movq %rdx, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00000a9f pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd1, //0x00000aa6 movq %xmm2, %r9 + 0x4d, 0x31, 0xd1, //0x00000aab xorq %r10, %r9 + 0x66, 0x0f, 0x6f, 0xd0, //0x00000aae movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000ab2 pcmpeqb %xmm3, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00000ab6 pmovmskb %xmm2, %r8d + 0x66, 0x0f, 0x6f, 0xd5, //0x00000abb movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000abf pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xc2, //0x00000ac3 pmovmskb %xmm2, %eax + 0x66, 0x0f, 0x6f, 0xd7, //0x00000ac7 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000acb pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x00000acf pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd6, //0x00000ad3 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00000ad7 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00000adb pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00000adf shlq $48, %rdx + 0x48, 0xc1, 0xe1, 0x20, //0x00000ae3 shlq $32, %rcx + 0x48, 0x09, 0xd1, //0x00000ae7 orq %rdx, %rcx + 0x48, 0xc1, 0xe0, 0x10, //0x00000aea shlq $16, %rax + 0x48, 0x09, 0xc8, //0x00000aee orq %rcx, %rax + 0x49, 0x09, 0xc0, //0x00000af1 orq %rax, %r8 + 0x4c, 0x89, 0xc8, //0x00000af4 movq %r9, %rax + 0x48, 0xf7, 0xd0, //0x00000af7 notq %rax + 0x49, 0x21, 0xc0, //0x00000afa andq %rax, %r8 + 0x66, 0x0f, 0x74, 0xc4, //0x00000afd pcmpeqb %xmm4, %xmm0 + 0x66, 0x0f, 0xd7, 0xc8, //0x00000b01 pmovmskb %xmm0, %ecx + 0x66, 0x0f, 0x74, 0xec, //0x00000b05 pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00000b09 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x00000b0d pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000b11 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x74, 0xf4, //0x00000b15 pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xee, //0x00000b19 pmovmskb %xmm6, %r13d + 0x49, 0xc1, 0xe5, 0x30, //0x00000b1e shlq $48, %r13 + 0x48, 0xc1, 0xe3, 0x20, //0x00000b22 shlq $32, %rbx + 0x4c, 0x09, 0xeb, //0x00000b26 orq %r13, %rbx + 0x48, 0xc1, 0xe2, 0x10, //0x00000b29 shlq $16, %rdx + 0x48, 0x09, 0xda, //0x00000b2d orq %rbx, %rdx + 0x48, 0x09, 0xd1, //0x00000b30 orq %rdx, %rcx + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000b33 movabsq $6148914691236517205, %r13 + 0x48, 0x21, 0xc1, //0x00000b3d andq %rax, %rcx + 0x0f, 0x84, 0xd8, 0xfd, 0xff, 0xff, //0x00000b40 je LBB0_87 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b46 .p2align 4, 0x90 + //0x00000b50 LBB0_93 + 0x48, 0x8d, 0x51, 0xff, //0x00000b50 leaq $-1(%rcx), %rdx + 0x48, 0x89, 0xd0, //0x00000b54 movq %rdx, %rax + 0x4c, 0x21, 0xc0, //0x00000b57 andq %r8, %rax + 0x48, 0x89, 0xc3, //0x00000b5a movq %rax, %rbx + 0x48, 0xd1, 0xeb, //0x00000b5d shrq %rbx + 0x4c, 0x21, 0xeb, //0x00000b60 andq %r13, %rbx + 0x48, 0x29, 0xd8, //0x00000b63 subq %rbx, %rax + 0x48, 0x89, 0xc3, //0x00000b66 movq %rax, %rbx + 0x49, 0xba, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00000b69 movabsq $3689348814741910323, %r10 + 0x4c, 0x21, 0xd3, //0x00000b73 andq %r10, %rbx + 0x48, 0xc1, 0xe8, 0x02, //0x00000b76 shrq $2, %rax + 0x4c, 0x21, 0xd0, //0x00000b7a andq %r10, %rax + 0x48, 0x01, 0xd8, //0x00000b7d addq %rbx, %rax + 0x48, 0x89, 0xc3, //0x00000b80 movq %rax, %rbx + 0x48, 0xc1, 0xeb, 0x04, //0x00000b83 shrq $4, %rbx + 0x48, 0x01, 0xc3, //0x00000b87 addq %rax, %rbx + 0x48, 0xb8, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00000b8a movabsq $1085102592571150095, %rax + 0x48, 0x21, 0xc3, //0x00000b94 andq %rax, %rbx + 0x48, 0xb8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00000b97 movabsq $72340172838076673, %rax + 0x48, 0x0f, 0xaf, 0xd8, //0x00000ba1 imulq %rax, %rbx + 0x48, 0xc1, 0xeb, 0x38, //0x00000ba5 shrq $56, %rbx + 0x48, 0x03, 0x5d, 0xc0, //0x00000ba9 addq $-64(%rbp), %rbx + 0x4c, 0x39, 0xdb, //0x00000bad cmpq %r11, %rbx + 0x0f, 0x86, 0x52, 0x01, 0x00, 0x00, //0x00000bb0 jbe LBB0_111 + 0x49, 0x83, 0xc3, 0x01, //0x00000bb6 addq $1, %r11 + 0x48, 0x21, 0xd1, //0x00000bba andq %rdx, %rcx + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x00000bbd jne LBB0_93 + 0xe9, 0x56, 0xfd, 0xff, 0xff, //0x00000bc3 jmp LBB0_87 + //0x00000bc8 LBB0_95 + 0x48, 0x85, 0xc0, //0x00000bc8 testq %rax, %rax + 0x0f, 0x8e, 0x00, 0x02, 0x00, 0x00, //0x00000bcb jle LBB0_123 + 0x4c, 0x89, 0xca, //0x00000bd1 movq %r9, %rdx + 0x44, 0x0f, 0x11, 0x45, 0xb0, //0x00000bd4 movups %xmm8, $-80(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0xa0, //0x00000bd9 movups %xmm8, $-96(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0x90, //0x00000bde movups %xmm8, $-112(%rbp) + 0x44, 0x0f, 0x11, 0x45, 0x80, //0x00000be3 movups %xmm8, $-128(%rbp) + 0x44, 0x89, 0xf0, //0x00000be8 movl %r14d, %eax + 0x25, 0xff, 0x0f, 0x00, 0x00, //0x00000beb andl $4095, %eax + 0x3d, 0xc1, 0x0f, 0x00, 0x00, //0x00000bf0 cmpl $4033, %eax + 0x0f, 0x82, 0x31, 0x00, 0x00, 0x00, //0x00000bf5 jb LBB0_99 + 0x48, 0x83, 0x7d, 0xd0, 0x20, //0x00000bfb cmpq $32, $-48(%rbp) + 0x0f, 0x82, 0x38, 0x00, 0x00, 0x00, //0x00000c00 jb LBB0_100 + 0x41, 0x0f, 0x10, 0x06, //0x00000c06 movups (%r14), %xmm0 + 0x0f, 0x11, 0x45, 0x80, //0x00000c0a movups %xmm0, $-128(%rbp) + 0x41, 0x0f, 0x10, 0x46, 0x10, //0x00000c0e movups $16(%r14), %xmm0 + 0x0f, 0x11, 0x45, 0x90, //0x00000c13 movups %xmm0, $-112(%rbp) + 0x49, 0x83, 0xc6, 0x20, //0x00000c17 addq $32, %r14 + 0x48, 0x8b, 0x45, 0xd0, //0x00000c1b movq $-48(%rbp), %rax + 0x4c, 0x8d, 0x48, 0xe0, //0x00000c1f leaq $-32(%rax), %r9 + 0x4c, 0x8d, 0x45, 0xa0, //0x00000c23 leaq $-96(%rbp), %r8 + 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x00000c27 jmp LBB0_101 + //0x00000c2c LBB0_99 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000c2c movabsq $6148914691236517205, %r13 + 0x49, 0x89, 0xd1, //0x00000c36 movq %rdx, %r9 + 0xe9, 0x58, 0xfd, 0xff, 0xff, //0x00000c39 jmp LBB0_89 + //0x00000c3e LBB0_100 + 0x4c, 0x8d, 0x45, 0x80, //0x00000c3e leaq $-128(%rbp), %r8 + 0x4c, 0x8b, 0x4d, 0xd0, //0x00000c42 movq $-48(%rbp), %r9 + //0x00000c46 LBB0_101 + 0x49, 0x83, 0xf9, 0x10, //0x00000c46 cmpq $16, %r9 + 0x0f, 0x82, 0x49, 0x00, 0x00, 0x00, //0x00000c4a jb LBB0_102 + 0x41, 0x0f, 0x10, 0x06, //0x00000c50 movups (%r14), %xmm0 + 0x41, 0x0f, 0x11, 0x00, //0x00000c54 movups %xmm0, (%r8) + 0x49, 0x83, 0xc6, 0x10, //0x00000c58 addq $16, %r14 + 0x49, 0x83, 0xc0, 0x10, //0x00000c5c addq $16, %r8 + 0x49, 0x83, 0xc1, 0xf0, //0x00000c60 addq $-16, %r9 + 0x49, 0x83, 0xf9, 0x08, //0x00000c64 cmpq $8, %r9 + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000c68 jae LBB0_109 + //0x00000c6e LBB0_103 + 0x49, 0x83, 0xf9, 0x04, //0x00000c6e cmpq $4, %r9 + 0x0f, 0x8c, 0x47, 0x00, 0x00, 0x00, //0x00000c72 jl LBB0_104 + //0x00000c78 LBB0_110 + 0x41, 0x8b, 0x06, //0x00000c78 movl (%r14), %eax + 0x41, 0x89, 0x00, //0x00000c7b movl %eax, (%r8) + 0x49, 0x83, 0xc6, 0x04, //0x00000c7e addq $4, %r14 + 0x49, 0x83, 0xc0, 0x04, //0x00000c82 addq $4, %r8 + 0x49, 0x83, 0xc1, 0xfc, //0x00000c86 addq $-4, %r9 + 0x49, 0x83, 0xf9, 0x02, //0x00000c8a cmpq $2, %r9 + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00000c8e jae LBB0_105 + 0xe9, 0x44, 0x00, 0x00, 0x00, //0x00000c94 jmp LBB0_106 + //0x00000c99 LBB0_102 + 0x49, 0x83, 0xf9, 0x08, //0x00000c99 cmpq $8, %r9 + 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00000c9d jb LBB0_103 + //0x00000ca3 LBB0_109 + 0x49, 0x8b, 0x06, //0x00000ca3 movq (%r14), %rax + 0x49, 0x89, 0x00, //0x00000ca6 movq %rax, (%r8) + 0x49, 0x83, 0xc6, 0x08, //0x00000ca9 addq $8, %r14 + 0x49, 0x83, 0xc0, 0x08, //0x00000cad addq $8, %r8 + 0x49, 0x83, 0xc1, 0xf8, //0x00000cb1 addq $-8, %r9 + 0x49, 0x83, 0xf9, 0x04, //0x00000cb5 cmpq $4, %r9 + 0x0f, 0x8d, 0xb9, 0xff, 0xff, 0xff, //0x00000cb9 jge LBB0_110 + //0x00000cbf LBB0_104 + 0x49, 0x83, 0xf9, 0x02, //0x00000cbf cmpq $2, %r9 + 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00000cc3 jb LBB0_106 + //0x00000cc9 LBB0_105 + 0x41, 0x0f, 0xb7, 0x06, //0x00000cc9 movzwl (%r14), %eax + 0x66, 0x41, 0x89, 0x00, //0x00000ccd movw %ax, (%r8) + 0x49, 0x83, 0xc6, 0x02, //0x00000cd1 addq $2, %r14 + 0x49, 0x83, 0xc0, 0x02, //0x00000cd5 addq $2, %r8 + 0x49, 0x83, 0xc1, 0xfe, //0x00000cd9 addq $-2, %r9 + //0x00000cdd LBB0_106 + 0x4c, 0x89, 0xf1, //0x00000cdd movq %r14, %rcx + 0x4c, 0x8d, 0x75, 0x80, //0x00000ce0 leaq $-128(%rbp), %r14 + 0x4d, 0x85, 0xc9, //0x00000ce4 testq %r9, %r9 + 0x49, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000ce7 movabsq $6148914691236517205, %r13 + 0x49, 0x89, 0xd1, //0x00000cf1 movq %rdx, %r9 + 0x0f, 0x84, 0x9c, 0xfc, 0xff, 0xff, //0x00000cf4 je LBB0_89 + 0x8a, 0x01, //0x00000cfa movb (%rcx), %al + 0x41, 0x88, 0x00, //0x00000cfc movb %al, (%r8) + 0x4c, 0x8d, 0x75, 0x80, //0x00000cff leaq $-128(%rbp), %r14 + 0xe9, 0x8e, 0xfc, 0xff, 0xff, //0x00000d03 jmp LBB0_89 + //0x00000d08 LBB0_111 + 0x48, 0x8b, 0x47, 0x08, //0x00000d08 movq $8(%rdi), %rax + 0x48, 0x0f, 0xbc, 0xc9, //0x00000d0c bsfq %rcx, %rcx + 0x48, 0x2b, 0x4d, 0xd0, //0x00000d10 subq $-48(%rbp), %rcx + 0x48, 0x01, 0xc8, //0x00000d14 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00000d17 addq $1, %rax + 0x48, 0x89, 0x06, //0x00000d1b movq %rax, (%rsi) + 0x48, 0x8b, 0x4f, 0x08, //0x00000d1e movq $8(%rdi), %rcx + 0x48, 0x39, 0xc8, //0x00000d22 cmpq %rcx, %rax + 0x48, 0x0f, 0x47, 0xc1, //0x00000d25 cmovaq %rcx, %rax + 0x48, 0x89, 0x06, //0x00000d29 movq %rax, (%rsi) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000d2c movq $-1, %rax + 0x4c, 0x0f, 0x47, 0xe0, //0x00000d33 cmovaq %rax, %r12 + 0xe9, 0x10, 0x00, 0x00, 0x00, //0x00000d37 jmp LBB0_114 + //0x00000d3c LBB0_112 + 0x0f, 0xbc, 0xc1, //0x00000d3c bsfl %ecx, %eax + 0x4c, 0x01, 0xe0, //0x00000d3f addq %r12, %rax + 0x4c, 0x01, 0xd8, //0x00000d42 addq %r11, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00000d45 addq $2, %rax + //0x00000d49 LBB0_113 + 0x48, 0x89, 0x06, //0x00000d49 movq %rax, (%rsi) + //0x00000d4c LBB0_114 + 0x4d, 0x89, 0xe7, //0x00000d4c movq %r12, %r15 + //0x00000d4f LBB0_115 + 0x4c, 0x89, 0xf8, //0x00000d4f movq %r15, %rax + 0x48, 0x83, 0xc4, 0x58, //0x00000d52 addq $88, %rsp + 0x5b, //0x00000d56 popq %rbx + 0x41, 0x5c, //0x00000d57 popq %r12 + 0x41, 0x5d, //0x00000d59 popq %r13 + 0x41, 0x5e, //0x00000d5b popq %r14 + 0x41, 0x5f, //0x00000d5d popq %r15 + 0x5d, //0x00000d5f popq %rbp + 0xc3, //0x00000d60 retq + //0x00000d61 LBB0_116 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000d61 movq $-2, %rax + 0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000d68 movl $2, %ecx + 0x48, 0x01, 0xcb, //0x00000d6d addq %rcx, %rbx + 0x49, 0x01, 0xc3, //0x00000d70 addq %rax, %r11 + 0x0f, 0x8e, 0xd6, 0xff, 0xff, 0xff, //0x00000d73 jle LBB0_115 + //0x00000d79 LBB0_117 + 0x0f, 0xb6, 0x03, //0x00000d79 movzbl (%rbx), %eax + 0x3c, 0x5c, //0x00000d7c cmpb $92, %al + 0x0f, 0x84, 0xdd, 0xff, 0xff, 0xff, //0x00000d7e je LBB0_116 + 0x3c, 0x22, //0x00000d84 cmpb $34, %al + 0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x00000d86 je LBB0_120 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000d8c movq $-1, %rax + 0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000d93 movl $1, %ecx + 0x48, 0x01, 0xcb, //0x00000d98 addq %rcx, %rbx + 0x49, 0x01, 0xc3, //0x00000d9b addq %rax, %r11 + 0x0f, 0x8f, 0xd5, 0xff, 0xff, 0xff, //0x00000d9e jg LBB0_117 + 0xe9, 0xa6, 0xff, 0xff, 0xff, //0x00000da4 jmp LBB0_115 + //0x00000da9 LBB0_120 + 0x4c, 0x29, 0xf3, //0x00000da9 subq %r14, %rbx + 0x48, 0x83, 0xc3, 0x01, //0x00000dac addq $1, %rbx + 0x48, 0x89, 0x1e, //0x00000db0 movq %rbx, (%rsi) + 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00000db3 jmp LBB0_114 + //0x00000db8 LBB0_121 + 0x4c, 0x01, 0xf3, //0x00000db8 addq %r14, %rbx + 0x48, 0x85, 0xc9, //0x00000dbb testq %rcx, %rcx + 0x0f, 0x85, 0xc1, 0xf4, 0xff, 0xff, //0x00000dbe jne LBB0_34 + 0xe9, 0x02, 0xf5, 0xff, 0xff, //0x00000dc4 jmp LBB0_41 + //0x00000dc9 LBB0_122 + 0x4c, 0x01, 0xf3, //0x00000dc9 addq %r14, %rbx + 0xe9, 0x9c, 0xf6, 0xff, 0xff, //0x00000dcc jmp LBB0_58 + //0x00000dd1 LBB0_123 + 0x48, 0x8b, 0x47, 0x08, //0x00000dd1 movq $8(%rdi), %rax + 0x48, 0x89, 0x06, //0x00000dd5 movq %rax, (%rsi) + 0xe9, 0x72, 0xff, 0xff, 0xff, //0x00000dd8 jmp LBB0_115 + //0x00000ddd LBB0_124 + 0x49, 0x8d, 0x40, 0xff, //0x00000ddd leaq $-1(%r8), %rax + 0x4c, 0x39, 0xd8, //0x00000de1 cmpq %r11, %rax + 0x0f, 0x84, 0x65, 0xff, 0xff, 0xff, //0x00000de4 je LBB0_115 + 0x4b, 0x8d, 0x1c, 0x0b, //0x00000dea leaq (%r11,%r9), %rbx + 0x48, 0x83, 0xc3, 0x02, //0x00000dee addq $2, %rbx + 0x4d, 0x29, 0xd8, //0x00000df2 subq %r11, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00000df5 addq $-2, %r8 + 0x4d, 0x89, 0xc3, //0x00000df9 movq %r8, %r11 + 0xe9, 0x6c, 0xf6, 0xff, 0xff, //0x00000dfc jmp LBB0_58 + 0x90, 0x90, 0x90, //0x00000e01 .p2align 2, 0x90 + // // .set L0_0_set_115, LBB0_115-LJTI0_0 + // // .set L0_0_set_48, LBB0_48-LJTI0_0 + // // .set L0_0_set_49, LBB0_49-LJTI0_0 // // .set L0_0_set_29, LBB0_29-LJTI0_0 - // // .set L0_0_set_58, LBB0_58-LJTI0_0 - // // .set L0_0_set_83, LBB0_83-LJTI0_0 - // // .set L0_0_set_45, LBB0_45-LJTI0_0 - // // .set L0_0_set_84, LBB0_84-LJTI0_0 - //0x00000d94 LJTI0_0 - 0x41, 0xf5, 0xff, 0xff, //0x00000d94 .long L0_0_set_44 - 0x67, 0xf5, 0xff, 0xff, //0x00000d98 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000d9c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000da0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000da4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000da8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dac .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000db0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000db4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000db8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dbc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dc0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dc4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dc8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dcc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dd0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dd4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dd8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ddc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000de0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000de4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000de8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dec .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000df0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000df4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000df8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000dfc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e00 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e04 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e08 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e0c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e10 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e14 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e18 .long L0_0_set_46 - 0x76, 0xf5, 0xff, 0xff, //0x00000e1c .long L0_0_set_47 - 0x67, 0xf5, 0xff, 0xff, //0x00000e20 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e24 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e28 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e2c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e30 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e34 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e38 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e3c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e40 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e44 .long L0_0_set_46 - 0x61, 0xf4, 0xff, 0xff, //0x00000e48 .long L0_0_set_29 - 0x67, 0xf5, 0xff, 0xff, //0x00000e4c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e50 .long L0_0_set_46 - 0x61, 0xf4, 0xff, 0xff, //0x00000e54 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e58 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e5c .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e60 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e64 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e68 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e6c .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e70 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e74 .long L0_0_set_29 - 0x61, 0xf4, 0xff, 0xff, //0x00000e78 .long L0_0_set_29 - 0x67, 0xf5, 0xff, 0xff, //0x00000e7c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e80 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e84 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e88 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e8c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e90 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e94 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e98 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000e9c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ea0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ea4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ea8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000eac .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000eb0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000eb4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000eb8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ebc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ec0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ec4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ec8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ecc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ed0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ed4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ed8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000edc .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ee0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ee4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ee8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000eec .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ef0 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ef4 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000ef8 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000efc .long L0_0_set_46 - 0x9e, 0xf6, 0xff, 0xff, //0x00000f00 .long L0_0_set_58 - 0x67, 0xf5, 0xff, 0xff, //0x00000f04 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f08 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f0c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f10 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f14 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f18 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f1c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f20 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f24 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f28 .long L0_0_set_46 - 0xca, 0xfa, 0xff, 0xff, //0x00000f2c .long L0_0_set_83 - 0x67, 0xf5, 0xff, 0xff, //0x00000f30 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f34 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f38 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f3c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f40 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f44 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f48 .long L0_0_set_46 - 0x53, 0xf5, 0xff, 0xff, //0x00000f4c .long L0_0_set_45 - 0x67, 0xf5, 0xff, 0xff, //0x00000f50 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f54 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f58 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f5c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f60 .long L0_0_set_46 - 0x53, 0xf5, 0xff, 0xff, //0x00000f64 .long L0_0_set_45 - 0x67, 0xf5, 0xff, 0xff, //0x00000f68 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f6c .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f70 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f74 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f78 .long L0_0_set_46 - 0x67, 0xf5, 0xff, 0xff, //0x00000f7c .long L0_0_set_46 - 0xde, 0xfa, 0xff, 0xff, //0x00000f80 .long L0_0_set_84 - //0x00000f84 .p2align 2, 0x00 - //0x00000f84 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00000f84 .long 2 + // // .set L0_0_set_60, LBB0_60-LJTI0_0 + // // .set L0_0_set_85, LBB0_85-LJTI0_0 + // // .set L0_0_set_47, LBB0_47-LJTI0_0 + // // .set L0_0_set_86, LBB0_86-LJTI0_0 + //0x00000e04 LJTI0_0 + 0x4b, 0xff, 0xff, 0xff, //0x00000e04 .long L0_0_set_115 + 0x55, 0xf5, 0xff, 0xff, //0x00000e08 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e0c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e10 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e14 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e18 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e1c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e20 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e24 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e28 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e2c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e30 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e34 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e38 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e3c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e40 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e44 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e48 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e4c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e50 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e54 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e58 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e5c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e60 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e64 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e68 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e6c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e70 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e74 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e78 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e7c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e80 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e84 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e88 .long L0_0_set_48 + 0x64, 0xf5, 0xff, 0xff, //0x00000e8c .long L0_0_set_49 + 0x55, 0xf5, 0xff, 0xff, //0x00000e90 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e94 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e98 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000e9c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ea0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ea4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ea8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000eac .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000eb0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000eb4 .long L0_0_set_48 + 0xf1, 0xf3, 0xff, 0xff, //0x00000eb8 .long L0_0_set_29 + 0x55, 0xf5, 0xff, 0xff, //0x00000ebc .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ec0 .long L0_0_set_48 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ec4 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ec8 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ecc .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ed0 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ed4 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ed8 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000edc .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ee0 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ee4 .long L0_0_set_29 + 0xf1, 0xf3, 0xff, 0xff, //0x00000ee8 .long L0_0_set_29 + 0x55, 0xf5, 0xff, 0xff, //0x00000eec .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ef0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ef4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000ef8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000efc .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f00 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f04 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f08 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f0c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f10 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f14 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f18 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f1c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f20 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f24 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f28 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f2c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f30 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f34 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f38 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f3c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f40 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f44 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f48 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f4c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f50 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f54 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f58 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f5c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f60 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f64 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f68 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f6c .long L0_0_set_48 + 0x7e, 0xf6, 0xff, 0xff, //0x00000f70 .long L0_0_set_60 + 0x55, 0xf5, 0xff, 0xff, //0x00000f74 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f78 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f7c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f80 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f84 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f88 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f8c .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f90 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f94 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000f98 .long L0_0_set_48 + 0xb4, 0xfa, 0xff, 0xff, //0x00000f9c .long L0_0_set_85 + 0x55, 0xf5, 0xff, 0xff, //0x00000fa0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fa4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fa8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fac .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fb0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fb4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fb8 .long L0_0_set_48 + 0x41, 0xf5, 0xff, 0xff, //0x00000fbc .long L0_0_set_47 + 0x55, 0xf5, 0xff, 0xff, //0x00000fc0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fc4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fc8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fcc .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fd0 .long L0_0_set_48 + 0x41, 0xf5, 0xff, 0xff, //0x00000fd4 .long L0_0_set_47 + 0x55, 0xf5, 0xff, 0xff, //0x00000fd8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fdc .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fe0 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fe4 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fe8 .long L0_0_set_48 + 0x55, 0xf5, 0xff, 0xff, //0x00000fec .long L0_0_set_48 + 0xc8, 0xfa, 0xff, 0xff, //0x00000ff0 .long L0_0_set_86 + //0x00000ff4 .p2align 2, 0x00 + //0x00000ff4 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00000ff4 .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_subr.go index f9ab46a53..373625dad 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__skip_one = 13880 + _size__skip_one = 14016 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x3330, 232}, - {0x3331, 48}, - {0x3333, 40}, - {0x3335, 32}, - {0x3337, 24}, - {0x3339, 16}, - {0x333a, 8}, - {0x333b, 0}, - {0x3638, 232}, + {0x33c1, 232}, + {0x33c2, 48}, + {0x33c4, 40}, + {0x33c6, 32}, + {0x33c8, 24}, + {0x33ca, 16}, + {0x33cb, 8}, + {0x33cc, 0}, + {0x36c0, 232}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_text_amd64.go index 05499b48d..71196072d 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/skip_one_text_amd64.go @@ -49,28 +49,28 @@ var _text_skip_one = []byte{ 0x53, //0x0000010c pushq %rbx 0x48, 0x81, 0xec, 0xb8, 0x00, 0x00, 0x00, //0x0000010d subq $184, %rsp 0x49, 0x89, 0xf0, //0x00000114 movq %rsi, %r8 - 0x48, 0x89, 0x8d, 0x68, 0xff, 0xff, 0xff, //0x00000117 movq %rcx, $-152(%rbp) - 0xf6, 0xc1, 0x40, //0x0000011e testb $64, %cl - 0x48, 0x89, 0x75, 0xd0, //0x00000121 movq %rsi, $-48(%rbp) - 0x48, 0x89, 0x7d, 0xb0, //0x00000125 movq %rdi, $-80(%rbp) - 0x0f, 0x85, 0xc2, 0x00, 0x00, 0x00, //0x00000129 jne LBB0_2 - 0x49, 0x89, 0xd3, //0x0000012f movq %rdx, %r11 - 0x0f, 0x10, 0x05, 0x47, 0xff, 0xff, 0xff, //0x00000132 movups $-185(%rip), %xmm0 /* LCPI0_8+0(%rip) */ - 0x0f, 0x11, 0x02, //0x00000139 movups %xmm0, (%rdx) - 0x4c, 0x8b, 0x27, //0x0000013c movq (%rdi), %r12 - 0x4c, 0x89, 0xe0, //0x0000013f movq %r12, %rax - 0x48, 0xf7, 0xd0, //0x00000142 notq %rax - 0x48, 0x89, 0x45, 0x88, //0x00000145 movq %rax, $-120(%rbp) - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000149 movl $1, %eax - 0x4c, 0x29, 0xe0, //0x0000014e subq %r12, %rax - 0x48, 0x89, 0x45, 0x98, //0x00000151 movq %rax, $-104(%rbp) - 0x4c, 0x89, 0xe0, //0x00000155 movq %r12, %rax - 0x48, 0xf7, 0xd8, //0x00000158 negq %rax - 0x48, 0x89, 0x45, 0x80, //0x0000015b movq %rax, $-128(%rbp) + 0x48, 0x89, 0x4d, 0x88, //0x00000117 movq %rcx, $-120(%rbp) + 0xf6, 0xc1, 0x40, //0x0000011b testb $64, %cl + 0x48, 0x89, 0x75, 0xd0, //0x0000011e movq %rsi, $-48(%rbp) + 0x48, 0x89, 0x7d, 0xb0, //0x00000122 movq %rdi, $-80(%rbp) + 0x0f, 0x85, 0xc5, 0x00, 0x00, 0x00, //0x00000126 jne LBB0_2 + 0x49, 0x89, 0xd3, //0x0000012c movq %rdx, %r11 + 0x0f, 0x10, 0x05, 0x4a, 0xff, 0xff, 0xff, //0x0000012f movups $-182(%rip), %xmm0 /* LCPI0_8+0(%rip) */ + 0x0f, 0x11, 0x02, //0x00000136 movups %xmm0, (%rdx) + 0x4c, 0x8b, 0x27, //0x00000139 movq (%rdi), %r12 + 0x4c, 0x89, 0xe0, //0x0000013c movq %r12, %rax + 0x48, 0xf7, 0xd0, //0x0000013f notq %rax + 0x48, 0x89, 0x45, 0x80, //0x00000142 movq %rax, $-128(%rbp) + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000146 movl $1, %eax + 0x4c, 0x29, 0xe0, //0x0000014b subq %r12, %rax + 0x48, 0x89, 0x45, 0x90, //0x0000014e movq %rax, $-112(%rbp) + 0x4c, 0x89, 0xe0, //0x00000152 movq %r12, %rax + 0x48, 0xf7, 0xd8, //0x00000155 negq %rax + 0x48, 0x89, 0x85, 0x78, 0xff, 0xff, 0xff, //0x00000158 movq %rax, $-136(%rbp) 0x49, 0x8d, 0x44, 0x24, 0xff, //0x0000015f leaq $-1(%r12), %rax - 0x48, 0x89, 0x85, 0x78, 0xff, 0xff, 0xff, //0x00000164 movq %rax, $-136(%rbp) + 0x48, 0x89, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00000164 movq %rax, $-144(%rbp) 0x49, 0x8d, 0x44, 0x24, 0xfe, //0x0000016b leaq $-2(%r12), %rax - 0x48, 0x89, 0x85, 0x70, 0xff, 0xff, 0xff, //0x00000170 movq %rax, $-144(%rbp) + 0x48, 0x89, 0x85, 0x68, 0xff, 0xff, 0xff, //0x00000170 movq %rax, $-152(%rbp) 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00000177 movq $-1, %r10 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000017e movabsq $4294977024, %r14 0xf3, 0x0f, 0x6f, 0x05, 0xa0, 0xfe, 0xff, 0xff, //0x00000188 movdqu $-352(%rip), %xmm0 /* LCPI0_3+0(%rip) */ @@ -88,12 +88,12 @@ var _text_skip_one = []byte{ 0x48, 0x89, 0x55, 0xa8, //0x000001e8 movq %rdx, $-88(%rbp) 0xe9, 0x39, 0x01, 0x00, 0x00, //0x000001ec jmp LBB0_29 //0x000001f1 LBB0_2 - 0x4c, 0x8b, 0x27, //0x000001f1 movq (%rdi), %r12 + 0x4c, 0x8b, 0x0f, //0x000001f1 movq (%rdi), %r9 0x48, 0x8b, 0x77, 0x08, //0x000001f4 movq $8(%rdi), %rsi 0x49, 0x8b, 0x18, //0x000001f8 movq (%r8), %rbx 0x48, 0x39, 0xf3, //0x000001fb cmpq %rsi, %rbx 0x0f, 0x83, 0x26, 0x00, 0x00, 0x00, //0x000001fe jae LBB0_7 - 0x41, 0x8a, 0x04, 0x1c, //0x00000204 movb (%r12,%rbx), %al + 0x41, 0x8a, 0x04, 0x19, //0x00000204 movb (%r9,%rbx), %al 0x3c, 0x0d, //0x00000208 cmpb $13, %al 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x0000020a je LBB0_7 0x3c, 0x20, //0x00000210 cmpb $32, %al @@ -101,66 +101,66 @@ var _text_skip_one = []byte{ 0x04, 0xf7, //0x00000218 addb $-9, %al 0x3c, 0x01, //0x0000021a cmpb $1, %al 0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x0000021c jbe LBB0_7 - 0x49, 0x89, 0xd9, //0x00000222 movq %rbx, %r9 - 0xe9, 0x46, 0x26, 0x00, 0x00, //0x00000225 jmp LBB0_492 + 0x49, 0x89, 0xdc, //0x00000222 movq %rbx, %r12 + 0xe9, 0x84, 0x26, 0x00, 0x00, //0x00000225 jmp LBB0_492 //0x0000022a LBB0_7 - 0x4c, 0x8d, 0x4b, 0x01, //0x0000022a leaq $1(%rbx), %r9 - 0x49, 0x39, 0xf1, //0x0000022e cmpq %rsi, %r9 + 0x4c, 0x8d, 0x63, 0x01, //0x0000022a leaq $1(%rbx), %r12 + 0x49, 0x39, 0xf4, //0x0000022e cmpq %rsi, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00000231 jae LBB0_11 - 0x43, 0x8a, 0x04, 0x0c, //0x00000237 movb (%r12,%r9), %al + 0x43, 0x8a, 0x04, 0x21, //0x00000237 movb (%r9,%r12), %al 0x3c, 0x0d, //0x0000023b cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000023d je LBB0_11 0x3c, 0x20, //0x00000243 cmpb $32, %al 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00000245 je LBB0_11 0x04, 0xf7, //0x0000024b addb $-9, %al 0x3c, 0x01, //0x0000024d cmpb $1, %al - 0x0f, 0x87, 0x1b, 0x26, 0x00, 0x00, //0x0000024f ja LBB0_492 + 0x0f, 0x87, 0x59, 0x26, 0x00, 0x00, //0x0000024f ja LBB0_492 //0x00000255 LBB0_11 - 0x4c, 0x8d, 0x4b, 0x02, //0x00000255 leaq $2(%rbx), %r9 - 0x49, 0x39, 0xf1, //0x00000259 cmpq %rsi, %r9 + 0x4c, 0x8d, 0x63, 0x02, //0x00000255 leaq $2(%rbx), %r12 + 0x49, 0x39, 0xf4, //0x00000259 cmpq %rsi, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x0000025c jae LBB0_15 - 0x43, 0x8a, 0x04, 0x0c, //0x00000262 movb (%r12,%r9), %al + 0x43, 0x8a, 0x04, 0x21, //0x00000262 movb (%r9,%r12), %al 0x3c, 0x0d, //0x00000266 cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000268 je LBB0_15 0x3c, 0x20, //0x0000026e cmpb $32, %al 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00000270 je LBB0_15 0x04, 0xf7, //0x00000276 addb $-9, %al 0x3c, 0x01, //0x00000278 cmpb $1, %al - 0x0f, 0x87, 0xf0, 0x25, 0x00, 0x00, //0x0000027a ja LBB0_492 + 0x0f, 0x87, 0x2e, 0x26, 0x00, 0x00, //0x0000027a ja LBB0_492 //0x00000280 LBB0_15 - 0x4c, 0x8d, 0x4b, 0x03, //0x00000280 leaq $3(%rbx), %r9 - 0x49, 0x39, 0xf1, //0x00000284 cmpq %rsi, %r9 + 0x4c, 0x8d, 0x63, 0x03, //0x00000280 leaq $3(%rbx), %r12 + 0x49, 0x39, 0xf4, //0x00000284 cmpq %rsi, %r12 0x0f, 0x83, 0x1e, 0x00, 0x00, 0x00, //0x00000287 jae LBB0_19 - 0x43, 0x8a, 0x04, 0x0c, //0x0000028d movb (%r12,%r9), %al + 0x43, 0x8a, 0x04, 0x21, //0x0000028d movb (%r9,%r12), %al 0x3c, 0x0d, //0x00000291 cmpb $13, %al 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000293 je LBB0_19 0x3c, 0x20, //0x00000299 cmpb $32, %al 0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x0000029b je LBB0_19 0x04, 0xf7, //0x000002a1 addb $-9, %al 0x3c, 0x01, //0x000002a3 cmpb $1, %al - 0x0f, 0x87, 0xc5, 0x25, 0x00, 0x00, //0x000002a5 ja LBB0_492 + 0x0f, 0x87, 0x03, 0x26, 0x00, 0x00, //0x000002a5 ja LBB0_492 //0x000002ab LBB0_19 0x48, 0x83, 0xc3, 0x04, //0x000002ab addq $4, %rbx 0x48, 0x39, 0xde, //0x000002af cmpq %rbx, %rsi - 0x0f, 0x86, 0x7b, 0x25, 0x00, 0x00, //0x000002b2 jbe LBB0_486 + 0x0f, 0x86, 0xb9, 0x25, 0x00, 0x00, //0x000002b2 jbe LBB0_486 0x48, 0x39, 0xde, //0x000002b8 cmpq %rbx, %rsi - 0x0f, 0x84, 0x90, 0x25, 0x00, 0x00, //0x000002bb je LBB0_489 - 0x49, 0x8d, 0x04, 0x34, //0x000002c1 leaq (%r12,%rsi), %rax + 0x0f, 0x84, 0xce, 0x25, 0x00, 0x00, //0x000002bb je LBB0_489 + 0x49, 0x8d, 0x04, 0x31, //0x000002c1 leaq (%r9,%rsi), %rax 0x48, 0xb9, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000002c5 movabsq $4294977024, %rcx 0x90, //0x000002cf .p2align 4, 0x90 //0x000002d0 LBB0_22 - 0x41, 0x0f, 0xbe, 0x14, 0x1c, //0x000002d0 movsbl (%r12,%rbx), %edx + 0x41, 0x0f, 0xbe, 0x14, 0x19, //0x000002d0 movsbl (%r9,%rbx), %edx 0x83, 0xfa, 0x20, //0x000002d5 cmpl $32, %edx - 0x0f, 0x87, 0x7f, 0x25, 0x00, 0x00, //0x000002d8 ja LBB0_491 + 0x0f, 0x87, 0xbd, 0x25, 0x00, 0x00, //0x000002d8 ja LBB0_491 0x48, 0x0f, 0xa3, 0xd1, //0x000002de btq %rdx, %rcx - 0x0f, 0x83, 0x75, 0x25, 0x00, 0x00, //0x000002e2 jae LBB0_491 + 0x0f, 0x83, 0xb3, 0x25, 0x00, 0x00, //0x000002e2 jae LBB0_491 0x48, 0x83, 0xc3, 0x01, //0x000002e8 addq $1, %rbx 0x48, 0x39, 0xde, //0x000002ec cmpq %rbx, %rsi 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002ef jne LBB0_22 - 0xe9, 0x5d, 0x25, 0x00, 0x00, //0x000002f5 jmp LBB0_490 + 0xe9, 0x9b, 0x25, 0x00, 0x00, //0x000002f5 jmp LBB0_490 //0x000002fa LBB0_25 0x49, 0x81, 0xfa, 0xff, 0x0f, 0x00, 0x00, //0x000002fa cmpq $4095, %r10 - 0x0f, 0x8f, 0x83, 0x26, 0x00, 0x00, //0x00000301 jg LBB0_597 + 0x0f, 0x8f, 0x2b, 0x27, 0x00, 0x00, //0x00000301 jg LBB0_602 0x49, 0x8d, 0x42, 0x01, //0x00000307 leaq $1(%r10), %rax 0x49, 0x89, 0x03, //0x0000030b movq %rax, (%r11) 0x4b, 0xc7, 0x44, 0xd3, 0x08, 0x00, 0x00, 0x00, 0x00, //0x0000030e movq $0, $8(%r11,%r10,8) @@ -170,7 +170,7 @@ var _text_skip_one = []byte{ 0x4d, 0x8b, 0x0b, //0x0000031b movq (%r11), %r9 0x4c, 0x89, 0xd0, //0x0000031e movq %r10, %rax 0x4d, 0x85, 0xc9, //0x00000321 testq %r9, %r9 - 0x0f, 0x84, 0xff, 0x30, 0x00, 0x00, //0x00000324 je LBB0_580 + 0x0f, 0x84, 0x90, 0x31, 0x00, 0x00, //0x00000324 je LBB0_586 //0x0000032a LBB0_29 0x4c, 0x89, 0xd1, //0x0000032a movq %r10, %rcx 0x48, 0x8b, 0x47, 0x08, //0x0000032d movq $8(%rdi), %rax @@ -230,7 +230,7 @@ var _text_skip_one = []byte{ //0x00000400 LBB0_46 0x48, 0x83, 0xc6, 0x04, //0x00000400 addq $4, %rsi 0x48, 0x39, 0xf0, //0x00000404 cmpq %rsi, %rax - 0x0f, 0x86, 0x35, 0x24, 0x00, 0x00, //0x00000407 jbe LBB0_487 + 0x0f, 0x86, 0x73, 0x24, 0x00, 0x00, //0x00000407 jbe LBB0_487 0x48, 0x39, 0xf0, //0x0000040d cmpq %rsi, %rax 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000410 je LBB0_52 0x49, 0x8d, 0x14, 0x04, //0x00000416 leaq (%r12,%rax), %rdx @@ -255,14 +255,14 @@ var _text_skip_one = []byte{ //0x0000045c LBB0_54 0x48, 0x89, 0xf3, //0x0000045c movq %rsi, %rbx 0x48, 0x39, 0xc6, //0x0000045f cmpq %rax, %rsi - 0x0f, 0x83, 0xdd, 0x23, 0x00, 0x00, //0x00000462 jae LBB0_488 + 0x0f, 0x83, 0x1b, 0x24, 0x00, 0x00, //0x00000462 jae LBB0_488 //0x00000468 LBB0_55 0x48, 0x8d, 0x43, 0x01, //0x00000468 leaq $1(%rbx), %rax 0x49, 0x89, 0x00, //0x0000046c movq %rax, (%r8) 0x41, 0x0f, 0xbe, 0x14, 0x1c, //0x0000046f movsbl (%r12,%rbx), %edx 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000474 movq $-1, %rax 0x85, 0xd2, //0x0000047b testl %edx, %edx - 0x0f, 0x84, 0xa6, 0x2f, 0x00, 0x00, //0x0000047d je LBB0_580 + 0x0f, 0x84, 0x37, 0x30, 0x00, 0x00, //0x0000047d je LBB0_586 0x48, 0x89, 0xde, //0x00000483 movq %rbx, %rsi 0x4d, 0x8b, 0x13, //0x00000486 movq (%r11), %r10 0x4d, 0x8d, 0x4a, 0xff, //0x00000489 leaq $-1(%r10), %r9 @@ -272,8 +272,8 @@ var _text_skip_one = []byte{ 0x48, 0x89, 0x75, 0xb8, //0x00000499 movq %rsi, $-72(%rbp) 0x83, 0xc3, 0xff, //0x0000049d addl $-1, %ebx 0x83, 0xfb, 0x05, //0x000004a0 cmpl $5, %ebx - 0x0f, 0x87, 0x5e, 0x02, 0x00, 0x00, //0x000004a3 ja LBB0_88 - 0x48, 0x8d, 0x35, 0x78, 0x34, 0x00, 0x00, //0x000004a9 leaq $13432(%rip), %rsi /* LJTI0_1+0(%rip) */ + 0x0f, 0x87, 0x34, 0x02, 0x00, 0x00, //0x000004a3 ja LBB0_85 + 0x48, 0x8d, 0x35, 0x00, 0x35, 0x00, 0x00, //0x000004a9 leaq $13568(%rip), %rsi /* LJTI0_1+0(%rip) */ 0x48, 0x63, 0x0c, 0x9e, //0x000004b0 movslq (%rsi,%rbx,4), %rcx 0x48, 0x01, 0xf1, //0x000004b4 addq %rsi, %rcx 0xff, 0xe1, //0x000004b7 jmpq *%rcx @@ -281,34 +281,34 @@ var _text_skip_one = []byte{ 0x83, 0xfa, 0x2c, //0x000004b9 cmpl $44, %edx 0x0f, 0x84, 0x38, 0xfe, 0xff, 0xff, //0x000004bc je LBB0_25 0x83, 0xfa, 0x5d, //0x000004c2 cmpl $93, %edx - 0x0f, 0x84, 0x24, 0x02, 0x00, 0x00, //0x000004c5 je LBB0_87 - 0xe9, 0x32, 0x2f, 0x00, 0x00, //0x000004cb jmp LBB0_579 + 0x0f, 0x84, 0x8f, 0x04, 0x00, 0x00, //0x000004c5 je LBB0_126 + 0xe9, 0xc3, 0x2f, 0x00, 0x00, //0x000004cb jmp LBB0_585 //0x000004d0 LBB0_60 0x80, 0xfa, 0x5d, //0x000004d0 cmpb $93, %dl - 0x0f, 0x84, 0x16, 0x02, 0x00, 0x00, //0x000004d3 je LBB0_87 + 0x0f, 0x84, 0x81, 0x04, 0x00, 0x00, //0x000004d3 je LBB0_126 0x4b, 0xc7, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x00, //0x000004d9 movq $1, (%r11,%r10,8) - 0xe9, 0x24, 0x02, 0x00, 0x00, //0x000004e1 jmp LBB0_89 + 0xe9, 0xfa, 0x01, 0x00, 0x00, //0x000004e1 jmp LBB0_86 //0x000004e6 LBB0_62 0x80, 0xfa, 0x22, //0x000004e6 cmpb $34, %dl - 0x0f, 0x85, 0x13, 0x2f, 0x00, 0x00, //0x000004e9 jne LBB0_579 + 0x0f, 0x85, 0xa4, 0x2f, 0x00, 0x00, //0x000004e9 jne LBB0_585 0x4b, 0xc7, 0x04, 0xd3, 0x04, 0x00, 0x00, 0x00, //0x000004ef movq $4, (%r11,%r10,8) 0x49, 0x8b, 0x08, //0x000004f7 movq (%r8), %rcx 0x48, 0x8b, 0x47, 0x08, //0x000004fa movq $8(%rdi), %rax - 0xf6, 0x85, 0x68, 0xff, 0xff, 0xff, 0x20, //0x000004fe testb $32, $-152(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x00000505 movq %rax, $-96(%rbp) - 0x48, 0x89, 0x4d, 0x90, //0x00000509 movq %rcx, $-112(%rbp) - 0x0f, 0x85, 0xf9, 0x05, 0x00, 0x00, //0x0000050d jne LBB0_145 - 0x49, 0x89, 0xc1, //0x00000513 movq %rax, %r9 - 0x49, 0x29, 0xc9, //0x00000516 subq %rcx, %r9 - 0x0f, 0x84, 0x23, 0x31, 0x00, 0x00, //0x00000519 je LBB0_614 - 0x49, 0x83, 0xf9, 0x40, //0x0000051f cmpq $64, %r9 - 0x0f, 0x82, 0x1a, 0x1b, 0x00, 0x00, //0x00000523 jb LBB0_406 - 0x49, 0x89, 0xce, //0x00000529 movq %rcx, %r14 - 0x49, 0xf7, 0xd6, //0x0000052c notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000052f movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x00000537 movq %rcx, %rax - 0x45, 0x31, 0xc0, //0x0000053a xorl %r8d, %r8d - 0x90, 0x90, 0x90, //0x0000053d .p2align 4, 0x90 + 0xf6, 0x45, 0x88, 0x20, //0x000004fe testb $32, $-120(%rbp) + 0x48, 0x89, 0x45, 0x98, //0x00000502 movq %rax, $-104(%rbp) + 0x48, 0x89, 0x4d, 0xa0, //0x00000506 movq %rcx, $-96(%rbp) + 0x0f, 0x85, 0x0c, 0x06, 0x00, 0x00, //0x0000050a jne LBB0_145 + 0x49, 0x89, 0xc1, //0x00000510 movq %rax, %r9 + 0x49, 0x29, 0xc9, //0x00000513 subq %rcx, %r9 + 0x0f, 0x84, 0xaf, 0x31, 0x00, 0x00, //0x00000516 je LBB0_619 + 0x49, 0x83, 0xf9, 0x40, //0x0000051c cmpq $64, %r9 + 0x0f, 0x82, 0x52, 0x1b, 0x00, 0x00, //0x00000520 jb LBB0_406 + 0x49, 0x89, 0xce, //0x00000526 movq %rcx, %r14 + 0x49, 0xf7, 0xd6, //0x00000529 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000052c movq $-1, $-56(%rbp) + 0x48, 0x89, 0xc8, //0x00000534 movq %rcx, %rax + 0x45, 0x31, 0xc0, //0x00000537 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000053a .p2align 4, 0x90 //0x00000540 LBB0_67 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000540 movdqu (%r12,%rax), %xmm3 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000546 movdqu $16(%r12,%rax), %xmm4 @@ -322,7 +322,7 @@ var _text_skip_one = []byte{ 0x66, 0x0f, 0xd7, 0xdf, //0x00000570 pmovmskb %xmm7, %ebx 0x66, 0x0f, 0x6f, 0xfd, //0x00000574 movdqa %xmm5, %xmm7 0x66, 0x0f, 0x74, 0xf8, //0x00000578 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000057c pmovmskb %xmm7, %edi + 0x66, 0x0f, 0xd7, 0xf7, //0x0000057c pmovmskb %xmm7, %esi 0x66, 0x0f, 0x6f, 0xfe, //0x00000580 movdqa %xmm6, %xmm7 0x66, 0x0f, 0x74, 0xf8, //0x00000584 pcmpeqb %xmm0, %xmm7 0x66, 0x0f, 0xd7, 0xd7, //0x00000588 pmovmskb %xmm7, %edx @@ -331,20 +331,20 @@ var _text_skip_one = []byte{ 0x66, 0x0f, 0x74, 0xe1, //0x00000595 pcmpeqb %xmm1, %xmm4 0x66, 0x0f, 0xd7, 0xcc, //0x00000599 pmovmskb %xmm4, %ecx 0x66, 0x0f, 0x74, 0xe9, //0x0000059d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000005a1 pmovmskb %xmm5, %esi + 0x66, 0x0f, 0xd7, 0xfd, //0x000005a1 pmovmskb %xmm5, %edi 0x66, 0x0f, 0x74, 0xf1, //0x000005a5 pcmpeqb %xmm1, %xmm6 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000005a9 pmovmskb %xmm6, %r15d 0x48, 0xc1, 0xe2, 0x30, //0x000005ae shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000005b2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000005b6 orq %rdx, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x000005b2 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x000005b6 orq %rdx, %rsi 0x48, 0xc1, 0xe3, 0x10, //0x000005b9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000005bd orq %rdi, %rbx + 0x48, 0x09, 0xf3, //0x000005bd orq %rsi, %rbx 0x49, 0x09, 0xda, //0x000005c0 orq %rbx, %r10 0x49, 0xc1, 0xe7, 0x30, //0x000005c3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000005c7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000005cb orq %r15, %rsi + 0x48, 0xc1, 0xe7, 0x20, //0x000005c7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000005cb orq %r15, %rdi 0x48, 0xc1, 0xe1, 0x10, //0x000005ce shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000005d2 orq %rsi, %rcx + 0x48, 0x09, 0xf9, //0x000005d2 orq %rdi, %rcx 0x49, 0x09, 0xcb, //0x000005d5 orq %rcx, %r11 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000005d8 jne LBB0_76 0x4d, 0x85, 0xc0, //0x000005de testq %r8, %r8 @@ -358,7 +358,7 @@ var _text_skip_one = []byte{ 0x48, 0x83, 0xc0, 0x40, //0x000005fb addq $64, %rax 0x49, 0x83, 0xf9, 0x3f, //0x000005ff cmpq $63, %r9 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000603 ja LBB0_67 - 0xe9, 0xf3, 0x12, 0x00, 0x00, //0x00000609 jmp LBB0_71 + 0xe9, 0x28, 0x13, 0x00, 0x00, //0x00000609 jmp LBB0_71 //0x0000060e LBB0_76 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000060e cmpq $-1, $-56(%rbp) 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000613 jne LBB0_78 @@ -395,3595 +395,3623 @@ var _text_skip_one = []byte{ 0x4c, 0x8b, 0x5d, 0xa8, //0x00000685 movq $-88(%rbp), %r11 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000689 movabsq $4294977024, %r14 0x4c, 0x8b, 0x55, 0xb8, //0x00000693 movq $-72(%rbp), %r10 - 0xe9, 0x80, 0x09, 0x00, 0x00, //0x00000697 jmp LBB0_215 + 0xe9, 0xa1, 0x09, 0x00, 0x00, //0x00000697 jmp LBB0_215 //0x0000069c LBB0_80 - 0x83, 0xfa, 0x2c, //0x0000069c cmpl $44, %edx - 0x0f, 0x85, 0x41, 0x00, 0x00, 0x00, //0x0000069f jne LBB0_86 - 0x49, 0x81, 0xfa, 0xff, 0x0f, 0x00, 0x00, //0x000006a5 cmpq $4095, %r10 - 0x0f, 0x8f, 0xd8, 0x22, 0x00, 0x00, //0x000006ac jg LBB0_597 - 0x49, 0x8d, 0x42, 0x01, //0x000006b2 leaq $1(%r10), %rax - 0x49, 0x89, 0x03, //0x000006b6 movq %rax, (%r11) - 0x4b, 0xc7, 0x44, 0xd3, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000006b9 movq $3, $8(%r11,%r10,8) - 0xe9, 0x50, 0xfc, 0xff, 0xff, //0x000006c2 jmp LBB0_27 - //0x000006c7 LBB0_83 - 0x80, 0xfa, 0x3a, //0x000006c7 cmpb $58, %dl - 0x0f, 0x85, 0x32, 0x2d, 0x00, 0x00, //0x000006ca jne LBB0_579 - 0x4b, 0xc7, 0x04, 0xd3, 0x00, 0x00, 0x00, 0x00, //0x000006d0 movq $0, (%r11,%r10,8) + 0x80, 0xfa, 0x3a, //0x0000069c cmpb $58, %dl + 0x0f, 0x85, 0xee, 0x2d, 0x00, 0x00, //0x0000069f jne LBB0_585 + 0x4b, 0xc7, 0x04, 0xd3, 0x00, 0x00, 0x00, 0x00, //0x000006a5 movq $0, (%r11,%r10,8) + 0xe9, 0x65, 0xfc, 0xff, 0xff, //0x000006ad jmp LBB0_27 + //0x000006b2 LBB0_82 + 0x83, 0xfa, 0x2c, //0x000006b2 cmpl $44, %edx + 0x0f, 0x85, 0x96, 0x02, 0x00, 0x00, //0x000006b5 jne LBB0_125 + 0x49, 0x81, 0xfa, 0xff, 0x0f, 0x00, 0x00, //0x000006bb cmpq $4095, %r10 + 0x0f, 0x8f, 0x6a, 0x23, 0x00, 0x00, //0x000006c2 jg LBB0_602 + 0x49, 0x8d, 0x42, 0x01, //0x000006c8 leaq $1(%r10), %rax + 0x49, 0x89, 0x03, //0x000006cc movq %rax, (%r11) + 0x4b, 0xc7, 0x44, 0xd3, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000006cf movq $3, $8(%r11,%r10,8) 0xe9, 0x3a, 0xfc, 0xff, 0xff, //0x000006d8 jmp LBB0_27 //0x000006dd LBB0_85 - 0x83, 0xfa, 0x22, //0x000006dd cmpl $34, %edx - 0x0f, 0x84, 0x82, 0x02, 0x00, 0x00, //0x000006e0 je LBB0_127 - //0x000006e6 LBB0_86 - 0x83, 0xfa, 0x7d, //0x000006e6 cmpl $125, %edx - 0x0f, 0x85, 0x13, 0x2d, 0x00, 0x00, //0x000006e9 jne LBB0_579 - //0x000006ef LBB0_87 - 0x4d, 0x89, 0x0b, //0x000006ef movq %r9, (%r11) - 0x4c, 0x8b, 0x55, 0xb8, //0x000006f2 movq $-72(%rbp), %r10 - 0x4c, 0x89, 0xd0, //0x000006f6 movq %r10, %rax - 0x4d, 0x85, 0xc9, //0x000006f9 testq %r9, %r9 - 0x0f, 0x85, 0x28, 0xfc, 0xff, 0xff, //0x000006fc jne LBB0_29 - 0xe9, 0x22, 0x2d, 0x00, 0x00, //0x00000702 jmp LBB0_580 - //0x00000707 LBB0_88 - 0x4d, 0x89, 0x0b, //0x00000707 movq %r9, (%r11) - //0x0000070a LBB0_89 - 0x83, 0xfa, 0x7b, //0x0000070a cmpl $123, %edx - 0x4c, 0x8b, 0x55, 0xb8, //0x0000070d movq $-72(%rbp), %r10 - 0x0f, 0x87, 0xeb, 0x2c, 0x00, 0x00, //0x00000711 ja LBB0_579 - 0x89, 0xd1, //0x00000717 movl %edx, %ecx - 0x48, 0x8d, 0x15, 0x20, 0x32, 0x00, 0x00, //0x00000719 leaq $12832(%rip), %rdx /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00000720 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00000724 addq %rdx, %rcx - 0xff, 0xe1, //0x00000727 jmpq *%rcx - //0x00000729 LBB0_91 - 0x4c, 0x8b, 0x57, 0x08, //0x00000729 movq $8(%rdi), %r10 - 0x4d, 0x8b, 0x08, //0x0000072d movq (%r8), %r9 - 0x49, 0x8d, 0x41, 0xff, //0x00000730 leaq $-1(%r9), %rax - 0x49, 0x29, 0xc2, //0x00000734 subq %rax, %r10 - 0x0f, 0x84, 0xb0, 0x2c, 0x00, 0x00, //0x00000737 je LBB0_577 - 0x4f, 0x8d, 0x1c, 0x0c, //0x0000073d leaq (%r12,%r9), %r11 - 0x49, 0x83, 0xc3, 0xff, //0x00000741 addq $-1, %r11 - 0x41, 0x80, 0x3b, 0x30, //0x00000745 cmpb $48, (%r11) - 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x00000749 jne LBB0_96 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x0000074f movl $1, %r13d - 0x49, 0x83, 0xfa, 0x01, //0x00000755 cmpq $1, %r10 - 0x0f, 0x84, 0x5c, 0x08, 0x00, 0x00, //0x00000759 je LBB0_211 - 0x48, 0x8b, 0x4d, 0xc0, //0x0000075f movq $-64(%rbp), %rcx - 0x42, 0x8a, 0x0c, 0x09, //0x00000763 movb (%rcx,%r9), %cl - 0x80, 0xc1, 0xd2, //0x00000767 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x0000076a cmpb $55, %cl - 0x0f, 0x87, 0x48, 0x08, 0x00, 0x00, //0x0000076d ja LBB0_211 - 0x0f, 0xb6, 0xc9, //0x00000773 movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00000776 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x00000780 btq %rcx, %rdx - 0x0f, 0x83, 0x31, 0x08, 0x00, 0x00, //0x00000784 jae LBB0_211 - //0x0000078a LBB0_96 - 0x49, 0x83, 0xfa, 0x10, //0x0000078a cmpq $16, %r10 - 0x0f, 0x82, 0xe8, 0x17, 0x00, 0x00, //0x0000078e jb LBB0_390 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000794 movq $-1, %r15 - 0x45, 0x31, 0xed, //0x0000079b xorl %r13d, %r13d - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000079e movq $-1, %r14 - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000007a5 movq $-1, %r12 - 0x4c, 0x89, 0xd7, //0x000007ac movq %r10, %rdi - 0x90, //0x000007af .p2align 4, 0x90 - //0x000007b0 LBB0_98 - 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x2b, //0x000007b0 movdqu (%r11,%r13), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000007b6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x000007ba pcmpgtb %xmm8, %xmm4 - 0x66, 0x41, 0x0f, 0x6f, 0xee, //0x000007bf movdqa %xmm14, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000007c4 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x000007c8 pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x000007cc movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x000007d0 pcmpeqb %xmm9, %xmm4 - 0x66, 0x0f, 0x6f, 0xf3, //0x000007d5 movdqa %xmm3, %xmm6 - 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x000007d9 pcmpeqb %xmm10, %xmm6 - 0x66, 0x0f, 0xeb, 0xf4, //0x000007de por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x000007e2 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x000007e6 pand %xmm11, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xdc, //0x000007eb pcmpeqb %xmm12, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x000007f0 pcmpeqb %xmm13, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x000007f5 pmovmskb %xmm4, %esi - 0x66, 0x0f, 0xeb, 0xe3, //0x000007f9 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x000007fd por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x00000801 por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdb, //0x00000805 pmovmskb %xmm3, %ebx - 0x66, 0x44, 0x0f, 0xd7, 0xc6, //0x00000809 pmovmskb %xmm6, %r8d - 0x66, 0x0f, 0xd7, 0xcd, //0x0000080e pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x00000812 notl %ecx - 0x0f, 0xbc, 0xc9, //0x00000814 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00000817 cmpl $16, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000081a je LBB0_100 - 0xba, 0xff, 0xff, 0xff, 0xff, //0x00000820 movl $-1, %edx - 0xd3, 0xe2, //0x00000825 shll %cl, %edx - 0xf7, 0xd2, //0x00000827 notl %edx - 0x21, 0xd3, //0x00000829 andl %edx, %ebx - 0x21, 0xd6, //0x0000082b andl %edx, %esi - 0x44, 0x21, 0xc2, //0x0000082d andl %r8d, %edx - 0x41, 0x89, 0xd0, //0x00000830 movl %edx, %r8d - //0x00000833 LBB0_100 - 0x8d, 0x53, 0xff, //0x00000833 leal $-1(%rbx), %edx - 0x21, 0xda, //0x00000836 andl %ebx, %edx - 0x0f, 0x85, 0x79, 0x10, 0x00, 0x00, //0x00000838 jne LBB0_349 - 0x8d, 0x56, 0xff, //0x0000083e leal $-1(%rsi), %edx - 0x21, 0xf2, //0x00000841 andl %esi, %edx - 0x0f, 0x85, 0x6e, 0x10, 0x00, 0x00, //0x00000843 jne LBB0_349 - 0x41, 0x8d, 0x50, 0xff, //0x00000849 leal $-1(%r8), %edx - 0x44, 0x21, 0xc2, //0x0000084d andl %r8d, %edx - 0x0f, 0x85, 0x61, 0x10, 0x00, 0x00, //0x00000850 jne LBB0_349 - 0x85, 0xdb, //0x00000856 testl %ebx, %ebx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000858 je LBB0_106 - 0x0f, 0xbc, 0xdb, //0x0000085e bsfl %ebx, %ebx - 0x49, 0x83, 0xfc, 0xff, //0x00000861 cmpq $-1, %r12 - 0x0f, 0x85, 0xa6, 0x13, 0x00, 0x00, //0x00000865 jne LBB0_356 - 0x4c, 0x01, 0xeb, //0x0000086b addq %r13, %rbx - 0x49, 0x89, 0xdc, //0x0000086e movq %rbx, %r12 - //0x00000871 LBB0_106 - 0x85, 0xf6, //0x00000871 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000873 je LBB0_109 - 0x0f, 0xbc, 0xf6, //0x00000879 bsfl %esi, %esi - 0x49, 0x83, 0xfe, 0xff, //0x0000087c cmpq $-1, %r14 - 0x0f, 0x85, 0x92, 0x13, 0x00, 0x00, //0x00000880 jne LBB0_357 - 0x4c, 0x01, 0xee, //0x00000886 addq %r13, %rsi - 0x49, 0x89, 0xf6, //0x00000889 movq %rsi, %r14 - //0x0000088c LBB0_109 - 0x45, 0x85, 0xc0, //0x0000088c testl %r8d, %r8d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000088f je LBB0_112 - 0x41, 0x0f, 0xbc, 0xd0, //0x00000895 bsfl %r8d, %edx - 0x49, 0x83, 0xff, 0xff, //0x00000899 cmpq $-1, %r15 - 0x0f, 0x85, 0x7c, 0x13, 0x00, 0x00, //0x0000089d jne LBB0_358 - 0x4c, 0x01, 0xea, //0x000008a3 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000008a6 movq %rdx, %r15 - //0x000008a9 LBB0_112 - 0x83, 0xf9, 0x10, //0x000008a9 cmpl $16, %ecx - 0x0f, 0x85, 0x68, 0x04, 0x00, 0x00, //0x000008ac jne LBB0_171 - 0x48, 0x83, 0xc7, 0xf0, //0x000008b2 addq $-16, %rdi - 0x49, 0x83, 0xc5, 0x10, //0x000008b6 addq $16, %r13 - 0x48, 0x83, 0xff, 0x0f, //0x000008ba cmpq $15, %rdi - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x000008be ja LBB0_98 - 0x4b, 0x8d, 0x0c, 0x2b, //0x000008c4 leaq (%r11,%r13), %rcx - 0x49, 0x89, 0xc8, //0x000008c8 movq %rcx, %r8 - 0x4d, 0x39, 0xea, //0x000008cb cmpq %r13, %r10 - 0x0f, 0x84, 0x73, 0x06, 0x00, 0x00, //0x000008ce je LBB0_200 - //0x000008d4 LBB0_115 - 0x4c, 0x8d, 0x04, 0x39, //0x000008d4 leaq (%rcx,%rdi), %r8 - 0x48, 0x8b, 0x55, 0x98, //0x000008d8 movq $-104(%rbp), %rdx - 0x4c, 0x89, 0xce, //0x000008dc movq %r9, %rsi - 0x4c, 0x8d, 0x0c, 0x0a, //0x000008df leaq (%rdx,%rcx), %r9 - 0x49, 0x89, 0xf2, //0x000008e3 movq %rsi, %r10 - 0x49, 0x29, 0xf1, //0x000008e6 subq %rsi, %r9 - 0x31, 0xd2, //0x000008e9 xorl %edx, %edx - 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x000008eb jmp LBB0_119 - //0x000008f0 LBB0_116 - 0x49, 0x83, 0xff, 0xff, //0x000008f0 cmpq $-1, %r15 - 0x0f, 0x85, 0xee, 0x0f, 0x00, 0x00, //0x000008f4 jne LBB0_354 - 0x4d, 0x8d, 0x3c, 0x11, //0x000008fa leaq (%r9,%rdx), %r15 - 0x90, 0x90, //0x000008fe .p2align 4, 0x90 - //0x00000900 LBB0_118 - 0x48, 0x83, 0xc2, 0x01, //0x00000900 addq $1, %rdx - 0x48, 0x39, 0xd7, //0x00000904 cmpq %rdx, %rdi - 0x0f, 0x84, 0x37, 0x06, 0x00, 0x00, //0x00000907 je LBB0_199 - //0x0000090d LBB0_119 - 0x0f, 0xbe, 0x1c, 0x11, //0x0000090d movsbl (%rcx,%rdx), %ebx - 0x8d, 0x73, 0xd0, //0x00000911 leal $-48(%rbx), %esi - 0x83, 0xfe, 0x0a, //0x00000914 cmpl $10, %esi - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000917 jb LBB0_118 - 0x8d, 0x73, 0xd5, //0x0000091d leal $-43(%rbx), %esi - 0x83, 0xfe, 0x1a, //0x00000920 cmpl $26, %esi - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000923 ja LBB0_124 - 0x48, 0x8d, 0x1d, 0x6c, 0x32, 0x00, 0x00, //0x00000929 leaq $12908(%rip), %rbx /* LJTI0_4+0(%rip) */ - 0x48, 0x63, 0x34, 0xb3, //0x00000930 movslq (%rbx,%rsi,4), %rsi - 0x48, 0x01, 0xde, //0x00000934 addq %rbx, %rsi - 0xff, 0xe6, //0x00000937 jmpq *%rsi - //0x00000939 LBB0_122 - 0x49, 0x83, 0xfc, 0xff, //0x00000939 cmpq $-1, %r12 - 0x0f, 0x85, 0xa5, 0x0f, 0x00, 0x00, //0x0000093d jne LBB0_354 - 0x4d, 0x8d, 0x24, 0x11, //0x00000943 leaq (%r9,%rdx), %r12 - 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x00000947 jmp LBB0_118 - //0x0000094c LBB0_124 - 0x83, 0xfb, 0x65, //0x0000094c cmpl $101, %ebx - 0x0f, 0x85, 0xe9, 0x05, 0x00, 0x00, //0x0000094f jne LBB0_198 - //0x00000955 LBB0_125 - 0x49, 0x83, 0xfe, 0xff, //0x00000955 cmpq $-1, %r14 - 0x0f, 0x85, 0x89, 0x0f, 0x00, 0x00, //0x00000959 jne LBB0_354 - 0x4d, 0x8d, 0x34, 0x11, //0x0000095f leaq (%r9,%rdx), %r14 - 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00000963 jmp LBB0_118 - //0x00000968 LBB0_127 - 0x4b, 0xc7, 0x04, 0xd3, 0x02, 0x00, 0x00, 0x00, //0x00000968 movq $2, (%r11,%r10,8) - 0x49, 0x8b, 0x00, //0x00000970 movq (%r8), %rax - 0x4c, 0x8b, 0x4f, 0x08, //0x00000973 movq $8(%rdi), %r9 - 0xf6, 0x85, 0x68, 0xff, 0xff, 0xff, 0x20, //0x00000977 testb $32, $-152(%rbp) - 0x48, 0x89, 0x45, 0x90, //0x0000097e movq %rax, $-112(%rbp) - 0x0f, 0x85, 0xa0, 0x03, 0x00, 0x00, //0x00000982 jne LBB0_172 - 0x4d, 0x89, 0xcd, //0x00000988 movq %r9, %r13 - 0x49, 0x29, 0xc1, //0x0000098b subq %rax, %r9 - 0x0f, 0x84, 0xb7, 0x2c, 0x00, 0x00, //0x0000098e je LBB0_617 - 0x49, 0x83, 0xf9, 0x40, //0x00000994 cmpq $64, %r9 - 0x0f, 0x82, 0x6b, 0x17, 0x00, 0x00, //0x00000998 jb LBB0_412 - 0x49, 0x89, 0xc6, //0x0000099e movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x000009a1 notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000009a4 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x000009ac xorl %r8d, %r8d - 0x90, //0x000009af .p2align 4, 0x90 - //0x000009b0 LBB0_131 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x000009b0 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x000009b6 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x000009bd movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x000009c4 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x000009cb movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000009cf pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x000009d3 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x000009d8 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000009dc pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x000009e0 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x000009e4 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000009e8 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x000009ec pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000009f0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000009f4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000009f8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000009fc pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000a00 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x00000a05 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00000a09 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x74, 0xe9, //0x00000a0d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000a11 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x00000a15 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000a19 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x00000a1e shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x00000a22 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x00000a26 orq %rdx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00000a29 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00000a2d orq %rdi, %rcx - 0x49, 0x09, 0xca, //0x00000a30 orq %rcx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x00000a33 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x00000a37 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x00000a3b orq %r15, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x00000a3e shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00000a42 orq %rsi, %rbx - 0x49, 0x09, 0xdb, //0x00000a45 orq %rbx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000a48 jne LBB0_141 - 0x4d, 0x85, 0xc0, //0x00000a4e testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000a51 jne LBB0_143 - 0x45, 0x31, 0xc0, //0x00000a57 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x00000a5a testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00000a5d jne LBB0_144 - //0x00000a63 LBB0_134 - 0x49, 0x83, 0xc1, 0xc0, //0x00000a63 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00000a67 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00000a6b addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00000a6f cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000a73 ja LBB0_131 - 0xe9, 0x24, 0x10, 0x00, 0x00, //0x00000a79 jmp LBB0_135 - //0x00000a7e LBB0_141 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000a7e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000a83 jne LBB0_143 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000a89 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00000a8d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000a90 movq %rcx, $-56(%rbp) - //0x00000a94 LBB0_143 - 0x4c, 0x89, 0xc1, //0x00000a94 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000a97 notq %rcx - 0x4c, 0x21, 0xd9, //0x00000a9a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000a9d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000aa1 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000aa4 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000aa7 notq %rsi - 0x4c, 0x21, 0xde, //0x00000aaa andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000aad movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000ab7 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00000aba xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00000abd addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000ac0 setb %r8b - 0x48, 0x01, 0xf6, //0x00000ac4 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000ac7 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000ad1 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000ad4 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000ad7 notq %rsi - 0x49, 0x21, 0xf2, //0x00000ada andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x00000add testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000ae0 je LBB0_134 - //0x00000ae6 LBB0_144 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000ae6 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x00000aea subq %r14, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00000aed movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00000af1 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00000af5 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000af9 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00000b03 movq $-72(%rbp), %r10 - 0xe9, 0x7c, 0x05, 0x00, 0x00, //0x00000b07 jmp LBB0_225 - //0x00000b0c LBB0_145 - 0x48, 0x89, 0xca, //0x00000b0c movq %rcx, %rdx - 0x49, 0x89, 0xc2, //0x00000b0f movq %rax, %r10 - 0x49, 0x29, 0xca, //0x00000b12 subq %rcx, %r10 - 0x0f, 0x84, 0x38, 0x2b, 0x00, 0x00, //0x00000b15 je LBB0_615 - 0x49, 0x83, 0xfa, 0x40, //0x00000b1b cmpq $64, %r10 - 0x0f, 0x82, 0x40, 0x15, 0x00, 0x00, //0x00000b1f jb LBB0_407 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000b25 movq $-1, $-56(%rbp) - 0x48, 0x8b, 0x45, 0x90, //0x00000b2d movq $-112(%rbp), %rax - 0x45, 0x31, 0xc0, //0x00000b31 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b34 .p2align 4, 0x90 - //0x00000b40 LBB0_148 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000b40 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x00000b46 movdqu $16(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x00000b4d movdqu $32(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000b54 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x00000b5b movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00000b5f pcmpeqb %xmm0, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xf4, //0x00000b63 pmovmskb %xmm4, %r14d - 0x66, 0x0f, 0x6f, 0xe5, //0x00000b68 movdqa %xmm5, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00000b6c pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00000b70 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x6f, 0xe7, //0x00000b74 movdqa %xmm7, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00000b78 pcmpeqb %xmm0, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xdc, //0x00000b7c pmovmskb %xmm4, %r11d - 0x66, 0x0f, 0x6f, 0xe6, //0x00000b81 movdqa %xmm6, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00000b85 pcmpeqb %xmm0, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00000b89 pmovmskb %xmm4, %r15d - 0x66, 0x0f, 0x6f, 0xe3, //0x00000b8e movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe1, //0x00000b92 pcmpeqb %xmm1, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xec, //0x00000b96 pmovmskb %xmm4, %r13d - 0x66, 0x0f, 0x6f, 0xe5, //0x00000b9b movdqa %xmm5, %xmm4 - 0x66, 0x0f, 0x74, 0xe1, //0x00000b9f pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00000ba3 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0x6f, 0xe7, //0x00000ba7 movdqa %xmm7, %xmm4 - 0x66, 0x0f, 0x74, 0xe1, //0x00000bab pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000baf pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x6f, 0xe6, //0x00000bb3 movdqa %xmm6, %xmm4 - 0x66, 0x0f, 0x74, 0xe1, //0x00000bb7 pcmpeqb %xmm1, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xe4, //0x00000bbb pmovmskb %xmm4, %r12d - 0x66, 0x0f, 0x6f, 0xe2, //0x00000bc0 movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x64, 0xe5, //0x00000bc4 pcmpgtb %xmm5, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00000bc8 pcmpgtb %xmm15, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x00000bcd pand %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000bd1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xe2, //0x00000bd5 movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x64, 0xe7, //0x00000bd9 pcmpgtb %xmm7, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xff, //0x00000bdd pcmpgtb %xmm15, %xmm7 - 0x66, 0x0f, 0xdb, 0xfc, //0x00000be2 pand %xmm4, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00000be6 pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xe2, //0x00000bea movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x64, 0xe6, //0x00000bee pcmpgtb %xmm6, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x00000bf2 pcmpgtb %xmm15, %xmm6 - 0x66, 0x0f, 0xdb, 0xf4, //0x00000bf7 pand %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xce, //0x00000bfb pmovmskb %xmm6, %r9d - 0x49, 0xc1, 0xe7, 0x30, //0x00000c00 shlq $48, %r15 - 0x49, 0xc1, 0xe3, 0x20, //0x00000c04 shlq $32, %r11 - 0x4d, 0x09, 0xfb, //0x00000c08 orq %r15, %r11 - 0x48, 0xc1, 0xe3, 0x10, //0x00000c0b shlq $16, %rbx - 0x4c, 0x09, 0xdb, //0x00000c0f orq %r11, %rbx - 0x49, 0x09, 0xde, //0x00000c12 orq %rbx, %r14 - 0x49, 0xc1, 0xe4, 0x30, //0x00000c15 shlq $48, %r12 - 0x48, 0xc1, 0xe1, 0x20, //0x00000c19 shlq $32, %rcx - 0x4c, 0x09, 0xe1, //0x00000c1d orq %r12, %rcx - 0x48, 0xc1, 0xe2, 0x10, //0x00000c20 shlq $16, %rdx - 0x48, 0x09, 0xca, //0x00000c24 orq %rcx, %rdx - 0x49, 0xc1, 0xe1, 0x30, //0x00000c27 shlq $48, %r9 - 0x48, 0xc1, 0xe7, 0x20, //0x00000c2b shlq $32, %rdi - 0x4c, 0x09, 0xcf, //0x00000c2f orq %r9, %rdi - 0x48, 0xc1, 0xe6, 0x10, //0x00000c32 shlq $16, %rsi - 0x48, 0x09, 0xfe, //0x00000c36 orq %rdi, %rsi - 0x49, 0x09, 0xd5, //0x00000c39 orq %rdx, %r13 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000c3c jne LBB0_165 - 0x4d, 0x85, 0xc0, //0x00000c42 testq %r8, %r8 - 0x0f, 0x85, 0x67, 0x00, 0x00, 0x00, //0x00000c45 jne LBB0_167 - 0x45, 0x31, 0xc0, //0x00000c4b xorl %r8d, %r8d - 0x4c, 0x8b, 0x65, 0xc0, //0x00000c4e movq $-64(%rbp), %r12 - //0x00000c52 LBB0_151 - 0x66, 0x0f, 0x6f, 0xe2, //0x00000c52 movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x64, 0xe3, //0x00000c56 pcmpgtb %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00000c5a pcmpgtb %xmm15, %xmm3 - 0x66, 0x0f, 0xdb, 0xdc, //0x00000c5f pand %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00000c63 pmovmskb %xmm3, %ecx - 0x48, 0x09, 0xce, //0x00000c67 orq %rcx, %rsi - 0x4d, 0x85, 0xf6, //0x00000c6a testq %r14, %r14 - 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x00000c6d jne LBB0_169 - 0x48, 0x85, 0xf6, //0x00000c73 testq %rsi, %rsi - 0x0f, 0x85, 0x15, 0x28, 0x00, 0x00, //0x00000c76 jne LBB0_588 - 0x49, 0x83, 0xc2, 0xc0, //0x00000c7c addq $-64, %r10 - 0x48, 0x83, 0xc0, 0x40, //0x00000c80 addq $64, %rax - 0x49, 0x83, 0xfa, 0x3f, //0x00000c84 cmpq $63, %r10 - 0x0f, 0x87, 0xb2, 0xfe, 0xff, 0xff, //0x00000c88 ja LBB0_148 - 0xe9, 0xff, 0x0c, 0x00, 0x00, //0x00000c8e jmp LBB0_154 - //0x00000c93 LBB0_165 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000c93 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x65, 0xc0, //0x00000c98 movq $-64(%rbp), %r12 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x00000c9c jne LBB0_168 - 0x49, 0x0f, 0xbc, 0xcd, //0x00000ca2 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00000ca6 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000ca9 movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00000cad jmp LBB0_168 - //0x00000cb2 LBB0_167 - 0x4c, 0x8b, 0x65, 0xc0, //0x00000cb2 movq $-64(%rbp), %r12 - //0x00000cb6 LBB0_168 - 0x4c, 0x89, 0xc1, //0x00000cb6 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000cb9 notq %rcx - 0x4c, 0x21, 0xe9, //0x00000cbc andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000cbf leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000cc3 orq %r8, %rdx - 0x48, 0x89, 0xd7, //0x00000cc6 movq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000cc9 notq %rdi - 0x4c, 0x21, 0xef, //0x00000ccc andq %r13, %rdi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000ccf movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xdf, //0x00000cd9 andq %rbx, %rdi - 0x45, 0x31, 0xc0, //0x00000cdc xorl %r8d, %r8d - 0x48, 0x01, 0xcf, //0x00000cdf addq %rcx, %rdi - 0x41, 0x0f, 0x92, 0xc0, //0x00000ce2 setb %r8b - 0x48, 0x01, 0xff, //0x00000ce6 addq %rdi, %rdi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000ce9 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xcf, //0x00000cf3 xorq %rcx, %rdi - 0x48, 0x21, 0xd7, //0x00000cf6 andq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000cf9 notq %rdi - 0x49, 0x21, 0xfe, //0x00000cfc andq %rdi, %r14 - 0xe9, 0x4e, 0xff, 0xff, 0xff, //0x00000cff jmp LBB0_151 - //0x00000d04 LBB0_169 - 0x49, 0x0f, 0xbc, 0xce, //0x00000d04 bsfq %r14, %rcx - 0x48, 0x85, 0xf6, //0x00000d08 testq %rsi, %rsi - 0x0f, 0x84, 0xdc, 0x02, 0x00, 0x00, //0x00000d0b je LBB0_212 - 0x48, 0x0f, 0xbc, 0xd6, //0x00000d11 bsfq %rsi, %rdx - 0xe9, 0xd8, 0x02, 0x00, 0x00, //0x00000d15 jmp LBB0_213 - //0x00000d1a LBB0_171 - 0x41, 0x89, 0xc8, //0x00000d1a movl %ecx, %r8d - 0x4d, 0x01, 0xd8, //0x00000d1d addq %r11, %r8 - 0x4d, 0x01, 0xe8, //0x00000d20 addq %r13, %r8 - 0xe9, 0x1f, 0x02, 0x00, 0x00, //0x00000d23 jmp LBB0_200 - //0x00000d28 LBB0_172 - 0x4d, 0x89, 0xce, //0x00000d28 movq %r9, %r14 - 0x49, 0x29, 0xc6, //0x00000d2b subq %rax, %r14 - 0x0f, 0x84, 0x17, 0x29, 0x00, 0x00, //0x00000d2e je LBB0_617 - 0x4c, 0x89, 0x4d, 0xa0, //0x00000d34 movq %r9, $-96(%rbp) - 0x49, 0x83, 0xfe, 0x40, //0x00000d38 cmpq $64, %r14 - 0x0f, 0x82, 0xda, 0x13, 0x00, 0x00, //0x00000d3c jb LBB0_413 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000d42 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc9, //0x00000d4a xorl %r9d, %r9d - 0x90, 0x90, 0x90, //0x00000d4d .p2align 4, 0x90 - //0x00000d50 LBB0_175 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x04, //0x00000d50 movdqu (%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x00000d56 movdqu $16(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x00000d5d movdqu $32(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000d64 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xdc, //0x00000d6b movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000d6f pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00000d73 pmovmskb %xmm3, %r15d - 0x66, 0x0f, 0x6f, 0xdd, //0x00000d78 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000d7c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00000d80 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xdf, //0x00000d84 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000d88 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xe3, //0x00000d8c pmovmskb %xmm3, %r12d - 0x66, 0x0f, 0x6f, 0xde, //0x00000d91 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00000d95 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000d99 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xdc, //0x00000d9e movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000da2 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00000da6 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdd, //0x00000dab movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000daf pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00000db3 pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xdf, //0x00000db7 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000dbb pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00000dbf pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x00000dc3 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00000dc7 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00000dcb pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xda, //0x00000dd0 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x00000dd4 pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00000dd8 pcmpgtb %xmm15, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x00000ddd pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000de1 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xda, //0x00000de5 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdf, //0x00000de9 pcmpgtb %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xff, //0x00000ded pcmpgtb %xmm15, %xmm7 - 0x66, 0x0f, 0xdb, 0xfb, //0x00000df2 pand %xmm3, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00000df6 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x6f, 0xda, //0x00000dfa movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00000dfe pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x00000e02 pcmpgtb %xmm15, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x00000e07 pand %xmm3, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xc6, //0x00000e0b pmovmskb %xmm6, %r8d - 0x49, 0xc1, 0xe3, 0x30, //0x00000e10 shlq $48, %r11 - 0x49, 0xc1, 0xe4, 0x20, //0x00000e14 shlq $32, %r12 - 0x4d, 0x09, 0xdc, //0x00000e18 orq %r11, %r12 - 0x48, 0xc1, 0xe1, 0x10, //0x00000e1b shlq $16, %rcx - 0x4c, 0x09, 0xe1, //0x00000e1f orq %r12, %rcx - 0x49, 0x09, 0xcf, //0x00000e22 orq %rcx, %r15 - 0x49, 0xc1, 0xe2, 0x30, //0x00000e25 shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x00000e29 shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x00000e2d orq %r10, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x00000e30 shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00000e34 orq %rsi, %rbx - 0x49, 0xc1, 0xe0, 0x30, //0x00000e37 shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x00000e3b shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x00000e3f orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00000e42 shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x00000e46 orq %rdx, %rdi - 0x49, 0x09, 0xdd, //0x00000e49 orq %rbx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x00000e4c jne LBB0_192 - 0x4d, 0x85, 0xc9, //0x00000e52 testq %r9, %r9 - 0x4c, 0x8b, 0x55, 0xb8, //0x00000e55 movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x73, 0x00, 0x00, 0x00, //0x00000e59 jne LBB0_194 - 0x45, 0x31, 0xc9, //0x00000e5f xorl %r9d, %r9d - 0x4c, 0x8b, 0x45, 0xd0, //0x00000e62 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x00000e66 movq $-64(%rbp), %r12 - //0x00000e6a LBB0_178 - 0x66, 0x0f, 0x6f, 0xda, //0x00000e6a movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00000e6e pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00000e72 pcmpgtb %xmm15, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00000e77 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000e7b pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00000e7f orq %rcx, %rdi - 0x4d, 0x85, 0xff, //0x00000e82 testq %r15, %r15 - 0x0f, 0x85, 0x9d, 0x00, 0x00, 0x00, //0x00000e85 jne LBB0_196 - 0x48, 0x85, 0xff, //0x00000e8b testq %rdi, %rdi - 0x0f, 0x85, 0x36, 0x26, 0x00, 0x00, //0x00000e8e jne LBB0_593 - 0x49, 0x83, 0xc6, 0xc0, //0x00000e94 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00000e98 addq $64, %rax - 0x49, 0x83, 0xfe, 0x3f, //0x00000e9c cmpq $63, %r14 - 0x0f, 0x87, 0xaa, 0xfe, 0xff, 0xff, //0x00000ea0 ja LBB0_175 - 0xe9, 0x88, 0x0c, 0x00, 0x00, //0x00000ea6 jmp LBB0_181 - //0x00000eab LBB0_192 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000eab cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x00000eb0 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x00000eb4 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x00000eb8 movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00000ebc jne LBB0_195 - 0x49, 0x0f, 0xbc, 0xcd, //0x00000ec2 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00000ec6 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000ec9 movq %rcx, $-56(%rbp) - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00000ecd jmp LBB0_195 - //0x00000ed2 LBB0_194 - 0x4c, 0x8b, 0x45, 0xd0, //0x00000ed2 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x00000ed6 movq $-64(%rbp), %r12 - //0x00000eda LBB0_195 - 0x4c, 0x89, 0xc9, //0x00000eda movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x00000edd notq %rcx - 0x4c, 0x21, 0xe9, //0x00000ee0 andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000ee3 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xca, //0x00000ee7 orq %r9, %rdx - 0x48, 0x89, 0xd6, //0x00000eea movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000eed notq %rsi - 0x4c, 0x21, 0xee, //0x00000ef0 andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000ef3 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00000efd andq %rbx, %rsi - 0x45, 0x31, 0xc9, //0x00000f00 xorl %r9d, %r9d - 0x48, 0x01, 0xce, //0x00000f03 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc1, //0x00000f06 setb %r9b - 0x48, 0x01, 0xf6, //0x00000f0a addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f0d movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000f17 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000f1a andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000f1d notq %rsi - 0x49, 0x21, 0xf7, //0x00000f20 andq %rsi, %r15 - 0xe9, 0x42, 0xff, 0xff, 0xff, //0x00000f23 jmp LBB0_178 - //0x00000f28 LBB0_196 - 0x49, 0x0f, 0xbc, 0xcf, //0x00000f28 bsfq %r15, %rcx - 0x48, 0x85, 0xff, //0x00000f2c testq %rdi, %rdi - 0x0f, 0x84, 0x28, 0x01, 0x00, 0x00, //0x00000f2f je LBB0_221 - 0x48, 0x0f, 0xbc, 0xd7, //0x00000f35 bsfq %rdi, %rdx - 0xe9, 0x24, 0x01, 0x00, 0x00, //0x00000f39 jmp LBB0_222 - //0x00000f3e LBB0_198 - 0x48, 0x01, 0xd1, //0x00000f3e addq %rdx, %rcx - 0x49, 0x89, 0xc8, //0x00000f41 movq %rcx, %r8 - //0x00000f44 LBB0_199 - 0x4d, 0x89, 0xd1, //0x00000f44 movq %r10, %r9 - //0x00000f47 LBB0_200 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000f47 movq $-1, %r13 - 0x4d, 0x85, 0xe4, //0x00000f4e testq %r12, %r12 - 0x0f, 0x84, 0x9d, 0x24, 0x00, 0x00, //0x00000f51 je LBB0_578 - 0x4d, 0x85, 0xff, //0x00000f57 testq %r15, %r15 - 0x0f, 0x84, 0x94, 0x24, 0x00, 0x00, //0x00000f5a je LBB0_578 - 0x4d, 0x85, 0xf6, //0x00000f60 testq %r14, %r14 - 0x0f, 0x84, 0x8b, 0x24, 0x00, 0x00, //0x00000f63 je LBB0_578 - 0x4d, 0x29, 0xd8, //0x00000f69 subq %r11, %r8 - 0x49, 0x8d, 0x48, 0xff, //0x00000f6c leaq $-1(%r8), %rcx - 0x49, 0x39, 0xcc, //0x00000f70 cmpq %rcx, %r12 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000f73 je LBB0_209 - 0x49, 0x39, 0xcf, //0x00000f79 cmpq %rcx, %r15 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00000f7c je LBB0_209 - 0x49, 0x39, 0xce, //0x00000f82 cmpq %rcx, %r14 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000f85 je LBB0_209 - 0x4d, 0x85, 0xff, //0x00000f8b testq %r15, %r15 - 0x0f, 0x8e, 0xa6, 0x00, 0x00, 0x00, //0x00000f8e jle LBB0_218 - 0x49, 0x8d, 0x4f, 0xff, //0x00000f94 leaq $-1(%r15), %rcx - 0x49, 0x39, 0xce, //0x00000f98 cmpq %rcx, %r14 - 0x0f, 0x84, 0x99, 0x00, 0x00, 0x00, //0x00000f9b je LBB0_218 - 0x49, 0xf7, 0xd7, //0x00000fa1 notq %r15 - 0x4d, 0x89, 0xfd, //0x00000fa4 movq %r15, %r13 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00000fa7 jmp LBB0_210 - //0x00000fac LBB0_209 - 0x49, 0xf7, 0xd8, //0x00000fac negq %r8 - 0x4d, 0x89, 0xc5, //0x00000faf movq %r8, %r13 - //0x00000fb2 LBB0_210 - 0x4d, 0x85, 0xed, //0x00000fb2 testq %r13, %r13 - 0x0f, 0x88, 0x39, 0x24, 0x00, 0x00, //0x00000fb5 js LBB0_578 - //0x00000fbb LBB0_211 - 0x49, 0x01, 0xc5, //0x00000fbb addq %rax, %r13 - 0x4c, 0x8b, 0x45, 0xd0, //0x00000fbe movq $-48(%rbp), %r8 - 0x4d, 0x89, 0x28, //0x00000fc2 movq %r13, (%r8) - 0x48, 0x85, 0xc0, //0x00000fc5 testq %rax, %rax - 0x48, 0x8b, 0x7d, 0xb0, //0x00000fc8 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00000fcc movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00000fd0 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000fd4 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00000fde movq $-72(%rbp), %r10 - 0x0f, 0x89, 0x33, 0xf3, 0xff, 0xff, //0x00000fe2 jns LBB0_28 - 0xe9, 0x3c, 0x24, 0x00, 0x00, //0x00000fe8 jmp LBB0_580 - //0x00000fed LBB0_212 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00000fed movl $64, %edx - //0x00000ff2 LBB0_213 - 0x4c, 0x8b, 0x45, 0xd0, //0x00000ff2 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00000ff6 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00000ffa movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000ffe movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001008 movq $-72(%rbp), %r10 - 0x48, 0x39, 0xca, //0x0000100c cmpq %rcx, %rdx - 0x0f, 0x82, 0xf2, 0x25, 0x00, 0x00, //0x0000100f jb LBB0_610 - 0x48, 0x01, 0xc8, //0x00001015 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001018 addq $1, %rax - //0x0000101c LBB0_215 - 0x48, 0x85, 0xc0, //0x0000101c testq %rax, %rax - 0x0f, 0x88, 0x7a, 0x19, 0x00, 0x00, //0x0000101f js LBB0_508 - 0x49, 0x89, 0x00, //0x00001025 movq %rax, (%r8) - 0x48, 0x8b, 0x45, 0x90, //0x00001028 movq $-112(%rbp), %rax - 0x48, 0x85, 0xc0, //0x0000102c testq %rax, %rax - 0x0f, 0x8f, 0xe6, 0xf2, 0xff, 0xff, //0x0000102f jg LBB0_28 - 0xe9, 0x5c, 0x19, 0x00, 0x00, //0x00001035 jmp LBB0_217 - //0x0000103a LBB0_218 - 0x4c, 0x89, 0xe1, //0x0000103a movq %r12, %rcx - 0x4c, 0x09, 0xf1, //0x0000103d orq %r14, %rcx - 0x0f, 0x99, 0xc1, //0x00001040 setns %cl - 0x0f, 0x88, 0x41, 0x05, 0x00, 0x00, //0x00001043 js LBB0_302 - 0x4d, 0x39, 0xf4, //0x00001049 cmpq %r14, %r12 - 0x0f, 0x8c, 0x38, 0x05, 0x00, 0x00, //0x0000104c jl LBB0_302 - 0x49, 0xf7, 0xd4, //0x00001052 notq %r12 - 0x4d, 0x89, 0xe5, //0x00001055 movq %r12, %r13 - 0xe9, 0x55, 0xff, 0xff, 0xff, //0x00001058 jmp LBB0_210 - //0x0000105d LBB0_221 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000105d movl $64, %edx - //0x00001062 LBB0_222 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001062 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001066 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000106a movabsq $4294977024, %r14 - 0x48, 0x39, 0xca, //0x00001074 cmpq %rcx, %rdx - 0x0f, 0x82, 0x8a, 0x25, 0x00, 0x00, //0x00001077 jb LBB0_610 - 0x48, 0x01, 0xc8, //0x0000107d addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001080 addq $1, %rax - //0x00001084 LBB0_224 - 0x4c, 0x8b, 0x6d, 0xa0, //0x00001084 movq $-96(%rbp), %r13 - //0x00001088 LBB0_225 - 0x48, 0x85, 0xc0, //0x00001088 testq %rax, %rax - 0x0f, 0x88, 0x7d, 0x23, 0x00, 0x00, //0x0000108b js LBB0_581 - 0x49, 0x89, 0x00, //0x00001091 movq %rax, (%r8) - 0x48, 0x8b, 0x45, 0x90, //0x00001094 movq $-112(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001098 testq %rax, %rax - 0x0f, 0x8e, 0xf5, 0x18, 0x00, 0x00, //0x0000109b jle LBB0_217 - 0x49, 0x8b, 0x03, //0x000010a1 movq (%r11), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000010a4 cmpq $4095, %rax - 0x0f, 0x8f, 0xda, 0x18, 0x00, 0x00, //0x000010aa jg LBB0_597 - 0x48, 0x8d, 0x48, 0x01, //0x000010b0 leaq $1(%rax), %rcx - 0x49, 0x89, 0x0b, //0x000010b4 movq %rcx, (%r11) - 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000010b7 movq $4, $8(%r11,%rax,8) - 0xe9, 0x56, 0xf2, 0xff, 0xff, //0x000010c0 jmp LBB0_28 - //0x000010c5 LBB0_229 - 0x49, 0x8b, 0x08, //0x000010c5 movq (%r8), %rcx - 0x48, 0x8b, 0x47, 0x08, //0x000010c8 movq $8(%rdi), %rax - 0xf6, 0x85, 0x68, 0xff, 0xff, 0xff, 0x20, //0x000010cc testb $32, $-152(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x000010d3 movq %rax, $-96(%rbp) - 0x48, 0x89, 0x4d, 0x90, //0x000010d7 movq %rcx, $-112(%rbp) - 0x0f, 0x85, 0xc5, 0x04, 0x00, 0x00, //0x000010db jne LBB0_303 - 0x49, 0x89, 0xc1, //0x000010e1 movq %rax, %r9 - 0x49, 0x29, 0xc9, //0x000010e4 subq %rcx, %r9 - 0x0f, 0x84, 0x55, 0x25, 0x00, 0x00, //0x000010e7 je LBB0_614 - 0x49, 0x83, 0xf9, 0x40, //0x000010ed cmpq $64, %r9 - 0x0f, 0x82, 0xb7, 0x10, 0x00, 0x00, //0x000010f1 jb LBB0_418 - 0x49, 0x89, 0xce, //0x000010f7 movq %rcx, %r14 - 0x49, 0xf7, 0xd6, //0x000010fa notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000010fd movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x00001105 movq %rcx, %rax - 0x45, 0x31, 0xc0, //0x00001108 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000110b .p2align 4, 0x90 - //0x00001110 LBB0_233 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001110 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001116 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000111d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001124 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000112b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000112f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001133 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00001138 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000113c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x00001140 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x00001144 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00001148 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000114c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x00001150 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00001154 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00001158 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x0000115c pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001160 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x00001165 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00001169 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x74, 0xe9, //0x0000116d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001171 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x00001175 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00001179 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x0000117e shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x00001182 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x00001186 orq %rdx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00001189 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x0000118d orq %rdi, %rcx - 0x49, 0x09, 0xca, //0x00001190 orq %rcx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x00001193 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x00001197 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x0000119b orq %r15, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x0000119e shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x000011a2 orq %rsi, %rbx - 0x49, 0x09, 0xdb, //0x000011a5 orq %rbx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000011a8 jne LBB0_243 - 0x4d, 0x85, 0xc0, //0x000011ae testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000011b1 jne LBB0_245 - 0x45, 0x31, 0xc0, //0x000011b7 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x000011ba testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000011bd jne LBB0_246 - //0x000011c3 LBB0_236 - 0x49, 0x83, 0xc1, 0xc0, //0x000011c3 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x000011c7 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x000011cb addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x000011cf cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000011d3 ja LBB0_233 - 0xe9, 0x1a, 0x0c, 0x00, 0x00, //0x000011d9 jmp LBB0_237 - //0x000011de LBB0_243 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000011de cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000011e3 jne LBB0_245 - 0x49, 0x0f, 0xbc, 0xcb, //0x000011e9 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x000011ed addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x000011f0 movq %rcx, $-56(%rbp) - //0x000011f4 LBB0_245 - 0x4c, 0x89, 0xc1, //0x000011f4 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x000011f7 notq %rcx - 0x4c, 0x21, 0xd9, //0x000011fa andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x000011fd leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00001201 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00001204 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001207 notq %rsi - 0x4c, 0x21, 0xde, //0x0000120a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000120d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00001217 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x0000121a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x0000121d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00001220 setb %r8b - 0x48, 0x01, 0xf6, //0x00001224 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001227 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00001231 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00001234 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001237 notq %rsi - 0x49, 0x21, 0xf2, //0x0000123a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x0000123d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00001240 je LBB0_236 - //0x00001246 LBB0_246 - 0x49, 0x0f, 0xbc, 0xc2, //0x00001246 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x0000124a subq %r14, %rax - //0x0000124d LBB0_247 - 0x4c, 0x8b, 0x45, 0xd0, //0x0000124d movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001251 movq $-80(%rbp), %rdi - //0x00001255 LBB0_248 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001255 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001259 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001263 movq $-72(%rbp), %r10 - 0xe9, 0x2f, 0x06, 0x00, 0x00, //0x00001267 jmp LBB0_346 - //0x0000126c LBB0_249 - 0x4c, 0x8b, 0x7f, 0x08, //0x0000126c movq $8(%rdi), %r15 - 0x49, 0x8b, 0x00, //0x00001270 movq (%r8), %rax - 0x49, 0x29, 0xc7, //0x00001273 subq %rax, %r15 - 0x0f, 0x84, 0x6b, 0x22, 0x00, 0x00, //0x00001276 je LBB0_595 - 0x4d, 0x8d, 0x14, 0x04, //0x0000127c leaq (%r12,%rax), %r10 - 0x41, 0x80, 0x3a, 0x30, //0x00001280 cmpb $48, (%r10) - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00001284 jne LBB0_254 - 0x41, 0xbe, 0x01, 0x00, 0x00, 0x00, //0x0000128a movl $1, %r14d - 0x49, 0x83, 0xff, 0x01, //0x00001290 cmpq $1, %r15 - 0x0f, 0x84, 0xa4, 0x05, 0x00, 0x00, //0x00001294 je LBB0_342 - 0x41, 0x8a, 0x4a, 0x01, //0x0000129a movb $1(%r10), %cl - 0x80, 0xc1, 0xd2, //0x0000129e addb $-46, %cl - 0x80, 0xf9, 0x37, //0x000012a1 cmpb $55, %cl - 0x0f, 0x87, 0x94, 0x05, 0x00, 0x00, //0x000012a4 ja LBB0_342 - 0x0f, 0xb6, 0xc9, //0x000012aa movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000012ad movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x000012b7 btq %rcx, %rdx - 0x0f, 0x83, 0x7d, 0x05, 0x00, 0x00, //0x000012bb jae LBB0_342 - //0x000012c1 LBB0_254 - 0x49, 0x83, 0xff, 0x10, //0x000012c1 cmpq $16, %r15 - 0x0f, 0x82, 0xc3, 0x0e, 0x00, 0x00, //0x000012c5 jb LBB0_417 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000012cb movq $-1, %r13 - 0x45, 0x31, 0xf6, //0x000012d2 xorl %r14d, %r14d - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000012d5 movq $-1, %r12 - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000012dc movq $-1, %r11 - 0x4c, 0x89, 0xff, //0x000012e3 movq %r15, %rdi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000012e6 .p2align 4, 0x90 - //0x000012f0 LBB0_256 - 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x32, //0x000012f0 movdqu (%r10,%r14), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000012f6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x000012fa pcmpgtb %xmm8, %xmm4 - 0x66, 0x41, 0x0f, 0x6f, 0xee, //0x000012ff movdqa %xmm14, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001304 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x00001308 pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000130c movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x00001310 pcmpeqb %xmm9, %xmm4 - 0x66, 0x0f, 0x6f, 0xf3, //0x00001315 movdqa %xmm3, %xmm6 - 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x00001319 pcmpeqb %xmm10, %xmm6 - 0x66, 0x0f, 0xeb, 0xf4, //0x0000131e por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001322 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00001326 pand %xmm11, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xdc, //0x0000132b pcmpeqb %xmm12, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00001330 pcmpeqb %xmm13, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00001335 pmovmskb %xmm4, %esi - 0x66, 0x0f, 0xeb, 0xe3, //0x00001339 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x0000133d por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x00001341 por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xdb, //0x00001345 pmovmskb %xmm3, %ebx - 0x66, 0x44, 0x0f, 0xd7, 0xc6, //0x00001349 pmovmskb %xmm6, %r8d - 0x66, 0x0f, 0xd7, 0xcd, //0x0000134e pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x00001352 notl %ecx - 0x0f, 0xbc, 0xc9, //0x00001354 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00001357 cmpl $16, %ecx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000135a je LBB0_258 - 0xba, 0xff, 0xff, 0xff, 0xff, //0x00001360 movl $-1, %edx - 0xd3, 0xe2, //0x00001365 shll %cl, %edx - 0xf7, 0xd2, //0x00001367 notl %edx - 0x21, 0xd3, //0x00001369 andl %edx, %ebx - 0x21, 0xd6, //0x0000136b andl %edx, %esi - 0x44, 0x21, 0xc2, //0x0000136d andl %r8d, %edx - 0x41, 0x89, 0xd0, //0x00001370 movl %edx, %r8d - //0x00001373 LBB0_258 - 0x8d, 0x53, 0xff, //0x00001373 leal $-1(%rbx), %edx - 0x21, 0xda, //0x00001376 andl %ebx, %edx - 0x0f, 0x85, 0x3b, 0x0a, 0x00, 0x00, //0x00001378 jne LBB0_385 - 0x8d, 0x56, 0xff, //0x0000137e leal $-1(%rsi), %edx - 0x21, 0xf2, //0x00001381 andl %esi, %edx - 0x0f, 0x85, 0x30, 0x0a, 0x00, 0x00, //0x00001383 jne LBB0_385 - 0x41, 0x8d, 0x50, 0xff, //0x00001389 leal $-1(%r8), %edx - 0x44, 0x21, 0xc2, //0x0000138d andl %r8d, %edx - 0x0f, 0x85, 0x23, 0x0a, 0x00, 0x00, //0x00001390 jne LBB0_385 - 0x85, 0xdb, //0x00001396 testl %ebx, %ebx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001398 je LBB0_264 - 0x0f, 0xbc, 0xdb, //0x0000139e bsfl %ebx, %ebx - 0x49, 0x83, 0xfb, 0xff, //0x000013a1 cmpq $-1, %r11 - 0x0f, 0x85, 0xf1, 0x0b, 0x00, 0x00, //0x000013a5 jne LBB0_391 - 0x4c, 0x01, 0xf3, //0x000013ab addq %r14, %rbx - 0x49, 0x89, 0xdb, //0x000013ae movq %rbx, %r11 - //0x000013b1 LBB0_264 - 0x85, 0xf6, //0x000013b1 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000013b3 je LBB0_267 - 0x0f, 0xbc, 0xf6, //0x000013b9 bsfl %esi, %esi - 0x49, 0x83, 0xfc, 0xff, //0x000013bc cmpq $-1, %r12 - 0x0f, 0x85, 0xdd, 0x0b, 0x00, 0x00, //0x000013c0 jne LBB0_392 - 0x4c, 0x01, 0xf6, //0x000013c6 addq %r14, %rsi - 0x49, 0x89, 0xf4, //0x000013c9 movq %rsi, %r12 - //0x000013cc LBB0_267 - 0x45, 0x85, 0xc0, //0x000013cc testl %r8d, %r8d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000013cf je LBB0_270 - 0x41, 0x0f, 0xbc, 0xd0, //0x000013d5 bsfl %r8d, %edx - 0x49, 0x83, 0xfd, 0xff, //0x000013d9 cmpq $-1, %r13 - 0x0f, 0x85, 0xc7, 0x0b, 0x00, 0x00, //0x000013dd jne LBB0_393 - 0x4c, 0x01, 0xf2, //0x000013e3 addq %r14, %rdx - 0x49, 0x89, 0xd5, //0x000013e6 movq %rdx, %r13 - //0x000013e9 LBB0_270 - 0x83, 0xf9, 0x10, //0x000013e9 cmpl $16, %ecx - 0x0f, 0x85, 0xc4, 0x03, 0x00, 0x00, //0x000013ec jne LBB0_329 - 0x48, 0x83, 0xc7, 0xf0, //0x000013f2 addq $-16, %rdi - 0x49, 0x83, 0xc6, 0x10, //0x000013f6 addq $16, %r14 - 0x48, 0x83, 0xff, 0x0f, //0x000013fa cmpq $15, %rdi - 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x000013fe ja LBB0_256 - 0x4b, 0x8d, 0x0c, 0x32, //0x00001404 leaq (%r10,%r14), %rcx - 0x49, 0x89, 0xc8, //0x00001408 movq %rcx, %r8 - 0x4d, 0x39, 0xf7, //0x0000140b cmpq %r14, %r15 - 0x0f, 0x84, 0xb6, 0x03, 0x00, 0x00, //0x0000140e je LBB0_331 - //0x00001414 LBB0_273 - 0x4c, 0x8d, 0x04, 0x39, //0x00001414 leaq (%rcx,%rdi), %r8 - 0x49, 0x89, 0xc9, //0x00001418 movq %rcx, %r9 - 0x4d, 0x29, 0xd1, //0x0000141b subq %r10, %r9 - 0x31, 0xd2, //0x0000141e xorl %edx, %edx - 0x4c, 0x8d, 0x35, 0x09, 0x27, 0x00, 0x00, //0x00001420 leaq $9993(%rip), %r14 /* LJTI0_3+0(%rip) */ - 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00001427 jmp LBB0_277 - //0x0000142c LBB0_274 - 0x49, 0x83, 0xfd, 0xff, //0x0000142c cmpq $-1, %r13 - 0x0f, 0x85, 0xac, 0x09, 0x00, 0x00, //0x00001430 jne LBB0_389 - 0x4d, 0x8d, 0x2c, 0x11, //0x00001436 leaq (%r9,%rdx), %r13 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000143a .p2align 4, 0x90 - //0x00001440 LBB0_276 - 0x48, 0x83, 0xc2, 0x01, //0x00001440 addq $1, %rdx - 0x48, 0x39, 0xd7, //0x00001444 cmpq %rdx, %rdi - 0x0f, 0x84, 0x7d, 0x03, 0x00, 0x00, //0x00001447 je LBB0_331 - //0x0000144d LBB0_277 - 0x0f, 0xbe, 0x1c, 0x11, //0x0000144d movsbl (%rcx,%rdx), %ebx - 0x8d, 0x73, 0xd0, //0x00001451 leal $-48(%rbx), %esi - 0x83, 0xfe, 0x0a, //0x00001454 cmpl $10, %esi - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00001457 jb LBB0_276 - 0x8d, 0x73, 0xd5, //0x0000145d leal $-43(%rbx), %esi - 0x83, 0xfe, 0x1a, //0x00001460 cmpl $26, %esi - 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00001463 ja LBB0_282 - 0x49, 0x63, 0x34, 0xb6, //0x00001469 movslq (%r14,%rsi,4), %rsi - 0x4c, 0x01, 0xf6, //0x0000146d addq %r14, %rsi - 0xff, 0xe6, //0x00001470 jmpq *%rsi - //0x00001472 LBB0_280 - 0x49, 0x83, 0xfb, 0xff, //0x00001472 cmpq $-1, %r11 - 0x0f, 0x85, 0x66, 0x09, 0x00, 0x00, //0x00001476 jne LBB0_389 - 0x4d, 0x8d, 0x1c, 0x11, //0x0000147c leaq (%r9,%rdx), %r11 - 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00001480 jmp LBB0_276 - //0x00001485 LBB0_282 - 0x83, 0xfb, 0x65, //0x00001485 cmpl $101, %ebx - 0x0f, 0x85, 0x36, 0x03, 0x00, 0x00, //0x00001488 jne LBB0_330 - //0x0000148e LBB0_283 - 0x49, 0x83, 0xfc, 0xff, //0x0000148e cmpq $-1, %r12 - 0x0f, 0x85, 0x4a, 0x09, 0x00, 0x00, //0x00001492 jne LBB0_389 - 0x4d, 0x8d, 0x24, 0x11, //0x00001498 leaq (%r9,%rdx), %r12 - 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000149c jmp LBB0_276 - //0x000014a1 LBB0_285 - 0x49, 0x8b, 0x03, //0x000014a1 movq (%r11), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000014a4 cmpq $4095, %rax - 0x0f, 0x8f, 0xda, 0x14, 0x00, 0x00, //0x000014aa jg LBB0_597 - 0x48, 0x8d, 0x48, 0x01, //0x000014b0 leaq $1(%rax), %rcx - 0x49, 0x89, 0x0b, //0x000014b4 movq %rcx, (%r11) - 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000014b7 movq $5, $8(%r11,%rax,8) - 0xe9, 0x56, 0xee, 0xff, 0xff, //0x000014c0 jmp LBB0_28 - //0x000014c5 LBB0_287 - 0x49, 0x8b, 0x08, //0x000014c5 movq (%r8), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x000014c8 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x72, 0xfc, //0x000014cc leaq $-4(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x000014d0 cmpq %rsi, %rcx - 0x0f, 0x87, 0x4d, 0x1f, 0x00, 0x00, //0x000014d3 ja LBB0_510 - 0x41, 0x8b, 0x14, 0x0c, //0x000014d9 movl (%r12,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000014dd cmpl $1702063201, %edx - 0x0f, 0x85, 0x17, 0x20, 0x00, 0x00, //0x000014e3 jne LBB0_599 - 0x48, 0x8d, 0x41, 0x04, //0x000014e9 leaq $4(%rcx), %rax - 0x49, 0x89, 0x00, //0x000014ed movq %rax, (%r8) - 0x48, 0x85, 0xc9, //0x000014f0 testq %rcx, %rcx - 0x0f, 0x8f, 0x22, 0xee, 0xff, 0xff, //0x000014f3 jg LBB0_28 - 0xe9, 0xf9, 0x20, 0x00, 0x00, //0x000014f9 jmp LBB0_290 - //0x000014fe LBB0_291 - 0x49, 0x8b, 0x08, //0x000014fe movq (%r8), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x00001501 movq $8(%rdi), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001505 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001509 cmpq %rsi, %rcx - 0x0f, 0x87, 0x14, 0x1f, 0x00, 0x00, //0x0000150c ja LBB0_510 - 0x48, 0x8d, 0x41, 0xff, //0x00001512 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001516 cmpl $1819047278, $-1(%r12,%rcx) - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x0000151f je LBB0_299 - 0xe9, 0x2b, 0x20, 0x00, 0x00, //0x00001525 jmp LBB0_293 - //0x0000152a LBB0_297 - 0x49, 0x8b, 0x08, //0x0000152a movq (%r8), %rcx - 0x48, 0x8b, 0x57, 0x08, //0x0000152d movq $8(%rdi), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001531 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001535 cmpq %rsi, %rcx - 0x0f, 0x87, 0xe8, 0x1e, 0x00, 0x00, //0x00001538 ja LBB0_510 - 0x48, 0x8d, 0x41, 0xff, //0x0000153e leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001542 cmpl $1702195828, $-1(%r12,%rcx) - 0x0f, 0x85, 0x4b, 0x20, 0x00, 0x00, //0x0000154b jne LBB0_604 - //0x00001551 LBB0_299 - 0x48, 0x8d, 0x51, 0x03, //0x00001551 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x10, //0x00001555 movq %rdx, (%r8) - 0x48, 0x85, 0xc9, //0x00001558 testq %rcx, %rcx - 0x0f, 0x8f, 0xba, 0xed, 0xff, 0xff, //0x0000155b jg LBB0_28 - 0xe9, 0xc3, 0x1e, 0x00, 0x00, //0x00001561 jmp LBB0_580 - //0x00001566 LBB0_300 - 0x49, 0x8b, 0x03, //0x00001566 movq (%r11), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001569 cmpq $4095, %rax - 0x0f, 0x8f, 0x15, 0x14, 0x00, 0x00, //0x0000156f jg LBB0_597 - 0x48, 0x8d, 0x48, 0x01, //0x00001575 leaq $1(%rax), %rcx - 0x49, 0x89, 0x0b, //0x00001579 movq %rcx, (%r11) - 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000157c movq $6, $8(%r11,%rax,8) - 0xe9, 0x91, 0xed, 0xff, 0xff, //0x00001585 jmp LBB0_28 - //0x0000158a LBB0_302 - 0x49, 0x8d, 0x56, 0xff, //0x0000158a leaq $-1(%r14), %rdx - 0x49, 0x39, 0xd4, //0x0000158e cmpq %rdx, %r12 - 0x49, 0xf7, 0xd6, //0x00001591 notq %r14 - 0x4d, 0x0f, 0x45, 0xf0, //0x00001594 cmovneq %r8, %r14 - 0x84, 0xc9, //0x00001598 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xf0, //0x0000159a cmoveq %r8, %r14 - 0x4d, 0x89, 0xf5, //0x0000159e movq %r14, %r13 - 0xe9, 0x0c, 0xfa, 0xff, 0xff, //0x000015a1 jmp LBB0_210 - //0x000015a6 LBB0_303 - 0x49, 0x89, 0xc6, //0x000015a6 movq %rax, %r14 - 0x49, 0x29, 0xce, //0x000015a9 subq %rcx, %r14 - 0x0f, 0x84, 0x90, 0x20, 0x00, 0x00, //0x000015ac je LBB0_614 - 0x49, 0x83, 0xfe, 0x40, //0x000015b2 cmpq $64, %r14 - 0x0f, 0x82, 0x06, 0x0c, 0x00, 0x00, //0x000015b6 jb LBB0_419 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000015bc movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x000015c4 movq %rcx, %rax - 0x45, 0x31, 0xc0, //0x000015c7 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000015ca .p2align 4, 0x90 - //0x000015d0 LBB0_306 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x04, //0x000015d0 movdqu (%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x000015d6 movdqu $16(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x000015dd movdqu $32(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x000015e4 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xdc, //0x000015eb movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000015ef pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x000015f3 pmovmskb %xmm3, %r15d - 0x66, 0x0f, 0x6f, 0xdd, //0x000015f8 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000015fc pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001600 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xdf, //0x00001604 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001608 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xe3, //0x0000160c pmovmskb %xmm3, %r12d - 0x66, 0x0f, 0x6f, 0xde, //0x00001611 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001615 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001619 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xdc, //0x0000161e movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001622 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001626 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdd, //0x0000162b movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000162f pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00001633 pmovmskb %xmm3, %r9d - 0x66, 0x0f, 0x6f, 0xdf, //0x00001638 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000163c pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001640 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xde, //0x00001644 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001648 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x0000164c pmovmskb %xmm3, %r10d - 0x66, 0x0f, 0x6f, 0xda, //0x00001651 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x00001655 pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00001659 pcmpgtb %xmm15, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x0000165e pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00001662 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xda, //0x00001666 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdf, //0x0000166a pcmpgtb %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xff, //0x0000166e pcmpgtb %xmm15, %xmm7 - 0x66, 0x0f, 0xdb, 0xfb, //0x00001673 pand %xmm3, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00001677 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x6f, 0xda, //0x0000167b movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x0000167f pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x00001683 pcmpgtb %xmm15, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x00001688 pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xde, //0x0000168c pmovmskb %xmm6, %ebx - 0x49, 0xc1, 0xe3, 0x30, //0x00001690 shlq $48, %r11 - 0x49, 0xc1, 0xe4, 0x20, //0x00001694 shlq $32, %r12 - 0x4d, 0x09, 0xdc, //0x00001698 orq %r11, %r12 - 0x48, 0xc1, 0xe1, 0x10, //0x0000169b shlq $16, %rcx - 0x4c, 0x09, 0xe1, //0x0000169f orq %r12, %rcx - 0x49, 0x09, 0xcf, //0x000016a2 orq %rcx, %r15 - 0x49, 0xc1, 0xe2, 0x30, //0x000016a5 shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x000016a9 shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x000016ad orq %r10, %rsi - 0x49, 0xc1, 0xe1, 0x10, //0x000016b0 shlq $16, %r9 - 0x49, 0x09, 0xf1, //0x000016b4 orq %rsi, %r9 - 0x48, 0xc1, 0xe3, 0x30, //0x000016b7 shlq $48, %rbx - 0x48, 0xc1, 0xe2, 0x20, //0x000016bb shlq $32, %rdx - 0x48, 0x09, 0xda, //0x000016bf orq %rbx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000016c2 shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000016c6 orq %rdx, %rdi - 0x4d, 0x09, 0xcd, //0x000016c9 orq %r9, %r13 - 0x0f, 0x85, 0x55, 0x00, 0x00, 0x00, //0x000016cc jne LBB0_323 - 0x4d, 0x85, 0xc0, //0x000016d2 testq %r8, %r8 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000016d5 jne LBB0_325 - 0x45, 0x31, 0xc0, //0x000016db xorl %r8d, %r8d - 0x4c, 0x8b, 0x65, 0xc0, //0x000016de movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x000016e2 movq $-72(%rbp), %r10 - //0x000016e6 LBB0_309 - 0x66, 0x0f, 0x6f, 0xda, //0x000016e6 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000016ea pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x000016ee pcmpgtb %xmm15, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000016f3 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000016f7 pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x000016fb orq %rcx, %rdi - 0x4d, 0x85, 0xff, //0x000016fe testq %r15, %r15 - 0x0f, 0x85, 0x99, 0x00, 0x00, 0x00, //0x00001701 jne LBB0_327 - 0x48, 0x85, 0xff, //0x00001707 testq %rdi, %rdi - 0x0f, 0x85, 0x09, 0x1f, 0x00, 0x00, //0x0000170a jne LBB0_611 - 0x49, 0x83, 0xc6, 0xc0, //0x00001710 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00001714 addq $64, %rax - 0x49, 0x83, 0xfe, 0x3f, //0x00001718 cmpq $63, %r14 - 0x0f, 0x87, 0xae, 0xfe, 0xff, 0xff, //0x0000171c ja LBB0_306 - 0xe9, 0x62, 0x07, 0x00, 0x00, //0x00001722 jmp LBB0_312 - //0x00001727 LBB0_323 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001727 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x65, 0xc0, //0x0000172c movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001730 movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00001734 jne LBB0_326 - 0x49, 0x0f, 0xbc, 0xcd, //0x0000173a bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x0000173e addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00001741 movq %rcx, $-56(%rbp) - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00001745 jmp LBB0_326 - //0x0000174a LBB0_325 - 0x4c, 0x8b, 0x65, 0xc0, //0x0000174a movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000174e movq $-72(%rbp), %r10 - //0x00001752 LBB0_326 - 0x4c, 0x89, 0xc1, //0x00001752 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00001755 notq %rcx - 0x4c, 0x21, 0xe9, //0x00001758 andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000175b leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x0000175f orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00001762 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001765 notq %rsi - 0x4c, 0x21, 0xee, //0x00001768 andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000176b movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00001775 andq %rbx, %rsi - 0x45, 0x31, 0xc0, //0x00001778 xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x0000177b addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x0000177e setb %r8b - 0x48, 0x01, 0xf6, //0x00001782 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001785 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x0000178f xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00001792 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001795 notq %rsi - 0x49, 0x21, 0xf7, //0x00001798 andq %rsi, %r15 - 0xe9, 0x46, 0xff, 0xff, 0xff, //0x0000179b jmp LBB0_309 - //0x000017a0 LBB0_327 - 0x49, 0x0f, 0xbc, 0xcf, //0x000017a0 bsfq %r15, %rcx - 0x48, 0x85, 0xff, //0x000017a4 testq %rdi, %rdi - 0x0f, 0x84, 0xc3, 0x00, 0x00, 0x00, //0x000017a7 je LBB0_343 - 0x48, 0x0f, 0xbc, 0xd7, //0x000017ad bsfq %rdi, %rdx - 0xe9, 0xbf, 0x00, 0x00, 0x00, //0x000017b1 jmp LBB0_344 - //0x000017b6 LBB0_329 - 0x41, 0x89, 0xc8, //0x000017b6 movl %ecx, %r8d - 0x4d, 0x01, 0xd0, //0x000017b9 addq %r10, %r8 - 0x4d, 0x01, 0xf0, //0x000017bc addq %r14, %r8 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000017bf jmp LBB0_331 - //0x000017c4 LBB0_330 - 0x48, 0x01, 0xd1, //0x000017c4 addq %rdx, %rcx - 0x49, 0x89, 0xc8, //0x000017c7 movq %rcx, %r8 - //0x000017ca LBB0_331 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000017ca movq $-1, %r14 - 0x4d, 0x85, 0xdb, //0x000017d1 testq %r11, %r11 - 0x0f, 0x84, 0x14, 0x1d, 0x00, 0x00, //0x000017d4 je LBB0_596 - 0x4d, 0x85, 0xed, //0x000017da testq %r13, %r13 - 0x0f, 0x84, 0x0b, 0x1d, 0x00, 0x00, //0x000017dd je LBB0_596 - 0x4d, 0x85, 0xe4, //0x000017e3 testq %r12, %r12 - 0x0f, 0x84, 0x02, 0x1d, 0x00, 0x00, //0x000017e6 je LBB0_596 - 0x4d, 0x29, 0xd0, //0x000017ec subq %r10, %r8 - 0x49, 0x8d, 0x48, 0xff, //0x000017ef leaq $-1(%r8), %rcx - 0x49, 0x39, 0xcb, //0x000017f3 cmpq %rcx, %r11 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000017f6 je LBB0_340 - 0x49, 0x39, 0xcd, //0x000017fc cmpq %rcx, %r13 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x000017ff je LBB0_340 - 0x49, 0x39, 0xcc, //0x00001805 cmpq %rcx, %r12 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00001808 je LBB0_340 - 0x4d, 0x85, 0xed, //0x0000180e testq %r13, %r13 - 0x0f, 0x8e, 0xae, 0x00, 0x00, 0x00, //0x00001811 jle LBB0_351 - 0x49, 0x8d, 0x4d, 0xff, //0x00001817 leaq $-1(%r13), %rcx - 0x49, 0x39, 0xcc, //0x0000181b cmpq %rcx, %r12 - 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, //0x0000181e je LBB0_351 - 0x49, 0xf7, 0xd5, //0x00001824 notq %r13 - 0x4d, 0x89, 0xee, //0x00001827 movq %r13, %r14 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x0000182a jmp LBB0_341 - //0x0000182f LBB0_340 - 0x49, 0xf7, 0xd8, //0x0000182f negq %r8 - 0x4d, 0x89, 0xc6, //0x00001832 movq %r8, %r14 - //0x00001835 LBB0_341 - 0x4d, 0x85, 0xf6, //0x00001835 testq %r14, %r14 - 0x0f, 0x88, 0xb0, 0x1c, 0x00, 0x00, //0x00001838 js LBB0_596 - //0x0000183e LBB0_342 - 0x49, 0x01, 0xc6, //0x0000183e addq %rax, %r14 - 0x4c, 0x8b, 0x45, 0xd0, //0x00001841 movq $-48(%rbp), %r8 - 0x4d, 0x89, 0x30, //0x00001845 movq %r14, (%r8) - 0x48, 0x85, 0xc0, //0x00001848 testq %rax, %rax - 0x48, 0x8b, 0x7d, 0xb0, //0x0000184b movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x0000184f movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001853 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001857 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001861 movq $-72(%rbp), %r10 - 0x0f, 0x8f, 0xb0, 0xea, 0xff, 0xff, //0x00001865 jg LBB0_28 - 0xe9, 0x26, 0x11, 0x00, 0x00, //0x0000186b jmp LBB0_217 - //0x00001870 LBB0_343 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001870 movl $64, %edx - //0x00001875 LBB0_344 - 0x4c, 0x8b, 0x45, 0xd0, //0x00001875 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001879 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x0000187d movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001881 movabsq $4294977024, %r14 - 0x48, 0x39, 0xca, //0x0000188b cmpq %rcx, %rdx - 0x0f, 0x82, 0x73, 0x1d, 0x00, 0x00, //0x0000188e jb LBB0_610 - 0x48, 0x01, 0xc8, //0x00001894 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001897 addq $1, %rax - //0x0000189b LBB0_346 - 0x48, 0x85, 0xc0, //0x0000189b testq %rax, %rax - 0x0f, 0x88, 0xfb, 0x10, 0x00, 0x00, //0x0000189e js LBB0_508 - 0x49, 0x89, 0x00, //0x000018a4 movq %rax, (%r8) - 0x48, 0x83, 0x7d, 0x90, 0x00, //0x000018a7 cmpq $0, $-112(%rbp) - 0x0f, 0x8f, 0x69, 0xea, 0xff, 0xff, //0x000018ac jg LBB0_28 - 0xe9, 0x33, 0x1d, 0x00, 0x00, //0x000018b2 jmp LBB0_348 - //0x000018b7 LBB0_349 - 0x0f, 0xbc, 0xca, //0x000018b7 bsfl %edx, %ecx - //0x000018ba LBB0_350 - 0x49, 0xf7, 0xd5, //0x000018ba notq %r13 - 0x49, 0x29, 0xcd, //0x000018bd subq %rcx, %r13 - 0xe9, 0xed, 0xf6, 0xff, 0xff, //0x000018c0 jmp LBB0_210 - //0x000018c5 LBB0_351 - 0x4c, 0x89, 0xd9, //0x000018c5 movq %r11, %rcx - 0x4c, 0x09, 0xe1, //0x000018c8 orq %r12, %rcx - 0x0f, 0x99, 0xc1, //0x000018cb setns %cl - 0x0f, 0x88, 0xb1, 0x01, 0x00, 0x00, //0x000018ce js LBB0_355 - 0x4d, 0x39, 0xe3, //0x000018d4 cmpq %r12, %r11 - 0x0f, 0x8c, 0xa8, 0x01, 0x00, 0x00, //0x000018d7 jl LBB0_355 - 0x49, 0xf7, 0xd3, //0x000018dd notq %r11 - 0x4d, 0x89, 0xde, //0x000018e0 movq %r11, %r14 - 0xe9, 0x4d, 0xff, 0xff, 0xff, //0x000018e3 jmp LBB0_341 - //0x000018e8 LBB0_354 - 0x48, 0x8b, 0xb5, 0x70, 0xff, 0xff, 0xff, //0x000018e8 movq $-144(%rbp), %rsi - 0x4d, 0x89, 0xd1, //0x000018ef movq %r10, %r9 - 0x4e, 0x8d, 0x2c, 0x16, //0x000018f2 leaq (%rsi,%r10), %r13 - 0x49, 0x29, 0xcd, //0x000018f6 subq %rcx, %r13 - 0x49, 0x29, 0xd5, //0x000018f9 subq %rdx, %r13 - 0xe9, 0xb1, 0xf6, 0xff, 0xff, //0x000018fc jmp LBB0_210 - //0x00001901 LBB0_71 - 0x4c, 0x01, 0xe0, //0x00001901 addq %r12, %rax - 0x48, 0x8b, 0x7d, 0xb0, //0x00001904 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001908 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000190c movabsq $4294977024, %r14 - 0x49, 0x83, 0xf9, 0x20, //0x00001916 cmpq $32, %r9 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000191a movq $-72(%rbp), %r10 - 0x0f, 0x82, 0x33, 0x09, 0x00, 0x00, //0x0000191e jb LBB0_424 - //0x00001924 LBB0_72 - 0xf3, 0x0f, 0x6f, 0x18, //0x00001924 movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00001928 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x0000192d movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001931 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00001935 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00001939 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000193d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00001941 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00001945 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001949 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x0000194d pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00001951 pmovmskb %xmm4, %ebx - 0x48, 0xc1, 0xe1, 0x10, //0x00001955 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00001959 orq %rcx, %rdx - 0x48, 0xc1, 0xe3, 0x10, //0x0000195c shlq $16, %rbx - 0x48, 0x09, 0xde, //0x00001960 orq %rbx, %rsi - 0x0f, 0x85, 0x77, 0x08, 0x00, 0x00, //0x00001963 jne LBB0_420 - 0x4d, 0x85, 0xc0, //0x00001969 testq %r8, %r8 - 0x0f, 0x85, 0x8b, 0x08, 0x00, 0x00, //0x0000196c jne LBB0_422 - 0x45, 0x31, 0xc0, //0x00001972 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00001975 testq %rdx, %rdx - 0x0f, 0x84, 0xd1, 0x08, 0x00, 0x00, //0x00001978 je LBB0_423 - //0x0000197e LBB0_75 - 0x48, 0x0f, 0xbc, 0xca, //0x0000197e bsfq %rdx, %rcx - 0x48, 0x03, 0x45, 0x98, //0x00001982 addq $-104(%rbp), %rax - 0x48, 0x01, 0xc8, //0x00001986 addq %rcx, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00001989 movq $-48(%rbp), %r8 - 0xe9, 0x8a, 0xf6, 0xff, 0xff, //0x0000198d jmp LBB0_215 - //0x00001992 LBB0_154 - 0x4c, 0x01, 0xe0, //0x00001992 addq %r12, %rax - 0x49, 0x83, 0xfa, 0x20, //0x00001995 cmpq $32, %r10 - 0x0f, 0x82, 0xe2, 0x06, 0x00, 0x00, //0x00001999 jb LBB0_408 - //0x0000199f LBB0_155 - 0xf3, 0x0f, 0x6f, 0x20, //0x0000199f movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x000019a3 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x000019a8 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000019ac pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000019b0 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xeb, //0x000019b4 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000019b8 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x000019bc pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xec, //0x000019c0 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000019c4 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000019c8 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xeb, //0x000019cc movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000019d0 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x000019d4 pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x6f, 0xea, //0x000019d8 movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000019dc pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x000019e0 pcmpgtb %xmm15, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x000019e5 pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000019e9 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe7, 0x10, //0x000019ed shlq $16, %rdi - 0x48, 0x09, 0xf9, //0x000019f1 orq %rdi, %rcx - 0x48, 0xc1, 0xe3, 0x10, //0x000019f4 shlq $16, %rbx - 0x48, 0xc1, 0xe6, 0x10, //0x000019f8 shlq $16, %rsi - 0x48, 0x09, 0xda, //0x000019fc orq %rbx, %rdx - 0x0f, 0x85, 0x43, 0x09, 0x00, 0x00, //0x000019ff jne LBB0_436 - 0x4d, 0x85, 0xc0, //0x00001a05 testq %r8, %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001a08 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001a0c movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001a10 movabsq $4294977024, %r14 - 0x0f, 0x85, 0x45, 0x09, 0x00, 0x00, //0x00001a1a jne LBB0_438 - 0x45, 0x31, 0xc0, //0x00001a20 xorl %r8d, %r8d - //0x00001a23 LBB0_158 - 0x66, 0x0f, 0x6f, 0xda, //0x00001a23 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00001a27 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001a2b pcmpgtb %xmm15, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00001a30 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00001a34 pmovmskb %xmm4, %edx - 0x48, 0x09, 0xd6, //0x00001a38 orq %rdx, %rsi - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001a3b movl $64, %edx - 0xbb, 0x40, 0x00, 0x00, 0x00, //0x00001a40 movl $64, %ebx - 0x48, 0x85, 0xc9, //0x00001a45 testq %rcx, %rcx - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001a48 je LBB0_160 - 0x48, 0x0f, 0xbc, 0xd9, //0x00001a4e bsfq %rcx, %rbx - //0x00001a52 LBB0_160 - 0x48, 0x85, 0xf6, //0x00001a52 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001a55 je LBB0_162 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001a5b bsfq %rsi, %rdx - //0x00001a5f LBB0_162 - 0x48, 0x85, 0xc9, //0x00001a5f testq %rcx, %rcx - 0x0f, 0x84, 0xbe, 0x01, 0x00, 0x00, //0x00001a62 je LBB0_359 - 0x48, 0x39, 0xda, //0x00001a68 cmpq %rbx, %rdx - 0x0f, 0x82, 0x11, 0x1c, 0x00, 0x00, //0x00001a6b jb LBB0_620 - 0x48, 0x03, 0x45, 0x98, //0x00001a71 addq $-104(%rbp), %rax - 0x48, 0x01, 0xd8, //0x00001a75 addq %rbx, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00001a78 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001a7c movq $-72(%rbp), %r10 - 0xe9, 0x97, 0xf5, 0xff, 0xff, //0x00001a80 jmp LBB0_215 - //0x00001a85 LBB0_355 - 0x49, 0x8d, 0x54, 0x24, 0xff, //0x00001a85 leaq $-1(%r12), %rdx - 0x49, 0x39, 0xd3, //0x00001a8a cmpq %rdx, %r11 - 0x49, 0xf7, 0xd4, //0x00001a8d notq %r12 - 0x4d, 0x0f, 0x45, 0xe0, //0x00001a90 cmovneq %r8, %r12 - 0x84, 0xc9, //0x00001a94 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xe0, //0x00001a96 cmoveq %r8, %r12 - 0x4d, 0x89, 0xe6, //0x00001a9a movq %r12, %r14 - 0xe9, 0x93, 0xfd, 0xff, 0xff, //0x00001a9d jmp LBB0_341 - //0x00001aa2 LBB0_135 - 0x4c, 0x01, 0xe0, //0x00001aa2 addq %r12, %rax - //0x00001aa5 LBB0_136 - 0x49, 0x83, 0xf9, 0x20, //0x00001aa5 cmpq $32, %r9 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001aa9 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001aad movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001ab1 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001abb movq $-72(%rbp), %r10 - 0x0f, 0x82, 0x62, 0x09, 0x00, 0x00, //0x00001abf jb LBB0_443 - 0xf3, 0x0f, 0x6f, 0x18, //0x00001ac5 movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00001ac9 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00001ace movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001ad2 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00001ad6 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00001ada movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001ade pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00001ae2 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00001ae6 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001aea pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00001aee pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00001af2 pmovmskb %xmm4, %ebx - 0x48, 0xc1, 0xe1, 0x10, //0x00001af6 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00001afa orq %rcx, %rdx - 0x48, 0xc1, 0xe3, 0x10, //0x00001afd shlq $16, %rbx - 0x48, 0x09, 0xde, //0x00001b01 orq %rbx, %rsi - 0x0f, 0x85, 0xa6, 0x08, 0x00, 0x00, //0x00001b04 jne LBB0_439 - 0x4d, 0x85, 0xc0, //0x00001b0a testq %r8, %r8 - 0x0f, 0x85, 0xba, 0x08, 0x00, 0x00, //0x00001b0d jne LBB0_441 - 0x45, 0x31, 0xc0, //0x00001b13 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00001b16 testq %rdx, %rdx - 0x0f, 0x84, 0x00, 0x09, 0x00, 0x00, //0x00001b19 je LBB0_442 - //0x00001b1f LBB0_140 - 0x48, 0x0f, 0xbc, 0xca, //0x00001b1f bsfq %rdx, %rcx - 0x48, 0x03, 0x45, 0x98, //0x00001b23 addq $-104(%rbp), %rax - 0x48, 0x01, 0xc8, //0x00001b27 addq %rcx, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00001b2a movq $-48(%rbp), %r8 - 0xe9, 0x55, 0xf5, 0xff, 0xff, //0x00001b2e jmp LBB0_225 - //0x00001b33 LBB0_181 - 0x4c, 0x01, 0xe0, //0x00001b33 addq %r12, %rax - 0x49, 0x83, 0xfe, 0x20, //0x00001b36 cmpq $32, %r14 - 0x0f, 0x82, 0xf4, 0x05, 0x00, 0x00, //0x00001b3a jb LBB0_414 - //0x00001b40 LBB0_182 - 0xf3, 0x0f, 0x6f, 0x20, //0x00001b40 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00001b44 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x00001b49 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001b4d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001b51 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00001b55 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001b59 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00001b5d pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00001b61 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00001b65 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xdd, //0x00001b69 pmovmskb %xmm5, %r11d - 0x66, 0x0f, 0x6f, 0xeb, //0x00001b6e movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00001b72 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00001b76 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xea, //0x00001b7a movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001b7e pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00001b82 pcmpgtb %xmm15, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x00001b87 pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001b8b pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00001b8f shlq $16, %rcx - 0x48, 0x09, 0xce, //0x00001b93 orq %rcx, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x00001b96 shlq $16, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00001b9a shlq $16, %rdi - 0x49, 0x09, 0xd3, //0x00001b9e orq %rdx, %r11 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001ba1 movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x6d, 0x09, 0x00, 0x00, //0x00001ba5 jne LBB0_455 - 0x4d, 0x85, 0xc9, //0x00001bab testq %r9, %r9 - 0x0f, 0x85, 0x81, 0x09, 0x00, 0x00, //0x00001bae jne LBB0_457 - 0x45, 0x31, 0xc9, //0x00001bb4 xorl %r9d, %r9d - //0x00001bb7 LBB0_185 - 0x66, 0x0f, 0x6f, 0xda, //0x00001bb7 movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00001bbb pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001bbf pcmpgtb %xmm15, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00001bc4 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00001bc8 pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00001bcc orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00001bcf movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001bd4 movl $64, %edx - 0x48, 0x85, 0xf6, //0x00001bd9 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001bdc je LBB0_187 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001be2 bsfq %rsi, %rdx - //0x00001be6 LBB0_187 - 0x48, 0x85, 0xff, //0x00001be6 testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001be9 je LBB0_189 - 0x48, 0x0f, 0xbc, 0xcf, //0x00001bef bsfq %rdi, %rcx - //0x00001bf3 LBB0_189 - 0x48, 0x85, 0xf6, //0x00001bf3 testq %rsi, %rsi - 0x0f, 0x84, 0x03, 0x01, 0x00, 0x00, //0x00001bf6 je LBB0_372 - 0x48, 0x39, 0xd1, //0x00001bfc cmpq %rdx, %rcx - 0x0f, 0x82, 0x9f, 0x1a, 0x00, 0x00, //0x00001bff jb LBB0_622 - 0x48, 0x03, 0x45, 0x98, //0x00001c05 addq $-104(%rbp), %rax - 0x48, 0x01, 0xd0, //0x00001c09 addq %rdx, %rax - 0xe9, 0xba, 0x01, 0x00, 0x00, //0x00001c0c jmp LBB0_388 - //0x00001c11 LBB0_356 - 0x89, 0xd9, //0x00001c11 movl %ebx, %ecx - 0xe9, 0xa2, 0xfc, 0xff, 0xff, //0x00001c13 jmp LBB0_350 - //0x00001c18 LBB0_357 - 0x89, 0xf1, //0x00001c18 movl %esi, %ecx - 0xe9, 0x9b, 0xfc, 0xff, 0xff, //0x00001c1a jmp LBB0_350 - //0x00001c1f LBB0_358 - 0x89, 0xd1, //0x00001c1f movl %edx, %ecx - 0xe9, 0x94, 0xfc, 0xff, 0xff, //0x00001c21 jmp LBB0_350 - //0x00001c26 LBB0_359 - 0x48, 0x85, 0xf6, //0x00001c26 testq %rsi, %rsi - 0x0f, 0x85, 0x53, 0x1a, 0x00, 0x00, //0x00001c29 jne LBB0_620 - 0x48, 0x83, 0xc0, 0x20, //0x00001c2f addq $32, %rax - 0x49, 0x83, 0xc2, 0xe0, //0x00001c33 addq $-32, %r10 - 0x4d, 0x85, 0xc0, //0x00001c37 testq %r8, %r8 - 0x0f, 0x85, 0x5c, 0x04, 0x00, 0x00, //0x00001c3a jne LBB0_409 - //0x00001c40 LBB0_361 - 0x48, 0x8b, 0x4d, 0xc8, //0x00001c40 movq $-56(%rbp), %rcx - 0x4c, 0x8b, 0x45, 0xd0, //0x00001c44 movq $-48(%rbp), %r8 - 0x4d, 0x85, 0xd2, //0x00001c48 testq %r10, %r10 - 0x0f, 0x84, 0x5c, 0x0d, 0x00, 0x00, //0x00001c4b je LBB0_509 - //0x00001c51 LBB0_362 - 0x0f, 0xb6, 0x10, //0x00001c51 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00001c54 cmpb $34, %dl - 0x0f, 0x84, 0x95, 0x00, 0x00, 0x00, //0x00001c57 je LBB0_371 - 0x80, 0xfa, 0x5c, //0x00001c5d cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00001c60 je LBB0_366 - 0x80, 0xfa, 0x1f, //0x00001c66 cmpb $31, %dl - 0x0f, 0x86, 0x40, 0x1a, 0x00, 0x00, //0x00001c69 jbe LBB0_623 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001c6f movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001c76 movl $1, %esi - 0x48, 0x01, 0xf0, //0x00001c7b addq %rsi, %rax - 0x49, 0x01, 0xd2, //0x00001c7e addq %rdx, %r10 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00001c81 jne LBB0_362 - 0xe9, 0x21, 0x0d, 0x00, 0x00, //0x00001c87 jmp LBB0_509 - //0x00001c8c LBB0_366 - 0x49, 0x83, 0xfa, 0x01, //0x00001c8c cmpq $1, %r10 - 0x0f, 0x84, 0x94, 0x0b, 0x00, 0x00, //0x00001c90 je LBB0_485 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00001c96 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001c9d movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00001ca2 cmpq $-1, %rcx - 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001ca6 je LBB0_369 - 0x4c, 0x8b, 0x45, 0xd0, //0x00001cac movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001cb0 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00001cb4 movq $-64(%rbp), %r12 - 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00001cb8 jmp LBB0_370 - //0x00001cbd LBB0_369 - 0x48, 0x89, 0xc1, //0x00001cbd movq %rax, %rcx - 0x4c, 0x8b, 0x65, 0xc0, //0x00001cc0 movq $-64(%rbp), %r12 - 0x4c, 0x29, 0xe1, //0x00001cc4 subq %r12, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00001cc7 movq %rcx, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x00001ccb movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001ccf movq $-80(%rbp), %rdi - //0x00001cd3 LBB0_370 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001cd3 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001cd7 movabsq $4294977024, %r14 - 0x48, 0x01, 0xf0, //0x00001ce1 addq %rsi, %rax - 0x49, 0x01, 0xd2, //0x00001ce4 addq %rdx, %r10 - 0x0f, 0x85, 0x64, 0xff, 0xff, 0xff, //0x00001ce7 jne LBB0_362 - 0xe9, 0xbb, 0x0c, 0x00, 0x00, //0x00001ced jmp LBB0_509 - //0x00001cf2 LBB0_371 - 0x48, 0x03, 0x45, 0x98, //0x00001cf2 addq $-104(%rbp), %rax - 0x4c, 0x8b, 0x55, 0xb8, //0x00001cf6 movq $-72(%rbp), %r10 - 0xe9, 0x1d, 0xf3, 0xff, 0xff, //0x00001cfa jmp LBB0_215 - //0x00001cff LBB0_372 - 0x48, 0x85, 0xff, //0x00001cff testq %rdi, %rdi - 0x0f, 0x85, 0x9c, 0x19, 0x00, 0x00, //0x00001d02 jne LBB0_622 - 0x48, 0x83, 0xc0, 0x20, //0x00001d08 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00001d0c addq $-32, %r14 - 0x4d, 0x85, 0xc9, //0x00001d10 testq %r9, %r9 - 0x0f, 0x85, 0x28, 0x04, 0x00, 0x00, //0x00001d13 jne LBB0_415 - //0x00001d19 LBB0_374 - 0x48, 0x8b, 0x55, 0xc8, //0x00001d19 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xf6, //0x00001d1d testq %r14, %r14 - 0x0f, 0x84, 0x4b, 0x19, 0x00, 0x00, //0x00001d20 je LBB0_384 - //0x00001d26 LBB0_375 - 0x0f, 0xb6, 0x08, //0x00001d26 movzbl (%rax), %ecx - 0x80, 0xf9, 0x22, //0x00001d29 cmpb $34, %cl - 0x0f, 0x84, 0x95, 0x00, 0x00, 0x00, //0x00001d2c je LBB0_387 - 0x80, 0xf9, 0x5c, //0x00001d32 cmpb $92, %cl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00001d35 je LBB0_379 - 0x80, 0xf9, 0x1f, //0x00001d3b cmpb $31, %cl - 0x0f, 0x86, 0x89, 0x19, 0x00, 0x00, //0x00001d3e jbe LBB0_624 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d44 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001d4b movl $1, %esi - 0x48, 0x01, 0xf0, //0x00001d50 addq %rsi, %rax - 0x49, 0x01, 0xce, //0x00001d53 addq %rcx, %r14 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00001d56 jne LBB0_375 - 0xe9, 0x10, 0x19, 0x00, 0x00, //0x00001d5c jmp LBB0_384 - //0x00001d61 LBB0_379 - 0x48, 0x8b, 0x4d, 0xa0, //0x00001d61 movq $-96(%rbp), %rcx - 0x49, 0x83, 0xfe, 0x01, //0x00001d65 cmpq $1, %r14 - 0x0f, 0x84, 0xba, 0x19, 0x00, 0x00, //0x00001d69 je LBB0_632 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00001d6f movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001d76 movl $2, %esi - 0x48, 0x83, 0xfa, 0xff, //0x00001d7b cmpq $-1, %rdx - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00001d7f je LBB0_382 - 0x4c, 0x8b, 0x45, 0xd0, //0x00001d85 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x00001d89 movq $-64(%rbp), %r12 - 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00001d8d jmp LBB0_383 - //0x00001d92 LBB0_382 - 0x48, 0x89, 0xc2, //0x00001d92 movq %rax, %rdx - 0x4c, 0x8b, 0x65, 0xc0, //0x00001d95 movq $-64(%rbp), %r12 - 0x4c, 0x29, 0xe2, //0x00001d99 subq %r12, %rdx - 0x48, 0x89, 0x55, 0xc8, //0x00001d9c movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x00001da0 movq $-48(%rbp), %r8 - //0x00001da4 LBB0_383 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001da4 movq $-72(%rbp), %r10 - 0x48, 0x01, 0xf0, //0x00001da8 addq %rsi, %rax - 0x49, 0x01, 0xce, //0x00001dab addq %rcx, %r14 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x00001dae jne LBB0_375 - 0xe9, 0xb8, 0x18, 0x00, 0x00, //0x00001db4 jmp LBB0_384 - //0x00001db9 LBB0_385 - 0x0f, 0xbc, 0xca, //0x00001db9 bsfl %edx, %ecx - //0x00001dbc LBB0_386 - 0x49, 0xf7, 0xd6, //0x00001dbc notq %r14 - 0x49, 0x29, 0xce, //0x00001dbf subq %rcx, %r14 - 0xe9, 0x6e, 0xfa, 0xff, 0xff, //0x00001dc2 jmp LBB0_341 - //0x00001dc7 LBB0_387 - 0x48, 0x03, 0x45, 0x98, //0x00001dc7 addq $-104(%rbp), %rax - //0x00001dcb LBB0_388 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001dcb movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001dcf movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001dd3 movabsq $4294977024, %r14 - 0xe9, 0xa2, 0xf2, 0xff, 0xff, //0x00001ddd jmp LBB0_224 - //0x00001de2 LBB0_389 - 0x48, 0x8b, 0xb5, 0x78, 0xff, 0xff, 0xff, //0x00001de2 movq $-136(%rbp), %rsi - 0x4c, 0x8d, 0x34, 0x06, //0x00001de9 leaq (%rsi,%rax), %r14 - 0x49, 0x29, 0xce, //0x00001ded subq %rcx, %r14 - 0x49, 0x29, 0xd6, //0x00001df0 subq %rdx, %r14 - 0xe9, 0x3d, 0xfa, 0xff, 0xff, //0x00001df3 jmp LBB0_341 - //0x00001df8 LBB0_237 - 0x4c, 0x01, 0xe0, //0x00001df8 addq %r12, %rax - //0x00001dfb LBB0_238 - 0x49, 0x83, 0xf9, 0x20, //0x00001dfb cmpq $32, %r9 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001dff movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001e03 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e07 movabsq $4294977024, %r14 - 0x0f, 0x82, 0x8f, 0x08, 0x00, 0x00, //0x00001e11 jb LBB0_466 - 0xf3, 0x0f, 0x6f, 0x18, //0x00001e17 movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00001e1b movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00001e20 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001e24 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00001e28 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00001e2c movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001e30 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00001e34 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00001e38 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001e3c pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00001e40 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x00001e44 pmovmskb %xmm4, %ebx - 0x48, 0xc1, 0xe1, 0x10, //0x00001e48 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00001e4c orq %rcx, %rdx - 0x48, 0xc1, 0xe3, 0x10, //0x00001e4f shlq $16, %rbx - 0x48, 0x09, 0xde, //0x00001e53 orq %rbx, %rsi - 0x0f, 0x85, 0xd3, 0x07, 0x00, 0x00, //0x00001e56 jne LBB0_462 - 0x4d, 0x85, 0xc0, //0x00001e5c testq %r8, %r8 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001e5f movq $-72(%rbp), %r10 - 0x0f, 0x85, 0xe3, 0x07, 0x00, 0x00, //0x00001e63 jne LBB0_464 - 0x45, 0x31, 0xc0, //0x00001e69 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00001e6c testq %rdx, %rdx - 0x0f, 0x84, 0x29, 0x08, 0x00, 0x00, //0x00001e6f je LBB0_465 - //0x00001e75 LBB0_242 - 0x48, 0x0f, 0xbc, 0xca, //0x00001e75 bsfq %rdx, %rcx - 0x48, 0x03, 0x45, 0x98, //0x00001e79 addq $-104(%rbp), %rax - 0x48, 0x01, 0xc8, //0x00001e7d addq %rcx, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00001e80 movq $-48(%rbp), %r8 - 0xe9, 0x12, 0xfa, 0xff, 0xff, //0x00001e84 jmp LBB0_346 - //0x00001e89 LBB0_312 - 0x4c, 0x01, 0xe0, //0x00001e89 addq %r12, %rax - 0x49, 0x83, 0xfe, 0x20, //0x00001e8c cmpq $32, %r14 - 0x0f, 0x82, 0x2c, 0x01, 0x00, 0x00, //0x00001e90 jb LBB0_396 - //0x00001e96 LBB0_313 - 0xf3, 0x0f, 0x6f, 0x20, //0x00001e96 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00001e9a movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x00001e9f movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001ea3 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001ea7 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00001eab movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001eaf pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00001eb3 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00001eb7 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00001ebb pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00001ebf pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xeb, //0x00001ec3 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00001ec7 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xdd, //0x00001ecb pmovmskb %xmm5, %ebx - 0x66, 0x0f, 0x6f, 0xea, //0x00001ecf movdqa %xmm2, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001ed3 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00001ed7 pcmpgtb %xmm15, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x00001edc pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001ee0 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00001ee4 shlq $16, %rcx - 0x48, 0x09, 0xce, //0x00001ee8 orq %rcx, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x00001eeb shlq $16, %rbx - 0x48, 0xc1, 0xe7, 0x10, //0x00001eef shlq $16, %rdi - 0x48, 0x09, 0xda, //0x00001ef3 orq %rbx, %rdx - 0x0f, 0x85, 0x5f, 0x08, 0x00, 0x00, //0x00001ef6 jne LBB0_478 - 0x4d, 0x85, 0xc0, //0x00001efc testq %r8, %r8 - 0x4c, 0x8b, 0x55, 0xb8, //0x00001eff movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x6f, 0x08, 0x00, 0x00, //0x00001f03 jne LBB0_480 - 0x45, 0x31, 0xc0, //0x00001f09 xorl %r8d, %r8d - //0x00001f0c LBB0_316 - 0x66, 0x0f, 0x6f, 0xda, //0x00001f0c movdqa %xmm2, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00001f10 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001f14 pcmpgtb %xmm15, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00001f19 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00001f1d pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00001f21 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00001f24 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001f29 movl $64, %edx - 0x48, 0x85, 0xf6, //0x00001f2e testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001f31 je LBB0_318 - 0x48, 0x0f, 0xbc, 0xd6, //0x00001f37 bsfq %rsi, %rdx - //0x00001f3b LBB0_318 - 0x48, 0x85, 0xff, //0x00001f3b testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001f3e je LBB0_320 - 0x48, 0x0f, 0xbc, 0xcf, //0x00001f44 bsfq %rdi, %rcx - //0x00001f48 LBB0_320 - 0x48, 0x85, 0xf6, //0x00001f48 testq %rsi, %rsi - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x00001f4b je LBB0_394 - 0x48, 0x39, 0xd1, //0x00001f51 cmpq %rdx, %rcx - 0x0f, 0x82, 0xac, 0x17, 0x00, 0x00, //0x00001f54 jb LBB0_628 - 0x48, 0x03, 0x45, 0x98, //0x00001f5a addq $-104(%rbp), %rax - 0x48, 0x01, 0xd0, //0x00001f5e addq %rdx, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00001f61 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00001f65 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00001f69 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001f6d movabsq $4294977024, %r14 - 0xe9, 0x1f, 0xf9, 0xff, 0xff, //0x00001f77 jmp LBB0_346 - //0x00001f7c LBB0_390 - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x00001f7c movq $-1, %r12 - 0x4c, 0x89, 0xd9, //0x00001f83 movq %r11, %rcx - 0x4c, 0x89, 0xd7, //0x00001f86 movq %r10, %rdi - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001f89 movq $-1, %r14 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00001f90 movq $-1, %r15 - 0xe9, 0x38, 0xe9, 0xff, 0xff, //0x00001f97 jmp LBB0_115 - //0x00001f9c LBB0_391 - 0x89, 0xd9, //0x00001f9c movl %ebx, %ecx - 0xe9, 0x19, 0xfe, 0xff, 0xff, //0x00001f9e jmp LBB0_386 - //0x00001fa3 LBB0_392 - 0x89, 0xf1, //0x00001fa3 movl %esi, %ecx - 0xe9, 0x12, 0xfe, 0xff, 0xff, //0x00001fa5 jmp LBB0_386 - //0x00001faa LBB0_393 - 0x89, 0xd1, //0x00001faa movl %edx, %ecx - 0xe9, 0x0b, 0xfe, 0xff, 0xff, //0x00001fac jmp LBB0_386 - //0x00001fb1 LBB0_394 - 0x48, 0x85, 0xff, //0x00001fb1 testq %rdi, %rdi - 0x0f, 0x85, 0x54, 0x17, 0x00, 0x00, //0x00001fb4 jne LBB0_629 - 0x48, 0x83, 0xc0, 0x20, //0x00001fba addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00001fbe addq $-32, %r14 - //0x00001fc2 LBB0_396 - 0x4d, 0x85, 0xc0, //0x00001fc2 testq %r8, %r8 - 0x0f, 0x85, 0x27, 0x08, 0x00, 0x00, //0x00001fc5 jne LBB0_483 - 0x48, 0x8b, 0x55, 0xc8, //0x00001fcb movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xf6, //0x00001fcf testq %r14, %r14 - 0x0f, 0x84, 0x52, 0x08, 0x00, 0x00, //0x00001fd2 je LBB0_485 - //0x00001fd8 LBB0_398 - 0x0f, 0xb6, 0x08, //0x00001fd8 movzbl (%rax), %ecx - 0x80, 0xf9, 0x22, //0x00001fdb cmpb $34, %cl - 0x0f, 0x84, 0x10, 0x01, 0x00, 0x00, //0x00001fde je LBB0_411 - 0x80, 0xf9, 0x5c, //0x00001fe4 cmpb $92, %cl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00001fe7 je LBB0_403 - 0x80, 0xf9, 0x1f, //0x00001fed cmpb $31, %cl - 0x0f, 0x86, 0x27, 0x17, 0x00, 0x00, //0x00001ff0 jbe LBB0_631 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001ff6 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001ffd movl $1, %esi - //0x00002002 LBB0_402 - 0x48, 0x01, 0xf0, //0x00002002 addq %rsi, %rax - 0x49, 0x01, 0xce, //0x00002005 addq %rcx, %r14 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002008 jne LBB0_398 - 0xe9, 0x17, 0x08, 0x00, 0x00, //0x0000200e jmp LBB0_485 - //0x00002013 LBB0_403 - 0x49, 0x83, 0xfe, 0x01, //0x00002013 cmpq $1, %r14 - 0x0f, 0x84, 0x0d, 0x08, 0x00, 0x00, //0x00002017 je LBB0_485 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000201d movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002024 movl $2, %esi - 0x48, 0x83, 0xfa, 0xff, //0x00002029 cmpq $-1, %rdx - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x0000202d jne LBB0_402 - 0x48, 0x89, 0xc2, //0x00002033 movq %rax, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00002036 subq $-64(%rbp), %rdx - 0x48, 0x89, 0x55, 0xc8, //0x0000203a movq %rdx, $-56(%rbp) - 0xe9, 0xbf, 0xff, 0xff, 0xff, //0x0000203e jmp LBB0_402 - //0x00002043 LBB0_406 - 0x49, 0x8d, 0x04, 0x0c, //0x00002043 leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002047 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x0000204f xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002052 cmpq $32, %r9 - 0x4c, 0x8b, 0x55, 0xb8, //0x00002056 movq $-72(%rbp), %r10 - 0x0f, 0x83, 0xc4, 0xf8, 0xff, 0xff, //0x0000205a jae LBB0_72 - 0xe9, 0xf2, 0x01, 0x00, 0x00, //0x00002060 jmp LBB0_424 - //0x00002065 LBB0_407 - 0x48, 0x8b, 0x45, 0x90, //0x00002065 movq $-112(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002069 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000206c movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002074 xorl %r8d, %r8d - 0x49, 0x83, 0xfa, 0x20, //0x00002077 cmpq $32, %r10 - 0x0f, 0x83, 0x1e, 0xf9, 0xff, 0xff, //0x0000207b jae LBB0_155 - //0x00002081 LBB0_408 - 0x48, 0x8b, 0x7d, 0xb0, //0x00002081 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002085 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002089 movabsq $4294977024, %r14 - 0x4d, 0x85, 0xc0, //0x00002093 testq %r8, %r8 - 0x0f, 0x84, 0xa4, 0xfb, 0xff, 0xff, //0x00002096 je LBB0_361 - //0x0000209c LBB0_409 - 0x4d, 0x85, 0xd2, //0x0000209c testq %r10, %r10 - 0x0f, 0x84, 0x85, 0x07, 0x00, 0x00, //0x0000209f je LBB0_485 - 0x48, 0x8b, 0x4d, 0x88, //0x000020a5 movq $-120(%rbp), %rcx - 0x48, 0x8d, 0x14, 0x08, //0x000020a9 leaq (%rax,%rcx), %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x000020ad movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000020b1 cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x000020b5 movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xf2, //0x000020b8 cmoveq %rdx, %rsi - 0x48, 0x0f, 0x44, 0xca, //0x000020bc cmoveq %rdx, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x000020c0 addq $1, %rax - 0x49, 0x83, 0xc2, 0xff, //0x000020c4 addq $-1, %r10 - 0x48, 0x89, 0x75, 0xc8, //0x000020c8 movq %rsi, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x000020cc movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000020d0 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x000020d4 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x000020d8 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000020dc movabsq $4294977024, %r14 - 0x4d, 0x85, 0xd2, //0x000020e6 testq %r10, %r10 - 0x0f, 0x85, 0x62, 0xfb, 0xff, 0xff, //0x000020e9 jne LBB0_362 - 0xe9, 0xb9, 0x08, 0x00, 0x00, //0x000020ef jmp LBB0_509 - //0x000020f4 LBB0_411 - 0x48, 0x03, 0x45, 0x98, //0x000020f4 addq $-104(%rbp), %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x000020f8 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000020fc movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00002100 movq $-64(%rbp), %r12 - 0xe9, 0x4c, 0xf1, 0xff, 0xff, //0x00002104 jmp LBB0_248 - //0x00002109 LBB0_412 - 0x4c, 0x01, 0xe0, //0x00002109 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000210c movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002114 xorl %r8d, %r8d - 0xe9, 0x89, 0xf9, 0xff, 0xff, //0x00002117 jmp LBB0_136 - //0x0000211c LBB0_413 - 0x4c, 0x01, 0xe0, //0x0000211c addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000211f movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc9, //0x00002127 xorl %r9d, %r9d - 0x49, 0x83, 0xfe, 0x20, //0x0000212a cmpq $32, %r14 - 0x0f, 0x83, 0x0c, 0xfa, 0xff, 0xff, //0x0000212e jae LBB0_182 - //0x00002134 LBB0_414 - 0x4c, 0x8b, 0x55, 0xb8, //0x00002134 movq $-72(%rbp), %r10 - 0x4d, 0x85, 0xc9, //0x00002138 testq %r9, %r9 - 0x0f, 0x84, 0xd8, 0xfb, 0xff, 0xff, //0x0000213b je LBB0_374 - //0x00002141 LBB0_415 - 0x48, 0x8b, 0x4d, 0xa0, //0x00002141 movq $-96(%rbp), %rcx - 0x4d, 0x85, 0xf6, //0x00002145 testq %r14, %r14 - 0x0f, 0x84, 0xdb, 0x15, 0x00, 0x00, //0x00002148 je LBB0_632 - 0x48, 0x8b, 0x4d, 0x88, //0x0000214e movq $-120(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x00002152 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002155 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002159 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x0000215d movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x00002160 cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x00002164 cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00002168 addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x0000216c addq $-1, %r14 - 0x48, 0x89, 0x75, 0xc8, //0x00002170 movq %rsi, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x00002174 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x00002178 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000217c movq $-72(%rbp), %r10 - 0x4d, 0x85, 0xf6, //0x00002180 testq %r14, %r14 - 0x0f, 0x85, 0x9d, 0xfb, 0xff, 0xff, //0x00002183 jne LBB0_375 - 0xe9, 0xe3, 0x14, 0x00, 0x00, //0x00002189 jmp LBB0_384 - //0x0000218e LBB0_417 - 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x0000218e movq $-1, %r11 - 0x4c, 0x89, 0xd1, //0x00002195 movq %r10, %rcx - 0x4c, 0x89, 0xff, //0x00002198 movq %r15, %rdi - 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x0000219b movq $-1, %r12 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000021a2 movq $-1, %r13 - 0xe9, 0x66, 0xf2, 0xff, 0xff, //0x000021a9 jmp LBB0_273 - //0x000021ae LBB0_418 - 0x49, 0x8d, 0x04, 0x0c, //0x000021ae leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000021b2 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x000021ba xorl %r8d, %r8d - 0xe9, 0x39, 0xfc, 0xff, 0xff, //0x000021bd jmp LBB0_238 - //0x000021c2 LBB0_419 - 0x49, 0x8d, 0x04, 0x0c, //0x000021c2 leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000021c6 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x000021ce xorl %r8d, %r8d - 0x49, 0x83, 0xfe, 0x20, //0x000021d1 cmpq $32, %r14 - 0x0f, 0x83, 0xbb, 0xfc, 0xff, 0xff, //0x000021d5 jae LBB0_313 - 0xe9, 0xe2, 0xfd, 0xff, 0xff, //0x000021db jmp LBB0_396 - //0x000021e0 LBB0_420 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000021e0 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000021e5 jne LBB0_422 - 0x48, 0x89, 0xc1, //0x000021eb movq %rax, %rcx - 0x48, 0x2b, 0x4d, 0xc0, //0x000021ee subq $-64(%rbp), %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000021f2 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000021f6 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000021f9 movq %rdi, $-56(%rbp) - //0x000021fd LBB0_422 - 0x44, 0x89, 0xc1, //0x000021fd movl %r8d, %ecx - 0xf7, 0xd1, //0x00002200 notl %ecx - 0x21, 0xf1, //0x00002202 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x00002204 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00002208 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x0000220b notl %ebx - 0x21, 0xf3, //0x0000220d andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000220f andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00002215 xorl %r8d, %r8d - 0x01, 0xcb, //0x00002218 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x0000221a setb %r8b - 0x01, 0xdb, //0x0000221e addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00002220 xorl $1431655765, %ebx - 0x21, 0xfb, //0x00002226 andl %edi, %ebx - 0xf7, 0xd3, //0x00002228 notl %ebx - 0x21, 0xda, //0x0000222a andl %ebx, %edx - 0x48, 0x8b, 0x7d, 0xb0, //0x0000222c movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00002230 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002234 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002238 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00002242 movq $-72(%rbp), %r10 - 0x48, 0x85, 0xd2, //0x00002246 testq %rdx, %rdx - 0x0f, 0x85, 0x2f, 0xf7, 0xff, 0xff, //0x00002249 jne LBB0_75 - //0x0000224f LBB0_423 - 0x48, 0x83, 0xc0, 0x20, //0x0000224f addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00002253 addq $-32, %r9 - //0x00002257 LBB0_424 - 0x4d, 0x85, 0xc0, //0x00002257 testq %r8, %r8 - 0x0f, 0x85, 0x18, 0x03, 0x00, 0x00, //0x0000225a jne LBB0_458 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002260 movq $-56(%rbp), %rcx - 0x4c, 0x8b, 0x45, 0xd0, //0x00002264 movq $-48(%rbp), %r8 - 0x4d, 0x85, 0xc9, //0x00002268 testq %r9, %r9 - 0x0f, 0x84, 0xa0, 0x00, 0x00, 0x00, //0x0000226b je LBB0_435 - //0x00002271 LBB0_426 - 0x31, 0xd2, //0x00002271 xorl %edx, %edx - //0x00002273 LBB0_427 - 0x0f, 0xb6, 0x1c, 0x10, //0x00002273 movzbl (%rax,%rdx), %ebx - 0x80, 0xfb, 0x22, //0x00002277 cmpb $34, %bl - 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x0000227a je LBB0_434 - 0x80, 0xfb, 0x5c, //0x00002280 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002283 je LBB0_432 - 0x48, 0x83, 0xc2, 0x01, //0x00002289 addq $1, %rdx - 0x49, 0x39, 0xd1, //0x0000228d cmpq %rdx, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002290 jne LBB0_427 - 0xe9, 0x7e, 0x00, 0x00, 0x00, //0x00002296 jmp LBB0_430 - //0x0000229b LBB0_432 - 0x49, 0x8d, 0x71, 0xff, //0x0000229b leaq $-1(%r9), %rsi - 0x48, 0x39, 0xd6, //0x0000229f cmpq %rdx, %rsi - 0x0f, 0x84, 0x82, 0x05, 0x00, 0x00, //0x000022a2 je LBB0_485 - 0x48, 0x8b, 0x75, 0x80, //0x000022a8 movq $-128(%rbp), %rsi - 0x48, 0x01, 0xc6, //0x000022ac addq %rax, %rsi - 0x48, 0x01, 0xd6, //0x000022af addq %rdx, %rsi - 0x48, 0x83, 0xf9, 0xff, //0x000022b2 cmpq $-1, %rcx - 0x48, 0x8b, 0x7d, 0xc8, //0x000022b6 movq $-56(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xfe, //0x000022ba cmoveq %rsi, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000022be movq %rdi, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xce, //0x000022c2 cmoveq %rsi, %rcx - 0x48, 0x01, 0xd0, //0x000022c6 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000022c9 addq $2, %rax - 0x4c, 0x89, 0xce, //0x000022cd movq %r9, %rsi - 0x48, 0x29, 0xd6, //0x000022d0 subq %rdx, %rsi - 0x48, 0x83, 0xc6, 0xfe, //0x000022d3 addq $-2, %rsi - 0x49, 0x83, 0xc1, 0xfe, //0x000022d7 addq $-2, %r9 - 0x49, 0x39, 0xd1, //0x000022db cmpq %rdx, %r9 - 0x49, 0x89, 0xf1, //0x000022de movq %rsi, %r9 - 0x4c, 0x8b, 0x45, 0xd0, //0x000022e1 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000022e5 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x000022e9 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x000022ed movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000022f1 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x000022fb movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x6c, 0xff, 0xff, 0xff, //0x000022ff jne LBB0_426 - 0xe9, 0xa3, 0x06, 0x00, 0x00, //0x00002305 jmp LBB0_509 - //0x0000230a LBB0_434 - 0x48, 0x01, 0xd0, //0x0000230a addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000230d addq $1, %rax - //0x00002311 LBB0_435 - 0x4c, 0x29, 0xe0, //0x00002311 subq %r12, %rax - 0xe9, 0x03, 0xed, 0xff, 0xff, //0x00002314 jmp LBB0_215 - //0x00002319 LBB0_430 - 0x80, 0xfb, 0x22, //0x00002319 cmpb $34, %bl - 0x0f, 0x85, 0x08, 0x05, 0x00, 0x00, //0x0000231c jne LBB0_485 - 0x4c, 0x01, 0xc8, //0x00002322 addq %r9, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x00002325 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00002329 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x0000232d movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002331 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002335 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000233f movq $-72(%rbp), %r10 - 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00002343 jmp LBB0_435 - //0x00002348 LBB0_436 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002348 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000234d jne LBB0_438 - 0x48, 0x89, 0xc7, //0x00002353 movq %rax, %rdi - 0x48, 0x2b, 0x7d, 0xc0, //0x00002356 subq $-64(%rbp), %rdi - 0x48, 0x0f, 0xbc, 0xda, //0x0000235a bsfq %rdx, %rbx - 0x48, 0x01, 0xfb, //0x0000235e addq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00002361 movq %rbx, $-56(%rbp) - //0x00002365 LBB0_438 - 0x44, 0x89, 0xc7, //0x00002365 movl %r8d, %edi - 0xf7, 0xd7, //0x00002368 notl %edi - 0x21, 0xd7, //0x0000236a andl %edx, %edi - 0x45, 0x8d, 0x0c, 0x78, //0x0000236c leal (%r8,%rdi,2), %r9d - 0x8d, 0x1c, 0x3f, //0x00002370 leal (%rdi,%rdi), %ebx - 0xf7, 0xd3, //0x00002373 notl %ebx - 0x21, 0xd3, //0x00002375 andl %edx, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002377 andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x0000237d xorl %r8d, %r8d - 0x01, 0xfb, //0x00002380 addl %edi, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00002382 setb %r8b - 0x01, 0xdb, //0x00002386 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00002388 xorl $1431655765, %ebx - 0x44, 0x21, 0xcb, //0x0000238e andl %r9d, %ebx - 0xf7, 0xd3, //0x00002391 notl %ebx - 0x21, 0xd9, //0x00002393 andl %ebx, %ecx - 0x48, 0x8b, 0x7d, 0xb0, //0x00002395 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00002399 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x0000239d movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000023a1 movabsq $4294977024, %r14 - 0xe9, 0x73, 0xf6, 0xff, 0xff, //0x000023ab jmp LBB0_158 - //0x000023b0 LBB0_439 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000023b0 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000023b5 jne LBB0_441 - 0x48, 0x89, 0xc1, //0x000023bb movq %rax, %rcx - 0x48, 0x2b, 0x4d, 0xc0, //0x000023be subq $-64(%rbp), %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000023c2 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000023c6 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000023c9 movq %rdi, $-56(%rbp) - //0x000023cd LBB0_441 - 0x44, 0x89, 0xc1, //0x000023cd movl %r8d, %ecx - 0xf7, 0xd1, //0x000023d0 notl %ecx - 0x21, 0xf1, //0x000023d2 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000023d4 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000023d8 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000023db notl %ebx - 0x21, 0xf3, //0x000023dd andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000023df andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000023e5 xorl %r8d, %r8d - 0x01, 0xcb, //0x000023e8 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000023ea setb %r8b - 0x01, 0xdb, //0x000023ee addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000023f0 xorl $1431655765, %ebx - 0x21, 0xfb, //0x000023f6 andl %edi, %ebx - 0xf7, 0xd3, //0x000023f8 notl %ebx - 0x21, 0xda, //0x000023fa andl %ebx, %edx - 0x48, 0x8b, 0x7d, 0xb0, //0x000023fc movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x00002400 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002404 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002408 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00002412 movq $-72(%rbp), %r10 - 0x48, 0x85, 0xd2, //0x00002416 testq %rdx, %rdx - 0x0f, 0x85, 0x00, 0xf7, 0xff, 0xff, //0x00002419 jne LBB0_140 - //0x0000241f LBB0_442 - 0x48, 0x83, 0xc0, 0x20, //0x0000241f addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00002423 addq $-32, %r9 - //0x00002427 LBB0_443 - 0x4d, 0x85, 0xc0, //0x00002427 testq %r8, %r8 - 0x0f, 0x85, 0xa4, 0x01, 0x00, 0x00, //0x0000242a jne LBB0_460 - 0x48, 0x8b, 0x55, 0xc8, //0x00002430 movq $-56(%rbp), %rdx - 0x4c, 0x8b, 0x45, 0xd0, //0x00002434 movq $-48(%rbp), %r8 - 0x4d, 0x85, 0xc9, //0x00002438 testq %r9, %r9 - 0x0f, 0x84, 0xa0, 0x00, 0x00, 0x00, //0x0000243b je LBB0_454 - //0x00002441 LBB0_445 - 0x31, 0xf6, //0x00002441 xorl %esi, %esi - //0x00002443 LBB0_446 - 0x0f, 0xb6, 0x0c, 0x30, //0x00002443 movzbl (%rax,%rsi), %ecx - 0x80, 0xf9, 0x22, //0x00002447 cmpb $34, %cl - 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x0000244a je LBB0_453 - 0x80, 0xf9, 0x5c, //0x00002450 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002453 je LBB0_451 - 0x48, 0x83, 0xc6, 0x01, //0x00002459 addq $1, %rsi - 0x49, 0x39, 0xf1, //0x0000245d cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002460 jne LBB0_446 - 0xe9, 0x7e, 0x00, 0x00, 0x00, //0x00002466 jmp LBB0_449 - //0x0000246b LBB0_451 - 0x49, 0x8d, 0x49, 0xff, //0x0000246b leaq $-1(%r9), %rcx - 0x48, 0x39, 0xf1, //0x0000246f cmpq %rsi, %rcx - 0x0f, 0x84, 0x4c, 0x12, 0x00, 0x00, //0x00002472 je LBB0_634 - 0x48, 0x8b, 0x4d, 0x80, //0x00002478 movq $-128(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x0000247c addq %rax, %rcx - 0x48, 0x01, 0xf1, //0x0000247f addq %rsi, %rcx - 0x48, 0x83, 0xfa, 0xff, //0x00002482 cmpq $-1, %rdx - 0x48, 0x8b, 0x7d, 0xc8, //0x00002486 movq $-56(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xf9, //0x0000248a cmoveq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x0000248e movq %rdi, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd1, //0x00002492 cmoveq %rcx, %rdx - 0x48, 0x01, 0xf0, //0x00002496 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00002499 addq $2, %rax - 0x4c, 0x89, 0xc9, //0x0000249d movq %r9, %rcx - 0x48, 0x29, 0xf1, //0x000024a0 subq %rsi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000024a3 addq $-2, %rcx - 0x49, 0x83, 0xc1, 0xfe, //0x000024a7 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x000024ab cmpq %rsi, %r9 - 0x49, 0x89, 0xc9, //0x000024ae movq %rcx, %r9 - 0x4c, 0x8b, 0x45, 0xd0, //0x000024b1 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000024b5 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x000024b9 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x000024bd movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000024c1 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x000024cb movq $-72(%rbp), %r10 - 0x0f, 0x85, 0x6c, 0xff, 0xff, 0xff, //0x000024cf jne LBB0_445 - 0xe9, 0x42, 0x0f, 0x00, 0x00, //0x000024d5 jmp LBB0_582 - //0x000024da LBB0_453 - 0x48, 0x01, 0xf0, //0x000024da addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000024dd addq $1, %rax - //0x000024e1 LBB0_454 - 0x4c, 0x29, 0xe0, //0x000024e1 subq %r12, %rax - 0xe9, 0x9f, 0xeb, 0xff, 0xff, //0x000024e4 jmp LBB0_225 - //0x000024e9 LBB0_449 - 0x80, 0xf9, 0x22, //0x000024e9 cmpb $34, %cl - 0x0f, 0x85, 0xd2, 0x11, 0x00, 0x00, //0x000024ec jne LBB0_634 - 0x4c, 0x01, 0xc8, //0x000024f2 addq %r9, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x000024f5 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000024f9 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x000024fd movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002501 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002505 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000250f movq $-72(%rbp), %r10 - 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00002513 jmp LBB0_454 - //0x00002518 LBB0_455 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002518 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000251d jne LBB0_457 - 0x49, 0x89, 0xc0, //0x00002523 movq %rax, %r8 - 0x4c, 0x2b, 0x45, 0xc0, //0x00002526 subq $-64(%rbp), %r8 - 0x49, 0x0f, 0xbc, 0xdb, //0x0000252a bsfq %r11, %rbx - 0x4c, 0x01, 0xc3, //0x0000252e addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00002531 movq %rbx, $-56(%rbp) - //0x00002535 LBB0_457 - 0x44, 0x89, 0xc9, //0x00002535 movl %r9d, %ecx - 0xf7, 0xd1, //0x00002538 notl %ecx - 0x44, 0x21, 0xd9, //0x0000253a andl %r11d, %ecx - 0x45, 0x8d, 0x04, 0x49, //0x0000253d leal (%r9,%rcx,2), %r8d - 0x8d, 0x14, 0x09, //0x00002541 leal (%rcx,%rcx), %edx - 0xf7, 0xd2, //0x00002544 notl %edx - 0x44, 0x21, 0xda, //0x00002546 andl %r11d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002549 andl $-1431655766, %edx - 0x45, 0x31, 0xc9, //0x0000254f xorl %r9d, %r9d - 0x01, 0xca, //0x00002552 addl %ecx, %edx - 0x41, 0x0f, 0x92, 0xc1, //0x00002554 setb %r9b - 0x01, 0xd2, //0x00002558 addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000255a xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00002560 andl %r8d, %edx - 0xf7, 0xd2, //0x00002563 notl %edx - 0x21, 0xd6, //0x00002565 andl %edx, %esi - 0x4c, 0x8b, 0x45, 0xd0, //0x00002567 movq $-48(%rbp), %r8 - 0x4c, 0x8b, 0x65, 0xc0, //0x0000256b movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000256f movq $-72(%rbp), %r10 - 0xe9, 0x3f, 0xf6, 0xff, 0xff, //0x00002573 jmp LBB0_185 - //0x00002578 LBB0_458 - 0x4d, 0x85, 0xc9, //0x00002578 testq %r9, %r9 - 0x0f, 0x84, 0xa9, 0x02, 0x00, 0x00, //0x0000257b je LBB0_485 - 0x48, 0x8b, 0x4d, 0x88, //0x00002581 movq $-120(%rbp), %rcx - 0x48, 0x8d, 0x14, 0x08, //0x00002585 leaq (%rax,%rcx), %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x00002589 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x0000258d cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x00002591 movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xf2, //0x00002594 cmoveq %rdx, %rsi - 0x48, 0x0f, 0x44, 0xca, //0x00002598 cmoveq %rdx, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x0000259c addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000025a0 addq $-1, %r9 - 0x48, 0x89, 0x75, 0xc8, //0x000025a4 movq %rsi, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x000025a8 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x000025ac movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x000025b0 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x000025b4 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000025b8 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x000025c2 movq $-72(%rbp), %r10 - 0x4d, 0x85, 0xc9, //0x000025c6 testq %r9, %r9 - 0x0f, 0x85, 0xa2, 0xfc, 0xff, 0xff, //0x000025c9 jne LBB0_426 - 0xe9, 0x3d, 0xfd, 0xff, 0xff, //0x000025cf jmp LBB0_435 - //0x000025d4 LBB0_460 - 0x4d, 0x85, 0xc9, //0x000025d4 testq %r9, %r9 - 0x0f, 0x84, 0xe7, 0x10, 0x00, 0x00, //0x000025d7 je LBB0_634 - 0x48, 0x8b, 0x4d, 0x88, //0x000025dd movq $-120(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000025e1 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x000025e4 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000025e8 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x000025ec movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x000025ef cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x000025f3 cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000025f7 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000025fb addq $-1, %r9 - 0x48, 0x89, 0x75, 0xc8, //0x000025ff movq %rsi, $-56(%rbp) - 0x4c, 0x8b, 0x45, 0xd0, //0x00002603 movq $-48(%rbp), %r8 - 0x48, 0x8b, 0x7d, 0xb0, //0x00002607 movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x0000260b movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x0000260f movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002613 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x0000261d movq $-72(%rbp), %r10 - 0x4d, 0x85, 0xc9, //0x00002621 testq %r9, %r9 - 0x0f, 0x85, 0x17, 0xfe, 0xff, 0xff, //0x00002624 jne LBB0_445 - 0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x0000262a jmp LBB0_454 - //0x0000262f LBB0_462 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000262f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002634 jne LBB0_464 - 0x48, 0x89, 0xc1, //0x0000263a movq %rax, %rcx - 0x48, 0x2b, 0x4d, 0xc0, //0x0000263d subq $-64(%rbp), %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x00002641 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x00002645 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x00002648 movq %rdi, $-56(%rbp) - //0x0000264c LBB0_464 - 0x44, 0x89, 0xc1, //0x0000264c movl %r8d, %ecx - 0xf7, 0xd1, //0x0000264f notl %ecx - 0x21, 0xf1, //0x00002651 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x00002653 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00002657 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x0000265a notl %ebx - 0x21, 0xf3, //0x0000265c andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000265e andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00002664 xorl %r8d, %r8d - 0x01, 0xcb, //0x00002667 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00002669 setb %r8b - 0x01, 0xdb, //0x0000266d addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000266f xorl $1431655765, %ebx - 0x21, 0xfb, //0x00002675 andl %edi, %ebx - 0xf7, 0xd3, //0x00002677 notl %ebx - 0x21, 0xda, //0x00002679 andl %ebx, %edx - 0x48, 0x8b, 0x7d, 0xb0, //0x0000267b movq $-80(%rbp), %rdi - 0x4c, 0x8b, 0x65, 0xc0, //0x0000267f movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x5d, 0xa8, //0x00002683 movq $-88(%rbp), %r11 - 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002687 movabsq $4294977024, %r14 - 0x4c, 0x8b, 0x55, 0xb8, //0x00002691 movq $-72(%rbp), %r10 - 0x48, 0x85, 0xd2, //0x00002695 testq %rdx, %rdx - 0x0f, 0x85, 0xd7, 0xf7, 0xff, 0xff, //0x00002698 jne LBB0_242 - //0x0000269e LBB0_465 - 0x48, 0x83, 0xc0, 0x20, //0x0000269e addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x000026a2 addq $-32, %r9 - //0x000026a6 LBB0_466 - 0x4d, 0x85, 0xc0, //0x000026a6 testq %r8, %r8 - 0x0f, 0x85, 0x06, 0x01, 0x00, 0x00, //0x000026a9 jne LBB0_481 - 0x48, 0x8b, 0x55, 0xc8, //0x000026af movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x000026b3 testq %r9, %r9 - 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, //0x000026b6 je LBB0_477 - //0x000026bc LBB0_468 - 0x31, 0xf6, //0x000026bc xorl %esi, %esi - //0x000026be LBB0_469 - 0x0f, 0xb6, 0x0c, 0x30, //0x000026be movzbl (%rax,%rsi), %ecx - 0x80, 0xf9, 0x22, //0x000026c2 cmpb $34, %cl - 0x0f, 0x84, 0x6c, 0x00, 0x00, 0x00, //0x000026c5 je LBB0_476 - 0x80, 0xf9, 0x5c, //0x000026cb cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000026ce je LBB0_474 - 0x48, 0x83, 0xc6, 0x01, //0x000026d4 addq $1, %rsi - 0x49, 0x39, 0xf1, //0x000026d8 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000026db jne LBB0_469 - 0xe9, 0x64, 0x00, 0x00, 0x00, //0x000026e1 jmp LBB0_472 - //0x000026e6 LBB0_474 - 0x49, 0x8d, 0x49, 0xff, //0x000026e6 leaq $-1(%r9), %rcx - 0x48, 0x39, 0xf1, //0x000026ea cmpq %rsi, %rcx - 0x0f, 0x84, 0x37, 0x01, 0x00, 0x00, //0x000026ed je LBB0_485 - 0x48, 0x8b, 0x4d, 0x80, //0x000026f3 movq $-128(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000026f7 addq %rax, %rcx - 0x48, 0x01, 0xf1, //0x000026fa addq %rsi, %rcx - 0x48, 0x83, 0xfa, 0xff, //0x000026fd cmpq $-1, %rdx - 0x48, 0x8b, 0x7d, 0xc8, //0x00002701 movq $-56(%rbp), %rdi - 0x48, 0x0f, 0x44, 0xf9, //0x00002705 cmoveq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x00002709 movq %rdi, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd1, //0x0000270d cmoveq %rcx, %rdx - 0x48, 0x01, 0xf0, //0x00002711 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00002714 addq $2, %rax - 0x4c, 0x89, 0xc9, //0x00002718 movq %r9, %rcx - 0x48, 0x29, 0xf1, //0x0000271b subq %rsi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x0000271e addq $-2, %rcx - 0x49, 0x83, 0xc1, 0xfe, //0x00002722 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x00002726 cmpq %rsi, %r9 - 0x49, 0x89, 0xc9, //0x00002729 movq %rcx, %r9 - 0x0f, 0x85, 0x8a, 0xff, 0xff, 0xff, //0x0000272c jne LBB0_468 - 0xe9, 0xf3, 0x00, 0x00, 0x00, //0x00002732 jmp LBB0_485 - //0x00002737 LBB0_476 - 0x48, 0x01, 0xf0, //0x00002737 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000273a addq $1, %rax - //0x0000273e LBB0_477 - 0x4c, 0x8b, 0x65, 0xc0, //0x0000273e movq $-64(%rbp), %r12 - 0x4c, 0x29, 0xe0, //0x00002742 subq %r12, %rax - 0xe9, 0x03, 0xeb, 0xff, 0xff, //0x00002745 jmp LBB0_247 - //0x0000274a LBB0_472 - 0x80, 0xf9, 0x22, //0x0000274a cmpb $34, %cl - 0x0f, 0x85, 0xd7, 0x00, 0x00, 0x00, //0x0000274d jne LBB0_485 - 0x4c, 0x01, 0xc8, //0x00002753 addq %r9, %rax - 0xe9, 0xe3, 0xff, 0xff, 0xff, //0x00002756 jmp LBB0_477 - //0x0000275b LBB0_478 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000275b cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002760 jne LBB0_480 - 0x48, 0x89, 0xc1, //0x00002766 movq %rax, %rcx - 0x48, 0x2b, 0x4d, 0xc0, //0x00002769 subq $-64(%rbp), %rcx - 0x48, 0x0f, 0xbc, 0xda, //0x0000276d bsfq %rdx, %rbx - 0x48, 0x01, 0xcb, //0x00002771 addq %rcx, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00002774 movq %rbx, $-56(%rbp) - //0x00002778 LBB0_480 - 0x44, 0x89, 0xc1, //0x00002778 movl %r8d, %ecx - 0xf7, 0xd1, //0x0000277b notl %ecx - 0x21, 0xd1, //0x0000277d andl %edx, %ecx - 0x45, 0x8d, 0x0c, 0x48, //0x0000277f leal (%r8,%rcx,2), %r9d - 0x8d, 0x1c, 0x09, //0x00002783 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00002786 notl %ebx - 0x21, 0xd3, //0x00002788 andl %edx, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000278a andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00002790 xorl %r8d, %r8d - 0x01, 0xcb, //0x00002793 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00002795 setb %r8b - 0x01, 0xdb, //0x00002799 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000279b xorl $1431655765, %ebx - 0x44, 0x21, 0xcb, //0x000027a1 andl %r9d, %ebx - 0xf7, 0xd3, //0x000027a4 notl %ebx - 0x21, 0xde, //0x000027a6 andl %ebx, %esi - 0x4c, 0x8b, 0x65, 0xc0, //0x000027a8 movq $-64(%rbp), %r12 - 0x4c, 0x8b, 0x55, 0xb8, //0x000027ac movq $-72(%rbp), %r10 - 0xe9, 0x57, 0xf7, 0xff, 0xff, //0x000027b0 jmp LBB0_316 - //0x000027b5 LBB0_481 - 0x4d, 0x85, 0xc9, //0x000027b5 testq %r9, %r9 - 0x0f, 0x84, 0x6c, 0x00, 0x00, 0x00, //0x000027b8 je LBB0_485 - 0x48, 0x8b, 0x4d, 0x88, //0x000027be movq $-120(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000027c2 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x000027c5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000027c9 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x000027cd movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x000027d0 cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x000027d4 cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000027d8 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000027dc addq $-1, %r9 - 0x48, 0x89, 0x75, 0xc8, //0x000027e0 movq %rsi, $-56(%rbp) - 0x4d, 0x85, 0xc9, //0x000027e4 testq %r9, %r9 - 0x0f, 0x85, 0xcf, 0xfe, 0xff, 0xff, //0x000027e7 jne LBB0_468 - 0xe9, 0x4c, 0xff, 0xff, 0xff, //0x000027ed jmp LBB0_477 - //0x000027f2 LBB0_483 - 0x4d, 0x85, 0xf6, //0x000027f2 testq %r14, %r14 - 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x000027f5 je LBB0_485 - 0x48, 0x8b, 0x4d, 0x88, //0x000027fb movq $-120(%rbp), %rcx - 0x48, 0x01, 0xc1, //0x000027ff addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002802 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002806 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x0000280a movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xf1, //0x0000280d cmoveq %rcx, %rsi - 0x48, 0x0f, 0x44, 0xd1, //0x00002811 cmoveq %rcx, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00002815 addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00002819 addq $-1, %r14 - 0x48, 0x89, 0x75, 0xc8, //0x0000281d movq %rsi, $-56(%rbp) - 0x4d, 0x85, 0xf6, //0x00002821 testq %r14, %r14 - 0x0f, 0x85, 0xae, 0xf7, 0xff, 0xff, //0x00002824 jne LBB0_398 - //0x0000282a LBB0_485 - 0x4c, 0x8b, 0x45, 0xd0, //0x0000282a movq $-48(%rbp), %r8 - 0xe9, 0x7a, 0x01, 0x00, 0x00, //0x0000282e jmp LBB0_509 - //0x00002833 LBB0_486 - 0x49, 0x89, 0x18, //0x00002833 movq %rbx, (%r8) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002836 movq $-1, %rax - 0xe9, 0xe7, 0x0b, 0x00, 0x00, //0x0000283d jmp LBB0_580 - //0x00002842 LBB0_487 - 0x49, 0x89, 0x30, //0x00002842 movq %rsi, (%r8) - //0x00002845 LBB0_488 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002845 movq $-1, %rax - 0xe9, 0xd8, 0x0b, 0x00, 0x00, //0x0000284c jmp LBB0_580 - //0x00002851 LBB0_489 - 0x4c, 0x01, 0xe3, //0x00002851 addq %r12, %rbx - 0x48, 0x89, 0xd8, //0x00002854 movq %rbx, %rax - //0x00002857 LBB0_490 - 0x4c, 0x29, 0xe0, //0x00002857 subq %r12, %rax - 0x48, 0x89, 0xc3, //0x0000285a movq %rax, %rbx - //0x0000285d LBB0_491 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000285d movq $-1, %rax - 0x49, 0x89, 0xd9, //0x00002864 movq %rbx, %r9 - 0x48, 0x39, 0xf3, //0x00002867 cmpq %rsi, %rbx - 0x0f, 0x83, 0xb9, 0x0b, 0x00, 0x00, //0x0000286a jae LBB0_580 - //0x00002870 LBB0_492 - 0x49, 0x8d, 0x71, 0x01, //0x00002870 leaq $1(%r9), %rsi - 0x49, 0x89, 0x30, //0x00002874 movq %rsi, (%r8) - 0x43, 0x0f, 0xbe, 0x0c, 0x0c, //0x00002877 movsbl (%r12,%r9), %ecx - 0x83, 0xf9, 0x7b, //0x0000287c cmpl $123, %ecx - 0x0f, 0x87, 0x38, 0x01, 0x00, 0x00, //0x0000287f ja LBB0_511 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002885 movq $-1, %rax - 0x48, 0x8d, 0x15, 0xa5, 0x0e, 0x00, 0x00, //0x0000288c leaq $3749(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00002893 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00002897 addq %rdx, %rcx - 0xff, 0xe1, //0x0000289a jmpq *%rcx - //0x0000289c LBB0_494 - 0x48, 0x8b, 0x47, 0x08, //0x0000289c movq $8(%rdi), %rax - 0x48, 0x89, 0xc1, //0x000028a0 movq %rax, %rcx - 0x48, 0x29, 0xf1, //0x000028a3 subq %rsi, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x000028a6 cmpq $16, %rcx - 0x0f, 0x82, 0xb0, 0x0d, 0x00, 0x00, //0x000028aa jb LBB0_616 - 0x4c, 0x89, 0xc9, //0x000028b0 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x000028b3 notq %rcx - 0xf3, 0x0f, 0x6f, 0x05, 0x42, 0xd7, 0xff, 0xff, //0x000028b6 movdqu $-10430(%rip), %xmm0 /* LCPI0_0+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x4a, 0xd7, 0xff, 0xff, //0x000028be movdqu $-10422(%rip), %xmm1 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0x52, 0xd7, 0xff, 0xff, //0x000028c6 movdqu $-10414(%rip), %xmm2 /* LCPI0_2+0(%rip) */ - 0x90, 0x90, //0x000028ce .p2align 4, 0x90 - //0x000028d0 LBB0_496 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x34, //0x000028d0 movdqu (%r12,%rsi), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000028d6 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x000028da pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xdb, 0xd9, //0x000028de pand %xmm1, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x000028e2 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x000028e6 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000028ea pmovmskb %xmm3, %edx - 0x85, 0xd2, //0x000028ee testl %edx, %edx - 0x0f, 0x85, 0x76, 0x00, 0x00, 0x00, //0x000028f0 jne LBB0_506 - 0x48, 0x83, 0xc6, 0x10, //0x000028f6 addq $16, %rsi - 0x48, 0x8d, 0x14, 0x08, //0x000028fa leaq (%rax,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xf0, //0x000028fe addq $-16, %rdx - 0x48, 0x83, 0xc1, 0xf0, //0x00002902 addq $-16, %rcx - 0x48, 0x83, 0xfa, 0x0f, //0x00002906 cmpq $15, %rdx - 0x0f, 0x87, 0xc0, 0xff, 0xff, 0xff, //0x0000290a ja LBB0_496 - 0x4c, 0x89, 0xe6, //0x00002910 movq %r12, %rsi - 0x48, 0x29, 0xce, //0x00002913 subq %rcx, %rsi - 0x48, 0x01, 0xc8, //0x00002916 addq %rcx, %rax - 0x48, 0x89, 0xc1, //0x00002919 movq %rax, %rcx - 0x48, 0x85, 0xc9, //0x0000291c testq %rcx, %rcx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x0000291f je LBB0_505 - //0x00002925 LBB0_499 - 0x48, 0x8d, 0x3c, 0x0e, //0x00002925 leaq (%rsi,%rcx), %rdi - 0x31, 0xc0, //0x00002929 xorl %eax, %eax - //0x0000292b LBB0_500 - 0x0f, 0xb6, 0x14, 0x06, //0x0000292b movzbl (%rsi,%rax), %edx - 0x80, 0xfa, 0x2c, //0x0000292f cmpb $44, %dl - 0x0f, 0x84, 0x81, 0x0b, 0x00, 0x00, //0x00002932 je LBB0_592 - 0x80, 0xfa, 0x7d, //0x00002938 cmpb $125, %dl - 0x0f, 0x84, 0x78, 0x0b, 0x00, 0x00, //0x0000293b je LBB0_592 - 0x80, 0xfa, 0x5d, //0x00002941 cmpb $93, %dl - 0x0f, 0x84, 0x6f, 0x0b, 0x00, 0x00, //0x00002944 je LBB0_592 - 0x48, 0x83, 0xc0, 0x01, //0x0000294a addq $1, %rax - 0x48, 0x39, 0xc1, //0x0000294e cmpq %rax, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00002951 jne LBB0_500 - 0x48, 0x89, 0xfe, //0x00002957 movq %rdi, %rsi - //0x0000295a LBB0_505 - 0x4c, 0x29, 0xe6, //0x0000295a subq %r12, %rsi - 0x48, 0x8b, 0x45, 0xd0, //0x0000295d movq $-48(%rbp), %rax - 0x48, 0x89, 0x30, //0x00002961 movq %rsi, (%rax) - 0x4c, 0x89, 0xc8, //0x00002964 movq %r9, %rax - 0xe9, 0xbd, 0x0a, 0x00, 0x00, //0x00002967 jmp LBB0_580 - //0x0000296c LBB0_506 - 0x66, 0x0f, 0xbc, 0xc2, //0x0000296c bsfw %dx, %ax - 0x0f, 0xb7, 0xc0, //0x00002970 movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x00002973 subq %rcx, %rax - 0x49, 0x89, 0x00, //0x00002976 movq %rax, (%r8) - 0x4c, 0x89, 0xc8, //0x00002979 movq %r9, %rax - 0xe9, 0xa8, 0x0a, 0x00, 0x00, //0x0000297c jmp LBB0_580 - //0x00002981 LBB0_507 - 0x49, 0x8d, 0x49, 0x04, //0x00002981 leaq $4(%r9), %rcx - 0xe9, 0x9c, 0x05, 0x00, 0x00, //0x00002985 jmp LBB0_548 - //0x0000298a LBB0_597 - 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x0000298a movq $-7, %rax - 0xe9, 0x93, 0x0a, 0x00, 0x00, //0x00002991 jmp LBB0_580 - //0x00002996 LBB0_217 - 0x48, 0x83, 0xc0, 0xff, //0x00002996 addq $-1, %rax - 0xe9, 0x8a, 0x0a, 0x00, 0x00, //0x0000299a jmp LBB0_580 - //0x0000299f LBB0_508 - 0x48, 0x83, 0xf8, 0xff, //0x0000299f cmpq $-1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x000029a3 movq $-56(%rbp), %rdx - 0x0f, 0x85, 0x79, 0x0a, 0x00, 0x00, //0x000029a7 jne LBB0_510 - //0x000029ad LBB0_509 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000029ad movq $-1, %rax - 0x48, 0x8b, 0x55, 0xa0, //0x000029b4 movq $-96(%rbp), %rdx - 0xe9, 0x69, 0x0a, 0x00, 0x00, //0x000029b8 jmp LBB0_510 - //0x000029bd LBB0_511 - 0x4d, 0x89, 0x08, //0x000029bd movq %r9, (%r8) - 0xe9, 0x3d, 0x0a, 0x00, 0x00, //0x000029c0 jmp LBB0_579 - //0x000029c5 LBB0_512 - 0x4c, 0x8b, 0x47, 0x08, //0x000029c5 movq $8(%rdi), %r8 - 0x4d, 0x89, 0xc6, //0x000029c9 movq %r8, %r14 - 0x49, 0x29, 0xf6, //0x000029cc subq %rsi, %r14 - 0x49, 0x83, 0xfe, 0x20, //0x000029cf cmpq $32, %r14 - 0x0f, 0x8c, 0xa1, 0x0c, 0x00, 0x00, //0x000029d3 jl LBB0_619 - 0x4f, 0x8d, 0x14, 0x0c, //0x000029d9 leaq (%r12,%r9), %r10 - 0x4d, 0x29, 0xc8, //0x000029dd subq %r9, %r8 - 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x000029e0 movl $31, %r15d - 0x45, 0x31, 0xf6, //0x000029e6 xorl %r14d, %r14d - 0xf3, 0x0f, 0x6f, 0x05, 0x3f, 0xd6, 0xff, 0xff, //0x000029e9 movdqu $-10689(%rip), %xmm0 /* LCPI0_3+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x47, 0xd6, 0xff, 0xff, //0x000029f1 movdqu $-10681(%rip), %xmm1 /* LCPI0_4+0(%rip) */ - 0x45, 0x31, 0xdb, //0x000029f9 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, //0x000029fc .p2align 4, 0x90 - //0x00002a00 LBB0_514 - 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x32, 0x01, //0x00002a00 movdqu $1(%r10,%r14), %xmm2 - 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x32, 0x11, //0x00002a07 movdqu $17(%r10,%r14), %xmm3 - 0x66, 0x0f, 0x6f, 0xe2, //0x00002a0e movdqa %xmm2, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00002a12 pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00002a16 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0x6f, 0xe3, //0x00002a1a movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0xe0, //0x00002a1e pcmpeqb %xmm0, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00002a22 pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00002a26 shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00002a2a orq %rdx, %rsi - 0x66, 0x0f, 0x74, 0xd1, //0x00002a2d pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002a31 pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00002a35 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00002a39 pmovmskb %xmm3, %edx - 0x48, 0xc1, 0xe2, 0x10, //0x00002a3d shlq $16, %rdx - 0x48, 0x09, 0xca, //0x00002a41 orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00002a44 movq %rdx, %rcx - 0x4c, 0x09, 0xd9, //0x00002a47 orq %r11, %rcx - 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00002a4a je LBB0_516 - 0x44, 0x89, 0xd9, //0x00002a50 movl %r11d, %ecx - 0xf7, 0xd1, //0x00002a53 notl %ecx - 0x21, 0xd1, //0x00002a55 andl %edx, %ecx - 0x8d, 0x1c, 0x09, //0x00002a57 leal (%rcx,%rcx), %ebx - 0x44, 0x09, 0xdb, //0x00002a5a orl %r11d, %ebx - 0x89, 0xdf, //0x00002a5d movl %ebx, %edi - 0xf7, 0xd7, //0x00002a5f notl %edi - 0x21, 0xd7, //0x00002a61 andl %edx, %edi - 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002a63 andl $-1431655766, %edi - 0x45, 0x31, 0xdb, //0x00002a69 xorl %r11d, %r11d - 0x01, 0xcf, //0x00002a6c addl %ecx, %edi - 0x41, 0x0f, 0x92, 0xc3, //0x00002a6e setb %r11b - 0x01, 0xff, //0x00002a72 addl %edi, %edi - 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x00002a74 xorl $1431655765, %edi - 0x21, 0xdf, //0x00002a7a andl %ebx, %edi - 0xf7, 0xd7, //0x00002a7c notl %edi - 0x21, 0xfe, //0x00002a7e andl %edi, %esi - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00002a80 jmp LBB0_517 - //0x00002a85 LBB0_516 - 0x45, 0x31, 0xdb, //0x00002a85 xorl %r11d, %r11d - //0x00002a88 LBB0_517 - 0x48, 0x85, 0xf6, //0x00002a88 testq %rsi, %rsi - 0x0f, 0x85, 0x40, 0x09, 0x00, 0x00, //0x00002a8b jne LBB0_576 - 0x49, 0x83, 0xc6, 0x20, //0x00002a91 addq $32, %r14 - 0x4b, 0x8d, 0x0c, 0x38, //0x00002a95 leaq (%r8,%r15), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00002a99 addq $-32, %rcx - 0x49, 0x83, 0xc7, 0xe0, //0x00002a9d addq $-32, %r15 - 0x48, 0x83, 0xf9, 0x3f, //0x00002aa1 cmpq $63, %rcx - 0x0f, 0x8f, 0x55, 0xff, 0xff, 0xff, //0x00002aa5 jg LBB0_514 - 0x4d, 0x85, 0xdb, //0x00002aab testq %r11, %r11 - 0x0f, 0x85, 0x2e, 0x0c, 0x00, 0x00, //0x00002aae jne LBB0_626 - 0x4b, 0x8d, 0x34, 0x16, //0x00002ab4 leaq (%r14,%r10), %rsi - 0x48, 0x83, 0xc6, 0x01, //0x00002ab8 addq $1, %rsi - 0x49, 0xf7, 0xd6, //0x00002abc notq %r14 - 0x4d, 0x01, 0xc6, //0x00002abf addq %r8, %r14 - //0x00002ac2 LBB0_521 - 0x4d, 0x85, 0xf6, //0x00002ac2 testq %r14, %r14 - 0x48, 0x8b, 0x55, 0xd0, //0x00002ac5 movq $-48(%rbp), %rdx - 0x0f, 0x8f, 0x8b, 0x09, 0x00, 0x00, //0x00002ac9 jg LBB0_585 - 0xe9, 0x55, 0x09, 0x00, 0x00, //0x00002acf jmp LBB0_580 - //0x00002ad4 LBB0_522 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002ad4 movabsq $6148914691236517205, %r15 - 0x48, 0x8b, 0x4f, 0x08, //0x00002ade movq $8(%rdi), %rcx - 0x48, 0x29, 0xf1, //0x00002ae2 subq %rsi, %rcx - 0x49, 0x01, 0xf4, //0x00002ae5 addq %rsi, %r12 - 0x31, 0xdb, //0x00002ae8 xorl %ebx, %ebx - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x4d, 0xd5, 0xff, 0xff, //0x00002aea movdqu $-10931(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0x35, 0xd5, 0xff, 0xff, //0x00002af3 movdqu $-10955(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00002afb pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0x68, 0xd5, 0xff, 0xff, //0x00002b00 movdqu $-10904(%rip), %xmm3 /* LCPI0_7+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0x10, 0xd5, 0xff, 0xff, //0x00002b08 movdqu $-10992(%rip), %xmm4 /* LCPI0_2+0(%rip) */ - 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002b10 movabsq $3689348814741910323, %r13 - 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00002b1a pxor %xmm8, %xmm8 - 0x31, 0xd2, //0x00002b1f xorl %edx, %edx - 0x45, 0x31, 0xf6, //0x00002b21 xorl %r14d, %r14d - 0x45, 0x31, 0xd2, //0x00002b24 xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x40, //0x00002b27 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xc0, //0x00002b2b movq %rcx, $-64(%rbp) - 0x0f, 0x8c, 0x8c, 0x02, 0x00, 0x00, //0x00002b2f jl LBB0_531 - //0x00002b35 LBB0_525 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00002b35 movdqu (%r12), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x10, //0x00002b3b movdqu $16(%r12), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x20, //0x00002b42 movdqu $32(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x30, //0x00002b49 movdqu $48(%r12), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00002b50 movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002b54 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00002b59 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd5, //0x00002b5d movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002b61 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002b66 pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00002b6a movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002b6e pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00002b73 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd6, //0x00002b77 movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002b7b pcmpeqb %xmm10, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00002b80 pmovmskb %xmm2, %r8d - 0x49, 0xc1, 0xe0, 0x30, //0x00002b85 shlq $48, %r8 - 0x48, 0xc1, 0xe7, 0x20, //0x00002b89 shlq $32, %rdi - 0x4c, 0x09, 0xc7, //0x00002b8d orq %r8, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00002b90 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00002b94 orq %rdi, %rcx - 0x48, 0x09, 0xce, //0x00002b97 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00002b9a movq %rsi, %rcx - 0x48, 0x09, 0xd1, //0x00002b9d orq %rdx, %rcx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002ba0 jne LBB0_527 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00002ba6 movq $-1, %rsi - 0x31, 0xc9, //0x00002bad xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xb8, //0x00002baf movq %rcx, $-72(%rbp) - 0xe9, 0x44, 0x00, 0x00, 0x00, //0x00002bb3 jmp LBB0_528 - //0x00002bb8 LBB0_527 - 0x48, 0x89, 0xd1, //0x00002bb8 movq %rdx, %rcx - 0x48, 0xf7, 0xd1, //0x00002bbb notq %rcx - 0x48, 0x21, 0xf1, //0x00002bbe andq %rsi, %rcx - 0x48, 0x8d, 0x3c, 0x09, //0x00002bc1 leaq (%rcx,%rcx), %rdi - 0x48, 0x09, 0xd7, //0x00002bc5 orq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00002bc8 movq %rdi, %rdx - 0x48, 0xf7, 0xd2, //0x00002bcb notq %rdx - 0x49, 0x89, 0xd8, //0x00002bce movq %rbx, %r8 - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002bd1 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00002bdb andq %rbx, %rsi - 0x4c, 0x89, 0xc3, //0x00002bde movq %r8, %rbx - 0x48, 0x21, 0xd6, //0x00002be1 andq %rdx, %rsi - 0x31, 0xd2, //0x00002be4 xorl %edx, %edx - 0x48, 0x01, 0xce, //0x00002be6 addq %rcx, %rsi - 0x0f, 0x92, 0xc2, //0x00002be9 setb %dl - 0x48, 0x89, 0x55, 0xb8, //0x00002bec movq %rdx, $-72(%rbp) - 0x48, 0x01, 0xf6, //0x00002bf0 addq %rsi, %rsi - 0x4c, 0x31, 0xfe, //0x00002bf3 xorq %r15, %rsi - 0x48, 0x21, 0xfe, //0x00002bf6 andq %rdi, %rsi - 0x48, 0xf7, 0xd6, //0x00002bf9 notq %rsi - //0x00002bfc LBB0_528 - 0x66, 0x0f, 0x6f, 0xd6, //0x00002bfc movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00002c00 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002c04 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00002c08 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xd7, //0x00002c0c movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00002c10 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00002c14 pmovmskb %xmm2, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x00002c18 shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x00002c1c orq %rcx, %rdi - 0x66, 0x0f, 0x6f, 0xd5, //0x00002c1f movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00002c23 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002c27 pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00002c2b shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00002c2f orq %rdi, %rcx - 0x66, 0x0f, 0x6f, 0xd0, //0x00002c32 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00002c36 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00002c3a pmovmskb %xmm2, %edi - 0x48, 0x09, 0xcf, //0x00002c3e orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x00002c41 andq %rsi, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x00002c44 movq %rdi, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00002c49 pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd3, //0x00002c50 movq %xmm2, %r11 - 0x49, 0x31, 0xdb, //0x00002c55 xorq %rbx, %r11 - 0x66, 0x0f, 0x6f, 0xd0, //0x00002c58 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00002c5c pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00002c60 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd5, //0x00002c64 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00002c68 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002c6c pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00002c70 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00002c74 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x00002c78 pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x6f, 0xd6, //0x00002c7c movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x00002c80 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x00002c84 pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x00002c88 shlq $48, %rbx - 0x48, 0xc1, 0xe2, 0x20, //0x00002c8c shlq $32, %rdx - 0x48, 0x09, 0xda, //0x00002c90 orq %rbx, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x00002c93 shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x00002c97 orq %rdx, %rcx - 0x48, 0x09, 0xcf, //0x00002c9a orq %rcx, %rdi - 0x4c, 0x89, 0xd9, //0x00002c9d movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00002ca0 notq %rcx - 0x48, 0x21, 0xcf, //0x00002ca3 andq %rcx, %rdi - 0x66, 0x0f, 0x74, 0xc4, //0x00002ca6 pcmpeqb %xmm4, %xmm0 - 0x66, 0x44, 0x0f, 0xd7, 0xc0, //0x00002caa pmovmskb %xmm0, %r8d - 0x66, 0x0f, 0x74, 0xec, //0x00002caf pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002cb3 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x74, 0xfc, //0x00002cb7 pcmpeqb %xmm4, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00002cbb pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x74, 0xf4, //0x00002cbf pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00002cc3 pmovmskb %xmm6, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x00002cc8 shlq $48, %r15 - 0x48, 0xc1, 0xe3, 0x20, //0x00002ccc shlq $32, %rbx - 0x4c, 0x09, 0xfb, //0x00002cd0 orq %r15, %rbx - 0x48, 0xc1, 0xe2, 0x10, //0x00002cd3 shlq $16, %rdx - 0x48, 0x09, 0xda, //0x00002cd7 orq %rbx, %rdx - 0x49, 0x09, 0xd0, //0x00002cda orq %rdx, %r8 - 0x48, 0xbe, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002cdd movabsq $1085102592571150095, %rsi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002ce7 movabsq $6148914691236517205, %r15 - 0x49, 0x21, 0xc8, //0x00002cf1 andq %rcx, %r8 - 0x0f, 0x84, 0x64, 0x00, 0x00, 0x00, //0x00002cf4 je LBB0_523 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002cfa .p2align 4, 0x90 - //0x00002d00 LBB0_529 - 0x49, 0x8d, 0x48, 0xff, //0x00002d00 leaq $-1(%r8), %rcx - 0x48, 0x89, 0xca, //0x00002d04 movq %rcx, %rdx - 0x48, 0x21, 0xfa, //0x00002d07 andq %rdi, %rdx - 0x48, 0x89, 0xd3, //0x00002d0a movq %rdx, %rbx - 0x48, 0xd1, 0xeb, //0x00002d0d shrq %rbx - 0x4c, 0x21, 0xfb, //0x00002d10 andq %r15, %rbx - 0x48, 0x29, 0xda, //0x00002d13 subq %rbx, %rdx - 0x48, 0x89, 0xd3, //0x00002d16 movq %rdx, %rbx - 0x4c, 0x21, 0xeb, //0x00002d19 andq %r13, %rbx - 0x48, 0xc1, 0xea, 0x02, //0x00002d1c shrq $2, %rdx - 0x4c, 0x21, 0xea, //0x00002d20 andq %r13, %rdx - 0x48, 0x01, 0xda, //0x00002d23 addq %rbx, %rdx - 0x48, 0x89, 0xd3, //0x00002d26 movq %rdx, %rbx - 0x48, 0xc1, 0xeb, 0x04, //0x00002d29 shrq $4, %rbx - 0x48, 0x01, 0xd3, //0x00002d2d addq %rdx, %rbx - 0x48, 0x21, 0xf3, //0x00002d30 andq %rsi, %rbx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002d33 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xda, //0x00002d3d imulq %rdx, %rbx - 0x48, 0xc1, 0xeb, 0x38, //0x00002d41 shrq $56, %rbx - 0x4c, 0x01, 0xf3, //0x00002d45 addq %r14, %rbx - 0x4c, 0x39, 0xd3, //0x00002d48 cmpq %r10, %rbx - 0x0f, 0x86, 0x41, 0x06, 0x00, 0x00, //0x00002d4b jbe LBB0_575 - 0x49, 0x83, 0xc2, 0x01, //0x00002d51 addq $1, %r10 - 0x49, 0x21, 0xc8, //0x00002d55 andq %rcx, %r8 - 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x00002d58 jne LBB0_529 - //0x00002d5e LBB0_523 - 0x49, 0xc1, 0xfb, 0x3f, //0x00002d5e sarq $63, %r11 - 0x48, 0x89, 0xf9, //0x00002d62 movq %rdi, %rcx - 0x48, 0xd1, 0xe9, //0x00002d65 shrq %rcx - 0x4c, 0x21, 0xf9, //0x00002d68 andq %r15, %rcx - 0x48, 0x29, 0xcf, //0x00002d6b subq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x00002d6e movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00002d71 andq %r13, %rcx - 0x48, 0xc1, 0xef, 0x02, //0x00002d74 shrq $2, %rdi - 0x4c, 0x21, 0xef, //0x00002d78 andq %r13, %rdi - 0x48, 0x01, 0xcf, //0x00002d7b addq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x00002d7e movq %rdi, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00002d81 shrq $4, %rcx - 0x48, 0x01, 0xf9, //0x00002d85 addq %rdi, %rcx - 0x48, 0x21, 0xf1, //0x00002d88 andq %rsi, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002d8b movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00002d95 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00002d99 shrq $56, %rcx - 0x49, 0x01, 0xce, //0x00002d9d addq %rcx, %r14 - 0x49, 0x83, 0xc4, 0x40, //0x00002da0 addq $64, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00002da4 movq $-64(%rbp), %rcx - 0x48, 0x83, 0xc1, 0xc0, //0x00002da8 addq $-64, %rcx - 0x4c, 0x89, 0xdb, //0x00002dac movq %r11, %rbx - 0x48, 0x8b, 0x55, 0xb8, //0x00002daf movq $-72(%rbp), %rdx - 0x48, 0x83, 0xf9, 0x40, //0x00002db3 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xc0, //0x00002db7 movq %rcx, $-64(%rbp) - 0x0f, 0x8d, 0x74, 0xfd, 0xff, 0xff, //0x00002dbb jge LBB0_525 - //0x00002dc1 LBB0_531 - 0x48, 0x85, 0xc9, //0x00002dc1 testq %rcx, %rcx - 0x0f, 0x8e, 0xc6, 0x08, 0x00, 0x00, //0x00002dc4 jle LBB0_621 - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00002dca movdqu %xmm8, $-176(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x40, 0xff, 0xff, 0xff, //0x00002dd3 movdqu %xmm8, $-192(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00002ddc movdqu %xmm8, $-208(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00002de5 movdqu %xmm8, $-224(%rbp) - 0x44, 0x89, 0xe1, //0x00002dee movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00002df1 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00002df7 cmpl $4033, %ecx - 0x0f, 0x82, 0x3e, 0x00, 0x00, 0x00, //0x00002dfd jb LBB0_535 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00002e03 cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x00002e08 jb LBB0_536 - 0x41, 0x0f, 0x10, 0x04, 0x24, //0x00002e0e movups (%r12), %xmm0 - 0x0f, 0x11, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00002e13 movups %xmm0, $-224(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x44, 0x24, 0x10, //0x00002e1a movdqu $16(%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00002e21 movdqu %xmm0, $-208(%rbp) - 0x49, 0x83, 0xc4, 0x20, //0x00002e29 addq $32, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00002e2d movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x00002e31 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0xbd, 0x40, 0xff, 0xff, 0xff, //0x00002e35 leaq $-192(%rbp), %rdi - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x00002e3c jmp LBB0_537 - //0x00002e41 LBB0_535 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002e41 movabsq $6148914691236517205, %r15 - 0xe9, 0xe5, 0xfc, 0xff, 0xff, //0x00002e4b jmp LBB0_525 - //0x00002e50 LBB0_536 - 0x48, 0x8d, 0xbd, 0x20, 0xff, 0xff, 0xff, //0x00002e50 leaq $-224(%rbp), %rdi - 0x48, 0x8b, 0x75, 0xc0, //0x00002e57 movq $-64(%rbp), %rsi - //0x00002e5b LBB0_537 - 0x48, 0x83, 0xfe, 0x10, //0x00002e5b cmpq $16, %rsi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x00002e5f jb LBB0_538 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00002e65 movdqu (%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x07, //0x00002e6b movdqu %xmm0, (%rdi) - 0x49, 0x83, 0xc4, 0x10, //0x00002e6f addq $16, %r12 - 0x48, 0x83, 0xc7, 0x10, //0x00002e73 addq $16, %rdi - 0x48, 0x83, 0xc6, 0xf0, //0x00002e77 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00002e7b cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002e7f jae LBB0_545 - //0x00002e85 LBB0_539 - 0x48, 0x83, 0xfe, 0x04, //0x00002e85 cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x00002e89 jl LBB0_540 - //0x00002e8f LBB0_546 - 0x41, 0x8b, 0x0c, 0x24, //0x00002e8f movl (%r12), %ecx - 0x89, 0x0f, //0x00002e93 movl %ecx, (%rdi) - 0x49, 0x83, 0xc4, 0x04, //0x00002e95 addq $4, %r12 - 0x48, 0x83, 0xc7, 0x04, //0x00002e99 addq $4, %rdi - 0x48, 0x83, 0xc6, 0xfc, //0x00002e9d addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00002ea1 cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00002ea5 jae LBB0_541 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x00002eab jmp LBB0_542 - //0x00002eb0 LBB0_538 - 0x48, 0x83, 0xfe, 0x08, //0x00002eb0 cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00002eb4 jb LBB0_539 - //0x00002eba LBB0_545 - 0x49, 0x8b, 0x0c, 0x24, //0x00002eba movq (%r12), %rcx - 0x48, 0x89, 0x0f, //0x00002ebe movq %rcx, (%rdi) - 0x49, 0x83, 0xc4, 0x08, //0x00002ec1 addq $8, %r12 - 0x48, 0x83, 0xc7, 0x08, //0x00002ec5 addq $8, %rdi - 0x48, 0x83, 0xc6, 0xf8, //0x00002ec9 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00002ecd cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00002ed1 jge LBB0_546 - //0x00002ed7 LBB0_540 - 0x48, 0x83, 0xfe, 0x02, //0x00002ed7 cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x00002edb jb LBB0_542 - //0x00002ee1 LBB0_541 - 0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x00002ee1 movzwl (%r12), %ecx - 0x66, 0x89, 0x0f, //0x00002ee6 movw %cx, (%rdi) - 0x49, 0x83, 0xc4, 0x02, //0x00002ee9 addq $2, %r12 - 0x48, 0x83, 0xc7, 0x02, //0x00002eed addq $2, %rdi - 0x48, 0x83, 0xc6, 0xfe, //0x00002ef1 addq $-2, %rsi - //0x00002ef5 LBB0_542 - 0x4c, 0x89, 0xe1, //0x00002ef5 movq %r12, %rcx - 0x4c, 0x8d, 0xa5, 0x20, 0xff, 0xff, 0xff, //0x00002ef8 leaq $-224(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x00002eff testq %rsi, %rsi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002f02 movabsq $6148914691236517205, %r15 - 0x0f, 0x84, 0x23, 0xfc, 0xff, 0xff, //0x00002f0c je LBB0_525 - 0x8a, 0x09, //0x00002f12 movb (%rcx), %cl - 0x88, 0x0f, //0x00002f14 movb %cl, (%rdi) - 0x4c, 0x8d, 0xa5, 0x20, 0xff, 0xff, 0xff, //0x00002f16 leaq $-224(%rbp), %r12 - 0xe9, 0x13, 0xfc, 0xff, 0xff, //0x00002f1d jmp LBB0_525 - //0x00002f22 LBB0_547 - 0x49, 0x8d, 0x49, 0x05, //0x00002f22 leaq $5(%r9), %rcx - //0x00002f26 LBB0_548 - 0x48, 0x3b, 0x4f, 0x08, //0x00002f26 cmpq $8(%rdi), %rcx - 0x0f, 0x87, 0xf9, 0x04, 0x00, 0x00, //0x00002f2a ja LBB0_580 - 0x49, 0x89, 0x08, //0x00002f30 movq %rcx, (%r8) - 0x4c, 0x89, 0xc8, //0x00002f33 movq %r9, %rax - 0xe9, 0xee, 0x04, 0x00, 0x00, //0x00002f36 jmp LBB0_580 - //0x00002f3b LBB0_550 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002f3b movabsq $6148914691236517205, %r15 - 0x48, 0x8b, 0x4f, 0x08, //0x00002f45 movq $8(%rdi), %rcx - 0x48, 0x29, 0xf1, //0x00002f49 subq %rsi, %rcx - 0x49, 0x01, 0xf4, //0x00002f4c addq %rsi, %r12 - 0x31, 0xdb, //0x00002f4f xorl %ebx, %ebx - 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0xe6, 0xd0, 0xff, 0xff, //0x00002f51 movdqu $-12058(%rip), %xmm10 /* LCPI0_4+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xce, 0xd0, 0xff, 0xff, //0x00002f5a movdqu $-12082(%rip), %xmm1 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00002f62 pcmpeqd %xmm9, %xmm9 - 0xf3, 0x0f, 0x6f, 0x1d, 0xe1, 0xd0, 0xff, 0xff, //0x00002f67 movdqu $-12063(%rip), %xmm3 /* LCPI0_5+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x25, 0xe9, 0xd0, 0xff, 0xff, //0x00002f6f movdqu $-12055(%rip), %xmm4 /* LCPI0_6+0(%rip) */ - 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002f77 movabsq $3689348814741910323, %r13 - 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00002f81 pxor %xmm8, %xmm8 - 0x31, 0xd2, //0x00002f86 xorl %edx, %edx - 0x45, 0x31, 0xf6, //0x00002f88 xorl %r14d, %r14d - 0x45, 0x31, 0xd2, //0x00002f8b xorl %r10d, %r10d - 0x48, 0x83, 0xf9, 0x40, //0x00002f8e cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xc0, //0x00002f92 movq %rcx, $-64(%rbp) - 0x0f, 0x8c, 0x95, 0x02, 0x00, 0x00, //0x00002f96 jl LBB0_559 - //0x00002f9c LBB0_553 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x00002f9c movdqu (%r12), %xmm0 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x10, //0x00002fa2 movdqu $16(%r12), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x20, //0x00002fa9 movdqu $32(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x30, //0x00002fb0 movdqu $48(%r12), %xmm6 - 0x66, 0x0f, 0x6f, 0xd0, //0x00002fb7 movdqa %xmm0, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002fbb pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xf2, //0x00002fc0 pmovmskb %xmm2, %esi - 0x66, 0x0f, 0x6f, 0xd5, //0x00002fc4 movdqa %xmm5, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002fc8 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x00002fcd pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x00002fd1 movdqa %xmm7, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002fd5 pcmpeqb %xmm10, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x00002fda pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd6, //0x00002fde movdqa %xmm6, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002fe2 pcmpeqb %xmm10, %xmm2 - 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00002fe7 pmovmskb %xmm2, %r8d - 0x49, 0xc1, 0xe0, 0x30, //0x00002fec shlq $48, %r8 - 0x48, 0xc1, 0xe7, 0x20, //0x00002ff0 shlq $32, %rdi - 0x4c, 0x09, 0xc7, //0x00002ff4 orq %r8, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x00002ff7 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00002ffb orq %rdi, %rcx - 0x48, 0x09, 0xce, //0x00002ffe orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00003001 movq %rsi, %rcx - 0x48, 0x09, 0xd1, //0x00003004 orq %rdx, %rcx - 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00003007 jne LBB0_555 - 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000300d movq $-1, %rsi - 0x31, 0xc9, //0x00003014 xorl %ecx, %ecx - 0x48, 0x89, 0x4d, 0xb8, //0x00003016 movq %rcx, $-72(%rbp) - 0xe9, 0x44, 0x00, 0x00, 0x00, //0x0000301a jmp LBB0_556 - //0x0000301f LBB0_555 - 0x48, 0x89, 0xd1, //0x0000301f movq %rdx, %rcx - 0x48, 0xf7, 0xd1, //0x00003022 notq %rcx - 0x48, 0x21, 0xf1, //0x00003025 andq %rsi, %rcx - 0x48, 0x8d, 0x3c, 0x09, //0x00003028 leaq (%rcx,%rcx), %rdi - 0x48, 0x09, 0xd7, //0x0000302c orq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x0000302f movq %rdi, %rdx - 0x48, 0xf7, 0xd2, //0x00003032 notq %rdx - 0x49, 0x89, 0xd8, //0x00003035 movq %rbx, %r8 - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003038 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00003042 andq %rbx, %rsi - 0x4c, 0x89, 0xc3, //0x00003045 movq %r8, %rbx - 0x48, 0x21, 0xd6, //0x00003048 andq %rdx, %rsi - 0x31, 0xd2, //0x0000304b xorl %edx, %edx - 0x48, 0x01, 0xce, //0x0000304d addq %rcx, %rsi - 0x0f, 0x92, 0xc2, //0x00003050 setb %dl - 0x48, 0x89, 0x55, 0xb8, //0x00003053 movq %rdx, $-72(%rbp) - 0x48, 0x01, 0xf6, //0x00003057 addq %rsi, %rsi - 0x4c, 0x31, 0xfe, //0x0000305a xorq %r15, %rsi - 0x48, 0x21, 0xfe, //0x0000305d andq %rdi, %rsi - 0x48, 0xf7, 0xd6, //0x00003060 notq %rsi - //0x00003063 LBB0_556 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003063 movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00003067 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000306b pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x0000306f shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xd7, //0x00003073 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x00003077 pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x0000307b pmovmskb %xmm2, %edi - 0x48, 0xc1, 0xe7, 0x20, //0x0000307f shlq $32, %rdi - 0x48, 0x09, 0xcf, //0x00003083 orq %rcx, %rdi - 0x66, 0x0f, 0x6f, 0xd5, //0x00003086 movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x0000308a pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x0000308e pmovmskb %xmm2, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00003092 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x00003096 orq %rdi, %rcx - 0x66, 0x0f, 0x6f, 0xd0, //0x00003099 movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd1, //0x0000309d pcmpeqb %xmm1, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x000030a1 pmovmskb %xmm2, %edi - 0x48, 0x09, 0xcf, //0x000030a5 orq %rcx, %rdi - 0x48, 0x21, 0xf7, //0x000030a8 andq %rsi, %rdi - 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x000030ab movq %rdi, %xmm2 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x000030b0 pclmulqdq $0, %xmm9, %xmm2 - 0x66, 0x49, 0x0f, 0x7e, 0xd3, //0x000030b7 movq %xmm2, %r11 - 0x49, 0x31, 0xdb, //0x000030bc xorq %rbx, %r11 - 0x66, 0x0f, 0x6f, 0xd0, //0x000030bf movdqa %xmm0, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x000030c3 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xfa, //0x000030c7 pmovmskb %xmm2, %edi - 0x66, 0x0f, 0x6f, 0xd5, //0x000030cb movdqa %xmm5, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x000030cf pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xca, //0x000030d3 pmovmskb %xmm2, %ecx - 0x66, 0x0f, 0x6f, 0xd7, //0x000030d7 movdqa %xmm7, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x000030db pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xd2, //0x000030df pmovmskb %xmm2, %edx - 0x66, 0x0f, 0x6f, 0xd6, //0x000030e3 movdqa %xmm6, %xmm2 - 0x66, 0x0f, 0x74, 0xd3, //0x000030e7 pcmpeqb %xmm3, %xmm2 - 0x66, 0x0f, 0xd7, 0xda, //0x000030eb pmovmskb %xmm2, %ebx - 0x48, 0xc1, 0xe3, 0x30, //0x000030ef shlq $48, %rbx - 0x48, 0xc1, 0xe2, 0x20, //0x000030f3 shlq $32, %rdx - 0x48, 0x09, 0xda, //0x000030f7 orq %rbx, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x000030fa shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x000030fe orq %rdx, %rcx - 0x48, 0x09, 0xcf, //0x00003101 orq %rcx, %rdi - 0x4c, 0x89, 0xd9, //0x00003104 movq %r11, %rcx - 0x48, 0xf7, 0xd1, //0x00003107 notq %rcx - 0x48, 0x21, 0xcf, //0x0000310a andq %rcx, %rdi - 0x66, 0x0f, 0x74, 0xc4, //0x0000310d pcmpeqb %xmm4, %xmm0 - 0x66, 0x44, 0x0f, 0xd7, 0xc0, //0x00003111 pmovmskb %xmm0, %r8d - 0x66, 0x0f, 0x74, 0xec, //0x00003116 pcmpeqb %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000311a pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x74, 0xfc, //0x0000311e pcmpeqb %xmm4, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00003122 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x74, 0xf4, //0x00003126 pcmpeqb %xmm4, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x0000312a pmovmskb %xmm6, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x0000312f shlq $48, %r15 - 0x48, 0xc1, 0xe3, 0x20, //0x00003133 shlq $32, %rbx - 0x4c, 0x09, 0xfb, //0x00003137 orq %r15, %rbx - 0x48, 0xc1, 0xe2, 0x10, //0x0000313a shlq $16, %rdx - 0x48, 0x09, 0xda, //0x0000313e orq %rbx, %rdx - 0x49, 0x09, 0xd0, //0x00003141 orq %rdx, %r8 - 0x48, 0xbe, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00003144 movabsq $1085102592571150095, %rsi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000314e movabsq $6148914691236517205, %r15 - 0x49, 0x21, 0xc8, //0x00003158 andq %rcx, %r8 - 0x0f, 0x84, 0x6d, 0x00, 0x00, 0x00, //0x0000315b je LBB0_551 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003161 .p2align 4, 0x90 - //0x00003170 LBB0_557 - 0x49, 0x8d, 0x48, 0xff, //0x00003170 leaq $-1(%r8), %rcx - 0x48, 0x89, 0xca, //0x00003174 movq %rcx, %rdx - 0x48, 0x21, 0xfa, //0x00003177 andq %rdi, %rdx - 0x48, 0x89, 0xd3, //0x0000317a movq %rdx, %rbx - 0x48, 0xd1, 0xeb, //0x0000317d shrq %rbx - 0x4c, 0x21, 0xfb, //0x00003180 andq %r15, %rbx - 0x48, 0x29, 0xda, //0x00003183 subq %rbx, %rdx - 0x48, 0x89, 0xd3, //0x00003186 movq %rdx, %rbx - 0x4c, 0x21, 0xeb, //0x00003189 andq %r13, %rbx - 0x48, 0xc1, 0xea, 0x02, //0x0000318c shrq $2, %rdx - 0x4c, 0x21, 0xea, //0x00003190 andq %r13, %rdx - 0x48, 0x01, 0xda, //0x00003193 addq %rbx, %rdx - 0x48, 0x89, 0xd3, //0x00003196 movq %rdx, %rbx - 0x48, 0xc1, 0xeb, 0x04, //0x00003199 shrq $4, %rbx - 0x48, 0x01, 0xd3, //0x0000319d addq %rdx, %rbx - 0x48, 0x21, 0xf3, //0x000031a0 andq %rsi, %rbx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000031a3 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xda, //0x000031ad imulq %rdx, %rbx - 0x48, 0xc1, 0xeb, 0x38, //0x000031b1 shrq $56, %rbx - 0x4c, 0x01, 0xf3, //0x000031b5 addq %r14, %rbx - 0x4c, 0x39, 0xd3, //0x000031b8 cmpq %r10, %rbx - 0x0f, 0x86, 0xd1, 0x01, 0x00, 0x00, //0x000031bb jbe LBB0_575 - 0x49, 0x83, 0xc2, 0x01, //0x000031c1 addq $1, %r10 - 0x49, 0x21, 0xc8, //0x000031c5 andq %rcx, %r8 - 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x000031c8 jne LBB0_557 - //0x000031ce LBB0_551 - 0x49, 0xc1, 0xfb, 0x3f, //0x000031ce sarq $63, %r11 - 0x48, 0x89, 0xf9, //0x000031d2 movq %rdi, %rcx - 0x48, 0xd1, 0xe9, //0x000031d5 shrq %rcx - 0x4c, 0x21, 0xf9, //0x000031d8 andq %r15, %rcx - 0x48, 0x29, 0xcf, //0x000031db subq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x000031de movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x000031e1 andq %r13, %rcx - 0x48, 0xc1, 0xef, 0x02, //0x000031e4 shrq $2, %rdi - 0x4c, 0x21, 0xef, //0x000031e8 andq %r13, %rdi - 0x48, 0x01, 0xcf, //0x000031eb addq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x000031ee movq %rdi, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x000031f1 shrq $4, %rcx - 0x48, 0x01, 0xf9, //0x000031f5 addq %rdi, %rcx - 0x48, 0x21, 0xf1, //0x000031f8 andq %rsi, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000031fb movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00003205 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00003209 shrq $56, %rcx - 0x49, 0x01, 0xce, //0x0000320d addq %rcx, %r14 - 0x49, 0x83, 0xc4, 0x40, //0x00003210 addq $64, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00003214 movq $-64(%rbp), %rcx - 0x48, 0x83, 0xc1, 0xc0, //0x00003218 addq $-64, %rcx - 0x4c, 0x89, 0xdb, //0x0000321c movq %r11, %rbx - 0x48, 0x8b, 0x55, 0xb8, //0x0000321f movq $-72(%rbp), %rdx - 0x48, 0x83, 0xf9, 0x40, //0x00003223 cmpq $64, %rcx - 0x48, 0x89, 0x4d, 0xc0, //0x00003227 movq %rcx, $-64(%rbp) - 0x0f, 0x8d, 0x6b, 0xfd, 0xff, 0xff, //0x0000322b jge LBB0_553 - //0x00003231 LBB0_559 - 0x48, 0x85, 0xc9, //0x00003231 testq %rcx, %rcx - 0x0f, 0x8e, 0x56, 0x04, 0x00, 0x00, //0x00003234 jle LBB0_621 - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x0000323a movdqu %xmm8, $-176(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x40, 0xff, 0xff, 0xff, //0x00003243 movdqu %xmm8, $-192(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x0000324c movdqu %xmm8, $-208(%rbp) - 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00003255 movdqu %xmm8, $-224(%rbp) - 0x44, 0x89, 0xe1, //0x0000325e movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00003261 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00003267 cmpl $4033, %ecx - 0x0f, 0x82, 0x3e, 0x00, 0x00, 0x00, //0x0000326d jb LBB0_563 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00003273 cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x42, 0x00, 0x00, 0x00, //0x00003278 jb LBB0_564 - 0x41, 0x0f, 0x10, 0x04, 0x24, //0x0000327e movups (%r12), %xmm0 - 0x0f, 0x11, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00003283 movups %xmm0, $-224(%rbp) - 0xf3, 0x41, 0x0f, 0x6f, 0x44, 0x24, 0x10, //0x0000328a movdqu $16(%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00003291 movdqu %xmm0, $-208(%rbp) - 0x49, 0x83, 0xc4, 0x20, //0x00003299 addq $32, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x0000329d movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x000032a1 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0xbd, 0x40, 0xff, 0xff, 0xff, //0x000032a5 leaq $-192(%rbp), %rdi - 0xe9, 0x1a, 0x00, 0x00, 0x00, //0x000032ac jmp LBB0_565 - //0x000032b1 LBB0_563 - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000032b1 movabsq $6148914691236517205, %r15 - 0xe9, 0xdc, 0xfc, 0xff, 0xff, //0x000032bb jmp LBB0_553 - //0x000032c0 LBB0_564 - 0x48, 0x8d, 0xbd, 0x20, 0xff, 0xff, 0xff, //0x000032c0 leaq $-224(%rbp), %rdi - 0x48, 0x8b, 0x75, 0xc0, //0x000032c7 movq $-64(%rbp), %rsi - //0x000032cb LBB0_565 - 0x48, 0x83, 0xfe, 0x10, //0x000032cb cmpq $16, %rsi - 0x0f, 0x82, 0x4b, 0x00, 0x00, 0x00, //0x000032cf jb LBB0_566 - 0xf3, 0x41, 0x0f, 0x6f, 0x04, 0x24, //0x000032d5 movdqu (%r12), %xmm0 - 0xf3, 0x0f, 0x7f, 0x07, //0x000032db movdqu %xmm0, (%rdi) - 0x49, 0x83, 0xc4, 0x10, //0x000032df addq $16, %r12 - 0x48, 0x83, 0xc7, 0x10, //0x000032e3 addq $16, %rdi - 0x48, 0x83, 0xc6, 0xf0, //0x000032e7 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x000032eb cmpq $8, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000032ef jae LBB0_573 - //0x000032f5 LBB0_567 - 0x48, 0x83, 0xfe, 0x04, //0x000032f5 cmpq $4, %rsi - 0x0f, 0x8c, 0x48, 0x00, 0x00, 0x00, //0x000032f9 jl LBB0_568 - //0x000032ff LBB0_574 - 0x41, 0x8b, 0x0c, 0x24, //0x000032ff movl (%r12), %ecx - 0x89, 0x0f, //0x00003303 movl %ecx, (%rdi) - 0x49, 0x83, 0xc4, 0x04, //0x00003305 addq $4, %r12 - 0x48, 0x83, 0xc7, 0x04, //0x00003309 addq $4, %rdi - 0x48, 0x83, 0xc6, 0xfc, //0x0000330d addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00003311 cmpq $2, %rsi - 0x0f, 0x83, 0x36, 0x00, 0x00, 0x00, //0x00003315 jae LBB0_569 - 0xe9, 0x45, 0x00, 0x00, 0x00, //0x0000331b jmp LBB0_570 - //0x00003320 LBB0_566 - 0x48, 0x83, 0xfe, 0x08, //0x00003320 cmpq $8, %rsi - 0x0f, 0x82, 0xcb, 0xff, 0xff, 0xff, //0x00003324 jb LBB0_567 - //0x0000332a LBB0_573 - 0x49, 0x8b, 0x0c, 0x24, //0x0000332a movq (%r12), %rcx - 0x48, 0x89, 0x0f, //0x0000332e movq %rcx, (%rdi) - 0x49, 0x83, 0xc4, 0x08, //0x00003331 addq $8, %r12 - 0x48, 0x83, 0xc7, 0x08, //0x00003335 addq $8, %rdi - 0x48, 0x83, 0xc6, 0xf8, //0x00003339 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x0000333d cmpq $4, %rsi - 0x0f, 0x8d, 0xb8, 0xff, 0xff, 0xff, //0x00003341 jge LBB0_574 - //0x00003347 LBB0_568 - 0x48, 0x83, 0xfe, 0x02, //0x00003347 cmpq $2, %rsi - 0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x0000334b jb LBB0_570 - //0x00003351 LBB0_569 - 0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x00003351 movzwl (%r12), %ecx - 0x66, 0x89, 0x0f, //0x00003356 movw %cx, (%rdi) - 0x49, 0x83, 0xc4, 0x02, //0x00003359 addq $2, %r12 - 0x48, 0x83, 0xc7, 0x02, //0x0000335d addq $2, %rdi - 0x48, 0x83, 0xc6, 0xfe, //0x00003361 addq $-2, %rsi - //0x00003365 LBB0_570 - 0x4c, 0x89, 0xe1, //0x00003365 movq %r12, %rcx - 0x4c, 0x8d, 0xa5, 0x20, 0xff, 0xff, 0xff, //0x00003368 leaq $-224(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x0000336f testq %rsi, %rsi - 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003372 movabsq $6148914691236517205, %r15 - 0x0f, 0x84, 0x1a, 0xfc, 0xff, 0xff, //0x0000337c je LBB0_553 - 0x8a, 0x09, //0x00003382 movb (%rcx), %cl - 0x88, 0x0f, //0x00003384 movb %cl, (%rdi) - 0x4c, 0x8d, 0xa5, 0x20, 0xff, 0xff, 0xff, //0x00003386 leaq $-224(%rbp), %r12 - 0xe9, 0x0a, 0xfc, 0xff, 0xff, //0x0000338d jmp LBB0_553 - //0x00003392 LBB0_575 - 0x48, 0x8b, 0x75, 0xb0, //0x00003392 movq $-80(%rbp), %rsi - 0x48, 0x8b, 0x46, 0x08, //0x00003396 movq $8(%rsi), %rax - 0x49, 0x0f, 0xbc, 0xc8, //0x0000339a bsfq %r8, %rcx - 0x48, 0x2b, 0x4d, 0xc0, //0x0000339e subq $-64(%rbp), %rcx - 0x48, 0x01, 0xc8, //0x000033a2 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000033a5 addq $1, %rax - 0x48, 0x8b, 0x55, 0xd0, //0x000033a9 movq $-48(%rbp), %rdx - 0x48, 0x89, 0x02, //0x000033ad movq %rax, (%rdx) - 0x48, 0x8b, 0x4e, 0x08, //0x000033b0 movq $8(%rsi), %rcx - 0x48, 0x39, 0xc8, //0x000033b4 cmpq %rcx, %rax - 0x48, 0x0f, 0x47, 0xc1, //0x000033b7 cmovaq %rcx, %rax - 0x48, 0x89, 0x02, //0x000033bb movq %rax, (%rdx) - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033be movq $-1, %rax - 0x4c, 0x0f, 0x47, 0xc8, //0x000033c5 cmovaq %rax, %r9 - 0x4c, 0x89, 0xc8, //0x000033c9 movq %r9, %rax - 0xe9, 0x58, 0x00, 0x00, 0x00, //0x000033cc jmp LBB0_580 - //0x000033d1 LBB0_576 - 0x0f, 0xbc, 0xc6, //0x000033d1 bsfl %esi, %eax - 0x4c, 0x01, 0xc8, //0x000033d4 addq %r9, %rax - 0x4c, 0x01, 0xf0, //0x000033d7 addq %r14, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000033da addq $2, %rax - 0x48, 0x8b, 0x4d, 0xd0, //0x000033de movq $-48(%rbp), %rcx - 0x48, 0x89, 0x01, //0x000033e2 movq %rax, (%rcx) - 0x4c, 0x89, 0xc8, //0x000033e5 movq %r9, %rax - 0xe9, 0x3c, 0x00, 0x00, 0x00, //0x000033e8 jmp LBB0_580 - //0x000033ed LBB0_577 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000033ed movq $-1, %r13 - //0x000033f4 LBB0_578 - 0x4d, 0x29, 0xe9, //0x000033f4 subq %r13, %r9 - 0x49, 0x83, 0xc1, 0xfe, //0x000033f7 addq $-2, %r9 - 0x48, 0x8b, 0x45, 0xd0, //0x000033fb movq $-48(%rbp), %rax - 0x4c, 0x89, 0x08, //0x000033ff movq %r9, (%rax) - //0x00003402 LBB0_579 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003402 movq $-2, %rax - 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x00003409 jmp LBB0_580 - //0x0000340e LBB0_581 - 0x48, 0x83, 0xf8, 0xff, //0x0000340e cmpq $-1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x00003412 movq $-56(%rbp), %rdx - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00003416 jne LBB0_510 - //0x0000341c LBB0_582 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000341c movq $-1, %rax - 0x4c, 0x89, 0xea, //0x00003423 movq %r13, %rdx - //0x00003426 LBB0_510 - 0x49, 0x89, 0x10, //0x00003426 movq %rdx, (%r8) - //0x00003429 LBB0_580 - 0x48, 0x81, 0xc4, 0xb8, 0x00, 0x00, 0x00, //0x00003429 addq $184, %rsp - 0x5b, //0x00003430 popq %rbx - 0x41, 0x5c, //0x00003431 popq %r12 - 0x41, 0x5d, //0x00003433 popq %r13 - 0x41, 0x5e, //0x00003435 popq %r14 - 0x41, 0x5f, //0x00003437 popq %r15 - 0x5d, //0x00003439 popq %rbp - 0xc3, //0x0000343a retq - //0x0000343b LBB0_583 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000343b movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003442 movl $2, %eax - 0x48, 0x01, 0xc6, //0x00003447 addq %rax, %rsi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000344a movq $-1, %rax - 0x49, 0x01, 0xce, //0x00003451 addq %rcx, %r14 - 0x0f, 0x8e, 0xcf, 0xff, 0xff, 0xff, //0x00003454 jle LBB0_580 - //0x0000345a LBB0_585 - 0x0f, 0xb6, 0x06, //0x0000345a movzbl (%rsi), %eax - 0x3c, 0x5c, //0x0000345d cmpb $92, %al - 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x0000345f je LBB0_583 - 0x3c, 0x22, //0x00003465 cmpb $34, %al - 0x0f, 0x84, 0xc3, 0x01, 0x00, 0x00, //0x00003467 je LBB0_613 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000346d movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003474 movl $1, %eax - 0x48, 0x01, 0xc6, //0x00003479 addq %rax, %rsi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000347c movq $-1, %rax - 0x49, 0x01, 0xce, //0x00003483 addq %rcx, %r14 - 0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x00003486 jg LBB0_585 - 0xe9, 0x98, 0xff, 0xff, 0xff, //0x0000348c jmp LBB0_580 - //0x00003491 LBB0_588 - 0x48, 0x8b, 0x55, 0xc8, //0x00003491 movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00003495 cmpq $-1, %rdx - 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x00003499 jne LBB0_591 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000349f bsfq %rsi, %rdx - //0x000034a3 LBB0_590 - 0x48, 0x01, 0xc2, //0x000034a3 addq %rax, %rdx - //0x000034a6 LBB0_591 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000034a6 movq $-2, %rax - 0x4c, 0x8b, 0x45, 0xd0, //0x000034ad movq $-48(%rbp), %r8 - 0x49, 0x89, 0x10, //0x000034b1 movq %rdx, (%r8) - 0xe9, 0x70, 0xff, 0xff, 0xff, //0x000034b4 jmp LBB0_580 - //0x000034b9 LBB0_592 - 0x4c, 0x29, 0xe6, //0x000034b9 subq %r12, %rsi - 0x48, 0x01, 0xc6, //0x000034bc addq %rax, %rsi - 0x49, 0x89, 0x30, //0x000034bf movq %rsi, (%r8) - 0x4c, 0x89, 0xc8, //0x000034c2 movq %r9, %rax - 0xe9, 0x5f, 0xff, 0xff, 0xff, //0x000034c5 jmp LBB0_580 - //0x000034ca LBB0_593 - 0x48, 0x8b, 0x55, 0xc8, //0x000034ca movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x000034ce cmpq $-1, %rdx - 0x0f, 0x84, 0x2b, 0x01, 0x00, 0x00, //0x000034d2 je LBB0_609 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000034d8 movq $-2, %rax - 0x49, 0x89, 0x10, //0x000034df movq %rdx, (%r8) - 0xe9, 0x42, 0xff, 0xff, 0xff, //0x000034e2 jmp LBB0_580 - //0x000034e7 LBB0_595 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000034e7 movq $-1, %r14 - //0x000034ee LBB0_596 - 0x49, 0xf7, 0xd6, //0x000034ee notq %r14 - 0x4c, 0x01, 0xf0, //0x000034f1 addq %r14, %rax - 0x48, 0x8b, 0x4d, 0xd0, //0x000034f4 movq $-48(%rbp), %rcx - 0x48, 0x89, 0x01, //0x000034f8 movq %rax, (%rcx) - 0xe9, 0x02, 0xff, 0xff, 0xff, //0x000034fb jmp LBB0_579 - //0x00003500 LBB0_599 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003500 movq $-2, %rax - 0x80, 0xfa, 0x61, //0x00003507 cmpb $97, %dl - 0x0f, 0x85, 0x19, 0xff, 0xff, 0xff, //0x0000350a jne LBB0_580 - 0x48, 0x8d, 0x51, 0x01, //0x00003510 leaq $1(%rcx), %rdx - 0x49, 0x89, 0x10, //0x00003514 movq %rdx, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003517 cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0x06, 0xff, 0xff, 0xff, //0x0000351d jne LBB0_580 - 0x48, 0x8d, 0x51, 0x02, //0x00003523 leaq $2(%rcx), %rdx - 0x49, 0x89, 0x10, //0x00003527 movq %rdx, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x0000352a cmpb $115, $2(%r12,%rcx) - 0x0f, 0x85, 0xf3, 0xfe, 0xff, 0xff, //0x00003530 jne LBB0_580 - 0x48, 0x8d, 0x51, 0x03, //0x00003536 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x10, //0x0000353a movq %rdx, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x0000353d cmpb $101, $3(%r12,%rcx) - 0x0f, 0x85, 0xe0, 0xfe, 0xff, 0xff, //0x00003543 jne LBB0_580 - 0x48, 0x83, 0xc1, 0x04, //0x00003549 addq $4, %rcx - 0x49, 0x89, 0x08, //0x0000354d movq %rcx, (%r8) - 0xe9, 0xd4, 0xfe, 0xff, 0xff, //0x00003550 jmp LBB0_580 - //0x00003555 LBB0_293 - 0x49, 0x89, 0x00, //0x00003555 movq %rax, (%r8) - 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003558 cmpb $110, (%r12,%rax) - 0x0f, 0x85, 0x9f, 0xfe, 0xff, 0xff, //0x0000355d jne LBB0_579 - 0x49, 0x89, 0x08, //0x00003563 movq %rcx, (%r8) - 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003566 cmpb $117, (%r12,%rcx) - 0x0f, 0x85, 0x91, 0xfe, 0xff, 0xff, //0x0000356b jne LBB0_579 - 0x48, 0x8d, 0x41, 0x01, //0x00003571 leaq $1(%rcx), %rax - 0x49, 0x89, 0x00, //0x00003575 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003578 cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0x7e, 0xfe, 0xff, 0xff, //0x0000357e jne LBB0_579 - 0x48, 0x8d, 0x41, 0x02, //0x00003584 leaq $2(%rcx), %rax - 0x49, 0x89, 0x00, //0x00003588 movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x0000358b cmpb $108, $2(%r12,%rcx) - 0x0f, 0x85, 0x6b, 0xfe, 0xff, 0xff, //0x00003591 jne LBB0_579 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003597 jmp LBB0_608 - //0x0000359c LBB0_604 - 0x49, 0x89, 0x00, //0x0000359c movq %rax, (%r8) - 0x41, 0x80, 0x3c, 0x04, 0x74, //0x0000359f cmpb $116, (%r12,%rax) - 0x0f, 0x85, 0x58, 0xfe, 0xff, 0xff, //0x000035a4 jne LBB0_579 - 0x49, 0x89, 0x08, //0x000035aa movq %rcx, (%r8) - 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x000035ad cmpb $114, (%r12,%rcx) - 0x0f, 0x85, 0x4a, 0xfe, 0xff, 0xff, //0x000035b2 jne LBB0_579 - 0x48, 0x8d, 0x41, 0x01, //0x000035b8 leaq $1(%rcx), %rax - 0x49, 0x89, 0x00, //0x000035bc movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x000035bf cmpb $117, $1(%r12,%rcx) - 0x0f, 0x85, 0x37, 0xfe, 0xff, 0xff, //0x000035c5 jne LBB0_579 - 0x48, 0x8d, 0x41, 0x02, //0x000035cb leaq $2(%rcx), %rax - 0x49, 0x89, 0x00, //0x000035cf movq %rax, (%r8) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x000035d2 cmpb $101, $2(%r12,%rcx) - 0x0f, 0x85, 0x24, 0xfe, 0xff, 0xff, //0x000035d8 jne LBB0_579 - //0x000035de LBB0_608 - 0x48, 0x83, 0xc1, 0x03, //0x000035de addq $3, %rcx - 0x49, 0x89, 0x08, //0x000035e2 movq %rcx, (%r8) - 0xe9, 0x18, 0xfe, 0xff, 0xff, //0x000035e5 jmp LBB0_579 - //0x000035ea LBB0_348 - 0x48, 0x8b, 0x45, 0x90, //0x000035ea movq $-112(%rbp), %rax - 0x48, 0x83, 0xc0, 0xff, //0x000035ee addq $-1, %rax - 0xe9, 0x32, 0xfe, 0xff, 0xff, //0x000035f2 jmp LBB0_580 - //0x000035f7 LBB0_290 - 0x48, 0x83, 0xc1, 0xff, //0x000035f7 addq $-1, %rcx - 0x48, 0x89, 0xc8, //0x000035fb movq %rcx, %rax - 0xe9, 0x26, 0xfe, 0xff, 0xff, //0x000035fe jmp LBB0_580 - //0x00003603 LBB0_609 - 0x48, 0x0f, 0xbc, 0xd7, //0x00003603 bsfq %rdi, %rdx - //0x00003607 LBB0_610 - 0x48, 0x01, 0xc2, //0x00003607 addq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x0000360a movq $-2, %rax - 0x49, 0x89, 0x10, //0x00003611 movq %rdx, (%r8) - 0xe9, 0x10, 0xfe, 0xff, 0xff, //0x00003614 jmp LBB0_580 - //0x00003619 LBB0_611 - 0x48, 0x8b, 0x55, 0xc8, //0x00003619 movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x0000361d cmpq $-1, %rdx - 0x0f, 0x85, 0x7f, 0xfe, 0xff, 0xff, //0x00003621 jne LBB0_591 - 0x48, 0x0f, 0xbc, 0xd7, //0x00003627 bsfq %rdi, %rdx - 0xe9, 0x73, 0xfe, 0xff, 0xff, //0x0000362b jmp LBB0_590 - //0x00003630 LBB0_613 - 0x4c, 0x29, 0xe6, //0x00003630 subq %r12, %rsi - 0x48, 0x83, 0xc6, 0x01, //0x00003633 addq $1, %rsi - 0x48, 0x89, 0x32, //0x00003637 movq %rsi, (%rdx) - 0x4c, 0x89, 0xc8, //0x0000363a movq %r9, %rax - 0xe9, 0xe7, 0xfd, 0xff, 0xff, //0x0000363d jmp LBB0_580 - //0x00003642 LBB0_614 - 0x48, 0x89, 0x4d, 0xa0, //0x00003642 movq %rcx, $-96(%rbp) - 0xe9, 0x62, 0xf3, 0xff, 0xff, //0x00003646 jmp LBB0_509 - //0x0000364b LBB0_617 - 0x49, 0x89, 0xc5, //0x0000364b movq %rax, %r13 - 0xe9, 0xc9, 0xfd, 0xff, 0xff, //0x0000364e jmp LBB0_582 - //0x00003653 LBB0_615 - 0x48, 0x8b, 0x45, 0x90, //0x00003653 movq $-112(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003657 movq %rax, $-96(%rbp) - 0xe9, 0x4d, 0xf3, 0xff, 0xff, //0x0000365b jmp LBB0_509 - //0x00003660 LBB0_616 - 0x4c, 0x01, 0xe6, //0x00003660 addq %r12, %rsi - 0x48, 0x85, 0xc9, //0x00003663 testq %rcx, %rcx - 0x0f, 0x85, 0xb9, 0xf2, 0xff, 0xff, //0x00003666 jne LBB0_499 - 0xe9, 0xe9, 0xf2, 0xff, 0xff, //0x0000366c jmp LBB0_505 - //0x00003671 LBB0_384 - 0x4c, 0x8b, 0x6d, 0xa0, //0x00003671 movq $-96(%rbp), %r13 - 0xe9, 0xa2, 0xfd, 0xff, 0xff, //0x00003675 jmp LBB0_582 - //0x0000367a LBB0_619 - 0x4c, 0x01, 0xe6, //0x0000367a addq %r12, %rsi - 0xe9, 0x40, 0xf4, 0xff, 0xff, //0x0000367d jmp LBB0_521 - //0x00003682 LBB0_620 - 0x4c, 0x29, 0xe0, //0x00003682 subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00003685 addq %rdx, %rax - 0x48, 0x89, 0xc2, //0x00003688 movq %rax, %rdx - 0xe9, 0x16, 0xfe, 0xff, 0xff, //0x0000368b jmp LBB0_591 - //0x00003690 LBB0_621 - 0x48, 0x8b, 0x4d, 0xb0, //0x00003690 movq $-80(%rbp), %rcx - 0x48, 0x8b, 0x49, 0x08, //0x00003694 movq $8(%rcx), %rcx - 0x48, 0x8b, 0x55, 0xd0, //0x00003698 movq $-48(%rbp), %rdx - 0x48, 0x89, 0x0a, //0x0000369c movq %rcx, (%rdx) - 0xe9, 0x85, 0xfd, 0xff, 0xff, //0x0000369f jmp LBB0_580 - //0x000036a4 LBB0_622 - 0x4c, 0x29, 0xe0, //0x000036a4 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x000036a7 addq %rcx, %rax - 0xe9, 0x21, 0x00, 0x00, 0x00, //0x000036aa jmp LBB0_625 - //0x000036af LBB0_623 - 0x4c, 0x29, 0xe0, //0x000036af subq %r12, %rax - 0x48, 0x89, 0xc2, //0x000036b2 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000036b5 movq $-2, %rax - 0x49, 0x89, 0x10, //0x000036bc movq %rdx, (%r8) - 0xe9, 0x65, 0xfd, 0xff, 0xff, //0x000036bf jmp LBB0_580 - //0x000036c4 LBB0_634 - 0x4c, 0x8b, 0x45, 0xd0, //0x000036c4 movq $-48(%rbp), %r8 - 0xe9, 0x4f, 0xfd, 0xff, 0xff, //0x000036c8 jmp LBB0_582 - //0x000036cd LBB0_624 - 0x4c, 0x29, 0xe0, //0x000036cd subq %r12, %rax - //0x000036d0 LBB0_625 - 0x48, 0x89, 0xc2, //0x000036d0 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000036d3 movq $-2, %rax - 0x49, 0x89, 0x10, //0x000036da movq %rdx, (%r8) - 0xe9, 0x47, 0xfd, 0xff, 0xff, //0x000036dd jmp LBB0_580 - //0x000036e2 LBB0_626 - 0x49, 0x8d, 0x48, 0xff, //0x000036e2 leaq $-1(%r8), %rcx - 0x4c, 0x39, 0xf1, //0x000036e6 cmpq %r14, %rcx - 0x0f, 0x84, 0x3a, 0xfd, 0xff, 0xff, //0x000036e9 je LBB0_580 - 0x4b, 0x8d, 0x34, 0x16, //0x000036ef leaq (%r14,%r10), %rsi - 0x48, 0x83, 0xc6, 0x02, //0x000036f3 addq $2, %rsi - 0x4d, 0x29, 0xf0, //0x000036f7 subq %r14, %r8 - 0x49, 0x83, 0xc0, 0xfe, //0x000036fa addq $-2, %r8 - 0x4d, 0x89, 0xc6, //0x000036fe movq %r8, %r14 - 0xe9, 0xbc, 0xf3, 0xff, 0xff, //0x00003701 jmp LBB0_521 - //0x00003706 LBB0_628 - 0x4c, 0x29, 0xe0, //0x00003706 subq %r12, %rax - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00003709 jmp LBB0_630 - //0x0000370e LBB0_629 - 0x48, 0x2b, 0x45, 0xc0, //0x0000370e subq $-64(%rbp), %rax - //0x00003712 LBB0_630 - 0x48, 0x01, 0xc8, //0x00003712 addq %rcx, %rax - 0x48, 0x89, 0xc2, //0x00003715 movq %rax, %rdx - 0xe9, 0x89, 0xfd, 0xff, 0xff, //0x00003718 jmp LBB0_591 - //0x0000371d LBB0_631 - 0x48, 0x2b, 0x45, 0xc0, //0x0000371d subq $-64(%rbp), %rax - 0x48, 0x89, 0xc2, //0x00003721 movq %rax, %rdx - 0xe9, 0x7d, 0xfd, 0xff, 0xff, //0x00003724 jmp LBB0_591 - //0x00003729 LBB0_632 - 0x4c, 0x8b, 0x45, 0xd0, //0x00003729 movq $-48(%rbp), %r8 - 0x49, 0x89, 0xcd, //0x0000372d movq %rcx, %r13 - 0xe9, 0xe7, 0xfc, 0xff, 0xff, //0x00003730 jmp LBB0_582 - 0x90, 0x90, 0x90, //0x00003735 .p2align 2, 0x90 - // // .set L0_0_set_580, LBB0_580-LJTI0_0 - // // .set L0_0_set_511, LBB0_511-LJTI0_0 - // // .set L0_0_set_512, LBB0_512-LJTI0_0 + 0x4d, 0x89, 0x0b, //0x000006dd movq %r9, (%r11) + //0x000006e0 LBB0_86 + 0x83, 0xfa, 0x7b, //0x000006e0 cmpl $123, %edx + 0x4c, 0x8b, 0x55, 0xb8, //0x000006e3 movq $-72(%rbp), %r10 + 0x0f, 0x87, 0xa6, 0x2d, 0x00, 0x00, //0x000006e7 ja LBB0_585 + 0x89, 0xd1, //0x000006ed movl %edx, %ecx + 0x48, 0x8d, 0x15, 0xd2, 0x32, 0x00, 0x00, //0x000006ef leaq $13010(%rip), %rdx /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000006f6 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000006fa addq %rdx, %rcx + 0xff, 0xe1, //0x000006fd jmpq *%rcx + //0x000006ff LBB0_88 + 0x4c, 0x89, 0xc0, //0x000006ff movq %r8, %rax + 0x4c, 0x8b, 0x47, 0x08, //0x00000702 movq $8(%rdi), %r8 + 0x48, 0x8b, 0x38, //0x00000706 movq (%rax), %rdi + 0x48, 0x8d, 0x47, 0xff, //0x00000709 leaq $-1(%rdi), %rax + 0x49, 0x29, 0xc0, //0x0000070d subq %rax, %r8 + 0x0f, 0x84, 0x68, 0x2d, 0x00, 0x00, //0x00000710 je LBB0_583 + 0x4d, 0x8d, 0x1c, 0x3c, //0x00000716 leaq (%r12,%rdi), %r11 + 0x49, 0x83, 0xc3, 0xff, //0x0000071a addq $-1, %r11 + 0x41, 0x80, 0x3b, 0x30, //0x0000071e cmpb $48, (%r11) + 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x00000722 jne LBB0_93 + 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000728 movl $1, %r13d + 0x49, 0x83, 0xf8, 0x01, //0x0000072e cmpq $1, %r8 + 0x0f, 0x84, 0xa4, 0x08, 0x00, 0x00, //0x00000732 je LBB0_211 + 0x48, 0x8b, 0x4d, 0xc0, //0x00000738 movq $-64(%rbp), %rcx + 0x8a, 0x0c, 0x39, //0x0000073c movb (%rcx,%rdi), %cl + 0x80, 0xc1, 0xd2, //0x0000073f addb $-46, %cl + 0x80, 0xf9, 0x37, //0x00000742 cmpb $55, %cl + 0x0f, 0x87, 0x91, 0x08, 0x00, 0x00, //0x00000745 ja LBB0_211 + 0x0f, 0xb6, 0xc9, //0x0000074b movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x0000074e movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00000758 btq %rcx, %rdx + 0x0f, 0x83, 0x7a, 0x08, 0x00, 0x00, //0x0000075c jae LBB0_211 + //0x00000762 LBB0_93 + 0x48, 0x89, 0x7d, 0xa0, //0x00000762 movq %rdi, $-96(%rbp) + 0x49, 0x83, 0xf8, 0x10, //0x00000766 cmpq $16, %r8 + 0x0f, 0x82, 0x41, 0x18, 0x00, 0x00, //0x0000076a jb LBB0_390 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000770 movq $-1, %r15 + 0x45, 0x31, 0xed, //0x00000777 xorl %r13d, %r13d + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000077a movq $-1, %r14 + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x00000781 movq $-1, %r12 + 0x4c, 0x89, 0xc7, //0x00000788 movq %r8, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000078b .p2align 4, 0x90 + //0x00000790 LBB0_95 + 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x2b, //0x00000790 movdqu (%r11,%r13), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000796 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x0000079a pcmpgtb %xmm8, %xmm4 + 0x66, 0x41, 0x0f, 0x6f, 0xee, //0x0000079f movdqa %xmm14, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000007a4 pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x000007a8 pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x000007ac movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x000007b0 pcmpeqb %xmm9, %xmm4 + 0x66, 0x0f, 0x6f, 0xf3, //0x000007b5 movdqa %xmm3, %xmm6 + 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x000007b9 pcmpeqb %xmm10, %xmm6 + 0x66, 0x0f, 0xeb, 0xf4, //0x000007be por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x000007c2 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x000007c6 pand %xmm11, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xdc, //0x000007cb pcmpeqb %xmm12, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x000007d0 pcmpeqb %xmm13, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000007d5 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe3, //0x000007d9 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x000007dd por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x000007e1 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xdb, //0x000007e5 pmovmskb %xmm3, %ebx + 0x66, 0x44, 0x0f, 0xd7, 0xce, //0x000007e9 pmovmskb %xmm6, %r9d + 0x66, 0x0f, 0xd7, 0xcd, //0x000007ee pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x000007f2 notl %ecx + 0x0f, 0xbc, 0xc9, //0x000007f4 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x000007f7 cmpl $16, %ecx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007fa je LBB0_97 + 0xba, 0xff, 0xff, 0xff, 0xff, //0x00000800 movl $-1, %edx + 0xd3, 0xe2, //0x00000805 shll %cl, %edx + 0xf7, 0xd2, //0x00000807 notl %edx + 0x21, 0xd3, //0x00000809 andl %edx, %ebx + 0x21, 0xd6, //0x0000080b andl %edx, %esi + 0x44, 0x21, 0xca, //0x0000080d andl %r9d, %edx + 0x41, 0x89, 0xd1, //0x00000810 movl %edx, %r9d + //0x00000813 LBB0_97 + 0x8d, 0x53, 0xff, //0x00000813 leal $-1(%rbx), %edx + 0x21, 0xda, //0x00000816 andl %ebx, %edx + 0x0f, 0x85, 0xc9, 0x10, 0x00, 0x00, //0x00000818 jne LBB0_349 + 0x8d, 0x56, 0xff, //0x0000081e leal $-1(%rsi), %edx + 0x21, 0xf2, //0x00000821 andl %esi, %edx + 0x0f, 0x85, 0xbe, 0x10, 0x00, 0x00, //0x00000823 jne LBB0_349 + 0x41, 0x8d, 0x51, 0xff, //0x00000829 leal $-1(%r9), %edx + 0x44, 0x21, 0xca, //0x0000082d andl %r9d, %edx + 0x0f, 0x85, 0xb1, 0x10, 0x00, 0x00, //0x00000830 jne LBB0_349 + 0x85, 0xdb, //0x00000836 testl %ebx, %ebx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000838 je LBB0_103 + 0x0f, 0xbc, 0xdb, //0x0000083e bsfl %ebx, %ebx + 0x49, 0x83, 0xfc, 0xff, //0x00000841 cmpq $-1, %r12 + 0x0f, 0x85, 0xfb, 0x13, 0x00, 0x00, //0x00000845 jne LBB0_356 + 0x4c, 0x01, 0xeb, //0x0000084b addq %r13, %rbx + 0x49, 0x89, 0xdc, //0x0000084e movq %rbx, %r12 + //0x00000851 LBB0_103 + 0x85, 0xf6, //0x00000851 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000853 je LBB0_106 + 0x0f, 0xbc, 0xf6, //0x00000859 bsfl %esi, %esi + 0x49, 0x83, 0xfe, 0xff, //0x0000085c cmpq $-1, %r14 + 0x0f, 0x85, 0xe7, 0x13, 0x00, 0x00, //0x00000860 jne LBB0_357 + 0x4c, 0x01, 0xee, //0x00000866 addq %r13, %rsi + 0x49, 0x89, 0xf6, //0x00000869 movq %rsi, %r14 + //0x0000086c LBB0_106 + 0x45, 0x85, 0xc9, //0x0000086c testl %r9d, %r9d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000086f je LBB0_109 + 0x41, 0x0f, 0xbc, 0xd1, //0x00000875 bsfl %r9d, %edx + 0x49, 0x83, 0xff, 0xff, //0x00000879 cmpq $-1, %r15 + 0x0f, 0x85, 0xd1, 0x13, 0x00, 0x00, //0x0000087d jne LBB0_358 + 0x4c, 0x01, 0xea, //0x00000883 addq %r13, %rdx + 0x49, 0x89, 0xd7, //0x00000886 movq %rdx, %r15 + //0x00000889 LBB0_109 + 0x83, 0xf9, 0x10, //0x00000889 cmpl $16, %ecx + 0x0f, 0x85, 0x98, 0x04, 0x00, 0x00, //0x0000088c jne LBB0_171 + 0x48, 0x83, 0xc7, 0xf0, //0x00000892 addq $-16, %rdi + 0x49, 0x83, 0xc5, 0x10, //0x00000896 addq $16, %r13 + 0x48, 0x83, 0xff, 0x0f, //0x0000089a cmpq $15, %rdi + 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x0000089e ja LBB0_95 + 0x4b, 0x8d, 0x34, 0x2b, //0x000008a4 leaq (%r11,%r13), %rsi + 0x49, 0x89, 0xf2, //0x000008a8 movq %rsi, %r10 + 0x4d, 0x39, 0xe8, //0x000008ab cmpq %r13, %r8 + 0x0f, 0x84, 0x7f, 0x04, 0x00, 0x00, //0x000008ae je LBB0_172 + //0x000008b4 LBB0_112 + 0x4c, 0x8d, 0x14, 0x3e, //0x000008b4 leaq (%rsi,%rdi), %r10 + 0x48, 0x8b, 0x4d, 0x90, //0x000008b8 movq $-112(%rbp), %rcx + 0x4c, 0x8d, 0x04, 0x31, //0x000008bc leaq (%rcx,%rsi), %r8 + 0x4c, 0x2b, 0x45, 0xa0, //0x000008c0 subq $-96(%rbp), %r8 + 0x31, 0xd2, //0x000008c4 xorl %edx, %edx + 0xe9, 0x22, 0x00, 0x00, 0x00, //0x000008c6 jmp LBB0_116 + //0x000008cb LBB0_113 + 0x49, 0x83, 0xff, 0xff, //0x000008cb cmpq $-1, %r15 + 0x0f, 0x85, 0x47, 0x10, 0x00, 0x00, //0x000008cf jne LBB0_354 + 0x4d, 0x8d, 0x3c, 0x10, //0x000008d5 leaq (%r8,%rdx), %r15 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000008d9 .p2align 4, 0x90 + //0x000008e0 LBB0_115 + 0x48, 0x83, 0xc2, 0x01, //0x000008e0 addq $1, %rdx + 0x48, 0x39, 0xd7, //0x000008e4 cmpq %rdx, %rdi + 0x0f, 0x84, 0x46, 0x04, 0x00, 0x00, //0x000008e7 je LBB0_172 + //0x000008ed LBB0_116 + 0x0f, 0xbe, 0x1c, 0x16, //0x000008ed movsbl (%rsi,%rdx), %ebx + 0x8d, 0x4b, 0xd0, //0x000008f1 leal $-48(%rbx), %ecx + 0x83, 0xf9, 0x0a, //0x000008f4 cmpl $10, %ecx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x000008f7 jb LBB0_115 + 0x8d, 0x4b, 0xd5, //0x000008fd leal $-43(%rbx), %ecx + 0x83, 0xf9, 0x1a, //0x00000900 cmpl $26, %ecx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00000903 ja LBB0_121 + 0x48, 0x8d, 0x1d, 0x14, 0x33, 0x00, 0x00, //0x00000909 leaq $13076(%rip), %rbx /* LJTI0_4+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8b, //0x00000910 movslq (%rbx,%rcx,4), %rcx + 0x48, 0x01, 0xd9, //0x00000914 addq %rbx, %rcx + 0xff, 0xe1, //0x00000917 jmpq *%rcx + //0x00000919 LBB0_119 + 0x49, 0x83, 0xfc, 0xff, //0x00000919 cmpq $-1, %r12 + 0x0f, 0x85, 0xf9, 0x0f, 0x00, 0x00, //0x0000091d jne LBB0_354 + 0x4d, 0x8d, 0x24, 0x10, //0x00000923 leaq (%r8,%rdx), %r12 + 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x00000927 jmp LBB0_115 + //0x0000092c LBB0_121 + 0x83, 0xfb, 0x65, //0x0000092c cmpl $101, %ebx + 0x0f, 0x85, 0x29, 0x06, 0x00, 0x00, //0x0000092f jne LBB0_200 + //0x00000935 LBB0_122 + 0x49, 0x83, 0xfe, 0xff, //0x00000935 cmpq $-1, %r14 + 0x0f, 0x85, 0xdd, 0x0f, 0x00, 0x00, //0x00000939 jne LBB0_354 + 0x4d, 0x8d, 0x34, 0x10, //0x0000093f leaq (%r8,%rdx), %r14 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00000943 jmp LBB0_115 + //0x00000948 LBB0_124 + 0x83, 0xfa, 0x22, //0x00000948 cmpl $34, %edx + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000094b je LBB0_127 + //0x00000951 LBB0_125 + 0x83, 0xfa, 0x7d, //0x00000951 cmpl $125, %edx + 0x0f, 0x85, 0x39, 0x2b, 0x00, 0x00, //0x00000954 jne LBB0_585 + //0x0000095a LBB0_126 + 0x4d, 0x89, 0x0b, //0x0000095a movq %r9, (%r11) + 0x4c, 0x8b, 0x55, 0xb8, //0x0000095d movq $-72(%rbp), %r10 + 0x4c, 0x89, 0xd0, //0x00000961 movq %r10, %rax + 0x4d, 0x85, 0xc9, //0x00000964 testq %r9, %r9 + 0x0f, 0x85, 0xbd, 0xf9, 0xff, 0xff, //0x00000967 jne LBB0_29 + 0xe9, 0x48, 0x2b, 0x00, 0x00, //0x0000096d jmp LBB0_586 + //0x00000972 LBB0_127 + 0x4b, 0xc7, 0x04, 0xd3, 0x02, 0x00, 0x00, 0x00, //0x00000972 movq $2, (%r11,%r10,8) + 0x49, 0x8b, 0x00, //0x0000097a movq (%r8), %rax + 0x4c, 0x8b, 0x4f, 0x08, //0x0000097d movq $8(%rdi), %r9 + 0xf6, 0x45, 0x88, 0x20, //0x00000981 testb $32, $-120(%rbp) + 0x48, 0x89, 0x45, 0xa0, //0x00000985 movq %rax, $-96(%rbp) + 0x0f, 0x85, 0xb9, 0x03, 0x00, 0x00, //0x00000989 jne LBB0_174 + 0x4d, 0x89, 0xcd, //0x0000098f movq %r9, %r13 + 0x49, 0x29, 0xc1, //0x00000992 subq %rax, %r9 + 0x0f, 0x84, 0x39, 0x2d, 0x00, 0x00, //0x00000995 je LBB0_622 + 0x49, 0x83, 0xf9, 0x40, //0x0000099b cmpq $64, %r9 + 0x0f, 0x82, 0x99, 0x17, 0x00, 0x00, //0x0000099f jb LBB0_412 + 0x49, 0x89, 0xc6, //0x000009a5 movq %rax, %r14 + 0x49, 0xf7, 0xd6, //0x000009a8 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000009ab movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000009b3 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000009b6 .p2align 4, 0x90 + //0x000009c0 LBB0_131 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x000009c0 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x000009c6 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x000009cd movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x000009d4 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x000009db movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000009df pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x000009e3 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x000009e8 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000009ec pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x000009f0 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x000009f4 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x000009f8 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x000009fc pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000a00 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000a04 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000a08 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x00000a0c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000a10 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000a15 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00000a19 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x74, 0xe9, //0x00000a1d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000a21 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000a25 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000a29 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x00000a2e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000a32 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000a36 orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00000a39 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00000a3d orq %rsi, %rcx + 0x49, 0x09, 0xca, //0x00000a40 orq %rcx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x00000a43 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x00000a47 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x00000a4b orq %r15, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x00000a4e shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000a52 orq %rdi, %rbx + 0x49, 0x09, 0xdb, //0x00000a55 orq %rbx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000a58 jne LBB0_141 + 0x4d, 0x85, 0xc0, //0x00000a5e testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000a61 jne LBB0_143 + 0x45, 0x31, 0xc0, //0x00000a67 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x00000a6a testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x00000a6d jne LBB0_144 + //0x00000a73 LBB0_134 + 0x49, 0x83, 0xc1, 0xc0, //0x00000a73 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x00000a77 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x00000a7b addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x00000a7f cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000a83 ja LBB0_131 + 0xe9, 0x49, 0x10, 0x00, 0x00, //0x00000a89 jmp LBB0_135 + //0x00000a8e LBB0_141 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000a8e cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000a93 jne LBB0_143 + 0x49, 0x0f, 0xbc, 0xcb, //0x00000a99 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x00000a9d addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000aa0 movq %rcx, $-56(%rbp) + //0x00000aa4 LBB0_143 + 0x4c, 0x89, 0xc1, //0x00000aa4 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000aa7 notq %rcx + 0x4c, 0x21, 0xd9, //0x00000aaa andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00000aad leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00000ab1 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00000ab4 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000ab7 notq %rsi + 0x4c, 0x21, 0xde, //0x00000aba andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000abd movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00000ac7 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x00000aca xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x00000acd addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000ad0 setb %r8b + 0x48, 0x01, 0xf6, //0x00000ad4 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000ad7 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000ae1 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000ae4 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000ae7 notq %rsi + 0x49, 0x21, 0xf2, //0x00000aea andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00000aed testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000af0 je LBB0_134 + //0x00000af6 LBB0_144 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000af6 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x00000afa subq %r14, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00000afd movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00000b01 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00000b05 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000b09 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00000b13 movq $-72(%rbp), %r10 + 0xe9, 0x8d, 0x05, 0x00, 0x00, //0x00000b17 jmp LBB0_225 + //0x00000b1c LBB0_145 + 0x48, 0x89, 0xca, //0x00000b1c movq %rcx, %rdx + 0x49, 0x89, 0xc2, //0x00000b1f movq %rax, %r10 + 0x49, 0x29, 0xca, //0x00000b22 subq %rcx, %r10 + 0x0f, 0x84, 0xb1, 0x2b, 0x00, 0x00, //0x00000b25 je LBB0_620 + 0x49, 0x83, 0xfa, 0x40, //0x00000b2b cmpq $64, %r10 + 0x0f, 0x82, 0x65, 0x15, 0x00, 0x00, //0x00000b2f jb LBB0_407 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000b35 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xa0, //0x00000b3d movq $-96(%rbp), %rax + 0x45, 0x31, 0xc0, //0x00000b41 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000b44 .p2align 4, 0x90 + //0x00000b50 LBB0_148 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000b50 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x00000b56 movdqu $16(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x00000b5d movdqu $32(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000b64 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000b6b movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00000b6f pcmpeqb %xmm0, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xf4, //0x00000b73 pmovmskb %xmm4, %r14d + 0x66, 0x0f, 0x6f, 0xe5, //0x00000b78 movdqa %xmm5, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00000b7c pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00000b80 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x6f, 0xe7, //0x00000b84 movdqa %xmm7, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00000b88 pcmpeqb %xmm0, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xdc, //0x00000b8c pmovmskb %xmm4, %r11d + 0x66, 0x0f, 0x6f, 0xe6, //0x00000b91 movdqa %xmm6, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00000b95 pcmpeqb %xmm0, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00000b99 pmovmskb %xmm4, %r15d + 0x66, 0x0f, 0x6f, 0xe3, //0x00000b9e movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe1, //0x00000ba2 pcmpeqb %xmm1, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xec, //0x00000ba6 pmovmskb %xmm4, %r13d + 0x66, 0x0f, 0x6f, 0xe5, //0x00000bab movdqa %xmm5, %xmm4 + 0x66, 0x0f, 0x74, 0xe1, //0x00000baf pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00000bb3 pmovmskb %xmm4, %edx + 0x66, 0x0f, 0x6f, 0xe7, //0x00000bb7 movdqa %xmm7, %xmm4 + 0x66, 0x0f, 0x74, 0xe1, //0x00000bbb pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000bbf pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x6f, 0xe6, //0x00000bc3 movdqa %xmm6, %xmm4 + 0x66, 0x0f, 0x74, 0xe1, //0x00000bc7 pcmpeqb %xmm1, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xe4, //0x00000bcb pmovmskb %xmm4, %r12d + 0x66, 0x0f, 0x6f, 0xe2, //0x00000bd0 movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x64, 0xe5, //0x00000bd4 pcmpgtb %xmm5, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00000bd8 pcmpgtb %xmm15, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x00000bdd pand %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000be1 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xe2, //0x00000be5 movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x64, 0xe7, //0x00000be9 pcmpgtb %xmm7, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xff, //0x00000bed pcmpgtb %xmm15, %xmm7 + 0x66, 0x0f, 0xdb, 0xfc, //0x00000bf2 pand %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00000bf6 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xe2, //0x00000bfa movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x64, 0xe6, //0x00000bfe pcmpgtb %xmm6, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x00000c02 pcmpgtb %xmm15, %xmm6 + 0x66, 0x0f, 0xdb, 0xf4, //0x00000c07 pand %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xce, //0x00000c0b pmovmskb %xmm6, %r9d + 0x49, 0xc1, 0xe7, 0x30, //0x00000c10 shlq $48, %r15 + 0x49, 0xc1, 0xe3, 0x20, //0x00000c14 shlq $32, %r11 + 0x4d, 0x09, 0xfb, //0x00000c18 orq %r15, %r11 + 0x48, 0xc1, 0xe3, 0x10, //0x00000c1b shlq $16, %rbx + 0x4c, 0x09, 0xdb, //0x00000c1f orq %r11, %rbx + 0x49, 0x09, 0xde, //0x00000c22 orq %rbx, %r14 + 0x49, 0xc1, 0xe4, 0x30, //0x00000c25 shlq $48, %r12 + 0x48, 0xc1, 0xe1, 0x20, //0x00000c29 shlq $32, %rcx + 0x4c, 0x09, 0xe1, //0x00000c2d orq %r12, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x00000c30 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x00000c34 orq %rcx, %rdx + 0x49, 0xc1, 0xe1, 0x30, //0x00000c37 shlq $48, %r9 + 0x48, 0xc1, 0xe6, 0x20, //0x00000c3b shlq $32, %rsi + 0x4c, 0x09, 0xce, //0x00000c3f orq %r9, %rsi + 0x48, 0xc1, 0xe7, 0x10, //0x00000c42 shlq $16, %rdi + 0x48, 0x09, 0xf7, //0x00000c46 orq %rsi, %rdi + 0x49, 0x09, 0xd5, //0x00000c49 orq %rdx, %r13 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000c4c jne LBB0_165 + 0x4d, 0x85, 0xc0, //0x00000c52 testq %r8, %r8 + 0x0f, 0x85, 0x67, 0x00, 0x00, 0x00, //0x00000c55 jne LBB0_167 + 0x45, 0x31, 0xc0, //0x00000c5b xorl %r8d, %r8d + 0x4c, 0x8b, 0x65, 0xc0, //0x00000c5e movq $-64(%rbp), %r12 + //0x00000c62 LBB0_151 + 0x66, 0x0f, 0x6f, 0xe2, //0x00000c62 movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x64, 0xe3, //0x00000c66 pcmpgtb %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00000c6a pcmpgtb %xmm15, %xmm3 + 0x66, 0x0f, 0xdb, 0xdc, //0x00000c6f pand %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00000c73 pmovmskb %xmm3, %ecx + 0x48, 0x09, 0xcf, //0x00000c77 orq %rcx, %rdi + 0x4d, 0x85, 0xf6, //0x00000c7a testq %r14, %r14 + 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x00000c7d jne LBB0_169 + 0x48, 0x85, 0xff, //0x00000c83 testq %rdi, %rdi + 0x0f, 0x85, 0x96, 0x28, 0x00, 0x00, //0x00000c86 jne LBB0_594 + 0x49, 0x83, 0xc2, 0xc0, //0x00000c8c addq $-64, %r10 + 0x48, 0x83, 0xc0, 0x40, //0x00000c90 addq $64, %rax + 0x49, 0x83, 0xfa, 0x3f, //0x00000c94 cmpq $63, %r10 + 0x0f, 0x87, 0xb2, 0xfe, 0xff, 0xff, //0x00000c98 ja LBB0_148 + 0xe9, 0x24, 0x0d, 0x00, 0x00, //0x00000c9e jmp LBB0_154 + //0x00000ca3 LBB0_165 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000ca3 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x65, 0xc0, //0x00000ca8 movq $-64(%rbp), %r12 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x00000cac jne LBB0_168 + 0x49, 0x0f, 0xbc, 0xcd, //0x00000cb2 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00000cb6 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000cb9 movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00000cbd jmp LBB0_168 + //0x00000cc2 LBB0_167 + 0x4c, 0x8b, 0x65, 0xc0, //0x00000cc2 movq $-64(%rbp), %r12 + //0x00000cc6 LBB0_168 + 0x4c, 0x89, 0xc1, //0x00000cc6 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000cc9 notq %rcx + 0x4c, 0x21, 0xe9, //0x00000ccc andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00000ccf leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00000cd3 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00000cd6 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000cd9 notq %rsi + 0x4c, 0x21, 0xee, //0x00000cdc andq %r13, %rsi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000cdf movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xde, //0x00000ce9 andq %rbx, %rsi + 0x45, 0x31, 0xc0, //0x00000cec xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x00000cef addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000cf2 setb %r8b + 0x48, 0x01, 0xf6, //0x00000cf6 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000cf9 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000d03 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000d06 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000d09 notq %rsi + 0x49, 0x21, 0xf6, //0x00000d0c andq %rsi, %r14 + 0xe9, 0x4e, 0xff, 0xff, 0xff, //0x00000d0f jmp LBB0_151 + //0x00000d14 LBB0_169 + 0x49, 0x0f, 0xbc, 0xce, //0x00000d14 bsfq %r14, %rcx + 0x48, 0x85, 0xff, //0x00000d18 testq %rdi, %rdi + 0x0f, 0x84, 0xed, 0x02, 0x00, 0x00, //0x00000d1b je LBB0_212 + 0x48, 0x0f, 0xbc, 0xd7, //0x00000d21 bsfq %rdi, %rdx + 0xe9, 0xe9, 0x02, 0x00, 0x00, //0x00000d25 jmp LBB0_213 + //0x00000d2a LBB0_171 + 0x41, 0x89, 0xca, //0x00000d2a movl %ecx, %r10d + 0x4d, 0x01, 0xda, //0x00000d2d addq %r11, %r10 + 0x4d, 0x01, 0xea, //0x00000d30 addq %r13, %r10 + //0x00000d33 LBB0_172 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000d33 movq $-1, %r13 + 0x4d, 0x85, 0xe4, //0x00000d3a testq %r12, %r12 + 0x0f, 0x85, 0x31, 0x02, 0x00, 0x00, //0x00000d3d jne LBB0_201 + 0xe9, 0x02, 0x28, 0x00, 0x00, //0x00000d43 jmp LBB0_173 + //0x00000d48 LBB0_174 + 0x4d, 0x89, 0xce, //0x00000d48 movq %r9, %r14 + 0x49, 0x29, 0xc6, //0x00000d4b subq %rax, %r14 + 0x0f, 0x84, 0x80, 0x29, 0x00, 0x00, //0x00000d4e je LBB0_622 + 0x4c, 0x89, 0x4d, 0x98, //0x00000d54 movq %r9, $-104(%rbp) + 0x49, 0x83, 0xfe, 0x40, //0x00000d58 cmpq $64, %r14 + 0x0f, 0x82, 0xef, 0x13, 0x00, 0x00, //0x00000d5c jb LBB0_413 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000d62 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc9, //0x00000d6a xorl %r9d, %r9d + 0x90, 0x90, 0x90, //0x00000d6d .p2align 4, 0x90 + //0x00000d70 LBB0_177 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x04, //0x00000d70 movdqu (%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x00000d76 movdqu $16(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x00000d7d movdqu $32(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000d84 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xdc, //0x00000d8b movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000d8f pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00000d93 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00000d98 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000d9c pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00000da0 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xdf, //0x00000da4 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000da8 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xe3, //0x00000dac pmovmskb %xmm3, %r12d + 0x66, 0x0f, 0x6f, 0xde, //0x00000db1 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00000db5 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000db9 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xdc, //0x00000dbe movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000dc2 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00000dc6 pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdd, //0x00000dcb movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000dcf pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00000dd3 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xdf, //0x00000dd7 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000ddb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000ddf pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xde, //0x00000de3 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00000de7 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00000deb pmovmskb %xmm3, %r10d + 0x66, 0x0f, 0x6f, 0xda, //0x00000df0 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x00000df4 pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00000df8 pcmpgtb %xmm15, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x00000dfd pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00000e01 pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xda, //0x00000e05 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdf, //0x00000e09 pcmpgtb %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xff, //0x00000e0d pcmpgtb %xmm15, %xmm7 + 0x66, 0x0f, 0xdb, 0xfb, //0x00000e12 pand %xmm3, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000e16 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x6f, 0xda, //0x00000e1a movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00000e1e pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x00000e22 pcmpgtb %xmm15, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x00000e27 pand %xmm3, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xc6, //0x00000e2b pmovmskb %xmm6, %r8d + 0x49, 0xc1, 0xe3, 0x30, //0x00000e30 shlq $48, %r11 + 0x49, 0xc1, 0xe4, 0x20, //0x00000e34 shlq $32, %r12 + 0x4d, 0x09, 0xdc, //0x00000e38 orq %r11, %r12 + 0x48, 0xc1, 0xe1, 0x10, //0x00000e3b shlq $16, %rcx + 0x4c, 0x09, 0xe1, //0x00000e3f orq %r12, %rcx + 0x49, 0x09, 0xcf, //0x00000e42 orq %rcx, %r15 + 0x49, 0xc1, 0xe2, 0x30, //0x00000e45 shlq $48, %r10 + 0x48, 0xc1, 0xe7, 0x20, //0x00000e49 shlq $32, %rdi + 0x4c, 0x09, 0xd7, //0x00000e4d orq %r10, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x00000e50 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000e54 orq %rdi, %rbx + 0x49, 0xc1, 0xe0, 0x30, //0x00000e57 shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x00000e5b shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x00000e5f orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x00000e62 shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x00000e66 orq %rdx, %rsi + 0x49, 0x09, 0xdd, //0x00000e69 orq %rbx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x00000e6c jne LBB0_194 + 0x4d, 0x85, 0xc9, //0x00000e72 testq %r9, %r9 + 0x4c, 0x8b, 0x55, 0xb8, //0x00000e75 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x73, 0x00, 0x00, 0x00, //0x00000e79 jne LBB0_196 + 0x45, 0x31, 0xc9, //0x00000e7f xorl %r9d, %r9d + 0x4c, 0x8b, 0x45, 0xd0, //0x00000e82 movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x00000e86 movq $-64(%rbp), %r12 + //0x00000e8a LBB0_180 + 0x66, 0x0f, 0x6f, 0xda, //0x00000e8a movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00000e8e pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00000e92 pcmpgtb %xmm15, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00000e97 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000e9b pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xce, //0x00000e9f orq %rcx, %rsi + 0x4d, 0x85, 0xff, //0x00000ea2 testq %r15, %r15 + 0x0f, 0x85, 0x9d, 0x00, 0x00, 0x00, //0x00000ea5 jne LBB0_198 + 0x48, 0x85, 0xf6, //0x00000eab testq %rsi, %rsi + 0x0f, 0x85, 0x9f, 0x26, 0x00, 0x00, //0x00000eae jne LBB0_598 + 0x49, 0x83, 0xc6, 0xc0, //0x00000eb4 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x00000eb8 addq $64, %rax + 0x49, 0x83, 0xfe, 0x3f, //0x00000ebc cmpq $63, %r14 + 0x0f, 0x87, 0xaa, 0xfe, 0xff, 0xff, //0x00000ec0 ja LBB0_177 + 0xe9, 0x9d, 0x0c, 0x00, 0x00, //0x00000ec6 jmp LBB0_183 + //0x00000ecb LBB0_194 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000ecb cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x00000ed0 movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x00000ed4 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x00000ed8 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00000edc jne LBB0_197 + 0x49, 0x0f, 0xbc, 0xcd, //0x00000ee2 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00000ee6 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000ee9 movq %rcx, $-56(%rbp) + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00000eed jmp LBB0_197 + //0x00000ef2 LBB0_196 + 0x4c, 0x8b, 0x45, 0xd0, //0x00000ef2 movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x00000ef6 movq $-64(%rbp), %r12 + //0x00000efa LBB0_197 + 0x4c, 0x89, 0xc9, //0x00000efa movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x00000efd notq %rcx + 0x4c, 0x21, 0xe9, //0x00000f00 andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00000f03 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xca, //0x00000f07 orq %r9, %rdx + 0x48, 0x89, 0xd7, //0x00000f0a movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00000f0d notq %rdi + 0x4c, 0x21, 0xef, //0x00000f10 andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000f13 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x00000f1d andq %rbx, %rdi + 0x45, 0x31, 0xc9, //0x00000f20 xorl %r9d, %r9d + 0x48, 0x01, 0xcf, //0x00000f23 addq %rcx, %rdi + 0x41, 0x0f, 0x92, 0xc1, //0x00000f26 setb %r9b + 0x48, 0x01, 0xff, //0x00000f2a addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f2d movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x00000f37 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x00000f3a andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00000f3d notq %rdi + 0x49, 0x21, 0xff, //0x00000f40 andq %rdi, %r15 + 0xe9, 0x42, 0xff, 0xff, 0xff, //0x00000f43 jmp LBB0_180 + //0x00000f48 LBB0_198 + 0x49, 0x0f, 0xbc, 0xcf, //0x00000f48 bsfq %r15, %rcx + 0x48, 0x85, 0xf6, //0x00000f4c testq %rsi, %rsi + 0x0f, 0x84, 0x29, 0x01, 0x00, 0x00, //0x00000f4f je LBB0_221 + 0x48, 0x0f, 0xbc, 0xd6, //0x00000f55 bsfq %rsi, %rdx + 0xe9, 0x25, 0x01, 0x00, 0x00, //0x00000f59 jmp LBB0_222 + //0x00000f5e LBB0_200 + 0x48, 0x01, 0xd6, //0x00000f5e addq %rdx, %rsi + 0x49, 0x89, 0xf2, //0x00000f61 movq %rsi, %r10 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000f64 movq $-1, %r13 + 0x4d, 0x85, 0xe4, //0x00000f6b testq %r12, %r12 + 0x0f, 0x84, 0xd6, 0x25, 0x00, 0x00, //0x00000f6e je LBB0_173 + //0x00000f74 LBB0_201 + 0x4d, 0x85, 0xff, //0x00000f74 testq %r15, %r15 + 0x48, 0x8b, 0x7d, 0xa0, //0x00000f77 movq $-96(%rbp), %rdi + 0x0f, 0x84, 0x04, 0x25, 0x00, 0x00, //0x00000f7b je LBB0_584 + 0x4d, 0x85, 0xf6, //0x00000f81 testq %r14, %r14 + 0x0f, 0x84, 0xfb, 0x24, 0x00, 0x00, //0x00000f84 je LBB0_584 + 0x4d, 0x29, 0xda, //0x00000f8a subq %r11, %r10 + 0x49, 0x8d, 0x4a, 0xff, //0x00000f8d leaq $-1(%r10), %rcx + 0x49, 0x39, 0xcc, //0x00000f91 cmpq %rcx, %r12 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000f94 je LBB0_209 + 0x49, 0x39, 0xcf, //0x00000f9a cmpq %rcx, %r15 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00000f9d je LBB0_209 + 0x49, 0x39, 0xce, //0x00000fa3 cmpq %rcx, %r14 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000fa6 je LBB0_209 + 0x4d, 0x85, 0xff, //0x00000fac testq %r15, %r15 + 0x0f, 0x8e, 0xa6, 0x00, 0x00, 0x00, //0x00000faf jle LBB0_218 + 0x49, 0x8d, 0x4f, 0xff, //0x00000fb5 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xce, //0x00000fb9 cmpq %rcx, %r14 + 0x0f, 0x84, 0x99, 0x00, 0x00, 0x00, //0x00000fbc je LBB0_218 + 0x49, 0xf7, 0xd7, //0x00000fc2 notq %r15 + 0x4d, 0x89, 0xfd, //0x00000fc5 movq %r15, %r13 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x00000fc8 jmp LBB0_210 + //0x00000fcd LBB0_209 + 0x49, 0xf7, 0xda, //0x00000fcd negq %r10 + 0x4d, 0x89, 0xd5, //0x00000fd0 movq %r10, %r13 + //0x00000fd3 LBB0_210 + 0x4d, 0x85, 0xed, //0x00000fd3 testq %r13, %r13 + 0x0f, 0x88, 0xa9, 0x24, 0x00, 0x00, //0x00000fd6 js LBB0_584 + //0x00000fdc LBB0_211 + 0x49, 0x01, 0xc5, //0x00000fdc addq %rax, %r13 + 0x4c, 0x8b, 0x45, 0xd0, //0x00000fdf movq $-48(%rbp), %r8 + 0x4d, 0x89, 0x28, //0x00000fe3 movq %r13, (%r8) + 0x48, 0x85, 0xc0, //0x00000fe6 testq %rax, %rax + 0x48, 0x8b, 0x7d, 0xb0, //0x00000fe9 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00000fed movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00000ff1 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000ff5 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00000fff movq $-72(%rbp), %r10 + 0x0f, 0x89, 0x12, 0xf3, 0xff, 0xff, //0x00001003 jns LBB0_28 + 0xe9, 0xac, 0x24, 0x00, 0x00, //0x00001009 jmp LBB0_586 + //0x0000100e LBB0_212 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000100e movl $64, %edx + //0x00001013 LBB0_213 + 0x4c, 0x8b, 0x45, 0xd0, //0x00001013 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001017 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000101b movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000101f movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001029 movq $-72(%rbp), %r10 + 0x48, 0x39, 0xca, //0x0000102d cmpq %rcx, %rdx + 0x0f, 0x82, 0x5a, 0x26, 0x00, 0x00, //0x00001030 jb LBB0_615 + 0x48, 0x01, 0xc8, //0x00001036 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00001039 addq $1, %rax + //0x0000103d LBB0_215 + 0x48, 0x85, 0xc0, //0x0000103d testq %rax, %rax + 0x0f, 0x88, 0x01, 0x1a, 0x00, 0x00, //0x00001040 js LBB0_514 + 0x49, 0x89, 0x00, //0x00001046 movq %rax, (%r8) + 0x48, 0x8b, 0x45, 0xa0, //0x00001049 movq $-96(%rbp), %rax + 0x48, 0x85, 0xc0, //0x0000104d testq %rax, %rax + 0x0f, 0x8f, 0xc5, 0xf2, 0xff, 0xff, //0x00001050 jg LBB0_28 + 0xe9, 0xe3, 0x19, 0x00, 0x00, //0x00001056 jmp LBB0_217 + //0x0000105b LBB0_218 + 0x4c, 0x89, 0xe1, //0x0000105b movq %r12, %rcx + 0x4c, 0x09, 0xf1, //0x0000105e orq %r14, %rcx + 0x0f, 0x99, 0xc1, //0x00001061 setns %cl + 0x0f, 0x88, 0x47, 0x05, 0x00, 0x00, //0x00001064 js LBB0_302 + 0x4d, 0x39, 0xf4, //0x0000106a cmpq %r14, %r12 + 0x0f, 0x8c, 0x3e, 0x05, 0x00, 0x00, //0x0000106d jl LBB0_302 + 0x49, 0xf7, 0xd4, //0x00001073 notq %r12 + 0x4d, 0x89, 0xe5, //0x00001076 movq %r12, %r13 + 0xe9, 0x55, 0xff, 0xff, 0xff, //0x00001079 jmp LBB0_210 + //0x0000107e LBB0_221 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000107e movl $64, %edx + //0x00001083 LBB0_222 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001083 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001087 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000108b movabsq $4294977024, %r14 + 0x48, 0x39, 0xca, //0x00001095 cmpq %rcx, %rdx + 0x0f, 0x82, 0xf2, 0x25, 0x00, 0x00, //0x00001098 jb LBB0_615 + 0x48, 0x01, 0xc8, //0x0000109e addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000010a1 addq $1, %rax + //0x000010a5 LBB0_224 + 0x4c, 0x8b, 0x6d, 0x98, //0x000010a5 movq $-104(%rbp), %r13 + //0x000010a9 LBB0_225 + 0x48, 0x85, 0xc0, //0x000010a9 testq %rax, %rax + 0x0f, 0x88, 0xed, 0x23, 0x00, 0x00, //0x000010ac js LBB0_587 + 0x49, 0x89, 0x00, //0x000010b2 movq %rax, (%r8) + 0x48, 0x8b, 0x45, 0xa0, //0x000010b5 movq $-96(%rbp), %rax + 0x48, 0x85, 0xc0, //0x000010b9 testq %rax, %rax + 0x0f, 0x8e, 0x7c, 0x19, 0x00, 0x00, //0x000010bc jle LBB0_217 + 0x49, 0x8b, 0x03, //0x000010c2 movq (%r11), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000010c5 cmpq $4095, %rax + 0x0f, 0x8f, 0x61, 0x19, 0x00, 0x00, //0x000010cb jg LBB0_602 + 0x48, 0x8d, 0x48, 0x01, //0x000010d1 leaq $1(%rax), %rcx + 0x49, 0x89, 0x0b, //0x000010d5 movq %rcx, (%r11) + 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x04, 0x00, 0x00, 0x00, //0x000010d8 movq $4, $8(%r11,%rax,8) + 0xe9, 0x35, 0xf2, 0xff, 0xff, //0x000010e1 jmp LBB0_28 + //0x000010e6 LBB0_229 + 0x49, 0x8b, 0x08, //0x000010e6 movq (%r8), %rcx + 0x48, 0x8b, 0x47, 0x08, //0x000010e9 movq $8(%rdi), %rax + 0xf6, 0x45, 0x88, 0x20, //0x000010ed testb $32, $-120(%rbp) + 0x48, 0x89, 0x45, 0x98, //0x000010f1 movq %rax, $-104(%rbp) + 0x48, 0x89, 0x4d, 0xa0, //0x000010f5 movq %rcx, $-96(%rbp) + 0x0f, 0x85, 0xce, 0x04, 0x00, 0x00, //0x000010f9 jne LBB0_303 + 0x49, 0x89, 0xc1, //0x000010ff movq %rax, %r9 + 0x49, 0x29, 0xc9, //0x00001102 subq %rcx, %r9 + 0x0f, 0x84, 0xc0, 0x25, 0x00, 0x00, //0x00001105 je LBB0_619 + 0x49, 0x83, 0xf9, 0x40, //0x0000110b cmpq $64, %r9 + 0x0f, 0x82, 0xce, 0x10, 0x00, 0x00, //0x0000110f jb LBB0_418 + 0x49, 0x89, 0xce, //0x00001115 movq %rcx, %r14 + 0x49, 0xf7, 0xd6, //0x00001118 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000111b movq $-1, $-56(%rbp) + 0x48, 0x89, 0xc8, //0x00001123 movq %rcx, %rax + 0x45, 0x31, 0xc0, //0x00001126 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001129 .p2align 4, 0x90 + //0x00001130 LBB0_233 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001130 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001136 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000113d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001144 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000114b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000114f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001153 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00001158 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000115c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x00001160 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x00001164 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001168 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000116c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00001170 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001174 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00001178 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000117c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001180 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00001185 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001189 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x74, 0xe9, //0x0000118d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001191 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00001195 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00001199 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000119e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x000011a2 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x000011a6 orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x000011a9 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x000011ad orq %rsi, %rcx + 0x49, 0x09, 0xca, //0x000011b0 orq %rcx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000011b3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000011b7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000011bb orq %r15, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000011be shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000011c2 orq %rdi, %rbx + 0x49, 0x09, 0xdb, //0x000011c5 orq %rbx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000011c8 jne LBB0_243 + 0x4d, 0x85, 0xc0, //0x000011ce testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000011d1 jne LBB0_245 + 0x45, 0x31, 0xc0, //0x000011d7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000011da testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000011dd jne LBB0_246 + //0x000011e3 LBB0_236 + 0x49, 0x83, 0xc1, 0xc0, //0x000011e3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000011e7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000011eb addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000011ef cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000011f3 ja LBB0_233 + 0xe9, 0x2f, 0x0c, 0x00, 0x00, //0x000011f9 jmp LBB0_237 + //0x000011fe LBB0_243 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000011fe cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00001203 jne LBB0_245 + 0x49, 0x0f, 0xbc, 0xcb, //0x00001209 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x0000120d addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001210 movq %rcx, $-56(%rbp) + //0x00001214 LBB0_245 + 0x4c, 0x89, 0xc1, //0x00001214 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00001217 notq %rcx + 0x4c, 0x21, 0xd9, //0x0000121a andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000121d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00001221 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00001224 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001227 notq %rsi + 0x4c, 0x21, 0xde, //0x0000122a andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000122d movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00001237 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x0000123a xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x0000123d addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00001240 setb %r8b + 0x48, 0x01, 0xf6, //0x00001244 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001247 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00001251 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001254 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001257 notq %rsi + 0x49, 0x21, 0xf2, //0x0000125a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x0000125d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00001260 je LBB0_236 + //0x00001266 LBB0_246 + 0x49, 0x0f, 0xbc, 0xc2, //0x00001266 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000126a subq %r14, %rax + //0x0000126d LBB0_247 + 0x4c, 0x8b, 0x45, 0xd0, //0x0000126d movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001271 movq $-80(%rbp), %rdi + //0x00001275 LBB0_248 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001275 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001279 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001283 movq $-72(%rbp), %r10 + 0xe9, 0x3f, 0x06, 0x00, 0x00, //0x00001287 jmp LBB0_346 + //0x0000128c LBB0_249 + 0x4c, 0x89, 0xc0, //0x0000128c movq %r8, %rax + 0x4c, 0x8b, 0x47, 0x08, //0x0000128f movq $8(%rdi), %r8 + 0x48, 0x8b, 0x00, //0x00001293 movq (%rax), %rax + 0x49, 0x29, 0xc0, //0x00001296 subq %rax, %r8 + 0x0f, 0x84, 0xd1, 0x22, 0x00, 0x00, //0x00001299 je LBB0_600 + 0x4d, 0x8d, 0x14, 0x04, //0x0000129f leaq (%r12,%rax), %r10 + 0x41, 0x80, 0x3a, 0x30, //0x000012a3 cmpb $48, (%r10) + 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x000012a7 jne LBB0_254 + 0x41, 0xbe, 0x01, 0x00, 0x00, 0x00, //0x000012ad movl $1, %r14d + 0x49, 0x83, 0xf8, 0x01, //0x000012b3 cmpq $1, %r8 + 0x0f, 0x84, 0xb1, 0x05, 0x00, 0x00, //0x000012b7 je LBB0_342 + 0x41, 0x8a, 0x4a, 0x01, //0x000012bd movb $1(%r10), %cl + 0x80, 0xc1, 0xd2, //0x000012c1 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000012c4 cmpb $55, %cl + 0x0f, 0x87, 0xa1, 0x05, 0x00, 0x00, //0x000012c7 ja LBB0_342 + 0x0f, 0xb6, 0xc9, //0x000012cd movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000012d0 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x000012da btq %rcx, %rdx + 0x0f, 0x83, 0x8a, 0x05, 0x00, 0x00, //0x000012de jae LBB0_342 + //0x000012e4 LBB0_254 + 0x49, 0x83, 0xf8, 0x10, //0x000012e4 cmpq $16, %r8 + 0x0f, 0x82, 0xd5, 0x0e, 0x00, 0x00, //0x000012e8 jb LBB0_417 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000012ee movq $-1, %r13 + 0x45, 0x31, 0xf6, //0x000012f5 xorl %r14d, %r14d + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000012f8 movq $-1, %r12 + 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000012ff movq $-1, %r11 + 0x4c, 0x89, 0xc7, //0x00001306 movq %r8, %rdi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001309 .p2align 4, 0x90 + //0x00001310 LBB0_256 + 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x32, //0x00001310 movdqu (%r10,%r14), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001316 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x64, 0xe0, //0x0000131a pcmpgtb %xmm8, %xmm4 + 0x66, 0x41, 0x0f, 0x6f, 0xee, //0x0000131f movdqa %xmm14, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00001324 pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x00001328 pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x0000132c movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe1, //0x00001330 pcmpeqb %xmm9, %xmm4 + 0x66, 0x0f, 0x6f, 0xf3, //0x00001335 movdqa %xmm3, %xmm6 + 0x66, 0x41, 0x0f, 0x74, 0xf2, //0x00001339 pcmpeqb %xmm10, %xmm6 + 0x66, 0x0f, 0xeb, 0xf4, //0x0000133e por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001342 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe3, //0x00001346 pand %xmm11, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xdc, //0x0000134b pcmpeqb %xmm12, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xe5, //0x00001350 pcmpeqb %xmm13, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x00001355 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe3, //0x00001359 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x0000135d por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00001361 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xdb, //0x00001365 pmovmskb %xmm3, %ebx + 0x66, 0x44, 0x0f, 0xd7, 0xce, //0x00001369 pmovmskb %xmm6, %r9d + 0x66, 0x0f, 0xd7, 0xcd, //0x0000136e pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00001372 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00001374 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001377 cmpl $16, %ecx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000137a je LBB0_258 + 0xba, 0xff, 0xff, 0xff, 0xff, //0x00001380 movl $-1, %edx + 0xd3, 0xe2, //0x00001385 shll %cl, %edx + 0xf7, 0xd2, //0x00001387 notl %edx + 0x21, 0xd3, //0x00001389 andl %edx, %ebx + 0x21, 0xd6, //0x0000138b andl %edx, %esi + 0x44, 0x21, 0xca, //0x0000138d andl %r9d, %edx + 0x41, 0x89, 0xd1, //0x00001390 movl %edx, %r9d + //0x00001393 LBB0_258 + 0x8d, 0x53, 0xff, //0x00001393 leal $-1(%rbx), %edx + 0x21, 0xda, //0x00001396 andl %ebx, %edx + 0x0f, 0x85, 0x50, 0x0a, 0x00, 0x00, //0x00001398 jne LBB0_385 + 0x8d, 0x56, 0xff, //0x0000139e leal $-1(%rsi), %edx + 0x21, 0xf2, //0x000013a1 andl %esi, %edx + 0x0f, 0x85, 0x45, 0x0a, 0x00, 0x00, //0x000013a3 jne LBB0_385 + 0x41, 0x8d, 0x51, 0xff, //0x000013a9 leal $-1(%r9), %edx + 0x44, 0x21, 0xca, //0x000013ad andl %r9d, %edx + 0x0f, 0x85, 0x38, 0x0a, 0x00, 0x00, //0x000013b0 jne LBB0_385 + 0x85, 0xdb, //0x000013b6 testl %ebx, %ebx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000013b8 je LBB0_264 + 0x0f, 0xbc, 0xdb, //0x000013be bsfl %ebx, %ebx + 0x49, 0x83, 0xfb, 0xff, //0x000013c1 cmpq $-1, %r11 + 0x0f, 0x85, 0x06, 0x0c, 0x00, 0x00, //0x000013c5 jne LBB0_391 + 0x4c, 0x01, 0xf3, //0x000013cb addq %r14, %rbx + 0x49, 0x89, 0xdb, //0x000013ce movq %rbx, %r11 + //0x000013d1 LBB0_264 + 0x85, 0xf6, //0x000013d1 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000013d3 je LBB0_267 + 0x0f, 0xbc, 0xf6, //0x000013d9 bsfl %esi, %esi + 0x49, 0x83, 0xfc, 0xff, //0x000013dc cmpq $-1, %r12 + 0x0f, 0x85, 0xf2, 0x0b, 0x00, 0x00, //0x000013e0 jne LBB0_392 + 0x4c, 0x01, 0xf6, //0x000013e6 addq %r14, %rsi + 0x49, 0x89, 0xf4, //0x000013e9 movq %rsi, %r12 + //0x000013ec LBB0_267 + 0x45, 0x85, 0xc9, //0x000013ec testl %r9d, %r9d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000013ef je LBB0_270 + 0x41, 0x0f, 0xbc, 0xd1, //0x000013f5 bsfl %r9d, %edx + 0x49, 0x83, 0xfd, 0xff, //0x000013f9 cmpq $-1, %r13 + 0x0f, 0x85, 0xdc, 0x0b, 0x00, 0x00, //0x000013fd jne LBB0_393 + 0x4c, 0x01, 0xf2, //0x00001403 addq %r14, %rdx + 0x49, 0x89, 0xd5, //0x00001406 movq %rdx, %r13 + //0x00001409 LBB0_270 + 0x83, 0xf9, 0x10, //0x00001409 cmpl $16, %ecx + 0x0f, 0x85, 0xd4, 0x03, 0x00, 0x00, //0x0000140c jne LBB0_329 + 0x48, 0x83, 0xc7, 0xf0, //0x00001412 addq $-16, %rdi + 0x49, 0x83, 0xc6, 0x10, //0x00001416 addq $16, %r14 + 0x48, 0x83, 0xff, 0x0f, //0x0000141a cmpq $15, %rdi + 0x0f, 0x87, 0xec, 0xfe, 0xff, 0xff, //0x0000141e ja LBB0_256 + 0x4b, 0x8d, 0x34, 0x32, //0x00001424 leaq (%r10,%r14), %rsi + 0x49, 0x89, 0xf1, //0x00001428 movq %rsi, %r9 + 0x4d, 0x39, 0xf0, //0x0000142b cmpq %r14, %r8 + 0x0f, 0x84, 0xc6, 0x03, 0x00, 0x00, //0x0000142e je LBB0_331 + //0x00001434 LBB0_273 + 0x4c, 0x8d, 0x0c, 0x3e, //0x00001434 leaq (%rsi,%rdi), %r9 + 0x49, 0x89, 0xf0, //0x00001438 movq %rsi, %r8 + 0x4d, 0x29, 0xd0, //0x0000143b subq %r10, %r8 + 0x31, 0xd2, //0x0000143e xorl %edx, %edx + 0x4c, 0x8d, 0x35, 0x71, 0x27, 0x00, 0x00, //0x00001440 leaq $10097(%rip), %r14 /* LJTI0_3+0(%rip) */ + 0xe9, 0x31, 0x00, 0x00, 0x00, //0x00001447 jmp LBB0_278 + //0x0000144c LBB0_274 + 0x83, 0xf9, 0x65, //0x0000144c cmpl $101, %ecx + 0x0f, 0x85, 0x9f, 0x03, 0x00, 0x00, //0x0000144f jne LBB0_330 + //0x00001455 LBB0_275 + 0x49, 0x83, 0xfc, 0xff, //0x00001455 cmpq $-1, %r12 + 0x0f, 0x85, 0xb8, 0x09, 0x00, 0x00, //0x00001459 jne LBB0_389 + 0x4d, 0x8d, 0x24, 0x10, //0x0000145f leaq (%r8,%rdx), %r12 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001463 .p2align 4, 0x90 + //0x00001470 LBB0_277 + 0x48, 0x83, 0xc2, 0x01, //0x00001470 addq $1, %rdx + 0x48, 0x39, 0xd7, //0x00001474 cmpq %rdx, %rdi + 0x0f, 0x84, 0x7d, 0x03, 0x00, 0x00, //0x00001477 je LBB0_331 + //0x0000147d LBB0_278 + 0x0f, 0xbe, 0x0c, 0x16, //0x0000147d movsbl (%rsi,%rdx), %ecx + 0x8d, 0x59, 0xd0, //0x00001481 leal $-48(%rcx), %ebx + 0x83, 0xfb, 0x0a, //0x00001484 cmpl $10, %ebx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00001487 jb LBB0_277 + 0x8d, 0x59, 0xd5, //0x0000148d leal $-43(%rcx), %ebx + 0x83, 0xfb, 0x1a, //0x00001490 cmpl $26, %ebx + 0x0f, 0x87, 0xb3, 0xff, 0xff, 0xff, //0x00001493 ja LBB0_274 + 0x49, 0x63, 0x0c, 0x9e, //0x00001499 movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x0000149d addq %r14, %rcx + 0xff, 0xe1, //0x000014a0 jmpq *%rcx + //0x000014a2 LBB0_281 + 0x49, 0x83, 0xfd, 0xff, //0x000014a2 cmpq $-1, %r13 + 0x0f, 0x85, 0x6b, 0x09, 0x00, 0x00, //0x000014a6 jne LBB0_389 + 0x4d, 0x8d, 0x2c, 0x10, //0x000014ac leaq (%r8,%rdx), %r13 + 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x000014b0 jmp LBB0_277 + //0x000014b5 LBB0_283 + 0x49, 0x83, 0xfb, 0xff, //0x000014b5 cmpq $-1, %r11 + 0x0f, 0x85, 0x58, 0x09, 0x00, 0x00, //0x000014b9 jne LBB0_389 + 0x4d, 0x8d, 0x1c, 0x10, //0x000014bf leaq (%r8,%rdx), %r11 + 0xe9, 0xa8, 0xff, 0xff, 0xff, //0x000014c3 jmp LBB0_277 + //0x000014c8 LBB0_285 + 0x49, 0x8b, 0x03, //0x000014c8 movq (%r11), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000014cb cmpq $4095, %rax + 0x0f, 0x8f, 0x5b, 0x15, 0x00, 0x00, //0x000014d1 jg LBB0_602 + 0x48, 0x8d, 0x48, 0x01, //0x000014d7 leaq $1(%rax), %rcx + 0x49, 0x89, 0x0b, //0x000014db movq %rcx, (%r11) + 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000014de movq $5, $8(%r11,%rax,8) + 0xe9, 0x2f, 0xee, 0xff, 0xff, //0x000014e7 jmp LBB0_28 + //0x000014ec LBB0_287 + 0x49, 0x8b, 0x08, //0x000014ec movq (%r8), %rcx + 0x48, 0x8b, 0x57, 0x08, //0x000014ef movq $8(%rdi), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x000014f3 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x000014f7 cmpq %rsi, %rcx + 0x0f, 0x87, 0xb7, 0x1f, 0x00, 0x00, //0x000014fa ja LBB0_516 + 0x41, 0x8b, 0x14, 0x0c, //0x00001500 movl (%r12,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x00001504 cmpl $1702063201, %edx + 0x0f, 0x85, 0x79, 0x20, 0x00, 0x00, //0x0000150a jne LBB0_604 + 0x48, 0x8d, 0x41, 0x04, //0x00001510 leaq $4(%rcx), %rax + 0x49, 0x89, 0x00, //0x00001514 movq %rax, (%r8) + 0x48, 0x85, 0xc9, //0x00001517 testq %rcx, %rcx + 0x0f, 0x8f, 0xfb, 0xed, 0xff, 0xff, //0x0000151a jg LBB0_28 + 0xe9, 0x5b, 0x21, 0x00, 0x00, //0x00001520 jmp LBB0_290 + //0x00001525 LBB0_291 + 0x49, 0x8b, 0x08, //0x00001525 movq (%r8), %rcx + 0x48, 0x8b, 0x57, 0x08, //0x00001528 movq $8(%rdi), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x0000152c leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001530 cmpq %rsi, %rcx + 0x0f, 0x87, 0x7e, 0x1f, 0x00, 0x00, //0x00001533 ja LBB0_516 + 0x48, 0x8d, 0x41, 0xff, //0x00001539 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x0000153d cmpl $1819047278, $-1(%r12,%rcx) + 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x00001546 je LBB0_299 + 0xe9, 0x8d, 0x20, 0x00, 0x00, //0x0000154c jmp LBB0_293 + //0x00001551 LBB0_297 + 0x49, 0x8b, 0x08, //0x00001551 movq (%r8), %rcx + 0x48, 0x8b, 0x57, 0x08, //0x00001554 movq $8(%rdi), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001558 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x0000155c cmpq %rsi, %rcx + 0x0f, 0x87, 0x52, 0x1f, 0x00, 0x00, //0x0000155f ja LBB0_516 + 0x48, 0x8d, 0x41, 0xff, //0x00001565 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001569 cmpl $1702195828, $-1(%r12,%rcx) + 0x0f, 0x85, 0xad, 0x20, 0x00, 0x00, //0x00001572 jne LBB0_609 + //0x00001578 LBB0_299 + 0x48, 0x8d, 0x51, 0x03, //0x00001578 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x10, //0x0000157c movq %rdx, (%r8) + 0x48, 0x85, 0xc9, //0x0000157f testq %rcx, %rcx + 0x0f, 0x8f, 0x93, 0xed, 0xff, 0xff, //0x00001582 jg LBB0_28 + 0xe9, 0x2d, 0x1f, 0x00, 0x00, //0x00001588 jmp LBB0_586 + //0x0000158d LBB0_300 + 0x49, 0x8b, 0x03, //0x0000158d movq (%r11), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001590 cmpq $4095, %rax + 0x0f, 0x8f, 0x96, 0x14, 0x00, 0x00, //0x00001596 jg LBB0_602 + 0x48, 0x8d, 0x48, 0x01, //0x0000159c leaq $1(%rax), %rcx + 0x49, 0x89, 0x0b, //0x000015a0 movq %rcx, (%r11) + 0x49, 0xc7, 0x44, 0xc3, 0x08, 0x06, 0x00, 0x00, 0x00, //0x000015a3 movq $6, $8(%r11,%rax,8) + 0xe9, 0x6a, 0xed, 0xff, 0xff, //0x000015ac jmp LBB0_28 + //0x000015b1 LBB0_302 + 0x49, 0x8d, 0x56, 0xff, //0x000015b1 leaq $-1(%r14), %rdx + 0x49, 0x39, 0xd4, //0x000015b5 cmpq %rdx, %r12 + 0x49, 0xf7, 0xd6, //0x000015b8 notq %r14 + 0x4d, 0x0f, 0x45, 0xf2, //0x000015bb cmovneq %r10, %r14 + 0x84, 0xc9, //0x000015bf testb %cl, %cl + 0x4d, 0x0f, 0x44, 0xf2, //0x000015c1 cmoveq %r10, %r14 + 0x4d, 0x89, 0xf5, //0x000015c5 movq %r14, %r13 + 0xe9, 0x06, 0xfa, 0xff, 0xff, //0x000015c8 jmp LBB0_210 + //0x000015cd LBB0_303 + 0x49, 0x89, 0xc6, //0x000015cd movq %rax, %r14 + 0x49, 0x29, 0xce, //0x000015d0 subq %rcx, %r14 + 0x0f, 0x84, 0xf2, 0x20, 0x00, 0x00, //0x000015d3 je LBB0_619 + 0x49, 0x83, 0xfe, 0x40, //0x000015d9 cmpq $64, %r14 + 0x0f, 0x82, 0x14, 0x0c, 0x00, 0x00, //0x000015dd jb LBB0_419 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000015e3 movq $-1, $-56(%rbp) + 0x48, 0x89, 0xc8, //0x000015eb movq %rcx, %rax + 0x45, 0x31, 0xc0, //0x000015ee xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000015f1 .p2align 4, 0x90 + //0x00001600 LBB0_306 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x04, //0x00001600 movdqu (%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x10, //0x00001606 movdqu $16(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x20, //0x0000160d movdqu $32(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001614 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xdc, //0x0000161b movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000161f pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00001623 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00001628 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000162c pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001630 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xdf, //0x00001634 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001638 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xe3, //0x0000163c pmovmskb %xmm3, %r12d + 0x66, 0x0f, 0x6f, 0xde, //0x00001641 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001645 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001649 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xdc, //0x0000164e movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001652 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001656 pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdd, //0x0000165b movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000165f pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00001663 pmovmskb %xmm3, %r9d + 0x66, 0x0f, 0x6f, 0xdf, //0x00001668 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000166c pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001670 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xde, //0x00001674 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001678 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x0000167c pmovmskb %xmm3, %r10d + 0x66, 0x0f, 0x6f, 0xda, //0x00001681 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x00001685 pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xef, //0x00001689 pcmpgtb %xmm15, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x0000168e pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00001692 pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xda, //0x00001696 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdf, //0x0000169a pcmpgtb %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xff, //0x0000169e pcmpgtb %xmm15, %xmm7 + 0x66, 0x0f, 0xdb, 0xfb, //0x000016a3 pand %xmm3, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x000016a7 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x6f, 0xda, //0x000016ab movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x000016af pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf7, //0x000016b3 pcmpgtb %xmm15, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x000016b8 pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xde, //0x000016bc pmovmskb %xmm6, %ebx + 0x49, 0xc1, 0xe3, 0x30, //0x000016c0 shlq $48, %r11 + 0x49, 0xc1, 0xe4, 0x20, //0x000016c4 shlq $32, %r12 + 0x4d, 0x09, 0xdc, //0x000016c8 orq %r11, %r12 + 0x48, 0xc1, 0xe1, 0x10, //0x000016cb shlq $16, %rcx + 0x4c, 0x09, 0xe1, //0x000016cf orq %r12, %rcx + 0x49, 0x09, 0xcf, //0x000016d2 orq %rcx, %r15 + 0x49, 0xc1, 0xe2, 0x30, //0x000016d5 shlq $48, %r10 + 0x48, 0xc1, 0xe7, 0x20, //0x000016d9 shlq $32, %rdi + 0x4c, 0x09, 0xd7, //0x000016dd orq %r10, %rdi + 0x49, 0xc1, 0xe1, 0x10, //0x000016e0 shlq $16, %r9 + 0x49, 0x09, 0xf9, //0x000016e4 orq %rdi, %r9 + 0x48, 0xc1, 0xe3, 0x30, //0x000016e7 shlq $48, %rbx + 0x48, 0xc1, 0xe2, 0x20, //0x000016eb shlq $32, %rdx + 0x48, 0x09, 0xda, //0x000016ef orq %rbx, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000016f2 shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000016f6 orq %rdx, %rsi + 0x4d, 0x09, 0xcd, //0x000016f9 orq %r9, %r13 + 0x0f, 0x85, 0x55, 0x00, 0x00, 0x00, //0x000016fc jne LBB0_323 + 0x4d, 0x85, 0xc0, //0x00001702 testq %r8, %r8 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x00001705 jne LBB0_325 + 0x45, 0x31, 0xc0, //0x0000170b xorl %r8d, %r8d + 0x4c, 0x8b, 0x65, 0xc0, //0x0000170e movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001712 movq $-72(%rbp), %r10 + //0x00001716 LBB0_309 + 0x66, 0x0f, 0x6f, 0xda, //0x00001716 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x0000171a pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x0000171e pcmpgtb %xmm15, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00001723 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00001727 pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xce, //0x0000172b orq %rcx, %rsi + 0x4d, 0x85, 0xff, //0x0000172e testq %r15, %r15 + 0x0f, 0x85, 0x99, 0x00, 0x00, 0x00, //0x00001731 jne LBB0_327 + 0x48, 0x85, 0xf6, //0x00001737 testq %rsi, %rsi + 0x0f, 0x85, 0x62, 0x1f, 0x00, 0x00, //0x0000173a jne LBB0_616 + 0x49, 0x83, 0xc6, 0xc0, //0x00001740 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x00001744 addq $64, %rax + 0x49, 0x83, 0xfe, 0x3f, //0x00001748 cmpq $63, %r14 + 0x0f, 0x87, 0xae, 0xfe, 0xff, 0xff, //0x0000174c ja LBB0_306 + 0xe9, 0x67, 0x07, 0x00, 0x00, //0x00001752 jmp LBB0_312 + //0x00001757 LBB0_323 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001757 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x65, 0xc0, //0x0000175c movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001760 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x18, 0x00, 0x00, 0x00, //0x00001764 jne LBB0_326 + 0x49, 0x0f, 0xbc, 0xcd, //0x0000176a bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x0000176e addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001771 movq %rcx, $-56(%rbp) + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00001775 jmp LBB0_326 + //0x0000177a LBB0_325 + 0x4c, 0x8b, 0x65, 0xc0, //0x0000177a movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x0000177e movq $-72(%rbp), %r10 + //0x00001782 LBB0_326 + 0x4c, 0x89, 0xc1, //0x00001782 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00001785 notq %rcx + 0x4c, 0x21, 0xe9, //0x00001788 andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000178b leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x0000178f orq %r8, %rdx + 0x48, 0x89, 0xd7, //0x00001792 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00001795 notq %rdi + 0x4c, 0x21, 0xef, //0x00001798 andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000179b movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x000017a5 andq %rbx, %rdi + 0x45, 0x31, 0xc0, //0x000017a8 xorl %r8d, %r8d + 0x48, 0x01, 0xcf, //0x000017ab addq %rcx, %rdi + 0x41, 0x0f, 0x92, 0xc0, //0x000017ae setb %r8b + 0x48, 0x01, 0xff, //0x000017b2 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000017b5 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x000017bf xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x000017c2 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x000017c5 notq %rdi + 0x49, 0x21, 0xff, //0x000017c8 andq %rdi, %r15 + 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000017cb jmp LBB0_309 + //0x000017d0 LBB0_327 + 0x49, 0x0f, 0xbc, 0xcf, //0x000017d0 bsfq %r15, %rcx + 0x48, 0x85, 0xf6, //0x000017d4 testq %rsi, %rsi + 0x0f, 0x84, 0xc3, 0x00, 0x00, 0x00, //0x000017d7 je LBB0_343 + 0x48, 0x0f, 0xbc, 0xd6, //0x000017dd bsfq %rsi, %rdx + 0xe9, 0xbf, 0x00, 0x00, 0x00, //0x000017e1 jmp LBB0_344 + //0x000017e6 LBB0_329 + 0x41, 0x89, 0xc9, //0x000017e6 movl %ecx, %r9d + 0x4d, 0x01, 0xd1, //0x000017e9 addq %r10, %r9 + 0x4d, 0x01, 0xf1, //0x000017ec addq %r14, %r9 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000017ef jmp LBB0_331 + //0x000017f4 LBB0_330 + 0x48, 0x01, 0xd6, //0x000017f4 addq %rdx, %rsi + 0x49, 0x89, 0xf1, //0x000017f7 movq %rsi, %r9 + //0x000017fa LBB0_331 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000017fa movq $-1, %r14 + 0x4d, 0x85, 0xdb, //0x00001801 testq %r11, %r11 + 0x0f, 0x84, 0x6d, 0x1d, 0x00, 0x00, //0x00001804 je LBB0_601 + 0x4d, 0x85, 0xed, //0x0000180a testq %r13, %r13 + 0x0f, 0x84, 0x64, 0x1d, 0x00, 0x00, //0x0000180d je LBB0_601 + 0x4d, 0x85, 0xe4, //0x00001813 testq %r12, %r12 + 0x0f, 0x84, 0x5b, 0x1d, 0x00, 0x00, //0x00001816 je LBB0_601 + 0x4d, 0x29, 0xd1, //0x0000181c subq %r10, %r9 + 0x49, 0x8d, 0x49, 0xff, //0x0000181f leaq $-1(%r9), %rcx + 0x49, 0x39, 0xcb, //0x00001823 cmpq %rcx, %r11 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00001826 je LBB0_340 + 0x49, 0x39, 0xcd, //0x0000182c cmpq %rcx, %r13 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x0000182f je LBB0_340 + 0x49, 0x39, 0xcc, //0x00001835 cmpq %rcx, %r12 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00001838 je LBB0_340 + 0x4d, 0x85, 0xed, //0x0000183e testq %r13, %r13 + 0x0f, 0x8e, 0xb2, 0x00, 0x00, 0x00, //0x00001841 jle LBB0_351 + 0x49, 0x8d, 0x4d, 0xff, //0x00001847 leaq $-1(%r13), %rcx + 0x49, 0x39, 0xcc, //0x0000184b cmpq %rcx, %r12 + 0x0f, 0x84, 0xa5, 0x00, 0x00, 0x00, //0x0000184e je LBB0_351 + 0x49, 0xf7, 0xd5, //0x00001854 notq %r13 + 0x4d, 0x89, 0xee, //0x00001857 movq %r13, %r14 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x0000185a jmp LBB0_341 + //0x0000185f LBB0_340 + 0x49, 0xf7, 0xd9, //0x0000185f negq %r9 + 0x4d, 0x89, 0xce, //0x00001862 movq %r9, %r14 + //0x00001865 LBB0_341 + 0x4d, 0x85, 0xf6, //0x00001865 testq %r14, %r14 + 0x0f, 0x88, 0x09, 0x1d, 0x00, 0x00, //0x00001868 js LBB0_601 + //0x0000186e LBB0_342 + 0x49, 0x01, 0xc6, //0x0000186e addq %rax, %r14 + 0x4c, 0x8b, 0x45, 0xd0, //0x00001871 movq $-48(%rbp), %r8 + 0x4d, 0x89, 0x30, //0x00001875 movq %r14, (%r8) + 0x48, 0x85, 0xc0, //0x00001878 testq %rax, %rax + 0x48, 0x8b, 0x7d, 0xb0, //0x0000187b movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x0000187f movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001883 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001887 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001891 movq $-72(%rbp), %r10 + 0x0f, 0x8f, 0x80, 0xea, 0xff, 0xff, //0x00001895 jg LBB0_28 + 0xe9, 0x9e, 0x11, 0x00, 0x00, //0x0000189b jmp LBB0_217 + //0x000018a0 LBB0_343 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000018a0 movl $64, %edx + //0x000018a5 LBB0_344 + 0x4c, 0x8b, 0x45, 0xd0, //0x000018a5 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x000018a9 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x000018ad movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000018b1 movabsq $4294977024, %r14 + 0x48, 0x39, 0xca, //0x000018bb cmpq %rcx, %rdx + 0x0f, 0x82, 0xcc, 0x1d, 0x00, 0x00, //0x000018be jb LBB0_615 + 0x48, 0x01, 0xc8, //0x000018c4 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000018c7 addq $1, %rax + //0x000018cb LBB0_346 + 0x48, 0x85, 0xc0, //0x000018cb testq %rax, %rax + 0x0f, 0x88, 0x73, 0x11, 0x00, 0x00, //0x000018ce js LBB0_514 + 0x49, 0x89, 0x00, //0x000018d4 movq %rax, (%r8) + 0x48, 0x83, 0x7d, 0xa0, 0x00, //0x000018d7 cmpq $0, $-96(%rbp) + 0x0f, 0x8f, 0x39, 0xea, 0xff, 0xff, //0x000018dc jg LBB0_28 + 0xe9, 0x8c, 0x1d, 0x00, 0x00, //0x000018e2 jmp LBB0_348 + //0x000018e7 LBB0_349 + 0x0f, 0xbc, 0xca, //0x000018e7 bsfl %edx, %ecx + //0x000018ea LBB0_350 + 0x49, 0xf7, 0xd5, //0x000018ea notq %r13 + 0x49, 0x29, 0xcd, //0x000018ed subq %rcx, %r13 + 0x48, 0x8b, 0x7d, 0xa0, //0x000018f0 movq $-96(%rbp), %rdi + 0xe9, 0xda, 0xf6, 0xff, 0xff, //0x000018f4 jmp LBB0_210 + //0x000018f9 LBB0_351 + 0x4c, 0x89, 0xd9, //0x000018f9 movq %r11, %rcx + 0x4c, 0x09, 0xe1, //0x000018fc orq %r12, %rcx + 0x0f, 0x99, 0xc2, //0x000018ff setns %dl + 0x0f, 0x88, 0xb2, 0x01, 0x00, 0x00, //0x00001902 js LBB0_355 + 0x4d, 0x39, 0xe3, //0x00001908 cmpq %r12, %r11 + 0x0f, 0x8c, 0xa9, 0x01, 0x00, 0x00, //0x0000190b jl LBB0_355 + 0x49, 0xf7, 0xd3, //0x00001911 notq %r11 + 0x4d, 0x89, 0xde, //0x00001914 movq %r11, %r14 + 0xe9, 0x49, 0xff, 0xff, 0xff, //0x00001917 jmp LBB0_341 + //0x0000191c LBB0_354 + 0x48, 0x8b, 0x8d, 0x68, 0xff, 0xff, 0xff, //0x0000191c movq $-152(%rbp), %rcx + 0x48, 0x8b, 0x7d, 0xa0, //0x00001923 movq $-96(%rbp), %rdi + 0x4c, 0x8d, 0x2c, 0x39, //0x00001927 leaq (%rcx,%rdi), %r13 + 0x49, 0x29, 0xf5, //0x0000192b subq %rsi, %r13 + 0x49, 0x29, 0xd5, //0x0000192e subq %rdx, %r13 + 0xe9, 0x9d, 0xf6, 0xff, 0xff, //0x00001931 jmp LBB0_210 + //0x00001936 LBB0_71 + 0x4c, 0x01, 0xe0, //0x00001936 addq %r12, %rax + 0x48, 0x8b, 0x7d, 0xb0, //0x00001939 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000193d movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001941 movabsq $4294977024, %r14 + 0x49, 0x83, 0xf9, 0x20, //0x0000194b cmpq $32, %r9 + 0x4c, 0x8b, 0x55, 0xb8, //0x0000194f movq $-72(%rbp), %r10 + 0x0f, 0x82, 0x33, 0x09, 0x00, 0x00, //0x00001953 jb LBB0_424 + //0x00001959 LBB0_72 + 0xf3, 0x0f, 0x6f, 0x18, //0x00001959 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x0000195d movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00001962 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001966 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000196a pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000196e movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001972 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00001976 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x0000197a pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000197e pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00001982 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001986 pmovmskb %xmm4, %ebx + 0x48, 0xc1, 0xe1, 0x10, //0x0000198a shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000198e orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x10, //0x00001991 shlq $16, %rbx + 0x48, 0x09, 0xde, //0x00001995 orq %rbx, %rsi + 0x0f, 0x85, 0x77, 0x08, 0x00, 0x00, //0x00001998 jne LBB0_420 + 0x4d, 0x85, 0xc0, //0x0000199e testq %r8, %r8 + 0x0f, 0x85, 0x8b, 0x08, 0x00, 0x00, //0x000019a1 jne LBB0_422 + 0x45, 0x31, 0xc0, //0x000019a7 xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x000019aa testq %rdx, %rdx + 0x0f, 0x84, 0xd1, 0x08, 0x00, 0x00, //0x000019ad je LBB0_423 + //0x000019b3 LBB0_75 + 0x48, 0x0f, 0xbc, 0xca, //0x000019b3 bsfq %rdx, %rcx + 0x48, 0x03, 0x45, 0x90, //0x000019b7 addq $-112(%rbp), %rax + 0x48, 0x01, 0xc8, //0x000019bb addq %rcx, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x000019be movq $-48(%rbp), %r8 + 0xe9, 0x76, 0xf6, 0xff, 0xff, //0x000019c2 jmp LBB0_215 + //0x000019c7 LBB0_154 + 0x4c, 0x01, 0xe0, //0x000019c7 addq %r12, %rax + 0x49, 0x83, 0xfa, 0x20, //0x000019ca cmpq $32, %r10 + 0x0f, 0x82, 0xe2, 0x06, 0x00, 0x00, //0x000019ce jb LBB0_408 + //0x000019d4 LBB0_155 + 0xf3, 0x0f, 0x6f, 0x20, //0x000019d4 movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x000019d8 movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x000019dd movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000019e1 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000019e5 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xeb, //0x000019e9 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000019ed pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000019f1 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x000019f5 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x000019f9 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x000019fd pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xeb, //0x00001a01 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00001a05 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001a09 pmovmskb %xmm5, %ebx + 0x66, 0x0f, 0x6f, 0xea, //0x00001a0d movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00001a11 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00001a15 pcmpgtb %xmm15, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00001a1a pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001a1e pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe7, 0x10, //0x00001a22 shlq $16, %rdi + 0x48, 0x09, 0xf9, //0x00001a26 orq %rdi, %rcx + 0x48, 0xc1, 0xe3, 0x10, //0x00001a29 shlq $16, %rbx + 0x48, 0xc1, 0xe6, 0x10, //0x00001a2d shlq $16, %rsi + 0x48, 0x09, 0xda, //0x00001a31 orq %rbx, %rdx + 0x0f, 0x85, 0x46, 0x09, 0x00, 0x00, //0x00001a34 jne LBB0_436 + 0x4d, 0x85, 0xc0, //0x00001a3a testq %r8, %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001a3d movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001a41 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001a45 movabsq $4294977024, %r14 + 0x0f, 0x85, 0x48, 0x09, 0x00, 0x00, //0x00001a4f jne LBB0_438 + 0x45, 0x31, 0xc0, //0x00001a55 xorl %r8d, %r8d + //0x00001a58 LBB0_158 + 0x66, 0x0f, 0x6f, 0xda, //0x00001a58 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001a5c pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001a60 pcmpgtb %xmm15, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00001a65 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00001a69 pmovmskb %xmm4, %edx + 0x48, 0x09, 0xd6, //0x00001a6d orq %rdx, %rsi + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001a70 movl $64, %edx + 0xbb, 0x40, 0x00, 0x00, 0x00, //0x00001a75 movl $64, %ebx + 0x48, 0x85, 0xc9, //0x00001a7a testq %rcx, %rcx + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001a7d je LBB0_160 + 0x48, 0x0f, 0xbc, 0xd9, //0x00001a83 bsfq %rcx, %rbx + //0x00001a87 LBB0_160 + 0x48, 0x85, 0xf6, //0x00001a87 testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001a8a je LBB0_162 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001a90 bsfq %rsi, %rdx + //0x00001a94 LBB0_162 + 0x48, 0x85, 0xc9, //0x00001a94 testq %rcx, %rcx + 0x0f, 0x84, 0xbe, 0x01, 0x00, 0x00, //0x00001a97 je LBB0_359 + 0x48, 0x39, 0xda, //0x00001a9d cmpq %rbx, %rdx + 0x0f, 0x82, 0x65, 0x1c, 0x00, 0x00, //0x00001aa0 jb LBB0_625 + 0x48, 0x03, 0x45, 0x90, //0x00001aa6 addq $-112(%rbp), %rax + 0x48, 0x01, 0xd8, //0x00001aaa addq %rbx, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00001aad movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001ab1 movq $-72(%rbp), %r10 + 0xe9, 0x83, 0xf5, 0xff, 0xff, //0x00001ab5 jmp LBB0_215 + //0x00001aba LBB0_355 + 0x49, 0x8d, 0x4c, 0x24, 0xff, //0x00001aba leaq $-1(%r12), %rcx + 0x49, 0x39, 0xcb, //0x00001abf cmpq %rcx, %r11 + 0x49, 0xf7, 0xd4, //0x00001ac2 notq %r12 + 0x4d, 0x0f, 0x45, 0xe1, //0x00001ac5 cmovneq %r9, %r12 + 0x84, 0xd2, //0x00001ac9 testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xe1, //0x00001acb cmoveq %r9, %r12 + 0x4d, 0x89, 0xe6, //0x00001acf movq %r12, %r14 + 0xe9, 0x8e, 0xfd, 0xff, 0xff, //0x00001ad2 jmp LBB0_341 + //0x00001ad7 LBB0_135 + 0x4c, 0x01, 0xe0, //0x00001ad7 addq %r12, %rax + //0x00001ada LBB0_136 + 0x49, 0x83, 0xf9, 0x20, //0x00001ada cmpq $32, %r9 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001ade movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001ae2 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001ae6 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001af0 movq $-72(%rbp), %r10 + 0x0f, 0x82, 0x65, 0x09, 0x00, 0x00, //0x00001af4 jb LBB0_443 + 0xf3, 0x0f, 0x6f, 0x18, //0x00001afa movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00001afe movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00001b03 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001b07 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00001b0b pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00001b0f movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001b13 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00001b17 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00001b1b pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001b1f pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00001b23 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001b27 pmovmskb %xmm4, %ebx + 0x48, 0xc1, 0xe1, 0x10, //0x00001b2b shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00001b2f orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x10, //0x00001b32 shlq $16, %rbx + 0x48, 0x09, 0xde, //0x00001b36 orq %rbx, %rsi + 0x0f, 0x85, 0xa9, 0x08, 0x00, 0x00, //0x00001b39 jne LBB0_439 + 0x4d, 0x85, 0xc0, //0x00001b3f testq %r8, %r8 + 0x0f, 0x85, 0xbd, 0x08, 0x00, 0x00, //0x00001b42 jne LBB0_441 + 0x45, 0x31, 0xc0, //0x00001b48 xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x00001b4b testq %rdx, %rdx + 0x0f, 0x84, 0x03, 0x09, 0x00, 0x00, //0x00001b4e je LBB0_442 + //0x00001b54 LBB0_140 + 0x48, 0x0f, 0xbc, 0xca, //0x00001b54 bsfq %rdx, %rcx + 0x48, 0x03, 0x45, 0x90, //0x00001b58 addq $-112(%rbp), %rax + 0x48, 0x01, 0xc8, //0x00001b5c addq %rcx, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00001b5f movq $-48(%rbp), %r8 + 0xe9, 0x41, 0xf5, 0xff, 0xff, //0x00001b63 jmp LBB0_225 + //0x00001b68 LBB0_183 + 0x4c, 0x01, 0xe0, //0x00001b68 addq %r12, %rax + 0x49, 0x83, 0xfe, 0x20, //0x00001b6b cmpq $32, %r14 + 0x0f, 0x82, 0xf4, 0x05, 0x00, 0x00, //0x00001b6f jb LBB0_414 + //0x00001b75 LBB0_184 + 0xf3, 0x0f, 0x6f, 0x20, //0x00001b75 movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00001b79 movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00001b7e movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001b82 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00001b86 pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00001b8a movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001b8e pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00001b92 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00001b96 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00001b9a pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xdd, //0x00001b9e pmovmskb %xmm5, %r11d + 0x66, 0x0f, 0x6f, 0xeb, //0x00001ba3 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00001ba7 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00001bab pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xea, //0x00001baf movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00001bb3 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00001bb7 pcmpgtb %xmm15, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00001bbc pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001bc0 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00001bc4 shlq $16, %rcx + 0x48, 0x09, 0xce, //0x00001bc8 orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x00001bcb shlq $16, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00001bcf shlq $16, %rdi + 0x49, 0x09, 0xd3, //0x00001bd3 orq %rdx, %r11 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001bd6 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x73, 0x09, 0x00, 0x00, //0x00001bda jne LBB0_455 + 0x4d, 0x85, 0xc9, //0x00001be0 testq %r9, %r9 + 0x0f, 0x85, 0x87, 0x09, 0x00, 0x00, //0x00001be3 jne LBB0_457 + 0x45, 0x31, 0xc9, //0x00001be9 xorl %r9d, %r9d + //0x00001bec LBB0_187 + 0x66, 0x0f, 0x6f, 0xda, //0x00001bec movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001bf0 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001bf4 pcmpgtb %xmm15, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00001bf9 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00001bfd pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00001c01 orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00001c04 movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001c09 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00001c0e testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001c11 je LBB0_189 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001c17 bsfq %rsi, %rdx + //0x00001c1b LBB0_189 + 0x48, 0x85, 0xff, //0x00001c1b testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001c1e je LBB0_191 + 0x48, 0x0f, 0xbc, 0xcf, //0x00001c24 bsfq %rdi, %rcx + //0x00001c28 LBB0_191 + 0x48, 0x85, 0xf6, //0x00001c28 testq %rsi, %rsi + 0x0f, 0x84, 0x03, 0x01, 0x00, 0x00, //0x00001c2b je LBB0_372 + 0x48, 0x39, 0xd1, //0x00001c31 cmpq %rdx, %rcx + 0x0f, 0x82, 0xf3, 0x1a, 0x00, 0x00, //0x00001c34 jb LBB0_627 + 0x48, 0x03, 0x45, 0x90, //0x00001c3a addq $-112(%rbp), %rax + 0x48, 0x01, 0xd0, //0x00001c3e addq %rdx, %rax + 0xe9, 0xba, 0x01, 0x00, 0x00, //0x00001c41 jmp LBB0_388 + //0x00001c46 LBB0_356 + 0x89, 0xd9, //0x00001c46 movl %ebx, %ecx + 0xe9, 0x9d, 0xfc, 0xff, 0xff, //0x00001c48 jmp LBB0_350 + //0x00001c4d LBB0_357 + 0x89, 0xf1, //0x00001c4d movl %esi, %ecx + 0xe9, 0x96, 0xfc, 0xff, 0xff, //0x00001c4f jmp LBB0_350 + //0x00001c54 LBB0_358 + 0x89, 0xd1, //0x00001c54 movl %edx, %ecx + 0xe9, 0x8f, 0xfc, 0xff, 0xff, //0x00001c56 jmp LBB0_350 + //0x00001c5b LBB0_359 + 0x48, 0x85, 0xf6, //0x00001c5b testq %rsi, %rsi + 0x0f, 0x85, 0xa7, 0x1a, 0x00, 0x00, //0x00001c5e jne LBB0_625 + 0x48, 0x83, 0xc0, 0x20, //0x00001c64 addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00001c68 addq $-32, %r10 + 0x4d, 0x85, 0xc0, //0x00001c6c testq %r8, %r8 + 0x0f, 0x85, 0x5c, 0x04, 0x00, 0x00, //0x00001c6f jne LBB0_409 + //0x00001c75 LBB0_361 + 0x48, 0x8b, 0x4d, 0xc8, //0x00001c75 movq $-56(%rbp), %rcx + 0x4c, 0x8b, 0x45, 0xd0, //0x00001c79 movq $-48(%rbp), %r8 + 0x4d, 0x85, 0xd2, //0x00001c7d testq %r10, %r10 + 0x0f, 0x84, 0xcf, 0x0d, 0x00, 0x00, //0x00001c80 je LBB0_515 + //0x00001c86 LBB0_362 + 0x0f, 0xb6, 0x10, //0x00001c86 movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00001c89 cmpb $34, %dl + 0x0f, 0x84, 0x95, 0x00, 0x00, 0x00, //0x00001c8c je LBB0_371 + 0x80, 0xfa, 0x5c, //0x00001c92 cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00001c95 je LBB0_366 + 0x80, 0xfa, 0x1f, //0x00001c9b cmpb $31, %dl + 0x0f, 0x86, 0x94, 0x1a, 0x00, 0x00, //0x00001c9e jbe LBB0_628 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001ca4 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001cab movl $1, %esi + 0x48, 0x01, 0xf0, //0x00001cb0 addq %rsi, %rax + 0x49, 0x01, 0xd2, //0x00001cb3 addq %rdx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00001cb6 jne LBB0_362 + 0xe9, 0x94, 0x0d, 0x00, 0x00, //0x00001cbc jmp LBB0_515 + //0x00001cc1 LBB0_366 + 0x49, 0x83, 0xfa, 0x01, //0x00001cc1 cmpq $1, %r10 + 0x0f, 0x84, 0x9d, 0x0b, 0x00, 0x00, //0x00001cc5 je LBB0_485 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00001ccb movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001cd2 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00001cd7 cmpq $-1, %rcx + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001cdb je LBB0_369 + 0x4c, 0x8b, 0x45, 0xd0, //0x00001ce1 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001ce5 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00001ce9 movq $-64(%rbp), %r12 + 0xe9, 0x16, 0x00, 0x00, 0x00, //0x00001ced jmp LBB0_370 + //0x00001cf2 LBB0_369 + 0x48, 0x89, 0xc1, //0x00001cf2 movq %rax, %rcx + 0x4c, 0x8b, 0x65, 0xc0, //0x00001cf5 movq $-64(%rbp), %r12 + 0x4c, 0x29, 0xe1, //0x00001cf9 subq %r12, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001cfc movq %rcx, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x00001d00 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001d04 movq $-80(%rbp), %rdi + //0x00001d08 LBB0_370 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001d08 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001d0c movabsq $4294977024, %r14 + 0x48, 0x01, 0xf0, //0x00001d16 addq %rsi, %rax + 0x49, 0x01, 0xd2, //0x00001d19 addq %rdx, %r10 + 0x0f, 0x85, 0x64, 0xff, 0xff, 0xff, //0x00001d1c jne LBB0_362 + 0xe9, 0x2e, 0x0d, 0x00, 0x00, //0x00001d22 jmp LBB0_515 + //0x00001d27 LBB0_371 + 0x48, 0x03, 0x45, 0x90, //0x00001d27 addq $-112(%rbp), %rax + 0x4c, 0x8b, 0x55, 0xb8, //0x00001d2b movq $-72(%rbp), %r10 + 0xe9, 0x09, 0xf3, 0xff, 0xff, //0x00001d2f jmp LBB0_215 + //0x00001d34 LBB0_372 + 0x48, 0x85, 0xff, //0x00001d34 testq %rdi, %rdi + 0x0f, 0x85, 0xf0, 0x19, 0x00, 0x00, //0x00001d37 jne LBB0_627 + 0x48, 0x83, 0xc0, 0x20, //0x00001d3d addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00001d41 addq $-32, %r14 + 0x4d, 0x85, 0xc9, //0x00001d45 testq %r9, %r9 + 0x0f, 0x85, 0x28, 0x04, 0x00, 0x00, //0x00001d48 jne LBB0_415 + //0x00001d4e LBB0_374 + 0x48, 0x8b, 0x55, 0xc8, //0x00001d4e movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xf6, //0x00001d52 testq %r14, %r14 + 0x0f, 0x84, 0x9f, 0x19, 0x00, 0x00, //0x00001d55 je LBB0_384 + //0x00001d5b LBB0_375 + 0x0f, 0xb6, 0x08, //0x00001d5b movzbl (%rax), %ecx + 0x80, 0xf9, 0x22, //0x00001d5e cmpb $34, %cl + 0x0f, 0x84, 0x95, 0x00, 0x00, 0x00, //0x00001d61 je LBB0_387 + 0x80, 0xf9, 0x5c, //0x00001d67 cmpb $92, %cl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00001d6a je LBB0_379 + 0x80, 0xf9, 0x1f, //0x00001d70 cmpb $31, %cl + 0x0f, 0x86, 0xdd, 0x19, 0x00, 0x00, //0x00001d73 jbe LBB0_629 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00001d79 movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00001d80 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00001d85 addq %rsi, %rax + 0x49, 0x01, 0xce, //0x00001d88 addq %rcx, %r14 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00001d8b jne LBB0_375 + 0xe9, 0x64, 0x19, 0x00, 0x00, //0x00001d91 jmp LBB0_384 + //0x00001d96 LBB0_379 + 0x48, 0x8b, 0x4d, 0x98, //0x00001d96 movq $-104(%rbp), %rcx + 0x49, 0x83, 0xfe, 0x01, //0x00001d9a cmpq $1, %r14 + 0x0f, 0x84, 0x0e, 0x1a, 0x00, 0x00, //0x00001d9e je LBB0_637 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00001da4 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00001dab movl $2, %esi + 0x48, 0x83, 0xfa, 0xff, //0x00001db0 cmpq $-1, %rdx + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x00001db4 je LBB0_382 + 0x4c, 0x8b, 0x45, 0xd0, //0x00001dba movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x00001dbe movq $-64(%rbp), %r12 + 0xe9, 0x12, 0x00, 0x00, 0x00, //0x00001dc2 jmp LBB0_383 + //0x00001dc7 LBB0_382 + 0x48, 0x89, 0xc2, //0x00001dc7 movq %rax, %rdx + 0x4c, 0x8b, 0x65, 0xc0, //0x00001dca movq $-64(%rbp), %r12 + 0x4c, 0x29, 0xe2, //0x00001dce subq %r12, %rdx + 0x48, 0x89, 0x55, 0xc8, //0x00001dd1 movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x00001dd5 movq $-48(%rbp), %r8 + //0x00001dd9 LBB0_383 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001dd9 movq $-72(%rbp), %r10 + 0x48, 0x01, 0xf0, //0x00001ddd addq %rsi, %rax + 0x49, 0x01, 0xce, //0x00001de0 addq %rcx, %r14 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x00001de3 jne LBB0_375 + 0xe9, 0x0c, 0x19, 0x00, 0x00, //0x00001de9 jmp LBB0_384 + //0x00001dee LBB0_385 + 0x0f, 0xbc, 0xca, //0x00001dee bsfl %edx, %ecx + //0x00001df1 LBB0_386 + 0x49, 0xf7, 0xd6, //0x00001df1 notq %r14 + 0x49, 0x29, 0xce, //0x00001df4 subq %rcx, %r14 + 0xe9, 0x69, 0xfa, 0xff, 0xff, //0x00001df7 jmp LBB0_341 + //0x00001dfc LBB0_387 + 0x48, 0x03, 0x45, 0x90, //0x00001dfc addq $-112(%rbp), %rax + //0x00001e00 LBB0_388 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001e00 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001e04 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e08 movabsq $4294977024, %r14 + 0xe9, 0x8e, 0xf2, 0xff, 0xff, //0x00001e12 jmp LBB0_224 + //0x00001e17 LBB0_389 + 0x48, 0x8b, 0x8d, 0x70, 0xff, 0xff, 0xff, //0x00001e17 movq $-144(%rbp), %rcx + 0x4c, 0x8d, 0x34, 0x01, //0x00001e1e leaq (%rcx,%rax), %r14 + 0x49, 0x29, 0xf6, //0x00001e22 subq %rsi, %r14 + 0x49, 0x29, 0xd6, //0x00001e25 subq %rdx, %r14 + 0xe9, 0x38, 0xfa, 0xff, 0xff, //0x00001e28 jmp LBB0_341 + //0x00001e2d LBB0_237 + 0x4c, 0x01, 0xe0, //0x00001e2d addq %r12, %rax + //0x00001e30 LBB0_238 + 0x49, 0x83, 0xf9, 0x20, //0x00001e30 cmpq $32, %r9 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001e34 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001e38 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e3c movabsq $4294977024, %r14 + 0x0f, 0x82, 0x95, 0x08, 0x00, 0x00, //0x00001e46 jb LBB0_466 + 0xf3, 0x0f, 0x6f, 0x18, //0x00001e4c movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00001e50 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00001e55 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001e59 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00001e5d pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00001e61 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001e65 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00001e69 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00001e6d pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001e71 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00001e75 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001e79 pmovmskb %xmm4, %ebx + 0x48, 0xc1, 0xe1, 0x10, //0x00001e7d shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00001e81 orq %rcx, %rdx + 0x48, 0xc1, 0xe3, 0x10, //0x00001e84 shlq $16, %rbx + 0x48, 0x09, 0xde, //0x00001e88 orq %rbx, %rsi + 0x0f, 0x85, 0xd9, 0x07, 0x00, 0x00, //0x00001e8b jne LBB0_462 + 0x4d, 0x85, 0xc0, //0x00001e91 testq %r8, %r8 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001e94 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0xe9, 0x07, 0x00, 0x00, //0x00001e98 jne LBB0_464 + 0x45, 0x31, 0xc0, //0x00001e9e xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x00001ea1 testq %rdx, %rdx + 0x0f, 0x84, 0x2f, 0x08, 0x00, 0x00, //0x00001ea4 je LBB0_465 + //0x00001eaa LBB0_242 + 0x48, 0x0f, 0xbc, 0xca, //0x00001eaa bsfq %rdx, %rcx + 0x48, 0x03, 0x45, 0x90, //0x00001eae addq $-112(%rbp), %rax + 0x48, 0x01, 0xc8, //0x00001eb2 addq %rcx, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00001eb5 movq $-48(%rbp), %r8 + 0xe9, 0x0d, 0xfa, 0xff, 0xff, //0x00001eb9 jmp LBB0_346 + //0x00001ebe LBB0_312 + 0x4c, 0x01, 0xe0, //0x00001ebe addq %r12, %rax + 0x49, 0x83, 0xfe, 0x20, //0x00001ec1 cmpq $32, %r14 + 0x0f, 0x82, 0x2c, 0x01, 0x00, 0x00, //0x00001ec5 jb LBB0_396 + //0x00001ecb LBB0_313 + 0xf3, 0x0f, 0x6f, 0x20, //0x00001ecb movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00001ecf movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00001ed4 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001ed8 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00001edc pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00001ee0 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001ee4 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00001ee8 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00001eec movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00001ef0 pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00001ef4 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xeb, //0x00001ef8 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00001efc pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001f00 pmovmskb %xmm5, %ebx + 0x66, 0x0f, 0x6f, 0xea, //0x00001f04 movdqa %xmm2, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00001f08 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xdf, //0x00001f0c pcmpgtb %xmm15, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00001f11 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001f15 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00001f19 shlq $16, %rcx + 0x48, 0x09, 0xce, //0x00001f1d orq %rcx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00001f20 shlq $16, %rbx + 0x48, 0xc1, 0xe7, 0x10, //0x00001f24 shlq $16, %rdi + 0x48, 0x09, 0xda, //0x00001f28 orq %rbx, %rdx + 0x0f, 0x85, 0x68, 0x08, 0x00, 0x00, //0x00001f2b jne LBB0_478 + 0x4d, 0x85, 0xc0, //0x00001f31 testq %r8, %r8 + 0x4c, 0x8b, 0x55, 0xb8, //0x00001f34 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x78, 0x08, 0x00, 0x00, //0x00001f38 jne LBB0_480 + 0x45, 0x31, 0xc0, //0x00001f3e xorl %r8d, %r8d + //0x00001f41 LBB0_316 + 0x66, 0x0f, 0x6f, 0xda, //0x00001f41 movdqa %xmm2, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001f45 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe7, //0x00001f49 pcmpgtb %xmm15, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00001f4e pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00001f52 pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00001f56 orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00001f59 movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001f5e movl $64, %edx + 0x48, 0x85, 0xf6, //0x00001f63 testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001f66 je LBB0_318 + 0x48, 0x0f, 0xbc, 0xd6, //0x00001f6c bsfq %rsi, %rdx + //0x00001f70 LBB0_318 + 0x48, 0x85, 0xff, //0x00001f70 testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00001f73 je LBB0_320 + 0x48, 0x0f, 0xbc, 0xcf, //0x00001f79 bsfq %rdi, %rcx + //0x00001f7d LBB0_320 + 0x48, 0x85, 0xf6, //0x00001f7d testq %rsi, %rsi + 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x00001f80 je LBB0_394 + 0x48, 0x39, 0xd1, //0x00001f86 cmpq %rdx, %rcx + 0x0f, 0x82, 0x00, 0x18, 0x00, 0x00, //0x00001f89 jb LBB0_633 + 0x48, 0x03, 0x45, 0x90, //0x00001f8f addq $-112(%rbp), %rax + 0x48, 0x01, 0xd0, //0x00001f93 addq %rdx, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00001f96 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00001f9a movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x00001f9e movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001fa2 movabsq $4294977024, %r14 + 0xe9, 0x1a, 0xf9, 0xff, 0xff, //0x00001fac jmp LBB0_346 + //0x00001fb1 LBB0_390 + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x00001fb1 movq $-1, %r12 + 0x4c, 0x89, 0xde, //0x00001fb8 movq %r11, %rsi + 0x4c, 0x89, 0xc7, //0x00001fbb movq %r8, %rdi + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001fbe movq $-1, %r14 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00001fc5 movq $-1, %r15 + 0xe9, 0xe3, 0xe8, 0xff, 0xff, //0x00001fcc jmp LBB0_112 + //0x00001fd1 LBB0_391 + 0x89, 0xd9, //0x00001fd1 movl %ebx, %ecx + 0xe9, 0x19, 0xfe, 0xff, 0xff, //0x00001fd3 jmp LBB0_386 + //0x00001fd8 LBB0_392 + 0x89, 0xf1, //0x00001fd8 movl %esi, %ecx + 0xe9, 0x12, 0xfe, 0xff, 0xff, //0x00001fda jmp LBB0_386 + //0x00001fdf LBB0_393 + 0x89, 0xd1, //0x00001fdf movl %edx, %ecx + 0xe9, 0x0b, 0xfe, 0xff, 0xff, //0x00001fe1 jmp LBB0_386 + //0x00001fe6 LBB0_394 + 0x48, 0x85, 0xff, //0x00001fe6 testq %rdi, %rdi + 0x0f, 0x85, 0xa8, 0x17, 0x00, 0x00, //0x00001fe9 jne LBB0_634 + 0x48, 0x83, 0xc0, 0x20, //0x00001fef addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00001ff3 addq $-32, %r14 + //0x00001ff7 LBB0_396 + 0x4d, 0x85, 0xc0, //0x00001ff7 testq %r8, %r8 + 0x0f, 0x85, 0x30, 0x08, 0x00, 0x00, //0x00001ffa jne LBB0_483 + 0x48, 0x8b, 0x55, 0xc8, //0x00002000 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xf6, //0x00002004 testq %r14, %r14 + 0x0f, 0x84, 0x5b, 0x08, 0x00, 0x00, //0x00002007 je LBB0_485 + //0x0000200d LBB0_398 + 0x0f, 0xb6, 0x08, //0x0000200d movzbl (%rax), %ecx + 0x80, 0xf9, 0x22, //0x00002010 cmpb $34, %cl + 0x0f, 0x84, 0x10, 0x01, 0x00, 0x00, //0x00002013 je LBB0_411 + 0x80, 0xf9, 0x5c, //0x00002019 cmpb $92, %cl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x0000201c je LBB0_403 + 0x80, 0xf9, 0x1f, //0x00002022 cmpb $31, %cl + 0x0f, 0x86, 0x7b, 0x17, 0x00, 0x00, //0x00002025 jbe LBB0_636 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000202b movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002032 movl $1, %esi + //0x00002037 LBB0_402 + 0x48, 0x01, 0xf0, //0x00002037 addq %rsi, %rax + 0x49, 0x01, 0xce, //0x0000203a addq %rcx, %r14 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x0000203d jne LBB0_398 + 0xe9, 0x20, 0x08, 0x00, 0x00, //0x00002043 jmp LBB0_485 + //0x00002048 LBB0_403 + 0x49, 0x83, 0xfe, 0x01, //0x00002048 cmpq $1, %r14 + 0x0f, 0x84, 0x16, 0x08, 0x00, 0x00, //0x0000204c je LBB0_485 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002052 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002059 movl $2, %esi + 0x48, 0x83, 0xfa, 0xff, //0x0000205e cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002062 jne LBB0_402 + 0x48, 0x89, 0xc2, //0x00002068 movq %rax, %rdx + 0x48, 0x2b, 0x55, 0xc0, //0x0000206b subq $-64(%rbp), %rdx + 0x48, 0x89, 0x55, 0xc8, //0x0000206f movq %rdx, $-56(%rbp) + 0xe9, 0xbf, 0xff, 0xff, 0xff, //0x00002073 jmp LBB0_402 + //0x00002078 LBB0_406 + 0x49, 0x8d, 0x04, 0x0c, //0x00002078 leaq (%r12,%rcx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000207c movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002084 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002087 cmpq $32, %r9 + 0x4c, 0x8b, 0x55, 0xb8, //0x0000208b movq $-72(%rbp), %r10 + 0x0f, 0x83, 0xc4, 0xf8, 0xff, 0xff, //0x0000208f jae LBB0_72 + 0xe9, 0xf2, 0x01, 0x00, 0x00, //0x00002095 jmp LBB0_424 + //0x0000209a LBB0_407 + 0x48, 0x8b, 0x45, 0xa0, //0x0000209a movq $-96(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x0000209e addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000020a1 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000020a9 xorl %r8d, %r8d + 0x49, 0x83, 0xfa, 0x20, //0x000020ac cmpq $32, %r10 + 0x0f, 0x83, 0x1e, 0xf9, 0xff, 0xff, //0x000020b0 jae LBB0_155 + //0x000020b6 LBB0_408 + 0x48, 0x8b, 0x7d, 0xb0, //0x000020b6 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x5d, 0xa8, //0x000020ba movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000020be movabsq $4294977024, %r14 + 0x4d, 0x85, 0xc0, //0x000020c8 testq %r8, %r8 + 0x0f, 0x84, 0xa4, 0xfb, 0xff, 0xff, //0x000020cb je LBB0_361 + //0x000020d1 LBB0_409 + 0x4d, 0x85, 0xd2, //0x000020d1 testq %r10, %r10 + 0x0f, 0x84, 0x8e, 0x07, 0x00, 0x00, //0x000020d4 je LBB0_485 + 0x48, 0x8b, 0x4d, 0x80, //0x000020da movq $-128(%rbp), %rcx + 0x48, 0x8d, 0x14, 0x08, //0x000020de leaq (%rax,%rcx), %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x000020e2 movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x000020e6 cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x000020ea movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xf2, //0x000020ed cmoveq %rdx, %rsi + 0x48, 0x0f, 0x44, 0xca, //0x000020f1 cmoveq %rdx, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x000020f5 addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x000020f9 addq $-1, %r10 + 0x48, 0x89, 0x75, 0xc8, //0x000020fd movq %rsi, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x00002101 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00002105 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002109 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000210d movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002111 movabsq $4294977024, %r14 + 0x4d, 0x85, 0xd2, //0x0000211b testq %r10, %r10 + 0x0f, 0x85, 0x62, 0xfb, 0xff, 0xff, //0x0000211e jne LBB0_362 + 0xe9, 0x2c, 0x09, 0x00, 0x00, //0x00002124 jmp LBB0_515 + //0x00002129 LBB0_411 + 0x48, 0x03, 0x45, 0x90, //0x00002129 addq $-112(%rbp), %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x0000212d movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00002131 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002135 movq $-64(%rbp), %r12 + 0xe9, 0x37, 0xf1, 0xff, 0xff, //0x00002139 jmp LBB0_248 + //0x0000213e LBB0_412 + 0x4c, 0x01, 0xe0, //0x0000213e addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002141 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002149 xorl %r8d, %r8d + 0xe9, 0x89, 0xf9, 0xff, 0xff, //0x0000214c jmp LBB0_136 + //0x00002151 LBB0_413 + 0x4c, 0x01, 0xe0, //0x00002151 addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002154 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc9, //0x0000215c xorl %r9d, %r9d + 0x49, 0x83, 0xfe, 0x20, //0x0000215f cmpq $32, %r14 + 0x0f, 0x83, 0x0c, 0xfa, 0xff, 0xff, //0x00002163 jae LBB0_184 + //0x00002169 LBB0_414 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002169 movq $-72(%rbp), %r10 + 0x4d, 0x85, 0xc9, //0x0000216d testq %r9, %r9 + 0x0f, 0x84, 0xd8, 0xfb, 0xff, 0xff, //0x00002170 je LBB0_374 + //0x00002176 LBB0_415 + 0x48, 0x8b, 0x4d, 0x98, //0x00002176 movq $-104(%rbp), %rcx + 0x4d, 0x85, 0xf6, //0x0000217a testq %r14, %r14 + 0x0f, 0x84, 0x2f, 0x16, 0x00, 0x00, //0x0000217d je LBB0_637 + 0x48, 0x8b, 0x4d, 0x80, //0x00002183 movq $-128(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x00002187 addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x0000218a movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000218e cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002192 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x00002195 cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x00002199 cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x0000219d addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x000021a1 addq $-1, %r14 + 0x48, 0x89, 0x75, 0xc8, //0x000021a5 movq %rsi, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x000021a9 movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x000021ad movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x000021b1 movq $-72(%rbp), %r10 + 0x4d, 0x85, 0xf6, //0x000021b5 testq %r14, %r14 + 0x0f, 0x85, 0x9d, 0xfb, 0xff, 0xff, //0x000021b8 jne LBB0_375 + 0xe9, 0x37, 0x15, 0x00, 0x00, //0x000021be jmp LBB0_384 + //0x000021c3 LBB0_417 + 0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000021c3 movq $-1, %r11 + 0x4c, 0x89, 0xd6, //0x000021ca movq %r10, %rsi + 0x4c, 0x89, 0xc7, //0x000021cd movq %r8, %rdi + 0x49, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, //0x000021d0 movq $-1, %r12 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000021d7 movq $-1, %r13 + 0xe9, 0x51, 0xf2, 0xff, 0xff, //0x000021de jmp LBB0_273 + //0x000021e3 LBB0_418 + 0x49, 0x8d, 0x04, 0x0c, //0x000021e3 leaq (%r12,%rcx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000021e7 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000021ef xorl %r8d, %r8d + 0xe9, 0x39, 0xfc, 0xff, 0xff, //0x000021f2 jmp LBB0_238 + //0x000021f7 LBB0_419 + 0x49, 0x8d, 0x04, 0x0c, //0x000021f7 leaq (%r12,%rcx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000021fb movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002203 xorl %r8d, %r8d + 0x49, 0x83, 0xfe, 0x20, //0x00002206 cmpq $32, %r14 + 0x0f, 0x83, 0xbb, 0xfc, 0xff, 0xff, //0x0000220a jae LBB0_313 + 0xe9, 0xe2, 0xfd, 0xff, 0xff, //0x00002210 jmp LBB0_396 + //0x00002215 LBB0_420 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002215 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000221a jne LBB0_422 + 0x48, 0x89, 0xc1, //0x00002220 movq %rax, %rcx + 0x48, 0x2b, 0x4d, 0xc0, //0x00002223 subq $-64(%rbp), %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00002227 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x0000222b addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x0000222e movq %rdi, $-56(%rbp) + //0x00002232 LBB0_422 + 0x44, 0x89, 0xc1, //0x00002232 movl %r8d, %ecx + 0xf7, 0xd1, //0x00002235 notl %ecx + 0x21, 0xf1, //0x00002237 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00002239 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x0000223d leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00002240 notl %ebx + 0x21, 0xf3, //0x00002242 andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002244 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x0000224a xorl %r8d, %r8d + 0x01, 0xcb, //0x0000224d addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x0000224f setb %r8b + 0x01, 0xdb, //0x00002253 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00002255 xorl $1431655765, %ebx + 0x21, 0xfb, //0x0000225b andl %edi, %ebx + 0xf7, 0xd3, //0x0000225d notl %ebx + 0x21, 0xda, //0x0000225f andl %ebx, %edx + 0x48, 0x8b, 0x7d, 0xb0, //0x00002261 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002265 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00002269 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000226d movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002277 movq $-72(%rbp), %r10 + 0x48, 0x85, 0xd2, //0x0000227b testq %rdx, %rdx + 0x0f, 0x85, 0x2f, 0xf7, 0xff, 0xff, //0x0000227e jne LBB0_75 + //0x00002284 LBB0_423 + 0x48, 0x83, 0xc0, 0x20, //0x00002284 addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00002288 addq $-32, %r9 + //0x0000228c LBB0_424 + 0x4d, 0x85, 0xc0, //0x0000228c testq %r8, %r8 + 0x0f, 0x85, 0x1e, 0x03, 0x00, 0x00, //0x0000228f jne LBB0_458 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002295 movq $-56(%rbp), %rcx + 0x4c, 0x8b, 0x45, 0xd0, //0x00002299 movq $-48(%rbp), %r8 + 0x4d, 0x85, 0xc9, //0x0000229d testq %r9, %r9 + 0x0f, 0x84, 0xa3, 0x00, 0x00, 0x00, //0x000022a0 je LBB0_435 + //0x000022a6 LBB0_426 + 0x31, 0xd2, //0x000022a6 xorl %edx, %edx + //0x000022a8 LBB0_427 + 0x0f, 0xb6, 0x1c, 0x10, //0x000022a8 movzbl (%rax,%rdx), %ebx + 0x80, 0xfb, 0x22, //0x000022ac cmpb $34, %bl + 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x000022af je LBB0_434 + 0x80, 0xfb, 0x5c, //0x000022b5 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000022b8 je LBB0_432 + 0x48, 0x83, 0xc2, 0x01, //0x000022be addq $1, %rdx + 0x49, 0x39, 0xd1, //0x000022c2 cmpq %rdx, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000022c5 jne LBB0_427 + 0xe9, 0x81, 0x00, 0x00, 0x00, //0x000022cb jmp LBB0_430 + //0x000022d0 LBB0_432 + 0x49, 0x8d, 0x71, 0xff, //0x000022d0 leaq $-1(%r9), %rsi + 0x48, 0x39, 0xd6, //0x000022d4 cmpq %rdx, %rsi + 0x0f, 0x84, 0x8b, 0x05, 0x00, 0x00, //0x000022d7 je LBB0_485 + 0x48, 0x8b, 0xb5, 0x78, 0xff, 0xff, 0xff, //0x000022dd movq $-136(%rbp), %rsi + 0x48, 0x01, 0xc6, //0x000022e4 addq %rax, %rsi + 0x48, 0x01, 0xd6, //0x000022e7 addq %rdx, %rsi + 0x48, 0x83, 0xf9, 0xff, //0x000022ea cmpq $-1, %rcx + 0x48, 0x8b, 0x7d, 0xc8, //0x000022ee movq $-56(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xfe, //0x000022f2 cmoveq %rsi, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x000022f6 movq %rdi, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xce, //0x000022fa cmoveq %rsi, %rcx + 0x48, 0x01, 0xd0, //0x000022fe addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00002301 addq $2, %rax + 0x4c, 0x89, 0xce, //0x00002305 movq %r9, %rsi + 0x48, 0x29, 0xd6, //0x00002308 subq %rdx, %rsi + 0x48, 0x83, 0xc6, 0xfe, //0x0000230b addq $-2, %rsi + 0x49, 0x83, 0xc1, 0xfe, //0x0000230f addq $-2, %r9 + 0x49, 0x39, 0xd1, //0x00002313 cmpq %rdx, %r9 + 0x49, 0x89, 0xf1, //0x00002316 movq %rsi, %r9 + 0x4c, 0x8b, 0x45, 0xd0, //0x00002319 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x0000231d movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002321 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00002325 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002329 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002333 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x69, 0xff, 0xff, 0xff, //0x00002337 jne LBB0_426 + 0xe9, 0x13, 0x07, 0x00, 0x00, //0x0000233d jmp LBB0_515 + //0x00002342 LBB0_434 + 0x48, 0x01, 0xd0, //0x00002342 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002345 addq $1, %rax + //0x00002349 LBB0_435 + 0x4c, 0x29, 0xe0, //0x00002349 subq %r12, %rax + 0xe9, 0xec, 0xec, 0xff, 0xff, //0x0000234c jmp LBB0_215 + //0x00002351 LBB0_430 + 0x80, 0xfb, 0x22, //0x00002351 cmpb $34, %bl + 0x0f, 0x85, 0x0e, 0x05, 0x00, 0x00, //0x00002354 jne LBB0_485 + 0x4c, 0x01, 0xc8, //0x0000235a addq %r9, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x0000235d movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00002361 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002365 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x00002369 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000236d movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002377 movq $-72(%rbp), %r10 + 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x0000237b jmp LBB0_435 + //0x00002380 LBB0_436 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002380 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002385 jne LBB0_438 + 0x48, 0x89, 0xc7, //0x0000238b movq %rax, %rdi + 0x48, 0x2b, 0x7d, 0xc0, //0x0000238e subq $-64(%rbp), %rdi + 0x48, 0x0f, 0xbc, 0xda, //0x00002392 bsfq %rdx, %rbx + 0x48, 0x01, 0xfb, //0x00002396 addq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00002399 movq %rbx, $-56(%rbp) + //0x0000239d LBB0_438 + 0x44, 0x89, 0xc7, //0x0000239d movl %r8d, %edi + 0xf7, 0xd7, //0x000023a0 notl %edi + 0x21, 0xd7, //0x000023a2 andl %edx, %edi + 0x45, 0x8d, 0x0c, 0x78, //0x000023a4 leal (%r8,%rdi,2), %r9d + 0x8d, 0x1c, 0x3f, //0x000023a8 leal (%rdi,%rdi), %ebx + 0xf7, 0xd3, //0x000023ab notl %ebx + 0x21, 0xd3, //0x000023ad andl %edx, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000023af andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x000023b5 xorl %r8d, %r8d + 0x01, 0xfb, //0x000023b8 addl %edi, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x000023ba setb %r8b + 0x01, 0xdb, //0x000023be addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000023c0 xorl $1431655765, %ebx + 0x44, 0x21, 0xcb, //0x000023c6 andl %r9d, %ebx + 0xf7, 0xd3, //0x000023c9 notl %ebx + 0x21, 0xd9, //0x000023cb andl %ebx, %ecx + 0x48, 0x8b, 0x7d, 0xb0, //0x000023cd movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x000023d1 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x000023d5 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000023d9 movabsq $4294977024, %r14 + 0xe9, 0x70, 0xf6, 0xff, 0xff, //0x000023e3 jmp LBB0_158 + //0x000023e8 LBB0_439 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000023e8 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x000023ed jne LBB0_441 + 0x48, 0x89, 0xc1, //0x000023f3 movq %rax, %rcx + 0x48, 0x2b, 0x4d, 0xc0, //0x000023f6 subq $-64(%rbp), %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x000023fa bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x000023fe addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00002401 movq %rdi, $-56(%rbp) + //0x00002405 LBB0_441 + 0x44, 0x89, 0xc1, //0x00002405 movl %r8d, %ecx + 0xf7, 0xd1, //0x00002408 notl %ecx + 0x21, 0xf1, //0x0000240a andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x0000240c leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00002410 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00002413 notl %ebx + 0x21, 0xf3, //0x00002415 andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002417 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x0000241d xorl %r8d, %r8d + 0x01, 0xcb, //0x00002420 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x00002422 setb %r8b + 0x01, 0xdb, //0x00002426 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00002428 xorl $1431655765, %ebx + 0x21, 0xfb, //0x0000242e andl %edi, %ebx + 0xf7, 0xd3, //0x00002430 notl %ebx + 0x21, 0xda, //0x00002432 andl %ebx, %edx + 0x48, 0x8b, 0x7d, 0xb0, //0x00002434 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002438 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000243c movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002440 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x0000244a movq $-72(%rbp), %r10 + 0x48, 0x85, 0xd2, //0x0000244e testq %rdx, %rdx + 0x0f, 0x85, 0xfd, 0xf6, 0xff, 0xff, //0x00002451 jne LBB0_140 + //0x00002457 LBB0_442 + 0x48, 0x83, 0xc0, 0x20, //0x00002457 addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x0000245b addq $-32, %r9 + //0x0000245f LBB0_443 + 0x4d, 0x85, 0xc0, //0x0000245f testq %r8, %r8 + 0x0f, 0x85, 0xa7, 0x01, 0x00, 0x00, //0x00002462 jne LBB0_460 + 0x48, 0x8b, 0x55, 0xc8, //0x00002468 movq $-56(%rbp), %rdx + 0x4c, 0x8b, 0x45, 0xd0, //0x0000246c movq $-48(%rbp), %r8 + 0x4d, 0x85, 0xc9, //0x00002470 testq %r9, %r9 + 0x0f, 0x84, 0xa3, 0x00, 0x00, 0x00, //0x00002473 je LBB0_454 + //0x00002479 LBB0_445 + 0x31, 0xf6, //0x00002479 xorl %esi, %esi + //0x0000247b LBB0_446 + 0x0f, 0xb6, 0x0c, 0x30, //0x0000247b movzbl (%rax,%rsi), %ecx + 0x80, 0xf9, 0x22, //0x0000247f cmpb $34, %cl + 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x00002482 je LBB0_453 + 0x80, 0xf9, 0x5c, //0x00002488 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x0000248b je LBB0_451 + 0x48, 0x83, 0xc6, 0x01, //0x00002491 addq $1, %rsi + 0x49, 0x39, 0xf1, //0x00002495 cmpq %rsi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002498 jne LBB0_446 + 0xe9, 0x81, 0x00, 0x00, 0x00, //0x0000249e jmp LBB0_449 + //0x000024a3 LBB0_451 + 0x49, 0x8d, 0x49, 0xff, //0x000024a3 leaq $-1(%r9), %rcx + 0x48, 0x39, 0xf1, //0x000024a7 cmpq %rsi, %rcx + 0x0f, 0x84, 0x9d, 0x12, 0x00, 0x00, //0x000024aa je LBB0_639 + 0x48, 0x8b, 0x8d, 0x78, 0xff, 0xff, 0xff, //0x000024b0 movq $-136(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x000024b7 addq %rax, %rcx + 0x48, 0x01, 0xf1, //0x000024ba addq %rsi, %rcx + 0x48, 0x83, 0xfa, 0xff, //0x000024bd cmpq $-1, %rdx + 0x48, 0x8b, 0x7d, 0xc8, //0x000024c1 movq $-56(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xf9, //0x000024c5 cmoveq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x000024c9 movq %rdi, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xd1, //0x000024cd cmoveq %rcx, %rdx + 0x48, 0x01, 0xf0, //0x000024d1 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x000024d4 addq $2, %rax + 0x4c, 0x89, 0xc9, //0x000024d8 movq %r9, %rcx + 0x48, 0x29, 0xf1, //0x000024db subq %rsi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x000024de addq $-2, %rcx + 0x49, 0x83, 0xc1, 0xfe, //0x000024e2 addq $-2, %r9 + 0x49, 0x39, 0xf1, //0x000024e6 cmpq %rsi, %r9 + 0x49, 0x89, 0xc9, //0x000024e9 movq %rcx, %r9 + 0x4c, 0x8b, 0x45, 0xd0, //0x000024ec movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x000024f0 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x000024f4 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x000024f8 movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000024fc movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002506 movq $-72(%rbp), %r10 + 0x0f, 0x85, 0x69, 0xff, 0xff, 0xff, //0x0000250a jne LBB0_445 + 0xe9, 0x98, 0x0f, 0x00, 0x00, //0x00002510 jmp LBB0_588 + //0x00002515 LBB0_453 + 0x48, 0x01, 0xf0, //0x00002515 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002518 addq $1, %rax + //0x0000251c LBB0_454 + 0x4c, 0x29, 0xe0, //0x0000251c subq %r12, %rax + 0xe9, 0x85, 0xeb, 0xff, 0xff, //0x0000251f jmp LBB0_225 + //0x00002524 LBB0_449 + 0x80, 0xf9, 0x22, //0x00002524 cmpb $34, %cl + 0x0f, 0x85, 0x20, 0x12, 0x00, 0x00, //0x00002527 jne LBB0_639 + 0x4c, 0x01, 0xc8, //0x0000252d addq %r9, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x00002530 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00002534 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002538 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000253c movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002540 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x0000254a movq $-72(%rbp), %r10 + 0xe9, 0xc9, 0xff, 0xff, 0xff, //0x0000254e jmp LBB0_454 + //0x00002553 LBB0_455 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002553 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002558 jne LBB0_457 + 0x49, 0x89, 0xc0, //0x0000255e movq %rax, %r8 + 0x4c, 0x2b, 0x45, 0xc0, //0x00002561 subq $-64(%rbp), %r8 + 0x49, 0x0f, 0xbc, 0xdb, //0x00002565 bsfq %r11, %rbx + 0x4c, 0x01, 0xc3, //0x00002569 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x0000256c movq %rbx, $-56(%rbp) + //0x00002570 LBB0_457 + 0x44, 0x89, 0xc9, //0x00002570 movl %r9d, %ecx + 0xf7, 0xd1, //0x00002573 notl %ecx + 0x44, 0x21, 0xd9, //0x00002575 andl %r11d, %ecx + 0x45, 0x8d, 0x04, 0x49, //0x00002578 leal (%r9,%rcx,2), %r8d + 0x8d, 0x14, 0x09, //0x0000257c leal (%rcx,%rcx), %edx + 0xf7, 0xd2, //0x0000257f notl %edx + 0x44, 0x21, 0xda, //0x00002581 andl %r11d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002584 andl $-1431655766, %edx + 0x45, 0x31, 0xc9, //0x0000258a xorl %r9d, %r9d + 0x01, 0xca, //0x0000258d addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc1, //0x0000258f setb %r9b + 0x01, 0xd2, //0x00002593 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00002595 xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x0000259b andl %r8d, %edx + 0xf7, 0xd2, //0x0000259e notl %edx + 0x21, 0xd6, //0x000025a0 andl %edx, %esi + 0x4c, 0x8b, 0x45, 0xd0, //0x000025a2 movq $-48(%rbp), %r8 + 0x4c, 0x8b, 0x65, 0xc0, //0x000025a6 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x000025aa movq $-72(%rbp), %r10 + 0xe9, 0x39, 0xf6, 0xff, 0xff, //0x000025ae jmp LBB0_187 + //0x000025b3 LBB0_458 + 0x4d, 0x85, 0xc9, //0x000025b3 testq %r9, %r9 + 0x0f, 0x84, 0xac, 0x02, 0x00, 0x00, //0x000025b6 je LBB0_485 + 0x48, 0x8b, 0x4d, 0x80, //0x000025bc movq $-128(%rbp), %rcx + 0x48, 0x8d, 0x14, 0x08, //0x000025c0 leaq (%rax,%rcx), %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x000025c4 movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x000025c8 cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x000025cc movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xf2, //0x000025cf cmoveq %rdx, %rsi + 0x48, 0x0f, 0x44, 0xca, //0x000025d3 cmoveq %rdx, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x000025d7 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x000025db addq $-1, %r9 + 0x48, 0x89, 0x75, 0xc8, //0x000025df movq %rsi, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x000025e3 movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x000025e7 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x000025eb movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x000025ef movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000025f3 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x000025fd movq $-72(%rbp), %r10 + 0x4d, 0x85, 0xc9, //0x00002601 testq %r9, %r9 + 0x0f, 0x85, 0x9c, 0xfc, 0xff, 0xff, //0x00002604 jne LBB0_426 + 0xe9, 0x3a, 0xfd, 0xff, 0xff, //0x0000260a jmp LBB0_435 + //0x0000260f LBB0_460 + 0x4d, 0x85, 0xc9, //0x0000260f testq %r9, %r9 + 0x0f, 0x84, 0x35, 0x11, 0x00, 0x00, //0x00002612 je LBB0_639 + 0x48, 0x8b, 0x4d, 0x80, //0x00002618 movq $-128(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x0000261c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x0000261f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002623 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002627 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x0000262a cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x0000262e cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00002632 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00002636 addq $-1, %r9 + 0x48, 0x89, 0x75, 0xc8, //0x0000263a movq %rsi, $-56(%rbp) + 0x4c, 0x8b, 0x45, 0xd0, //0x0000263e movq $-48(%rbp), %r8 + 0x48, 0x8b, 0x7d, 0xb0, //0x00002642 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x00002646 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x0000264a movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000264e movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x00002658 movq $-72(%rbp), %r10 + 0x4d, 0x85, 0xc9, //0x0000265c testq %r9, %r9 + 0x0f, 0x85, 0x14, 0xfe, 0xff, 0xff, //0x0000265f jne LBB0_445 + 0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00002665 jmp LBB0_454 + //0x0000266a LBB0_462 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000266a cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000266f jne LBB0_464 + 0x48, 0x89, 0xc1, //0x00002675 movq %rax, %rcx + 0x48, 0x2b, 0x4d, 0xc0, //0x00002678 subq $-64(%rbp), %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x0000267c bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00002680 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00002683 movq %rdi, $-56(%rbp) + //0x00002687 LBB0_464 + 0x44, 0x89, 0xc1, //0x00002687 movl %r8d, %ecx + 0xf7, 0xd1, //0x0000268a notl %ecx + 0x21, 0xf1, //0x0000268c andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x0000268e leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00002692 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00002695 notl %ebx + 0x21, 0xf3, //0x00002697 andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002699 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x0000269f xorl %r8d, %r8d + 0x01, 0xcb, //0x000026a2 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x000026a4 setb %r8b + 0x01, 0xdb, //0x000026a8 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000026aa xorl $1431655765, %ebx + 0x21, 0xfb, //0x000026b0 andl %edi, %ebx + 0xf7, 0xd3, //0x000026b2 notl %ebx + 0x21, 0xda, //0x000026b4 andl %ebx, %edx + 0x48, 0x8b, 0x7d, 0xb0, //0x000026b6 movq $-80(%rbp), %rdi + 0x4c, 0x8b, 0x65, 0xc0, //0x000026ba movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x5d, 0xa8, //0x000026be movq $-88(%rbp), %r11 + 0x49, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026c2 movabsq $4294977024, %r14 + 0x4c, 0x8b, 0x55, 0xb8, //0x000026cc movq $-72(%rbp), %r10 + 0x48, 0x85, 0xd2, //0x000026d0 testq %rdx, %rdx + 0x0f, 0x85, 0xd1, 0xf7, 0xff, 0xff, //0x000026d3 jne LBB0_242 + //0x000026d9 LBB0_465 + 0x48, 0x83, 0xc0, 0x20, //0x000026d9 addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x000026dd addq $-32, %r9 + //0x000026e1 LBB0_466 + 0x4d, 0x85, 0xc0, //0x000026e1 testq %r8, %r8 + 0x0f, 0x85, 0x09, 0x01, 0x00, 0x00, //0x000026e4 jne LBB0_481 + 0x48, 0x8b, 0x55, 0xc8, //0x000026ea movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xc9, //0x000026ee testq %r9, %r9 + 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, //0x000026f1 je LBB0_477 + //0x000026f7 LBB0_468 + 0x31, 0xf6, //0x000026f7 xorl %esi, %esi + //0x000026f9 LBB0_469 + 0x0f, 0xb6, 0x0c, 0x30, //0x000026f9 movzbl (%rax,%rsi), %ecx + 0x80, 0xf9, 0x22, //0x000026fd cmpb $34, %cl + 0x0f, 0x84, 0x6f, 0x00, 0x00, 0x00, //0x00002700 je LBB0_476 + 0x80, 0xf9, 0x5c, //0x00002706 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00002709 je LBB0_474 + 0x48, 0x83, 0xc6, 0x01, //0x0000270f addq $1, %rsi + 0x49, 0x39, 0xf1, //0x00002713 cmpq %rsi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00002716 jne LBB0_469 + 0xe9, 0x67, 0x00, 0x00, 0x00, //0x0000271c jmp LBB0_472 + //0x00002721 LBB0_474 + 0x49, 0x8d, 0x49, 0xff, //0x00002721 leaq $-1(%r9), %rcx + 0x48, 0x39, 0xf1, //0x00002725 cmpq %rsi, %rcx + 0x0f, 0x84, 0x3a, 0x01, 0x00, 0x00, //0x00002728 je LBB0_485 + 0x48, 0x8b, 0x8d, 0x78, 0xff, 0xff, 0xff, //0x0000272e movq $-136(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x00002735 addq %rax, %rcx + 0x48, 0x01, 0xf1, //0x00002738 addq %rsi, %rcx + 0x48, 0x83, 0xfa, 0xff, //0x0000273b cmpq $-1, %rdx + 0x48, 0x8b, 0x7d, 0xc8, //0x0000273f movq $-56(%rbp), %rdi + 0x48, 0x0f, 0x44, 0xf9, //0x00002743 cmoveq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00002747 movq %rdi, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xd1, //0x0000274b cmoveq %rcx, %rdx + 0x48, 0x01, 0xf0, //0x0000274f addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00002752 addq $2, %rax + 0x4c, 0x89, 0xc9, //0x00002756 movq %r9, %rcx + 0x48, 0x29, 0xf1, //0x00002759 subq %rsi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x0000275c addq $-2, %rcx + 0x49, 0x83, 0xc1, 0xfe, //0x00002760 addq $-2, %r9 + 0x49, 0x39, 0xf1, //0x00002764 cmpq %rsi, %r9 + 0x49, 0x89, 0xc9, //0x00002767 movq %rcx, %r9 + 0x0f, 0x85, 0x87, 0xff, 0xff, 0xff, //0x0000276a jne LBB0_468 + 0xe9, 0xf3, 0x00, 0x00, 0x00, //0x00002770 jmp LBB0_485 + //0x00002775 LBB0_476 + 0x48, 0x01, 0xf0, //0x00002775 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002778 addq $1, %rax + //0x0000277c LBB0_477 + 0x4c, 0x8b, 0x65, 0xc0, //0x0000277c movq $-64(%rbp), %r12 + 0x4c, 0x29, 0xe0, //0x00002780 subq %r12, %rax + 0xe9, 0xe5, 0xea, 0xff, 0xff, //0x00002783 jmp LBB0_247 + //0x00002788 LBB0_472 + 0x80, 0xf9, 0x22, //0x00002788 cmpb $34, %cl + 0x0f, 0x85, 0xd7, 0x00, 0x00, 0x00, //0x0000278b jne LBB0_485 + 0x4c, 0x01, 0xc8, //0x00002791 addq %r9, %rax + 0xe9, 0xe3, 0xff, 0xff, 0xff, //0x00002794 jmp LBB0_477 + //0x00002799 LBB0_478 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002799 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x0000279e jne LBB0_480 + 0x48, 0x89, 0xc1, //0x000027a4 movq %rax, %rcx + 0x48, 0x2b, 0x4d, 0xc0, //0x000027a7 subq $-64(%rbp), %rcx + 0x48, 0x0f, 0xbc, 0xda, //0x000027ab bsfq %rdx, %rbx + 0x48, 0x01, 0xcb, //0x000027af addq %rcx, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000027b2 movq %rbx, $-56(%rbp) + //0x000027b6 LBB0_480 + 0x44, 0x89, 0xc1, //0x000027b6 movl %r8d, %ecx + 0xf7, 0xd1, //0x000027b9 notl %ecx + 0x21, 0xd1, //0x000027bb andl %edx, %ecx + 0x45, 0x8d, 0x0c, 0x48, //0x000027bd leal (%r8,%rcx,2), %r9d + 0x8d, 0x1c, 0x09, //0x000027c1 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x000027c4 notl %ebx + 0x21, 0xd3, //0x000027c6 andl %edx, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000027c8 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x000027ce xorl %r8d, %r8d + 0x01, 0xcb, //0x000027d1 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x000027d3 setb %r8b + 0x01, 0xdb, //0x000027d7 addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000027d9 xorl $1431655765, %ebx + 0x44, 0x21, 0xcb, //0x000027df andl %r9d, %ebx + 0xf7, 0xd3, //0x000027e2 notl %ebx + 0x21, 0xde, //0x000027e4 andl %ebx, %esi + 0x4c, 0x8b, 0x65, 0xc0, //0x000027e6 movq $-64(%rbp), %r12 + 0x4c, 0x8b, 0x55, 0xb8, //0x000027ea movq $-72(%rbp), %r10 + 0xe9, 0x4e, 0xf7, 0xff, 0xff, //0x000027ee jmp LBB0_316 + //0x000027f3 LBB0_481 + 0x4d, 0x85, 0xc9, //0x000027f3 testq %r9, %r9 + 0x0f, 0x84, 0x6c, 0x00, 0x00, 0x00, //0x000027f6 je LBB0_485 + 0x48, 0x8b, 0x4d, 0x80, //0x000027fc movq $-128(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x00002800 addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x00002803 movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002807 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x0000280b movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x0000280e cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x00002812 cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00002816 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x0000281a addq $-1, %r9 + 0x48, 0x89, 0x75, 0xc8, //0x0000281e movq %rsi, $-56(%rbp) + 0x4d, 0x85, 0xc9, //0x00002822 testq %r9, %r9 + 0x0f, 0x85, 0xcc, 0xfe, 0xff, 0xff, //0x00002825 jne LBB0_468 + 0xe9, 0x4c, 0xff, 0xff, 0xff, //0x0000282b jmp LBB0_477 + //0x00002830 LBB0_483 + 0x4d, 0x85, 0xf6, //0x00002830 testq %r14, %r14 + 0x0f, 0x84, 0x2f, 0x00, 0x00, 0x00, //0x00002833 je LBB0_485 + 0x48, 0x8b, 0x4d, 0x80, //0x00002839 movq $-128(%rbp), %rcx + 0x48, 0x01, 0xc1, //0x0000283d addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x00002840 movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002844 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002848 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xf1, //0x0000284b cmoveq %rcx, %rsi + 0x48, 0x0f, 0x44, 0xd1, //0x0000284f cmoveq %rcx, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x00002853 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00002857 addq $-1, %r14 + 0x48, 0x89, 0x75, 0xc8, //0x0000285b movq %rsi, $-56(%rbp) + 0x4d, 0x85, 0xf6, //0x0000285f testq %r14, %r14 + 0x0f, 0x85, 0xa5, 0xf7, 0xff, 0xff, //0x00002862 jne LBB0_398 + //0x00002868 LBB0_485 + 0x4c, 0x8b, 0x45, 0xd0, //0x00002868 movq $-48(%rbp), %r8 + 0xe9, 0xe4, 0x01, 0x00, 0x00, //0x0000286c jmp LBB0_515 + //0x00002871 LBB0_486 + 0x49, 0x89, 0x18, //0x00002871 movq %rbx, (%r8) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002874 movq $-1, %rax + 0xe9, 0x3a, 0x0c, 0x00, 0x00, //0x0000287b jmp LBB0_586 + //0x00002880 LBB0_487 + 0x49, 0x89, 0x30, //0x00002880 movq %rsi, (%r8) + //0x00002883 LBB0_488 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002883 movq $-1, %rax + 0xe9, 0x2b, 0x0c, 0x00, 0x00, //0x0000288a jmp LBB0_586 + //0x0000288f LBB0_489 + 0x4c, 0x01, 0xcb, //0x0000288f addq %r9, %rbx + 0x48, 0x89, 0xd8, //0x00002892 movq %rbx, %rax + //0x00002895 LBB0_490 + 0x4c, 0x29, 0xc8, //0x00002895 subq %r9, %rax + 0x48, 0x89, 0xc3, //0x00002898 movq %rax, %rbx + //0x0000289b LBB0_491 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000289b movq $-1, %rax + 0x49, 0x89, 0xdc, //0x000028a2 movq %rbx, %r12 + 0x48, 0x39, 0xf3, //0x000028a5 cmpq %rsi, %rbx + 0x0f, 0x83, 0x0c, 0x0c, 0x00, 0x00, //0x000028a8 jae LBB0_586 + //0x000028ae LBB0_492 + 0x49, 0x8d, 0x5c, 0x24, 0x01, //0x000028ae leaq $1(%r12), %rbx + 0x49, 0x89, 0x18, //0x000028b3 movq %rbx, (%r8) + 0x43, 0x0f, 0xbe, 0x0c, 0x21, //0x000028b6 movsbl (%r9,%r12), %ecx + 0x83, 0xf9, 0x7b, //0x000028bb cmpl $123, %ecx + 0x0f, 0x87, 0xa1, 0x01, 0x00, 0x00, //0x000028be ja LBB0_517 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000028c4 movq $-1, %rax + 0x48, 0x8d, 0x15, 0xee, 0x0e, 0x00, 0x00, //0x000028cb leaq $3822(%rip), %rdx /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000028d2 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000028d6 addq %rdx, %rcx + 0xff, 0xe1, //0x000028d9 jmpq *%rcx + //0x000028db LBB0_494 + 0x48, 0x8b, 0x47, 0x08, //0x000028db movq $8(%rdi), %rax + 0x48, 0x29, 0xd8, //0x000028df subq %rbx, %rax + 0x48, 0x83, 0xf8, 0x10, //0x000028e2 cmpq $16, %rax + 0x0f, 0x82, 0xfd, 0x0d, 0x00, 0x00, //0x000028e6 jb LBB0_621 + 0x31, 0xf6, //0x000028ec xorl %esi, %esi + 0xf3, 0x0f, 0x6f, 0x05, 0x0a, 0xd7, 0xff, 0xff, //0x000028ee movdqu $-10486(%rip), %xmm0 /* LCPI0_0+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x12, 0xd7, 0xff, 0xff, //0x000028f6 movdqu $-10478(%rip), %xmm1 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0x1a, 0xd7, 0xff, 0xff, //0x000028fe movdqu $-10470(%rip), %xmm2 /* LCPI0_2+0(%rip) */ + 0x4c, 0x89, 0xca, //0x00002906 movq %r9, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002909 .p2align 4, 0x90 + //0x00002910 LBB0_496 + 0xf3, 0x42, 0x0f, 0x6f, 0x5c, 0x22, 0x01, //0x00002910 movdqu $1(%rdx,%r12), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00002917 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x0000291b pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xdb, 0xd9, //0x0000291f pand %xmm1, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00002923 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00002927 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000292b pmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x0000292f testl %ecx, %ecx + 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, //0x00002931 jne LBB0_507 + 0x48, 0x83, 0xc2, 0x10, //0x00002937 addq $16, %rdx + 0x48, 0x8d, 0x0c, 0x30, //0x0000293b leaq (%rax,%rsi), %rcx + 0x48, 0x83, 0xc1, 0xf0, //0x0000293f addq $-16, %rcx + 0x48, 0x83, 0xc6, 0xf0, //0x00002943 addq $-16, %rsi + 0x48, 0x83, 0xf9, 0x0f, //0x00002947 cmpq $15, %rcx + 0x0f, 0x87, 0xbf, 0xff, 0xff, 0xff, //0x0000294b ja LBB0_496 + 0x4a, 0x8d, 0x1c, 0x22, //0x00002951 leaq (%rdx,%r12), %rbx + 0x48, 0x83, 0xc3, 0x01, //0x00002955 addq $1, %rbx + 0x48, 0x01, 0xf0, //0x00002959 addq %rsi, %rax + 0x48, 0x85, 0xc0, //0x0000295c testq %rax, %rax + 0x0f, 0x84, 0x48, 0x00, 0x00, 0x00, //0x0000295f je LBB0_506 + //0x00002965 LBB0_499 + 0x48, 0x8d, 0x14, 0x03, //0x00002965 leaq (%rbx,%rax), %rdx + 0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00002969 movabsq $17596481021440, %rsi + //0x00002973 LBB0_500 + 0x0f, 0xb6, 0x0b, //0x00002973 movzbl (%rbx), %ecx + 0x48, 0x83, 0xf9, 0x2c, //0x00002976 cmpq $44, %rcx + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x0000297a ja LBB0_502 + 0x48, 0x0f, 0xa3, 0xce, //0x00002980 btq %rcx, %rsi + 0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00002984 jb LBB0_506 + //0x0000298a LBB0_502 + 0x80, 0xf9, 0x5d, //0x0000298a cmpb $93, %cl + 0x0f, 0x84, 0x1a, 0x00, 0x00, 0x00, //0x0000298d je LBB0_506 + 0x80, 0xf9, 0x7d, //0x00002993 cmpb $125, %cl + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00002996 je LBB0_506 + 0x48, 0x83, 0xc3, 0x01, //0x0000299c addq $1, %rbx + 0x48, 0x83, 0xc0, 0xff, //0x000029a0 addq $-1, %rax + 0x0f, 0x85, 0xc9, 0xff, 0xff, 0xff, //0x000029a4 jne LBB0_500 + 0x48, 0x89, 0xd3, //0x000029aa movq %rdx, %rbx + //0x000029ad LBB0_506 + 0x4c, 0x29, 0xcb, //0x000029ad subq %r9, %rbx + 0x49, 0x89, 0x18, //0x000029b0 movq %rbx, (%r8) + 0x4c, 0x89, 0xe0, //0x000029b3 movq %r12, %rax + 0xe9, 0xff, 0x0a, 0x00, 0x00, //0x000029b6 jmp LBB0_586 + //0x000029bb LBB0_507 + 0x66, 0x0f, 0xbc, 0xc1, //0x000029bb bsfw %cx, %ax + 0x0f, 0xb7, 0xc8, //0x000029bf movzwl %ax, %ecx + 0x4c, 0x01, 0xe1, //0x000029c2 addq %r12, %rcx + 0x48, 0x89, 0xc8, //0x000029c5 movq %rcx, %rax + 0x48, 0x29, 0xf0, //0x000029c8 subq %rsi, %rax + 0x48, 0x8d, 0x70, 0x01, //0x000029cb leaq $1(%rax), %rsi + 0x49, 0x89, 0x30, //0x000029cf movq %rsi, (%r8) + 0x48, 0x85, 0xf6, //0x000029d2 testq %rsi, %rsi + 0x0f, 0x8e, 0x45, 0x00, 0x00, 0x00, //0x000029d5 jle LBB0_512 + 0x48, 0x8d, 0x70, 0x02, //0x000029db leaq $2(%rax), %rsi + 0x48, 0x01, 0xca, //0x000029df addq %rcx, %rdx + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029e2 movabsq $4294977024, %rdi + 0x90, 0x90, 0x90, 0x90, //0x000029ec .p2align 4, 0x90 + //0x000029f0 LBB0_509 + 0x0f, 0xb6, 0x0a, //0x000029f0 movzbl (%rdx), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x000029f3 cmpq $32, %rcx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x000029f7 ja LBB0_512 + 0x48, 0x0f, 0xa3, 0xcf, //0x000029fd btq %rcx, %rdi + 0x0f, 0x83, 0x19, 0x00, 0x00, 0x00, //0x00002a01 jae LBB0_512 + 0x49, 0x89, 0x00, //0x00002a07 movq %rax, (%r8) + 0x48, 0x83, 0xc6, 0xff, //0x00002a0a addq $-1, %rsi + 0x48, 0x83, 0xc0, 0xff, //0x00002a0e addq $-1, %rax + 0x48, 0x83, 0xc2, 0xff, //0x00002a12 addq $-1, %rdx + 0x48, 0x83, 0xfe, 0x01, //0x00002a16 cmpq $1, %rsi + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00002a1a jg LBB0_509 + //0x00002a20 LBB0_512 + 0x4c, 0x89, 0xe0, //0x00002a20 movq %r12, %rax + 0xe9, 0x92, 0x0a, 0x00, 0x00, //0x00002a23 jmp LBB0_586 + //0x00002a28 LBB0_513 + 0x49, 0x8d, 0x4c, 0x24, 0x04, //0x00002a28 leaq $4(%r12), %rcx + 0xe9, 0x96, 0x05, 0x00, 0x00, //0x00002a2d jmp LBB0_554 + //0x00002a32 LBB0_602 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00002a32 movq $-7, %rax + 0xe9, 0x7c, 0x0a, 0x00, 0x00, //0x00002a39 jmp LBB0_586 + //0x00002a3e LBB0_217 + 0x48, 0x83, 0xc0, 0xff, //0x00002a3e addq $-1, %rax + 0xe9, 0x73, 0x0a, 0x00, 0x00, //0x00002a42 jmp LBB0_586 + //0x00002a47 LBB0_514 + 0x48, 0x83, 0xf8, 0xff, //0x00002a47 cmpq $-1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x00002a4b movq $-56(%rbp), %rdx + 0x0f, 0x85, 0x62, 0x0a, 0x00, 0x00, //0x00002a4f jne LBB0_516 + //0x00002a55 LBB0_515 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002a55 movq $-1, %rax + 0x48, 0x8b, 0x55, 0x98, //0x00002a5c movq $-104(%rbp), %rdx + 0xe9, 0x52, 0x0a, 0x00, 0x00, //0x00002a60 jmp LBB0_516 + //0x00002a65 LBB0_517 + 0x4d, 0x89, 0x20, //0x00002a65 movq %r12, (%r8) + 0xe9, 0x26, 0x0a, 0x00, 0x00, //0x00002a68 jmp LBB0_585 + //0x00002a6d LBB0_518 + 0x4c, 0x8b, 0x47, 0x08, //0x00002a6d movq $8(%rdi), %r8 + 0x4d, 0x89, 0xc6, //0x00002a71 movq %r8, %r14 + 0x49, 0x29, 0xde, //0x00002a74 subq %rbx, %r14 + 0x49, 0x83, 0xfe, 0x20, //0x00002a77 cmpq $32, %r14 + 0x0f, 0x8c, 0x82, 0x0c, 0x00, 0x00, //0x00002a7b jl LBB0_624 + 0x4f, 0x8d, 0x14, 0x21, //0x00002a81 leaq (%r9,%r12), %r10 + 0x4d, 0x29, 0xe0, //0x00002a85 subq %r12, %r8 + 0x41, 0xbf, 0x1f, 0x00, 0x00, 0x00, //0x00002a88 movl $31, %r15d + 0x45, 0x31, 0xf6, //0x00002a8e xorl %r14d, %r14d + 0xf3, 0x0f, 0x6f, 0x05, 0x97, 0xd5, 0xff, 0xff, //0x00002a91 movdqu $-10857(%rip), %xmm0 /* LCPI0_3+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x9f, 0xd5, 0xff, 0xff, //0x00002a99 movdqu $-10849(%rip), %xmm1 /* LCPI0_4+0(%rip) */ + 0x45, 0x31, 0xdb, //0x00002aa1 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002aa4 .p2align 4, 0x90 + //0x00002ab0 LBB0_520 + 0xf3, 0x43, 0x0f, 0x6f, 0x54, 0x32, 0x01, //0x00002ab0 movdqu $1(%r10,%r14), %xmm2 + 0xf3, 0x43, 0x0f, 0x6f, 0x5c, 0x32, 0x11, //0x00002ab7 movdqu $17(%r10,%r14), %xmm3 + 0x66, 0x0f, 0x6f, 0xe2, //0x00002abe movdqa %xmm2, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00002ac2 pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002ac6 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x6f, 0xe3, //0x00002aca movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0xe0, //0x00002ace pcmpeqb %xmm0, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002ad2 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00002ad6 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00002ada orq %rcx, %rdi + 0x66, 0x0f, 0x74, 0xd1, //0x00002add pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00002ae1 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x00002ae5 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002ae9 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00002aed shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00002af1 orq %rdx, %rcx + 0x48, 0x89, 0xca, //0x00002af4 movq %rcx, %rdx + 0x4c, 0x09, 0xda, //0x00002af7 orq %r11, %rdx + 0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00002afa je LBB0_522 + 0x44, 0x89, 0xda, //0x00002b00 movl %r11d, %edx + 0xf7, 0xd2, //0x00002b03 notl %edx + 0x21, 0xca, //0x00002b05 andl %ecx, %edx + 0x8d, 0x1c, 0x12, //0x00002b07 leal (%rdx,%rdx), %ebx + 0x44, 0x09, 0xdb, //0x00002b0a orl %r11d, %ebx + 0x89, 0xde, //0x00002b0d movl %ebx, %esi + 0xf7, 0xd6, //0x00002b0f notl %esi + 0x21, 0xce, //0x00002b11 andl %ecx, %esi + 0x81, 0xe6, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002b13 andl $-1431655766, %esi + 0x45, 0x31, 0xdb, //0x00002b19 xorl %r11d, %r11d + 0x01, 0xd6, //0x00002b1c addl %edx, %esi + 0x41, 0x0f, 0x92, 0xc3, //0x00002b1e setb %r11b + 0x01, 0xf6, //0x00002b22 addl %esi, %esi + 0x81, 0xf6, 0x55, 0x55, 0x55, 0x55, //0x00002b24 xorl $1431655765, %esi + 0x21, 0xde, //0x00002b2a andl %ebx, %esi + 0xf7, 0xd6, //0x00002b2c notl %esi + 0x21, 0xf7, //0x00002b2e andl %esi, %edi + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00002b30 jmp LBB0_523 + //0x00002b35 LBB0_522 + 0x45, 0x31, 0xdb, //0x00002b35 xorl %r11d, %r11d + //0x00002b38 LBB0_523 + 0x48, 0x85, 0xff, //0x00002b38 testq %rdi, %rdi + 0x0f, 0x85, 0x21, 0x09, 0x00, 0x00, //0x00002b3b jne LBB0_582 + 0x49, 0x83, 0xc6, 0x20, //0x00002b41 addq $32, %r14 + 0x4b, 0x8d, 0x0c, 0x38, //0x00002b45 leaq (%r8,%r15), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00002b49 addq $-32, %rcx + 0x49, 0x83, 0xc7, 0xe0, //0x00002b4d addq $-32, %r15 + 0x48, 0x83, 0xf9, 0x3f, //0x00002b51 cmpq $63, %rcx + 0x0f, 0x8f, 0x55, 0xff, 0xff, 0xff, //0x00002b55 jg LBB0_520 + 0x4d, 0x85, 0xdb, //0x00002b5b testq %r11, %r11 + 0x0f, 0x85, 0x07, 0x0c, 0x00, 0x00, //0x00002b5e jne LBB0_631 + 0x4b, 0x8d, 0x1c, 0x16, //0x00002b64 leaq (%r14,%r10), %rbx + 0x48, 0x83, 0xc3, 0x01, //0x00002b68 addq $1, %rbx + 0x49, 0xf7, 0xd6, //0x00002b6c notq %r14 + 0x4d, 0x01, 0xc6, //0x00002b6f addq %r8, %r14 + //0x00002b72 LBB0_527 + 0x4d, 0x85, 0xf6, //0x00002b72 testq %r14, %r14 + 0x48, 0x8b, 0x55, 0xd0, //0x00002b75 movq $-48(%rbp), %rdx + 0x0f, 0x8f, 0x6c, 0x09, 0x00, 0x00, //0x00002b79 jg LBB0_591 + 0xe9, 0x36, 0x09, 0x00, 0x00, //0x00002b7f jmp LBB0_586 + //0x00002b84 LBB0_528 + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002b84 movabsq $6148914691236517205, %r15 + 0x48, 0x8b, 0x4f, 0x08, //0x00002b8e movq $8(%rdi), %rcx + 0x48, 0x29, 0xd9, //0x00002b92 subq %rbx, %rcx + 0x49, 0x01, 0xd9, //0x00002b95 addq %rbx, %r9 + 0x31, 0xd2, //0x00002b98 xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb8, //0x00002b9a movq %rdx, $-72(%rbp) + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x99, 0xd4, 0xff, 0xff, //0x00002b9e movdqu $-11111(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x81, 0xd4, 0xff, 0xff, //0x00002ba7 movdqu $-11135(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00002baf pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0xb4, 0xd4, 0xff, 0xff, //0x00002bb4 movdqu $-11084(%rip), %xmm3 /* LCPI0_7+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x5c, 0xd4, 0xff, 0xff, //0x00002bbc movdqu $-11172(%rip), %xmm4 /* LCPI0_2+0(%rip) */ + 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002bc4 movabsq $3689348814741910323, %r13 + 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00002bce pxor %xmm8, %xmm8 + 0x31, 0xdb, //0x00002bd3 xorl %ebx, %ebx + 0x45, 0x31, 0xf6, //0x00002bd5 xorl %r14d, %r14d + 0x45, 0x31, 0xd2, //0x00002bd8 xorl %r10d, %r10d + 0xe9, 0x56, 0x00, 0x00, 0x00, //0x00002bdb jmp LBB0_530 + //0x00002be0 LBB0_529 + 0x49, 0xc1, 0xfb, 0x3f, //0x00002be0 sarq $63, %r11 + 0x48, 0x89, 0xf9, //0x00002be4 movq %rdi, %rcx + 0x48, 0xd1, 0xe9, //0x00002be7 shrq %rcx + 0x4c, 0x21, 0xf9, //0x00002bea andq %r15, %rcx + 0x48, 0x29, 0xcf, //0x00002bed subq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00002bf0 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x00002bf3 andq %r13, %rcx + 0x48, 0xc1, 0xef, 0x02, //0x00002bf6 shrq $2, %rdi + 0x4c, 0x21, 0xef, //0x00002bfa andq %r13, %rdi + 0x48, 0x01, 0xcf, //0x00002bfd addq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00002c00 movq %rdi, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00002c03 shrq $4, %rcx + 0x48, 0x01, 0xf9, //0x00002c07 addq %rdi, %rcx + 0x48, 0x21, 0xf1, //0x00002c0a andq %rsi, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002c0d movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00002c17 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00002c1b shrq $56, %rcx + 0x49, 0x01, 0xce, //0x00002c1f addq %rcx, %r14 + 0x49, 0x83, 0xc1, 0x40, //0x00002c22 addq $64, %r9 + 0x48, 0x8b, 0x4d, 0xc0, //0x00002c26 movq $-64(%rbp), %rcx + 0x48, 0x83, 0xc1, 0xc0, //0x00002c2a addq $-64, %rcx + 0x4c, 0x89, 0x5d, 0xb8, //0x00002c2e movq %r11, $-72(%rbp) + 0x48, 0x8b, 0x5d, 0x88, //0x00002c32 movq $-120(%rbp), %rbx + //0x00002c36 LBB0_530 + 0x48, 0x83, 0xf9, 0x40, //0x00002c36 cmpq $64, %rcx + 0x48, 0x89, 0x4d, 0xc0, //0x00002c3a movq %rcx, $-64(%rbp) + 0x0f, 0x8c, 0x1f, 0x02, 0x00, 0x00, //0x00002c3e jl LBB0_537 + //0x00002c44 LBB0_531 + 0xf3, 0x41, 0x0f, 0x6f, 0x01, //0x00002c44 movdqu (%r9), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x69, 0x10, //0x00002c49 movdqu $16(%r9), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x79, 0x20, //0x00002c4f movdqu $32(%r9), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x71, 0x30, //0x00002c55 movdqu $48(%r9), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x00002c5b movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002c5f pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x00002c64 pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd5, //0x00002c68 movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002c6c pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00002c71 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x00002c75 movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002c79 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00002c7e pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd6, //0x00002c82 movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x00002c86 pcmpeqb %xmm10, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x00002c8b pmovmskb %xmm2, %r8d + 0x49, 0xc1, 0xe0, 0x30, //0x00002c90 shlq $48, %r8 + 0x48, 0xc1, 0xe7, 0x20, //0x00002c94 shlq $32, %rdi + 0x4c, 0x09, 0xc7, //0x00002c98 orq %r8, %rdi + 0x48, 0xc1, 0xe2, 0x10, //0x00002c9b shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x00002c9f orq %rdi, %rdx + 0x48, 0x09, 0xd6, //0x00002ca2 orq %rdx, %rsi + 0x48, 0x89, 0xf2, //0x00002ca5 movq %rsi, %rdx + 0x48, 0x09, 0xda, //0x00002ca8 orq %rbx, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00002cab jne LBB0_533 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00002cb1 movq $-1, %rsi + 0x31, 0xc9, //0x00002cb8 xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0x88, //0x00002cba movq %rcx, $-120(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00002cbe jmp LBB0_534 + //0x00002cc3 LBB0_533 + 0x48, 0x89, 0xda, //0x00002cc3 movq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x00002cc6 notq %rdx + 0x48, 0x21, 0xf2, //0x00002cc9 andq %rsi, %rdx + 0x48, 0x8d, 0x3c, 0x12, //0x00002ccc leaq (%rdx,%rdx), %rdi + 0x48, 0x09, 0xdf, //0x00002cd0 orq %rbx, %rdi + 0x48, 0x89, 0xf9, //0x00002cd3 movq %rdi, %rcx + 0x48, 0xf7, 0xd1, //0x00002cd6 notq %rcx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002cd9 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xde, //0x00002ce3 andq %rbx, %rsi + 0x48, 0x21, 0xce, //0x00002ce6 andq %rcx, %rsi + 0x31, 0xc9, //0x00002ce9 xorl %ecx, %ecx + 0x48, 0x01, 0xd6, //0x00002ceb addq %rdx, %rsi + 0x0f, 0x92, 0xc1, //0x00002cee setb %cl + 0x48, 0x89, 0x4d, 0x88, //0x00002cf1 movq %rcx, $-120(%rbp) + 0x48, 0x01, 0xf6, //0x00002cf5 addq %rsi, %rsi + 0x4c, 0x31, 0xfe, //0x00002cf8 xorq %r15, %rsi + 0x48, 0x21, 0xfe, //0x00002cfb andq %rdi, %rsi + 0x48, 0xf7, 0xd6, //0x00002cfe notq %rsi + //0x00002d01 LBB0_534 + 0x66, 0x0f, 0x6f, 0xd6, //0x00002d01 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00002d05 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00002d09 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00002d0d shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xd7, //0x00002d11 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00002d15 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00002d19 pmovmskb %xmm2, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00002d1d shlq $32, %rdi + 0x48, 0x09, 0xd7, //0x00002d21 orq %rdx, %rdi + 0x66, 0x0f, 0x6f, 0xd5, //0x00002d24 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00002d28 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00002d2c pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x00002d30 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x00002d34 orq %rdi, %rdx + 0x66, 0x0f, 0x6f, 0xd0, //0x00002d37 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00002d3b pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00002d3f pmovmskb %xmm2, %edi + 0x48, 0x09, 0xd7, //0x00002d43 orq %rdx, %rdi + 0x48, 0x21, 0xf7, //0x00002d46 andq %rsi, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x00002d49 movq %rdi, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x00002d4e pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd3, //0x00002d55 movq %xmm2, %r11 + 0x4c, 0x33, 0x5d, 0xb8, //0x00002d5a xorq $-72(%rbp), %r11 + 0x66, 0x0f, 0x6f, 0xd0, //0x00002d5e movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00002d62 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00002d66 pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd5, //0x00002d6a movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00002d6e pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00002d72 pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x00002d76 movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00002d7a pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x00002d7e pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd6, //0x00002d82 movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x00002d86 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x00002d8a pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x00002d8e shlq $48, %rbx + 0x48, 0xc1, 0xe1, 0x20, //0x00002d92 shlq $32, %rcx + 0x48, 0x09, 0xd9, //0x00002d96 orq %rbx, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x00002d99 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x00002d9d orq %rcx, %rdx + 0x48, 0x09, 0xd7, //0x00002da0 orq %rdx, %rdi + 0x4c, 0x89, 0xd9, //0x00002da3 movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x00002da6 notq %rcx + 0x48, 0x21, 0xcf, //0x00002da9 andq %rcx, %rdi + 0x66, 0x0f, 0x74, 0xc4, //0x00002dac pcmpeqb %xmm4, %xmm0 + 0x66, 0x44, 0x0f, 0xd7, 0xc0, //0x00002db0 pmovmskb %xmm0, %r8d + 0x66, 0x0f, 0x74, 0xec, //0x00002db5 pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002db9 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x00002dbd pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00002dc1 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x74, 0xf4, //0x00002dc5 pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00002dc9 pmovmskb %xmm6, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00002dce shlq $48, %r15 + 0x48, 0xc1, 0xe3, 0x20, //0x00002dd2 shlq $32, %rbx + 0x4c, 0x09, 0xfb, //0x00002dd6 orq %r15, %rbx + 0x48, 0xc1, 0xe2, 0x10, //0x00002dd9 shlq $16, %rdx + 0x48, 0x09, 0xda, //0x00002ddd orq %rbx, %rdx + 0x49, 0x09, 0xd0, //0x00002de0 orq %rdx, %r8 + 0x48, 0xbe, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00002de3 movabsq $1085102592571150095, %rsi + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002ded movabsq $6148914691236517205, %r15 + 0x49, 0x21, 0xc8, //0x00002df7 andq %rcx, %r8 + 0x0f, 0x84, 0xe0, 0xfd, 0xff, 0xff, //0x00002dfa je LBB0_529 + //0x00002e00 .p2align 4, 0x90 + //0x00002e00 LBB0_535 + 0x49, 0x8d, 0x50, 0xff, //0x00002e00 leaq $-1(%r8), %rdx + 0x48, 0x89, 0xd1, //0x00002e04 movq %rdx, %rcx + 0x48, 0x21, 0xf9, //0x00002e07 andq %rdi, %rcx + 0x48, 0x89, 0xcb, //0x00002e0a movq %rcx, %rbx + 0x48, 0xd1, 0xeb, //0x00002e0d shrq %rbx + 0x4c, 0x21, 0xfb, //0x00002e10 andq %r15, %rbx + 0x48, 0x29, 0xd9, //0x00002e13 subq %rbx, %rcx + 0x48, 0x89, 0xcb, //0x00002e16 movq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00002e19 andq %r13, %rbx + 0x48, 0xc1, 0xe9, 0x02, //0x00002e1c shrq $2, %rcx + 0x4c, 0x21, 0xe9, //0x00002e20 andq %r13, %rcx + 0x48, 0x01, 0xd9, //0x00002e23 addq %rbx, %rcx + 0x48, 0x89, 0xcb, //0x00002e26 movq %rcx, %rbx + 0x48, 0xc1, 0xeb, 0x04, //0x00002e29 shrq $4, %rbx + 0x48, 0x01, 0xcb, //0x00002e2d addq %rcx, %rbx + 0x48, 0x21, 0xf3, //0x00002e30 andq %rsi, %rbx + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002e33 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xd9, //0x00002e3d imulq %rcx, %rbx + 0x48, 0xc1, 0xeb, 0x38, //0x00002e41 shrq $56, %rbx + 0x4c, 0x01, 0xf3, //0x00002e45 addq %r14, %rbx + 0x4c, 0x39, 0xd3, //0x00002e48 cmpq %r10, %rbx + 0x0f, 0x86, 0xd2, 0x05, 0x00, 0x00, //0x00002e4b jbe LBB0_581 + 0x49, 0x83, 0xc2, 0x01, //0x00002e51 addq $1, %r10 + 0x49, 0x21, 0xd0, //0x00002e55 andq %rdx, %r8 + 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x00002e58 jne LBB0_535 + 0xe9, 0x7d, 0xfd, 0xff, 0xff, //0x00002e5e jmp LBB0_529 + //0x00002e63 LBB0_537 + 0x48, 0x85, 0xc9, //0x00002e63 testq %rcx, %rcx + 0x0f, 0x8e, 0xad, 0x08, 0x00, 0x00, //0x00002e66 jle LBB0_626 + 0x48, 0x89, 0xdf, //0x00002e6c movq %rbx, %rdi + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x00002e6f movdqu %xmm8, $-176(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x40, 0xff, 0xff, 0xff, //0x00002e78 movdqu %xmm8, $-192(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00002e81 movdqu %xmm8, $-208(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00002e8a movdqu %xmm8, $-224(%rbp) + 0x44, 0x89, 0xc9, //0x00002e93 movl %r9d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00002e96 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00002e9c cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00002ea2 jb LBB0_541 + 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00002ea8 cmpq $32, $-64(%rbp) + 0x0f, 0x82, 0x41, 0x00, 0x00, 0x00, //0x00002ead jb LBB0_542 + 0x41, 0x0f, 0x10, 0x01, //0x00002eb3 movups (%r9), %xmm0 + 0x0f, 0x11, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00002eb7 movups %xmm0, $-224(%rbp) + 0x41, 0x0f, 0x10, 0x41, 0x10, //0x00002ebe movups $16(%r9), %xmm0 + 0x0f, 0x11, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00002ec3 movups %xmm0, $-208(%rbp) + 0x49, 0x83, 0xc1, 0x20, //0x00002eca addq $32, %r9 + 0x48, 0x8b, 0x4d, 0xc0, //0x00002ece movq $-64(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00002ed2 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x40, 0xff, 0xff, 0xff, //0x00002ed6 leaq $-192(%rbp), %rdx + 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x00002edd jmp LBB0_543 + //0x00002ee2 LBB0_541 + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002ee2 movabsq $6148914691236517205, %r15 + 0x48, 0x89, 0xfb, //0x00002eec movq %rdi, %rbx + 0xe9, 0x50, 0xfd, 0xff, 0xff, //0x00002eef jmp LBB0_531 + //0x00002ef4 LBB0_542 + 0x48, 0x8d, 0x95, 0x20, 0xff, 0xff, 0xff, //0x00002ef4 leaq $-224(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xc0, //0x00002efb movq $-64(%rbp), %rsi + //0x00002eff LBB0_543 + 0x48, 0x83, 0xfe, 0x10, //0x00002eff cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00002f03 jb LBB0_544 + 0x41, 0x0f, 0x10, 0x01, //0x00002f09 movups (%r9), %xmm0 + 0x0f, 0x11, 0x02, //0x00002f0d movups %xmm0, (%rdx) + 0x49, 0x83, 0xc1, 0x10, //0x00002f10 addq $16, %r9 + 0x48, 0x83, 0xc2, 0x10, //0x00002f14 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00002f18 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00002f1c cmpq $8, %rsi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00002f20 jae LBB0_551 + //0x00002f26 LBB0_545 + 0x48, 0x83, 0xfe, 0x04, //0x00002f26 cmpq $4, %rsi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x00002f2a jl LBB0_546 + //0x00002f30 LBB0_552 + 0x41, 0x8b, 0x09, //0x00002f30 movl (%r9), %ecx + 0x89, 0x0a, //0x00002f33 movl %ecx, (%rdx) + 0x49, 0x83, 0xc1, 0x04, //0x00002f35 addq $4, %r9 + 0x48, 0x83, 0xc2, 0x04, //0x00002f39 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00002f3d addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00002f41 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00002f45 jae LBB0_547 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x00002f4b jmp LBB0_548 + //0x00002f50 LBB0_544 + 0x48, 0x83, 0xfe, 0x08, //0x00002f50 cmpq $8, %rsi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x00002f54 jb LBB0_545 + //0x00002f5a LBB0_551 + 0x49, 0x8b, 0x09, //0x00002f5a movq (%r9), %rcx + 0x48, 0x89, 0x0a, //0x00002f5d movq %rcx, (%rdx) + 0x49, 0x83, 0xc1, 0x08, //0x00002f60 addq $8, %r9 + 0x48, 0x83, 0xc2, 0x08, //0x00002f64 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00002f68 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00002f6c cmpq $4, %rsi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x00002f70 jge LBB0_552 + //0x00002f76 LBB0_546 + 0x48, 0x83, 0xfe, 0x02, //0x00002f76 cmpq $2, %rsi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x00002f7a jb LBB0_548 + //0x00002f80 LBB0_547 + 0x41, 0x0f, 0xb7, 0x09, //0x00002f80 movzwl (%r9), %ecx + 0x66, 0x89, 0x0a, //0x00002f84 movw %cx, (%rdx) + 0x49, 0x83, 0xc1, 0x02, //0x00002f87 addq $2, %r9 + 0x48, 0x83, 0xc2, 0x02, //0x00002f8b addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00002f8f addq $-2, %rsi + //0x00002f93 LBB0_548 + 0x4c, 0x89, 0xc9, //0x00002f93 movq %r9, %rcx + 0x4c, 0x8d, 0x8d, 0x20, 0xff, 0xff, 0xff, //0x00002f96 leaq $-224(%rbp), %r9 + 0x48, 0x85, 0xf6, //0x00002f9d testq %rsi, %rsi + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002fa0 movabsq $6148914691236517205, %r15 + 0x48, 0x89, 0xfb, //0x00002faa movq %rdi, %rbx + 0x0f, 0x84, 0x91, 0xfc, 0xff, 0xff, //0x00002fad je LBB0_531 + 0x8a, 0x09, //0x00002fb3 movb (%rcx), %cl + 0x88, 0x0a, //0x00002fb5 movb %cl, (%rdx) + 0x4c, 0x8d, 0x8d, 0x20, 0xff, 0xff, 0xff, //0x00002fb7 leaq $-224(%rbp), %r9 + 0xe9, 0x81, 0xfc, 0xff, 0xff, //0x00002fbe jmp LBB0_531 + //0x00002fc3 LBB0_553 + 0x49, 0x8d, 0x4c, 0x24, 0x05, //0x00002fc3 leaq $5(%r12), %rcx + //0x00002fc8 LBB0_554 + 0x48, 0x3b, 0x4f, 0x08, //0x00002fc8 cmpq $8(%rdi), %rcx + 0x0f, 0x87, 0xe8, 0x04, 0x00, 0x00, //0x00002fcc ja LBB0_586 + 0x49, 0x89, 0x08, //0x00002fd2 movq %rcx, (%r8) + 0x4c, 0x89, 0xe0, //0x00002fd5 movq %r12, %rax + 0xe9, 0xdd, 0x04, 0x00, 0x00, //0x00002fd8 jmp LBB0_586 + //0x00002fdd LBB0_556 + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002fdd movabsq $6148914691236517205, %r15 + 0x48, 0x8b, 0x4f, 0x08, //0x00002fe7 movq $8(%rdi), %rcx + 0x48, 0x29, 0xd9, //0x00002feb subq %rbx, %rcx + 0x49, 0x01, 0xd9, //0x00002fee addq %rbx, %r9 + 0x31, 0xd2, //0x00002ff1 xorl %edx, %edx + 0x48, 0x89, 0x55, 0xb8, //0x00002ff3 movq %rdx, $-72(%rbp) + 0xf3, 0x44, 0x0f, 0x6f, 0x15, 0x40, 0xd0, 0xff, 0xff, //0x00002ff7 movdqu $-12224(%rip), %xmm10 /* LCPI0_4+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0x28, 0xd0, 0xff, 0xff, //0x00003000 movdqu $-12248(%rip), %xmm1 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xc9, //0x00003008 pcmpeqd %xmm9, %xmm9 + 0xf3, 0x0f, 0x6f, 0x1d, 0x3b, 0xd0, 0xff, 0xff, //0x0000300d movdqu $-12229(%rip), %xmm3 /* LCPI0_5+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x25, 0x43, 0xd0, 0xff, 0xff, //0x00003015 movdqu $-12221(%rip), %xmm4 /* LCPI0_6+0(%rip) */ + 0x49, 0xbd, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x0000301d movabsq $3689348814741910323, %r13 + 0x66, 0x45, 0x0f, 0xef, 0xc0, //0x00003027 pxor %xmm8, %xmm8 + 0x31, 0xdb, //0x0000302c xorl %ebx, %ebx + 0x45, 0x31, 0xf6, //0x0000302e xorl %r14d, %r14d + 0x45, 0x31, 0xd2, //0x00003031 xorl %r10d, %r10d + 0xe9, 0x56, 0x00, 0x00, 0x00, //0x00003034 jmp LBB0_558 + //0x00003039 LBB0_557 + 0x49, 0xc1, 0xfb, 0x3f, //0x00003039 sarq $63, %r11 + 0x48, 0x89, 0xf9, //0x0000303d movq %rdi, %rcx + 0x48, 0xd1, 0xe9, //0x00003040 shrq %rcx + 0x4c, 0x21, 0xf9, //0x00003043 andq %r15, %rcx + 0x48, 0x29, 0xcf, //0x00003046 subq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00003049 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x0000304c andq %r13, %rcx + 0x48, 0xc1, 0xef, 0x02, //0x0000304f shrq $2, %rdi + 0x4c, 0x21, 0xef, //0x00003053 andq %r13, %rdi + 0x48, 0x01, 0xcf, //0x00003056 addq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00003059 movq %rdi, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x0000305c shrq $4, %rcx + 0x48, 0x01, 0xf9, //0x00003060 addq %rdi, %rcx + 0x48, 0x21, 0xf1, //0x00003063 andq %rsi, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00003066 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00003070 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00003074 shrq $56, %rcx + 0x49, 0x01, 0xce, //0x00003078 addq %rcx, %r14 + 0x49, 0x83, 0xc1, 0x40, //0x0000307b addq $64, %r9 + 0x48, 0x8b, 0x4d, 0xc0, //0x0000307f movq $-64(%rbp), %rcx + 0x48, 0x83, 0xc1, 0xc0, //0x00003083 addq $-64, %rcx + 0x4c, 0x89, 0x5d, 0xb8, //0x00003087 movq %r11, $-72(%rbp) + 0x48, 0x8b, 0x5d, 0x88, //0x0000308b movq $-120(%rbp), %rbx + //0x0000308f LBB0_558 + 0x48, 0x83, 0xf9, 0x40, //0x0000308f cmpq $64, %rcx + 0x48, 0x89, 0x4d, 0xc0, //0x00003093 movq %rcx, $-64(%rbp) + 0x0f, 0x8c, 0x26, 0x02, 0x00, 0x00, //0x00003097 jl LBB0_565 + //0x0000309d LBB0_559 + 0xf3, 0x41, 0x0f, 0x6f, 0x01, //0x0000309d movdqu (%r9), %xmm0 + 0xf3, 0x41, 0x0f, 0x6f, 0x69, 0x10, //0x000030a2 movdqu $16(%r9), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x79, 0x20, //0x000030a8 movdqu $32(%r9), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x71, 0x30, //0x000030ae movdqu $48(%r9), %xmm6 + 0x66, 0x0f, 0x6f, 0xd0, //0x000030b4 movdqa %xmm0, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000030b8 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xf2, //0x000030bd pmovmskb %xmm2, %esi + 0x66, 0x0f, 0x6f, 0xd5, //0x000030c1 movdqa %xmm5, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000030c5 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000030ca pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x000030ce movdqa %xmm7, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000030d2 pcmpeqb %xmm10, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x000030d7 pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd6, //0x000030db movdqa %xmm6, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xd2, //0x000030df pcmpeqb %xmm10, %xmm2 + 0x66, 0x44, 0x0f, 0xd7, 0xc2, //0x000030e4 pmovmskb %xmm2, %r8d + 0x49, 0xc1, 0xe0, 0x30, //0x000030e9 shlq $48, %r8 + 0x48, 0xc1, 0xe7, 0x20, //0x000030ed shlq $32, %rdi + 0x4c, 0x09, 0xc7, //0x000030f1 orq %r8, %rdi + 0x48, 0xc1, 0xe2, 0x10, //0x000030f4 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x000030f8 orq %rdi, %rdx + 0x48, 0x09, 0xd6, //0x000030fb orq %rdx, %rsi + 0x48, 0x89, 0xf2, //0x000030fe movq %rsi, %rdx + 0x48, 0x09, 0xda, //0x00003101 orq %rbx, %rdx + 0x0f, 0x85, 0x12, 0x00, 0x00, 0x00, //0x00003104 jne LBB0_561 + 0x48, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x0000310a movq $-1, %rsi + 0x31, 0xc9, //0x00003111 xorl %ecx, %ecx + 0x48, 0x89, 0x4d, 0x88, //0x00003113 movq %rcx, $-120(%rbp) + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00003117 jmp LBB0_562 + //0x0000311c LBB0_561 + 0x48, 0x89, 0xda, //0x0000311c movq %rbx, %rdx + 0x48, 0xf7, 0xd2, //0x0000311f notq %rdx + 0x48, 0x21, 0xf2, //0x00003122 andq %rsi, %rdx + 0x48, 0x8d, 0x3c, 0x12, //0x00003125 leaq (%rdx,%rdx), %rdi + 0x48, 0x09, 0xdf, //0x00003129 orq %rbx, %rdi + 0x48, 0x89, 0xf9, //0x0000312c movq %rdi, %rcx + 0x48, 0xf7, 0xd1, //0x0000312f notq %rcx + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003132 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xde, //0x0000313c andq %rbx, %rsi + 0x48, 0x21, 0xce, //0x0000313f andq %rcx, %rsi + 0x31, 0xc9, //0x00003142 xorl %ecx, %ecx + 0x48, 0x01, 0xd6, //0x00003144 addq %rdx, %rsi + 0x0f, 0x92, 0xc1, //0x00003147 setb %cl + 0x48, 0x89, 0x4d, 0x88, //0x0000314a movq %rcx, $-120(%rbp) + 0x48, 0x01, 0xf6, //0x0000314e addq %rsi, %rsi + 0x4c, 0x31, 0xfe, //0x00003151 xorq %r15, %rsi + 0x48, 0x21, 0xfe, //0x00003154 andq %rdi, %rsi + 0x48, 0xf7, 0xd6, //0x00003157 notq %rsi + //0x0000315a LBB0_562 + 0x66, 0x0f, 0x6f, 0xd6, //0x0000315a movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000315e pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00003162 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x30, //0x00003166 shlq $48, %rdx + 0x66, 0x0f, 0x6f, 0xd7, //0x0000316a movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x0000316e pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00003172 pmovmskb %xmm2, %edi + 0x48, 0xc1, 0xe7, 0x20, //0x00003176 shlq $32, %rdi + 0x48, 0x09, 0xd7, //0x0000317a orq %rdx, %rdi + 0x66, 0x0f, 0x6f, 0xd5, //0x0000317d movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00003181 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x00003185 pmovmskb %xmm2, %edx + 0x48, 0xc1, 0xe2, 0x10, //0x00003189 shlq $16, %rdx + 0x48, 0x09, 0xfa, //0x0000318d orq %rdi, %rdx + 0x66, 0x0f, 0x6f, 0xd0, //0x00003190 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd1, //0x00003194 pcmpeqb %xmm1, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x00003198 pmovmskb %xmm2, %edi + 0x48, 0x09, 0xd7, //0x0000319c orq %rdx, %rdi + 0x48, 0x21, 0xf7, //0x0000319f andq %rsi, %rdi + 0x66, 0x48, 0x0f, 0x6e, 0xd7, //0x000031a2 movq %rdi, %xmm2 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xd1, 0x00, //0x000031a7 pclmulqdq $0, %xmm9, %xmm2 + 0x66, 0x49, 0x0f, 0x7e, 0xd3, //0x000031ae movq %xmm2, %r11 + 0x4c, 0x33, 0x5d, 0xb8, //0x000031b3 xorq $-72(%rbp), %r11 + 0x66, 0x0f, 0x6f, 0xd0, //0x000031b7 movdqa %xmm0, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000031bb pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xfa, //0x000031bf pmovmskb %xmm2, %edi + 0x66, 0x0f, 0x6f, 0xd5, //0x000031c3 movdqa %xmm5, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000031c7 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xd2, //0x000031cb pmovmskb %xmm2, %edx + 0x66, 0x0f, 0x6f, 0xd7, //0x000031cf movdqa %xmm7, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000031d3 pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xca, //0x000031d7 pmovmskb %xmm2, %ecx + 0x66, 0x0f, 0x6f, 0xd6, //0x000031db movdqa %xmm6, %xmm2 + 0x66, 0x0f, 0x74, 0xd3, //0x000031df pcmpeqb %xmm3, %xmm2 + 0x66, 0x0f, 0xd7, 0xda, //0x000031e3 pmovmskb %xmm2, %ebx + 0x48, 0xc1, 0xe3, 0x30, //0x000031e7 shlq $48, %rbx + 0x48, 0xc1, 0xe1, 0x20, //0x000031eb shlq $32, %rcx + 0x48, 0x09, 0xd9, //0x000031ef orq %rbx, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x000031f2 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x000031f6 orq %rcx, %rdx + 0x48, 0x09, 0xd7, //0x000031f9 orq %rdx, %rdi + 0x4c, 0x89, 0xd9, //0x000031fc movq %r11, %rcx + 0x48, 0xf7, 0xd1, //0x000031ff notq %rcx + 0x48, 0x21, 0xcf, //0x00003202 andq %rcx, %rdi + 0x66, 0x0f, 0x74, 0xc4, //0x00003205 pcmpeqb %xmm4, %xmm0 + 0x66, 0x44, 0x0f, 0xd7, 0xc0, //0x00003209 pmovmskb %xmm0, %r8d + 0x66, 0x0f, 0x74, 0xec, //0x0000320e pcmpeqb %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00003212 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x74, 0xfc, //0x00003216 pcmpeqb %xmm4, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x0000321a pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x74, 0xf4, //0x0000321e pcmpeqb %xmm4, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00003222 pmovmskb %xmm6, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00003227 shlq $48, %r15 + 0x48, 0xc1, 0xe3, 0x20, //0x0000322b shlq $32, %rbx + 0x4c, 0x09, 0xfb, //0x0000322f orq %r15, %rbx + 0x48, 0xc1, 0xe2, 0x10, //0x00003232 shlq $16, %rdx + 0x48, 0x09, 0xda, //0x00003236 orq %rbx, %rdx + 0x49, 0x09, 0xd0, //0x00003239 orq %rdx, %r8 + 0x48, 0xbe, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000323c movabsq $1085102592571150095, %rsi + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003246 movabsq $6148914691236517205, %r15 + 0x49, 0x21, 0xc8, //0x00003250 andq %rcx, %r8 + 0x0f, 0x84, 0xe0, 0xfd, 0xff, 0xff, //0x00003253 je LBB0_557 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003259 .p2align 4, 0x90 + //0x00003260 LBB0_563 + 0x49, 0x8d, 0x50, 0xff, //0x00003260 leaq $-1(%r8), %rdx + 0x48, 0x89, 0xd1, //0x00003264 movq %rdx, %rcx + 0x48, 0x21, 0xf9, //0x00003267 andq %rdi, %rcx + 0x48, 0x89, 0xcb, //0x0000326a movq %rcx, %rbx + 0x48, 0xd1, 0xeb, //0x0000326d shrq %rbx + 0x4c, 0x21, 0xfb, //0x00003270 andq %r15, %rbx + 0x48, 0x29, 0xd9, //0x00003273 subq %rbx, %rcx + 0x48, 0x89, 0xcb, //0x00003276 movq %rcx, %rbx + 0x4c, 0x21, 0xeb, //0x00003279 andq %r13, %rbx + 0x48, 0xc1, 0xe9, 0x02, //0x0000327c shrq $2, %rcx + 0x4c, 0x21, 0xe9, //0x00003280 andq %r13, %rcx + 0x48, 0x01, 0xd9, //0x00003283 addq %rbx, %rcx + 0x48, 0x89, 0xcb, //0x00003286 movq %rcx, %rbx + 0x48, 0xc1, 0xeb, 0x04, //0x00003289 shrq $4, %rbx + 0x48, 0x01, 0xcb, //0x0000328d addq %rcx, %rbx + 0x48, 0x21, 0xf3, //0x00003290 andq %rsi, %rbx + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00003293 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xd9, //0x0000329d imulq %rcx, %rbx + 0x48, 0xc1, 0xeb, 0x38, //0x000032a1 shrq $56, %rbx + 0x4c, 0x01, 0xf3, //0x000032a5 addq %r14, %rbx + 0x4c, 0x39, 0xd3, //0x000032a8 cmpq %r10, %rbx + 0x0f, 0x86, 0x72, 0x01, 0x00, 0x00, //0x000032ab jbe LBB0_581 + 0x49, 0x83, 0xc2, 0x01, //0x000032b1 addq $1, %r10 + 0x49, 0x21, 0xd0, //0x000032b5 andq %rdx, %r8 + 0x0f, 0x85, 0xa2, 0xff, 0xff, 0xff, //0x000032b8 jne LBB0_563 + 0xe9, 0x76, 0xfd, 0xff, 0xff, //0x000032be jmp LBB0_557 + //0x000032c3 LBB0_565 + 0x48, 0x85, 0xc9, //0x000032c3 testq %rcx, %rcx + 0x0f, 0x8e, 0x4d, 0x04, 0x00, 0x00, //0x000032c6 jle LBB0_626 + 0x48, 0x89, 0xdf, //0x000032cc movq %rbx, %rdi + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x50, 0xff, 0xff, 0xff, //0x000032cf movdqu %xmm8, $-176(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x40, 0xff, 0xff, 0xff, //0x000032d8 movdqu %xmm8, $-192(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x30, 0xff, 0xff, 0xff, //0x000032e1 movdqu %xmm8, $-208(%rbp) + 0xf3, 0x44, 0x0f, 0x7f, 0x85, 0x20, 0xff, 0xff, 0xff, //0x000032ea movdqu %xmm8, $-224(%rbp) + 0x44, 0x89, 0xc9, //0x000032f3 movl %r9d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000032f6 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000032fc cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00003302 jb LBB0_569 + 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00003308 cmpq $32, $-64(%rbp) + 0x0f, 0x82, 0x41, 0x00, 0x00, 0x00, //0x0000330d jb LBB0_570 + 0x41, 0x0f, 0x10, 0x01, //0x00003313 movups (%r9), %xmm0 + 0x0f, 0x11, 0x85, 0x20, 0xff, 0xff, 0xff, //0x00003317 movups %xmm0, $-224(%rbp) + 0x41, 0x0f, 0x10, 0x41, 0x10, //0x0000331e movups $16(%r9), %xmm0 + 0x0f, 0x11, 0x85, 0x30, 0xff, 0xff, 0xff, //0x00003323 movups %xmm0, $-208(%rbp) + 0x49, 0x83, 0xc1, 0x20, //0x0000332a addq $32, %r9 + 0x48, 0x8b, 0x4d, 0xc0, //0x0000332e movq $-64(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00003332 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x40, 0xff, 0xff, 0xff, //0x00003336 leaq $-192(%rbp), %rdx + 0xe9, 0x1d, 0x00, 0x00, 0x00, //0x0000333d jmp LBB0_571 + //0x00003342 LBB0_569 + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003342 movabsq $6148914691236517205, %r15 + 0x48, 0x89, 0xfb, //0x0000334c movq %rdi, %rbx + 0xe9, 0x49, 0xfd, 0xff, 0xff, //0x0000334f jmp LBB0_559 + //0x00003354 LBB0_570 + 0x48, 0x8d, 0x95, 0x20, 0xff, 0xff, 0xff, //0x00003354 leaq $-224(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xc0, //0x0000335b movq $-64(%rbp), %rsi + //0x0000335f LBB0_571 + 0x48, 0x83, 0xfe, 0x10, //0x0000335f cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00003363 jb LBB0_572 + 0x41, 0x0f, 0x10, 0x01, //0x00003369 movups (%r9), %xmm0 + 0x0f, 0x11, 0x02, //0x0000336d movups %xmm0, (%rdx) + 0x49, 0x83, 0xc1, 0x10, //0x00003370 addq $16, %r9 + 0x48, 0x83, 0xc2, 0x10, //0x00003374 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00003378 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x0000337c cmpq $8, %rsi + 0x0f, 0x83, 0x34, 0x00, 0x00, 0x00, //0x00003380 jae LBB0_579 + //0x00003386 LBB0_573 + 0x48, 0x83, 0xfe, 0x04, //0x00003386 cmpq $4, %rsi + 0x0f, 0x8c, 0x46, 0x00, 0x00, 0x00, //0x0000338a jl LBB0_574 + //0x00003390 LBB0_580 + 0x41, 0x8b, 0x09, //0x00003390 movl (%r9), %ecx + 0x89, 0x0a, //0x00003393 movl %ecx, (%rdx) + 0x49, 0x83, 0xc1, 0x04, //0x00003395 addq $4, %r9 + 0x48, 0x83, 0xc2, 0x04, //0x00003399 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x0000339d addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x000033a1 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x000033a5 jae LBB0_575 + 0xe9, 0x43, 0x00, 0x00, 0x00, //0x000033ab jmp LBB0_576 + //0x000033b0 LBB0_572 + 0x48, 0x83, 0xfe, 0x08, //0x000033b0 cmpq $8, %rsi + 0x0f, 0x82, 0xcc, 0xff, 0xff, 0xff, //0x000033b4 jb LBB0_573 + //0x000033ba LBB0_579 + 0x49, 0x8b, 0x09, //0x000033ba movq (%r9), %rcx + 0x48, 0x89, 0x0a, //0x000033bd movq %rcx, (%rdx) + 0x49, 0x83, 0xc1, 0x08, //0x000033c0 addq $8, %r9 + 0x48, 0x83, 0xc2, 0x08, //0x000033c4 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x000033c8 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x000033cc cmpq $4, %rsi + 0x0f, 0x8d, 0xba, 0xff, 0xff, 0xff, //0x000033d0 jge LBB0_580 + //0x000033d6 LBB0_574 + 0x48, 0x83, 0xfe, 0x02, //0x000033d6 cmpq $2, %rsi + 0x0f, 0x82, 0x13, 0x00, 0x00, 0x00, //0x000033da jb LBB0_576 + //0x000033e0 LBB0_575 + 0x41, 0x0f, 0xb7, 0x09, //0x000033e0 movzwl (%r9), %ecx + 0x66, 0x89, 0x0a, //0x000033e4 movw %cx, (%rdx) + 0x49, 0x83, 0xc1, 0x02, //0x000033e7 addq $2, %r9 + 0x48, 0x83, 0xc2, 0x02, //0x000033eb addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x000033ef addq $-2, %rsi + //0x000033f3 LBB0_576 + 0x4c, 0x89, 0xc9, //0x000033f3 movq %r9, %rcx + 0x4c, 0x8d, 0x8d, 0x20, 0xff, 0xff, 0xff, //0x000033f6 leaq $-224(%rbp), %r9 + 0x48, 0x85, 0xf6, //0x000033fd testq %rsi, %rsi + 0x49, 0xbf, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00003400 movabsq $6148914691236517205, %r15 + 0x48, 0x89, 0xfb, //0x0000340a movq %rdi, %rbx + 0x0f, 0x84, 0x8a, 0xfc, 0xff, 0xff, //0x0000340d je LBB0_559 + 0x8a, 0x09, //0x00003413 movb (%rcx), %cl + 0x88, 0x0a, //0x00003415 movb %cl, (%rdx) + 0x4c, 0x8d, 0x8d, 0x20, 0xff, 0xff, 0xff, //0x00003417 leaq $-224(%rbp), %r9 + 0xe9, 0x7a, 0xfc, 0xff, 0xff, //0x0000341e jmp LBB0_559 + //0x00003423 LBB0_581 + 0x48, 0x8b, 0x75, 0xb0, //0x00003423 movq $-80(%rbp), %rsi + 0x48, 0x8b, 0x46, 0x08, //0x00003427 movq $8(%rsi), %rax + 0x49, 0x0f, 0xbc, 0xc8, //0x0000342b bsfq %r8, %rcx + 0x48, 0x2b, 0x4d, 0xc0, //0x0000342f subq $-64(%rbp), %rcx + 0x48, 0x01, 0xc8, //0x00003433 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003436 addq $1, %rax + 0x48, 0x8b, 0x55, 0xd0, //0x0000343a movq $-48(%rbp), %rdx + 0x48, 0x89, 0x02, //0x0000343e movq %rax, (%rdx) + 0x48, 0x8b, 0x4e, 0x08, //0x00003441 movq $8(%rsi), %rcx + 0x48, 0x39, 0xc8, //0x00003445 cmpq %rcx, %rax + 0x48, 0x0f, 0x47, 0xc1, //0x00003448 cmovaq %rcx, %rax + 0x48, 0x89, 0x02, //0x0000344c movq %rax, (%rdx) + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000344f movq $-1, %rax + 0x4c, 0x0f, 0x47, 0xe0, //0x00003456 cmovaq %rax, %r12 + 0x4c, 0x89, 0xe0, //0x0000345a movq %r12, %rax + 0xe9, 0x58, 0x00, 0x00, 0x00, //0x0000345d jmp LBB0_586 + //0x00003462 LBB0_582 + 0x0f, 0xbc, 0xc7, //0x00003462 bsfl %edi, %eax + 0x4c, 0x01, 0xe0, //0x00003465 addq %r12, %rax + 0x4c, 0x01, 0xf0, //0x00003468 addq %r14, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000346b addq $2, %rax + 0x48, 0x8b, 0x4d, 0xd0, //0x0000346f movq $-48(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00003473 movq %rax, (%rcx) + 0x4c, 0x89, 0xe0, //0x00003476 movq %r12, %rax + 0xe9, 0x3c, 0x00, 0x00, 0x00, //0x00003479 jmp LBB0_586 + //0x0000347e LBB0_583 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000347e movq $-1, %r13 + //0x00003485 LBB0_584 + 0x4c, 0x29, 0xef, //0x00003485 subq %r13, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x00003488 addq $-2, %rdi + 0x48, 0x8b, 0x45, 0xd0, //0x0000348c movq $-48(%rbp), %rax + 0x48, 0x89, 0x38, //0x00003490 movq %rdi, (%rax) + //0x00003493 LBB0_585 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003493 movq $-2, %rax + 0xe9, 0x1b, 0x00, 0x00, 0x00, //0x0000349a jmp LBB0_586 + //0x0000349f LBB0_587 + 0x48, 0x83, 0xf8, 0xff, //0x0000349f cmpq $-1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x000034a3 movq $-56(%rbp), %rdx + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x000034a7 jne LBB0_516 + //0x000034ad LBB0_588 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000034ad movq $-1, %rax + 0x4c, 0x89, 0xea, //0x000034b4 movq %r13, %rdx + //0x000034b7 LBB0_516 + 0x49, 0x89, 0x10, //0x000034b7 movq %rdx, (%r8) + //0x000034ba LBB0_586 + 0x48, 0x81, 0xc4, 0xb8, 0x00, 0x00, 0x00, //0x000034ba addq $184, %rsp + 0x5b, //0x000034c1 popq %rbx + 0x41, 0x5c, //0x000034c2 popq %r12 + 0x41, 0x5d, //0x000034c4 popq %r13 + 0x41, 0x5e, //0x000034c6 popq %r14 + 0x41, 0x5f, //0x000034c8 popq %r15 + 0x5d, //0x000034ca popq %rbp + 0xc3, //0x000034cb retq + //0x000034cc LBB0_589 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000034cc movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000034d3 movl $2, %eax + 0x48, 0x01, 0xc3, //0x000034d8 addq %rax, %rbx + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000034db movq $-1, %rax + 0x49, 0x01, 0xce, //0x000034e2 addq %rcx, %r14 + 0x0f, 0x8e, 0xcf, 0xff, 0xff, 0xff, //0x000034e5 jle LBB0_586 + //0x000034eb LBB0_591 + 0x0f, 0xb6, 0x03, //0x000034eb movzbl (%rbx), %eax + 0x3c, 0x5c, //0x000034ee cmpb $92, %al + 0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x000034f0 je LBB0_589 + 0x3c, 0x22, //0x000034f6 cmpb $34, %al + 0x0f, 0x84, 0xbb, 0x01, 0x00, 0x00, //0x000034f8 je LBB0_618 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000034fe movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003505 movl $1, %eax + 0x48, 0x01, 0xc3, //0x0000350a addq %rax, %rbx + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000350d movq $-1, %rax + 0x49, 0x01, 0xce, //0x00003514 addq %rcx, %r14 + 0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x00003517 jg LBB0_591 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x0000351d jmp LBB0_586 + //0x00003522 LBB0_594 + 0x48, 0x8b, 0x55, 0xc8, //0x00003522 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00003526 cmpq $-1, %rdx + 0x0f, 0x85, 0x07, 0x00, 0x00, 0x00, //0x0000352a jne LBB0_597 + 0x48, 0x0f, 0xbc, 0xd7, //0x00003530 bsfq %rdi, %rdx + //0x00003534 LBB0_596 + 0x48, 0x01, 0xc2, //0x00003534 addq %rax, %rdx + //0x00003537 LBB0_597 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003537 movq $-2, %rax + 0x4c, 0x8b, 0x45, 0xd0, //0x0000353e movq $-48(%rbp), %r8 + 0x49, 0x89, 0x10, //0x00003542 movq %rdx, (%r8) + 0xe9, 0x70, 0xff, 0xff, 0xff, //0x00003545 jmp LBB0_586 + //0x0000354a LBB0_173 + 0x48, 0x8b, 0x7d, 0xa0, //0x0000354a movq $-96(%rbp), %rdi + 0xe9, 0x32, 0xff, 0xff, 0xff, //0x0000354e jmp LBB0_584 + //0x00003553 LBB0_598 + 0x48, 0x8b, 0x55, 0xc8, //0x00003553 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00003557 cmpq $-1, %rdx + 0x0f, 0x84, 0x2b, 0x01, 0x00, 0x00, //0x0000355b je LBB0_614 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003561 movq $-2, %rax + 0x49, 0x89, 0x10, //0x00003568 movq %rdx, (%r8) + 0xe9, 0x4a, 0xff, 0xff, 0xff, //0x0000356b jmp LBB0_586 + //0x00003570 LBB0_600 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003570 movq $-1, %r14 + //0x00003577 LBB0_601 + 0x49, 0xf7, 0xd6, //0x00003577 notq %r14 + 0x4c, 0x01, 0xf0, //0x0000357a addq %r14, %rax + 0x48, 0x8b, 0x4d, 0xd0, //0x0000357d movq $-48(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00003581 movq %rax, (%rcx) + 0xe9, 0x0a, 0xff, 0xff, 0xff, //0x00003584 jmp LBB0_585 + //0x00003589 LBB0_604 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003589 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003590 cmpb $97, %dl + 0x0f, 0x85, 0x21, 0xff, 0xff, 0xff, //0x00003593 jne LBB0_586 + 0x48, 0x8d, 0x51, 0x01, //0x00003599 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x10, //0x0000359d movq %rdx, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x000035a0 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0x0e, 0xff, 0xff, 0xff, //0x000035a6 jne LBB0_586 + 0x48, 0x8d, 0x51, 0x02, //0x000035ac leaq $2(%rcx), %rdx + 0x49, 0x89, 0x10, //0x000035b0 movq %rdx, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x000035b3 cmpb $115, $2(%r12,%rcx) + 0x0f, 0x85, 0xfb, 0xfe, 0xff, 0xff, //0x000035b9 jne LBB0_586 + 0x48, 0x8d, 0x51, 0x03, //0x000035bf leaq $3(%rcx), %rdx + 0x49, 0x89, 0x10, //0x000035c3 movq %rdx, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x000035c6 cmpb $101, $3(%r12,%rcx) + 0x0f, 0x85, 0xe8, 0xfe, 0xff, 0xff, //0x000035cc jne LBB0_586 + 0x48, 0x83, 0xc1, 0x04, //0x000035d2 addq $4, %rcx + 0x49, 0x89, 0x08, //0x000035d6 movq %rcx, (%r8) + 0xe9, 0xdc, 0xfe, 0xff, 0xff, //0x000035d9 jmp LBB0_586 + //0x000035de LBB0_293 + 0x49, 0x89, 0x00, //0x000035de movq %rax, (%r8) + 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x000035e1 cmpb $110, (%r12,%rax) + 0x0f, 0x85, 0xa7, 0xfe, 0xff, 0xff, //0x000035e6 jne LBB0_585 + 0x49, 0x89, 0x08, //0x000035ec movq %rcx, (%r8) + 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x000035ef cmpb $117, (%r12,%rcx) + 0x0f, 0x85, 0x99, 0xfe, 0xff, 0xff, //0x000035f4 jne LBB0_585 + 0x48, 0x8d, 0x41, 0x01, //0x000035fa leaq $1(%rcx), %rax + 0x49, 0x89, 0x00, //0x000035fe movq %rax, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003601 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0x86, 0xfe, 0xff, 0xff, //0x00003607 jne LBB0_585 + 0x48, 0x8d, 0x41, 0x02, //0x0000360d leaq $2(%rcx), %rax + 0x49, 0x89, 0x00, //0x00003611 movq %rax, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003614 cmpb $108, $2(%r12,%rcx) + 0x0f, 0x85, 0x73, 0xfe, 0xff, 0xff, //0x0000361a jne LBB0_585 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003620 jmp LBB0_613 + //0x00003625 LBB0_609 + 0x49, 0x89, 0x00, //0x00003625 movq %rax, (%r8) + 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003628 cmpb $116, (%r12,%rax) + 0x0f, 0x85, 0x60, 0xfe, 0xff, 0xff, //0x0000362d jne LBB0_585 + 0x49, 0x89, 0x08, //0x00003633 movq %rcx, (%r8) + 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003636 cmpb $114, (%r12,%rcx) + 0x0f, 0x85, 0x52, 0xfe, 0xff, 0xff, //0x0000363b jne LBB0_585 + 0x48, 0x8d, 0x41, 0x01, //0x00003641 leaq $1(%rcx), %rax + 0x49, 0x89, 0x00, //0x00003645 movq %rax, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003648 cmpb $117, $1(%r12,%rcx) + 0x0f, 0x85, 0x3f, 0xfe, 0xff, 0xff, //0x0000364e jne LBB0_585 + 0x48, 0x8d, 0x41, 0x02, //0x00003654 leaq $2(%rcx), %rax + 0x49, 0x89, 0x00, //0x00003658 movq %rax, (%r8) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x0000365b cmpb $101, $2(%r12,%rcx) + 0x0f, 0x85, 0x2c, 0xfe, 0xff, 0xff, //0x00003661 jne LBB0_585 + //0x00003667 LBB0_613 + 0x48, 0x83, 0xc1, 0x03, //0x00003667 addq $3, %rcx + 0x49, 0x89, 0x08, //0x0000366b movq %rcx, (%r8) + 0xe9, 0x20, 0xfe, 0xff, 0xff, //0x0000366e jmp LBB0_585 + //0x00003673 LBB0_348 + 0x48, 0x8b, 0x45, 0xa0, //0x00003673 movq $-96(%rbp), %rax + 0x48, 0x83, 0xc0, 0xff, //0x00003677 addq $-1, %rax + 0xe9, 0x3a, 0xfe, 0xff, 0xff, //0x0000367b jmp LBB0_586 + //0x00003680 LBB0_290 + 0x48, 0x83, 0xc1, 0xff, //0x00003680 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003684 movq %rcx, %rax + 0xe9, 0x2e, 0xfe, 0xff, 0xff, //0x00003687 jmp LBB0_586 + //0x0000368c LBB0_614 + 0x48, 0x0f, 0xbc, 0xd6, //0x0000368c bsfq %rsi, %rdx + //0x00003690 LBB0_615 + 0x48, 0x01, 0xc2, //0x00003690 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003693 movq $-2, %rax + 0x49, 0x89, 0x10, //0x0000369a movq %rdx, (%r8) + 0xe9, 0x18, 0xfe, 0xff, 0xff, //0x0000369d jmp LBB0_586 + //0x000036a2 LBB0_616 + 0x48, 0x8b, 0x55, 0xc8, //0x000036a2 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x000036a6 cmpq $-1, %rdx + 0x0f, 0x85, 0x87, 0xfe, 0xff, 0xff, //0x000036aa jne LBB0_597 + 0x48, 0x0f, 0xbc, 0xd6, //0x000036b0 bsfq %rsi, %rdx + 0xe9, 0x7b, 0xfe, 0xff, 0xff, //0x000036b4 jmp LBB0_596 + //0x000036b9 LBB0_618 + 0x4c, 0x29, 0xcb, //0x000036b9 subq %r9, %rbx + 0x48, 0x83, 0xc3, 0x01, //0x000036bc addq $1, %rbx + 0x48, 0x89, 0x1a, //0x000036c0 movq %rbx, (%rdx) + 0x4c, 0x89, 0xe0, //0x000036c3 movq %r12, %rax + 0xe9, 0xef, 0xfd, 0xff, 0xff, //0x000036c6 jmp LBB0_586 + //0x000036cb LBB0_619 + 0x48, 0x89, 0x4d, 0x98, //0x000036cb movq %rcx, $-104(%rbp) + 0xe9, 0x81, 0xf3, 0xff, 0xff, //0x000036cf jmp LBB0_515 + //0x000036d4 LBB0_622 + 0x49, 0x89, 0xc5, //0x000036d4 movq %rax, %r13 + 0xe9, 0xd1, 0xfd, 0xff, 0xff, //0x000036d7 jmp LBB0_588 + //0x000036dc LBB0_620 + 0x48, 0x8b, 0x45, 0xa0, //0x000036dc movq $-96(%rbp), %rax + 0x48, 0x89, 0x45, 0x98, //0x000036e0 movq %rax, $-104(%rbp) + 0xe9, 0x6c, 0xf3, 0xff, 0xff, //0x000036e4 jmp LBB0_515 + //0x000036e9 LBB0_621 + 0x4c, 0x01, 0xcb, //0x000036e9 addq %r9, %rbx + 0x48, 0x85, 0xc0, //0x000036ec testq %rax, %rax + 0x0f, 0x85, 0x70, 0xf2, 0xff, 0xff, //0x000036ef jne LBB0_499 + 0xe9, 0xb3, 0xf2, 0xff, 0xff, //0x000036f5 jmp LBB0_506 + //0x000036fa LBB0_384 + 0x4c, 0x8b, 0x6d, 0x98, //0x000036fa movq $-104(%rbp), %r13 + 0xe9, 0xaa, 0xfd, 0xff, 0xff, //0x000036fe jmp LBB0_588 + //0x00003703 LBB0_624 + 0x4c, 0x01, 0xcb, //0x00003703 addq %r9, %rbx + 0xe9, 0x67, 0xf4, 0xff, 0xff, //0x00003706 jmp LBB0_527 + //0x0000370b LBB0_625 + 0x4c, 0x29, 0xe0, //0x0000370b subq %r12, %rax + 0x48, 0x01, 0xd0, //0x0000370e addq %rdx, %rax + 0x48, 0x89, 0xc2, //0x00003711 movq %rax, %rdx + 0xe9, 0x1e, 0xfe, 0xff, 0xff, //0x00003714 jmp LBB0_597 + //0x00003719 LBB0_626 + 0x48, 0x8b, 0x4d, 0xb0, //0x00003719 movq $-80(%rbp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x0000371d movq $8(%rcx), %rcx + 0x48, 0x8b, 0x55, 0xd0, //0x00003721 movq $-48(%rbp), %rdx + 0x48, 0x89, 0x0a, //0x00003725 movq %rcx, (%rdx) + 0xe9, 0x8d, 0xfd, 0xff, 0xff, //0x00003728 jmp LBB0_586 + //0x0000372d LBB0_627 + 0x4c, 0x29, 0xe0, //0x0000372d subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00003730 addq %rcx, %rax + 0xe9, 0x21, 0x00, 0x00, 0x00, //0x00003733 jmp LBB0_630 + //0x00003738 LBB0_628 + 0x4c, 0x29, 0xe0, //0x00003738 subq %r12, %rax + 0x48, 0x89, 0xc2, //0x0000373b movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x0000373e movq $-2, %rax + 0x49, 0x89, 0x10, //0x00003745 movq %rdx, (%r8) + 0xe9, 0x6d, 0xfd, 0xff, 0xff, //0x00003748 jmp LBB0_586 + //0x0000374d LBB0_639 + 0x4c, 0x8b, 0x45, 0xd0, //0x0000374d movq $-48(%rbp), %r8 + 0xe9, 0x57, 0xfd, 0xff, 0xff, //0x00003751 jmp LBB0_588 + //0x00003756 LBB0_629 + 0x4c, 0x29, 0xe0, //0x00003756 subq %r12, %rax + //0x00003759 LBB0_630 + 0x48, 0x89, 0xc2, //0x00003759 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x0000375c movq $-2, %rax + 0x49, 0x89, 0x10, //0x00003763 movq %rdx, (%r8) + 0xe9, 0x4f, 0xfd, 0xff, 0xff, //0x00003766 jmp LBB0_586 + //0x0000376b LBB0_631 + 0x49, 0x8d, 0x48, 0xff, //0x0000376b leaq $-1(%r8), %rcx + 0x4c, 0x39, 0xf1, //0x0000376f cmpq %r14, %rcx + 0x0f, 0x84, 0x42, 0xfd, 0xff, 0xff, //0x00003772 je LBB0_586 + 0x4b, 0x8d, 0x1c, 0x16, //0x00003778 leaq (%r14,%r10), %rbx + 0x48, 0x83, 0xc3, 0x02, //0x0000377c addq $2, %rbx + 0x4d, 0x29, 0xf0, //0x00003780 subq %r14, %r8 + 0x49, 0x83, 0xc0, 0xfe, //0x00003783 addq $-2, %r8 + 0x4d, 0x89, 0xc6, //0x00003787 movq %r8, %r14 + 0xe9, 0xe3, 0xf3, 0xff, 0xff, //0x0000378a jmp LBB0_527 + //0x0000378f LBB0_633 + 0x4c, 0x29, 0xe0, //0x0000378f subq %r12, %rax + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00003792 jmp LBB0_635 + //0x00003797 LBB0_634 + 0x48, 0x2b, 0x45, 0xc0, //0x00003797 subq $-64(%rbp), %rax + //0x0000379b LBB0_635 + 0x48, 0x01, 0xc8, //0x0000379b addq %rcx, %rax + 0x48, 0x89, 0xc2, //0x0000379e movq %rax, %rdx + 0xe9, 0x91, 0xfd, 0xff, 0xff, //0x000037a1 jmp LBB0_597 + //0x000037a6 LBB0_636 + 0x48, 0x2b, 0x45, 0xc0, //0x000037a6 subq $-64(%rbp), %rax + 0x48, 0x89, 0xc2, //0x000037aa movq %rax, %rdx + 0xe9, 0x85, 0xfd, 0xff, 0xff, //0x000037ad jmp LBB0_597 + //0x000037b2 LBB0_637 + 0x4c, 0x8b, 0x45, 0xd0, //0x000037b2 movq $-48(%rbp), %r8 + 0x49, 0x89, 0xcd, //0x000037b6 movq %rcx, %r13 + 0xe9, 0xef, 0xfc, 0xff, 0xff, //0x000037b9 jmp LBB0_588 + 0x90, 0x90, //0x000037be .p2align 2, 0x90 + // // .set L0_0_set_586, LBB0_586-LJTI0_0 + // // .set L0_0_set_517, LBB0_517-LJTI0_0 + // // .set L0_0_set_518, LBB0_518-LJTI0_0 // // .set L0_0_set_494, LBB0_494-LJTI0_0 - // // .set L0_0_set_522, LBB0_522-LJTI0_0 - // // .set L0_0_set_547, LBB0_547-LJTI0_0 - // // .set L0_0_set_507, LBB0_507-LJTI0_0 - // // .set L0_0_set_550, LBB0_550-LJTI0_0 - //0x00003738 LJTI0_0 - 0xf1, 0xfc, 0xff, 0xff, //0x00003738 .long L0_0_set_580 - 0x85, 0xf2, 0xff, 0xff, //0x0000373c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003740 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003744 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003748 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000374c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003750 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003754 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003758 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000375c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003760 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003764 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003768 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000376c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003770 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003774 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003778 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000377c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003780 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003784 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003788 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000378c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003790 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003794 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003798 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000379c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037a0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037a4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037a8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037ac .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037b0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037b4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037b8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037bc .long L0_0_set_511 - 0x8d, 0xf2, 0xff, 0xff, //0x000037c0 .long L0_0_set_512 - 0x85, 0xf2, 0xff, 0xff, //0x000037c4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037c8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037cc .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037d0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037d4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037d8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037dc .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037e0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037e4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037e8 .long L0_0_set_511 - 0x64, 0xf1, 0xff, 0xff, //0x000037ec .long L0_0_set_494 - 0x85, 0xf2, 0xff, 0xff, //0x000037f0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000037f4 .long L0_0_set_511 - 0x64, 0xf1, 0xff, 0xff, //0x000037f8 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x000037fc .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003800 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003804 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003808 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x0000380c .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003810 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003814 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x00003818 .long L0_0_set_494 - 0x64, 0xf1, 0xff, 0xff, //0x0000381c .long L0_0_set_494 - 0x85, 0xf2, 0xff, 0xff, //0x00003820 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003824 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003828 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000382c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003830 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003834 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003838 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000383c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003840 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003844 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003848 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000384c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003850 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003854 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003858 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000385c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003860 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003864 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003868 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000386c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003870 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003874 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003878 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000387c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003880 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003884 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003888 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000388c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003890 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003894 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003898 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000389c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038a0 .long L0_0_set_511 - 0x9c, 0xf3, 0xff, 0xff, //0x000038a4 .long L0_0_set_522 - 0x85, 0xf2, 0xff, 0xff, //0x000038a8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038ac .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038b0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038b4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038b8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038bc .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038c0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038c4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038c8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038cc .long L0_0_set_511 - 0xea, 0xf7, 0xff, 0xff, //0x000038d0 .long L0_0_set_547 - 0x85, 0xf2, 0xff, 0xff, //0x000038d4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038d8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038dc .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038e0 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038e4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038e8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038ec .long L0_0_set_511 - 0x49, 0xf2, 0xff, 0xff, //0x000038f0 .long L0_0_set_507 - 0x85, 0xf2, 0xff, 0xff, //0x000038f4 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038f8 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x000038fc .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003900 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003904 .long L0_0_set_511 - 0x49, 0xf2, 0xff, 0xff, //0x00003908 .long L0_0_set_507 - 0x85, 0xf2, 0xff, 0xff, //0x0000390c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003910 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003914 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003918 .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x0000391c .long L0_0_set_511 - 0x85, 0xf2, 0xff, 0xff, //0x00003920 .long L0_0_set_511 - 0x03, 0xf8, 0xff, 0xff, //0x00003924 .long L0_0_set_550 + // // .set L0_0_set_528, LBB0_528-LJTI0_0 + // // .set L0_0_set_553, LBB0_553-LJTI0_0 + // // .set L0_0_set_513, LBB0_513-LJTI0_0 + // // .set L0_0_set_556, LBB0_556-LJTI0_0 + //0x000037c0 LJTI0_0 + 0xfa, 0xfc, 0xff, 0xff, //0x000037c0 .long L0_0_set_586 + 0xa5, 0xf2, 0xff, 0xff, //0x000037c4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037c8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037cc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037d0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037d4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037d8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037dc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037e0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037e4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037e8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037ec .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037f0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037f4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037f8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000037fc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003800 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003804 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003808 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000380c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003810 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003814 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003818 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000381c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003820 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003824 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003828 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000382c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003830 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003834 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003838 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000383c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003840 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003844 .long L0_0_set_517 + 0xad, 0xf2, 0xff, 0xff, //0x00003848 .long L0_0_set_518 + 0xa5, 0xf2, 0xff, 0xff, //0x0000384c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003850 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003854 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003858 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000385c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003860 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003864 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003868 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000386c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003870 .long L0_0_set_517 + 0x1b, 0xf1, 0xff, 0xff, //0x00003874 .long L0_0_set_494 + 0xa5, 0xf2, 0xff, 0xff, //0x00003878 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000387c .long L0_0_set_517 + 0x1b, 0xf1, 0xff, 0xff, //0x00003880 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x00003884 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x00003888 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x0000388c .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x00003890 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x00003894 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x00003898 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x0000389c .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x000038a0 .long L0_0_set_494 + 0x1b, 0xf1, 0xff, 0xff, //0x000038a4 .long L0_0_set_494 + 0xa5, 0xf2, 0xff, 0xff, //0x000038a8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038ac .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038b0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038b4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038b8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038bc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038c0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038c4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038c8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038cc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038d0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038d4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038d8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038dc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038e0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038e4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038e8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038ec .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038f0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038f4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038f8 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000038fc .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003900 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003904 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003908 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000390c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003910 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003914 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003918 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000391c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003920 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003924 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003928 .long L0_0_set_517 + 0xc4, 0xf3, 0xff, 0xff, //0x0000392c .long L0_0_set_528 + 0xa5, 0xf2, 0xff, 0xff, //0x00003930 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003934 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003938 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000393c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003940 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003944 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003948 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000394c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003950 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003954 .long L0_0_set_517 + 0x03, 0xf8, 0xff, 0xff, //0x00003958 .long L0_0_set_553 + 0xa5, 0xf2, 0xff, 0xff, //0x0000395c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003960 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003964 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003968 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000396c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003970 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003974 .long L0_0_set_517 + 0x68, 0xf2, 0xff, 0xff, //0x00003978 .long L0_0_set_513 + 0xa5, 0xf2, 0xff, 0xff, //0x0000397c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003980 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003984 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003988 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000398c .long L0_0_set_517 + 0x68, 0xf2, 0xff, 0xff, //0x00003990 .long L0_0_set_513 + 0xa5, 0xf2, 0xff, 0xff, //0x00003994 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x00003998 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x0000399c .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000039a0 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000039a4 .long L0_0_set_517 + 0xa5, 0xf2, 0xff, 0xff, //0x000039a8 .long L0_0_set_517 + 0x1d, 0xf8, 0xff, 0xff, //0x000039ac .long L0_0_set_556 // // .set L0_1_set_58, LBB0_58-LJTI0_1 - // // .set L0_1_set_80, LBB0_80-LJTI0_1 + // // .set L0_1_set_82, LBB0_82-LJTI0_1 // // .set L0_1_set_62, LBB0_62-LJTI0_1 - // // .set L0_1_set_83, LBB0_83-LJTI0_1 + // // .set L0_1_set_80, LBB0_80-LJTI0_1 // // .set L0_1_set_60, LBB0_60-LJTI0_1 - // // .set L0_1_set_85, LBB0_85-LJTI0_1 - //0x00003928 LJTI0_1 - 0x91, 0xcb, 0xff, 0xff, //0x00003928 .long L0_1_set_58 - 0x74, 0xcd, 0xff, 0xff, //0x0000392c .long L0_1_set_80 - 0xbe, 0xcb, 0xff, 0xff, //0x00003930 .long L0_1_set_62 - 0x9f, 0xcd, 0xff, 0xff, //0x00003934 .long L0_1_set_83 - 0xa8, 0xcb, 0xff, 0xff, //0x00003938 .long L0_1_set_60 - 0xb5, 0xcd, 0xff, 0xff, //0x0000393c .long L0_1_set_85 - // // .set L0_2_set_580, LBB0_580-LJTI0_2 - // // .set L0_2_set_579, LBB0_579-LJTI0_2 + // // .set L0_1_set_124, LBB0_124-LJTI0_1 + //0x000039b0 LJTI0_1 + 0x09, 0xcb, 0xff, 0xff, //0x000039b0 .long L0_1_set_58 + 0x02, 0xcd, 0xff, 0xff, //0x000039b4 .long L0_1_set_82 + 0x36, 0xcb, 0xff, 0xff, //0x000039b8 .long L0_1_set_62 + 0xec, 0xcc, 0xff, 0xff, //0x000039bc .long L0_1_set_80 + 0x20, 0xcb, 0xff, 0xff, //0x000039c0 .long L0_1_set_60 + 0x98, 0xcf, 0xff, 0xff, //0x000039c4 .long L0_1_set_124 + // // .set L0_2_set_586, LBB0_586-LJTI0_2 + // // .set L0_2_set_585, LBB0_585-LJTI0_2 // // .set L0_2_set_229, LBB0_229-LJTI0_2 // // .set L0_2_set_249, LBB0_249-LJTI0_2 - // // .set L0_2_set_91, LBB0_91-LJTI0_2 + // // .set L0_2_set_88, LBB0_88-LJTI0_2 // // .set L0_2_set_285, LBB0_285-LJTI0_2 // // .set L0_2_set_287, LBB0_287-LJTI0_2 // // .set L0_2_set_291, LBB0_291-LJTI0_2 // // .set L0_2_set_297, LBB0_297-LJTI0_2 // // .set L0_2_set_300, LBB0_300-LJTI0_2 - //0x00003940 LJTI0_2 - 0xe9, 0xfa, 0xff, 0xff, //0x00003940 .long L0_2_set_580 - 0xc2, 0xfa, 0xff, 0xff, //0x00003944 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003948 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000394c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003950 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003954 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003958 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000395c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003960 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003964 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003968 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000396c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003970 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003974 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003978 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000397c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003980 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003984 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003988 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000398c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003990 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003994 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003998 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x0000399c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039a0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039a4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039a8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039ac .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039b0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039b4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039b8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039bc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039c0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039c4 .long L0_2_set_579 - 0x85, 0xd7, 0xff, 0xff, //0x000039c8 .long L0_2_set_229 - 0xc2, 0xfa, 0xff, 0xff, //0x000039cc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039d0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039d4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039d8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039dc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039e0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039e4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039e8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039ec .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039f0 .long L0_2_set_579 - 0x2c, 0xd9, 0xff, 0xff, //0x000039f4 .long L0_2_set_249 - 0xc2, 0xfa, 0xff, 0xff, //0x000039f8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x000039fc .long L0_2_set_579 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a00 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a04 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a08 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a0c .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a10 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a14 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a18 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a1c .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a20 .long L0_2_set_91 - 0xe9, 0xcd, 0xff, 0xff, //0x00003a24 .long L0_2_set_91 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a28 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a2c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a30 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a34 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a38 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a3c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a40 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a44 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a48 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a4c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a50 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a54 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a58 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a5c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a60 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a64 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a68 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a6c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a70 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a74 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a78 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a7c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a80 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a84 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a88 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a8c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a90 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a94 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a98 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003a9c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003aa0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003aa4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003aa8 .long L0_2_set_579 - 0x61, 0xdb, 0xff, 0xff, //0x00003aac .long L0_2_set_285 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ab0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ab4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ab8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003abc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ac0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ac4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ac8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003acc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ad0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ad4 .long L0_2_set_579 - 0x85, 0xdb, 0xff, 0xff, //0x00003ad8 .long L0_2_set_287 - 0xc2, 0xfa, 0xff, 0xff, //0x00003adc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ae0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ae4 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003ae8 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003aec .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003af0 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003af4 .long L0_2_set_579 - 0xbe, 0xdb, 0xff, 0xff, //0x00003af8 .long L0_2_set_291 - 0xc2, 0xfa, 0xff, 0xff, //0x00003afc .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b00 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b04 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b08 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b0c .long L0_2_set_579 - 0xea, 0xdb, 0xff, 0xff, //0x00003b10 .long L0_2_set_297 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b14 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b18 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b1c .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b20 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b24 .long L0_2_set_579 - 0xc2, 0xfa, 0xff, 0xff, //0x00003b28 .long L0_2_set_579 - 0x26, 0xdc, 0xff, 0xff, //0x00003b2c .long L0_2_set_300 - // // .set L0_3_set_274, LBB0_274-LJTI0_3 + //0x000039c8 LJTI0_2 + 0xf2, 0xfa, 0xff, 0xff, //0x000039c8 .long L0_2_set_586 + 0xcb, 0xfa, 0xff, 0xff, //0x000039cc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039d0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039d4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039d8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039dc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039e0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039e4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039e8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039ec .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039f0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039f4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039f8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x000039fc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a00 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a04 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a08 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a0c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a10 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a14 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a18 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a1c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a20 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a24 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a28 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a2c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a30 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a34 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a38 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a3c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a40 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a44 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a48 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a4c .long L0_2_set_585 + 0x1e, 0xd7, 0xff, 0xff, //0x00003a50 .long L0_2_set_229 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a54 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a58 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a5c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a60 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a64 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a68 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a6c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a70 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a74 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a78 .long L0_2_set_585 + 0xc4, 0xd8, 0xff, 0xff, //0x00003a7c .long L0_2_set_249 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a80 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003a84 .long L0_2_set_585 + 0x37, 0xcd, 0xff, 0xff, //0x00003a88 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003a8c .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003a90 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003a94 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003a98 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003a9c .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003aa0 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003aa4 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003aa8 .long L0_2_set_88 + 0x37, 0xcd, 0xff, 0xff, //0x00003aac .long L0_2_set_88 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ab0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ab4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ab8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003abc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ac0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ac4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ac8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003acc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ad0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ad4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ad8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003adc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ae0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ae4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ae8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003aec .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003af0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003af4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003af8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003afc .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b00 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b04 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b08 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b0c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b10 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b14 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b18 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b1c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b20 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b24 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b28 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b2c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b30 .long L0_2_set_585 + 0x00, 0xdb, 0xff, 0xff, //0x00003b34 .long L0_2_set_285 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b38 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b3c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b40 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b44 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b48 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b4c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b50 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b54 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b58 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b5c .long L0_2_set_585 + 0x24, 0xdb, 0xff, 0xff, //0x00003b60 .long L0_2_set_287 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b64 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b68 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b6c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b70 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b74 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b78 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b7c .long L0_2_set_585 + 0x5d, 0xdb, 0xff, 0xff, //0x00003b80 .long L0_2_set_291 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b84 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b88 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b8c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b90 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b94 .long L0_2_set_585 + 0x89, 0xdb, 0xff, 0xff, //0x00003b98 .long L0_2_set_297 + 0xcb, 0xfa, 0xff, 0xff, //0x00003b9c .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ba0 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ba4 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003ba8 .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003bac .long L0_2_set_585 + 0xcb, 0xfa, 0xff, 0xff, //0x00003bb0 .long L0_2_set_585 + 0xc5, 0xdb, 0xff, 0xff, //0x00003bb4 .long L0_2_set_300 + // // .set L0_3_set_281, LBB0_281-LJTI0_3 // // .set L0_3_set_330, LBB0_330-LJTI0_3 - // // .set L0_3_set_280, LBB0_280-LJTI0_3 // // .set L0_3_set_283, LBB0_283-LJTI0_3 - //0x00003b30 LJTI0_3 - 0xfc, 0xd8, 0xff, 0xff, //0x00003b30 .long L0_3_set_274 - 0x94, 0xdc, 0xff, 0xff, //0x00003b34 .long L0_3_set_330 - 0xfc, 0xd8, 0xff, 0xff, //0x00003b38 .long L0_3_set_274 - 0x42, 0xd9, 0xff, 0xff, //0x00003b3c .long L0_3_set_280 - 0x94, 0xdc, 0xff, 0xff, //0x00003b40 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b44 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b48 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b4c .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b50 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b54 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b58 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b5c .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b60 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b64 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b68 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b6c .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b70 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b74 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b78 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b7c .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b80 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b84 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b88 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b8c .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b90 .long L0_3_set_330 - 0x94, 0xdc, 0xff, 0xff, //0x00003b94 .long L0_3_set_330 - 0x5e, 0xd9, 0xff, 0xff, //0x00003b98 .long L0_3_set_283 - // // .set L0_4_set_116, LBB0_116-LJTI0_4 - // // .set L0_4_set_198, LBB0_198-LJTI0_4 + // // .set L0_3_set_275, LBB0_275-LJTI0_3 + //0x00003bb8 LJTI0_3 + 0xea, 0xd8, 0xff, 0xff, //0x00003bb8 .long L0_3_set_281 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bbc .long L0_3_set_330 + 0xea, 0xd8, 0xff, 0xff, //0x00003bc0 .long L0_3_set_281 + 0xfd, 0xd8, 0xff, 0xff, //0x00003bc4 .long L0_3_set_283 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bc8 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bcc .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bd0 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bd4 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bd8 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bdc .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003be0 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003be4 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003be8 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bec .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bf0 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bf4 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bf8 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003bfc .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c00 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c04 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c08 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c0c .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c10 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c14 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c18 .long L0_3_set_330 + 0x3c, 0xdc, 0xff, 0xff, //0x00003c1c .long L0_3_set_330 + 0x9d, 0xd8, 0xff, 0xff, //0x00003c20 .long L0_3_set_275 + // // .set L0_4_set_113, LBB0_113-LJTI0_4 + // // .set L0_4_set_200, LBB0_200-LJTI0_4 + // // .set L0_4_set_119, LBB0_119-LJTI0_4 // // .set L0_4_set_122, LBB0_122-LJTI0_4 - // // .set L0_4_set_125, LBB0_125-LJTI0_4 - //0x00003b9c LJTI0_4 - 0x54, 0xcd, 0xff, 0xff, //0x00003b9c .long L0_4_set_116 - 0xa2, 0xd3, 0xff, 0xff, //0x00003ba0 .long L0_4_set_198 - 0x54, 0xcd, 0xff, 0xff, //0x00003ba4 .long L0_4_set_116 - 0x9d, 0xcd, 0xff, 0xff, //0x00003ba8 .long L0_4_set_122 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bac .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bb0 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bb4 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bb8 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bbc .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bc0 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bc4 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bc8 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bcc .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bd0 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bd4 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bd8 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bdc .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003be0 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003be4 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003be8 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bec .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bf0 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bf4 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bf8 .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003bfc .long L0_4_set_198 - 0xa2, 0xd3, 0xff, 0xff, //0x00003c00 .long L0_4_set_198 - 0xb9, 0xcd, 0xff, 0xff, //0x00003c04 .long L0_4_set_125 - //0x00003c08 .p2align 2, 0x00 - //0x00003c08 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00003c08 .long 2 + //0x00003c24 LJTI0_4 + 0xa7, 0xcc, 0xff, 0xff, //0x00003c24 .long L0_4_set_113 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c28 .long L0_4_set_200 + 0xa7, 0xcc, 0xff, 0xff, //0x00003c2c .long L0_4_set_113 + 0xf5, 0xcc, 0xff, 0xff, //0x00003c30 .long L0_4_set_119 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c34 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c38 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c3c .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c40 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c44 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c48 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c4c .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c50 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c54 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c58 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c5c .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c60 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c64 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c68 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c6c .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c70 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c74 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c78 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c7c .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c80 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c84 .long L0_4_set_200 + 0x3a, 0xd3, 0xff, 0xff, //0x00003c88 .long L0_4_set_200 + 0x11, 0xcd, 0xff, 0xff, //0x00003c8c .long L0_4_set_122 + //0x00003c90 .p2align 2, 0x00 + //0x00003c90 _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x00003c90 .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_subr.go b/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_subr.go index 564b17ee3..3208df293 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_subr.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_subr.go @@ -16,7 +16,7 @@ const ( ) const ( - _size__validate_one = 15328 + _size__validate_one = 15436 ) var ( @@ -28,15 +28,15 @@ var ( {0xc, 32}, {0xd, 40}, {0x14, 48}, - {0x394e, 184}, - {0x394f, 48}, - {0x3951, 40}, - {0x3953, 32}, - {0x3955, 24}, - {0x3957, 16}, - {0x3958, 8}, - {0x3959, 0}, - {0x3be0, 184}, + {0x39b6, 184}, + {0x39b7, 48}, + {0x39b9, 40}, + {0x39bb, 32}, + {0x39bd, 24}, + {0x39bf, 16}, + {0x39c0, 8}, + {0x39c1, 0}, + {0x3c4c, 184}, } ) diff --git a/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_text_amd64.go b/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_text_amd64.go index f19e406a8..30ab7556b 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_text_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/native/sse/validate_one_text_amd64.go @@ -56,815 +56,818 @@ var _text_validate_one = []byte{ 0x48, 0x89, 0x7d, 0xa8, //0x0000011e movq %rdi, $-88(%rbp) 0x0f, 0x10, 0x05, 0xd7, 0xfe, 0xff, 0xff, //0x00000122 movups $-297(%rip), %xmm0 /* LCPI0_0+0(%rip) */ 0x0f, 0x11, 0x02, //0x00000129 movups %xmm0, (%rdx) - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, %rcx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000133 movabsq $4294977024, %r11 - 0xf3, 0x0f, 0x6f, 0x05, 0xcb, 0xfe, 0xff, 0xff, //0x0000013d movdqu $-309(%rip), %xmm0 /* LCPI0_1+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x0d, 0xd3, 0xfe, 0xff, 0xff, //0x00000145 movdqu $-301(%rip), %xmm1 /* LCPI0_2+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xda, 0xfe, 0xff, 0xff, //0x0000014d movdqu $-294(%rip), %xmm12 /* LCPI0_3+0(%rip) */ - 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000156 pcmpeqd %xmm10, %xmm10 - 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4c, 0xff, 0xff, 0xff, //0x0000015b movdqu $-180(%rip), %xmm15 /* LCPI0_11+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x23, 0xff, 0xff, 0xff, //0x00000164 movdqu $-221(%rip), %xmm9 /* LCPI0_9+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x7a, 0xff, 0xff, 0xff, //0x0000016d movdqu $-134(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x01, 0xff, 0xff, 0xff, //0x00000176 movdqu $-255(%rip), %xmm14 /* LCPI0_8+0(%rip) */ - 0xf3, 0x0f, 0x6f, 0x15, 0xe9, 0xfe, 0xff, 0xff, //0x0000017f movdqu $-279(%rip), %xmm2 /* LCPI0_7+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb0, 0xfe, 0xff, 0xff, //0x00000187 movdqu $-336(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb7, 0xfe, 0xff, 0xff, //0x00000190 movdqu $-329(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x48, 0x89, 0x75, 0xd0, //0x00000199 movq %rsi, $-48(%rbp) - 0x48, 0x89, 0x55, 0xb8, //0x0000019d movq %rdx, $-72(%rbp) - 0xe9, 0x7a, 0x00, 0x00, 0x00, //0x000001a1 jmp LBB0_6 - //0x000001a6 LBB0_613 - 0x66, 0x0f, 0xbc, 0xc2, //0x000001a6 bsfw %dx, %ax - 0x0f, 0xb7, 0xc0, //0x000001aa movzwl %ax, %eax - 0x48, 0x29, 0xc8, //0x000001ad subq %rcx, %rax - 0x49, 0x89, 0x06, //0x000001b0 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x000001b3 testq %rsi, %rsi - 0x0f, 0x8e, 0x9d, 0x38, 0x00, 0x00, //0x000001b6 jle LBB0_614 - 0x90, 0x90, 0x90, 0x90, //0x000001bc .p2align 4, 0x90 - //0x000001c0 LBB0_4 - 0x4d, 0x8b, 0x45, 0x00, //0x000001c0 movq (%r13), %r8 - 0x48, 0x8b, 0x75, 0x90, //0x000001c4 movq $-112(%rbp), %rsi - 0x48, 0x89, 0xf1, //0x000001c8 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x000001cb movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x000001ce testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x00, 0x00, 0x00, //0x000001d1 jne LBB0_6 - 0xe9, 0x6b, 0x38, 0x00, 0x00, //0x000001d7 jmp LBB0_638 - //0x000001dc LBB0_1 - 0x49, 0xf7, 0xdb, //0x000001dc negq %r11 - 0x4d, 0x89, 0xdd, //0x000001df movq %r11, %r13 - //0x000001e2 LBB0_2 - 0x4d, 0x85, 0xed, //0x000001e2 testq %r13, %r13 - 0x0f, 0x88, 0x47, 0x38, 0x00, 0x00, //0x000001e5 js LBB0_612 - //0x000001eb LBB0_3 - 0x49, 0x01, 0xc5, //0x000001eb addq %rax, %r13 - 0x4c, 0x8b, 0x75, 0xd0, //0x000001ee movq $-48(%rbp), %r14 - 0x4d, 0x89, 0x2e, //0x000001f2 movq %r13, (%r14) - 0x48, 0x85, 0xc0, //0x000001f5 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x000001f8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001fc movabsq $4294977024, %r11 - 0x0f, 0x89, 0xb4, 0xff, 0xff, 0xff, //0x00000206 jns LBB0_4 - 0xe9, 0x36, 0x38, 0x00, 0x00, //0x0000020c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000211 .p2align 4, 0x90 - //0x00000220 LBB0_6 - 0x48, 0x8b, 0x45, 0xa8, //0x00000220 movq $-88(%rbp), %rax - 0x4c, 0x8b, 0x20, //0x00000224 movq (%rax), %r12 - 0x48, 0x8b, 0x40, 0x08, //0x00000227 movq $8(%rax), %rax - 0x49, 0x8b, 0x16, //0x0000022b movq (%r14), %rdx - 0x48, 0x39, 0xc2, //0x0000022e cmpq %rax, %rdx - 0x0f, 0x83, 0x39, 0x00, 0x00, 0x00, //0x00000231 jae LBB0_11 - 0x41, 0x8a, 0x1c, 0x14, //0x00000237 movb (%r12,%rdx), %bl - 0x80, 0xfb, 0x0d, //0x0000023b cmpb $13, %bl - 0x0f, 0x84, 0x2c, 0x00, 0x00, 0x00, //0x0000023e je LBB0_11 - 0x80, 0xfb, 0x20, //0x00000244 cmpb $32, %bl - 0x0f, 0x84, 0x23, 0x00, 0x00, 0x00, //0x00000247 je LBB0_11 - 0x80, 0xc3, 0xf7, //0x0000024d addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000250 cmpb $1, %bl - 0x0f, 0x86, 0x17, 0x00, 0x00, 0x00, //0x00000253 jbe LBB0_11 - 0x48, 0x89, 0xd6, //0x00000259 movq %rdx, %rsi - 0xe9, 0x07, 0x01, 0x00, 0x00, //0x0000025c jmp LBB0_32 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000261 .p2align 4, 0x90 - //0x00000270 LBB0_11 - 0x48, 0x8d, 0x72, 0x01, //0x00000270 leaq $1(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x00000274 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000277 jae LBB0_15 - 0x41, 0x8a, 0x1c, 0x34, //0x0000027d movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x00000281 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000284 je LBB0_15 - 0x80, 0xfb, 0x20, //0x0000028a cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000028d je LBB0_15 - 0x80, 0xc3, 0xf7, //0x00000293 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x00000296 cmpb $1, %bl - 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000299 ja LBB0_32 - 0x90, //0x0000029f .p2align 4, 0x90 - //0x000002a0 LBB0_15 - 0x48, 0x8d, 0x72, 0x02, //0x000002a0 leaq $2(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002a4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002a7 jae LBB0_19 - 0x41, 0x8a, 0x1c, 0x34, //0x000002ad movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002b1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002b4 je LBB0_19 - 0x80, 0xfb, 0x20, //0x000002ba cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002bd je LBB0_19 - 0x80, 0xc3, 0xf7, //0x000002c3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002c6 cmpb $1, %bl - 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x000002c9 ja LBB0_32 - 0x90, //0x000002cf .p2align 4, 0x90 - //0x000002d0 LBB0_19 - 0x48, 0x8d, 0x72, 0x03, //0x000002d0 leaq $3(%rdx), %rsi - 0x48, 0x39, 0xc6, //0x000002d4 cmpq %rax, %rsi - 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x000002d7 jae LBB0_23 - 0x41, 0x8a, 0x1c, 0x34, //0x000002dd movb (%r12,%rsi), %bl - 0x80, 0xfb, 0x0d, //0x000002e1 cmpb $13, %bl - 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002e4 je LBB0_23 - 0x80, 0xfb, 0x20, //0x000002ea cmpb $32, %bl - 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ed je LBB0_23 - 0x80, 0xc3, 0xf7, //0x000002f3 addb $-9, %bl - 0x80, 0xfb, 0x01, //0x000002f6 cmpb $1, %bl - 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002f9 ja LBB0_32 - 0x90, //0x000002ff .p2align 4, 0x90 - //0x00000300 LBB0_23 - 0x48, 0x83, 0xc2, 0x04, //0x00000300 addq $4, %rdx - 0x48, 0x39, 0xd0, //0x00000304 cmpq %rdx, %rax - 0x0f, 0x86, 0xd0, 0x36, 0x00, 0x00, //0x00000307 jbe LBB0_603 - 0x48, 0x39, 0xd0, //0x0000030d cmpq %rdx, %rax - 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x00000310 je LBB0_29 - 0x49, 0x8d, 0x34, 0x04, //0x00000316 leaq (%r12,%rax), %rsi - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000031a .p2align 4, 0x90 - //0x00000320 LBB0_26 - 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x00000320 movsbl (%r12,%rdx), %edi - 0x83, 0xff, 0x20, //0x00000325 cmpl $32, %edi - 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x00000328 ja LBB0_31 - 0x49, 0x0f, 0xa3, 0xfb, //0x0000032e btq %rdi, %r11 - 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x00000332 jae LBB0_31 - 0x48, 0x83, 0xc2, 0x01, //0x00000338 addq $1, %rdx - 0x48, 0x39, 0xd0, //0x0000033c cmpq %rdx, %rax - 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x0000033f jne LBB0_26 - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000345 jmp LBB0_30 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000034a .p2align 4, 0x90 - //0x00000350 LBB0_29 - 0x4c, 0x01, 0xe2, //0x00000350 addq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00000353 movq %rdx, %rsi - //0x00000356 LBB0_30 - 0x4c, 0x29, 0xe6, //0x00000356 subq %r12, %rsi - 0x48, 0x89, 0xf2, //0x00000359 movq %rsi, %rdx - //0x0000035c LBB0_31 - 0x48, 0x89, 0xd6, //0x0000035c movq %rdx, %rsi - 0x48, 0x39, 0xc2, //0x0000035f cmpq %rax, %rdx - 0x0f, 0x83, 0x78, 0x36, 0x00, 0x00, //0x00000362 jae LBB0_604 - //0x00000368 LBB0_32 - 0x48, 0x8d, 0x46, 0x01, //0x00000368 leaq $1(%rsi), %rax - 0x49, 0x89, 0x06, //0x0000036c movq %rax, (%r14) - 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x0000036f movsbl (%r12,%rsi), %edi - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000374 movq $-1, %rax - 0x85, 0xff, //0x0000037b testl %edi, %edi - 0x0f, 0x84, 0xc4, 0x36, 0x00, 0x00, //0x0000037d je LBB0_638 - 0x4d, 0x8b, 0x4d, 0x00, //0x00000383 movq (%r13), %r9 - 0x4d, 0x8d, 0x41, 0xff, //0x00000387 leaq $-1(%r9), %r8 - 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000038b movl (%r13,%r9,8), %ebx - 0x48, 0x83, 0xf9, 0xff, //0x00000390 cmpq $-1, %rcx - 0x48, 0x0f, 0x45, 0xf1, //0x00000394 cmovneq %rcx, %rsi - 0x83, 0xc3, 0xff, //0x00000398 addl $-1, %ebx - 0x83, 0xfb, 0x05, //0x0000039b cmpl $5, %ebx - 0x0f, 0x87, 0x82, 0x02, 0x00, 0x00, //0x0000039e ja LBB0_78 - 0x48, 0x8d, 0x15, 0x35, 0x39, 0x00, 0x00, //0x000003a4 leaq $14645(%rip), %rdx /* LJTI0_0+0(%rip) */ - 0x48, 0x63, 0x0c, 0x9a, //0x000003ab movslq (%rdx,%rbx,4), %rcx - 0x48, 0x01, 0xd1, //0x000003af addq %rdx, %rcx - 0xff, 0xe1, //0x000003b2 jmpq *%rcx - //0x000003b4 LBB0_35 - 0x83, 0xff, 0x2c, //0x000003b4 cmpl $44, %edi - 0x0f, 0x84, 0xec, 0x04, 0x00, 0x00, //0x000003b7 je LBB0_117 - 0x83, 0xff, 0x5d, //0x000003bd cmpl $93, %edi - 0x0f, 0x84, 0x48, 0x02, 0x00, 0x00, //0x000003c0 je LBB0_37 - 0xe9, 0x75, 0x36, 0x00, 0x00, //0x000003c6 jmp LBB0_637 - //0x000003cb LBB0_38 - 0x40, 0x80, 0xff, 0x5d, //0x000003cb cmpb $93, %dil - 0x0f, 0x84, 0x39, 0x02, 0x00, 0x00, //0x000003cf je LBB0_37 - 0x48, 0x89, 0x75, 0x90, //0x000003d5 movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000003d9 movq $1, (%r13,%r9,8) - 0x83, 0xff, 0x7b, //0x000003e2 cmpl $123, %edi - 0x0f, 0x86, 0x4c, 0x02, 0x00, 0x00, //0x000003e5 jbe LBB0_79 - 0xe9, 0x50, 0x36, 0x00, 0x00, //0x000003eb jmp LBB0_637 - //0x000003f0 LBB0_40 - 0x40, 0x80, 0xff, 0x22, //0x000003f0 cmpb $34, %dil - 0x0f, 0x85, 0x46, 0x36, 0x00, 0x00, //0x000003f4 jne LBB0_637 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003fa movq $4, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x00000403 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00000407 testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x0000040a movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x7c, 0x06, 0x00, 0x00, //0x0000040e jne LBB0_125 - 0x49, 0x8b, 0x16, //0x00000414 movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00000417 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x0000041b movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x0000041f testb $32, %cl - 0x48, 0x89, 0x45, 0xa0, //0x00000422 movq %rax, $-96(%rbp) - 0x48, 0x89, 0x55, 0xb0, //0x00000426 movq %rdx, $-80(%rbp) - 0x0f, 0x85, 0x5e, 0x09, 0x00, 0x00, //0x0000042a jne LBB0_157 - 0x49, 0x89, 0xc1, //0x00000430 movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00000433 subq %rdx, %r9 - 0x0f, 0x84, 0xc2, 0x37, 0x00, 0x00, //0x00000436 je LBB0_642 - 0x49, 0x83, 0xf9, 0x40, //0x0000043c cmpq $64, %r9 - 0x0f, 0x82, 0x4a, 0x2a, 0x00, 0x00, //0x00000440 jb LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00000446 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x0000044a movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000044d notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000450 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000458 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000045b .p2align 4, 0x90 - //0x00000460 LBB0_46 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000460 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000466 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000046d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000474 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000047b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000047f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000483 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000488 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000048c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000490 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000494 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000498 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000049c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000004a0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000004a4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000004a8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000004ac pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000004b0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000004b5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000004b9 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x000004bd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000004c1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000004c5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000004c9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000004ce shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000004d2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000004d6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000004d9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000004dd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000004e0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000004e3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000004e7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000004eb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000004ee shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000004f2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000004f5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004f8 jne LBB0_55 - 0x4d, 0x85, 0xc0, //0x000004fe testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000501 jne LBB0_57 - 0x45, 0x31, 0xc0, //0x00000507 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000050a testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000050d jne LBB0_58 - //0x00000513 LBB0_49 - 0x49, 0x83, 0xc1, 0xc0, //0x00000513 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00000517 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x0000051b addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x0000051f cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000523 ja LBB0_46 - 0xe9, 0xce, 0x21, 0x00, 0x00, //0x00000529 jmp LBB0_50 - //0x0000052e LBB0_55 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000052e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000533 jne LBB0_57 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000539 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x0000053d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000540 movq %rcx, $-56(%rbp) - //0x00000544 LBB0_57 - 0x4c, 0x89, 0xc1, //0x00000544 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000547 notq %rcx - 0x4c, 0x21, 0xd9, //0x0000054a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000054d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000551 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000554 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000557 notq %rsi - 0x4c, 0x21, 0xde, //0x0000055a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000055d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000567 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x0000056a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x0000056d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000570 setb %r8b - 0x48, 0x01, 0xf6, //0x00000574 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000577 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000581 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000584 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000587 notq %rsi - 0x49, 0x21, 0xf2, //0x0000058a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x0000058d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000590 je LBB0_49 - //0x00000596 LBB0_58 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000596 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x0000059a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000059d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000005a1 movabsq $4294977024, %r11 - 0xe9, 0xd6, 0x0c, 0x00, 0x00, //0x000005ab jmp LBB0_223 - //0x000005b0 LBB0_59 - 0x40, 0x80, 0xff, 0x3a, //0x000005b0 cmpb $58, %dil - 0x0f, 0x85, 0x86, 0x34, 0x00, 0x00, //0x000005b4 jne LBB0_637 - 0x48, 0x89, 0x75, 0x90, //0x000005ba movq %rsi, $-112(%rbp) - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005be movq $0, (%r13,%r9,8) - 0xe9, 0xf4, 0xfb, 0xff, 0xff, //0x000005c7 jmp LBB0_4 - //0x000005cc LBB0_61 - 0x83, 0xff, 0x2c, //0x000005cc cmpl $44, %edi - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000005cf jne LBB0_62 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000005d5 cmpq $4095, %r9 - 0x0f, 0x8f, 0x0a, 0x34, 0x00, 0x00, //0x000005dc jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000005e2 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000005e6 leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000005ea movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005ee movq $3, $8(%r13,%r9,8) - 0xe9, 0xc4, 0xfb, 0xff, 0xff, //0x000005f7 jmp LBB0_4 - //0x000005fc LBB0_63 - 0x83, 0xff, 0x22, //0x000005fc cmpl $34, %edi - 0x0f, 0x84, 0xcb, 0x02, 0x00, 0x00, //0x000005ff je LBB0_64 - //0x00000605 LBB0_62 - 0x83, 0xff, 0x7d, //0x00000605 cmpl $125, %edi - 0x0f, 0x85, 0x32, 0x34, 0x00, 0x00, //0x00000608 jne LBB0_637 - //0x0000060e LBB0_37 - 0x4d, 0x89, 0x45, 0x00, //0x0000060e movq %r8, (%r13) - 0x48, 0x89, 0xf1, //0x00000612 movq %rsi, %rcx - 0x48, 0x89, 0xf0, //0x00000615 movq %rsi, %rax - 0x4d, 0x85, 0xc0, //0x00000618 testq %r8, %r8 - 0x0f, 0x85, 0xff, 0xfb, 0xff, 0xff, //0x0000061b jne LBB0_6 - 0xe9, 0x21, 0x34, 0x00, 0x00, //0x00000621 jmp LBB0_638 - //0x00000626 LBB0_78 - 0x48, 0x89, 0x75, 0x90, //0x00000626 movq %rsi, $-112(%rbp) - 0x4d, 0x89, 0x45, 0x00, //0x0000062a movq %r8, (%r13) - 0x83, 0xff, 0x7b, //0x0000062e cmpl $123, %edi - 0x0f, 0x87, 0x09, 0x34, 0x00, 0x00, //0x00000631 ja LBB0_637 - //0x00000637 LBB0_79 - 0x89, 0xf9, //0x00000637 movl %edi, %ecx - 0x48, 0x8d, 0x15, 0xb8, 0x36, 0x00, 0x00, //0x00000639 leaq $14008(%rip), %rdx /* LJTI0_1+0(%rip) */ - 0x48, 0x63, 0x0c, 0x8a, //0x00000640 movslq (%rdx,%rcx,4), %rcx - 0x48, 0x01, 0xd1, //0x00000644 addq %rdx, %rcx - 0xff, 0xe1, //0x00000647 jmpq *%rcx - //0x00000649 LBB0_80 - 0x48, 0x8b, 0x45, 0xa8, //0x00000649 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x0000064d movq $8(%rax), %rdi - 0x49, 0x8b, 0x36, //0x00000651 movq (%r14), %rsi - 0xf6, 0x45, 0x98, 0x40, //0x00000654 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x40, 0x05, 0x00, 0x00, //0x00000658 jne LBB0_135 - 0x48, 0x8d, 0x46, 0xff, //0x0000065e leaq $-1(%rsi), %rax - 0x48, 0x29, 0xc7, //0x00000662 subq %rax, %rdi - 0x0f, 0x84, 0xc0, 0x33, 0x00, 0x00, //0x00000665 je LBB0_611 - 0x4d, 0x8d, 0x34, 0x34, //0x0000066b leaq (%r12,%rsi), %r14 - 0x49, 0x83, 0xc6, 0xff, //0x0000066f addq $-1, %r14 - 0x41, 0x80, 0x3e, 0x30, //0x00000673 cmpb $48, (%r14) - 0x0f, 0x85, 0x37, 0x00, 0x00, 0x00, //0x00000677 jne LBB0_86 - 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x0000067d movl $1, %r13d - 0x48, 0x83, 0xff, 0x01, //0x00000683 cmpq $1, %rdi - 0x0f, 0x84, 0x5e, 0xfb, 0xff, 0xff, //0x00000687 je LBB0_3 - 0x41, 0x8a, 0x0c, 0x34, //0x0000068d movb (%r12,%rsi), %cl - 0x80, 0xc1, 0xd2, //0x00000691 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x00000694 cmpb $55, %cl - 0x0f, 0x87, 0x4e, 0xfb, 0xff, 0xff, //0x00000697 ja LBB0_3 - 0x0f, 0xb6, 0xc9, //0x0000069d movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000006a0 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x000006aa btq %rcx, %rdx - 0x0f, 0x83, 0x37, 0xfb, 0xff, 0xff, //0x000006ae jae LBB0_3 - //0x000006b4 LBB0_86 - 0x48, 0x89, 0x75, 0xc0, //0x000006b4 movq %rsi, $-64(%rbp) - 0x48, 0x83, 0xff, 0x10, //0x000006b8 cmpq $16, %rdi - 0x0f, 0x82, 0x14, 0x27, 0x00, 0x00, //0x000006bc jb LBB0_472 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000006c2 movq $-1, %r9 - 0x45, 0x31, 0xed, //0x000006c9 xorl %r13d, %r13d - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x000006cc movq $-1, %r15 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000006d3 movq $-1, %r8 - 0x49, 0x89, 0xfa, //0x000006da movq %rdi, %r10 - 0x90, 0x90, 0x90, //0x000006dd .p2align 4, 0x90 - //0x000006e0 LBB0_88 - 0xf3, 0x43, 0x0f, 0x6f, 0x1c, 0x2e, //0x000006e0 movdqu (%r14,%r13), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006e6 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0xae, 0xf9, 0xff, 0xff, //0x000006ea pcmpgtb $-1618(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006f2 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000006f7 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x000006fb pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x000006ff movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0xb5, 0xf9, 0xff, 0xff, //0x00000703 pcmpeqb $-1611(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000070b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0xb9, 0xf9, 0xff, 0xff, //0x0000070f pcmpeqb $-1607(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00000717 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000071b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000071f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0xb4, 0xf9, 0xff, 0xff, //0x00000724 pcmpeqb $-1612(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000072c pcmpeqb %xmm11, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00000731 pmovmskb %xmm4, %edx - 0x66, 0x0f, 0xeb, 0xe3, //0x00000735 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x00000739 por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x0000073d por %xmm4, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000741 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0xd7, 0xf6, //0x00000746 pmovmskb %xmm6, %esi - 0x66, 0x0f, 0xd7, 0xcd, //0x0000074a pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x0000074e notl %ecx - 0x0f, 0xbc, 0xc9, //0x00000750 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x00000753 cmpl $16, %ecx - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00000756 je LBB0_90 - 0xbb, 0xff, 0xff, 0xff, 0xff, //0x0000075c movl $-1, %ebx - 0xd3, 0xe3, //0x00000761 shll %cl, %ebx - 0xf7, 0xd3, //0x00000763 notl %ebx - 0x41, 0x21, 0xdb, //0x00000765 andl %ebx, %r11d - 0x21, 0xda, //0x00000768 andl %ebx, %edx - 0x21, 0xf3, //0x0000076a andl %esi, %ebx - 0x89, 0xde, //0x0000076c movl %ebx, %esi - //0x0000076e LBB0_90 - 0x41, 0x8d, 0x5b, 0xff, //0x0000076e leal $-1(%r11), %ebx - 0x44, 0x21, 0xdb, //0x00000772 andl %r11d, %ebx - 0x0f, 0x85, 0x12, 0x1f, 0x00, 0x00, //0x00000775 jne LBB0_429 - 0x8d, 0x5a, 0xff, //0x0000077b leal $-1(%rdx), %ebx - 0x21, 0xd3, //0x0000077e andl %edx, %ebx - 0x0f, 0x85, 0x07, 0x1f, 0x00, 0x00, //0x00000780 jne LBB0_429 - 0x8d, 0x5e, 0xff, //0x00000786 leal $-1(%rsi), %ebx - 0x21, 0xf3, //0x00000789 andl %esi, %ebx - 0x0f, 0x85, 0xfc, 0x1e, 0x00, 0x00, //0x0000078b jne LBB0_429 - 0x45, 0x85, 0xdb, //0x00000791 testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000794 je LBB0_96 - 0x41, 0x0f, 0xbc, 0xdb, //0x0000079a bsfl %r11d, %ebx - 0x49, 0x83, 0xf8, 0xff, //0x0000079e cmpq $-1, %r8 - 0x0f, 0x85, 0x75, 0x22, 0x00, 0x00, //0x000007a2 jne LBB0_436 - 0x4c, 0x01, 0xeb, //0x000007a8 addq %r13, %rbx - 0x49, 0x89, 0xd8, //0x000007ab movq %rbx, %r8 - //0x000007ae LBB0_96 - 0x85, 0xd2, //0x000007ae testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007b0 je LBB0_99 - 0x0f, 0xbc, 0xd2, //0x000007b6 bsfl %edx, %edx - 0x49, 0x83, 0xff, 0xff, //0x000007b9 cmpq $-1, %r15 - 0x0f, 0x85, 0xd1, 0x20, 0x00, 0x00, //0x000007bd jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007c3 addq %r13, %rdx - 0x49, 0x89, 0xd7, //0x000007c6 movq %rdx, %r15 - //0x000007c9 LBB0_99 - 0x85, 0xf6, //0x000007c9 testl %esi, %esi - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000007cb je LBB0_102 - 0x0f, 0xbc, 0xd6, //0x000007d1 bsfl %esi, %edx - 0x49, 0x83, 0xf9, 0xff, //0x000007d4 cmpq $-1, %r9 - 0x0f, 0x85, 0xb6, 0x20, 0x00, 0x00, //0x000007d8 jne LBB0_435 - 0x4c, 0x01, 0xea, //0x000007de addq %r13, %rdx - 0x49, 0x89, 0xd1, //0x000007e1 movq %rdx, %r9 - //0x000007e4 LBB0_102 - 0x83, 0xf9, 0x10, //0x000007e4 cmpl $16, %ecx - 0x0f, 0x85, 0xbb, 0x07, 0x00, 0x00, //0x000007e7 jne LBB0_183 - 0x49, 0x83, 0xc2, 0xf0, //0x000007ed addq $-16, %r10 - 0x49, 0x83, 0xc5, 0x10, //0x000007f1 addq $16, %r13 - 0x49, 0x83, 0xfa, 0x0f, //0x000007f5 cmpq $15, %r10 - 0x0f, 0x87, 0xe1, 0xfe, 0xff, 0xff, //0x000007f9 ja LBB0_88 - 0x4b, 0x8d, 0x0c, 0x2e, //0x000007ff leaq (%r14,%r13), %rcx - 0x49, 0x89, 0xcb, //0x00000803 movq %rcx, %r11 - 0x4c, 0x39, 0xef, //0x00000806 cmpq %r13, %rdi - 0x0f, 0x84, 0xa2, 0x07, 0x00, 0x00, //0x00000809 je LBB0_184 - //0x0000080f LBB0_105 - 0x4e, 0x8d, 0x1c, 0x11, //0x0000080f leaq (%rcx,%r10), %r11 - 0x48, 0x89, 0xca, //0x00000813 movq %rcx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00000816 subq $-64(%rbp), %rdx - 0x4c, 0x29, 0xe2, //0x0000081a subq %r12, %rdx - 0x48, 0x83, 0xc2, 0x01, //0x0000081d addq $1, %rdx - 0x31, 0xff, //0x00000821 xorl %edi, %edi - 0x4c, 0x8d, 0x2d, 0x2a, 0x37, 0x00, 0x00, //0x00000823 leaq $14122(%rip), %r13 /* LJTI0_3+0(%rip) */ - 0xe9, 0x2e, 0x00, 0x00, 0x00, //0x0000082a jmp LBB0_110 - //0x0000082f LBB0_106 - 0x83, 0xfe, 0x65, //0x0000082f cmpl $101, %esi - 0x0f, 0x85, 0xbc, 0x09, 0x00, 0x00, //0x00000832 jne LBB0_212 - //0x00000838 LBB0_107 - 0x49, 0x83, 0xff, 0xff, //0x00000838 cmpq $-1, %r15 - 0x0f, 0x85, 0x76, 0x1e, 0x00, 0x00, //0x0000083c jne LBB0_433 - 0x4c, 0x8d, 0x3c, 0x3a, //0x00000842 leaq (%rdx,%rdi), %r15 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000846 .p2align 4, 0x90 - //0x00000850 LBB0_109 - 0x48, 0x83, 0xc7, 0x01, //0x00000850 addq $1, %rdi - 0x49, 0x39, 0xfa, //0x00000854 cmpq %rdi, %r10 - 0x0f, 0x84, 0x54, 0x07, 0x00, 0x00, //0x00000857 je LBB0_184 - //0x0000085d LBB0_110 - 0x0f, 0xbe, 0x34, 0x39, //0x0000085d movsbl (%rcx,%rdi), %esi - 0x8d, 0x5e, 0xd0, //0x00000861 leal $-48(%rsi), %ebx - 0x83, 0xfb, 0x0a, //0x00000864 cmpl $10, %ebx - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000867 jb LBB0_109 - 0x8d, 0x5e, 0xd5, //0x0000086d leal $-43(%rsi), %ebx - 0x83, 0xfb, 0x1a, //0x00000870 cmpl $26, %ebx - 0x0f, 0x87, 0xb6, 0xff, 0xff, 0xff, //0x00000873 ja LBB0_106 - 0x49, 0x63, 0x74, 0x9d, 0x00, //0x00000879 movslq (%r13,%rbx,4), %rsi - 0x4c, 0x01, 0xee, //0x0000087e addq %r13, %rsi - 0xff, 0xe6, //0x00000881 jmpq *%rsi - //0x00000883 LBB0_113 - 0x49, 0x83, 0xf9, 0xff, //0x00000883 cmpq $-1, %r9 - 0x0f, 0x85, 0x2b, 0x1e, 0x00, 0x00, //0x00000887 jne LBB0_433 - 0x4c, 0x8d, 0x0c, 0x3a, //0x0000088d leaq (%rdx,%rdi), %r9 - 0xe9, 0xba, 0xff, 0xff, 0xff, //0x00000891 jmp LBB0_109 - //0x00000896 LBB0_115 - 0x49, 0x83, 0xf8, 0xff, //0x00000896 cmpq $-1, %r8 - 0x0f, 0x85, 0x18, 0x1e, 0x00, 0x00, //0x0000089a jne LBB0_433 - 0x4c, 0x8d, 0x04, 0x3a, //0x000008a0 leaq (%rdx,%rdi), %r8 - 0xe9, 0xa7, 0xff, 0xff, 0xff, //0x000008a4 jmp LBB0_109 - //0x000008a9 LBB0_117 - 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x000008a9 cmpq $4095, %r9 - 0x0f, 0x8f, 0x36, 0x31, 0x00, 0x00, //0x000008b0 jg LBB0_634 - 0x48, 0x89, 0x75, 0x90, //0x000008b6 movq %rsi, $-112(%rbp) - 0x49, 0x8d, 0x41, 0x01, //0x000008ba leaq $1(%r9), %rax - 0x49, 0x89, 0x45, 0x00, //0x000008be movq %rax, (%r13) - 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x000008c2 movq $0, $8(%r13,%r9,8) - 0xe9, 0xf0, 0xf8, 0xff, 0xff, //0x000008cb jmp LBB0_4 - //0x000008d0 LBB0_64 - 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x000008d0 movq $2, (%r13,%r9,8) - 0x48, 0x8b, 0x4d, 0x98, //0x000008d9 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x000008dd testb $64, %cl - 0x48, 0x89, 0x75, 0x90, //0x000008e0 movq %rsi, $-112(%rbp) - 0x0f, 0x85, 0x9a, 0x03, 0x00, 0x00, //0x000008e4 jne LBB0_147 - 0x49, 0x8b, 0x16, //0x000008ea movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x000008ed movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x000008f1 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x000008f5 testb $32, %cl - 0x48, 0x89, 0xd1, //0x000008f8 movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x000008fb movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x000008ff movq %rax, $-96(%rbp) - 0x49, 0x89, 0xc1, //0x00000903 movq %rax, %r9 - 0x0f, 0x85, 0xba, 0x06, 0x00, 0x00, //0x00000906 jne LBB0_186 - 0x49, 0x29, 0xd1, //0x0000090c subq %rdx, %r9 - 0x0f, 0x84, 0x23, 0x33, 0x00, 0x00, //0x0000090f je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00000915 cmpq $64, %r9 - 0x0f, 0x82, 0x30, 0x26, 0x00, 0x00, //0x00000919 jb LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x0000091f movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00000923 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x00000926 notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000929 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00000931 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000934 .p2align 4, 0x90 - //0x00000940 LBB0_69 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000940 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000946 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000094d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000954 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000095b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000095f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000963 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00000968 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000096c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xdf, //0x00000970 pmovmskb %xmm7, %ebx - 0x66, 0x0f, 0x6f, 0xfd, //0x00000974 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000978 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x0000097c pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x00000980 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x00000984 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x00000988 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x0000098c pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000990 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x00000995 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000999 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x0000099d pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000009a1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000009a5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000009a9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000009ae shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000009b2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000009b6 orq %rdx, %rdi - 0x48, 0xc1, 0xe3, 0x10, //0x000009b9 shlq $16, %rbx - 0x48, 0x09, 0xfb, //0x000009bd orq %rdi, %rbx - 0x49, 0x09, 0xda, //0x000009c0 orq %rbx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000009c3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000009c7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000009cb orq %r15, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000009ce shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000009d2 orq %rsi, %rcx - 0x49, 0x09, 0xcb, //0x000009d5 orq %rcx, %r11 - 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000009d8 jne LBB0_121 - 0x4d, 0x85, 0xc0, //0x000009de testq %r8, %r8 - 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000009e1 jne LBB0_123 - 0x45, 0x31, 0xc0, //0x000009e7 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x000009ea testq %r10, %r10 - 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000009ed jne LBB0_124 - //0x000009f3 LBB0_72 - 0x49, 0x83, 0xc1, 0xc0, //0x000009f3 addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x000009f7 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x000009fb addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x000009ff cmpq $63, %r9 - 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x00000a03 ja LBB0_69 - 0xe9, 0x8d, 0x1e, 0x00, 0x00, //0x00000a09 jmp LBB0_73 - //0x00000a0e LBB0_121 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000a0e cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000a13 jne LBB0_123 - 0x49, 0x0f, 0xbc, 0xcb, //0x00000a19 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00000a1d addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00000a20 movq %rcx, $-56(%rbp) - //0x00000a24 LBB0_123 - 0x4c, 0x89, 0xc1, //0x00000a24 movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00000a27 notq %rcx - 0x4c, 0x21, 0xd9, //0x00000a2a andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00000a2d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x00000a31 orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x00000a34 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a37 notq %rsi - 0x4c, 0x21, 0xde, //0x00000a3a andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a3d movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00000a47 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00000a4a xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00000a4d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x00000a50 setb %r8b - 0x48, 0x01, 0xf6, //0x00000a54 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a57 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00000a61 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00000a64 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00000a67 notq %rsi - 0x49, 0x21, 0xf2, //0x00000a6a andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x00000a6d testq %r10, %r10 - 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a70 je LBB0_72 - //0x00000a76 LBB0_124 - 0x49, 0x0f, 0xbc, 0xc2, //0x00000a76 bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x00000a7a subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000a7d movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a81 movabsq $4294977024, %r11 - 0xe9, 0x73, 0x0d, 0x00, 0x00, //0x00000a8b jmp LBB0_304 - //0x00000a90 LBB0_125 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000a90 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000a94 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000a98 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000a9b leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000a9f subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000aa2 cmpq $32, %r9 - 0x0f, 0x8c, 0xbc, 0x1b, 0x00, 0x00, //0x00000aa6 jl LBB0_134 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000aac movl $32, %r14d - 0x31, 0xd2, //0x00000ab2 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ab4 xorl %r11d, %r11d - 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x00000ab7 jmp LBB0_127 - 0x90, 0x90, 0x90, 0x90, //0x00000abc .p2align 4, 0x90 - //0x00000ac0 LBB0_130 - 0x45, 0x31, 0xdb, //0x00000ac0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000ac3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000ac6 jne LBB0_129 - //0x00000acc LBB0_131 - 0x48, 0x83, 0xc2, 0x20, //0x00000acc addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00000ad0 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00000ad4 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00000ad8 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00000adc cmpq $63, %rcx - 0x0f, 0x8e, 0x65, 0x1b, 0x00, 0x00, //0x00000ae0 jle LBB0_132 - //0x00000ae6 LBB0_127 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x12, //0x00000ae6 movdqu (%r10,%rdx), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x12, 0x10, //0x00000aec movdqu $16(%r10,%rdx), %xmm5 - 0x66, 0x0f, 0x6f, 0xf4, //0x00000af3 movdqa %xmm4, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000af7 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xf6, //0x00000afb pmovmskb %xmm6, %esi - 0x66, 0x0f, 0x6f, 0xf5, //0x00000aff movdqa %xmm5, %xmm6 - 0x66, 0x0f, 0x74, 0xf0, //0x00000b03 pcmpeqb %xmm0, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00000b07 pmovmskb %xmm6, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000b0b shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000b0f orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xe1, //0x00000b12 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00000b16 pmovmskb %xmm4, %ecx - 0x66, 0x0f, 0x74, 0xe9, //0x00000b1a pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000b1e pmovmskb %xmm5, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000b22 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000b26 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000b29 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00000b2c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000b2f je LBB0_130 - 0x44, 0x89, 0xd9, //0x00000b35 movl %r11d, %ecx - 0xf7, 0xd1, //0x00000b38 notl %ecx - 0x21, 0xf1, //0x00000b3a andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00000b3c leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00000b40 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000b43 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000b46 notl %ebx - 0x21, 0xf3, //0x00000b48 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000b4a andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00000b50 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000b53 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00000b55 setb %r11b - 0x01, 0xdb, //0x00000b59 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000b5b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000b61 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000b64 notl %ebx - 0x21, 0xdf, //0x00000b66 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000b68 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b6b je LBB0_131 - //0x00000b71 LBB0_129 - 0x0f, 0xbc, 0xc7, //0x00000b71 bsfl %edi, %eax - 0x4c, 0x01, 0xc0, //0x00000b74 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000b77 leaq (%rdx,%rax), %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00000b7b addq $1, %r10 - 0x4c, 0x8b, 0x75, 0xd0, //0x00000b7f movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000b83 movabsq $4294977024, %r11 - 0x4d, 0x89, 0x16, //0x00000b8d movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x00000b90 testq %r8, %r8 - 0x0f, 0x8f, 0x27, 0xf6, 0xff, 0xff, //0x00000b93 jg LBB0_4 - 0xe9, 0x63, 0x2e, 0x00, 0x00, //0x00000b99 jmp LBB0_608 - //0x00000b9e LBB0_135 - 0x48, 0x89, 0xf9, //0x00000b9e movq %rdi, %rcx - 0x48, 0x29, 0xf1, //0x00000ba1 subq %rsi, %rcx - 0x48, 0x83, 0xf9, 0x10, //0x00000ba4 cmpq $16, %rcx - 0x0f, 0x82, 0x0d, 0x22, 0x00, 0x00, //0x00000ba8 jb LBB0_470 - 0x48, 0x89, 0xf1, //0x00000bae movq %rsi, %rcx - 0x48, 0xf7, 0xd9, //0x00000bb1 negq %rcx - 0x48, 0x89, 0xf0, //0x00000bb4 movq %rsi, %rax - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bb7 .p2align 4, 0x90 - //0x00000bc0 LBB0_137 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000bc0 movdqu (%r12,%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00000bc6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000bca pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000bcf pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00000bd4 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00000bd8 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00000bdc pmovmskb %xmm3, %edx - 0x85, 0xd2, //0x00000be0 testl %edx, %edx - 0x0f, 0x85, 0xbe, 0xf5, 0xff, 0xff, //0x00000be2 jne LBB0_613 - 0x48, 0x83, 0xc0, 0x10, //0x00000be8 addq $16, %rax - 0x48, 0x8d, 0x14, 0x0f, //0x00000bec leaq (%rdi,%rcx), %rdx - 0x48, 0x83, 0xc2, 0xf0, //0x00000bf0 addq $-16, %rdx - 0x48, 0x83, 0xc1, 0xf0, //0x00000bf4 addq $-16, %rcx - 0x48, 0x83, 0xfa, 0x0f, //0x00000bf8 cmpq $15, %rdx - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00000bfc ja LBB0_137 - 0x4c, 0x89, 0xe0, //0x00000c02 movq %r12, %rax - 0x48, 0x29, 0xc8, //0x00000c05 subq %rcx, %rax - 0x48, 0x01, 0xcf, //0x00000c08 addq %rcx, %rdi - 0x48, 0x89, 0xf9, //0x00000c0b movq %rdi, %rcx - 0x48, 0x85, 0xc9, //0x00000c0e testq %rcx, %rcx - 0x0f, 0x84, 0xb1, 0x21, 0x00, 0x00, //0x00000c11 je LBB0_471 - //0x00000c17 LBB0_140 - 0x48, 0x8d, 0x3c, 0x08, //0x00000c17 leaq (%rax,%rcx), %rdi - 0x31, 0xd2, //0x00000c1b xorl %edx, %edx - //0x00000c1d LBB0_141 - 0x0f, 0xb6, 0x1c, 0x10, //0x00000c1d movzbl (%rax,%rdx), %ebx - 0x80, 0xfb, 0x2c, //0x00000c21 cmpb $44, %bl - 0x0f, 0x84, 0x4c, 0x1a, 0x00, 0x00, //0x00000c24 je LBB0_428 - 0x80, 0xfb, 0x7d, //0x00000c2a cmpb $125, %bl - 0x0f, 0x84, 0x43, 0x1a, 0x00, 0x00, //0x00000c2d je LBB0_428 - 0x80, 0xfb, 0x5d, //0x00000c33 cmpb $93, %bl - 0x0f, 0x84, 0x3a, 0x1a, 0x00, 0x00, //0x00000c36 je LBB0_428 - 0x48, 0x83, 0xc2, 0x01, //0x00000c3c addq $1, %rdx - 0x48, 0x39, 0xd1, //0x00000c40 cmpq %rdx, %rcx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00000c43 jne LBB0_141 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00000c49 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00000c4e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf8, //0x00000c52 movq %rdi, %rax - //0x00000c55 LBB0_146 - 0x4c, 0x29, 0xe0, //0x00000c55 subq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00000c58 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000c5c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000c60 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00000c6a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00000c6e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x06, //0x00000c73 movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x00000c76 testq %rsi, %rsi - 0x0f, 0x8f, 0x41, 0xf5, 0xff, 0xff, //0x00000c79 jg LBB0_4 - 0xe9, 0xd5, 0x2d, 0x00, 0x00, //0x00000c7f jmp LBB0_614 - //0x00000c84 LBB0_147 - 0x48, 0x8b, 0x4d, 0xa8, //0x00000c84 movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00000c88 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00000c8c movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00000c8f leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00000c93 subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00000c96 cmpq $32, %r9 - 0x0f, 0x8c, 0x4e, 0x1a, 0x00, 0x00, //0x00000c9a jl LBB0_156 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000ca0 movl $32, %r14d - 0x31, 0xd2, //0x00000ca6 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00000ca8 xorl %r11d, %r11d - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000cab jmp LBB0_149 - //0x00000cb0 .p2align 4, 0x90 - //0x00000cb0 LBB0_152 + 0x48, 0xc7, 0x45, 0x90, 0xff, 0xff, 0xff, 0xff, //0x0000012c movq $-1, $-112(%rbp) + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000134 movabsq $4294977024, %r11 + 0xf3, 0x0f, 0x6f, 0x05, 0xca, 0xfe, 0xff, 0xff, //0x0000013e movdqu $-310(%rip), %xmm0 /* LCPI0_1+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x0d, 0xd2, 0xfe, 0xff, 0xff, //0x00000146 movdqu $-302(%rip), %xmm1 /* LCPI0_2+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x25, 0xd9, 0xfe, 0xff, 0xff, //0x0000014e movdqu $-295(%rip), %xmm12 /* LCPI0_3+0(%rip) */ + 0x66, 0x45, 0x0f, 0x76, 0xd2, //0x00000157 pcmpeqd %xmm10, %xmm10 + 0xf3, 0x44, 0x0f, 0x6f, 0x3d, 0x4b, 0xff, 0xff, 0xff, //0x0000015c movdqu $-181(%rip), %xmm15 /* LCPI0_11+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x0d, 0x22, 0xff, 0xff, 0xff, //0x00000165 movdqu $-222(%rip), %xmm9 /* LCPI0_9+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x79, 0xff, 0xff, 0xff, //0x0000016e movdqu $-135(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x35, 0x00, 0xff, 0xff, 0xff, //0x00000177 movdqu $-256(%rip), %xmm14 /* LCPI0_8+0(%rip) */ + 0xf3, 0x0f, 0x6f, 0x15, 0xe8, 0xfe, 0xff, 0xff, //0x00000180 movdqu $-280(%rip), %xmm2 /* LCPI0_7+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xaf, 0xfe, 0xff, 0xff, //0x00000188 movdqu $-337(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb6, 0xfe, 0xff, 0xff, //0x00000191 movdqu $-330(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x48, 0x89, 0x75, 0xd0, //0x0000019a movq %rsi, $-48(%rbp) + 0x48, 0x89, 0x55, 0xb0, //0x0000019e movq %rdx, $-80(%rbp) + 0xe9, 0x3d, 0x00, 0x00, 0x00, //0x000001a2 jmp LBB0_6 + //0x000001a7 LBB0_1 + 0x0f, 0xbc, 0xc3, //0x000001a7 bsfl %ebx, %eax + 0x4c, 0x01, 0xc0, //0x000001aa addq %r8, %rax + 0x4c, 0x8d, 0x14, 0x06, //0x000001ad leaq (%rsi,%rax), %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000001b1 addq $1, %r10 + 0x4c, 0x8b, 0x75, 0xd0, //0x000001b5 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000001b9 movabsq $4294977024, %r11 + //0x000001c3 LBB0_2 + 0x4d, 0x89, 0x16, //0x000001c3 movq %r10, (%r14) + //0x000001c6 LBB0_3 + 0x4d, 0x85, 0xc0, //0x000001c6 testq %r8, %r8 + 0x0f, 0x8e, 0x8d, 0x38, 0x00, 0x00, //0x000001c9 jle LBB0_622 + 0x90, //0x000001cf .p2align 4, 0x90 + //0x000001d0 LBB0_4 + 0x4d, 0x8b, 0x45, 0x00, //0x000001d0 movq (%r13), %r8 + 0x48, 0x8b, 0x55, 0x90, //0x000001d4 movq $-112(%rbp), %rdx + 0x48, 0x89, 0xd0, //0x000001d8 movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000001db testq %r8, %r8 + 0x0f, 0x84, 0xcb, 0x38, 0x00, 0x00, //0x000001de je LBB0_650 + //0x000001e4 LBB0_6 + 0x48, 0x8b, 0x4d, 0x90, //0x000001e4 movq $-112(%rbp), %rcx + 0x48, 0x8b, 0x45, 0xa8, //0x000001e8 movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x20, //0x000001ec movq (%rax), %r12 + 0x48, 0x8b, 0x40, 0x08, //0x000001ef movq $8(%rax), %rax + 0x49, 0x8b, 0x36, //0x000001f3 movq (%r14), %rsi + 0x48, 0x39, 0xc6, //0x000001f6 cmpq %rax, %rsi + 0x0f, 0x83, 0x31, 0x00, 0x00, 0x00, //0x000001f9 jae LBB0_11 + 0x41, 0x8a, 0x14, 0x34, //0x000001ff movb (%r12,%rsi), %dl + 0x80, 0xfa, 0x0d, //0x00000203 cmpb $13, %dl + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00000206 je LBB0_11 + 0x80, 0xfa, 0x20, //0x0000020c cmpb $32, %dl + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x0000020f je LBB0_11 + 0x80, 0xc2, 0xf7, //0x00000215 addb $-9, %dl + 0x80, 0xfa, 0x01, //0x00000218 cmpb $1, %dl + 0x0f, 0x86, 0x0f, 0x00, 0x00, 0x00, //0x0000021b jbe LBB0_11 + 0x48, 0x89, 0xf2, //0x00000221 movq %rsi, %rdx + 0xe9, 0xff, 0x00, 0x00, 0x00, //0x00000224 jmp LBB0_32 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000229 .p2align 4, 0x90 + //0x00000230 LBB0_11 + 0x48, 0x8d, 0x56, 0x01, //0x00000230 leaq $1(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000234 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000237 jae LBB0_15 + 0x41, 0x8a, 0x1c, 0x14, //0x0000023d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000241 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000244 je LBB0_15 + 0x80, 0xfb, 0x20, //0x0000024a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000024d je LBB0_15 + 0x80, 0xc3, 0xf7, //0x00000253 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000256 cmpb $1, %bl + 0x0f, 0x87, 0xc9, 0x00, 0x00, 0x00, //0x00000259 ja LBB0_32 + 0x90, //0x0000025f .p2align 4, 0x90 + //0x00000260 LBB0_15 + 0x48, 0x8d, 0x56, 0x02, //0x00000260 leaq $2(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000264 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000267 jae LBB0_19 + 0x41, 0x8a, 0x1c, 0x14, //0x0000026d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x00000271 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000274 je LBB0_19 + 0x80, 0xfb, 0x20, //0x0000027a cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x0000027d je LBB0_19 + 0x80, 0xc3, 0xf7, //0x00000283 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x00000286 cmpb $1, %bl + 0x0f, 0x87, 0x99, 0x00, 0x00, 0x00, //0x00000289 ja LBB0_32 + 0x90, //0x0000028f .p2align 4, 0x90 + //0x00000290 LBB0_19 + 0x48, 0x8d, 0x56, 0x03, //0x00000290 leaq $3(%rsi), %rdx + 0x48, 0x39, 0xc2, //0x00000294 cmpq %rax, %rdx + 0x0f, 0x83, 0x23, 0x00, 0x00, 0x00, //0x00000297 jae LBB0_23 + 0x41, 0x8a, 0x1c, 0x14, //0x0000029d movb (%r12,%rdx), %bl + 0x80, 0xfb, 0x0d, //0x000002a1 cmpb $13, %bl + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x000002a4 je LBB0_23 + 0x80, 0xfb, 0x20, //0x000002aa cmpb $32, %bl + 0x0f, 0x84, 0x0d, 0x00, 0x00, 0x00, //0x000002ad je LBB0_23 + 0x80, 0xc3, 0xf7, //0x000002b3 addb $-9, %bl + 0x80, 0xfb, 0x01, //0x000002b6 cmpb $1, %bl + 0x0f, 0x87, 0x69, 0x00, 0x00, 0x00, //0x000002b9 ja LBB0_32 + 0x90, //0x000002bf .p2align 4, 0x90 + //0x000002c0 LBB0_23 + 0x48, 0x83, 0xc6, 0x04, //0x000002c0 addq $4, %rsi + 0x48, 0x39, 0xf0, //0x000002c4 cmpq %rsi, %rax + 0x0f, 0x86, 0x74, 0x37, 0x00, 0x00, //0x000002c7 jbe LBB0_619 + 0x48, 0x39, 0xf0, //0x000002cd cmpq %rsi, %rax + 0x0f, 0x84, 0x3a, 0x00, 0x00, 0x00, //0x000002d0 je LBB0_29 + 0x49, 0x8d, 0x14, 0x04, //0x000002d6 leaq (%r12,%rax), %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000002da .p2align 4, 0x90 + //0x000002e0 LBB0_26 + 0x41, 0x0f, 0xbe, 0x3c, 0x34, //0x000002e0 movsbl (%r12,%rsi), %edi + 0x83, 0xff, 0x20, //0x000002e5 cmpl $32, %edi + 0x0f, 0x87, 0x2e, 0x00, 0x00, 0x00, //0x000002e8 ja LBB0_31 + 0x49, 0x0f, 0xa3, 0xfb, //0x000002ee btq %rdi, %r11 + 0x0f, 0x83, 0x24, 0x00, 0x00, 0x00, //0x000002f2 jae LBB0_31 + 0x48, 0x83, 0xc6, 0x01, //0x000002f8 addq $1, %rsi + 0x48, 0x39, 0xf0, //0x000002fc cmpq %rsi, %rax + 0x0f, 0x85, 0xdb, 0xff, 0xff, 0xff, //0x000002ff jne LBB0_26 + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00000305 jmp LBB0_30 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000030a .p2align 4, 0x90 + //0x00000310 LBB0_29 + 0x4c, 0x01, 0xe6, //0x00000310 addq %r12, %rsi + 0x48, 0x89, 0xf2, //0x00000313 movq %rsi, %rdx + //0x00000316 LBB0_30 + 0x4c, 0x29, 0xe2, //0x00000316 subq %r12, %rdx + 0x48, 0x89, 0xd6, //0x00000319 movq %rdx, %rsi + //0x0000031c LBB0_31 + 0x48, 0x89, 0xf2, //0x0000031c movq %rsi, %rdx + 0x48, 0x39, 0xc6, //0x0000031f cmpq %rax, %rsi + 0x0f, 0x83, 0x1c, 0x37, 0x00, 0x00, //0x00000322 jae LBB0_620 + //0x00000328 LBB0_32 + 0x48, 0x8d, 0x42, 0x01, //0x00000328 leaq $1(%rdx), %rax + 0x49, 0x89, 0x06, //0x0000032c movq %rax, (%r14) + 0x41, 0x0f, 0xbe, 0x3c, 0x14, //0x0000032f movsbl (%r12,%rdx), %edi + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000334 movq $-1, %rax + 0x85, 0xff, //0x0000033b testl %edi, %edi + 0x0f, 0x84, 0x6c, 0x37, 0x00, 0x00, //0x0000033d je LBB0_650 + 0x4d, 0x8b, 0x4d, 0x00, //0x00000343 movq (%r13), %r9 + 0x4d, 0x8d, 0x41, 0xff, //0x00000347 leaq $-1(%r9), %r8 + 0x43, 0x8b, 0x5c, 0xcd, 0x00, //0x0000034b movl (%r13,%r9,8), %ebx + 0x48, 0x83, 0xf9, 0xff, //0x00000350 cmpq $-1, %rcx + 0x48, 0x0f, 0x45, 0xd1, //0x00000354 cmovneq %rcx, %rdx + 0x83, 0xc3, 0xff, //0x00000358 addl $-1, %ebx + 0x83, 0xfb, 0x05, //0x0000035b cmpl $5, %ebx + 0x48, 0x89, 0x55, 0x90, //0x0000035e movq %rdx, $-112(%rbp) + 0x0f, 0x87, 0x73, 0x02, 0x00, 0x00, //0x00000362 ja LBB0_78 + 0x48, 0x8d, 0x35, 0xdd, 0x39, 0x00, 0x00, //0x00000368 leaq $14813(%rip), %rsi /* LJTI0_0+0(%rip) */ + 0x48, 0x63, 0x0c, 0x9e, //0x0000036f movslq (%rsi,%rbx,4), %rcx + 0x48, 0x01, 0xf1, //0x00000373 addq %rsi, %rcx + 0xff, 0xe1, //0x00000376 jmpq *%rcx + //0x00000378 LBB0_35 + 0x83, 0xff, 0x2c, //0x00000378 cmpl $44, %edi + 0x0f, 0x84, 0xf0, 0x04, 0x00, 0x00, //0x0000037b je LBB0_117 + 0x83, 0xff, 0x5d, //0x00000381 cmpl $93, %edi + 0x0f, 0x84, 0x3c, 0x02, 0x00, 0x00, //0x00000384 je LBB0_37 + 0xe9, 0x19, 0x37, 0x00, 0x00, //0x0000038a jmp LBB0_649 + //0x0000038f LBB0_38 + 0x40, 0x80, 0xff, 0x5d, //0x0000038f cmpb $93, %dil + 0x0f, 0x84, 0x2d, 0x02, 0x00, 0x00, //0x00000393 je LBB0_37 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000399 movq $1, (%r13,%r9,8) + 0x83, 0xff, 0x7b, //0x000003a2 cmpl $123, %edi + 0x0f, 0x86, 0x3d, 0x02, 0x00, 0x00, //0x000003a5 jbe LBB0_79 + 0xe9, 0xf8, 0x36, 0x00, 0x00, //0x000003ab jmp LBB0_649 + //0x000003b0 LBB0_40 + 0x40, 0x80, 0xff, 0x22, //0x000003b0 cmpb $34, %dil + 0x0f, 0x85, 0xee, 0x36, 0x00, 0x00, //0x000003b4 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x04, 0x00, 0x00, 0x00, //0x000003ba movq $4, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x000003c3 movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000003c7 testb $64, %cl + 0x0f, 0x85, 0x74, 0x06, 0x00, 0x00, //0x000003ca jne LBB0_125 + 0x49, 0x8b, 0x16, //0x000003d0 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000003d3 movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000003d7 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000003db testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000003de movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000003e2 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xa2, 0x09, 0x00, 0x00, //0x000003e6 jne LBB0_162 + 0x49, 0x89, 0xc1, //0x000003ec movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000003ef subq %rdx, %r9 + 0x0f, 0x84, 0x71, 0x38, 0x00, 0x00, //0x000003f2 je LBB0_656 + 0x49, 0x83, 0xf9, 0x40, //0x000003f8 cmpq $64, %r9 + 0x0f, 0x82, 0xd5, 0x2a, 0x00, 0x00, //0x000003fc jb LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00000402 movq $-64(%rbp), %rax + 0x49, 0x89, 0xc6, //0x00000406 movq %rax, %r14 + 0x49, 0xf7, 0xd6, //0x00000409 notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000040c movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00000414 xorl %r8d, %r8d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000417 .p2align 4, 0x90 + //0x00000420 LBB0_46 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00000420 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00000426 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000042d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000434 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000043b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000043f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000443 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000448 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000044c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000450 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000454 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000458 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000045c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000460 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000464 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000468 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000046c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000470 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000475 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000479 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000047d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000481 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000485 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000489 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000048e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000492 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000496 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000499 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000049d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x000004a0 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000004a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000004a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000004ab orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000004ae shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000004b2 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x000004b5 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x000004b8 jne LBB0_55 + 0x4d, 0x85, 0xc0, //0x000004be testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x000004c1 jne LBB0_57 + 0x45, 0x31, 0xc0, //0x000004c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000004ca testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x000004cd jne LBB0_58 + //0x000004d3 LBB0_49 + 0x49, 0x83, 0xc1, 0xc0, //0x000004d3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000004d7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000004db addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000004df cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000004e3 ja LBB0_46 + 0xe9, 0x56, 0x22, 0x00, 0x00, //0x000004e9 jmp LBB0_50 + //0x000004ee LBB0_55 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000004ee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000004f3 jne LBB0_57 + 0x49, 0x0f, 0xbc, 0xcb, //0x000004f9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000004fd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00000500 movq %rcx, $-56(%rbp) + //0x00000504 LBB0_57 + 0x4c, 0x89, 0xc1, //0x00000504 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00000507 notq %rcx + 0x4c, 0x21, 0xd9, //0x0000050a andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000050d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x00000511 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x00000514 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000517 notq %rsi + 0x4c, 0x21, 0xde, //0x0000051a andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000051d movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00000527 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x0000052a xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x0000052d addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000530 setb %r8b + 0x48, 0x01, 0xf6, //0x00000534 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000537 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000541 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000544 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000547 notq %rsi + 0x49, 0x21, 0xf2, //0x0000054a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x0000054d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000550 je LBB0_49 + //0x00000556 LBB0_58 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000556 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000055a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000055d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000561 movabsq $4294977024, %r11 + 0xe9, 0xff, 0x0c, 0x00, 0x00, //0x0000056b jmp LBB0_229 + //0x00000570 LBB0_59 + 0x40, 0x80, 0xff, 0x3a, //0x00000570 cmpb $58, %dil + 0x0f, 0x85, 0x2e, 0x35, 0x00, 0x00, //0x00000574 jne LBB0_649 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0000057a movq $0, (%r13,%r9,8) + 0xe9, 0x48, 0xfc, 0xff, 0xff, //0x00000583 jmp LBB0_4 + //0x00000588 LBB0_61 + 0x83, 0xff, 0x2c, //0x00000588 cmpl $44, %edi + 0x0f, 0x85, 0x2c, 0x00, 0x00, 0x00, //0x0000058b jne LBB0_62 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000591 cmpq $4095, %r9 + 0x0f, 0x8f, 0xb2, 0x34, 0x00, 0x00, //0x00000598 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000059e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x000005a2 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x03, 0x00, 0x00, 0x00, //0x000005a6 movq $3, $8(%r13,%r9,8) + 0xe9, 0x1c, 0xfc, 0xff, 0xff, //0x000005af jmp LBB0_4 + //0x000005b4 LBB0_63 + 0x83, 0xff, 0x22, //0x000005b4 cmpl $34, %edi + 0x0f, 0x84, 0xd7, 0x02, 0x00, 0x00, //0x000005b7 je LBB0_64 + //0x000005bd LBB0_62 + 0x83, 0xff, 0x7d, //0x000005bd cmpl $125, %edi + 0x0f, 0x85, 0xe2, 0x34, 0x00, 0x00, //0x000005c0 jne LBB0_649 + //0x000005c6 LBB0_37 + 0x4d, 0x89, 0x45, 0x00, //0x000005c6 movq %r8, (%r13) + 0x48, 0x89, 0xd0, //0x000005ca movq %rdx, %rax + 0x4d, 0x85, 0xc0, //0x000005cd testq %r8, %r8 + 0x0f, 0x85, 0x0e, 0xfc, 0xff, 0xff, //0x000005d0 jne LBB0_6 + 0xe9, 0xd4, 0x34, 0x00, 0x00, //0x000005d6 jmp LBB0_650 + //0x000005db LBB0_78 + 0x4d, 0x89, 0x45, 0x00, //0x000005db movq %r8, (%r13) + 0x83, 0xff, 0x7b, //0x000005df cmpl $123, %edi + 0x0f, 0x87, 0xc0, 0x34, 0x00, 0x00, //0x000005e2 ja LBB0_649 + //0x000005e8 LBB0_79 + 0x89, 0xf9, //0x000005e8 movl %edi, %ecx + 0x48, 0x8d, 0x15, 0x73, 0x37, 0x00, 0x00, //0x000005ea leaq $14195(%rip), %rdx /* LJTI0_1+0(%rip) */ + 0x48, 0x63, 0x0c, 0x8a, //0x000005f1 movslq (%rdx,%rcx,4), %rcx + 0x48, 0x01, 0xd1, //0x000005f5 addq %rdx, %rcx + 0xff, 0xe1, //0x000005f8 jmpq *%rcx + //0x000005fa LBB0_80 + 0x4c, 0x89, 0xf0, //0x000005fa movq %r14, %rax + 0x48, 0x8b, 0x4d, 0xa8, //0x000005fd movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x71, 0x08, //0x00000601 movq $8(%rcx), %r14 + 0x4c, 0x8b, 0x00, //0x00000605 movq (%rax), %r8 + 0xf6, 0x45, 0x98, 0x40, //0x00000608 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x14, 0x05, 0x00, 0x00, //0x0000060c jne LBB0_134 + 0x49, 0x8d, 0x40, 0xff, //0x00000612 leaq $-1(%r8), %rax + 0x49, 0x29, 0xc6, //0x00000616 subq %rax, %r14 + 0x4c, 0x89, 0x45, 0xc0, //0x00000619 movq %r8, $-64(%rbp) + 0x0f, 0x84, 0x6c, 0x34, 0x00, 0x00, //0x0000061d je LBB0_625 + 0x4b, 0x8d, 0x3c, 0x04, //0x00000623 leaq (%r12,%r8), %rdi + 0x48, 0x83, 0xc7, 0xff, //0x00000627 addq $-1, %rdi + 0x80, 0x3f, 0x30, //0x0000062b cmpb $48, (%rdi) + 0x0f, 0x85, 0x3b, 0x00, 0x00, 0x00, //0x0000062e jne LBB0_86 + 0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000634 movl $1, %r13d + 0x49, 0x83, 0xfe, 0x01, //0x0000063a cmpq $1, %r14 + 0x0f, 0x84, 0xb9, 0x20, 0x00, 0x00, //0x0000063e je LBB0_452 + 0x48, 0x8b, 0x4d, 0xc0, //0x00000644 movq $-64(%rbp), %rcx + 0x41, 0x8a, 0x0c, 0x0c, //0x00000648 movb (%r12,%rcx), %cl + 0x80, 0xc1, 0xd2, //0x0000064c addb $-46, %cl + 0x80, 0xf9, 0x37, //0x0000064f cmpb $55, %cl + 0x0f, 0x87, 0xa5, 0x20, 0x00, 0x00, //0x00000652 ja LBB0_452 + 0x0f, 0xb6, 0xc9, //0x00000658 movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x0000065b movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x00000665 btq %rcx, %rdx + 0x0f, 0x83, 0x8e, 0x20, 0x00, 0x00, //0x00000669 jae LBB0_452 + //0x0000066f LBB0_86 + 0x49, 0x83, 0xfe, 0x10, //0x0000066f cmpq $16, %r14 + 0x48, 0x89, 0x7d, 0xb8, //0x00000673 movq %rdi, $-72(%rbp) + 0x0f, 0x82, 0xa0, 0x27, 0x00, 0x00, //0x00000677 jb LBB0_490 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000067d movq $-1, %r10 + 0x45, 0x31, 0xed, //0x00000684 xorl %r13d, %r13d + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00000687 movq $-1, %r15 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000068e movq $-1, %r8 + 0x4d, 0x89, 0xf3, //0x00000695 movq %r14, %r11 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000698 .p2align 4, 0x90 + //0x000006a0 LBB0_88 + 0xf3, 0x42, 0x0f, 0x6f, 0x1c, 0x2f, //0x000006a0 movdqu (%rdi,%r13), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006a6 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0xee, 0xf9, 0xff, 0xff, //0x000006aa pcmpgtb $-1554(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x000006b2 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000006b7 pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x000006bb pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006bf movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0xf5, 0xf9, 0xff, 0xff, //0x000006c3 pcmpeqb $-1547(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x000006cb movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0xf9, 0xf9, 0xff, 0xff, //0x000006cf pcmpeqb $-1543(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x000006d7 por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x000006db movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x000006df pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0xf4, 0xf9, 0xff, 0xff, //0x000006e4 pcmpeqb $-1548(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x000006ec pcmpeqb %xmm11, %xmm4 + 0x66, 0x0f, 0xd7, 0xf4, //0x000006f1 pmovmskb %xmm4, %esi + 0x66, 0x0f, 0xeb, 0xe3, //0x000006f5 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x000006f9 por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x000006fd por %xmm4, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00000701 pmovmskb %xmm3, %r9d + 0x66, 0x0f, 0xd7, 0xd6, //0x00000706 pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xcd, //0x0000070a pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x0000070e notl %ecx + 0x0f, 0xbc, 0xc9, //0x00000710 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00000713 cmpl $16, %ecx + 0x0f, 0x84, 0x16, 0x00, 0x00, 0x00, //0x00000716 je LBB0_90 + 0xbf, 0xff, 0xff, 0xff, 0xff, //0x0000071c movl $-1, %edi + 0xd3, 0xe7, //0x00000721 shll %cl, %edi + 0xf7, 0xd7, //0x00000723 notl %edi + 0x41, 0x21, 0xf9, //0x00000725 andl %edi, %r9d + 0x21, 0xfe, //0x00000728 andl %edi, %esi + 0x21, 0xd7, //0x0000072a andl %edx, %edi + 0x89, 0xfa, //0x0000072c movl %edi, %edx + 0x48, 0x8b, 0x7d, 0xb8, //0x0000072e movq $-72(%rbp), %rdi + //0x00000732 LBB0_90 + 0x41, 0x8d, 0x59, 0xff, //0x00000732 leal $-1(%r9), %ebx + 0x44, 0x21, 0xcb, //0x00000736 andl %r9d, %ebx + 0x0f, 0x85, 0x69, 0x1f, 0x00, 0x00, //0x00000739 jne LBB0_444 + 0x8d, 0x5e, 0xff, //0x0000073f leal $-1(%rsi), %ebx + 0x21, 0xf3, //0x00000742 andl %esi, %ebx + 0x0f, 0x85, 0x5e, 0x1f, 0x00, 0x00, //0x00000744 jne LBB0_444 + 0x8d, 0x5a, 0xff, //0x0000074a leal $-1(%rdx), %ebx + 0x21, 0xd3, //0x0000074d andl %edx, %ebx + 0x0f, 0x85, 0x53, 0x1f, 0x00, 0x00, //0x0000074f jne LBB0_444 + 0x45, 0x85, 0xc9, //0x00000755 testl %r9d, %r9d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00000758 je LBB0_96 + 0x41, 0x0f, 0xbc, 0xd9, //0x0000075e bsfl %r9d, %ebx + 0x49, 0x83, 0xf8, 0xff, //0x00000762 cmpq $-1, %r8 + 0x0f, 0x85, 0xfa, 0x22, 0x00, 0x00, //0x00000766 jne LBB0_454 + 0x4c, 0x01, 0xeb, //0x0000076c addq %r13, %rbx + 0x49, 0x89, 0xd8, //0x0000076f movq %rbx, %r8 + //0x00000772 LBB0_96 + 0x85, 0xf6, //0x00000772 testl %esi, %esi + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00000774 je LBB0_99 + 0x0f, 0xbc, 0xf6, //0x0000077a bsfl %esi, %esi + 0x49, 0x83, 0xff, 0xff, //0x0000077d cmpq $-1, %r15 + 0x0f, 0x85, 0xe6, 0x22, 0x00, 0x00, //0x00000781 jne LBB0_455 + 0x4c, 0x01, 0xee, //0x00000787 addq %r13, %rsi + 0x49, 0x89, 0xf7, //0x0000078a movq %rsi, %r15 + //0x0000078d LBB0_99 + 0x85, 0xd2, //0x0000078d testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x0000078f je LBB0_102 + 0x0f, 0xbc, 0xd2, //0x00000795 bsfl %edx, %edx + 0x49, 0x83, 0xfa, 0xff, //0x00000798 cmpq $-1, %r10 + 0x0f, 0x85, 0xd2, 0x22, 0x00, 0x00, //0x0000079c jne LBB0_456 + 0x4c, 0x01, 0xea, //0x000007a2 addq %r13, %rdx + 0x49, 0x89, 0xd2, //0x000007a5 movq %rdx, %r10 + //0x000007a8 LBB0_102 + 0x83, 0xf9, 0x10, //0x000007a8 cmpl $16, %ecx + 0x0f, 0x85, 0xf7, 0x07, 0x00, 0x00, //0x000007ab jne LBB0_188 + 0x49, 0x83, 0xc3, 0xf0, //0x000007b1 addq $-16, %r11 + 0x49, 0x83, 0xc5, 0x10, //0x000007b5 addq $16, %r13 + 0x49, 0x83, 0xfb, 0x0f, //0x000007b9 cmpq $15, %r11 + 0x0f, 0x87, 0xdd, 0xfe, 0xff, 0xff, //0x000007bd ja LBB0_88 + 0x4a, 0x8d, 0x34, 0x2f, //0x000007c3 leaq (%rdi,%r13), %rsi + 0x49, 0x89, 0xf1, //0x000007c7 movq %rsi, %r9 + 0x4d, 0x39, 0xee, //0x000007ca cmpq %r13, %r14 + 0x0f, 0x84, 0xff, 0x09, 0x00, 0x00, //0x000007cd je LBB0_217 + //0x000007d3 LBB0_105 + 0x4e, 0x8d, 0x0c, 0x1e, //0x000007d3 leaq (%rsi,%r11), %r9 + 0x48, 0x89, 0xf7, //0x000007d7 movq %rsi, %rdi + 0x48, 0x2b, 0x7d, 0xc0, //0x000007da subq $-64(%rbp), %rdi + 0x4c, 0x29, 0xe7, //0x000007de subq %r12, %rdi + 0x48, 0x83, 0xc7, 0x01, //0x000007e1 addq $1, %rdi + 0x31, 0xd2, //0x000007e5 xorl %edx, %edx + 0x4c, 0x8d, 0x35, 0xd2, 0x37, 0x00, 0x00, //0x000007e7 leaq $14290(%rip), %r14 /* LJTI0_3+0(%rip) */ + 0xe9, 0x2a, 0x00, 0x00, 0x00, //0x000007ee jmp LBB0_109 + //0x000007f3 LBB0_106 + 0x49, 0x83, 0xfa, 0xff, //0x000007f3 cmpq $-1, %r10 + 0x0f, 0x85, 0xdc, 0x1e, 0x00, 0x00, //0x000007f7 jne LBB0_449 + 0x4c, 0x8d, 0x14, 0x17, //0x000007fd leaq (%rdi,%rdx), %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000801 .p2align 4, 0x90 + //0x00000810 LBB0_108 + 0x48, 0x83, 0xc2, 0x01, //0x00000810 addq $1, %rdx + 0x49, 0x39, 0xd3, //0x00000814 cmpq %rdx, %r11 + 0x0f, 0x84, 0xb1, 0x09, 0x00, 0x00, //0x00000817 je LBB0_216 + //0x0000081d LBB0_109 + 0x0f, 0xbe, 0x0c, 0x16, //0x0000081d movsbl (%rsi,%rdx), %ecx + 0x8d, 0x59, 0xd0, //0x00000821 leal $-48(%rcx), %ebx + 0x83, 0xfb, 0x0a, //0x00000824 cmpl $10, %ebx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00000827 jb LBB0_108 + 0x8d, 0x59, 0xd5, //0x0000082d leal $-43(%rcx), %ebx + 0x83, 0xfb, 0x1a, //0x00000830 cmpl $26, %ebx + 0x0f, 0x87, 0x1c, 0x00, 0x00, 0x00, //0x00000833 ja LBB0_114 + 0x49, 0x63, 0x0c, 0x9e, //0x00000839 movslq (%r14,%rbx,4), %rcx + 0x4c, 0x01, 0xf1, //0x0000083d addq %r14, %rcx + 0xff, 0xe1, //0x00000840 jmpq *%rcx + //0x00000842 LBB0_112 + 0x49, 0x83, 0xf8, 0xff, //0x00000842 cmpq $-1, %r8 + 0x0f, 0x85, 0x8d, 0x1e, 0x00, 0x00, //0x00000846 jne LBB0_449 + 0x4c, 0x8d, 0x04, 0x17, //0x0000084c leaq (%rdi,%rdx), %r8 + 0xe9, 0xbb, 0xff, 0xff, 0xff, //0x00000850 jmp LBB0_108 + //0x00000855 LBB0_114 + 0x83, 0xf9, 0x65, //0x00000855 cmpl $101, %ecx + 0x0f, 0x85, 0x6a, 0x09, 0x00, 0x00, //0x00000858 jne LBB0_215 + //0x0000085e LBB0_115 + 0x49, 0x83, 0xff, 0xff, //0x0000085e cmpq $-1, %r15 + 0x0f, 0x85, 0x71, 0x1e, 0x00, 0x00, //0x00000862 jne LBB0_449 + 0x4c, 0x8d, 0x3c, 0x17, //0x00000868 leaq (%rdi,%rdx), %r15 + 0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000086c jmp LBB0_108 + //0x00000871 LBB0_117 + 0x49, 0x81, 0xf9, 0xff, 0x0f, 0x00, 0x00, //0x00000871 cmpq $4095, %r9 + 0x0f, 0x8f, 0xd2, 0x31, 0x00, 0x00, //0x00000878 jg LBB0_651 + 0x49, 0x8d, 0x41, 0x01, //0x0000087e leaq $1(%r9), %rax + 0x49, 0x89, 0x45, 0x00, //0x00000882 movq %rax, (%r13) + 0x4b, 0xc7, 0x44, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, //0x00000886 movq $0, $8(%r13,%r9,8) + 0xe9, 0x3c, 0xf9, 0xff, 0xff, //0x0000088f jmp LBB0_4 + //0x00000894 LBB0_64 + 0x4b, 0xc7, 0x44, 0xcd, 0x00, 0x02, 0x00, 0x00, 0x00, //0x00000894 movq $2, (%r13,%r9,8) + 0x48, 0x8b, 0x4d, 0x98, //0x0000089d movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000008a1 testb $64, %cl + 0x0f, 0x85, 0xcb, 0x03, 0x00, 0x00, //0x000008a4 jne LBB0_152 + 0x49, 0x8b, 0x16, //0x000008aa movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000008ad movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000008b1 movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000008b5 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000008b8 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000008bc movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xf0, 0x06, 0x00, 0x00, //0x000008c0 jne LBB0_189 + 0x49, 0x89, 0xc1, //0x000008c6 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000008c9 subq %rdx, %r9 + 0x0f, 0x84, 0xde, 0x33, 0x00, 0x00, //0x000008cc je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000008d2 cmpq $64, %r9 + 0x0f, 0x82, 0xd9, 0x26, 0x00, 0x00, //0x000008d6 jb LBB0_510 + 0x49, 0x89, 0xd6, //0x000008dc movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x000008df notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000008e2 movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x000008ea movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x000008ed xorl %r8d, %r8d + //0x000008f0 .p2align 4, 0x90 + //0x000008f0 LBB0_69 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x000008f0 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x000008f6 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x000008fd movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00000904 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000090b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000090f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00000913 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00000918 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000091c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xdf, //0x00000920 pmovmskb %xmm7, %ebx + 0x66, 0x0f, 0x6f, 0xfd, //0x00000924 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000928 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000092c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00000930 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00000934 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00000938 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000093c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00000940 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00000945 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000949 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x0000094d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000951 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00000955 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00000959 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000095e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00000962 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00000966 orq %rdx, %rsi + 0x48, 0xc1, 0xe3, 0x10, //0x00000969 shlq $16, %rbx + 0x48, 0x09, 0xf3, //0x0000096d orq %rsi, %rbx + 0x49, 0x09, 0xda, //0x00000970 orq %rbx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x00000973 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x00000977 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x0000097b orq %r15, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x0000097e shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x00000982 orq %rdi, %rcx + 0x49, 0x09, 0xcb, //0x00000985 orq %rcx, %r11 + 0x0f, 0x85, 0x30, 0x00, 0x00, 0x00, //0x00000988 jne LBB0_121 + 0x4d, 0x85, 0xc0, //0x0000098e testq %r8, %r8 + 0x0f, 0x85, 0x3d, 0x00, 0x00, 0x00, //0x00000991 jne LBB0_123 + 0x45, 0x31, 0xc0, //0x00000997 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x0000099a testq %r10, %r10 + 0x0f, 0x85, 0x83, 0x00, 0x00, 0x00, //0x0000099d jne LBB0_124 + //0x000009a3 LBB0_72 + 0x49, 0x83, 0xc1, 0xc0, //0x000009a3 addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000009a7 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000009ab addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000009af cmpq $63, %r9 + 0x0f, 0x87, 0x37, 0xff, 0xff, 0xff, //0x000009b3 ja LBB0_69 + 0xe9, 0x1e, 0x1f, 0x00, 0x00, //0x000009b9 jmp LBB0_73 + //0x000009be LBB0_121 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000009be cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000009c3 jne LBB0_123 + 0x49, 0x0f, 0xbc, 0xcb, //0x000009c9 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x000009cd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x000009d0 movq %rcx, $-56(%rbp) + //0x000009d4 LBB0_123 + 0x4c, 0x89, 0xc1, //0x000009d4 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x000009d7 notq %rcx + 0x4c, 0x21, 0xd9, //0x000009da andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x000009dd leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x000009e1 orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x000009e4 movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x000009e7 notq %rsi + 0x4c, 0x21, 0xde, //0x000009ea andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000009ed movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x000009f7 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x000009fa xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x000009fd addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x00000a00 setb %r8b + 0x48, 0x01, 0xf6, //0x00000a04 addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a07 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x00000a11 xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000a14 andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000a17 notq %rsi + 0x49, 0x21, 0xf2, //0x00000a1a andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00000a1d testq %r10, %r10 + 0x0f, 0x84, 0x7d, 0xff, 0xff, 0xff, //0x00000a20 je LBB0_72 + //0x00000a26 LBB0_124 + 0x49, 0x0f, 0xbc, 0xc2, //0x00000a26 bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x00000a2a subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00000a2d movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000a31 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x75, 0xc0, //0x00000a3b movq $-64(%rbp), %rsi + 0xe9, 0xb3, 0x0d, 0x00, 0x00, //0x00000a3f jmp LBB0_313 + //0x00000a44 LBB0_125 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000a44 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000a48 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000a4c movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000a4f leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000a53 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000a56 cmpq $32, %r9 + 0x0f, 0x8c, 0x3a, 0x1c, 0x00, 0x00, //0x00000a5a jl LBB0_133 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000a60 movl $32, %r14d + 0x31, 0xf6, //0x00000a66 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000a68 xorl %r11d, %r11d + 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00000a6b jmp LBB0_127 + //0x00000a70 .p2align 4, 0x90 + //0x00000a70 LBB0_129 + 0x45, 0x31, 0xdb, //0x00000a70 xorl %r11d, %r11d + 0x48, 0x85, 0xdb, //0x00000a73 testq %rbx, %rbx + 0x0f, 0x85, 0x2b, 0xf7, 0xff, 0xff, //0x00000a76 jne LBB0_1 + //0x00000a7c LBB0_130 + 0x48, 0x83, 0xc6, 0x20, //0x00000a7c addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00000a80 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00000a84 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00000a88 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x00000a8c cmpq $63, %rcx + 0x0f, 0x8e, 0xe7, 0x1b, 0x00, 0x00, //0x00000a90 jle LBB0_131 + //0x00000a96 LBB0_127 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x32, //0x00000a96 movdqu (%r10,%rsi), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x32, 0x10, //0x00000a9c movdqu $16(%r10,%rsi), %xmm5 + 0x66, 0x0f, 0x6f, 0xf4, //0x00000aa3 movdqa %xmm4, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000aa7 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xfe, //0x00000aab pmovmskb %xmm6, %edi + 0x66, 0x0f, 0x6f, 0xf5, //0x00000aaf movdqa %xmm5, %xmm6 + 0x66, 0x0f, 0x74, 0xf0, //0x00000ab3 pcmpeqb %xmm0, %xmm6 + 0x66, 0x0f, 0xd7, 0xde, //0x00000ab7 pmovmskb %xmm6, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000abb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000abf orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xe1, //0x00000ac2 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00000ac6 pmovmskb %xmm4, %ecx + 0x66, 0x0f, 0x74, 0xe9, //0x00000aca pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ace pmovmskb %xmm5, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000ad2 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000ad6 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000ad9 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x00000adc orq %r11, %rcx + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000adf je LBB0_129 + 0x44, 0x89, 0xd9, //0x00000ae5 movl %r11d, %ecx + 0xf7, 0xd1, //0x00000ae8 notl %ecx + 0x21, 0xf9, //0x00000aea andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x00000aec leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x00000af0 orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x00000af3 movl %r15d, %edx + 0xf7, 0xd2, //0x00000af6 notl %edx + 0x21, 0xfa, //0x00000af8 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000afa andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x00000b00 xorl %r11d, %r11d + 0x01, 0xca, //0x00000b03 addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x00000b05 setb %r11b + 0x01, 0xd2, //0x00000b09 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000b0b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000b11 andl %r15d, %edx + 0xf7, 0xd2, //0x00000b14 notl %edx + 0x21, 0xd3, //0x00000b16 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000b18 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000b1b je LBB0_130 + 0xe9, 0x81, 0xf6, 0xff, 0xff, //0x00000b21 jmp LBB0_1 + //0x00000b26 LBB0_134 + 0x4c, 0x89, 0xf1, //0x00000b26 movq %r14, %rcx + 0x4c, 0x29, 0xc1, //0x00000b29 subq %r8, %rcx + 0x48, 0x83, 0xf9, 0x10, //0x00000b2c cmpq $16, %rcx + 0x0f, 0x82, 0xc7, 0x22, 0x00, 0x00, //0x00000b30 jb LBB0_489 + 0x4c, 0x89, 0xc6, //0x00000b36 movq %r8, %rsi + 0x48, 0xf7, 0xde, //0x00000b39 negq %rsi + 0x49, 0x8d, 0x40, 0x01, //0x00000b3c leaq $1(%r8), %rax + 0x49, 0x8d, 0x48, 0xff, //0x00000b40 leaq $-1(%r8), %rcx + 0x4b, 0x8d, 0x14, 0x04, //0x00000b44 leaq (%r12,%r8), %rdx + 0x48, 0x83, 0xc2, 0xff, //0x00000b48 addq $-1, %rdx + 0x4c, 0x89, 0xc3, //0x00000b4c movq %r8, %rbx + 0x90, //0x00000b4f .p2align 4, 0x90 + //0x00000b50 LBB0_136 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00000b50 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00000b56 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00000b5a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00000b5f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00000b64 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00000b68 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00000b6c pmovmskb %xmm3, %edi + 0x85, 0xff, //0x00000b70 testl %edi, %edi + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00000b72 jne LBB0_147 + 0x48, 0x83, 0xc3, 0x10, //0x00000b78 addq $16, %rbx + 0x49, 0x8d, 0x3c, 0x36, //0x00000b7c leaq (%r14,%rsi), %rdi + 0x48, 0x83, 0xc7, 0xf0, //0x00000b80 addq $-16, %rdi + 0x48, 0x83, 0xc6, 0xf0, //0x00000b84 addq $-16, %rsi + 0x48, 0x83, 0xc0, 0x10, //0x00000b88 addq $16, %rax + 0x48, 0x83, 0xc1, 0x10, //0x00000b8c addq $16, %rcx + 0x48, 0x83, 0xc2, 0x10, //0x00000b90 addq $16, %rdx + 0x48, 0x83, 0xff, 0x0f, //0x00000b94 cmpq $15, %rdi + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x00000b98 ja LBB0_136 + 0x4c, 0x89, 0xe0, //0x00000b9e movq %r12, %rax + 0x48, 0x29, 0xf0, //0x00000ba1 subq %rsi, %rax + 0x49, 0x01, 0xf6, //0x00000ba4 addq %rsi, %r14 + 0x4c, 0x89, 0xf1, //0x00000ba7 movq %r14, %rcx + 0x48, 0x85, 0xc9, //0x00000baa testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00000bad movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00000bb1 movabsq $17596481021440, %rdi + 0x0f, 0x84, 0x40, 0x00, 0x00, 0x00, //0x00000bbb je LBB0_146 + //0x00000bc1 LBB0_139 + 0x48, 0x8d, 0x14, 0x08, //0x00000bc1 leaq (%rax,%rcx), %rdx + //0x00000bc5 LBB0_140 + 0x0f, 0xb6, 0x30, //0x00000bc5 movzbl (%rax), %esi + 0x48, 0x83, 0xfe, 0x2c, //0x00000bc8 cmpq $44, %rsi + 0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x00000bcc ja LBB0_142 + 0x48, 0x0f, 0xa3, 0xf7, //0x00000bd2 btq %rsi, %rdi + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x00000bd6 jb LBB0_146 + //0x00000bdc LBB0_142 + 0x40, 0x80, 0xfe, 0x5d, //0x00000bdc cmpb $93, %sil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x00000be0 je LBB0_146 + 0x40, 0x80, 0xfe, 0x7d, //0x00000be6 cmpb $125, %sil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00000bea je LBB0_146 + 0x48, 0x83, 0xc0, 0x01, //0x00000bf0 addq $1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000bf4 addq $-1, %rcx + 0x0f, 0x85, 0xc7, 0xff, 0xff, 0xff, //0x00000bf8 jne LBB0_140 + 0x48, 0x89, 0xd0, //0x00000bfe movq %rdx, %rax + //0x00000c01 LBB0_146 + 0x4c, 0x29, 0xe0, //0x00000c01 subq %r12, %rax + 0x49, 0x89, 0x06, //0x00000c04 movq %rax, (%r14) + 0xe9, 0xba, 0xf5, 0xff, 0xff, //0x00000c07 jmp LBB0_3 + //0x00000c0c LBB0_147 + 0x66, 0x0f, 0xbc, 0xff, //0x00000c0c bsfw %di, %di + 0x0f, 0xb7, 0xdf, //0x00000c10 movzwl %di, %ebx + 0x48, 0x89, 0xdf, //0x00000c13 movq %rbx, %rdi + 0x48, 0x29, 0xf7, //0x00000c16 subq %rsi, %rdi + 0x4c, 0x8b, 0x75, 0xd0, //0x00000c19 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x3e, //0x00000c1d movq %rdi, (%r14) + 0x48, 0x85, 0xff, //0x00000c20 testq %rdi, %rdi + 0x0f, 0x8e, 0x9d, 0xf5, 0xff, 0xff, //0x00000c23 jle LBB0_3 + 0x48, 0x01, 0xd8, //0x00000c29 addq %rbx, %rax + 0x48, 0x01, 0xd9, //0x00000c2c addq %rbx, %rcx + 0x48, 0x01, 0xda, //0x00000c2f addq %rbx, %rdx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000c32 .p2align 4, 0x90 + //0x00000c40 LBB0_149 + 0x0f, 0xb6, 0x32, //0x00000c40 movzbl (%rdx), %esi + 0x48, 0x83, 0xfe, 0x20, //0x00000c43 cmpq $32, %rsi + 0x0f, 0x87, 0x79, 0xf5, 0xff, 0xff, //0x00000c47 ja LBB0_3 + 0x49, 0x0f, 0xa3, 0xf3, //0x00000c4d btq %rsi, %r11 + 0x0f, 0x83, 0x6f, 0xf5, 0xff, 0xff, //0x00000c51 jae LBB0_3 + 0x49, 0x89, 0x0e, //0x00000c57 movq %rcx, (%r14) + 0x48, 0x83, 0xc0, 0xff, //0x00000c5a addq $-1, %rax + 0x48, 0x83, 0xc1, 0xff, //0x00000c5e addq $-1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00000c62 addq $-1, %rdx + 0x48, 0x83, 0xf8, 0x01, //0x00000c66 cmpq $1, %rax + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x00000c6a jg LBB0_149 + 0xe9, 0x51, 0xf5, 0xff, 0xff, //0x00000c70 jmp LBB0_3 + //0x00000c75 LBB0_152 + 0x48, 0x8b, 0x4d, 0xa8, //0x00000c75 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00000c79 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x00000c7d movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x00000c80 leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00000c84 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00000c87 cmpq $32, %r9 + 0x0f, 0x8c, 0xa5, 0x1a, 0x00, 0x00, //0x00000c8b jl LBB0_161 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00000c91 movl $32, %r14d + 0x31, 0xf6, //0x00000c97 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00000c99 xorl %r11d, %r11d + 0xe9, 0x35, 0x00, 0x00, 0x00, //0x00000c9c jmp LBB0_154 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ca1 .p2align 4, 0x90 + //0x00000cb0 LBB0_157 0x45, 0x31, 0xdb, //0x00000cb0 xorl %r11d, %r11d - 0x48, 0x85, 0xff, //0x00000cb3 testq %rdi, %rdi - 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_151 - //0x00000cbc LBB0_153 - 0x48, 0x83, 0xc2, 0x20, //0x00000cbc addq $32, %rdx + 0x48, 0x85, 0xdb, //0x00000cb3 testq %rbx, %rbx + 0x0f, 0x85, 0xa5, 0x00, 0x00, 0x00, //0x00000cb6 jne LBB0_156 + //0x00000cbc LBB0_158 + 0x48, 0x83, 0xc6, 0x20, //0x00000cbc addq $32, %rsi 0x4b, 0x8d, 0x0c, 0x31, //0x00000cc0 leaq (%r9,%r14), %rcx 0x48, 0x83, 0xc1, 0xe0, //0x00000cc4 addq $-32, %rcx 0x49, 0x83, 0xc6, 0xe0, //0x00000cc8 addq $-32, %r14 0x48, 0x83, 0xf9, 0x3f, //0x00000ccc cmpq $63, %rcx - 0x0f, 0x8e, 0xfb, 0x19, 0x00, 0x00, //0x00000cd0 jle LBB0_154 - //0x00000cd6 LBB0_149 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00000cd6 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00000cdc movdqu $16(%r10,%rdx), %xmm4 + 0x0f, 0x8e, 0x43, 0x1a, 0x00, 0x00, //0x00000cd0 jle LBB0_159 + //0x00000cd6 LBB0_154 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00000cd6 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00000cdc movdqu $16(%r10,%rsi), %xmm4 0x66, 0x0f, 0x6f, 0xeb, //0x00000ce3 movdqa %xmm3, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000ce7 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00000ceb pmovmskb %xmm5, %esi + 0x66, 0x0f, 0xd7, 0xfd, //0x00000ceb pmovmskb %xmm5, %edi 0x66, 0x0f, 0x6f, 0xec, //0x00000cef movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000cf3 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000cf7 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00000cfb shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00000cff orq %rsi, %rdi + 0x66, 0x0f, 0xd7, 0xdd, //0x00000cf7 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00000cfb shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00000cff orq %rdi, %rbx 0x66, 0x0f, 0x74, 0xd9, //0x00000d02 pcmpeqb %xmm1, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000d06 pmovmskb %xmm3, %ecx 0x66, 0x0f, 0x74, 0xe1, //0x00000d0a pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00000d0e pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00000d12 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00000d16 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00000d19 movq %rsi, %rcx + 0x66, 0x0f, 0xd7, 0xfc, //0x00000d0e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x00000d12 shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x00000d16 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x00000d19 movq %rdi, %rcx 0x4c, 0x09, 0xd9, //0x00000d1c orq %r11, %rcx - 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_152 + 0x0f, 0x84, 0x8b, 0xff, 0xff, 0xff, //0x00000d1f je LBB0_157 0x44, 0x89, 0xd9, //0x00000d25 movl %r11d, %ecx 0xf7, 0xd1, //0x00000d28 notl %ecx - 0x21, 0xf1, //0x00000d2a andl %esi, %ecx + 0x21, 0xf9, //0x00000d2a andl %edi, %ecx 0x44, 0x8d, 0x3c, 0x09, //0x00000d2c leal (%rcx,%rcx), %r15d 0x45, 0x09, 0xdf, //0x00000d30 orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00000d33 movl %r15d, %ebx - 0xf7, 0xd3, //0x00000d36 notl %ebx - 0x21, 0xf3, //0x00000d38 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %ebx + 0x44, 0x89, 0xfa, //0x00000d33 movl %r15d, %edx + 0xf7, 0xd2, //0x00000d36 notl %edx + 0x21, 0xfa, //0x00000d38 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000d3a andl $-1431655766, %edx 0x45, 0x31, 0xdb, //0x00000d40 xorl %r11d, %r11d - 0x01, 0xcb, //0x00000d43 addl %ecx, %ebx + 0x01, 0xca, //0x00000d43 addl %ecx, %edx 0x41, 0x0f, 0x92, 0xc3, //0x00000d45 setb %r11b - 0x01, 0xdb, //0x00000d49 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00000d51 andl %r15d, %ebx - 0xf7, 0xd3, //0x00000d54 notl %ebx - 0x21, 0xdf, //0x00000d56 andl %ebx, %edi - 0x48, 0x85, 0xff, //0x00000d58 testq %rdi, %rdi - 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_153 - //0x00000d61 LBB0_151 - 0x0f, 0xbc, 0xc7, //0x00000d61 bsfl %edi, %eax + 0x01, 0xd2, //0x00000d49 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000d4b xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x00000d51 andl %r15d, %edx + 0xf7, 0xd2, //0x00000d54 notl %edx + 0x21, 0xd3, //0x00000d56 andl %edx, %ebx + 0x48, 0x85, 0xdb, //0x00000d58 testq %rbx, %rbx + 0x0f, 0x84, 0x5b, 0xff, 0xff, 0xff, //0x00000d5b je LBB0_158 + //0x00000d61 LBB0_156 + 0x0f, 0xbc, 0xc3, //0x00000d61 bsfl %ebx, %eax 0x4c, 0x01, 0xc0, //0x00000d64 addq %r8, %rax - 0x4c, 0x8d, 0x14, 0x02, //0x00000d67 leaq (%rdx,%rax), %r10 + 0x4c, 0x8d, 0x14, 0x06, //0x00000d67 leaq (%rsi,%rax), %r10 0x49, 0x83, 0xc2, 0x01, //0x00000d6b addq $1, %r10 0x4c, 0x8b, 0x75, 0xd0, //0x00000d6f movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000d73 movabsq $4294977024, %r11 0x4d, 0x89, 0x16, //0x00000d7d movq %r10, (%r14) 0x4d, 0x85, 0xc0, //0x00000d80 testq %r8, %r8 - 0x0f, 0x8f, 0x93, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_306 - 0xe9, 0x73, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_608 - //0x00000d8e LBB0_157 + 0x0f, 0x8f, 0x83, 0x0a, 0x00, 0x00, //0x00000d83 jg LBB0_315 + 0xe9, 0xce, 0x2c, 0x00, 0x00, //0x00000d89 jmp LBB0_622 + //0x00000d8e LBB0_162 0x49, 0x89, 0xc6, //0x00000d8e movq %rax, %r14 0x49, 0x29, 0xd6, //0x00000d91 subq %rdx, %r14 - 0x0f, 0x84, 0x71, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_643 + 0x0f, 0x84, 0xdc, 0x2e, 0x00, 0x00, //0x00000d94 je LBB0_657 0x49, 0x83, 0xfe, 0x40, //0x00000d9a cmpq $64, %r14 - 0x0f, 0x82, 0x17, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_486 - 0x4c, 0x89, 0x65, 0xc0, //0x00000da4 movq %r12, $-64(%rbp) + 0x0f, 0x82, 0x5e, 0x21, 0x00, 0x00, //0x00000d9e jb LBB0_504 + 0x4c, 0x89, 0x65, 0xb8, //0x00000da4 movq %r12, $-72(%rbp) 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000da8 movq $-1, $-56(%rbp) - 0x48, 0x8b, 0x45, 0xb0, //0x00000db0 movq $-80(%rbp), %rax + 0x48, 0x8b, 0x45, 0xc0, //0x00000db0 movq $-64(%rbp), %rax 0x31, 0xdb, //0x00000db4 xorl %ebx, %ebx 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000db6 .p2align 4, 0x90 - //0x00000dc0 LBB0_160 + //0x00000dc0 LBB0_165 0x49, 0x89, 0xdc, //0x00000dc0 movq %rbx, %r12 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000dc3 movq $-64(%rbp), %rcx + 0x48, 0x8b, 0x4d, 0xb8, //0x00000dc3 movq $-72(%rbp), %rcx 0xf3, 0x0f, 0x6f, 0x1c, 0x01, //0x00000dc7 movdqu (%rcx,%rax), %xmm3 0xf3, 0x0f, 0x6f, 0x7c, 0x01, 0x10, //0x00000dcc movdqu $16(%rcx,%rax), %xmm7 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x20, //0x00000dd2 movdqu $32(%rcx,%rax), %xmm6 @@ -877,7 +880,7 @@ var _text_validate_one = []byte{ 0x66, 0x0f, 0xd7, 0xdd, //0x00000df3 pmovmskb %xmm5, %ebx 0x66, 0x0f, 0x6f, 0xee, //0x00000df7 movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000dfb pcmpeqb %xmm0, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x00000dff pmovmskb %xmm5, %r10d + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00000dff pmovmskb %xmm5, %r9d 0x66, 0x0f, 0x6f, 0xec, //0x00000e04 movdqa %xmm4, %xmm5 0x66, 0x0f, 0x74, 0xe8, //0x00000e08 pcmpeqb %xmm0, %xmm5 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00000e0c pmovmskb %xmm5, %r15d @@ -886,7 +889,7 @@ var _text_validate_one = []byte{ 0x66, 0x44, 0x0f, 0xd7, 0xed, //0x00000e19 pmovmskb %xmm5, %r13d 0x66, 0x0f, 0x6f, 0xef, //0x00000e1e movdqa %xmm7, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e22 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00000e26 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0xd7, 0xd5, //0x00000e26 pmovmskb %xmm5, %edx 0x66, 0x0f, 0x6f, 0xee, //0x00000e2a movdqa %xmm6, %xmm5 0x66, 0x0f, 0x74, 0xe9, //0x00000e2e pcmpeqb %xmm1, %xmm5 0x66, 0x0f, 0xd7, 0xcd, //0x00000e32 pmovmskb %xmm5, %ecx @@ -897,3281 +900,3312 @@ var _text_validate_one = []byte{ 0x66, 0x0f, 0x64, 0xef, //0x00000e48 pcmpgtb %xmm7, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00000e4c pcmpgtb %xmm10, %xmm7 0x66, 0x0f, 0xdb, 0xfd, //0x00000e51 pand %xmm5, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00000e55 pmovmskb %xmm7, %esi + 0x66, 0x0f, 0xd7, 0xff, //0x00000e55 pmovmskb %xmm7, %edi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e59 movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xee, //0x00000e5e pcmpgtb %xmm6, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00000e62 pcmpgtb %xmm10, %xmm6 0x66, 0x0f, 0xdb, 0xf5, //0x00000e67 pand %xmm5, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x00000e6b pmovmskb %xmm6, %edx + 0x66, 0x0f, 0xd7, 0xf6, //0x00000e6b pmovmskb %xmm6, %esi 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00000e6f movdqa %xmm12, %xmm5 0x66, 0x0f, 0x64, 0xec, //0x00000e74 pcmpgtb %xmm4, %xmm5 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00000e78 pcmpgtb %xmm10, %xmm4 0x66, 0x0f, 0xdb, 0xe5, //0x00000e7d pand %xmm5, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xcc, //0x00000e81 pmovmskb %xmm4, %r9d + 0x66, 0x44, 0x0f, 0xd7, 0xd4, //0x00000e81 pmovmskb %xmm4, %r10d 0x49, 0xc1, 0xe7, 0x30, //0x00000e86 shlq $48, %r15 - 0x49, 0xc1, 0xe2, 0x20, //0x00000e8a shlq $32, %r10 - 0x4d, 0x09, 0xfa, //0x00000e8e orq %r15, %r10 + 0x49, 0xc1, 0xe1, 0x20, //0x00000e8a shlq $32, %r9 + 0x4d, 0x09, 0xf9, //0x00000e8e orq %r15, %r9 0x48, 0xc1, 0xe3, 0x10, //0x00000e91 shlq $16, %rbx - 0x4c, 0x09, 0xd3, //0x00000e95 orq %r10, %rbx + 0x4c, 0x09, 0xcb, //0x00000e95 orq %r9, %rbx 0x49, 0x09, 0xdb, //0x00000e98 orq %rbx, %r11 0x49, 0xc1, 0xe0, 0x30, //0x00000e9b shlq $48, %r8 0x48, 0xc1, 0xe1, 0x20, //0x00000e9f shlq $32, %rcx 0x4c, 0x09, 0xc1, //0x00000ea3 orq %r8, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x00000ea6 shlq $16, %rdi - 0x48, 0x09, 0xcf, //0x00000eaa orq %rcx, %rdi - 0x49, 0xc1, 0xe1, 0x30, //0x00000ead shlq $48, %r9 - 0x48, 0xc1, 0xe2, 0x20, //0x00000eb1 shlq $32, %rdx - 0x4c, 0x09, 0xca, //0x00000eb5 orq %r9, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x00000eb8 shlq $16, %rsi - 0x48, 0x09, 0xd6, //0x00000ebc orq %rdx, %rsi - 0x49, 0x09, 0xfd, //0x00000ebf orq %rdi, %r13 - 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_177 + 0x48, 0xc1, 0xe2, 0x10, //0x00000ea6 shlq $16, %rdx + 0x48, 0x09, 0xca, //0x00000eaa orq %rcx, %rdx + 0x49, 0xc1, 0xe2, 0x30, //0x00000ead shlq $48, %r10 + 0x48, 0xc1, 0xe6, 0x20, //0x00000eb1 shlq $32, %rsi + 0x4c, 0x09, 0xd6, //0x00000eb5 orq %r10, %rsi + 0x48, 0xc1, 0xe7, 0x10, //0x00000eb8 shlq $16, %rdi + 0x48, 0x09, 0xf7, //0x00000ebc orq %rsi, %rdi + 0x49, 0x09, 0xd5, //0x00000ebf orq %rdx, %r13 + 0x0f, 0x85, 0x51, 0x00, 0x00, 0x00, //0x00000ec2 jne LBB0_182 0x4d, 0x85, 0xe4, //0x00000ec8 testq %r12, %r12 - 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_179 + 0x0f, 0x85, 0x5e, 0x00, 0x00, 0x00, //0x00000ecb jne LBB0_184 0x31, 0xdb, //0x00000ed1 xorl %ebx, %ebx - //0x00000ed3 LBB0_163 + //0x00000ed3 LBB0_168 0x66, 0x41, 0x0f, 0x6f, 0xe4, //0x00000ed3 movdqa %xmm12, %xmm4 0x66, 0x0f, 0x64, 0xe3, //0x00000ed8 pcmpgtb %xmm3, %xmm4 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00000edc pcmpgtb %xmm10, %xmm3 0x66, 0x0f, 0xdb, 0xdc, //0x00000ee1 pand %xmm4, %xmm3 0x66, 0x0f, 0xd7, 0xcb, //0x00000ee5 pmovmskb %xmm3, %ecx - 0x48, 0x09, 0xce, //0x00000ee9 orq %rcx, %rsi + 0x48, 0x09, 0xcf, //0x00000ee9 orq %rcx, %rdi 0x4d, 0x85, 0xdb, //0x00000eec testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00000eef movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_180 - 0x48, 0x85, 0xf6, //0x00000ef9 testq %rsi, %rsi - 0x0f, 0x85, 0x84, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_618 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00000eef movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x82, 0x00, 0x00, 0x00, //0x00000ef3 jne LBB0_185 + 0x48, 0x85, 0xff, //0x00000ef9 testq %rdi, %rdi + 0x0f, 0x85, 0xec, 0x2b, 0x00, 0x00, //0x00000efc jne LBB0_631 0x49, 0x83, 0xc6, 0xc0, //0x00000f02 addq $-64, %r14 0x48, 0x83, 0xc0, 0x40, //0x00000f06 addq $64, %rax 0x49, 0x83, 0xfe, 0x3f, //0x00000f0a cmpq $63, %r14 - 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_160 - 0xe9, 0x6b, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_166 - //0x00000f19 LBB0_177 + 0x0f, 0x87, 0xac, 0xfe, 0xff, 0xff, //0x00000f0e ja LBB0_165 + 0xe9, 0xb3, 0x18, 0x00, 0x00, //0x00000f14 jmp LBB0_171 + //0x00000f19 LBB0_182 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00000f19 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_179 + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00000f1e jne LBB0_184 0x49, 0x0f, 0xbc, 0xcd, //0x00000f24 bsfq %r13, %rcx 0x48, 0x01, 0xc1, //0x00000f28 addq %rax, %rcx 0x48, 0x89, 0x4d, 0xc8, //0x00000f2b movq %rcx, $-56(%rbp) - //0x00000f2f LBB0_179 + //0x00000f2f LBB0_184 0x4c, 0x89, 0xe1, //0x00000f2f movq %r12, %rcx 0x48, 0xf7, 0xd1, //0x00000f32 notq %rcx 0x4c, 0x21, 0xe9, //0x00000f35 andq %r13, %rcx 0x48, 0x8d, 0x14, 0x09, //0x00000f38 leaq (%rcx,%rcx), %rdx 0x4c, 0x09, 0xe2, //0x00000f3c orq %r12, %rdx - 0x48, 0x89, 0xd7, //0x00000f3f movq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f42 notq %rdi - 0x4c, 0x21, 0xef, //0x00000f45 andq %r13, %rdi + 0x48, 0x89, 0xd6, //0x00000f3f movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f42 notq %rsi + 0x4c, 0x21, 0xee, //0x00000f45 andq %r13, %rsi 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000f48 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xdf, //0x00000f52 andq %rbx, %rdi + 0x48, 0x21, 0xde, //0x00000f52 andq %rbx, %rsi 0x31, 0xdb, //0x00000f55 xorl %ebx, %ebx - 0x48, 0x01, 0xcf, //0x00000f57 addq %rcx, %rdi + 0x48, 0x01, 0xce, //0x00000f57 addq %rcx, %rsi 0x0f, 0x92, 0xc3, //0x00000f5a setb %bl - 0x48, 0x01, 0xff, //0x00000f5d addq %rdi, %rdi + 0x48, 0x01, 0xf6, //0x00000f5d addq %rsi, %rsi 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000f60 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xcf, //0x00000f6a xorq %rcx, %rdi - 0x48, 0x21, 0xd7, //0x00000f6d andq %rdx, %rdi - 0x48, 0xf7, 0xd7, //0x00000f70 notq %rdi - 0x49, 0x21, 0xfb, //0x00000f73 andq %rdi, %r11 - 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_163 - //0x00000f7b LBB0_180 + 0x48, 0x31, 0xce, //0x00000f6a xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00000f6d andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00000f70 notq %rsi + 0x49, 0x21, 0xf3, //0x00000f73 andq %rsi, %r11 + 0xe9, 0x58, 0xff, 0xff, 0xff, //0x00000f76 jmp LBB0_168 + //0x00000f7b LBB0_185 0x49, 0x0f, 0xbc, 0xcb, //0x00000f7b bsfq %r11, %rcx - 0x48, 0x85, 0xf6, //0x00000f7f testq %rsi, %rsi - 0x0f, 0x84, 0xdb, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_221 - 0x48, 0x0f, 0xbc, 0xd6, //0x00000f88 bsfq %rsi, %rdx + 0x48, 0x85, 0xff, //0x00000f7f testq %rdi, %rdi + 0x0f, 0x84, 0xc4, 0x02, 0x00, 0x00, //0x00000f82 je LBB0_227 + 0x48, 0x0f, 0xbc, 0xd7, //0x00000f88 bsfq %rdi, %rdx 0x4c, 0x8b, 0x75, 0xd0, //0x00000f8c movq $-48(%rbp), %r14 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000f90 movabsq $4294977024, %r11 0x48, 0x39, 0xca, //0x00000f9a cmpq %rcx, %rdx - 0x0f, 0x83, 0xdc, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_222 - 0xe9, 0x74, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_182 - //0x00000fa8 LBB0_183 - 0x41, 0x89, 0xcb, //0x00000fa8 movl %ecx, %r11d - 0x4d, 0x01, 0xf3, //0x00000fab addq %r14, %r11 - 0x4d, 0x01, 0xeb, //0x00000fae addq %r13, %r11 - //0x00000fb1 LBB0_184 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00000fb1 movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00000fb8 testq %r8, %r8 - 0x0f, 0x85, 0x49, 0x02, 0x00, 0x00, //0x00000fbb jne LBB0_213 - 0xe9, 0x00, 0x2c, 0x00, 0x00, //0x00000fc1 jmp LBB0_185 - //0x00000fc6 LBB0_186 - 0x49, 0x29, 0xd1, //0x00000fc6 subq %rdx, %r9 - 0x48, 0x89, 0xd1, //0x00000fc9 movq %rdx, %rcx - 0x0f, 0x84, 0x73, 0x2c, 0x00, 0x00, //0x00000fcc je LBB0_644 - 0x4c, 0x89, 0x65, 0xc0, //0x00000fd2 movq %r12, $-64(%rbp) - 0x49, 0x83, 0xf9, 0x40, //0x00000fd6 cmpq $64, %r9 - 0x0f, 0x82, 0x9e, 0x1f, 0x00, 0x00, //0x00000fda jb LBB0_494 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fe0 movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x00000fe8 movq %rcx, %rax - 0x45, 0x31, 0xe4, //0x00000feb xorl %r12d, %r12d - 0x90, 0x90, //0x00000fee .p2align 4, 0x90 - //0x00000ff0 LBB0_189 - 0x48, 0x8b, 0x4d, 0xc0, //0x00000ff0 movq $-64(%rbp), %rcx - 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000ff4 movdqu (%rcx,%rax), %xmm13 - 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000ffa movdqu $16(%rcx,%rax), %xmm6 - 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00001000 movdqu $32(%rcx,%rax), %xmm5 - 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00001006 movdqu $48(%rcx,%rax), %xmm4 - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x0000100c movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001011 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001015 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xde, //0x0000101a movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000101e pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x00001022 pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001026 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x0000102a pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000102e pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x00001033 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001037 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000103b pmovmskb %xmm3, %r15d - 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001040 movdqa %xmm13, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001045 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001049 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xde, //0x0000104e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001052 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001056 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xdd, //0x0000105a movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000105e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001062 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x00001066 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000106a pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x0000106e pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001073 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00001078 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000107c pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x00001081 pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xfe, //0x00001085 pmovmskb %xmm6, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001089 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x0000108e pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001092 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x00001097 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000109b pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000109f movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000010a4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000010a8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000010ad pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010b1 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x000010b6 shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x000010ba shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x000010be orq %r15, %r14 - 0x48, 0xc1, 0xe3, 0x10, //0x000010c1 shlq $16, %rbx - 0x4c, 0x09, 0xf3, //0x000010c5 orq %r14, %rbx - 0x49, 0x09, 0xdb, //0x000010c8 orq %rbx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x000010cb shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x000010cf shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x000010d3 orq %r10, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x000010d6 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x000010da orq %rsi, %rcx - 0x49, 0xc1, 0xe0, 0x30, //0x000010dd shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000010e1 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000010e5 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000010e8 shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000010ec orq %rdx, %rdi - 0x49, 0x09, 0xcd, //0x000010ef orq %rcx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010f2 jne LBB0_206 - 0x4d, 0x85, 0xe4, //0x000010f8 testq %r12, %r12 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010fb jne LBB0_208 - 0x45, 0x31, 0xe4, //0x00001101 xorl %r12d, %r12d - 0x4c, 0x8b, 0x75, 0xd0, //0x00001104 movq $-48(%rbp), %r14 - //0x00001108 LBB0_192 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001108 movdqa %xmm12, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x0000110d pcmpgtb %xmm13, %xmm3 - 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001112 pcmpgtb %xmm10, %xmm13 - 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001117 pand %xmm3, %xmm13 - 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000111c pmovmskb %xmm13, %ecx - 0x48, 0x09, 0xcf, //0x00001121 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x00001124 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001127 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000112b jne LBB0_210 - 0x48, 0x85, 0xff, //0x00001131 testq %rdi, %rdi - 0x0f, 0x85, 0x6f, 0x2a, 0x00, 0x00, //0x00001134 jne LBB0_632 - 0x49, 0x83, 0xc1, 0xc0, //0x0000113a addq $-64, %r9 - 0x48, 0x83, 0xc0, 0x40, //0x0000113e addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001142 cmpq $63, %r9 - 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001146 ja LBB0_189 - 0xe9, 0xd2, 0x17, 0x00, 0x00, //0x0000114c jmp LBB0_195 - //0x00001151 LBB0_206 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001151 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00001156 movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000115a jne LBB0_209 - 0x49, 0x0f, 0xbc, 0xcd, //0x00001160 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00001164 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00001167 movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000116b jmp LBB0_209 - //0x00001170 LBB0_208 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001170 movq $-48(%rbp), %r14 - //0x00001174 LBB0_209 - 0x4c, 0x89, 0xe1, //0x00001174 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00001177 notq %rcx - 0x4c, 0x21, 0xe9, //0x0000117a andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x0000117d leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xe2, //0x00001181 orq %r12, %rdx - 0x48, 0x89, 0xd6, //0x00001184 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001187 notq %rsi - 0x4c, 0x21, 0xee, //0x0000118a andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000118d movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x00001197 andq %rbx, %rsi - 0x45, 0x31, 0xe4, //0x0000119a xorl %r12d, %r12d - 0x48, 0x01, 0xce, //0x0000119d addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc4, //0x000011a0 setb %r12b - 0x48, 0x01, 0xf6, //0x000011a4 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000011a7 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x000011b1 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x000011b4 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000011b7 notq %rsi - 0x49, 0x21, 0xf3, //0x000011ba andq %rsi, %r11 - 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011bd jmp LBB0_192 - //0x000011c2 LBB0_210 - 0x49, 0x0f, 0xbc, 0xcb, //0x000011c2 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x000011c6 testq %rdi, %rdi - 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011c9 je LBB0_302 - 0x48, 0x0f, 0xbc, 0xd7, //0x000011cf bsfq %rdi, %rdx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011d3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5a, 0xee, 0xff, 0xff, //0x000011dd movdqu $-4518(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000011e6 cmpq %rcx, %rdx - 0x0f, 0x83, 0x0d, 0x06, 0x00, 0x00, //0x000011e9 jae LBB0_303 - 0xe9, 0xf8, 0x29, 0x00, 0x00, //0x000011ef jmp LBB0_640 - //0x000011f4 LBB0_212 - 0x48, 0x01, 0xf9, //0x000011f4 addq %rdi, %rcx - 0x49, 0x89, 0xcb, //0x000011f7 movq %rcx, %r11 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011fa movq $-1, %r13 - 0x4d, 0x85, 0xc0, //0x00001201 testq %r8, %r8 - 0x0f, 0x84, 0xbc, 0x29, 0x00, 0x00, //0x00001204 je LBB0_185 - //0x0000120a LBB0_213 - 0x4d, 0x85, 0xc9, //0x0000120a testq %r9, %r9 - 0x48, 0x8b, 0x75, 0xc0, //0x0000120d movq $-64(%rbp), %rsi - 0x0f, 0x84, 0x1b, 0x28, 0x00, 0x00, //0x00001211 je LBB0_612 - 0x4d, 0x85, 0xff, //0x00001217 testq %r15, %r15 - 0x0f, 0x84, 0x12, 0x28, 0x00, 0x00, //0x0000121a je LBB0_612 - 0x4d, 0x29, 0xf3, //0x00001220 subq %r14, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x00001223 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xc8, //0x00001227 cmpq %rcx, %r8 - 0x0f, 0x84, 0xac, 0xef, 0xff, 0xff, //0x0000122a je LBB0_1 - 0x49, 0x39, 0xc9, //0x00001230 cmpq %rcx, %r9 - 0x0f, 0x84, 0xa3, 0xef, 0xff, 0xff, //0x00001233 je LBB0_1 - 0x49, 0x39, 0xcf, //0x00001239 cmpq %rcx, %r15 - 0x0f, 0x84, 0x9a, 0xef, 0xff, 0xff, //0x0000123c je LBB0_1 - 0x4d, 0x85, 0xc9, //0x00001242 testq %r9, %r9 - 0x0f, 0x8e, 0x6d, 0x05, 0x00, 0x00, //0x00001245 jle LBB0_299 - 0x49, 0x8d, 0x49, 0xff, //0x0000124b leaq $-1(%r9), %rcx - 0x49, 0x39, 0xcf, //0x0000124f cmpq %rcx, %r15 - 0x0f, 0x84, 0x60, 0x05, 0x00, 0x00, //0x00001252 je LBB0_299 - 0x49, 0xf7, 0xd1, //0x00001258 notq %r9 - 0x4d, 0x89, 0xcd, //0x0000125b movq %r9, %r13 - 0xe9, 0x7f, 0xef, 0xff, 0xff, //0x0000125e jmp LBB0_2 - //0x00001263 LBB0_221 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00001263 movl $64, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001268 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000126c movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x00001276 cmpq %rcx, %rdx - 0x0f, 0x82, 0x9d, 0x29, 0x00, 0x00, //0x00001279 jb LBB0_182 - //0x0000127f LBB0_222 - 0x48, 0x01, 0xc8, //0x0000127f addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00001282 addq $1, %rax - //0x00001286 LBB0_223 - 0x48, 0x85, 0xc0, //0x00001286 testq %rax, %rax - 0x0f, 0x88, 0x7e, 0x27, 0x00, 0x00, //0x00001289 js LBB0_609 - //0x0000128f LBB0_224 - 0x49, 0x89, 0x06, //0x0000128f movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x00001292 movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001296 testq %rax, %rax - 0x0f, 0x8f, 0x21, 0xef, 0xff, 0xff, //0x00001299 jg LBB0_4 - 0xe9, 0x54, 0x27, 0x00, 0x00, //0x0000129f jmp LBB0_606 - //0x000012a4 LBB0_225 - 0x49, 0x8b, 0x0e, //0x000012a4 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x000012a7 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x000012ab movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfc, //0x000012af leaq $-4(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x000012b3 cmpq %rsi, %rcx - 0x0f, 0x87, 0xc2, 0x27, 0x00, 0x00, //0x000012b6 ja LBB0_617 - 0x41, 0x8b, 0x14, 0x0c, //0x000012bc movl (%r12,%rcx), %edx - 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012c0 cmpl $1702063201, %edx - 0x0f, 0x85, 0xe7, 0x27, 0x00, 0x00, //0x000012c6 jne LBB0_622 - 0x48, 0x8d, 0x41, 0x04, //0x000012cc leaq $4(%rcx), %rax - 0x49, 0x89, 0x06, //0x000012d0 movq %rax, (%r14) - 0x48, 0x85, 0xc9, //0x000012d3 testq %rcx, %rcx - 0x0f, 0x8f, 0xe4, 0xee, 0xff, 0xff, //0x000012d6 jg LBB0_4 - 0xe9, 0xbc, 0x28, 0x00, 0x00, //0x000012dc jmp LBB0_228 - //0x000012e1 LBB0_229 - 0xf6, 0x45, 0x98, 0x40, //0x000012e1 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x57, 0x05, 0x00, 0x00, //0x000012e5 jne LBB0_308 - 0x49, 0x8b, 0x45, 0x00, //0x000012eb movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000012ef cmpq $4095, %rax - 0x0f, 0x8f, 0xf1, 0x26, 0x00, 0x00, //0x000012f5 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x000012fb leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x000012ff movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x00001303 movq $5, $8(%r13,%rax,8) - 0xe9, 0xaf, 0xee, 0xff, 0xff, //0x0000130c jmp LBB0_4 - //0x00001311 LBB0_232 - 0x48, 0x8b, 0x4d, 0x98, //0x00001311 movq $-104(%rbp), %rcx - 0xf6, 0xc1, 0x40, //0x00001315 testb $64, %cl - 0x0f, 0x85, 0xa0, 0x09, 0x00, 0x00, //0x00001318 jne LBB0_334 - 0x49, 0x8b, 0x16, //0x0000131e movq (%r14), %rdx - 0x48, 0x8b, 0x45, 0xa8, //0x00001321 movq $-88(%rbp), %rax - 0x48, 0x8b, 0x40, 0x08, //0x00001325 movq $8(%rax), %rax - 0xf6, 0xc1, 0x20, //0x00001329 testb $32, %cl - 0x48, 0x89, 0xd1, //0x0000132c movq %rdx, %rcx - 0x48, 0x89, 0x55, 0xb0, //0x0000132f movq %rdx, $-80(%rbp) - 0x48, 0x89, 0x45, 0xa0, //0x00001333 movq %rax, $-96(%rbp) - 0x0f, 0x85, 0x45, 0x10, 0x00, 0x00, //0x00001337 jne LBB0_385 - 0x49, 0x89, 0xc1, //0x0000133d movq %rax, %r9 - 0x49, 0x29, 0xd1, //0x00001340 subq %rdx, %r9 - 0x0f, 0x84, 0xef, 0x28, 0x00, 0x00, //0x00001343 je LBB0_646 - 0x49, 0x83, 0xf9, 0x40, //0x00001349 cmpq $64, %r9 - 0x0f, 0x82, 0x05, 0x1d, 0x00, 0x00, //0x0000134d jb LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00001353 movq $-80(%rbp), %rax - 0x49, 0x89, 0xc6, //0x00001357 movq %rax, %r14 - 0x49, 0xf7, 0xd6, //0x0000135a notq %r14 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000135d movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00001365 xorl %r8d, %r8d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001368 .p2align 4, 0x90 - //0x00001370 LBB0_237 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001370 movdqu (%r12,%rax), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001376 movdqu $16(%r12,%rax), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000137d movdqu $32(%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001384 movdqu $48(%r12,%rax), %xmm6 - 0x66, 0x0f, 0x6f, 0xfb, //0x0000138b movdqa %xmm3, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000138f pcmpeqb %xmm0, %xmm7 - 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001393 pmovmskb %xmm7, %r10d - 0x66, 0x0f, 0x6f, 0xfc, //0x00001398 movdqa %xmm4, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x0000139c pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xcf, //0x000013a0 pmovmskb %xmm7, %ecx - 0x66, 0x0f, 0x6f, 0xfd, //0x000013a4 movdqa %xmm5, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013a8 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x000013ac pmovmskb %xmm7, %edi - 0x66, 0x0f, 0x6f, 0xfe, //0x000013b0 movdqa %xmm6, %xmm7 - 0x66, 0x0f, 0x74, 0xf8, //0x000013b4 pcmpeqb %xmm0, %xmm7 - 0x66, 0x0f, 0xd7, 0xd7, //0x000013b8 pmovmskb %xmm7, %edx - 0x66, 0x0f, 0x74, 0xd9, //0x000013bc pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000013c0 pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x74, 0xe1, //0x000013c5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xdc, //0x000013c9 pmovmskb %xmm4, %ebx - 0x66, 0x0f, 0x74, 0xe9, //0x000013cd pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x000013d1 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x74, 0xf1, //0x000013d5 pcmpeqb %xmm1, %xmm6 - 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x000013d9 pmovmskb %xmm6, %r15d - 0x48, 0xc1, 0xe2, 0x30, //0x000013de shlq $48, %rdx - 0x48, 0xc1, 0xe7, 0x20, //0x000013e2 shlq $32, %rdi - 0x48, 0x09, 0xd7, //0x000013e6 orq %rdx, %rdi - 0x48, 0xc1, 0xe1, 0x10, //0x000013e9 shlq $16, %rcx - 0x48, 0x09, 0xf9, //0x000013ed orq %rdi, %rcx - 0x49, 0x09, 0xca, //0x000013f0 orq %rcx, %r10 - 0x49, 0xc1, 0xe7, 0x30, //0x000013f3 shlq $48, %r15 - 0x48, 0xc1, 0xe6, 0x20, //0x000013f7 shlq $32, %rsi - 0x4c, 0x09, 0xfe, //0x000013fb orq %r15, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x000013fe shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x00001402 orq %rsi, %rbx - 0x49, 0x09, 0xdb, //0x00001405 orq %rbx, %r11 - 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x00001408 jne LBB0_246 - 0x4d, 0x85, 0xc0, //0x0000140e testq %r8, %r8 - 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x00001411 jne LBB0_248 - 0x45, 0x31, 0xc0, //0x00001417 xorl %r8d, %r8d - 0x4d, 0x85, 0xd2, //0x0000141a testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000141d movabsq $4294977024, %r11 - 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x00001427 jne LBB0_249 - //0x0000142d LBB0_240 - 0x49, 0x83, 0xc1, 0xc0, //0x0000142d addq $-64, %r9 - 0x49, 0x83, 0xc6, 0xc0, //0x00001431 addq $-64, %r14 - 0x48, 0x83, 0xc0, 0x40, //0x00001435 addq $64, %rax - 0x49, 0x83, 0xf9, 0x3f, //0x00001439 cmpq $63, %r9 - 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x0000143d ja LBB0_237 - 0xe9, 0x06, 0x18, 0x00, 0x00, //0x00001443 jmp LBB0_241 - //0x00001448 LBB0_246 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001448 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x0000144d jne LBB0_248 - 0x49, 0x0f, 0xbc, 0xcb, //0x00001453 bsfq %r11, %rcx - 0x48, 0x01, 0xc1, //0x00001457 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000145a movq %rcx, $-56(%rbp) - //0x0000145e LBB0_248 - 0x4c, 0x89, 0xc1, //0x0000145e movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00001461 notq %rcx - 0x4c, 0x21, 0xd9, //0x00001464 andq %r11, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00001467 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xc2, //0x0000146b orq %r8, %rdx - 0x48, 0x89, 0xd6, //0x0000146e movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00001471 notq %rsi - 0x4c, 0x21, 0xde, //0x00001474 andq %r11, %rsi - 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001477 movabsq $-6148914691236517206, %rdi - 0x48, 0x21, 0xfe, //0x00001481 andq %rdi, %rsi - 0x45, 0x31, 0xc0, //0x00001484 xorl %r8d, %r8d - 0x48, 0x01, 0xce, //0x00001487 addq %rcx, %rsi - 0x41, 0x0f, 0x92, 0xc0, //0x0000148a setb %r8b - 0x48, 0x01, 0xf6, //0x0000148e addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001491 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x0000149b xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x0000149e andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x000014a1 notq %rsi - 0x49, 0x21, 0xf2, //0x000014a4 andq %rsi, %r10 - 0x4d, 0x85, 0xd2, //0x000014a7 testq %r10, %r10 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000014aa movabsq $4294977024, %r11 - 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x000014b4 je LBB0_240 - //0x000014ba LBB0_249 - 0x49, 0x0f, 0xbc, 0xc2, //0x000014ba bsfq %r10, %rax - 0x4c, 0x29, 0xf0, //0x000014be subq %r14, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000014c1 movq $-48(%rbp), %r14 - 0xe9, 0x73, 0x11, 0x00, 0x00, //0x000014c5 jmp LBB0_426 - //0x000014ca LBB0_250 - 0x48, 0x8b, 0x45, 0xa8, //0x000014ca movq $-88(%rbp), %rax - 0x48, 0x8b, 0x78, 0x08, //0x000014ce movq $8(%rax), %rdi - 0x49, 0x8b, 0x06, //0x000014d2 movq (%r14), %rax - 0xf6, 0x45, 0x98, 0x40, //0x000014d5 testb $64, $-104(%rbp) - 0x0f, 0x85, 0xf2, 0x08, 0x00, 0x00, //0x000014d9 jne LBB0_344 - 0x48, 0x29, 0xc7, //0x000014df subq %rax, %rdi - 0x0f, 0x84, 0xe7, 0x26, 0x00, 0x00, //0x000014e2 je LBB0_635 - 0x4d, 0x8d, 0x04, 0x04, //0x000014e8 leaq (%r12,%rax), %r8 - 0x41, 0x80, 0x38, 0x30, //0x000014ec cmpb $48, (%r8) - 0x0f, 0x85, 0x36, 0x00, 0x00, 0x00, //0x000014f0 jne LBB0_256 - 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014f6 movl $1, %ebx - 0x48, 0x83, 0xff, 0x01, //0x000014fb cmpq $1, %rdi - 0x0f, 0x84, 0x23, 0x17, 0x00, 0x00, //0x000014ff je LBB0_469 - 0x41, 0x8a, 0x48, 0x01, //0x00001505 movb $1(%r8), %cl - 0x80, 0xc1, 0xd2, //0x00001509 addb $-46, %cl - 0x80, 0xf9, 0x37, //0x0000150c cmpb $55, %cl - 0x0f, 0x87, 0x13, 0x17, 0x00, 0x00, //0x0000150f ja LBB0_469 - 0x0f, 0xb6, 0xc9, //0x00001515 movzbl %cl, %ecx - 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x00001518 movabsq $36028797027352577, %rdx - 0x48, 0x0f, 0xa3, 0xca, //0x00001522 btq %rcx, %rdx - 0x0f, 0x83, 0xfc, 0x16, 0x00, 0x00, //0x00001526 jae LBB0_469 - //0x0000152c LBB0_256 - 0x48, 0x83, 0xff, 0x10, //0x0000152c cmpq $16, %rdi - 0x0f, 0x82, 0x02, 0x1b, 0x00, 0x00, //0x00001530 jb LBB0_500 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00001536 movq $-1, %r13 - 0x31, 0xdb, //0x0000153d xorl %ebx, %ebx - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000153f movq $-1, %r10 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001546 movq $-1, %r14 - 0x49, 0x89, 0xf9, //0x0000154d movq %rdi, %r9 - //0x00001550 .p2align 4, 0x90 - //0x00001550 LBB0_258 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x18, //0x00001550 movdqu (%r8,%rbx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001556 movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x64, 0x25, 0x3e, 0xeb, 0xff, 0xff, //0x0000155a pcmpgtb $-5314(%rip), %xmm4 /* LCPI0_10+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001562 movdqa %xmm15, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00001567 pcmpgtb %xmm3, %xmm5 - 0x66, 0x0f, 0xdb, 0xec, //0x0000156b pand %xmm4, %xmm5 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000156f movdqa %xmm3, %xmm4 - 0x66, 0x0f, 0x74, 0x25, 0x45, 0xeb, 0xff, 0xff, //0x00001573 pcmpeqb $-5307(%rip), %xmm4 /* LCPI0_12+0(%rip) */ - 0x66, 0x0f, 0x6f, 0xf3, //0x0000157b movdqa %xmm3, %xmm6 - 0x66, 0x0f, 0x74, 0x35, 0x49, 0xeb, 0xff, 0xff, //0x0000157f pcmpeqb $-5303(%rip), %xmm6 /* LCPI0_13+0(%rip) */ - 0x66, 0x0f, 0xeb, 0xf4, //0x00001587 por %xmm4, %xmm6 - 0x66, 0x0f, 0x6f, 0xe3, //0x0000158b movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x0000158f pand %xmm9, %xmm4 - 0x66, 0x0f, 0x74, 0x1d, 0x44, 0xeb, 0xff, 0xff, //0x00001594 pcmpeqb $-5308(%rip), %xmm3 /* LCPI0_14+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000159c pcmpeqb %xmm11, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x000015a1 pmovmskb %xmm4, %r15d - 0x66, 0x0f, 0xeb, 0xe3, //0x000015a6 por %xmm3, %xmm4 - 0x66, 0x0f, 0xeb, 0xee, //0x000015aa por %xmm6, %xmm5 - 0x66, 0x0f, 0xeb, 0xec, //0x000015ae por %xmm4, %xmm5 - 0x66, 0x0f, 0xd7, 0xd3, //0x000015b2 pmovmskb %xmm3, %edx - 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x000015b6 pmovmskb %xmm6, %r11d - 0x66, 0x0f, 0xd7, 0xcd, //0x000015bb pmovmskb %xmm5, %ecx - 0xf7, 0xd1, //0x000015bf notl %ecx - 0x0f, 0xbc, 0xc9, //0x000015c1 bsfl %ecx, %ecx - 0x83, 0xf9, 0x10, //0x000015c4 cmpl $16, %ecx - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015c7 je LBB0_260 - 0xbe, 0xff, 0xff, 0xff, 0xff, //0x000015cd movl $-1, %esi - 0xd3, 0xe6, //0x000015d2 shll %cl, %esi - 0xf7, 0xd6, //0x000015d4 notl %esi - 0x21, 0xf2, //0x000015d6 andl %esi, %edx - 0x41, 0x21, 0xf7, //0x000015d8 andl %esi, %r15d - 0x44, 0x21, 0xde, //0x000015db andl %r11d, %esi - 0x41, 0x89, 0xf3, //0x000015de movl %esi, %r11d - //0x000015e1 LBB0_260 - 0x8d, 0x72, 0xff, //0x000015e1 leal $-1(%rdx), %esi - 0x21, 0xd6, //0x000015e4 andl %edx, %esi - 0x0f, 0x85, 0x06, 0x16, 0x00, 0x00, //0x000015e6 jne LBB0_463 - 0x41, 0x8d, 0x77, 0xff, //0x000015ec leal $-1(%r15), %esi - 0x44, 0x21, 0xfe, //0x000015f0 andl %r15d, %esi - 0x0f, 0x85, 0xf9, 0x15, 0x00, 0x00, //0x000015f3 jne LBB0_463 - 0x41, 0x8d, 0x73, 0xff, //0x000015f9 leal $-1(%r11), %esi - 0x44, 0x21, 0xde, //0x000015fd andl %r11d, %esi - 0x0f, 0x85, 0xec, 0x15, 0x00, 0x00, //0x00001600 jne LBB0_463 - 0x85, 0xd2, //0x00001606 testl %edx, %edx - 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x00001608 je LBB0_266 - 0x0f, 0xbc, 0xd2, //0x0000160e bsfl %edx, %edx - 0x49, 0x83, 0xfe, 0xff, //0x00001611 cmpq $-1, %r14 - 0x0f, 0x85, 0xfc, 0x15, 0x00, 0x00, //0x00001615 jne LBB0_466 - 0x48, 0x01, 0xda, //0x0000161b addq %rbx, %rdx - 0x49, 0x89, 0xd6, //0x0000161e movq %rdx, %r14 - //0x00001621 LBB0_266 - 0x45, 0x85, 0xff, //0x00001621 testl %r15d, %r15d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001624 je LBB0_269 - 0x41, 0x0f, 0xbc, 0xd7, //0x0000162a bsfl %r15d, %edx - 0x49, 0x83, 0xfa, 0xff, //0x0000162e cmpq $-1, %r10 - 0x0f, 0x85, 0xdf, 0x15, 0x00, 0x00, //0x00001632 jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001638 addq %rbx, %rdx - 0x49, 0x89, 0xd2, //0x0000163b movq %rdx, %r10 - //0x0000163e LBB0_269 - 0x45, 0x85, 0xdb, //0x0000163e testl %r11d, %r11d - 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001641 je LBB0_272 - 0x41, 0x0f, 0xbc, 0xd3, //0x00001647 bsfl %r11d, %edx - 0x49, 0x83, 0xfd, 0xff, //0x0000164b cmpq $-1, %r13 - 0x0f, 0x85, 0xc2, 0x15, 0x00, 0x00, //0x0000164f jne LBB0_466 - 0x48, 0x01, 0xda, //0x00001655 addq %rbx, %rdx - 0x49, 0x89, 0xd5, //0x00001658 movq %rdx, %r13 - //0x0000165b LBB0_272 - 0x83, 0xf9, 0x10, //0x0000165b cmpl $16, %ecx - 0x0f, 0x85, 0x36, 0x0f, 0x00, 0x00, //0x0000165e jne LBB0_411 - 0x49, 0x83, 0xc1, 0xf0, //0x00001664 addq $-16, %r9 - 0x48, 0x83, 0xc3, 0x10, //0x00001668 addq $16, %rbx - 0x49, 0x83, 0xf9, 0x0f, //0x0000166c cmpq $15, %r9 - 0x0f, 0x87, 0xda, 0xfe, 0xff, 0xff, //0x00001670 ja LBB0_258 - 0x49, 0x8d, 0x14, 0x18, //0x00001676 leaq (%r8,%rbx), %rdx - 0x49, 0x89, 0xd3, //0x0000167a movq %rdx, %r11 - 0x48, 0x39, 0xdf, //0x0000167d cmpq %rbx, %rdi - 0x0f, 0x84, 0x28, 0x0f, 0x00, 0x00, //0x00001680 je LBB0_413 - //0x00001686 LBB0_275 - 0x4e, 0x8d, 0x1c, 0x0a, //0x00001686 leaq (%rdx,%r9), %r11 - 0x49, 0x89, 0xd7, //0x0000168a movq %rdx, %r15 - 0x4d, 0x29, 0xc7, //0x0000168d subq %r8, %r15 - 0x31, 0xdb, //0x00001690 xorl %ebx, %ebx - 0xe9, 0x26, 0x00, 0x00, 0x00, //0x00001692 jmp LBB0_279 - //0x00001697 LBB0_276 - 0x49, 0x83, 0xfd, 0xff, //0x00001697 cmpq $-1, %r13 - 0x0f, 0x85, 0x65, 0x15, 0x00, 0x00, //0x0000169b jne LBB0_465 - 0x4d, 0x8d, 0x2c, 0x1f, //0x000016a1 leaq (%r15,%rbx), %r13 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000016a5 .p2align 4, 0x90 - //0x000016b0 LBB0_278 - 0x48, 0x83, 0xc3, 0x01, //0x000016b0 addq $1, %rbx - 0x49, 0x39, 0xd9, //0x000016b4 cmpq %rbx, %r9 - 0x0f, 0x84, 0xf1, 0x0e, 0x00, 0x00, //0x000016b7 je LBB0_413 - //0x000016bd LBB0_279 - 0x0f, 0xbe, 0x0c, 0x1a, //0x000016bd movsbl (%rdx,%rbx), %ecx - 0x8d, 0x71, 0xd0, //0x000016c1 leal $-48(%rcx), %esi - 0x83, 0xfe, 0x0a, //0x000016c4 cmpl $10, %esi - 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x000016c7 jb LBB0_278 - 0x8d, 0x71, 0xd5, //0x000016cd leal $-43(%rcx), %esi - 0x83, 0xfe, 0x1a, //0x000016d0 cmpl $26, %esi - 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x000016d3 ja LBB0_284 - 0x48, 0x8d, 0x3d, 0x08, 0x28, 0x00, 0x00, //0x000016d9 leaq $10248(%rip), %rdi /* LJTI0_2+0(%rip) */ - 0x48, 0x63, 0x0c, 0xb7, //0x000016e0 movslq (%rdi,%rsi,4), %rcx - 0x48, 0x01, 0xf9, //0x000016e4 addq %rdi, %rcx - 0xff, 0xe1, //0x000016e7 jmpq *%rcx - //0x000016e9 LBB0_282 - 0x49, 0x83, 0xfe, 0xff, //0x000016e9 cmpq $-1, %r14 - 0x0f, 0x85, 0x13, 0x15, 0x00, 0x00, //0x000016ed jne LBB0_465 - 0x4d, 0x8d, 0x34, 0x1f, //0x000016f3 leaq (%r15,%rbx), %r14 - 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016f7 jmp LBB0_278 - //0x000016fc LBB0_284 - 0x83, 0xf9, 0x65, //0x000016fc cmpl $101, %ecx - 0x0f, 0x85, 0xa3, 0x0e, 0x00, 0x00, //0x000016ff jne LBB0_412 - //0x00001705 LBB0_285 - 0x49, 0x83, 0xfa, 0xff, //0x00001705 cmpq $-1, %r10 - 0x0f, 0x85, 0xf7, 0x14, 0x00, 0x00, //0x00001709 jne LBB0_465 - 0x4d, 0x8d, 0x14, 0x1f, //0x0000170f leaq (%r15,%rbx), %r10 - 0xe9, 0x98, 0xff, 0xff, 0xff, //0x00001713 jmp LBB0_278 - //0x00001718 LBB0_287 - 0x49, 0x8b, 0x0e, //0x00001718 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000171b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000171f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001723 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001727 cmpq %rsi, %rcx - 0x0f, 0x87, 0x4e, 0x23, 0x00, 0x00, //0x0000172a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001730 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001734 cmpl $1819047278, $-1(%r12,%rcx) - 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000173d je LBB0_298 - 0xe9, 0x07, 0x24, 0x00, 0x00, //0x00001743 jmp LBB0_289 - //0x00001748 LBB0_293 - 0xf6, 0x45, 0x98, 0x40, //0x00001748 testb $64, $-104(%rbp) - 0x0f, 0x85, 0x62, 0x07, 0x00, 0x00, //0x0000174c jne LBB0_356 - 0x49, 0x8b, 0x45, 0x00, //0x00001752 movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001756 cmpq $4095, %rax - 0x0f, 0x8f, 0x8a, 0x22, 0x00, 0x00, //0x0000175c jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x00001762 leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001766 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000176a movq $6, $8(%r13,%rax,8) - 0xe9, 0x48, 0xea, 0xff, 0xff, //0x00001773 jmp LBB0_4 - //0x00001778 LBB0_296 - 0x49, 0x8b, 0x0e, //0x00001778 movq (%r14), %rcx - 0x48, 0x8b, 0x55, 0xa8, //0x0000177b movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x0000177f movq $8(%rdx), %rdx - 0x48, 0x8d, 0x72, 0xfd, //0x00001783 leaq $-3(%rdx), %rsi - 0x48, 0x39, 0xf1, //0x00001787 cmpq %rsi, %rcx - 0x0f, 0x87, 0xee, 0x22, 0x00, 0x00, //0x0000178a ja LBB0_617 - 0x48, 0x8d, 0x41, 0xff, //0x00001790 leaq $-1(%rcx), %rax - 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001794 cmpl $1702195828, $-1(%r12,%rcx) - 0x0f, 0x85, 0x65, 0x23, 0x00, 0x00, //0x0000179d jne LBB0_627 - //0x000017a3 LBB0_298 - 0x48, 0x8d, 0x51, 0x03, //0x000017a3 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x000017a7 movq %rdx, (%r14) - 0x48, 0x85, 0xc9, //0x000017aa testq %rcx, %rcx - 0x0f, 0x8f, 0x0d, 0xea, 0xff, 0xff, //0x000017ad jg LBB0_4 - 0xe9, 0x8f, 0x22, 0x00, 0x00, //0x000017b3 jmp LBB0_638 - //0x000017b8 LBB0_299 - 0x4c, 0x89, 0xc1, //0x000017b8 movq %r8, %rcx - 0x4c, 0x09, 0xf9, //0x000017bb orq %r15, %rcx - 0x0f, 0x99, 0xc1, //0x000017be setns %cl - 0x0f, 0x88, 0x9f, 0x0b, 0x00, 0x00, //0x000017c1 js LBB0_384 - 0x4d, 0x39, 0xf8, //0x000017c7 cmpq %r15, %r8 - 0x0f, 0x8c, 0x96, 0x0b, 0x00, 0x00, //0x000017ca jl LBB0_384 - 0x49, 0xf7, 0xd0, //0x000017d0 notq %r8 - 0x4d, 0x89, 0xc5, //0x000017d3 movq %r8, %r13 - 0xe9, 0x07, 0xea, 0xff, 0xff, //0x000017d6 jmp LBB0_2 - //0x000017db LBB0_302 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017db movl $64, %edx - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017e0 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x4d, 0xe8, 0xff, 0xff, //0x000017ea movdqu $-6067(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x48, 0x39, 0xca, //0x000017f3 cmpq %rcx, %rdx - 0x0f, 0x82, 0xf0, 0x23, 0x00, 0x00, //0x000017f6 jb LBB0_640 - //0x000017fc LBB0_303 - 0x48, 0x01, 0xc8, //0x000017fc addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000017ff addq $1, %rax - //0x00001803 LBB0_304 - 0x48, 0x85, 0xc0, //0x00001803 testq %rax, %rax - 0x0f, 0x88, 0x59, 0x22, 0x00, 0x00, //0x00001806 js LBB0_615 - 0x49, 0x89, 0x06, //0x0000180c movq %rax, (%r14) - 0x48, 0x8b, 0x45, 0xb0, //0x0000180f movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x00001813 testq %rax, %rax - 0x0f, 0x8e, 0xdc, 0x21, 0x00, 0x00, //0x00001816 jle LBB0_606 - //0x0000181c LBB0_306 - 0x49, 0x8b, 0x45, 0x00, //0x0000181c movq (%r13), %rax - 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001820 cmpq $4095, %rax - 0x0f, 0x8f, 0xc0, 0x21, 0x00, 0x00, //0x00001826 jg LBB0_634 - 0x48, 0x8d, 0x48, 0x01, //0x0000182c leaq $1(%rax), %rcx - 0x49, 0x89, 0x4d, 0x00, //0x00001830 movq %rcx, (%r13) - 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001834 movq $4, $8(%r13,%rax,8) - 0xe9, 0x7e, 0xe9, 0xff, 0xff, //0x0000183d jmp LBB0_4 - //0x00001842 LBB0_308 - 0x48, 0x8b, 0x55, 0xa8, //0x00001842 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001846 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x0000184a movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x0000184d subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001850 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001854 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001857 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x0000185a xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x0000185d xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001860 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001863 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001867 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x0000186b jge LBB0_309 - //0x00001871 LBB0_318 - 0x48, 0x85, 0xd2, //0x00001871 testq %rdx, %rdx - 0x0f, 0x8e, 0xdd, 0x23, 0x00, 0x00, //0x00001874 jle LBB0_648 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000187a movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x0000187e pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001882 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001887 movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x0000188f movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001897 movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x0000189f movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x000018a2 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000018a5 andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000018ab cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x000018b1 jb LBB0_322 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x000018b7 cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x000018bc jb LBB0_323 - 0x0f, 0x10, 0x1f, //0x000018c2 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x000018c5 movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x000018cc movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x000018d1 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x000018d9 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x000018dd movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x000018e1 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x000018e5 leaq $-144(%rbp), %rdx - 0xe9, 0x17, 0x00, 0x00, 0x00, //0x000018ec jmp LBB0_324 - //0x000018f1 LBB0_322 - 0x66, 0x0f, 0x6f, 0xd6, //0x000018f1 movdqa %xmm6, %xmm2 - 0x49, 0x89, 0xfc, //0x000018f5 movq %rdi, %r12 - 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x000018f8 jmp LBB0_309 - //0x000018fd LBB0_323 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x000018fd leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001904 movq $-64(%rbp), %rsi - //0x00001908 LBB0_324 - 0x48, 0x83, 0xfe, 0x10, //0x00001908 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x0000190c jb LBB0_325 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001912 movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001916 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x0000191a addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x0000191e addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001922 addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001926 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x0000192a jae LBB0_332 - //0x00001930 LBB0_326 - 0x48, 0x83, 0xfe, 0x04, //0x00001930 cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001934 jl LBB0_327 - //0x0000193a LBB0_333 - 0x8b, 0x0f, //0x0000193a movl (%rdi), %ecx - 0x89, 0x0a, //0x0000193c movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x0000193e addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001942 addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001946 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x0000194a cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x0000194e jae LBB0_328 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001954 jmp LBB0_329 - //0x00001959 LBB0_325 - 0x48, 0x83, 0xfe, 0x08, //0x00001959 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x0000195d jb LBB0_326 - //0x00001963 LBB0_332 - 0x48, 0x8b, 0x0f, //0x00001963 movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001966 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001969 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x0000196d addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001971 addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001975 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001979 jge LBB0_333 - //0x0000197f LBB0_327 - 0x48, 0x83, 0xfe, 0x02, //0x0000197f cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001983 jb LBB0_329 - //0x00001989 LBB0_328 - 0x0f, 0xb7, 0x0f, //0x00001989 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x0000198c movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000198f addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x00001993 addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00001997 addq $-2, %rsi - //0x0000199b LBB0_329 - 0x48, 0x89, 0xf9, //0x0000199b movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000199e leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x000019a5 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x000019a8 movdqa %xmm6, %xmm2 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x000019ac je LBB0_309 - 0x8a, 0x09, //0x000019b2 movb (%rcx), %cl - 0x88, 0x0a, //0x000019b4 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x000019b6 leaq $-176(%rbp), %r12 - //0x000019bd LBB0_309 - 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x000019bd movdqa %xmm2, %xmm8 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x000019c2 movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x000019c8 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x000019cf movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x000019d6 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x000019dd movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019e1 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x000019e5 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x000019e9 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019ed pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000019f1 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000019f5 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x000019f9 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000019fd pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a01 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00001a05 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00001a09 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00001a0d shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x00001a11 shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00001a15 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00001a18 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001a1c orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x00001a1f orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x00001a22 movq %rdx, %rcx - 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001a25 movdqa %xmm14, %xmm13 - 0x4c, 0x09, 0xd1, //0x00001a2a orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001a2d jne LBB0_311 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001a33 movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x00001a3a xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001a3d jmp LBB0_312 - //0x00001a42 LBB0_311 - 0x4c, 0x89, 0xd1, //0x00001a42 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x00001a45 notq %rcx - 0x48, 0x21, 0xd1, //0x00001a48 andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x00001a4b leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x00001a4f orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x00001a52 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x00001a55 notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001a58 movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x00001a62 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x00001a65 andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x00001a68 xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x00001a6b addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x00001a6e setb %r10b - 0x48, 0x01, 0xd2, //0x00001a72 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001a75 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x00001a7f xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x00001a82 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x00001a85 notq %rdx - //0x00001a88 LBB0_312 - 0x66, 0x0f, 0x6f, 0xdd, //0x00001a88 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a8c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001a90 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x00001a94 shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x00001a98 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001a9c pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001aa0 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x00001aa4 shlq $32, %rsi - 0x48, 0x09, 0xce, //0x00001aa8 orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00001aab movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001aaf pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001ab3 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x00001ab7 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00001abb orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00001abe movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00001ac2 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001ac6 pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00001aca orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00001acd andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001ad0 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001ad5 pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001adc movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00001ae1 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x00001ae4 movdqa %xmm4, %xmm3 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x6f, 0xe5, 0xff, 0xff, //0x00001ae8 movdqu $-6801(%rip), %xmm11 /* LCPI0_6+0(%rip) */ - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001af1 pcmpeqb %xmm11, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001af6 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00001afb movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001aff pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001b04 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00001b08 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b0c pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00001b11 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00001b15 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001b19 pcmpeqb %xmm11, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001b1e pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00001b22 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00001b26 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00001b2a orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x00001b2d shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x00001b31 orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x00001b34 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x00001b37 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x00001b3a notq %r8 - 0x4d, 0x21, 0xc5, //0x00001b3d andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b40 movdqa %xmm8, %xmm2 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001b45 pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00001b4a pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001b4e pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x00001b53 pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001b57 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x00001b5c pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001b60 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001b65 pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x00001b6a shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x00001b6e shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x00001b72 orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x00001b75 shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001b79 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x00001b7c orq %rsi, %rdx - 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001b7f movdqa %xmm13, %xmm14 - 0x4c, 0x21, 0xc2, //0x00001b84 andq %r8, %rdx - 0x0f, 0x84, 0xaa, 0x00, 0x00, 0x00, //0x00001b87 je LBB0_316 - 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x5a, 0xe5, 0xff, 0xff, //0x00001b8d movdqu $-6822(%rip), %xmm11 /* LCPI0_15+0(%rip) */ - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001b96 movdqa %xmm8, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x9c, 0xe4, 0xff, 0xff, //0x00001b9b movdqu $-7012(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001ba4 movabsq $3689348814741910323, %r8 - 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0x99, 0xe4, 0xff, 0xff, //0x00001bae movdqu $-7015(%rip), %xmm8 /* LCPI0_5+0(%rip) */ - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001bb7 .p2align 4, 0x90 - //0x00001bc0 LBB0_314 - 0x48, 0x8d, 0x7a, 0xff, //0x00001bc0 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00001bc4 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00001bc7 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x00001bca movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x00001bcd shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001bd0 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x00001bda andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x00001bdd subq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001be0 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00001be3 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00001be6 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x00001bea andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x00001bed addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00001bf0 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00001bf3 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00001bf7 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001bfa movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00001c04 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c07 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00001c11 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00001c15 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00001c19 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x00001c1c cmpq %r14, %rsi - 0x0f, 0x86, 0xd4, 0x06, 0x00, 0x00, //0x00001c1f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00001c25 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00001c29 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001c2c jne LBB0_314 - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001c32 jmp LBB0_317 - //0x00001c37 LBB0_316 - 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001c37 movdqa %xmm8, %xmm2 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001c3c movabsq $3689348814741910323, %r8 - //0x00001c46 LBB0_317 - 0x49, 0xc1, 0xfb, 0x3f, //0x00001c46 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00001c4a movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00001c4d shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c50 movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00001c5a andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00001c5d subq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c60 movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x00001c63 andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x00001c66 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x00001c6a andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x00001c6d addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x00001c70 movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x00001c73 shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x00001c77 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001c7a movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x00001c84 andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001c87 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x00001c91 imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x00001c95 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x00001c99 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x00001c9c addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x00001ca0 movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x00001ca4 addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x00001ca8 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x00001cab cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001caf movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x04, 0xfd, 0xff, 0xff, //0x00001cb3 jge LBB0_309 - 0xe9, 0xb3, 0xfb, 0xff, 0xff, //0x00001cb9 jmp LBB0_318 - //0x00001cbe LBB0_334 - 0x48, 0x8b, 0x4d, 0xa8, //0x00001cbe movq $-88(%rbp), %rcx - 0x4c, 0x8b, 0x49, 0x08, //0x00001cc2 movq $8(%rcx), %r9 - 0x4d, 0x8b, 0x06, //0x00001cc6 movq (%r14), %r8 - 0x4f, 0x8d, 0x14, 0x04, //0x00001cc9 leaq (%r12,%r8), %r10 - 0x4d, 0x29, 0xc1, //0x00001ccd subq %r8, %r9 - 0x49, 0x83, 0xf9, 0x20, //0x00001cd0 cmpq $32, %r9 - 0x0f, 0x8c, 0xdb, 0x00, 0x00, 0x00, //0x00001cd4 jl LBB0_343 - 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x00001cda movl $32, %r14d - 0x31, 0xd2, //0x00001ce0 xorl %edx, %edx - 0x45, 0x31, 0xdb, //0x00001ce2 xorl %r11d, %r11d - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001ce5 .p2align 4, 0x90 - //0x00001cf0 LBB0_336 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x12, //0x00001cf0 movdqu (%r10,%rdx), %xmm3 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x12, 0x10, //0x00001cf6 movdqu $16(%r10,%rdx), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00001cfd movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d01 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00001d05 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xec, //0x00001d09 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00001d0d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x00001d11 pmovmskb %xmm5, %edi - 0x48, 0xc1, 0xe7, 0x10, //0x00001d15 shlq $16, %rdi - 0x48, 0x09, 0xf7, //0x00001d19 orq %rsi, %rdi - 0x66, 0x0f, 0x74, 0xd9, //0x00001d1c pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00001d20 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x74, 0xe1, //0x00001d24 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xf4, //0x00001d28 pmovmskb %xmm4, %esi - 0x48, 0xc1, 0xe6, 0x10, //0x00001d2c shlq $16, %rsi - 0x48, 0x09, 0xce, //0x00001d30 orq %rcx, %rsi - 0x48, 0x89, 0xf1, //0x00001d33 movq %rsi, %rcx - 0x4c, 0x09, 0xd9, //0x00001d36 orq %r11, %rcx - 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x00001d39 je LBB0_338 - 0x44, 0x89, 0xd9, //0x00001d3f movl %r11d, %ecx - 0xf7, 0xd1, //0x00001d42 notl %ecx - 0x21, 0xf1, //0x00001d44 andl %esi, %ecx - 0x44, 0x8d, 0x3c, 0x09, //0x00001d46 leal (%rcx,%rcx), %r15d - 0x45, 0x09, 0xdf, //0x00001d4a orl %r11d, %r15d - 0x44, 0x89, 0xfb, //0x00001d4d movl %r15d, %ebx - 0xf7, 0xd3, //0x00001d50 notl %ebx - 0x21, 0xf3, //0x00001d52 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001d54 andl $-1431655766, %ebx - 0x45, 0x31, 0xdb, //0x00001d5a xorl %r11d, %r11d - 0x01, 0xcb, //0x00001d5d addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc3, //0x00001d5f setb %r11b - 0x01, 0xdb, //0x00001d63 addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00001d65 xorl $1431655765, %ebx - 0x44, 0x21, 0xfb, //0x00001d6b andl %r15d, %ebx - 0xf7, 0xd3, //0x00001d6e notl %ebx - 0x21, 0xdf, //0x00001d70 andl %ebx, %edi - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x00001d72 jmp LBB0_339 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001d77 .p2align 4, 0x90 - //0x00001d80 LBB0_338 - 0x45, 0x31, 0xdb, //0x00001d80 xorl %r11d, %r11d - //0x00001d83 LBB0_339 - 0x48, 0x85, 0xff, //0x00001d83 testq %rdi, %rdi - 0x0f, 0x85, 0xe5, 0xed, 0xff, 0xff, //0x00001d86 jne LBB0_129 - 0x48, 0x83, 0xc2, 0x20, //0x00001d8c addq $32, %rdx - 0x4b, 0x8d, 0x0c, 0x31, //0x00001d90 leaq (%r9,%r14), %rcx - 0x48, 0x83, 0xc1, 0xe0, //0x00001d94 addq $-32, %rcx - 0x49, 0x83, 0xc6, 0xe0, //0x00001d98 addq $-32, %r14 - 0x48, 0x83, 0xf9, 0x3f, //0x00001d9c cmpq $63, %rcx - 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001da0 jg LBB0_336 - 0x4d, 0x85, 0xdb, //0x00001da6 testq %r11, %r11 - 0x0f, 0x85, 0x4d, 0x19, 0x00, 0x00, //0x00001da9 jne LBB0_570 - 0x49, 0x01, 0xd2, //0x00001daf addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00001db2 subq %rdx, %r9 - //0x00001db5 LBB0_343 - 0x4c, 0x8b, 0x75, 0xd0, //0x00001db5 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001db9 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00001dc3 testq %r9, %r9 - 0x0f, 0x8f, 0x8e, 0x19, 0x00, 0x00, //0x00001dc6 jg LBB0_574 - 0xe9, 0x76, 0x1c, 0x00, 0x00, //0x00001dcc jmp LBB0_638 - //0x00001dd1 LBB0_344 - 0x48, 0x89, 0xfa, //0x00001dd1 movq %rdi, %rdx - 0x48, 0x29, 0xc2, //0x00001dd4 subq %rax, %rdx - 0x48, 0x83, 0xfa, 0x10, //0x00001dd7 cmpq $16, %rdx - 0x0f, 0x82, 0x3c, 0x12, 0x00, 0x00, //0x00001ddb jb LBB0_498 - 0x48, 0x89, 0xc2, //0x00001de1 movq %rax, %rdx - 0x48, 0xf7, 0xda, //0x00001de4 negq %rdx - 0x48, 0x89, 0xc1, //0x00001de7 movq %rax, %rcx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001dea .p2align 4, 0x90 - //0x00001df0 LBB0_346 - 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x0c, //0x00001df0 movdqu (%r12,%rcx), %xmm3 - 0x66, 0x0f, 0x6f, 0xe3, //0x00001df6 movdqa %xmm3, %xmm4 - 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x00001dfa pcmpeqb %xmm14, %xmm4 - 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x00001dff pand %xmm9, %xmm3 - 0x66, 0x0f, 0x74, 0xda, //0x00001e04 pcmpeqb %xmm2, %xmm3 - 0x66, 0x0f, 0xeb, 0xdc, //0x00001e08 por %xmm4, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00001e0c pmovmskb %xmm3, %esi - 0x85, 0xf6, //0x00001e10 testl %esi, %esi - 0x0f, 0x85, 0x33, 0x05, 0x00, 0x00, //0x00001e12 jne LBB0_605 - 0x48, 0x83, 0xc1, 0x10, //0x00001e18 addq $16, %rcx - 0x48, 0x8d, 0x34, 0x17, //0x00001e1c leaq (%rdi,%rdx), %rsi - 0x48, 0x83, 0xc6, 0xf0, //0x00001e20 addq $-16, %rsi - 0x48, 0x83, 0xc2, 0xf0, //0x00001e24 addq $-16, %rdx - 0x48, 0x83, 0xfe, 0x0f, //0x00001e28 cmpq $15, %rsi - 0x0f, 0x87, 0xbe, 0xff, 0xff, 0xff, //0x00001e2c ja LBB0_346 - 0x4c, 0x89, 0xe1, //0x00001e32 movq %r12, %rcx - 0x48, 0x29, 0xd1, //0x00001e35 subq %rdx, %rcx - 0x48, 0x01, 0xd7, //0x00001e38 addq %rdx, %rdi - 0x48, 0x89, 0xfa, //0x00001e3b movq %rdi, %rdx - 0x48, 0x85, 0xd2, //0x00001e3e testq %rdx, %rdx - 0x0f, 0x84, 0xe3, 0x11, 0x00, 0x00, //0x00001e41 je LBB0_499 - //0x00001e47 LBB0_349 - 0x48, 0x8d, 0x3c, 0x11, //0x00001e47 leaq (%rcx,%rdx), %rdi - 0x31, 0xf6, //0x00001e4b xorl %esi, %esi - //0x00001e4d LBB0_350 - 0x0f, 0xb6, 0x1c, 0x31, //0x00001e4d movzbl (%rcx,%rsi), %ebx - 0x80, 0xfb, 0x2c, //0x00001e51 cmpb $44, %bl - 0x0f, 0x84, 0x81, 0x0d, 0x00, 0x00, //0x00001e54 je LBB0_462 - 0x80, 0xfb, 0x7d, //0x00001e5a cmpb $125, %bl - 0x0f, 0x84, 0x78, 0x0d, 0x00, 0x00, //0x00001e5d je LBB0_462 - 0x80, 0xfb, 0x5d, //0x00001e63 cmpb $93, %bl - 0x0f, 0x84, 0x6f, 0x0d, 0x00, 0x00, //0x00001e66 je LBB0_462 - 0x48, 0x83, 0xc6, 0x01, //0x00001e6c addq $1, %rsi - 0x48, 0x39, 0xf2, //0x00001e70 cmpq %rsi, %rdx - 0x0f, 0x85, 0xd4, 0xff, 0xff, 0xff, //0x00001e73 jne LBB0_350 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00001e79 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00001e7e movdqa %xmm2, %xmm5 - 0x48, 0x89, 0xf9, //0x00001e82 movq %rdi, %rcx - //0x00001e85 LBB0_355 - 0x4c, 0x29, 0xe1, //0x00001e85 subq %r12, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00001e88 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00001e8c movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001e90 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00001e9a movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00001e9e movdqa %xmm6, %xmm13 - 0x49, 0x89, 0x0e, //0x00001ea3 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00001ea6 testq %rax, %rax - 0x0f, 0x8f, 0x11, 0xe3, 0xff, 0xff, //0x00001ea9 jg LBB0_4 - 0xe9, 0x44, 0x1b, 0x00, 0x00, //0x00001eaf jmp LBB0_606 - //0x00001eb4 LBB0_356 - 0x48, 0x8b, 0x55, 0xa8, //0x00001eb4 movq $-88(%rbp), %rdx - 0x48, 0x8b, 0x52, 0x08, //0x00001eb8 movq $8(%rdx), %rdx - 0x49, 0x8b, 0x0e, //0x00001ebc movq (%r14), %rcx - 0x48, 0x29, 0xca, //0x00001ebf subq %rcx, %rdx - 0x48, 0x89, 0x4d, 0xb0, //0x00001ec2 movq %rcx, $-80(%rbp) - 0x49, 0x01, 0xcc, //0x00001ec6 addq %rcx, %r12 - 0x45, 0x31, 0xc0, //0x00001ec9 xorl %r8d, %r8d - 0x45, 0x31, 0xd2, //0x00001ecc xorl %r10d, %r10d - 0x45, 0x31, 0xc9, //0x00001ecf xorl %r9d, %r9d - 0x45, 0x31, 0xf6, //0x00001ed2 xorl %r14d, %r14d - 0x48, 0x83, 0xfa, 0x40, //0x00001ed5 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x00001ed9 movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001edd jge LBB0_357 - //0x00001ee3 LBB0_366 - 0x48, 0x85, 0xd2, //0x00001ee3 testq %rdx, %rdx - 0x0f, 0x8e, 0x6b, 0x1d, 0x00, 0x00, //0x00001ee6 jle LBB0_648 - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001eec movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00001ef1 movdqa %xmm2, %xmm6 - 0x66, 0x0f, 0xef, 0xd2, //0x00001ef5 pxor %xmm2, %xmm2 - 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ef9 movdqu %xmm2, $-128(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001efe movdqu %xmm2, $-144(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001f06 movdqu %xmm2, $-160(%rbp) - 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f0e movdqu %xmm2, $-176(%rbp) - 0x4c, 0x89, 0xe7, //0x00001f16 movq %r12, %rdi - 0x44, 0x89, 0xe1, //0x00001f19 movl %r12d, %ecx - 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f1c andl $4095, %ecx - 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f22 cmpl $4033, %ecx - 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f28 jb LBB0_370 - 0x48, 0x83, 0x7d, 0xc0, 0x20, //0x00001f2e cmpq $32, $-64(%rbp) - 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f33 jb LBB0_371 - 0x0f, 0x10, 0x1f, //0x00001f39 movups (%rdi), %xmm3 - 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f3c movups %xmm3, $-176(%rbp) - 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f43 movdqu $16(%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f48 movdqu %xmm3, $-160(%rbp) - 0x48, 0x83, 0xc7, 0x20, //0x00001f50 addq $32, %rdi - 0x48, 0x8b, 0x4d, 0xc0, //0x00001f54 movq $-64(%rbp), %rcx - 0x48, 0x8d, 0x71, 0xe0, //0x00001f58 leaq $-32(%rcx), %rsi - 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f5c leaq $-144(%rbp), %rdx - 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f63 jmp LBB0_372 - //0x00001f68 LBB0_370 - 0x66, 0x0f, 0x6f, 0xd6, //0x00001f68 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f6c movdqa %xmm7, %xmm13 - 0x49, 0x89, 0xfc, //0x00001f71 movq %rdi, %r12 - 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f74 jmp LBB0_357 - //0x00001f79 LBB0_371 - 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f79 leaq $-176(%rbp), %rdx - 0x48, 0x8b, 0x75, 0xc0, //0x00001f80 movq $-64(%rbp), %rsi - //0x00001f84 LBB0_372 - 0x48, 0x83, 0xfe, 0x10, //0x00001f84 cmpq $16, %rsi - 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f88 jb LBB0_373 - 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f8e movdqu (%rdi), %xmm3 - 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f92 movdqu %xmm3, (%rdx) - 0x48, 0x83, 0xc7, 0x10, //0x00001f96 addq $16, %rdi - 0x48, 0x83, 0xc2, 0x10, //0x00001f9a addq $16, %rdx - 0x48, 0x83, 0xc6, 0xf0, //0x00001f9e addq $-16, %rsi - 0x48, 0x83, 0xfe, 0x08, //0x00001fa2 cmpq $8, %rsi - 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001fa6 jae LBB0_380 - //0x00001fac LBB0_374 - 0x48, 0x83, 0xfe, 0x04, //0x00001fac cmpq $4, %rsi - 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001fb0 jl LBB0_375 - //0x00001fb6 LBB0_381 - 0x8b, 0x0f, //0x00001fb6 movl (%rdi), %ecx - 0x89, 0x0a, //0x00001fb8 movl %ecx, (%rdx) - 0x48, 0x83, 0xc7, 0x04, //0x00001fba addq $4, %rdi - 0x48, 0x83, 0xc2, 0x04, //0x00001fbe addq $4, %rdx - 0x48, 0x83, 0xc6, 0xfc, //0x00001fc2 addq $-4, %rsi - 0x48, 0x83, 0xfe, 0x02, //0x00001fc6 cmpq $2, %rsi - 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fca jae LBB0_376 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fd0 jmp LBB0_377 - //0x00001fd5 LBB0_373 - 0x48, 0x83, 0xfe, 0x08, //0x00001fd5 cmpq $8, %rsi - 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fd9 jb LBB0_374 - //0x00001fdf LBB0_380 - 0x48, 0x8b, 0x0f, //0x00001fdf movq (%rdi), %rcx - 0x48, 0x89, 0x0a, //0x00001fe2 movq %rcx, (%rdx) - 0x48, 0x83, 0xc7, 0x08, //0x00001fe5 addq $8, %rdi - 0x48, 0x83, 0xc2, 0x08, //0x00001fe9 addq $8, %rdx - 0x48, 0x83, 0xc6, 0xf8, //0x00001fed addq $-8, %rsi - 0x48, 0x83, 0xfe, 0x04, //0x00001ff1 cmpq $4, %rsi - 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001ff5 jge LBB0_381 - //0x00001ffb LBB0_375 - 0x48, 0x83, 0xfe, 0x02, //0x00001ffb cmpq $2, %rsi - 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fff jb LBB0_377 - //0x00002005 LBB0_376 - 0x0f, 0xb7, 0x0f, //0x00002005 movzwl (%rdi), %ecx - 0x66, 0x89, 0x0a, //0x00002008 movw %cx, (%rdx) - 0x48, 0x83, 0xc7, 0x02, //0x0000200b addq $2, %rdi - 0x48, 0x83, 0xc2, 0x02, //0x0000200f addq $2, %rdx - 0x48, 0x83, 0xc6, 0xfe, //0x00002013 addq $-2, %rsi - //0x00002017 LBB0_377 - 0x48, 0x89, 0xf9, //0x00002017 movq %rdi, %rcx - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x0000201a leaq $-176(%rbp), %r12 - 0x48, 0x85, 0xf6, //0x00002021 testq %rsi, %rsi - 0x66, 0x0f, 0x6f, 0xd6, //0x00002024 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002028 movdqa %xmm7, %xmm13 - 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x0000202d je LBB0_357 - 0x8a, 0x09, //0x00002033 movb (%rcx), %cl - 0x88, 0x0a, //0x00002035 movb %cl, (%rdx) - 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002037 leaq $-176(%rbp), %r12 - //0x0000203e LBB0_357 - 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x0000203e movdqu (%r12), %xmm4 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00002044 movdqu $16(%r12), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x0000204b movdqu $32(%r12), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00002052 movdqu $48(%r12), %xmm5 - 0x66, 0x0f, 0x6f, 0xdc, //0x00002059 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000205d pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x00002061 pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdf, //0x00002065 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002069 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000206d pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002071 movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002075 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002079 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdd, //0x0000207d movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002081 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002085 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe7, 0x30, //0x00002089 shlq $48, %rdi - 0x48, 0xc1, 0xe6, 0x20, //0x0000208d shlq $32, %rsi - 0x48, 0x09, 0xfe, //0x00002091 orq %rdi, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x00002094 shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002098 orq %rsi, %rcx - 0x48, 0x09, 0xca, //0x0000209b orq %rcx, %rdx - 0x48, 0x89, 0xd1, //0x0000209e movq %rdx, %rcx - 0x4c, 0x09, 0xd1, //0x000020a1 orq %r10, %rcx - 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x000020a4 jne LBB0_359 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000020aa movq $-1, %rdx - 0x45, 0x31, 0xd2, //0x000020b1 xorl %r10d, %r10d - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000020b4 jmp LBB0_360 - //0x000020b9 LBB0_359 - 0x4c, 0x89, 0xd1, //0x000020b9 movq %r10, %rcx - 0x48, 0xf7, 0xd1, //0x000020bc notq %rcx - 0x48, 0x21, 0xd1, //0x000020bf andq %rdx, %rcx - 0x4c, 0x8d, 0x1c, 0x09, //0x000020c2 leaq (%rcx,%rcx), %r11 - 0x4d, 0x09, 0xd3, //0x000020c6 orq %r10, %r11 - 0x4c, 0x89, 0xdf, //0x000020c9 movq %r11, %rdi - 0x48, 0xf7, 0xd7, //0x000020cc notq %rdi - 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020cf movabsq $-6148914691236517206, %rsi - 0x48, 0x21, 0xf2, //0x000020d9 andq %rsi, %rdx - 0x48, 0x21, 0xfa, //0x000020dc andq %rdi, %rdx - 0x45, 0x31, 0xd2, //0x000020df xorl %r10d, %r10d - 0x48, 0x01, 0xca, //0x000020e2 addq %rcx, %rdx - 0x41, 0x0f, 0x92, 0xc2, //0x000020e5 setb %r10b - 0x48, 0x01, 0xd2, //0x000020e9 addq %rdx, %rdx - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020ec movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xca, //0x000020f6 xorq %rcx, %rdx - 0x4c, 0x21, 0xda, //0x000020f9 andq %r11, %rdx - 0x48, 0xf7, 0xd2, //0x000020fc notq %rdx - //0x000020ff LBB0_360 - 0x66, 0x0f, 0x6f, 0xdd, //0x000020ff movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002103 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002107 pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x30, //0x0000210b shlq $48, %rcx - 0x66, 0x0f, 0x6f, 0xde, //0x0000210f movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002113 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002117 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x20, //0x0000211b shlq $32, %rsi - 0x48, 0x09, 0xce, //0x0000211f orq %rcx, %rsi - 0x66, 0x0f, 0x6f, 0xdf, //0x00002122 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002126 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x0000212a pmovmskb %xmm3, %ecx - 0x48, 0xc1, 0xe1, 0x10, //0x0000212e shlq $16, %rcx - 0x48, 0x09, 0xf1, //0x00002132 orq %rsi, %rcx - 0x66, 0x0f, 0x6f, 0xdc, //0x00002135 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x00002139 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000213d pmovmskb %xmm3, %esi - 0x48, 0x09, 0xce, //0x00002141 orq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002144 andq %rdx, %rsi - 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002147 movq %rsi, %xmm3 - 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x0000214c pclmulqdq $0, %xmm10, %xmm3 - 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00002153 movq %xmm3, %r11 - 0x4d, 0x31, 0xc3, //0x00002158 xorq %r8, %r11 - 0x66, 0x0f, 0x6f, 0xdc, //0x0000215b movdqa %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000215f pcmpeqb %xmm13, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00002164 pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002169 movdqa %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000216d pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x00002172 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x00002176 movdqa %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x0000217a pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xd3, //0x0000217f pmovmskb %xmm3, %edx - 0x66, 0x0f, 0x6f, 0xdd, //0x00002183 movdqa %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002187 pcmpeqb %xmm13, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x0000218c pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe6, 0x30, //0x00002190 shlq $48, %rsi - 0x48, 0xc1, 0xe2, 0x20, //0x00002194 shlq $32, %rdx - 0x48, 0x09, 0xf2, //0x00002198 orq %rsi, %rdx - 0x48, 0xc1, 0xe1, 0x10, //0x0000219b shlq $16, %rcx - 0x48, 0x09, 0xd1, //0x0000219f orq %rdx, %rcx - 0x49, 0x09, 0xcd, //0x000021a2 orq %rcx, %r13 - 0x4d, 0x89, 0xd8, //0x000021a5 movq %r11, %r8 - 0x49, 0xf7, 0xd0, //0x000021a8 notq %r8 - 0x4d, 0x21, 0xc5, //0x000021ab andq %r8, %r13 - 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x000021ae pcmpeqb %xmm8, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x000021b3 pmovmskb %xmm4, %edx - 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021b7 pcmpeqb %xmm8, %xmm7 - 0x66, 0x0f, 0xd7, 0xf7, //0x000021bc pmovmskb %xmm7, %esi - 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021c0 pcmpeqb %xmm8, %xmm6 - 0x66, 0x0f, 0xd7, 0xce, //0x000021c5 pmovmskb %xmm6, %ecx - 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021c9 pcmpeqb %xmm8, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021ce pmovmskb %xmm5, %r15d - 0x49, 0xc1, 0xe7, 0x30, //0x000021d3 shlq $48, %r15 - 0x48, 0xc1, 0xe1, 0x20, //0x000021d7 shlq $32, %rcx - 0x4c, 0x09, 0xf9, //0x000021db orq %r15, %rcx - 0x48, 0xc1, 0xe6, 0x10, //0x000021de shlq $16, %rsi - 0x48, 0x09, 0xce, //0x000021e2 orq %rcx, %rsi - 0x48, 0x09, 0xf2, //0x000021e5 orq %rsi, %rdx - 0x4c, 0x21, 0xc2, //0x000021e8 andq %r8, %rdx - 0x0f, 0x84, 0x86, 0x00, 0x00, 0x00, //0x000021eb je LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021f1 movabsq $3689348814741910323, %r8 - 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021fb .p2align 4, 0x90 - //0x00002200 LBB0_362 - 0x48, 0x8d, 0x7a, 0xff, //0x00002200 leaq $-1(%rdx), %rdi - 0x48, 0x89, 0xf9, //0x00002204 movq %rdi, %rcx - 0x4c, 0x21, 0xe9, //0x00002207 andq %r13, %rcx - 0x48, 0x89, 0xce, //0x0000220a movq %rcx, %rsi - 0x48, 0xd1, 0xee, //0x0000220d shrq %rsi - 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002210 movabsq $6148914691236517205, %rbx - 0x48, 0x21, 0xde, //0x0000221a andq %rbx, %rsi - 0x48, 0x29, 0xf1, //0x0000221d subq %rsi, %rcx + 0x0f, 0x83, 0xc5, 0x02, 0x00, 0x00, //0x00000f9d jae LBB0_228 + 0xe9, 0xdf, 0x2c, 0x00, 0x00, //0x00000fa3 jmp LBB0_187 + //0x00000fa8 LBB0_188 + 0x41, 0x89, 0xc9, //0x00000fa8 movl %ecx, %r9d + 0x49, 0x01, 0xf9, //0x00000fab addq %rdi, %r9 + 0x4d, 0x01, 0xe9, //0x00000fae addq %r13, %r9 + 0xe9, 0x1c, 0x02, 0x00, 0x00, //0x00000fb1 jmp LBB0_217 + //0x00000fb6 LBB0_189 + 0x49, 0x89, 0xc2, //0x00000fb6 movq %rax, %r10 + 0x49, 0x29, 0xd2, //0x00000fb9 subq %rdx, %r10 + 0x0f, 0x84, 0xe1, 0x2c, 0x00, 0x00, //0x00000fbc je LBB0_658 + 0x4c, 0x89, 0x65, 0xb8, //0x00000fc2 movq %r12, $-72(%rbp) + 0x49, 0x83, 0xfa, 0x40, //0x00000fc6 cmpq $64, %r10 + 0x0f, 0x82, 0x15, 0x20, 0x00, 0x00, //0x00000fca jb LBB0_512 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00000fd0 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x00000fd8 movq $-64(%rbp), %rax + 0x45, 0x31, 0xe4, //0x00000fdc xorl %r12d, %r12d + 0x90, //0x00000fdf .p2align 4, 0x90 + //0x00000fe0 LBB0_192 + 0x48, 0x8b, 0x4d, 0xb8, //0x00000fe0 movq $-72(%rbp), %rcx + 0xf3, 0x44, 0x0f, 0x6f, 0x2c, 0x01, //0x00000fe4 movdqu (%rcx,%rax), %xmm13 + 0xf3, 0x0f, 0x6f, 0x74, 0x01, 0x10, //0x00000fea movdqu $16(%rcx,%rax), %xmm6 + 0xf3, 0x0f, 0x6f, 0x6c, 0x01, 0x20, //0x00000ff0 movdqu $32(%rcx,%rax), %xmm5 + 0xf3, 0x0f, 0x6f, 0x64, 0x01, 0x30, //0x00000ff6 movdqu $48(%rcx,%rax), %xmm4 + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00000ffc movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001001 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001005 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xde, //0x0000100a movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000100e pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00001012 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001016 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000101a pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x0000101e pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00001023 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001027 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x0000102b pmovmskb %xmm3, %r15d + 0x66, 0x41, 0x0f, 0x6f, 0xdd, //0x00001030 movdqa %xmm13, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001035 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001039 pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xde, //0x0000103e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001042 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001046 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000104a movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000104e pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001052 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x00001056 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000105a pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x0000105e pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001063 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00001068 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x0000106c pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x00001071 pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xf6, //0x00001075 pmovmskb %xmm6, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00001079 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x0000107e pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x00001082 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x00001087 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x0000108b pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000108f movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00001094 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00001098 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000109d pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x000010a1 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x000010a6 shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x000010aa shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000010ae orq %r15, %r14 + 0x48, 0xc1, 0xe3, 0x10, //0x000010b1 shlq $16, %rbx + 0x4c, 0x09, 0xf3, //0x000010b5 orq %r14, %rbx + 0x49, 0x09, 0xdb, //0x000010b8 orq %rbx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000010bb shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000010bf shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000010c3 orq %r9, %rdi + 0x48, 0xc1, 0xe1, 0x10, //0x000010c6 shlq $16, %rcx + 0x48, 0x09, 0xf9, //0x000010ca orq %rdi, %rcx + 0x49, 0xc1, 0xe0, 0x30, //0x000010cd shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000010d1 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000010d5 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000010d8 shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000010dc orq %rdx, %rsi + 0x49, 0x09, 0xcd, //0x000010df orq %rcx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000010e2 jne LBB0_209 + 0x4d, 0x85, 0xe4, //0x000010e8 testq %r12, %r12 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000010eb jne LBB0_211 + 0x45, 0x31, 0xe4, //0x000010f1 xorl %r12d, %r12d + 0x4c, 0x8b, 0x75, 0xd0, //0x000010f4 movq $-48(%rbp), %r14 + //0x000010f8 LBB0_195 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000010f8 movdqa %xmm12, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xdd, //0x000010fd pcmpgtb %xmm13, %xmm3 + 0x66, 0x45, 0x0f, 0x64, 0xea, //0x00001102 pcmpgtb %xmm10, %xmm13 + 0x66, 0x44, 0x0f, 0xdb, 0xeb, //0x00001107 pand %xmm3, %xmm13 + 0x66, 0x41, 0x0f, 0xd7, 0xcd, //0x0000110c pmovmskb %xmm13, %ecx + 0x48, 0x09, 0xce, //0x00001111 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00001114 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00001117 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x91, 0x00, 0x00, 0x00, //0x0000111b jne LBB0_213 + 0x48, 0x85, 0xf6, //0x00001121 testq %rsi, %rsi + 0x0f, 0x85, 0xe7, 0x2a, 0x00, 0x00, //0x00001124 jne LBB0_645 + 0x49, 0x83, 0xc2, 0xc0, //0x0000112a addq $-64, %r10 + 0x48, 0x83, 0xc0, 0x40, //0x0000112e addq $64, %rax + 0x49, 0x83, 0xfa, 0x3f, //0x00001132 cmpq $63, %r10 + 0x0f, 0x87, 0xa4, 0xfe, 0xff, 0xff, //0x00001136 ja LBB0_192 + 0xe9, 0x27, 0x18, 0x00, 0x00, //0x0000113c jmp LBB0_198 + //0x00001141 LBB0_209 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00001141 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00001146 movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000114a jne LBB0_212 + 0x49, 0x0f, 0xbc, 0xcd, //0x00001150 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00001154 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00001157 movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000115b jmp LBB0_212 + //0x00001160 LBB0_211 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001160 movq $-48(%rbp), %r14 + //0x00001164 LBB0_212 + 0x4c, 0x89, 0xe1, //0x00001164 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00001167 notq %rcx + 0x4c, 0x21, 0xe9, //0x0000116a andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x0000116d leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xe2, //0x00001171 orq %r12, %rdx + 0x48, 0x89, 0xd7, //0x00001174 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00001177 notq %rdi + 0x4c, 0x21, 0xef, //0x0000117a andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000117d movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x00001187 andq %rbx, %rdi + 0x45, 0x31, 0xe4, //0x0000118a xorl %r12d, %r12d + 0x48, 0x01, 0xcf, //0x0000118d addq %rcx, %rdi + 0x41, 0x0f, 0x92, 0xc4, //0x00001190 setb %r12b + 0x48, 0x01, 0xff, //0x00001194 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001197 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x000011a1 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x000011a4 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x000011a7 notq %rdi + 0x49, 0x21, 0xfb, //0x000011aa andq %rdi, %r11 + 0xe9, 0x46, 0xff, 0xff, 0xff, //0x000011ad jmp LBB0_195 + //0x000011b2 LBB0_213 + 0x49, 0x0f, 0xbc, 0xcb, //0x000011b2 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000011b6 testq %rsi, %rsi + 0x0f, 0x84, 0x0c, 0x06, 0x00, 0x00, //0x000011b9 je LBB0_310 + 0x48, 0x0f, 0xbc, 0xd6, //0x000011bf bsfq %rsi, %rdx + 0xe9, 0x08, 0x06, 0x00, 0x00, //0x000011c3 jmp LBB0_311 + //0x000011c8 LBB0_215 + 0x48, 0x01, 0xd6, //0x000011c8 addq %rdx, %rsi + 0x49, 0x89, 0xf1, //0x000011cb movq %rsi, %r9 + //0x000011ce LBB0_216 + 0x48, 0x8b, 0x7d, 0xb8, //0x000011ce movq $-72(%rbp), %rdi + //0x000011d2 LBB0_217 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000011d2 movq $-1, %r13 + 0x4d, 0x85, 0xc0, //0x000011d9 testq %r8, %r8 + 0x0f, 0x84, 0xb4, 0x28, 0x00, 0x00, //0x000011dc je LBB0_626 + 0x4d, 0x85, 0xd2, //0x000011e2 testq %r10, %r10 + 0x0f, 0x84, 0xab, 0x28, 0x00, 0x00, //0x000011e5 je LBB0_626 + 0x4d, 0x85, 0xff, //0x000011eb testq %r15, %r15 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000011ee movabsq $4294977024, %r11 + 0x0f, 0x84, 0x98, 0x28, 0x00, 0x00, //0x000011f8 je LBB0_626 + 0x49, 0x29, 0xf9, //0x000011fe subq %rdi, %r9 + 0x49, 0x8d, 0x49, 0xff, //0x00001201 leaq $-1(%r9), %rcx + 0x49, 0x39, 0xc8, //0x00001205 cmpq %rcx, %r8 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00001208 je LBB0_226 + 0x49, 0x39, 0xca, //0x0000120e cmpq %rcx, %r10 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00001211 je LBB0_226 + 0x49, 0x39, 0xcf, //0x00001217 cmpq %rcx, %r15 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000121a je LBB0_226 + 0x4d, 0x85, 0xd2, //0x00001220 testq %r10, %r10 + 0x0f, 0x8e, 0x7f, 0x05, 0x00, 0x00, //0x00001223 jle LBB0_307 + 0x49, 0x8d, 0x4a, 0xff, //0x00001229 leaq $-1(%r10), %rcx + 0x49, 0x39, 0xcf, //0x0000122d cmpq %rcx, %r15 + 0x0f, 0x84, 0x72, 0x05, 0x00, 0x00, //0x00001230 je LBB0_307 + 0x49, 0xf7, 0xd2, //0x00001236 notq %r10 + 0x4d, 0x89, 0xd5, //0x00001239 movq %r10, %r13 + 0xe9, 0xb3, 0x14, 0x00, 0x00, //0x0000123c jmp LBB0_451 + //0x00001241 LBB0_226 + 0x49, 0xf7, 0xd9, //0x00001241 negq %r9 + 0x4d, 0x89, 0xcd, //0x00001244 movq %r9, %r13 + 0xe9, 0xa8, 0x14, 0x00, 0x00, //0x00001247 jmp LBB0_451 + //0x0000124c LBB0_227 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000124c movl $64, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00001251 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001255 movabsq $4294977024, %r11 + 0x48, 0x39, 0xca, //0x0000125f cmpq %rcx, %rdx + 0x0f, 0x82, 0x1f, 0x2a, 0x00, 0x00, //0x00001262 jb LBB0_187 + //0x00001268 LBB0_228 + 0x48, 0x01, 0xc8, //0x00001268 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000126b addq $1, %rax + //0x0000126f LBB0_229 + 0x48, 0x85, 0xc0, //0x0000126f testq %rax, %rax + 0x0f, 0x88, 0xf9, 0x27, 0x00, 0x00, //0x00001272 js LBB0_623 + 0x49, 0x89, 0x06, //0x00001278 movq %rax, (%r14) + 0x48, 0x8b, 0x45, 0xc0, //0x0000127b movq $-64(%rbp), %rax + //0x0000127f LBB0_231 + 0x48, 0x85, 0xc0, //0x0000127f testq %rax, %rax + 0x0f, 0x8f, 0x48, 0xef, 0xff, 0xff, //0x00001282 jg LBB0_4 + 0xe9, 0xdb, 0x27, 0x00, 0x00, //0x00001288 jmp LBB0_232 + //0x0000128d LBB0_233 + 0x49, 0x8b, 0x0e, //0x0000128d movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x00001290 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001294 movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfc, //0x00001298 leaq $-4(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x0000129c cmpq %rsi, %rcx + 0x0f, 0x87, 0x35, 0x28, 0x00, 0x00, //0x0000129f ja LBB0_629 + 0x41, 0x8b, 0x14, 0x0c, //0x000012a5 movl (%r12,%rcx), %edx + 0x81, 0xfa, 0x61, 0x6c, 0x73, 0x65, //0x000012a9 cmpl $1702063201, %edx + 0x0f, 0x85, 0xfb, 0x28, 0x00, 0x00, //0x000012af jne LBB0_640 + 0x48, 0x8d, 0x41, 0x04, //0x000012b5 leaq $4(%rcx), %rax + 0x49, 0x89, 0x06, //0x000012b9 movq %rax, (%r14) + 0x48, 0x85, 0xc9, //0x000012bc testq %rcx, %rcx + 0x0f, 0x8f, 0x0b, 0xef, 0xff, 0xff, //0x000012bf jg LBB0_4 + 0xe9, 0x3b, 0x29, 0x00, 0x00, //0x000012c5 jmp LBB0_236 + //0x000012ca LBB0_237 + 0x48, 0x8b, 0x4d, 0x98, //0x000012ca movq $-104(%rbp), %rcx + 0xf6, 0xc1, 0x40, //0x000012ce testb $64, %cl + 0x0f, 0x85, 0x5b, 0x05, 0x00, 0x00, //0x000012d1 jne LBB0_317 + 0x49, 0x8b, 0x16, //0x000012d7 movq (%r14), %rdx + 0x48, 0x8b, 0x45, 0xa8, //0x000012da movq $-88(%rbp), %rax + 0x48, 0x8b, 0x40, 0x08, //0x000012de movq $8(%rax), %rax + 0xf6, 0xc1, 0x20, //0x000012e2 testb $32, %cl + 0x48, 0x89, 0x45, 0xa0, //0x000012e5 movq %rax, $-96(%rbp) + 0x48, 0x89, 0x55, 0xc0, //0x000012e9 movq %rdx, $-64(%rbp) + 0x0f, 0x85, 0xae, 0x10, 0x00, 0x00, //0x000012ed jne LBB0_400 + 0x49, 0x89, 0xc1, //0x000012f3 movq %rax, %r9 + 0x49, 0x29, 0xd1, //0x000012f6 subq %rdx, %r9 + 0x0f, 0x84, 0xb1, 0x29, 0x00, 0x00, //0x000012f9 je LBB0_660 + 0x49, 0x83, 0xf9, 0x40, //0x000012ff cmpq $64, %r9 + 0x0f, 0x82, 0xb1, 0x1d, 0x00, 0x00, //0x00001303 jb LBB0_518 + 0x49, 0x89, 0xd6, //0x00001309 movq %rdx, %r14 + 0x49, 0xf7, 0xd6, //0x0000130c notq %r14 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000130f movq $-1, $-56(%rbp) + 0x48, 0x89, 0xd0, //0x00001317 movq %rdx, %rax + 0x45, 0x31, 0xc0, //0x0000131a xorl %r8d, %r8d + 0x90, 0x90, 0x90, //0x0000131d .p2align 4, 0x90 + //0x00001320 LBB0_242 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x04, //0x00001320 movdqu (%r12,%rax), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x10, //0x00001326 movdqu $16(%r12,%rax), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x04, 0x20, //0x0000132d movdqu $32(%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x30, //0x00001334 movdqu $48(%r12,%rax), %xmm6 + 0x66, 0x0f, 0x6f, 0xfb, //0x0000133b movdqa %xmm3, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000133f pcmpeqb %xmm0, %xmm7 + 0x66, 0x44, 0x0f, 0xd7, 0xd7, //0x00001343 pmovmskb %xmm7, %r10d + 0x66, 0x0f, 0x6f, 0xfc, //0x00001348 movdqa %xmm4, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x0000134c pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xcf, //0x00001350 pmovmskb %xmm7, %ecx + 0x66, 0x0f, 0x6f, 0xfd, //0x00001354 movdqa %xmm5, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001358 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x0000135c pmovmskb %xmm7, %esi + 0x66, 0x0f, 0x6f, 0xfe, //0x00001360 movdqa %xmm6, %xmm7 + 0x66, 0x0f, 0x74, 0xf8, //0x00001364 pcmpeqb %xmm0, %xmm7 + 0x66, 0x0f, 0xd7, 0xd7, //0x00001368 pmovmskb %xmm7, %edx + 0x66, 0x0f, 0x74, 0xd9, //0x0000136c pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x00001370 pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x74, 0xe1, //0x00001375 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xdc, //0x00001379 pmovmskb %xmm4, %ebx + 0x66, 0x0f, 0x74, 0xe9, //0x0000137d pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001381 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x74, 0xf1, //0x00001385 pcmpeqb %xmm1, %xmm6 + 0x66, 0x44, 0x0f, 0xd7, 0xfe, //0x00001389 pmovmskb %xmm6, %r15d + 0x48, 0xc1, 0xe2, 0x30, //0x0000138e shlq $48, %rdx + 0x48, 0xc1, 0xe6, 0x20, //0x00001392 shlq $32, %rsi + 0x48, 0x09, 0xd6, //0x00001396 orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001399 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000139d orq %rsi, %rcx + 0x49, 0x09, 0xca, //0x000013a0 orq %rcx, %r10 + 0x49, 0xc1, 0xe7, 0x30, //0x000013a3 shlq $48, %r15 + 0x48, 0xc1, 0xe7, 0x20, //0x000013a7 shlq $32, %rdi + 0x4c, 0x09, 0xff, //0x000013ab orq %r15, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000013ae shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000013b2 orq %rdi, %rbx + 0x49, 0x09, 0xdb, //0x000013b5 orq %rbx, %r11 + 0x0f, 0x85, 0x3a, 0x00, 0x00, 0x00, //0x000013b8 jne LBB0_251 + 0x4d, 0x85, 0xc0, //0x000013be testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x00, 0x00, 0x00, //0x000013c1 jne LBB0_253 + 0x45, 0x31, 0xc0, //0x000013c7 xorl %r8d, %r8d + 0x4d, 0x85, 0xd2, //0x000013ca testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000013cd movabsq $4294977024, %r11 + 0x0f, 0x85, 0x8d, 0x00, 0x00, 0x00, //0x000013d7 jne LBB0_254 + //0x000013dd LBB0_245 + 0x49, 0x83, 0xc1, 0xc0, //0x000013dd addq $-64, %r9 + 0x49, 0x83, 0xc6, 0xc0, //0x000013e1 addq $-64, %r14 + 0x48, 0x83, 0xc0, 0x40, //0x000013e5 addq $64, %rax + 0x49, 0x83, 0xf9, 0x3f, //0x000013e9 cmpq $63, %r9 + 0x0f, 0x87, 0x2d, 0xff, 0xff, 0xff, //0x000013ed ja LBB0_242 + 0xe9, 0x90, 0x18, 0x00, 0x00, //0x000013f3 jmp LBB0_246 + //0x000013f8 LBB0_251 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000013f8 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x000013fd jne LBB0_253 + 0x49, 0x0f, 0xbc, 0xcb, //0x00001403 bsfq %r11, %rcx + 0x48, 0x01, 0xc1, //0x00001407 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000140a movq %rcx, $-56(%rbp) + //0x0000140e LBB0_253 + 0x4c, 0x89, 0xc1, //0x0000140e movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00001411 notq %rcx + 0x4c, 0x21, 0xd9, //0x00001414 andq %r11, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00001417 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xc2, //0x0000141b orq %r8, %rdx + 0x48, 0x89, 0xd6, //0x0000141e movq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001421 notq %rsi + 0x4c, 0x21, 0xde, //0x00001424 andq %r11, %rsi + 0x48, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001427 movabsq $-6148914691236517206, %rdi + 0x48, 0x21, 0xfe, //0x00001431 andq %rdi, %rsi + 0x45, 0x31, 0xc0, //0x00001434 xorl %r8d, %r8d + 0x48, 0x01, 0xce, //0x00001437 addq %rcx, %rsi + 0x41, 0x0f, 0x92, 0xc0, //0x0000143a setb %r8b + 0x48, 0x01, 0xf6, //0x0000143e addq %rsi, %rsi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001441 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xce, //0x0000144b xorq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000144e andq %rdx, %rsi + 0x48, 0xf7, 0xd6, //0x00001451 notq %rsi + 0x49, 0x21, 0xf2, //0x00001454 andq %rsi, %r10 + 0x4d, 0x85, 0xd2, //0x00001457 testq %r10, %r10 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000145a movabsq $4294977024, %r11 + 0x0f, 0x84, 0x73, 0xff, 0xff, 0xff, //0x00001464 je LBB0_245 + //0x0000146a LBB0_254 + 0x49, 0x0f, 0xbc, 0xc2, //0x0000146a bsfq %r10, %rax + 0x4c, 0x29, 0xf0, //0x0000146e subq %r14, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00001471 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00001475 movq $-64(%rbp), %rbx + 0xe9, 0xe5, 0x11, 0x00, 0x00, //0x00001479 jmp LBB0_441 + //0x0000147e LBB0_255 + 0x48, 0x8b, 0x45, 0xa8, //0x0000147e movq $-88(%rbp), %rax + 0x4c, 0x8b, 0x48, 0x08, //0x00001482 movq $8(%rax), %r9 + 0x49, 0x8b, 0x06, //0x00001486 movq (%r14), %rax + 0xf6, 0x45, 0x98, 0x40, //0x00001489 testb $64, $-104(%rbp) + 0x0f, 0x85, 0xae, 0x04, 0x00, 0x00, //0x0000148d jne LBB0_327 + 0x49, 0x29, 0xc1, //0x00001493 subq %rax, %r9 + 0x0f, 0x84, 0x92, 0x27, 0x00, 0x00, //0x00001496 je LBB0_647 + 0x49, 0x8d, 0x0c, 0x04, //0x0000149c leaq (%r12,%rax), %rcx + 0x48, 0x89, 0x4d, 0xb8, //0x000014a0 movq %rcx, $-72(%rbp) + 0x80, 0x39, 0x30, //0x000014a4 cmpb $48, (%rcx) + 0x0f, 0x85, 0x39, 0x00, 0x00, 0x00, //0x000014a7 jne LBB0_261 + 0xbb, 0x01, 0x00, 0x00, 0x00, //0x000014ad movl $1, %ebx + 0x49, 0x83, 0xf9, 0x01, //0x000014b2 cmpq $1, %r9 + 0x0f, 0x84, 0xa6, 0x17, 0x00, 0x00, //0x000014b6 je LBB0_487 + 0x48, 0x8b, 0x4d, 0xb8, //0x000014bc movq $-72(%rbp), %rcx + 0x8a, 0x49, 0x01, //0x000014c0 movb $1(%rcx), %cl + 0x80, 0xc1, 0xd2, //0x000014c3 addb $-46, %cl + 0x80, 0xf9, 0x37, //0x000014c6 cmpb $55, %cl + 0x0f, 0x87, 0x93, 0x17, 0x00, 0x00, //0x000014c9 ja LBB0_487 + 0x0f, 0xb6, 0xc9, //0x000014cf movzbl %cl, %ecx + 0x48, 0xba, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000014d2 movabsq $36028797027352577, %rdx + 0x48, 0x0f, 0xa3, 0xca, //0x000014dc btq %rcx, %rdx + 0x0f, 0x83, 0x7c, 0x17, 0x00, 0x00, //0x000014e0 jae LBB0_487 + //0x000014e6 LBB0_261 + 0x49, 0x83, 0xf9, 0x10, //0x000014e6 cmpq $16, %r9 + 0x0f, 0x82, 0xa9, 0x1b, 0x00, 0x00, //0x000014ea jb LBB0_517 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000014f0 movq $-1, %r13 + 0x31, 0xdb, //0x000014f7 xorl %ebx, %ebx + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000014f9 movq $-1, %r8 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00001500 movq $-1, %r14 + 0x4d, 0x89, 0xca, //0x00001507 movq %r9, %r10 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000150a .p2align 4, 0x90 + //0x00001510 LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001510 movq $-72(%rbp), %rcx + 0xf3, 0x0f, 0x6f, 0x1c, 0x19, //0x00001514 movdqu (%rcx,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001519 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x64, 0x25, 0x7b, 0xeb, 0xff, 0xff, //0x0000151d pcmpgtb $-5253(%rip), %xmm4 /* LCPI0_10+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xef, //0x00001525 movdqa %xmm15, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000152a pcmpgtb %xmm3, %xmm5 + 0x66, 0x0f, 0xdb, 0xec, //0x0000152e pand %xmm4, %xmm5 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001532 movdqa %xmm3, %xmm4 + 0x66, 0x0f, 0x74, 0x25, 0x82, 0xeb, 0xff, 0xff, //0x00001536 pcmpeqb $-5246(%rip), %xmm4 /* LCPI0_12+0(%rip) */ + 0x66, 0x0f, 0x6f, 0xf3, //0x0000153e movdqa %xmm3, %xmm6 + 0x66, 0x0f, 0x74, 0x35, 0x86, 0xeb, 0xff, 0xff, //0x00001542 pcmpeqb $-5242(%rip), %xmm6 /* LCPI0_13+0(%rip) */ + 0x66, 0x0f, 0xeb, 0xf4, //0x0000154a por %xmm4, %xmm6 + 0x66, 0x0f, 0x6f, 0xe3, //0x0000154e movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xe1, //0x00001552 pand %xmm9, %xmm4 + 0x66, 0x0f, 0x74, 0x1d, 0x81, 0xeb, 0xff, 0xff, //0x00001557 pcmpeqb $-5247(%rip), %xmm3 /* LCPI0_14+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xe3, //0x0000155f pcmpeqb %xmm11, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xfc, //0x00001564 pmovmskb %xmm4, %r15d + 0x66, 0x0f, 0xeb, 0xe3, //0x00001569 por %xmm3, %xmm4 + 0x66, 0x0f, 0xeb, 0xee, //0x0000156d por %xmm6, %xmm5 + 0x66, 0x0f, 0xeb, 0xec, //0x00001571 por %xmm4, %xmm5 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001575 pmovmskb %xmm3, %edx + 0x66, 0x44, 0x0f, 0xd7, 0xde, //0x00001579 pmovmskb %xmm6, %r11d + 0x66, 0x0f, 0xd7, 0xcd, //0x0000157e pmovmskb %xmm5, %ecx + 0xf7, 0xd1, //0x00001582 notl %ecx + 0x0f, 0xbc, 0xc9, //0x00001584 bsfl %ecx, %ecx + 0x83, 0xf9, 0x10, //0x00001587 cmpl $16, %ecx + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x0000158a je LBB0_265 + 0xbe, 0xff, 0xff, 0xff, 0xff, //0x00001590 movl $-1, %esi + 0xd3, 0xe6, //0x00001595 shll %cl, %esi + 0xf7, 0xd6, //0x00001597 notl %esi + 0x21, 0xf2, //0x00001599 andl %esi, %edx + 0x41, 0x21, 0xf7, //0x0000159b andl %esi, %r15d + 0x44, 0x21, 0xde, //0x0000159e andl %r11d, %esi + 0x41, 0x89, 0xf3, //0x000015a1 movl %esi, %r11d + //0x000015a4 LBB0_265 + 0x8d, 0x72, 0xff, //0x000015a4 leal $-1(%rdx), %esi + 0x21, 0xd6, //0x000015a7 andl %edx, %esi + 0x0f, 0x85, 0x79, 0x16, 0x00, 0x00, //0x000015a9 jne LBB0_481 + 0x41, 0x8d, 0x77, 0xff, //0x000015af leal $-1(%r15), %esi + 0x44, 0x21, 0xfe, //0x000015b3 andl %r15d, %esi + 0x0f, 0x85, 0x6c, 0x16, 0x00, 0x00, //0x000015b6 jne LBB0_481 + 0x41, 0x8d, 0x73, 0xff, //0x000015bc leal $-1(%r11), %esi + 0x44, 0x21, 0xde, //0x000015c0 andl %r11d, %esi + 0x0f, 0x85, 0x5f, 0x16, 0x00, 0x00, //0x000015c3 jne LBB0_481 + 0x85, 0xd2, //0x000015c9 testl %edx, %edx + 0x0f, 0x84, 0x13, 0x00, 0x00, 0x00, //0x000015cb je LBB0_271 + 0x0f, 0xbc, 0xd2, //0x000015d1 bsfl %edx, %edx + 0x49, 0x83, 0xfe, 0xff, //0x000015d4 cmpq $-1, %r14 + 0x0f, 0x85, 0x73, 0x16, 0x00, 0x00, //0x000015d8 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015de addq %rbx, %rdx + 0x49, 0x89, 0xd6, //0x000015e1 movq %rdx, %r14 + //0x000015e4 LBB0_271 + 0x45, 0x85, 0xff, //0x000015e4 testl %r15d, %r15d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000015e7 je LBB0_274 + 0x41, 0x0f, 0xbc, 0xd7, //0x000015ed bsfl %r15d, %edx + 0x49, 0x83, 0xf8, 0xff, //0x000015f1 cmpq $-1, %r8 + 0x0f, 0x85, 0x56, 0x16, 0x00, 0x00, //0x000015f5 jne LBB0_484 + 0x48, 0x01, 0xda, //0x000015fb addq %rbx, %rdx + 0x49, 0x89, 0xd0, //0x000015fe movq %rdx, %r8 + //0x00001601 LBB0_274 + 0x45, 0x85, 0xdb, //0x00001601 testl %r11d, %r11d + 0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x00001604 je LBB0_277 + 0x41, 0x0f, 0xbc, 0xd3, //0x0000160a bsfl %r11d, %edx + 0x49, 0x83, 0xfd, 0xff, //0x0000160e cmpq $-1, %r13 + 0x0f, 0x85, 0x39, 0x16, 0x00, 0x00, //0x00001612 jne LBB0_484 + 0x48, 0x01, 0xda, //0x00001618 addq %rbx, %rdx + 0x49, 0x89, 0xd5, //0x0000161b movq %rdx, %r13 + //0x0000161e LBB0_277 + 0x83, 0xf9, 0x10, //0x0000161e cmpl $16, %ecx + 0x0f, 0x85, 0x93, 0x0f, 0x00, 0x00, //0x00001621 jne LBB0_426 + 0x49, 0x83, 0xc2, 0xf0, //0x00001627 addq $-16, %r10 + 0x48, 0x83, 0xc3, 0x10, //0x0000162b addq $16, %rbx + 0x49, 0x83, 0xfa, 0x0f, //0x0000162f cmpq $15, %r10 + 0x0f, 0x87, 0xd7, 0xfe, 0xff, 0xff, //0x00001633 ja LBB0_263 + 0x48, 0x8b, 0x4d, 0xb8, //0x00001639 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x34, 0x19, //0x0000163d leaq (%rcx,%rbx), %rsi + 0x49, 0x89, 0xf3, //0x00001641 movq %rsi, %r11 + 0x49, 0x39, 0xd9, //0x00001644 cmpq %rbx, %r9 + 0x0f, 0x84, 0x82, 0x0f, 0x00, 0x00, //0x00001647 je LBB0_428 + //0x0000164d LBB0_280 + 0x4e, 0x8d, 0x1c, 0x16, //0x0000164d leaq (%rsi,%r10), %r11 + 0x49, 0x89, 0xf1, //0x00001651 movq %rsi, %r9 + 0x4c, 0x2b, 0x4d, 0xb8, //0x00001654 subq $-72(%rbp), %r9 + 0x31, 0xdb, //0x00001658 xorl %ebx, %ebx + 0xe9, 0x1e, 0x00, 0x00, 0x00, //0x0000165a jmp LBB0_284 + //0x0000165f LBB0_281 + 0x49, 0x83, 0xfd, 0xff, //0x0000165f cmpq $-1, %r13 + 0x0f, 0x85, 0xd7, 0x15, 0x00, 0x00, //0x00001663 jne LBB0_483 + 0x4d, 0x8d, 0x2c, 0x19, //0x00001669 leaq (%r9,%rbx), %r13 + 0x90, 0x90, 0x90, //0x0000166d .p2align 4, 0x90 + //0x00001670 LBB0_283 + 0x48, 0x83, 0xc3, 0x01, //0x00001670 addq $1, %rbx + 0x49, 0x39, 0xda, //0x00001674 cmpq %rbx, %r10 + 0x0f, 0x84, 0x52, 0x0f, 0x00, 0x00, //0x00001677 je LBB0_428 + //0x0000167d LBB0_284 + 0x0f, 0xbe, 0x0c, 0x1e, //0x0000167d movsbl (%rsi,%rbx), %ecx + 0x8d, 0x51, 0xd0, //0x00001681 leal $-48(%rcx), %edx + 0x83, 0xfa, 0x0a, //0x00001684 cmpl $10, %edx + 0x0f, 0x82, 0xe3, 0xff, 0xff, 0xff, //0x00001687 jb LBB0_283 + 0x8d, 0x51, 0xd5, //0x0000168d leal $-43(%rcx), %edx + 0x83, 0xfa, 0x1a, //0x00001690 cmpl $26, %edx + 0x0f, 0x87, 0x23, 0x00, 0x00, 0x00, //0x00001693 ja LBB0_289 + 0x48, 0x8d, 0x3d, 0xb4, 0x28, 0x00, 0x00, //0x00001699 leaq $10420(%rip), %rdi /* LJTI0_2+0(%rip) */ + 0x48, 0x63, 0x0c, 0x97, //0x000016a0 movslq (%rdi,%rdx,4), %rcx + 0x48, 0x01, 0xf9, //0x000016a4 addq %rdi, %rcx + 0xff, 0xe1, //0x000016a7 jmpq *%rcx + //0x000016a9 LBB0_287 + 0x49, 0x83, 0xfe, 0xff, //0x000016a9 cmpq $-1, %r14 + 0x0f, 0x85, 0x8d, 0x15, 0x00, 0x00, //0x000016ad jne LBB0_483 + 0x4d, 0x8d, 0x34, 0x19, //0x000016b3 leaq (%r9,%rbx), %r14 + 0xe9, 0xb4, 0xff, 0xff, 0xff, //0x000016b7 jmp LBB0_283 + //0x000016bc LBB0_289 + 0x83, 0xf9, 0x65, //0x000016bc cmpl $101, %ecx + 0x0f, 0x85, 0x04, 0x0f, 0x00, 0x00, //0x000016bf jne LBB0_427 + //0x000016c5 LBB0_290 + 0x49, 0x83, 0xf8, 0xff, //0x000016c5 cmpq $-1, %r8 + 0x0f, 0x85, 0x71, 0x15, 0x00, 0x00, //0x000016c9 jne LBB0_483 + 0x4d, 0x8d, 0x04, 0x19, //0x000016cf leaq (%r9,%rbx), %r8 + 0xe9, 0x98, 0xff, 0xff, 0xff, //0x000016d3 jmp LBB0_283 + //0x000016d8 LBB0_292 + 0xf6, 0x45, 0x98, 0x40, //0x000016d8 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x46, 0x03, 0x00, 0x00, //0x000016dc jne LBB0_340 + 0x49, 0x8b, 0x45, 0x00, //0x000016e2 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x000016e6 cmpq $4095, %rax + 0x0f, 0x8f, 0x5e, 0x23, 0x00, 0x00, //0x000016ec jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x000016f2 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x000016f6 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x05, 0x00, 0x00, 0x00, //0x000016fa movq $5, $8(%r13,%rax,8) + 0xe9, 0xc8, 0xea, 0xff, 0xff, //0x00001703 jmp LBB0_4 + //0x00001708 LBB0_295 + 0x49, 0x8b, 0x0e, //0x00001708 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000170b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000170f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001713 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001717 cmpq %rsi, %rcx + 0x0f, 0x87, 0xba, 0x23, 0x00, 0x00, //0x0000171a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001720 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x6e, 0x75, 0x6c, 0x6c, //0x00001724 cmpl $1819047278, $-1(%r12,%rcx) + 0x0f, 0x84, 0x60, 0x00, 0x00, 0x00, //0x0000172d je LBB0_306 + 0xe9, 0x2a, 0x24, 0x00, 0x00, //0x00001733 jmp LBB0_297 + //0x00001738 LBB0_301 + 0xf6, 0x45, 0x98, 0x40, //0x00001738 testb $64, $-104(%rbp) + 0x0f, 0x85, 0x5c, 0x07, 0x00, 0x00, //0x0000173c jne LBB0_366 + 0x49, 0x8b, 0x45, 0x00, //0x00001742 movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001746 cmpq $4095, %rax + 0x0f, 0x8f, 0xfe, 0x22, 0x00, 0x00, //0x0000174c jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x00001752 leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001756 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x06, 0x00, 0x00, 0x00, //0x0000175a movq $6, $8(%r13,%rax,8) + 0xe9, 0x68, 0xea, 0xff, 0xff, //0x00001763 jmp LBB0_4 + //0x00001768 LBB0_304 + 0x49, 0x8b, 0x0e, //0x00001768 movq (%r14), %rcx + 0x48, 0x8b, 0x55, 0xa8, //0x0000176b movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x0000176f movq $8(%rdx), %rdx + 0x48, 0x8d, 0x72, 0xfd, //0x00001773 leaq $-3(%rdx), %rsi + 0x48, 0x39, 0xf1, //0x00001777 cmpq %rsi, %rcx + 0x0f, 0x87, 0x5a, 0x23, 0x00, 0x00, //0x0000177a ja LBB0_629 + 0x48, 0x8d, 0x41, 0xff, //0x00001780 leaq $-1(%rcx), %rax + 0x41, 0x81, 0x7c, 0x0c, 0xff, 0x74, 0x72, 0x75, 0x65, //0x00001784 cmpl $1702195828, $-1(%r12,%rcx) + 0x0f, 0x85, 0x88, 0x23, 0x00, 0x00, //0x0000178d jne LBB0_635 + //0x00001793 LBB0_306 + 0x48, 0x8d, 0x51, 0x03, //0x00001793 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00001797 movq %rdx, (%r14) + 0x48, 0x85, 0xc9, //0x0000179a testq %rcx, %rcx + 0x0f, 0x8f, 0x2d, 0xea, 0xff, 0xff, //0x0000179d jg LBB0_4 + 0xe9, 0x07, 0x23, 0x00, 0x00, //0x000017a3 jmp LBB0_650 + //0x000017a8 LBB0_307 + 0x4c, 0x89, 0xc1, //0x000017a8 movq %r8, %rcx + 0x4c, 0x09, 0xf9, //0x000017ab orq %r15, %rcx + 0x0f, 0x99, 0xc2, //0x000017ae setns %dl + 0x0f, 0x88, 0xce, 0x0b, 0x00, 0x00, //0x000017b1 js LBB0_399 + 0x4d, 0x39, 0xf8, //0x000017b7 cmpq %r15, %r8 + 0x0f, 0x8c, 0xc5, 0x0b, 0x00, 0x00, //0x000017ba jl LBB0_399 + 0x49, 0xf7, 0xd0, //0x000017c0 notq %r8 + 0x4d, 0x89, 0xc5, //0x000017c3 movq %r8, %r13 + 0xe9, 0x29, 0x0f, 0x00, 0x00, //0x000017c6 jmp LBB0_451 + //0x000017cb LBB0_310 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x000017cb movl $64, %edx + //0x000017d0 LBB0_311 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000017d0 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x5d, 0xe8, 0xff, 0xff, //0x000017da movdqu $-6051(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x48, 0x8b, 0x75, 0xc0, //0x000017e3 movq $-64(%rbp), %rsi + 0x48, 0x39, 0xca, //0x000017e7 cmpq %rcx, %rdx + 0x0f, 0x82, 0x67, 0x24, 0x00, 0x00, //0x000017ea jb LBB0_654 + 0x48, 0x01, 0xc8, //0x000017f0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000017f3 addq $1, %rax + //0x000017f7 LBB0_313 + 0x48, 0x85, 0xc0, //0x000017f7 testq %rax, %rax + 0x0f, 0x88, 0xc1, 0x22, 0x00, 0x00, //0x000017fa js LBB0_627 + 0x49, 0x89, 0x06, //0x00001800 movq %rax, (%r14) + 0x48, 0x85, 0xf6, //0x00001803 testq %rsi, %rsi + 0x0f, 0x8e, 0xd6, 0x22, 0x00, 0x00, //0x00001806 jle LBB0_630 + //0x0000180c LBB0_315 + 0x49, 0x8b, 0x45, 0x00, //0x0000180c movq (%r13), %rax + 0x48, 0x3d, 0xff, 0x0f, 0x00, 0x00, //0x00001810 cmpq $4095, %rax + 0x0f, 0x8f, 0x34, 0x22, 0x00, 0x00, //0x00001816 jg LBB0_651 + 0x48, 0x8d, 0x48, 0x01, //0x0000181c leaq $1(%rax), %rcx + 0x49, 0x89, 0x4d, 0x00, //0x00001820 movq %rcx, (%r13) + 0x49, 0xc7, 0x44, 0xc5, 0x08, 0x04, 0x00, 0x00, 0x00, //0x00001824 movq $4, $8(%r13,%rax,8) + 0xe9, 0x9e, 0xe9, 0xff, 0xff, //0x0000182d jmp LBB0_4 + //0x00001832 LBB0_317 + 0x48, 0x8b, 0x4d, 0xa8, //0x00001832 movq $-88(%rbp), %rcx + 0x4c, 0x8b, 0x49, 0x08, //0x00001836 movq $8(%rcx), %r9 + 0x4d, 0x8b, 0x06, //0x0000183a movq (%r14), %r8 + 0x4f, 0x8d, 0x14, 0x04, //0x0000183d leaq (%r12,%r8), %r10 + 0x4d, 0x29, 0xc1, //0x00001841 subq %r8, %r9 + 0x49, 0x83, 0xf9, 0x20, //0x00001844 cmpq $32, %r9 + 0x0f, 0x8c, 0xd7, 0x00, 0x00, 0x00, //0x00001848 jl LBB0_326 + 0x41, 0xbe, 0x20, 0x00, 0x00, 0x00, //0x0000184e movl $32, %r14d + 0x31, 0xf6, //0x00001854 xorl %esi, %esi + 0x45, 0x31, 0xdb, //0x00001856 xorl %r11d, %r11d + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00001859 .p2align 4, 0x90 + //0x00001860 LBB0_319 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x32, //0x00001860 movdqu (%r10,%rsi), %xmm3 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x32, 0x10, //0x00001866 movdqu $16(%r10,%rsi), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000186d movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00001871 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x00001875 pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x00001879 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000187d pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xdd, //0x00001881 pmovmskb %xmm5, %ebx + 0x48, 0xc1, 0xe3, 0x10, //0x00001885 shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x00001889 orq %rdi, %rbx + 0x66, 0x0f, 0x74, 0xd9, //0x0000188c pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001890 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x74, 0xe1, //0x00001894 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00001898 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe7, 0x10, //0x0000189c shlq $16, %rdi + 0x48, 0x09, 0xcf, //0x000018a0 orq %rcx, %rdi + 0x48, 0x89, 0xf9, //0x000018a3 movq %rdi, %rcx + 0x4c, 0x09, 0xd9, //0x000018a6 orq %r11, %rcx + 0x0f, 0x84, 0x41, 0x00, 0x00, 0x00, //0x000018a9 je LBB0_321 + 0x44, 0x89, 0xd9, //0x000018af movl %r11d, %ecx + 0xf7, 0xd1, //0x000018b2 notl %ecx + 0x21, 0xf9, //0x000018b4 andl %edi, %ecx + 0x44, 0x8d, 0x3c, 0x09, //0x000018b6 leal (%rcx,%rcx), %r15d + 0x45, 0x09, 0xdf, //0x000018ba orl %r11d, %r15d + 0x44, 0x89, 0xfa, //0x000018bd movl %r15d, %edx + 0xf7, 0xd2, //0x000018c0 notl %edx + 0x21, 0xfa, //0x000018c2 andl %edi, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000018c4 andl $-1431655766, %edx + 0x45, 0x31, 0xdb, //0x000018ca xorl %r11d, %r11d + 0x01, 0xca, //0x000018cd addl %ecx, %edx + 0x41, 0x0f, 0x92, 0xc3, //0x000018cf setb %r11b + 0x01, 0xd2, //0x000018d3 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000018d5 xorl $1431655765, %edx + 0x44, 0x21, 0xfa, //0x000018db andl %r15d, %edx + 0xf7, 0xd2, //0x000018de notl %edx + 0x21, 0xd3, //0x000018e0 andl %edx, %ebx + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000018e2 jmp LBB0_322 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000018e7 .p2align 4, 0x90 + //0x000018f0 LBB0_321 + 0x45, 0x31, 0xdb, //0x000018f0 xorl %r11d, %r11d + //0x000018f3 LBB0_322 + 0x48, 0x85, 0xdb, //0x000018f3 testq %rbx, %rbx + 0x0f, 0x85, 0xab, 0xe8, 0xff, 0xff, //0x000018f6 jne LBB0_1 + 0x48, 0x83, 0xc6, 0x20, //0x000018fc addq $32, %rsi + 0x4b, 0x8d, 0x0c, 0x31, //0x00001900 leaq (%r9,%r14), %rcx + 0x48, 0x83, 0xc1, 0xe0, //0x00001904 addq $-32, %rcx + 0x49, 0x83, 0xc6, 0xe0, //0x00001908 addq $-32, %r14 + 0x48, 0x83, 0xf9, 0x3f, //0x0000190c cmpq $63, %rcx + 0x0f, 0x8f, 0x4a, 0xff, 0xff, 0xff, //0x00001910 jg LBB0_319 + 0x4d, 0x85, 0xdb, //0x00001916 testq %r11, %r11 + 0x0f, 0x85, 0x44, 0x1e, 0x00, 0x00, //0x00001919 jne LBB0_587 + 0x49, 0x01, 0xf2, //0x0000191f addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00001922 subq %rsi, %r9 + //0x00001925 LBB0_326 + 0x4c, 0x8b, 0x75, 0xd0, //0x00001925 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00001929 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00001933 testq %r9, %r9 + 0x0f, 0x8f, 0x85, 0x1e, 0x00, 0x00, //0x00001936 jg LBB0_591 + 0xe9, 0x6e, 0x21, 0x00, 0x00, //0x0000193c jmp LBB0_650 + //0x00001941 LBB0_327 + 0x4c, 0x89, 0xca, //0x00001941 movq %r9, %rdx + 0x48, 0x29, 0xc2, //0x00001944 subq %rax, %rdx + 0x48, 0x83, 0xfa, 0x10, //0x00001947 cmpq $16, %rdx + 0x0f, 0x82, 0x36, 0x17, 0x00, 0x00, //0x0000194b jb LBB0_516 + 0x48, 0x89, 0xc7, //0x00001951 movq %rax, %rdi + 0x48, 0xf7, 0xdf, //0x00001954 negq %rdi + 0x4c, 0x8d, 0x40, 0x01, //0x00001957 leaq $1(%rax), %r8 + 0x48, 0x8d, 0x50, 0xff, //0x0000195b leaq $-1(%rax), %rdx + 0x49, 0x8d, 0x34, 0x04, //0x0000195f leaq (%r12,%rax), %rsi + 0x48, 0x83, 0xc6, 0xff, //0x00001963 addq $-1, %rsi + 0x48, 0x89, 0xc3, //0x00001967 movq %rax, %rbx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000196a .p2align 4, 0x90 + //0x00001970 LBB0_329 + 0xf3, 0x41, 0x0f, 0x6f, 0x1c, 0x1c, //0x00001970 movdqu (%r12,%rbx), %xmm3 + 0x66, 0x0f, 0x6f, 0xe3, //0x00001976 movdqa %xmm3, %xmm4 + 0x66, 0x41, 0x0f, 0x74, 0xe6, //0x0000197a pcmpeqb %xmm14, %xmm4 + 0x66, 0x41, 0x0f, 0xdb, 0xd9, //0x0000197f pand %xmm9, %xmm3 + 0x66, 0x0f, 0x74, 0xda, //0x00001984 pcmpeqb %xmm2, %xmm3 + 0x66, 0x0f, 0xeb, 0xdc, //0x00001988 por %xmm4, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000198c pmovmskb %xmm3, %ecx + 0x85, 0xc9, //0x00001990 testl %ecx, %ecx + 0x0f, 0x85, 0x8c, 0x09, 0x00, 0x00, //0x00001992 jne LBB0_394 + 0x48, 0x83, 0xc3, 0x10, //0x00001998 addq $16, %rbx + 0x49, 0x8d, 0x0c, 0x39, //0x0000199c leaq (%r9,%rdi), %rcx + 0x48, 0x83, 0xc1, 0xf0, //0x000019a0 addq $-16, %rcx + 0x48, 0x83, 0xc7, 0xf0, //0x000019a4 addq $-16, %rdi + 0x49, 0x83, 0xc0, 0x10, //0x000019a8 addq $16, %r8 + 0x48, 0x83, 0xc2, 0x10, //0x000019ac addq $16, %rdx + 0x48, 0x83, 0xc6, 0x10, //0x000019b0 addq $16, %rsi + 0x48, 0x83, 0xf9, 0x0f, //0x000019b4 cmpq $15, %rcx + 0x0f, 0x87, 0xb2, 0xff, 0xff, 0xff, //0x000019b8 ja LBB0_329 + 0x4c, 0x89, 0xe1, //0x000019be movq %r12, %rcx + 0x48, 0x29, 0xf9, //0x000019c1 subq %rdi, %rcx + 0x49, 0x01, 0xf9, //0x000019c4 addq %rdi, %r9 + 0x4c, 0x89, 0xca, //0x000019c7 movq %r9, %rdx + 0x48, 0x85, 0xd2, //0x000019ca testq %rdx, %rdx + 0x0f, 0x84, 0x4a, 0x00, 0x00, 0x00, //0x000019cd je LBB0_339 + //0x000019d3 LBB0_332 + 0x48, 0x8d, 0x34, 0x11, //0x000019d3 leaq (%rcx,%rdx), %rsi + //0x000019d7 LBB0_333 + 0x0f, 0xb6, 0x39, //0x000019d7 movzbl (%rcx), %edi + 0x48, 0x83, 0xff, 0x2c, //0x000019da cmpq $44, %rdi + 0x0f, 0x87, 0x14, 0x00, 0x00, 0x00, //0x000019de ja LBB0_335 + 0x48, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x000019e4 movabsq $17596481021440, %rbx + 0x48, 0x0f, 0xa3, 0xfb, //0x000019ee btq %rdi, %rbx + 0x0f, 0x82, 0x25, 0x00, 0x00, 0x00, //0x000019f2 jb LBB0_339 + //0x000019f8 LBB0_335 + 0x40, 0x80, 0xff, 0x5d, //0x000019f8 cmpb $93, %dil + 0x0f, 0x84, 0x1b, 0x00, 0x00, 0x00, //0x000019fc je LBB0_339 + 0x40, 0x80, 0xff, 0x7d, //0x00001a02 cmpb $125, %dil + 0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x00001a06 je LBB0_339 + 0x48, 0x83, 0xc1, 0x01, //0x00001a0c addq $1, %rcx + 0x48, 0x83, 0xc2, 0xff, //0x00001a10 addq $-1, %rdx + 0x0f, 0x85, 0xbd, 0xff, 0xff, 0xff, //0x00001a14 jne LBB0_333 + 0x48, 0x89, 0xf1, //0x00001a1a movq %rsi, %rcx + //0x00001a1d LBB0_339 + 0x4c, 0x29, 0xe1, //0x00001a1d subq %r12, %rcx + 0x49, 0x89, 0x0e, //0x00001a20 movq %rcx, (%r14) + 0xe9, 0x57, 0xf8, 0xff, 0xff, //0x00001a23 jmp LBB0_231 + //0x00001a28 LBB0_340 + 0x48, 0x8b, 0x55, 0xa8, //0x00001a28 movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001a2c movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001a30 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001a33 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001a36 movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001a3a addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001a3d xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001a40 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001a43 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001a46 xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001a49 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001a4d movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x4c, 0x01, 0x00, 0x00, //0x00001a51 jge LBB0_341 + //0x00001a57 LBB0_350 + 0x48, 0x85, 0xd2, //0x00001a57 testq %rdx, %rdx + 0x0f, 0x8e, 0x62, 0x22, 0x00, 0x00, //0x00001a5a jle LBB0_662 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001a60 movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001a64 pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001a68 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001a6d movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001a75 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001a7d movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001a85 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001a88 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001a8b andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001a91 cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001a97 jb LBB0_354 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001a9d cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x3b, 0x00, 0x00, 0x00, //0x00001aa2 jb LBB0_355 + 0x0f, 0x10, 0x1f, //0x00001aa8 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001aab movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001ab2 movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001ab7 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001abf addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001ac3 movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001ac7 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001acb leaq $-144(%rbp), %rdx + 0xe9, 0x17, 0x00, 0x00, 0x00, //0x00001ad2 jmp LBB0_356 + //0x00001ad7 LBB0_354 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001ad7 movdqa %xmm6, %xmm2 + 0x49, 0x89, 0xfc, //0x00001adb movq %rdi, %r12 + 0xe9, 0xc0, 0x00, 0x00, 0x00, //0x00001ade jmp LBB0_341 + //0x00001ae3 LBB0_355 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ae3 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001aea movq $-72(%rbp), %rsi + //0x00001aee LBB0_356 + 0x48, 0x83, 0xfe, 0x10, //0x00001aee cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001af2 jb LBB0_357 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001af8 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001afc movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001b00 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001b04 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001b08 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001b0c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001b10 jae LBB0_364 + //0x00001b16 LBB0_358 + 0x48, 0x83, 0xfe, 0x04, //0x00001b16 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001b1a jl LBB0_359 + //0x00001b20 LBB0_365 + 0x8b, 0x0f, //0x00001b20 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001b22 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001b24 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001b28 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001b2c addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001b30 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001b34 jae LBB0_360 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001b3a jmp LBB0_361 + //0x00001b3f LBB0_357 + 0x48, 0x83, 0xfe, 0x08, //0x00001b3f cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001b43 jb LBB0_358 + //0x00001b49 LBB0_364 + 0x48, 0x8b, 0x0f, //0x00001b49 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001b4c movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001b4f addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001b53 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001b57 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001b5b cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001b5f jge LBB0_365 + //0x00001b65 LBB0_359 + 0x48, 0x83, 0xfe, 0x02, //0x00001b65 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001b69 jb LBB0_361 + //0x00001b6f LBB0_360 + 0x0f, 0xb7, 0x0f, //0x00001b6f movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001b72 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001b75 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001b79 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001b7d addq $-2, %rsi + //0x00001b81 LBB0_361 + 0x48, 0x89, 0xf9, //0x00001b81 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b84 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x00001b8b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x00001b8e movdqa %xmm6, %xmm2 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00001b92 je LBB0_341 + 0x8a, 0x09, //0x00001b98 movb (%rcx), %cl + 0x88, 0x0a, //0x00001b9a movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00001b9c leaq $-176(%rbp), %r12 + //0x00001ba3 LBB0_341 + 0x66, 0x44, 0x0f, 0x6f, 0xc2, //0x00001ba3 movdqa %xmm2, %xmm8 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00001ba8 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x00001bae movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00001bb5 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x00001bbc movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001bc3 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bc7 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001bcb pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x00001bcf movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bd3 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001bd7 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001bdb movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001bdf pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001be3 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00001be7 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00001beb pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00001bef pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00001bf3 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00001bf7 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x00001bfb orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x00001bfe shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001c02 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00001c05 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00001c08 movq %rdx, %rcx + 0x66, 0x45, 0x0f, 0x6f, 0xee, //0x00001c0b movdqa %xmm14, %xmm13 + 0x4c, 0x09, 0xc9, //0x00001c10 orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x00001c13 jne LBB0_343 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00001c19 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x00001c20 xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x00001c23 jmp LBB0_344 + //0x00001c28 LBB0_343 + 0x4c, 0x89, 0xc9, //0x00001c28 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x00001c2b notq %rcx + 0x48, 0x21, 0xd1, //0x00001c2e andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x00001c31 leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x00001c35 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x00001c38 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x00001c3b notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00001c3e movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x00001c48 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x00001c4b andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x00001c4e xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x00001c51 addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x00001c54 setb %r9b + 0x48, 0x01, 0xd2, //0x00001c58 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001c5b movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x00001c65 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x00001c68 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x00001c6b notq %rdx + //0x00001c6e LBB0_344 + 0x66, 0x0f, 0x6f, 0xdd, //0x00001c6e movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c72 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c76 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x00001c7a shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x00001c7e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c82 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001c86 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00001c8a shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00001c8e orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x00001c91 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001c95 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001c99 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00001c9d shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00001ca1 orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x00001ca4 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00001ca8 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001cac pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x00001cb0 orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x00001cb3 andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00001cb6 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00001cbb pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x00001cc2 movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00001cc7 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00001cca movdqa %xmm4, %xmm3 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x89, 0xe3, 0xff, 0xff, //0x00001cce movdqu $-7287(%rip), %xmm11 /* LCPI0_6+0(%rip) */ + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cd7 pcmpeqb %xmm11, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x00001cdc pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00001ce1 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001ce5 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00001cea pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00001cee movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cf2 pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00001cf7 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x00001cfb movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdb, //0x00001cff pcmpeqb %xmm11, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00001d04 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x00001d08 shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x00001d0c shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00001d10 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00001d13 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00001d17 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x00001d1a orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x00001d1d movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00001d20 notq %r8 + 0x4d, 0x21, 0xc5, //0x00001d23 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d26 movdqa %xmm8, %xmm2 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00001d2b pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00001d30 pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x00001d34 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00001d39 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x00001d3d pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x00001d42 pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x00001d46 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x00001d4b pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x00001d50 shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x00001d54 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x00001d58 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x00001d5b shlq $16, %rsi + 0x48, 0x09, 0xce, //0x00001d5f orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x00001d62 orq %rsi, %rdx + 0x66, 0x45, 0x0f, 0x6f, 0xf5, //0x00001d65 movdqa %xmm13, %xmm14 + 0x4c, 0x21, 0xc2, //0x00001d6a andq %r8, %rdx + 0x0f, 0x84, 0xa4, 0x00, 0x00, 0x00, //0x00001d6d je LBB0_348 + 0xf3, 0x44, 0x0f, 0x6f, 0x1d, 0x74, 0xe3, 0xff, 0xff, //0x00001d73 movdqu $-7308(%rip), %xmm11 /* LCPI0_15+0(%rip) */ + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001d7c movdqa %xmm8, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xb6, 0xe2, 0xff, 0xff, //0x00001d81 movdqu $-7498(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001d8a movabsq $3689348814741910323, %r8 + 0xf3, 0x44, 0x0f, 0x6f, 0x05, 0xb3, 0xe2, 0xff, 0xff, //0x00001d94 movdqu $-7501(%rip), %xmm8 /* LCPI0_5+0(%rip) */ + 0x90, 0x90, 0x90, //0x00001d9d .p2align 4, 0x90 + //0x00001da0 LBB0_346 + 0x48, 0x8d, 0x7a, 0xff, //0x00001da0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x00001da4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x00001da7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x00001daa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x00001dad shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001db0 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x00001dba andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x00001dbd subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dc0 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00001dc3 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00001dc6 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x00001dca andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x00001dcd addq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00001dd0 movq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x04, //0x00001dd3 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00001dd7 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001dda movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00001de4 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001de7 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00001df1 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00001df5 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00001df9 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x00001dfc cmpq %r14, %rsi + 0x0f, 0x86, 0xe4, 0x04, 0x00, 0x00, //0x00001dff jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00001e05 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00001e09 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x00001e0c jne LBB0_346 + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00001e12 jmp LBB0_349 + //0x00001e17 LBB0_348 + 0x66, 0x41, 0x0f, 0x6f, 0xd0, //0x00001e17 movdqa %xmm8, %xmm2 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00001e1c movabsq $3689348814741910323, %r8 + //0x00001e26 LBB0_349 + 0x49, 0xc1, 0xfb, 0x3f, //0x00001e26 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00001e2a movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00001e2d shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00001e30 movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00001e3a andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00001e3d subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e40 movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x00001e43 andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00001e46 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00001e4a andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00001e4d addq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x00001e50 movq %r13, %rcx + 0x48, 0xc1, 0xe9, 0x04, //0x00001e53 shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x00001e57 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x00001e5a movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x00001e64 andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00001e67 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x00001e71 imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x00001e75 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x00001e79 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x00001e7c addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x00001e80 movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x00001e84 addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x00001e88 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x00001e8b cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001e8f movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x0a, 0xfd, 0xff, 0xff, //0x00001e93 jge LBB0_341 + 0xe9, 0xb9, 0xfb, 0xff, 0xff, //0x00001e99 jmp LBB0_350 + //0x00001e9e LBB0_366 + 0x48, 0x8b, 0x55, 0xa8, //0x00001e9e movq $-88(%rbp), %rdx + 0x48, 0x8b, 0x52, 0x08, //0x00001ea2 movq $8(%rdx), %rdx + 0x49, 0x8b, 0x0e, //0x00001ea6 movq (%r14), %rcx + 0x48, 0x29, 0xca, //0x00001ea9 subq %rcx, %rdx + 0x48, 0x89, 0x4d, 0xc0, //0x00001eac movq %rcx, $-64(%rbp) + 0x49, 0x01, 0xcc, //0x00001eb0 addq %rcx, %r12 + 0x45, 0x31, 0xc0, //0x00001eb3 xorl %r8d, %r8d + 0x45, 0x31, 0xc9, //0x00001eb6 xorl %r9d, %r9d + 0x45, 0x31, 0xd2, //0x00001eb9 xorl %r10d, %r10d + 0x45, 0x31, 0xf6, //0x00001ebc xorl %r14d, %r14d + 0x48, 0x83, 0xfa, 0x40, //0x00001ebf cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x00001ec3 movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x5b, 0x01, 0x00, 0x00, //0x00001ec7 jge LBB0_367 + //0x00001ecd LBB0_376 + 0x48, 0x85, 0xd2, //0x00001ecd testq %rdx, %rdx + 0x0f, 0x8e, 0xec, 0x1d, 0x00, 0x00, //0x00001ed0 jle LBB0_662 + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00001ed6 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00001edb movdqa %xmm2, %xmm6 + 0x66, 0x0f, 0xef, 0xd2, //0x00001edf pxor %xmm2, %xmm2 + 0xf3, 0x0f, 0x7f, 0x55, 0x80, //0x00001ee3 movdqu %xmm2, $-128(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001ee8 movdqu %xmm2, $-144(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x60, 0xff, 0xff, 0xff, //0x00001ef0 movdqu %xmm2, $-160(%rbp) + 0xf3, 0x0f, 0x7f, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001ef8 movdqu %xmm2, $-176(%rbp) + 0x4c, 0x89, 0xe7, //0x00001f00 movq %r12, %rdi + 0x44, 0x89, 0xe1, //0x00001f03 movl %r12d, %ecx + 0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x00001f06 andl $4095, %ecx + 0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00001f0c cmpl $4033, %ecx + 0x0f, 0x82, 0x3a, 0x00, 0x00, 0x00, //0x00001f12 jb LBB0_380 + 0x48, 0x83, 0x7d, 0xb8, 0x20, //0x00001f18 cmpq $32, $-72(%rbp) + 0x0f, 0x82, 0x40, 0x00, 0x00, 0x00, //0x00001f1d jb LBB0_381 + 0x0f, 0x10, 0x1f, //0x00001f23 movups (%rdi), %xmm3 + 0x0f, 0x11, 0x9d, 0x50, 0xff, 0xff, 0xff, //0x00001f26 movups %xmm3, $-176(%rbp) + 0xf3, 0x0f, 0x6f, 0x5f, 0x10, //0x00001f2d movdqu $16(%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x9d, 0x60, 0xff, 0xff, 0xff, //0x00001f32 movdqu %xmm3, $-160(%rbp) + 0x48, 0x83, 0xc7, 0x20, //0x00001f3a addq $32, %rdi + 0x48, 0x8b, 0x4d, 0xb8, //0x00001f3e movq $-72(%rbp), %rcx + 0x48, 0x8d, 0x71, 0xe0, //0x00001f42 leaq $-32(%rcx), %rsi + 0x48, 0x8d, 0x95, 0x70, 0xff, 0xff, 0xff, //0x00001f46 leaq $-144(%rbp), %rdx + 0xe9, 0x1c, 0x00, 0x00, 0x00, //0x00001f4d jmp LBB0_382 + //0x00001f52 LBB0_380 + 0x66, 0x0f, 0x6f, 0xd6, //0x00001f52 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00001f56 movdqa %xmm7, %xmm13 + 0x49, 0x89, 0xfc, //0x00001f5b movq %rdi, %r12 + 0xe9, 0xc5, 0x00, 0x00, 0x00, //0x00001f5e jmp LBB0_367 + //0x00001f63 LBB0_381 + 0x48, 0x8d, 0x95, 0x50, 0xff, 0xff, 0xff, //0x00001f63 leaq $-176(%rbp), %rdx + 0x48, 0x8b, 0x75, 0xb8, //0x00001f6a movq $-72(%rbp), %rsi + //0x00001f6e LBB0_382 + 0x48, 0x83, 0xfe, 0x10, //0x00001f6e cmpq $16, %rsi + 0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00001f72 jb LBB0_383 + 0xf3, 0x0f, 0x6f, 0x1f, //0x00001f78 movdqu (%rdi), %xmm3 + 0xf3, 0x0f, 0x7f, 0x1a, //0x00001f7c movdqu %xmm3, (%rdx) + 0x48, 0x83, 0xc7, 0x10, //0x00001f80 addq $16, %rdi + 0x48, 0x83, 0xc2, 0x10, //0x00001f84 addq $16, %rdx + 0x48, 0x83, 0xc6, 0xf0, //0x00001f88 addq $-16, %rsi + 0x48, 0x83, 0xfe, 0x08, //0x00001f8c cmpq $8, %rsi + 0x0f, 0x83, 0x33, 0x00, 0x00, 0x00, //0x00001f90 jae LBB0_390 + //0x00001f96 LBB0_384 + 0x48, 0x83, 0xfe, 0x04, //0x00001f96 cmpq $4, %rsi + 0x0f, 0x8c, 0x45, 0x00, 0x00, 0x00, //0x00001f9a jl LBB0_385 + //0x00001fa0 LBB0_391 + 0x8b, 0x0f, //0x00001fa0 movl (%rdi), %ecx + 0x89, 0x0a, //0x00001fa2 movl %ecx, (%rdx) + 0x48, 0x83, 0xc7, 0x04, //0x00001fa4 addq $4, %rdi + 0x48, 0x83, 0xc2, 0x04, //0x00001fa8 addq $4, %rdx + 0x48, 0x83, 0xc6, 0xfc, //0x00001fac addq $-4, %rsi + 0x48, 0x83, 0xfe, 0x02, //0x00001fb0 cmpq $2, %rsi + 0x0f, 0x83, 0x35, 0x00, 0x00, 0x00, //0x00001fb4 jae LBB0_386 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00001fba jmp LBB0_387 + //0x00001fbf LBB0_383 + 0x48, 0x83, 0xfe, 0x08, //0x00001fbf cmpq $8, %rsi + 0x0f, 0x82, 0xcd, 0xff, 0xff, 0xff, //0x00001fc3 jb LBB0_384 + //0x00001fc9 LBB0_390 + 0x48, 0x8b, 0x0f, //0x00001fc9 movq (%rdi), %rcx + 0x48, 0x89, 0x0a, //0x00001fcc movq %rcx, (%rdx) + 0x48, 0x83, 0xc7, 0x08, //0x00001fcf addq $8, %rdi + 0x48, 0x83, 0xc2, 0x08, //0x00001fd3 addq $8, %rdx + 0x48, 0x83, 0xc6, 0xf8, //0x00001fd7 addq $-8, %rsi + 0x48, 0x83, 0xfe, 0x04, //0x00001fdb cmpq $4, %rsi + 0x0f, 0x8d, 0xbb, 0xff, 0xff, 0xff, //0x00001fdf jge LBB0_391 + //0x00001fe5 LBB0_385 + 0x48, 0x83, 0xfe, 0x02, //0x00001fe5 cmpq $2, %rsi + 0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x00001fe9 jb LBB0_387 + //0x00001fef LBB0_386 + 0x0f, 0xb7, 0x0f, //0x00001fef movzwl (%rdi), %ecx + 0x66, 0x89, 0x0a, //0x00001ff2 movw %cx, (%rdx) + 0x48, 0x83, 0xc7, 0x02, //0x00001ff5 addq $2, %rdi + 0x48, 0x83, 0xc2, 0x02, //0x00001ff9 addq $2, %rdx + 0x48, 0x83, 0xc6, 0xfe, //0x00001ffd addq $-2, %rsi + //0x00002001 LBB0_387 + 0x48, 0x89, 0xf9, //0x00002001 movq %rdi, %rcx + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002004 leaq $-176(%rbp), %r12 + 0x48, 0x85, 0xf6, //0x0000200b testq %rsi, %rsi + 0x66, 0x0f, 0x6f, 0xd6, //0x0000200e movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00002012 movdqa %xmm7, %xmm13 + 0x0f, 0x84, 0x0b, 0x00, 0x00, 0x00, //0x00002017 je LBB0_367 + 0x8a, 0x09, //0x0000201d movb (%rcx), %cl + 0x88, 0x0a, //0x0000201f movb %cl, (%rdx) + 0x4c, 0x8d, 0xa5, 0x50, 0xff, 0xff, 0xff, //0x00002021 leaq $-176(%rbp), %r12 + //0x00002028 LBB0_367 + 0xf3, 0x41, 0x0f, 0x6f, 0x24, 0x24, //0x00002028 movdqu (%r12), %xmm4 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x24, 0x10, //0x0000202e movdqu $16(%r12), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x24, 0x20, //0x00002035 movdqu $32(%r12), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x6c, 0x24, 0x30, //0x0000203c movdqu $48(%r12), %xmm5 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002043 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002047 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x0000204b pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdf, //0x0000204f movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002053 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002057 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000205b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000205f pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002063 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x6f, 0xdd, //0x00002067 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000206b pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x0000206f pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe7, 0x30, //0x00002073 shlq $48, %rdi + 0x48, 0xc1, 0xe6, 0x20, //0x00002077 shlq $32, %rsi + 0x48, 0x09, 0xfe, //0x0000207b orq %rdi, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x0000207e shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x00002082 orq %rsi, %rcx + 0x48, 0x09, 0xca, //0x00002085 orq %rcx, %rdx + 0x48, 0x89, 0xd1, //0x00002088 movq %rdx, %rcx + 0x4c, 0x09, 0xc9, //0x0000208b orq %r9, %rcx + 0x0f, 0x85, 0x0f, 0x00, 0x00, 0x00, //0x0000208e jne LBB0_369 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002094 movq $-1, %rdx + 0x45, 0x31, 0xc9, //0x0000209b xorl %r9d, %r9d + 0xe9, 0x46, 0x00, 0x00, 0x00, //0x0000209e jmp LBB0_370 + //0x000020a3 LBB0_369 + 0x4c, 0x89, 0xc9, //0x000020a3 movq %r9, %rcx + 0x48, 0xf7, 0xd1, //0x000020a6 notq %rcx + 0x48, 0x21, 0xd1, //0x000020a9 andq %rdx, %rcx + 0x4c, 0x8d, 0x1c, 0x09, //0x000020ac leaq (%rcx,%rcx), %r11 + 0x4d, 0x09, 0xcb, //0x000020b0 orq %r9, %r11 + 0x4c, 0x89, 0xdf, //0x000020b3 movq %r11, %rdi + 0x48, 0xf7, 0xd7, //0x000020b6 notq %rdi + 0x48, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x000020b9 movabsq $-6148914691236517206, %rsi + 0x48, 0x21, 0xf2, //0x000020c3 andq %rsi, %rdx + 0x48, 0x21, 0xfa, //0x000020c6 andq %rdi, %rdx + 0x45, 0x31, 0xc9, //0x000020c9 xorl %r9d, %r9d + 0x48, 0x01, 0xca, //0x000020cc addq %rcx, %rdx + 0x41, 0x0f, 0x92, 0xc1, //0x000020cf setb %r9b + 0x48, 0x01, 0xd2, //0x000020d3 addq %rdx, %rdx + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x000020d6 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xca, //0x000020e0 xorq %rcx, %rdx + 0x4c, 0x21, 0xda, //0x000020e3 andq %r11, %rdx + 0x48, 0xf7, 0xd2, //0x000020e6 notq %rdx + //0x000020e9 LBB0_370 + 0x66, 0x0f, 0x6f, 0xdd, //0x000020e9 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020ed pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x000020f1 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x30, //0x000020f5 shlq $48, %rcx + 0x66, 0x0f, 0x6f, 0xde, //0x000020f9 movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000020fd pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002101 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x20, //0x00002105 shlq $32, %rsi + 0x48, 0x09, 0xce, //0x00002109 orq %rcx, %rsi + 0x66, 0x0f, 0x6f, 0xdf, //0x0000210c movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002110 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002114 pmovmskb %xmm3, %ecx + 0x48, 0xc1, 0xe1, 0x10, //0x00002118 shlq $16, %rcx + 0x48, 0x09, 0xf1, //0x0000211c orq %rsi, %rcx + 0x66, 0x0f, 0x6f, 0xdc, //0x0000211f movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002123 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002127 pmovmskb %xmm3, %esi + 0x48, 0x09, 0xce, //0x0000212b orq %rcx, %rsi + 0x48, 0x21, 0xd6, //0x0000212e andq %rdx, %rsi + 0x66, 0x48, 0x0f, 0x6e, 0xde, //0x00002131 movq %rsi, %xmm3 + 0x66, 0x41, 0x0f, 0x3a, 0x44, 0xda, 0x00, //0x00002136 pclmulqdq $0, %xmm10, %xmm3 + 0x66, 0x49, 0x0f, 0x7e, 0xdb, //0x0000213d movq %xmm3, %r11 + 0x4d, 0x31, 0xc3, //0x00002142 xorq %r8, %r11 + 0x66, 0x0f, 0x6f, 0xdc, //0x00002145 movdqa %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002149 pcmpeqb %xmm13, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000214e pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002153 movdqa %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002157 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x0000215c pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x00002160 movdqa %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002164 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xd3, //0x00002169 pmovmskb %xmm3, %edx + 0x66, 0x0f, 0x6f, 0xdd, //0x0000216d movdqa %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x74, 0xdd, //0x00002171 pcmpeqb %xmm13, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002176 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe6, 0x30, //0x0000217a shlq $48, %rsi + 0x48, 0xc1, 0xe2, 0x20, //0x0000217e shlq $32, %rdx + 0x48, 0x09, 0xf2, //0x00002182 orq %rsi, %rdx + 0x48, 0xc1, 0xe1, 0x10, //0x00002185 shlq $16, %rcx + 0x48, 0x09, 0xd1, //0x00002189 orq %rdx, %rcx + 0x49, 0x09, 0xcd, //0x0000218c orq %rcx, %r13 + 0x4d, 0x89, 0xd8, //0x0000218f movq %r11, %r8 + 0x49, 0xf7, 0xd0, //0x00002192 notq %r8 + 0x4d, 0x21, 0xc5, //0x00002195 andq %r8, %r13 + 0x66, 0x41, 0x0f, 0x74, 0xe0, //0x00002198 pcmpeqb %xmm8, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x0000219d pmovmskb %xmm4, %edx + 0x66, 0x41, 0x0f, 0x74, 0xf8, //0x000021a1 pcmpeqb %xmm8, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x000021a6 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x74, 0xf0, //0x000021aa pcmpeqb %xmm8, %xmm6 + 0x66, 0x0f, 0xd7, 0xce, //0x000021af pmovmskb %xmm6, %ecx + 0x66, 0x41, 0x0f, 0x74, 0xe8, //0x000021b3 pcmpeqb %xmm8, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xfd, //0x000021b8 pmovmskb %xmm5, %r15d + 0x49, 0xc1, 0xe7, 0x30, //0x000021bd shlq $48, %r15 + 0x48, 0xc1, 0xe1, 0x20, //0x000021c1 shlq $32, %rcx + 0x4c, 0x09, 0xf9, //0x000021c5 orq %r15, %rcx + 0x48, 0xc1, 0xe6, 0x10, //0x000021c8 shlq $16, %rsi + 0x48, 0x09, 0xce, //0x000021cc orq %rcx, %rsi + 0x48, 0x09, 0xf2, //0x000021cf orq %rsi, %rdx + 0x4c, 0x21, 0xc2, //0x000021d2 andq %r8, %rdx + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x000021d5 je LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x000021db movabsq $3689348814741910323, %r8 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000021e5 .p2align 4, 0x90 + //0x000021f0 LBB0_372 + 0x48, 0x8d, 0x7a, 0xff, //0x000021f0 leaq $-1(%rdx), %rdi + 0x48, 0x89, 0xf9, //0x000021f4 movq %rdi, %rcx + 0x4c, 0x21, 0xe9, //0x000021f7 andq %r13, %rcx + 0x48, 0x89, 0xce, //0x000021fa movq %rcx, %rsi + 0x48, 0xd1, 0xee, //0x000021fd shrq %rsi + 0x48, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002200 movabsq $6148914691236517205, %rbx + 0x48, 0x21, 0xde, //0x0000220a andq %rbx, %rsi + 0x48, 0x29, 0xf1, //0x0000220d subq %rsi, %rcx + 0x48, 0x89, 0xce, //0x00002210 movq %rcx, %rsi + 0x4c, 0x21, 0xc6, //0x00002213 andq %r8, %rsi + 0x48, 0xc1, 0xe9, 0x02, //0x00002216 shrq $2, %rcx + 0x4c, 0x21, 0xc1, //0x0000221a andq %r8, %rcx + 0x48, 0x01, 0xf1, //0x0000221d addq %rsi, %rcx 0x48, 0x89, 0xce, //0x00002220 movq %rcx, %rsi - 0x4c, 0x21, 0xc6, //0x00002223 andq %r8, %rsi - 0x48, 0xc1, 0xe9, 0x02, //0x00002226 shrq $2, %rcx - 0x4c, 0x21, 0xc1, //0x0000222a andq %r8, %rcx - 0x48, 0x01, 0xf1, //0x0000222d addq %rsi, %rcx - 0x48, 0x89, 0xce, //0x00002230 movq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x04, //0x00002233 shrq $4, %rsi - 0x48, 0x01, 0xce, //0x00002237 addq %rcx, %rsi - 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000223a movabsq $1085102592571150095, %rcx - 0x48, 0x21, 0xce, //0x00002244 andq %rcx, %rsi - 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002247 movabsq $72340172838076673, %rcx - 0x48, 0x0f, 0xaf, 0xf1, //0x00002251 imulq %rcx, %rsi - 0x48, 0xc1, 0xee, 0x38, //0x00002255 shrq $56, %rsi - 0x4c, 0x01, 0xce, //0x00002259 addq %r9, %rsi - 0x4c, 0x39, 0xf6, //0x0000225c cmpq %r14, %rsi - 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000225f jbe LBB0_382 - 0x49, 0x83, 0xc6, 0x01, //0x00002265 addq $1, %r14 - 0x48, 0x21, 0xfa, //0x00002269 andq %rdi, %rdx - 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000226c jne LBB0_362 - 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002272 jmp LBB0_365 - //0x00002277 LBB0_364 - 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002277 movabsq $3689348814741910323, %r8 - //0x00002281 LBB0_365 - 0x49, 0xc1, 0xfb, 0x3f, //0x00002281 sarq $63, %r11 - 0x4c, 0x89, 0xe9, //0x00002285 movq %r13, %rcx - 0x48, 0xd1, 0xe9, //0x00002288 shrq %rcx - 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000228b movabsq $6148914691236517205, %rdx - 0x48, 0x21, 0xd1, //0x00002295 andq %rdx, %rcx - 0x49, 0x29, 0xcd, //0x00002298 subq %rcx, %r13 + 0x48, 0xc1, 0xee, 0x04, //0x00002223 shrq $4, %rsi + 0x48, 0x01, 0xce, //0x00002227 addq %rcx, %rsi + 0x48, 0xb9, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x0000222a movabsq $1085102592571150095, %rcx + 0x48, 0x21, 0xce, //0x00002234 andq %rcx, %rsi + 0x48, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x00002237 movabsq $72340172838076673, %rcx + 0x48, 0x0f, 0xaf, 0xf1, //0x00002241 imulq %rcx, %rsi + 0x48, 0xc1, 0xee, 0x38, //0x00002245 shrq $56, %rsi + 0x4c, 0x01, 0xd6, //0x00002249 addq %r10, %rsi + 0x4c, 0x39, 0xf6, //0x0000224c cmpq %r14, %rsi + 0x0f, 0x86, 0x94, 0x00, 0x00, 0x00, //0x0000224f jbe LBB0_392 + 0x49, 0x83, 0xc6, 0x01, //0x00002255 addq $1, %r14 + 0x48, 0x21, 0xfa, //0x00002259 andq %rdi, %rdx + 0x0f, 0x85, 0x8e, 0xff, 0xff, 0xff, //0x0000225c jne LBB0_372 + 0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00002262 jmp LBB0_375 + //0x00002267 LBB0_374 + 0x49, 0xb8, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, //0x00002267 movabsq $3689348814741910323, %r8 + //0x00002271 LBB0_375 + 0x49, 0xc1, 0xfb, 0x3f, //0x00002271 sarq $63, %r11 + 0x4c, 0x89, 0xe9, //0x00002275 movq %r13, %rcx + 0x48, 0xd1, 0xe9, //0x00002278 shrq %rcx + 0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x0000227b movabsq $6148914691236517205, %rdx + 0x48, 0x21, 0xd1, //0x00002285 andq %rdx, %rcx + 0x49, 0x29, 0xcd, //0x00002288 subq %rcx, %r13 + 0x4c, 0x89, 0xe9, //0x0000228b movq %r13, %rcx + 0x4c, 0x21, 0xc1, //0x0000228e andq %r8, %rcx + 0x49, 0xc1, 0xed, 0x02, //0x00002291 shrq $2, %r13 + 0x4d, 0x21, 0xc5, //0x00002295 andq %r8, %r13 + 0x49, 0x01, 0xcd, //0x00002298 addq %rcx, %r13 0x4c, 0x89, 0xe9, //0x0000229b movq %r13, %rcx - 0x4c, 0x21, 0xc1, //0x0000229e andq %r8, %rcx - 0x49, 0xc1, 0xed, 0x02, //0x000022a1 shrq $2, %r13 - 0x4d, 0x21, 0xc5, //0x000022a5 andq %r8, %r13 - 0x49, 0x01, 0xcd, //0x000022a8 addq %rcx, %r13 - 0x4c, 0x89, 0xe9, //0x000022ab movq %r13, %rcx - 0x48, 0xc1, 0xe9, 0x04, //0x000022ae shrq $4, %rcx - 0x4c, 0x01, 0xe9, //0x000022b2 addq %r13, %rcx - 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022b5 movabsq $1085102592571150095, %rdx - 0x48, 0x21, 0xd1, //0x000022bf andq %rdx, %rcx - 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022c2 movabsq $72340172838076673, %rdx - 0x48, 0x0f, 0xaf, 0xca, //0x000022cc imulq %rdx, %rcx - 0x48, 0xc1, 0xe9, 0x38, //0x000022d0 shrq $56, %rcx - 0x49, 0x01, 0xc9, //0x000022d4 addq %rcx, %r9 - 0x49, 0x83, 0xc4, 0x40, //0x000022d7 addq $64, %r12 - 0x48, 0x8b, 0x55, 0xc0, //0x000022db movq $-64(%rbp), %rdx - 0x48, 0x83, 0xc2, 0xc0, //0x000022df addq $-64, %rdx - 0x4d, 0x89, 0xd8, //0x000022e3 movq %r11, %r8 - 0x48, 0x83, 0xfa, 0x40, //0x000022e6 cmpq $64, %rdx - 0x48, 0x89, 0x55, 0xc0, //0x000022ea movq %rdx, $-64(%rbp) - 0x0f, 0x8d, 0x4a, 0xfd, 0xff, 0xff, //0x000022ee jge LBB0_357 - 0xe9, 0xea, 0xfb, 0xff, 0xff, //0x000022f4 jmp LBB0_366 - //0x000022f9 LBB0_382 - 0x48, 0x8b, 0x75, 0xa8, //0x000022f9 movq $-88(%rbp), %rsi - 0x48, 0x8b, 0x4e, 0x08, //0x000022fd movq $8(%rsi), %rcx - 0x48, 0x0f, 0xbc, 0xd2, //0x00002301 bsfq %rdx, %rdx - 0x48, 0x2b, 0x55, 0xc0, //0x00002305 subq $-64(%rbp), %rdx - 0x48, 0x01, 0xd1, //0x00002309 addq %rdx, %rcx - 0x48, 0x83, 0xc1, 0x01, //0x0000230c addq $1, %rcx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002310 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x0e, //0x00002314 movq %rcx, (%r14) - 0x48, 0x8b, 0x56, 0x08, //0x00002317 movq $8(%rsi), %rdx - 0x48, 0x39, 0xd1, //0x0000231b cmpq %rdx, %rcx - 0x48, 0x0f, 0x47, 0xca, //0x0000231e cmovaq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002322 movq %rcx, (%r14) - 0x0f, 0x87, 0x1c, 0x17, 0x00, 0x00, //0x00002325 ja LBB0_638 - 0x48, 0x8b, 0x45, 0xb0, //0x0000232b movq $-80(%rbp), %rax - 0x48, 0x85, 0xc0, //0x0000232f testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002332 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002336 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x7a, 0xde, 0xff, 0xff, //0x00002340 jg LBB0_4 - 0xe9, 0xad, 0x16, 0x00, 0x00, //0x00002346 jmp LBB0_606 - //0x0000234b LBB0_605 - 0x66, 0x0f, 0xbc, 0xce, //0x0000234b bsfw %si, %cx - 0x0f, 0xb7, 0xc9, //0x0000234f movzwl %cx, %ecx - 0x48, 0x29, 0xd1, //0x00002352 subq %rdx, %rcx - 0x49, 0x89, 0x0e, //0x00002355 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002358 testq %rax, %rax - 0x0f, 0x8f, 0x5f, 0xde, 0xff, 0xff, //0x0000235b jg LBB0_4 - 0xe9, 0x92, 0x16, 0x00, 0x00, //0x00002361 jmp LBB0_606 - //0x00002366 LBB0_384 - 0x49, 0x8d, 0x57, 0xff, //0x00002366 leaq $-1(%r15), %rdx - 0x49, 0x39, 0xd0, //0x0000236a cmpq %rdx, %r8 - 0x49, 0xf7, 0xd7, //0x0000236d notq %r15 - 0x4d, 0x0f, 0x45, 0xfb, //0x00002370 cmovneq %r11, %r15 - 0x84, 0xc9, //0x00002374 testb %cl, %cl - 0x4d, 0x0f, 0x44, 0xfb, //0x00002376 cmoveq %r11, %r15 - 0x4d, 0x89, 0xfd, //0x0000237a movq %r15, %r13 - 0xe9, 0x60, 0xde, 0xff, 0xff, //0x0000237d jmp LBB0_2 - //0x00002382 LBB0_385 - 0x48, 0x89, 0xc6, //0x00002382 movq %rax, %rsi - 0x48, 0x29, 0xd6, //0x00002385 subq %rdx, %rsi - 0x48, 0x89, 0xd1, //0x00002388 movq %rdx, %rcx - 0x0f, 0x84, 0xb4, 0x18, 0x00, 0x00, //0x0000238b je LBB0_644 - 0x48, 0x83, 0xfe, 0x40, //0x00002391 cmpq $64, %rsi - 0x0f, 0x82, 0xeb, 0x0c, 0x00, 0x00, //0x00002395 jb LBB0_503 - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000239b movq $-1, $-56(%rbp) - 0x48, 0x89, 0xc8, //0x000023a3 movq %rcx, %rax - 0x31, 0xdb, //0x000023a6 xorl %ebx, %ebx - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023a8 .p2align 4, 0x90 - //0x000023b0 LBB0_388 - 0x48, 0x89, 0x75, 0xc0, //0x000023b0 movq %rsi, $-64(%rbp) - 0x49, 0x89, 0xd9, //0x000023b4 movq %rbx, %r9 - 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023b7 movdqu (%r12,%rax), %xmm5 - 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023bd movdqu $16(%r12,%rax), %xmm7 - 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023c4 movdqu $32(%r12,%rax), %xmm6 - 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023cb movdqu $48(%r12,%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xdd, //0x000023d2 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023d6 pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023da pmovmskb %xmm3, %r11d - 0x66, 0x0f, 0x6f, 0xdf, //0x000023df movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023e3 pcmpeqb %xmm0, %xmm3 - 0x66, 0x0f, 0xd7, 0xcb, //0x000023e7 pmovmskb %xmm3, %ecx - 0x66, 0x0f, 0x6f, 0xde, //0x000023eb movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023ef pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x000023f3 pmovmskb %xmm3, %r14d - 0x66, 0x0f, 0x6f, 0xdc, //0x000023f8 movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd8, //0x000023fc pcmpeqb %xmm0, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002400 pmovmskb %xmm3, %r15d - 0x66, 0x0f, 0x6f, 0xdd, //0x00002405 movdqa %xmm5, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002409 pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000240d pmovmskb %xmm3, %r13d - 0x66, 0x0f, 0x6f, 0xdf, //0x00002412 movdqa %xmm7, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002416 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xdb, //0x0000241a pmovmskb %xmm3, %ebx - 0x66, 0x0f, 0x6f, 0xde, //0x0000241e movdqa %xmm6, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x00002422 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002426 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x6f, 0xdc, //0x0000242a movdqa %xmm4, %xmm3 - 0x66, 0x0f, 0x74, 0xd9, //0x0000242e pcmpeqb %xmm1, %xmm3 - 0x66, 0x44, 0x0f, 0xd7, 0xd3, //0x00002432 pmovmskb %xmm3, %r10d - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002437 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdf, //0x0000243c pcmpgtb %xmm7, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002440 pcmpgtb %xmm10, %xmm7 - 0x66, 0x0f, 0xdb, 0xfb, //0x00002445 pand %xmm3, %xmm7 - 0x66, 0x0f, 0xd7, 0xff, //0x00002449 pmovmskb %xmm7, %edi - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000244d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xde, //0x00002452 pcmpgtb %xmm6, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002456 pcmpgtb %xmm10, %xmm6 - 0x66, 0x0f, 0xdb, 0xf3, //0x0000245b pand %xmm3, %xmm6 - 0x66, 0x0f, 0xd7, 0xd6, //0x0000245f pmovmskb %xmm6, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002463 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002468 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000246c pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002471 pand %xmm3, %xmm4 - 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002475 pmovmskb %xmm4, %r8d - 0x49, 0xc1, 0xe7, 0x30, //0x0000247a shlq $48, %r15 - 0x49, 0xc1, 0xe6, 0x20, //0x0000247e shlq $32, %r14 - 0x4d, 0x09, 0xfe, //0x00002482 orq %r15, %r14 - 0x48, 0xc1, 0xe1, 0x10, //0x00002485 shlq $16, %rcx - 0x4c, 0x09, 0xf1, //0x00002489 orq %r14, %rcx - 0x49, 0x09, 0xcb, //0x0000248c orq %rcx, %r11 - 0x49, 0xc1, 0xe2, 0x30, //0x0000248f shlq $48, %r10 - 0x48, 0xc1, 0xe6, 0x20, //0x00002493 shlq $32, %rsi - 0x4c, 0x09, 0xd6, //0x00002497 orq %r10, %rsi - 0x48, 0xc1, 0xe3, 0x10, //0x0000249a shlq $16, %rbx - 0x48, 0x09, 0xf3, //0x0000249e orq %rsi, %rbx - 0x49, 0xc1, 0xe0, 0x30, //0x000024a1 shlq $48, %r8 - 0x48, 0xc1, 0xe2, 0x20, //0x000024a5 shlq $32, %rdx - 0x4c, 0x09, 0xc2, //0x000024a9 orq %r8, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000024ac shlq $16, %rdi - 0x48, 0x09, 0xd7, //0x000024b0 orq %rdx, %rdi - 0x49, 0x09, 0xdd, //0x000024b3 orq %rbx, %r13 - 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024b6 jne LBB0_405 - 0x4d, 0x85, 0xc9, //0x000024bc testq %r9, %r9 - 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024bf jne LBB0_407 - 0x31, 0xdb, //0x000024c5 xorl %ebx, %ebx - 0x4c, 0x8b, 0x75, 0xd0, //0x000024c7 movq $-48(%rbp), %r14 - //0x000024cb LBB0_391 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024cb movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdd, //0x000024d0 pcmpgtb %xmm5, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024d4 pcmpgtb %xmm10, %xmm5 - 0x66, 0x0f, 0xdb, 0xeb, //0x000024d9 pand %xmm3, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000024dd pmovmskb %xmm5, %ecx - 0x48, 0x09, 0xcf, //0x000024e1 orq %rcx, %rdi - 0x4d, 0x85, 0xdb, //0x000024e4 testq %r11, %r11 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000024e7 movq $-72(%rbp), %r13 - 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x000024eb jne LBB0_409 - 0x48, 0x85, 0xff, //0x000024f1 testq %rdi, %rdi - 0x0f, 0x85, 0xaf, 0x16, 0x00, 0x00, //0x000024f4 jne LBB0_632 - 0x48, 0x8b, 0x75, 0xc0, //0x000024fa movq $-64(%rbp), %rsi - 0x48, 0x83, 0xc6, 0xc0, //0x000024fe addq $-64, %rsi - 0x48, 0x83, 0xc0, 0x40, //0x00002502 addq $64, %rax - 0x48, 0x83, 0xfe, 0x3f, //0x00002506 cmpq $63, %rsi - 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000250a ja LBB0_388 - 0xe9, 0xb7, 0x07, 0x00, 0x00, //0x00002510 jmp LBB0_394 - //0x00002515 LBB0_405 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002515 cmpq $-1, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x0000251a movq $-48(%rbp), %r14 - 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000251e jne LBB0_408 - 0x49, 0x0f, 0xbc, 0xcd, //0x00002524 bsfq %r13, %rcx - 0x48, 0x01, 0xc1, //0x00002528 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x0000252b movq %rcx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000252f jmp LBB0_408 - //0x00002534 LBB0_407 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002534 movq $-48(%rbp), %r14 - //0x00002538 LBB0_408 - 0x4c, 0x89, 0xc9, //0x00002538 movq %r9, %rcx - 0x48, 0xf7, 0xd1, //0x0000253b notq %rcx - 0x4c, 0x21, 0xe9, //0x0000253e andq %r13, %rcx - 0x48, 0x8d, 0x14, 0x09, //0x00002541 leaq (%rcx,%rcx), %rdx - 0x4c, 0x09, 0xca, //0x00002545 orq %r9, %rdx - 0x48, 0x89, 0xd6, //0x00002548 movq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x0000254b notq %rsi - 0x4c, 0x21, 0xee, //0x0000254e andq %r13, %rsi - 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002551 movabsq $-6148914691236517206, %rbx - 0x48, 0x21, 0xde, //0x0000255b andq %rbx, %rsi - 0x31, 0xdb, //0x0000255e xorl %ebx, %ebx - 0x48, 0x01, 0xce, //0x00002560 addq %rcx, %rsi - 0x0f, 0x92, 0xc3, //0x00002563 setb %bl - 0x48, 0x01, 0xf6, //0x00002566 addq %rsi, %rsi - 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002569 movabsq $6148914691236517205, %rcx - 0x48, 0x31, 0xce, //0x00002573 xorq %rcx, %rsi - 0x48, 0x21, 0xd6, //0x00002576 andq %rdx, %rsi - 0x48, 0xf7, 0xd6, //0x00002579 notq %rsi - 0x49, 0x21, 0xf3, //0x0000257c andq %rsi, %r11 - 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000257f jmp LBB0_391 - //0x00002584 LBB0_409 - 0x49, 0x0f, 0xbc, 0xcb, //0x00002584 bsfq %r11, %rcx - 0x48, 0x85, 0xff, //0x00002588 testq %rdi, %rdi - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x0000258b je LBB0_423 - 0x48, 0x0f, 0xbc, 0xd7, //0x00002591 bsfq %rdi, %rdx - 0xe9, 0x89, 0x00, 0x00, 0x00, //0x00002595 jmp LBB0_424 - //0x0000259a LBB0_411 - 0x41, 0x89, 0xcb, //0x0000259a movl %ecx, %r11d - 0x4d, 0x01, 0xc3, //0x0000259d addq %r8, %r11 - 0x49, 0x01, 0xdb, //0x000025a0 addq %rbx, %r11 - 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025a3 jmp LBB0_413 - //0x000025a8 LBB0_412 - 0x48, 0x01, 0xda, //0x000025a8 addq %rbx, %rdx - 0x49, 0x89, 0xd3, //0x000025ab movq %rdx, %r11 - //0x000025ae LBB0_413 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025ae movq $-1, %rbx - 0x4d, 0x85, 0xf6, //0x000025b5 testq %r14, %r14 - 0x0f, 0x84, 0x18, 0x16, 0x00, 0x00, //0x000025b8 je LBB0_636 - 0x4d, 0x85, 0xed, //0x000025be testq %r13, %r13 - 0x0f, 0x84, 0x0f, 0x16, 0x00, 0x00, //0x000025c1 je LBB0_636 - 0x4d, 0x85, 0xd2, //0x000025c7 testq %r10, %r10 - 0x0f, 0x84, 0x06, 0x16, 0x00, 0x00, //0x000025ca je LBB0_636 - 0x4d, 0x29, 0xc3, //0x000025d0 subq %r8, %r11 - 0x49, 0x8d, 0x4b, 0xff, //0x000025d3 leaq $-1(%r11), %rcx - 0x49, 0x39, 0xce, //0x000025d7 cmpq %rcx, %r14 - 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025da je LBB0_422 - 0x49, 0x39, 0xcd, //0x000025e0 cmpq %rcx, %r13 - 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x000025e3 je LBB0_422 - 0x49, 0x39, 0xca, //0x000025e9 cmpq %rcx, %r10 - 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000025ec je LBB0_422 - 0x4d, 0x85, 0xed, //0x000025f2 testq %r13, %r13 - 0x0f, 0x8e, 0x9a, 0x00, 0x00, 0x00, //0x000025f5 jle LBB0_430 - 0x49, 0x8d, 0x4d, 0xff, //0x000025fb leaq $-1(%r13), %rcx - 0x49, 0x39, 0xca, //0x000025ff cmpq %rcx, %r10 - 0x0f, 0x84, 0x8d, 0x00, 0x00, 0x00, //0x00002602 je LBB0_430 - 0x49, 0xf7, 0xd5, //0x00002608 notq %r13 - 0x4c, 0x89, 0xeb, //0x0000260b movq %r13, %rbx - 0xe9, 0x0c, 0x06, 0x00, 0x00, //0x0000260e jmp LBB0_468 - //0x00002613 LBB0_422 - 0x49, 0xf7, 0xdb, //0x00002613 negq %r11 - 0x4c, 0x89, 0xdb, //0x00002616 movq %r11, %rbx - 0xe9, 0x01, 0x06, 0x00, 0x00, //0x00002619 jmp LBB0_468 - //0x0000261e LBB0_423 - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000261e movl $64, %edx - //0x00002623 LBB0_424 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002623 movabsq $4294977024, %r11 - 0x48, 0x39, 0xca, //0x0000262d cmpq %rcx, %rdx - 0x0f, 0x82, 0xb6, 0x15, 0x00, 0x00, //0x00002630 jb LBB0_640 - 0x48, 0x01, 0xc8, //0x00002636 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002639 addq $1, %rax - //0x0000263d LBB0_426 - 0x48, 0x85, 0xc0, //0x0000263d testq %rax, %rax - 0x0f, 0x89, 0x49, 0xec, 0xff, 0xff, //0x00002640 jns LBB0_224 - 0xe9, 0x1a, 0x14, 0x00, 0x00, //0x00002646 jmp LBB0_615 - //0x0000264b LBB0_132 - 0x4d, 0x85, 0xdb, //0x0000264b testq %r11, %r11 - 0x0f, 0x85, 0x9e, 0x0a, 0x00, 0x00, //0x0000264e jne LBB0_508 - 0x49, 0x01, 0xd2, //0x00002654 addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x00002657 subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000265a movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000265e movabsq $4294977024, %r11 - //0x00002668 LBB0_134 - 0x4d, 0x85, 0xc9, //0x00002668 testq %r9, %r9 - 0x0f, 0x8f, 0xee, 0x0a, 0x00, 0x00, //0x0000266b jg LBB0_512 - 0xe9, 0xd1, 0x13, 0x00, 0x00, //0x00002671 jmp LBB0_638 - //0x00002676 LBB0_428 - 0x4c, 0x29, 0xe0, //0x00002676 subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00002679 addq %rdx, %rax - 0x49, 0x89, 0x06, //0x0000267c movq %rax, (%r14) - 0x48, 0x85, 0xf6, //0x0000267f testq %rsi, %rsi - 0x0f, 0x8f, 0x38, 0xdb, 0xff, 0xff, //0x00002682 jg LBB0_4 - 0xe9, 0xcc, 0x13, 0x00, 0x00, //0x00002688 jmp LBB0_614 - //0x0000268d LBB0_429 - 0x0f, 0xbc, 0xcb, //0x0000268d bsfl %ebx, %ecx - 0xe9, 0x8a, 0x03, 0x00, 0x00, //0x00002690 jmp LBB0_437 - //0x00002695 LBB0_430 - 0x4c, 0x89, 0xf1, //0x00002695 movq %r14, %rcx - 0x4c, 0x09, 0xd1, //0x00002698 orq %r10, %rcx - 0x0f, 0x99, 0xc2, //0x0000269b setns %dl - 0x0f, 0x88, 0xd4, 0x01, 0x00, 0x00, //0x0000269e js LBB0_434 - 0x4d, 0x39, 0xd6, //0x000026a4 cmpq %r10, %r14 - 0x0f, 0x8c, 0xcb, 0x01, 0x00, 0x00, //0x000026a7 jl LBB0_434 - 0x49, 0xf7, 0xd6, //0x000026ad notq %r14 - 0x4c, 0x89, 0xf3, //0x000026b0 movq %r14, %rbx - 0xe9, 0x67, 0x05, 0x00, 0x00, //0x000026b3 jmp LBB0_468 - //0x000026b8 LBB0_433 - 0x48, 0x8b, 0x75, 0xc0, //0x000026b8 movq $-64(%rbp), %rsi - 0x49, 0x01, 0xf4, //0x000026bc addq %rsi, %r12 - 0x49, 0x29, 0xcc, //0x000026bf subq %rcx, %r12 - 0x49, 0x29, 0xfc, //0x000026c2 subq %rdi, %r12 - 0x49, 0x83, 0xc4, 0xfe, //0x000026c5 addq $-2, %r12 - 0x4d, 0x89, 0xe5, //0x000026c9 movq %r12, %r13 - 0xe9, 0x11, 0xdb, 0xff, 0xff, //0x000026cc jmp LBB0_2 - //0x000026d1 LBB0_154 - 0x4d, 0x85, 0xdb, //0x000026d1 testq %r11, %r11 - 0x0f, 0x85, 0x66, 0x0c, 0x00, 0x00, //0x000026d4 jne LBB0_535 - 0x49, 0x01, 0xd2, //0x000026da addq %rdx, %r10 - 0x49, 0x29, 0xd1, //0x000026dd subq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000026e0 movq $-48(%rbp), %r14 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026e4 movabsq $4294977024, %r11 - //0x000026ee LBB0_156 - 0x4d, 0x85, 0xc9, //0x000026ee testq %r9, %r9 - 0x0f, 0x8f, 0xa7, 0x0c, 0x00, 0x00, //0x000026f1 jg LBB0_539 - 0xe9, 0x4b, 0x13, 0x00, 0x00, //0x000026f7 jmp LBB0_638 - //0x000026fc LBB0_50 - 0x4c, 0x01, 0xe0, //0x000026fc addq %r12, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000026ff movq $-48(%rbp), %r14 - 0x49, 0x83, 0xf9, 0x20, //0x00002703 cmpq $32, %r9 - 0x0f, 0x82, 0x9f, 0x07, 0x00, 0x00, //0x00002707 jb LBB0_485 - //0x0000270d LBB0_51 - 0xf3, 0x0f, 0x6f, 0x18, //0x0000270d movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002711 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002716 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000271a pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x0000271e pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002722 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002726 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000272a pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x0000272e pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002732 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002736 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x0000273a pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x0000273e shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002742 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002745 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002749 orq %rdi, %rsi - 0x0f, 0x85, 0x45, 0x0a, 0x00, 0x00, //0x0000274c jne LBB0_515 - 0x4d, 0x85, 0xc0, //0x00002752 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002755 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x5c, 0x0a, 0x00, 0x00, //0x0000275f jne LBB0_517 - 0x45, 0x31, 0xc0, //0x00002765 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002768 testq %rdx, %rdx - 0x0f, 0x84, 0xac, 0x0a, 0x00, 0x00, //0x0000276b je LBB0_519 - //0x00002771 LBB0_54 - 0x48, 0x0f, 0xbc, 0xca, //0x00002771 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002775 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002778 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000277b addq $1, %rax - 0xe9, 0x02, 0xeb, 0xff, 0xff, //0x0000277f jmp LBB0_223 - //0x00002784 LBB0_166 - 0x4c, 0x8b, 0x65, 0xc0, //0x00002784 movq $-64(%rbp), %r12 - 0x4c, 0x01, 0xe0, //0x00002788 addq %r12, %rax - 0x49, 0x83, 0xfe, 0x20, //0x0000278b cmpq $32, %r14 - 0x0f, 0x82, 0x41, 0x07, 0x00, 0x00, //0x0000278f jb LBB0_487 - //0x00002795 LBB0_167 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002795 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002799 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000279e movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027a2 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000027a6 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xeb, //0x000027aa movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000027ae pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xfd, //0x000027b2 pmovmskb %xmm5, %edi - 0x66, 0x0f, 0x6f, 0xec, //0x000027b6 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027ba pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000027be pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x000027c3 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x000027c7 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000027cb pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000027cf movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x000027d4 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000027d8 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x000027dd pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000027e1 pmovmskb %xmm3, %esi - 0x48, 0xc1, 0xe7, 0x10, //0x000027e5 shlq $16, %rdi - 0x48, 0x09, 0xf9, //0x000027e9 orq %rdi, %rcx - 0x48, 0xc1, 0xe2, 0x10, //0x000027ec shlq $16, %rdx - 0x48, 0xc1, 0xe6, 0x10, //0x000027f0 shlq $16, %rsi - 0x49, 0x09, 0xd1, //0x000027f4 orq %rdx, %r9 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000027f7 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x0c, 0x0b, 0x00, 0x00, //0x00002801 jne LBB0_533 - 0x48, 0x85, 0xdb, //0x00002807 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000280a movq $-72(%rbp), %r13 - 0x0f, 0x85, 0xda, 0x0b, 0x00, 0x00, //0x0000280e jne LBB0_542 - 0x31, 0xdb, //0x00002814 xorl %ebx, %ebx - //0x00002816 LBB0_170 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002816 movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x0000281b pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000281f pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002824 pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xd4, //0x00002828 pmovmskb %xmm4, %edx - 0x48, 0x09, 0xd6, //0x0000282c orq %rdx, %rsi - 0xba, 0x40, 0x00, 0x00, 0x00, //0x0000282f movl $64, %edx - 0xbf, 0x40, 0x00, 0x00, 0x00, //0x00002834 movl $64, %edi - 0x48, 0x85, 0xc9, //0x00002839 testq %rcx, %rcx - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x0000283c je LBB0_172 - 0x48, 0x0f, 0xbc, 0xf9, //0x00002842 bsfq %rcx, %rdi - //0x00002846 LBB0_172 - 0x48, 0x85, 0xf6, //0x00002846 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002849 je LBB0_174 - 0x48, 0x0f, 0xbc, 0xd6, //0x0000284f bsfq %rsi, %rdx - //0x00002853 LBB0_174 - 0x48, 0x85, 0xc9, //0x00002853 testq %rcx, %rcx - 0x0f, 0x84, 0xd2, 0x01, 0x00, 0x00, //0x00002856 je LBB0_438 - 0x48, 0x39, 0xfa, //0x0000285c cmpq %rdi, %rdx - 0x0f, 0x82, 0x06, 0x14, 0x00, 0x00, //0x0000285f jb LBB0_649 - 0x4c, 0x29, 0xe0, //0x00002865 subq %r12, %rax - 0x48, 0x01, 0xf8, //0x00002868 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000286b addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x0000286f movq $-48(%rbp), %r14 - 0xe9, 0x0e, 0xea, 0xff, 0xff, //0x00002873 jmp LBB0_223 - //0x00002878 LBB0_434 - 0x49, 0x8d, 0x4a, 0xff, //0x00002878 leaq $-1(%r10), %rcx - 0x49, 0x39, 0xce, //0x0000287c cmpq %rcx, %r14 - 0x49, 0xf7, 0xd2, //0x0000287f notq %r10 - 0x4d, 0x0f, 0x45, 0xd3, //0x00002882 cmovneq %r11, %r10 - 0x84, 0xd2, //0x00002886 testb %dl, %dl - 0x4d, 0x0f, 0x44, 0xd3, //0x00002888 cmoveq %r11, %r10 - 0x4c, 0x89, 0xd3, //0x0000288c movq %r10, %rbx - 0xe9, 0x8b, 0x03, 0x00, 0x00, //0x0000288f jmp LBB0_468 - //0x00002894 LBB0_435 - 0x89, 0xd1, //0x00002894 movl %edx, %ecx - 0xe9, 0x84, 0x01, 0x00, 0x00, //0x00002896 jmp LBB0_437 - //0x0000289b LBB0_73 - 0x4c, 0x01, 0xe0, //0x0000289b addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000289e cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000028a2 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0xc3, 0x06, 0x00, 0x00, //0x000028a6 jb LBB0_493 - //0x000028ac LBB0_74 - 0xf3, 0x0f, 0x6f, 0x18, //0x000028ac movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028b0 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x000028b5 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028b9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x000028bd pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x000028c1 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x000028c5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x000028c9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x000028cd pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x000028d1 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x000028d5 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x000028d9 pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x000028dd shlq $16, %rcx - 0x48, 0x09, 0xca, //0x000028e1 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x000028e4 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x000028e8 orq %rdi, %rsi - 0x0f, 0x85, 0x55, 0x0b, 0x00, 0x00, //0x000028eb jne LBB0_544 - 0x4d, 0x85, 0xc0, //0x000028f1 testq %r8, %r8 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000028f4 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x6c, 0x0b, 0x00, 0x00, //0x000028fe jne LBB0_546 - 0x45, 0x31, 0xc0, //0x00002904 xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002907 testq %rdx, %rdx - 0x0f, 0x84, 0xbc, 0x0b, 0x00, 0x00, //0x0000290a je LBB0_548 - //0x00002910 LBB0_77 - 0x48, 0x0f, 0xbc, 0xca, //0x00002910 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002914 subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002917 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000291a addq $1, %rax - 0xe9, 0xe0, 0xee, 0xff, 0xff, //0x0000291e jmp LBB0_304 - //0x00002923 LBB0_195 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002923 movq $-64(%rbp), %r8 - 0x4c, 0x01, 0xc0, //0x00002927 addq %r8, %rax - 0x49, 0x83, 0xf9, 0x20, //0x0000292a cmpq $32, %r9 - 0x0f, 0x82, 0x67, 0x06, 0x00, 0x00, //0x0000292e jb LBB0_495 - //0x00002934 LBB0_196 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002934 movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002938 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x0000293d movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002941 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002945 pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002949 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x0000294d pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002951 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002955 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002959 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xd5, //0x0000295d pmovmskb %xmm5, %r10d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002962 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002966 pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x0000296a pmovmskb %xmm5, %ecx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x0000296e movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002973 pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002977 pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x0000297c pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002980 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe2, 0x10, //0x00002984 shlq $16, %rdx - 0x48, 0x09, 0xd6, //0x00002988 orq %rdx, %rsi - 0x48, 0xc1, 0xe1, 0x10, //0x0000298b shlq $16, %rcx - 0x48, 0xc1, 0xe7, 0x10, //0x0000298f shlq $16, %rdi - 0x49, 0x09, 0xca, //0x00002993 orq %rcx, %r10 - 0x0f, 0x85, 0x26, 0x0c, 0x00, 0x00, //0x00002996 jne LBB0_562 - 0x4d, 0x85, 0xe4, //0x0000299c testq %r12, %r12 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000299f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029a3 movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8a, 0xd6, 0xff, 0xff, //0x000029ad movdqu $-10614(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x0f, 0x85, 0x2c, 0x0c, 0x00, 0x00, //0x000029b6 jne LBB0_564 - 0x45, 0x31, 0xe4, //0x000029bc xorl %r12d, %r12d - //0x000029bf LBB0_199 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000029bf movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x000029c4 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x000029c8 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x000029cd pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x000029d1 pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x000029d5 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x000029d8 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x000029dd movl $64, %edx - 0x48, 0x85, 0xf6, //0x000029e2 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029e5 je LBB0_201 - 0x48, 0x0f, 0xbc, 0xd6, //0x000029eb bsfq %rsi, %rdx - //0x000029ef LBB0_201 - 0x48, 0x85, 0xff, //0x000029ef testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x000029f2 je LBB0_203 - 0x48, 0x0f, 0xbc, 0xcf, //0x000029f8 bsfq %rdi, %rcx - //0x000029fc LBB0_203 - 0x48, 0x85, 0xf6, //0x000029fc testq %rsi, %rsi - 0x0f, 0x84, 0xf6, 0x00, 0x00, 0x00, //0x000029ff je LBB0_450 - 0x48, 0x39, 0xd1, //0x00002a05 cmpq %rdx, %rcx - 0x0f, 0x82, 0x6c, 0x12, 0x00, 0x00, //0x00002a08 jb LBB0_650 - 0x4c, 0x29, 0xc0, //0x00002a0e subq %r8, %rax - 0x48, 0x01, 0xd0, //0x00002a11 addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002a14 addq $1, %rax - 0xe9, 0xe6, 0xed, 0xff, 0xff, //0x00002a18 jmp LBB0_304 - //0x00002a1d LBB0_436 - 0x89, 0xd9, //0x00002a1d movl %ebx, %ecx - //0x00002a1f LBB0_437 - 0x49, 0xf7, 0xd5, //0x00002a1f notq %r13 - 0x49, 0x29, 0xcd, //0x00002a22 subq %rcx, %r13 - 0x48, 0x8b, 0x75, 0xc0, //0x00002a25 movq $-64(%rbp), %rsi - 0xe9, 0xb4, 0xd7, 0xff, 0xff, //0x00002a29 jmp LBB0_2 - //0x00002a2e LBB0_438 - 0x48, 0x85, 0xf6, //0x00002a2e testq %rsi, %rsi - 0x0f, 0x85, 0x34, 0x12, 0x00, 0x00, //0x00002a31 jne LBB0_649 - 0x48, 0x83, 0xc0, 0x20, //0x00002a37 addq $32, %rax - 0x49, 0x83, 0xc6, 0xe0, //0x00002a3b addq $-32, %r14 - 0x48, 0x85, 0xdb, //0x00002a3f testq %rbx, %rbx - 0x0f, 0x85, 0xa5, 0x04, 0x00, 0x00, //0x00002a42 jne LBB0_488 - //0x00002a48 LBB0_440 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002a48 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xf6, //0x00002a4c testq %r14, %r14 - 0x0f, 0x84, 0xda, 0x11, 0x00, 0x00, //0x00002a4f je LBB0_490 - //0x00002a55 LBB0_441 - 0x0f, 0xb6, 0x10, //0x00002a55 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002a58 cmpb $34, %dl - 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002a5b je LBB0_449 - 0x80, 0xfa, 0x5c, //0x00002a61 cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002a64 je LBB0_445 - 0x80, 0xfa, 0x1f, //0x00002a6a cmpb $31, %dl - 0x0f, 0x86, 0x12, 0x12, 0x00, 0x00, //0x00002a6d jbe LBB0_651 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002a73 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002a7a movl $1, %esi - 0x48, 0x01, 0xf0, //0x00002a7f addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002a82 addq %rdx, %r14 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002a85 jne LBB0_441 - 0xe9, 0x9f, 0x11, 0x00, 0x00, //0x00002a8b jmp LBB0_490 - //0x00002a90 LBB0_445 - 0x49, 0x83, 0xfe, 0x01, //0x00002a90 cmpq $1, %r14 - 0x0f, 0x84, 0x95, 0x11, 0x00, 0x00, //0x00002a94 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002a9a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002a9f movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002aa3 movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002aaa movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002aaf cmpq $-1, %rcx - 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002ab3 jne LBB0_448 - 0x48, 0x89, 0xc1, //0x00002ab9 movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x00002abc subq %r12, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002abf movq %rcx, $-56(%rbp) - //0x00002ac3 LBB0_448 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ac3 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002ad1 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002ad5 movdqa %xmm6, %xmm13 - 0x48, 0x01, 0xf0, //0x00002ada addq %rsi, %rax - 0x49, 0x01, 0xd6, //0x00002add addq %rdx, %r14 - 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002ae0 jne LBB0_441 - 0xe9, 0x44, 0x11, 0x00, 0x00, //0x00002ae6 jmp LBB0_490 - //0x00002aeb LBB0_449 - 0x4c, 0x29, 0xe0, //0x00002aeb subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002aee addq $1, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00002af2 movq $-48(%rbp), %r14 - 0xe9, 0x8b, 0xe7, 0xff, 0xff, //0x00002af6 jmp LBB0_223 - //0x00002afb LBB0_450 - 0x48, 0x85, 0xff, //0x00002afb testq %rdi, %rdi - 0x0f, 0x85, 0x76, 0x11, 0x00, 0x00, //0x00002afe jne LBB0_650 - 0x48, 0x83, 0xc0, 0x20, //0x00002b04 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00002b08 addq $-32, %r9 - 0x4d, 0x85, 0xe4, //0x00002b0c testq %r12, %r12 - 0x0f, 0x85, 0xa6, 0x04, 0x00, 0x00, //0x00002b0f jne LBB0_496 - //0x00002b15 LBB0_452 - 0x48, 0x8b, 0x4d, 0xc8, //0x00002b15 movq $-56(%rbp), %rcx - 0x4d, 0x85, 0xc9, //0x00002b19 testq %r9, %r9 - 0x0f, 0x84, 0x51, 0x0f, 0x00, 0x00, //0x00002b1c je LBB0_616 - //0x00002b22 LBB0_453 - 0x0f, 0xb6, 0x10, //0x00002b22 movzbl (%rax), %edx - 0x80, 0xfa, 0x22, //0x00002b25 cmpb $34, %dl - 0x0f, 0x84, 0xcc, 0x00, 0x00, 0x00, //0x00002b28 je LBB0_464 - 0x80, 0xfa, 0x5c, //0x00002b2e cmpb $92, %dl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b31 je LBB0_458 - 0x80, 0xfa, 0x1f, //0x00002b37 cmpb $31, %dl - 0x0f, 0x86, 0x51, 0x11, 0x00, 0x00, //0x00002b3a jbe LBB0_652 - 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b40 movq $-1, %rdx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b47 movl $1, %esi - //0x00002b4c LBB0_457 - 0x48, 0x01, 0xf0, //0x00002b4c addq %rsi, %rax - 0x49, 0x01, 0xd1, //0x00002b4f addq %rdx, %r9 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b52 jne LBB0_453 - 0xe9, 0x16, 0x0f, 0x00, 0x00, //0x00002b58 jmp LBB0_616 - //0x00002b5d LBB0_458 - 0x49, 0x83, 0xf9, 0x01, //0x00002b5d cmpq $1, %r9 - 0x0f, 0x84, 0xe7, 0x10, 0x00, 0x00, //0x00002b61 je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002b67 movdqa %xmm2, %xmm5 - 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002b6b movq $-2, %rdx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002b72 movl $2, %esi - 0x48, 0x83, 0xf9, 0xff, //0x00002b77 cmpq $-1, %rcx - 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002b7b je LBB0_461 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002b81 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002b85 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b89 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002b93 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa0, 0xd4, 0xff, 0xff, //0x00002b97 movdqu $-11104(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x00002ba0 movq $-64(%rbp), %r8 - 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002ba4 jmp LBB0_457 - //0x00002ba9 LBB0_461 - 0x48, 0x89, 0xc1, //0x00002ba9 movq %rax, %rcx - 0x4c, 0x8b, 0x45, 0xc0, //0x00002bac movq $-64(%rbp), %r8 - 0x4c, 0x29, 0xc1, //0x00002bb0 subq %r8, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00002bb3 movq %rcx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002bb7 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002bbb movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bbf movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x00002bc9 movdqa %xmm5, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x6a, 0xd4, 0xff, 0xff, //0x00002bcd movdqu $-11158(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002bd6 jmp LBB0_457 - //0x00002bdb LBB0_462 - 0x4c, 0x29, 0xe1, //0x00002bdb subq %r12, %rcx - 0x48, 0x01, 0xf1, //0x00002bde addq %rsi, %rcx - 0x49, 0x89, 0x0e, //0x00002be1 movq %rcx, (%r14) - 0x48, 0x85, 0xc0, //0x00002be4 testq %rax, %rax - 0x0f, 0x8f, 0xd3, 0xd5, 0xff, 0xff, //0x00002be7 jg LBB0_4 - 0xe9, 0x06, 0x0e, 0x00, 0x00, //0x00002bed jmp LBB0_606 - //0x00002bf2 LBB0_463 - 0x0f, 0xbc, 0xce, //0x00002bf2 bsfl %esi, %ecx - 0xe9, 0x1f, 0x00, 0x00, 0x00, //0x00002bf5 jmp LBB0_467 - //0x00002bfa LBB0_464 - 0x4c, 0x29, 0xc0, //0x00002bfa subq %r8, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002bfd addq $1, %rax - 0xe9, 0xfd, 0xeb, 0xff, 0xff, //0x00002c01 jmp LBB0_304 - //0x00002c06 LBB0_465 - 0x49, 0x01, 0xc4, //0x00002c06 addq %rax, %r12 - 0x49, 0x29, 0xd4, //0x00002c09 subq %rdx, %r12 - 0x48, 0xf7, 0xd3, //0x00002c0c notq %rbx - 0x4c, 0x01, 0xe3, //0x00002c0f addq %r12, %rbx - 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c12 jmp LBB0_468 - //0x00002c17 LBB0_466 - 0x89, 0xd1, //0x00002c17 movl %edx, %ecx - //0x00002c19 LBB0_467 - 0x48, 0xf7, 0xd3, //0x00002c19 notq %rbx - 0x48, 0x29, 0xcb, //0x00002c1c subq %rcx, %rbx - //0x00002c1f LBB0_468 - 0x48, 0x85, 0xdb, //0x00002c1f testq %rbx, %rbx - 0x0f, 0x88, 0xae, 0x0f, 0x00, 0x00, //0x00002c22 js LBB0_636 - //0x00002c28 LBB0_469 - 0x48, 0x01, 0xc3, //0x00002c28 addq %rax, %rbx - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c2b movq $-48(%rbp), %r14 - 0x49, 0x89, 0x1e, //0x00002c2f movq %rbx, (%r14) - 0x48, 0x85, 0xc0, //0x00002c32 testq %rax, %rax - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002c35 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c39 movabsq $4294977024, %r11 - 0x0f, 0x8f, 0x77, 0xd5, 0xff, 0xff, //0x00002c43 jg LBB0_4 - 0xe9, 0xaa, 0x0d, 0x00, 0x00, //0x00002c49 jmp LBB0_606 - //0x00002c4e LBB0_241 - 0x4c, 0x01, 0xe0, //0x00002c4e addq %r12, %rax - 0x49, 0x83, 0xf9, 0x20, //0x00002c51 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002c55 movq $-48(%rbp), %r14 - 0x0f, 0x82, 0x19, 0x04, 0x00, 0x00, //0x00002c59 jb LBB0_502 - //0x00002c5f LBB0_242 - 0xf3, 0x0f, 0x6f, 0x18, //0x00002c5f movdqu (%rax), %xmm3 - 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002c63 movdqu $16(%rax), %xmm4 - 0x66, 0x0f, 0x6f, 0xeb, //0x00002c68 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c6c pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002c70 pmovmskb %xmm5, %edx - 0x66, 0x0f, 0x6f, 0xec, //0x00002c74 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002c78 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002c7c pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x74, 0xd9, //0x00002c80 pcmpeqb %xmm1, %xmm3 - 0x66, 0x0f, 0xd7, 0xf3, //0x00002c84 pmovmskb %xmm3, %esi - 0x66, 0x0f, 0x74, 0xe1, //0x00002c88 pcmpeqb %xmm1, %xmm4 - 0x66, 0x0f, 0xd7, 0xfc, //0x00002c8c pmovmskb %xmm4, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002c90 shlq $16, %rcx - 0x48, 0x09, 0xca, //0x00002c94 orq %rcx, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002c97 shlq $16, %rdi - 0x48, 0x09, 0xfe, //0x00002c9b orq %rdi, %rsi - 0x0f, 0x85, 0x06, 0x0b, 0x00, 0x00, //0x00002c9e jne LBB0_578 - 0x4d, 0x85, 0xc0, //0x00002ca4 testq %r8, %r8 - 0x0f, 0x85, 0x27, 0x0b, 0x00, 0x00, //0x00002ca7 jne LBB0_580 - 0x45, 0x31, 0xc0, //0x00002cad xorl %r8d, %r8d - 0x48, 0x85, 0xd2, //0x00002cb0 testq %rdx, %rdx - 0x0f, 0x84, 0x77, 0x0b, 0x00, 0x00, //0x00002cb3 je LBB0_582 - //0x00002cb9 LBB0_245 - 0x48, 0x0f, 0xbc, 0xca, //0x00002cb9 bsfq %rdx, %rcx - 0x4c, 0x29, 0xe0, //0x00002cbd subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00002cc0 addq %rcx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002cc3 addq $1, %rax - 0xe9, 0x71, 0xf9, 0xff, 0xff, //0x00002cc7 jmp LBB0_426 - //0x00002ccc LBB0_394 - 0x4c, 0x01, 0xe0, //0x00002ccc addq %r12, %rax - 0x49, 0x89, 0xf2, //0x00002ccf movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00002cd2 cmpq $32, %rsi - 0x0f, 0x82, 0xc5, 0x03, 0x00, 0x00, //0x00002cd6 jb LBB0_504 - //0x00002cdc LBB0_395 - 0xf3, 0x0f, 0x6f, 0x20, //0x00002cdc movdqu (%rax), %xmm4 - 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002ce0 movdqu $16(%rax), %xmm3 - 0x66, 0x0f, 0x6f, 0xec, //0x00002ce5 movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002ce9 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xf5, //0x00002ced pmovmskb %xmm5, %esi - 0x66, 0x0f, 0x6f, 0xeb, //0x00002cf1 movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe8, //0x00002cf5 pcmpeqb %xmm0, %xmm5 - 0x66, 0x0f, 0xd7, 0xcd, //0x00002cf9 pmovmskb %xmm5, %ecx - 0x66, 0x0f, 0x6f, 0xec, //0x00002cfd movdqa %xmm4, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d01 pcmpeqb %xmm1, %xmm5 - 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d05 pmovmskb %xmm5, %r9d - 0x66, 0x0f, 0x6f, 0xeb, //0x00002d0a movdqa %xmm3, %xmm5 - 0x66, 0x0f, 0x74, 0xe9, //0x00002d0e pcmpeqb %xmm1, %xmm5 - 0x66, 0x0f, 0xd7, 0xd5, //0x00002d12 pmovmskb %xmm5, %edx - 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d16 movdqa %xmm12, %xmm5 - 0x66, 0x0f, 0x64, 0xeb, //0x00002d1b pcmpgtb %xmm3, %xmm5 - 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d1f pcmpgtb %xmm10, %xmm3 - 0x66, 0x0f, 0xdb, 0xdd, //0x00002d24 pand %xmm5, %xmm3 - 0x66, 0x0f, 0xd7, 0xfb, //0x00002d28 pmovmskb %xmm3, %edi - 0x48, 0xc1, 0xe1, 0x10, //0x00002d2c shlq $16, %rcx - 0x48, 0x09, 0xce, //0x00002d30 orq %rcx, %rsi - 0x48, 0xc1, 0xe2, 0x10, //0x00002d33 shlq $16, %rdx - 0x48, 0xc1, 0xe7, 0x10, //0x00002d37 shlq $16, %rdi - 0x49, 0x09, 0xd1, //0x00002d3b orq %rdx, %r9 - 0x0f, 0x85, 0xd0, 0x0b, 0x00, 0x00, //0x00002d3e jne LBB0_597 - 0x48, 0x85, 0xdb, //0x00002d44 testq %rbx, %rbx - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002d47 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d4b movabsq $4294977024, %r11 - 0x0f, 0x85, 0xe6, 0x0b, 0x00, 0x00, //0x00002d55 jne LBB0_599 - 0x31, 0xdb, //0x00002d5b xorl %ebx, %ebx - //0x00002d5d LBB0_398 - 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d5d movdqa %xmm12, %xmm3 - 0x66, 0x0f, 0x64, 0xdc, //0x00002d62 pcmpgtb %xmm4, %xmm3 - 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002d66 pcmpgtb %xmm10, %xmm4 - 0x66, 0x0f, 0xdb, 0xe3, //0x00002d6b pand %xmm3, %xmm4 - 0x66, 0x0f, 0xd7, 0xcc, //0x00002d6f pmovmskb %xmm4, %ecx - 0x48, 0x09, 0xcf, //0x00002d73 orq %rcx, %rdi - 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002d76 movl $64, %ecx - 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002d7b movl $64, %edx - 0x48, 0x85, 0xf6, //0x00002d80 testq %rsi, %rsi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d83 je LBB0_400 - 0x48, 0x0f, 0xbc, 0xd6, //0x00002d89 bsfq %rsi, %rdx - //0x00002d8d LBB0_400 - 0x48, 0x85, 0xff, //0x00002d8d testq %rdi, %rdi - 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002d90 je LBB0_402 - 0x48, 0x0f, 0xbc, 0xcf, //0x00002d96 bsfq %rdi, %rcx - //0x00002d9a LBB0_402 - 0x48, 0x85, 0xf6, //0x00002d9a testq %rsi, %rsi - 0x0f, 0x84, 0x53, 0x00, 0x00, 0x00, //0x00002d9d je LBB0_473 - 0x4c, 0x29, 0xe0, //0x00002da3 subq %r12, %rax - 0x48, 0x39, 0xd1, //0x00002da6 cmpq %rdx, %rcx - 0x0f, 0x82, 0xf7, 0x0e, 0x00, 0x00, //0x00002da9 jb LBB0_654 - 0x48, 0x01, 0xd0, //0x00002daf addq %rdx, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002db2 addq $1, %rax - 0xe9, 0x82, 0xf8, 0xff, 0xff, //0x00002db6 jmp LBB0_426 - //0x00002dbb LBB0_470 - 0x49, 0x8d, 0x04, 0x34, //0x00002dbb leaq (%r12,%rsi), %rax - 0x48, 0x85, 0xc9, //0x00002dbf testq %rcx, %rcx - 0x0f, 0x85, 0x4f, 0xde, 0xff, 0xff, //0x00002dc2 jne LBB0_140 - //0x00002dc8 LBB0_471 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dc8 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002dcd movdqa %xmm2, %xmm5 - 0xe9, 0x7f, 0xde, 0xff, 0xff, //0x00002dd1 jmp LBB0_146 - //0x00002dd6 LBB0_472 - 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002dd6 movq $-1, %r8 - 0x4c, 0x89, 0xf1, //0x00002ddd movq %r14, %rcx - 0x49, 0x89, 0xfa, //0x00002de0 movq %rdi, %r10 - 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002de3 movq $-1, %r15 - 0x49, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002dea movq $-1, %r9 - 0xe9, 0x19, 0xda, 0xff, 0xff, //0x00002df1 jmp LBB0_105 - //0x00002df6 LBB0_473 - 0x48, 0x85, 0xff, //0x00002df6 testq %rdi, %rdi - 0x0f, 0x85, 0xbc, 0x0e, 0x00, 0x00, //0x00002df9 jne LBB0_655 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002dff movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002e04 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00002e08 addq $32, %rax - 0x49, 0x83, 0xc2, 0xe0, //0x00002e0c addq $-32, %r10 - 0x48, 0x85, 0xdb, //0x00002e10 testq %rbx, %rbx - 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x00, //0x00002e13 jne LBB0_505 - //0x00002e19 LBB0_475 - 0x48, 0x8b, 0x55, 0xc8, //0x00002e19 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xd2, //0x00002e1d testq %r10, %r10 - 0x0f, 0x84, 0x28, 0x0e, 0x00, 0x00, //0x00002e20 je LBB0_507 - //0x00002e26 LBB0_476 - 0x0f, 0xb6, 0x08, //0x00002e26 movzbl (%rax), %ecx - 0x80, 0xf9, 0x22, //0x00002e29 cmpb $34, %cl - 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e2c je LBB0_491 - 0x80, 0xf9, 0x5c, //0x00002e32 cmpb $92, %cl - 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e35 je LBB0_481 - 0x80, 0xf9, 0x1f, //0x00002e3b cmpb $31, %cl - 0x0f, 0x86, 0x82, 0x0e, 0x00, 0x00, //0x00002e3e jbe LBB0_656 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e44 movq $-1, %rcx - 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e4b movl $1, %esi - //0x00002e50 LBB0_480 - 0x48, 0x01, 0xf0, //0x00002e50 addq %rsi, %rax - 0x49, 0x01, 0xca, //0x00002e53 addq %rcx, %r10 - 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e56 jne LBB0_476 - 0xe9, 0xed, 0x0d, 0x00, 0x00, //0x00002e5c jmp LBB0_507 - //0x00002e61 LBB0_481 - 0x49, 0x83, 0xfa, 0x01, //0x00002e61 cmpq $1, %r10 - 0x0f, 0x84, 0xe3, 0x0d, 0x00, 0x00, //0x00002e65 je LBB0_507 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002e6b movq $-2, %rcx - 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002e72 movl $2, %esi - 0x48, 0x83, 0xfa, 0xff, //0x00002e77 cmpq $-1, %rdx - 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002e7b jne LBB0_480 - 0x48, 0x89, 0xc2, //0x00002e81 movq %rax, %rdx - 0x4c, 0x29, 0xe2, //0x00002e84 subq %r12, %rdx - 0x48, 0x89, 0x55, 0xc8, //0x00002e87 movq %rdx, $-56(%rbp) - 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002e8b jmp LBB0_480 - //0x00002e90 LBB0_484 - 0x48, 0x8b, 0x45, 0xb0, //0x00002e90 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002e94 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002e97 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002e9f xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002ea2 cmpq $32, %r9 - 0x0f, 0x83, 0x61, 0xf8, 0xff, 0xff, //0x00002ea6 jae LBB0_51 - //0x00002eac LBB0_485 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eac movabsq $4294977024, %r11 - 0xe9, 0x6a, 0x03, 0x00, 0x00, //0x00002eb6 jmp LBB0_520 - //0x00002ebb LBB0_486 - 0x48, 0x8b, 0x45, 0xb0, //0x00002ebb movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002ebf addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ec2 movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00002eca xorl %ebx, %ebx - 0x49, 0x83, 0xfe, 0x20, //0x00002ecc cmpq $32, %r14 - 0x0f, 0x83, 0xbf, 0xf8, 0xff, 0xff, //0x00002ed0 jae LBB0_167 - //0x00002ed6 LBB0_487 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ed6 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002eda movabsq $4294977024, %r11 - 0x48, 0x85, 0xdb, //0x00002ee4 testq %rbx, %rbx - 0x0f, 0x84, 0x5b, 0xfb, 0xff, 0xff, //0x00002ee7 je LBB0_440 - //0x00002eed LBB0_488 - 0x4d, 0x85, 0xf6, //0x00002eed testq %r14, %r14 - 0x0f, 0x84, 0x39, 0x0d, 0x00, 0x00, //0x00002ef0 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ef6 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00002efb movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00002eff movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00002f02 notq %rcx - 0x48, 0x01, 0xc1, //0x00002f05 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002f08 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002f0c cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002f10 movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002f13 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002f17 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002f1b addq $1, %rax - 0x49, 0x83, 0xc6, 0xff, //0x00002f1f addq $-1, %r14 - 0x48, 0x89, 0x55, 0xc8, //0x00002f23 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f27 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f2b movabsq $4294977024, %r11 - 0x4d, 0x85, 0xf6, //0x00002f35 testq %r14, %r14 - 0x0f, 0x85, 0x17, 0xfb, 0xff, 0xff, //0x00002f38 jne LBB0_441 - 0xe9, 0xec, 0x0c, 0x00, 0x00, //0x00002f3e jmp LBB0_490 - //0x00002f43 LBB0_491 - 0x4c, 0x29, 0xe0, //0x00002f43 subq %r12, %rax - 0x48, 0x83, 0xc0, 0x01, //0x00002f46 addq $1, %rax - 0xe9, 0x94, 0x09, 0x00, 0x00, //0x00002f4a jmp LBB0_596 - //0x00002f4f LBB0_492 - 0x48, 0x8b, 0x45, 0xb0, //0x00002f4f movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x00002f53 addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f56 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00002f5e xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x00002f61 cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00002f65 movq $-48(%rbp), %r14 - 0x0f, 0x83, 0x3d, 0xf9, 0xff, 0xff, //0x00002f69 jae LBB0_74 - //0x00002f6f LBB0_493 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f6f movabsq $4294977024, %r11 - 0xe9, 0x56, 0x05, 0x00, 0x00, //0x00002f79 jmp LBB0_549 - //0x00002f7e LBB0_494 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002f7e movq $-64(%rbp), %r8 - 0x49, 0x8d, 0x04, 0x08, //0x00002f82 leaq (%r8,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f86 movq $-1, $-56(%rbp) - 0x45, 0x31, 0xe4, //0x00002f8e xorl %r12d, %r12d - 0x49, 0x83, 0xf9, 0x20, //0x00002f91 cmpq $32, %r9 - 0x0f, 0x83, 0x99, 0xf9, 0xff, 0xff, //0x00002f95 jae LBB0_196 - //0x00002f9b LBB0_495 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002f9b movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f9f movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x8e, 0xd0, 0xff, 0xff, //0x00002fa9 movdqu $-12146(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xe4, //0x00002fb2 testq %r12, %r12 - 0x0f, 0x84, 0x5a, 0xfb, 0xff, 0xff, //0x00002fb5 je LBB0_452 - //0x00002fbb LBB0_496 - 0x4d, 0x85, 0xc9, //0x00002fbb testq %r9, %r9 - 0x0f, 0x84, 0x8a, 0x0c, 0x00, 0x00, //0x00002fbe je LBB0_507 - 0x66, 0x0f, 0x6f, 0xea, //0x00002fc4 movdqa %xmm2, %xmm5 - 0x4c, 0x8b, 0x45, 0xc0, //0x00002fc8 movq $-64(%rbp), %r8 - 0x4c, 0x89, 0xc1, //0x00002fcc movq %r8, %rcx - 0x48, 0xf7, 0xd1, //0x00002fcf notq %rcx - 0x48, 0x01, 0xc1, //0x00002fd2 addq %rax, %rcx - 0x48, 0x8b, 0x75, 0xc8, //0x00002fd5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x00002fd9 cmpq $-1, %rsi - 0x48, 0x89, 0xf2, //0x00002fdd movq %rsi, %rdx - 0x48, 0x0f, 0x44, 0xd1, //0x00002fe0 cmoveq %rcx, %rdx - 0x48, 0x0f, 0x45, 0xce, //0x00002fe4 cmovneq %rsi, %rcx - 0x48, 0x83, 0xc0, 0x01, //0x00002fe8 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00002fec addq $-1, %r9 - 0x48, 0x89, 0x55, 0xc8, //0x00002ff0 movq %rdx, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00002ff4 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00002ff8 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ffc movabsq $4294977024, %r11 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x31, 0xd0, 0xff, 0xff, //0x00003006 movdqu $-12239(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4d, 0x85, 0xc9, //0x0000300f testq %r9, %r9 - 0x0f, 0x85, 0x0a, 0xfb, 0xff, 0xff, //0x00003012 jne LBB0_453 - 0xe9, 0x56, 0x0a, 0x00, 0x00, //0x00003018 jmp LBB0_616 - //0x0000301d LBB0_498 - 0x49, 0x8d, 0x0c, 0x04, //0x0000301d leaq (%r12,%rax), %rcx - 0x48, 0x85, 0xd2, //0x00003021 testq %rdx, %rdx - 0x0f, 0x85, 0x1d, 0xee, 0xff, 0xff, //0x00003024 jne LBB0_349 - //0x0000302a LBB0_499 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000302a movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000302f movdqa %xmm2, %xmm5 - 0xe9, 0x4d, 0xee, 0xff, 0xff, //0x00003033 jmp LBB0_355 - //0x00003038 LBB0_500 - 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003038 movq $-1, %r14 - 0x4c, 0x89, 0xc2, //0x0000303f movq %r8, %rdx - 0x49, 0x89, 0xf9, //0x00003042 movq %rdi, %r9 - 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00003045 movq $-1, %r10 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x0000304c movq $-1, %r13 - 0xe9, 0x2e, 0xe6, 0xff, 0xff, //0x00003053 jmp LBB0_275 - //0x00003058 LBB0_501 - 0x48, 0x8b, 0x45, 0xb0, //0x00003058 movq $-80(%rbp), %rax - 0x4c, 0x01, 0xe0, //0x0000305c addq %r12, %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000305f movq $-1, $-56(%rbp) - 0x45, 0x31, 0xc0, //0x00003067 xorl %r8d, %r8d - 0x49, 0x83, 0xf9, 0x20, //0x0000306a cmpq $32, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000306e movq $-48(%rbp), %r14 - 0x0f, 0x83, 0xe7, 0xfb, 0xff, 0xff, //0x00003072 jae LBB0_242 - //0x00003078 LBB0_502 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003078 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000307d movdqa %xmm2, %xmm5 - 0xe9, 0xbb, 0x07, 0x00, 0x00, //0x00003081 jmp LBB0_583 - //0x00003086 LBB0_503 - 0x49, 0x8d, 0x04, 0x0c, //0x00003086 leaq (%r12,%rcx), %rax - 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x0000308a movq $-1, $-56(%rbp) - 0x31, 0xdb, //0x00003092 xorl %ebx, %ebx - 0x49, 0x89, 0xf2, //0x00003094 movq %rsi, %r10 - 0x48, 0x83, 0xfe, 0x20, //0x00003097 cmpq $32, %rsi - 0x0f, 0x83, 0x3b, 0xfc, 0xff, 0xff, //0x0000309b jae LBB0_395 - //0x000030a1 LBB0_504 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030a1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000030a6 movdqa %xmm2, %xmm5 - 0x48, 0x85, 0xdb, //0x000030aa testq %rbx, %rbx - 0x0f, 0x84, 0x66, 0xfd, 0xff, 0xff, //0x000030ad je LBB0_475 - //0x000030b3 LBB0_505 - 0x4d, 0x85, 0xd2, //0x000030b3 testq %r10, %r10 - 0x0f, 0x84, 0x92, 0x0b, 0x00, 0x00, //0x000030b6 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000030bc movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000030bf notq %rdx - 0x48, 0x01, 0xc2, //0x000030c2 addq %rax, %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x000030c5 movq $-56(%rbp), %rsi - 0x48, 0x83, 0xfe, 0xff, //0x000030c9 cmpq $-1, %rsi - 0x48, 0x89, 0xf1, //0x000030cd movq %rsi, %rcx - 0x48, 0x0f, 0x44, 0xca, //0x000030d0 cmoveq %rdx, %rcx - 0x48, 0x0f, 0x45, 0xd6, //0x000030d4 cmovneq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000030d8 addq $1, %rax - 0x49, 0x83, 0xc2, 0xff, //0x000030dc addq $-1, %r10 - 0x48, 0x89, 0x4d, 0xc8, //0x000030e0 movq %rcx, $-56(%rbp) - 0x4d, 0x85, 0xd2, //0x000030e4 testq %r10, %r10 - 0x0f, 0x85, 0x39, 0xfd, 0xff, 0xff, //0x000030e7 jne LBB0_476 - 0xe9, 0x5c, 0x0b, 0x00, 0x00, //0x000030ed jmp LBB0_507 - //0x000030f2 LBB0_508 - 0x49, 0x39, 0xd1, //0x000030f2 cmpq %rdx, %r9 - 0x0f, 0x84, 0x4c, 0x09, 0x00, 0x00, //0x000030f5 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030fb movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003100 movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003104 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003107 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x0000310b notq %rdx - 0x49, 0x01, 0xd1, //0x0000310e addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003111 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003115 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003119 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003123 testq %r9, %r9 - 0x0f, 0x8f, 0x33, 0x00, 0x00, 0x00, //0x00003126 jg LBB0_512 - 0xe9, 0x16, 0x09, 0x00, 0x00, //0x0000312c jmp LBB0_638 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003131 .p2align 4, 0x90 - //0x00003140 LBB0_510 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00003140 movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003147 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000314c addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000314f movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003156 addq %rcx, %r9 - 0x0f, 0x8e, 0xe8, 0x08, 0x00, 0x00, //0x00003159 jle LBB0_638 - //0x0000315f LBB0_512 - 0x41, 0x0f, 0xb6, 0x02, //0x0000315f movzbl (%r10), %eax - 0x3c, 0x5c, //0x00003163 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003165 je LBB0_510 - 0x3c, 0x22, //0x0000316b cmpb $34, %al - 0x0f, 0x84, 0x1f, 0x06, 0x00, 0x00, //0x0000316d je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003173 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x0000317a movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000317f addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003182 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003189 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000318c jg LBB0_512 - 0xe9, 0xb0, 0x08, 0x00, 0x00, //0x00003192 jmp LBB0_638 - //0x00003197 LBB0_515 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003197 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000319c movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000031a0 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000031a5 jne LBB0_518 - 0x48, 0x89, 0xc1, //0x000031ab movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000031ae subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000031b1 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000031b5 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000031b8 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000031bc jmp LBB0_518 - //0x000031c1 LBB0_517 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031c1 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000031c6 movdqa %xmm2, %xmm5 - //0x000031ca LBB0_518 - 0x44, 0x89, 0xc1, //0x000031ca movl %r8d, %ecx - 0xf7, 0xd1, //0x000031cd notl %ecx - 0x21, 0xf1, //0x000031cf andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000031d1 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000031d5 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000031d8 notl %ebx - 0x21, 0xf3, //0x000031da andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000031dc andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000031e2 xorl %r8d, %r8d - 0x01, 0xcb, //0x000031e5 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000031e7 setb %r8b - 0x01, 0xdb, //0x000031eb addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x000031ed xorl $1431655765, %ebx - 0x21, 0xfb, //0x000031f3 andl %edi, %ebx - 0xf7, 0xd3, //0x000031f5 notl %ebx - 0x21, 0xda, //0x000031f7 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000031f9 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000031fd movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003201 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000320b movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000320f movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003214 testq %rdx, %rdx - 0x0f, 0x85, 0x54, 0xf5, 0xff, 0xff, //0x00003217 jne LBB0_54 - //0x0000321d LBB0_519 - 0x48, 0x83, 0xc0, 0x20, //0x0000321d addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x00003221 addq $-32, %r9 - //0x00003225 LBB0_520 - 0x4d, 0x85, 0xc0, //0x00003225 testq %r8, %r8 - 0x0f, 0x85, 0x18, 0x04, 0x00, 0x00, //0x00003228 jne LBB0_566 - 0x4c, 0x89, 0xe1, //0x0000322e movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x00003231 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x00003234 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x00003238 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000323b je LBB0_532 - //0x00003241 LBB0_522 - 0x48, 0x83, 0xc1, 0x01, //0x00003241 addq $1, %rcx - //0x00003245 LBB0_523 - 0x31, 0xf6, //0x00003245 xorl %esi, %esi - //0x00003247 LBB0_524 - 0x0f, 0xb6, 0x1c, 0x30, //0x00003247 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x0000324b cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000324e je LBB0_531 - 0x80, 0xfb, 0x5c, //0x00003254 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003257 je LBB0_529 - 0x48, 0x83, 0xc6, 0x01, //0x0000325d addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003261 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003264 jne LBB0_524 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000326a jmp LBB0_527 - //0x0000326f LBB0_529 - 0x49, 0x8d, 0x79, 0xff, //0x0000326f leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003273 cmpq %rsi, %rdi - 0x0f, 0x84, 0xb3, 0x09, 0x00, 0x00, //0x00003276 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000327c movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003281 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003285 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003289 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000328c cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x00003290 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003294 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003298 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000329c cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x000032a0 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000032a3 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x000032a7 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x000032aa subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x000032ad addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x000032b1 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x000032b5 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x000032b8 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x000032bb movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000032bf movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000032c3 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000032cd jne LBB0_523 - 0xe9, 0x3f, 0x07, 0x00, 0x00, //0x000032d3 jmp LBB0_610 - //0x000032d8 LBB0_531 - 0x48, 0x01, 0xf0, //0x000032d8 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000032db addq $1, %rax - //0x000032df LBB0_532 - 0x4c, 0x29, 0xe0, //0x000032df subq %r12, %rax - 0xe9, 0x9f, 0xdf, 0xff, 0xff, //0x000032e2 jmp LBB0_223 - //0x000032e7 LBB0_527 - 0x80, 0xfb, 0x22, //0x000032e7 cmpb $34, %bl - 0x0f, 0x85, 0x3f, 0x09, 0x00, 0x00, //0x000032ea jne LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032f0 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000032f5 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000032f9 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000032fc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003300 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003304 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000330e jmp LBB0_532 - //0x00003313 LBB0_533 - 0x48, 0x89, 0xdf, //0x00003313 movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003316 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000331b movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000331f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003324 jne LBB0_543 - 0x49, 0x89, 0xc0, //0x0000332a movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000332d subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003330 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003334 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003337 movq %rbx, $-56(%rbp) - 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000333b jmp LBB0_543 - //0x00003340 LBB0_535 - 0x49, 0x39, 0xd1, //0x00003340 cmpq %rdx, %r9 - 0x0f, 0x84, 0xfe, 0x06, 0x00, 0x00, //0x00003343 je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003349 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000334e movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x00003352 addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003355 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003359 notq %rdx - 0x49, 0x01, 0xd1, //0x0000335c addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000335f movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003363 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003367 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003371 testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003374 jg LBB0_539 - 0xe9, 0xc8, 0x06, 0x00, 0x00, //0x0000337a jmp LBB0_638 - //0x0000337f LBB0_537 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000337f movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003386 movl $2, %eax - 0x49, 0x01, 0xc2, //0x0000338b addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000338e movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003395 addq %rcx, %r9 - 0x0f, 0x8e, 0xa9, 0x06, 0x00, 0x00, //0x00003398 jle LBB0_638 - //0x0000339e LBB0_539 - 0x41, 0x0f, 0xb6, 0x02, //0x0000339e movzbl (%r10), %eax - 0x3c, 0x5c, //0x000033a2 cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000033a4 je LBB0_537 - 0x3c, 0x22, //0x000033aa cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000033ac je LBB0_607 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000033b2 movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000033b9 movl $1, %eax - 0x49, 0x01, 0xc2, //0x000033be addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033c1 movq $-1, %rax - 0x49, 0x01, 0xc9, //0x000033c8 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000033cb jg LBB0_539 - 0xe9, 0x71, 0x06, 0x00, 0x00, //0x000033d1 jmp LBB0_638 - //0x000033d6 LBB0_607 - 0x4d, 0x29, 0xe2, //0x000033d6 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x000033d9 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x000033dd movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x000033e0 testq %r8, %r8 - 0x0f, 0x8f, 0x33, 0xe4, 0xff, 0xff, //0x000033e3 jg LBB0_306 - 0xe9, 0x13, 0x06, 0x00, 0x00, //0x000033e9 jmp LBB0_608 - //0x000033ee LBB0_542 - 0x48, 0x89, 0xdf, //0x000033ee movq %rbx, %rdi - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000033f1 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x000033f6 movdqa %xmm2, %xmm6 - //0x000033fa LBB0_543 - 0x48, 0x89, 0xfb, //0x000033fa movq %rdi, %rbx - 0xf7, 0xd7, //0x000033fd notl %edi - 0x44, 0x21, 0xcf, //0x000033ff andl %r9d, %edi - 0x44, 0x8d, 0x04, 0x7b, //0x00003402 leal (%rbx,%rdi,2), %r8d - 0x8d, 0x14, 0x3f, //0x00003406 leal (%rdi,%rdi), %edx - 0xf7, 0xd2, //0x00003409 notl %edx - 0x44, 0x21, 0xca, //0x0000340b andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000340e andl $-1431655766, %edx - 0x31, 0xdb, //0x00003414 xorl %ebx, %ebx - 0x01, 0xfa, //0x00003416 addl %edi, %edx - 0x0f, 0x92, 0xc3, //0x00003418 setb %bl - 0x01, 0xd2, //0x0000341b addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000341d xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003423 andl %r8d, %edx - 0xf7, 0xd2, //0x00003426 notl %edx - 0x21, 0xd1, //0x00003428 andl %edx, %ecx - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000342a movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000342e movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003438 movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000343c movdqa %xmm7, %xmm13 - 0xe9, 0xd0, 0xf3, 0xff, 0xff, //0x00003441 jmp LBB0_170 - //0x00003446 LBB0_544 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003446 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000344b movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000344f cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003454 jne LBB0_547 - 0x48, 0x89, 0xc1, //0x0000345a movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x0000345d subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x00003460 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x00003464 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x00003467 movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000346b jmp LBB0_547 - //0x00003470 LBB0_546 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003470 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003475 movdqa %xmm2, %xmm5 - //0x00003479 LBB0_547 - 0x44, 0x89, 0xc1, //0x00003479 movl %r8d, %ecx - 0xf7, 0xd1, //0x0000347c notl %ecx - 0x21, 0xf1, //0x0000347e andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x00003480 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x00003484 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x00003487 notl %ebx - 0x21, 0xf3, //0x00003489 andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000348b andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x00003491 xorl %r8d, %r8d - 0x01, 0xcb, //0x00003494 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x00003496 setb %r8b - 0x01, 0xdb, //0x0000349a addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000349c xorl $1431655765, %ebx - 0x21, 0xfb, //0x000034a2 andl %edi, %ebx - 0xf7, 0xd3, //0x000034a4 notl %ebx - 0x21, 0xda, //0x000034a6 andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x000034a8 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000034ac movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000034b0 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000034ba movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000034be movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x000034c3 testq %rdx, %rdx - 0x0f, 0x85, 0x44, 0xf4, 0xff, 0xff, //0x000034c6 jne LBB0_77 - //0x000034cc LBB0_548 - 0x48, 0x83, 0xc0, 0x20, //0x000034cc addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x000034d0 addq $-32, %r9 - //0x000034d4 LBB0_549 - 0x4d, 0x85, 0xc0, //0x000034d4 testq %r8, %r8 - 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x000034d7 jne LBB0_568 - 0x4c, 0x89, 0xe1, //0x000034dd movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000034e0 notq %rcx - 0x48, 0x8b, 0x55, 0xc8, //0x000034e3 movq $-56(%rbp), %rdx - 0x4d, 0x85, 0xc9, //0x000034e7 testq %r9, %r9 - 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x000034ea je LBB0_561 - //0x000034f0 LBB0_551 - 0x48, 0x83, 0xc1, 0x01, //0x000034f0 addq $1, %rcx - //0x000034f4 LBB0_552 - 0x31, 0xf6, //0x000034f4 xorl %esi, %esi - //0x000034f6 LBB0_553 - 0x0f, 0xb6, 0x1c, 0x30, //0x000034f6 movzbl (%rax,%rsi), %ebx - 0x80, 0xfb, 0x22, //0x000034fa cmpb $34, %bl - 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000034fd je LBB0_560 - 0x80, 0xfb, 0x5c, //0x00003503 cmpb $92, %bl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003506 je LBB0_558 - 0x48, 0x83, 0xc6, 0x01, //0x0000350c addq $1, %rsi - 0x49, 0x39, 0xf1, //0x00003510 cmpq %rsi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003513 jne LBB0_553 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003519 jmp LBB0_556 - //0x0000351e LBB0_558 - 0x49, 0x8d, 0x79, 0xff, //0x0000351e leaq $-1(%r9), %rdi - 0x48, 0x39, 0xf7, //0x00003522 cmpq %rsi, %rdi - 0x0f, 0x84, 0x23, 0x07, 0x00, 0x00, //0x00003525 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000352b movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003530 movdqa %xmm2, %xmm5 - 0x48, 0x8d, 0x3c, 0x01, //0x00003534 leaq (%rcx,%rax), %rdi - 0x48, 0x01, 0xf7, //0x00003538 addq %rsi, %rdi - 0x48, 0x83, 0xfa, 0xff, //0x0000353b cmpq $-1, %rdx - 0x48, 0x8b, 0x5d, 0xc8, //0x0000353f movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xdf, //0x00003543 cmoveq %rdi, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003547 movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xd7, //0x0000354b cmoveq %rdi, %rdx - 0x48, 0x01, 0xf0, //0x0000354f addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x00003552 addq $2, %rax - 0x4c, 0x89, 0xcf, //0x00003556 movq %r9, %rdi - 0x48, 0x29, 0xf7, //0x00003559 subq %rsi, %rdi - 0x48, 0x83, 0xc7, 0xfe, //0x0000355c addq $-2, %rdi - 0x49, 0x83, 0xc1, 0xfe, //0x00003560 addq $-2, %r9 - 0x49, 0x39, 0xf1, //0x00003564 cmpq %rsi, %r9 - 0x49, 0x89, 0xf9, //0x00003567 movq %rdi, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000356a movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000356e movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003572 movabsq $4294977024, %r11 - 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000357c jne LBB0_552 - 0xe9, 0xec, 0x04, 0x00, 0x00, //0x00003582 jmp LBB0_616 - //0x00003587 LBB0_560 - 0x48, 0x01, 0xf0, //0x00003587 addq %rsi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x0000358a addq $1, %rax - //0x0000358e LBB0_561 - 0x4c, 0x29, 0xe0, //0x0000358e subq %r12, %rax - 0xe9, 0x6d, 0xe2, 0xff, 0xff, //0x00003591 jmp LBB0_304 - //0x00003596 LBB0_556 - 0x80, 0xfb, 0x22, //0x00003596 cmpb $34, %bl - 0x0f, 0x85, 0xaf, 0x06, 0x00, 0x00, //0x00003599 jne LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000359f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000035a4 movdqa %xmm2, %xmm5 - 0x4c, 0x01, 0xc8, //0x000035a8 addq %r9, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x000035ab movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000035af movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035b3 movabsq $4294977024, %r11 - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x000035bd jmp LBB0_561 - //0x000035c2 LBB0_562 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035c2 movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000035c6 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x000035cb jne LBB0_565 - 0x49, 0x89, 0xc0, //0x000035d1 movq %rax, %r8 - 0x4c, 0x2b, 0x45, 0xc0, //0x000035d4 subq $-64(%rbp), %r8 - 0x49, 0x0f, 0xbc, 0xda, //0x000035d8 bsfq %r10, %rbx - 0x4c, 0x01, 0xc3, //0x000035dc addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000035df movq %rbx, $-56(%rbp) - 0xe9, 0x04, 0x00, 0x00, 0x00, //0x000035e3 jmp LBB0_565 - //0x000035e8 LBB0_564 - 0x66, 0x0f, 0x6f, 0xf2, //0x000035e8 movdqa %xmm2, %xmm6 - //0x000035ec LBB0_565 - 0x44, 0x89, 0xe2, //0x000035ec movl %r12d, %edx - 0xf7, 0xd2, //0x000035ef notl %edx - 0x44, 0x21, 0xd2, //0x000035f1 andl %r10d, %edx - 0x45, 0x8d, 0x04, 0x54, //0x000035f4 leal (%r12,%rdx,2), %r8d - 0x8d, 0x0c, 0x12, //0x000035f8 leal (%rdx,%rdx), %ecx - 0xf7, 0xd1, //0x000035fb notl %ecx - 0x44, 0x21, 0xd1, //0x000035fd andl %r10d, %ecx - 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003600 andl $-1431655766, %ecx - 0x45, 0x31, 0xe4, //0x00003606 xorl %r12d, %r12d - 0x01, 0xd1, //0x00003609 addl %edx, %ecx - 0x41, 0x0f, 0x92, 0xc4, //0x0000360b setb %r12b - 0x01, 0xc9, //0x0000360f addl %ecx, %ecx - 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003611 xorl $1431655765, %ecx - 0x44, 0x21, 0xc1, //0x00003617 andl %r8d, %ecx - 0xf7, 0xd1, //0x0000361a notl %ecx - 0x21, 0xce, //0x0000361c andl %ecx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000361e movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003622 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003626 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x00003630 movdqa %xmm6, %xmm2 - 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x03, 0xca, 0xff, 0xff, //0x00003634 movdqu $-13821(%rip), %xmm13 /* LCPI0_4+0(%rip) */ - 0x4c, 0x8b, 0x45, 0xc0, //0x0000363d movq $-64(%rbp), %r8 - 0xe9, 0x79, 0xf3, 0xff, 0xff, //0x00003641 jmp LBB0_199 - //0x00003646 LBB0_566 - 0x4d, 0x85, 0xc9, //0x00003646 testq %r9, %r9 - 0x0f, 0x84, 0xe0, 0x05, 0x00, 0x00, //0x00003649 je LBB0_490 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000364f movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003654 movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x00003658 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x0000365b notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x0000365e leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x00003662 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x00003666 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x0000366a movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x0000366d cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x00003671 cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x00003675 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x00003679 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x0000367d movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003681 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003685 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003689 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x00003693 testq %r9, %r9 - 0x0f, 0x85, 0xa5, 0xfb, 0xff, 0xff, //0x00003696 jne LBB0_522 - 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x0000369c jmp LBB0_532 - //0x000036a1 LBB0_568 - 0x4d, 0x85, 0xc9, //0x000036a1 testq %r9, %r9 - 0x0f, 0x84, 0xa4, 0x05, 0x00, 0x00, //0x000036a4 je LBB0_507 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000036af movdqa %xmm2, %xmm5 - 0x4c, 0x89, 0xe1, //0x000036b3 movq %r12, %rcx - 0x48, 0xf7, 0xd1, //0x000036b6 notq %rcx - 0x48, 0x8d, 0x34, 0x08, //0x000036b9 leaq (%rax,%rcx), %rsi - 0x48, 0x8b, 0x7d, 0xc8, //0x000036bd movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000036c1 cmpq $-1, %rdi - 0x48, 0x89, 0xfa, //0x000036c5 movq %rdi, %rdx - 0x48, 0x0f, 0x44, 0xfe, //0x000036c8 cmoveq %rsi, %rdi - 0x48, 0x0f, 0x44, 0xd6, //0x000036cc cmoveq %rsi, %rdx - 0x48, 0x83, 0xc0, 0x01, //0x000036d0 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000036d4 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000036d8 movq %rdi, $-56(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x000036dc movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000036e0 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036e4 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x000036ee testq %r9, %r9 - 0x0f, 0x85, 0xf9, 0xfd, 0xff, 0xff, //0x000036f1 jne LBB0_551 - 0xe9, 0x92, 0xfe, 0xff, 0xff, //0x000036f7 jmp LBB0_561 - //0x000036fc LBB0_570 - 0x49, 0x39, 0xd1, //0x000036fc cmpq %rdx, %r9 - 0x0f, 0x84, 0x42, 0x03, 0x00, 0x00, //0x000036ff je LBB0_638 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003705 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x0000370a movdqa %xmm2, %xmm5 - 0x49, 0x01, 0xd2, //0x0000370e addq %rdx, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003711 addq $1, %r10 - 0x48, 0xf7, 0xd2, //0x00003715 notq %rdx - 0x49, 0x01, 0xd1, //0x00003718 addq %rdx, %r9 - 0x4c, 0x8b, 0x75, 0xd0, //0x0000371b movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x0000371f movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003723 movabsq $4294977024, %r11 - 0x4d, 0x85, 0xc9, //0x0000372d testq %r9, %r9 - 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003730 jg LBB0_574 - 0xe9, 0x0c, 0x03, 0x00, 0x00, //0x00003736 jmp LBB0_638 - //0x0000373b LBB0_572 - 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x0000373b movq $-2, %rcx - 0xb8, 0x02, 0x00, 0x00, 0x00, //0x00003742 movl $2, %eax - 0x49, 0x01, 0xc2, //0x00003747 addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000374a movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003751 addq %rcx, %r9 - 0x0f, 0x8e, 0xed, 0x02, 0x00, 0x00, //0x00003754 jle LBB0_638 - //0x0000375a LBB0_574 - 0x41, 0x0f, 0xb6, 0x02, //0x0000375a movzbl (%r10), %eax - 0x3c, 0x5c, //0x0000375e cmpb $92, %al - 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003760 je LBB0_572 - 0x3c, 0x22, //0x00003766 cmpb $34, %al - 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00003768 je LBB0_577 - 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x0000376e movq $-1, %rcx - 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003775 movl $1, %eax - 0x49, 0x01, 0xc2, //0x0000377a addq %rax, %r10 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x0000377d movq $-1, %rax - 0x49, 0x01, 0xc9, //0x00003784 addq %rcx, %r9 - 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x00003787 jg LBB0_574 - 0xe9, 0xb5, 0x02, 0x00, 0x00, //0x0000378d jmp LBB0_638 - //0x00003792 LBB0_577 - 0x4d, 0x29, 0xe2, //0x00003792 subq %r12, %r10 - 0x49, 0x83, 0xc2, 0x01, //0x00003795 addq $1, %r10 - 0x4d, 0x89, 0x16, //0x00003799 movq %r10, (%r14) - 0x4d, 0x85, 0xc0, //0x0000379c testq %r8, %r8 - 0x0f, 0x8f, 0x1b, 0xca, 0xff, 0xff, //0x0000379f jg LBB0_4 - 0xe9, 0x57, 0x02, 0x00, 0x00, //0x000037a5 jmp LBB0_608 - //0x000037aa LBB0_578 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037aa movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037af movdqa %xmm2, %xmm5 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000037b3 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000037b8 jne LBB0_581 - 0x48, 0x89, 0xc1, //0x000037be movq %rax, %rcx - 0x4c, 0x29, 0xe1, //0x000037c1 subq %r12, %rcx - 0x48, 0x0f, 0xbc, 0xfe, //0x000037c4 bsfq %rsi, %rdi - 0x48, 0x01, 0xcf, //0x000037c8 addq %rcx, %rdi - 0x48, 0x89, 0x7d, 0xc8, //0x000037cb movq %rdi, $-56(%rbp) - 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000037cf jmp LBB0_581 - //0x000037d4 LBB0_580 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000037d4 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x000037d9 movdqa %xmm2, %xmm5 - //0x000037dd LBB0_581 - 0x44, 0x89, 0xc1, //0x000037dd movl %r8d, %ecx - 0xf7, 0xd1, //0x000037e0 notl %ecx - 0x21, 0xf1, //0x000037e2 andl %esi, %ecx - 0x41, 0x8d, 0x3c, 0x48, //0x000037e4 leal (%r8,%rcx,2), %edi - 0x8d, 0x1c, 0x09, //0x000037e8 leal (%rcx,%rcx), %ebx - 0xf7, 0xd3, //0x000037eb notl %ebx - 0x21, 0xf3, //0x000037ed andl %esi, %ebx - 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x000037ef andl $-1431655766, %ebx - 0x45, 0x31, 0xc0, //0x000037f5 xorl %r8d, %r8d - 0x01, 0xcb, //0x000037f8 addl %ecx, %ebx - 0x41, 0x0f, 0x92, 0xc0, //0x000037fa setb %r8b - 0x01, 0xdb, //0x000037fe addl %ebx, %ebx - 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003800 xorl $1431655765, %ebx - 0x21, 0xfb, //0x00003806 andl %edi, %ebx - 0xf7, 0xd3, //0x00003808 notl %ebx - 0x21, 0xda, //0x0000380a andl %ebx, %edx - 0x4c, 0x8b, 0x75, 0xd0, //0x0000380c movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003810 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003814 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x0000381e movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003822 movdqa %xmm6, %xmm13 - 0x48, 0x85, 0xd2, //0x00003827 testq %rdx, %rdx - 0x0f, 0x85, 0x89, 0xf4, 0xff, 0xff, //0x0000382a jne LBB0_245 - //0x00003830 LBB0_582 - 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003830 movdqa %xmm13, %xmm6 - 0x66, 0x0f, 0x6f, 0xea, //0x00003835 movdqa %xmm2, %xmm5 - 0x48, 0x83, 0xc0, 0x20, //0x00003839 addq $32, %rax - 0x49, 0x83, 0xc1, 0xe0, //0x0000383d addq $-32, %r9 - //0x00003841 LBB0_583 - 0x4d, 0x85, 0xc0, //0x00003841 testq %r8, %r8 - 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x00003844 jne LBB0_601 - 0x4c, 0x89, 0xe2, //0x0000384a movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x0000384d notq %rdx - 0x48, 0x8b, 0x75, 0xc8, //0x00003850 movq $-56(%rbp), %rsi - 0x4d, 0x85, 0xc9, //0x00003854 testq %r9, %r9 - 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x00003857 je LBB0_595 - //0x0000385d LBB0_585 - 0x48, 0x83, 0xc2, 0x01, //0x0000385d addq $1, %rdx - //0x00003861 LBB0_586 - 0x31, 0xff, //0x00003861 xorl %edi, %edi - //0x00003863 LBB0_587 - 0x0f, 0xb6, 0x0c, 0x38, //0x00003863 movzbl (%rax,%rdi), %ecx - 0x80, 0xf9, 0x22, //0x00003867 cmpb $34, %cl - 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x0000386a je LBB0_594 - 0x80, 0xf9, 0x5c, //0x00003870 cmpb $92, %cl - 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003873 je LBB0_592 - 0x48, 0x83, 0xc7, 0x01, //0x00003879 addq $1, %rdi - 0x49, 0x39, 0xf9, //0x0000387d cmpq %rdi, %r9 - 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003880 jne LBB0_587 - 0xe9, 0x78, 0x00, 0x00, 0x00, //0x00003886 jmp LBB0_590 - //0x0000388b LBB0_592 - 0x49, 0x8d, 0x49, 0xff, //0x0000388b leaq $-1(%r9), %rcx - 0x48, 0x39, 0xf9, //0x0000388f cmpq %rdi, %rcx - 0x0f, 0x84, 0xb6, 0x03, 0x00, 0x00, //0x00003892 je LBB0_507 - 0x48, 0x8d, 0x0c, 0x02, //0x00003898 leaq (%rdx,%rax), %rcx - 0x48, 0x01, 0xf9, //0x0000389c addq %rdi, %rcx - 0x48, 0x83, 0xfe, 0xff, //0x0000389f cmpq $-1, %rsi - 0x48, 0x8b, 0x5d, 0xc8, //0x000038a3 movq $-56(%rbp), %rbx - 0x48, 0x0f, 0x44, 0xd9, //0x000038a7 cmoveq %rcx, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x000038ab movq %rbx, $-56(%rbp) - 0x48, 0x0f, 0x44, 0xf1, //0x000038af cmoveq %rcx, %rsi - 0x48, 0x01, 0xf8, //0x000038b3 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x02, //0x000038b6 addq $2, %rax - 0x4c, 0x89, 0xc9, //0x000038ba movq %r9, %rcx - 0x48, 0x29, 0xf9, //0x000038bd subq %rdi, %rcx - 0x48, 0x83, 0xc1, 0xfe, //0x000038c0 addq $-2, %rcx - 0x49, 0x83, 0xc1, 0xfe, //0x000038c4 addq $-2, %r9 - 0x49, 0x39, 0xf9, //0x000038c8 cmpq %rdi, %r9 - 0x49, 0x89, 0xc9, //0x000038cb movq %rcx, %r9 - 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x000038ce jne LBB0_586 - 0xe9, 0x75, 0x03, 0x00, 0x00, //0x000038d4 jmp LBB0_507 - //0x000038d9 LBB0_594 - 0x48, 0x01, 0xf8, //0x000038d9 addq %rdi, %rax - 0x48, 0x83, 0xc0, 0x01, //0x000038dc addq $1, %rax - //0x000038e0 LBB0_595 - 0x4c, 0x29, 0xe0, //0x000038e0 subq %r12, %rax - //0x000038e3 LBB0_596 - 0x4c, 0x8b, 0x75, 0xd0, //0x000038e3 movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x000038e7 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000038eb movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd5, //0x000038f5 movdqa %xmm5, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x000038f9 movdqa %xmm6, %xmm13 - 0xe9, 0x3a, 0xed, 0xff, 0xff, //0x000038fe jmp LBB0_426 - //0x00003903 LBB0_590 - 0x80, 0xf9, 0x22, //0x00003903 cmpb $34, %cl - 0x0f, 0x85, 0x42, 0x03, 0x00, 0x00, //0x00003906 jne LBB0_507 - 0x4c, 0x01, 0xc8, //0x0000390c addq %r9, %rax - 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000390f jmp LBB0_595 - //0x00003914 LBB0_597 - 0x48, 0x89, 0xd9, //0x00003914 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003917 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x0000391c movdqa %xmm2, %xmm6 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003920 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003925 jne LBB0_600 - 0x49, 0x89, 0xc0, //0x0000392b movq %rax, %r8 - 0x4d, 0x29, 0xe0, //0x0000392e subq %r12, %r8 - 0x49, 0x0f, 0xbc, 0xd9, //0x00003931 bsfq %r9, %rbx - 0x4c, 0x01, 0xc3, //0x00003935 addq %r8, %rbx - 0x48, 0x89, 0x5d, 0xc8, //0x00003938 movq %rbx, $-56(%rbp) - 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000393c jmp LBB0_600 - //0x00003941 LBB0_599 - 0x48, 0x89, 0xd9, //0x00003941 movq %rbx, %rcx - 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003944 movdqa %xmm13, %xmm7 - 0x66, 0x0f, 0x6f, 0xf2, //0x00003949 movdqa %xmm2, %xmm6 - //0x0000394d LBB0_600 - 0x48, 0x89, 0xcb, //0x0000394d movq %rcx, %rbx - 0xf7, 0xd1, //0x00003950 notl %ecx - 0x44, 0x21, 0xc9, //0x00003952 andl %r9d, %ecx - 0x44, 0x8d, 0x04, 0x4b, //0x00003955 leal (%rbx,%rcx,2), %r8d - 0x8d, 0x14, 0x09, //0x00003959 leal (%rcx,%rcx), %edx - 0xf7, 0xd2, //0x0000395c notl %edx - 0x44, 0x21, 0xca, //0x0000395e andl %r9d, %edx - 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003961 andl $-1431655766, %edx - 0x31, 0xdb, //0x00003967 xorl %ebx, %ebx - 0x01, 0xca, //0x00003969 addl %ecx, %edx - 0x0f, 0x92, 0xc3, //0x0000396b setb %bl - 0x01, 0xd2, //0x0000396e addl %edx, %edx - 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00003970 xorl $1431655765, %edx - 0x44, 0x21, 0xc2, //0x00003976 andl %r8d, %edx - 0xf7, 0xd2, //0x00003979 notl %edx - 0x21, 0xd6, //0x0000397b andl %edx, %esi - 0x4c, 0x8b, 0x75, 0xd0, //0x0000397d movq $-48(%rbp), %r14 - 0x4c, 0x8b, 0x6d, 0xb8, //0x00003981 movq $-72(%rbp), %r13 - 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003985 movabsq $4294977024, %r11 - 0x66, 0x0f, 0x6f, 0xd6, //0x0000398f movdqa %xmm6, %xmm2 - 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x00003993 movdqa %xmm7, %xmm13 - 0xe9, 0xc0, 0xf3, 0xff, 0xff, //0x00003998 jmp LBB0_398 - //0x0000399d LBB0_601 - 0x4d, 0x85, 0xc9, //0x0000399d testq %r9, %r9 - 0x0f, 0x84, 0xa8, 0x02, 0x00, 0x00, //0x000039a0 je LBB0_507 - 0x4c, 0x89, 0xe2, //0x000039a6 movq %r12, %rdx - 0x48, 0xf7, 0xd2, //0x000039a9 notq %rdx - 0x48, 0x8d, 0x0c, 0x10, //0x000039ac leaq (%rax,%rdx), %rcx - 0x48, 0x8b, 0x7d, 0xc8, //0x000039b0 movq $-56(%rbp), %rdi - 0x48, 0x83, 0xff, 0xff, //0x000039b4 cmpq $-1, %rdi - 0x48, 0x89, 0xfe, //0x000039b8 movq %rdi, %rsi - 0x48, 0x0f, 0x44, 0xf9, //0x000039bb cmoveq %rcx, %rdi - 0x48, 0x0f, 0x44, 0xf1, //0x000039bf cmoveq %rcx, %rsi - 0x48, 0x83, 0xc0, 0x01, //0x000039c3 addq $1, %rax - 0x49, 0x83, 0xc1, 0xff, //0x000039c7 addq $-1, %r9 - 0x48, 0x89, 0x7d, 0xc8, //0x000039cb movq %rdi, $-56(%rbp) - 0x4d, 0x85, 0xc9, //0x000039cf testq %r9, %r9 - 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x000039d2 jne LBB0_585 - 0xe9, 0x03, 0xff, 0xff, 0xff, //0x000039d8 jmp LBB0_595 - //0x000039dd LBB0_603 - 0x49, 0x89, 0x16, //0x000039dd movq %rdx, (%r14) - //0x000039e0 LBB0_604 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000039e0 movq $-1, %rax - 0xe9, 0x5b, 0x00, 0x00, 0x00, //0x000039e7 jmp LBB0_638 - //0x000039ec LBB0_634 - 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x000039ec movq $-7, %rax - 0xe9, 0x4f, 0x00, 0x00, 0x00, //0x000039f3 jmp LBB0_638 - //0x000039f8 LBB0_606 - 0x48, 0x83, 0xc0, 0xff, //0x000039f8 addq $-1, %rax - 0xe9, 0x46, 0x00, 0x00, 0x00, //0x000039fc jmp LBB0_638 - //0x00003a01 LBB0_608 - 0x49, 0x83, 0xc0, 0xff, //0x00003a01 addq $-1, %r8 - 0x4c, 0x89, 0xc0, //0x00003a05 movq %r8, %rax - 0xe9, 0x3a, 0x00, 0x00, 0x00, //0x00003a08 jmp LBB0_638 - //0x00003a0d LBB0_609 - 0x48, 0x83, 0xf8, 0xff, //0x00003a0d cmpq $-1, %rax - 0x0f, 0x85, 0x90, 0x00, 0x00, 0x00, //0x00003a11 jne LBB0_621 - //0x00003a17 LBB0_610 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a17 movq $-1, %rax - 0x48, 0x8b, 0x4d, 0xa0, //0x00003a1e movq $-96(%rbp), %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a22 movq %rcx, $-56(%rbp) - 0xe9, 0x7c, 0x00, 0x00, 0x00, //0x00003a26 jmp LBB0_621 - //0x00003a2b LBB0_611 - 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a2b movq $-1, %r13 - //0x00003a32 LBB0_612 - 0x4c, 0x29, 0xee, //0x00003a32 subq %r13, %rsi - 0x48, 0x83, 0xc6, 0xfe, //0x00003a35 addq $-2, %rsi - 0x48, 0x8b, 0x45, 0xd0, //0x00003a39 movq $-48(%rbp), %rax - 0x48, 0x89, 0x30, //0x00003a3d movq %rsi, (%rax) - //0x00003a40 LBB0_637 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a40 movq $-2, %rax - //0x00003a47 LBB0_638 - 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003a47 addq $136, %rsp - 0x5b, //0x00003a4e popq %rbx - 0x41, 0x5c, //0x00003a4f popq %r12 - 0x41, 0x5d, //0x00003a51 popq %r13 - 0x41, 0x5e, //0x00003a53 popq %r14 - 0x41, 0x5f, //0x00003a55 popq %r15 - 0x5d, //0x00003a57 popq %rbp - 0xc3, //0x00003a58 retq - //0x00003a59 LBB0_614 - 0x48, 0x83, 0xc6, 0xff, //0x00003a59 addq $-1, %rsi - 0x48, 0x89, 0xf0, //0x00003a5d movq %rsi, %rax - 0xe9, 0xe2, 0xff, 0xff, 0xff, //0x00003a60 jmp LBB0_638 - //0x00003a65 LBB0_615 - 0x48, 0x83, 0xf8, 0xff, //0x00003a65 cmpq $-1, %rax - 0x48, 0x8b, 0x55, 0xc8, //0x00003a69 movq $-56(%rbp), %rdx - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a6d jne LBB0_617 - //0x00003a73 LBB0_616 - 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a73 movq $-1, %rax - 0x48, 0x8b, 0x55, 0xa0, //0x00003a7a movq $-96(%rbp), %rdx - //0x00003a7e LBB0_617 - 0x49, 0x89, 0x16, //0x00003a7e movq %rdx, (%r14) - 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003a81 jmp LBB0_638 - //0x00003a86 LBB0_618 - 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003a86 cmpq $-1, $-56(%rbp) - 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003a8b jne LBB0_620 - 0x48, 0x0f, 0xbc, 0xce, //0x00003a91 bsfq %rsi, %rcx - 0x48, 0x01, 0xc1, //0x00003a95 addq %rax, %rcx - 0x48, 0x89, 0x4d, 0xc8, //0x00003a98 movq %rcx, $-56(%rbp) - //0x00003a9c LBB0_620 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003a9c movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003aa3 movq $-48(%rbp), %r14 - //0x00003aa7 LBB0_621 - 0x48, 0x8b, 0x4d, 0xc8, //0x00003aa7 movq $-56(%rbp), %rcx - 0x49, 0x89, 0x0e, //0x00003aab movq %rcx, (%r14) - 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003aae jmp LBB0_638 - //0x00003ab3 LBB0_622 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ab3 movq $-2, %rax - 0x80, 0xfa, 0x61, //0x00003aba cmpb $97, %dl - 0x0f, 0x85, 0x84, 0xff, 0xff, 0xff, //0x00003abd jne LBB0_638 - 0x48, 0x8d, 0x51, 0x01, //0x00003ac3 leaq $1(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003ac7 movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003aca cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003ad0 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x02, //0x00003ad6 leaq $2(%rcx), %rdx + 0x48, 0xc1, 0xe9, 0x04, //0x0000229e shrq $4, %rcx + 0x4c, 0x01, 0xe9, //0x000022a2 addq %r13, %rcx + 0x48, 0xba, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, //0x000022a5 movabsq $1085102592571150095, %rdx + 0x48, 0x21, 0xd1, //0x000022af andq %rdx, %rcx + 0x48, 0xba, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x000022b2 movabsq $72340172838076673, %rdx + 0x48, 0x0f, 0xaf, 0xca, //0x000022bc imulq %rdx, %rcx + 0x48, 0xc1, 0xe9, 0x38, //0x000022c0 shrq $56, %rcx + 0x49, 0x01, 0xca, //0x000022c4 addq %rcx, %r10 + 0x49, 0x83, 0xc4, 0x40, //0x000022c7 addq $64, %r12 + 0x48, 0x8b, 0x55, 0xb8, //0x000022cb movq $-72(%rbp), %rdx + 0x48, 0x83, 0xc2, 0xc0, //0x000022cf addq $-64, %rdx + 0x4d, 0x89, 0xd8, //0x000022d3 movq %r11, %r8 + 0x48, 0x83, 0xfa, 0x40, //0x000022d6 cmpq $64, %rdx + 0x48, 0x89, 0x55, 0xb8, //0x000022da movq %rdx, $-72(%rbp) + 0x0f, 0x8d, 0x44, 0xfd, 0xff, 0xff, //0x000022de jge LBB0_367 + 0xe9, 0xe4, 0xfb, 0xff, 0xff, //0x000022e4 jmp LBB0_376 + //0x000022e9 LBB0_392 + 0x48, 0x8b, 0x75, 0xa8, //0x000022e9 movq $-88(%rbp), %rsi + 0x48, 0x8b, 0x4e, 0x08, //0x000022ed movq $8(%rsi), %rcx + 0x48, 0x0f, 0xbc, 0xd2, //0x000022f1 bsfq %rdx, %rdx + 0x48, 0x2b, 0x55, 0xb8, //0x000022f5 subq $-72(%rbp), %rdx + 0x48, 0x01, 0xd1, //0x000022f9 addq %rdx, %rcx + 0x48, 0x83, 0xc1, 0x01, //0x000022fc addq $1, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002300 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x0e, //0x00002304 movq %rcx, (%r14) + 0x48, 0x8b, 0x56, 0x08, //0x00002307 movq $8(%rsi), %rdx + 0x48, 0x39, 0xd1, //0x0000230b cmpq %rdx, %rcx + 0x48, 0x0f, 0x47, 0xca, //0x0000230e cmovaq %rdx, %rcx + 0x49, 0x89, 0x0e, //0x00002312 movq %rcx, (%r14) + 0x0f, 0x87, 0x94, 0x17, 0x00, 0x00, //0x00002315 ja LBB0_650 + 0x48, 0x8b, 0x45, 0xc0, //0x0000231b movq $-64(%rbp), %rax + 0xe9, 0x48, 0x09, 0x00, 0x00, //0x0000231f jmp LBB0_488 + //0x00002324 LBB0_394 + 0x66, 0x0f, 0xbc, 0xc9, //0x00002324 bsfw %cx, %cx + 0x0f, 0xb7, 0xd9, //0x00002328 movzwl %cx, %ebx + 0x48, 0x89, 0xd9, //0x0000232b movq %rbx, %rcx + 0x48, 0x29, 0xf9, //0x0000232e subq %rdi, %rcx + 0x49, 0x89, 0x0e, //0x00002331 movq %rcx, (%r14) + 0x48, 0x85, 0xc9, //0x00002334 testq %rcx, %rcx + 0x0f, 0x8e, 0x42, 0xef, 0xff, 0xff, //0x00002337 jle LBB0_231 + 0x49, 0x01, 0xd8, //0x0000233d addq %rbx, %r8 + 0x48, 0x01, 0xda, //0x00002340 addq %rbx, %rdx + 0x48, 0x01, 0xde, //0x00002343 addq %rbx, %rsi + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00002346 .p2align 4, 0x90 + //0x00002350 LBB0_396 + 0x0f, 0xb6, 0x0e, //0x00002350 movzbl (%rsi), %ecx + 0x48, 0x83, 0xf9, 0x20, //0x00002353 cmpq $32, %rcx + 0x0f, 0x87, 0x22, 0xef, 0xff, 0xff, //0x00002357 ja LBB0_231 + 0x49, 0x0f, 0xa3, 0xcb, //0x0000235d btq %rcx, %r11 + 0x0f, 0x83, 0x18, 0xef, 0xff, 0xff, //0x00002361 jae LBB0_231 + 0x49, 0x89, 0x16, //0x00002367 movq %rdx, (%r14) + 0x49, 0x83, 0xc0, 0xff, //0x0000236a addq $-1, %r8 + 0x48, 0x83, 0xc2, 0xff, //0x0000236e addq $-1, %rdx + 0x48, 0x83, 0xc6, 0xff, //0x00002372 addq $-1, %rsi + 0x49, 0x83, 0xf8, 0x01, //0x00002376 cmpq $1, %r8 + 0x0f, 0x8f, 0xd0, 0xff, 0xff, 0xff, //0x0000237a jg LBB0_396 + 0xe9, 0xfa, 0xee, 0xff, 0xff, //0x00002380 jmp LBB0_231 + //0x00002385 LBB0_399 + 0x49, 0x8d, 0x4f, 0xff, //0x00002385 leaq $-1(%r15), %rcx + 0x49, 0x39, 0xc8, //0x00002389 cmpq %rcx, %r8 + 0x49, 0xf7, 0xd7, //0x0000238c notq %r15 + 0x4d, 0x0f, 0x45, 0xf9, //0x0000238f cmovneq %r9, %r15 + 0x84, 0xd2, //0x00002393 testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xf9, //0x00002395 cmoveq %r9, %r15 + 0x4d, 0x89, 0xfd, //0x00002399 movq %r15, %r13 + 0xe9, 0x53, 0x03, 0x00, 0x00, //0x0000239c jmp LBB0_451 + //0x000023a1 LBB0_400 + 0x48, 0x89, 0xc6, //0x000023a1 movq %rax, %rsi + 0x48, 0x29, 0xd6, //0x000023a4 subq %rdx, %rsi + 0x0f, 0x84, 0xf6, 0x18, 0x00, 0x00, //0x000023a7 je LBB0_658 + 0x48, 0x83, 0xfe, 0x40, //0x000023ad cmpq $64, %rsi + 0x0f, 0x82, 0x32, 0x0d, 0x00, 0x00, //0x000023b1 jb LBB0_520 + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000023b7 movq $-1, $-56(%rbp) + 0x48, 0x8b, 0x45, 0xc0, //0x000023bf movq $-64(%rbp), %rax + 0x31, 0xdb, //0x000023c3 xorl %ebx, %ebx + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000023c5 .p2align 4, 0x90 + //0x000023d0 LBB0_403 + 0x48, 0x89, 0x75, 0xb8, //0x000023d0 movq %rsi, $-72(%rbp) + 0x49, 0x89, 0xda, //0x000023d4 movq %rbx, %r10 + 0xf3, 0x41, 0x0f, 0x6f, 0x2c, 0x04, //0x000023d7 movdqu (%r12,%rax), %xmm5 + 0xf3, 0x41, 0x0f, 0x6f, 0x7c, 0x04, 0x10, //0x000023dd movdqu $16(%r12,%rax), %xmm7 + 0xf3, 0x41, 0x0f, 0x6f, 0x74, 0x04, 0x20, //0x000023e4 movdqu $32(%r12,%rax), %xmm6 + 0xf3, 0x41, 0x0f, 0x6f, 0x64, 0x04, 0x30, //0x000023eb movdqu $48(%r12,%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xdd, //0x000023f2 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x000023f6 pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xdb, //0x000023fa pmovmskb %xmm3, %r11d + 0x66, 0x0f, 0x6f, 0xdf, //0x000023ff movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x00002403 pcmpeqb %xmm0, %xmm3 + 0x66, 0x0f, 0xd7, 0xcb, //0x00002407 pmovmskb %xmm3, %ecx + 0x66, 0x0f, 0x6f, 0xde, //0x0000240b movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000240f pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xf3, //0x00002413 pmovmskb %xmm3, %r14d + 0x66, 0x0f, 0x6f, 0xdc, //0x00002418 movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd8, //0x0000241c pcmpeqb %xmm0, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xfb, //0x00002420 pmovmskb %xmm3, %r15d + 0x66, 0x0f, 0x6f, 0xdd, //0x00002425 movdqa %xmm5, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002429 pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xeb, //0x0000242d pmovmskb %xmm3, %r13d + 0x66, 0x0f, 0x6f, 0xdf, //0x00002432 movdqa %xmm7, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002436 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x0000243a pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x6f, 0xde, //0x0000243e movdqa %xmm6, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x00002442 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002446 pmovmskb %xmm3, %edi + 0x66, 0x0f, 0x6f, 0xdc, //0x0000244a movdqa %xmm4, %xmm3 + 0x66, 0x0f, 0x74, 0xd9, //0x0000244e pcmpeqb %xmm1, %xmm3 + 0x66, 0x44, 0x0f, 0xd7, 0xcb, //0x00002452 pmovmskb %xmm3, %r9d + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002457 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdf, //0x0000245c pcmpgtb %xmm7, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xfa, //0x00002460 pcmpgtb %xmm10, %xmm7 + 0x66, 0x0f, 0xdb, 0xfb, //0x00002465 pand %xmm3, %xmm7 + 0x66, 0x0f, 0xd7, 0xf7, //0x00002469 pmovmskb %xmm7, %esi + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000246d movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xde, //0x00002472 pcmpgtb %xmm6, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xf2, //0x00002476 pcmpgtb %xmm10, %xmm6 + 0x66, 0x0f, 0xdb, 0xf3, //0x0000247b pand %xmm3, %xmm6 + 0x66, 0x0f, 0xd7, 0xd6, //0x0000247f pmovmskb %xmm6, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002483 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002488 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x0000248c pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002491 pand %xmm3, %xmm4 + 0x66, 0x44, 0x0f, 0xd7, 0xc4, //0x00002495 pmovmskb %xmm4, %r8d + 0x49, 0xc1, 0xe7, 0x30, //0x0000249a shlq $48, %r15 + 0x49, 0xc1, 0xe6, 0x20, //0x0000249e shlq $32, %r14 + 0x4d, 0x09, 0xfe, //0x000024a2 orq %r15, %r14 + 0x48, 0xc1, 0xe1, 0x10, //0x000024a5 shlq $16, %rcx + 0x4c, 0x09, 0xf1, //0x000024a9 orq %r14, %rcx + 0x49, 0x09, 0xcb, //0x000024ac orq %rcx, %r11 + 0x49, 0xc1, 0xe1, 0x30, //0x000024af shlq $48, %r9 + 0x48, 0xc1, 0xe7, 0x20, //0x000024b3 shlq $32, %rdi + 0x4c, 0x09, 0xcf, //0x000024b7 orq %r9, %rdi + 0x48, 0xc1, 0xe3, 0x10, //0x000024ba shlq $16, %rbx + 0x48, 0x09, 0xfb, //0x000024be orq %rdi, %rbx + 0x49, 0xc1, 0xe0, 0x30, //0x000024c1 shlq $48, %r8 + 0x48, 0xc1, 0xe2, 0x20, //0x000024c5 shlq $32, %rdx + 0x4c, 0x09, 0xc2, //0x000024c9 orq %r8, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x000024cc shlq $16, %rsi + 0x48, 0x09, 0xd6, //0x000024d0 orq %rdx, %rsi + 0x49, 0x09, 0xdd, //0x000024d3 orq %rbx, %r13 + 0x0f, 0x85, 0x59, 0x00, 0x00, 0x00, //0x000024d6 jne LBB0_420 + 0x4d, 0x85, 0xd2, //0x000024dc testq %r10, %r10 + 0x0f, 0x85, 0x6f, 0x00, 0x00, 0x00, //0x000024df jne LBB0_422 + 0x31, 0xdb, //0x000024e5 xorl %ebx, %ebx + 0x4c, 0x8b, 0x75, 0xd0, //0x000024e7 movq $-48(%rbp), %r14 + //0x000024eb LBB0_406 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x000024eb movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdd, //0x000024f0 pcmpgtb %xmm5, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xea, //0x000024f4 pcmpgtb %xmm10, %xmm5 + 0x66, 0x0f, 0xdb, 0xeb, //0x000024f9 pand %xmm3, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000024fd pmovmskb %xmm5, %ecx + 0x48, 0x09, 0xce, //0x00002501 orq %rcx, %rsi + 0x4d, 0x85, 0xdb, //0x00002504 testq %r11, %r11 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002507 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0x93, 0x00, 0x00, 0x00, //0x0000250b jne LBB0_424 + 0x48, 0x85, 0xf6, //0x00002511 testq %rsi, %rsi + 0x0f, 0x85, 0xf7, 0x16, 0x00, 0x00, //0x00002514 jne LBB0_645 + 0x48, 0x8b, 0x75, 0xb8, //0x0000251a movq $-72(%rbp), %rsi + 0x48, 0x83, 0xc6, 0xc0, //0x0000251e addq $-64, %rsi + 0x48, 0x83, 0xc0, 0x40, //0x00002522 addq $64, %rax + 0x48, 0x83, 0xfe, 0x3f, //0x00002526 cmpq $63, %rsi + 0x0f, 0x87, 0xa0, 0xfe, 0xff, 0xff, //0x0000252a ja LBB0_403 + 0xe9, 0xd5, 0x07, 0x00, 0x00, //0x00002530 jmp LBB0_409 + //0x00002535 LBB0_420 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00002535 cmpq $-1, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000253a movq $-48(%rbp), %r14 + 0x0f, 0x85, 0x14, 0x00, 0x00, 0x00, //0x0000253e jne LBB0_423 + 0x49, 0x0f, 0xbc, 0xcd, //0x00002544 bsfq %r13, %rcx + 0x48, 0x01, 0xc1, //0x00002548 addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000254b movq %rcx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x0000254f jmp LBB0_423 + //0x00002554 LBB0_422 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002554 movq $-48(%rbp), %r14 + //0x00002558 LBB0_423 + 0x4c, 0x89, 0xd1, //0x00002558 movq %r10, %rcx + 0x48, 0xf7, 0xd1, //0x0000255b notq %rcx + 0x4c, 0x21, 0xe9, //0x0000255e andq %r13, %rcx + 0x48, 0x8d, 0x14, 0x09, //0x00002561 leaq (%rcx,%rcx), %rdx + 0x4c, 0x09, 0xd2, //0x00002565 orq %r10, %rdx + 0x48, 0x89, 0xd7, //0x00002568 movq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x0000256b notq %rdi + 0x4c, 0x21, 0xef, //0x0000256e andq %r13, %rdi + 0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00002571 movabsq $-6148914691236517206, %rbx + 0x48, 0x21, 0xdf, //0x0000257b andq %rbx, %rdi + 0x31, 0xdb, //0x0000257e xorl %ebx, %ebx + 0x48, 0x01, 0xcf, //0x00002580 addq %rcx, %rdi + 0x0f, 0x92, 0xc3, //0x00002583 setb %bl + 0x48, 0x01, 0xff, //0x00002586 addq %rdi, %rdi + 0x48, 0xb9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00002589 movabsq $6148914691236517205, %rcx + 0x48, 0x31, 0xcf, //0x00002593 xorq %rcx, %rdi + 0x48, 0x21, 0xd7, //0x00002596 andq %rdx, %rdi + 0x48, 0xf7, 0xd7, //0x00002599 notq %rdi + 0x49, 0x21, 0xfb, //0x0000259c andq %rdi, %r11 + 0xe9, 0x47, 0xff, 0xff, 0xff, //0x0000259f jmp LBB0_406 + //0x000025a4 LBB0_424 + 0x49, 0x0f, 0xbc, 0xcb, //0x000025a4 bsfq %r11, %rcx + 0x48, 0x85, 0xf6, //0x000025a8 testq %rsi, %rsi + 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, //0x000025ab je LBB0_438 + 0x48, 0x0f, 0xbc, 0xd6, //0x000025b1 bsfq %rsi, %rdx + 0xe9, 0x8b, 0x00, 0x00, 0x00, //0x000025b5 jmp LBB0_439 + //0x000025ba LBB0_426 + 0x41, 0x89, 0xcb, //0x000025ba movl %ecx, %r11d + 0x4c, 0x03, 0x5d, 0xb8, //0x000025bd addq $-72(%rbp), %r11 + 0x49, 0x01, 0xdb, //0x000025c1 addq %rbx, %r11 + 0xe9, 0x06, 0x00, 0x00, 0x00, //0x000025c4 jmp LBB0_428 + //0x000025c9 LBB0_427 + 0x48, 0x01, 0xde, //0x000025c9 addq %rbx, %rsi + 0x49, 0x89, 0xf3, //0x000025cc movq %rsi, %r11 + //0x000025cf LBB0_428 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000025cf movq $-1, %rbx + 0x4d, 0x85, 0xf6, //0x000025d6 testq %r14, %r14 + 0x0f, 0x84, 0x56, 0x16, 0x00, 0x00, //0x000025d9 je LBB0_648 + 0x4d, 0x85, 0xed, //0x000025df testq %r13, %r13 + 0x0f, 0x84, 0x4d, 0x16, 0x00, 0x00, //0x000025e2 je LBB0_648 + 0x4d, 0x85, 0xc0, //0x000025e8 testq %r8, %r8 + 0x0f, 0x84, 0x44, 0x16, 0x00, 0x00, //0x000025eb je LBB0_648 + 0x4c, 0x2b, 0x5d, 0xb8, //0x000025f1 subq $-72(%rbp), %r11 + 0x49, 0x8d, 0x4b, 0xff, //0x000025f5 leaq $-1(%r11), %rcx + 0x49, 0x39, 0xce, //0x000025f9 cmpq %rcx, %r14 + 0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x000025fc je LBB0_437 + 0x49, 0x39, 0xcd, //0x00002602 cmpq %rcx, %r13 + 0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x00002605 je LBB0_437 + 0x49, 0x39, 0xc8, //0x0000260b cmpq %rcx, %r8 + 0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x0000260e je LBB0_437 + 0x4d, 0x85, 0xed, //0x00002614 testq %r13, %r13 + 0x0f, 0x8e, 0x99, 0x00, 0x00, 0x00, //0x00002617 jle LBB0_446 + 0x49, 0x8d, 0x4d, 0xff, //0x0000261d leaq $-1(%r13), %rcx + 0x49, 0x39, 0xc8, //0x00002621 cmpq %rcx, %r8 + 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, //0x00002624 je LBB0_446 + 0x49, 0xf7, 0xd5, //0x0000262a notq %r13 + 0x4c, 0x89, 0xeb, //0x0000262d movq %r13, %rbx + 0xe9, 0x24, 0x06, 0x00, 0x00, //0x00002630 jmp LBB0_486 + //0x00002635 LBB0_437 + 0x49, 0xf7, 0xdb, //0x00002635 negq %r11 + 0x4c, 0x89, 0xdb, //0x00002638 movq %r11, %rbx + 0xe9, 0x19, 0x06, 0x00, 0x00, //0x0000263b jmp LBB0_486 + //0x00002640 LBB0_438 + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002640 movl $64, %edx + //0x00002645 LBB0_439 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002645 movabsq $4294977024, %r11 + 0x48, 0x8b, 0x5d, 0xc0, //0x0000264f movq $-64(%rbp), %rbx + 0x48, 0x39, 0xca, //0x00002653 cmpq %rcx, %rdx + 0x0f, 0x82, 0xfb, 0x15, 0x00, 0x00, //0x00002656 jb LBB0_654 + 0x48, 0x01, 0xc8, //0x0000265c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000265f addq $1, %rax + //0x00002663 LBB0_441 + 0x48, 0x85, 0xc0, //0x00002663 testq %rax, %rax + 0x0f, 0x88, 0x55, 0x14, 0x00, 0x00, //0x00002666 js LBB0_627 + 0x49, 0x89, 0x06, //0x0000266c movq %rax, (%r14) + 0x48, 0x85, 0xdb, //0x0000266f testq %rbx, %rbx + 0x0f, 0x8f, 0x58, 0xdb, 0xff, 0xff, //0x00002672 jg LBB0_4 + 0xe9, 0xca, 0x15, 0x00, 0x00, //0x00002678 jmp LBB0_443 + //0x0000267d LBB0_131 + 0x4d, 0x85, 0xdb, //0x0000267d testq %r11, %r11 + 0x0f, 0x85, 0xd2, 0x0a, 0x00, 0x00, //0x00002680 jne LBB0_525 + 0x49, 0x01, 0xf2, //0x00002686 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002689 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000268c movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002690 movabsq $4294977024, %r11 + //0x0000269a LBB0_133 + 0x4d, 0x85, 0xc9, //0x0000269a testq %r9, %r9 + 0x0f, 0x8f, 0x1c, 0x0b, 0x00, 0x00, //0x0000269d jg LBB0_529 + 0xe9, 0x07, 0x14, 0x00, 0x00, //0x000026a3 jmp LBB0_650 + //0x000026a8 LBB0_444 + 0x0f, 0xbc, 0xcb, //0x000026a8 bsfl %ebx, %ecx + //0x000026ab LBB0_445 + 0x49, 0xf7, 0xd5, //0x000026ab notq %r13 + 0x49, 0x29, 0xcd, //0x000026ae subq %rcx, %r13 + 0xe9, 0x34, 0x00, 0x00, 0x00, //0x000026b1 jmp LBB0_450 + //0x000026b6 LBB0_446 + 0x4c, 0x89, 0xf1, //0x000026b6 movq %r14, %rcx + 0x4c, 0x09, 0xc1, //0x000026b9 orq %r8, %rcx + 0x0f, 0x99, 0xc2, //0x000026bc setns %dl + 0x0f, 0x88, 0xfb, 0x01, 0x00, 0x00, //0x000026bf js LBB0_453 + 0x4d, 0x39, 0xc6, //0x000026c5 cmpq %r8, %r14 + 0x0f, 0x8c, 0xf2, 0x01, 0x00, 0x00, //0x000026c8 jl LBB0_453 + 0x49, 0xf7, 0xd6, //0x000026ce notq %r14 + 0x4c, 0x89, 0xf3, //0x000026d1 movq %r14, %rbx + 0xe9, 0x80, 0x05, 0x00, 0x00, //0x000026d4 jmp LBB0_486 + //0x000026d9 LBB0_449 + 0x4c, 0x03, 0x65, 0xc0, //0x000026d9 addq $-64(%rbp), %r12 + 0x49, 0x29, 0xf4, //0x000026dd subq %rsi, %r12 + 0x49, 0x29, 0xd4, //0x000026e0 subq %rdx, %r12 + 0x49, 0x83, 0xc4, 0xfe, //0x000026e3 addq $-2, %r12 + 0x4d, 0x89, 0xe5, //0x000026e7 movq %r12, %r13 + //0x000026ea LBB0_450 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000026ea movabsq $4294977024, %r11 + //0x000026f4 LBB0_451 + 0x4d, 0x85, 0xed, //0x000026f4 testq %r13, %r13 + 0x0f, 0x88, 0x99, 0x13, 0x00, 0x00, //0x000026f7 js LBB0_626 + //0x000026fd LBB0_452 + 0x49, 0x01, 0xc5, //0x000026fd addq %rax, %r13 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002700 movq $-48(%rbp), %r14 + 0x4d, 0x89, 0x2e, //0x00002704 movq %r13, (%r14) + 0x48, 0x85, 0xc0, //0x00002707 testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000270a movq $-80(%rbp), %r13 + 0x0f, 0x89, 0xbc, 0xda, 0xff, 0xff, //0x0000270e jns LBB0_4 + 0xe9, 0x96, 0x13, 0x00, 0x00, //0x00002714 jmp LBB0_650 + //0x00002719 LBB0_159 + 0x4d, 0x85, 0xdb, //0x00002719 testq %r11, %r11 + 0x0f, 0x85, 0x7e, 0x0c, 0x00, 0x00, //0x0000271c jne LBB0_552 + 0x49, 0x01, 0xf2, //0x00002722 addq %rsi, %r10 + 0x49, 0x29, 0xf1, //0x00002725 subq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002728 movq $-48(%rbp), %r14 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000272c movabsq $4294977024, %r11 + //0x00002736 LBB0_161 + 0x4d, 0x85, 0xc9, //0x00002736 testq %r9, %r9 + 0x0f, 0x8f, 0xbf, 0x0c, 0x00, 0x00, //0x00002739 jg LBB0_556 + 0xe9, 0x6b, 0x13, 0x00, 0x00, //0x0000273f jmp LBB0_650 + //0x00002744 LBB0_50 + 0x4c, 0x01, 0xe0, //0x00002744 addq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002747 movq $-48(%rbp), %r14 + 0x49, 0x83, 0xf9, 0x20, //0x0000274b cmpq $32, %r9 + 0x0f, 0x82, 0x9e, 0x07, 0x00, 0x00, //0x0000274f jb LBB0_503 + //0x00002755 LBB0_51 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002755 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002759 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x0000275e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002762 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002766 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000276a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000276e pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002772 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002776 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x0000277a pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x0000277e pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002782 pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002786 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x0000278a orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x0000278d shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002791 orq %rdi, %rsi + 0x0f, 0x85, 0x5d, 0x0a, 0x00, 0x00, //0x00002794 jne LBB0_532 + 0x4d, 0x85, 0xc0, //0x0000279a testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000279d movabsq $4294977024, %r11 + 0x0f, 0x85, 0x74, 0x0a, 0x00, 0x00, //0x000027a7 jne LBB0_534 + 0x45, 0x31, 0xc0, //0x000027ad xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x000027b0 testq %rdx, %rdx + 0x0f, 0x84, 0xc4, 0x0a, 0x00, 0x00, //0x000027b3 je LBB0_536 + //0x000027b9 LBB0_54 + 0x48, 0x0f, 0xbc, 0xca, //0x000027b9 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x000027bd subq %r12, %rax + 0x48, 0x01, 0xc8, //0x000027c0 addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000027c3 addq $1, %rax + 0xe9, 0xa3, 0xea, 0xff, 0xff, //0x000027c7 jmp LBB0_229 + //0x000027cc LBB0_171 + 0x4c, 0x8b, 0x65, 0xb8, //0x000027cc movq $-72(%rbp), %r12 + 0x4c, 0x01, 0xe0, //0x000027d0 addq %r12, %rax + 0x49, 0x83, 0xfe, 0x20, //0x000027d3 cmpq $32, %r14 + 0x0f, 0x82, 0x40, 0x07, 0x00, 0x00, //0x000027d7 jb LBB0_505 + //0x000027dd LBB0_172 + 0xf3, 0x0f, 0x6f, 0x20, //0x000027dd movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x000027e1 movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x000027e6 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027ea pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000027ee pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xeb, //0x000027f2 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000027f6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xfd, //0x000027fa pmovmskb %xmm5, %edi + 0x66, 0x0f, 0x6f, 0xec, //0x000027fe movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002802 pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002806 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x0000280b movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000280f pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002813 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002817 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x0000281c pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002820 pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002825 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002829 pmovmskb %xmm3, %esi + 0x48, 0xc1, 0xe7, 0x10, //0x0000282d shlq $16, %rdi + 0x48, 0x09, 0xf9, //0x00002831 orq %rdi, %rcx + 0x48, 0xc1, 0xe2, 0x10, //0x00002834 shlq $16, %rdx + 0x48, 0xc1, 0xe6, 0x10, //0x00002838 shlq $16, %rsi + 0x49, 0x09, 0xd1, //0x0000283c orq %rdx, %r9 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000283f movabsq $4294977024, %r11 + 0x0f, 0x85, 0x24, 0x0b, 0x00, 0x00, //0x00002849 jne LBB0_550 + 0x48, 0x85, 0xdb, //0x0000284f testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002852 movq $-80(%rbp), %r13 + 0x0f, 0x85, 0xf2, 0x0b, 0x00, 0x00, //0x00002856 jne LBB0_559 + 0x31, 0xdb, //0x0000285c xorl %ebx, %ebx + //0x0000285e LBB0_175 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x0000285e movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002863 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002867 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x0000286c pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xd4, //0x00002870 pmovmskb %xmm4, %edx + 0x48, 0x09, 0xd6, //0x00002874 orq %rdx, %rsi + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002877 movl $64, %edx + 0xbf, 0x40, 0x00, 0x00, 0x00, //0x0000287c movl $64, %edi + 0x48, 0x85, 0xc9, //0x00002881 testq %rcx, %rcx + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002884 je LBB0_177 + 0x48, 0x0f, 0xbc, 0xf9, //0x0000288a bsfq %rcx, %rdi + //0x0000288e LBB0_177 + 0x48, 0x85, 0xf6, //0x0000288e testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002891 je LBB0_179 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002897 bsfq %rsi, %rdx + //0x0000289b LBB0_179 + 0x48, 0x85, 0xc9, //0x0000289b testq %rcx, %rcx + 0x0f, 0x84, 0xd7, 0x01, 0x00, 0x00, //0x0000289e je LBB0_457 + 0x48, 0x39, 0xfa, //0x000028a4 cmpq %rdi, %rdx + 0x0f, 0x82, 0x29, 0x14, 0x00, 0x00, //0x000028a7 jb LBB0_663 + 0x4c, 0x29, 0xe0, //0x000028ad subq %r12, %rax + 0x48, 0x01, 0xf8, //0x000028b0 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000028b3 addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x000028b7 movq $-48(%rbp), %r14 + 0xe9, 0xaf, 0xe9, 0xff, 0xff, //0x000028bb jmp LBB0_229 + //0x000028c0 LBB0_453 + 0x49, 0x8d, 0x48, 0xff, //0x000028c0 leaq $-1(%r8), %rcx + 0x49, 0x39, 0xce, //0x000028c4 cmpq %rcx, %r14 + 0x49, 0xf7, 0xd0, //0x000028c7 notq %r8 + 0x4d, 0x0f, 0x45, 0xc3, //0x000028ca cmovneq %r11, %r8 + 0x84, 0xd2, //0x000028ce testb %dl, %dl + 0x4d, 0x0f, 0x44, 0xc3, //0x000028d0 cmoveq %r11, %r8 + 0x4c, 0x89, 0xc3, //0x000028d4 movq %r8, %rbx + 0xe9, 0x7d, 0x03, 0x00, 0x00, //0x000028d7 jmp LBB0_486 + //0x000028dc LBB0_73 + 0x4c, 0x01, 0xe0, //0x000028dc addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x000028df cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000028e3 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x000028e7 movq $-64(%rbp), %rsi + 0x0f, 0x82, 0xe5, 0x06, 0x00, 0x00, //0x000028eb jb LBB0_511 + //0x000028f1 LBB0_74 + 0xf3, 0x0f, 0x6f, 0x18, //0x000028f1 movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x000028f5 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x000028fa movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x000028fe pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002902 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002906 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x0000290a pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x0000290e pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002912 pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xdb, //0x00002916 pmovmskb %xmm3, %ebx + 0x66, 0x0f, 0x74, 0xe1, //0x0000291a pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x0000291e pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002922 shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002926 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002929 shlq $16, %rdi + 0x48, 0x09, 0xfb, //0x0000292d orq %rdi, %rbx + 0x0f, 0x85, 0x70, 0x0b, 0x00, 0x00, //0x00002930 jne LBB0_561 + 0x4d, 0x85, 0xc0, //0x00002936 testq %r8, %r8 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002939 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x87, 0x0b, 0x00, 0x00, //0x00002943 jne LBB0_563 + 0x45, 0x31, 0xc0, //0x00002949 xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x0000294c testq %rdx, %rdx + 0x0f, 0x84, 0xd8, 0x0b, 0x00, 0x00, //0x0000294f je LBB0_565 + //0x00002955 LBB0_77 + 0x48, 0x0f, 0xbc, 0xca, //0x00002955 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002959 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x0000295c addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000295f addq $1, %rax + 0xe9, 0x8f, 0xee, 0xff, 0xff, //0x00002963 jmp LBB0_313 + //0x00002968 LBB0_198 + 0x4c, 0x8b, 0x45, 0xb8, //0x00002968 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x0000296c addq %r8, %rax + 0x49, 0x83, 0xfa, 0x20, //0x0000296f cmpq $32, %r10 + 0x0f, 0x82, 0x8c, 0x06, 0x00, 0x00, //0x00002973 jb LBB0_513 + //0x00002979 LBB0_199 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002979 movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x0000297d movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002982 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002986 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x0000298a pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x0000298e movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002992 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002996 pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x0000299a movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x0000299e pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x000029a2 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x000029a7 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x000029ab pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x000029af pmovmskb %xmm5, %ecx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x000029b3 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x000029b8 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x000029bc pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x000029c1 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x000029c5 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe2, 0x10, //0x000029c9 shlq $16, %rdx + 0x48, 0x09, 0xd6, //0x000029cd orq %rdx, %rsi + 0x48, 0xc1, 0xe1, 0x10, //0x000029d0 shlq $16, %rcx + 0x48, 0xc1, 0xe7, 0x10, //0x000029d4 shlq $16, %rdi + 0x49, 0x09, 0xc9, //0x000029d8 orq %rcx, %r9 + 0x0f, 0x85, 0x42, 0x0c, 0x00, 0x00, //0x000029db jne LBB0_579 + 0x4d, 0x85, 0xe4, //0x000029e1 testq %r12, %r12 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000029e4 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000029e8 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x45, 0xd6, 0xff, 0xff, //0x000029f2 movdqu $-10683(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x0f, 0x85, 0x48, 0x0c, 0x00, 0x00, //0x000029fb jne LBB0_581 + 0x45, 0x31, 0xe4, //0x00002a01 xorl %r12d, %r12d + //0x00002a04 LBB0_202 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002a04 movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002a09 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002a0d pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002a12 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002a16 pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002a1a orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002a1d movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002a22 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002a27 testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a2a je LBB0_204 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002a30 bsfq %rsi, %rdx + //0x00002a34 LBB0_204 + 0x48, 0x85, 0xff, //0x00002a34 testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002a37 je LBB0_206 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002a3d bsfq %rdi, %rcx + //0x00002a41 LBB0_206 + 0x48, 0x85, 0xf6, //0x00002a41 testq %rsi, %rsi + 0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, //0x00002a44 je LBB0_469 + 0x48, 0x39, 0xd1, //0x00002a4a cmpq %rdx, %rcx + 0x0f, 0x82, 0x92, 0x12, 0x00, 0x00, //0x00002a4d jb LBB0_664 + 0x4c, 0x29, 0xc0, //0x00002a53 subq %r8, %rax + 0x48, 0x01, 0xd0, //0x00002a56 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002a59 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002a5d movq $-64(%rbp), %rsi + 0xe9, 0x91, 0xed, 0xff, 0xff, //0x00002a61 jmp LBB0_313 + //0x00002a66 LBB0_454 + 0x89, 0xd9, //0x00002a66 movl %ebx, %ecx + 0xe9, 0x3e, 0xfc, 0xff, 0xff, //0x00002a68 jmp LBB0_445 + //0x00002a6d LBB0_455 + 0x89, 0xf1, //0x00002a6d movl %esi, %ecx + 0xe9, 0x37, 0xfc, 0xff, 0xff, //0x00002a6f jmp LBB0_445 + //0x00002a74 LBB0_456 + 0x89, 0xd1, //0x00002a74 movl %edx, %ecx + 0xe9, 0x30, 0xfc, 0xff, 0xff, //0x00002a76 jmp LBB0_445 + //0x00002a7b LBB0_457 + 0x48, 0x85, 0xf6, //0x00002a7b testq %rsi, %rsi + 0x0f, 0x85, 0x52, 0x12, 0x00, 0x00, //0x00002a7e jne LBB0_663 + 0x48, 0x83, 0xc0, 0x20, //0x00002a84 addq $32, %rax + 0x49, 0x83, 0xc6, 0xe0, //0x00002a88 addq $-32, %r14 + 0x48, 0x85, 0xdb, //0x00002a8c testq %rbx, %rbx + 0x0f, 0x85, 0x9f, 0x04, 0x00, 0x00, //0x00002a8f jne LBB0_506 + //0x00002a95 LBB0_459 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002a95 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xf6, //0x00002a99 testq %r14, %r14 + 0x0f, 0x84, 0xf8, 0x11, 0x00, 0x00, //0x00002a9c je LBB0_508 + //0x00002aa2 LBB0_460 + 0x0f, 0xb6, 0x10, //0x00002aa2 movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002aa5 cmpb $34, %dl + 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, //0x00002aa8 je LBB0_468 + 0x80, 0xfa, 0x5c, //0x00002aae cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002ab1 je LBB0_464 + 0x80, 0xfa, 0x1f, //0x00002ab7 cmpb $31, %dl + 0x0f, 0x86, 0x30, 0x12, 0x00, 0x00, //0x00002aba jbe LBB0_665 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002ac0 movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002ac7 movl $1, %esi + 0x48, 0x01, 0xf0, //0x00002acc addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002acf addq %rdx, %r14 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002ad2 jne LBB0_460 + 0xe9, 0xbd, 0x11, 0x00, 0x00, //0x00002ad8 jmp LBB0_508 + //0x00002add LBB0_464 + 0x49, 0x83, 0xfe, 0x01, //0x00002add cmpq $1, %r14 + 0x0f, 0x84, 0xb3, 0x11, 0x00, 0x00, //0x00002ae1 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002ae7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002aec movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002af0 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002af7 movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002afc cmpq $-1, %rcx + 0x0f, 0x85, 0x0a, 0x00, 0x00, 0x00, //0x00002b00 jne LBB0_467 + 0x48, 0x89, 0xc1, //0x00002b06 movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x00002b09 subq %r12, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002b0c movq %rcx, $-56(%rbp) + //0x00002b10 LBB0_467 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002b10 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002b14 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002b1e movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002b22 movdqa %xmm6, %xmm13 + 0x48, 0x01, 0xf0, //0x00002b27 addq %rsi, %rax + 0x49, 0x01, 0xd6, //0x00002b2a addq %rdx, %r14 + 0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x00002b2d jne LBB0_460 + 0xe9, 0x62, 0x11, 0x00, 0x00, //0x00002b33 jmp LBB0_508 + //0x00002b38 LBB0_468 + 0x4c, 0x29, 0xe0, //0x00002b38 subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002b3b addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002b3f movq $-48(%rbp), %r14 + 0xe9, 0x27, 0xe7, 0xff, 0xff, //0x00002b43 jmp LBB0_229 + //0x00002b48 LBB0_469 + 0x48, 0x85, 0xff, //0x00002b48 testq %rdi, %rdi + 0x0f, 0x85, 0x94, 0x11, 0x00, 0x00, //0x00002b4b jne LBB0_664 + 0x48, 0x83, 0xc0, 0x20, //0x00002b51 addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002b55 addq $-32, %r10 + 0x4d, 0x85, 0xe4, //0x00002b59 testq %r12, %r12 + 0x0f, 0x85, 0xc3, 0x04, 0x00, 0x00, //0x00002b5c jne LBB0_514 + //0x00002b62 LBB0_471 + 0x48, 0x8b, 0x4d, 0xc8, //0x00002b62 movq $-56(%rbp), %rcx + 0x4d, 0x85, 0xd2, //0x00002b66 testq %r10, %r10 + 0x0f, 0x84, 0x60, 0x0f, 0x00, 0x00, //0x00002b69 je LBB0_628 + //0x00002b6f LBB0_472 + 0x0f, 0xb6, 0x10, //0x00002b6f movzbl (%rax), %edx + 0x80, 0xfa, 0x22, //0x00002b72 cmpb $34, %dl + 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, //0x00002b75 je LBB0_482 + 0x80, 0xfa, 0x5c, //0x00002b7b cmpb $92, %dl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002b7e je LBB0_477 + 0x80, 0xfa, 0x1f, //0x00002b84 cmpb $31, %dl + 0x0f, 0x86, 0x6f, 0x11, 0x00, 0x00, //0x00002b87 jbe LBB0_666 + 0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002b8d movq $-1, %rdx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002b94 movl $1, %esi + //0x00002b99 LBB0_476 + 0x48, 0x01, 0xf0, //0x00002b99 addq %rsi, %rax + 0x49, 0x01, 0xd2, //0x00002b9c addq %rdx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002b9f jne LBB0_472 + 0xe9, 0x25, 0x0f, 0x00, 0x00, //0x00002ba5 jmp LBB0_628 + //0x00002baa LBB0_477 + 0x49, 0x83, 0xfa, 0x01, //0x00002baa cmpq $1, %r10 + 0x0f, 0x84, 0x05, 0x11, 0x00, 0x00, //0x00002bae je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x00002bb4 movdqa %xmm2, %xmm5 + 0x48, 0xc7, 0xc2, 0xfe, 0xff, 0xff, 0xff, //0x00002bb8 movq $-2, %rdx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002bbf movl $2, %esi + 0x48, 0x83, 0xf9, 0xff, //0x00002bc4 cmpq $-1, %rcx + 0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00002bc8 je LBB0_480 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002bce movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002bd2 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002bd6 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002be0 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x53, 0xd4, 0xff, 0xff, //0x00002be4 movdqu $-11181(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bed movq $-72(%rbp), %r8 + 0xe9, 0xa3, 0xff, 0xff, 0xff, //0x00002bf1 jmp LBB0_476 + //0x00002bf6 LBB0_480 + 0x48, 0x89, 0xc1, //0x00002bf6 movq %rax, %rcx + 0x4c, 0x8b, 0x45, 0xb8, //0x00002bf9 movq $-72(%rbp), %r8 + 0x4c, 0x29, 0xc1, //0x00002bfd subq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00002c00 movq %rcx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c04 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c08 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c0c movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002c16 movdqa %xmm5, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x1d, 0xd4, 0xff, 0xff, //0x00002c1a movdqu $-11235(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0xe9, 0x71, 0xff, 0xff, 0xff, //0x00002c23 jmp LBB0_476 + //0x00002c28 LBB0_481 + 0x0f, 0xbc, 0xce, //0x00002c28 bsfl %esi, %ecx + 0xe9, 0x23, 0x00, 0x00, 0x00, //0x00002c2b jmp LBB0_485 + //0x00002c30 LBB0_482 + 0x4c, 0x29, 0xc0, //0x00002c30 subq %r8, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002c33 addq $1, %rax + 0x48, 0x8b, 0x75, 0xc0, //0x00002c37 movq $-64(%rbp), %rsi + 0xe9, 0xb7, 0xeb, 0xff, 0xff, //0x00002c3b jmp LBB0_313 + //0x00002c40 LBB0_483 + 0x49, 0x01, 0xc4, //0x00002c40 addq %rax, %r12 + 0x49, 0x29, 0xf4, //0x00002c43 subq %rsi, %r12 + 0x48, 0xf7, 0xd3, //0x00002c46 notq %rbx + 0x4c, 0x01, 0xe3, //0x00002c49 addq %r12, %rbx + 0xe9, 0x08, 0x00, 0x00, 0x00, //0x00002c4c jmp LBB0_486 + //0x00002c51 LBB0_484 + 0x89, 0xd1, //0x00002c51 movl %edx, %ecx + //0x00002c53 LBB0_485 + 0x48, 0xf7, 0xd3, //0x00002c53 notq %rbx + 0x48, 0x29, 0xcb, //0x00002c56 subq %rcx, %rbx + //0x00002c59 LBB0_486 + 0x48, 0x85, 0xdb, //0x00002c59 testq %rbx, %rbx + 0x0f, 0x88, 0xd3, 0x0f, 0x00, 0x00, //0x00002c5c js LBB0_648 + //0x00002c62 LBB0_487 + 0x48, 0x01, 0xc3, //0x00002c62 addq %rax, %rbx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c65 movq $-48(%rbp), %r14 + 0x49, 0x89, 0x1e, //0x00002c69 movq %rbx, (%r14) + //0x00002c6c LBB0_488 + 0x48, 0x85, 0xc0, //0x00002c6c testq %rax, %rax + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002c6f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002c73 movabsq $4294977024, %r11 + 0x0f, 0x8f, 0x4d, 0xd5, 0xff, 0xff, //0x00002c7d jg LBB0_4 + 0xe9, 0xe0, 0x0d, 0x00, 0x00, //0x00002c83 jmp LBB0_232 + //0x00002c88 LBB0_246 + 0x4c, 0x01, 0xe0, //0x00002c88 addq %r12, %rax + 0x49, 0x83, 0xf9, 0x20, //0x00002c8b cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002c8f movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002c93 movq $-64(%rbp), %rbx + 0x0f, 0x82, 0x3e, 0x04, 0x00, 0x00, //0x00002c97 jb LBB0_519 + //0x00002c9d LBB0_247 + 0xf3, 0x0f, 0x6f, 0x18, //0x00002c9d movdqu (%rax), %xmm3 + 0xf3, 0x0f, 0x6f, 0x60, 0x10, //0x00002ca1 movdqu $16(%rax), %xmm4 + 0x66, 0x0f, 0x6f, 0xeb, //0x00002ca6 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002caa pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002cae pmovmskb %xmm5, %edx + 0x66, 0x0f, 0x6f, 0xec, //0x00002cb2 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002cb6 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002cba pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x74, 0xd9, //0x00002cbe pcmpeqb %xmm1, %xmm3 + 0x66, 0x0f, 0xd7, 0xf3, //0x00002cc2 pmovmskb %xmm3, %esi + 0x66, 0x0f, 0x74, 0xe1, //0x00002cc6 pcmpeqb %xmm1, %xmm4 + 0x66, 0x0f, 0xd7, 0xfc, //0x00002cca pmovmskb %xmm4, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002cce shlq $16, %rcx + 0x48, 0x09, 0xca, //0x00002cd2 orq %rcx, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002cd5 shlq $16, %rdi + 0x48, 0x09, 0xfe, //0x00002cd9 orq %rdi, %rsi + 0x0f, 0x85, 0x23, 0x0b, 0x00, 0x00, //0x00002cdc jne LBB0_595 + 0x4d, 0x85, 0xc0, //0x00002ce2 testq %r8, %r8 + 0x0f, 0x85, 0x47, 0x0b, 0x00, 0x00, //0x00002ce5 jne LBB0_597 + 0x45, 0x31, 0xc0, //0x00002ceb xorl %r8d, %r8d + 0x48, 0x85, 0xd2, //0x00002cee testq %rdx, %rdx + 0x0f, 0x84, 0x9d, 0x0b, 0x00, 0x00, //0x00002cf1 je LBB0_599 + //0x00002cf7 LBB0_250 + 0x48, 0x0f, 0xbc, 0xca, //0x00002cf7 bsfq %rdx, %rcx + 0x4c, 0x29, 0xe0, //0x00002cfb subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00002cfe addq %rcx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002d01 addq $1, %rax + 0xe9, 0x59, 0xf9, 0xff, 0xff, //0x00002d05 jmp LBB0_441 + //0x00002d0a LBB0_409 + 0x4c, 0x01, 0xe0, //0x00002d0a addq %r12, %rax + 0x49, 0x89, 0xf2, //0x00002d0d movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x00002d10 cmpq $32, %rsi + 0x0f, 0x82, 0xed, 0x03, 0x00, 0x00, //0x00002d14 jb LBB0_521 + //0x00002d1a LBB0_410 + 0xf3, 0x0f, 0x6f, 0x20, //0x00002d1a movdqu (%rax), %xmm4 + 0xf3, 0x0f, 0x6f, 0x58, 0x10, //0x00002d1e movdqu $16(%rax), %xmm3 + 0x66, 0x0f, 0x6f, 0xec, //0x00002d23 movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d27 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xf5, //0x00002d2b pmovmskb %xmm5, %esi + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d2f movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe8, //0x00002d33 pcmpeqb %xmm0, %xmm5 + 0x66, 0x0f, 0xd7, 0xcd, //0x00002d37 pmovmskb %xmm5, %ecx + 0x66, 0x0f, 0x6f, 0xec, //0x00002d3b movdqa %xmm4, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d3f pcmpeqb %xmm1, %xmm5 + 0x66, 0x44, 0x0f, 0xd7, 0xcd, //0x00002d43 pmovmskb %xmm5, %r9d + 0x66, 0x0f, 0x6f, 0xeb, //0x00002d48 movdqa %xmm3, %xmm5 + 0x66, 0x0f, 0x74, 0xe9, //0x00002d4c pcmpeqb %xmm1, %xmm5 + 0x66, 0x0f, 0xd7, 0xd5, //0x00002d50 pmovmskb %xmm5, %edx + 0x66, 0x41, 0x0f, 0x6f, 0xec, //0x00002d54 movdqa %xmm12, %xmm5 + 0x66, 0x0f, 0x64, 0xeb, //0x00002d59 pcmpgtb %xmm3, %xmm5 + 0x66, 0x41, 0x0f, 0x64, 0xda, //0x00002d5d pcmpgtb %xmm10, %xmm3 + 0x66, 0x0f, 0xdb, 0xdd, //0x00002d62 pand %xmm5, %xmm3 + 0x66, 0x0f, 0xd7, 0xfb, //0x00002d66 pmovmskb %xmm3, %edi + 0x48, 0xc1, 0xe1, 0x10, //0x00002d6a shlq $16, %rcx + 0x48, 0x09, 0xce, //0x00002d6e orq %rcx, %rsi + 0x48, 0xc1, 0xe2, 0x10, //0x00002d71 shlq $16, %rdx + 0x48, 0xc1, 0xe7, 0x10, //0x00002d75 shlq $16, %rdi + 0x49, 0x09, 0xd1, //0x00002d79 orq %rdx, %r9 + 0x0f, 0x85, 0xf6, 0x0b, 0x00, 0x00, //0x00002d7c jne LBB0_613 + 0x48, 0x85, 0xdb, //0x00002d82 testq %rbx, %rbx + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002d85 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002d89 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x0c, 0x0c, 0x00, 0x00, //0x00002d93 jne LBB0_615 + 0x31, 0xdb, //0x00002d99 xorl %ebx, %ebx + //0x00002d9b LBB0_413 + 0x66, 0x41, 0x0f, 0x6f, 0xdc, //0x00002d9b movdqa %xmm12, %xmm3 + 0x66, 0x0f, 0x64, 0xdc, //0x00002da0 pcmpgtb %xmm4, %xmm3 + 0x66, 0x41, 0x0f, 0x64, 0xe2, //0x00002da4 pcmpgtb %xmm10, %xmm4 + 0x66, 0x0f, 0xdb, 0xe3, //0x00002da9 pand %xmm3, %xmm4 + 0x66, 0x0f, 0xd7, 0xcc, //0x00002dad pmovmskb %xmm4, %ecx + 0x48, 0x09, 0xcf, //0x00002db1 orq %rcx, %rdi + 0xb9, 0x40, 0x00, 0x00, 0x00, //0x00002db4 movl $64, %ecx + 0xba, 0x40, 0x00, 0x00, 0x00, //0x00002db9 movl $64, %edx + 0x48, 0x85, 0xf6, //0x00002dbe testq %rsi, %rsi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dc1 je LBB0_415 + 0x48, 0x0f, 0xbc, 0xd6, //0x00002dc7 bsfq %rsi, %rdx + //0x00002dcb LBB0_415 + 0x48, 0x85, 0xff, //0x00002dcb testq %rdi, %rdi + 0x0f, 0x84, 0x04, 0x00, 0x00, 0x00, //0x00002dce je LBB0_417 + 0x48, 0x0f, 0xbc, 0xcf, //0x00002dd4 bsfq %rdi, %rcx + //0x00002dd8 LBB0_417 + 0x48, 0x85, 0xf6, //0x00002dd8 testq %rsi, %rsi + 0x0f, 0x84, 0x5c, 0x00, 0x00, 0x00, //0x00002ddb je LBB0_491 + 0x4c, 0x29, 0xe0, //0x00002de1 subq %r12, %rax + 0x48, 0x39, 0xd1, //0x00002de4 cmpq %rdx, %rcx + 0x0f, 0x82, 0x24, 0x0f, 0x00, 0x00, //0x00002de7 jb LBB0_668 + 0x48, 0x01, 0xd0, //0x00002ded addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002df0 addq $1, %rax + 0x48, 0x8b, 0x5d, 0xc0, //0x00002df4 movq $-64(%rbp), %rbx + 0xe9, 0x66, 0xf8, 0xff, 0xff, //0x00002df8 jmp LBB0_441 + //0x00002dfd LBB0_489 + 0x4b, 0x8d, 0x04, 0x04, //0x00002dfd leaq (%r12,%r8), %rax + 0x48, 0x85, 0xc9, //0x00002e01 testq %rcx, %rcx + 0x4c, 0x8b, 0x75, 0xd0, //0x00002e04 movq $-48(%rbp), %r14 + 0x48, 0xbf, 0x00, 0x26, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, //0x00002e08 movabsq $17596481021440, %rdi + 0x0f, 0x85, 0xa9, 0xdd, 0xff, 0xff, //0x00002e12 jne LBB0_139 + 0xe9, 0xe4, 0xdd, 0xff, 0xff, //0x00002e18 jmp LBB0_146 + //0x00002e1d LBB0_490 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00002e1d movq $-1, %r8 + 0x48, 0x89, 0xfe, //0x00002e24 movq %rdi, %rsi + 0x4d, 0x89, 0xf3, //0x00002e27 movq %r14, %r11 + 0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x00002e2a movq $-1, %r15 + 0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x00002e31 movq $-1, %r10 + 0xe9, 0x96, 0xd9, 0xff, 0xff, //0x00002e38 jmp LBB0_105 + //0x00002e3d LBB0_491 + 0x48, 0x85, 0xff, //0x00002e3d testq %rdi, %rdi + 0x0f, 0x85, 0xe0, 0x0e, 0x00, 0x00, //0x00002e40 jne LBB0_669 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002e46 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002e4b movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x00002e4f addq $32, %rax + 0x49, 0x83, 0xc2, 0xe0, //0x00002e53 addq $-32, %r10 + 0x48, 0x85, 0xdb, //0x00002e57 testq %rbx, %rbx + 0x0f, 0x85, 0xb9, 0x02, 0x00, 0x00, //0x00002e5a jne LBB0_522 + //0x00002e60 LBB0_493 + 0x48, 0x8b, 0x55, 0xc8, //0x00002e60 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xd2, //0x00002e64 testq %r10, %r10 + 0x0f, 0x84, 0x4c, 0x0e, 0x00, 0x00, //0x00002e67 je LBB0_524 + //0x00002e6d LBB0_494 + 0x0f, 0xb6, 0x08, //0x00002e6d movzbl (%rax), %ecx + 0x80, 0xf9, 0x22, //0x00002e70 cmpb $34, %cl + 0x0f, 0x84, 0x11, 0x01, 0x00, 0x00, //0x00002e73 je LBB0_509 + 0x80, 0xf9, 0x5c, //0x00002e79 cmpb $92, %cl + 0x0f, 0x84, 0x26, 0x00, 0x00, 0x00, //0x00002e7c je LBB0_499 + 0x80, 0xf9, 0x1f, //0x00002e82 cmpb $31, %cl + 0x0f, 0x86, 0xa6, 0x0e, 0x00, 0x00, //0x00002e85 jbe LBB0_670 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00002e8b movq $-1, %rcx + 0xbe, 0x01, 0x00, 0x00, 0x00, //0x00002e92 movl $1, %esi + //0x00002e97 LBB0_498 + 0x48, 0x01, 0xf0, //0x00002e97 addq %rsi, %rax + 0x49, 0x01, 0xca, //0x00002e9a addq %rcx, %r10 + 0x0f, 0x85, 0xca, 0xff, 0xff, 0xff, //0x00002e9d jne LBB0_494 + 0xe9, 0x11, 0x0e, 0x00, 0x00, //0x00002ea3 jmp LBB0_524 + //0x00002ea8 LBB0_499 + 0x49, 0x83, 0xfa, 0x01, //0x00002ea8 cmpq $1, %r10 + 0x0f, 0x84, 0x07, 0x0e, 0x00, 0x00, //0x00002eac je LBB0_524 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00002eb2 movq $-2, %rcx + 0xbe, 0x02, 0x00, 0x00, 0x00, //0x00002eb9 movl $2, %esi + 0x48, 0x83, 0xfa, 0xff, //0x00002ebe cmpq $-1, %rdx + 0x0f, 0x85, 0xcf, 0xff, 0xff, 0xff, //0x00002ec2 jne LBB0_498 + 0x48, 0x89, 0xc2, //0x00002ec8 movq %rax, %rdx + 0x4c, 0x29, 0xe2, //0x00002ecb subq %r12, %rdx + 0x48, 0x89, 0x55, 0xc8, //0x00002ece movq %rdx, $-56(%rbp) + 0xe9, 0xc0, 0xff, 0xff, 0xff, //0x00002ed2 jmp LBB0_498 + //0x00002ed7 LBB0_502 + 0x48, 0x8b, 0x45, 0xc0, //0x00002ed7 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002edb addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ede movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002ee6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002ee9 cmpq $32, %r9 + 0x0f, 0x83, 0x62, 0xf8, 0xff, 0xff, //0x00002eed jae LBB0_51 + //0x00002ef3 LBB0_503 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002ef3 movabsq $4294977024, %r11 + 0xe9, 0x83, 0x03, 0x00, 0x00, //0x00002efd jmp LBB0_537 + //0x00002f02 LBB0_504 + 0x48, 0x8b, 0x45, 0xc0, //0x00002f02 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x00002f06 addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002f09 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x00002f11 xorl %ebx, %ebx + 0x49, 0x83, 0xfe, 0x20, //0x00002f13 cmpq $32, %r14 + 0x0f, 0x83, 0xc0, 0xf8, 0xff, 0xff, //0x00002f17 jae LBB0_172 + //0x00002f1d LBB0_505 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f1d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f21 movabsq $4294977024, %r11 + 0x48, 0x85, 0xdb, //0x00002f2b testq %rbx, %rbx + 0x0f, 0x84, 0x61, 0xfb, 0xff, 0xff, //0x00002f2e je LBB0_459 + //0x00002f34 LBB0_506 + 0x4d, 0x85, 0xf6, //0x00002f34 testq %r14, %r14 + 0x0f, 0x84, 0x5d, 0x0d, 0x00, 0x00, //0x00002f37 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00002f3d movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00002f42 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00002f46 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00002f49 notq %rcx + 0x48, 0x01, 0xc1, //0x00002f4c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x00002f4f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00002f53 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00002f57 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x00002f5a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x00002f5e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00002f62 addq $1, %rax + 0x49, 0x83, 0xc6, 0xff, //0x00002f66 addq $-1, %r14 + 0x48, 0x89, 0x55, 0xc8, //0x00002f6a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f6e movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f72 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xf6, //0x00002f7c testq %r14, %r14 + 0x0f, 0x85, 0x1d, 0xfb, 0xff, 0xff, //0x00002f7f jne LBB0_460 + 0xe9, 0x10, 0x0d, 0x00, 0x00, //0x00002f85 jmp LBB0_508 + //0x00002f8a LBB0_509 + 0x4c, 0x29, 0xe0, //0x00002f8a subq %r12, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00002f8d addq $1, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00002f91 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00002f95 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002f99 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00002fa3 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00002fa7 movdqa %xmm6, %xmm13 + 0x48, 0x8b, 0x5d, 0xc0, //0x00002fac movq $-64(%rbp), %rbx + 0xe9, 0xae, 0xf6, 0xff, 0xff, //0x00002fb0 jmp LBB0_441 + //0x00002fb5 LBB0_510 + 0x49, 0x8d, 0x04, 0x14, //0x00002fb5 leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002fb9 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x00002fc1 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x00002fc4 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00002fc8 movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x75, 0xc0, //0x00002fcc movq $-64(%rbp), %rsi + 0x0f, 0x83, 0x1b, 0xf9, 0xff, 0xff, //0x00002fd0 jae LBB0_74 + //0x00002fd6 LBB0_511 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00002fd6 movabsq $4294977024, %r11 + 0xe9, 0x50, 0x05, 0x00, 0x00, //0x00002fe0 jmp LBB0_566 + //0x00002fe5 LBB0_512 + 0x48, 0x8b, 0x45, 0xc0, //0x00002fe5 movq $-64(%rbp), %rax + 0x4c, 0x8b, 0x45, 0xb8, //0x00002fe9 movq $-72(%rbp), %r8 + 0x4c, 0x01, 0xc0, //0x00002fed addq %r8, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x00002ff0 movq $-1, $-56(%rbp) + 0x45, 0x31, 0xe4, //0x00002ff8 xorl %r12d, %r12d + 0x49, 0x83, 0xfa, 0x20, //0x00002ffb cmpq $32, %r10 + 0x0f, 0x83, 0x74, 0xf9, 0xff, 0xff, //0x00002fff jae LBB0_199 + //0x00003005 LBB0_513 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003005 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003009 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0x24, 0xd0, 0xff, 0xff, //0x00003013 movdqu $-12252(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xe4, //0x0000301c testq %r12, %r12 + 0x0f, 0x84, 0x3d, 0xfb, 0xff, 0xff, //0x0000301f je LBB0_471 + //0x00003025 LBB0_514 + 0x4d, 0x85, 0xd2, //0x00003025 testq %r10, %r10 + 0x0f, 0x84, 0x8b, 0x0c, 0x00, 0x00, //0x00003028 je LBB0_524 + 0x66, 0x0f, 0x6f, 0xea, //0x0000302e movdqa %xmm2, %xmm5 + 0x4c, 0x8b, 0x45, 0xb8, //0x00003032 movq $-72(%rbp), %r8 + 0x4c, 0x89, 0xc1, //0x00003036 movq %r8, %rcx + 0x48, 0xf7, 0xd1, //0x00003039 notq %rcx + 0x48, 0x01, 0xc1, //0x0000303c addq %rax, %rcx + 0x48, 0x8b, 0x75, 0xc8, //0x0000303f movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x00003043 cmpq $-1, %rsi + 0x48, 0x89, 0xf2, //0x00003047 movq %rsi, %rdx + 0x48, 0x0f, 0x44, 0xd1, //0x0000304a cmoveq %rcx, %rdx + 0x48, 0x0f, 0x45, 0xce, //0x0000304e cmovneq %rsi, %rcx + 0x48, 0x83, 0xc0, 0x01, //0x00003052 addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003056 addq $-1, %r10 + 0x48, 0x89, 0x55, 0xc8, //0x0000305a movq %rdx, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x0000305e movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003062 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003066 movabsq $4294977024, %r11 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xc7, 0xcf, 0xff, 0xff, //0x00003070 movdqu $-12345(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4d, 0x85, 0xd2, //0x00003079 testq %r10, %r10 + 0x0f, 0x85, 0xed, 0xfa, 0xff, 0xff, //0x0000307c jne LBB0_472 + 0xe9, 0x48, 0x0a, 0x00, 0x00, //0x00003082 jmp LBB0_628 + //0x00003087 LBB0_516 + 0x49, 0x8d, 0x0c, 0x04, //0x00003087 leaq (%r12,%rax), %rcx + 0x48, 0x85, 0xd2, //0x0000308b testq %rdx, %rdx + 0x0f, 0x85, 0x3f, 0xe9, 0xff, 0xff, //0x0000308e jne LBB0_332 + 0xe9, 0x84, 0xe9, 0xff, 0xff, //0x00003094 jmp LBB0_339 + //0x00003099 LBB0_517 + 0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00003099 movq $-1, %r14 + 0x48, 0x8b, 0x75, 0xb8, //0x000030a0 movq $-72(%rbp), %rsi + 0x4d, 0x89, 0xca, //0x000030a4 movq %r9, %r10 + 0x49, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000030a7 movq $-1, %r8 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x000030ae movq $-1, %r13 + 0xe9, 0x93, 0xe5, 0xff, 0xff, //0x000030b5 jmp LBB0_280 + //0x000030ba LBB0_518 + 0x49, 0x8d, 0x04, 0x14, //0x000030ba leaq (%r12,%rdx), %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030be movq $-1, $-56(%rbp) + 0x45, 0x31, 0xc0, //0x000030c6 xorl %r8d, %r8d + 0x49, 0x83, 0xf9, 0x20, //0x000030c9 cmpq $32, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000030cd movq $-48(%rbp), %r14 + 0x48, 0x8b, 0x5d, 0xc0, //0x000030d1 movq $-64(%rbp), %rbx + 0x0f, 0x83, 0xc2, 0xfb, 0xff, 0xff, //0x000030d5 jae LBB0_247 + //0x000030db LBB0_519 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000030db movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000030e0 movdqa %xmm2, %xmm5 + 0xe9, 0xbc, 0x07, 0x00, 0x00, //0x000030e4 jmp LBB0_600 + //0x000030e9 LBB0_520 + 0x48, 0x8b, 0x45, 0xc0, //0x000030e9 movq $-64(%rbp), %rax + 0x4c, 0x01, 0xe0, //0x000030ed addq %r12, %rax + 0x48, 0xc7, 0x45, 0xc8, 0xff, 0xff, 0xff, 0xff, //0x000030f0 movq $-1, $-56(%rbp) + 0x31, 0xdb, //0x000030f8 xorl %ebx, %ebx + 0x49, 0x89, 0xf2, //0x000030fa movq %rsi, %r10 + 0x48, 0x83, 0xfe, 0x20, //0x000030fd cmpq $32, %rsi + 0x0f, 0x83, 0x13, 0xfc, 0xff, 0xff, //0x00003101 jae LBB0_410 + //0x00003107 LBB0_521 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003107 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000310c movdqa %xmm2, %xmm5 + 0x48, 0x85, 0xdb, //0x00003110 testq %rbx, %rbx + 0x0f, 0x84, 0x47, 0xfd, 0xff, 0xff, //0x00003113 je LBB0_493 + //0x00003119 LBB0_522 + 0x4d, 0x85, 0xd2, //0x00003119 testq %r10, %r10 + 0x0f, 0x84, 0x97, 0x0b, 0x00, 0x00, //0x0000311c je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003122 movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003125 notq %rdx + 0x48, 0x01, 0xc2, //0x00003128 addq %rax, %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x0000312b movq $-56(%rbp), %rsi + 0x48, 0x83, 0xfe, 0xff, //0x0000312f cmpq $-1, %rsi + 0x48, 0x89, 0xf1, //0x00003133 movq %rsi, %rcx + 0x48, 0x0f, 0x44, 0xca, //0x00003136 cmoveq %rdx, %rcx + 0x48, 0x0f, 0x45, 0xd6, //0x0000313a cmovneq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x0000313e addq $1, %rax + 0x49, 0x83, 0xc2, 0xff, //0x00003142 addq $-1, %r10 + 0x48, 0x89, 0x4d, 0xc8, //0x00003146 movq %rcx, $-56(%rbp) + 0x4d, 0x85, 0xd2, //0x0000314a testq %r10, %r10 + 0x0f, 0x85, 0x1a, 0xfd, 0xff, 0xff, //0x0000314d jne LBB0_494 + 0xe9, 0x61, 0x0b, 0x00, 0x00, //0x00003153 jmp LBB0_524 + //0x00003158 LBB0_525 + 0x49, 0x39, 0xf1, //0x00003158 cmpq %rsi, %r9 + 0x0f, 0x84, 0x4e, 0x09, 0x00, 0x00, //0x0000315b je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003161 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003166 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x0000316a addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x0000316d addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x00003171 notq %rsi + 0x49, 0x01, 0xf1, //0x00003174 addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003177 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000317b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000317f movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003189 testq %r9, %r9 + 0x0f, 0x8f, 0x2d, 0x00, 0x00, 0x00, //0x0000318c jg LBB0_529 + 0xe9, 0x18, 0x09, 0x00, 0x00, //0x00003192 jmp LBB0_650 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00003197 .p2align 4, 0x90 + //0x000031a0 LBB0_527 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000031a0 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000031a7 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000031ac addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031af movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031b6 addq %rcx, %r9 + 0x0f, 0x8e, 0xf0, 0x08, 0x00, 0x00, //0x000031b9 jle LBB0_650 + //0x000031bf LBB0_529 + 0x41, 0x0f, 0xb6, 0x02, //0x000031bf movzbl (%r10), %eax + 0x3c, 0x5c, //0x000031c3 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000031c5 je LBB0_527 + 0x3c, 0x22, //0x000031cb cmpb $34, %al + 0x0f, 0x84, 0x26, 0x06, 0x00, 0x00, //0x000031cd je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000031d3 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000031da movl $1, %eax + 0x49, 0x01, 0xc2, //0x000031df addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000031e2 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000031e9 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000031ec jg LBB0_529 + 0xe9, 0xb8, 0x08, 0x00, 0x00, //0x000031f2 jmp LBB0_650 + //0x000031f7 LBB0_532 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000031f7 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000031fc movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003200 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x00003205 jne LBB0_535 + 0x48, 0x89, 0xc1, //0x0000320b movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000320e subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003211 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003215 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003218 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x0000321c jmp LBB0_535 + //0x00003221 LBB0_534 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003221 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003226 movdqa %xmm2, %xmm5 + //0x0000322a LBB0_535 + 0x44, 0x89, 0xc1, //0x0000322a movl %r8d, %ecx + 0xf7, 0xd1, //0x0000322d notl %ecx + 0x21, 0xf1, //0x0000322f andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003231 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003235 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x00003238 notl %ebx + 0x21, 0xf3, //0x0000323a andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000323c andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003242 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003245 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x00003247 setb %r8b + 0x01, 0xdb, //0x0000324b addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x0000324d xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003253 andl %edi, %ebx + 0xf7, 0xd3, //0x00003255 notl %ebx + 0x21, 0xda, //0x00003257 andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003259 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000325d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003261 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000326b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000326f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003274 testq %rdx, %rdx + 0x0f, 0x85, 0x3c, 0xf5, 0xff, 0xff, //0x00003277 jne LBB0_54 + //0x0000327d LBB0_536 + 0x48, 0x83, 0xc0, 0x20, //0x0000327d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003281 addq $-32, %r9 + //0x00003285 LBB0_537 + 0x4d, 0x85, 0xc0, //0x00003285 testq %r8, %r8 + 0x0f, 0x85, 0x19, 0x04, 0x00, 0x00, //0x00003288 jne LBB0_583 + 0x4c, 0x89, 0xe1, //0x0000328e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003291 notq %rcx + 0x48, 0x8b, 0x55, 0xc8, //0x00003294 movq $-56(%rbp), %rdx + 0x4d, 0x85, 0xc9, //0x00003298 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000329b je LBB0_549 + //0x000032a1 LBB0_539 + 0x48, 0x83, 0xc1, 0x01, //0x000032a1 addq $1, %rcx + //0x000032a5 LBB0_540 + 0x31, 0xf6, //0x000032a5 xorl %esi, %esi + //0x000032a7 LBB0_541 + 0x0f, 0xb6, 0x1c, 0x30, //0x000032a7 movzbl (%rax,%rsi), %ebx + 0x80, 0xfb, 0x22, //0x000032ab cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x000032ae je LBB0_548 + 0x80, 0xfb, 0x5c, //0x000032b4 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000032b7 je LBB0_546 + 0x48, 0x83, 0xc6, 0x01, //0x000032bd addq $1, %rsi + 0x49, 0x39, 0xf1, //0x000032c1 cmpq %rsi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000032c4 jne LBB0_541 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000032ca jmp LBB0_544 + //0x000032cf LBB0_546 + 0x49, 0x8d, 0x79, 0xff, //0x000032cf leaq $-1(%r9), %rdi + 0x48, 0x39, 0xf7, //0x000032d3 cmpq %rsi, %rdi + 0x0f, 0x84, 0xbe, 0x09, 0x00, 0x00, //0x000032d6 je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000032dc movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000032e1 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x000032e5 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xf7, //0x000032e9 addq %rsi, %rdi + 0x48, 0x83, 0xfa, 0xff, //0x000032ec cmpq $-1, %rdx + 0x48, 0x8b, 0x5d, 0xc8, //0x000032f0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000032f4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000032f8 movq %rbx, $-56(%rbp) + 0x48, 0x0f, 0x44, 0xd7, //0x000032fc cmoveq %rdi, %rdx + 0x48, 0x01, 0xf0, //0x00003300 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x00003303 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x00003307 movq %r9, %rdi + 0x48, 0x29, 0xf7, //0x0000330a subq %rsi, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x0000330d addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x00003311 addq $-2, %r9 + 0x49, 0x39, 0xf1, //0x00003315 cmpq %rsi, %r9 + 0x49, 0x89, 0xf9, //0x00003318 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x0000331b movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000331f movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003323 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x0000332d jne LBB0_540 + 0xe9, 0x43, 0x07, 0x00, 0x00, //0x00003333 jmp LBB0_624 + //0x00003338 LBB0_548 + 0x48, 0x01, 0xf0, //0x00003338 addq %rsi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x0000333b addq $1, %rax + //0x0000333f LBB0_549 + 0x4c, 0x29, 0xe0, //0x0000333f subq %r12, %rax + 0xe9, 0x28, 0xdf, 0xff, 0xff, //0x00003342 jmp LBB0_229 + //0x00003347 LBB0_544 + 0x80, 0xfb, 0x22, //0x00003347 cmpb $34, %bl + 0x0f, 0x85, 0x4a, 0x09, 0x00, 0x00, //0x0000334a jne LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003350 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003355 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003359 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000335c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003360 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003364 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000336e jmp LBB0_549 + //0x00003373 LBB0_550 + 0x48, 0x89, 0xdf, //0x00003373 movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003376 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x0000337b movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x0000337f cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0xd0, 0x00, 0x00, 0x00, //0x00003384 jne LBB0_560 + 0x49, 0x89, 0xc0, //0x0000338a movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x0000338d subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003390 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003394 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003397 movq %rbx, $-56(%rbp) + 0xe9, 0xba, 0x00, 0x00, 0x00, //0x0000339b jmp LBB0_560 + //0x000033a0 LBB0_552 + 0x49, 0x39, 0xf1, //0x000033a0 cmpq %rsi, %r9 + 0x0f, 0x84, 0x06, 0x07, 0x00, 0x00, //0x000033a3 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000033a9 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000033ae movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x000033b2 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000033b5 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x000033b9 notq %rsi + 0x49, 0x01, 0xf1, //0x000033bc addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000033bf movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000033c3 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000033c7 movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000033d1 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x000033d4 jg LBB0_556 + 0xe9, 0xd0, 0x06, 0x00, 0x00, //0x000033da jmp LBB0_650 + //0x000033df LBB0_554 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000033df movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000033e6 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000033eb addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000033ee movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000033f5 addq %rcx, %r9 + 0x0f, 0x8e, 0xb1, 0x06, 0x00, 0x00, //0x000033f8 jle LBB0_650 + //0x000033fe LBB0_556 + 0x41, 0x0f, 0xb6, 0x02, //0x000033fe movzbl (%r10), %eax + 0x3c, 0x5c, //0x00003402 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x00003404 je LBB0_554 + 0x3c, 0x22, //0x0000340a cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x0000340c je LBB0_621 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00003412 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x00003419 movl $1, %eax + 0x49, 0x01, 0xc2, //0x0000341e addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003421 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x00003428 addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x0000342b jg LBB0_556 + 0xe9, 0x79, 0x06, 0x00, 0x00, //0x00003431 jmp LBB0_650 + //0x00003436 LBB0_621 + 0x4d, 0x29, 0xe2, //0x00003436 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003439 addq $1, %r10 + 0x4d, 0x89, 0x16, //0x0000343d movq %r10, (%r14) + 0x4d, 0x85, 0xc0, //0x00003440 testq %r8, %r8 + 0x0f, 0x8f, 0xc3, 0xe3, 0xff, 0xff, //0x00003443 jg LBB0_315 + 0xe9, 0x0e, 0x06, 0x00, 0x00, //0x00003449 jmp LBB0_622 + //0x0000344e LBB0_559 + 0x48, 0x89, 0xdf, //0x0000344e movq %rbx, %rdi + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x00003451 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003456 movdqa %xmm2, %xmm6 + //0x0000345a LBB0_560 + 0x48, 0x89, 0xfb, //0x0000345a movq %rdi, %rbx + 0xf7, 0xd7, //0x0000345d notl %edi + 0x44, 0x21, 0xcf, //0x0000345f andl %r9d, %edi + 0x44, 0x8d, 0x04, 0x7b, //0x00003462 leal (%rbx,%rdi,2), %r8d + 0x8d, 0x14, 0x3f, //0x00003466 leal (%rdi,%rdi), %edx + 0xf7, 0xd2, //0x00003469 notl %edx + 0x44, 0x21, 0xca, //0x0000346b andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x0000346e andl $-1431655766, %edx + 0x31, 0xdb, //0x00003474 xorl %ebx, %ebx + 0x01, 0xfa, //0x00003476 addl %edi, %edx + 0x0f, 0x92, 0xc3, //0x00003478 setb %bl + 0x01, 0xd2, //0x0000347b addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x0000347d xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x00003483 andl %r8d, %edx + 0xf7, 0xd2, //0x00003486 notl %edx + 0x21, 0xd1, //0x00003488 andl %edx, %ecx + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000348a movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000348e movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003498 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x0000349c movdqa %xmm7, %xmm13 + 0xe9, 0xb8, 0xf3, 0xff, 0xff, //0x000034a1 jmp LBB0_175 + //0x000034a6 LBB0_561 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034a6 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034ab movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x000034af cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1f, 0x00, 0x00, 0x00, //0x000034b4 jne LBB0_564 + 0x48, 0x89, 0xc1, //0x000034ba movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x000034bd subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfb, //0x000034c0 bsfq %rbx, %rdi + 0x48, 0x01, 0xcf, //0x000034c4 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x000034c7 movq %rdi, $-56(%rbp) + 0xe9, 0x09, 0x00, 0x00, 0x00, //0x000034cb jmp LBB0_564 + //0x000034d0 LBB0_563 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000034d0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000034d5 movdqa %xmm2, %xmm5 + //0x000034d9 LBB0_564 + 0x44, 0x89, 0xc1, //0x000034d9 movl %r8d, %ecx + 0xf7, 0xd1, //0x000034dc notl %ecx + 0x21, 0xd9, //0x000034de andl %ebx, %ecx + 0x45, 0x8d, 0x14, 0x48, //0x000034e0 leal (%r8,%rcx,2), %r10d + 0x8d, 0x3c, 0x09, //0x000034e4 leal (%rcx,%rcx), %edi + 0xf7, 0xd7, //0x000034e7 notl %edi + 0x21, 0xdf, //0x000034e9 andl %ebx, %edi + 0x81, 0xe7, 0xaa, 0xaa, 0xaa, 0xaa, //0x000034eb andl $-1431655766, %edi + 0x45, 0x31, 0xc0, //0x000034f1 xorl %r8d, %r8d + 0x01, 0xcf, //0x000034f4 addl %ecx, %edi + 0x41, 0x0f, 0x92, 0xc0, //0x000034f6 setb %r8b + 0x01, 0xff, //0x000034fa addl %edi, %edi + 0x81, 0xf7, 0x55, 0x55, 0x55, 0x55, //0x000034fc xorl $1431655765, %edi + 0x44, 0x21, 0xd7, //0x00003502 andl %r10d, %edi + 0xf7, 0xd7, //0x00003505 notl %edi + 0x21, 0xfa, //0x00003507 andl %edi, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x00003509 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000350d movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003511 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000351b movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000351f movdqa %xmm6, %xmm13 + 0x48, 0x85, 0xd2, //0x00003524 testq %rdx, %rdx + 0x0f, 0x85, 0x28, 0xf4, 0xff, 0xff, //0x00003527 jne LBB0_77 + //0x0000352d LBB0_565 + 0x48, 0x83, 0xc0, 0x20, //0x0000352d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x00003531 addq $-32, %r9 + //0x00003535 LBB0_566 + 0x4d, 0x85, 0xc0, //0x00003535 testq %r8, %r8 + 0x0f, 0x85, 0xc4, 0x01, 0x00, 0x00, //0x00003538 jne LBB0_585 + 0x4c, 0x89, 0xe1, //0x0000353e movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x00003541 notq %rcx + 0x4c, 0x8b, 0x45, 0xc8, //0x00003544 movq $-56(%rbp), %r8 + 0x4d, 0x85, 0xc9, //0x00003548 testq %r9, %r9 + 0x0f, 0x84, 0x9e, 0x00, 0x00, 0x00, //0x0000354b je LBB0_578 + //0x00003551 LBB0_568 + 0x48, 0x83, 0xc1, 0x01, //0x00003551 addq $1, %rcx + //0x00003555 LBB0_569 + 0x31, 0xd2, //0x00003555 xorl %edx, %edx + //0x00003557 LBB0_570 + 0x0f, 0xb6, 0x1c, 0x10, //0x00003557 movzbl (%rax,%rdx), %ebx + 0x80, 0xfb, 0x22, //0x0000355b cmpb $34, %bl + 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, //0x0000355e je LBB0_577 + 0x80, 0xfb, 0x5c, //0x00003564 cmpb $92, %bl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x00003567 je LBB0_575 + 0x48, 0x83, 0xc2, 0x01, //0x0000356d addq $1, %rdx + 0x49, 0x39, 0xd1, //0x00003571 cmpq %rdx, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x00003574 jne LBB0_570 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x0000357a jmp LBB0_573 + //0x0000357f LBB0_575 + 0x49, 0x8d, 0x79, 0xff, //0x0000357f leaq $-1(%r9), %rdi + 0x48, 0x39, 0xd7, //0x00003583 cmpq %rdx, %rdi + 0x0f, 0x84, 0x2d, 0x07, 0x00, 0x00, //0x00003586 je LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000358c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003591 movdqa %xmm2, %xmm5 + 0x48, 0x8d, 0x3c, 0x01, //0x00003595 leaq (%rcx,%rax), %rdi + 0x48, 0x01, 0xd7, //0x00003599 addq %rdx, %rdi + 0x49, 0x83, 0xf8, 0xff, //0x0000359c cmpq $-1, %r8 + 0x48, 0x8b, 0x5d, 0xc8, //0x000035a0 movq $-56(%rbp), %rbx + 0x48, 0x0f, 0x44, 0xdf, //0x000035a4 cmoveq %rdi, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x000035a8 movq %rbx, $-56(%rbp) + 0x4c, 0x0f, 0x44, 0xc7, //0x000035ac cmoveq %rdi, %r8 + 0x48, 0x01, 0xd0, //0x000035b0 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x02, //0x000035b3 addq $2, %rax + 0x4c, 0x89, 0xcf, //0x000035b7 movq %r9, %rdi + 0x48, 0x29, 0xd7, //0x000035ba subq %rdx, %rdi + 0x48, 0x83, 0xc7, 0xfe, //0x000035bd addq $-2, %rdi + 0x49, 0x83, 0xc1, 0xfe, //0x000035c1 addq $-2, %r9 + 0x49, 0x39, 0xd1, //0x000035c5 cmpq %rdx, %r9 + 0x49, 0x89, 0xf9, //0x000035c8 movq %rdi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x000035cb movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000035cf movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000035d3 movabsq $4294977024, %r11 + 0x0f, 0x85, 0x72, 0xff, 0xff, 0xff, //0x000035dd jne LBB0_569 + 0xe9, 0xe7, 0x04, 0x00, 0x00, //0x000035e3 jmp LBB0_628 + //0x000035e8 LBB0_577 + 0x48, 0x01, 0xd0, //0x000035e8 addq %rdx, %rax + 0x48, 0x83, 0xc0, 0x01, //0x000035eb addq $1, %rax + //0x000035ef LBB0_578 + 0x4c, 0x29, 0xe0, //0x000035ef subq %r12, %rax + 0xe9, 0x00, 0xe2, 0xff, 0xff, //0x000035f2 jmp LBB0_313 + //0x000035f7 LBB0_573 + 0x80, 0xfb, 0x22, //0x000035f7 cmpb $34, %bl + 0x0f, 0x85, 0xb9, 0x06, 0x00, 0x00, //0x000035fa jne LBB0_524 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003600 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003605 movdqa %xmm2, %xmm5 + 0x4c, 0x01, 0xc8, //0x00003609 addq %r9, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x0000360c movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003610 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003614 movabsq $4294977024, %r11 + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000361e jmp LBB0_578 + //0x00003623 LBB0_579 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003623 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003627 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x1b, 0x00, 0x00, 0x00, //0x0000362c jne LBB0_582 + 0x49, 0x89, 0xc0, //0x00003632 movq %rax, %r8 + 0x4c, 0x2b, 0x45, 0xb8, //0x00003635 subq $-72(%rbp), %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003639 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x0000363d addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x00003640 movq %rbx, $-56(%rbp) + 0xe9, 0x04, 0x00, 0x00, 0x00, //0x00003644 jmp LBB0_582 + //0x00003649 LBB0_581 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003649 movdqa %xmm2, %xmm6 + //0x0000364d LBB0_582 + 0x44, 0x89, 0xe2, //0x0000364d movl %r12d, %edx + 0xf7, 0xd2, //0x00003650 notl %edx + 0x44, 0x21, 0xca, //0x00003652 andl %r9d, %edx + 0x45, 0x8d, 0x04, 0x54, //0x00003655 leal (%r12,%rdx,2), %r8d + 0x8d, 0x0c, 0x12, //0x00003659 leal (%rdx,%rdx), %ecx + 0xf7, 0xd1, //0x0000365c notl %ecx + 0x44, 0x21, 0xc9, //0x0000365e andl %r9d, %ecx + 0x81, 0xe1, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003661 andl $-1431655766, %ecx + 0x45, 0x31, 0xe4, //0x00003667 xorl %r12d, %r12d + 0x01, 0xd1, //0x0000366a addl %edx, %ecx + 0x41, 0x0f, 0x92, 0xc4, //0x0000366c setb %r12b + 0x01, 0xc9, //0x00003670 addl %ecx, %ecx + 0x81, 0xf1, 0x55, 0x55, 0x55, 0x55, //0x00003672 xorl $1431655765, %ecx + 0x44, 0x21, 0xc1, //0x00003678 andl %r8d, %ecx + 0xf7, 0xd1, //0x0000367b notl %ecx + 0x21, 0xce, //0x0000367d andl %ecx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x0000367f movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003683 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003687 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x00003691 movdqa %xmm6, %xmm2 + 0xf3, 0x44, 0x0f, 0x6f, 0x2d, 0xa2, 0xc9, 0xff, 0xff, //0x00003695 movdqu $-13918(%rip), %xmm13 /* LCPI0_4+0(%rip) */ + 0x4c, 0x8b, 0x45, 0xb8, //0x0000369e movq $-72(%rbp), %r8 + 0xe9, 0x5d, 0xf3, 0xff, 0xff, //0x000036a2 jmp LBB0_202 + //0x000036a7 LBB0_583 + 0x4d, 0x85, 0xc9, //0x000036a7 testq %r9, %r9 + 0x0f, 0x84, 0xea, 0x05, 0x00, 0x00, //0x000036aa je LBB0_508 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x000036b0 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x000036b5 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x000036b9 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x000036bc notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x000036bf leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x000036c3 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x000036c7 cmpq $-1, %rdi + 0x48, 0x89, 0xfa, //0x000036cb movq %rdi, %rdx + 0x48, 0x0f, 0x44, 0xfe, //0x000036ce cmoveq %rsi, %rdi + 0x48, 0x0f, 0x44, 0xd6, //0x000036d2 cmoveq %rsi, %rdx + 0x48, 0x83, 0xc0, 0x01, //0x000036d6 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x000036da addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x000036de movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x000036e2 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000036e6 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000036ea movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x000036f4 testq %r9, %r9 + 0x0f, 0x85, 0xa4, 0xfb, 0xff, 0xff, //0x000036f7 jne LBB0_539 + 0xe9, 0x3d, 0xfc, 0xff, 0xff, //0x000036fd jmp LBB0_549 + //0x00003702 LBB0_585 + 0x4d, 0x85, 0xc9, //0x00003702 testq %r9, %r9 + 0x0f, 0x84, 0xae, 0x05, 0x00, 0x00, //0x00003705 je LBB0_524 + 0x48, 0x89, 0xf2, //0x0000370b movq %rsi, %rdx + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000370e movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003713 movdqa %xmm2, %xmm5 + 0x4c, 0x89, 0xe1, //0x00003717 movq %r12, %rcx + 0x48, 0xf7, 0xd1, //0x0000371a notq %rcx + 0x48, 0x8d, 0x34, 0x08, //0x0000371d leaq (%rax,%rcx), %rsi + 0x48, 0x8b, 0x7d, 0xc8, //0x00003721 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003725 cmpq $-1, %rdi + 0x49, 0x89, 0xf8, //0x00003729 movq %rdi, %r8 + 0x48, 0x0f, 0x44, 0xfe, //0x0000372c cmoveq %rsi, %rdi + 0x4c, 0x0f, 0x44, 0xc6, //0x00003730 cmoveq %rsi, %r8 + 0x48, 0x83, 0xc0, 0x01, //0x00003734 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003738 addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x0000373c movq %rdi, $-56(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003740 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003744 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003748 movabsq $4294977024, %r11 + 0x48, 0x89, 0xd6, //0x00003752 movq %rdx, %rsi + 0x4d, 0x85, 0xc9, //0x00003755 testq %r9, %r9 + 0x0f, 0x85, 0xf3, 0xfd, 0xff, 0xff, //0x00003758 jne LBB0_568 + 0xe9, 0x8c, 0xfe, 0xff, 0xff, //0x0000375e jmp LBB0_578 + //0x00003763 LBB0_587 + 0x49, 0x39, 0xf1, //0x00003763 cmpq %rsi, %r9 + 0x0f, 0x84, 0x43, 0x03, 0x00, 0x00, //0x00003766 je LBB0_650 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x0000376c movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003771 movdqa %xmm2, %xmm5 + 0x49, 0x01, 0xf2, //0x00003775 addq %rsi, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x00003778 addq $1, %r10 + 0x48, 0xf7, 0xd6, //0x0000377c notq %rsi + 0x49, 0x01, 0xf1, //0x0000377f addq %rsi, %r9 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003782 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003786 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000378a movabsq $4294977024, %r11 + 0x4d, 0x85, 0xc9, //0x00003794 testq %r9, %r9 + 0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00003797 jg LBB0_591 + 0xe9, 0x0d, 0x03, 0x00, 0x00, //0x0000379d jmp LBB0_650 + //0x000037a2 LBB0_589 + 0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x000037a2 movq $-2, %rcx + 0xb8, 0x02, 0x00, 0x00, 0x00, //0x000037a9 movl $2, %eax + 0x49, 0x01, 0xc2, //0x000037ae addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037b1 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037b8 addq %rcx, %r9 + 0x0f, 0x8e, 0xee, 0x02, 0x00, 0x00, //0x000037bb jle LBB0_650 + //0x000037c1 LBB0_591 + 0x41, 0x0f, 0xb6, 0x02, //0x000037c1 movzbl (%r10), %eax + 0x3c, 0x5c, //0x000037c5 cmpb $92, %al + 0x0f, 0x84, 0xd5, 0xff, 0xff, 0xff, //0x000037c7 je LBB0_589 + 0x3c, 0x22, //0x000037cd cmpb $34, %al + 0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x000037cf je LBB0_594 + 0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000037d5 movq $-1, %rcx + 0xb8, 0x01, 0x00, 0x00, 0x00, //0x000037dc movl $1, %eax + 0x49, 0x01, 0xc2, //0x000037e1 addq %rax, %r10 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000037e4 movq $-1, %rax + 0x49, 0x01, 0xc9, //0x000037eb addq %rcx, %r9 + 0x0f, 0x8f, 0xcd, 0xff, 0xff, 0xff, //0x000037ee jg LBB0_591 + 0xe9, 0xb6, 0x02, 0x00, 0x00, //0x000037f4 jmp LBB0_650 + //0x000037f9 LBB0_594 + 0x4d, 0x29, 0xe2, //0x000037f9 subq %r12, %r10 + 0x49, 0x83, 0xc2, 0x01, //0x000037fc addq $1, %r10 + 0xe9, 0xbe, 0xc9, 0xff, 0xff, //0x00003800 jmp LBB0_2 + //0x00003805 LBB0_595 + 0x49, 0x89, 0xda, //0x00003805 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003808 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000380d movdqa %xmm2, %xmm5 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003811 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003816 jne LBB0_598 + 0x48, 0x89, 0xc1, //0x0000381c movq %rax, %rcx + 0x4c, 0x29, 0xe1, //0x0000381f subq %r12, %rcx + 0x48, 0x0f, 0xbc, 0xfe, //0x00003822 bsfq %rsi, %rdi + 0x48, 0x01, 0xcf, //0x00003826 addq %rcx, %rdi + 0x48, 0x89, 0x7d, 0xc8, //0x00003829 movq %rdi, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x0000382d jmp LBB0_598 + //0x00003832 LBB0_597 + 0x49, 0x89, 0xda, //0x00003832 movq %rbx, %r10 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003835 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x0000383a movdqa %xmm2, %xmm5 + //0x0000383e LBB0_598 + 0x44, 0x89, 0xc1, //0x0000383e movl %r8d, %ecx + 0xf7, 0xd1, //0x00003841 notl %ecx + 0x21, 0xf1, //0x00003843 andl %esi, %ecx + 0x41, 0x8d, 0x3c, 0x48, //0x00003845 leal (%r8,%rcx,2), %edi + 0x8d, 0x1c, 0x09, //0x00003849 leal (%rcx,%rcx), %ebx + 0xf7, 0xd3, //0x0000384c notl %ebx + 0x21, 0xf3, //0x0000384e andl %esi, %ebx + 0x81, 0xe3, 0xaa, 0xaa, 0xaa, 0xaa, //0x00003850 andl $-1431655766, %ebx + 0x45, 0x31, 0xc0, //0x00003856 xorl %r8d, %r8d + 0x01, 0xcb, //0x00003859 addl %ecx, %ebx + 0x41, 0x0f, 0x92, 0xc0, //0x0000385b setb %r8b + 0x01, 0xdb, //0x0000385f addl %ebx, %ebx + 0x81, 0xf3, 0x55, 0x55, 0x55, 0x55, //0x00003861 xorl $1431655765, %ebx + 0x21, 0xfb, //0x00003867 andl %edi, %ebx + 0xf7, 0xd3, //0x00003869 notl %ebx + 0x21, 0xda, //0x0000386b andl %ebx, %edx + 0x4c, 0x8b, 0x75, 0xd0, //0x0000386d movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x00003871 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00003875 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x0000387f movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x00003883 movdqa %xmm6, %xmm13 + 0x4c, 0x89, 0xd3, //0x00003888 movq %r10, %rbx + 0x48, 0x85, 0xd2, //0x0000388b testq %rdx, %rdx + 0x0f, 0x85, 0x63, 0xf4, 0xff, 0xff, //0x0000388e jne LBB0_250 + //0x00003894 LBB0_599 + 0x66, 0x41, 0x0f, 0x6f, 0xf5, //0x00003894 movdqa %xmm13, %xmm6 + 0x66, 0x0f, 0x6f, 0xea, //0x00003899 movdqa %xmm2, %xmm5 + 0x48, 0x83, 0xc0, 0x20, //0x0000389d addq $32, %rax + 0x49, 0x83, 0xc1, 0xe0, //0x000038a1 addq $-32, %r9 + //0x000038a5 LBB0_600 + 0x4d, 0x85, 0xc0, //0x000038a5 testq %r8, %r8 + 0x0f, 0x85, 0x53, 0x01, 0x00, 0x00, //0x000038a8 jne LBB0_617 + 0x4c, 0x89, 0xe2, //0x000038ae movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x000038b1 notq %rdx + 0x48, 0x8b, 0x75, 0xc8, //0x000038b4 movq $-56(%rbp), %rsi + 0x4d, 0x85, 0xc9, //0x000038b8 testq %r9, %r9 + 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, //0x000038bb je LBB0_612 + //0x000038c1 LBB0_602 + 0x48, 0x83, 0xc2, 0x01, //0x000038c1 addq $1, %rdx + //0x000038c5 LBB0_603 + 0x31, 0xff, //0x000038c5 xorl %edi, %edi + //0x000038c7 LBB0_604 + 0x0f, 0xb6, 0x0c, 0x38, //0x000038c7 movzbl (%rax,%rdi), %ecx + 0x80, 0xf9, 0x22, //0x000038cb cmpb $34, %cl + 0x0f, 0x84, 0x69, 0x00, 0x00, 0x00, //0x000038ce je LBB0_611 + 0x80, 0xf9, 0x5c, //0x000038d4 cmpb $92, %cl + 0x0f, 0x84, 0x12, 0x00, 0x00, 0x00, //0x000038d7 je LBB0_609 + 0x48, 0x83, 0xc7, 0x01, //0x000038dd addq $1, %rdi + 0x49, 0x39, 0xf9, //0x000038e1 cmpq %rdi, %r9 + 0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x000038e4 jne LBB0_604 + 0xe9, 0x78, 0x00, 0x00, 0x00, //0x000038ea jmp LBB0_607 + //0x000038ef LBB0_609 + 0x49, 0x8d, 0x49, 0xff, //0x000038ef leaq $-1(%r9), %rcx + 0x48, 0x39, 0xf9, //0x000038f3 cmpq %rdi, %rcx + 0x0f, 0x84, 0xbd, 0x03, 0x00, 0x00, //0x000038f6 je LBB0_524 + 0x4c, 0x8d, 0x04, 0x02, //0x000038fc leaq (%rdx,%rax), %r8 + 0x49, 0x01, 0xf8, //0x00003900 addq %rdi, %r8 + 0x48, 0x83, 0xfe, 0xff, //0x00003903 cmpq $-1, %rsi + 0x48, 0x8b, 0x4d, 0xc8, //0x00003907 movq $-56(%rbp), %rcx + 0x49, 0x0f, 0x44, 0xc8, //0x0000390b cmoveq %r8, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x0000390f movq %rcx, $-56(%rbp) + 0x49, 0x0f, 0x44, 0xf0, //0x00003913 cmoveq %r8, %rsi + 0x48, 0x01, 0xf8, //0x00003917 addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x02, //0x0000391a addq $2, %rax + 0x4c, 0x89, 0xc9, //0x0000391e movq %r9, %rcx + 0x48, 0x29, 0xf9, //0x00003921 subq %rdi, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003924 addq $-2, %rcx + 0x49, 0x83, 0xc1, 0xfe, //0x00003928 addq $-2, %r9 + 0x49, 0x39, 0xf9, //0x0000392c cmpq %rdi, %r9 + 0x49, 0x89, 0xc9, //0x0000392f movq %rcx, %r9 + 0x0f, 0x85, 0x8d, 0xff, 0xff, 0xff, //0x00003932 jne LBB0_603 + 0xe9, 0x7c, 0x03, 0x00, 0x00, //0x00003938 jmp LBB0_524 + //0x0000393d LBB0_611 + 0x48, 0x01, 0xf8, //0x0000393d addq %rdi, %rax + 0x48, 0x83, 0xc0, 0x01, //0x00003940 addq $1, %rax + //0x00003944 LBB0_612 + 0x4c, 0x29, 0xe0, //0x00003944 subq %r12, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003947 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x0000394b movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x0000394f movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd5, //0x00003959 movdqa %xmm5, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xee, //0x0000395d movdqa %xmm6, %xmm13 + 0xe9, 0xfc, 0xec, 0xff, 0xff, //0x00003962 jmp LBB0_441 + //0x00003967 LBB0_607 + 0x80, 0xf9, 0x22, //0x00003967 cmpb $34, %cl + 0x0f, 0x85, 0x49, 0x03, 0x00, 0x00, //0x0000396a jne LBB0_524 + 0x4c, 0x01, 0xc8, //0x00003970 addq %r9, %rax + 0xe9, 0xcc, 0xff, 0xff, 0xff, //0x00003973 jmp LBB0_612 + //0x00003978 LBB0_613 + 0x48, 0x89, 0xd9, //0x00003978 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x0000397b movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x00003980 movdqa %xmm2, %xmm6 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003984 cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x22, 0x00, 0x00, 0x00, //0x00003989 jne LBB0_616 + 0x49, 0x89, 0xc0, //0x0000398f movq %rax, %r8 + 0x4d, 0x29, 0xe0, //0x00003992 subq %r12, %r8 + 0x49, 0x0f, 0xbc, 0xd9, //0x00003995 bsfq %r9, %rbx + 0x4c, 0x01, 0xc3, //0x00003999 addq %r8, %rbx + 0x48, 0x89, 0x5d, 0xc8, //0x0000399c movq %rbx, $-56(%rbp) + 0xe9, 0x0c, 0x00, 0x00, 0x00, //0x000039a0 jmp LBB0_616 + //0x000039a5 LBB0_615 + 0x48, 0x89, 0xd9, //0x000039a5 movq %rbx, %rcx + 0x66, 0x41, 0x0f, 0x6f, 0xfd, //0x000039a8 movdqa %xmm13, %xmm7 + 0x66, 0x0f, 0x6f, 0xf2, //0x000039ad movdqa %xmm2, %xmm6 + //0x000039b1 LBB0_616 + 0x48, 0x89, 0xcb, //0x000039b1 movq %rcx, %rbx + 0xf7, 0xd1, //0x000039b4 notl %ecx + 0x44, 0x21, 0xc9, //0x000039b6 andl %r9d, %ecx + 0x44, 0x8d, 0x04, 0x4b, //0x000039b9 leal (%rbx,%rcx,2), %r8d + 0x8d, 0x14, 0x09, //0x000039bd leal (%rcx,%rcx), %edx + 0xf7, 0xd2, //0x000039c0 notl %edx + 0x44, 0x21, 0xca, //0x000039c2 andl %r9d, %edx + 0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x000039c5 andl $-1431655766, %edx + 0x31, 0xdb, //0x000039cb xorl %ebx, %ebx + 0x01, 0xca, //0x000039cd addl %ecx, %edx + 0x0f, 0x92, 0xc3, //0x000039cf setb %bl + 0x01, 0xd2, //0x000039d2 addl %edx, %edx + 0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x000039d4 xorl $1431655765, %edx + 0x44, 0x21, 0xc2, //0x000039da andl %r8d, %edx + 0xf7, 0xd2, //0x000039dd notl %edx + 0x21, 0xd6, //0x000039df andl %edx, %esi + 0x4c, 0x8b, 0x75, 0xd0, //0x000039e1 movq $-48(%rbp), %r14 + 0x4c, 0x8b, 0x6d, 0xb0, //0x000039e5 movq $-80(%rbp), %r13 + 0x49, 0xbb, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x000039e9 movabsq $4294977024, %r11 + 0x66, 0x0f, 0x6f, 0xd6, //0x000039f3 movdqa %xmm6, %xmm2 + 0x66, 0x44, 0x0f, 0x6f, 0xef, //0x000039f7 movdqa %xmm7, %xmm13 + 0xe9, 0x9a, 0xf3, 0xff, 0xff, //0x000039fc jmp LBB0_413 + //0x00003a01 LBB0_617 + 0x4d, 0x85, 0xc9, //0x00003a01 testq %r9, %r9 + 0x0f, 0x84, 0xaf, 0x02, 0x00, 0x00, //0x00003a04 je LBB0_524 + 0x4c, 0x89, 0xe2, //0x00003a0a movq %r12, %rdx + 0x48, 0xf7, 0xd2, //0x00003a0d notq %rdx + 0x48, 0x8d, 0x0c, 0x10, //0x00003a10 leaq (%rax,%rdx), %rcx + 0x48, 0x8b, 0x7d, 0xc8, //0x00003a14 movq $-56(%rbp), %rdi + 0x48, 0x83, 0xff, 0xff, //0x00003a18 cmpq $-1, %rdi + 0x48, 0x89, 0xfe, //0x00003a1c movq %rdi, %rsi + 0x48, 0x0f, 0x44, 0xf9, //0x00003a1f cmoveq %rcx, %rdi + 0x48, 0x0f, 0x44, 0xf1, //0x00003a23 cmoveq %rcx, %rsi + 0x48, 0x83, 0xc0, 0x01, //0x00003a27 addq $1, %rax + 0x49, 0x83, 0xc1, 0xff, //0x00003a2b addq $-1, %r9 + 0x48, 0x89, 0x7d, 0xc8, //0x00003a2f movq %rdi, $-56(%rbp) + 0x4d, 0x85, 0xc9, //0x00003a33 testq %r9, %r9 + 0x0f, 0x85, 0x85, 0xfe, 0xff, 0xff, //0x00003a36 jne LBB0_602 + 0xe9, 0x03, 0xff, 0xff, 0xff, //0x00003a3c jmp LBB0_612 + //0x00003a41 LBB0_619 + 0x49, 0x89, 0x36, //0x00003a41 movq %rsi, (%r14) + //0x00003a44 LBB0_620 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a44 movq $-1, %rax + 0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00003a4b jmp LBB0_650 + //0x00003a50 LBB0_651 + 0x48, 0xc7, 0xc0, 0xf9, 0xff, 0xff, 0xff, //0x00003a50 movq $-7, %rax + 0xe9, 0x53, 0x00, 0x00, 0x00, //0x00003a57 jmp LBB0_650 + //0x00003a5c LBB0_622 + 0x49, 0x83, 0xc0, 0xff, //0x00003a5c addq $-1, %r8 + 0x4c, 0x89, 0xc0, //0x00003a60 movq %r8, %rax + 0xe9, 0x47, 0x00, 0x00, 0x00, //0x00003a63 jmp LBB0_650 + //0x00003a68 LBB0_232 + 0x48, 0x83, 0xc0, 0xff, //0x00003a68 addq $-1, %rax + 0xe9, 0x3e, 0x00, 0x00, 0x00, //0x00003a6c jmp LBB0_650 + //0x00003a71 LBB0_623 + 0x48, 0x83, 0xf8, 0xff, //0x00003a71 cmpq $-1, %rax + 0x0f, 0x85, 0x94, 0x00, 0x00, 0x00, //0x00003a75 jne LBB0_634 + //0x00003a7b LBB0_624 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003a7b movq $-1, %rax + 0x48, 0x8b, 0x4d, 0xa0, //0x00003a82 movq $-96(%rbp), %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003a86 movq %rcx, $-56(%rbp) + 0xe9, 0x80, 0x00, 0x00, 0x00, //0x00003a8a jmp LBB0_634 + //0x00003a8f LBB0_625 + 0x49, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, //0x00003a8f movq $-1, %r13 + //0x00003a96 LBB0_626 + 0x48, 0x8b, 0x4d, 0xc0, //0x00003a96 movq $-64(%rbp), %rcx + 0x4c, 0x29, 0xe9, //0x00003a9a subq %r13, %rcx + 0x48, 0x83, 0xc1, 0xfe, //0x00003a9d addq $-2, %rcx + 0x48, 0x8b, 0x45, 0xd0, //0x00003aa1 movq $-48(%rbp), %rax + 0x48, 0x89, 0x08, //0x00003aa5 movq %rcx, (%rax) + //0x00003aa8 LBB0_649 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003aa8 movq $-2, %rax + //0x00003aaf LBB0_650 + 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, //0x00003aaf addq $136, %rsp + 0x5b, //0x00003ab6 popq %rbx + 0x41, 0x5c, //0x00003ab7 popq %r12 + 0x41, 0x5d, //0x00003ab9 popq %r13 + 0x41, 0x5e, //0x00003abb popq %r14 + 0x41, 0x5f, //0x00003abd popq %r15 + 0x5d, //0x00003abf popq %rbp + 0xc3, //0x00003ac0 retq + //0x00003ac1 LBB0_627 + 0x48, 0x83, 0xf8, 0xff, //0x00003ac1 cmpq $-1, %rax + 0x48, 0x8b, 0x55, 0xc8, //0x00003ac5 movq $-56(%rbp), %rdx + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003ac9 jne LBB0_629 + //0x00003acf LBB0_628 + 0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00003acf movq $-1, %rax + 0x48, 0x8b, 0x55, 0xa0, //0x00003ad6 movq $-96(%rbp), %rdx + //0x00003ada LBB0_629 0x49, 0x89, 0x16, //0x00003ada movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003add cmpb $115, $2(%r12,%rcx) - 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003ae3 jne LBB0_638 - 0x48, 0x8d, 0x51, 0x03, //0x00003ae9 leaq $3(%rcx), %rdx - 0x49, 0x89, 0x16, //0x00003aed movq %rdx, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003af0 cmpb $101, $3(%r12,%rcx) - 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003af6 jne LBB0_638 - 0x48, 0x83, 0xc1, 0x04, //0x00003afc addq $4, %rcx - 0x49, 0x89, 0x0e, //0x00003b00 movq %rcx, (%r14) - 0xe9, 0x3f, 0xff, 0xff, 0xff, //0x00003b03 jmp LBB0_638 - //0x00003b08 LBB0_627 - 0x49, 0x89, 0x06, //0x00003b08 movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b0b cmpb $116, (%r12,%rax) - 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b10 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b16 movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b19 cmpb $114, (%r12,%rcx) - 0x0f, 0x85, 0x1c, 0xff, 0xff, 0xff, //0x00003b1e jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b24 leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b28 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b2b cmpb $117, $1(%r12,%rcx) - 0x0f, 0x85, 0x09, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b37 leaq $2(%rcx), %rax + 0xe9, 0xcd, 0xff, 0xff, 0xff, //0x00003add jmp LBB0_650 + //0x00003ae2 LBB0_630 + 0x48, 0x83, 0xc6, 0xff, //0x00003ae2 addq $-1, %rsi + 0x48, 0x89, 0xf0, //0x00003ae6 movq %rsi, %rax + 0xe9, 0xc1, 0xff, 0xff, 0xff, //0x00003ae9 jmp LBB0_650 + //0x00003aee LBB0_631 + 0x48, 0x83, 0x7d, 0xc8, 0xff, //0x00003aee cmpq $-1, $-56(%rbp) + 0x0f, 0x85, 0x0b, 0x00, 0x00, 0x00, //0x00003af3 jne LBB0_633 + 0x48, 0x0f, 0xbc, 0xcf, //0x00003af9 bsfq %rdi, %rcx + 0x48, 0x01, 0xc1, //0x00003afd addq %rax, %rcx + 0x48, 0x89, 0x4d, 0xc8, //0x00003b00 movq %rcx, $-56(%rbp) + //0x00003b04 LBB0_633 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003b04 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003b0b movq $-48(%rbp), %r14 + //0x00003b0f LBB0_634 + 0x48, 0x8b, 0x4d, 0xc8, //0x00003b0f movq $-56(%rbp), %rcx + 0x49, 0x89, 0x0e, //0x00003b13 movq %rcx, (%r14) + 0xe9, 0x94, 0xff, 0xff, 0xff, //0x00003b16 jmp LBB0_650 + //0x00003b1b LBB0_635 + 0x49, 0x89, 0x06, //0x00003b1b movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x74, //0x00003b1e cmpb $116, (%r12,%rax) + 0x0f, 0x85, 0x7f, 0xff, 0xff, 0xff, //0x00003b23 jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b29 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x72, //0x00003b2c cmpb $114, (%r12,%rcx) + 0x0f, 0x85, 0x71, 0xff, 0xff, 0xff, //0x00003b31 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b37 leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b3b movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b3e cmpb $101, $2(%r12,%rcx) - 0x0f, 0x85, 0xf6, 0xfe, 0xff, 0xff, //0x00003b44 jne LBB0_637 - 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b4a jmp LBB0_631 - //0x00003b4f LBB0_289 - 0x49, 0x89, 0x06, //0x00003b4f movq %rax, (%r14) - 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b52 cmpb $110, (%r12,%rax) - 0x0f, 0x85, 0xe3, 0xfe, 0xff, 0xff, //0x00003b57 jne LBB0_637 - 0x49, 0x89, 0x0e, //0x00003b5d movq %rcx, (%r14) - 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b60 cmpb $117, (%r12,%rcx) - 0x0f, 0x85, 0xd5, 0xfe, 0xff, 0xff, //0x00003b65 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x01, //0x00003b6b leaq $1(%rcx), %rax - 0x49, 0x89, 0x06, //0x00003b6f movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b72 cmpb $108, $1(%r12,%rcx) - 0x0f, 0x85, 0xc2, 0xfe, 0xff, 0xff, //0x00003b78 jne LBB0_637 - 0x48, 0x8d, 0x41, 0x02, //0x00003b7e leaq $2(%rcx), %rax + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x75, //0x00003b3e cmpb $117, $1(%r12,%rcx) + 0x0f, 0x85, 0x5e, 0xff, 0xff, 0xff, //0x00003b44 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b4a leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b4e movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x65, //0x00003b51 cmpb $101, $2(%r12,%rcx) + 0x0f, 0x85, 0x4b, 0xff, 0xff, 0xff, //0x00003b57 jne LBB0_649 + 0xe9, 0x42, 0x00, 0x00, 0x00, //0x00003b5d jmp LBB0_639 + //0x00003b62 LBB0_297 + 0x49, 0x89, 0x06, //0x00003b62 movq %rax, (%r14) + 0x41, 0x80, 0x3c, 0x04, 0x6e, //0x00003b65 cmpb $110, (%r12,%rax) + 0x0f, 0x85, 0x38, 0xff, 0xff, 0xff, //0x00003b6a jne LBB0_649 + 0x49, 0x89, 0x0e, //0x00003b70 movq %rcx, (%r14) + 0x41, 0x80, 0x3c, 0x0c, 0x75, //0x00003b73 cmpb $117, (%r12,%rcx) + 0x0f, 0x85, 0x2a, 0xff, 0xff, 0xff, //0x00003b78 jne LBB0_649 + 0x48, 0x8d, 0x41, 0x01, //0x00003b7e leaq $1(%rcx), %rax 0x49, 0x89, 0x06, //0x00003b82 movq %rax, (%r14) - 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b85 cmpb $108, $2(%r12,%rcx) - 0x0f, 0x85, 0xaf, 0xfe, 0xff, 0xff, //0x00003b8b jne LBB0_637 - //0x00003b91 LBB0_631 - 0x48, 0x83, 0xc1, 0x03, //0x00003b91 addq $3, %rcx - 0x49, 0x89, 0x0e, //0x00003b95 movq %rcx, (%r14) - 0xe9, 0xa3, 0xfe, 0xff, 0xff, //0x00003b98 jmp LBB0_637 - //0x00003b9d LBB0_228 - 0x48, 0x83, 0xc1, 0xff, //0x00003b9d addq $-1, %rcx - 0x48, 0x89, 0xc8, //0x00003ba1 movq %rcx, %rax - 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003ba4 jmp LBB0_638 - //0x00003ba9 LBB0_632 - 0x48, 0x8b, 0x55, 0xc8, //0x00003ba9 movq $-56(%rbp), %rdx - 0x48, 0x83, 0xfa, 0xff, //0x00003bad cmpq $-1, %rdx - 0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x00003bb1 je LBB0_639 - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb7 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bbe movq %rdx, (%r14) - 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003bc1 jmp LBB0_638 - //0x00003bc6 LBB0_185 - 0x48, 0x8b, 0x75, 0xc0, //0x00003bc6 movq $-64(%rbp), %rsi - 0xe9, 0x63, 0xfe, 0xff, 0xff, //0x00003bca jmp LBB0_612 - //0x00003bcf LBB0_635 - 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003bcf movq $-1, %rbx - //0x00003bd6 LBB0_636 - 0x48, 0xf7, 0xd3, //0x00003bd6 notq %rbx - 0x48, 0x01, 0xd8, //0x00003bd9 addq %rbx, %rax - 0x48, 0x8b, 0x4d, 0xd0, //0x00003bdc movq $-48(%rbp), %rcx - 0x48, 0x89, 0x01, //0x00003be0 movq %rax, (%rcx) - 0xe9, 0x58, 0xfe, 0xff, 0xff, //0x00003be3 jmp LBB0_637 - //0x00003be8 LBB0_639 - 0x48, 0x0f, 0xbc, 0xd7, //0x00003be8 bsfq %rdi, %rdx - //0x00003bec LBB0_640 - 0x48, 0x01, 0xc2, //0x00003bec addq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bef movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003bf6 movq %rdx, (%r14) - 0xe9, 0x49, 0xfe, 0xff, 0xff, //0x00003bf9 jmp LBB0_638 - //0x00003bfe LBB0_642 - 0x48, 0x8b, 0x45, 0xb0, //0x00003bfe movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c02 movq %rax, $-96(%rbp) - 0xe9, 0x0c, 0xfe, 0xff, 0xff, //0x00003c06 jmp LBB0_610 - //0x00003c0b LBB0_643 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c0b movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c0f movq %rax, $-96(%rbp) - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c13 movq $-48(%rbp), %r14 - 0xe9, 0xfb, 0xfd, 0xff, 0xff, //0x00003c17 jmp LBB0_610 - //0x00003c1c LBB0_182 - 0x48, 0x01, 0xc2, //0x00003c1c addq %rax, %rdx + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003b85 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0x17, 0xff, 0xff, 0xff, //0x00003b8b jne LBB0_649 + 0x48, 0x8d, 0x41, 0x02, //0x00003b91 leaq $2(%rcx), %rax + 0x49, 0x89, 0x06, //0x00003b95 movq %rax, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x6c, //0x00003b98 cmpb $108, $2(%r12,%rcx) + 0x0f, 0x85, 0x04, 0xff, 0xff, 0xff, //0x00003b9e jne LBB0_649 + //0x00003ba4 LBB0_639 + 0x48, 0x83, 0xc1, 0x03, //0x00003ba4 addq $3, %rcx + 0x49, 0x89, 0x0e, //0x00003ba8 movq %rcx, (%r14) + 0xe9, 0xf8, 0xfe, 0xff, 0xff, //0x00003bab jmp LBB0_649 + //0x00003bb0 LBB0_640 + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003bb0 movq $-2, %rax + 0x80, 0xfa, 0x61, //0x00003bb7 cmpb $97, %dl + 0x0f, 0x85, 0xef, 0xfe, 0xff, 0xff, //0x00003bba jne LBB0_650 + 0x48, 0x8d, 0x51, 0x01, //0x00003bc0 leaq $1(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bc4 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x01, 0x6c, //0x00003bc7 cmpb $108, $1(%r12,%rcx) + 0x0f, 0x85, 0xdc, 0xfe, 0xff, 0xff, //0x00003bcd jne LBB0_650 + 0x48, 0x8d, 0x51, 0x02, //0x00003bd3 leaq $2(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bd7 movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x02, 0x73, //0x00003bda cmpb $115, $2(%r12,%rcx) + 0x0f, 0x85, 0xc9, 0xfe, 0xff, 0xff, //0x00003be0 jne LBB0_650 + 0x48, 0x8d, 0x51, 0x03, //0x00003be6 leaq $3(%rcx), %rdx + 0x49, 0x89, 0x16, //0x00003bea movq %rdx, (%r14) + 0x41, 0x80, 0x7c, 0x0c, 0x03, 0x65, //0x00003bed cmpb $101, $3(%r12,%rcx) + 0x0f, 0x85, 0xb6, 0xfe, 0xff, 0xff, //0x00003bf3 jne LBB0_650 + 0x48, 0x83, 0xc1, 0x04, //0x00003bf9 addq $4, %rcx + 0x49, 0x89, 0x0e, //0x00003bfd movq %rcx, (%r14) + 0xe9, 0xaa, 0xfe, 0xff, 0xff, //0x00003c00 jmp LBB0_650 + //0x00003c05 LBB0_236 + 0x48, 0x83, 0xc1, 0xff, //0x00003c05 addq $-1, %rcx + 0x48, 0x89, 0xc8, //0x00003c09 movq %rcx, %rax + 0xe9, 0x9e, 0xfe, 0xff, 0xff, //0x00003c0c jmp LBB0_650 + //0x00003c11 LBB0_645 + 0x48, 0x8b, 0x55, 0xc8, //0x00003c11 movq $-56(%rbp), %rdx + 0x48, 0x83, 0xfa, 0xff, //0x00003c15 cmpq $-1, %rdx + 0x0f, 0x84, 0x34, 0x00, 0x00, 0x00, //0x00003c19 je LBB0_653 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c1f movq $-2, %rax - 0x48, 0x89, 0x55, 0xc8, //0x00003c26 movq %rdx, $-56(%rbp) - 0xe9, 0x78, 0xfe, 0xff, 0xff, //0x00003c2a jmp LBB0_621 - //0x00003c2f LBB0_490 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c2f movq $-48(%rbp), %r14 - 0xe9, 0xdf, 0xfd, 0xff, 0xff, //0x00003c33 jmp LBB0_610 - //0x00003c38 LBB0_646 - 0x48, 0x8b, 0x45, 0xb0, //0x00003c38 movq $-80(%rbp), %rax - 0x48, 0x89, 0x45, 0xa0, //0x00003c3c movq %rax, $-96(%rbp) - 0xe9, 0x2e, 0xfe, 0xff, 0xff, //0x00003c40 jmp LBB0_616 - //0x00003c45 LBB0_644 - 0x48, 0x89, 0x4d, 0xa0, //0x00003c45 movq %rcx, $-96(%rbp) - 0xe9, 0x25, 0xfe, 0xff, 0xff, //0x00003c49 jmp LBB0_616 - //0x00003c4e LBB0_507 - 0x4c, 0x8b, 0x75, 0xd0, //0x00003c4e movq $-48(%rbp), %r14 - 0xe9, 0x1c, 0xfe, 0xff, 0xff, //0x00003c52 jmp LBB0_616 - //0x00003c57 LBB0_648 - 0x48, 0x8b, 0x4d, 0xa8, //0x00003c57 movq $-88(%rbp), %rcx - 0x48, 0x8b, 0x49, 0x08, //0x00003c5b movq $8(%rcx), %rcx - 0x48, 0x8b, 0x55, 0xd0, //0x00003c5f movq $-48(%rbp), %rdx - 0x48, 0x89, 0x0a, //0x00003c63 movq %rcx, (%rdx) - 0xe9, 0xdc, 0xfd, 0xff, 0xff, //0x00003c66 jmp LBB0_638 - //0x00003c6b LBB0_649 - 0x4c, 0x29, 0xe0, //0x00003c6b subq %r12, %rax - 0x48, 0x01, 0xd0, //0x00003c6e addq %rdx, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c71 movq %rax, $-56(%rbp) - 0xe9, 0x22, 0xfe, 0xff, 0xff, //0x00003c75 jmp LBB0_620 - //0x00003c7a LBB0_650 - 0x4c, 0x29, 0xc0, //0x00003c7a subq %r8, %rax - 0x48, 0x01, 0xc8, //0x00003c7d addq %rcx, %rax - 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003c80 jmp LBB0_653 - //0x00003c85 LBB0_651 - 0x4c, 0x29, 0xe0, //0x00003c85 subq %r12, %rax - 0x48, 0x89, 0x45, 0xc8, //0x00003c88 movq %rax, $-56(%rbp) - 0xe9, 0x0b, 0xfe, 0xff, 0xff, //0x00003c8c jmp LBB0_620 - //0x00003c91 LBB0_652 - 0x4c, 0x29, 0xc0, //0x00003c91 subq %r8, %rax - //0x00003c94 LBB0_653 - 0x48, 0x89, 0xc2, //0x00003c94 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c97 movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003c9e movq %rdx, (%r14) - 0xe9, 0xa1, 0xfd, 0xff, 0xff, //0x00003ca1 jmp LBB0_638 - //0x00003ca6 LBB0_654 - 0x48, 0x01, 0xc8, //0x00003ca6 addq %rcx, %rax - 0x48, 0x89, 0xc2, //0x00003ca9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003cac movq $-2, %rax - 0x49, 0x89, 0x16, //0x00003cb3 movq %rdx, (%r14) - 0xe9, 0x8c, 0xfd, 0xff, 0xff, //0x00003cb6 jmp LBB0_638 - //0x00003cbb LBB0_655 - 0x4c, 0x29, 0xe0, //0x00003cbb subq %r12, %rax - 0x48, 0x01, 0xc8, //0x00003cbe addq %rcx, %rax - 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003cc1 jmp LBB0_657 - //0x00003cc6 LBB0_656 - 0x4c, 0x29, 0xe0, //0x00003cc6 subq %r12, %rax - //0x00003cc9 LBB0_657 - 0x48, 0x89, 0xc2, //0x00003cc9 movq %rax, %rdx - 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003ccc movq $-2, %rax - 0x4c, 0x8b, 0x75, 0xd0, //0x00003cd3 movq $-48(%rbp), %r14 - 0x49, 0x89, 0x16, //0x00003cd7 movq %rdx, (%r14) - 0xe9, 0x68, 0xfd, 0xff, 0xff, //0x00003cda jmp LBB0_638 - 0x90, //0x00003cdf .p2align 2, 0x90 + 0x49, 0x89, 0x16, //0x00003c26 movq %rdx, (%r14) + 0xe9, 0x81, 0xfe, 0xff, 0xff, //0x00003c29 jmp LBB0_650 + //0x00003c2e LBB0_647 + 0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00003c2e movq $-1, %rbx + //0x00003c35 LBB0_648 + 0x48, 0xf7, 0xd3, //0x00003c35 notq %rbx + 0x48, 0x01, 0xd8, //0x00003c38 addq %rbx, %rax + 0x48, 0x8b, 0x4d, 0xd0, //0x00003c3b movq $-48(%rbp), %rcx + 0x48, 0x89, 0x01, //0x00003c3f movq %rax, (%rcx) + 0xe9, 0x61, 0xfe, 0xff, 0xff, //0x00003c42 jmp LBB0_649 + //0x00003c47 LBB0_443 + 0x48, 0x83, 0xc3, 0xff, //0x00003c47 addq $-1, %rbx + 0x48, 0x89, 0xd8, //0x00003c4b movq %rbx, %rax + 0xe9, 0x5c, 0xfe, 0xff, 0xff, //0x00003c4e jmp LBB0_650 + //0x00003c53 LBB0_653 + 0x48, 0x0f, 0xbc, 0xd6, //0x00003c53 bsfq %rsi, %rdx + //0x00003c57 LBB0_654 + 0x48, 0x01, 0xc2, //0x00003c57 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c5a movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003c61 movq %rdx, (%r14) + 0xe9, 0x46, 0xfe, 0xff, 0xff, //0x00003c64 jmp LBB0_650 + //0x00003c69 LBB0_656 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c69 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c6d movq %rax, $-96(%rbp) + 0xe9, 0x05, 0xfe, 0xff, 0xff, //0x00003c71 jmp LBB0_624 + //0x00003c76 LBB0_657 + 0x48, 0x8b, 0x45, 0xc0, //0x00003c76 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003c7a movq %rax, $-96(%rbp) + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c7e movq $-48(%rbp), %r14 + 0xe9, 0xf4, 0xfd, 0xff, 0xff, //0x00003c82 jmp LBB0_624 + //0x00003c87 LBB0_187 + 0x48, 0x01, 0xc2, //0x00003c87 addq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003c8a movq $-2, %rax + 0x48, 0x89, 0x55, 0xc8, //0x00003c91 movq %rdx, $-56(%rbp) + 0xe9, 0x75, 0xfe, 0xff, 0xff, //0x00003c95 jmp LBB0_634 + //0x00003c9a LBB0_508 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003c9a movq $-48(%rbp), %r14 + 0xe9, 0xd8, 0xfd, 0xff, 0xff, //0x00003c9e jmp LBB0_624 + //0x00003ca3 LBB0_658 + 0x48, 0x8b, 0x45, 0xc0, //0x00003ca3 movq $-64(%rbp), %rax + 0x48, 0x89, 0x45, 0xa0, //0x00003ca7 movq %rax, $-96(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003cab jmp LBB0_628 + //0x00003cb0 LBB0_660 + 0x48, 0x89, 0x55, 0xa0, //0x00003cb0 movq %rdx, $-96(%rbp) + 0xe9, 0x16, 0xfe, 0xff, 0xff, //0x00003cb4 jmp LBB0_628 + //0x00003cb9 LBB0_524 + 0x4c, 0x8b, 0x75, 0xd0, //0x00003cb9 movq $-48(%rbp), %r14 + 0xe9, 0x0d, 0xfe, 0xff, 0xff, //0x00003cbd jmp LBB0_628 + //0x00003cc2 LBB0_662 + 0x48, 0x8b, 0x4d, 0xa8, //0x00003cc2 movq $-88(%rbp), %rcx + 0x48, 0x8b, 0x49, 0x08, //0x00003cc6 movq $8(%rcx), %rcx + 0x48, 0x8b, 0x55, 0xd0, //0x00003cca movq $-48(%rbp), %rdx + 0x48, 0x89, 0x0a, //0x00003cce movq %rcx, (%rdx) + 0xe9, 0xd9, 0xfd, 0xff, 0xff, //0x00003cd1 jmp LBB0_650 + //0x00003cd6 LBB0_663 + 0x4c, 0x29, 0xe0, //0x00003cd6 subq %r12, %rax + 0x48, 0x01, 0xd0, //0x00003cd9 addq %rdx, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cdc movq %rax, $-56(%rbp) + 0xe9, 0x1f, 0xfe, 0xff, 0xff, //0x00003ce0 jmp LBB0_633 + //0x00003ce5 LBB0_664 + 0x4c, 0x29, 0xc0, //0x00003ce5 subq %r8, %rax + 0x48, 0x01, 0xc8, //0x00003ce8 addq %rcx, %rax + 0xe9, 0x0f, 0x00, 0x00, 0x00, //0x00003ceb jmp LBB0_667 + //0x00003cf0 LBB0_665 + 0x4c, 0x29, 0xe0, //0x00003cf0 subq %r12, %rax + 0x48, 0x89, 0x45, 0xc8, //0x00003cf3 movq %rax, $-56(%rbp) + 0xe9, 0x08, 0xfe, 0xff, 0xff, //0x00003cf7 jmp LBB0_633 + //0x00003cfc LBB0_666 + 0x4c, 0x29, 0xc0, //0x00003cfc subq %r8, %rax + //0x00003cff LBB0_667 + 0x48, 0x89, 0xc2, //0x00003cff movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d02 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d09 movq %rdx, (%r14) + 0xe9, 0x9e, 0xfd, 0xff, 0xff, //0x00003d0c jmp LBB0_650 + //0x00003d11 LBB0_668 + 0x48, 0x01, 0xc8, //0x00003d11 addq %rcx, %rax + 0x48, 0x89, 0xc2, //0x00003d14 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d17 movq $-2, %rax + 0x49, 0x89, 0x16, //0x00003d1e movq %rdx, (%r14) + 0xe9, 0x89, 0xfd, 0xff, 0xff, //0x00003d21 jmp LBB0_650 + //0x00003d26 LBB0_669 + 0x4c, 0x29, 0xe0, //0x00003d26 subq %r12, %rax + 0x48, 0x01, 0xc8, //0x00003d29 addq %rcx, %rax + 0xe9, 0x03, 0x00, 0x00, 0x00, //0x00003d2c jmp LBB0_671 + //0x00003d31 LBB0_670 + 0x4c, 0x29, 0xe0, //0x00003d31 subq %r12, %rax + //0x00003d34 LBB0_671 + 0x48, 0x89, 0xc2, //0x00003d34 movq %rax, %rdx + 0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00003d37 movq $-2, %rax + 0x4c, 0x8b, 0x75, 0xd0, //0x00003d3e movq $-48(%rbp), %r14 + 0x49, 0x89, 0x16, //0x00003d42 movq %rdx, (%r14) + 0xe9, 0x65, 0xfd, 0xff, 0xff, //0x00003d45 jmp LBB0_650 + 0x90, 0x90, //0x00003d4a .p2align 2, 0x90 // // .set L0_0_set_35, LBB0_35-LJTI0_0 // // .set L0_0_set_61, LBB0_61-LJTI0_0 // // .set L0_0_set_40, LBB0_40-LJTI0_0 // // .set L0_0_set_59, LBB0_59-LJTI0_0 // // .set L0_0_set_38, LBB0_38-LJTI0_0 // // .set L0_0_set_63, LBB0_63-LJTI0_0 - //0x00003ce0 LJTI0_0 - 0xd4, 0xc6, 0xff, 0xff, //0x00003ce0 .long L0_0_set_35 - 0xec, 0xc8, 0xff, 0xff, //0x00003ce4 .long L0_0_set_61 - 0x10, 0xc7, 0xff, 0xff, //0x00003ce8 .long L0_0_set_40 - 0xd0, 0xc8, 0xff, 0xff, //0x00003cec .long L0_0_set_59 - 0xeb, 0xc6, 0xff, 0xff, //0x00003cf0 .long L0_0_set_38 - 0x1c, 0xc9, 0xff, 0xff, //0x00003cf4 .long L0_0_set_63 - // // .set L0_1_set_638, LBB0_638-LJTI0_1 - // // .set L0_1_set_637, LBB0_637-LJTI0_1 - // // .set L0_1_set_232, LBB0_232-LJTI0_1 - // // .set L0_1_set_250, LBB0_250-LJTI0_1 + //0x00003d4c LJTI0_0 + 0x2c, 0xc6, 0xff, 0xff, //0x00003d4c .long L0_0_set_35 + 0x3c, 0xc8, 0xff, 0xff, //0x00003d50 .long L0_0_set_61 + 0x64, 0xc6, 0xff, 0xff, //0x00003d54 .long L0_0_set_40 + 0x24, 0xc8, 0xff, 0xff, //0x00003d58 .long L0_0_set_59 + 0x43, 0xc6, 0xff, 0xff, //0x00003d5c .long L0_0_set_38 + 0x68, 0xc8, 0xff, 0xff, //0x00003d60 .long L0_0_set_63 + // // .set L0_1_set_650, LBB0_650-LJTI0_1 + // // .set L0_1_set_649, LBB0_649-LJTI0_1 + // // .set L0_1_set_237, LBB0_237-LJTI0_1 + // // .set L0_1_set_255, LBB0_255-LJTI0_1 // // .set L0_1_set_80, LBB0_80-LJTI0_1 - // // .set L0_1_set_229, LBB0_229-LJTI0_1 - // // .set L0_1_set_225, LBB0_225-LJTI0_1 - // // .set L0_1_set_287, LBB0_287-LJTI0_1 - // // .set L0_1_set_296, LBB0_296-LJTI0_1 - // // .set L0_1_set_293, LBB0_293-LJTI0_1 - //0x00003cf8 LJTI0_1 - 0x4f, 0xfd, 0xff, 0xff, //0x00003cf8 .long L0_1_set_638 - 0x48, 0xfd, 0xff, 0xff, //0x00003cfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d60 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_637 - 0x19, 0xd6, 0xff, 0xff, //0x00003d80 .long L0_1_set_232 - 0x48, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_637 - 0xd2, 0xd7, 0xff, 0xff, //0x00003dac .long L0_1_set_250 - 0x48, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_637 - 0x51, 0xc9, 0xff, 0xff, //0x00003db8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dbc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dc8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dcc .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd0 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd4 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003dd8 .long L0_1_set_80 - 0x51, 0xc9, 0xff, 0xff, //0x00003ddc .long L0_1_set_80 - 0x48, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dec .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e18 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e24 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e28 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e2c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e30 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e34 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e38 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e3c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e40 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e44 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e48 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_637 - 0xe9, 0xd5, 0xff, 0xff, //0x00003e64 .long L0_1_set_229 - 0x48, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_637 - 0xac, 0xd5, 0xff, 0xff, //0x00003e90 .long L0_1_set_225 - 0x48, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_637 - 0x20, 0xda, 0xff, 0xff, //0x00003eb0 .long L0_1_set_287 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_637 - 0x80, 0xda, 0xff, 0xff, //0x00003ec8 .long L0_1_set_296 - 0x48, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed0 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_637 - 0x48, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_637 - 0x50, 0xda, 0xff, 0xff, //0x00003ee4 .long L0_1_set_293 - // // .set L0_2_set_276, LBB0_276-LJTI0_2 - // // .set L0_2_set_412, LBB0_412-LJTI0_2 - // // .set L0_2_set_282, LBB0_282-LJTI0_2 - // // .set L0_2_set_285, LBB0_285-LJTI0_2 - //0x00003ee8 LJTI0_2 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ee8 .long L0_2_set_276 - 0xc0, 0xe6, 0xff, 0xff, //0x00003eec .long L0_2_set_412 - 0xaf, 0xd7, 0xff, 0xff, //0x00003ef0 .long L0_2_set_276 - 0x01, 0xd8, 0xff, 0xff, //0x00003ef4 .long L0_2_set_282 - 0xc0, 0xe6, 0xff, 0xff, //0x00003ef8 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003efc .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f00 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f04 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f08 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f0c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f10 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f14 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f18 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f1c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f20 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f24 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f28 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f2c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f30 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f34 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f38 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f3c .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f40 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f44 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f48 .long L0_2_set_412 - 0xc0, 0xe6, 0xff, 0xff, //0x00003f4c .long L0_2_set_412 - 0x1d, 0xd8, 0xff, 0xff, //0x00003f50 .long L0_2_set_285 - // // .set L0_3_set_113, LBB0_113-LJTI0_3 - // // .set L0_3_set_212, LBB0_212-LJTI0_3 + // // .set L0_1_set_292, LBB0_292-LJTI0_1 + // // .set L0_1_set_233, LBB0_233-LJTI0_1 + // // .set L0_1_set_295, LBB0_295-LJTI0_1 + // // .set L0_1_set_304, LBB0_304-LJTI0_1 + // // .set L0_1_set_301, LBB0_301-LJTI0_1 + //0x00003d64 LJTI0_1 + 0x4b, 0xfd, 0xff, 0xff, //0x00003d64 .long L0_1_set_650 + 0x44, 0xfd, 0xff, 0xff, //0x00003d68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003d9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003da8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003db8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dbc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dc8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dcc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dd8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ddc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003de8 .long L0_1_set_649 + 0x66, 0xd5, 0xff, 0xff, //0x00003dec .long L0_1_set_237 + 0x44, 0xfd, 0xff, 0xff, //0x00003df0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003df8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003dfc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e14 .long L0_1_set_649 + 0x1a, 0xd7, 0xff, 0xff, //0x00003e18 .long L0_1_set_255 + 0x44, 0xfd, 0xff, 0xff, //0x00003e1c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e20 .long L0_1_set_649 + 0x96, 0xc8, 0xff, 0xff, //0x00003e24 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e28 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e2c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e30 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e34 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e38 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e3c .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e40 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e44 .long L0_1_set_80 + 0x96, 0xc8, 0xff, 0xff, //0x00003e48 .long L0_1_set_80 + 0x44, 0xfd, 0xff, 0xff, //0x00003e4c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e50 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e54 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e58 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e5c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e60 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e64 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e68 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e6c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e70 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e74 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e78 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e7c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e80 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e84 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e88 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e8c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e90 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e94 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e98 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003e9c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ea8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eac .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eb8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ebc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ec8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ecc .long L0_1_set_649 + 0x74, 0xd9, 0xff, 0xff, //0x00003ed0 .long L0_1_set_292 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ed8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003edc .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ee8 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003eec .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef0 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef4 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003ef8 .long L0_1_set_649 + 0x29, 0xd5, 0xff, 0xff, //0x00003efc .long L0_1_set_233 + 0x44, 0xfd, 0xff, 0xff, //0x00003f00 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f04 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f08 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f0c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f10 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f14 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f18 .long L0_1_set_649 + 0xa4, 0xd9, 0xff, 0xff, //0x00003f1c .long L0_1_set_295 + 0x44, 0xfd, 0xff, 0xff, //0x00003f20 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f24 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f28 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f2c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f30 .long L0_1_set_649 + 0x04, 0xda, 0xff, 0xff, //0x00003f34 .long L0_1_set_304 + 0x44, 0xfd, 0xff, 0xff, //0x00003f38 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f3c .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f40 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f44 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f48 .long L0_1_set_649 + 0x44, 0xfd, 0xff, 0xff, //0x00003f4c .long L0_1_set_649 + 0xd4, 0xd9, 0xff, 0xff, //0x00003f50 .long L0_1_set_301 + // // .set L0_2_set_281, LBB0_281-LJTI0_2 + // // .set L0_2_set_427, LBB0_427-LJTI0_2 + // // .set L0_2_set_287, LBB0_287-LJTI0_2 + // // .set L0_2_set_290, LBB0_290-LJTI0_2 + //0x00003f54 LJTI0_2 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f54 .long L0_2_set_281 + 0x75, 0xe6, 0xff, 0xff, //0x00003f58 .long L0_2_set_427 + 0x0b, 0xd7, 0xff, 0xff, //0x00003f5c .long L0_2_set_281 + 0x55, 0xd7, 0xff, 0xff, //0x00003f60 .long L0_2_set_287 + 0x75, 0xe6, 0xff, 0xff, //0x00003f64 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f68 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f6c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f70 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f74 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f78 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f7c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f80 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f84 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f88 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f8c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f90 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f94 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f98 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003f9c .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fa8 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fac .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb0 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb4 .long L0_2_set_427 + 0x75, 0xe6, 0xff, 0xff, //0x00003fb8 .long L0_2_set_427 + 0x71, 0xd7, 0xff, 0xff, //0x00003fbc .long L0_2_set_290 + // // .set L0_3_set_106, LBB0_106-LJTI0_3 + // // .set L0_3_set_215, LBB0_215-LJTI0_3 + // // .set L0_3_set_112, LBB0_112-LJTI0_3 // // .set L0_3_set_115, LBB0_115-LJTI0_3 - // // .set L0_3_set_107, LBB0_107-LJTI0_3 - //0x00003f54 LJTI0_3 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f54 .long L0_3_set_113 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f58 .long L0_3_set_212 - 0x2f, 0xc9, 0xff, 0xff, //0x00003f5c .long L0_3_set_113 - 0x42, 0xc9, 0xff, 0xff, //0x00003f60 .long L0_3_set_115 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f64 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f68 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f6c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f70 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f74 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f78 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f7c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f80 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f84 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f88 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f8c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f90 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f94 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f98 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003f9c .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fa8 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fac .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb0 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb4 .long L0_3_set_212 - 0xa0, 0xd2, 0xff, 0xff, //0x00003fb8 .long L0_3_set_212 - 0xe4, 0xc8, 0xff, 0xff, //0x00003fbc .long L0_3_set_107 - //0x00003fc0 .p2align 2, 0x00 - //0x00003fc0 _MASK_USE_NUMBER - 0x02, 0x00, 0x00, 0x00, //0x00003fc0 .long 2 + //0x00003fc0 LJTI0_3 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc0 .long L0_3_set_106 + 0x08, 0xd2, 0xff, 0xff, //0x00003fc4 .long L0_3_set_215 + 0x33, 0xc8, 0xff, 0xff, //0x00003fc8 .long L0_3_set_106 + 0x82, 0xc8, 0xff, 0xff, //0x00003fcc .long L0_3_set_112 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fd8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fdc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fe8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003fec .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff0 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff4 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ff8 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00003ffc .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004000 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004004 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004008 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000400c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004010 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004014 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004018 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x0000401c .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004020 .long L0_3_set_215 + 0x08, 0xd2, 0xff, 0xff, //0x00004024 .long L0_3_set_215 + 0x9e, 0xc8, 0xff, 0xff, //0x00004028 .long L0_3_set_115 + //0x0000402c .p2align 2, 0x00 + //0x0000402c _MASK_USE_NUMBER + 0x02, 0x00, 0x00, 0x00, //0x0000402c .long 2 } diff --git a/vendor/github.com/bytedance/sonic/internal/native/traceback_test.mock_tmpl b/vendor/github.com/bytedance/sonic/internal/native/traceback_test.mock_tmpl index c60887882..25df4bf8e 100644 --- a/vendor/github.com/bytedance/sonic/internal/native/traceback_test.mock_tmpl +++ b/vendor/github.com/bytedance/sonic/internal/native/traceback_test.mock_tmpl @@ -1,5 +1,5 @@ -// +build !race,amd64,go1.16,!go1.25 +// +build !race,amd64,go1.16,!go1.26 // Code generated by Makefile, DO NOT EDIT. diff --git a/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go b/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go index 010028203..f207b4b16 100644 --- a/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go +++ b/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go @@ -324,7 +324,7 @@ func (self *NormalFieldMap) Set(fields []resolver.FieldMeta) { } -// use hashnap +// use hashmap type FallbackFieldMap struct { oders []string inner map[string]int diff --git a/vendor/github.com/bytedance/sonic/internal/rt/base64_amd64.go b/vendor/github.com/bytedance/sonic/internal/rt/base64_amd64.go index ec5ea88a0..9b0cfca72 100644 --- a/vendor/github.com/bytedance/sonic/internal/rt/base64_amd64.go +++ b/vendor/github.com/bytedance/sonic/internal/rt/base64_amd64.go @@ -1,4 +1,4 @@ -// +build amd64,go1.17,!go1.25 +// +build amd64,go1.17,!go1.26 package rt diff --git a/vendor/github.com/bytedance/sonic/internal/rt/base64_compat.go b/vendor/github.com/bytedance/sonic/internal/rt/base64_compat.go index bd3150fe0..e6abcb57d 100644 --- a/vendor/github.com/bytedance/sonic/internal/rt/base64_compat.go +++ b/vendor/github.com/bytedance/sonic/internal/rt/base64_compat.go @@ -1,4 +1,4 @@ -// +build !amd64 !go1.17 go1.25 +// +build !amd64 !go1.17 go1.26 package rt diff --git a/vendor/github.com/bytedance/sonic/internal/rt/gcwb.go b/vendor/github.com/bytedance/sonic/internal/rt/gcwb.go index bd3e4ef26..c9ad5fb2f 100644 --- a/vendor/github.com/bytedance/sonic/internal/rt/gcwb.go +++ b/vendor/github.com/bytedance/sonic/internal/rt/gcwb.go @@ -1,4 +1,4 @@ -// +build go1.21,!go1.25 +// +build go1.21,!go1.26 /* * Copyright 2021 ByteDance Inc. diff --git a/vendor/github.com/bytedance/sonic/internal/rt/map_nosiwss_go124.go b/vendor/github.com/bytedance/sonic/internal/rt/map_nosiwss_go124.go index 8ecb9878e..8dda15bb8 100644 --- a/vendor/github.com/bytedance/sonic/internal/rt/map_nosiwss_go124.go +++ b/vendor/github.com/bytedance/sonic/internal/rt/map_nosiwss_go124.go @@ -1,5 +1,5 @@ -//go:build go1.24 && !go1.25 && !goexperiment.swissmap -// +build go1.24,!go1.25,!goexperiment.swissmap +//go:build go1.24 && !go1.26 && !goexperiment.swissmap +// +build go1.24,!go1.26,!goexperiment.swissmap package rt diff --git a/vendor/github.com/bytedance/sonic/internal/rt/map_siwss_go124.go b/vendor/github.com/bytedance/sonic/internal/rt/map_siwss_go124.go index b5bf7803c..6a7907691 100644 --- a/vendor/github.com/bytedance/sonic/internal/rt/map_siwss_go124.go +++ b/vendor/github.com/bytedance/sonic/internal/rt/map_siwss_go124.go @@ -1,5 +1,5 @@ -//go:build go1.24 && !go1.25 && goexperiment.swissmap -// +build go1.24,!go1.25,goexperiment.swissmap +//go:build go1.24 && !go1.26 && goexperiment.swissmap +// +build go1.24,!go1.26,goexperiment.swissmap package rt diff --git a/vendor/github.com/bytedance/sonic/internal/utils/skip.go b/vendor/github.com/bytedance/sonic/internal/utils/skip.go index e42bfe759..1ae77195b 100644 --- a/vendor/github.com/bytedance/sonic/internal/utils/skip.go +++ b/vendor/github.com/bytedance/sonic/internal/utils/skip.go @@ -76,4 +76,12 @@ func SkipNumber(src string, pos int) (ret int) { runtime.KeepAlive(src) return int(uintptr(sp) - uintptr((*rt.GoString)(unsafe.Pointer(&src)).Ptr)) -} \ No newline at end of file +} + +// Hack: this is used for both checking space and cause friendly compile errors in 32-bit arch. +const _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here = (1 << ' ') | (1 << '\t') | (1 << '\r') | (1 << '\n') + + +func IsSpace(c byte) bool { + return (int(1< len(xregOrderC) { diff --git a/vendor/github.com/bytedance/sonic/loader/internal/iasm/expr/errors.go b/vendor/github.com/bytedance/sonic/loader/internal/iasm/expr/errors.go index 791c18bd6..ca27b04c7 100644 --- a/vendor/github.com/bytedance/sonic/loader/internal/iasm/expr/errors.go +++ b/vendor/github.com/bytedance/sonic/loader/internal/iasm/expr/errors.go @@ -37,7 +37,7 @@ func (self *SyntaxError) Error() string { return fmt.Sprintf("Syntax error at position %d: %s", self.Pos, self.Reason) } -// RuntimeError is an error which would occure at run time. +// RuntimeError is an error which would occur at run time. type RuntimeError struct { Reason string } diff --git a/vendor/github.com/bytedance/sonic/loader/internal/iasm/x86_64/program.go b/vendor/github.com/bytedance/sonic/loader/internal/iasm/x86_64/program.go index bf7d3a1dc..1c0c7cc00 100644 --- a/vendor/github.com/bytedance/sonic/loader/internal/iasm/x86_64/program.go +++ b/vendor/github.com/bytedance/sonic/loader/internal/iasm/x86_64/program.go @@ -112,7 +112,7 @@ func (self *_Pseudo) evalExpr(low int64, high int64) int64 { func (self *_Pseudo) alignSize(pc uintptr) int { if !ispow2(self.uint) { - panic(fmt.Sprintf("aligment should be a power of 2, not %d", self.uint)) + panic(fmt.Sprintf("alignment should be a power of 2, not %d", self.uint)) } else { return align(int(pc), bits.TrailingZeros64(self.uint)) - int(pc) } @@ -469,7 +469,7 @@ func (self *Program) Free() { // Link pins a label at the current position. func (self *Program) Link(p *Label) { if p.Dest != nil { - panic("lable was alreay linked") + panic("label was already linked") } else { p.Dest = self.pseudo(_PseudoNop) } diff --git a/vendor/github.com/bytedance/sonic/sonic.go b/vendor/github.com/bytedance/sonic/sonic.go index 395730362..1b2f6d74c 100644 --- a/vendor/github.com/bytedance/sonic/sonic.go +++ b/vendor/github.com/bytedance/sonic/sonic.go @@ -1,5 +1,5 @@ -//go:build (amd64 && go1.17 && !go1.25) || (arm64 && go1.20 && !go1.25) -// +build amd64,go1.17,!go1.25 arm64,go1.20,!go1.25 +//go:build (amd64 && go1.17 && !go1.26) || (arm64 && go1.20 && !go1.26) +// +build amd64,go1.17,!go1.26 arm64,go1.20,!go1.26 /* * Copyright 2021 ByteDance Inc. @@ -90,6 +90,9 @@ func (cfg Config) Froze() API { if cfg.ValidateString { api.decoderOpts |= decoder.OptionValidateString } + if cfg.CaseSensitive { + api.decoderOpts |= decoder.OptionCaseSensitive + } return api } diff --git a/vendor/github.com/bytedance/sonic/utf8/utf8.go b/vendor/github.com/bytedance/sonic/utf8/utf8.go index 9d8bcc958..c1403fdb2 100644 --- a/vendor/github.com/bytedance/sonic/utf8/utf8.go +++ b/vendor/github.com/bytedance/sonic/utf8/utf8.go @@ -62,7 +62,7 @@ func CorrectWith(dst []byte, src []byte, repl string) []byte { return dst } -// Validate is a simd-accelereated drop-in replacement for the standard library's utf8.Valid. +// Validate is a simd-accelerated drop-in replacement for the standard library's utf8.Valid. func Validate(src []byte) bool { if src == nil { return true diff --git a/vendor/github.com/charmbracelet/x/ansi/background.go b/vendor/github.com/charmbracelet/x/ansi/background.go index 2383cf09f..46f821425 100644 --- a/vendor/github.com/charmbracelet/x/ansi/background.go +++ b/vendor/github.com/charmbracelet/x/ansi/background.go @@ -3,63 +3,93 @@ package ansi import ( "fmt" "image/color" + + "github.com/lucasb-eyer/go-colorful" ) -// Colorizer is a [color.Color] interface that can be formatted as a string. -type Colorizer interface { - color.Color - fmt.Stringer -} +// HexColor is a [color.Color] that can be formatted as a hex string. +type HexColor string -// HexColorizer is a [color.Color] that can be formatted as a hex string. -type HexColorizer struct{ color.Color } +// RGBA returns the RGBA values of the color. +func (h HexColor) RGBA() (r, g, b, a uint32) { + hex := h.color() + if hex == nil { + return 0, 0, 0, 0 + } + return hex.RGBA() +} -var _ Colorizer = HexColorizer{} +// Hex returns the hex representation of the color. If the color is invalid, it +// returns an empty string. +func (h HexColor) Hex() string { + hex := h.color() + if hex == nil { + return "" + } + return hex.Hex() +} // String returns the color as a hex string. If the color is nil, an empty // string is returned. -func (h HexColorizer) String() string { - if h.Color == nil { - return "" +func (h HexColor) String() string { + return h.Hex() +} + +// color returns the underlying color of the HexColor. +func (h HexColor) color() *colorful.Color { + hex, err := colorful.Hex(string(h)) + if err != nil { + return nil } - r, g, b, _ := h.RGBA() - // Get the lower 8 bits - r &= 0xff - g &= 0xff - b &= 0xff - return fmt.Sprintf("#%02x%02x%02x", uint8(r), uint8(g), uint8(b)) //nolint:gosec + return &hex } -// XRGBColorizer is a [color.Color] that can be formatted as an XParseColor +// XRGBColor is a [color.Color] that can be formatted as an XParseColor // rgb: string. // // See: https://linux.die.net/man/3/xparsecolor -type XRGBColorizer struct{ color.Color } +type XRGBColor struct { + color.Color +} -var _ Colorizer = XRGBColorizer{} +// RGBA returns the RGBA values of the color. +func (x XRGBColor) RGBA() (r, g, b, a uint32) { + if x.Color == nil { + return 0, 0, 0, 0 + } + return x.Color.RGBA() +} // String returns the color as an XParseColor rgb: string. If the color is nil, // an empty string is returned. -func (x XRGBColorizer) String() string { +func (x XRGBColor) String() string { if x.Color == nil { return "" } - r, g, b, _ := x.RGBA() + r, g, b, _ := x.Color.RGBA() // Get the lower 8 bits return fmt.Sprintf("rgb:%04x/%04x/%04x", r, g, b) } -// XRGBAColorizer is a [color.Color] that can be formatted as an XParseColor +// XRGBAColor is a [color.Color] that can be formatted as an XParseColor // rgba: string. // // See: https://linux.die.net/man/3/xparsecolor -type XRGBAColorizer struct{ color.Color } +type XRGBAColor struct { + color.Color +} -var _ Colorizer = XRGBAColorizer{} +// RGBA returns the RGBA values of the color. +func (x XRGBAColor) RGBA() (r, g, b, a uint32) { + if x.Color == nil { + return 0, 0, 0, 0 + } + return x.Color.RGBA() +} // String returns the color as an XParseColor rgba: string. If the color is nil, // an empty string is returned. -func (x XRGBAColorizer) String() string { +func (x XRGBAColor) String() string { if x.Color == nil { return "" } @@ -74,19 +104,12 @@ func (x XRGBAColorizer) String() string { // OSC 10 ; color ST // OSC 10 ; color BEL // -// Where color is the encoded color number. +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. // // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands -func SetForegroundColor(c color.Color) string { - var s string - switch c := c.(type) { - case Colorizer: - s = c.String() - case fmt.Stringer: - s = c.String() - default: - s = HexColorizer{c}.String() - } +func SetForegroundColor(s string) string { return "\x1b]10;" + s + "\x07" } @@ -108,19 +131,12 @@ const ResetForegroundColor = "\x1b]110\x07" // OSC 11 ; color ST // OSC 11 ; color BEL // -// Where color is the encoded color number. +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. // // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands -func SetBackgroundColor(c color.Color) string { - var s string - switch c := c.(type) { - case Colorizer: - s = c.String() - case fmt.Stringer: - s = c.String() - default: - s = HexColorizer{c}.String() - } +func SetBackgroundColor(s string) string { return "\x1b]11;" + s + "\x07" } @@ -141,19 +157,12 @@ const ResetBackgroundColor = "\x1b]111\x07" // OSC 12 ; color ST // OSC 12 ; color BEL // -// Where color is the encoded color number. +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. // // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands -func SetCursorColor(c color.Color) string { - var s string - switch c := c.(type) { - case Colorizer: - s = c.String() - case fmt.Stringer: - s = c.String() - default: - s = HexColorizer{c}.String() - } +func SetCursorColor(s string) string { return "\x1b]12;" + s + "\x07" } diff --git a/vendor/github.com/charmbracelet/x/ansi/ctrl.go b/vendor/github.com/charmbracelet/x/ansi/ctrl.go index 8ca744cf2..64bcf1136 100644 --- a/vendor/github.com/charmbracelet/x/ansi/ctrl.go +++ b/vendor/github.com/charmbracelet/x/ansi/ctrl.go @@ -38,6 +38,25 @@ const RequestXTVersion = RequestNameVersion // If no attributes are given, or if the attribute is 0, this function returns // the request sequence. Otherwise, it returns the response sequence. // +// Common attributes include: +// - 1 132 columns +// - 2 Printer port +// - 4 Sixel +// - 6 Selective erase +// - 7 Soft character set (DRCS) +// - 8 User-defined keys (UDKs) +// - 9 National replacement character sets (NRCS) (International terminal only) +// - 12 Yugoslavian (SCS) +// - 15 Technical character set +// - 18 Windowing capability +// - 21 Horizontal scrolling +// - 23 Greek +// - 24 Turkish +// - 42 ISO Latin-2 character set +// - 44 PCTerm +// - 45 Soft key map +// - 46 ASCII emulation +// // See https://vt100.net/docs/vt510-rm/DA1.html func PrimaryDeviceAttributes(attrs ...int) string { if len(attrs) == 0 { diff --git a/vendor/github.com/charmbracelet/x/ansi/cursor.go b/vendor/github.com/charmbracelet/x/ansi/cursor.go index 2a74c483c..785e31f8c 100644 --- a/vendor/github.com/charmbracelet/x/ansi/cursor.go +++ b/vendor/github.com/charmbracelet/x/ansi/cursor.go @@ -358,8 +358,8 @@ func CHT(n int) string { return CursorHorizontalForwardTab(n) } -// EraseCharacter (ECH) returns a sequence for erasing n characters and moving -// the cursor to the right. This doesn't affect other cell attributes. +// EraseCharacter (ECH) returns a sequence for erasing n characters from the +// screen. This doesn't affect other cell attributes. // // Default is 1. // diff --git a/vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go b/vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go index fbd08441f..1559c69e8 100644 --- a/vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go +++ b/vendor/github.com/charmbracelet/x/ansi/kitty/decoder.go @@ -68,8 +68,8 @@ func (d *Decoder) decodeRGBA(r io.Reader, alpha bool) (image.Image, error) { buf = make([]byte, 3) } - for y := 0; y < d.Height; y++ { - for x := 0; x < d.Width; x++ { + for y := range d.Height { + for x := range d.Width { if _, err := io.ReadFull(r, buf[:]); err != nil { return nil, fmt.Errorf("failed to read pixel data: %w", err) } diff --git a/vendor/github.com/charmbracelet/x/ansi/parser.go b/vendor/github.com/charmbracelet/x/ansi/parser.go index 882e1ed7a..e770c15f9 100644 --- a/vendor/github.com/charmbracelet/x/ansi/parser.go +++ b/vendor/github.com/charmbracelet/x/ansi/parser.go @@ -150,7 +150,7 @@ func (p *Parser) StateName() string { // Parse parses the given dispatcher and byte buffer. // Deprecated: Loop over the buffer and call [Parser.Advance] instead. func (p *Parser) Parse(b []byte) { - for i := 0; i < len(b); i++ { + for i := range b { p.Advance(b[i]) } } @@ -245,7 +245,7 @@ func (p *Parser) parseStringCmd() { if p.dataLen >= 0 { datalen = p.dataLen } - for i := 0; i < datalen; i++ { + for i := range datalen { d := p.data[i] if d < '0' || d > '9' { break diff --git a/vendor/github.com/charmbracelet/x/ansi/parser/seq.go b/vendor/github.com/charmbracelet/x/ansi/parser/seq.go index 29f491d1c..de7e15e68 100644 --- a/vendor/github.com/charmbracelet/x/ansi/parser/seq.go +++ b/vendor/github.com/charmbracelet/x/ansi/parser/seq.go @@ -78,7 +78,7 @@ func Subparams(params []int, i int) []int { // Count the number of parameters before the given parameter index. var count int var j int - for j = 0; j < len(params); j++ { + for j = range params { if count == i { break } @@ -116,7 +116,7 @@ func Subparams(params []int, i int) []int { // sub-parameters. func Len(params []int) int { var n int - for i := 0; i < len(params); i++ { + for i := range params { if !HasMore(params, i) { n++ } @@ -128,7 +128,7 @@ func Len(params []int) int { // function for each parameter. // The function should return false to stop the iteration. func Range(params []int, fn func(i int, param int, hasMore bool) bool) { - for i := 0; i < len(params); i++ { + for i := range params { if !fn(i, Param(params, i), HasMore(params, i)) { break } diff --git a/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go b/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go index 558a5eacc..7c41ba2ce 100644 --- a/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go +++ b/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go @@ -30,7 +30,7 @@ func NewTransitionTable(size int) TransitionTable { // SetDefault sets default transition. func (t TransitionTable) SetDefault(action Action, state State) { - for i := 0; i < len(t); i++ { + for i := range t { t[i] = action< '9' { break diff --git a/vendor/github.com/charmbracelet/x/ansi/passthrough.go b/vendor/github.com/charmbracelet/x/ansi/passthrough.go index 14a745220..7ac7cef15 100644 --- a/vendor/github.com/charmbracelet/x/ansi/passthrough.go +++ b/vendor/github.com/charmbracelet/x/ansi/passthrough.go @@ -21,10 +21,7 @@ func ScreenPassthrough(seq string, limit int) string { b.WriteString("\x1bP") if limit > 0 { for i := 0; i < len(seq); i += limit { - end := i + limit - if end > len(seq) { - end = len(seq) - } + end := min(i+limit, len(seq)) b.WriteString(seq[i:end]) if end < len(seq) { b.WriteString("\x1b\\\x1bP") @@ -52,7 +49,7 @@ func ScreenPassthrough(seq string, limit int) string { func TmuxPassthrough(seq string) string { var b bytes.Buffer b.WriteString("\x1bPtmux;") - for i := 0; i < len(seq); i++ { + for i := range len(seq) { if seq[i] == ESC { b.WriteByte(ESC) } diff --git a/vendor/github.com/charmbracelet/x/ansi/width.go b/vendor/github.com/charmbracelet/x/ansi/width.go index d0487d350..cc0858161 100644 --- a/vendor/github.com/charmbracelet/x/ansi/width.go +++ b/vendor/github.com/charmbracelet/x/ansi/width.go @@ -19,7 +19,7 @@ func Strip(s string) string { // This implements a subset of the Parser to only collect runes and // printable characters. - for i := 0; i < len(s); i++ { + for i := range len(s) { if pstate == parser.Utf8State { // During this state, collect rw bytes to form a valid rune in the // buffer. After getting all the rune bytes into the buffer, diff --git a/vendor/github.com/charmbracelet/x/ansi/wrap.go b/vendor/github.com/charmbracelet/x/ansi/wrap.go index 6b9958008..bfafac7c7 100644 --- a/vendor/github.com/charmbracelet/x/ansi/wrap.go +++ b/vendor/github.com/charmbracelet/x/ansi/wrap.go @@ -303,20 +303,22 @@ func wrap(m Method, s string, limit int, breakpoints string) string { } var ( - cluster []byte - buf bytes.Buffer - word bytes.Buffer - space bytes.Buffer - curWidth int // written width of the line - wordLen int // word buffer len without ANSI escape codes - pstate = parser.GroundState // initial state - b = []byte(s) + cluster []byte + buf bytes.Buffer + word bytes.Buffer + space bytes.Buffer + spaceWidth int // width of the space buffer + curWidth int // written width of the line + wordLen int // word buffer len without ANSI escape codes + pstate = parser.GroundState // initial state + b = []byte(s) ) addSpace := func() { - curWidth += space.Len() + curWidth += spaceWidth buf.Write(space.Bytes()) space.Reset() + spaceWidth = 0 } addWord := func() { @@ -335,6 +337,7 @@ func wrap(m Method, s string, limit int, breakpoints string) string { buf.WriteByte('\n') curWidth = 0 space.Reset() + spaceWidth = 0 } i := 0 @@ -353,6 +356,7 @@ func wrap(m Method, s string, limit int, breakpoints string) string { case r != utf8.RuneError && unicode.IsSpace(r) && r != nbsp: // nbsp is a non-breaking space addWord() space.WriteRune(r) + spaceWidth += width case bytes.ContainsAny(cluster, breakpoints): addSpace() if curWidth+wordLen+width > limit { @@ -372,7 +376,7 @@ func wrap(m Method, s string, limit int, breakpoints string) string { word.Write(cluster) wordLen += width - if curWidth+wordLen+space.Len() > limit { + if curWidth+wordLen+spaceWidth > limit { addNewline() } } @@ -386,13 +390,14 @@ func wrap(m Method, s string, limit int, breakpoints string) string { switch r := rune(b[i]); { case r == '\n': if wordLen == 0 { - if curWidth+space.Len() > limit { + if curWidth+spaceWidth > limit { curWidth = 0 } else { // preserve whitespaces buf.Write(space.Bytes()) } space.Reset() + spaceWidth = 0 } addWord() @@ -400,6 +405,7 @@ func wrap(m Method, s string, limit int, breakpoints string) string { case unicode.IsSpace(r): addWord() space.WriteRune(r) + spaceWidth++ case r == '-': fallthrough case runeContainsAny(r, breakpoints): @@ -426,7 +432,7 @@ func wrap(m Method, s string, limit int, breakpoints string) string { addWord() } - if curWidth+wordLen+space.Len() > limit { + if curWidth+wordLen+spaceWidth > limit { addNewline() } } @@ -443,13 +449,14 @@ func wrap(m Method, s string, limit int, breakpoints string) string { } if wordLen == 0 { - if curWidth+space.Len() > limit { + if curWidth+spaceWidth > limit { curWidth = 0 } else { // preserve whitespaces buf.Write(space.Bytes()) } space.Reset() + spaceWidth = 0 } addWord() diff --git a/vendor/github.com/gin-gonic/gin/gin.go b/vendor/github.com/gin-gonic/gin/gin.go index 1633fe13f..ecf77c4c9 100644 --- a/vendor/github.com/gin-gonic/gin/gin.go +++ b/vendor/github.com/gin-gonic/gin/gin.go @@ -5,6 +5,7 @@ package gin import ( + "crypto/tls" "fmt" "html/template" "net" @@ -41,8 +42,10 @@ var defaultTrustedCIDRs = []*net.IPNet{ }, } -var regSafePrefix = regexp.MustCompile("[^a-zA-Z0-9/-]+") -var regRemoveRepeatedChar = regexp.MustCompile("/{2,}") +var ( + regSafePrefix = regexp.MustCompile("[^a-zA-Z0-9/-]+") + regRemoveRepeatedChar = regexp.MustCompile("/{2,}") +) // HandlerFunc defines the handler used by gin middleware as return value. type HandlerFunc func(*Context) @@ -515,7 +518,15 @@ func (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error) { "Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.") } - err = http.ListenAndServeTLS(addr, certFile, keyFile, engine.Handler()) + server := &http.Server{ + Addr: addr, + Handler: engine.Handler(), + TLSConfig: &tls.Config{ + MinVersion: tls.VersionTLS12, // TLS 1.2 or higher + }, + } + + err = server.ListenAndServeTLS(certFile, keyFile) return } diff --git a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/change.go b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/change.go index 450feb4ba..d32b5a7d4 100644 --- a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/change.go +++ b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/change.go @@ -131,7 +131,9 @@ func (l *Changes) addRecursive(root noder.Path, ctor noderToChangeFn) error { } if !root.IsDir() { - l.Add(ctor(root)) + if !root.Skip() { + l.Add(ctor(root)) + } return nil } @@ -148,7 +150,7 @@ func (l *Changes) addRecursive(root noder.Path, ctor noderToChangeFn) error { } return err } - if current.IsDir() { + if current.IsDir() || current.Skip() { continue } l.Add(ctor(current)) diff --git a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/difftree.go b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/difftree.go index 4ef2d9907..7fc8d02d7 100644 --- a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/difftree.go +++ b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/difftree.go @@ -297,18 +297,16 @@ func DiffTreeContext(ctx context.Context, fromTree, toTree noder.Noder, case noMoreNoders: return ret, nil case onlyFromRemains: - if err = ret.AddRecursiveDelete(from); err != nil { - return nil, err + if !from.Skip() { + if err = ret.AddRecursiveDelete(from); err != nil { + return nil, err + } } if err = ii.nextFrom(); err != nil { return nil, err } case onlyToRemains: - if to.Skip() { - if err = ret.AddRecursiveDelete(to); err != nil { - return nil, err - } - } else { + if !to.Skip() { if err = ret.AddRecursiveInsert(to); err != nil { return nil, err } @@ -317,26 +315,25 @@ func DiffTreeContext(ctx context.Context, fromTree, toTree noder.Noder, return nil, err } case bothHaveNodes: - if from.Skip() { - if err = ret.AddRecursiveDelete(from); err != nil { - return nil, err - } - if err := ii.nextBoth(); err != nil { - return nil, err + var err error + switch { + case from.Skip(): + if from.Name() == to.Name() { + err = ii.nextBoth() + } else { + err = ii.nextFrom() } - break - } - if to.Skip() { - if err = ret.AddRecursiveDelete(to); err != nil { - return nil, err - } - if err := ii.nextBoth(); err != nil { - return nil, err + case to.Skip(): + if from.Name() == to.Name() { + err = ii.nextBoth() + } else { + err = ii.nextTo() } - break + default: + err = diffNodes(&ret, ii) } - if err = diffNodes(&ret, ii); err != nil { + if err != nil { return nil, err } default: diff --git a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/index/node.go b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/index/node.go index c1809f7ec..5bc63f8b2 100644 --- a/vendor/github.com/go-git/go-git/v5/utils/merkletrie/index/node.go +++ b/vendor/github.com/go-git/go-git/v5/utils/merkletrie/index/node.go @@ -36,7 +36,15 @@ func NewRootNode(idx *index.Index) noder.Noder { parent := fullpath fullpath = path.Join(fullpath, part) - if _, ok := m[fullpath]; ok { + // It's possible that the first occurrence of subdirectory is skipped. + // The parent node can be created with SkipWorktree set to true, but + // if any future children do not skip their subtree, the entire lineage + // of the tree needs to have this value set to false so that subdirectories + // are not ignored. + if parentNode, ok := m[fullpath]; ok { + if e.SkipWorktree == false { + parentNode.skip = false + } continue } diff --git a/vendor/github.com/go-jose/go-jose/v4/jwe.go b/vendor/github.com/go-jose/go-jose/v4/jwe.go index 9f1322dcc..6102f9100 100644 --- a/vendor/github.com/go-jose/go-jose/v4/jwe.go +++ b/vendor/github.com/go-jose/go-jose/v4/jwe.go @@ -274,7 +274,7 @@ func validateAlgEnc(headers rawHeader, keyAlgorithms []KeyAlgorithm, contentEncr if alg != "" && !containsKeyAlgorithm(keyAlgorithms, alg) { return fmt.Errorf("unexpected key algorithm %q; expected %q", alg, keyAlgorithms) } - if alg != "" && !containsContentEncryption(contentEncryption, enc) { + if enc != "" && !containsContentEncryption(contentEncryption, enc) { return fmt.Errorf("unexpected content encryption algorithm %q; expected %q", enc, contentEncryption) } return nil @@ -288,11 +288,20 @@ func ParseEncryptedCompact( keyAlgorithms []KeyAlgorithm, contentEncryption []ContentEncryption, ) (*JSONWebEncryption, error) { - // Five parts is four separators - if strings.Count(input, ".") != 4 { - return nil, fmt.Errorf("go-jose/go-jose: compact JWE format must have five parts") + var parts [5]string + var ok bool + + for i := range 4 { + parts[i], input, ok = strings.Cut(input, ".") + if !ok { + return nil, errors.New("go-jose/go-jose: compact JWE format must have five parts") + } + } + // Validate that the last part does not contain more dots + if strings.ContainsRune(input, '.') { + return nil, errors.New("go-jose/go-jose: compact JWE format must have five parts") } - parts := strings.SplitN(input, ".", 5) + parts[4] = input rawProtected, err := base64.RawURLEncoding.DecodeString(parts[0]) if err != nil { diff --git a/vendor/github.com/go-jose/go-jose/v4/jwk.go b/vendor/github.com/go-jose/go-jose/v4/jwk.go index 9e57e93ba..9700f8906 100644 --- a/vendor/github.com/go-jose/go-jose/v4/jwk.go +++ b/vendor/github.com/go-jose/go-jose/v4/jwk.go @@ -239,7 +239,7 @@ func (k *JSONWebKey) UnmarshalJSON(data []byte) (err error) { keyPub = key } } else { - return fmt.Errorf("go-jose/go-jose: unknown curve %s'", raw.Crv) + return fmt.Errorf("go-jose/go-jose: unknown curve '%s'", raw.Crv) } default: return fmt.Errorf("go-jose/go-jose: unknown json web key type '%s'", raw.Kty) diff --git a/vendor/github.com/go-jose/go-jose/v4/jws.go b/vendor/github.com/go-jose/go-jose/v4/jws.go index be2b73308..c40bd3ec1 100644 --- a/vendor/github.com/go-jose/go-jose/v4/jws.go +++ b/vendor/github.com/go-jose/go-jose/v4/jws.go @@ -361,35 +361,43 @@ func (parsed *rawJSONWebSignature) sanitized(signatureAlgorithms []SignatureAlgo return obj, nil } +const tokenDelim = "." + // parseSignedCompact parses a message in compact format. func parseSignedCompact( input string, payload []byte, signatureAlgorithms []SignatureAlgorithm, ) (*JSONWebSignature, error) { - // Three parts is two separators - if strings.Count(input, ".") != 2 { + protected, s, ok := strings.Cut(input, tokenDelim) + if !ok { // no period found + return nil, fmt.Errorf("go-jose/go-jose: compact JWS format must have three parts") + } + claims, sig, ok := strings.Cut(s, tokenDelim) + if !ok { // only one period found + return nil, fmt.Errorf("go-jose/go-jose: compact JWS format must have three parts") + } + if strings.ContainsRune(sig, '.') { // too many periods found return nil, fmt.Errorf("go-jose/go-jose: compact JWS format must have three parts") } - parts := strings.SplitN(input, ".", 3) - if parts[1] != "" && payload != nil { + if claims != "" && payload != nil { return nil, fmt.Errorf("go-jose/go-jose: payload is not detached") } - rawProtected, err := base64.RawURLEncoding.DecodeString(parts[0]) + rawProtected, err := base64.RawURLEncoding.DecodeString(protected) if err != nil { return nil, err } if payload == nil { - payload, err = base64.RawURLEncoding.DecodeString(parts[1]) + payload, err = base64.RawURLEncoding.DecodeString(claims) if err != nil { return nil, err } } - signature, err := base64.RawURLEncoding.DecodeString(parts[2]) + signature, err := base64.RawURLEncoding.DecodeString(sig) if err != nil { return nil, err } diff --git a/vendor/github.com/go-jose/go-jose/v4/symmetric.go b/vendor/github.com/go-jose/go-jose/v4/symmetric.go index 09efefb26..6176e0607 100644 --- a/vendor/github.com/go-jose/go-jose/v4/symmetric.go +++ b/vendor/github.com/go-jose/go-jose/v4/symmetric.go @@ -21,7 +21,6 @@ import ( "crypto/aes" "crypto/cipher" "crypto/hmac" - "crypto/pbkdf2" "crypto/rand" "crypto/sha256" "crypto/sha512" @@ -329,7 +328,7 @@ func (ctx *symmetricKeyCipher) encryptKey(cek []byte, alg KeyAlgorithm) (recipie // derive key keyLen, h := getPbkdf2Params(alg) - key, err := pbkdf2.Key(h, string(ctx.key), salt, ctx.p2c, keyLen) + key, err := pbkdf2Key(h, string(ctx.key), salt, ctx.p2c, keyLen) if err != nil { return recipientInfo{}, nil } @@ -434,7 +433,7 @@ func (ctx *symmetricKeyCipher) decryptKey(headers rawHeader, recipient *recipien // derive key keyLen, h := getPbkdf2Params(alg) - key, err := pbkdf2.Key(h, string(ctx.key), salt, p2c, keyLen) + key, err := pbkdf2Key(h, string(ctx.key), salt, p2c, keyLen) if err != nil { return nil, err } diff --git a/vendor/github.com/go-jose/go-jose/v4/symmetric_go124.go b/vendor/github.com/go-jose/go-jose/v4/symmetric_go124.go new file mode 100644 index 000000000..6c5a4e7f2 --- /dev/null +++ b/vendor/github.com/go-jose/go-jose/v4/symmetric_go124.go @@ -0,0 +1,28 @@ +//go:build go1.24 + +/*- + * Copyright 2014 Square 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 jose + +import ( + "crypto/pbkdf2" + "hash" +) + +func pbkdf2Key(h func() hash.Hash, password string, salt []byte, iter, keyLen int) ([]byte, error) { + return pbkdf2.Key(h, password, salt, iter, keyLen) +} diff --git a/vendor/github.com/go-jose/go-jose/v4/symmetric_legacy.go b/vendor/github.com/go-jose/go-jose/v4/symmetric_legacy.go new file mode 100644 index 000000000..bdfc3d766 --- /dev/null +++ b/vendor/github.com/go-jose/go-jose/v4/symmetric_legacy.go @@ -0,0 +1,29 @@ +//go:build !go1.24 + +/*- + * Copyright 2014 Square 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 jose + +import ( + "hash" + + "golang.org/x/crypto/pbkdf2" +) + +func pbkdf2Key(h func() hash.Hash, password string, salt []byte, iter, keyLen int) ([]byte, error) { + return pbkdf2.Key([]byte(password), salt, iter, keyLen, h), nil +} diff --git a/vendor/github.com/go-logr/logr/.golangci.yaml b/vendor/github.com/go-logr/logr/.golangci.yaml index 0cffafa7b..0ed62c1a1 100644 --- a/vendor/github.com/go-logr/logr/.golangci.yaml +++ b/vendor/github.com/go-logr/logr/.golangci.yaml @@ -1,26 +1,28 @@ +version: "2" + run: timeout: 1m tests: true linters: - disable-all: true - enable: + default: none + enable: # please keep this alphabetized + - asasalint - asciicheck + - copyloopvar + - dupl - errcheck - forcetypeassert + - goconst - gocritic - - gofmt - - goimports - - gosimple - govet - ineffassign - misspell + - musttag - revive - staticcheck - - typecheck - unused issues: - exclude-use-default: false max-issues-per-linter: 0 max-same-issues: 10 diff --git a/vendor/github.com/go-logr/logr/funcr/funcr.go b/vendor/github.com/go-logr/logr/funcr/funcr.go index 30568e768..b22c57d71 100644 --- a/vendor/github.com/go-logr/logr/funcr/funcr.go +++ b/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -77,7 +77,7 @@ func newSink(fn func(prefix, args string), formatter Formatter) logr.LogSink { write: fn, } // For skipping fnlogger.Info and fnlogger.Error. - l.Formatter.AddCallDepth(1) + l.AddCallDepth(1) // via Formatter return l } @@ -164,17 +164,17 @@ type fnlogger struct { } func (l fnlogger) WithName(name string) logr.LogSink { - l.Formatter.AddName(name) + l.AddName(name) // via Formatter return &l } func (l fnlogger) WithValues(kvList ...any) logr.LogSink { - l.Formatter.AddValues(kvList) + l.AddValues(kvList) // via Formatter return &l } func (l fnlogger) WithCallDepth(depth int) logr.LogSink { - l.Formatter.AddCallDepth(depth) + l.AddCallDepth(depth) // via Formatter return &l } diff --git a/vendor/github.com/go-playground/validator/v10/.golangci.yaml b/vendor/github.com/go-playground/validator/v10/.golangci.yaml index eab557ee2..dd9c05cc8 100644 --- a/vendor/github.com/go-playground/validator/v10/.golangci.yaml +++ b/vendor/github.com/go-playground/validator/v10/.golangci.yaml @@ -2,101 +2,53 @@ version: "2" linters: default: all disable: - - asasalint - - asciicheck - - bidichk - - bodyclose - - canonicalheader - - containedctx - - contextcheck + - noinlineerr + - wsl_v5 - copyloopvar - cyclop - - decorder - depguard - dogsled - dupl - dupword - - durationcheck - err113 - - errcheck - - errchkjson - - errname - errorlint - exhaustive - exhaustruct - - exptostd - - fatcontext - forbidigo - forcetypeassert - funlen - - ginkgolinter - - gocheckcompilerdirectives - gochecknoglobals - - gochecknoinits - - gochecksumtype - gocognit - goconst - gocritic - gocyclo - godot - - godox - - goheader - - gomoddirectives - - gomodguard - - goprintffuncname - gosec - gosmopolitan - - govet - - grouper - - iface - - importas - - inamedparam - - ineffassign - interfacebloat - intrange - ireturn - lll - - loggercheck - maintidx - - makezero - - mirror - misspell - mnd - - musttag - nakedret - nestif - - nilerr - - nilnesserr - nilnil - nlreturn - - noctx - - nolintlint - nonamedreturns - - nosprintfhostport - paralleltest - perfsprint - prealloc - - predeclared - - promlinter - - protogetter - - reassign - recvcheck - revive - - rowserrcheck - - sloglint - - spancheck - - sqlclosecheck - staticcheck - tagalign - tagliatelle - - testableexamples - - testifylint - testpackage - thelper - tparallel - unparam - varnamelen - - whitespace - wrapcheck - wsl - - zerologlint \ No newline at end of file diff --git a/vendor/github.com/go-playground/validator/v10/README.md b/vendor/github.com/go-playground/validator/v10/README.md index 368b966a6..28f7e159d 100644 --- a/vendor/github.com/go-playground/validator/v10/README.md +++ b/vendor/github.com/go-playground/validator/v10/README.md @@ -1,6 +1,6 @@ Package validator ================= -![Project status](https://img.shields.io/badge/version-10.25.0-green.svg) +[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/go-playground/validator)](https://github.com/go-playground/validator/releases) [![Build Status](https://github.com/go-playground/validator/actions/workflows/workflow.yml/badge.svg)](https://github.com/go-playground/validator/actions) [![Coverage Status](https://coveralls.io/repos/go-playground/validator/badge.svg?branch=master&service=github)](https://coveralls.io/github/go-playground/validator?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/validator)](https://goreportcard.com/report/github.com/go-playground/validator) @@ -262,6 +262,8 @@ validate := validator.New(validator.WithRequiredStructEnabled()) | excluded_without | Excluded Without | | excluded_without_all | Excluded Without All | | unique | Unique | +| validateFn | Verify if the method `Validate() error` does not return an error (or any specified method) | + #### Aliases: | Tag | Description | diff --git a/vendor/github.com/go-playground/validator/v10/baked_in.go b/vendor/github.com/go-playground/validator/v10/baked_in.go index 5332cf3fa..c968ad4ad 100644 --- a/vendor/github.com/go-playground/validator/v10/baked_in.go +++ b/vendor/github.com/go-playground/validator/v10/baked_in.go @@ -2,10 +2,12 @@ package validator import ( "bytes" + "cmp" "context" "crypto/sha256" "encoding/hex" "encoding/json" + "errors" "fmt" "io/fs" "net" @@ -244,6 +246,7 @@ var ( "cron": isCron, "spicedb": isSpiceDB, "ein": isEIN, + "validateFn": isValidateFn, } ) @@ -294,7 +297,7 @@ func isOneOf(fl FieldLevel) bool { case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: v = strconv.FormatUint(field.Uint(), 10) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } for i := 0; i < len(vals); i++ { if vals[i] == v { @@ -310,7 +313,7 @@ func isOneOfCI(fl FieldLevel) bool { field := fl.Field() if field.Kind() != reflect.String { - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } v := field.String() for _, val := range vals { @@ -384,13 +387,13 @@ func isUnique(fl FieldLevel) bool { } if uniqueField.Kind() != field.Kind() { - panic(fmt.Sprintf("Bad field type %T:%T", field.Interface(), uniqueField.Interface())) + panic(fmt.Sprintf("Bad field type %s:%s", field.Type(), uniqueField.Type())) } - return field.Interface() != uniqueField.Interface() + return getValue(field) != getValue(uniqueField) } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } } @@ -471,7 +474,7 @@ func isLongitude(fl FieldLevel) bool { case reflect.Float64: v = strconv.FormatFloat(field.Float(), 'f', -1, 64) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } return longitudeRegex().MatchString(v) @@ -494,7 +497,7 @@ func isLatitude(fl FieldLevel) bool { case reflect.Float64: v = strconv.FormatFloat(field.Float(), 'f', -1, 64) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } return latitudeRegex().MatchString(v) @@ -945,7 +948,6 @@ func isNeField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() != currentField.Int() @@ -966,9 +968,8 @@ func isNeField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Interface().(time.Time) - fieldTime := field.Interface().(time.Time) + t := getValue(currentField).(time.Time) + fieldTime := getValue(field).(time.Time) return !fieldTime.Equal(t) } @@ -1005,7 +1006,6 @@ func isLteCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() <= topField.Int() @@ -1023,9 +1023,8 @@ func isLteCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - fieldTime := field.Convert(timeType).Interface().(time.Time) - topTime := topField.Convert(timeType).Interface().(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) + topTime := getValue(topField.Convert(timeType)).(time.Time) return fieldTime.Before(topTime) || fieldTime.Equal(topTime) } @@ -1052,7 +1051,6 @@ func isLtCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() < topField.Int() @@ -1070,9 +1068,8 @@ func isLtCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - fieldTime := field.Convert(timeType).Interface().(time.Time) - topTime := topField.Convert(timeType).Interface().(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) + topTime := getValue(topField.Convert(timeType)).(time.Time) return fieldTime.Before(topTime) } @@ -1098,7 +1095,6 @@ func isGteCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() >= topField.Int() @@ -1116,9 +1112,8 @@ func isGteCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - fieldTime := field.Convert(timeType).Interface().(time.Time) - topTime := topField.Convert(timeType).Interface().(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) + topTime := getValue(topField.Convert(timeType)).(time.Time) return fieldTime.After(topTime) || fieldTime.Equal(topTime) } @@ -1144,7 +1139,6 @@ func isGtCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() > topField.Int() @@ -1162,9 +1156,8 @@ func isGtCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - fieldTime := field.Convert(timeType).Interface().(time.Time) - topTime := topField.Convert(timeType).Interface().(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) + topTime := getValue(topField.Convert(timeType)).(time.Time) return fieldTime.After(topTime) } @@ -1190,7 +1183,6 @@ func isNeCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return topField.Int() != field.Int() @@ -1211,9 +1203,8 @@ func isNeCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - t := field.Convert(timeType).Interface().(time.Time) - fieldTime := topField.Convert(timeType).Interface().(time.Time) + t := getValue(field.Convert(timeType)).(time.Time) + fieldTime := getValue(topField.Convert(timeType)).(time.Time) return !fieldTime.Equal(t) } @@ -1239,7 +1230,6 @@ func isEqCrossStructField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return topField.Int() == field.Int() @@ -1260,9 +1250,8 @@ func isEqCrossStructField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) { - - t := field.Convert(timeType).Interface().(time.Time) - fieldTime := topField.Convert(timeType).Interface().(time.Time) + t := getValue(field.Convert(timeType)).(time.Time) + fieldTime := getValue(topField.Convert(timeType)).(time.Time) return fieldTime.Equal(t) } @@ -1288,7 +1277,6 @@ func isEqField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() == currentField.Int() @@ -1309,9 +1297,8 @@ func isEqField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Convert(timeType).Interface().(time.Time) - fieldTime := field.Convert(timeType).Interface().(time.Time) + t := getValue(currentField.Convert(timeType)).(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) return fieldTime.Equal(t) } @@ -1332,7 +1319,6 @@ func isEq(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: return field.String() == param @@ -1367,7 +1353,7 @@ func isEq(fl FieldLevel) bool { return field.Bool() == p } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isEqIgnoreCase is the validation function for validating if the current field's string value is @@ -1382,7 +1368,7 @@ func isEqIgnoreCase(fl FieldLevel) bool { return strings.EqualFold(field.String(), param) } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isPostcodeByIso3166Alpha2 validates by value which is country code in iso 3166 alpha 2 @@ -1416,7 +1402,7 @@ func isPostcodeByIso3166Alpha2Field(fl FieldLevel) bool { } if kind != reflect.String { - panic(fmt.Sprintf("Bad field type %T", currentField.Interface())) + panic(fmt.Sprintf("Bad field type %s", currentField.Type())) } postcodeRegexInit.Do(initPostcodes) @@ -1472,16 +1458,7 @@ func isURI(fl FieldLevel) bool { return err == nil } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) -} - -// isFileURL is the helper function for validating if the `path` valid file URL as per RFC8089 -func isFileURL(path string) bool { - if !strings.HasPrefix(path, "file:/") { - return false - } - _, err := url.ParseRequestURI(path) - return err == nil + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isURL is the validation function for validating if the current field's value is a valid URL. @@ -1497,23 +1474,20 @@ func isURL(fl FieldLevel) bool { return false } - if isFileURL(s) { - return true - } - url, err := url.Parse(s) if err != nil || url.Scheme == "" { return false } + isFileScheme := url.Scheme == "file" - if url.Host == "" && url.Fragment == "" && url.Opaque == "" { + if (isFileScheme && (len(url.Path) == 0 || url.Path == "/")) || (!isFileScheme && len(url.Host) == 0 && len(url.Fragment) == 0 && len(url.Opaque) == 0) { return false } return true } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isHttpURL is the validation function for validating if the current field's value is a valid HTTP(s) URL. @@ -1536,7 +1510,7 @@ func isHttpURL(fl FieldLevel) bool { return url.Scheme == "http" || url.Scheme == "https" } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isUrnRFC2141 is the validation function for validating if the current field's value is a valid URN as per RFC 2141. @@ -1553,7 +1527,7 @@ func isUrnRFC2141(fl FieldLevel) bool { return match } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isFile is the validation function for validating if the current field's value is a valid existing file path. @@ -1570,7 +1544,7 @@ func isFile(fl FieldLevel) bool { return !fileInfo.IsDir() } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isImage is the validation function for validating if the current field's value contains the path to a valid image file @@ -1632,7 +1606,8 @@ func isImage(fl FieldLevel) bool { return true } } - return false + + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isFilePath is the validation function for validating if the current field's value is a valid file path. @@ -1686,7 +1661,7 @@ func isFilePath(fl FieldLevel) bool { } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isE164 is the validation function for validating if the current field's value is a valid e.164 formatted phone number. @@ -1796,7 +1771,7 @@ func hasValue(fl FieldLevel) bool { case reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func: return !field.IsNil() default: - if fl.(*validate).fldIsPointer && field.Interface() != nil { + if fl.(*validate).fldIsPointer && getValue(field) != nil { return true } return field.IsValid() && !field.IsZero() @@ -1807,10 +1782,13 @@ func hasValue(fl FieldLevel) bool { func hasNotZeroValue(fl FieldLevel) bool { field := fl.Field() switch field.Kind() { - case reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func: + case reflect.Slice, reflect.Map: + // For slices and maps, consider them "not zero" only if they're both non-nil AND have elements + return !field.IsNil() && field.Len() > 0 + case reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func: return !field.IsNil() default: - if fl.(*validate).fldIsPointer && field.Interface() != nil { + if fl.(*validate).fldIsPointer && getValue(field) != nil { return !field.IsZero() } return field.IsValid() && !field.IsZero() @@ -1834,7 +1812,7 @@ func requireCheckFieldKind(fl FieldLevel, param string, defaultNotFoundValue boo case reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func: return field.IsNil() default: - if nullable && field.Interface() != nil { + if nullable && getValue(field) != nil { return false } return field.IsValid() && field.IsZero() @@ -1851,7 +1829,6 @@ func requireCheckFieldValue( } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() == asInt(value) @@ -1864,7 +1841,13 @@ func requireCheckFieldValue( case reflect.Float64: return field.Float() == asFloat64(value) - case reflect.Slice, reflect.Map, reflect.Array: + case reflect.Slice, reflect.Map: + if value == "nil" { + return field.IsNil() + } + return int64(field.Len()) == asInt(value) + case reflect.Array: + // Arrays can't be nil, so only compare lengths return int64(field.Len()) == asInt(value) case reflect.Bool: @@ -2019,8 +2002,11 @@ func excludedWithout(fl FieldLevel) bool { // requiredWithout is the validation function // The field under validation must be present and not empty only when any of the other specified fields are not present. func requiredWithout(fl FieldLevel) bool { - if requireCheckFieldKind(fl, strings.TrimSpace(fl.Param()), true) { - return hasValue(fl) + params := parseOneOfParam2(fl.Param()) + for _, param := range params { + if requireCheckFieldKind(fl, param, true) { + return hasValue(fl) + } } return true } @@ -2060,7 +2046,6 @@ func isGteField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() >= currentField.Int() @@ -2078,9 +2063,8 @@ func isGteField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Convert(timeType).Interface().(time.Time) - fieldTime := field.Convert(timeType).Interface().(time.Time) + t := getValue(currentField.Convert(timeType)).(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) return fieldTime.After(t) || fieldTime.Equal(t) } @@ -2106,7 +2090,6 @@ func isGtField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() > currentField.Int() @@ -2124,9 +2107,8 @@ func isGtField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Convert(timeType).Interface().(time.Time) - fieldTime := field.Convert(timeType).Interface().(time.Time) + t := getValue(currentField.Convert(timeType)).(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) return fieldTime.After(t) } @@ -2147,7 +2129,6 @@ func isGte(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: p := asInt(param) @@ -2181,15 +2162,14 @@ func isGte(fl FieldLevel) bool { case reflect.Struct: if field.Type().ConvertibleTo(timeType) { - now := time.Now().UTC() - t := field.Convert(timeType).Interface().(time.Time) + t := getValue(field.Convert(timeType)).(time.Time) return t.After(now) || t.Equal(now) } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isGt is the validation function for validating if the current field's value is greater than the param's value. @@ -2198,7 +2178,6 @@ func isGt(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: p := asInt(param) @@ -2232,11 +2211,11 @@ func isGt(fl FieldLevel) bool { case reflect.Struct: if field.Type().ConvertibleTo(timeType) { - return field.Convert(timeType).Interface().(time.Time).After(time.Now().UTC()) + return getValue(field.Convert(timeType)).(time.Time).After(time.Now().UTC()) } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // hasLengthOf is the validation function for validating if the current field's value is equal to the param's value. @@ -2245,7 +2224,6 @@ func hasLengthOf(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: p := asInt(param) @@ -2277,7 +2255,7 @@ func hasLengthOf(fl FieldLevel) bool { return field.Float() == p } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // hasMinOf is the validation function for validating if the current field's value is greater than or equal to the param's value. @@ -2296,7 +2274,6 @@ func isLteField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() <= currentField.Int() @@ -2314,9 +2291,8 @@ func isLteField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Convert(timeType).Interface().(time.Time) - fieldTime := field.Convert(timeType).Interface().(time.Time) + t := getValue(currentField.Convert(timeType)).(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) return fieldTime.Before(t) || fieldTime.Equal(t) } @@ -2342,7 +2318,6 @@ func isLtField(fl FieldLevel) bool { } switch kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return field.Int() < currentField.Int() @@ -2360,9 +2335,8 @@ func isLtField(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) { - - t := currentField.Convert(timeType).Interface().(time.Time) - fieldTime := field.Convert(timeType).Interface().(time.Time) + t := getValue(currentField.Convert(timeType)).(time.Time) + fieldTime := getValue(field.Convert(timeType)).(time.Time) return fieldTime.Before(t) } @@ -2383,7 +2357,6 @@ func isLte(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: p := asInt(param) @@ -2417,15 +2390,14 @@ func isLte(fl FieldLevel) bool { case reflect.Struct: if field.Type().ConvertibleTo(timeType) { - now := time.Now().UTC() - t := field.Convert(timeType).Interface().(time.Time) + t := getValue(field.Convert(timeType)).(time.Time) return t.Before(now) || t.Equal(now) } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isLt is the validation function for validating if the current field's value is less than the param's value. @@ -2434,7 +2406,6 @@ func isLt(fl FieldLevel) bool { param := fl.Param() switch field.Kind() { - case reflect.String: p := asInt(param) @@ -2468,11 +2439,11 @@ func isLt(fl FieldLevel) bool { case reflect.Struct: if field.Type().ConvertibleTo(timeType) { - return field.Convert(timeType).Interface().(time.Time).Before(time.Now().UTC()) + return getValue(field.Convert(timeType)).(time.Time).Before(time.Now().UTC()) } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // hasMaxOf is the validation function for validating if the current field's value is less than or equal to the param's value. @@ -2642,7 +2613,7 @@ func isDir(fl FieldLevel) bool { return fileInfo.IsDir() } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isDirPath is the validation function for validating if the current field's value is a valid directory. @@ -2699,7 +2670,7 @@ func isDirPath(fl FieldLevel) bool { } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isJSON is the validation function for validating if the current field's value is a valid json string. @@ -2714,12 +2685,12 @@ func isJSON(fl FieldLevel) bool { fieldType := field.Type() if fieldType.ConvertibleTo(byteSliceType) { - b := field.Convert(byteSliceType).Interface().([]byte) + b := getValue(field.Convert(byteSliceType)).([]byte) return json.Valid(b) } } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isJWT is the validation function for validating if the current field's value is a valid JWT string. @@ -2766,7 +2737,7 @@ func isLowercase(fl FieldLevel) bool { return field.String() == strings.ToLower(field.String()) } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isUppercase is the validation function for validating if the current field's value is an uppercase string. @@ -2780,7 +2751,7 @@ func isUppercase(fl FieldLevel) bool { return field.String() == strings.ToUpper(field.String()) } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isDatetime is the validation function for validating if the current field's value is a valid datetime string. @@ -2794,7 +2765,7 @@ func isDatetime(fl FieldLevel) bool { return err == nil } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isTimeZone is the validation function for validating if the current field's value is a valid time zone string. @@ -2816,7 +2787,7 @@ func isTimeZone(fl FieldLevel) bool { return err == nil } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isIso3166Alpha2 is the validation function for validating if the current field's value is a valid iso3166-1 alpha-2 country code. @@ -2860,7 +2831,7 @@ func isIso3166AlphaNumeric(fl FieldLevel) bool { case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: code = int(field.Uint() % 1000) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } _, ok := iso3166_1_alpha_numeric[code] @@ -2884,7 +2855,7 @@ func isIso3166AlphaNumericEU(fl FieldLevel) bool { case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: code = int(field.Uint() % 1000) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } _, ok := iso3166_1_alpha_numeric_eu[code] @@ -2914,7 +2885,7 @@ func isIso4217Numeric(fl FieldLevel) bool { case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: code = int(field.Uint()) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } _, ok := iso4217_numeric[code] @@ -2930,7 +2901,7 @@ func isBCP47LanguageTag(fl FieldLevel) bool { return err == nil } - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } // isIsoBicFormat is the validation function for validating if the current field's value is a valid Business Identifier Code (SWIFT code), defined in ISO 9362 @@ -3053,7 +3024,7 @@ func hasLuhnChecksum(fl FieldLevel) bool { case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: str = strconv.FormatUint(field.Uint(), 10) default: - panic(fmt.Sprintf("Bad field type %T", field.Interface())) + panic(fmt.Sprintf("Bad field type %s", field.Type())) } size := len(str) if size < 2 { // there has to be at least one digit that carries a meaning + the checksum @@ -3079,3 +3050,60 @@ func isEIN(fl FieldLevel) bool { return einRegex().MatchString(field.String()) } + +func isValidateFn(fl FieldLevel) bool { + const defaultParam = `Validate` + + field := fl.Field() + validateFn := cmp.Or(fl.Param(), defaultParam) + + ok, err := tryCallValidateFn(field, validateFn) + if err != nil { + return false + } + + return ok +} + +var ( + errMethodNotFound = errors.New(`method not found`) + errMethodReturnNoValues = errors.New(`method return o values (void)`) + errMethodReturnInvalidType = errors.New(`method should return invalid type`) +) + +func tryCallValidateFn(field reflect.Value, validateFn string) (bool, error) { + method := field.MethodByName(validateFn) + if field.CanAddr() && !method.IsValid() { + method = field.Addr().MethodByName(validateFn) + } + + if !method.IsValid() { + return false, fmt.Errorf("unable to call %q on type %q: %w", + validateFn, field.Type().String(), errMethodNotFound) + } + + returnValues := method.Call([]reflect.Value{}) + if len(returnValues) == 0 { + return false, fmt.Errorf("unable to use result of method %q on type %q: %w", + validateFn, field.Type().String(), errMethodReturnNoValues) + } + + firstReturnValue := returnValues[0] + + switch firstReturnValue.Kind() { + case reflect.Bool: + return firstReturnValue.Bool(), nil + case reflect.Interface: + errorType := reflect.TypeOf((*error)(nil)).Elem() + + if firstReturnValue.Type().Implements(errorType) { + return firstReturnValue.IsNil(), nil + } + + return false, fmt.Errorf("unable to use result of method %q on type %q: %w (got interface %v expect error)", + validateFn, field.Type().String(), errMethodReturnInvalidType, firstReturnValue.Type().String()) + default: + return false, fmt.Errorf("unable to use result of method %q on type %q: %w (got %v expect error or bool)", + validateFn, field.Type().String(), errMethodReturnInvalidType, firstReturnValue.Type().String()) + } +} diff --git a/vendor/github.com/go-playground/validator/v10/cache.go b/vendor/github.com/go-playground/validator/v10/cache.go index 41d40bfea..fb101b064 100644 --- a/vendor/github.com/go-playground/validator/v10/cache.go +++ b/vendor/github.com/go-playground/validator/v10/cache.go @@ -124,7 +124,6 @@ func (v *Validate) extractStructCache(current reflect.Value, sName string) *cStr var customName string for i := 0; i < numFields; i++ { - fld = typ.Field(i) if !v.privateFieldValidation && !fld.Anonymous && len(fld.PkgPath) > 0 { @@ -191,7 +190,6 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s } else { next, curr := v.parseFieldTagsRecursive(tagsVal, fieldName, t, true) current.next, current = next, curr - } continue } @@ -210,7 +208,6 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s switch t { case diveTag: current.typeof = typeDive - continue case keysTag: current.typeof = typeKeys @@ -219,8 +216,6 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s panic(fmt.Sprintf("'%s' tag must be immediately preceded by the '%s' tag", keysTag, diveTag)) } - current.typeof = typeKeys - // need to pass along only keys tag // need to increment i to skip over the keys tags b := make([]byte, 0, 64) @@ -228,7 +223,6 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s i++ for ; i < len(tags); i++ { - b = append(b, tags[i]...) b = append(b, ',') @@ -238,7 +232,6 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s } current.keys, _ = v.parseFieldTagsRecursive(string(b[:len(b)-1]), fieldName, "", false) - continue case endKeysTag: current.typeof = typeEndKeys @@ -256,19 +249,15 @@ func (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias s case omitempty: current.typeof = typeOmitEmpty - continue case omitnil: current.typeof = typeOmitNil - continue case structOnlyTag: current.typeof = typeStructOnly - continue case noStructLevelTag: current.typeof = typeNoStructLevel - continue default: if t == isdefault { diff --git a/vendor/github.com/go-playground/validator/v10/doc.go b/vendor/github.com/go-playground/validator/v10/doc.go index e7a241fbc..23cce9916 100644 --- a/vendor/github.com/go-playground/validator/v10/doc.go +++ b/vendor/github.com/go-playground/validator/v10/doc.go @@ -188,7 +188,7 @@ Same as structonly tag except that any struct level validations will not run. # Omit Empty -Allows conditional validation, for example if a field is not set with +Allows conditional validation, for example, if a field is not set with a value (Determined by the "required" validator) then other validation such as min or max won't run, but if a value is set validation will run. @@ -756,6 +756,20 @@ in a field of the struct specified via a parameter. // For slices of struct: Usage: unique=field +# ValidateFn + +This validates that an object responds to a method that can return error or bool. +By default it expects an interface `Validate() error` and check that the method +does not return an error. Other methods can be specified using two signatures: +If the method returns an error, it check if the return value is nil. +If the method returns a boolean, it checks if the value is true. + + // to use the default method Validate() error + Usage: validateFn + + // to use the custom method IsValid() bool (or error) + Usage: validateFn=IsValid + # Alpha Only This validates that a string value contains ASCII alpha characters only diff --git a/vendor/github.com/go-playground/validator/v10/errors.go b/vendor/github.com/go-playground/validator/v10/errors.go index be2676e9e..fd9062567 100644 --- a/vendor/github.com/go-playground/validator/v10/errors.go +++ b/vendor/github.com/go-playground/validator/v10/errors.go @@ -24,7 +24,6 @@ type InvalidValidationError struct { // Error returns InvalidValidationError message func (e *InvalidValidationError) Error() string { - if e.Type == nil { return "validator: (nil)" } @@ -41,11 +40,9 @@ type ValidationErrors []FieldError // All information to create an error message specific to your application is contained within // the FieldError found within the ValidationErrors array func (ve ValidationErrors) Error() string { - buff := bytes.NewBufferString("") for i := 0; i < len(ve); i++ { - buff.WriteString(ve[i].Error()) buff.WriteString("\n") } @@ -55,7 +52,6 @@ func (ve ValidationErrors) Error() string { // Translate translates all of the ValidationErrors func (ve ValidationErrors) Translate(ut ut.Translator) ValidationErrorsTranslations { - trans := make(ValidationErrorsTranslations) var fe *fieldError @@ -109,22 +105,24 @@ type FieldError interface { // StructNamespace returns the namespace for the field error, with the field's // actual name. // - // eq. "User.FirstName" see Namespace for comparison + // eg. "User.FirstName" see Namespace for comparison // // NOTE: this field can be blank when validating a single primitive field // using validate.Field(...) as there is no way to extract its name StructNamespace() string - // Field returns the fields name with the tag name taking precedence over the + // Field returns the field's name with the tag name taking precedence over the // field's actual name. // - // eq. JSON name "fname" + // `RegisterTagNameFunc` must be registered to get tag value. + // + // eg. JSON name "fname" // see StructField for comparison Field() string // StructField returns the field's actual name from the struct, when able to determine. // - // eq. "FirstName" + // eg. "FirstName" // see Field for comparison StructField() string @@ -204,7 +202,6 @@ func (fe *fieldError) StructNamespace() string { // Field returns the field's name with the tag name taking precedence over the // field's actual name. func (fe *fieldError) Field() string { - return fe.ns[len(fe.ns)-int(fe.fieldLen):] // // return fe.field // fld := fe.ns[len(fe.ns)-int(fe.fieldLen):] diff --git a/vendor/github.com/go-playground/validator/v10/struct_level.go b/vendor/github.com/go-playground/validator/v10/struct_level.go index fa7af9dd5..129b28725 100644 --- a/vendor/github.com/go-playground/validator/v10/struct_level.go +++ b/vendor/github.com/go-playground/validator/v10/struct_level.go @@ -107,7 +107,6 @@ func (v *validate) ExtractType(field reflect.Value) (reflect.Value, reflect.Kind // ReportError reports an error just by passing the field and tag information func (v *validate) ReportError(field interface{}, fieldName, structFieldName, tag, param string) { - fv, kind, _ := v.extractTypeInternal(reflect.ValueOf(field), false) if len(structFieldName) == 0 { @@ -123,7 +122,6 @@ func (v *validate) ReportError(field interface{}, fieldName, structFieldName, ta } if kind == reflect.Invalid { - v.errs = append(v.errs, &fieldError{ v: v.v, @@ -149,7 +147,7 @@ func (v *validate) ReportError(field interface{}, fieldName, structFieldName, ta structNs: v.str2, fieldLen: uint8(len(fieldName)), structfieldLen: uint8(len(structFieldName)), - value: fv.Interface(), + value: getValue(fv), param: param, kind: kind, typ: fv.Type(), @@ -161,11 +159,9 @@ func (v *validate) ReportError(field interface{}, fieldName, structFieldName, ta // // NOTE: this function prepends the current namespace to the relative ones. func (v *validate) ReportValidationErrors(relativeNamespace, relativeStructNamespace string, errs ValidationErrors) { - var err *fieldError for i := 0; i < len(errs); i++ { - err = errs[i].(*fieldError) err.ns = string(append(append(v.ns, relativeNamespace...), err.ns...)) err.structNs = string(append(append(v.actualNs, relativeStructNamespace...), err.structNs...)) diff --git a/vendor/github.com/go-playground/validator/v10/util.go b/vendor/github.com/go-playground/validator/v10/util.go index 9285223a2..b1fd8cc11 100644 --- a/vendor/github.com/go-playground/validator/v10/util.go +++ b/vendor/github.com/go-playground/validator/v10/util.go @@ -13,7 +13,6 @@ import ( // It will dive into pointers, customTypes and return you the // underlying value and it's kind. func (v *validate) extractTypeInternal(current reflect.Value, nullable bool) (reflect.Value, reflect.Kind, bool) { - BEGIN: switch current.Kind() { case reflect.Ptr: @@ -44,7 +43,6 @@ BEGIN: default: if v.v.hasCustomFuncs { - if fn, ok := v.v.customFuncs[current.Type()]; ok { current = reflect.ValueOf(fn(current)) goto BEGIN @@ -61,7 +59,6 @@ BEGIN: // NOTE: when not successful ok will be false, this can happen when a nested struct is nil and so the field // could not be retrieved because it didn't exist. func (v *validate) getStructFieldOKInternal(val reflect.Value, namespace string) (current reflect.Value, kind reflect.Kind, nullable bool, found bool) { - BEGIN: current, kind, nullable = v.ExtractType(val) if kind == reflect.Invalid { @@ -74,7 +71,6 @@ BEGIN: } switch kind { - case reflect.Ptr, reflect.Interface: return @@ -85,7 +81,6 @@ BEGIN: var ns string if !typ.ConvertibleTo(timeType) { - idx := strings.Index(namespace, namespaceSeparator) if idx != -1 { @@ -222,7 +217,7 @@ BEGIN: panic("Invalid field namespace") } -// asInt returns the parameter as a int64 +// asInt returns the parameter as an int64 // or panics if it can't convert func asInt(param string) int64 { i, err := strconv.ParseInt(param, 0, 64) @@ -256,7 +251,6 @@ func asIntFromType(t reflect.Type, param string) int64 { // asUint returns the parameter as a uint64 // or panics if it can't convert func asUint(param string) uint64 { - i, err := strconv.ParseUint(param, 0, 64) panicIf(err) @@ -282,7 +276,6 @@ func asFloat32(param string) float64 { // asBool returns the parameter as a bool // or panics if it can't convert func asBool(param string) bool { - i, err := strconv.ParseBool(param) panicIf(err) @@ -303,7 +296,7 @@ func fieldMatchesRegexByStringerValOrString(regexFn func() *regexp.Regexp, fl Fi case reflect.String: return regex.MatchString(fl.Field().String()) default: - if stringer, ok := fl.Field().Interface().(fmt.Stringer); ok { + if stringer, ok := getValue(fl.Field()).(fmt.Stringer); ok { return regex.MatchString(stringer.String()) } else { return regex.MatchString(fl.Field().String()) diff --git a/vendor/github.com/go-playground/validator/v10/validator.go b/vendor/github.com/go-playground/validator/v10/validator.go index d7c2e6586..995b0e19a 100644 --- a/vendor/github.com/go-playground/validator/v10/validator.go +++ b/vendor/github.com/go-playground/validator/v10/validator.go @@ -32,14 +32,12 @@ type validate struct { // parent and current will be the same the first run of validateStruct func (v *validate) validateStruct(ctx context.Context, parent reflect.Value, current reflect.Value, typ reflect.Type, ns []byte, structNs []byte, ct *cTag) { - cs, ok := v.v.structCache.Get(typ) if !ok { cs = v.v.extractStructCache(current, typ.Name()) } if len(ns) == 0 && len(cs.name) != 0 { - ns = append(ns, cs.name...) ns = append(ns, '.') @@ -50,21 +48,17 @@ func (v *validate) validateStruct(ctx context.Context, parent reflect.Value, cur // ct is nil on top level struct, and structs as fields that have no tag info // so if nil or if not nil and the structonly tag isn't present if ct == nil || ct.typeof != typeStructOnly { - var f *cField for i := 0; i < len(cs.fields); i++ { - f = cs.fields[i] if v.isPartial { - if v.ffn != nil { // used with StructFiltered if v.ffn(append(structNs, f.name...)) { continue } - } else { // used with StructPartial & StructExcept _, ok = v.includeExclude[string(append(structNs, f.name...))] @@ -83,7 +77,6 @@ func (v *validate) validateStruct(ctx context.Context, parent reflect.Value, cur // first iteration will have no info about nostructlevel tag, and is checked prior to // calling the next iteration of validateStruct called from traverseField. if cs.fn != nil { - v.slflParent = parent v.slCurrent = current v.ns = ns @@ -267,7 +260,7 @@ OUTER: return } default: - if v.fldIsPointer && field.Interface() == nil { + if v.fldIsPointer && getValue(field) == nil { return } } @@ -291,7 +284,6 @@ OUTER: reusableCF := &cField{} for i := 0; i < current.Len(); i++ { - i64 = int64(i) v.misc = append(v.misc[0:0], cf.name...) @@ -304,7 +296,6 @@ OUTER: if cf.namesEqual { reusableCF.altName = reusableCF.name } else { - v.misc = append(v.misc[0:0], cf.altName...) v.misc = append(v.misc, '[') v.misc = strconv.AppendInt(v.misc, i64, 10) @@ -321,8 +312,7 @@ OUTER: reusableCF := &cField{} for _, key := range current.MapKeys() { - - pv = fmt.Sprintf("%v", key.Interface()) + pv = fmt.Sprintf("%v", key) v.misc = append(v.misc[0:0], cf.name...) v.misc = append(v.misc, '[') @@ -347,6 +337,18 @@ OUTER: // can be nil when just keys being validated if ct.next != nil { v.traverseField(ctx, parent, current.MapIndex(key), ns, structNs, reusableCF, ct.next) + } else { + // Struct fallback when map values are structs + val := current.MapIndex(key) + switch val.Kind() { + case reflect.Ptr: + if val.Elem().Kind() == reflect.Struct { + // Dive into the struct so its own tags run + v.traverseField(ctx, parent, val, ns, structNs, reusableCF, nil) + } + case reflect.Struct: + v.traverseField(ctx, parent, val, ns, structNs, reusableCF, nil) + } } } else { v.traverseField(ctx, parent, current.MapIndex(key), ns, structNs, reusableCF, ct) @@ -366,7 +368,6 @@ OUTER: v.misc = v.misc[0:0] for { - // set Field Level fields v.slflParent = parent v.flField = current @@ -381,7 +382,6 @@ OUTER: // drain rest of the 'or' values, then continue or leave for { - ct = ct.next if ct == nil { @@ -418,7 +418,6 @@ OUTER: } if ct.hasAlias { - v.errs = append(v.errs, &fieldError{ v: v.v, @@ -434,9 +433,7 @@ OUTER: typ: typ, }, ) - } else { - tVal := string(v.misc)[1:] v.errs = append(v.errs, @@ -500,7 +497,6 @@ OUTER: ct = ct.next } } - } func getValue(val reflect.Value) interface{} { diff --git a/vendor/github.com/go-playground/validator/v10/validator_instance.go b/vendor/github.com/go-playground/validator/v10/validator_instance.go index 779f689a8..9362cd731 100644 --- a/vendor/github.com/go-playground/validator/v10/validator_instance.go +++ b/vendor/github.com/go-playground/validator/v10/validator_instance.go @@ -104,7 +104,6 @@ type Validate struct { // in essence only parsing your validation tags once per struct type. // Using multiple instances neglects the benefit of caching. func New(options ...Option) *Validate { - tc := new(tagCache) tc.m.Store(make(map[string]*cTag)) @@ -126,7 +125,6 @@ func New(options ...Option) *Validate { // must copy validators for separate validations to be used in each instance for k, val := range bakedInValidators { - switch k { // these require that even if the value is nil that the validation should run, omitempty still overrides this behaviour case requiredIfTag, requiredUnlessTag, requiredWithTag, requiredWithAllTag, requiredWithoutTag, requiredWithoutAllTag, @@ -233,30 +231,12 @@ func (v *Validate) RegisterValidationCtx(tag string, fn FuncCtx, callValidationE return v.registerValidation(tag, fn, false, nilCheckable) } -func (v *Validate) registerValidation(tag string, fn FuncCtx, bakedIn bool, nilCheckable bool) error { - if len(tag) == 0 { - return errors.New("function Key cannot be empty") - } - - if fn == nil { - return errors.New("function cannot be empty") - } - - _, ok := restrictedTags[tag] - if !bakedIn && (ok || strings.ContainsAny(tag, restrictedTagChars)) { - panic(fmt.Sprintf(restrictedTagErr, tag)) - } - v.validations[tag] = internalValidationFuncWrapper{fn: fn, runValidationOnNil: nilCheckable} - return nil -} - // RegisterAlias registers a mapping of a single validation tag that // defines a common or complex set of validation(s) to simplify adding validation // to structs. // // NOTE: this function is not thread-safe it is intended that these all be registered prior to any validation func (v *Validate) RegisterAlias(alias, tags string) { - _, ok := restrictedTags[alias] if ok || strings.ContainsAny(alias, restrictedTagChars) { @@ -280,7 +260,6 @@ func (v *Validate) RegisterStructValidation(fn StructLevelFunc, types ...interfa // NOTE: // - this method is not thread-safe it is intended that these all be registered prior to any validation func (v *Validate) RegisterStructValidationCtx(fn StructLevelFuncCtx, types ...interface{}) { - if v.structLevelFuncs == nil { v.structLevelFuncs = make(map[reflect.Type]StructLevelFuncCtx) } @@ -327,7 +306,6 @@ func (v *Validate) RegisterStructValidationMapRules(rules map[string]string, typ // // NOTE: this method is not thread-safe it is intended that these all be registered prior to any validation func (v *Validate) RegisterCustomTypeFunc(fn CustomTypeFunc, types ...interface{}) { - if v.customFuncs == nil { v.customFuncs = make(map[reflect.Type]CustomTypeFunc) } @@ -341,7 +319,6 @@ func (v *Validate) RegisterCustomTypeFunc(fn CustomTypeFunc, types ...interface{ // RegisterTranslation registers translations against the provided tag. func (v *Validate) RegisterTranslation(tag string, trans ut.Translator, registerFn RegisterTranslationsFunc, translationFn TranslationFunc) (err error) { - if v.transTagFunc == nil { v.transTagFunc = make(map[ut.Translator]map[string]TranslationFunc) } @@ -375,7 +352,6 @@ func (v *Validate) Struct(s interface{}) error { // It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise. // You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors. func (v *Validate) StructCtx(ctx context.Context, s interface{}) (err error) { - val := reflect.ValueOf(s) top := val @@ -492,10 +468,8 @@ func (v *Validate) StructPartialCtx(ctx context.Context, s interface{}, fields . name := typ.Name() for _, k := range fields { - flds := strings.Split(k, namespaceSeparator) if len(flds) > 0 { - vd.misc = append(vd.misc[0:0], name...) // Don't append empty name for unnamed structs if len(vd.misc) != 0 { @@ -503,7 +477,6 @@ func (v *Validate) StructPartialCtx(ctx context.Context, s interface{}, fields . } for _, s := range flds { - idx := strings.Index(s, leftBracket) if idx != -1 { @@ -519,7 +492,6 @@ func (v *Validate) StructPartialCtx(ctx context.Context, s interface{}, fields . idx = strings.Index(s, leftBracket) } } else { - vd.misc = append(vd.misc, s...) vd.includeExclude[string(vd.misc)] = struct{}{} } @@ -582,7 +554,6 @@ func (v *Validate) StructExceptCtx(ctx context.Context, s interface{}, fields .. name := typ.Name() for _, key := range fields { - vd.misc = vd.misc[0:0] if len(name) > 0 { @@ -709,3 +680,20 @@ func (v *Validate) VarWithValueCtx(ctx context.Context, field interface{}, other v.pool.Put(vd) return } + +func (v *Validate) registerValidation(tag string, fn FuncCtx, bakedIn bool, nilCheckable bool) error { + if len(tag) == 0 { + return errors.New("function Key cannot be empty") + } + + if fn == nil { + return errors.New("function cannot be empty") + } + + _, ok := restrictedTags[tag] + if !bakedIn && (ok || strings.ContainsAny(tag, restrictedTagChars)) { + panic(fmt.Sprintf(restrictedTagErr, tag)) + } + v.validations[tag] = internalValidationFuncWrapper{fn: fn, runValidationOnNil: nilCheckable} + return nil +} diff --git a/vendor/github.com/go-viper/mapstructure/v2/.golangci.yaml b/vendor/github.com/go-viper/mapstructure/v2/.golangci.yaml index ec1680b3a..bda962566 100644 --- a/vendor/github.com/go-viper/mapstructure/v2/.golangci.yaml +++ b/vendor/github.com/go-viper/mapstructure/v2/.golangci.yaml @@ -37,3 +37,12 @@ formatters: - standard - default - localmodule + gofmt: + simplify: true + rewrite-rules: + - pattern: interface{} + replacement: any + + exclusions: + paths: + - internal/ diff --git a/vendor/github.com/go-viper/mapstructure/v2/README.md b/vendor/github.com/go-viper/mapstructure/v2/README.md index bc4be08e6..45db71975 100644 --- a/vendor/github.com/go-viper/mapstructure/v2/README.md +++ b/vendor/github.com/go-viper/mapstructure/v2/README.md @@ -1,7 +1,7 @@ # mapstructure [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/go-viper/mapstructure/ci.yaml?style=flat-square)](https://github.com/go-viper/mapstructure/actions/workflows/ci.yaml) -[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/mod/github.com/go-viper/mapstructure) +[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/mod/github.com/go-viper/mapstructure/v2) ![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/go-viper/mapstructure?style=flat-square&color=61CFDD) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/go-viper/mapstructure/badge?style=flat-square)](https://deps.dev/go/github.com%252Fgo-viper%252Fmapstructure%252Fv2) diff --git a/vendor/github.com/go-viper/mapstructure/v2/decode_hooks.go b/vendor/github.com/go-viper/mapstructure/v2/decode_hooks.go index 57c6de69d..a852a0a04 100644 --- a/vendor/github.com/go-viper/mapstructure/v2/decode_hooks.go +++ b/vendor/github.com/go-viper/mapstructure/v2/decode_hooks.go @@ -13,7 +13,7 @@ import ( "time" ) -// typedDecodeHook takes a raw DecodeHookFunc (an interface{}) and turns +// typedDecodeHook takes a raw DecodeHookFunc (an any) and turns // it into the proper DecodeHookFunc type, such as DecodeHookFuncType. func typedDecodeHook(h DecodeHookFunc) DecodeHookFunc { // Create variables here so we can reference them with the reflect pkg @@ -23,7 +23,7 @@ func typedDecodeHook(h DecodeHookFunc) DecodeHookFunc { // Fill in the variables into this interface and the rest is done // automatically using the reflect package. - potential := []interface{}{f1, f2, f3} + potential := []any{f1, f2, f3} v := reflect.ValueOf(h) vt := v.Type() @@ -37,25 +37,25 @@ func typedDecodeHook(h DecodeHookFunc) DecodeHookFunc { return nil } -// cachedDecodeHook takes a raw DecodeHookFunc (an interface{}) and turns +// cachedDecodeHook takes a raw DecodeHookFunc (an any) and turns // it into a closure to be used directly // if the type fails to convert we return a closure always erroring to keep the previous behaviour -func cachedDecodeHook(raw DecodeHookFunc) func(from reflect.Value, to reflect.Value) (interface{}, error) { +func cachedDecodeHook(raw DecodeHookFunc) func(from reflect.Value, to reflect.Value) (any, error) { switch f := typedDecodeHook(raw).(type) { case DecodeHookFuncType: - return func(from reflect.Value, to reflect.Value) (interface{}, error) { + return func(from reflect.Value, to reflect.Value) (any, error) { return f(from.Type(), to.Type(), from.Interface()) } case DecodeHookFuncKind: - return func(from reflect.Value, to reflect.Value) (interface{}, error) { + return func(from reflect.Value, to reflect.Value) (any, error) { return f(from.Kind(), to.Kind(), from.Interface()) } case DecodeHookFuncValue: - return func(from reflect.Value, to reflect.Value) (interface{}, error) { + return func(from reflect.Value, to reflect.Value) (any, error) { return f(from, to) } default: - return func(from reflect.Value, to reflect.Value) (interface{}, error) { + return func(from reflect.Value, to reflect.Value) (any, error) { return nil, errors.New("invalid decode hook signature") } } @@ -67,7 +67,7 @@ func cachedDecodeHook(raw DecodeHookFunc) func(from reflect.Value, to reflect.Va func DecodeHookExec( raw DecodeHookFunc, from reflect.Value, to reflect.Value, -) (interface{}, error) { +) (any, error) { switch f := typedDecodeHook(raw).(type) { case DecodeHookFuncType: return f(from.Type(), to.Type(), from.Interface()) @@ -86,11 +86,11 @@ func DecodeHookExec( // The composed funcs are called in order, with the result of the // previous transformation. func ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc { - cached := make([]func(from reflect.Value, to reflect.Value) (interface{}, error), 0, len(fs)) + cached := make([]func(from reflect.Value, to reflect.Value) (any, error), 0, len(fs)) for _, f := range fs { cached = append(cached, cachedDecodeHook(f)) } - return func(f reflect.Value, t reflect.Value) (interface{}, error) { + return func(f reflect.Value, t reflect.Value) (any, error) { var err error data := f.Interface() @@ -114,13 +114,13 @@ func ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc { // OrComposeDecodeHookFunc executes all input hook functions until one of them returns no error. In that case its value is returned. // If all hooks return an error, OrComposeDecodeHookFunc returns an error concatenating all error messages. func OrComposeDecodeHookFunc(ff ...DecodeHookFunc) DecodeHookFunc { - cached := make([]func(from reflect.Value, to reflect.Value) (interface{}, error), 0, len(ff)) + cached := make([]func(from reflect.Value, to reflect.Value) (any, error), 0, len(ff)) for _, f := range ff { cached = append(cached, cachedDecodeHook(f)) } - return func(a, b reflect.Value) (interface{}, error) { + return func(a, b reflect.Value) (any, error) { var allErrs string - var out interface{} + var out any var err error for _, c := range cached { @@ -143,8 +143,8 @@ func StringToSliceHookFunc(sep string) DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -161,14 +161,37 @@ func StringToSliceHookFunc(sep string) DecodeHookFunc { } } +// StringToWeakSliceHookFunc brings back the old (pre-v2) behavior of [StringToSliceHookFunc]. +// +// As of mapstructure v2.0.0 [StringToSliceHookFunc] checks if the return type is a string slice. +// This function removes that check. +func StringToWeakSliceHookFunc(sep string) DecodeHookFunc { + return func( + f reflect.Type, + t reflect.Type, + data any, + ) (any, error) { + if f.Kind() != reflect.String || t.Kind() != reflect.Slice { + return data, nil + } + + raw := data.(string) + if raw == "" { + return []string{}, nil + } + + return strings.Split(raw, sep), nil + } +} + // StringToTimeDurationHookFunc returns a DecodeHookFunc that converts // strings to time.Duration. func StringToTimeDurationHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -177,7 +200,29 @@ func StringToTimeDurationHookFunc() DecodeHookFunc { } // Convert it by parsing - return time.ParseDuration(data.(string)) + d, err := time.ParseDuration(data.(string)) + + return d, wrapTimeParseDurationError(err) + } +} + +// StringToTimeLocationHookFunc returns a DecodeHookFunc that converts +// strings to *time.Location. +func StringToTimeLocationHookFunc() DecodeHookFunc { + return func( + f reflect.Type, + t reflect.Type, + data any, + ) (any, error) { + if f.Kind() != reflect.String { + return data, nil + } + if t != reflect.TypeOf(time.Local) { + return data, nil + } + d, err := time.LoadLocation(data.(string)) + + return d, wrapTimeParseLocationError(err) } } @@ -187,8 +232,8 @@ func StringToURLHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -197,7 +242,9 @@ func StringToURLHookFunc() DecodeHookFunc { } // Convert it by parsing - return url.Parse(data.(string)) + u, err := url.Parse(data.(string)) + + return u, wrapUrlError(err) } } @@ -207,8 +254,8 @@ func StringToIPHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -219,7 +266,7 @@ func StringToIPHookFunc() DecodeHookFunc { // Convert it by parsing ip := net.ParseIP(data.(string)) if ip == nil { - return net.IP{}, fmt.Errorf("failed parsing ip %v", data) + return net.IP{}, fmt.Errorf("failed parsing ip") } return ip, nil @@ -232,8 +279,8 @@ func StringToIPNetHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -243,7 +290,7 @@ func StringToIPNetHookFunc() DecodeHookFunc { // Convert it by parsing _, net, err := net.ParseCIDR(data.(string)) - return net, err + return net, wrapNetParseError(err) } } @@ -253,8 +300,8 @@ func StringToTimeHookFunc(layout string) DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -263,7 +310,9 @@ func StringToTimeHookFunc(layout string) DecodeHookFunc { } // Convert it by parsing - return time.Parse(layout, data.(string)) + ti, err := time.Parse(layout, data.(string)) + + return ti, wrapTimeParseError(err) } } @@ -275,8 +324,8 @@ func StringToTimeHookFunc(layout string) DecodeHookFunc { func WeaklyTypedHook( f reflect.Kind, t reflect.Kind, - data interface{}, -) (interface{}, error) { + data any, +) (any, error) { dataVal := reflect.ValueOf(data) switch t { case reflect.String: @@ -305,17 +354,17 @@ func WeaklyTypedHook( } func RecursiveStructToMapHookFunc() DecodeHookFunc { - return func(f reflect.Value, t reflect.Value) (interface{}, error) { + return func(f reflect.Value, t reflect.Value) (any, error) { if f.Kind() != reflect.Struct { return f.Interface(), nil } - var i interface{} = struct{}{} + var i any = struct{}{} if t.Type() != reflect.TypeOf(&i).Elem() { return f.Interface(), nil } - m := make(map[string]interface{}) + m := make(map[string]any) t.Set(reflect.ValueOf(m)) return f.Interface(), nil @@ -329,8 +378,8 @@ func TextUnmarshallerHookFunc() DecodeHookFuncType { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -356,8 +405,8 @@ func StringToNetIPAddrHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -366,7 +415,9 @@ func StringToNetIPAddrHookFunc() DecodeHookFunc { } // Convert it by parsing - return netip.ParseAddr(data.(string)) + addr, err := netip.ParseAddr(data.(string)) + + return addr, wrapNetIPParseAddrError(err) } } @@ -376,8 +427,8 @@ func StringToNetIPAddrPortHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -386,7 +437,9 @@ func StringToNetIPAddrPortHookFunc() DecodeHookFunc { } // Convert it by parsing - return netip.ParseAddrPort(data.(string)) + addrPort, err := netip.ParseAddrPort(data.(string)) + + return addrPort, wrapNetIPParseAddrPortError(err) } } @@ -396,8 +449,8 @@ func StringToNetIPPrefixHookFunc() DecodeHookFunc { return func( f reflect.Type, t reflect.Type, - data interface{}, - ) (interface{}, error) { + data any, + ) (any, error) { if f.Kind() != reflect.String { return data, nil } @@ -406,7 +459,9 @@ func StringToNetIPPrefixHookFunc() DecodeHookFunc { } // Convert it by parsing - return netip.ParsePrefix(data.(string)) + prefix, err := netip.ParsePrefix(data.(string)) + + return prefix, wrapNetIPParsePrefixError(err) } } @@ -439,178 +494,182 @@ func StringToBasicTypeHookFunc() DecodeHookFunc { // StringToInt8HookFunc returns a DecodeHookFunc that converts // strings to int8. func StringToInt8HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Int8 { return data, nil } // Convert it by parsing i64, err := strconv.ParseInt(data.(string), 0, 8) - return int8(i64), err + return int8(i64), wrapStrconvNumError(err) } } // StringToUint8HookFunc returns a DecodeHookFunc that converts // strings to uint8. func StringToUint8HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Uint8 { return data, nil } // Convert it by parsing u64, err := strconv.ParseUint(data.(string), 0, 8) - return uint8(u64), err + return uint8(u64), wrapStrconvNumError(err) } } // StringToInt16HookFunc returns a DecodeHookFunc that converts // strings to int16. func StringToInt16HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Int16 { return data, nil } // Convert it by parsing i64, err := strconv.ParseInt(data.(string), 0, 16) - return int16(i64), err + return int16(i64), wrapStrconvNumError(err) } } // StringToUint16HookFunc returns a DecodeHookFunc that converts // strings to uint16. func StringToUint16HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Uint16 { return data, nil } // Convert it by parsing u64, err := strconv.ParseUint(data.(string), 0, 16) - return uint16(u64), err + return uint16(u64), wrapStrconvNumError(err) } } // StringToInt32HookFunc returns a DecodeHookFunc that converts // strings to int32. func StringToInt32HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Int32 { return data, nil } // Convert it by parsing i64, err := strconv.ParseInt(data.(string), 0, 32) - return int32(i64), err + return int32(i64), wrapStrconvNumError(err) } } // StringToUint32HookFunc returns a DecodeHookFunc that converts // strings to uint32. func StringToUint32HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Uint32 { return data, nil } // Convert it by parsing u64, err := strconv.ParseUint(data.(string), 0, 32) - return uint32(u64), err + return uint32(u64), wrapStrconvNumError(err) } } // StringToInt64HookFunc returns a DecodeHookFunc that converts // strings to int64. func StringToInt64HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Int64 { return data, nil } // Convert it by parsing - return strconv.ParseInt(data.(string), 0, 64) + i64, err := strconv.ParseInt(data.(string), 0, 64) + return int64(i64), wrapStrconvNumError(err) } } // StringToUint64HookFunc returns a DecodeHookFunc that converts // strings to uint64. func StringToUint64HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Uint64 { return data, nil } // Convert it by parsing - return strconv.ParseUint(data.(string), 0, 64) + u64, err := strconv.ParseUint(data.(string), 0, 64) + return uint64(u64), wrapStrconvNumError(err) } } // StringToIntHookFunc returns a DecodeHookFunc that converts // strings to int. func StringToIntHookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Int { return data, nil } // Convert it by parsing i64, err := strconv.ParseInt(data.(string), 0, 0) - return int(i64), err + return int(i64), wrapStrconvNumError(err) } } // StringToUintHookFunc returns a DecodeHookFunc that converts // strings to uint. func StringToUintHookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Uint { return data, nil } // Convert it by parsing u64, err := strconv.ParseUint(data.(string), 0, 0) - return uint(u64), err + return uint(u64), wrapStrconvNumError(err) } } // StringToFloat32HookFunc returns a DecodeHookFunc that converts // strings to float32. func StringToFloat32HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Float32 { return data, nil } // Convert it by parsing f64, err := strconv.ParseFloat(data.(string), 32) - return float32(f64), err + return float32(f64), wrapStrconvNumError(err) } } // StringToFloat64HookFunc returns a DecodeHookFunc that converts // strings to float64. func StringToFloat64HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Float64 { return data, nil } // Convert it by parsing - return strconv.ParseFloat(data.(string), 64) + f64, err := strconv.ParseFloat(data.(string), 64) + return f64, wrapStrconvNumError(err) } } // StringToBoolHookFunc returns a DecodeHookFunc that converts // strings to bool. func StringToBoolHookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Bool { return data, nil } // Convert it by parsing - return strconv.ParseBool(data.(string)) + b, err := strconv.ParseBool(data.(string)) + return b, wrapStrconvNumError(err) } } @@ -629,26 +688,27 @@ func StringToRuneHookFunc() DecodeHookFunc { // StringToComplex64HookFunc returns a DecodeHookFunc that converts // strings to complex64. func StringToComplex64HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Complex64 { return data, nil } // Convert it by parsing c128, err := strconv.ParseComplex(data.(string), 64) - return complex64(c128), err + return complex64(c128), wrapStrconvNumError(err) } } // StringToComplex128HookFunc returns a DecodeHookFunc that converts // strings to complex128. func StringToComplex128HookFunc() DecodeHookFunc { - return func(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) { + return func(f reflect.Type, t reflect.Type, data any) (any, error) { if f.Kind() != reflect.String || t.Kind() != reflect.Complex128 { return data, nil } // Convert it by parsing - return strconv.ParseComplex(data.(string), 128) + c128, err := strconv.ParseComplex(data.(string), 128) + return c128, wrapStrconvNumError(err) } } diff --git a/vendor/github.com/go-viper/mapstructure/v2/errors.go b/vendor/github.com/go-viper/mapstructure/v2/errors.go index 31a3edfb0..07d31c22a 100644 --- a/vendor/github.com/go-viper/mapstructure/v2/errors.go +++ b/vendor/github.com/go-viper/mapstructure/v2/errors.go @@ -1,8 +1,14 @@ package mapstructure import ( + "errors" "fmt" + "net" + "net/url" "reflect" + "strconv" + "strings" + "time" ) // Error interface is implemented by all errors emitted by mapstructure. @@ -72,3 +78,167 @@ func (e *UnconvertibleTypeError) Error() string { } func (*UnconvertibleTypeError) mapstructure() {} + +func wrapStrconvNumError(err error) error { + if err == nil { + return nil + } + + if err, ok := err.(*strconv.NumError); ok { + return &strconvNumError{Err: err} + } + + return err +} + +type strconvNumError struct { + Err *strconv.NumError +} + +func (e *strconvNumError) Error() string { + return "strconv." + e.Err.Func + ": " + e.Err.Err.Error() +} + +func (e *strconvNumError) Unwrap() error { return e.Err } + +func wrapUrlError(err error) error { + if err == nil { + return nil + } + + if err, ok := err.(*url.Error); ok { + return &urlError{Err: err} + } + + return err +} + +type urlError struct { + Err *url.Error +} + +func (e *urlError) Error() string { + return fmt.Sprintf("%s", e.Err.Err) +} + +func (e *urlError) Unwrap() error { return e.Err } + +func wrapNetParseError(err error) error { + if err == nil { + return nil + } + + if err, ok := err.(*net.ParseError); ok { + return &netParseError{Err: err} + } + + return err +} + +type netParseError struct { + Err *net.ParseError +} + +func (e *netParseError) Error() string { + return "invalid " + e.Err.Type +} + +func (e *netParseError) Unwrap() error { return e.Err } + +func wrapTimeParseError(err error) error { + if err == nil { + return nil + } + + if err, ok := err.(*time.ParseError); ok { + return &timeParseError{Err: err} + } + + return err +} + +type timeParseError struct { + Err *time.ParseError +} + +func (e *timeParseError) Error() string { + if e.Err.Message == "" { + return fmt.Sprintf("parsing time as %q: cannot parse as %q", e.Err.Layout, e.Err.LayoutElem) + } + + return "parsing time " + e.Err.Message +} + +func (e *timeParseError) Unwrap() error { return e.Err } + +func wrapNetIPParseAddrError(err error) error { + if err == nil { + return nil + } + + if errMsg := err.Error(); strings.HasPrefix(errMsg, "ParseAddr") { + errPieces := strings.Split(errMsg, ": ") + + return fmt.Errorf("ParseAddr: %s", errPieces[len(errPieces)-1]) + } + + return err +} + +func wrapNetIPParseAddrPortError(err error) error { + if err == nil { + return nil + } + + errMsg := err.Error() + if strings.HasPrefix(errMsg, "invalid port ") { + return errors.New("invalid port") + } else if strings.HasPrefix(errMsg, "invalid ip:port ") { + return errors.New("invalid ip:port") + } + + return err +} + +func wrapNetIPParsePrefixError(err error) error { + if err == nil { + return nil + } + + if errMsg := err.Error(); strings.HasPrefix(errMsg, "netip.ParsePrefix") { + errPieces := strings.Split(errMsg, ": ") + + return fmt.Errorf("netip.ParsePrefix: %s", errPieces[len(errPieces)-1]) + } + + return err +} + +func wrapTimeParseDurationError(err error) error { + if err == nil { + return nil + } + + errMsg := err.Error() + if strings.HasPrefix(errMsg, "time: unknown unit ") { + return errors.New("time: unknown unit") + } else if strings.HasPrefix(errMsg, "time: ") { + idx := strings.LastIndex(errMsg, " ") + + return errors.New(errMsg[:idx]) + } + + return err +} + +func wrapTimeParseLocationError(err error) error { + if err == nil { + return nil + } + errMsg := err.Error() + if strings.Contains(errMsg, "unknown time zone") || strings.HasPrefix(errMsg, "time: unknown format") { + return fmt.Errorf("invalid time zone format: %w", err) + } + + return err +} diff --git a/vendor/github.com/go-viper/mapstructure/v2/mapstructure.go b/vendor/github.com/go-viper/mapstructure/v2/mapstructure.go index 4b738a3a9..7c35bce02 100644 --- a/vendor/github.com/go-viper/mapstructure/v2/mapstructure.go +++ b/vendor/github.com/go-viper/mapstructure/v2/mapstructure.go @@ -1,5 +1,5 @@ // Package mapstructure exposes functionality to convert one arbitrary -// Go type into another, typically to convert a map[string]interface{} +// Go type into another, typically to convert a map[string]any // into a native Go structure. // // The Go structure can be arbitrarily complex, containing slices, @@ -54,8 +54,8 @@ // // This would require an input that looks like below: // -// map[string]interface{}{ -// "person": map[string]interface{}{"name": "alice"}, +// map[string]any{ +// "person": map[string]any{"name": "alice"}, // } // // If your "person" value is NOT nested, then you can append ",squash" to @@ -68,7 +68,7 @@ // // Now the following input would be accepted: // -// map[string]interface{}{ +// map[string]any{ // "name": "alice", // } // @@ -79,7 +79,7 @@ // // Will be decoded into a map: // -// map[string]interface{}{ +// map[string]any{ // "name": "alice", // } // @@ -95,18 +95,18 @@ // // You can also use the ",remain" suffix on your tag to collect all unused // values in a map. The field with this tag MUST be a map type and should -// probably be a "map[string]interface{}" or "map[interface{}]interface{}". +// probably be a "map[string]any" or "map[any]any". // See example below: // // type Friend struct { // Name string -// Other map[string]interface{} `mapstructure:",remain"` +// Other map[string]any `mapstructure:",remain"` // } // // Given the input below, Other would be populated with the other // values that weren't used (everything but "name"): // -// map[string]interface{}{ +// map[string]any{ // "name": "bob", // "address": "123 Maple St.", // } @@ -161,7 +161,7 @@ // // Using this map as input: // -// map[string]interface{}{ +// map[string]any{ // "private": "I will be ignored", // "Public": "I made it through!", // } @@ -204,19 +204,19 @@ import ( // we started with Kinds and then realized Types were the better solution, // but have a promise to not break backwards compat so we now support // both. -type DecodeHookFunc interface{} +type DecodeHookFunc any // DecodeHookFuncType is a DecodeHookFunc which has complete information about // the source and target types. -type DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface{}, error) +type DecodeHookFuncType func(reflect.Type, reflect.Type, any) (any, error) // DecodeHookFuncKind is a DecodeHookFunc which knows only the Kinds of the // source and target types. -type DecodeHookFuncKind func(reflect.Kind, reflect.Kind, interface{}) (interface{}, error) +type DecodeHookFuncKind func(reflect.Kind, reflect.Kind, any) (any, error) // DecodeHookFuncValue is a DecodeHookFunc which has complete access to both the source and target // values. -type DecodeHookFuncValue func(from reflect.Value, to reflect.Value) (interface{}, error) +type DecodeHookFuncValue func(from reflect.Value, to reflect.Value) (any, error) // DecoderConfig is the configuration that is used to create a new decoder // and allows customization of various aspects of decoding. @@ -287,7 +287,7 @@ type DecoderConfig struct { // Result is a pointer to the struct that will contain the decoded // value. - Result interface{} + Result any // The tag name that mapstructure reads for field names. This // defaults to "mapstructure" @@ -319,7 +319,7 @@ type DecoderConfig struct { // up the most basic Decoder. type Decoder struct { config *DecoderConfig - cachedDecodeHook func(from reflect.Value, to reflect.Value) (interface{}, error) + cachedDecodeHook func(from reflect.Value, to reflect.Value) (any, error) } // Metadata contains information about decoding a structure that @@ -340,7 +340,7 @@ type Metadata struct { // Decode takes an input structure and uses reflection to translate it to // the output structure. output must be a pointer to a map or struct. -func Decode(input interface{}, output interface{}) error { +func Decode(input any, output any) error { config := &DecoderConfig{ Metadata: nil, Result: output, @@ -356,7 +356,7 @@ func Decode(input interface{}, output interface{}) error { // WeakDecode is the same as Decode but is shorthand to enable // WeaklyTypedInput. See DecoderConfig for more info. -func WeakDecode(input, output interface{}) error { +func WeakDecode(input, output any) error { config := &DecoderConfig{ Metadata: nil, Result: output, @@ -373,7 +373,7 @@ func WeakDecode(input, output interface{}) error { // DecodeMetadata is the same as Decode, but is shorthand to // enable metadata collection. See DecoderConfig for more info. -func DecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error { +func DecodeMetadata(input any, output any, metadata *Metadata) error { config := &DecoderConfig{ Metadata: metadata, Result: output, @@ -390,7 +390,7 @@ func DecodeMetadata(input interface{}, output interface{}, metadata *Metadata) e // WeakDecodeMetadata is the same as Decode, but is shorthand to // enable both WeaklyTypedInput and metadata collection. See // DecoderConfig for more info. -func WeakDecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error { +func WeakDecodeMetadata(input any, output any, metadata *Metadata) error { config := &DecoderConfig{ Metadata: metadata, Result: output, @@ -457,7 +457,7 @@ func NewDecoder(config *DecoderConfig) (*Decoder, error) { // Decode decodes the given raw interface to the target pointer specified // by the configuration. -func (d *Decoder) Decode(input interface{}) error { +func (d *Decoder) Decode(input any) error { err := d.decode("", input, reflect.ValueOf(d.config.Result).Elem()) // Retain some of the original behavior when multiple errors ocurr @@ -470,7 +470,7 @@ func (d *Decoder) Decode(input interface{}) error { } // isNil returns true if the input is nil or a typed nil pointer. -func isNil(input interface{}) bool { +func isNil(input any) bool { if input == nil { return true } @@ -479,7 +479,7 @@ func isNil(input interface{}) bool { } // Decodes an unknown data type into a specific reflection value. -func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) error { +func (d *Decoder) decode(name string, input any, outVal reflect.Value) error { var ( inputVal = reflect.ValueOf(input) outputKind = getKind(outVal) @@ -516,10 +516,10 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e // Hooks need a valid inputVal, so reset it to zero value of outVal type. switch outputKind { case reflect.Struct, reflect.Map: - var mapVal map[string]interface{} + var mapVal map[string]any inputVal = reflect.ValueOf(mapVal) // create nil map pointer case reflect.Slice, reflect.Array: - var sliceVal []interface{} + var sliceVal []any inputVal = reflect.ValueOf(sliceVal) // create nil slice pointer default: inputVal = reflect.Zero(outVal.Type()) @@ -583,7 +583,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e // This decodes a basic type (bool, int, string, etc.) and sets the // value to "data" of that type. -func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeBasic(name string, data any, val reflect.Value) error { if val.IsValid() && val.Elem().IsValid() { elem := val.Elem() @@ -640,7 +640,7 @@ func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) return nil } -func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeString(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) @@ -693,7 +693,7 @@ func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) return nil } -func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeInt(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) dataType := dataVal.Type() @@ -724,7 +724,7 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er return newDecodeError(name, &ParseError{ Expected: val, Value: data, - Err: err, + Err: wrapStrconvNumError(err), }) } case dataType.PkgPath() == "encoding/json" && dataType.Name() == "Number": @@ -748,7 +748,7 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er return nil } -func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeUint(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) dataType := dataVal.Type() @@ -795,7 +795,7 @@ func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) e return newDecodeError(name, &ParseError{ Expected: val, Value: data, - Err: err, + Err: wrapStrconvNumError(err), }) } case dataType.PkgPath() == "encoding/json" && dataType.Name() == "Number": @@ -805,7 +805,7 @@ func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) e return newDecodeError(name, &ParseError{ Expected: val, Value: data, - Err: err, + Err: wrapStrconvNumError(err), }) } val.SetUint(i) @@ -819,7 +819,7 @@ func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) e return nil } -func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeBool(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) @@ -842,7 +842,7 @@ func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) e return newDecodeError(name, &ParseError{ Expected: val, Value: data, - Err: err, + Err: wrapStrconvNumError(err), }) } default: @@ -855,7 +855,7 @@ func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) e return nil } -func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeFloat(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) dataType := dataVal.Type() @@ -886,7 +886,7 @@ func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) return newDecodeError(name, &ParseError{ Expected: val, Value: data, - Err: err, + Err: wrapStrconvNumError(err), }) } case dataType.PkgPath() == "encoding/json" && dataType.Name() == "Number": @@ -910,7 +910,7 @@ func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) return nil } -func (d *Decoder) decodeComplex(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeComplex(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) @@ -927,7 +927,7 @@ func (d *Decoder) decodeComplex(name string, data interface{}, val reflect.Value return nil } -func (d *Decoder) decodeMap(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeMap(name string, data any, val reflect.Value) error { valType := val.Type() valKeyType := valType.Key() valElemType := valType.Elem() @@ -1176,7 +1176,7 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re return nil } -func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) (bool, error) { +func (d *Decoder) decodePtr(name string, data any, val reflect.Value) (bool, error) { // If the input data is nil, then we want to just set the output // pointer to be nil as well. isNil := data == nil @@ -1223,7 +1223,7 @@ func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) (b return false, nil } -func (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeFunc(name string, data any, val reflect.Value) error { // Create an element of the concrete (non pointer) type and decode // into that. Then set the value of the pointer to this type. dataVal := reflect.Indirect(reflect.ValueOf(data)) @@ -1237,7 +1237,7 @@ func (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) e return nil } -func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeSlice(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataValKind := dataVal.Kind() valType := val.Type() @@ -1259,7 +1259,7 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) return nil } // Create slice of maps of other sizes - return d.decodeSlice(name, []interface{}{data}, val) + return d.decodeSlice(name, []any{data}, val) case dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8: return d.decodeSlice(name, []byte(dataVal.String()), val) @@ -1268,7 +1268,7 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) // and "lift" it into it. i.e. a string becomes a string slice. default: // Just re-try this function with data as a slice. - return d.decodeSlice(name, []interface{}{data}, val) + return d.decodeSlice(name, []any{data}, val) } } @@ -1311,7 +1311,7 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) return errors.Join(errs...) } -func (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeArray(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataValKind := dataVal.Kind() valType := val.Type() @@ -1336,7 +1336,7 @@ func (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) // and "lift" it into it. i.e. a string becomes a string array. default: // Just re-try this function with data as a slice. - return d.decodeArray(name, []interface{}{data}, val) + return d.decodeArray(name, []any{data}, val) } } @@ -1372,7 +1372,7 @@ func (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) return errors.Join(errs...) } -func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodeStruct(name string, data any, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) // If the type of the value to write to and the data match directly, @@ -1393,7 +1393,7 @@ func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) // as an intermediary. // Make a new map to hold our result - mapType := reflect.TypeOf((map[string]interface{})(nil)) + mapType := reflect.TypeOf((map[string]any)(nil)) mval := reflect.MakeMap(mapType) // Creating a pointer to a map so that other methods can completely @@ -1424,13 +1424,13 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e } dataValKeys := make(map[reflect.Value]struct{}) - dataValKeysUnused := make(map[interface{}]struct{}) + dataValKeysUnused := make(map[any]struct{}) for _, dataValKey := range dataVal.MapKeys() { dataValKeys[dataValKey] = struct{}{} dataValKeysUnused[dataValKey.Interface()] = struct{}{} } - targetValKeysUnused := make(map[interface{}]struct{}) + targetValKeysUnused := make(map[any]struct{}) var errs []error @@ -1583,7 +1583,7 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e // we put the unused keys directly into the remain field. if remainField != nil && len(dataValKeysUnused) > 0 { // Build a map of only the unused values - remain := map[interface{}]interface{}{} + remain := map[any]any{} for key := range dataValKeysUnused { remain[key] = dataVal.MapIndex(reflect.ValueOf(key)).Interface() } diff --git a/vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md b/vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md index ff9c57e1d..b3178e751 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md +++ b/vendor/github.com/golang-jwt/jwt/v5/MIGRATION_GUIDE.md @@ -155,7 +155,7 @@ stored in base64 encoded form, which was redundant with the information in the type Token struct { Raw string // Raw contains the raw token Method SigningMethod // Method is the signing method used or to be used - Header map[string]interface{} // Header is the first segment of the token in decoded form + Header map[string]any // Header is the first segment of the token in decoded form Claims Claims // Claims is the second segment of the token in decoded form Signature []byte // Signature is the third segment of the token in decoded form Valid bool // Valid specifies if the token is valid diff --git a/vendor/github.com/golang-jwt/jwt/v5/ecdsa.go b/vendor/github.com/golang-jwt/jwt/v5/ecdsa.go index c929e4a02..06cd94d23 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/ecdsa.go +++ b/vendor/github.com/golang-jwt/jwt/v5/ecdsa.go @@ -55,7 +55,7 @@ func (m *SigningMethodECDSA) Alg() string { // Verify implements token verification for the SigningMethod. // For this verify method, key must be an ecdsa.PublicKey struct -func (m *SigningMethodECDSA) Verify(signingString string, sig []byte, key interface{}) error { +func (m *SigningMethodECDSA) Verify(signingString string, sig []byte, key any) error { // Get the key var ecdsaKey *ecdsa.PublicKey switch k := key.(type) { @@ -89,7 +89,7 @@ func (m *SigningMethodECDSA) Verify(signingString string, sig []byte, key interf // Sign implements token signing for the SigningMethod. // For this signing method, key must be an ecdsa.PrivateKey struct -func (m *SigningMethodECDSA) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *SigningMethodECDSA) Sign(signingString string, key any) ([]byte, error) { // Get the key var ecdsaKey *ecdsa.PrivateKey switch k := key.(type) { diff --git a/vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go b/vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go index 5700636d3..44a3b7a1c 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go +++ b/vendor/github.com/golang-jwt/jwt/v5/ecdsa_utils.go @@ -23,7 +23,7 @@ func ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) { } // Parse the key - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil { if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { return nil, err @@ -50,7 +50,7 @@ func ParseECPublicKeyFromPEM(key []byte) (*ecdsa.PublicKey, error) { } // Parse the key - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { if cert, err := x509.ParseCertificate(block.Bytes); err == nil { parsedKey = cert.PublicKey diff --git a/vendor/github.com/golang-jwt/jwt/v5/ed25519.go b/vendor/github.com/golang-jwt/jwt/v5/ed25519.go index c2138119e..4159e57bf 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/ed25519.go +++ b/vendor/github.com/golang-jwt/jwt/v5/ed25519.go @@ -33,7 +33,7 @@ func (m *SigningMethodEd25519) Alg() string { // Verify implements token verification for the SigningMethod. // For this verify method, key must be an ed25519.PublicKey -func (m *SigningMethodEd25519) Verify(signingString string, sig []byte, key interface{}) error { +func (m *SigningMethodEd25519) Verify(signingString string, sig []byte, key any) error { var ed25519Key ed25519.PublicKey var ok bool @@ -55,7 +55,7 @@ func (m *SigningMethodEd25519) Verify(signingString string, sig []byte, key inte // Sign implements token signing for the SigningMethod. // For this signing method, key must be an ed25519.PrivateKey -func (m *SigningMethodEd25519) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *SigningMethodEd25519) Sign(signingString string, key any) ([]byte, error) { var ed25519Key crypto.Signer var ok bool diff --git a/vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go b/vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go index cdb5e68e8..6f46e8860 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go +++ b/vendor/github.com/golang-jwt/jwt/v5/ed25519_utils.go @@ -24,7 +24,7 @@ func ParseEdPrivateKeyFromPEM(key []byte) (crypto.PrivateKey, error) { } // Parse the key - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { return nil, err } @@ -49,7 +49,7 @@ func ParseEdPublicKeyFromPEM(key []byte) (crypto.PublicKey, error) { } // Parse the key - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { return nil, err } diff --git a/vendor/github.com/golang-jwt/jwt/v5/hmac.go b/vendor/github.com/golang-jwt/jwt/v5/hmac.go index aca600ce1..1bef138c3 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/hmac.go +++ b/vendor/github.com/golang-jwt/jwt/v5/hmac.go @@ -55,7 +55,7 @@ func (m *SigningMethodHMAC) Alg() string { // about this, and why we intentionally are not supporting string as a key can // be found on our usage guide // https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types. -func (m *SigningMethodHMAC) Verify(signingString string, sig []byte, key interface{}) error { +func (m *SigningMethodHMAC) Verify(signingString string, sig []byte, key any) error { // Verify the key is the right type keyBytes, ok := key.([]byte) if !ok { @@ -88,7 +88,7 @@ func (m *SigningMethodHMAC) Verify(signingString string, sig []byte, key interfa // cryptographically random source, e.g. crypto/rand. Additional information // about this, and why we intentionally are not supporting string as a key can // be found on our usage guide https://golang-jwt.github.io/jwt/usage/signing_methods/. -func (m *SigningMethodHMAC) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *SigningMethodHMAC) Sign(signingString string, key any) ([]byte, error) { if keyBytes, ok := key.([]byte); ok { if !m.Hash.Available() { return nil, ErrHashUnavailable diff --git a/vendor/github.com/golang-jwt/jwt/v5/map_claims.go b/vendor/github.com/golang-jwt/jwt/v5/map_claims.go index b2b51a1f8..3b9205272 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/map_claims.go +++ b/vendor/github.com/golang-jwt/jwt/v5/map_claims.go @@ -5,9 +5,9 @@ import ( "fmt" ) -// MapClaims is a claims type that uses the map[string]interface{} for JSON +// MapClaims is a claims type that uses the map[string]any for JSON // decoding. This is the default claims type if you don't supply one -type MapClaims map[string]interface{} +type MapClaims map[string]any // GetExpirationTime implements the Claims interface. func (m MapClaims) GetExpirationTime() (*NumericDate, error) { @@ -73,7 +73,7 @@ func (m MapClaims) parseClaimsString(key string) (ClaimStrings, error) { cs = append(cs, v) case []string: cs = v - case []interface{}: + case []any: for _, a := range v { vs, ok := a.(string) if !ok { @@ -92,7 +92,7 @@ func (m MapClaims) parseClaimsString(key string) (ClaimStrings, error) { func (m MapClaims) parseString(key string) (string, error) { var ( ok bool - raw interface{} + raw any iss string ) raw, ok = m[key] diff --git a/vendor/github.com/golang-jwt/jwt/v5/none.go b/vendor/github.com/golang-jwt/jwt/v5/none.go index 685c2ea30..624ad55e8 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/none.go +++ b/vendor/github.com/golang-jwt/jwt/v5/none.go @@ -25,7 +25,7 @@ func (m *signingMethodNone) Alg() string { } // Only allow 'none' alg type if UnsafeAllowNoneSignatureType is specified as the key -func (m *signingMethodNone) Verify(signingString string, sig []byte, key interface{}) (err error) { +func (m *signingMethodNone) Verify(signingString string, sig []byte, key any) (err error) { // Key must be UnsafeAllowNoneSignatureType to prevent accidentally // accepting 'none' signing method if _, ok := key.(unsafeNoneMagicConstant); !ok { @@ -41,7 +41,7 @@ func (m *signingMethodNone) Verify(signingString string, sig []byte, key interfa } // Only allow 'none' signing if UnsafeAllowNoneSignatureType is specified as the key -func (m *signingMethodNone) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *signingMethodNone) Sign(signingString string, key any) ([]byte, error) { if _, ok := key.(unsafeNoneMagicConstant); ok { return []byte{}, nil } diff --git a/vendor/github.com/golang-jwt/jwt/v5/parser_option.go b/vendor/github.com/golang-jwt/jwt/v5/parser_option.go index 88a780fbd..431573557 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/parser_option.go +++ b/vendor/github.com/golang-jwt/jwt/v5/parser_option.go @@ -66,20 +66,37 @@ func WithExpirationRequired() ParserOption { } } -// WithAudience configures the validator to require the specified audience in -// the `aud` claim. Validation will fail if the audience is not listed in the -// token or the `aud` claim is missing. +// WithAudience configures the validator to require any of the specified +// audiences in the `aud` claim. Validation will fail if the audience is not +// listed in the token or the `aud` claim is missing. // // NOTE: While the `aud` claim is OPTIONAL in a JWT, the handling of it is // application-specific. Since this validation API is helping developers in // writing secure application, we decided to REQUIRE the existence of the claim, // if an audience is expected. -func WithAudience(aud string) ParserOption { +func WithAudience(aud ...string) ParserOption { return func(p *Parser) { p.validator.expectedAud = aud } } +// WithAllAudiences configures the validator to require all the specified +// audiences in the `aud` claim. Validation will fail if the specified audiences +// are not listed in the token or the `aud` claim is missing. Duplicates within +// the list are de-duplicated since internally, we use a map to look up the +// audiences. +// +// NOTE: While the `aud` claim is OPTIONAL in a JWT, the handling of it is +// application-specific. Since this validation API is helping developers in +// writing secure application, we decided to REQUIRE the existence of the claim, +// if an audience is expected. +func WithAllAudiences(aud ...string) ParserOption { + return func(p *Parser) { + p.validator.expectedAud = aud + p.validator.expectAllAud = true + } +} + // WithIssuer configures the validator to require the specified issuer in the // `iss` claim. Validation will fail if a different issuer is specified in the // token or the `iss` claim is missing. diff --git a/vendor/github.com/golang-jwt/jwt/v5/rsa.go b/vendor/github.com/golang-jwt/jwt/v5/rsa.go index 83cbee6ae..98b960a78 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/rsa.go +++ b/vendor/github.com/golang-jwt/jwt/v5/rsa.go @@ -46,7 +46,7 @@ func (m *SigningMethodRSA) Alg() string { // Verify implements token verification for the SigningMethod // For this signing method, must be an *rsa.PublicKey structure. -func (m *SigningMethodRSA) Verify(signingString string, sig []byte, key interface{}) error { +func (m *SigningMethodRSA) Verify(signingString string, sig []byte, key any) error { var rsaKey *rsa.PublicKey var ok bool @@ -67,7 +67,7 @@ func (m *SigningMethodRSA) Verify(signingString string, sig []byte, key interfac // Sign implements token signing for the SigningMethod // For this signing method, must be an *rsa.PrivateKey structure. -func (m *SigningMethodRSA) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *SigningMethodRSA) Sign(signingString string, key any) ([]byte, error) { var rsaKey *rsa.PrivateKey var ok bool diff --git a/vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go b/vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go index 28c386ec4..7c216ae00 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go +++ b/vendor/github.com/golang-jwt/jwt/v5/rsa_pss.go @@ -82,7 +82,7 @@ func init() { // Verify implements token verification for the SigningMethod. // For this verify method, key must be an rsa.PublicKey struct -func (m *SigningMethodRSAPSS) Verify(signingString string, sig []byte, key interface{}) error { +func (m *SigningMethodRSAPSS) Verify(signingString string, sig []byte, key any) error { var rsaKey *rsa.PublicKey switch k := key.(type) { case *rsa.PublicKey: @@ -108,7 +108,7 @@ func (m *SigningMethodRSAPSS) Verify(signingString string, sig []byte, key inter // Sign implements token signing for the SigningMethod. // For this signing method, key must be an rsa.PrivateKey struct -func (m *SigningMethodRSAPSS) Sign(signingString string, key interface{}) ([]byte, error) { +func (m *SigningMethodRSAPSS) Sign(signingString string, key any) ([]byte, error) { var rsaKey *rsa.PrivateKey switch k := key.(type) { diff --git a/vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go b/vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go index b3aeebbe1..f22c3d068 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go +++ b/vendor/github.com/golang-jwt/jwt/v5/rsa_utils.go @@ -23,7 +23,7 @@ func ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { return nil, ErrKeyMustBePEMEncoded } - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { return nil, err @@ -53,7 +53,7 @@ func ParseRSAPrivateKeyFromPEMWithPassword(key []byte, password string) (*rsa.Pr return nil, ErrKeyMustBePEMEncoded } - var parsedKey interface{} + var parsedKey any var blockDecrypted []byte if blockDecrypted, err = x509.DecryptPEMBlock(block, []byte(password)); err != nil { @@ -86,7 +86,7 @@ func ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { } // Parse the key - var parsedKey interface{} + var parsedKey any if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { if cert, err := x509.ParseCertificate(block.Bytes); err == nil { parsedKey = cert.PublicKey diff --git a/vendor/github.com/golang-jwt/jwt/v5/signing_method.go b/vendor/github.com/golang-jwt/jwt/v5/signing_method.go index 0d73631c1..096d0ed4c 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/signing_method.go +++ b/vendor/github.com/golang-jwt/jwt/v5/signing_method.go @@ -12,9 +12,9 @@ var signingMethodLock = new(sync.RWMutex) // signature in Sign. The signature is then usually base64 encoded as part of a // JWT. type SigningMethod interface { - Verify(signingString string, sig []byte, key interface{}) error // Returns nil if signature is valid - Sign(signingString string, key interface{}) ([]byte, error) // Returns signature or error - Alg() string // returns the alg identifier for this method (example: 'HS256') + Verify(signingString string, sig []byte, key any) error // Returns nil if signature is valid + Sign(signingString string, key any) ([]byte, error) // Returns signature or error + Alg() string // returns the alg identifier for this method (example: 'HS256') } // RegisterSigningMethod registers the "alg" name and a factory function for signing method. diff --git a/vendor/github.com/golang-jwt/jwt/v5/token.go b/vendor/github.com/golang-jwt/jwt/v5/token.go index 9c7f4ab01..3f7155888 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/token.go +++ b/vendor/github.com/golang-jwt/jwt/v5/token.go @@ -11,9 +11,9 @@ import ( // Token. This allows you to use properties in the Header of the token (such as // `kid`) to identify which key to use. // -// The returned interface{} may be a single key or a VerificationKeySet containing +// The returned any may be a single key or a VerificationKeySet containing // multiple keys. -type Keyfunc func(*Token) (interface{}, error) +type Keyfunc func(*Token) (any, error) // VerificationKey represents a public or secret key for verifying a token's signature. type VerificationKey interface { @@ -28,12 +28,12 @@ type VerificationKeySet struct { // Token represents a JWT Token. Different fields will be used depending on // whether you're creating or parsing/verifying a token. type Token struct { - Raw string // Raw contains the raw token. Populated when you [Parse] a token - Method SigningMethod // Method is the signing method used or to be used - Header map[string]interface{} // Header is the first segment of the token in decoded form - Claims Claims // Claims is the second segment of the token in decoded form - Signature []byte // Signature is the third segment of the token in decoded form. Populated when you Parse a token - Valid bool // Valid specifies if the token is valid. Populated when you Parse/Verify a token + Raw string // Raw contains the raw token. Populated when you [Parse] a token + Method SigningMethod // Method is the signing method used or to be used + Header map[string]any // Header is the first segment of the token in decoded form + Claims Claims // Claims is the second segment of the token in decoded form + Signature []byte // Signature is the third segment of the token in decoded form. Populated when you Parse a token + Valid bool // Valid specifies if the token is valid. Populated when you Parse/Verify a token } // New creates a new [Token] with the specified signing method and an empty map @@ -46,7 +46,7 @@ func New(method SigningMethod, opts ...TokenOption) *Token { // claims. Additional options can be specified, but are currently unused. func NewWithClaims(method SigningMethod, claims Claims, opts ...TokenOption) *Token { return &Token{ - Header: map[string]interface{}{ + Header: map[string]any{ "typ": "JWT", "alg": method.Alg(), }, @@ -60,7 +60,7 @@ func NewWithClaims(method SigningMethod, claims Claims, opts ...TokenOption) *To // https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types // for an overview of the different signing methods and their respective key // types. -func (t *Token) SignedString(key interface{}) (string, error) { +func (t *Token) SignedString(key any) (string, error) { sstr, err := t.SigningString() if err != nil { return "", err diff --git a/vendor/github.com/golang-jwt/jwt/v5/types.go b/vendor/github.com/golang-jwt/jwt/v5/types.go index b2655a9e6..a3e0ef121 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/types.go +++ b/vendor/github.com/golang-jwt/jwt/v5/types.go @@ -103,7 +103,7 @@ func (date *NumericDate) UnmarshalJSON(b []byte) (err error) { type ClaimStrings []string func (s *ClaimStrings) UnmarshalJSON(data []byte) (err error) { - var value interface{} + var value any if err = json.Unmarshal(data, &value); err != nil { return err @@ -116,7 +116,7 @@ func (s *ClaimStrings) UnmarshalJSON(data []byte) (err error) { aud = append(aud, v) case []string: aud = ClaimStrings(v) - case []interface{}: + case []any: for _, vv := range v { vs, ok := vv.(string) if !ok { diff --git a/vendor/github.com/golang-jwt/jwt/v5/validator.go b/vendor/github.com/golang-jwt/jwt/v5/validator.go index 008ecd871..92b5c057c 100644 --- a/vendor/github.com/golang-jwt/jwt/v5/validator.go +++ b/vendor/github.com/golang-jwt/jwt/v5/validator.go @@ -1,8 +1,8 @@ package jwt import ( - "crypto/subtle" "fmt" + "slices" "time" ) @@ -52,8 +52,12 @@ type Validator struct { verifyIat bool // expectedAud contains the audience this token expects. Supplying an empty - // string will disable aud checking. - expectedAud string + // slice will disable aud checking. + expectedAud []string + + // expectAllAud specifies whether all expected audiences must be present in + // the token. If false, only one of the expected audiences must be present. + expectAllAud bool // expectedIss contains the issuer this token expects. Supplying an empty // string will disable iss checking. @@ -88,7 +92,7 @@ func NewValidator(opts ...ParserOption) *Validator { func (v *Validator) Validate(claims Claims) error { var ( now time.Time - errs []error = make([]error, 0, 6) + errs = make([]error, 0, 6) err error ) @@ -120,8 +124,8 @@ func (v *Validator) Validate(claims Claims) error { } // If we have an expected audience, we also require the audience claim - if v.expectedAud != "" { - if err = v.verifyAudience(claims, v.expectedAud, true); err != nil { + if len(v.expectedAud) > 0 { + if err = v.verifyAudience(claims, v.expectedAud, v.expectAllAud); err != nil { errs = append(errs, err) } } @@ -226,33 +230,39 @@ func (v *Validator) verifyNotBefore(claims Claims, cmp time.Time, required bool) // // Additionally, if any error occurs while retrieving the claim, e.g., when its // the wrong type, an ErrTokenUnverifiable error will be returned. -func (v *Validator) verifyAudience(claims Claims, cmp string, required bool) error { +func (v *Validator) verifyAudience(claims Claims, cmp []string, expectAllAud bool) error { aud, err := claims.GetAudience() if err != nil { return err } - if len(aud) == 0 { + // Check that aud exists and is not empty. We only require the aud claim + // if we expect at least one audience to be present. + if len(aud) == 0 || len(aud) == 1 && aud[0] == "" { + required := len(v.expectedAud) > 0 return errorIfRequired(required, "aud") } - // use a var here to keep constant time compare when looping over a number of claims - result := false - - var stringClaims string - for _, a := range aud { - if subtle.ConstantTimeCompare([]byte(a), []byte(cmp)) != 0 { - result = true + if !expectAllAud { + for _, a := range aud { + // If we only expect one match, we can stop early if we find a match + if slices.Contains(cmp, a) { + return nil + } } - stringClaims = stringClaims + a + + return ErrTokenInvalidAudience } - // case where "" is sent in one or many aud claims - if stringClaims == "" { - return errorIfRequired(required, "aud") + // Note that we are looping cmp here to ensure that all expected audiences + // are present in the aud claim. + for _, a := range cmp { + if !slices.Contains(aud, a) { + return ErrTokenInvalidAudience + } } - return errorIfFalse(result, ErrTokenInvalidAudience) + return nil } // verifyIssuer compares the iss claim in claims against cmp. diff --git a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json index a8c082dd6..2fcff6e27 100644 --- a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json +++ b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "v2": "2.14.1" + "v2": "2.15.0" } diff --git a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md index 17cced15e..fec6b1da9 100644 --- a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md +++ b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md @@ -1,5 +1,19 @@ # Changelog +## [2.15.0](https://github.com/googleapis/gax-go/compare/v2.14.2...v2.15.0) (2025-07-09) + + +### Features + +* **apierror:** improve gRPC status code mapping for HTTP errors ([#431](https://github.com/googleapis/gax-go/issues/431)) ([c207f2a](https://github.com/googleapis/gax-go/commit/c207f2a19ab91d3baee458b57d4aa992519025c7)) + +## [2.14.2](https://github.com/googleapis/gax-go/compare/v2.14.1...v2.14.2) (2025-05-12) + + +### Documentation + +* **v2:** Fix Backoff doc to accurately explain Multiplier ([#423](https://github.com/googleapis/gax-go/issues/423)) ([16d1791](https://github.com/googleapis/gax-go/commit/16d17917121ea9f5d84ba52b5c7c7f2ec0f9e784)), refs [#422](https://github.com/googleapis/gax-go/issues/422) + ## [2.14.1](https://github.com/googleapis/gax-go/compare/v2.14.0...v2.14.1) (2024-12-19) diff --git a/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go b/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go index 7de60773d..90a40d29c 100644 --- a/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go +++ b/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go @@ -38,6 +38,7 @@ package apierror import ( "errors" "fmt" + "net/http" "strings" jsonerror "github.com/googleapis/gax-go/v2/apierror/internal/proto" @@ -49,6 +50,39 @@ import ( "google.golang.org/protobuf/proto" ) +// canonicalMap maps HTTP codes to gRPC status code equivalents. +var canonicalMap = map[int]codes.Code{ + http.StatusOK: codes.OK, + http.StatusBadRequest: codes.InvalidArgument, + http.StatusForbidden: codes.PermissionDenied, + http.StatusNotFound: codes.NotFound, + http.StatusConflict: codes.Aborted, + http.StatusRequestedRangeNotSatisfiable: codes.OutOfRange, + http.StatusTooManyRequests: codes.ResourceExhausted, + http.StatusGatewayTimeout: codes.DeadlineExceeded, + http.StatusNotImplemented: codes.Unimplemented, + http.StatusServiceUnavailable: codes.Unavailable, + http.StatusUnauthorized: codes.Unauthenticated, +} + +// toCode maps an http code to the most correct equivalent. +func toCode(httpCode int) codes.Code { + if sCode, ok := canonicalMap[httpCode]; ok { + return sCode + } + switch { + case httpCode >= 200 && httpCode < 300: + return codes.OK + + case httpCode >= 400 && httpCode < 500: + return codes.FailedPrecondition + + case httpCode >= 500 && httpCode < 600: + return codes.Internal + } + return codes.Unknown +} + // ErrDetails holds the google/rpc/error_details.proto messages. type ErrDetails struct { ErrorInfo *errdetails.ErrorInfo @@ -217,6 +251,11 @@ func (a *APIError) Error() string { // GRPCStatus extracts the underlying gRPC Status error. // This method is necessary to fulfill the interface // described in https://pkg.go.dev/google.golang.org/grpc/status#FromError. +// +// For errors that originated as an HTTP-based googleapi.Error, GRPCStatus() +// returns a status that attempts to map from the original HTTP code to an +// equivalent gRPC status code. For use cases where you want to avoid this +// behavior, error unwrapping can be used. func (a *APIError) GRPCStatus() *status.Status { return a.status } @@ -243,9 +282,9 @@ func (a *APIError) Metadata() map[string]string { // setDetailsFromError parses a Status error or a googleapi.Error // and sets status and details or httpErr and details, respectively. // It returns false if neither Status nor googleapi.Error can be parsed. -// When err is a googleapi.Error, the status of the returned error will -// be set to an Unknown error, rather than nil, since a nil code is -// interpreted as OK in the gRPC status package. +// +// When err is a googleapi.Error, the status of the returned error will be +// mapped to the closest equivalent gGRPC status code. func (a *APIError) setDetailsFromError(err error) bool { st, isStatus := status.FromError(err) var herr *googleapi.Error @@ -258,7 +297,7 @@ func (a *APIError) setDetailsFromError(err error) bool { case isHTTPErr: a.httpErr = herr a.details = parseHTTPDetails(herr) - a.status = status.New(codes.Unknown, herr.Message) + a.status = status.New(toCode(a.httpErr.Code), herr.Message) default: return false } diff --git a/vendor/github.com/googleapis/gax-go/v2/call_option.go b/vendor/github.com/googleapis/gax-go/v2/call_option.go index c52e03f64..ac1f2b11c 100644 --- a/vendor/github.com/googleapis/gax-go/v2/call_option.go +++ b/vendor/github.com/googleapis/gax-go/v2/call_option.go @@ -156,10 +156,13 @@ func (r *httpRetryer) Retry(err error) (time.Duration, bool) { return 0, false } -// Backoff implements exponential backoff. The wait time between retries is a -// random value between 0 and the "retry period" - the time between retries. The -// retry period starts at Initial and increases by the factor of Multiplier -// every retry, but is capped at Max. +// Backoff implements backoff logic for retries. The configuration for retries +// is described in https://google.aip.dev/client-libraries/4221. The current +// retry limit starts at Initial and increases by a factor of Multiplier every +// retry, but is capped at Max. The actual wait time between retries is a +// random value between 1ns and the current retry limit. The purpose of this +// random jitter is explained in +// https://www.awsarchitectureblog.com/2015/03/backoff.html. // // Note: MaxNumRetries / RPCDeadline is specifically not provided. These should // be built on top of Backoff. diff --git a/vendor/github.com/googleapis/gax-go/v2/internal/version.go b/vendor/github.com/googleapis/gax-go/v2/internal/version.go index 2b284a24a..0ab1bce59 100644 --- a/vendor/github.com/googleapis/gax-go/v2/internal/version.go +++ b/vendor/github.com/googleapis/gax-go/v2/internal/version.go @@ -30,4 +30,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.14.1" +const Version = "2.15.0" diff --git a/vendor/github.com/jackc/pgx/v5/CHANGELOG.md b/vendor/github.com/jackc/pgx/v5/CHANGELOG.md index e18b0db8c..1e56878e8 100644 --- a/vendor/github.com/jackc/pgx/v5/CHANGELOG.md +++ b/vendor/github.com/jackc/pgx/v5/CHANGELOG.md @@ -1,3 +1,13 @@ +# 5.7.5 (May 17, 2025) + +* Support sslnegotiation connection option (divyam234) +* Update golang.org/x/crypto to v0.37.0. This placates security scanners that were unable to see that pgx did not use the behavior affected by https://pkg.go.dev/vuln/GO-2025-3487. +* TraceLog now logs Acquire and Release at the debug level (dave sinclair) +* Add support for PGTZ environment variable +* Add support for PGOPTIONS environment variable +* Unpin memory used by Rows quicker +* Remove PlanScan memoization. This resolves a rare issue where scanning could be broken for one type by first scanning another. The problem was in the memoization system and benchmarking revealed that memoization was not providing any meaningful benefit. + # 5.7.4 (March 24, 2025) * Fix / revert change to scanning JSON `null` (Felix Röhrich) diff --git a/vendor/github.com/jackc/pgx/v5/README.md b/vendor/github.com/jackc/pgx/v5/README.md index 9da49d866..0138c2c76 100644 --- a/vendor/github.com/jackc/pgx/v5/README.md +++ b/vendor/github.com/jackc/pgx/v5/README.md @@ -92,7 +92,7 @@ See the presentation at Golang Estonia, [PGX Top to Bottom](https://www.youtube. ## Supported Go and PostgreSQL Versions -pgx supports the same versions of Go and PostgreSQL that are supported by their respective teams. For [Go](https://golang.org/doc/devel/release.html#policy) that is the two most recent major releases and for [PostgreSQL](https://www.postgresql.org/support/versioning/) the major releases in the last 5 years. This means pgx supports Go 1.22 and higher and PostgreSQL 13 and higher. pgx also is tested against the latest version of [CockroachDB](https://www.cockroachlabs.com/product/). +pgx supports the same versions of Go and PostgreSQL that are supported by their respective teams. For [Go](https://golang.org/doc/devel/release.html#policy) that is the two most recent major releases and for [PostgreSQL](https://www.postgresql.org/support/versioning/) the major releases in the last 5 years. This means pgx supports Go 1.23 and higher and PostgreSQL 13 and higher. pgx also is tested against the latest version of [CockroachDB](https://www.cockroachlabs.com/product/). ## Version Policy diff --git a/vendor/github.com/jackc/pgx/v5/doc.go b/vendor/github.com/jackc/pgx/v5/doc.go index 0e91d64e8..5d2ae3889 100644 --- a/vendor/github.com/jackc/pgx/v5/doc.go +++ b/vendor/github.com/jackc/pgx/v5/doc.go @@ -183,7 +183,7 @@ For debug tracing of the actual PostgreSQL wire protocol messages see github.com Lower Level PostgreSQL Functionality -github.com/jackc/pgx/v5/pgconn contains a lower level PostgreSQL driver roughly at the level of libpq. pgx.Conn in +github.com/jackc/pgx/v5/pgconn contains a lower level PostgreSQL driver roughly at the level of libpq. pgx.Conn is implemented on top of pgconn. The Conn.PgConn() method can be used to access this lower layer. PgBouncer diff --git a/vendor/github.com/jackc/pgx/v5/pgconn/config.go b/vendor/github.com/jackc/pgx/v5/pgconn/config.go index 46b39f14e..1c28c4079 100644 --- a/vendor/github.com/jackc/pgx/v5/pgconn/config.go +++ b/vendor/github.com/jackc/pgx/v5/pgconn/config.go @@ -51,6 +51,8 @@ type Config struct { KerberosSpn string Fallbacks []*FallbackConfig + SSLNegotiation string // sslnegotiation=postgres or sslnegotiation=direct + // ValidateConnect is called during a connection attempt after a successful authentication with the PostgreSQL server. // It can be used to validate that the server is acceptable. If this returns an error the connection is closed and the next // fallback config is tried. This allows implementing high availability behavior such as libpq does with target_session_attrs. @@ -198,9 +200,11 @@ func NetworkAddress(host string, port uint16) (network, address string) { // PGSSLKEY // PGSSLROOTCERT // PGSSLPASSWORD +// PGOPTIONS // PGAPPNAME // PGCONNECT_TIMEOUT // PGTARGETSESSIONATTRS +// PGTZ // // See http://www.postgresql.org/docs/11/static/libpq-envars.html for details on the meaning of environment variables. // @@ -318,6 +322,7 @@ func ParseConfigWithOptions(connString string, options ParseConfigOptions) (*Con "sslkey": {}, "sslcert": {}, "sslrootcert": {}, + "sslnegotiation": {}, "sslpassword": {}, "sslsni": {}, "krbspn": {}, @@ -386,6 +391,7 @@ func ParseConfigWithOptions(connString string, options ParseConfigOptions) (*Con config.Port = fallbacks[0].Port config.TLSConfig = fallbacks[0].TLSConfig config.Fallbacks = fallbacks[1:] + config.SSLNegotiation = settings["sslnegotiation"] passfile, err := pgpassfile.ReadPassfile(settings["passfile"]) if err == nil { @@ -449,9 +455,12 @@ func parseEnvSettings() map[string]string { "PGSSLSNI": "sslsni", "PGSSLROOTCERT": "sslrootcert", "PGSSLPASSWORD": "sslpassword", + "PGSSLNEGOTIATION": "sslnegotiation", "PGTARGETSESSIONATTRS": "target_session_attrs", "PGSERVICE": "service", "PGSERVICEFILE": "servicefile", + "PGTZ": "timezone", + "PGOPTIONS": "options", } for envname, realname := range nameMap { @@ -646,6 +655,7 @@ func configTLS(settings map[string]string, thisHost string, parseConfigOptions P sslkey := settings["sslkey"] sslpassword := settings["sslpassword"] sslsni := settings["sslsni"] + sslnegotiation := settings["sslnegotiation"] // Match libpq default behavior if sslmode == "" { @@ -657,6 +667,13 @@ func configTLS(settings map[string]string, thisHost string, parseConfigOptions P tlsConfig := &tls.Config{} + if sslnegotiation == "direct" { + tlsConfig.NextProtos = []string{"postgresql"} + if sslmode == "prefer" { + sslmode = "require" + } + } + if sslrootcert != "" { var caCertPool *x509.CertPool diff --git a/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go b/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go index 14966aa49..bf3eaec60 100644 --- a/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go +++ b/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go @@ -325,7 +325,15 @@ func connectOne(ctx context.Context, config *Config, connectConfig *connectOneCo if connectConfig.tlsConfig != nil { pgConn.contextWatcher = ctxwatch.NewContextWatcher(&DeadlineContextWatcherHandler{Conn: pgConn.conn}) pgConn.contextWatcher.Watch(ctx) - tlsConn, err := startTLS(pgConn.conn, connectConfig.tlsConfig) + var ( + tlsConn net.Conn + err error + ) + if config.SSLNegotiation == "direct" { + tlsConn = tls.Client(pgConn.conn, connectConfig.tlsConfig) + } else { + tlsConn, err = startTLS(pgConn.conn, connectConfig.tlsConfig) + } pgConn.contextWatcher.Unwatch() // Always unwatch `netConn` after TLS. if err != nil { pgConn.conn.Close() diff --git a/vendor/github.com/jackc/pgx/v5/pgtype/pgtype.go b/vendor/github.com/jackc/pgx/v5/pgtype/pgtype.go index a1083161c..22cf66d84 100644 --- a/vendor/github.com/jackc/pgx/v5/pgtype/pgtype.go +++ b/vendor/github.com/jackc/pgx/v5/pgtype/pgtype.go @@ -202,7 +202,6 @@ type Map struct { reflectTypeToType map[reflect.Type]*Type - memoizedScanPlans map[uint32]map[reflect.Type][2]ScanPlan memoizedEncodePlans map[uint32]map[reflect.Type][2]EncodePlan // TryWrapEncodePlanFuncs is a slice of functions that will wrap a value that cannot be encoded by the Codec. Every @@ -236,7 +235,6 @@ func NewMap() *Map { reflectTypeToName: make(map[reflect.Type]string), oidToFormatCode: make(map[uint32]int16), - memoizedScanPlans: make(map[uint32]map[reflect.Type][2]ScanPlan), memoizedEncodePlans: make(map[uint32]map[reflect.Type][2]EncodePlan), TryWrapEncodePlanFuncs: []TryWrapEncodePlanFunc{ @@ -276,9 +274,6 @@ func (m *Map) RegisterType(t *Type) { // Invalidated by type registration m.reflectTypeToType = nil - for k := range m.memoizedScanPlans { - delete(m.memoizedScanPlans, k) - } for k := range m.memoizedEncodePlans { delete(m.memoizedEncodePlans, k) } @@ -292,9 +287,6 @@ func (m *Map) RegisterDefaultPgType(value any, name string) { // Invalidated by type registration m.reflectTypeToType = nil - for k := range m.memoizedScanPlans { - delete(m.memoizedScanPlans, k) - } for k := range m.memoizedEncodePlans { delete(m.memoizedEncodePlans, k) } @@ -1067,32 +1059,14 @@ func (plan *wrapPtrArrayReflectScanPlan) Scan(src []byte, target any) error { // PlanScan prepares a plan to scan a value into target. func (m *Map) PlanScan(oid uint32, formatCode int16, target any) ScanPlan { - return m.planScanDepth(oid, formatCode, target, 0) + return m.planScan(oid, formatCode, target, 0) } -func (m *Map) planScanDepth(oid uint32, formatCode int16, target any, depth int) ScanPlan { +func (m *Map) planScan(oid uint32, formatCode int16, target any, depth int) ScanPlan { if depth > 8 { return &scanPlanFail{m: m, oid: oid, formatCode: formatCode} } - oidMemo := m.memoizedScanPlans[oid] - if oidMemo == nil { - oidMemo = make(map[reflect.Type][2]ScanPlan) - m.memoizedScanPlans[oid] = oidMemo - } - targetReflectType := reflect.TypeOf(target) - typeMemo := oidMemo[targetReflectType] - plan := typeMemo[formatCode] - if plan == nil { - plan = m.planScan(oid, formatCode, target, depth) - typeMemo[formatCode] = plan - oidMemo[targetReflectType] = typeMemo - } - - return plan -} - -func (m *Map) planScan(oid uint32, formatCode int16, target any, depth int) ScanPlan { if target == nil { return &scanPlanFail{m: m, oid: oid, formatCode: formatCode} } @@ -1152,7 +1126,7 @@ func (m *Map) planScan(oid uint32, formatCode int16, target any, depth int) Scan for _, f := range m.TryWrapScanPlanFuncs { if wrapperPlan, nextDst, ok := f(target); ok { - if nextPlan := m.planScanDepth(oid, formatCode, nextDst, depth+1); nextPlan != nil { + if nextPlan := m.planScan(oid, formatCode, nextDst, depth+1); nextPlan != nil { if _, failed := nextPlan.(*scanPlanFail); !failed { wrapperPlan.SetNext(nextPlan) return wrapperPlan @@ -1209,7 +1183,7 @@ func codecDecodeToTextFormat(codec Codec, m *Map, oid uint32, format int16, src } } -// PlanEncode returns an Encode plan for encoding value into PostgreSQL format for oid and format. If no plan can be +// PlanEncode returns an EncodePlan for encoding value into PostgreSQL format for oid and format. If no plan can be // found then nil is returned. func (m *Map) PlanEncode(oid uint32, format int16, value any) EncodePlan { return m.planEncodeDepth(oid, format, value, 0) @@ -2032,26 +2006,7 @@ func (w *sqlScannerWrapper) Scan(src any) error { return w.m.Scan(t.OID, TextFormatCode, bufSrc, w.v) } -// canBeNil returns true if value can be nil. -func canBeNil(value any) bool { - refVal := reflect.ValueOf(value) - kind := refVal.Kind() - switch kind { - case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice: - return true - default: - return false - } -} - -// valuerReflectType is a reflect.Type for driver.Valuer. It has confusing syntax because reflect.TypeOf returns nil -// when it's argument is a nil interface value. So we use a pointer to the interface and call Elem to get the actual -// type. Yuck. -// -// This can be simplified in Go 1.22 with reflect.TypeFor. -// -// var valuerReflectType = reflect.TypeFor[driver.Valuer]() -var valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem() +var valuerReflectType = reflect.TypeFor[driver.Valuer]() // isNilDriverValuer returns true if value is any type of nil unless it implements driver.Valuer. *T is not considered to implement // driver.Valuer if it is only implemented by T. diff --git a/vendor/github.com/jackc/pgx/v5/pgtype/pgtype_default.go b/vendor/github.com/jackc/pgx/v5/pgtype/pgtype_default.go index 8cb512fa5..5648d89bf 100644 --- a/vendor/github.com/jackc/pgx/v5/pgtype/pgtype_default.go +++ b/vendor/github.com/jackc/pgx/v5/pgtype/pgtype_default.go @@ -23,7 +23,6 @@ func initDefaultMap() { reflectTypeToName: make(map[reflect.Type]string), oidToFormatCode: make(map[uint32]int16), - memoizedScanPlans: make(map[uint32]map[reflect.Type][2]ScanPlan), memoizedEncodePlans: make(map[uint32]map[reflect.Type][2]EncodePlan), TryWrapEncodePlanFuncs: []TryWrapEncodePlanFunc{ diff --git a/vendor/github.com/jackc/pgx/v5/rows.go b/vendor/github.com/jackc/pgx/v5/rows.go index f6f26f479..3e64a3adb 100644 --- a/vendor/github.com/jackc/pgx/v5/rows.go +++ b/vendor/github.com/jackc/pgx/v5/rows.go @@ -188,6 +188,17 @@ func (rows *baseRows) Close() { } else if rows.queryTracer != nil { rows.queryTracer.TraceQueryEnd(rows.ctx, rows.conn, TraceQueryEndData{rows.commandTag, rows.err}) } + + // Zero references to other memory allocations. This allows them to be GC'd even when the Rows still referenced. In + // particular, when using pgxpool GC could be delayed as pgxpool.poolRows are allocated in large slices. + // + // https://github.com/jackc/pgx/pull/2269 + rows.values = nil + rows.scanPlans = nil + rows.scanTypes = nil + rows.ctx = nil + rows.sql = "" + rows.args = nil } func (rows *baseRows) CommandTag() pgconn.CommandTag { diff --git a/vendor/github.com/klauspost/cpuid/v2/README.md b/vendor/github.com/klauspost/cpuid/v2/README.md index e59d3d0c0..88d68d528 100644 --- a/vendor/github.com/klauspost/cpuid/v2/README.md +++ b/vendor/github.com/klauspost/cpuid/v2/README.md @@ -281,10 +281,11 @@ Exit Code 1 | AMXBF16 | Tile computational operations on BFLOAT16 numbers | | AMXINT8 | Tile computational operations on 8-bit integers | | AMXFP16 | Tile computational operations on FP16 numbers | -| AMXFP8 | Tile computational operations on FP8 numbers | +| AMXFP8 | Tile computational operations on FP8 numbers | | AMXCOMPLEX | Tile computational operations on complex numbers | | AMXTILE | Tile architecture | | AMXTF32 | Matrix Multiplication of TF32 Tiles into Packed Single Precision Tile | +| AMXTRANSPOSE | Tile multiply where the first operand is transposed | | APX_F | Intel APX | | AVX | AVX functions | | AVX10 | If set the Intel AVX10 Converged Vector ISA is supported | @@ -417,9 +418,12 @@ Exit Code 1 | SEV_SNP | AMD SEV Secure Nested Paging supported | | SGX | Software Guard Extensions | | SGXLC | Software Guard Extensions Launch Control | +| SGXPQC | Software Guard Extensions 256-bit Encryption | | SHA | Intel SHA Extensions | | SME | AMD Secure Memory Encryption supported | | SME_COHERENT | AMD Hardware cache coherency across encryption domains enforced | +| SM3_X86 | SM3 instructions | +| SM4_X86 | SM4 instructions | | SPEC_CTRL_SSBD | Speculative Store Bypass Disable | | SRBDS_CTRL | SRBDS mitigation MSR available | | SSE | SSE functions | @@ -447,6 +451,9 @@ Exit Code 1 | TLB_FLUSH_NESTED | AMD: Flushing includes all the nested translations for guest translations | | TME | Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. | | TOPEXT | TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. | +| TSA_L1_NO | AMD only: Not vulnerable to TSA-L1 | +| TSA_SQ_NO | AMD only: Not vulnerable to TSA-SQ | +| TSA_VERW_CLEAR | AMD: If set, the memory form of the VERW instruction may be used to help mitigate TSA | | TSCRATEMSR | MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104 | | TSXLDTRK | Intel TSX Suspend Load Address Tracking | | VAES | Vector AES. AVX(512) versions requires additional checks. | diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid.go b/vendor/github.com/klauspost/cpuid/v2/cpuid.go index 8103fb343..9cf7738a9 100644 --- a/vendor/github.com/klauspost/cpuid/v2/cpuid.go +++ b/vendor/github.com/klauspost/cpuid/v2/cpuid.go @@ -85,6 +85,7 @@ const ( AMXTILE // Tile architecture AMXTF32 // Tile architecture AMXCOMPLEX // Matrix Multiplication of TF32 Tiles into Packed Single Precision Tile + AMXTRANSPOSE // Tile multiply where the first operand is transposed APX_F // Intel APX AVX // AVX functions AVX10 // If set the Intel AVX10 Converged Vector ISA is supported @@ -219,9 +220,12 @@ const ( SEV_SNP // AMD SEV Secure Nested Paging supported SGX // Software Guard Extensions SGXLC // Software Guard Extensions Launch Control + SGXPQC // Software Guard Extensions 256-bit Encryption SHA // Intel SHA Extensions SME // AMD Secure Memory Encryption supported SME_COHERENT // AMD Hardware cache coherency across encryption domains enforced + SM3_X86 // SM3 instructions + SM4_X86 // SM4 instructions SPEC_CTRL_SSBD // Speculative Store Bypass Disable SRBDS_CTRL // SRBDS mitigation MSR available SRSO_MSR_FIX // Indicates that software may use MSR BP_CFG[BpSpecReduce] to mitigate SRSO. @@ -252,6 +256,9 @@ const ( TLB_FLUSH_NESTED // AMD: Flushing includes all the nested translations for guest translations TME // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. TOPEXT // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. + TSA_L1_NO // AMD only: Not vulnerable to TSA-L1 + TSA_SQ_NO // AM onlyD: Not vulnerable to TSA-SQ + TSA_VERW_CLEAR // If set, the memory form of the VERW instruction may be used to help mitigate TSA TSCRATEMSR // MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104 TSXLDTRK // Intel TSX Suspend Load Address Tracking VAES // Vector AES. AVX(512) versions requires additional checks. @@ -283,7 +290,7 @@ const ( CRC32 // CRC32/CRC32C instructions DCPOP // Data cache clean to Point of Persistence (DC CVAP) EVTSTRM // Generic timer - FCMA // Floatin point complex number addition and multiplication + FCMA // Floating point complex number addition and multiplication FHM // FMLAL and FMLSL instructions FP // Single-precision and double-precision floating point FPHP // Half-precision floating point @@ -301,6 +308,13 @@ const ( SM3 // SM3 instructions SM4 // SM4 instructions SVE // Scalable Vector Extension + + // PMU + PMU_FIXEDCOUNTER_CYCLES + PMU_FIXEDCOUNTER_REFCYCLES + PMU_FIXEDCOUNTER_INSTRUCTIONS + PMU_FIXEDCOUNTER_TOPDOWN_SLOTS + // Keep it last. It automatically defines the size of []flagSet lastID @@ -333,11 +347,36 @@ type CPUInfo struct { SGX SGXSupport AMDMemEncryption AMDMemEncryptionSupport AVX10Level uint8 + PMU PerformanceMonitoringInfo // holds information about the PMU maxFunc uint32 maxExFunc uint32 } +// PerformanceMonitoringInfo holds information about CPU performance monitoring capabilities. +// This is primarily populated from CPUID leaf 0xAh on x86 +type PerformanceMonitoringInfo struct { + // VersionID (x86 only): Version ID of architectural performance monitoring. + // A value of 0 means architectural performance monitoring is not supported or information is unavailable. + VersionID uint8 + // NumGPPMC: Number of General-Purpose Performance Monitoring Counters per logical processor. + // On ARM, this is derived from PMCR_EL0.N (number of event counters). + NumGPCounters uint8 + // GPPMCWidth: Bit width of General-Purpose Performance Monitoring Counters. + // On ARM, typically 64 for PMU event counters. + GPPMCWidth uint8 + // NumFixedPMC: Number of Fixed-Function Performance Counters. + // Valid on x86 if VersionID > 1. On ARM, this typically includes at least the cycle counter (PMCCNTR_EL0). + NumFixedPMC uint8 + // FixedPMCWidth: Bit width of Fixed-Function Performance Counters. + // Valid on x86 if VersionID > 1. On ARM, the cycle counter (PMCCNTR_EL0) is 64-bit. + FixedPMCWidth uint8 + // Raw register output from CPUID leaf 0xAh. + RawEBX uint32 + RawEAX uint32 + RawEDX uint32 +} + var cpuid func(op uint32) (eax, ebx, ecx, edx uint32) var cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32) var xgetbv func(index uint32) (eax, edx uint32) @@ -878,7 +917,12 @@ func physicalCores() int { v, _ := vendorID() switch v { case Intel: - return logicalCores() / threadsPerCore() + lc := logicalCores() + tpc := threadsPerCore() + if lc > 0 && tpc > 0 { + return lc / tpc + } + return 0 case AMD, Hygon: lc := logicalCores() tpc := threadsPerCore() @@ -1279,6 +1323,8 @@ func support() flagSet { // CPUID.(EAX=7, ECX=1).EAX eax1, _, _, edx1 := cpuidex(7, 1) fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI) + fs.setIf(eax1&(1<<1) != 0, SM3_X86) + fs.setIf(eax1&(1<<2) != 0, SM4_X86) fs.setIf(eax1&(1<<7) != 0, CMPCCXADD) fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL) fs.setIf(eax1&(1<<11) != 0, STOSB_SHORT) @@ -1290,6 +1336,7 @@ func support() flagSet { // CPUID.(EAX=7, ECX=1).EDX fs.setIf(edx1&(1<<4) != 0, AVXVNNIINT8) fs.setIf(edx1&(1<<5) != 0, AVXNECONVERT) + fs.setIf(edx1&(1<<6) != 0, AMXTRANSPOSE) fs.setIf(edx1&(1<<7) != 0, AMXTF32) fs.setIf(edx1&(1<<8) != 0, AMXCOMPLEX) fs.setIf(edx1&(1<<10) != 0, AVXVNNIINT16) @@ -1347,6 +1394,11 @@ func support() flagSet { fs.setIf(edx&(1<<4) != 0, BHI_CTRL) fs.setIf(edx&(1<<5) != 0, MCDT_NO) + if fs.inSet(SGX) { + eax, _, _, _ := cpuidex(0x12, 0) + fs.setIf(eax&(1<<12) != 0, SGXPQC) + } + // Add keylocker features. if fs.inSet(KEYLOCKER) && mfi >= 0x19 { _, ebx, _, _ := cpuidex(0x19, 0) @@ -1360,6 +1412,7 @@ func support() flagSet { fs.setIf(ebx&(1<<17) != 0, AVX10_256) fs.setIf(ebx&(1<<18) != 0, AVX10_512) } + } // Processor Extended State Enumeration Sub-leaf (EAX = 0DH, ECX = 1) @@ -1503,12 +1556,28 @@ func support() flagSet { } if maxExtendedFunction() >= 0x80000021 && vend == AMD { - a, _, _, _ := cpuid(0x80000021) + a, _, c, _ := cpuid(0x80000021) fs.setIf((a>>31)&1 == 1, SRSO_MSR_FIX) fs.setIf((a>>30)&1 == 1, SRSO_USER_KERNEL_NO) fs.setIf((a>>29)&1 == 1, SRSO_NO) fs.setIf((a>>28)&1 == 1, IBPB_BRTYPE) fs.setIf((a>>27)&1 == 1, SBPB) + fs.setIf((c>>1)&1 == 1, TSA_L1_NO) + fs.setIf((c>>2)&1 == 1, TSA_SQ_NO) + fs.setIf((a>>5)&1 == 1, TSA_VERW_CLEAR) + } + if vend == AMD { + if family < 0x19 { + // AMD CPUs that are older than Family 19h are not vulnerable to TSA but do not set TSA_L1_NO or TSA_SQ_NO. + // Source: https://www.amd.com/content/dam/amd/en/documents/resources/bulletin/technical-guidance-for-mitigating-transient-scheduler-attacks.pdf + fs.set(TSA_L1_NO) + fs.set(TSA_SQ_NO) + } else if family == 0x1a { + // AMD Family 1Ah models 00h-4Fh and 60h-7Fh are also not vulnerable to TSA but do not set TSA_L1_NO or TSA_SQ_NO. + // Future AMD CPUs will set these CPUID bits if appropriate. CPUs will be designed to set these CPUID bits if appropriate. + notVuln := model <= 0x4f || (model >= 0x60 && model <= 0x7f) + fs.setIf(notVuln, TSA_L1_NO, TSA_SQ_NO) + } } if mfi >= 0x20 { @@ -1564,3 +1633,47 @@ func valAsString(values ...uint32) []byte { } return r } + +func parseLeaf0AH(c *CPUInfo, eax, ebx, edx uint32) (info PerformanceMonitoringInfo) { + info.VersionID = uint8(eax & 0xFF) + info.NumGPCounters = uint8((eax >> 8) & 0xFF) + info.GPPMCWidth = uint8((eax >> 16) & 0xFF) + + info.RawEBX = ebx + info.RawEAX = eax + info.RawEDX = edx + + if info.VersionID > 1 { // This information is only valid if VersionID > 1 + info.NumFixedPMC = uint8(edx & 0x1F) // Bits 4:0 + info.FixedPMCWidth = uint8((edx >> 5) & 0xFF) // Bits 12:5 + } + if info.VersionID > 0 { + // first 4 fixed events are always instructions retired, cycles, ref cycles and topdown slots + if ebx == 0x0 && info.NumFixedPMC == 3 { + c.featureSet.set(PMU_FIXEDCOUNTER_INSTRUCTIONS) + c.featureSet.set(PMU_FIXEDCOUNTER_CYCLES) + c.featureSet.set(PMU_FIXEDCOUNTER_REFCYCLES) + } + if ebx == 0x0 && info.NumFixedPMC == 4 { + c.featureSet.set(PMU_FIXEDCOUNTER_INSTRUCTIONS) + c.featureSet.set(PMU_FIXEDCOUNTER_CYCLES) + c.featureSet.set(PMU_FIXEDCOUNTER_REFCYCLES) + c.featureSet.set(PMU_FIXEDCOUNTER_TOPDOWN_SLOTS) + } + if ebx != 0x0 { + if ((ebx >> 0) & 1) == 0 { + c.featureSet.set(PMU_FIXEDCOUNTER_INSTRUCTIONS) + } + if ((ebx >> 1) & 1) == 0 { + c.featureSet.set(PMU_FIXEDCOUNTER_CYCLES) + } + if ((ebx >> 2) & 1) == 0 { + c.featureSet.set(PMU_FIXEDCOUNTER_REFCYCLES) + } + if ((ebx >> 3) & 1) == 0 { + c.featureSet.set(PMU_FIXEDCOUNTER_TOPDOWN_SLOTS) + } + } + } + return info +} diff --git a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go index f924c9d83..14a56b930 100644 --- a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go +++ b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go @@ -36,6 +36,10 @@ func addInfo(c *CPUInfo, safe bool) { c.AVX10Level = c.supportAVX10() c.cacheSize() c.frequencies() + if c.maxFunc >= 0x0A { + eax, ebx, _, edx := cpuid(0x0A) + c.PMU = parseLeaf0AH(c, eax, ebx, edx) + } } func getVectorLength() (vl, pl uint64) { return 0, 0 } diff --git a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go index 04760c1af..2888bae8f 100644 --- a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go +++ b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go @@ -19,227 +19,238 @@ func _() { _ = x[AMXTILE-9] _ = x[AMXTF32-10] _ = x[AMXCOMPLEX-11] - _ = x[APX_F-12] - _ = x[AVX-13] - _ = x[AVX10-14] - _ = x[AVX10_128-15] - _ = x[AVX10_256-16] - _ = x[AVX10_512-17] - _ = x[AVX2-18] - _ = x[AVX512BF16-19] - _ = x[AVX512BITALG-20] - _ = x[AVX512BW-21] - _ = x[AVX512CD-22] - _ = x[AVX512DQ-23] - _ = x[AVX512ER-24] - _ = x[AVX512F-25] - _ = x[AVX512FP16-26] - _ = x[AVX512IFMA-27] - _ = x[AVX512PF-28] - _ = x[AVX512VBMI-29] - _ = x[AVX512VBMI2-30] - _ = x[AVX512VL-31] - _ = x[AVX512VNNI-32] - _ = x[AVX512VP2INTERSECT-33] - _ = x[AVX512VPOPCNTDQ-34] - _ = x[AVXIFMA-35] - _ = x[AVXNECONVERT-36] - _ = x[AVXSLOW-37] - _ = x[AVXVNNI-38] - _ = x[AVXVNNIINT8-39] - _ = x[AVXVNNIINT16-40] - _ = x[BHI_CTRL-41] - _ = x[BMI1-42] - _ = x[BMI2-43] - _ = x[CETIBT-44] - _ = x[CETSS-45] - _ = x[CLDEMOTE-46] - _ = x[CLMUL-47] - _ = x[CLZERO-48] - _ = x[CMOV-49] - _ = x[CMPCCXADD-50] - _ = x[CMPSB_SCADBS_SHORT-51] - _ = x[CMPXCHG8-52] - _ = x[CPBOOST-53] - _ = x[CPPC-54] - _ = x[CX16-55] - _ = x[EFER_LMSLE_UNS-56] - _ = x[ENQCMD-57] - _ = x[ERMS-58] - _ = x[F16C-59] - _ = x[FLUSH_L1D-60] - _ = x[FMA3-61] - _ = x[FMA4-62] - _ = x[FP128-63] - _ = x[FP256-64] - _ = x[FSRM-65] - _ = x[FXSR-66] - _ = x[FXSROPT-67] - _ = x[GFNI-68] - _ = x[HLE-69] - _ = x[HRESET-70] - _ = x[HTT-71] - _ = x[HWA-72] - _ = x[HYBRID_CPU-73] - _ = x[HYPERVISOR-74] - _ = x[IA32_ARCH_CAP-75] - _ = x[IA32_CORE_CAP-76] - _ = x[IBPB-77] - _ = x[IBPB_BRTYPE-78] - _ = x[IBRS-79] - _ = x[IBRS_PREFERRED-80] - _ = x[IBRS_PROVIDES_SMP-81] - _ = x[IBS-82] - _ = x[IBSBRNTRGT-83] - _ = x[IBSFETCHSAM-84] - _ = x[IBSFFV-85] - _ = x[IBSOPCNT-86] - _ = x[IBSOPCNTEXT-87] - _ = x[IBSOPSAM-88] - _ = x[IBSRDWROPCNT-89] - _ = x[IBSRIPINVALIDCHK-90] - _ = x[IBS_FETCH_CTLX-91] - _ = x[IBS_OPDATA4-92] - _ = x[IBS_OPFUSE-93] - _ = x[IBS_PREVENTHOST-94] - _ = x[IBS_ZEN4-95] - _ = x[IDPRED_CTRL-96] - _ = x[INT_WBINVD-97] - _ = x[INVLPGB-98] - _ = x[KEYLOCKER-99] - _ = x[KEYLOCKERW-100] - _ = x[LAHF-101] - _ = x[LAM-102] - _ = x[LBRVIRT-103] - _ = x[LZCNT-104] - _ = x[MCAOVERFLOW-105] - _ = x[MCDT_NO-106] - _ = x[MCOMMIT-107] - _ = x[MD_CLEAR-108] - _ = x[MMX-109] - _ = x[MMXEXT-110] - _ = x[MOVBE-111] - _ = x[MOVDIR64B-112] - _ = x[MOVDIRI-113] - _ = x[MOVSB_ZL-114] - _ = x[MOVU-115] - _ = x[MPX-116] - _ = x[MSRIRC-117] - _ = x[MSRLIST-118] - _ = x[MSR_PAGEFLUSH-119] - _ = x[NRIPS-120] - _ = x[NX-121] - _ = x[OSXSAVE-122] - _ = x[PCONFIG-123] - _ = x[POPCNT-124] - _ = x[PPIN-125] - _ = x[PREFETCHI-126] - _ = x[PSFD-127] - _ = x[RDPRU-128] - _ = x[RDRAND-129] - _ = x[RDSEED-130] - _ = x[RDTSCP-131] - _ = x[RRSBA_CTRL-132] - _ = x[RTM-133] - _ = x[RTM_ALWAYS_ABORT-134] - _ = x[SBPB-135] - _ = x[SERIALIZE-136] - _ = x[SEV-137] - _ = x[SEV_64BIT-138] - _ = x[SEV_ALTERNATIVE-139] - _ = x[SEV_DEBUGSWAP-140] - _ = x[SEV_ES-141] - _ = x[SEV_RESTRICTED-142] - _ = x[SEV_SNP-143] - _ = x[SGX-144] - _ = x[SGXLC-145] - _ = x[SHA-146] - _ = x[SME-147] - _ = x[SME_COHERENT-148] - _ = x[SPEC_CTRL_SSBD-149] - _ = x[SRBDS_CTRL-150] - _ = x[SRSO_MSR_FIX-151] - _ = x[SRSO_NO-152] - _ = x[SRSO_USER_KERNEL_NO-153] - _ = x[SSE-154] - _ = x[SSE2-155] - _ = x[SSE3-156] - _ = x[SSE4-157] - _ = x[SSE42-158] - _ = x[SSE4A-159] - _ = x[SSSE3-160] - _ = x[STIBP-161] - _ = x[STIBP_ALWAYSON-162] - _ = x[STOSB_SHORT-163] - _ = x[SUCCOR-164] - _ = x[SVM-165] - _ = x[SVMDA-166] - _ = x[SVMFBASID-167] - _ = x[SVML-168] - _ = x[SVMNP-169] - _ = x[SVMPF-170] - _ = x[SVMPFT-171] - _ = x[SYSCALL-172] - _ = x[SYSEE-173] - _ = x[TBM-174] - _ = x[TDX_GUEST-175] - _ = x[TLB_FLUSH_NESTED-176] - _ = x[TME-177] - _ = x[TOPEXT-178] - _ = x[TSCRATEMSR-179] - _ = x[TSXLDTRK-180] - _ = x[VAES-181] - _ = x[VMCBCLEAN-182] - _ = x[VMPL-183] - _ = x[VMSA_REGPROT-184] - _ = x[VMX-185] - _ = x[VPCLMULQDQ-186] - _ = x[VTE-187] - _ = x[WAITPKG-188] - _ = x[WBNOINVD-189] - _ = x[WRMSRNS-190] - _ = x[X87-191] - _ = x[XGETBV1-192] - _ = x[XOP-193] - _ = x[XSAVE-194] - _ = x[XSAVEC-195] - _ = x[XSAVEOPT-196] - _ = x[XSAVES-197] - _ = x[AESARM-198] - _ = x[ARMCPUID-199] - _ = x[ASIMD-200] - _ = x[ASIMDDP-201] - _ = x[ASIMDHP-202] - _ = x[ASIMDRDM-203] - _ = x[ATOMICS-204] - _ = x[CRC32-205] - _ = x[DCPOP-206] - _ = x[EVTSTRM-207] - _ = x[FCMA-208] - _ = x[FHM-209] - _ = x[FP-210] - _ = x[FPHP-211] - _ = x[GPA-212] - _ = x[JSCVT-213] - _ = x[LRCPC-214] - _ = x[PMULL-215] - _ = x[RNDR-216] - _ = x[TLB-217] - _ = x[TS-218] - _ = x[SHA1-219] - _ = x[SHA2-220] - _ = x[SHA3-221] - _ = x[SHA512-222] - _ = x[SM3-223] - _ = x[SM4-224] - _ = x[SVE-225] - _ = x[lastID-226] + _ = x[AMXTRANSPOSE-12] + _ = x[APX_F-13] + _ = x[AVX-14] + _ = x[AVX10-15] + _ = x[AVX10_128-16] + _ = x[AVX10_256-17] + _ = x[AVX10_512-18] + _ = x[AVX2-19] + _ = x[AVX512BF16-20] + _ = x[AVX512BITALG-21] + _ = x[AVX512BW-22] + _ = x[AVX512CD-23] + _ = x[AVX512DQ-24] + _ = x[AVX512ER-25] + _ = x[AVX512F-26] + _ = x[AVX512FP16-27] + _ = x[AVX512IFMA-28] + _ = x[AVX512PF-29] + _ = x[AVX512VBMI-30] + _ = x[AVX512VBMI2-31] + _ = x[AVX512VL-32] + _ = x[AVX512VNNI-33] + _ = x[AVX512VP2INTERSECT-34] + _ = x[AVX512VPOPCNTDQ-35] + _ = x[AVXIFMA-36] + _ = x[AVXNECONVERT-37] + _ = x[AVXSLOW-38] + _ = x[AVXVNNI-39] + _ = x[AVXVNNIINT8-40] + _ = x[AVXVNNIINT16-41] + _ = x[BHI_CTRL-42] + _ = x[BMI1-43] + _ = x[BMI2-44] + _ = x[CETIBT-45] + _ = x[CETSS-46] + _ = x[CLDEMOTE-47] + _ = x[CLMUL-48] + _ = x[CLZERO-49] + _ = x[CMOV-50] + _ = x[CMPCCXADD-51] + _ = x[CMPSB_SCADBS_SHORT-52] + _ = x[CMPXCHG8-53] + _ = x[CPBOOST-54] + _ = x[CPPC-55] + _ = x[CX16-56] + _ = x[EFER_LMSLE_UNS-57] + _ = x[ENQCMD-58] + _ = x[ERMS-59] + _ = x[F16C-60] + _ = x[FLUSH_L1D-61] + _ = x[FMA3-62] + _ = x[FMA4-63] + _ = x[FP128-64] + _ = x[FP256-65] + _ = x[FSRM-66] + _ = x[FXSR-67] + _ = x[FXSROPT-68] + _ = x[GFNI-69] + _ = x[HLE-70] + _ = x[HRESET-71] + _ = x[HTT-72] + _ = x[HWA-73] + _ = x[HYBRID_CPU-74] + _ = x[HYPERVISOR-75] + _ = x[IA32_ARCH_CAP-76] + _ = x[IA32_CORE_CAP-77] + _ = x[IBPB-78] + _ = x[IBPB_BRTYPE-79] + _ = x[IBRS-80] + _ = x[IBRS_PREFERRED-81] + _ = x[IBRS_PROVIDES_SMP-82] + _ = x[IBS-83] + _ = x[IBSBRNTRGT-84] + _ = x[IBSFETCHSAM-85] + _ = x[IBSFFV-86] + _ = x[IBSOPCNT-87] + _ = x[IBSOPCNTEXT-88] + _ = x[IBSOPSAM-89] + _ = x[IBSRDWROPCNT-90] + _ = x[IBSRIPINVALIDCHK-91] + _ = x[IBS_FETCH_CTLX-92] + _ = x[IBS_OPDATA4-93] + _ = x[IBS_OPFUSE-94] + _ = x[IBS_PREVENTHOST-95] + _ = x[IBS_ZEN4-96] + _ = x[IDPRED_CTRL-97] + _ = x[INT_WBINVD-98] + _ = x[INVLPGB-99] + _ = x[KEYLOCKER-100] + _ = x[KEYLOCKERW-101] + _ = x[LAHF-102] + _ = x[LAM-103] + _ = x[LBRVIRT-104] + _ = x[LZCNT-105] + _ = x[MCAOVERFLOW-106] + _ = x[MCDT_NO-107] + _ = x[MCOMMIT-108] + _ = x[MD_CLEAR-109] + _ = x[MMX-110] + _ = x[MMXEXT-111] + _ = x[MOVBE-112] + _ = x[MOVDIR64B-113] + _ = x[MOVDIRI-114] + _ = x[MOVSB_ZL-115] + _ = x[MOVU-116] + _ = x[MPX-117] + _ = x[MSRIRC-118] + _ = x[MSRLIST-119] + _ = x[MSR_PAGEFLUSH-120] + _ = x[NRIPS-121] + _ = x[NX-122] + _ = x[OSXSAVE-123] + _ = x[PCONFIG-124] + _ = x[POPCNT-125] + _ = x[PPIN-126] + _ = x[PREFETCHI-127] + _ = x[PSFD-128] + _ = x[RDPRU-129] + _ = x[RDRAND-130] + _ = x[RDSEED-131] + _ = x[RDTSCP-132] + _ = x[RRSBA_CTRL-133] + _ = x[RTM-134] + _ = x[RTM_ALWAYS_ABORT-135] + _ = x[SBPB-136] + _ = x[SERIALIZE-137] + _ = x[SEV-138] + _ = x[SEV_64BIT-139] + _ = x[SEV_ALTERNATIVE-140] + _ = x[SEV_DEBUGSWAP-141] + _ = x[SEV_ES-142] + _ = x[SEV_RESTRICTED-143] + _ = x[SEV_SNP-144] + _ = x[SGX-145] + _ = x[SGXLC-146] + _ = x[SGXPQC-147] + _ = x[SHA-148] + _ = x[SME-149] + _ = x[SME_COHERENT-150] + _ = x[SM3_X86-151] + _ = x[SM4_X86-152] + _ = x[SPEC_CTRL_SSBD-153] + _ = x[SRBDS_CTRL-154] + _ = x[SRSO_MSR_FIX-155] + _ = x[SRSO_NO-156] + _ = x[SRSO_USER_KERNEL_NO-157] + _ = x[SSE-158] + _ = x[SSE2-159] + _ = x[SSE3-160] + _ = x[SSE4-161] + _ = x[SSE42-162] + _ = x[SSE4A-163] + _ = x[SSSE3-164] + _ = x[STIBP-165] + _ = x[STIBP_ALWAYSON-166] + _ = x[STOSB_SHORT-167] + _ = x[SUCCOR-168] + _ = x[SVM-169] + _ = x[SVMDA-170] + _ = x[SVMFBASID-171] + _ = x[SVML-172] + _ = x[SVMNP-173] + _ = x[SVMPF-174] + _ = x[SVMPFT-175] + _ = x[SYSCALL-176] + _ = x[SYSEE-177] + _ = x[TBM-178] + _ = x[TDX_GUEST-179] + _ = x[TLB_FLUSH_NESTED-180] + _ = x[TME-181] + _ = x[TOPEXT-182] + _ = x[TSA_L1_NO-183] + _ = x[TSA_SQ_NO-184] + _ = x[TSA_VERW_CLEAR-185] + _ = x[TSCRATEMSR-186] + _ = x[TSXLDTRK-187] + _ = x[VAES-188] + _ = x[VMCBCLEAN-189] + _ = x[VMPL-190] + _ = x[VMSA_REGPROT-191] + _ = x[VMX-192] + _ = x[VPCLMULQDQ-193] + _ = x[VTE-194] + _ = x[WAITPKG-195] + _ = x[WBNOINVD-196] + _ = x[WRMSRNS-197] + _ = x[X87-198] + _ = x[XGETBV1-199] + _ = x[XOP-200] + _ = x[XSAVE-201] + _ = x[XSAVEC-202] + _ = x[XSAVEOPT-203] + _ = x[XSAVES-204] + _ = x[AESARM-205] + _ = x[ARMCPUID-206] + _ = x[ASIMD-207] + _ = x[ASIMDDP-208] + _ = x[ASIMDHP-209] + _ = x[ASIMDRDM-210] + _ = x[ATOMICS-211] + _ = x[CRC32-212] + _ = x[DCPOP-213] + _ = x[EVTSTRM-214] + _ = x[FCMA-215] + _ = x[FHM-216] + _ = x[FP-217] + _ = x[FPHP-218] + _ = x[GPA-219] + _ = x[JSCVT-220] + _ = x[LRCPC-221] + _ = x[PMULL-222] + _ = x[RNDR-223] + _ = x[TLB-224] + _ = x[TS-225] + _ = x[SHA1-226] + _ = x[SHA2-227] + _ = x[SHA3-228] + _ = x[SHA512-229] + _ = x[SM3-230] + _ = x[SM4-231] + _ = x[SVE-232] + _ = x[PMU_FIXEDCOUNTER_CYCLES-233] + _ = x[PMU_FIXEDCOUNTER_REFCYCLES-234] + _ = x[PMU_FIXEDCOUNTER_INSTRUCTIONS-235] + _ = x[PMU_FIXEDCOUNTER_TOPDOWN_SLOTS-236] + _ = x[lastID-237] _ = x[firstID-0] } -const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXFP8AMXTILEAMXTF32AMXCOMPLEXAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8AVXVNNIINT16BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBPB_BRTYPEIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSBPBSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSRSO_MSR_FIXSRSO_NOSRSO_USER_KERNEL_NOSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFHMFPFPHPGPAJSCVTLRCPCPMULLRNDRTLBTSSHA1SHA2SHA3SHA512SM3SM4SVElastID" +const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXFP8AMXTILEAMXTF32AMXCOMPLEXAMXTRANSPOSEAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8AVXVNNIINT16BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBPB_BRTYPEIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSBPBSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSGXPQCSHASMESME_COHERENTSM3_X86SM4_X86SPEC_CTRL_SSBDSRBDS_CTRLSRSO_MSR_FIXSRSO_NOSRSO_USER_KERNEL_NOSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSA_L1_NOTSA_SQ_NOTSA_VERW_CLEARTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFHMFPFPHPGPAJSCVTLRCPCPMULLRNDRTLBTSSHA1SHA2SHA3SHA512SM3SM4SVEPMU_FIXEDCOUNTER_CYCLESPMU_FIXEDCOUNTER_REFCYCLESPMU_FIXEDCOUNTER_INSTRUCTIONSPMU_FIXEDCOUNTER_TOPDOWN_SLOTSlastID" -var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 61, 68, 75, 85, 90, 93, 98, 107, 116, 125, 129, 139, 151, 159, 167, 175, 183, 190, 200, 210, 218, 228, 239, 247, 257, 275, 290, 297, 309, 316, 323, 334, 346, 354, 358, 362, 368, 373, 381, 386, 392, 396, 405, 423, 431, 438, 442, 446, 460, 466, 470, 474, 483, 487, 491, 496, 501, 505, 509, 516, 520, 523, 529, 532, 535, 545, 555, 568, 581, 585, 596, 600, 614, 631, 634, 644, 655, 661, 669, 680, 688, 700, 716, 730, 741, 751, 766, 774, 785, 795, 802, 811, 821, 825, 828, 835, 840, 851, 858, 865, 873, 876, 882, 887, 896, 903, 911, 915, 918, 924, 931, 944, 949, 951, 958, 965, 971, 975, 984, 988, 993, 999, 1005, 1011, 1021, 1024, 1040, 1044, 1053, 1056, 1065, 1080, 1093, 1099, 1113, 1120, 1123, 1128, 1131, 1134, 1146, 1160, 1170, 1182, 1189, 1208, 1211, 1215, 1219, 1223, 1228, 1233, 1238, 1243, 1257, 1268, 1274, 1277, 1282, 1291, 1295, 1300, 1305, 1311, 1318, 1323, 1326, 1335, 1351, 1354, 1360, 1370, 1378, 1382, 1391, 1395, 1407, 1410, 1420, 1423, 1430, 1438, 1445, 1448, 1455, 1458, 1463, 1469, 1477, 1483, 1489, 1497, 1502, 1509, 1516, 1524, 1531, 1536, 1541, 1548, 1552, 1555, 1557, 1561, 1564, 1569, 1574, 1579, 1583, 1586, 1588, 1592, 1596, 1600, 1606, 1609, 1612, 1615, 1621} +var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 61, 68, 75, 85, 97, 102, 105, 110, 119, 128, 137, 141, 151, 163, 171, 179, 187, 195, 202, 212, 222, 230, 240, 251, 259, 269, 287, 302, 309, 321, 328, 335, 346, 358, 366, 370, 374, 380, 385, 393, 398, 404, 408, 417, 435, 443, 450, 454, 458, 472, 478, 482, 486, 495, 499, 503, 508, 513, 517, 521, 528, 532, 535, 541, 544, 547, 557, 567, 580, 593, 597, 608, 612, 626, 643, 646, 656, 667, 673, 681, 692, 700, 712, 728, 742, 753, 763, 778, 786, 797, 807, 814, 823, 833, 837, 840, 847, 852, 863, 870, 877, 885, 888, 894, 899, 908, 915, 923, 927, 930, 936, 943, 956, 961, 963, 970, 977, 983, 987, 996, 1000, 1005, 1011, 1017, 1023, 1033, 1036, 1052, 1056, 1065, 1068, 1077, 1092, 1105, 1111, 1125, 1132, 1135, 1140, 1146, 1149, 1152, 1164, 1171, 1178, 1192, 1202, 1214, 1221, 1240, 1243, 1247, 1251, 1255, 1260, 1265, 1270, 1275, 1289, 1300, 1306, 1309, 1314, 1323, 1327, 1332, 1337, 1343, 1350, 1355, 1358, 1367, 1383, 1386, 1392, 1401, 1410, 1424, 1434, 1442, 1446, 1455, 1459, 1471, 1474, 1484, 1487, 1494, 1502, 1509, 1512, 1519, 1522, 1527, 1533, 1541, 1547, 1553, 1561, 1566, 1573, 1580, 1588, 1595, 1600, 1605, 1612, 1616, 1619, 1621, 1625, 1628, 1633, 1638, 1643, 1647, 1650, 1652, 1656, 1660, 1664, 1670, 1673, 1676, 1679, 1702, 1728, 1757, 1787, 1793} func (i FeatureID) String() string { if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) { diff --git a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go index 6f0b33ca6..da07522e7 100644 --- a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go +++ b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go @@ -65,9 +65,16 @@ func sysctlGetInt64(unknown int, names ...string) int { return unknown } -func setFeature(c *CPUInfo, name string, feature FeatureID) { - c.featureSet.setIf(sysctlGetBool(name), feature) +func setFeature(c *CPUInfo, feature FeatureID, aliases ...string) { + for _, alias := range aliases { + set := sysctlGetBool(alias) + c.featureSet.setIf(set, feature) + if set { + break + } + } } + func tryToFillCPUInfoFomSysctl(c *CPUInfo) { c.BrandName = sysctlGetString("machdep.cpu.brand_string") @@ -87,41 +94,36 @@ func tryToFillCPUInfoFomSysctl(c *CPUInfo) { c.Cache.L2 = sysctlGetInt64(-1, "hw.l2cachesize") c.Cache.L3 = sysctlGetInt64(-1, "hw.l3cachesize") - // from https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile - setFeature(c, "hw.optional.arm.FEAT_AES", AESARM) - setFeature(c, "hw.optional.AdvSIMD", ASIMD) - setFeature(c, "hw.optional.arm.FEAT_DotProd", ASIMDDP) - setFeature(c, "hw.optional.arm.FEAT_RDM", ASIMDRDM) - setFeature(c, "hw.optional.FEAT_CRC32", CRC32) - setFeature(c, "hw.optional.arm.FEAT_DPB", DCPOP) - // setFeature(c, "", EVTSTRM) - setFeature(c, "hw.optional.arm.FEAT_FCMA", FCMA) - setFeature(c, "hw.optional.arm.FEAT_FHM", FHM) - setFeature(c, "hw.optional.arm.FEAT_FP", FP) - setFeature(c, "hw.optional.arm.FEAT_FP16", FPHP) - setFeature(c, "hw.optional.arm.FEAT_PAuth", GPA) - setFeature(c, "hw.optional.arm.FEAT_RNG", RNDR) - setFeature(c, "hw.optional.arm.FEAT_JSCVT", JSCVT) - setFeature(c, "hw.optional.arm.FEAT_LRCPC", LRCPC) - setFeature(c, "hw.optional.arm.FEAT_PMULL", PMULL) - setFeature(c, "hw.optional.arm.FEAT_SHA1", SHA1) - setFeature(c, "hw.optional.arm.FEAT_SHA256", SHA2) - setFeature(c, "hw.optional.arm.FEAT_SHA3", SHA3) - setFeature(c, "hw.optional.arm.FEAT_SHA512", SHA512) - setFeature(c, "hw.optional.arm.FEAT_TLBIOS", TLB) - setFeature(c, "hw.optional.arm.FEAT_TLBIRANGE", TLB) - setFeature(c, "hw.optional.arm.FEAT_FlagM", TS) - setFeature(c, "hw.optional.arm.FEAT_FlagM2", TS) - // setFeature(c, "", SM3) - // setFeature(c, "", SM4) - setFeature(c, "hw.optional.arm.FEAT_SVE", SVE) - - // from empirical observation - setFeature(c, "hw.optional.AdvSIMD_HPFPCvt", ASIMDHP) - setFeature(c, "hw.optional.armv8_1_atomics", ATOMICS) - setFeature(c, "hw.optional.floatingpoint", FP) - setFeature(c, "hw.optional.armv8_2_sha3", SHA3) - setFeature(c, "hw.optional.armv8_2_sha512", SHA512) - setFeature(c, "hw.optional.armv8_3_compnum", FCMA) - setFeature(c, "hw.optional.armv8_crc32", CRC32) + // ARM features: + // + // Note: On some Apple Silicon system, some feats have aliases. See: + // https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics + // When so, we look at all aliases and consider a feature available when at least one identifier matches. + setFeature(c, AESARM, "hw.optional.arm.FEAT_AES") // AES instructions + setFeature(c, ASIMD, "hw.optional.arm.AdvSIMD", "hw.optional.neon") // Advanced SIMD + setFeature(c, ASIMDDP, "hw.optional.arm.FEAT_DotProd") // SIMD Dot Product + setFeature(c, ASIMDHP, "hw.optional.arm.AdvSIMD_HPFPCvt", "hw.optional.neon_hpfp") // Advanced SIMD half-precision floating point + setFeature(c, ASIMDRDM, "hw.optional.arm.FEAT_RDM") // Rounding Double Multiply Accumulate/Subtract + setFeature(c, ATOMICS, "hw.optional.arm.FEAT_LSE", "hw.optional.armv8_1_atomics") // Large System Extensions (LSE) + setFeature(c, CRC32, "hw.optional.arm.FEAT_CRC32", "hw.optional.armv8_crc32") // CRC32/CRC32C instructions + setFeature(c, DCPOP, "hw.optional.arm.FEAT_DPB") // Data cache clean to Point of Persistence (DC CVAP) + setFeature(c, EVTSTRM, "hw.optional.arm.FEAT_ECV") // Generic timer + setFeature(c, FCMA, "hw.optional.arm.FEAT_FCMA", "hw.optional.armv8_3_compnum") // Floating point complex number addition and multiplication + setFeature(c, FHM, "hw.optional.armv8_2_fhm", "hw.optional.arm.FEAT_FHM") // FMLAL and FMLSL instructions + setFeature(c, FP, "hw.optional.floatingpoint") // Single-precision and double-precision floating point + setFeature(c, FPHP, "hw.optional.arm.FEAT_FP16", "hw.optional.neon_fp16") // Half-precision floating point + setFeature(c, GPA, "hw.optional.arm.FEAT_PAuth") // Generic Pointer Authentication + setFeature(c, JSCVT, "hw.optional.arm.FEAT_JSCVT") // Javascript-style double->int convert (FJCVTZS) + setFeature(c, LRCPC, "hw.optional.arm.FEAT_LRCPC") // Weaker release consistency (LDAPR, etc) + setFeature(c, PMULL, "hw.optional.arm.FEAT_PMULL") // Polynomial Multiply instructions (PMULL/PMULL2) + setFeature(c, RNDR, "hw.optional.arm.FEAT_RNG") // Random Number instructions + setFeature(c, TLB, "hw.optional.arm.FEAT_TLBIOS", "hw.optional.arm.FEAT_TLBIRANGE") // Outer Shareable and TLB range maintenance instructions + setFeature(c, TS, "hw.optional.arm.FEAT_FlagM", "hw.optional.arm.FEAT_FlagM2") // Flag manipulation instructions + setFeature(c, SHA1, "hw.optional.arm.FEAT_SHA1") // SHA-1 instructions (SHA1C, etc) + setFeature(c, SHA2, "hw.optional.arm.FEAT_SHA256") // SHA-2 instructions (SHA256H, etc) + setFeature(c, SHA3, "hw.optional.arm.FEAT_SHA3") // SHA-3 instructions (EOR3, RAXI, XAR, BCAX) + setFeature(c, SHA512, "hw.optional.arm.FEAT_SHA512") // SHA512 instructions + setFeature(c, SM3, "hw.optional.arm.FEAT_SM3") // SM3 instructions + setFeature(c, SM4, "hw.optional.arm.FEAT_SM4") // SM4 instructions + setFeature(c, SVE, "hw.optional.arm.FEAT_SVE") // Scalable Vector Extension } diff --git a/vendor/github.com/nhost/be/services/mimir/nhost/models.go b/vendor/github.com/nhost/be/services/mimir/nhost/models.go index 9d5021b30..05ed152fe 100644 --- a/vendor/github.com/nhost/be/services/mimir/nhost/models.go +++ b/vendor/github.com/nhost/be/services/mimir/nhost/models.go @@ -66,14 +66,6 @@ type AppStateHistory struct { CreatedAt pgtype.Timestamptz } -// Internal table for tracking migrations. Don't modify its structure as Hasura Auth relies on it to function properly. -type AuthMigration struct { - ID int32 - Name string - Hash string - ExecutedAt pgtype.Timestamp -} - // List of available Oauth providers. Don't modify its structure as Hasura Auth relies on it to function properly. type AuthProvider struct { ID string @@ -106,6 +98,12 @@ type AuthRole struct { Role string } +// Internal table for tracking migrations. Don't modify its structure as Hasura Auth relies on it to function properly. +type AuthSchemaMigration struct { + Version int64 + Dirty bool +} + // User account information. Don't modify its structure as Hasura Auth relies on it to function properly. type AuthUser struct { ID uuid.UUID diff --git a/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm b/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm index 4230fba01..f1199315c 100644 --- a/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm +++ b/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm @@ -1,4 +1,4 @@ -FROM golang:1.23@sha256:51a6466e8dbf3e00e422eb0f7a97ac450b2d57b33617bbe8d2ee0bddcd9d0d37 +FROM golang:1.24@sha256:20a022e5112a144aa7b7aeb3f22ebf2cdaefcc4aac0d64e8deeee8cdc18b9c0f ENV GOOS=linux ENV GOARCH=arm diff --git a/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm64 b/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm64 index 59928252a..fa63a0296 100644 --- a/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm64 +++ b/vendor/github.com/pjbgf/sha1cd/Dockerfile.arm64 @@ -1,4 +1,4 @@ -FROM golang:1.23@sha256:51a6466e8dbf3e00e422eb0f7a97ac450b2d57b33617bbe8d2ee0bddcd9d0d37 +FROM golang:1.24@sha256:20a022e5112a144aa7b7aeb3f22ebf2cdaefcc4aac0d64e8deeee8cdc18b9c0f ENV GOOS=linux ENV GOARCH=arm64 diff --git a/vendor/github.com/pjbgf/sha1cd/Makefile b/vendor/github.com/pjbgf/sha1cd/Makefile index 278a109d8..a9a738b9f 100644 --- a/vendor/github.com/pjbgf/sha1cd/Makefile +++ b/vendor/github.com/pjbgf/sha1cd/Makefile @@ -4,7 +4,7 @@ export CGO_ENABLED := 1 .PHONY: test test: - go test ./... + go test -race -timeout 15s ./... .PHONY: bench bench: diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.go b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.go index 95e083084..7ee0f20ad 100644 --- a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.go +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.go @@ -1,5 +1,5 @@ -//go:build !noasm && gc && amd64 -// +build !noasm,gc,amd64 +//go:build !noasm && gc && amd64 && !arm64 +// +build !noasm,gc,amd64,!arm64 package sha1cd @@ -10,12 +10,6 @@ import ( shared "github.com/pjbgf/sha1cd/internal" ) -type sliceHeader struct { - base uintptr - len int - cap int -} - // blockAMD64 hashes the message p into the current state in dig. // Both m1 and cs are used to store intermediate results which are used by the collision detection logic. // diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.s b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.s index e5e213a52..fa5022be5 100644 --- a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.s +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_amd64.s @@ -1,17 +1,17 @@ // Code generated by command: go run asm.go -out ../sha1cdblock_amd64.s -pkg sha1cd. DO NOT EDIT. -//go:build !noasm && gc && amd64 +//go:build !noasm && gc && amd64 && !arm64 #include "textflag.h" // func blockAMD64(dig *digest, p []byte, m1 []uint32, cs [][5]uint32) TEXT ·blockAMD64(SB), NOSPLIT, $64-80 MOVQ dig+0(FP), R8 - MOVQ p_base+8(FP), DI + MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $+6, DX SHLQ $+6, DX - LEAQ (DI)(DX*1), SI + LEAQ (SI)(DX*1), DI // Load h0, h1, h2, h3, h4. MOVL (R8), AX @@ -22,2252 +22,2251 @@ TEXT ·blockAMD64(SB), NOSPLIT, $64-80 // len(p) >= chunk CMPQ DI, SI - JEQ end + JBE end loop: // Initialize registers a, b, c, d, e. - MOVL AX, R10 - MOVL BX, R11 - MOVL CX, R12 - MOVL DX, R13 - MOVL BP, R14 + MOVL AX, R9 + MOVL BX, R10 + MOVL CX, R11 + MOVL DX, R12 + MOVL BP, R13 // ROUND1 (steps 0-15) // Load cs MOVQ cs_base+56(FP), R8 - MOVL R10, (R8) - MOVL R11, 4(R8) - MOVL R12, 8(R8) - MOVL R13, 12(R8) - MOVL R14, 16(R8) - - // ROUND1(0) - // LOAD - MOVL (DI), R9 - BSWAPL R9 - MOVL R9, (SP) - - // FUNC1 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 - - // MIX - ROLL $+30, R11 - ADDL R15, R14 - MOVL R10, R8 - ROLL $+5, R8 - LEAL 1518500249(R14)(R9*1), R14 - ADDL R8, R14 - - // Load m1 - MOVQ m1_base+32(FP), R8 - MOVL (SP), R9 MOVL R9, (R8) + MOVL R10, 4(R8) + MOVL R11, 8(R8) + MOVL R12, 12(R8) + MOVL R13, 16(R8) - // ROUND1(1) + // ROUND1(0) // LOAD - MOVL 4(DI), R9 - BSWAPL R9 - MOVL R9, 4(SP) + MOVL (SI), DI + BSWAPL DI + MOVL DI, (SP) // FUNC1 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 + MOVL R12, R14 + XORL R11, R14 + ANDL R10, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1518500249(R13)(R9*1), R13 + LEAL 1518500249(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 4(SP), R9 - MOVL R9, 4(R8) + MOVL (SP), DI + MOVL DI, (R8) - // ROUND1(2) + // ROUND1(1) // LOAD - MOVL 8(DI), R9 - BSWAPL R9 - MOVL R9, 8(SP) + MOVL 4(SI), DI + BSWAPL DI + MOVL DI, 4(SP) // FUNC1 - MOVL R11, R15 - XORL R10, R15 - ANDL R14, R15 - XORL R11, R15 + MOVL R11, R14 + XORL R10, R14 + ANDL R9, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1518500249(R12)(R9*1), R12 + LEAL 1518500249(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 8(SP), R9 - MOVL R9, 8(R8) + MOVL 4(SP), DI + MOVL DI, 4(R8) - // ROUND1(3) + // ROUND1(2) // LOAD - MOVL 12(DI), R9 - BSWAPL R9 - MOVL R9, 12(SP) + MOVL 8(SI), DI + BSWAPL DI + MOVL DI, 8(SP) // FUNC1 - MOVL R10, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R10, R15 + MOVL R10, R14 + XORL R9, R14 + ANDL R13, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1518500249(R11)(R9*1), R11 + LEAL 1518500249(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 12(SP), R9 - MOVL R9, 12(R8) + MOVL 8(SP), DI + MOVL DI, 8(R8) - // ROUND1(4) + // ROUND1(3) // LOAD - MOVL 16(DI), R9 - BSWAPL R9 - MOVL R9, 16(SP) + MOVL 12(SI), DI + BSWAPL DI + MOVL DI, 12(SP) // FUNC1 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 + MOVL R9, R14 + XORL R13, R14 + ANDL R12, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1518500249(R10)(R9*1), R10 + LEAL 1518500249(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 16(SP), R9 - MOVL R9, 16(R8) + MOVL 12(SP), DI + MOVL DI, 12(R8) - // ROUND1(5) + // ROUND1(4) // LOAD - MOVL 20(DI), R9 - BSWAPL R9 - MOVL R9, 20(SP) + MOVL 16(SI), DI + BSWAPL DI + MOVL DI, 16(SP) // FUNC1 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 + MOVL R13, R14 + XORL R12, R14 + ANDL R11, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1518500249(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1518500249(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 20(SP), R9 - MOVL R9, 20(R8) + MOVL 16(SP), DI + MOVL DI, 16(R8) - // ROUND1(6) + // ROUND1(5) // LOAD - MOVL 24(DI), R9 - BSWAPL R9 - MOVL R9, 24(SP) + MOVL 20(SI), DI + BSWAPL DI + MOVL DI, 20(SP) // FUNC1 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 + MOVL R12, R14 + XORL R11, R14 + ANDL R10, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1518500249(R13)(R9*1), R13 + LEAL 1518500249(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 24(SP), R9 - MOVL R9, 24(R8) + MOVL 20(SP), DI + MOVL DI, 20(R8) - // ROUND1(7) + // ROUND1(6) // LOAD - MOVL 28(DI), R9 - BSWAPL R9 - MOVL R9, 28(SP) + MOVL 24(SI), DI + BSWAPL DI + MOVL DI, 24(SP) // FUNC1 - MOVL R11, R15 - XORL R10, R15 - ANDL R14, R15 - XORL R11, R15 + MOVL R11, R14 + XORL R10, R14 + ANDL R9, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1518500249(R12)(R9*1), R12 + LEAL 1518500249(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 28(SP), R9 - MOVL R9, 28(R8) + MOVL 24(SP), DI + MOVL DI, 24(R8) - // ROUND1(8) + // ROUND1(7) // LOAD - MOVL 32(DI), R9 - BSWAPL R9 - MOVL R9, 32(SP) + MOVL 28(SI), DI + BSWAPL DI + MOVL DI, 28(SP) // FUNC1 - MOVL R10, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R10, R15 + MOVL R10, R14 + XORL R9, R14 + ANDL R13, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1518500249(R11)(R9*1), R11 + LEAL 1518500249(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 32(SP), R9 - MOVL R9, 32(R8) + MOVL 28(SP), DI + MOVL DI, 28(R8) - // ROUND1(9) + // ROUND1(8) // LOAD - MOVL 36(DI), R9 - BSWAPL R9 - MOVL R9, 36(SP) + MOVL 32(SI), DI + BSWAPL DI + MOVL DI, 32(SP) // FUNC1 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 + MOVL R9, R14 + XORL R13, R14 + ANDL R12, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1518500249(R10)(R9*1), R10 + LEAL 1518500249(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 36(SP), R9 - MOVL R9, 36(R8) + MOVL 32(SP), DI + MOVL DI, 32(R8) - // ROUND1(10) + // ROUND1(9) // LOAD - MOVL 40(DI), R9 - BSWAPL R9 - MOVL R9, 40(SP) + MOVL 36(SI), DI + BSWAPL DI + MOVL DI, 36(SP) // FUNC1 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 + MOVL R13, R14 + XORL R12, R14 + ANDL R11, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1518500249(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1518500249(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 40(SP), R9 - MOVL R9, 40(R8) + MOVL 36(SP), DI + MOVL DI, 36(R8) - // ROUND1(11) + // ROUND1(10) // LOAD - MOVL 44(DI), R9 - BSWAPL R9 - MOVL R9, 44(SP) + MOVL 40(SI), DI + BSWAPL DI + MOVL DI, 40(SP) // FUNC1 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 + MOVL R12, R14 + XORL R11, R14 + ANDL R10, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1518500249(R13)(R9*1), R13 + LEAL 1518500249(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 44(SP), R9 - MOVL R9, 44(R8) + MOVL 40(SP), DI + MOVL DI, 40(R8) - // ROUND1(12) + // ROUND1(11) // LOAD - MOVL 48(DI), R9 - BSWAPL R9 - MOVL R9, 48(SP) + MOVL 44(SI), DI + BSWAPL DI + MOVL DI, 44(SP) // FUNC1 - MOVL R11, R15 - XORL R10, R15 - ANDL R14, R15 - XORL R11, R15 + MOVL R11, R14 + XORL R10, R14 + ANDL R9, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1518500249(R12)(R9*1), R12 + LEAL 1518500249(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 48(SP), R9 - MOVL R9, 48(R8) + MOVL 44(SP), DI + MOVL DI, 44(R8) - // ROUND1(13) + // ROUND1(12) // LOAD - MOVL 52(DI), R9 - BSWAPL R9 - MOVL R9, 52(SP) + MOVL 48(SI), DI + BSWAPL DI + MOVL DI, 48(SP) // FUNC1 - MOVL R10, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R10, R15 + MOVL R10, R14 + XORL R9, R14 + ANDL R13, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1518500249(R11)(R9*1), R11 + LEAL 1518500249(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 52(SP), R9 - MOVL R9, 52(R8) + MOVL 48(SP), DI + MOVL DI, 48(R8) - // ROUND1(14) + // ROUND1(13) // LOAD - MOVL 56(DI), R9 - BSWAPL R9 - MOVL R9, 56(SP) + MOVL 52(SI), DI + BSWAPL DI + MOVL DI, 52(SP) // FUNC1 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 + MOVL R9, R14 + XORL R13, R14 + ANDL R12, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1518500249(R10)(R9*1), R10 + LEAL 1518500249(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 56(SP), R9 - MOVL R9, 56(R8) + MOVL 52(SP), DI + MOVL DI, 52(R8) - // ROUND1(15) + // ROUND1(14) // LOAD - MOVL 60(DI), R9 - BSWAPL R9 - MOVL R9, 60(SP) + MOVL 56(SI), DI + BSWAPL DI + MOVL DI, 56(SP) // FUNC1 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 + MOVL R13, R14 + XORL R12, R14 + ANDL R11, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1518500249(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1518500249(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 60(SP), R9 - MOVL R9, 60(R8) + MOVL 56(SP), DI + MOVL DI, 56(R8) - // ROUND1x (steps 16-19) - same as ROUND1 but with no data load. - // ROUND1x(16) - // SHUFFLE - MOVL (SP), R9 - XORL 52(SP), R9 - XORL 32(SP), R9 - XORL 8(SP), R9 - ROLL $+1, R9 - MOVL R9, (SP) + // ROUND1(15) + // LOAD + MOVL 60(SI), DI + BSWAPL DI + MOVL DI, 60(SP) // FUNC1 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 + MOVL R12, R14 + XORL R11, R14 + ANDL R10, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1518500249(R13)(R9*1), R13 + LEAL 1518500249(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL (SP), R9 - MOVL R9, 64(R8) + MOVL 60(SP), DI + MOVL DI, 60(R8) - // ROUND1x(17) + // ROUND1x (steps 16-19) - same as ROUND1 but with no data load. + // ROUND1x(16) // SHUFFLE - MOVL 4(SP), R9 - XORL 56(SP), R9 - XORL 36(SP), R9 - XORL 12(SP), R9 - ROLL $+1, R9 - MOVL R9, 4(SP) + MOVL (SP), DI + XORL 52(SP), DI + XORL 32(SP), DI + XORL 8(SP), DI + ROLL $+1, DI + MOVL DI, (SP) // FUNC1 - MOVL R11, R15 - XORL R10, R15 - ANDL R14, R15 - XORL R11, R15 + MOVL R11, R14 + XORL R10, R14 + ANDL R9, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1518500249(R12)(R9*1), R12 + LEAL 1518500249(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 4(SP), R9 - MOVL R9, 68(R8) + MOVL (SP), DI + MOVL DI, 64(R8) - // ROUND1x(18) + // ROUND1x(17) // SHUFFLE - MOVL 8(SP), R9 - XORL 60(SP), R9 - XORL 40(SP), R9 - XORL 16(SP), R9 - ROLL $+1, R9 - MOVL R9, 8(SP) + MOVL 4(SP), DI + XORL 56(SP), DI + XORL 36(SP), DI + XORL 12(SP), DI + ROLL $+1, DI + MOVL DI, 4(SP) // FUNC1 - MOVL R10, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R10, R15 + MOVL R10, R14 + XORL R9, R14 + ANDL R13, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1518500249(R11)(R9*1), R11 + LEAL 1518500249(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 8(SP), R9 - MOVL R9, 72(R8) + MOVL 4(SP), DI + MOVL DI, 68(R8) - // ROUND1x(19) + // ROUND1x(18) // SHUFFLE - MOVL 12(SP), R9 - XORL (SP), R9 - XORL 44(SP), R9 - XORL 20(SP), R9 - ROLL $+1, R9 - MOVL R9, 12(SP) + MOVL 8(SP), DI + XORL 60(SP), DI + XORL 40(SP), DI + XORL 16(SP), DI + ROLL $+1, DI + MOVL DI, 8(SP) // FUNC1 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 + MOVL R9, R14 + XORL R13, R14 + ANDL R12, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1518500249(R10)(R9*1), R10 + LEAL 1518500249(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 12(SP), R9 - MOVL R9, 76(R8) + MOVL 8(SP), DI + MOVL DI, 72(R8) - // ROUND2 (steps 20-39) - // ROUND2(20) + // ROUND1x(19) // SHUFFLE - MOVL 16(SP), R9 - XORL 4(SP), R9 - XORL 48(SP), R9 - XORL 24(SP), R9 - ROLL $+1, R9 - MOVL R9, 16(SP) + MOVL 12(SP), DI + XORL (SP), DI + XORL 44(SP), DI + XORL 20(SP), DI + ROLL $+1, DI + MOVL DI, 12(SP) - // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + // FUNC1 + MOVL R13, R14 + XORL R12, R14 + ANDL R11, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1859775393(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1518500249(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 16(SP), R9 - MOVL R9, 80(R8) + MOVL 12(SP), DI + MOVL DI, 76(R8) - // ROUND2(21) + // ROUND2 (steps 20-39) + // ROUND2(20) // SHUFFLE - MOVL 20(SP), R9 - XORL 8(SP), R9 - XORL 52(SP), R9 - XORL 28(SP), R9 - ROLL $+1, R9 - MOVL R9, 20(SP) + MOVL 16(SP), DI + XORL 4(SP), DI + XORL 48(SP), DI + XORL 24(SP), DI + ROLL $+1, DI + MOVL DI, 16(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1859775393(R13)(R9*1), R13 + LEAL 1859775393(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 20(SP), R9 - MOVL R9, 84(R8) + MOVL 16(SP), DI + MOVL DI, 80(R8) - // ROUND2(22) + // ROUND2(21) // SHUFFLE - MOVL 24(SP), R9 - XORL 12(SP), R9 - XORL 56(SP), R9 - XORL 32(SP), R9 - ROLL $+1, R9 - MOVL R9, 24(SP) + MOVL 20(SP), DI + XORL 8(SP), DI + XORL 52(SP), DI + XORL 28(SP), DI + ROLL $+1, DI + MOVL DI, 20(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1859775393(R12)(R9*1), R12 + LEAL 1859775393(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 24(SP), R9 - MOVL R9, 88(R8) + MOVL 20(SP), DI + MOVL DI, 84(R8) - // ROUND2(23) + // ROUND2(22) // SHUFFLE - MOVL 28(SP), R9 - XORL 16(SP), R9 - XORL 60(SP), R9 - XORL 36(SP), R9 - ROLL $+1, R9 - MOVL R9, 28(SP) + MOVL 24(SP), DI + XORL 12(SP), DI + XORL 56(SP), DI + XORL 32(SP), DI + ROLL $+1, DI + MOVL DI, 24(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1859775393(R11)(R9*1), R11 + LEAL 1859775393(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 28(SP), R9 - MOVL R9, 92(R8) + MOVL 24(SP), DI + MOVL DI, 88(R8) - // ROUND2(24) + // ROUND2(23) // SHUFFLE - MOVL 32(SP), R9 - XORL 20(SP), R9 - XORL (SP), R9 - XORL 40(SP), R9 - ROLL $+1, R9 - MOVL R9, 32(SP) + MOVL 28(SP), DI + XORL 16(SP), DI + XORL 60(SP), DI + XORL 36(SP), DI + ROLL $+1, DI + MOVL DI, 28(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1859775393(R10)(R9*1), R10 + LEAL 1859775393(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 32(SP), R9 - MOVL R9, 96(R8) + MOVL 28(SP), DI + MOVL DI, 92(R8) - // ROUND2(25) + // ROUND2(24) // SHUFFLE - MOVL 36(SP), R9 - XORL 24(SP), R9 - XORL 4(SP), R9 - XORL 44(SP), R9 - ROLL $+1, R9 - MOVL R9, 36(SP) + MOVL 32(SP), DI + XORL 20(SP), DI + XORL (SP), DI + XORL 40(SP), DI + ROLL $+1, DI + MOVL DI, 32(SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1859775393(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1859775393(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 36(SP), R9 - MOVL R9, 100(R8) + MOVL 32(SP), DI + MOVL DI, 96(R8) - // ROUND2(26) + // ROUND2(25) // SHUFFLE - MOVL 40(SP), R9 - XORL 28(SP), R9 - XORL 8(SP), R9 - XORL 48(SP), R9 - ROLL $+1, R9 - MOVL R9, 40(SP) + MOVL 36(SP), DI + XORL 24(SP), DI + XORL 4(SP), DI + XORL 44(SP), DI + ROLL $+1, DI + MOVL DI, 36(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1859775393(R13)(R9*1), R13 + LEAL 1859775393(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 40(SP), R9 - MOVL R9, 104(R8) + MOVL 36(SP), DI + MOVL DI, 100(R8) - // ROUND2(27) + // ROUND2(26) // SHUFFLE - MOVL 44(SP), R9 - XORL 32(SP), R9 - XORL 12(SP), R9 - XORL 52(SP), R9 - ROLL $+1, R9 - MOVL R9, 44(SP) + MOVL 40(SP), DI + XORL 28(SP), DI + XORL 8(SP), DI + XORL 48(SP), DI + ROLL $+1, DI + MOVL DI, 40(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1859775393(R12)(R9*1), R12 + LEAL 1859775393(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 44(SP), R9 - MOVL R9, 108(R8) + MOVL 40(SP), DI + MOVL DI, 104(R8) - // ROUND2(28) + // ROUND2(27) // SHUFFLE - MOVL 48(SP), R9 - XORL 36(SP), R9 - XORL 16(SP), R9 - XORL 56(SP), R9 - ROLL $+1, R9 - MOVL R9, 48(SP) + MOVL 44(SP), DI + XORL 32(SP), DI + XORL 12(SP), DI + XORL 52(SP), DI + ROLL $+1, DI + MOVL DI, 44(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1859775393(R11)(R9*1), R11 + LEAL 1859775393(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 48(SP), R9 - MOVL R9, 112(R8) + MOVL 44(SP), DI + MOVL DI, 108(R8) - // ROUND2(29) + // ROUND2(28) // SHUFFLE - MOVL 52(SP), R9 - XORL 40(SP), R9 - XORL 20(SP), R9 - XORL 60(SP), R9 - ROLL $+1, R9 - MOVL R9, 52(SP) + MOVL 48(SP), DI + XORL 36(SP), DI + XORL 16(SP), DI + XORL 56(SP), DI + ROLL $+1, DI + MOVL DI, 48(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1859775393(R10)(R9*1), R10 + LEAL 1859775393(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 52(SP), R9 - MOVL R9, 116(R8) + MOVL 48(SP), DI + MOVL DI, 112(R8) - // ROUND2(30) + // ROUND2(29) // SHUFFLE - MOVL 56(SP), R9 - XORL 44(SP), R9 - XORL 24(SP), R9 - XORL (SP), R9 - ROLL $+1, R9 - MOVL R9, 56(SP) + MOVL 52(SP), DI + XORL 40(SP), DI + XORL 20(SP), DI + XORL 60(SP), DI + ROLL $+1, DI + MOVL DI, 52(SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1859775393(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1859775393(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 56(SP), R9 - MOVL R9, 120(R8) + MOVL 52(SP), DI + MOVL DI, 116(R8) - // ROUND2(31) + // ROUND2(30) // SHUFFLE - MOVL 60(SP), R9 - XORL 48(SP), R9 - XORL 28(SP), R9 - XORL 4(SP), R9 - ROLL $+1, R9 - MOVL R9, 60(SP) + MOVL 56(SP), DI + XORL 44(SP), DI + XORL 24(SP), DI + XORL (SP), DI + ROLL $+1, DI + MOVL DI, 56(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1859775393(R13)(R9*1), R13 + LEAL 1859775393(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 60(SP), R9 - MOVL R9, 124(R8) + MOVL 56(SP), DI + MOVL DI, 120(R8) - // ROUND2(32) + // ROUND2(31) // SHUFFLE - MOVL (SP), R9 - XORL 52(SP), R9 - XORL 32(SP), R9 - XORL 8(SP), R9 - ROLL $+1, R9 - MOVL R9, (SP) + MOVL 60(SP), DI + XORL 48(SP), DI + XORL 28(SP), DI + XORL 4(SP), DI + ROLL $+1, DI + MOVL DI, 60(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1859775393(R12)(R9*1), R12 + LEAL 1859775393(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL (SP), R9 - MOVL R9, 128(R8) + MOVL 60(SP), DI + MOVL DI, 124(R8) - // ROUND2(33) + // ROUND2(32) // SHUFFLE - MOVL 4(SP), R9 - XORL 56(SP), R9 - XORL 36(SP), R9 - XORL 12(SP), R9 - ROLL $+1, R9 - MOVL R9, 4(SP) + MOVL (SP), DI + XORL 52(SP), DI + XORL 32(SP), DI + XORL 8(SP), DI + ROLL $+1, DI + MOVL DI, (SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1859775393(R11)(R9*1), R11 + LEAL 1859775393(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 4(SP), R9 - MOVL R9, 132(R8) + MOVL (SP), DI + MOVL DI, 128(R8) - // ROUND2(34) + // ROUND2(33) // SHUFFLE - MOVL 8(SP), R9 - XORL 60(SP), R9 - XORL 40(SP), R9 - XORL 16(SP), R9 - ROLL $+1, R9 - MOVL R9, 8(SP) + MOVL 4(SP), DI + XORL 56(SP), DI + XORL 36(SP), DI + XORL 12(SP), DI + ROLL $+1, DI + MOVL DI, 4(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1859775393(R10)(R9*1), R10 + LEAL 1859775393(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 8(SP), R9 - MOVL R9, 136(R8) + MOVL 4(SP), DI + MOVL DI, 132(R8) - // ROUND2(35) + // ROUND2(34) // SHUFFLE - MOVL 12(SP), R9 - XORL (SP), R9 - XORL 44(SP), R9 - XORL 20(SP), R9 - ROLL $+1, R9 - MOVL R9, 12(SP) + MOVL 8(SP), DI + XORL 60(SP), DI + XORL 40(SP), DI + XORL 16(SP), DI + ROLL $+1, DI + MOVL DI, 8(SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 1859775393(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1859775393(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 12(SP), R9 - MOVL R9, 140(R8) + MOVL 8(SP), DI + MOVL DI, 136(R8) - // ROUND2(36) + // ROUND2(35) // SHUFFLE - MOVL 16(SP), R9 - XORL 4(SP), R9 - XORL 48(SP), R9 - XORL 24(SP), R9 - ROLL $+1, R9 - MOVL R9, 16(SP) + MOVL 12(SP), DI + XORL (SP), DI + XORL 44(SP), DI + XORL 20(SP), DI + ROLL $+1, DI + MOVL DI, 12(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 1859775393(R13)(R9*1), R13 + LEAL 1859775393(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 16(SP), R9 - MOVL R9, 144(R8) + MOVL 12(SP), DI + MOVL DI, 140(R8) - // ROUND2(37) + // ROUND2(36) // SHUFFLE - MOVL 20(SP), R9 - XORL 8(SP), R9 - XORL 52(SP), R9 - XORL 28(SP), R9 - ROLL $+1, R9 - MOVL R9, 20(SP) + MOVL 16(SP), DI + XORL 4(SP), DI + XORL 48(SP), DI + XORL 24(SP), DI + ROLL $+1, DI + MOVL DI, 16(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 1859775393(R12)(R9*1), R12 + LEAL 1859775393(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 20(SP), R9 - MOVL R9, 148(R8) + MOVL 16(SP), DI + MOVL DI, 144(R8) - // ROUND2(38) + // ROUND2(37) // SHUFFLE - MOVL 24(SP), R9 - XORL 12(SP), R9 - XORL 56(SP), R9 - XORL 32(SP), R9 - ROLL $+1, R9 - MOVL R9, 24(SP) + MOVL 20(SP), DI + XORL 8(SP), DI + XORL 52(SP), DI + XORL 28(SP), DI + ROLL $+1, DI + MOVL DI, 20(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 1859775393(R11)(R9*1), R11 + LEAL 1859775393(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 24(SP), R9 - MOVL R9, 152(R8) + MOVL 20(SP), DI + MOVL DI, 148(R8) - // ROUND2(39) + // ROUND2(38) // SHUFFLE - MOVL 28(SP), R9 - XORL 16(SP), R9 - XORL 60(SP), R9 - XORL 36(SP), R9 - ROLL $+1, R9 - MOVL R9, 28(SP) + MOVL 24(SP), DI + XORL 12(SP), DI + XORL 56(SP), DI + XORL 32(SP), DI + ROLL $+1, DI + MOVL DI, 24(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 1859775393(R10)(R9*1), R10 + LEAL 1859775393(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 28(SP), R9 - MOVL R9, 156(R8) + MOVL 24(SP), DI + MOVL DI, 152(R8) - // ROUND3 (steps 40-59) - // ROUND3(40) + // ROUND2(39) // SHUFFLE - MOVL 32(SP), R9 - XORL 20(SP), R9 - XORL (SP), R9 - XORL 40(SP), R9 - ROLL $+1, R9 - MOVL R9, 32(SP) + MOVL 28(SP), DI + XORL 16(SP), DI + XORL 60(SP), DI + XORL 36(SP), DI + ROLL $+1, DI + MOVL DI, 28(SP) - // FUNC3 - MOVL R11, R8 - ORL R12, R8 - ANDL R13, R8 - MOVL R11, R15 - ANDL R12, R15 - ORL R8, R15 + // FUNC2 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 2400959708(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 1859775393(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 32(SP), R9 - MOVL R9, 160(R8) + MOVL 28(SP), DI + MOVL DI, 156(R8) - // ROUND3(41) + // ROUND3 (steps 40-59) + // ROUND3(40) // SHUFFLE - MOVL 36(SP), R9 - XORL 24(SP), R9 - XORL 4(SP), R9 - XORL 44(SP), R9 - ROLL $+1, R9 - MOVL R9, 36(SP) + MOVL 32(SP), DI + XORL 20(SP), DI + XORL (SP), DI + XORL 40(SP), DI + ROLL $+1, DI + MOVL DI, 32(SP) // FUNC3 MOVL R10, R8 ORL R11, R8 ANDL R12, R8 - MOVL R10, R15 - ANDL R11, R15 - ORL R8, R15 + MOVL R10, R14 + ANDL R11, R14 + ORL R8, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 2400959708(R13)(R9*1), R13 + LEAL 2400959708(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 36(SP), R9 - MOVL R9, 164(R8) + MOVL 32(SP), DI + MOVL DI, 160(R8) - // ROUND3(42) + // ROUND3(41) // SHUFFLE - MOVL 40(SP), R9 - XORL 28(SP), R9 - XORL 8(SP), R9 - XORL 48(SP), R9 - ROLL $+1, R9 - MOVL R9, 40(SP) + MOVL 36(SP), DI + XORL 24(SP), DI + XORL 4(SP), DI + XORL 44(SP), DI + ROLL $+1, DI + MOVL DI, 36(SP) // FUNC3 - MOVL R14, R8 + MOVL R9, R8 ORL R10, R8 ANDL R11, R8 - MOVL R14, R15 - ANDL R10, R15 - ORL R8, R15 + MOVL R9, R14 + ANDL R10, R14 + ORL R8, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 2400959708(R12)(R9*1), R12 + LEAL 2400959708(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 40(SP), R9 - MOVL R9, 168(R8) + MOVL 36(SP), DI + MOVL DI, 164(R8) - // ROUND3(43) + // ROUND3(42) // SHUFFLE - MOVL 44(SP), R9 - XORL 32(SP), R9 - XORL 12(SP), R9 - XORL 52(SP), R9 - ROLL $+1, R9 - MOVL R9, 44(SP) + MOVL 40(SP), DI + XORL 28(SP), DI + XORL 8(SP), DI + XORL 48(SP), DI + ROLL $+1, DI + MOVL DI, 40(SP) // FUNC3 MOVL R13, R8 - ORL R14, R8 + ORL R9, R8 ANDL R10, R8 - MOVL R13, R15 - ANDL R14, R15 - ORL R8, R15 + MOVL R13, R14 + ANDL R9, R14 + ORL R8, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 2400959708(R11)(R9*1), R11 + LEAL 2400959708(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 44(SP), R9 - MOVL R9, 172(R8) + MOVL 40(SP), DI + MOVL DI, 168(R8) - // ROUND3(44) + // ROUND3(43) // SHUFFLE - MOVL 48(SP), R9 - XORL 36(SP), R9 - XORL 16(SP), R9 - XORL 56(SP), R9 - ROLL $+1, R9 - MOVL R9, 48(SP) + MOVL 44(SP), DI + XORL 32(SP), DI + XORL 12(SP), DI + XORL 52(SP), DI + ROLL $+1, DI + MOVL DI, 44(SP) // FUNC3 MOVL R12, R8 ORL R13, R8 - ANDL R14, R8 - MOVL R12, R15 - ANDL R13, R15 - ORL R8, R15 + ANDL R9, R8 + MOVL R12, R14 + ANDL R13, R14 + ORL R8, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 2400959708(R10)(R9*1), R10 + LEAL 2400959708(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 48(SP), R9 - MOVL R9, 176(R8) + MOVL 44(SP), DI + MOVL DI, 172(R8) - // ROUND3(45) + // ROUND3(44) // SHUFFLE - MOVL 52(SP), R9 - XORL 40(SP), R9 - XORL 20(SP), R9 - XORL 60(SP), R9 - ROLL $+1, R9 - MOVL R9, 52(SP) + MOVL 48(SP), DI + XORL 36(SP), DI + XORL 16(SP), DI + XORL 56(SP), DI + ROLL $+1, DI + MOVL DI, 48(SP) // FUNC3 MOVL R11, R8 ORL R12, R8 ANDL R13, R8 - MOVL R11, R15 - ANDL R12, R15 - ORL R8, R15 + MOVL R11, R14 + ANDL R12, R14 + ORL R8, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 2400959708(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 2400959708(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 52(SP), R9 - MOVL R9, 180(R8) + MOVL 48(SP), DI + MOVL DI, 176(R8) - // ROUND3(46) + // ROUND3(45) // SHUFFLE - MOVL 56(SP), R9 - XORL 44(SP), R9 - XORL 24(SP), R9 - XORL (SP), R9 - ROLL $+1, R9 - MOVL R9, 56(SP) + MOVL 52(SP), DI + XORL 40(SP), DI + XORL 20(SP), DI + XORL 60(SP), DI + ROLL $+1, DI + MOVL DI, 52(SP) // FUNC3 MOVL R10, R8 ORL R11, R8 ANDL R12, R8 - MOVL R10, R15 - ANDL R11, R15 - ORL R8, R15 + MOVL R10, R14 + ANDL R11, R14 + ORL R8, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 2400959708(R13)(R9*1), R13 + LEAL 2400959708(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 56(SP), R9 - MOVL R9, 184(R8) + MOVL 52(SP), DI + MOVL DI, 180(R8) - // ROUND3(47) + // ROUND3(46) // SHUFFLE - MOVL 60(SP), R9 - XORL 48(SP), R9 - XORL 28(SP), R9 - XORL 4(SP), R9 - ROLL $+1, R9 - MOVL R9, 60(SP) + MOVL 56(SP), DI + XORL 44(SP), DI + XORL 24(SP), DI + XORL (SP), DI + ROLL $+1, DI + MOVL DI, 56(SP) // FUNC3 - MOVL R14, R8 + MOVL R9, R8 ORL R10, R8 ANDL R11, R8 - MOVL R14, R15 - ANDL R10, R15 - ORL R8, R15 + MOVL R9, R14 + ANDL R10, R14 + ORL R8, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 2400959708(R12)(R9*1), R12 + LEAL 2400959708(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 60(SP), R9 - MOVL R9, 188(R8) + MOVL 56(SP), DI + MOVL DI, 184(R8) - // ROUND3(48) + // ROUND3(47) // SHUFFLE - MOVL (SP), R9 - XORL 52(SP), R9 - XORL 32(SP), R9 - XORL 8(SP), R9 - ROLL $+1, R9 - MOVL R9, (SP) + MOVL 60(SP), DI + XORL 48(SP), DI + XORL 28(SP), DI + XORL 4(SP), DI + ROLL $+1, DI + MOVL DI, 60(SP) // FUNC3 MOVL R13, R8 - ORL R14, R8 + ORL R9, R8 ANDL R10, R8 - MOVL R13, R15 - ANDL R14, R15 - ORL R8, R15 + MOVL R13, R14 + ANDL R9, R14 + ORL R8, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 2400959708(R11)(R9*1), R11 + LEAL 2400959708(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL (SP), R9 - MOVL R9, 192(R8) + MOVL 60(SP), DI + MOVL DI, 188(R8) - // ROUND3(49) + // ROUND3(48) // SHUFFLE - MOVL 4(SP), R9 - XORL 56(SP), R9 - XORL 36(SP), R9 - XORL 12(SP), R9 - ROLL $+1, R9 - MOVL R9, 4(SP) + MOVL (SP), DI + XORL 52(SP), DI + XORL 32(SP), DI + XORL 8(SP), DI + ROLL $+1, DI + MOVL DI, (SP) // FUNC3 MOVL R12, R8 ORL R13, R8 - ANDL R14, R8 - MOVL R12, R15 - ANDL R13, R15 - ORL R8, R15 + ANDL R9, R8 + MOVL R12, R14 + ANDL R13, R14 + ORL R8, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 2400959708(R10)(R9*1), R10 + LEAL 2400959708(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 4(SP), R9 - MOVL R9, 196(R8) + MOVL (SP), DI + MOVL DI, 192(R8) - // ROUND3(50) + // ROUND3(49) // SHUFFLE - MOVL 8(SP), R9 - XORL 60(SP), R9 - XORL 40(SP), R9 - XORL 16(SP), R9 - ROLL $+1, R9 - MOVL R9, 8(SP) + MOVL 4(SP), DI + XORL 56(SP), DI + XORL 36(SP), DI + XORL 12(SP), DI + ROLL $+1, DI + MOVL DI, 4(SP) // FUNC3 MOVL R11, R8 ORL R12, R8 ANDL R13, R8 - MOVL R11, R15 - ANDL R12, R15 - ORL R8, R15 + MOVL R11, R14 + ANDL R12, R14 + ORL R8, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 2400959708(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 2400959708(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 8(SP), R9 - MOVL R9, 200(R8) + MOVL 4(SP), DI + MOVL DI, 196(R8) - // ROUND3(51) + // ROUND3(50) // SHUFFLE - MOVL 12(SP), R9 - XORL (SP), R9 - XORL 44(SP), R9 - XORL 20(SP), R9 - ROLL $+1, R9 - MOVL R9, 12(SP) + MOVL 8(SP), DI + XORL 60(SP), DI + XORL 40(SP), DI + XORL 16(SP), DI + ROLL $+1, DI + MOVL DI, 8(SP) // FUNC3 MOVL R10, R8 ORL R11, R8 ANDL R12, R8 - MOVL R10, R15 - ANDL R11, R15 - ORL R8, R15 + MOVL R10, R14 + ANDL R11, R14 + ORL R8, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 2400959708(R13)(R9*1), R13 + LEAL 2400959708(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 12(SP), R9 - MOVL R9, 204(R8) + MOVL 8(SP), DI + MOVL DI, 200(R8) - // ROUND3(52) + // ROUND3(51) // SHUFFLE - MOVL 16(SP), R9 - XORL 4(SP), R9 - XORL 48(SP), R9 - XORL 24(SP), R9 - ROLL $+1, R9 - MOVL R9, 16(SP) + MOVL 12(SP), DI + XORL (SP), DI + XORL 44(SP), DI + XORL 20(SP), DI + ROLL $+1, DI + MOVL DI, 12(SP) // FUNC3 - MOVL R14, R8 + MOVL R9, R8 ORL R10, R8 ANDL R11, R8 - MOVL R14, R15 - ANDL R10, R15 - ORL R8, R15 + MOVL R9, R14 + ANDL R10, R14 + ORL R8, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 2400959708(R12)(R9*1), R12 + LEAL 2400959708(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 16(SP), R9 - MOVL R9, 208(R8) + MOVL 12(SP), DI + MOVL DI, 204(R8) - // ROUND3(53) + // ROUND3(52) // SHUFFLE - MOVL 20(SP), R9 - XORL 8(SP), R9 - XORL 52(SP), R9 - XORL 28(SP), R9 - ROLL $+1, R9 - MOVL R9, 20(SP) + MOVL 16(SP), DI + XORL 4(SP), DI + XORL 48(SP), DI + XORL 24(SP), DI + ROLL $+1, DI + MOVL DI, 16(SP) // FUNC3 MOVL R13, R8 - ORL R14, R8 + ORL R9, R8 ANDL R10, R8 - MOVL R13, R15 - ANDL R14, R15 - ORL R8, R15 + MOVL R13, R14 + ANDL R9, R14 + ORL R8, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 2400959708(R11)(R9*1), R11 + LEAL 2400959708(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 20(SP), R9 - MOVL R9, 212(R8) + MOVL 16(SP), DI + MOVL DI, 208(R8) - // ROUND3(54) + // ROUND3(53) // SHUFFLE - MOVL 24(SP), R9 - XORL 12(SP), R9 - XORL 56(SP), R9 - XORL 32(SP), R9 - ROLL $+1, R9 - MOVL R9, 24(SP) + MOVL 20(SP), DI + XORL 8(SP), DI + XORL 52(SP), DI + XORL 28(SP), DI + ROLL $+1, DI + MOVL DI, 20(SP) // FUNC3 MOVL R12, R8 ORL R13, R8 - ANDL R14, R8 - MOVL R12, R15 - ANDL R13, R15 - ORL R8, R15 + ANDL R9, R8 + MOVL R12, R14 + ANDL R13, R14 + ORL R8, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 2400959708(R10)(R9*1), R10 + LEAL 2400959708(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 24(SP), R9 - MOVL R9, 216(R8) + MOVL 20(SP), DI + MOVL DI, 212(R8) - // ROUND3(55) + // ROUND3(54) // SHUFFLE - MOVL 28(SP), R9 - XORL 16(SP), R9 - XORL 60(SP), R9 - XORL 36(SP), R9 - ROLL $+1, R9 - MOVL R9, 28(SP) + MOVL 24(SP), DI + XORL 12(SP), DI + XORL 56(SP), DI + XORL 32(SP), DI + ROLL $+1, DI + MOVL DI, 24(SP) // FUNC3 MOVL R11, R8 ORL R12, R8 ANDL R13, R8 - MOVL R11, R15 - ANDL R12, R15 - ORL R8, R15 + MOVL R11, R14 + ANDL R12, R14 + ORL R8, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 2400959708(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 2400959708(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 28(SP), R9 - MOVL R9, 220(R8) + MOVL 24(SP), DI + MOVL DI, 216(R8) - // ROUND3(56) + // ROUND3(55) // SHUFFLE - MOVL 32(SP), R9 - XORL 20(SP), R9 - XORL (SP), R9 - XORL 40(SP), R9 - ROLL $+1, R9 - MOVL R9, 32(SP) + MOVL 28(SP), DI + XORL 16(SP), DI + XORL 60(SP), DI + XORL 36(SP), DI + ROLL $+1, DI + MOVL DI, 28(SP) // FUNC3 MOVL R10, R8 ORL R11, R8 ANDL R12, R8 - MOVL R10, R15 - ANDL R11, R15 - ORL R8, R15 + MOVL R10, R14 + ANDL R11, R14 + ORL R8, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 2400959708(R13)(R9*1), R13 + LEAL 2400959708(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 32(SP), R9 - MOVL R9, 224(R8) + MOVL 28(SP), DI + MOVL DI, 220(R8) - // ROUND3(57) + // ROUND3(56) // SHUFFLE - MOVL 36(SP), R9 - XORL 24(SP), R9 - XORL 4(SP), R9 - XORL 44(SP), R9 - ROLL $+1, R9 - MOVL R9, 36(SP) + MOVL 32(SP), DI + XORL 20(SP), DI + XORL (SP), DI + XORL 40(SP), DI + ROLL $+1, DI + MOVL DI, 32(SP) // FUNC3 - MOVL R14, R8 + MOVL R9, R8 ORL R10, R8 ANDL R11, R8 - MOVL R14, R15 - ANDL R10, R15 - ORL R8, R15 + MOVL R9, R14 + ANDL R10, R14 + ORL R8, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 2400959708(R12)(R9*1), R12 + LEAL 2400959708(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 36(SP), R9 - MOVL R9, 228(R8) - - // Load cs - MOVQ cs_base+56(FP), R8 - MOVL R12, 20(R8) - MOVL R13, 24(R8) - MOVL R14, 28(R8) - MOVL R10, 32(R8) - MOVL R11, 36(R8) + MOVL 32(SP), DI + MOVL DI, 224(R8) - // ROUND3(58) + // ROUND3(57) // SHUFFLE - MOVL 40(SP), R9 - XORL 28(SP), R9 - XORL 8(SP), R9 - XORL 48(SP), R9 - ROLL $+1, R9 - MOVL R9, 40(SP) + MOVL 36(SP), DI + XORL 24(SP), DI + XORL 4(SP), DI + XORL 44(SP), DI + ROLL $+1, DI + MOVL DI, 36(SP) // FUNC3 MOVL R13, R8 - ORL R14, R8 + ORL R9, R8 ANDL R10, R8 - MOVL R13, R15 - ANDL R14, R15 - ORL R8, R15 + MOVL R13, R14 + ANDL R9, R14 + ORL R8, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 2400959708(R11)(R9*1), R11 + LEAL 2400959708(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 40(SP), R9 - MOVL R9, 232(R8) + MOVL 36(SP), DI + MOVL DI, 228(R8) - // ROUND3(59) + // Load cs + MOVQ cs_base+56(FP), R8 + MOVL R11, 20(R8) + MOVL R12, 24(R8) + MOVL R13, 28(R8) + MOVL R9, 32(R8) + MOVL R10, 36(R8) + + // ROUND3(58) // SHUFFLE - MOVL 44(SP), R9 - XORL 32(SP), R9 - XORL 12(SP), R9 - XORL 52(SP), R9 - ROLL $+1, R9 - MOVL R9, 44(SP) + MOVL 40(SP), DI + XORL 28(SP), DI + XORL 8(SP), DI + XORL 48(SP), DI + ROLL $+1, DI + MOVL DI, 40(SP) // FUNC3 MOVL R12, R8 ORL R13, R8 - ANDL R14, R8 - MOVL R12, R15 - ANDL R13, R15 - ORL R8, R15 + ANDL R9, R8 + MOVL R12, R14 + ANDL R13, R14 + ORL R8, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 2400959708(R10)(R9*1), R10 + LEAL 2400959708(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 44(SP), R9 - MOVL R9, 236(R8) + MOVL 40(SP), DI + MOVL DI, 232(R8) - // ROUND4 (steps 60-79) - // ROUND4(60) + // ROUND3(59) // SHUFFLE - MOVL 48(SP), R9 - XORL 36(SP), R9 - XORL 16(SP), R9 - XORL 56(SP), R9 - ROLL $+1, R9 - MOVL R9, 48(SP) + MOVL 44(SP), DI + XORL 32(SP), DI + XORL 12(SP), DI + XORL 52(SP), DI + ROLL $+1, DI + MOVL DI, 44(SP) - // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + // FUNC3 + MOVL R11, R8 + ORL R12, R8 + ANDL R13, R8 + MOVL R11, R14 + ANDL R12, R14 + ORL R8, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 3395469782(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 2400959708(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 48(SP), R9 - MOVL R9, 240(R8) + MOVL 44(SP), DI + MOVL DI, 236(R8) - // ROUND4(61) + // ROUND4 (steps 60-79) + // ROUND4(60) // SHUFFLE - MOVL 52(SP), R9 - XORL 40(SP), R9 - XORL 20(SP), R9 - XORL 60(SP), R9 - ROLL $+1, R9 - MOVL R9, 52(SP) + MOVL 48(SP), DI + XORL 36(SP), DI + XORL 16(SP), DI + XORL 56(SP), DI + ROLL $+1, DI + MOVL DI, 48(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 3395469782(R13)(R9*1), R13 + LEAL 3395469782(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 52(SP), R9 - MOVL R9, 244(R8) + MOVL 48(SP), DI + MOVL DI, 240(R8) - // ROUND4(62) + // ROUND4(61) // SHUFFLE - MOVL 56(SP), R9 - XORL 44(SP), R9 - XORL 24(SP), R9 - XORL (SP), R9 - ROLL $+1, R9 - MOVL R9, 56(SP) + MOVL 52(SP), DI + XORL 40(SP), DI + XORL 20(SP), DI + XORL 60(SP), DI + ROLL $+1, DI + MOVL DI, 52(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 3395469782(R12)(R9*1), R12 + LEAL 3395469782(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 56(SP), R9 - MOVL R9, 248(R8) + MOVL 52(SP), DI + MOVL DI, 244(R8) - // ROUND4(63) + // ROUND4(62) // SHUFFLE - MOVL 60(SP), R9 - XORL 48(SP), R9 - XORL 28(SP), R9 - XORL 4(SP), R9 - ROLL $+1, R9 - MOVL R9, 60(SP) + MOVL 56(SP), DI + XORL 44(SP), DI + XORL 24(SP), DI + XORL (SP), DI + ROLL $+1, DI + MOVL DI, 56(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 3395469782(R11)(R9*1), R11 + LEAL 3395469782(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 60(SP), R9 - MOVL R9, 252(R8) + MOVL 56(SP), DI + MOVL DI, 248(R8) - // ROUND4(64) + // ROUND4(63) // SHUFFLE - MOVL (SP), R9 - XORL 52(SP), R9 - XORL 32(SP), R9 - XORL 8(SP), R9 - ROLL $+1, R9 - MOVL R9, (SP) + MOVL 60(SP), DI + XORL 48(SP), DI + XORL 28(SP), DI + XORL 4(SP), DI + ROLL $+1, DI + MOVL DI, 60(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 3395469782(R10)(R9*1), R10 + LEAL 3395469782(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL (SP), R9 - MOVL R9, 256(R8) - - // Load cs - MOVQ cs_base+56(FP), R8 - MOVL R10, 40(R8) - MOVL R11, 44(R8) - MOVL R12, 48(R8) - MOVL R13, 52(R8) - MOVL R14, 56(R8) + MOVL 60(SP), DI + MOVL DI, 252(R8) - // ROUND4(65) + // ROUND4(64) // SHUFFLE - MOVL 4(SP), R9 - XORL 56(SP), R9 - XORL 36(SP), R9 - XORL 12(SP), R9 - ROLL $+1, R9 - MOVL R9, 4(SP) + MOVL (SP), DI + XORL 52(SP), DI + XORL 32(SP), DI + XORL 8(SP), DI + ROLL $+1, DI + MOVL DI, (SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 3395469782(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 3395469782(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 4(SP), R9 - MOVL R9, 260(R8) + MOVL (SP), DI + MOVL DI, 256(R8) - // ROUND4(66) + // Load cs + MOVQ cs_base+56(FP), R8 + MOVL R9, 40(R8) + MOVL R10, 44(R8) + MOVL R11, 48(R8) + MOVL R12, 52(R8) + MOVL R13, 56(R8) + + // ROUND4(65) // SHUFFLE - MOVL 8(SP), R9 - XORL 60(SP), R9 - XORL 40(SP), R9 - XORL 16(SP), R9 - ROLL $+1, R9 - MOVL R9, 8(SP) + MOVL 4(SP), DI + XORL 56(SP), DI + XORL 36(SP), DI + XORL 12(SP), DI + ROLL $+1, DI + MOVL DI, 4(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 3395469782(R13)(R9*1), R13 + LEAL 3395469782(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 8(SP), R9 - MOVL R9, 264(R8) + MOVL 4(SP), DI + MOVL DI, 260(R8) - // ROUND4(67) + // ROUND4(66) // SHUFFLE - MOVL 12(SP), R9 - XORL (SP), R9 - XORL 44(SP), R9 - XORL 20(SP), R9 - ROLL $+1, R9 - MOVL R9, 12(SP) + MOVL 8(SP), DI + XORL 60(SP), DI + XORL 40(SP), DI + XORL 16(SP), DI + ROLL $+1, DI + MOVL DI, 8(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 3395469782(R12)(R9*1), R12 + LEAL 3395469782(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 12(SP), R9 - MOVL R9, 268(R8) + MOVL 8(SP), DI + MOVL DI, 264(R8) - // ROUND4(68) + // ROUND4(67) // SHUFFLE - MOVL 16(SP), R9 - XORL 4(SP), R9 - XORL 48(SP), R9 - XORL 24(SP), R9 - ROLL $+1, R9 - MOVL R9, 16(SP) + MOVL 12(SP), DI + XORL (SP), DI + XORL 44(SP), DI + XORL 20(SP), DI + ROLL $+1, DI + MOVL DI, 12(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 3395469782(R11)(R9*1), R11 + LEAL 3395469782(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 16(SP), R9 - MOVL R9, 272(R8) + MOVL 12(SP), DI + MOVL DI, 268(R8) - // ROUND4(69) + // ROUND4(68) // SHUFFLE - MOVL 20(SP), R9 - XORL 8(SP), R9 - XORL 52(SP), R9 - XORL 28(SP), R9 - ROLL $+1, R9 - MOVL R9, 20(SP) + MOVL 16(SP), DI + XORL 4(SP), DI + XORL 48(SP), DI + XORL 24(SP), DI + ROLL $+1, DI + MOVL DI, 16(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 3395469782(R10)(R9*1), R10 + LEAL 3395469782(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 20(SP), R9 - MOVL R9, 276(R8) + MOVL 16(SP), DI + MOVL DI, 272(R8) - // ROUND4(70) + // ROUND4(69) // SHUFFLE - MOVL 24(SP), R9 - XORL 12(SP), R9 - XORL 56(SP), R9 - XORL 32(SP), R9 - ROLL $+1, R9 - MOVL R9, 24(SP) + MOVL 20(SP), DI + XORL 8(SP), DI + XORL 52(SP), DI + XORL 28(SP), DI + ROLL $+1, DI + MOVL DI, 20(SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 3395469782(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 3395469782(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 24(SP), R9 - MOVL R9, 280(R8) + MOVL 20(SP), DI + MOVL DI, 276(R8) - // ROUND4(71) + // ROUND4(70) // SHUFFLE - MOVL 28(SP), R9 - XORL 16(SP), R9 - XORL 60(SP), R9 - XORL 36(SP), R9 - ROLL $+1, R9 - MOVL R9, 28(SP) + MOVL 24(SP), DI + XORL 12(SP), DI + XORL 56(SP), DI + XORL 32(SP), DI + ROLL $+1, DI + MOVL DI, 24(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 3395469782(R13)(R9*1), R13 + LEAL 3395469782(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 28(SP), R9 - MOVL R9, 284(R8) + MOVL 24(SP), DI + MOVL DI, 280(R8) - // ROUND4(72) + // ROUND4(71) // SHUFFLE - MOVL 32(SP), R9 - XORL 20(SP), R9 - XORL (SP), R9 - XORL 40(SP), R9 - ROLL $+1, R9 - MOVL R9, 32(SP) + MOVL 28(SP), DI + XORL 16(SP), DI + XORL 60(SP), DI + XORL 36(SP), DI + ROLL $+1, DI + MOVL DI, 28(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 3395469782(R12)(R9*1), R12 + LEAL 3395469782(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 32(SP), R9 - MOVL R9, 288(R8) + MOVL 28(SP), DI + MOVL DI, 284(R8) - // ROUND4(73) + // ROUND4(72) // SHUFFLE - MOVL 36(SP), R9 - XORL 24(SP), R9 - XORL 4(SP), R9 - XORL 44(SP), R9 - ROLL $+1, R9 - MOVL R9, 36(SP) + MOVL 32(SP), DI + XORL 20(SP), DI + XORL (SP), DI + XORL 40(SP), DI + ROLL $+1, DI + MOVL DI, 32(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 3395469782(R11)(R9*1), R11 + LEAL 3395469782(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 36(SP), R9 - MOVL R9, 292(R8) + MOVL 32(SP), DI + MOVL DI, 288(R8) - // ROUND4(74) + // ROUND4(73) // SHUFFLE - MOVL 40(SP), R9 - XORL 28(SP), R9 - XORL 8(SP), R9 - XORL 48(SP), R9 - ROLL $+1, R9 - MOVL R9, 40(SP) + MOVL 36(SP), DI + XORL 24(SP), DI + XORL 4(SP), DI + XORL 44(SP), DI + ROLL $+1, DI + MOVL DI, 36(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 3395469782(R10)(R9*1), R10 + LEAL 3395469782(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 40(SP), R9 - MOVL R9, 296(R8) + MOVL 36(SP), DI + MOVL DI, 292(R8) - // ROUND4(75) + // ROUND4(74) // SHUFFLE - MOVL 44(SP), R9 - XORL 32(SP), R9 - XORL 12(SP), R9 - XORL 52(SP), R9 - ROLL $+1, R9 - MOVL R9, 44(SP) + MOVL 40(SP), DI + XORL 28(SP), DI + XORL 8(SP), DI + XORL 48(SP), DI + ROLL $+1, DI + MOVL DI, 40(SP) // FUNC2 - MOVL R11, R15 - XORL R12, R15 - XORL R13, R15 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 // MIX ROLL $+30, R11 - ADDL R15, R14 + ADDL R14, R9 MOVL R10, R8 ROLL $+5, R8 - LEAL 3395469782(R14)(R9*1), R14 - ADDL R8, R14 + LEAL 3395469782(R9)(DI*1), R9 + ADDL R8, R9 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 44(SP), R9 - MOVL R9, 300(R8) + MOVL 40(SP), DI + MOVL DI, 296(R8) - // ROUND4(76) + // ROUND4(75) // SHUFFLE - MOVL 48(SP), R9 - XORL 36(SP), R9 - XORL 16(SP), R9 - XORL 56(SP), R9 - ROLL $+1, R9 - MOVL R9, 48(SP) + MOVL 44(SP), DI + XORL 32(SP), DI + XORL 12(SP), DI + XORL 52(SP), DI + ROLL $+1, DI + MOVL DI, 44(SP) // FUNC2 - MOVL R10, R15 - XORL R11, R15 - XORL R12, R15 + MOVL R10, R14 + XORL R11, R14 + XORL R12, R14 // MIX ROLL $+30, R10 - ADDL R15, R13 - MOVL R14, R8 + ADDL R14, R13 + MOVL R9, R8 ROLL $+5, R8 - LEAL 3395469782(R13)(R9*1), R13 + LEAL 3395469782(R13)(DI*1), R13 ADDL R8, R13 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 48(SP), R9 - MOVL R9, 304(R8) + MOVL 44(SP), DI + MOVL DI, 300(R8) - // ROUND4(77) + // ROUND4(76) // SHUFFLE - MOVL 52(SP), R9 - XORL 40(SP), R9 - XORL 20(SP), R9 - XORL 60(SP), R9 - ROLL $+1, R9 - MOVL R9, 52(SP) + MOVL 48(SP), DI + XORL 36(SP), DI + XORL 16(SP), DI + XORL 56(SP), DI + ROLL $+1, DI + MOVL DI, 48(SP) // FUNC2 - MOVL R14, R15 - XORL R10, R15 - XORL R11, R15 + MOVL R9, R14 + XORL R10, R14 + XORL R11, R14 // MIX - ROLL $+30, R14 - ADDL R15, R12 + ROLL $+30, R9 + ADDL R14, R12 MOVL R13, R8 ROLL $+5, R8 - LEAL 3395469782(R12)(R9*1), R12 + LEAL 3395469782(R12)(DI*1), R12 ADDL R8, R12 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 52(SP), R9 - MOVL R9, 308(R8) + MOVL 48(SP), DI + MOVL DI, 304(R8) - // ROUND4(78) + // ROUND4(77) // SHUFFLE - MOVL 56(SP), R9 - XORL 44(SP), R9 - XORL 24(SP), R9 - XORL (SP), R9 - ROLL $+1, R9 - MOVL R9, 56(SP) + MOVL 52(SP), DI + XORL 40(SP), DI + XORL 20(SP), DI + XORL 60(SP), DI + ROLL $+1, DI + MOVL DI, 52(SP) // FUNC2 - MOVL R13, R15 - XORL R14, R15 - XORL R10, R15 + MOVL R13, R14 + XORL R9, R14 + XORL R10, R14 // MIX ROLL $+30, R13 - ADDL R15, R11 + ADDL R14, R11 MOVL R12, R8 ROLL $+5, R8 - LEAL 3395469782(R11)(R9*1), R11 + LEAL 3395469782(R11)(DI*1), R11 ADDL R8, R11 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 56(SP), R9 - MOVL R9, 312(R8) + MOVL 52(SP), DI + MOVL DI, 308(R8) - // ROUND4(79) + // ROUND4(78) // SHUFFLE - MOVL 60(SP), R9 - XORL 48(SP), R9 - XORL 28(SP), R9 - XORL 4(SP), R9 - ROLL $+1, R9 - MOVL R9, 60(SP) + MOVL 56(SP), DI + XORL 44(SP), DI + XORL 24(SP), DI + XORL (SP), DI + ROLL $+1, DI + MOVL DI, 56(SP) // FUNC2 - MOVL R12, R15 - XORL R13, R15 - XORL R14, R15 + MOVL R12, R14 + XORL R13, R14 + XORL R9, R14 // MIX ROLL $+30, R12 - ADDL R15, R10 + ADDL R14, R10 MOVL R11, R8 ROLL $+5, R8 - LEAL 3395469782(R10)(R9*1), R10 + LEAL 3395469782(R10)(DI*1), R10 ADDL R8, R10 // Load m1 MOVQ m1_base+32(FP), R8 - MOVL 60(SP), R9 - MOVL R9, 316(R8) + MOVL 56(SP), DI + MOVL DI, 312(R8) + + // ROUND4(79) + // SHUFFLE + MOVL 60(SP), DI + XORL 48(SP), DI + XORL 28(SP), DI + XORL 4(SP), DI + ROLL $+1, DI + MOVL DI, 60(SP) + + // FUNC2 + MOVL R11, R14 + XORL R12, R14 + XORL R13, R14 + + // MIX + ROLL $+30, R11 + ADDL R14, R9 + MOVL R10, R8 + ROLL $+5, R8 + LEAL 3395469782(R9)(DI*1), R9 + ADDL R8, R9 + + // Load m1 + MOVQ m1_base+32(FP), R8 + MOVL 60(SP), DI + MOVL DI, 316(R8) // Add registers to temp hash. - ADDL R10, AX - ADDL R11, BX - ADDL R12, CX - ADDL R13, DX - ADDL R14, BP - ADDQ $+64, DI - CMPQ DI, SI + ADDL R9, AX + ADDL R10, BX + ADDL R11, CX + ADDL R12, DX + ADDL R13, BP + ADDQ $+64, SI JB loop end: - MOVQ dig+0(FP), SI - MOVL AX, (SI) - MOVL BX, 4(SI) - MOVL CX, 8(SI) - MOVL DX, 12(SI) - MOVL BP, 16(SI) + MOVQ dig+0(FP), DI + MOVL AX, (DI) + MOVL BX, 4(DI) + MOVL CX, 8(DI) + MOVL DX, 12(DI) + MOVL BP, 16(DI) RET diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.go b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.go new file mode 100644 index 000000000..f1edca0b5 --- /dev/null +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.go @@ -0,0 +1,44 @@ +//go:build !noasm && gc && arm64 && !amd64 +// +build !noasm,gc,arm64,!amd64 + +package sha1cd + +import ( + "math" + "unsafe" + + shared "github.com/pjbgf/sha1cd/internal" +) + +// blockARM64 hashes the message p into the current state in dig. +// Both m1 and cs are used to store intermediate results which are used by the collision detection logic. +// +//go:noescape +func blockARM64(dig *digest, p sliceHeader, m1 []uint32, cs [][5]uint32) + +func block(dig *digest, p []byte) { + m1 := [shared.Rounds]uint32{} + cs := [shared.PreStepState][shared.WordBuffers]uint32{} + + for len(p) >= shared.Chunk { + // Only send a block to be processed, as the collission detection + // works on a block by block basis. + ips := sliceHeader{ + base: uintptr(unsafe.Pointer(&p[0])), + len: int(math.Min(float64(len(p)), float64(shared.Chunk))), + cap: shared.Chunk, + } + + blockARM64(dig, ips, m1[:], cs[:]) + + col := checkCollision(m1, cs, dig.h) + if col { + dig.col = true + + blockARM64(dig, ips, m1[:], cs[:]) + blockARM64(dig, ips, m1[:], cs[:]) + } + + p = p[shared.Chunk:] + } +} diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.s b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.s new file mode 100644 index 000000000..680d46df9 --- /dev/null +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_arm64.s @@ -0,0 +1,244 @@ +//go:build !noasm && gc && arm64 && !amd64 + +#include "textflag.h" + +#define RoundConst0 $1518500249 // 0x5A827999 +#define RoundConst1 $1859775393 // 0x6ED9EBA1 +#define RoundConst2 $2400959708 // 0x8F1BBCDC +#define RoundConst3 $3395469782 // 0xCA62C1D6 + +// FUNC1 f = (b & c) | ((~b) & d) +#define FUNC1(b, c, d) \ + MOVW d, R15; \ + EORW c, R15; \ + ANDW b, R15; \ + EORW d, R15 + +// FUNC2 f = b ^ c ^ d +#define FUNC2(b, c, d) \ + MOVW b, R15; \ + EORW c, R15; \ + EORW d, R15 + +// FUNC3 f = (b & c) | (b & d) | (c & d) +#define FUNC3(b, c, d) \ + MOVW b, R27; \ + ORR c, R27, R27; \ + ANDW d, R27, R27; \ + MOVW b, R15; \ + ANDW c, R15, R15; \ + ORR R27, R15, R15 + +#define FUNC4(b, c, d) FUNC2(b, c, d) + +#define MIX(a, b, c, d, e, k) \ + RORW $2, b, b; \ + ADDW R15, e, e; \ + MOVW a, R27; \ + RORW $27, R27, R27; \ + MOVW k, R19; \ + ADDW R19, e, e; \ + ADDW R9, e, e; \ + ADDW R27, e, e + +#define LOAD(index) \ + MOVWU (index*4)(R16), R9; \ + REVW R9, R9; \ + MOVW R9, (index*4)(RSP) + +#define LOADCS(a, b, c, d, e, index) \ + MOVD cs_base+56(FP), R27; \ + MOVW a, ((index*20))(R27); \ + MOVW b, ((index*20)+4)(R27); \ + MOVW c, ((index*20)+8)(R27); \ + MOVW d, ((index*20)+12)(R27); \ + MOVW e, ((index*20)+16)(R27) + +#define SHUFFLE(index) \ + MOVW ((index&0xf)*4)(RSP), R9; \ + MOVW (((index-3)&0xf)*4)(RSP), R20; \ + EORW R20, R9; \ + MOVW (((index-8)&0xf)*4)(RSP), R20; \ + EORW R20, R9; \ + MOVW (((index-14)&0xf)*4)(RSP), R20; \ + EORW R20, R9; \ + RORW $31, R9, R9; \ + MOVW R9, ((index&0xf)*4)(RSP) + +// LOADM1 stores message word to m1 array. +#define LOADM1(index) \ + MOVD m1_base+32(FP), R27; \ + MOVW ((index&0xf)*4)(RSP), R9; \ + MOVW R9, (index*4)(R27) + +#define ROUND1(a, b, c, d, e, index) \ + LOAD(index); \ + FUNC1(b, c, d); \ + MIX(a, b, c, d, e, RoundConst0); \ + LOADM1(index) + +#define ROUND1x(a, b, c, d, e, index) \ + SHUFFLE(index); \ + FUNC1(b, c, d); \ + MIX(a, b, c, d, e, RoundConst0); \ + LOADM1(index) + +#define ROUND2(a, b, c, d, e, index) \ + SHUFFLE(index); \ + FUNC2(b, c, d); \ + MIX(a, b, c, d, e, RoundConst1); \ + LOADM1(index) + +#define ROUND3(a, b, c, d, e, index) \ + SHUFFLE(index); \ + FUNC3(b, c, d); \ + MIX(a, b, c, d, e, RoundConst2); \ + LOADM1(index) + +#define ROUND4(a, b, c, d, e, index) \ + SHUFFLE(index); \ + FUNC4(b, c, d); \ + MIX(a, b, c, d, e, RoundConst3); \ + LOADM1(index) + +// func blockARM64(dig *digest, p []byte, m1 []uint32, cs [][5]uint32) +TEXT ·blockARM64(SB), NOSPLIT, $64-80 + MOVD dig+0(FP), R8 + MOVD p_base+8(FP), R16 + MOVD p_len+16(FP), R10 + + LSR $6, R10, R10 + LSL $6, R10, R10 + ADD R16, R10, R21 + + // Load h0-h4 into R1–R5. + MOVW (R8), R1 // R1 = h0 + MOVW 4(R8), R2 // R2 = h1 + MOVW 8(R8), R3 // R3 = h2 + MOVW 12(R8), R4 // R4 = h3 + MOVW 16(R8), R5 // R5 = h4 + +loop: + // len(p) >= chunk + CMP R16, R21 + BLS end + + // Initialize registers a, b, c, d, e. + MOVW R1, R10 + MOVW R2, R11 + MOVW R3, R12 + MOVW R4, R13 + MOVW R5, R14 + + // ROUND1 (steps 0-15) + LOADCS(R10, R11, R12, R13, R14, 0) + ROUND1(R10, R11, R12, R13, R14, 0) + ROUND1(R14, R10, R11, R12, R13, 1) + ROUND1(R13, R14, R10, R11, R12, 2) + ROUND1(R12, R13, R14, R10, R11, 3) + ROUND1(R11, R12, R13, R14, R10, 4) + ROUND1(R10, R11, R12, R13, R14, 5) + ROUND1(R14, R10, R11, R12, R13, 6) + ROUND1(R13, R14, R10, R11, R12, 7) + ROUND1(R12, R13, R14, R10, R11, 8) + ROUND1(R11, R12, R13, R14, R10, 9) + ROUND1(R10, R11, R12, R13, R14, 10) + ROUND1(R14, R10, R11, R12, R13, 11) + ROUND1(R13, R14, R10, R11, R12, 12) + ROUND1(R12, R13, R14, R10, R11, 13) + ROUND1(R11, R12, R13, R14, R10, 14) + ROUND1(R10, R11, R12, R13, R14, 15) + + // ROUND1x (steps 16-19) - same as ROUND1 but with no data load. + ROUND1x(R14, R10, R11, R12, R13, 16) + ROUND1x(R13, R14, R10, R11, R12, 17) + ROUND1x(R12, R13, R14, R10, R11, 18) + ROUND1x(R11, R12, R13, R14, R10, 19) + + // ROUND2 (steps 20-39) + ROUND2(R10, R11, R12, R13, R14, 20) + ROUND2(R14, R10, R11, R12, R13, 21) + ROUND2(R13, R14, R10, R11, R12, 22) + ROUND2(R12, R13, R14, R10, R11, 23) + ROUND2(R11, R12, R13, R14, R10, 24) + ROUND2(R10, R11, R12, R13, R14, 25) + ROUND2(R14, R10, R11, R12, R13, 26) + ROUND2(R13, R14, R10, R11, R12, 27) + ROUND2(R12, R13, R14, R10, R11, 28) + ROUND2(R11, R12, R13, R14, R10, 29) + ROUND2(R10, R11, R12, R13, R14, 30) + ROUND2(R14, R10, R11, R12, R13, 31) + ROUND2(R13, R14, R10, R11, R12, 32) + ROUND2(R12, R13, R14, R10, R11, 33) + ROUND2(R11, R12, R13, R14, R10, 34) + ROUND2(R10, R11, R12, R13, R14, 35) + ROUND2(R14, R10, R11, R12, R13, 36) + ROUND2(R13, R14, R10, R11, R12, 37) + ROUND2(R12, R13, R14, R10, R11, 38) + ROUND2(R11, R12, R13, R14, R10, 39) + + // ROUND3 (steps 40-59) + ROUND3(R10, R11, R12, R13, R14, 40) + ROUND3(R14, R10, R11, R12, R13, 41) + ROUND3(R13, R14, R10, R11, R12, 42) + ROUND3(R12, R13, R14, R10, R11, 43) + ROUND3(R11, R12, R13, R14, R10, 44) + ROUND3(R10, R11, R12, R13, R14, 45) + ROUND3(R14, R10, R11, R12, R13, 46) + ROUND3(R13, R14, R10, R11, R12, 47) + ROUND3(R12, R13, R14, R10, R11, 48) + ROUND3(R11, R12, R13, R14, R10, 49) + ROUND3(R10, R11, R12, R13, R14, 50) + ROUND3(R14, R10, R11, R12, R13, 51) + ROUND3(R13, R14, R10, R11, R12, 52) + ROUND3(R12, R13, R14, R10, R11, 53) + ROUND3(R11, R12, R13, R14, R10, 54) + ROUND3(R10, R11, R12, R13, R14, 55) + ROUND3(R14, R10, R11, R12, R13, 56) + ROUND3(R13, R14, R10, R11, R12, 57) + + LOADCS(R12, R13, R14, R10, R11, 1) + ROUND3(R12, R13, R14, R10, R11, 58) + ROUND3(R11, R12, R13, R14, R10, 59) + + // ROUND4 (steps 60-79) + ROUND4(R10, R11, R12, R13, R14, 60) + ROUND4(R14, R10, R11, R12, R13, 61) + ROUND4(R13, R14, R10, R11, R12, 62) + ROUND4(R12, R13, R14, R10, R11, 63) + ROUND4(R11, R12, R13, R14, R10, 64) + + LOADCS(R10, R11, R12, R13, R14, 2) + ROUND4(R10, R11, R12, R13, R14, 65) + ROUND4(R14, R10, R11, R12, R13, 66) + ROUND4(R13, R14, R10, R11, R12, 67) + ROUND4(R12, R13, R14, R10, R11, 68) + ROUND4(R11, R12, R13, R14, R10, 69) + ROUND4(R10, R11, R12, R13, R14, 70) + ROUND4(R14, R10, R11, R12, R13, 71) + ROUND4(R13, R14, R10, R11, R12, 72) + ROUND4(R12, R13, R14, R10, R11, 73) + ROUND4(R11, R12, R13, R14, R10, 74) + ROUND4(R10, R11, R12, R13, R14, 75) + ROUND4(R14, R10, R11, R12, R13, 76) + ROUND4(R13, R14, R10, R11, R12, 77) + ROUND4(R12, R13, R14, R10, R11, 78) + ROUND4(R11, R12, R13, R14, R10, 79) + + // Add registers to temp hash. + ADDW R10, R1, R1 + ADDW R11, R2, R2 + ADDW R12, R3, R3 + ADDW R13, R4, R4 + ADDW R14, R5, R5 + + ADD $64, R16, R16 + B loop + +end: + MOVW R1, (R8) + MOVW R2, 4(R8) + MOVW R3, 8(R8) + MOVW R4, 12(R8) + MOVW R5, 16(R8) + RET diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_asm.go b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_asm.go new file mode 100644 index 000000000..a4c7c0627 --- /dev/null +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_asm.go @@ -0,0 +1,11 @@ +//go:build (!amd64 || !arm64) && !noasm +// +build !amd64 !arm64 +// +build !noasm + +package sha1cd + +type sliceHeader struct { + base uintptr + len int + cap int +} diff --git a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_noasm.go b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_noasm.go index 15bae5a7e..98c14ef47 100644 --- a/vendor/github.com/pjbgf/sha1cd/sha1cdblock_noasm.go +++ b/vendor/github.com/pjbgf/sha1cd/sha1cdblock_noasm.go @@ -1,5 +1,5 @@ -//go:build !amd64 || noasm || !gc -// +build !amd64 noasm !gc +//go:build (!amd64 && !arm64) || noasm || !gc +// +build !amd64,!arm64 noasm !gc package sha1cd diff --git a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.go b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.go index 09159bb5b..2e088979d 100644 --- a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.go +++ b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.go @@ -1,5 +1,5 @@ -//go:build !noasm && gc && amd64 -// +build !noasm,gc,amd64 +//go:build !noasm && gc && amd64 && !arm64 +// +build !noasm,gc,amd64,!arm64 package ubc diff --git a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.s b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.s index c77ea77ec..f52607358 100644 --- a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.s +++ b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.s @@ -1,6 +1,6 @@ // Code generated by command: go run asm.go -out ../ubc_amd64.s -pkg ubc. DO NOT EDIT. -//go:build !noasm && gc && amd64 +//go:build !noasm && gc && amd64 && !arm64 #include "textflag.h" diff --git a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.go b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.go new file mode 100644 index 000000000..47b79fb1c --- /dev/null +++ b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.go @@ -0,0 +1,13 @@ +//go:build !noasm && gc && arm64 && !amd64 +// +build !noasm,gc,arm64,!amd64 + +package ubc + +func CalculateDvMaskARM64(W [80]uint32) uint32 + +// Check takes as input an expanded message block and verifies the unavoidable +// bitconditions for all listed DVs. It returns a dvmask where each bit belonging +// to a DV is set if all unavoidable bitconditions for that DV have been met. +func CalculateDvMask(W [80]uint32) uint32 { + return CalculateDvMaskARM64(W) +} diff --git a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.s b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.s new file mode 100644 index 000000000..68ee8fe55 --- /dev/null +++ b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_arm64.s @@ -0,0 +1,1851 @@ +//go:build !noasm && gc && arm64 && !amd64 +// +build !noasm,gc,arm64,!amd64 + +#include "textflag.h" + +// func CalculateDvMaskARM64(W [80]uint32) uint32 +TEXT ·CalculateDvMaskARM64(SB), NOSPLIT, $0-324 + MOVW $0xffffffff, R0 + + // (((((W[44] ^ W[45]) >> 29) & 1) - 1) | ^(DV_I_48_0_bit | DV_I_51_0_bit | DV_I_52_0_bit | DV_II_45_0_bit | DV_II_46_0_bit | DV_II_50_0_bit | DV_II_51_0_bit)) + MOVW W_44+176(FP), R1 + MOVW W_45+180(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xfd7c5f7f, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[49] ^ W[50]) >> 29) & 1) - 1) | ^(DV_I_46_0_bit | DV_II_45_0_bit | DV_II_50_0_bit | DV_II_51_0_bit | DV_II_55_0_bit | DV_II_56_0_bit)) + MOVW W_49+196(FP), R1 + MOVW W_50+200(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x3d7efff7, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[48] ^ W[49]) >> 29) & 1) - 1) | ^(DV_I_45_0_bit | DV_I_52_0_bit | DV_II_49_0_bit | DV_II_50_0_bit | DV_II_54_0_bit | DV_II_55_0_bit)) + MOVW W_48+192(FP), R1 + MOVW W_49+196(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x9f5f7ffb, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[47] ^ (W[50] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_47_0_bit | DV_I_49_0_bit | DV_I_51_0_bit | DV_II_45_0_bit | DV_II_51_0_bit | DV_II_56_0_bit)) + MOVW W_47+188(FP), R1 + MOVW W_50+200(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0x7dfedddf, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[47] ^ W[48]) >> 29) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_51_0_bit | DV_II_48_0_bit | DV_II_49_0_bit | DV_II_53_0_bit | DV_II_54_0_bit)) + MOVW W_47+188(FP), R1 + MOVW W_48+192(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xcfcfdffd, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[46] >> 4) ^ (W[49] >> 29)) & 1) - 1) | ^(DV_I_46_0_bit | DV_I_48_0_bit | DV_I_50_0_bit | DV_I_52_0_bit | DV_II_50_0_bit | DV_II_55_0_bit)) + MOVW W_46+184(FP), R1 + LSR $0x04, R1, R1 + MOVW W_49+196(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xbf7f7777, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[46] ^ W[47]) >> 29) & 1) - 1) | ^(DV_I_43_0_bit | DV_I_50_0_bit | DV_II_47_0_bit | DV_II_48_0_bit | DV_II_52_0_bit | DV_II_53_0_bit)) + MOVW W_46+184(FP), R1 + MOVW W_47+188(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xe7e7f7fe, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[45] >> 4) ^ (W[48] >> 29)) & 1) - 1) | ^(DV_I_45_0_bit | DV_I_47_0_bit | DV_I_49_0_bit | DV_I_51_0_bit | DV_II_49_0_bit | DV_II_54_0_bit)) + MOVW W_45+180(FP), R1 + LSR $0x04, R1, R1 + MOVW W_48+192(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xdfdfdddb, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[45] ^ W[46]) >> 29) & 1) - 1) | ^(DV_I_49_0_bit | DV_I_52_0_bit | DV_II_46_0_bit | DV_II_47_0_bit | DV_II_51_0_bit | DV_II_52_0_bit)) + MOVW W_45+180(FP), R1 + MOVW W_46+184(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xf5f57dff, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[44] >> 4) ^ (W[47] >> 29)) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_46_0_bit | DV_I_48_0_bit | DV_I_50_0_bit | DV_II_48_0_bit | DV_II_53_0_bit)) + MOVW W_44+176(FP), R1 + LSR $0x04, R1, R1 + MOVW W_47+188(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xefeff775, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[43] >> 4) ^ (W[46] >> 29)) & 1) - 1) | ^(DV_I_43_0_bit | DV_I_45_0_bit | DV_I_47_0_bit | DV_I_49_0_bit | DV_II_47_0_bit | DV_II_52_0_bit)) + MOVW W_43+172(FP), R1 + LSR $0x04, R1, R1 + MOVW W_46+184(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xf7f7fdda, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[43] ^ W[44]) >> 29) & 1) - 1) | ^(DV_I_47_0_bit | DV_I_50_0_bit | DV_I_51_0_bit | DV_II_45_0_bit | DV_II_49_0_bit | DV_II_50_0_bit)) + MOVW W_43+172(FP), R1 + MOVW W_44+176(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xff5ed7df, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[42] >> 4) ^ (W[45] >> 29)) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_46_0_bit | DV_I_48_0_bit | DV_I_52_0_bit | DV_II_46_0_bit | DV_II_51_0_bit)) + MOVW W_42+168(FP), R1 + LSR $0x04, R1, R1 + MOVW W_45+180(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xfdfd7f75, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[41] >> 4) ^ (W[44] >> 29)) & 1) - 1) | ^(DV_I_43_0_bit | DV_I_45_0_bit | DV_I_47_0_bit | DV_I_51_0_bit | DV_II_45_0_bit | DV_II_50_0_bit)) + MOVW W_41+164(FP), R1 + LSR $0x04, R1, R1 + MOVW W_44+176(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xff7edfda, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[40] ^ W[41]) >> 29) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_47_0_bit | DV_I_48_0_bit | DV_II_46_0_bit | DV_II_47_0_bit | DV_II_56_0_bit)) + MOVW W_40+160(FP), R1 + MOVW W_41+164(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x7ff5ff5d, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[54] ^ W[55]) >> 29) & 1) - 1) | ^(DV_I_51_0_bit | DV_II_47_0_bit | DV_II_50_0_bit | DV_II_55_0_bit | DV_II_56_0_bit)) + MOVW W_54+216(FP), R1 + MOVW W_55+220(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x3f77dfff, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[53] ^ W[54]) >> 29) & 1) - 1) | ^(DV_I_50_0_bit | DV_II_46_0_bit | DV_II_49_0_bit | DV_II_54_0_bit | DV_II_55_0_bit)) + MOVW W_53+212(FP), R1 + MOVW W_54+216(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x9fddf7ff, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[52] ^ W[53]) >> 29) & 1) - 1) | ^(DV_I_49_0_bit | DV_II_45_0_bit | DV_II_48_0_bit | DV_II_53_0_bit | DV_II_54_0_bit)) + MOVW W_52+208(FP), R1 + MOVW W_53+212(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xcfeefdff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[50] ^ (W[53] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_50_0_bit | DV_I_52_0_bit | DV_II_46_0_bit | DV_II_48_0_bit | DV_II_54_0_bit)) + MOVW W_50+200(FP), R1 + MOVW W_53+212(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xdfed77ff, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[50] ^ W[51]) >> 29) & 1) - 1) | ^(DV_I_47_0_bit | DV_II_46_0_bit | DV_II_51_0_bit | DV_II_52_0_bit | DV_II_56_0_bit)) + MOVW W_50+200(FP), R1 + MOVW W_51+204(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x75fdffdf, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[49] ^ (W[52] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_49_0_bit | DV_I_51_0_bit | DV_II_45_0_bit | DV_II_47_0_bit | DV_II_53_0_bit)) + MOVW W_49+196(FP), R1 + MOVW W_52+208(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xeff6ddff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[48] ^ (W[51] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_48_0_bit | DV_I_50_0_bit | DV_I_52_0_bit | DV_II_46_0_bit | DV_II_52_0_bit)) + MOVW W_48+192(FP), R1 + MOVW W_51+204(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xf7fd777f, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[42] ^ W[43]) >> 29) & 1) - 1) | ^(DV_I_46_0_bit | DV_I_49_0_bit | DV_I_50_0_bit | DV_II_48_0_bit | DV_II_49_0_bit)) + MOVW W_42+168(FP), R1 + MOVW W_43+172(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xffcff5f7, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[41] ^ W[42]) >> 29) & 1) - 1) | ^(DV_I_45_0_bit | DV_I_48_0_bit | DV_I_49_0_bit | DV_II_47_0_bit | DV_II_48_0_bit)) + MOVW W_41+164(FP), R1 + MOVW W_42+168(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xffe7fd7b, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[40] >> 4) ^ (W[43] >> 29)) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_46_0_bit | DV_I_50_0_bit | DV_II_49_0_bit | DV_II_56_0_bit)) + MOVW W_40+160(FP), R1 + LSR $0x04, R1, R1 + MOVW W_43+172(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x7fdff7f5, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[39] >> 4) ^ (W[42] >> 29)) & 1) - 1) | ^(DV_I_43_0_bit | DV_I_45_0_bit | DV_I_49_0_bit | DV_II_48_0_bit | DV_II_55_0_bit)) + MOVW W_39+156(FP), R1 + LSR $0x04, R1, R1 + MOVW W_42+168(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xbfeffdfa, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_44_0_bit | DV_I_48_0_bit | DV_II_47_0_bit | DV_II_54_0_bit | DV_II_56_0_bit)) != 0 { + // mask &= (((((W[38] >> 4) ^ (W[41] >> 29)) & 1) - 1) | ^(DV_I_44_0_bit | DV_I_48_0_bit | DV_II_47_0_bit | DV_II_54_0_bit | DV_II_56_0_bit)) + // } + TST $0xa0080082, R0 + BEQ f1 + MOVW W_38+152(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x04, R1, R1 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x5ff7ff7d, R1, R1 + AND R1, R0, R0 + +f1: + // mask &= (((((W[37] >> 4) ^ (W[40] >> 29)) & 1) - 1) | ^(DV_I_43_0_bit | DV_I_47_0_bit | DV_II_46_0_bit | DV_II_53_0_bit | DV_II_55_0_bit)) + MOVW W_37+148(FP), R1 + MOVW W_40+160(FP), R2 + LSR $0x04, R1, R1 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xaffdffde, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_52_0_bit | DV_II_48_0_bit | DV_II_51_0_bit | DV_II_56_0_bit)) != 0 { + // mask &= (((((W[55] ^ W[56]) >> 29) & 1) - 1) | ^(DV_I_52_0_bit | DV_II_48_0_bit | DV_II_51_0_bit | DV_II_56_0_bit)) + // } + TST $0x82108000, R0 + BEQ f2 + MOVW W_55+220(FP), R1 + MOVW W_56+224(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0x7def7fff, R1, R1 + AND R1, R0, R0 + +f2: + // if (mask & (DV_I_52_0_bit | DV_II_48_0_bit | DV_II_50_0_bit | DV_II_56_0_bit)) != 0 { + // mask &= ((((W[52] ^ (W[55] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_52_0_bit | DV_II_48_0_bit | DV_II_50_0_bit | DV_II_56_0_bit)) + // } + TST $0x80908000, R0 + BEQ f3 + MOVW W_52+208(FP), R1 + MOVW W_55+220(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0x7f6f7fff, R1, R1 + AND R1, R0, R0 + +f3: + // if (mask & (DV_I_51_0_bit | DV_II_47_0_bit | DV_II_49_0_bit | DV_II_55_0_bit)) != 0 { + // mask &= ((((W[51] ^ (W[54] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_51_0_bit | DV_II_47_0_bit | DV_II_49_0_bit | DV_II_55_0_bit)) + // } + TST $0x40282000, R0 + BEQ f4 + MOVW W_51+204(FP), R1 + MOVW W_54+216(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xbfd7dfff, R1, R1 + AND R1, R0, R0 + +f4: + // if (mask & (DV_I_48_0_bit | DV_II_47_0_bit | DV_II_52_0_bit | DV_II_53_0_bit)) != 0 { + // mask &= (((((W[51] ^ W[52]) >> 29) & 1) - 1) | ^(DV_I_48_0_bit | DV_II_47_0_bit | DV_II_52_0_bit | DV_II_53_0_bit)) + // } + TST $0x18080080, R0 + BEQ f5 + MOVW W_51+204(FP), R1 + MOVW W_52+208(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xe7f7ff7f, R1, R1 + AND R1, R0, R0 + +f5: + // if (mask & (DV_I_46_0_bit | DV_I_49_0_bit | DV_II_45_0_bit | DV_II_48_0_bit)) != 0 { + // mask &= (((((W[36] >> 4) ^ (W[40] >> 29)) & 1) - 1) | ^(DV_I_46_0_bit | DV_I_49_0_bit | DV_II_45_0_bit | DV_II_48_0_bit)) + // } + TST $0x00110208, R0 + BEQ f6 + MOVW W_36+144(FP), R1 + LSR $0x04, R1, R1 + MOVW W_40+160(FP), R2 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xffeefdf7, R1, R1 + AND R1, R0, R0 + +f6: + // if (mask & (DV_I_52_0_bit | DV_II_48_0_bit | DV_II_49_0_bit)) != 0 { + // mask &= ((0 - (((W[53] ^ W[56]) >> 29) & 1)) | ^(DV_I_52_0_bit | DV_II_48_0_bit | DV_II_49_0_bit)) + // } + TST $0x00308000, R0 + BEQ f7 + MOVW W_53+212(FP), R1 + MOVW W_56+224(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffcf7fff, R1, R1 + AND R1, R0, R0 + +f7: + // if (mask & (DV_I_50_0_bit | DV_II_46_0_bit | DV_II_47_0_bit)) != 0 { + // mask &= ((0 - (((W[51] ^ W[54]) >> 29) & 1)) | ^(DV_I_50_0_bit | DV_II_46_0_bit | DV_II_47_0_bit)) + // } + TST $0x000a0800, R0 + BEQ f8 + MOVW W_51+204(FP), R1 + MOVW W_54+216(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfff5f7ff, R1, R1 + AND R1, R0, R0 + +f8: + // if (mask & (DV_I_49_0_bit | DV_I_51_0_bit | DV_II_45_0_bit)) != 0 { + // mask &= ((0 - (((W[50] ^ W[52]) >> 29) & 1)) | ^(DV_I_49_0_bit | DV_I_51_0_bit | DV_II_45_0_bit)) + // } + TST $0x00012200, R0 + BEQ f9 + MOVW W_50+200(FP), R1 + MOVW W_52+208(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfffeddff, R1, R1 + AND R1, R0, R0 + +f9: + // if (mask & (DV_I_48_0_bit | DV_I_50_0_bit | DV_I_52_0_bit)) != 0 { + // mask &= ((0 - (((W[49] ^ W[51]) >> 29) & 1)) | ^(DV_I_48_0_bit | DV_I_50_0_bit | DV_I_52_0_bit)) + // } + TST $0x00008880, R0 + BEQ f10 + MOVW W_49+196(FP), R1 + MOVW W_51+204(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffff777f, R1, R1 + AND R1, R0, R0 + +f10: + // if (mask & (DV_I_47_0_bit | DV_I_49_0_bit | DV_I_51_0_bit)) != 0 { + // mask &= ((0 - (((W[48] ^ W[50]) >> 29) & 1)) | ^(DV_I_47_0_bit | DV_I_49_0_bit | DV_I_51_0_bit)) + // } + TST $0x00002220, R0 + BEQ f11 + MOVW W_48+192(FP), R1 + MOVW W_50+200(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffffdddf, R1, R1 + AND R1, R0, R0 + +f11: + // if (mask & (DV_I_46_0_bit | DV_I_48_0_bit | DV_I_50_0_bit)) != 0 { + // mask &= ((0 - (((W[47] ^ W[49]) >> 29) & 1)) | ^(DV_I_46_0_bit | DV_I_48_0_bit | DV_I_50_0_bit)) + // } + TST $0x00000888, R0 + BEQ f12 + MOVW W_47+188(FP), R1 + MOVW W_49+196(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfffff777, R1, R1 + AND R1, R0, R0 + +f12: + // if (mask & (DV_I_45_0_bit | DV_I_47_0_bit | DV_I_49_0_bit)) != 0 { + // mask &= ((0 - (((W[46] ^ W[48]) >> 29) & 1)) | ^(DV_I_45_0_bit | DV_I_47_0_bit | DV_I_49_0_bit)) + // } + TST $0x00000224, R0 + BEQ f13 + MOVW W_46+184(FP), R1 + MOVW W_48+192(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfffffddb, R1, R1 + AND R1, R0, R0 + +f13: + // mask &= ((((W[45] ^ W[47]) & (1 << 6)) - (1 << 6)) | ^(DV_I_47_2_bit | DV_I_49_2_bit | DV_I_51_2_bit)) + MOVW W_45+180(FP), R1 + MOVW W_47+188(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + SUB $0x00000040, R1, R1 + ORR $0xffffbbbf, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_44_0_bit | DV_I_46_0_bit | DV_I_48_0_bit)) != 0 { + // mask &= ((0 - (((W[45] ^ W[47]) >> 29) & 1)) | ^(DV_I_44_0_bit | DV_I_46_0_bit | DV_I_48_0_bit)) + // } + TST $0x0000008a, R0 + BEQ f14 + MOVW W_45+180(FP), R1 + MOVW W_47+188(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffffff75, R1, R1 + AND R1, R0, R0 + +f14: + // mask &= (((((W[44] ^ W[46]) >> 6) & 1) - 1) | ^(DV_I_46_2_bit | DV_I_48_2_bit | DV_I_50_2_bit)) + MOVW W_44+176(FP), R1 + MOVW W_46+184(FP), R2 + EOR R2, R1, R1 + LSR $0x06, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xffffeeef, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_43_0_bit | DV_I_45_0_bit | DV_I_47_0_bit)) != 0 { + // mask &= ((0 - (((W[44] ^ W[46]) >> 29) & 1)) | ^(DV_I_43_0_bit | DV_I_45_0_bit | DV_I_47_0_bit)) + // } + TST $0x00000025, R0 + BEQ f15 + MOVW W_44+176(FP), R1 + MOVW W_46+184(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffffffda, R1, R1 + AND R1, R0, R0 + +f15: + // mask &= ((0 - ((W[41] ^ (W[42] >> 5)) & (1 << 1))) | ^(DV_I_48_2_bit | DV_II_46_2_bit | DV_II_51_2_bit)) + MOVW W_41+164(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xfbfbfeff, R1, R1 + AND R1, R0, R0 + + // mask &= ((0 - ((W[40] ^ (W[41] >> 5)) & (1 << 1))) | ^(DV_I_47_2_bit | DV_I_51_2_bit | DV_II_50_2_bit)) + MOVW W_40+160(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xfeffbfbf, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_44_0_bit | DV_I_46_0_bit | DV_II_56_0_bit)) != 0 { + // mask &= ((0 - (((W[40] ^ W[42]) >> 4) & 1)) | ^(DV_I_44_0_bit | DV_I_46_0_bit | DV_II_56_0_bit)) + // } + TST $0x8000000a, R0 + BEQ f16 + MOVW W_40+160(FP), R1 + MOVW W_42+168(FP), R2 + EOR R2, R1, R1 + LSR $0x04, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0x7ffffff5, R1, R1 + AND R1, R0, R0 + +f16: + // mask &= ((0 - ((W[39] ^ (W[40] >> 5)) & (1 << 1))) | ^(DV_I_46_2_bit | DV_I_50_2_bit | DV_II_49_2_bit)) + MOVW W_39+156(FP), R1 + MOVW W_40+160(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xffbfefef, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_43_0_bit | DV_I_45_0_bit | DV_II_55_0_bit)) != 0 { + // mask &= ((0 - (((W[39] ^ W[41]) >> 4) & 1)) | ^(DV_I_43_0_bit | DV_I_45_0_bit | DV_II_55_0_bit)) + // } + TST $0x40000005, R0 + BEQ f17 + MOVW W_39+156(FP), R1 + MOVW W_41+164(FP), R2 + EOR R2, R1, R1 + LSR $0x04, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xbffffffa, R1, R1 + AND R1, R0, R0 + +f17: + // if (mask & (DV_I_44_0_bit | DV_II_54_0_bit | DV_II_56_0_bit)) != 0 { + // mask &= ((0 - (((W[38] ^ W[40]) >> 4) & 1)) | ^(DV_I_44_0_bit | DV_II_54_0_bit | DV_II_56_0_bit)) + // } + TST $0xa0000002, R0 + BEQ f18 + MOVW W_38+152(FP), R1 + MOVW W_40+160(FP), R2 + EOR R2, R1, R1 + LSR $0x04, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0x5ffffffd, R1, R1 + AND R1, R0, R0 + +f18: + // if (mask & (DV_I_43_0_bit | DV_II_53_0_bit | DV_II_55_0_bit)) != 0 { + // mask &= ((0 - (((W[37] ^ W[39]) >> 4) & 1)) | ^(DV_I_43_0_bit | DV_II_53_0_bit | DV_II_55_0_bit)) + // } + TST $0x50000001, R0 + BEQ f19 + MOVW W_37+148(FP), R1 + MOVW W_39+156(FP), R2 + EOR R2, R1, R1 + LSR $0x04, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xaffffffe, R1, R1 + AND R1, R0, R0 + +f19: + // mask &= ((0 - ((W[36] ^ (W[37] >> 5)) & (1 << 1))) | ^(DV_I_47_2_bit | DV_I_50_2_bit | DV_II_46_2_bit)) + MOVW W_36+144(FP), R1 + MOVW W_37+148(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xfffbefbf, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_45_0_bit | DV_I_48_0_bit | DV_II_47_0_bit)) != 0 { + // mask &= (((((W[35] >> 4) ^ (W[39] >> 29)) & 1) - 1) | ^(DV_I_45_0_bit | DV_I_48_0_bit | DV_II_47_0_bit)) + // } + TST $0x00080084, R0 + BEQ f20 + MOVW W_35+140(FP), R1 + MOVW W_39+156(FP), R2 + LSR $0x04, R1, R1 + LSR $0x1d, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + SUB $0x00000001, R1, R1 + ORR $0xfff7ff7b, R1, R1 + AND R1, R0, R0 + +f20: + // if (mask & (DV_I_48_0_bit | DV_II_48_0_bit)) != 0 { + // mask &= ((0 - ((W[63] ^ (W[64] >> 5)) & (1 << 0))) | ^(DV_I_48_0_bit | DV_II_48_0_bit)) + // } + TST $0x00100080, R0 + BEQ f21 + MOVW W_63+252(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffefff7f, R1, R1 + AND R1, R0, R0 + +f21: + // if (mask & (DV_I_45_0_bit | DV_II_45_0_bit)) != 0 { + // mask &= ((0 - ((W[63] ^ (W[64] >> 5)) & (1 << 1))) | ^(DV_I_45_0_bit | DV_II_45_0_bit)) + // } + TST $0x00010004, R0 + BEQ f22 + MOVW W_63+252(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xfffefffb, R1, R1 + AND R1, R0, R0 + +f22: + // if (mask & (DV_I_47_0_bit | DV_II_47_0_bit)) != 0 { + // mask &= ((0 - ((W[62] ^ (W[63] >> 5)) & (1 << 0))) | ^(DV_I_47_0_bit | DV_II_47_0_bit)) + // } + TST $0x00080020, R0 + BEQ f23 + MOVW W_62+248(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfff7ffdf, R1, R1 + AND R1, R0, R0 + +f23: + // if (mask & (DV_I_46_0_bit | DV_II_46_0_bit)) != 0 { + // mask &= ((0 - ((W[61] ^ (W[62] >> 5)) & (1 << 0))) | ^(DV_I_46_0_bit | DV_II_46_0_bit)) + // } + TST $0x00020008, R0 + BEQ f24 + MOVW W_61+244(FP), R1 + MOVW W_62+248(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfffdfff7, R1, R1 + AND R1, R0, R0 + +f24: + // mask &= ((0 - ((W[61] ^ (W[62] >> 5)) & (1 << 2))) | ^(DV_I_46_2_bit | DV_II_46_2_bit)) + MOVW W_61+244(FP), R1 + MOVW W_62+248(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000004, R1, R1 + NEG R1, R1 + ORR $0xfffbffef, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_45_0_bit | DV_II_45_0_bit)) != 0 { + // mask &= ((0 - ((W[60] ^ (W[61] >> 5)) & (1 << 0))) | ^(DV_I_45_0_bit | DV_II_45_0_bit)) + // } + TST $0x00010004, R0 + BEQ f25 + MOVW W_60+240(FP), R1 + MOVW W_61+244(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xfffefffb, R1, R1 + AND R1, R0, R0 + +f25: + // if (mask & (DV_II_51_0_bit | DV_II_54_0_bit)) != 0 { + // mask &= (((((W[58] ^ W[59]) >> 29) & 1) - 1) | ^(DV_II_51_0_bit | DV_II_54_0_bit)) + // } + TST $0x22000000, R0 + BEQ f26 + MOVW W_58+232(FP), R1 + MOVW W_59+236(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xddffffff, R1, R1 + AND R1, R0, R0 + +f26: + // if (mask & (DV_II_50_0_bit | DV_II_53_0_bit)) != 0 { + // mask &= (((((W[57] ^ W[58]) >> 29) & 1) - 1) | ^(DV_II_50_0_bit | DV_II_53_0_bit)) + // } + TST $0x10800000, R0 + BEQ f27 + MOVW W_57+228(FP), R1 + MOVW W_58+232(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $0x00000001, R1, R1 + ORR $0xef7fffff, R1, R1 + AND R1, R0, R0 + +f27: + // if (mask & (DV_II_52_0_bit | DV_II_54_0_bit)) != 0 { + // mask &= ((((W[56] ^ (W[59] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_II_52_0_bit | DV_II_54_0_bit)) + // } + TST $0x28000000, R0 + BEQ f28 + MOVW W_56+224(FP), R1 + MOVW W_59+236(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xd7ffffff, R1, R1 + AND R1, R0, R0 + +f28: + // if (mask & (DV_II_51_0_bit | DV_II_52_0_bit)) != 0 { + // mask &= ((0 - (((W[56] ^ W[59]) >> 29) & 1)) | ^(DV_II_51_0_bit | DV_II_52_0_bit)) + // } + TST $0x0a000000, R0 + BEQ f29 + MOVW W_56+224(FP), R1 + MOVW W_59+236(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xf5ffffff, R1, R1 + AND R1, R0, R0 + +f29: + // if (mask & (DV_II_49_0_bit | DV_II_52_0_bit)) != 0 { + // mask &= (((((W[56] ^ W[57]) >> 29) & 1) - 1) | ^(DV_II_49_0_bit | DV_II_52_0_bit)) + // } + TST $0x08200000, R0 + BEQ f30 + MOVW W_56+224(FP), R1 + MOVW W_57+228(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + SUB $0x00000001, R1, R1 + ORR $0xf7dfffff, R1, R1 + AND R1, R0, R0 + +f30: + // if (mask & (DV_II_51_0_bit | DV_II_53_0_bit)) != 0 { + // mask &= ((((W[55] ^ (W[58] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_II_51_0_bit | DV_II_53_0_bit)) + // } + TST $0x12000000, R0 + BEQ f31 + MOVW W_55+220(FP), R1 + MOVW W_58+232(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xedffffff, R1, R1 + AND R1, R0, R0 + +f31: + // if (mask & (DV_II_50_0_bit | DV_II_52_0_bit)) != 0 { + // mask &= ((((W[54] ^ (W[57] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_II_50_0_bit | DV_II_52_0_bit)) + // } + TST $0x08800000, R0 + BEQ f32 + MOVW W_54+216(FP), R1 + MOVW W_57+228(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xf77fffff, R1, R1 + AND R1, R0, R0 + +f32: + // if (mask & (DV_II_49_0_bit | DV_II_51_0_bit)) != 0 { + // mask &= ((((W[53] ^ (W[56] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_II_49_0_bit | DV_II_51_0_bit)) + // } + TST $0x02200000, R0 + BEQ f33 + MOVW W_53+212(FP), R1 + MOVW W_56+224(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xfddfffff, R1, R1 + AND R1, R0, R0 + +f33: + // mask &= ((((W[51] ^ (W[50] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_I_50_2_bit | DV_II_46_2_bit)) + MOVW W_51+204(FP), R1 + MOVW W_50+200(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xfffbefff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[48] ^ W[50]) & (1 << 6)) - (1 << 6)) | ^(DV_I_50_2_bit | DV_II_46_2_bit)) + MOVW W_48+192(FP), R1 + MOVW W_50+200(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + SUB $0x00000040, R1, R1 + ORR $0xfffbefff, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_51_0_bit | DV_I_52_0_bit)) != 0 { + // mask &= ((0 - (((W[48] ^ W[55]) >> 29) & 1)) | ^(DV_I_51_0_bit | DV_I_52_0_bit)) + // } + TST $0x0000a000, R0 + BEQ f34 + MOVW W_48+192(FP), R1 + MOVW W_55+220(FP), R2 + EOR R2, R1, R1 + LSR $0x1d, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + ORR $0xffff5fff, R1, R1 + AND R1, R0, R0 + +f34: + // mask &= ((((W[47] ^ W[49]) & (1 << 6)) - (1 << 6)) | ^(DV_I_49_2_bit | DV_I_51_2_bit)) + MOVW W_47+188(FP), R1 + MOVW W_49+196(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + SUB $0x00000040, R1, R1 + ORR $0xffffbbff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[48] ^ (W[47] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_I_47_2_bit | DV_II_51_2_bit)) + MOVW W_48+192(FP), R1 + MOVW W_47+188(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xfbffffbf, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[46] ^ W[48]) & (1 << 6)) - (1 << 6)) | ^(DV_I_48_2_bit | DV_I_50_2_bit)) + MOVW W_46+184(FP), R1 + MOVW W_48+192(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + SUB $0x00000040, R1, R1 + ORR $0xffffeeff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[47] ^ (W[46] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_I_46_2_bit | DV_II_50_2_bit)) + MOVW W_47+188(FP), R1 + MOVW W_46+184(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xfeffffef, R1, R1 + AND R1, R0, R0 + + // mask &= ((0 - ((W[44] ^ (W[45] >> 5)) & (1 << 1))) | ^(DV_I_51_2_bit | DV_II_49_2_bit)) + MOVW W_44+176(FP), R1 + MOVW W_45+180(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xffbfbfff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[43] ^ W[45]) & (1 << 6)) - (1 << 6)) | ^(DV_I_47_2_bit | DV_I_49_2_bit)) + MOVW W_43+172(FP), R1 + MOVW W_45+180(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + SUB $0x00000040, R1, R1 + ORR $0xfffffbbf, R1, R1 + AND R1, R0, R0 + + // mask &= (((((W[42] ^ W[44]) >> 6) & 1) - 1) | ^(DV_I_46_2_bit | DV_I_48_2_bit)) + MOVW W_42+168(FP), R1 + MOVW W_44+176(FP), R2 + EOR R2, R1, R1 + LSR $0x06, R1, R1 + AND $0x00000001, R1, R1 + SUB $1, R1, R1 + ORR $0xfffffeef, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[43] ^ (W[42] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_II_46_2_bit | DV_II_51_2_bit)) + MOVW W_43+172(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xfbfbffff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[42] ^ (W[41] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_I_51_2_bit | DV_II_50_2_bit)) + MOVW W_42+168(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xfeffbfff, R1, R1 + AND R1, R0, R0 + + // mask &= ((((W[41] ^ (W[40] >> 5)) & (1 << 1)) - (1 << 1)) | ^(DV_I_50_2_bit | DV_II_49_2_bit)) + MOVW W_41+164(FP), R1 + MOVW W_40+160(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + SUB $0x00000002, R1, R1 + ORR $0xffbfefff, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_52_0_bit | DV_II_51_0_bit)) != 0 { + // mask &= ((((W[39] ^ (W[43] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_52_0_bit | DV_II_51_0_bit)) + // } + TST $0x02008000, R0 + BEQ f35 + MOVW W_39+156(FP), R1 + MOVW W_43+172(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xfdff7fff, R1, R1 + AND R1, R0, R0 + +f35: + // if (mask & (DV_I_51_0_bit | DV_II_50_0_bit)) != 0 { + // mask &= ((((W[38] ^ (W[42] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_51_0_bit | DV_II_50_0_bit)) + // } + TST $0x00802000, R0 + BEQ f36 + MOVW W_38+152(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xff7fdfff, R1, R1 + AND R1, R0, R0 + +f36: + // if (mask & (DV_I_48_2_bit | DV_I_51_2_bit)) != 0 { + // mask &= ((0 - ((W[37] ^ (W[38] >> 5)) & (1 << 1))) | ^(DV_I_48_2_bit | DV_I_51_2_bit)) + // } + TST $0x00004100, R0 + BEQ f37 + MOVW W_37+148(FP), R1 + MOVW W_38+152(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xffffbeff, R1, R1 + AND R1, R0, R0 + +f37: + // if (mask & (DV_I_50_0_bit | DV_II_49_0_bit)) != 0 { + // mask &= ((((W[37] ^ (W[41] >> 25)) & (1 << 4)) - (1 << 4)) | ^(DV_I_50_0_bit | DV_II_49_0_bit)) + // } + TST $0x00200800, R0 + BEQ f38 + MOVW W_37+148(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + SUB $0x00000010, R1, R1 + ORR $0xffdff7ff, R1, R1 + AND R1, R0, R0 + +f38: + // if (mask & (DV_II_52_0_bit | DV_II_54_0_bit)) != 0 { + // mask &= ((0 - ((W[36] ^ W[38]) & (1 << 4))) | ^(DV_II_52_0_bit | DV_II_54_0_bit)) + // } + TST $0x28000000, R0 + BEQ f39 + MOVW W_36+144(FP), R1 + MOVW W_38+152(FP), R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + NEG R1, R1 + ORR $0xd7ffffff, R1, R1 + AND R1, R0, R0 + +f39: + // mask &= ((0 - ((W[35] ^ (W[36] >> 5)) & (1 << 1))) | ^(DV_I_46_2_bit | DV_I_49_2_bit)) + MOVW W_35+140(FP), R1 + MOVW W_36+144(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + ORR $0xfffffbef, R1, R1 + AND R1, R0, R0 + + // if (mask & (DV_I_51_0_bit | DV_II_47_0_bit)) != 0 { + // mask &= ((((W[35] ^ (W[39] >> 25)) & (1 << 3)) - (1 << 3)) | ^(DV_I_51_0_bit | DV_II_47_0_bit)) + // } + TST $0x00082000, R0 + BEQ f40 + MOVW W_35+140(FP), R1 + MOVW W_39+156(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + SUB $0x00000008, R1, R1 + ORR $0xfff7dfff, R1, R1 + AND R1, R0, R0 + +f40: + // if mask != 0 + TST $0x00000000, R0 + BNE end + + // if (mask & DV_I_43_0_bit) != 0 { + // if not((W[61]^(W[62]>>5))&(1<<1)) != 0 || + // not(not((W[59]^(W[63]>>25))&(1<<5))) != 0 || + // not((W[58]^(W[63]>>30))&(1<<0)) != 0 { + // mask &= ^DV_I_43_0_bit + // } + // } + TBZ $0, R0, f41_skip + MOVW W_61+244(FP), R1 + MOVW W_62+248(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + CBZ R1, f41_in + MOVW W_59+236(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000020, R1, R1 + CBNZ R1, f41_in + MOVW W_58+232(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x1e, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + CBZ R1, f41_in + B f41_skip + +f41_in: + AND $0xfffffffe, R0, R0 + +f41_skip: + // if (mask & DV_I_44_0_bit) != 0 { + // if not((W[62]^(W[63]>>5))&(1<<1)) != 0 || + // not(not((W[60]^(W[64]>>25))&(1<<5))) != 0 || + // not((W[59]^(W[64]>>30))&(1<<0)) != 0 { + // mask &= ^DV_I_44_0_bit + // } + // } + TBZ $0x01, R0, f42_skip + MOVW W_62+248(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + NEG R1, R1 + CBZ R1, f42_in + MOVW W_60+240(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000020, R1, R1 + CBNZ R1, f42_in + MOVW W_59+236(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x1e, R2, R2 + EOR R2, R1, R1 + AND $0x00000001, R1, R1 + NEG R1, R1 + CBZ R1, f42_in + B f42_skip + +f42_in: + AND $0xfffffffd, R0, R0 + +f42_skip: + // if (mask & DV_I_46_2_bit) != 0 { + // mask &= ((^((W[40] ^ W[42]) >> 2)) | ^DV_I_46_2_bit) + // } + TBZ $0x04, R0, f43 + MOVW W_40+160(FP), R1 + MOVW W_42+168(FP), R2 + EOR R2, R1, R1 + LSR $0x02, R1, R1 + MVN R1, R1 + ORR $0xffffffef, R1, R1 + AND R1, R0, R0 + +f43: + // if (mask & DV_I_47_2_bit) != 0 { + // if not((W[62]^(W[63]>>5))&(1<<2)) != 0 || + // not(not((W[41]^W[43])&(1<<6))) != 0 { + // mask &= ^DV_I_47_2_bit + // } + // } + TBZ $6, R0, f44_skip + MOVW W_62+248(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000004, R1, R1 + NEG R1, R1 + CBZ R1, f44_in + MOVW W_41+164(FP), R1 + MOVW W_43+172(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + CBNZ R1, f44_in + B f44_skip + +f44_in: + AND $0xffffffbf, R0, R0 + +f44_skip: + // if (mask & DV_I_48_2_bit) != 0 { + // if not((W[63]^(W[64]>>5))&(1<<2)) != 0 || + // not(not((W[48]^(W[49]<<5))&(1<<6))) != 0 { + // mask &= ^DV_I_48_2_bit + // } + // } + TBZ $0x08, R0, f45_skip + MOVW W_63+252(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000004, R1, R1 + NEG R1, R1 + CBZ R1, f45_in + MOVW W_48+192(FP), R1 + MOVW W_49+196(FP), R2 + LSL $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + CBNZ R1, f45_in + B f45_skip + +f45_in: + AND $0xfffffeff, R0, R0 + +f45_skip: + // if (mask & DV_I_49_2_bit) != 0 { + // if not(not((W[49]^(W[50]<<5))&(1<<6))) != 0 || + // not((W[42]^W[50])&(1<<1)) != 0 || + // not(not((W[39]^(W[40]<<5))&(1<<6))) != 0 || + // not((W[38]^W[40])&(1<<1)) != 0 { + // mask &= ^DV_I_49_2_bit + // } + // } + TBZ $0x0a, R0, f46_skip // Test bit 10 of R0, skip if clear + MOVW W_49+196(FP), R1 // R1 = W_49 + MOVW W_50+200(FP), R2 // R2 = W_50 + LSL $0x05, R2, R2 // R2 = W_50 << 5 + EOR R2, R1, R1 // R1 ^= R2 + AND $0x00000040, R1, R1 // R1 &= 0x40 + CBNZ R1, f46_in // If non-zero, jump to f46_in + + MOVW W_42+168(FP), R1 + MOVW W_50+200(FP), R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + CBZ R1, f46_in + + MOVW W_39+156(FP), R1 + MOVW W_40+160(FP), R2 + LSL $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + CBNZ R1, f46_in + + MOVW W_38+152(FP), R1 + MOVW W_40+160(FP), R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + CBZ R1, f46_in + B f46_skip + +f46_in: + AND $0xfffffbff, R0, R0 + +f46_skip: + // if (mask & DV_I_50_0_bit) != 0 { + // mask &= (((W[36] ^ W[37]) << 7) | ^DV_I_50_0_bit) + // } + TBZ $0x0b, R0, f47 // Test bit 11 (DV_I_50_0_bit) + MOVW W_36+144(FP), R1 + MOVW W_37+148(FP), R2 + EOR R2, R1, R1 // R1 = W[36] ^ W[37] + LSL $0x07, R1, R1 // R1 <<= 7 + ORR $0xfffff7ff, R1, R1 // R1 |= ~DV_I_50_0_bit + AND R1, R0, R0 // mask &= R1 + +f47: + // if (mask & DV_I_50_2_bit) != 0 { + // mask &= (((W[43] ^ W[51]) << 11) | ^DV_I_50_2_bit) + // } + TBZ $0x0c, R0, f48 // Test bit 12 (DV_I_50_2_bit) + MOVW W_43+172(FP), R1 + MOVW W_51+204(FP), R2 + EOR R2, R1, R1 // R1 = W[43] ^ W[51] + LSL $0x0b, R1, R1 // R1 <<= 11 + ORR $0xffffefff, R1, R1 // R1 |= ~DV_I_50_2_bit + AND R1, R0, R0 // mask &= R1 + +f48: + // if (mask & DV_I_51_0_bit) != 0 { + // mask &= (((W[37] ^ W[38]) << 9) | ^DV_I_51_0_bit) + // } + TBZ $0x0d, R0, f49 // Test bit 13 (DV_I_51_0_bit) + MOVW W_37+148(FP), R1 + MOVW W_38+152(FP), R2 + EOR R2, R1, R1 // R1 = W[37] ^ W[38] + LSL $0x09, R1, R1 // R1 <<= 9 + ORR $0xffffdfff, R1, R1 // R1 |= ~DV_I_51_0_bit + AND R1, R0, R0 // mask &= R1 + +f49: + // if (mask & DV_I_51_2_bit) != 0 { + // if not(not((W[51]^(W[52]<<5))&(1<<6))) != 0 || + // not(not((W[49]^W[51])&(1<<6))) != 0 || + // not(not((W[37]^(W[37]>>5))&(1<<1))) != 0 || + // not(not((W[35]^(W[39]>>25))&(1<<5))) != 0 { + // mask &= ^DV_I_51_2_bit + // } + // } + TBZ $0x0e, R0, f50_skip // Test bit 14 (DV_I_51_2_bit) + + MOVW W_51+204(FP), R1 + MOVW W_52+208(FP), R2 + LSL $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + CBNZ R1, f50_in + + MOVW W_49+196(FP), R1 + MOVW W_51+204(FP), R2 + EOR R2, R1, R1 + AND $0x00000040, R1, R1 + CBNZ R1, f50_in + + MOVW W_37+148(FP), R1 + MOVW W_37+148(FP), R2 + LSR $0x05, R2, R2 + EOR R2, R1, R1 + AND $0x00000002, R1, R1 + CBNZ R1, f50_in + + MOVW W_35+140(FP), R1 + MOVW W_39+156(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000020, R1, R1 + CBNZ R1, f50_in + + B f50_skip + +f50_in: + AND $0xffffbfff, R0, R0 // mask &= ~DV_I_51_2_bit + +f50_skip: + // if (mask & DV_I_52_0_bit) != 0 { + // mask &= (((W[38] ^ W[39]) << 11) | ^DV_I_52_0_bit) + // } + TBZ $0x0f, R0, f51 // Test bit 15 (DV_I_52_0_bit) + MOVW W_38+152(FP), R1 + MOVW W_39+156(FP), R2 + EOR R2, R1, R1 + LSL $0x0b, R1, R1 + ORR $0xffff7fff, R1, R1 + AND R1, R0, R0 + +f51: + // if (mask & DV_II_46_2_bit) != 0 { + // mask &= (((W[47] ^ W[51]) << 17) | ^DV_II_46_2_bit) + // } + TST $0x00040000, R0 + TBZ $0x12, R0, f52 + MOVW W_47+188(FP), R1 + MOVW W_51+204(FP), R2 + EOR R2, R1, R1 + LSL $0x11, R1, R1 + ORR $0xfffbffff, R1, R1 + AND R1, R0, R0 + +f52: + // if (mask & DV_II_48_0_bit) != 0 { + // if not(not((W[36]^(W[40]>>25))&(1<<3))) != 0 || + // not((W[35]^(W[40]<<2))&(1<<30)) != 0 { + // mask &= ^DV_II_48_0_bit + // } + // } + TBZ $0x14, R0, f53_skip // Test bit 20 (DV_II_48_0_bit) + + MOVW W_36+144(FP), R1 + MOVW W_40+160(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f53_in + + MOVW W_35+140(FP), R1 + MOVW W_40+160(FP), R2 + LSL $0x02, R2, R2 + EOR R2, R1, R1 + AND $0x40000000, R1, R1 + CBNZ R1, f53_in + + B f53_skip + +f53_in: + AND $0xffefffff, R0, R0 + +f53_skip: + // if (mask & DV_II_49_0_bit) != 0 { + // if not(not((W[37]^(W[41]>>25))&(1<<3))) != 0 || + // not((W[36]^(W[41]<<2))&(1<<30)) != 0 { + // mask &= ^DV_II_49_0_bit + // } + // } + TBZ $0x15, R0, f54_skip // Test bit 21 (DV_II_49_0_bit) + + MOVW W_37+148(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f54_in + + MOVW W_36+144(FP), R1 + MOVW W_41+164(FP), R2 + LSL $0x02, R2, R2 + EOR R2, R1, R1 + AND $0x40000000, R1, R1 + CBNZ R1, f54_in + + B f54_skip + +f54_in: + AND $0xffdfffff, R0, R0 // mask &= ~DV_II_49_0_bit + +f54_skip: + // if (mask & DV_II_49_2_bit) != 0 { + // if not(not((W[53]^(W[54]<<5))&(1<<6))) != 0 || + // not(not((W[51]^W[53])&(1<<6))) != 0 || + // not((W[50]^W[54])&(1<<1)) != 0 || + // not(not((W[45]^(W[46]<<5))&(1<<6))) != 0 || + // not(not((W[37]^(W[41]>>25))&(1<<5))) != 0 || + // not((W[36]^(W[41]>>30))&(1<<0)) != 0 { + // mask &= ^DV_II_49_2_bit + // } + // } + TBZ $0x16, R0, f55_skip + + MOVW W_53+212(FP), R1 + MOVW W_54+216(FP), R2 + LSL $0x05, R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f55_in + MOVW W_51+204(FP), R1 + MOVW W_53+212(FP), R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f55_in + MOVW W_50+200(FP), R1 + MOVW W_54+216(FP), R2 + EOR R2, R1 + AND $0x00000002, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f55_in + MOVW W_45+180(FP), R1 + MOVW W_46+184(FP), R2 + LSL $0x05, R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f55_in + MOVW W_37+148(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x19, R2 + EOR R2, R1 + AND $0x00000020, R1 + CMP $0x00000000, R1 + BNE f55_in + MOVW W_36+144(FP), R1 + MOVW W_41+164(FP), R2 + LSR $0x1e, R2 + EOR R2, R1 + AND $0x00000001, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f55_in + JMP f55_skip + +f55_in: + AND $0xffbfffff, R0 + +f55_skip: + // if (mask & DV_II_50_0_bit) != 0 { + // if not((W[55]^W[58])&(1<<29)) != 0 || + // not(not((W[38]^(W[42]>>25))&(1<<3))) != 0 || + // not((W[37]^(W[42]<<2))&(1<<30)) != 0 { + // mask &= ^DV_II_50_0_bit + // } + // } + TBZ $0x17, R0, f56_skip + + MOVW W_55+220(FP), R1 + MOVW W_58+232(FP), R2 + EOR R2, R1 + AND $0x20000000, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f56_in + MOVW W_38+152(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x19, R2 + EOR R2, R1 + AND $0x00000008, R1 + CMP $0x00000000, R1 + BNE f56_in + MOVW W_37+148(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x02, R2 + EOR R2, R1 + AND $0x40000000, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f56_in + JMP f56_skip + +f56_in: + AND $0xff7fffff, R0 + +f56_skip: + // if (mask & DV_II_50_2_bit) != 0 { + // if not(not((W[54]^(W[55]<<5))&(1<<6))) != 0 || + // not(not((W[52]^W[54])&(1<<6))) != 0 || + // not((W[51]^W[55])&(1<<1)) != 0 || + // not((W[45]^W[47])&(1<<1)) != 0 || + // not(not((W[38]^(W[42]>>25))&(1<<5))) != 0 || + // not((W[37]^(W[42]>>30))&(1<<0)) != 0 { + // mask &= ^DV_II_50_2_bit + // } + // } + TBZ $0x18, R0, f57_skip + + MOVW W_54+216(FP), R1 + MOVW W_55+220(FP), R2 + LSL $0x05, R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f57_in + MOVW W_52+208(FP), R1 + MOVW W_54+216(FP), R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f57_in + MOVW W_51+204(FP), R1 + MOVW W_55+220(FP), R2 + EOR R2, R1 + AND $0x00000002, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f57_in + MOVW W_45+180(FP), R1 + MOVW W_47+188(FP), R2 + EOR R2, R1 + AND $0x00000002, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f57_in + MOVW W_38+152(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x19, R2 + EOR R2, R1 + AND $0x00000020, R1 + CMP $0x00000000, R1 + BNE f57_in + MOVW W_37+148(FP), R1 + MOVW W_42+168(FP), R2 + LSR $0x1e, R2 + EOR R2, R1 + AND $0x00000001, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f57_in + JMP f57_skip + +f57_in: + AND $0xfeffffff, R0 + +f57_skip: + // if (mask & DV_II_51_0_bit) != 0 { + // if not(not((W[39]^(W[43]>>25))&(1<<3))) != 0 || + // not((W[38]^(W[43]<<2))&(1<<30)) != 0 { + // mask &= ^DV_II_51_0_bit + // } + // } + TBZ $0x19, R0, f58_skip + + MOVW W_39+156(FP), R1 + MOVW W_43+172(FP), R2 + LSR $0x19, R2 + EOR R2, R1 + AND $0x00000008, R1 + CMP $0x00000000, R1 + BNE f58_in + MOVW W_38+152(FP), R1 + MOVW W_43+172(FP), R2 + LSL $0x02, R2 + EOR R2, R1 + AND $0x40000000, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f58_in + JMP f58_skip + +f58_in: + AND $0xfdffffff, R0 + +f58_skip: + // if (mask & DV_II_51_2_bit) != 0 { + // if not(not((W[55]^(W[56]<<5))&(1<<6))) != 0 || + // not(not((W[53]^W[55])&(1<<6))) != 0 || + // not((W[52]^W[56])&(1<<1)) != 0 || + // not((W[46]^W[48])&(1<<1)) != 0 || + // not(not((W[39]^(W[43]>>25))&(1<<5))) != 0 || + // not((W[38]^(W[43]>>30))&(1<<0)) != 0 { + // mask &= ^DV_II_51_2_bit + // } + // } + TBZ $0x1a, R0, f59_skip + + MOVW W_55+220(FP), R1 + MOVW W_56+224(FP), R2 + LSL $0x05, R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f59_in + MOVW W_53+212(FP), R1 + MOVW W_55+220(FP), R2 + EOR R2, R1 + AND $0x00000040, R1 + CMP $0x00000000, R1 + BNE f59_in + MOVW W_52+208(FP), R1 + MOVW W_56+224(FP), R2 + EOR R2, R1 + AND $0x00000002, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f59_in + MOVW W_46+184(FP), R1 + MOVW W_48+192(FP), R2 + EOR R2, R1 + AND $0x00000002, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f59_in + MOVW W_39+156(FP), R1 + MOVW W_43+172(FP), R2 + LSR $0x19, R2 + EOR R2, R1 + AND $0x00000020, R1 + CMP $0x00000000, R1 + BNE f59_in + MOVW W_38+152(FP), R1 + MOVW W_43+172(FP), R2 + LSR $0x1e, R2 + EOR R2, R1 + AND $0x00000001, R1 + NEG R1, R1 + CMP $0x00000000, R1 + BEQ f59_in + JMP f59_skip + +f59_in: + AND $0xfbffffff, R0 + +f59_skip: + // if (mask & DV_II_52_0_bit) != 0 { + // if not(not((W[59]^W[60])&(1<<29))) != 0 || + // not(not((W[40]^(W[44]>>25))&(1<<3))) != 0 || + // not(not((W[40]^(W[44]>>25))&(1<<4))) != 0 || + // not((W[39]^(W[44]<<2))&(1<<30)) != 0 { + // mask &= ^DV_II_52_0_bit + // } + // } + TBZ $0x1b, R0, f60_skip + MOVW W_59+236(FP), R1 + MOVW W_60+240(FP), R2 + EOR R2, R1, R1 + AND $0x20000000, R1, R1 + CBNZ R1, f60_in + MOVW W_40+160(FP), R1 + MOVW W_44+176(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f60_in + MOVW W_40+160(FP), R1 + MOVW W_44+176(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f60_in + MOVW W_39+156(FP), R1 + MOVW W_44+176(FP), R2 + LSL $0x02, R2, R2 + EOR R2, R1, R1 + AND $0x40000000, R1, R1 + NEG R1, R1 + CBZ R1, f60_in + B f60_skip + +f60_in: + AND $0xf7ffffff, R0, R0 + +f60_skip: + // if (mask & DV_II_53_0_bit) != 0 { + // if not((W[58]^W[61])&(1<<29)) != 0 || + // not(not((W[57]^(W[61]>>25))&(1<<4))) != 0 || + // not(not((W[41]^(W[45]>>25))&(1<<3))) != 0 || + // not(not((W[41]^(W[45]>>25))&(1<<4))) != 0 { + // mask &= ^DV_II_53_0_bit + // } + // } + TBZ $0x1c, R0, f61_skip + MOVW W_58+232(FP), R1 + MOVW W_61+244(FP), R2 + EOR R2, R1, R1 + AND $0x20000000, R1, R1 + NEG R1, R1 + CBZ R1, f61_in + MOVW W_57+228(FP), R1 + MOVW W_61+244(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f61_in + MOVW W_41+164(FP), R1 + MOVW W_45+180(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f61_in + MOVW W_41+164(FP), R1 + MOVW W_45+180(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f61_in + B f61_skip + +f61_in: + AND $0xefffffff, R0, R0 + +f61_skip: + // if (mask & DV_II_54_0_bit) != 0 { + // if not(not((W[58]^(W[62]>>25))&(1<<4))) != 0 || + // not(not((W[42]^(W[46]>>25))&(1<<3))) != 0 || + // not(not((W[42]^(W[46]>>25))&(1<<4))) != 0 { + // mask &= ^DV_II_54_0_bit + // } + // } + TBZ $0x1d, R0, f62_skip + MOVW W_58+232(FP), R1 + MOVW W_62+248(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f62_in + MOVW W_42+168(FP), R1 + MOVW W_46+184(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f62_in + MOVW W_42+168(FP), R1 + MOVW W_46+184(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f62_in + B f62_skip + +f62_in: + AND $0xdfffffff, R0, R0 + +f62_skip: + // if (mask & DV_II_55_0_bit) != 0 { + // if not(not((W[59]^(W[63]>>25))&(1<<4))) != 0 || + // not(not((W[57]^(W[59]>>25))&(1<<4))) != 0 || + // not(not((W[43]^(W[47]>>25))&(1<<3))) != 0 || + // not(not((W[43]^(W[47]>>25))&(1<<4))) != 0 { + // mask &= ^DV_II_55_0_bit + // } + // } + TBZ $0x1e, R0, f63_skip + MOVW W_59+236(FP), R1 + MOVW W_63+252(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f63_in + MOVW W_57+228(FP), R1 + MOVW W_59+236(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f63_in + MOVW W_43+172(FP), R1 + MOVW W_47+188(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f63_in + MOVW W_43+172(FP), R1 + MOVW W_47+188(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f63_in + B f63_skip + +f63_in: + AND $0xbfffffff, R0, R0 + +f63_skip: + // if (mask & DV_II_56_0_bit) != 0 { + // if not(not((W[60]^(W[64]>>25))&(1<<4))) != 0 || + // not(not((W[44]^(W[48]>>25))&(1<<3))) != 0 || + // not(not((W[44]^(W[48]>>25))&(1<<4))) != 0 { + // mask &= ^DV_II_56_0_bit + // } + // } + TBZ $0x1f, R0, f64_skip + MOVW W_60+240(FP), R1 + MOVW W_64+256(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f64_in + MOVW W_44+176(FP), R1 + MOVW W_48+192(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000008, R1, R1 + CBNZ R1, f64_in + MOVW W_44+176(FP), R1 + MOVW W_48+192(FP), R2 + LSR $0x19, R2, R2 + EOR R2, R1, R1 + AND $0x00000010, R1, R1 + CBNZ R1, f64_in + B f64_skip + +f64_in: + AND $0x7fffffff, R0, R0 + +f64_skip: +end: + MOVW R0, ret+320(FP) + RET diff --git a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_noasm.go b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_noasm.go index 48d6dff16..b7cc826ad 100644 --- a/vendor/github.com/pjbgf/sha1cd/ubc/ubc_noasm.go +++ b/vendor/github.com/pjbgf/sha1cd/ubc/ubc_noasm.go @@ -1,5 +1,5 @@ -//go:build !amd64 || noasm || !gc -// +build !amd64 noasm !gc +//go:build (!amd64 && !arm64) || noasm || !gc +// +build !amd64,!arm64 noasm !gc package ubc diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go index b4607fe4d..4067978a1 100644 --- a/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ b/vendor/github.com/prometheus/common/expfmt/text_parse.go @@ -345,8 +345,8 @@ func (p *TextParser) startLabelName() stateFn { } // Special summary/histogram treatment. Don't add 'quantile' and 'le' // labels to 'real' labels. - if !(p.currentMF.GetType() == dto.MetricType_SUMMARY && p.currentLabelPair.GetName() == model.QuantileLabel) && - !(p.currentMF.GetType() == dto.MetricType_HISTOGRAM && p.currentLabelPair.GetName() == model.BucketLabel) { + if (p.currentMF.GetType() != dto.MetricType_SUMMARY || p.currentLabelPair.GetName() != model.QuantileLabel) && + (p.currentMF.GetType() != dto.MetricType_HISTOGRAM || p.currentLabelPair.GetName() != model.BucketLabel) { p.currentLabelPairs = append(p.currentLabelPairs, p.currentLabelPair) } // Check for duplicate label names. diff --git a/vendor/github.com/prometheus/common/model/labels.go b/vendor/github.com/prometheus/common/model/labels.go index f4a387605..de83afe93 100644 --- a/vendor/github.com/prometheus/common/model/labels.go +++ b/vendor/github.com/prometheus/common/model/labels.go @@ -122,7 +122,8 @@ func (ln LabelName) IsValidLegacy() bool { return false } for i, b := range ln { - if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) { + // TODO: Apply De Morgan's law. Make sure there are tests for this. + if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) { //nolint:staticcheck return false } } diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go index 5727452c1..fed9e87b9 100644 --- a/vendor/github.com/prometheus/common/model/time.go +++ b/vendor/github.com/prometheus/common/model/time.go @@ -201,6 +201,7 @@ var unitMap = map[string]struct { // ParseDuration parses a string into a time.Duration, assuming that a year // always has 365d, a week always has 7d, and a day always has 24h. +// Negative durations are not supported. func ParseDuration(s string) (Duration, error) { switch s { case "0": @@ -253,18 +254,36 @@ func ParseDuration(s string) (Duration, error) { return 0, errors.New("duration out of range") } } + return Duration(dur), nil } +// ParseDurationAllowNegative is like ParseDuration but also accepts negative durations. +func ParseDurationAllowNegative(s string) (Duration, error) { + if s == "" || s[0] != '-' { + return ParseDuration(s) + } + + d, err := ParseDuration(s[1:]) + + return -d, err +} + func (d Duration) String() string { var ( - ms = int64(time.Duration(d) / time.Millisecond) - r = "" + ms = int64(time.Duration(d) / time.Millisecond) + r = "" + sign = "" ) + if ms == 0 { return "0s" } + if ms < 0 { + sign, ms = "-", -ms + } + f := func(unit string, mult int64, exact bool) { if exact && ms%mult != 0 { return @@ -286,7 +305,7 @@ func (d Duration) String() string { f("s", 1000, false) f("ms", 1, false) - return r + return sign + r } // MarshalJSON implements the json.Marshaler interface. diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common index 0ed55c2ba..4de21512f 100644 --- a/vendor/github.com/prometheus/procfs/Makefile.common +++ b/vendor/github.com/prometheus/procfs/Makefile.common @@ -33,7 +33,7 @@ GOHOSTOS ?= $(shell $(GO) env GOHOSTOS) GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH) GO_VERSION ?= $(shell $(GO) version) -GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION))Error Parsing File +GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION)) PRE_GO_111 ?= $(shell echo $(GO_VERSION_NUMBER) | grep -E 'go1\.(10|[0-9])\.') PROMU := $(FIRST_GOPATH)/bin/promu @@ -61,7 +61,8 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.0.2 +GOLANGCI_LINT_VERSION ?= v2.1.5 +GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) @@ -156,9 +157,13 @@ $(GOTEST_DIR): @mkdir -p $@ .PHONY: common-format -common-format: +common-format: $(GOLANGCI_LINT) @echo ">> formatting code" $(GO) fmt $(pkgs) +ifdef GOLANGCI_LINT + @echo ">> formatting code with golangci-lint" + $(GOLANGCI_LINT) fmt $(GOLANGCI_FMT_OPTS) +endif .PHONY: common-vet common-vet: @@ -248,8 +253,8 @@ $(PROMU): cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu rm -r $(PROMU_TMP) -.PHONY: proto -proto: +.PHONY: common-proto +common-proto: @echo ">> generating code from proto files" @./scripts/genproto.sh diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go index 67a9d2b44..1fd4381b2 100644 --- a/vendor/github.com/prometheus/procfs/mdstat.go +++ b/vendor/github.com/prometheus/procfs/mdstat.go @@ -123,13 +123,16 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { finish := float64(0) pct := float64(0) recovering := strings.Contains(lines[syncLineIdx], "recovery") + reshaping := strings.Contains(lines[syncLineIdx], "reshape") resyncing := strings.Contains(lines[syncLineIdx], "resync") checking := strings.Contains(lines[syncLineIdx], "check") // Append recovery and resyncing state info. - if recovering || resyncing || checking { + if recovering || resyncing || checking || reshaping { if recovering { state = "recovering" + } else if reshaping { + state = "reshaping" } else if checking { state = "checking" } else { diff --git a/vendor/github.com/prometheus/procfs/meminfo.go b/vendor/github.com/prometheus/procfs/meminfo.go index 4b2c4050a..937e1f960 100644 --- a/vendor/github.com/prometheus/procfs/meminfo.go +++ b/vendor/github.com/prometheus/procfs/meminfo.go @@ -66,6 +66,10 @@ type Meminfo struct { // Memory which has been evicted from RAM, and is temporarily // on the disk SwapFree *uint64 + // Memory consumed by the zswap backend (compressed size) + Zswap *uint64 + // Amount of anonymous memory stored in zswap (original size) + Zswapped *uint64 // Memory which is waiting to get written back to the disk Dirty *uint64 // Memory which is actively being written back to the disk @@ -85,6 +89,8 @@ type Meminfo struct { // amount of memory dedicated to the lowest level of page // tables. PageTables *uint64 + // secondary page tables. + SecPageTables *uint64 // NFS pages sent to the server, but not yet committed to // stable storage NFSUnstable *uint64 @@ -129,15 +135,18 @@ type Meminfo struct { Percpu *uint64 HardwareCorrupted *uint64 AnonHugePages *uint64 + FileHugePages *uint64 ShmemHugePages *uint64 ShmemPmdMapped *uint64 CmaTotal *uint64 CmaFree *uint64 + Unaccepted *uint64 HugePagesTotal *uint64 HugePagesFree *uint64 HugePagesRsvd *uint64 HugePagesSurp *uint64 Hugepagesize *uint64 + Hugetlb *uint64 DirectMap4k *uint64 DirectMap2M *uint64 DirectMap1G *uint64 @@ -161,6 +170,8 @@ type Meminfo struct { MlockedBytes *uint64 SwapTotalBytes *uint64 SwapFreeBytes *uint64 + ZswapBytes *uint64 + ZswappedBytes *uint64 DirtyBytes *uint64 WritebackBytes *uint64 AnonPagesBytes *uint64 @@ -171,6 +182,7 @@ type Meminfo struct { SUnreclaimBytes *uint64 KernelStackBytes *uint64 PageTablesBytes *uint64 + SecPageTablesBytes *uint64 NFSUnstableBytes *uint64 BounceBytes *uint64 WritebackTmpBytes *uint64 @@ -182,11 +194,14 @@ type Meminfo struct { PercpuBytes *uint64 HardwareCorruptedBytes *uint64 AnonHugePagesBytes *uint64 + FileHugePagesBytes *uint64 ShmemHugePagesBytes *uint64 ShmemPmdMappedBytes *uint64 CmaTotalBytes *uint64 CmaFreeBytes *uint64 + UnacceptedBytes *uint64 HugepagesizeBytes *uint64 + HugetlbBytes *uint64 DirectMap4kBytes *uint64 DirectMap2MBytes *uint64 DirectMap1GBytes *uint64 @@ -287,6 +302,12 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { case "SwapFree:": m.SwapFree = &val m.SwapFreeBytes = &valBytes + case "Zswap:": + m.Zswap = &val + m.ZswapBytes = &valBytes + case "Zswapped:": + m.Zswapped = &val + m.ZswapBytes = &valBytes case "Dirty:": m.Dirty = &val m.DirtyBytes = &valBytes @@ -317,6 +338,9 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { case "PageTables:": m.PageTables = &val m.PageTablesBytes = &valBytes + case "SecPageTables:": + m.SecPageTables = &val + m.SecPageTablesBytes = &valBytes case "NFS_Unstable:": m.NFSUnstable = &val m.NFSUnstableBytes = &valBytes @@ -350,6 +374,9 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { case "AnonHugePages:": m.AnonHugePages = &val m.AnonHugePagesBytes = &valBytes + case "FileHugePages:": + m.FileHugePages = &val + m.FileHugePagesBytes = &valBytes case "ShmemHugePages:": m.ShmemHugePages = &val m.ShmemHugePagesBytes = &valBytes @@ -362,6 +389,9 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { case "CmaFree:": m.CmaFree = &val m.CmaFreeBytes = &valBytes + case "Unaccepted:": + m.Unaccepted = &val + m.UnacceptedBytes = &valBytes case "HugePages_Total:": m.HugePagesTotal = &val case "HugePages_Free:": @@ -373,6 +403,9 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { case "Hugepagesize:": m.Hugepagesize = &val m.HugepagesizeBytes = &valBytes + case "Hugetlb:": + m.Hugetlb = &val + m.HugetlbBytes = &valBytes case "DirectMap4k:": m.DirectMap4k = &val m.DirectMap4kBytes = &valBytes diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go index 06a8d931c..3328556bd 100644 --- a/vendor/github.com/prometheus/procfs/proc_stat.go +++ b/vendor/github.com/prometheus/procfs/proc_stat.go @@ -101,6 +101,12 @@ type ProcStat struct { RSS int // Soft limit in bytes on the rss of the process. RSSLimit uint64 + // The address above which program text can run. + StartCode uint64 + // The address below which program text can run. + EndCode uint64 + // The address of the start (i.e., bottom) of the stack. + StartStack uint64 // CPU number last executed on. Processor uint // Real-time scheduling priority, a number in the range 1 to 99 for processes @@ -177,9 +183,9 @@ func (p Proc) Stat() (ProcStat, error) { &s.VSize, &s.RSS, &s.RSSLimit, - &ignoreUint64, - &ignoreUint64, - &ignoreUint64, + &s.StartCode, + &s.EndCode, + &s.StartStack, &ignoreUint64, &ignoreUint64, &ignoreUint64, diff --git a/vendor/github.com/prometheus/procfs/proc_statm.go b/vendor/github.com/prometheus/procfs/proc_statm.go new file mode 100644 index 000000000..ed5798424 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/proc_statm.go @@ -0,0 +1,116 @@ +// Copyright 2025 The Prometheus Authors +// 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 procfs + +import ( + "os" + "strconv" + "strings" + + "github.com/prometheus/procfs/internal/util" +) + +// - https://man7.org/linux/man-pages/man5/proc_pid_statm.5.html + +// ProcStatm Provides memory usage information for a process, measured in memory pages. +// Read from /proc/[pid]/statm. +type ProcStatm struct { + // The process ID. + PID int + // total program size (same as VmSize in status) + Size uint64 + // resident set size (same as VmRSS in status) + Resident uint64 + // number of resident shared pages (i.e., backed by a file) + Shared uint64 + // text (code) + Text uint64 + // library (unused since Linux 2.6; always 0) + Lib uint64 + // data + stack + Data uint64 + // dirty pages (unused since Linux 2.6; always 0) + Dt uint64 +} + +// NewStatm returns the current status information of the process. +// Deprecated: Use p.Statm() instead. +func (p Proc) NewStatm() (ProcStatm, error) { + return p.Statm() +} + +// Statm returns the current memory usage information of the process. +func (p Proc) Statm() (ProcStatm, error) { + data, err := util.ReadFileNoStat(p.path("statm")) + if err != nil { + return ProcStatm{}, err + } + + statmSlice, err := parseStatm(data) + if err != nil { + return ProcStatm{}, err + } + + procStatm := ProcStatm{ + PID: p.PID, + Size: statmSlice[0], + Resident: statmSlice[1], + Shared: statmSlice[2], + Text: statmSlice[3], + Lib: statmSlice[4], + Data: statmSlice[5], + Dt: statmSlice[6], + } + + return procStatm, nil +} + +// parseStatm return /proc/[pid]/statm data to uint64 slice. +func parseStatm(data []byte) ([]uint64, error) { + var statmSlice []uint64 + statmItems := strings.Fields(string(data)) + for i := 0; i < len(statmItems); i++ { + statmItem, err := strconv.ParseUint(statmItems[i], 10, 64) + if err != nil { + return nil, err + } + statmSlice = append(statmSlice, statmItem) + } + return statmSlice, nil +} + +// SizeBytes returns the process of total program size in bytes. +func (s ProcStatm) SizeBytes() uint64 { + return s.Size * uint64(os.Getpagesize()) +} + +// ResidentBytes returns the process of resident set size in bytes. +func (s ProcStatm) ResidentBytes() uint64 { + return s.Resident * uint64(os.Getpagesize()) +} + +// SHRBytes returns the process of share memory size in bytes. +func (s ProcStatm) SHRBytes() uint64 { + return s.Shared * uint64(os.Getpagesize()) +} + +// TextBytes returns the process of text (code) size in bytes. +func (s ProcStatm) TextBytes() uint64 { + return s.Text * uint64(os.Getpagesize()) +} + +// DataBytes returns the process of data + stack size in bytes. +func (s ProcStatm) DataBytes() uint64 { + return s.Data * uint64(os.Getpagesize()) +} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go index 915d5090d..08c36e74f 100644 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go +++ b/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go @@ -1146,13 +1146,28 @@ func (dmp *DiffMatchPatch) DiffPrettyText(diffs []Diff) string { switch diff.Type { case DiffInsert: - _, _ = buff.WriteString("\x1b[32m") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("\x1b[0m") + lines := strings.Split(text, "\n") + for i, line := range lines { + _, _ = buff.WriteString("\x1b[32m") + _, _ = buff.WriteString(line) + if i < len(lines)-1 { + _, _ = buff.WriteString("\x1b[0m\n") + } else { + _, _ = buff.WriteString("\x1b[0m") + } + } + case DiffDelete: - _, _ = buff.WriteString("\x1b[31m") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("\x1b[0m") + lines := strings.Split(text, "\n") + for i, line := range lines { + _, _ = buff.WriteString("\x1b[31m") + _, _ = buff.WriteString(line) + if i < len(lines)-1 { + _, _ = buff.WriteString("\x1b[0m\n") + } else { + _, _ = buff.WriteString("\x1b[0m") + } + } case DiffEqual: _, _ = buff.WriteString(text) } @@ -1305,7 +1320,6 @@ func (dmp *DiffMatchPatch) DiffFromDelta(text1 string, delta string) (diffs []Di // diffLinesToStrings splits two texts into a list of strings. Each string represents one line. func (dmp *DiffMatchPatch) diffLinesToStrings(text1, text2 string) (string, string, []string) { - // '\x00' is a valid character, but various debuggers don't like it. So we'll insert a junk entry to avoid generating a null character. lineArray := []string{""} // e.g. lineArray[4] == 'Hello\n' lineHash := make(map[string]int) @@ -1316,12 +1330,11 @@ func (dmp *DiffMatchPatch) diffLinesToStrings(text1, text2 string) (string, stri return intArrayToString(strIndexArray1), intArrayToString(strIndexArray2), lineArray } -// diffLinesToStringsMunge splits a text into an array of strings, and reduces the texts to a []string. -func (dmp *DiffMatchPatch) diffLinesToStringsMunge(text string, lineArray *[]string, lineHash map[string]int) []uint32 { - // Walk the text, pulling out a substring for each line. text.split('\n') would would temporarily double our memory footprint. Modifying text would create many large strings to garbage collect. +// diffLinesToStringsMunge splits a text into an array of strings, and reduces the texts to a []index. +func (dmp *DiffMatchPatch) diffLinesToStringsMunge(text string, lineArray *[]string, lineHash map[string]int) []index { lineStart := 0 lineEnd := -1 - strs := []uint32{} + strs := []index{} for lineEnd < len(text)-1 { lineEnd = indexOf(text, "\n", lineStart) @@ -1335,11 +1348,11 @@ func (dmp *DiffMatchPatch) diffLinesToStringsMunge(text string, lineArray *[]str lineValue, ok := lineHash[line] if ok { - strs = append(strs, uint32(lineValue)) + strs = append(strs, index(lineValue)) } else { *lineArray = append(*lineArray, line) lineHash[line] = len(*lineArray) - 1 - strs = append(strs, uint32(len(*lineArray)-1)) + strs = append(strs, index(len(*lineArray)-1)) } } diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/index.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/index.go new file mode 100644 index 000000000..965a1c64b --- /dev/null +++ b/vendor/github.com/sergi/go-diff/diffmatchpatch/index.go @@ -0,0 +1,32 @@ +package diffmatchpatch + +type index uint32 + +const runeSkipStart = 0xd800 +const runeSkipEnd = 0xdfff + 1 +const runeMax = 0x110000 // next invalid code point + +func stringToIndex(text string) []index { + runes := []rune(text) + indexes := make([]index, len(runes)) + for i, r := range runes { + if r < runeSkipEnd { + indexes[i] = index(r) + } else { + indexes[i] = index(r) - (runeSkipEnd - runeSkipStart) + } + } + return indexes +} + +func indexesToString(indexes []index) string { + runes := make([]rune, len(indexes)) + for i, index := range indexes { + if index < runeSkipStart { + runes[i] = rune(index) + } else { + runes[i] = rune(index + (runeSkipEnd - runeSkipStart)) + } + } + return string(runes) +} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go index eb727bb59..573b6bf75 100644 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go +++ b/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go @@ -93,14 +93,14 @@ func runesIndex(r1, r2 []rune) int { return -1 } -func intArrayToString(ns []uint32) string { +func intArrayToString(ns []index) string { if len(ns) == 0 { return "" } b := []rune{} for _, n := range ns { - b = append(b, intToRune(n)) + b = append(b, intToRune(uint32(n))) } return string(b) } diff --git a/vendor/github.com/ugorji/go/codec/README.md b/vendor/github.com/ugorji/go/codec/README.md index b8c1829bb..d50e90e45 100644 --- a/vendor/github.com/ugorji/go/codec/README.md +++ b/vendor/github.com/ugorji/go/codec/README.md @@ -80,6 +80,32 @@ Rich Feature Set includes: rpc server/client codec to support msgpack-rpc protocol defined at: https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md +# Supported build tags + +We gain performance by code-generating fast-paths for slices and maps of built-in types, +and monomorphizing generic code explicitly so we gain inlining and de-virtualization benefits. + +The results are 20-40% performance improvements. + +Building and running is configured using build tags as below. + +At runtime: + +- codec.safe: run in safe mode (not using unsafe optimizations) +- codec.notmono: use generics code (bypassing performance-boosting monomorphized code) +- codec.notfastpath: skip fast path code for slices and maps of built-in types (number, bool, string, bytes) + +Each of these "runtime" tags have a convenience synonym i.e. safe, notmono, notfastpath. +Pls use these mostly during development - use codec.XXX in your go files. + +Build only: + +- codec.build: used to generate fastpath and monomorphization code + +Test only: + +- codec.notmammoth: skip the mammoth generated tests + # Extension Support Users can register a function to handle the encoding or decoding of their custom @@ -219,6 +245,12 @@ You can run the tag 'codec.safe' to run tests or build in safe mode. e.g. go test -tags "alltests codec.safe" -run Suite ``` +You can run the tag 'codec.notmono' to build bypassing the monomorphized code e.g. + +``` + go test -tags codec.notmono -run Json +``` + # Running Benchmarks ``` diff --git a/vendor/github.com/ugorji/go/codec/base.fastpath.generated.go b/vendor/github.com/ugorji/go/codec/base.fastpath.generated.go new file mode 100644 index 000000000..d1fbba460 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/base.fastpath.generated.go @@ -0,0 +1,259 @@ +//go:build !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// Code generated from fastpath.go.tmpl - DO NOT EDIT. + +package codec + +// Fast path functions try to create a fast path encode or decode implementation +// for common maps and slices. +// +// We define the functions and register them in this single file +// so as not to pollute the encode.go and decode.go, and create a dependency in there. +// This file can be omitted without causing a build failure. +// +// The advantage of fast paths is: +// - Many calls bypass reflection altogether +// +// Currently support +// - slice of all builtin types (numeric, bool, string, []byte) +// - maps of builtin types to builtin or interface{} type, EXCEPT FOR +// keys of type uintptr, int8/16/32, uint16/32, float32/64, bool, interface{} +// AND values of type type int8/16/32, uint16/32 +// This should provide adequate "typical" implementations. +// +// Note that fast track decode functions must handle values for which an address cannot be obtained. +// For example: +// m2 := map[string]int{} +// p2 := []interface{}{m2} +// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. +// + +import ( + "reflect" + "slices" + "sort" +) + +const fastpathEnabled = true + +type fastpathARtid [56]uintptr + +type fastpathRtRtid struct { + rtid uintptr + rt reflect.Type +} +type fastpathARtRtid [56]fastpathRtRtid + +var ( + fastpathAvRtidArr fastpathARtid + fastpathAvRtRtidArr fastpathARtRtid + fastpathAvRtid = fastpathAvRtidArr[:] + fastpathAvRtRtid = fastpathAvRtRtidArr[:] +) + +func fastpathAvIndex(rtid uintptr) (i uint, ok bool) { + return searchRtids(fastpathAvRtid, rtid) +} + +func init() { + var i uint = 0 + fn := func(v interface{}) { + xrt := reflect.TypeOf(v) + xrtid := rt2id(xrt) + xptrtid := rt2id(reflect.PointerTo(xrt)) + fastpathAvRtid[i] = xrtid + fastpathAvRtRtid[i] = fastpathRtRtid{rtid: xrtid, rt: xrt} + encBuiltinRtids = append(encBuiltinRtids, xrtid, xptrtid) + decBuiltinRtids = append(decBuiltinRtids, xrtid, xptrtid) + i++ + } + + fn([]interface{}(nil)) + fn([]string(nil)) + fn([][]byte(nil)) + fn([]float32(nil)) + fn([]float64(nil)) + fn([]uint8(nil)) + fn([]uint64(nil)) + fn([]int(nil)) + fn([]int32(nil)) + fn([]int64(nil)) + fn([]bool(nil)) + + fn(map[string]interface{}(nil)) + fn(map[string]string(nil)) + fn(map[string][]byte(nil)) + fn(map[string]uint8(nil)) + fn(map[string]uint64(nil)) + fn(map[string]int(nil)) + fn(map[string]int32(nil)) + fn(map[string]float64(nil)) + fn(map[string]bool(nil)) + fn(map[uint8]interface{}(nil)) + fn(map[uint8]string(nil)) + fn(map[uint8][]byte(nil)) + fn(map[uint8]uint8(nil)) + fn(map[uint8]uint64(nil)) + fn(map[uint8]int(nil)) + fn(map[uint8]int32(nil)) + fn(map[uint8]float64(nil)) + fn(map[uint8]bool(nil)) + fn(map[uint64]interface{}(nil)) + fn(map[uint64]string(nil)) + fn(map[uint64][]byte(nil)) + fn(map[uint64]uint8(nil)) + fn(map[uint64]uint64(nil)) + fn(map[uint64]int(nil)) + fn(map[uint64]int32(nil)) + fn(map[uint64]float64(nil)) + fn(map[uint64]bool(nil)) + fn(map[int]interface{}(nil)) + fn(map[int]string(nil)) + fn(map[int][]byte(nil)) + fn(map[int]uint8(nil)) + fn(map[int]uint64(nil)) + fn(map[int]int(nil)) + fn(map[int]int32(nil)) + fn(map[int]float64(nil)) + fn(map[int]bool(nil)) + fn(map[int32]interface{}(nil)) + fn(map[int32]string(nil)) + fn(map[int32][]byte(nil)) + fn(map[int32]uint8(nil)) + fn(map[int32]uint64(nil)) + fn(map[int32]int(nil)) + fn(map[int32]int32(nil)) + fn(map[int32]float64(nil)) + fn(map[int32]bool(nil)) + + sort.Slice(fastpathAvRtid, func(i, j int) bool { return fastpathAvRtid[i] < fastpathAvRtid[j] }) + sort.Slice(fastpathAvRtRtid, func(i, j int) bool { return fastpathAvRtRtid[i].rtid < fastpathAvRtRtid[j].rtid }) + slices.Sort(encBuiltinRtids) + slices.Sort(decBuiltinRtids) +} + +func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool { + switch v := iv.(type) { + case *[]interface{}: + *v = nil + case *[]string: + *v = nil + case *[][]byte: + *v = nil + case *[]float32: + *v = nil + case *[]float64: + *v = nil + case *[]uint8: + *v = nil + case *[]uint64: + *v = nil + case *[]int: + *v = nil + case *[]int32: + *v = nil + case *[]int64: + *v = nil + case *[]bool: + *v = nil + + case *map[string]interface{}: + *v = nil + case *map[string]string: + *v = nil + case *map[string][]byte: + *v = nil + case *map[string]uint8: + *v = nil + case *map[string]uint64: + *v = nil + case *map[string]int: + *v = nil + case *map[string]int32: + *v = nil + case *map[string]float64: + *v = nil + case *map[string]bool: + *v = nil + case *map[uint8]interface{}: + *v = nil + case *map[uint8]string: + *v = nil + case *map[uint8][]byte: + *v = nil + case *map[uint8]uint8: + *v = nil + case *map[uint8]uint64: + *v = nil + case *map[uint8]int: + *v = nil + case *map[uint8]int32: + *v = nil + case *map[uint8]float64: + *v = nil + case *map[uint8]bool: + *v = nil + case *map[uint64]interface{}: + *v = nil + case *map[uint64]string: + *v = nil + case *map[uint64][]byte: + *v = nil + case *map[uint64]uint8: + *v = nil + case *map[uint64]uint64: + *v = nil + case *map[uint64]int: + *v = nil + case *map[uint64]int32: + *v = nil + case *map[uint64]float64: + *v = nil + case *map[uint64]bool: + *v = nil + case *map[int]interface{}: + *v = nil + case *map[int]string: + *v = nil + case *map[int][]byte: + *v = nil + case *map[int]uint8: + *v = nil + case *map[int]uint64: + *v = nil + case *map[int]int: + *v = nil + case *map[int]int32: + *v = nil + case *map[int]float64: + *v = nil + case *map[int]bool: + *v = nil + case *map[int32]interface{}: + *v = nil + case *map[int32]string: + *v = nil + case *map[int32][]byte: + *v = nil + case *map[int32]uint8: + *v = nil + case *map[int32]uint64: + *v = nil + case *map[int32]int: + *v = nil + case *map[int32]int32: + *v = nil + case *map[int32]float64: + *v = nil + case *map[int32]bool: + *v = nil + + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} diff --git a/vendor/github.com/ugorji/go/codec/base.fastpath.notmono.generated.go b/vendor/github.com/ugorji/go/codec/base.fastpath.notmono.generated.go new file mode 100644 index 000000000..572383463 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/base.fastpath.notmono.generated.go @@ -0,0 +1,6259 @@ +//go:build !notfastpath && !codec.notfastpath && (notmono || codec.notmono) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// Code generated from fastpath.notmono.go.tmpl - DO NOT EDIT. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathE[T encDriver] struct { + rtid uintptr + rt reflect.Type + encfn func(*encoder[T], *encFnInfo, reflect.Value) +} +type fastpathD[T decDriver] struct { + rtid uintptr + rt reflect.Type + decfn func(*decoder[T], *decFnInfo, reflect.Value) +} +type fastpathEs[T encDriver] [56]fastpathE[T] +type fastpathDs[T decDriver] [56]fastpathD[T] + +type fastpathET[T encDriver] struct{} +type fastpathDT[T decDriver] struct{} + +func (helperEncDriver[T]) fastpathEList() *fastpathEs[T] { + var i uint = 0 + var s fastpathEs[T] + fn := func(v interface{}, fe func(*encoder[T], *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathE[T]{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoder[T]).fastpathEncSliceIntfR) + fn([]string(nil), (*encoder[T]).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoder[T]).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoder[T]).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoder[T]).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoder[T]).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoder[T]).fastpathEncSliceUint64R) + fn([]int(nil), (*encoder[T]).fastpathEncSliceIntR) + fn([]int32(nil), (*encoder[T]).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoder[T]).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoder[T]).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoder[T]).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoder[T]).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoder[T]).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoder[T]).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoder[T]).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoder[T]).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoder[T]).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoder[T]).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoder[T]).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoder[T]).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoder[T]).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoder[T]).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoder[T]).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoder[T]).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoder[T]).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoder[T]).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoder[T]).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoder[T]).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoder[T]).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoder[T]).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoder[T]).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoder[T]).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoder[T]).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoder[T]).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoder[T]).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoder[T]).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoder[T]).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoder[T]).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoder[T]).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoder[T]).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoder[T]).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoder[T]).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoder[T]).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoder[T]).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoder[T]).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoder[T]).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoder[T]).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoder[T]).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoder[T]).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoder[T]).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoder[T]).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoder[T]).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoder[T]).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoder[T]).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoder[T]).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriver[T]) fastpathDList() *fastpathDs[T] { + var i uint = 0 + var s fastpathDs[T] + fn := func(v interface{}, fd func(*decoder[T], *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathD[T]{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoder[T]).fastpathDecSliceIntfR) + fn([]string(nil), (*decoder[T]).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoder[T]).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoder[T]).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoder[T]).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoder[T]).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoder[T]).fastpathDecSliceUint64R) + fn([]int(nil), (*decoder[T]).fastpathDecSliceIntR) + fn([]int32(nil), (*decoder[T]).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoder[T]).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoder[T]).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoder[T]).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoder[T]).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoder[T]).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoder[T]).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoder[T]).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoder[T]).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoder[T]).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoder[T]).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoder[T]).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoder[T]).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoder[T]).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoder[T]).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoder[T]).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoder[T]).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoder[T]).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoder[T]).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoder[T]).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoder[T]).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoder[T]).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoder[T]).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoder[T]).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoder[T]).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoder[T]).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoder[T]).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoder[T]).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoder[T]).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoder[T]).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoder[T]).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoder[T]).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoder[T]).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoder[T]).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoder[T]).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoder[T]).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoder[T]).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoder[T]).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoder[T]).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoder[T]).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoder[T]).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoder[T]).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoder[T]).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoder[T]).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoder[T]).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoder[T]).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoder[T]).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoder[T]).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +// -- encode + +// -- -- fast path type switch +func (helperEncDriver[T]) fastpathEncodeTypeSwitch(iv interface{}, e *encoder[T]) bool { + var ft fastpathET[T] + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} + +// -- -- fast path functions +func (e *encoder[T]) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathET[T]) EncSliceIntfV(v []interface{}, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceIntfV(v []interface{}, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathET[T]) EncSliceStringV(v []string, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceStringV(v []string, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathET[T]) EncSliceBytesV(v [][]byte, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceBytesV(v [][]byte, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathET[T]) EncSliceFloat32V(v []float32, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceFloat32V(v []float32, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathET[T]) EncSliceFloat64V(v []float64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceFloat64V(v []float64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathET[T]) EncSliceUint8V(v []uint8, e *encoder[T]) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathET[T]) EncAsMapSliceUint8V(v []uint8, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathET[T]) EncSliceUint64V(v []uint64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceUint64V(v []uint64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathET[T]) EncSliceIntV(v []int, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceIntV(v []int, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathET[T]) EncSliceInt32V(v []int32, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceInt32V(v []int32, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathET[T]) EncSliceInt64V(v []int64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceInt64V(v []int64, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathET[T]) EncSliceBoolV(v []bool, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathET[T]) EncAsMapSliceBoolV(v []bool, e *encoder[T]) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoder[T]) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathET[T]) EncMapStringIntfV(v map[string]interface{}, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathET[T]) EncMapStringStringV(v map[string]string, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathET[T]) EncMapStringBytesV(v map[string][]byte, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathET[T]) EncMapStringUint8V(v map[string]uint8, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathET[T]) EncMapStringUint64V(v map[string]uint64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathET[T]) EncMapStringIntV(v map[string]int, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathET[T]) EncMapStringInt32V(v map[string]int32, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathET[T]) EncMapStringFloat64V(v map[string]float64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathET[T]) EncMapStringBoolV(v map[string]bool, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathET[T]) EncMapUint8IntfV(v map[uint8]interface{}, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathET[T]) EncMapUint8StringV(v map[uint8]string, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathET[T]) EncMapUint8BytesV(v map[uint8][]byte, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathET[T]) EncMapUint8Uint8V(v map[uint8]uint8, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathET[T]) EncMapUint8Uint64V(v map[uint8]uint64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathET[T]) EncMapUint8IntV(v map[uint8]int, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathET[T]) EncMapUint8Int32V(v map[uint8]int32, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathET[T]) EncMapUint8Float64V(v map[uint8]float64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathET[T]) EncMapUint8BoolV(v map[uint8]bool, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathET[T]) EncMapUint64IntfV(v map[uint64]interface{}, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathET[T]) EncMapUint64StringV(v map[uint64]string, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathET[T]) EncMapUint64BytesV(v map[uint64][]byte, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathET[T]) EncMapUint64Uint8V(v map[uint64]uint8, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathET[T]) EncMapUint64Uint64V(v map[uint64]uint64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathET[T]) EncMapUint64IntV(v map[uint64]int, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathET[T]) EncMapUint64Int32V(v map[uint64]int32, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathET[T]) EncMapUint64Float64V(v map[uint64]float64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathET[T]) EncMapUint64BoolV(v map[uint64]bool, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathET[T]) EncMapIntIntfV(v map[int]interface{}, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathET[T]) EncMapIntStringV(v map[int]string, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathET[T]) EncMapIntBytesV(v map[int][]byte, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathET[T]) EncMapIntUint8V(v map[int]uint8, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathET[T]) EncMapIntUint64V(v map[int]uint64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathET[T]) EncMapIntIntV(v map[int]int, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathET[T]) EncMapIntInt32V(v map[int]int32, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathET[T]) EncMapIntFloat64V(v map[int]float64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathET[T]) EncMapIntBoolV(v map[int]bool, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathET[T]) EncMapInt32IntfV(v map[int32]interface{}, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathET[T]) EncMapInt32StringV(v map[int32]string, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathET[T]) EncMapInt32BytesV(v map[int32][]byte, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathET[T]) EncMapInt32Uint8V(v map[int32]uint8, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathET[T]) EncMapInt32Uint64V(v map[int32]uint64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathET[T]) EncMapInt32IntV(v map[int32]int, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathET[T]) EncMapInt32Int32V(v map[int32]int32, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathET[T]) EncMapInt32Float64V(v map[int32]float64, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoder[T]) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathET[T]{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathET[T]) EncMapInt32BoolV(v map[int32]bool, e *encoder[T]) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +// -- decode + +// -- -- fast path type switch +func (helperDecDriver[T]) fastpathDecodeTypeSwitch(iv interface{}, d *decoder[T]) bool { + var ft fastpathDT[T] + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} + +// -- -- fast path functions + +func (d *decoder[T]) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDT[T]) DecSliceIntfY(v []interface{}, d *decoder[T]) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceIntfN(v []interface{}, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDT[T]) DecSliceStringY(v []string, d *decoder[T]) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceStringN(v []string, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDT[T]) DecSliceBytesY(v [][]byte, d *decoder[T]) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceBytesN(v [][]byte, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDT[T]) DecSliceFloat32Y(v []float32, d *decoder[T]) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceFloat32N(v []float32, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDT[T]) DecSliceFloat64Y(v []float64, d *decoder[T]) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceFloat64N(v []float64, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDT[T]) DecSliceUint8Y(v []uint8, d *decoder[T]) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDT[T]) DecSliceUint8N(v []uint8, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoder[T]) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDT[T]) DecSliceUint64Y(v []uint64, d *decoder[T]) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceUint64N(v []uint64, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDT[T]) DecSliceIntY(v []int, d *decoder[T]) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceIntN(v []int, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDT[T]) DecSliceInt32Y(v []int32, d *decoder[T]) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceInt32N(v []int32, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDT[T]) DecSliceInt64Y(v []int64, d *decoder[T]) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceInt64N(v []int64, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoder[T]) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDT[T]) DecSliceBoolY(v []bool, d *decoder[T]) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDT[T]) DecSliceBoolN(v []bool, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoder[T]) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoder[T]) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringStringL(v map[string]string, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoder[T]) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoder[T]) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoder[T]) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoder[T]) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringIntL(v map[string]int, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoder[T]) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoder[T]) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoder[T]) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoder[T]) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoder[T]) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoder[T]) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoder[T]) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoder[T]) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoder[T]) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoder[T]) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoder[T]) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoder[T]) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoder[T]) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoder[T]) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoder[T]) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoder[T]) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoder[T]) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoder[T]) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoder[T]) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoder[T]) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoder[T]) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoder[T]) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoder[T]) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntStringL(v map[int]string, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoder[T]) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoder[T]) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoder[T]) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoder[T]) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntIntL(v map[int]int, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoder[T]) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoder[T]) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoder[T]) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoder[T]) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoder[T]) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoder[T]) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoder[T]) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoder[T]) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoder[T]) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoder[T]) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoder[T]) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoder[T]) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/fast-path.not.go b/vendor/github.com/ugorji/go/codec/base.notfastpath.go similarity index 62% rename from vendor/github.com/ugorji/go/codec/fast-path.not.go rename to vendor/github.com/ugorji/go/codec/base.notfastpath.go index 3fcc8fd3a..b4c41fb9f 100644 --- a/vendor/github.com/ugorji/go/codec/fast-path.not.go +++ b/vendor/github.com/ugorji/go/codec/base.notfastpath.go @@ -2,7 +2,6 @@ // Use of this source code is governed by a MIT license found in the LICENSE file. //go:build notfastpath || codec.notfastpath -// +build notfastpath codec.notfastpath package codec @@ -18,24 +17,18 @@ const fastpathEnabled = false // This tag disables fastpath during build, allowing for faster build, test execution, // short-program runs, etc. -func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { return false } -func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { return false } - // func fastpathEncodeTypeSwitchSlice(iv interface{}, e *Encoder) bool { return false } // func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { return false } func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool { return false } -type fastpathT struct{} -type fastpathE struct { - rtid uintptr - rt reflect.Type - encfn func(*Encoder, *codecFnInfo, reflect.Value) - decfn func(*Decoder, *codecFnInfo, reflect.Value) +func fastpathAvIndex(rtid uintptr) (uint, bool) { return 0, false } + +type fastpathRtRtid struct { + rtid uintptr + rt reflect.Type } -type fastpathA [0]fastpathE -func fastpathAvIndex(rtid uintptr) int { return -1 } +type fastpathARtRtid [0]fastpathRtRtid -var fastpathAv fastpathA -var fastpathTV fastpathT +var fastpathAvRtRtid fastpathARtRtid diff --git a/vendor/github.com/ugorji/go/codec/base.notfastpath.notmono.go b/vendor/github.com/ugorji/go/codec/base.notfastpath.notmono.go new file mode 100644 index 000000000..a692849b5 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/base.notfastpath.notmono.go @@ -0,0 +1,26 @@ +//go:build notfastpath || (codec.notfastpath && (notmono || codec.notmono)) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import "reflect" + +// type fastpathT struct{} +type fastpathE[T encDriver] struct { + rt reflect.Type + encfn func(*encoder[T], *encFnInfo, reflect.Value) +} +type fastpathD[T decDriver] struct { + rt reflect.Type + decfn func(*decoder[T], *decFnInfo, reflect.Value) +} +type fastpathEs[T encDriver] [0]fastpathE[T] +type fastpathDs[T decDriver] [0]fastpathD[T] + +func (helperEncDriver[T]) fastpathEncodeTypeSwitch(iv interface{}, e *encoder[T]) bool { return false } +func (helperDecDriver[T]) fastpathDecodeTypeSwitch(iv interface{}, d *decoder[T]) bool { return false } + +func (helperEncDriver[T]) fastpathEList() (v *fastpathEs[T]) { return } +func (helperDecDriver[T]) fastpathDList() (v *fastpathDs[T]) { return } diff --git a/vendor/github.com/ugorji/go/codec/binc.base.go b/vendor/github.com/ugorji/go/codec/binc.base.go new file mode 100644 index 000000000..29da5acdb --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/binc.base.go @@ -0,0 +1,194 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "time" +) + +// Symbol management: +// - symbols are stored in a symbol map during encoding and decoding. +// - the symbols persist until the (En|De)coder ResetXXX method is called. + +const bincDoPrune = true + +// vd as low 4 bits (there are 16 slots) +const ( + bincVdSpecial byte = iota + bincVdPosInt + bincVdNegInt + bincVdFloat + + bincVdString + bincVdByteArray + bincVdArray + bincVdMap + + bincVdTimestamp + bincVdSmallInt + _ // bincVdUnicodeOther + bincVdSymbol + + _ // bincVdDecimal + _ // open slot + _ // open slot + bincVdCustomExt = 0x0f +) + +const ( + bincSpNil byte = iota + bincSpFalse + bincSpTrue + bincSpNan + bincSpPosInf + bincSpNegInf + bincSpZeroFloat + bincSpZero + bincSpNegOne +) + +const ( + _ byte = iota // bincFlBin16 + bincFlBin32 + _ // bincFlBin32e + bincFlBin64 + _ // bincFlBin64e + // others not currently supported +) + +const bincBdNil = 0 // bincVdSpecial<<4 | bincSpNil // staticcheck barfs on this (SA4016) + +var ( + bincdescSpecialVsNames = map[byte]string{ + bincSpNil: "nil", + bincSpFalse: "false", + bincSpTrue: "true", + bincSpNan: "float", + bincSpPosInf: "float", + bincSpNegInf: "float", + bincSpZeroFloat: "float", + bincSpZero: "uint", + bincSpNegOne: "int", + } + bincdescVdNames = map[byte]string{ + bincVdSpecial: "special", + bincVdSmallInt: "uint", + bincVdPosInt: "uint", + bincVdFloat: "float", + bincVdSymbol: "string", + bincVdString: "string", + bincVdByteArray: "bytes", + bincVdTimestamp: "time", + bincVdCustomExt: "ext", + bincVdArray: "array", + bincVdMap: "map", + } +) + +func bincdescbd(bd byte) (s string) { + return bincdesc(bd>>4, bd&0x0f) +} + +func bincdesc(vd, vs byte) (s string) { + if vd == bincVdSpecial { + s = bincdescSpecialVsNames[vs] + } else { + s = bincdescVdNames[vd] + } + if s == "" { + s = "unknown" + } + return +} + +type bincEncState struct { + m map[string]uint16 // symbols +} + +// func (e *bincEncState) restoreState(v interface{}) { e.m = v.(map[string]uint16) } +// func (e bincEncState) captureState() interface{} { return e.m } +// func (e *bincEncState) resetState() { e.m = nil } +// func (e *bincEncState) reset() { e.resetState() } +func (e *bincEncState) reset() { e.m = nil } + +type bincDecState struct { + bdRead bool + bd byte + vd byte + vs byte + + _ bool + // MARKER: consider using binary search here instead of a map (ie bincDecSymbol) + s map[uint16][]byte +} + +// func (x bincDecState) captureState() interface{} { return x } +// func (x *bincDecState) resetState() { *x = bincDecState{} } +// func (x *bincDecState) reset() { x.resetState() } +// func (x *bincDecState) restoreState(v interface{}) { *x = v.(bincDecState) } +func (x *bincDecState) reset() { *x = bincDecState{} } + +//------------------------------------ + +// BincHandle is a Handle for the Binc Schema-Free Encoding Format +// defined at https://github.com/ugorji/binc . +// +// BincHandle currently supports all Binc features with the following EXCEPTIONS: +// - only integers up to 64 bits of precision are supported. +// big integers are unsupported. +// - Only IEEE 754 binary32 and binary64 floats are supported (ie Go float32 and float64 types). +// extended precision and decimal IEEE 754 floats are unsupported. +// - Only UTF-8 strings supported. +// Unicode_Other Binc types (UTF16, UTF32) are currently unsupported. +// +// Note that these EXCEPTIONS are temporary and full support is possible and may happen soon. +type BincHandle struct { + binaryEncodingType + notJsonType + // noElemSeparators + BasicHandle + + // AsSymbols defines what should be encoded as symbols. + // + // Encoding as symbols can reduce the encoded size significantly. + // + // However, during decoding, each string to be encoded as a symbol must + // be checked to see if it has been seen before. Consequently, encoding time + // will increase if using symbols, because string comparisons has a clear cost. + // + // Values: + // - 0: default: library uses best judgement + // - 1: use symbols + // - 2: do not use symbols + AsSymbols uint8 + + // AsSymbols: may later on introduce more options ... + // - m: map keys + // - s: struct fields + // - n: none + // - a: all: same as m, s, ... + + // _ [7]uint64 // padding (cache-aligned) +} + +// Name returns the name of the handle: binc +func (h *BincHandle) Name() string { return "binc" } + +func (h *BincHandle) desc(bd byte) string { return bincdesc(bd>>4, bd&0x0f) } + +// SetBytesExt sets an extension +func (h *BincHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, makeExt(ext)) +} + +// var timeDigits = [...]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} + +func bincEncodeTime(t time.Time) []byte { + return customEncodeTime(t) +} + +func bincDecodeTime(bs []byte) (tt time.Time, err error) { + return customDecodeTime(bs) +} diff --git a/vendor/github.com/ugorji/go/codec/binc.fastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/binc.fastpath.mono.generated.go new file mode 100644 index 000000000..7721027e1 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/binc.fastpath.mono.generated.go @@ -0,0 +1,12482 @@ +//go:build !notmono && !codec.notmono && !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathEBincBytes struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderBincBytes, *encFnInfo, reflect.Value) +} +type fastpathDBincBytes struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderBincBytes, *decFnInfo, reflect.Value) +} +type fastpathEsBincBytes [56]fastpathEBincBytes +type fastpathDsBincBytes [56]fastpathDBincBytes +type fastpathETBincBytes struct{} +type fastpathDTBincBytes struct{} + +func (helperEncDriverBincBytes) fastpathEList() *fastpathEsBincBytes { + var i uint = 0 + var s fastpathEsBincBytes + fn := func(v interface{}, fe func(*encoderBincBytes, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEBincBytes{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderBincBytes).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderBincBytes).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderBincBytes).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderBincBytes).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderBincBytes).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderBincBytes).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderBincBytes).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderBincBytes).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderBincBytes).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderBincBytes).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderBincBytes).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderBincBytes).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderBincBytes).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderBincBytes).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderBincBytes).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderBincBytes).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderBincBytes).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderBincBytes).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderBincBytes).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderBincBytes).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderBincBytes).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderBincBytes).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderBincBytes).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderBincBytes).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderBincBytes).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderBincBytes).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderBincBytes).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderBincBytes).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderBincBytes).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderBincBytes).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderBincBytes).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderBincBytes).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderBincBytes).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderBincBytes).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderBincBytes).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderBincBytes).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderBincBytes).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderBincBytes).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderBincBytes).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderBincBytes).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderBincBytes).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderBincBytes).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderBincBytes).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderBincBytes).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderBincBytes).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderBincBytes).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderBincBytes).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderBincBytes).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderBincBytes).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderBincBytes).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderBincBytes).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderBincBytes).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderBincBytes).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderBincBytes).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderBincBytes).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderBincBytes).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverBincBytes) fastpathDList() *fastpathDsBincBytes { + var i uint = 0 + var s fastpathDsBincBytes + fn := func(v interface{}, fd func(*decoderBincBytes, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDBincBytes{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderBincBytes).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderBincBytes).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderBincBytes).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderBincBytes).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderBincBytes).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderBincBytes).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderBincBytes).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderBincBytes).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderBincBytes).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderBincBytes).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderBincBytes).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderBincBytes).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderBincBytes).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderBincBytes).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderBincBytes).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderBincBytes).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderBincBytes).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderBincBytes).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderBincBytes).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderBincBytes).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderBincBytes).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderBincBytes).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderBincBytes).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderBincBytes).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderBincBytes).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderBincBytes).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderBincBytes).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderBincBytes).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderBincBytes).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderBincBytes).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderBincBytes).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderBincBytes).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderBincBytes).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderBincBytes).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderBincBytes).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderBincBytes).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderBincBytes).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderBincBytes).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderBincBytes).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderBincBytes).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderBincBytes).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderBincBytes).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderBincBytes).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderBincBytes).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderBincBytes).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderBincBytes).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderBincBytes).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderBincBytes).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderBincBytes).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderBincBytes).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderBincBytes).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderBincBytes).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderBincBytes).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderBincBytes).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderBincBytes).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderBincBytes).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverBincBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderBincBytes) bool { + var ft fastpathETBincBytes + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderBincBytes) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETBincBytes) EncSliceIntfV(v []interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceIntfV(v []interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETBincBytes) EncSliceStringV(v []string, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceStringV(v []string, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETBincBytes) EncSliceBytesV(v [][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceBytesV(v [][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETBincBytes) EncSliceFloat32V(v []float32, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceFloat32V(v []float32, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETBincBytes) EncSliceFloat64V(v []float64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceFloat64V(v []float64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETBincBytes) EncSliceUint8V(v []uint8, e *encoderBincBytes) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETBincBytes) EncAsMapSliceUint8V(v []uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETBincBytes) EncSliceUint64V(v []uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceUint64V(v []uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETBincBytes) EncSliceIntV(v []int, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceIntV(v []int, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETBincBytes) EncSliceInt32V(v []int32, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceInt32V(v []int32, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETBincBytes) EncSliceInt64V(v []int64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceInt64V(v []int64, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincBytes + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETBincBytes) EncSliceBoolV(v []bool, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincBytes) EncAsMapSliceBoolV(v []bool, e *encoderBincBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETBincBytes) EncMapStringIntfV(v map[string]interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETBincBytes) EncMapStringStringV(v map[string]string, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETBincBytes) EncMapStringBytesV(v map[string][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETBincBytes) EncMapStringUint8V(v map[string]uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETBincBytes) EncMapStringUint64V(v map[string]uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETBincBytes) EncMapStringIntV(v map[string]int, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETBincBytes) EncMapStringInt32V(v map[string]int32, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETBincBytes) EncMapStringFloat64V(v map[string]float64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETBincBytes) EncMapStringBoolV(v map[string]bool, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETBincBytes) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETBincBytes) EncMapUint8StringV(v map[uint8]string, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETBincBytes) EncMapUint8BytesV(v map[uint8][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETBincBytes) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETBincBytes) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETBincBytes) EncMapUint8IntV(v map[uint8]int, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETBincBytes) EncMapUint8Int32V(v map[uint8]int32, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETBincBytes) EncMapUint8Float64V(v map[uint8]float64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETBincBytes) EncMapUint8BoolV(v map[uint8]bool, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETBincBytes) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETBincBytes) EncMapUint64StringV(v map[uint64]string, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETBincBytes) EncMapUint64BytesV(v map[uint64][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETBincBytes) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETBincBytes) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETBincBytes) EncMapUint64IntV(v map[uint64]int, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETBincBytes) EncMapUint64Int32V(v map[uint64]int32, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETBincBytes) EncMapUint64Float64V(v map[uint64]float64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETBincBytes) EncMapUint64BoolV(v map[uint64]bool, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETBincBytes) EncMapIntIntfV(v map[int]interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETBincBytes) EncMapIntStringV(v map[int]string, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETBincBytes) EncMapIntBytesV(v map[int][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETBincBytes) EncMapIntUint8V(v map[int]uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETBincBytes) EncMapIntUint64V(v map[int]uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETBincBytes) EncMapIntIntV(v map[int]int, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETBincBytes) EncMapIntInt32V(v map[int]int32, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETBincBytes) EncMapIntFloat64V(v map[int]float64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETBincBytes) EncMapIntBoolV(v map[int]bool, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETBincBytes) EncMapInt32IntfV(v map[int32]interface{}, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETBincBytes) EncMapInt32StringV(v map[int32]string, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETBincBytes) EncMapInt32BytesV(v map[int32][]byte, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETBincBytes) EncMapInt32Uint8V(v map[int32]uint8, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETBincBytes) EncMapInt32Uint64V(v map[int32]uint64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETBincBytes) EncMapInt32IntV(v map[int32]int, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETBincBytes) EncMapInt32Int32V(v map[int32]int32, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETBincBytes) EncMapInt32Float64V(v map[int32]float64, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincBytes) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincBytes{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETBincBytes) EncMapInt32BoolV(v map[int32]bool, e *encoderBincBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverBincBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderBincBytes) bool { + var ft fastpathDTBincBytes + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderBincBytes) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTBincBytes) DecSliceIntfY(v []interface{}, d *decoderBincBytes) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceIntfN(v []interface{}, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTBincBytes) DecSliceStringY(v []string, d *decoderBincBytes) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceStringN(v []string, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTBincBytes) DecSliceBytesY(v [][]byte, d *decoderBincBytes) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceBytesN(v [][]byte, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTBincBytes) DecSliceFloat32Y(v []float32, d *decoderBincBytes) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceFloat32N(v []float32, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTBincBytes) DecSliceFloat64Y(v []float64, d *decoderBincBytes) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceFloat64N(v []float64, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTBincBytes) DecSliceUint8Y(v []uint8, d *decoderBincBytes) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTBincBytes) DecSliceUint8N(v []uint8, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderBincBytes) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTBincBytes) DecSliceUint64Y(v []uint64, d *decoderBincBytes) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceUint64N(v []uint64, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTBincBytes) DecSliceIntY(v []int, d *decoderBincBytes) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceIntN(v []int, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTBincBytes) DecSliceInt32Y(v []int32, d *decoderBincBytes) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceInt32N(v []int32, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTBincBytes) DecSliceInt64Y(v []int64, d *decoderBincBytes) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceInt64N(v []int64, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTBincBytes) DecSliceBoolY(v []bool, d *decoderBincBytes) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincBytes) DecSliceBoolN(v []bool, d *decoderBincBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderBincBytes) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincBytes) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringStringL(v map[string]string, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincBytes) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincBytes) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincBytes) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincBytes) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringIntL(v map[string]int, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincBytes) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincBytes) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincBytes) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincBytes) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincBytes) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincBytes) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincBytes) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincBytes) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincBytes) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincBytes) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincBytes) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincBytes) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincBytes) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincBytes) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincBytes) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincBytes) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincBytes) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincBytes) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntStringL(v map[int]string, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincBytes) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincBytes) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincBytes) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincBytes) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntIntL(v map[int]int, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincBytes) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincBytes) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincBytes) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincBytes) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincBytes) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincBytes) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincBytes) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincBytes) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincBytes) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincBytes) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincBytes) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincBytes) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincBytes) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderBincBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} + +type fastpathEBincIO struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderBincIO, *encFnInfo, reflect.Value) +} +type fastpathDBincIO struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderBincIO, *decFnInfo, reflect.Value) +} +type fastpathEsBincIO [56]fastpathEBincIO +type fastpathDsBincIO [56]fastpathDBincIO +type fastpathETBincIO struct{} +type fastpathDTBincIO struct{} + +func (helperEncDriverBincIO) fastpathEList() *fastpathEsBincIO { + var i uint = 0 + var s fastpathEsBincIO + fn := func(v interface{}, fe func(*encoderBincIO, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEBincIO{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderBincIO).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderBincIO).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderBincIO).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderBincIO).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderBincIO).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderBincIO).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderBincIO).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderBincIO).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderBincIO).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderBincIO).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderBincIO).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderBincIO).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderBincIO).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderBincIO).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderBincIO).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderBincIO).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderBincIO).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderBincIO).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderBincIO).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderBincIO).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderBincIO).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderBincIO).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderBincIO).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderBincIO).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderBincIO).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderBincIO).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderBincIO).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderBincIO).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderBincIO).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderBincIO).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderBincIO).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderBincIO).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderBincIO).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderBincIO).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderBincIO).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderBincIO).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderBincIO).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderBincIO).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderBincIO).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderBincIO).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderBincIO).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderBincIO).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderBincIO).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderBincIO).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderBincIO).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderBincIO).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderBincIO).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderBincIO).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderBincIO).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderBincIO).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderBincIO).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderBincIO).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderBincIO).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderBincIO).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderBincIO).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderBincIO).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverBincIO) fastpathDList() *fastpathDsBincIO { + var i uint = 0 + var s fastpathDsBincIO + fn := func(v interface{}, fd func(*decoderBincIO, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDBincIO{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderBincIO).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderBincIO).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderBincIO).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderBincIO).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderBincIO).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderBincIO).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderBincIO).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderBincIO).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderBincIO).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderBincIO).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderBincIO).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderBincIO).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderBincIO).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderBincIO).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderBincIO).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderBincIO).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderBincIO).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderBincIO).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderBincIO).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderBincIO).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderBincIO).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderBincIO).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderBincIO).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderBincIO).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderBincIO).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderBincIO).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderBincIO).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderBincIO).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderBincIO).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderBincIO).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderBincIO).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderBincIO).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderBincIO).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderBincIO).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderBincIO).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderBincIO).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderBincIO).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderBincIO).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderBincIO).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderBincIO).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderBincIO).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderBincIO).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderBincIO).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderBincIO).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderBincIO).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderBincIO).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderBincIO).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderBincIO).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderBincIO).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderBincIO).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderBincIO).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderBincIO).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderBincIO).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderBincIO).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderBincIO).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderBincIO).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverBincIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderBincIO) bool { + var ft fastpathETBincIO + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderBincIO) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETBincIO) EncSliceIntfV(v []interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceIntfV(v []interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETBincIO) EncSliceStringV(v []string, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceStringV(v []string, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETBincIO) EncSliceBytesV(v [][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceBytesV(v [][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETBincIO) EncSliceFloat32V(v []float32, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceFloat32V(v []float32, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETBincIO) EncSliceFloat64V(v []float64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceFloat64V(v []float64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETBincIO) EncSliceUint8V(v []uint8, e *encoderBincIO) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETBincIO) EncAsMapSliceUint8V(v []uint8, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETBincIO) EncSliceUint64V(v []uint64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceUint64V(v []uint64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETBincIO) EncSliceIntV(v []int, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceIntV(v []int, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETBincIO) EncSliceInt32V(v []int32, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceInt32V(v []int32, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETBincIO) EncSliceInt64V(v []int64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceInt64V(v []int64, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETBincIO + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETBincIO) EncSliceBoolV(v []bool, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETBincIO) EncAsMapSliceBoolV(v []bool, e *encoderBincIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETBincIO) EncMapStringIntfV(v map[string]interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETBincIO) EncMapStringStringV(v map[string]string, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETBincIO) EncMapStringBytesV(v map[string][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETBincIO) EncMapStringUint8V(v map[string]uint8, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETBincIO) EncMapStringUint64V(v map[string]uint64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETBincIO) EncMapStringIntV(v map[string]int, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETBincIO) EncMapStringInt32V(v map[string]int32, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETBincIO) EncMapStringFloat64V(v map[string]float64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETBincIO) EncMapStringBoolV(v map[string]bool, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETBincIO) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETBincIO) EncMapUint8StringV(v map[uint8]string, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETBincIO) EncMapUint8BytesV(v map[uint8][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETBincIO) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETBincIO) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETBincIO) EncMapUint8IntV(v map[uint8]int, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETBincIO) EncMapUint8Int32V(v map[uint8]int32, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETBincIO) EncMapUint8Float64V(v map[uint8]float64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETBincIO) EncMapUint8BoolV(v map[uint8]bool, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETBincIO) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETBincIO) EncMapUint64StringV(v map[uint64]string, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETBincIO) EncMapUint64BytesV(v map[uint64][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETBincIO) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETBincIO) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETBincIO) EncMapUint64IntV(v map[uint64]int, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETBincIO) EncMapUint64Int32V(v map[uint64]int32, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETBincIO) EncMapUint64Float64V(v map[uint64]float64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETBincIO) EncMapUint64BoolV(v map[uint64]bool, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETBincIO) EncMapIntIntfV(v map[int]interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETBincIO) EncMapIntStringV(v map[int]string, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETBincIO) EncMapIntBytesV(v map[int][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETBincIO) EncMapIntUint8V(v map[int]uint8, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETBincIO) EncMapIntUint64V(v map[int]uint64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETBincIO) EncMapIntIntV(v map[int]int, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETBincIO) EncMapIntInt32V(v map[int]int32, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETBincIO) EncMapIntFloat64V(v map[int]float64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETBincIO) EncMapIntBoolV(v map[int]bool, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETBincIO) EncMapInt32IntfV(v map[int32]interface{}, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETBincIO) EncMapInt32StringV(v map[int32]string, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETBincIO) EncMapInt32BytesV(v map[int32][]byte, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETBincIO) EncMapInt32Uint8V(v map[int32]uint8, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETBincIO) EncMapInt32Uint64V(v map[int32]uint64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETBincIO) EncMapInt32IntV(v map[int32]int, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETBincIO) EncMapInt32Int32V(v map[int32]int32, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETBincIO) EncMapInt32Float64V(v map[int32]float64, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderBincIO) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETBincIO{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETBincIO) EncMapInt32BoolV(v map[int32]bool, e *encoderBincIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverBincIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderBincIO) bool { + var ft fastpathDTBincIO + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderBincIO) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTBincIO) DecSliceIntfY(v []interface{}, d *decoderBincIO) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceIntfN(v []interface{}, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTBincIO) DecSliceStringY(v []string, d *decoderBincIO) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceStringN(v []string, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTBincIO) DecSliceBytesY(v [][]byte, d *decoderBincIO) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceBytesN(v [][]byte, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTBincIO) DecSliceFloat32Y(v []float32, d *decoderBincIO) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceFloat32N(v []float32, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTBincIO) DecSliceFloat64Y(v []float64, d *decoderBincIO) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceFloat64N(v []float64, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTBincIO) DecSliceUint8Y(v []uint8, d *decoderBincIO) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTBincIO) DecSliceUint8N(v []uint8, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderBincIO) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTBincIO) DecSliceUint64Y(v []uint64, d *decoderBincIO) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceUint64N(v []uint64, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTBincIO) DecSliceIntY(v []int, d *decoderBincIO) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceIntN(v []int, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTBincIO) DecSliceInt32Y(v []int32, d *decoderBincIO) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceInt32N(v []int32, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTBincIO) DecSliceInt64Y(v []int64, d *decoderBincIO) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceInt64N(v []int64, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTBincIO) DecSliceBoolY(v []bool, d *decoderBincIO) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTBincIO) DecSliceBoolN(v []bool, d *decoderBincIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderBincIO) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincIO) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringStringL(v map[string]string, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincIO) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincIO) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincIO) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincIO) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringIntL(v map[string]int, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincIO) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincIO) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincIO) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincIO) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincIO) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincIO) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincIO) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincIO) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincIO) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincIO) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincIO) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincIO) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincIO) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincIO) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincIO) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincIO) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincIO) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincIO) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincIO) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincIO) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincIO) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincIO) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincIO) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntStringL(v map[int]string, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincIO) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincIO) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincIO) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincIO) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntIntL(v map[int]int, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincIO) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincIO) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincIO) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderBincIO) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderBincIO) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderBincIO) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderBincIO) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderBincIO) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderBincIO) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderBincIO) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderBincIO) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderBincIO) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTBincIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTBincIO) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderBincIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/binc.go b/vendor/github.com/ugorji/go/codec/binc.go index 9ed15a0bf..34513550d 100644 --- a/vendor/github.com/ugorji/go/codec/binc.go +++ b/vendor/github.com/ugorji/go/codec/binc.go @@ -1,177 +1,75 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. package codec import ( + "io" "math" "reflect" "time" "unicode/utf8" ) -// Symbol management: -// - symbols are stored in a symbol map during encoding and decoding. -// - the symbols persist until the (En|De)coder ResetXXX method is called. - -const bincDoPrune = true - -// vd as low 4 bits (there are 16 slots) -const ( - bincVdSpecial byte = iota - bincVdPosInt - bincVdNegInt - bincVdFloat - - bincVdString - bincVdByteArray - bincVdArray - bincVdMap - - bincVdTimestamp - bincVdSmallInt - _ // bincVdUnicodeOther - bincVdSymbol - - _ // bincVdDecimal - _ // open slot - _ // open slot - bincVdCustomExt = 0x0f -) - -const ( - bincSpNil byte = iota - bincSpFalse - bincSpTrue - bincSpNan - bincSpPosInf - bincSpNegInf - bincSpZeroFloat - bincSpZero - bincSpNegOne -) - -const ( - _ byte = iota // bincFlBin16 - bincFlBin32 - _ // bincFlBin32e - bincFlBin64 - _ // bincFlBin64e - // others not currently supported -) - -const bincBdNil = 0 // bincVdSpecial<<4 | bincSpNil // staticcheck barfs on this (SA4016) - -var ( - bincdescSpecialVsNames = map[byte]string{ - bincSpNil: "nil", - bincSpFalse: "false", - bincSpTrue: "true", - bincSpNan: "float", - bincSpPosInf: "float", - bincSpNegInf: "float", - bincSpZeroFloat: "float", - bincSpZero: "uint", - bincSpNegOne: "int", - } - bincdescVdNames = map[byte]string{ - bincVdSpecial: "special", - bincVdSmallInt: "uint", - bincVdPosInt: "uint", - bincVdFloat: "float", - bincVdSymbol: "string", - bincVdString: "string", - bincVdByteArray: "bytes", - bincVdTimestamp: "time", - bincVdCustomExt: "ext", - bincVdArray: "array", - bincVdMap: "map", - } -) - -func bincdescbd(bd byte) (s string) { - return bincdesc(bd>>4, bd&0x0f) -} - -func bincdesc(vd, vs byte) (s string) { - if vd == bincVdSpecial { - s = bincdescSpecialVsNames[vs] - } else { - s = bincdescVdNames[vd] - } - if s == "" { - s = "unknown" - } - return -} - -type bincEncState struct { - m map[string]uint16 // symbols -} - -func (e bincEncState) captureState() interface{} { return e.m } -func (e *bincEncState) resetState() { e.m = nil } -func (e *bincEncState) reset() { e.resetState() } -func (e *bincEncState) restoreState(v interface{}) { e.m = v.(map[string]uint16) } - -type bincEncDriver struct { +type bincEncDriver[T encWriter] struct { noBuiltInTypes encDriverNoopContainerWriter + encDriverContainerNoTrackerT + encInit2er + h *BincHandle + e *encoderBase + w T bincEncState - - e Encoder } -func (e *bincEncDriver) encoder() *Encoder { - return &e.e +func (e *bincEncDriver[T]) EncodeNil() { + e.w.writen1(bincBdNil) } -func (e *bincEncDriver) EncodeNil() { - e.e.encWr.writen1(bincBdNil) -} - -func (e *bincEncDriver) EncodeTime(t time.Time) { +func (e *bincEncDriver[T]) EncodeTime(t time.Time) { if t.IsZero() { e.EncodeNil() } else { bs := bincEncodeTime(t) - e.e.encWr.writen1(bincVdTimestamp<<4 | uint8(len(bs))) - e.e.encWr.writeb(bs) + e.w.writen1(bincVdTimestamp<<4 | uint8(len(bs))) + e.w.writeb(bs) } } -func (e *bincEncDriver) EncodeBool(b bool) { +func (e *bincEncDriver[T]) EncodeBool(b bool) { if b { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpTrue) + e.w.writen1(bincVdSpecial<<4 | bincSpTrue) } else { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpFalse) + e.w.writen1(bincVdSpecial<<4 | bincSpFalse) } } -func (e *bincEncDriver) encSpFloat(f float64) (done bool) { +func (e *bincEncDriver[T]) encSpFloat(f float64) (done bool) { if f == 0 { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpZeroFloat) + e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat) } else if math.IsNaN(float64(f)) { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpNan) + e.w.writen1(bincVdSpecial<<4 | bincSpNan) } else if math.IsInf(float64(f), +1) { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpPosInf) + e.w.writen1(bincVdSpecial<<4 | bincSpPosInf) } else if math.IsInf(float64(f), -1) { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpNegInf) + e.w.writen1(bincVdSpecial<<4 | bincSpNegInf) } else { return } return true } -func (e *bincEncDriver) EncodeFloat32(f float32) { +func (e *bincEncDriver[T]) EncodeFloat32(f float32) { if !e.encSpFloat(float64(f)) { - e.e.encWr.writen1(bincVdFloat<<4 | bincFlBin32) - bigen.writeUint32(e.e.w(), math.Float32bits(f)) + e.w.writen1(bincVdFloat<<4 | bincFlBin32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) } } -func (e *bincEncDriver) EncodeFloat64(f float64) { +func (e *bincEncDriver[T]) EncodeFloat64(f float64) { if e.encSpFloat(f) { return } @@ -182,64 +80,64 @@ func (e *bincEncDriver) EncodeFloat64(f float64) { } i++ if i <= 6 { - e.e.encWr.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64) - e.e.encWr.writen1(byte(i)) - e.e.encWr.writeb(b[:i]) + e.w.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64) + e.w.writen1(byte(i)) + e.w.writeb(b[:i]) return } } - e.e.encWr.writen1(bincVdFloat<<4 | bincFlBin64) - e.e.encWr.writen8(b) + e.w.writen1(bincVdFloat<<4 | bincFlBin64) + e.w.writen8(b) } -func (e *bincEncDriver) encIntegerPrune32(bd byte, pos bool, v uint64) { +func (e *bincEncDriver[T]) encIntegerPrune32(bd byte, pos bool, v uint64) { b := bigen.PutUint32(uint32(v)) if bincDoPrune { i := byte(pruneSignExt(b[:], pos)) - e.e.encWr.writen1(bd | 3 - i) - e.e.encWr.writeb(b[i:]) + e.w.writen1(bd | 3 - i) + e.w.writeb(b[i:]) } else { - e.e.encWr.writen1(bd | 3) - e.e.encWr.writen4(b) + e.w.writen1(bd | 3) + e.w.writen4(b) } } -func (e *bincEncDriver) encIntegerPrune64(bd byte, pos bool, v uint64) { +func (e *bincEncDriver[T]) encIntegerPrune64(bd byte, pos bool, v uint64) { b := bigen.PutUint64(v) if bincDoPrune { i := byte(pruneSignExt(b[:], pos)) - e.e.encWr.writen1(bd | 7 - i) - e.e.encWr.writeb(b[i:]) + e.w.writen1(bd | 7 - i) + e.w.writeb(b[i:]) } else { - e.e.encWr.writen1(bd | 7) - e.e.encWr.writen8(b) + e.w.writen1(bd | 7) + e.w.writen8(b) } } -func (e *bincEncDriver) EncodeInt(v int64) { +func (e *bincEncDriver[T]) EncodeInt(v int64) { if v >= 0 { e.encUint(bincVdPosInt<<4, true, uint64(v)) } else if v == -1 { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpNegOne) + e.w.writen1(bincVdSpecial<<4 | bincSpNegOne) } else { e.encUint(bincVdNegInt<<4, false, uint64(-v)) } } -func (e *bincEncDriver) EncodeUint(v uint64) { +func (e *bincEncDriver[T]) EncodeUint(v uint64) { e.encUint(bincVdPosInt<<4, true, v) } -func (e *bincEncDriver) encUint(bd byte, pos bool, v uint64) { +func (e *bincEncDriver[T]) encUint(bd byte, pos bool, v uint64) { if v == 0 { - e.e.encWr.writen1(bincVdSpecial<<4 | bincSpZero) + e.w.writen1(bincVdSpecial<<4 | bincSpZero) } else if pos && v >= 1 && v <= 16 { - e.e.encWr.writen1(bincVdSmallInt<<4 | byte(v-1)) + e.w.writen1(bincVdSmallInt<<4 | byte(v-1)) } else if v <= math.MaxUint8 { - e.e.encWr.writen2(bd|0x0, byte(v)) + e.w.writen2(bd, byte(v)) // bd|0x0 } else if v <= math.MaxUint16 { - e.e.encWr.writen1(bd | 0x01) - bigen.writeUint16(e.e.w(), uint16(v)) + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) } else if v <= math.MaxUint32 { e.encIntegerPrune32(bd, pos, v) } else { @@ -247,21 +145,21 @@ func (e *bincEncDriver) encUint(bd byte, pos bool, v uint64) { } } -func (e *bincEncDriver) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (e *bincEncDriver[T]) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { var bs0, bs []byte if ext == SelfExt { bs0 = e.e.blist.get(1024) bs = bs0 - e.e.sideEncode(v, basetype, &bs) + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) } else { bs = ext.WriteExt(v) } if bs == nil { - e.EncodeNil() + e.writeNilBytes() goto END } e.encodeExtPreamble(uint8(xtag), len(bs)) - e.e.encWr.writeb(bs) + e.w.writeb(bs) END: if ext == SelfExt { e.e.blist.put(bs) @@ -271,25 +169,35 @@ END: } } -func (e *bincEncDriver) EncodeRawExt(re *RawExt) { +func (e *bincEncDriver[T]) EncodeRawExt(re *RawExt) { e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) - e.e.encWr.writeb(re.Data) + e.w.writeb(re.Data) } -func (e *bincEncDriver) encodeExtPreamble(xtag byte, length int) { +func (e *bincEncDriver[T]) encodeExtPreamble(xtag byte, length int) { e.encLen(bincVdCustomExt<<4, uint64(length)) - e.e.encWr.writen1(xtag) + e.w.writen1(xtag) } -func (e *bincEncDriver) WriteArrayStart(length int) { +func (e *bincEncDriver[T]) WriteArrayStart(length int) { e.encLen(bincVdArray<<4, uint64(length)) } -func (e *bincEncDriver) WriteMapStart(length int) { +func (e *bincEncDriver[T]) WriteMapStart(length int) { e.encLen(bincVdMap<<4, uint64(length)) } -func (e *bincEncDriver) EncodeSymbol(v string) { +func (e *bincEncDriver[T]) WriteArrayEmpty() { + // e.WriteArrayStart(0) = e.encLen(bincVdArray<<4, 0) + e.w.writen1(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriver[T]) WriteMapEmpty() { + // e.WriteMapStart(0) = e.encLen(bincVdMap<<4, 0) + e.w.writen1(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriver[T]) EncodeSymbol(v string) { //symbols only offer benefit when string length > 1. //This is because strings with length 1 take only 2 bytes to store //(bd with embedded length, and single byte for string val). @@ -300,7 +208,7 @@ func (e *bincEncDriver) EncodeSymbol(v string) { return } else if l == 1 { e.encBytesLen(cUTF8, 1) - e.e.encWr.writen1(v[0]) + e.w.writen1(v[0]) return } if e.m == nil { @@ -309,10 +217,10 @@ func (e *bincEncDriver) EncodeSymbol(v string) { ui, ok := e.m[v] if ok { if ui <= math.MaxUint8 { - e.e.encWr.writen2(bincVdSymbol<<4, byte(ui)) + e.w.writen2(bincVdSymbol<<4, byte(ui)) } else { - e.e.encWr.writen1(bincVdSymbol<<4 | 0x8) - bigen.writeUint16(e.e.w(), ui) + e.w.writen1(bincVdSymbol<<4 | 0x8) + e.w.writen2(bigen.PutUint16(ui)) } } else { e.e.seq++ @@ -329,58 +237,83 @@ func (e *bincEncDriver) EncodeSymbol(v string) { lenprec = 3 } if ui <= math.MaxUint8 { - e.e.encWr.writen2(bincVdSymbol<<4|0x0|0x4|lenprec, byte(ui)) + e.w.writen2(bincVdSymbol<<4|0x4|lenprec, byte(ui)) // bincVdSymbol<<4|0x0|0x4|lenprec } else { - e.e.encWr.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec) - bigen.writeUint16(e.e.w(), ui) + e.w.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec) + e.w.writen2(bigen.PutUint16(ui)) } if lenprec == 0 { - e.e.encWr.writen1(byte(l)) + e.w.writen1(byte(l)) } else if lenprec == 1 { - bigen.writeUint16(e.e.w(), uint16(l)) + e.w.writen2(bigen.PutUint16(uint16(l))) } else if lenprec == 2 { - bigen.writeUint32(e.e.w(), uint32(l)) + e.w.writen4(bigen.PutUint32(uint32(l))) } else { - bigen.writeUint64(e.e.w(), uint64(l)) + e.w.writen8(bigen.PutUint64(uint64(l))) } - e.e.encWr.writestr(v) + e.w.writestr(v) } } -func (e *bincEncDriver) EncodeString(v string) { +func (e *bincEncDriver[T]) EncodeString(v string) { if e.h.StringToRaw { e.encLen(bincVdByteArray<<4, uint64(len(v))) if len(v) > 0 { - e.e.encWr.writestr(v) + e.w.writestr(v) } return } e.EncodeStringEnc(cUTF8, v) } -func (e *bincEncDriver) EncodeStringEnc(c charEncoding, v string) { +func (e *bincEncDriver[T]) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *bincEncDriver[T]) EncodeStringEnc(c charEncoding, v string) { if e.e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 1) { e.EncodeSymbol(v) return } e.encLen(bincVdString<<4, uint64(len(v))) if len(v) > 0 { - e.e.encWr.writestr(v) + e.w.writestr(v) } } -func (e *bincEncDriver) EncodeStringBytesRaw(v []byte) { +func (e *bincEncDriver[T]) EncodeStringBytesRaw(v []byte) { + e.encLen(bincVdByteArray<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writeb(v) + } +} + +func (e *bincEncDriver[T]) EncodeBytes(v []byte) { if v == nil { - e.EncodeNil() + e.writeNilBytes() return } - e.encLen(bincVdByteArray<<4, uint64(len(v))) - if len(v) > 0 { - e.e.encWr.writeb(v) + e.EncodeStringBytesRaw(v) +} + +func (e *bincEncDriver[T]) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = bincBdNil } + e.w.writen1(v) +} + +func (e *bincEncDriver[T]) writeNilArray() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriver[T]) writeNilMap() { + e.writeNilOr(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriver[T]) writeNilBytes() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) } -func (e *bincEncDriver) encBytesLen(c charEncoding, length uint64) { +func (e *bincEncDriver[T]) encBytesLen(c charEncoding, length uint64) { // MARKER: we currently only support UTF-8 (string) and RAW (bytearray). // We should consider supporting bincUnicodeOther. @@ -391,74 +324,54 @@ func (e *bincEncDriver) encBytesLen(c charEncoding, length uint64) { } } -func (e *bincEncDriver) encLen(bd byte, l uint64) { +func (e *bincEncDriver[T]) encLen(bd byte, l uint64) { if l < 12 { - e.e.encWr.writen1(bd | uint8(l+4)) + e.w.writen1(bd | uint8(l+4)) } else { e.encLenNumber(bd, l) } } -func (e *bincEncDriver) encLenNumber(bd byte, v uint64) { +func (e *bincEncDriver[T]) encLenNumber(bd byte, v uint64) { if v <= math.MaxUint8 { - e.e.encWr.writen2(bd, byte(v)) + e.w.writen2(bd, byte(v)) } else if v <= math.MaxUint16 { - e.e.encWr.writen1(bd | 0x01) - bigen.writeUint16(e.e.w(), uint16(v)) + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) } else if v <= math.MaxUint32 { - e.e.encWr.writen1(bd | 0x02) - bigen.writeUint32(e.e.w(), uint32(v)) + e.w.writen1(bd | 0x02) + e.w.writen4(bigen.PutUint32(uint32(v))) } else { - e.e.encWr.writen1(bd | 0x03) - bigen.writeUint64(e.e.w(), uint64(v)) + e.w.writen1(bd | 0x03) + e.w.writen8(bigen.PutUint64(uint64(v))) } } //------------------------------------ -type bincDecState struct { - bdRead bool - bd byte - vd byte - vs byte - - _ bool - // MARKER: consider using binary search here instead of a map (ie bincDecSymbol) - s map[uint16][]byte -} - -func (x bincDecState) captureState() interface{} { return x } -func (x *bincDecState) resetState() { *x = bincDecState{} } -func (x *bincDecState) reset() { x.resetState() } -func (x *bincDecState) restoreState(v interface{}) { *x = v.(bincDecState) } - -type bincDecDriver struct { +type bincDecDriver[T decReader] struct { decDriverNoopContainerReader - decDriverNoopNumberHelper + // decDriverNoopNumberHelper + decInit2er noBuiltInTypes h *BincHandle + d *decoderBase + r T bincDecState - d Decoder -} - -func (d *bincDecDriver) decoder() *Decoder { - return &d.d -} -func (d *bincDecDriver) descBd() string { - return sprintf("%v (%s)", d.bd, bincdescbd(d.bd)) + // bytes bool } -func (d *bincDecDriver) readNextBd() { - d.bd = d.d.decRd.readn1() +func (d *bincDecDriver[T]) readNextBd() { + d.bd = d.r.readn1() d.vd = d.bd >> 4 d.vs = d.bd & 0x0f d.bdRead = true } -func (d *bincDecDriver) advanceNil() (null bool) { +func (d *bincDecDriver[T]) advanceNil() (null bool) { if !d.bdRead { d.readNextBd() } @@ -469,11 +382,11 @@ func (d *bincDecDriver) advanceNil() (null bool) { return } -func (d *bincDecDriver) TryNil() bool { +func (d *bincDecDriver[T]) TryNil() bool { return d.advanceNil() } -func (d *bincDecDriver) ContainerType() (vt valueType) { +func (d *bincDecDriver[T]) ContainerType() (vt valueType) { if !d.bdRead { d.readNextBd() } @@ -492,33 +405,33 @@ func (d *bincDecDriver) ContainerType() (vt valueType) { return valueTypeUnset } -func (d *bincDecDriver) DecodeTime() (t time.Time) { +func (d *bincDecDriver[T]) DecodeTime() (t time.Time) { if d.advanceNil() { return } if d.vd != bincVdTimestamp { - d.d.errorf("cannot decode time - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("cannot decode time - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } - t, err := bincDecodeTime(d.d.decRd.readx(uint(d.vs))) + t, err := bincDecodeTime(d.r.readx(uint(d.vs))) halt.onerror(err) d.bdRead = false return } -func (d *bincDecDriver) decFloatPruned(maxlen uint8) { - l := d.d.decRd.readn1() +func (d *bincDecDriver[T]) decFloatPruned(maxlen uint8) { + l := d.r.readn1() if l > maxlen { - d.d.errorf("cannot read float - at most %v bytes used to represent float - received %v bytes", maxlen, l) + halt.errorf("cannot read float - at most %v bytes used to represent float - received %v bytes", maxlen, l) } for i := l; i < maxlen; i++ { d.d.b[i] = 0 } - d.d.decRd.readb(d.d.b[0:l]) + d.r.readb(d.d.b[0:l]) } -func (d *bincDecDriver) decFloatPre32() (b [4]byte) { +func (d *bincDecDriver[T]) decFloatPre32() (b [4]byte) { if d.vs&0x8 == 0 { - b = d.d.decRd.readn4() + b = d.r.readn4() } else { d.decFloatPruned(4) copy(b[:], d.d.b[:]) @@ -526,9 +439,9 @@ func (d *bincDecDriver) decFloatPre32() (b [4]byte) { return } -func (d *bincDecDriver) decFloatPre64() (b [8]byte) { +func (d *bincDecDriver[T]) decFloatPre64() (b [8]byte) { if d.vs&0x8 == 0 { - b = d.d.decRd.readn8() + b = d.r.readn8() } else { d.decFloatPruned(8) copy(b[:], d.d.b[:]) @@ -536,7 +449,7 @@ func (d *bincDecDriver) decFloatPre64() (b [8]byte) { return } -func (d *bincDecDriver) decFloatVal() (f float64) { +func (d *bincDecDriver[T]) decFloatVal() (f float64) { switch d.vs & 0x7 { case bincFlBin32: f = float64(math.Float32frombits(bigen.Uint32(d.decFloatPre32()))) @@ -544,67 +457,68 @@ func (d *bincDecDriver) decFloatVal() (f float64) { f = math.Float64frombits(bigen.Uint64(d.decFloatPre64())) default: // ok = false - d.d.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } return } -func (d *bincDecDriver) decUint() (v uint64) { +func (d *bincDecDriver[T]) decUint() (v uint64) { switch d.vs { case 0: - v = uint64(d.d.decRd.readn1()) + v = uint64(d.r.readn1()) case 1: - v = uint64(bigen.Uint16(d.d.decRd.readn2())) + v = uint64(bigen.Uint16(d.r.readn2())) case 2: - b3 := d.d.decRd.readn3() + b3 := d.r.readn3() var b [4]byte copy(b[1:], b3[:]) v = uint64(bigen.Uint32(b)) case 3: - v = uint64(bigen.Uint32(d.d.decRd.readn4())) + v = uint64(bigen.Uint32(d.r.readn4())) case 4, 5, 6: - var b [8]byte - lim := 7 - d.vs - bs := d.d.b[lim:8] - d.d.decRd.readb(bs) - copy(b[lim:], bs) - v = bigen.Uint64(b) + // lim := 7 - d.vs + // bs := d.d.b[lim:8] + // d.r.readb(bs) + // var b [8]byte + // copy(b[lim:], bs) + // v = bigen.Uint64(b) + bs := d.d.b[:8] + clear(bs) + d.r.readb(bs[(7 - d.vs):]) + v = bigen.Uint64(*(*[8]byte)(bs)) case 7: - v = bigen.Uint64(d.d.decRd.readn8()) + v = bigen.Uint64(d.r.readn8()) default: - d.d.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) } return } -func (d *bincDecDriver) uintBytes() (bs []byte) { +func (d *bincDecDriver[T]) uintBytes() (bs []byte) { switch d.vs { case 0: bs = d.d.b[:1] - bs[0] = d.d.decRd.readn1() + bs[0] = d.r.readn1() + return case 1: bs = d.d.b[:2] - d.d.decRd.readb(bs) case 2: bs = d.d.b[:3] - d.d.decRd.readb(bs) case 3: bs = d.d.b[:4] - d.d.decRd.readb(bs) case 4, 5, 6: lim := 7 - d.vs bs = d.d.b[lim:8] - d.d.decRd.readb(bs) case 7: bs = d.d.b[:8] - d.d.decRd.readb(bs) default: - d.d.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) } + d.r.readb(bs) return } -func (d *bincDecDriver) decInteger() (ui uint64, neg, ok bool) { +func (d *bincDecDriver[T]) decInteger() (ui uint64, neg, ok bool) { ok = true vd, vs := d.vd, d.vs if vd == bincVdPosInt { @@ -622,16 +536,16 @@ func (d *bincDecDriver) decInteger() (ui uint64, neg, ok bool) { ui = 1 } else { ok = false - // d.d.errorf("integer decode has invalid special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + // halt.errorf("integer decode has invalid special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) } } else { ok = false - // d.d.errorf("integer can only be decoded from int/uint. d.bd: 0x%x, d.vd: 0x%x", d.bd, d.vd) + // halt.errorf("integer can only be decoded from int/uint. d.bd: 0x%x, d.vd: 0x%x", d.bd, d.vd) } return } -func (d *bincDecDriver) decFloat() (f float64, ok bool) { +func (d *bincDecDriver[T]) decFloat() (f float64, ok bool) { ok = true vd, vs := d.vd, d.vs if vd == bincVdSpecial { @@ -645,7 +559,7 @@ func (d *bincDecDriver) decFloat() (f float64, ok bool) { f = math.Inf(-1) } else { ok = false - // d.d.errorf("float - invalid special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + // halt.errorf("float - invalid special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) } } else if vd == bincVdFloat { f = d.decFloatVal() @@ -655,34 +569,36 @@ func (d *bincDecDriver) decFloat() (f float64, ok bool) { return } -func (d *bincDecDriver) DecodeInt64() (i int64) { +func (d *bincDecDriver[T]) DecodeInt64() (i int64) { if d.advanceNil() { return } - i = decNegintPosintFloatNumberHelper{&d.d}.int64(d.decInteger()) + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) d.bdRead = false return } -func (d *bincDecDriver) DecodeUint64() (ui uint64) { +func (d *bincDecDriver[T]) DecodeUint64() (ui uint64) { if d.advanceNil() { return } - ui = decNegintPosintFloatNumberHelper{&d.d}.uint64(d.decInteger()) + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) d.bdRead = false return } -func (d *bincDecDriver) DecodeFloat64() (f float64) { +func (d *bincDecDriver[T]) DecodeFloat64() (f float64) { if d.advanceNil() { return } - f = decNegintPosintFloatNumberHelper{&d.d}.float64(d.decFloat()) + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) d.bdRead = false return } -func (d *bincDecDriver) DecodeBool() (b bool) { +func (d *bincDecDriver[T]) DecodeBool() (b bool) { if d.advanceNil() { return } @@ -691,201 +607,193 @@ func (d *bincDecDriver) DecodeBool() (b bool) { } else if d.bd == (bincVdSpecial | bincSpTrue) { b = true } else { - d.d.errorf("bool - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("bool - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } d.bdRead = false return } -func (d *bincDecDriver) ReadMapStart() (length int) { +func (d *bincDecDriver[T]) ReadMapStart() (length int) { if d.advanceNil() { return containerLenNil } if d.vd != bincVdMap { - d.d.errorf("map - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("map - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } length = d.decLen() d.bdRead = false return } -func (d *bincDecDriver) ReadArrayStart() (length int) { +func (d *bincDecDriver[T]) ReadArrayStart() (length int) { if d.advanceNil() { return containerLenNil } if d.vd != bincVdArray { - d.d.errorf("array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } length = d.decLen() d.bdRead = false return } -func (d *bincDecDriver) decLen() int { +func (d *bincDecDriver[T]) decLen() int { if d.vs > 3 { return int(d.vs - 4) } return int(d.decLenNumber()) } -func (d *bincDecDriver) decLenNumber() (v uint64) { +func (d *bincDecDriver[T]) decLenNumber() (v uint64) { if x := d.vs; x == 0 { - v = uint64(d.d.decRd.readn1()) + v = uint64(d.r.readn1()) } else if x == 1 { - v = uint64(bigen.Uint16(d.d.decRd.readn2())) + v = uint64(bigen.Uint16(d.r.readn2())) } else if x == 2 { - v = uint64(bigen.Uint32(d.d.decRd.readn4())) + v = uint64(bigen.Uint32(d.r.readn4())) } else { - v = bigen.Uint64(d.d.decRd.readn8()) + v = bigen.Uint64(d.r.readn8()) } return } -// func (d *bincDecDriver) decStringBytes(bs []byte, zerocopy bool) (bs2 []byte) { -func (d *bincDecDriver) DecodeStringAsBytes() (bs2 []byte) { - d.d.decByteState = decByteStateNone +// func (d *bincDecDriver[T]) decStringBytes(bs []byte, zerocopy bool) (bs2 []byte) { +func (d *bincDecDriver[T]) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { if d.advanceNil() { return } + var cond bool var slen = -1 switch d.vd { case bincVdString, bincVdByteArray: slen = d.decLen() - if d.d.bytes { - d.d.decByteState = decByteStateZerocopy - bs2 = d.d.decRd.rb.readx(uint(slen)) - } else { - d.d.decByteState = decByteStateReuseBuf - bs2 = decByteSlice(d.d.r(), slen, d.d.h.MaxInitLen, d.d.b[:]) - } + bs, cond = d.r.readxb(uint(slen)) + state = d.d.attachState(cond) case bincVdSymbol: // zerocopy doesn't apply for symbols, // as the values must be stored in a table for later use. var symbol uint16 vs := d.vs if vs&0x8 == 0 { - symbol = uint16(d.d.decRd.readn1()) + symbol = uint16(d.r.readn1()) } else { - symbol = uint16(bigen.Uint16(d.d.decRd.readn2())) + symbol = uint16(bigen.Uint16(d.r.readn2())) } if d.s == nil { d.s = make(map[uint16][]byte, 16) } if vs&0x4 == 0 { - bs2 = d.s[symbol] + bs = d.s[symbol] } else { switch vs & 0x3 { case 0: - slen = int(d.d.decRd.readn1()) + slen = int(d.r.readn1()) case 1: - slen = int(bigen.Uint16(d.d.decRd.readn2())) + slen = int(bigen.Uint16(d.r.readn2())) case 2: - slen = int(bigen.Uint32(d.d.decRd.readn4())) + slen = int(bigen.Uint32(d.r.readn4())) case 3: - slen = int(bigen.Uint64(d.d.decRd.readn8())) + slen = int(bigen.Uint64(d.r.readn8())) } // As we are using symbols, do not store any part of // the parameter bs in the map, as it might be a shared buffer. - bs2 = decByteSlice(d.d.r(), slen, d.d.h.MaxInitLen, nil) - d.s[symbol] = bs2 + bs, cond = d.r.readxb(uint(slen)) + bs = d.d.detach2Bytes(bs, d.d.attachState(cond)) + d.s[symbol] = bs } + state = dBytesDetach default: - d.d.errorf("string/bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("string/bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } - if d.h.ValidateUnicode && !utf8.Valid(bs2) { - d.d.errorf("DecodeStringAsBytes: invalid UTF-8: %s", bs2) + if d.h.ValidateUnicode && !utf8.Valid(bs) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", bs) } d.bdRead = false return } -func (d *bincDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { - d.d.decByteState = decByteStateNone +func (d *bincDecDriver[T]) DecodeBytes() (bs []byte, state dBytesAttachState) { if d.advanceNil() { return } + var cond bool if d.vd == bincVdArray { - if bs == nil { - bs = d.d.b[:] - d.d.decByteState = decByteStateReuseBuf - } slen := d.ReadArrayStart() - var changed bool - if bs, changed = usableByteSlice(bs, slen); changed { - d.d.decByteState = decByteStateNone - } + bs, cond = usableByteSlice(d.d.buf, slen) for i := 0; i < slen; i++ { bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) } for i := len(bs); i < slen; i++ { bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) } - return bs + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return } - var clen int - if d.vd == bincVdString || d.vd == bincVdByteArray { - clen = d.decLen() - } else { - d.d.errorf("bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + if !(d.vd == bincVdString || d.vd == bincVdByteArray) { + halt.errorf("bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } + clen := d.decLen() d.bdRead = false - if d.d.zerocopy() { - d.d.decByteState = decByteStateZerocopy - return d.d.decRd.rb.readx(uint(clen)) - } - if bs == nil { - bs = d.d.b[:] - d.d.decByteState = decByteStateReuseBuf - } - return decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, bs) + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return } -func (d *bincDecDriver) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { - if xtag > 0xff { - d.d.errorf("ext: tag must be <= 0xff; got: %v", xtag) - } - if d.advanceNil() { +func (d *bincDecDriver[T]) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { return } - xbs, realxtag1, zerocopy := d.decodeExtV(ext != nil, uint8(xtag)) - realxtag := uint64(realxtag1) - if ext == nil { - re := rv.(*RawExt) - re.Tag = realxtag - re.setData(xbs, zerocopy) - } else if ext == SelfExt { - d.d.sideDecode(rv, basetype, xbs) + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) } else { ext.ReadExt(rv, xbs) } } -func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xbs []byte, xtag byte, zerocopy bool) { +func (d *bincDecDriver[T]) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *bincDecDriver[T]) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) if d.vd == bincVdCustomExt { l := d.decLen() - xtag = d.d.decRd.readn1() + xtag = d.r.readn1() if verifyTag && xtag != tag { - d.d.errorf("wrong extension tag - got %b, expecting: %v", xtag, tag) - } - if d.d.bytes { - xbs = d.d.decRd.rb.readx(uint(l)) - zerocopy = true - } else { - xbs = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:]) + halt.errorf("wrong extension tag - got %b, expecting: %v", xtag, tag) } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) + // zerocopy = d.d.bytes } else if d.vd == bincVdByteArray { - xbs = d.DecodeBytes(nil) + xbs, bstate = d.DecodeBytes() } else { - d.d.errorf("ext expects extensions or byte array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("ext expects extensions or byte array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } d.bdRead = false + ok = true return } -func (d *bincDecDriver) DecodeNaked() { +func (d *bincDecDriver[T]) DecodeNaked() { if !d.bdRead { d.readNextBd() } @@ -923,7 +831,7 @@ func (d *bincDecDriver) DecodeNaked() { n.v = valueTypeInt n.i = int64(-1) // int8(-1) default: - d.d.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) } case bincVdSmallInt: n.v = valueTypeUint @@ -939,26 +847,22 @@ func (d *bincDecDriver) DecodeNaked() { n.f = d.decFloatVal() case bincVdString: n.v = valueTypeString - n.s = d.d.stringZC(d.DecodeStringAsBytes()) + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) case bincVdByteArray: - d.d.fauxUnionReadRawBytes(false) + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) //, d.h.ZeroCopy) case bincVdSymbol: n.v = valueTypeSymbol - n.s = d.d.stringZC(d.DecodeStringAsBytes()) + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) case bincVdTimestamp: n.v = valueTypeTime - tt, err := bincDecodeTime(d.d.decRd.readx(uint(d.vs))) + tt, err := bincDecodeTime(d.r.readx(uint(d.vs))) halt.onerror(err) n.t = tt case bincVdCustomExt: n.v = valueTypeExt l := d.decLen() - n.u = uint64(d.d.decRd.readn1()) - if d.d.bytes { - n.l = d.d.decRd.rb.readx(uint(l)) - } else { - n.l = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:]) - } + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) case bincVdArray: n.v = valueTypeArray decodeFurther = true @@ -966,7 +870,7 @@ func (d *bincDecDriver) DecodeNaked() { n.v = valueTypeMap decodeFurther = true default: - d.d.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } if !decodeFurther { @@ -978,49 +882,39 @@ func (d *bincDecDriver) DecodeNaked() { } } -func (d *bincDecDriver) nextValueBytes(v0 []byte) (v []byte) { +func (d *bincDecDriver[T]) nextValueBytes() (v []byte) { if !d.bdRead { d.readNextBd() } - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - var cursor = d.d.rb.c - 1 - h.append1(&v, d.bd) - v = d.nextValueBytesBdReadR(v) + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() d.bdRead = false - h.bytesRdV(&v, cursor) return } -func (d *bincDecDriver) nextValueBytesR(v0 []byte) (v []byte) { - d.readNextBd() - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - h.append1(&v, d.bd) - return d.nextValueBytesBdReadR(v) -} - -func (d *bincDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { - v = v0 - var h = decNextValueBytesHelper{d: &d.d} +// func (d *bincDecDriver[T]) nextValueBytesR(v0 []byte) (v []byte) { +// d.readNextBd() +// v = v0 +// var h decNextValueBytesHelper +// h.append1(&v, d.bytes, d.bd) +// return d.nextValueBytesBdReadR(v) +// } +func (d *bincDecDriver[T]) nextValueBytesBdReadR() { fnLen := func(vs byte) uint { switch vs { case 0: - x := d.d.decRd.readn1() - h.append1(&v, x) + x := d.r.readn1() return uint(x) case 1: - x := d.d.decRd.readn2() - h.appendN(&v, x[:]...) + x := d.r.readn2() return uint(bigen.Uint16(x)) case 2: - x := d.d.decRd.readn4() - h.appendN(&v, x[:]...) + x := d.r.readn4() return uint(bigen.Uint32(x)) case 3: - x := d.d.decRd.readn8() - h.appendN(&v, x[:]...) + x := d.r.readn8() return uint(bigen.Uint64(x)) default: return uint(vs - 4) @@ -1035,23 +929,20 @@ func (d *bincDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { case bincSpNil, bincSpFalse, bincSpTrue, bincSpNan, bincSpPosInf: // pass case bincSpNegInf, bincSpZeroFloat, bincSpZero, bincSpNegOne: // pass default: - d.d.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) } case bincVdSmallInt: // pass case bincVdPosInt, bincVdNegInt: - bs := d.uintBytes() - h.appendN(&v, bs...) + d.uintBytes() case bincVdFloat: fn := func(xlen byte) { if d.vs&0x8 != 0 { - xlen = d.d.decRd.readn1() - h.append1(&v, xlen) + xlen = d.r.readn1() if xlen > 8 { - d.d.errorf("cannot read float - at most 8 bytes used to represent float - received %v bytes", xlen) + halt.errorf("cannot read float - at most 8 bytes used to represent float - received %v bytes", xlen) } } - d.d.decRd.readb(d.d.b[:xlen]) - h.appendN(&v, d.d.b[:xlen]...) + d.r.readb(d.d.b[:xlen]) } switch d.vs & 0x7 { case bincFlBin32: @@ -1059,261 +950,117 @@ func (d *bincDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { case bincFlBin64: fn(8) default: - d.d.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } case bincVdString, bincVdByteArray: clen = fnLen(d.vs) - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.skip(clen) case bincVdSymbol: if d.vs&0x8 == 0 { - h.append1(&v, d.d.decRd.readn1()) + d.r.readn1() } else { - h.appendN(&v, d.d.decRd.rb.readx(2)...) + d.r.skip(2) } if d.vs&0x4 != 0 { clen = fnLen(d.vs & 0x3) - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.skip(clen) } case bincVdTimestamp: - h.appendN(&v, d.d.decRd.readx(uint(d.vs))...) + d.r.skip(uint(d.vs)) case bincVdCustomExt: clen = fnLen(d.vs) - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.readn1() // tag + d.r.skip(clen) case bincVdArray: clen = fnLen(d.vs) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } case bincVdMap: clen = fnLen(d.vs) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } default: - d.d.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) } return } -//------------------------------------ - -// BincHandle is a Handle for the Binc Schema-Free Encoding Format -// defined at https://github.com/ugorji/binc . -// -// BincHandle currently supports all Binc features with the following EXCEPTIONS: -// - only integers up to 64 bits of precision are supported. -// big integers are unsupported. -// - Only IEEE 754 binary32 and binary64 floats are supported (ie Go float32 and float64 types). -// extended precision and decimal IEEE 754 floats are unsupported. -// - Only UTF-8 strings supported. -// Unicode_Other Binc types (UTF16, UTF32) are currently unsupported. -// -// Note that these EXCEPTIONS are temporary and full support is possible and may happen soon. -type BincHandle struct { - BasicHandle - binaryEncodingType - // noElemSeparators - - // AsSymbols defines what should be encoded as symbols. - // - // Encoding as symbols can reduce the encoded size significantly. - // - // However, during decoding, each string to be encoded as a symbol must - // be checked to see if it has been seen before. Consequently, encoding time - // will increase if using symbols, because string comparisons has a clear cost. - // - // Values: - // - 0: default: library uses best judgement - // - 1: use symbols - // - 2: do not use symbols - AsSymbols uint8 - - // AsSymbols: may later on introduce more options ... - // - m: map keys - // - s: struct fields - // - n: none - // - a: all: same as m, s, ... - - // _ [7]uint64 // padding (cache-aligned) -} - -// Name returns the name of the handle: binc -func (h *BincHandle) Name() string { return "binc" } - -func (h *BincHandle) desc(bd byte) string { return bincdesc(bd>>4, bd&0x0f) } - -func (h *BincHandle) newEncDriver() encDriver { - var e = &bincEncDriver{h: h} - e.e.e = e - e.e.init(h) - e.reset() - return e -} - -func (h *BincHandle) newDecDriver() decDriver { - d := &bincDecDriver{h: h} - d.d.d = d - d.d.init(h) - d.reset() - return d -} - -// var timeDigits = [...]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} - -// EncodeTime encodes a time.Time as a []byte, including -// information on the instant in time and UTC offset. -// -// Format Description -// -// A timestamp is composed of 3 components: -// -// - secs: signed integer representing seconds since unix epoch -// - nsces: unsigned integer representing fractional seconds as a -// nanosecond offset within secs, in the range 0 <= nsecs < 1e9 -// - tz: signed integer representing timezone offset in minutes east of UTC, -// and a dst (daylight savings time) flag -// -// When encoding a timestamp, the first byte is the descriptor, which -// defines which components are encoded and how many bytes are used to -// encode secs and nsecs components. *If secs/nsecs is 0 or tz is UTC, it -// is not encoded in the byte array explicitly*. +// ---- // -// Descriptor 8 bits are of the form `A B C DDD EE`: -// A: Is secs component encoded? 1 = true -// B: Is nsecs component encoded? 1 = true -// C: Is tz component encoded? 1 = true -// DDD: Number of extra bytes for secs (range 0-7). -// If A = 1, secs encoded in DDD+1 bytes. -// If A = 0, secs is not encoded, and is assumed to be 0. -// If A = 1, then we need at least 1 byte to encode secs. -// DDD says the number of extra bytes beyond that 1. -// E.g. if DDD=0, then secs is represented in 1 byte. -// if DDD=2, then secs is represented in 3 bytes. -// EE: Number of extra bytes for nsecs (range 0-3). -// If B = 1, nsecs encoded in EE+1 bytes (similar to secs/DDD above) +// The following below are similar across all format files (except for the format name). // -// Following the descriptor bytes, subsequent bytes are: -// -// secs component encoded in `DDD + 1` bytes (if A == 1) -// nsecs component encoded in `EE + 1` bytes (if B == 1) -// tz component encoded in 2 bytes (if C == 1) -// -// secs and nsecs components are integers encoded in a BigEndian -// 2-complement encoding format. -// -// tz component is encoded as 2 bytes (16 bits). Most significant bit 15 to -// Least significant bit 0 are described below: -// -// Timezone offset has a range of -12:00 to +14:00 (ie -720 to +840 minutes). -// Bit 15 = have\_dst: set to 1 if we set the dst flag. -// Bit 14 = dst\_on: set to 1 if dst is in effect at the time, or 0 if not. -// Bits 13..0 = timezone offset in minutes. It is a signed integer in Big Endian format. -func bincEncodeTime(t time.Time) []byte { - // t := rv2i(rv).(time.Time) - tsecs, tnsecs := t.Unix(), t.Nanosecond() - var ( - bd byte - bs [16]byte - i int = 1 - ) - l := t.Location() - if l == time.UTC { - l = nil - } - if tsecs != 0 { - bd = bd | 0x80 - btmp := bigen.PutUint64(uint64(tsecs)) - f := pruneSignExt(btmp[:], tsecs >= 0) - bd = bd | (byte(7-f) << 2) - copy(bs[i:], btmp[f:]) - i = i + (8 - f) - } - if tnsecs != 0 { - bd = bd | 0x40 - btmp := bigen.PutUint32(uint32(tnsecs)) - f := pruneSignExt(btmp[:4], true) - bd = bd | byte(3-f) - copy(bs[i:], btmp[f:4]) - i = i + (4 - f) - } - if l != nil { - bd = bd | 0x20 - // Note that Go Libs do not give access to dst flag. - _, zoneOffset := t.Zone() - // zoneName, zoneOffset := t.Zone() - zoneOffset /= 60 - z := uint16(zoneOffset) - btmp := bigen.PutUint16(z) - // clear dst flags - bs[i] = btmp[0] & 0x3f - bs[i+1] = btmp[1] - i = i + 2 - } - bs[0] = bd - return bs[0:i] -} - -// bincDecodeTime decodes a []byte into a time.Time. -func bincDecodeTime(bs []byte) (tt time.Time, err error) { - bd := bs[0] - var ( - tsec int64 - tnsec uint32 - tz uint16 - i byte = 1 - i2 byte - n byte - ) - if bd&(1<<7) != 0 { - var btmp [8]byte - n = ((bd >> 2) & 0x7) + 1 - i2 = i + n - copy(btmp[8-n:], bs[i:i2]) - // if first bit of bs[i] is set, then fill btmp[0..8-n] with 0xff (ie sign extend it) - if bs[i]&(1<<7) != 0 { - copy(btmp[0:8-n], bsAll0xff) - } - i = i2 - tsec = int64(bigen.Uint64(btmp)) - } - if bd&(1<<6) != 0 { - var btmp [4]byte - n = (bd & 0x3) + 1 - i2 = i + n - copy(btmp[4-n:], bs[i:i2]) - i = i2 - tnsec = bigen.Uint32(btmp) - } - if bd&(1<<5) == 0 { - tt = time.Unix(tsec, int64(tnsec)).UTC() - return +// We keep them together here, so that we can easily copy and compare. + +// ---- + +func (d *bincEncDriver[T]) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*BincHandle) + d.e = shared + if shared.bytes { + fp = bincFpEncBytes + } else { + fp = bincFpEncIO } - // In stdlib time.Parse, when a date is parsed without a zone name, it uses "" as zone name. - // However, we need name here, so it can be shown when time is printf.d. - // Zone name is in form: UTC-08:00. - // Note that Go Libs do not give access to dst flag, so we ignore dst bits - - tz = bigen.Uint16([2]byte{bs[i], bs[i+1]}) - // sign extend sign bit into top 2 MSB (which were dst bits): - if tz&(1<<13) == 0 { // positive - tz = tz & 0x3fff //clear 2 MSBs: dst bits - } else { // negative - tz = tz | 0xc000 //set 2 MSBs: dst bits - } - tzint := int16(tz) - if tzint == 0 { - tt = time.Unix(tsec, int64(tnsec)).UTC() + // d.w.init() + d.init2(enc) + return +} + +func (e *bincEncDriver[T]) writeBytesAsis(b []byte) { e.w.writeb(b) } + +// func (e *bincEncDriver[T]) writeStringAsisDblQuoted(v string) { e.w.writeqstr(v) } + +func (e *bincEncDriver[T]) writerEnd() { e.w.end() } + +func (e *bincEncDriver[T]) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *bincEncDriver[T]) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +// ---- + +func (d *bincDecDriver[T]) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*BincHandle) + d.d = shared + if shared.bytes { + fp = bincFpDecBytes } else { - // For Go Time, do not use a descriptive timezone. - // It's unnecessary, and makes it harder to do a reflect.DeepEqual. - // The Offset already tells what the offset should be, if not on UTC and unknown zone name. - // var zoneName = timeLocUTCName(tzint) - tt = time.Unix(tsec, int64(tnsec)).In(time.FixedZone("", int(tzint)*60)) + fp = bincFpDecIO } + // d.r.init() + d.init2(dec) return } -var _ decDriver = (*bincDecDriver)(nil) -var _ encDriver = (*bincEncDriver)(nil) +func (d *bincDecDriver[T]) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *bincDecDriver[T]) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *bincDecDriver[T]) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +// ---- (custom stanza) + +func (d *bincDecDriver[T]) descBd() string { + return sprintf("%v (%s)", d.bd, bincdescbd(d.bd)) +} + +func (d *bincDecDriver[T]) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/binc.mono.generated.go b/vendor/github.com/ugorji/go/codec/binc.mono.generated.go new file mode 100644 index 000000000..78a76027c --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/binc.mono.generated.go @@ -0,0 +1,8158 @@ +//go:build !notmono && !codec.notmono + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + + "io" + "math" + "reflect" + "slices" + "sort" + "strconv" + "sync" + "time" + "unicode/utf8" +) + +type helperEncDriverBincBytes struct{} +type encFnBincBytes struct { + i encFnInfo + fe func(*encoderBincBytes, *encFnInfo, reflect.Value) +} +type encRtidFnBincBytes struct { + rtid uintptr + fn *encFnBincBytes +} +type encoderBincBytes struct { + dh helperEncDriverBincBytes + fp *fastpathEsBincBytes + e bincEncDriverBytes + encoderBase +} +type helperDecDriverBincBytes struct{} +type decFnBincBytes struct { + i decFnInfo + fd func(*decoderBincBytes, *decFnInfo, reflect.Value) +} +type decRtidFnBincBytes struct { + rtid uintptr + fn *decFnBincBytes +} +type decoderBincBytes struct { + dh helperDecDriverBincBytes + fp *fastpathDsBincBytes + d bincDecDriverBytes + decoderBase +} +type bincEncDriverBytes struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverContainerNoTrackerT + encInit2er + + h *BincHandle + e *encoderBase + w bytesEncAppender + bincEncState +} +type bincDecDriverBytes struct { + decDriverNoopContainerReader + + decInit2er + noBuiltInTypes + + h *BincHandle + d *decoderBase + r bytesDecReader + + bincDecState +} + +func (e *encoderBincBytes) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderBincBytes) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderBincBytes) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderBincBytes) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderBincBytes) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderBincBytes) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderBincBytes) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderBincBytes) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderBincBytes) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderBincBytes) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderBincBytes) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderBincBytes) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderBincBytes) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderBincBytes) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderBincBytes) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderBincBytes) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderBincBytes) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderBincBytes) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderBincBytes) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderBincBytes) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderBincBytes) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderBincBytes) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderBincBytes) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderBincBytes) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderBincBytes) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderBincBytes) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderBincBytes) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderBincBytes) kSeqFn(rt reflect.Type) (fn *encFnBincBytes) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderBincBytes) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnBincBytes + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderBincBytes) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnBincBytes + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderBincBytes) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderBincBytes) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderBincBytes) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderBincBytes) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderBincBytes) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderBincBytes) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderBincBytes) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderBincBytes) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnBincBytes + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincBytes) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnBincBytes) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderBincBytes) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsBincBytes) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderBincBytes) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderBincBytes) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderBincBytes) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderBincBytes) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderBincBytes) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderBincBytes) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderBincBytes) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderBincBytes) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderBincBytes) encodeValue(rv reflect.Value, fn *encFnBincBytes) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderBincBytes) encodeValueNonNil(rv reflect.Value, fn *encFnBincBytes) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderBincBytes) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderBincBytes) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderBincBytes) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderBincBytes) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderBincBytes) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderBincBytes) fn(t reflect.Type) *encFnBincBytes { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderBincBytes) fnNoExt(t reflect.Type) *encFnBincBytes { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderBincBytes) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderBincBytes) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderBincBytes) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderBincBytes) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderBincBytes) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderBincBytes) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderBincBytes) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderBincBytes) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverBincBytes) newEncoderBytes(out *[]byte, h Handle) *encoderBincBytes { + var c1 encoderBincBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverBincBytes) newEncoderIO(out io.Writer, h Handle) *encoderBincBytes { + var c1 encoderBincBytes + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverBincBytes) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsBincBytes) (f *fastpathEBincBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverBincBytes) encFindRtidFn(s []encRtidFnBincBytes, rtid uintptr) (i uint, fn *encFnBincBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverBincBytes) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnBincBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnBincBytes](v)) + } + return +} + +func (dh helperEncDriverBincBytes) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsBincBytes, checkExt bool) (fn *encFnBincBytes) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverBincBytes) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincBytes) { + rtid := rt2id(rt) + var sp []encRtidFnBincBytes = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverBincBytes) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincBytes) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnBincBytes + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnBincBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnBincBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnBincBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverBincBytes) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincBytes) { + fn = new(encFnBincBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderBincBytes).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderBincBytes).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderBincBytes).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderBincBytes).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderBincBytes).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderBincBytes).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderBincBytes).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderBincBytes).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderBincBytes, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderBincBytes).kBool + case reflect.String: + + fn.fe = (*encoderBincBytes).kString + case reflect.Int: + fn.fe = (*encoderBincBytes).kInt + case reflect.Int8: + fn.fe = (*encoderBincBytes).kInt8 + case reflect.Int16: + fn.fe = (*encoderBincBytes).kInt16 + case reflect.Int32: + fn.fe = (*encoderBincBytes).kInt32 + case reflect.Int64: + fn.fe = (*encoderBincBytes).kInt64 + case reflect.Uint: + fn.fe = (*encoderBincBytes).kUint + case reflect.Uint8: + fn.fe = (*encoderBincBytes).kUint8 + case reflect.Uint16: + fn.fe = (*encoderBincBytes).kUint16 + case reflect.Uint32: + fn.fe = (*encoderBincBytes).kUint32 + case reflect.Uint64: + fn.fe = (*encoderBincBytes).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderBincBytes).kUintptr + case reflect.Float32: + fn.fe = (*encoderBincBytes).kFloat32 + case reflect.Float64: + fn.fe = (*encoderBincBytes).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderBincBytes).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderBincBytes).kComplex128 + case reflect.Chan: + fn.fe = (*encoderBincBytes).kChan + case reflect.Slice: + fn.fe = (*encoderBincBytes).kSlice + case reflect.Array: + fn.fe = (*encoderBincBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderBincBytes).kStructSimple + } else { + fn.fe = (*encoderBincBytes).kStruct + } + case reflect.Map: + fn.fe = (*encoderBincBytes).kMap + case reflect.Interface: + + fn.fe = (*encoderBincBytes).kErr + default: + + fn.fe = (*encoderBincBytes).kErr + } + } + } + return +} +func (d *decoderBincBytes) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderBincBytes) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderBincBytes) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderBincBytes) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderBincBytes) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderBincBytes) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderBincBytes) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderBincBytes) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderBincBytes) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderBincBytes) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderBincBytes) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderBincBytes) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderBincBytes) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderBincBytes) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderBincBytes) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderBincBytes) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderBincBytes) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderBincBytes) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderBincBytes) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderBincBytes) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderBincBytes) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderBincBytes) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderBincBytes) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderBincBytes) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderBincBytes) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderBincBytes) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderBincBytes) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderBincBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderBincBytes) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderBincBytes) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderBincBytes) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderBincBytes) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderBincBytes) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnBincBytes + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderBincBytes) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnBincBytes + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincBytes) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnBincBytes + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderBincBytes) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnBincBytes + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderBincBytes) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsBincBytes) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderBincBytes) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderBincBytes) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderBincBytes) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderBincBytes) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderBincBytes) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderBincBytes) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderBincBytes) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderBincBytes) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderBincBytes) Release() {} + +func (d *decoderBincBytes) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderBincBytes) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderBincBytes) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderBincBytes) decodeValue(rv reflect.Value, fn *decFnBincBytes) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderBincBytes) decodeValueNoCheckNil(rv reflect.Value, fn *decFnBincBytes) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderBincBytes) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderBincBytes) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderBincBytes) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderBincBytes) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderBincBytes) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderBincBytes) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderBincBytes) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderBincBytes) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderBincBytes) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderBincBytes) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderBincBytes) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderBincBytes) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderBincBytes) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderBincBytes) fn(t reflect.Type) *decFnBincBytes { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderBincBytes) fnNoExt(t reflect.Type) *decFnBincBytes { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverBincBytes) newDecoderBytes(in []byte, h Handle) *decoderBincBytes { + var c1 decoderBincBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverBincBytes) newDecoderIO(in io.Reader, h Handle) *decoderBincBytes { + var c1 decoderBincBytes + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverBincBytes) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsBincBytes) (f *fastpathDBincBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverBincBytes) decFindRtidFn(s []decRtidFnBincBytes, rtid uintptr) (i uint, fn *decFnBincBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverBincBytes) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnBincBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnBincBytes](v)) + } + return +} + +func (dh helperDecDriverBincBytes) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsBincBytes, + checkExt bool) (fn *decFnBincBytes) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverBincBytes) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincBytes) { + rtid := rt2id(rt) + var sp []decRtidFnBincBytes = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverBincBytes) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincBytes) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnBincBytes + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnBincBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnBincBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnBincBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverBincBytes) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsBincBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincBytes) { + fn = new(decFnBincBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderBincBytes).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderBincBytes).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderBincBytes).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderBincBytes).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderBincBytes).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderBincBytes).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderBincBytes).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderBincBytes).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderBincBytes, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderBincBytes, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderBincBytes).kBool + case reflect.String: + fn.fd = (*decoderBincBytes).kString + case reflect.Int: + fn.fd = (*decoderBincBytes).kInt + case reflect.Int8: + fn.fd = (*decoderBincBytes).kInt8 + case reflect.Int16: + fn.fd = (*decoderBincBytes).kInt16 + case reflect.Int32: + fn.fd = (*decoderBincBytes).kInt32 + case reflect.Int64: + fn.fd = (*decoderBincBytes).kInt64 + case reflect.Uint: + fn.fd = (*decoderBincBytes).kUint + case reflect.Uint8: + fn.fd = (*decoderBincBytes).kUint8 + case reflect.Uint16: + fn.fd = (*decoderBincBytes).kUint16 + case reflect.Uint32: + fn.fd = (*decoderBincBytes).kUint32 + case reflect.Uint64: + fn.fd = (*decoderBincBytes).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderBincBytes).kUintptr + case reflect.Float32: + fn.fd = (*decoderBincBytes).kFloat32 + case reflect.Float64: + fn.fd = (*decoderBincBytes).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderBincBytes).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderBincBytes).kComplex128 + case reflect.Chan: + fn.fd = (*decoderBincBytes).kChan + case reflect.Slice: + fn.fd = (*decoderBincBytes).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderBincBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderBincBytes).kStructSimple + } else { + fn.fd = (*decoderBincBytes).kStruct + } + case reflect.Map: + fn.fd = (*decoderBincBytes).kMap + case reflect.Interface: + + fn.fd = (*decoderBincBytes).kInterface + default: + + fn.fd = (*decoderBincBytes).kErr + } + } + } + return +} +func (e *bincEncDriverBytes) EncodeNil() { + e.w.writen1(bincBdNil) +} + +func (e *bincEncDriverBytes) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + } else { + bs := bincEncodeTime(t) + e.w.writen1(bincVdTimestamp<<4 | uint8(len(bs))) + e.w.writeb(bs) + } +} + +func (e *bincEncDriverBytes) EncodeBool(b bool) { + if b { + e.w.writen1(bincVdSpecial<<4 | bincSpTrue) + } else { + e.w.writen1(bincVdSpecial<<4 | bincSpFalse) + } +} + +func (e *bincEncDriverBytes) encSpFloat(f float64) (done bool) { + if f == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat) + } else if math.IsNaN(float64(f)) { + e.w.writen1(bincVdSpecial<<4 | bincSpNan) + } else if math.IsInf(float64(f), +1) { + e.w.writen1(bincVdSpecial<<4 | bincSpPosInf) + } else if math.IsInf(float64(f), -1) { + e.w.writen1(bincVdSpecial<<4 | bincSpNegInf) + } else { + return + } + return true +} + +func (e *bincEncDriverBytes) EncodeFloat32(f float32) { + if !e.encSpFloat(float64(f)) { + e.w.writen1(bincVdFloat<<4 | bincFlBin32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) + } +} + +func (e *bincEncDriverBytes) EncodeFloat64(f float64) { + if e.encSpFloat(f) { + return + } + b := bigen.PutUint64(math.Float64bits(f)) + if bincDoPrune { + i := 7 + for ; i >= 0 && (b[i] == 0); i-- { + } + i++ + if i <= 6 { + e.w.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64) + e.w.writen1(byte(i)) + e.w.writeb(b[:i]) + return + } + } + e.w.writen1(bincVdFloat<<4 | bincFlBin64) + e.w.writen8(b) +} + +func (e *bincEncDriverBytes) encIntegerPrune32(bd byte, pos bool, v uint64) { + b := bigen.PutUint32(uint32(v)) + if bincDoPrune { + i := byte(pruneSignExt(b[:], pos)) + e.w.writen1(bd | 3 - i) + e.w.writeb(b[i:]) + } else { + e.w.writen1(bd | 3) + e.w.writen4(b) + } +} + +func (e *bincEncDriverBytes) encIntegerPrune64(bd byte, pos bool, v uint64) { + b := bigen.PutUint64(v) + if bincDoPrune { + i := byte(pruneSignExt(b[:], pos)) + e.w.writen1(bd | 7 - i) + e.w.writeb(b[i:]) + } else { + e.w.writen1(bd | 7) + e.w.writen8(b) + } +} + +func (e *bincEncDriverBytes) EncodeInt(v int64) { + if v >= 0 { + e.encUint(bincVdPosInt<<4, true, uint64(v)) + } else if v == -1 { + e.w.writen1(bincVdSpecial<<4 | bincSpNegOne) + } else { + e.encUint(bincVdNegInt<<4, false, uint64(-v)) + } +} + +func (e *bincEncDriverBytes) EncodeUint(v uint64) { + e.encUint(bincVdPosInt<<4, true, v) +} + +func (e *bincEncDriverBytes) encUint(bd byte, pos bool, v uint64) { + if v == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZero) + } else if pos && v >= 1 && v <= 16 { + e.w.writen1(bincVdSmallInt<<4 | byte(v-1)) + } else if v <= math.MaxUint8 { + e.w.writen2(bd, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.encIntegerPrune32(bd, pos, v) + } else { + e.encIntegerPrune64(bd, pos, v) + } +} + +func (e *bincEncDriverBytes) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *bincEncDriverBytes) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *bincEncDriverBytes) encodeExtPreamble(xtag byte, length int) { + e.encLen(bincVdCustomExt<<4, uint64(length)) + e.w.writen1(xtag) +} + +func (e *bincEncDriverBytes) WriteArrayStart(length int) { + e.encLen(bincVdArray<<4, uint64(length)) +} + +func (e *bincEncDriverBytes) WriteMapStart(length int) { + e.encLen(bincVdMap<<4, uint64(length)) +} + +func (e *bincEncDriverBytes) WriteArrayEmpty() { + + e.w.writen1(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverBytes) WriteMapEmpty() { + + e.w.writen1(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriverBytes) EncodeSymbol(v string) { + + l := len(v) + if l == 0 { + e.encBytesLen(cUTF8, 0) + return + } else if l == 1 { + e.encBytesLen(cUTF8, 1) + e.w.writen1(v[0]) + return + } + if e.m == nil { + e.m = make(map[string]uint16, 16) + } + ui, ok := e.m[v] + if ok { + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8) + e.w.writen2(bigen.PutUint16(ui)) + } + } else { + e.e.seq++ + ui = e.e.seq + e.m[v] = ui + var lenprec uint8 + if l <= math.MaxUint8 { + + } else if l <= math.MaxUint16 { + lenprec = 1 + } else if int64(l) <= math.MaxUint32 { + lenprec = 2 + } else { + lenprec = 3 + } + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4|0x4|lenprec, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec) + e.w.writen2(bigen.PutUint16(ui)) + } + if lenprec == 0 { + e.w.writen1(byte(l)) + } else if lenprec == 1 { + e.w.writen2(bigen.PutUint16(uint16(l))) + } else if lenprec == 2 { + e.w.writen4(bigen.PutUint32(uint32(l))) + } else { + e.w.writen8(bigen.PutUint64(uint64(l))) + } + e.w.writestr(v) + } +} + +func (e *bincEncDriverBytes) EncodeString(v string) { + if e.h.StringToRaw { + e.encLen(bincVdByteArray<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writestr(v) + } + return + } + e.EncodeStringEnc(cUTF8, v) +} + +func (e *bincEncDriverBytes) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *bincEncDriverBytes) EncodeStringEnc(c charEncoding, v string) { + if e.e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 1) { + e.EncodeSymbol(v) + return + } + e.encLen(bincVdString<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writestr(v) + } +} + +func (e *bincEncDriverBytes) EncodeStringBytesRaw(v []byte) { + e.encLen(bincVdByteArray<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writeb(v) + } +} + +func (e *bincEncDriverBytes) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *bincEncDriverBytes) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = bincBdNil + } + e.w.writen1(v) +} + +func (e *bincEncDriverBytes) writeNilArray() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverBytes) writeNilMap() { + e.writeNilOr(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriverBytes) writeNilBytes() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverBytes) encBytesLen(c charEncoding, length uint64) { + + if c == cRAW { + e.encLen(bincVdByteArray<<4, length) + } else { + e.encLen(bincVdString<<4, length) + } +} + +func (e *bincEncDriverBytes) encLen(bd byte, l uint64) { + if l < 12 { + e.w.writen1(bd | uint8(l+4)) + } else { + e.encLenNumber(bd, l) + } +} + +func (e *bincEncDriverBytes) encLenNumber(bd byte, v uint64) { + if v <= math.MaxUint8 { + e.w.writen2(bd, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd | 0x02) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd | 0x03) + e.w.writen8(bigen.PutUint64(uint64(v))) + } +} + +func (d *bincDecDriverBytes) readNextBd() { + d.bd = d.r.readn1() + d.vd = d.bd >> 4 + d.vs = d.bd & 0x0f + d.bdRead = true +} + +func (d *bincDecDriverBytes) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincBdNil { + d.bdRead = false + return true + } + return +} + +func (d *bincDecDriverBytes) TryNil() bool { + return d.advanceNil() +} + +func (d *bincDecDriverBytes) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincBdNil { + d.bdRead = false + return valueTypeNil + } else if d.vd == bincVdByteArray { + return valueTypeBytes + } else if d.vd == bincVdString { + return valueTypeString + } else if d.vd == bincVdArray { + return valueTypeArray + } else if d.vd == bincVdMap { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *bincDecDriverBytes) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.vd != bincVdTimestamp { + halt.errorf("cannot decode time - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + t, err := bincDecodeTime(d.r.readx(uint(d.vs))) + halt.onerror(err) + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) decFloatPruned(maxlen uint8) { + l := d.r.readn1() + if l > maxlen { + halt.errorf("cannot read float - at most %v bytes used to represent float - received %v bytes", maxlen, l) + } + for i := l; i < maxlen; i++ { + d.d.b[i] = 0 + } + d.r.readb(d.d.b[0:l]) +} + +func (d *bincDecDriverBytes) decFloatPre32() (b [4]byte) { + if d.vs&0x8 == 0 { + b = d.r.readn4() + } else { + d.decFloatPruned(4) + copy(b[:], d.d.b[:]) + } + return +} + +func (d *bincDecDriverBytes) decFloatPre64() (b [8]byte) { + if d.vs&0x8 == 0 { + b = d.r.readn8() + } else { + d.decFloatPruned(8) + copy(b[:], d.d.b[:]) + } + return +} + +func (d *bincDecDriverBytes) decFloatVal() (f float64) { + switch d.vs & 0x7 { + case bincFlBin32: + f = float64(math.Float32frombits(bigen.Uint32(d.decFloatPre32()))) + case bincFlBin64: + f = math.Float64frombits(bigen.Uint64(d.decFloatPre64())) + default: + + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + return +} + +func (d *bincDecDriverBytes) decUint() (v uint64) { + switch d.vs { + case 0: + v = uint64(d.r.readn1()) + case 1: + v = uint64(bigen.Uint16(d.r.readn2())) + case 2: + b3 := d.r.readn3() + var b [4]byte + copy(b[1:], b3[:]) + v = uint64(bigen.Uint32(b)) + case 3: + v = uint64(bigen.Uint32(d.r.readn4())) + case 4, 5, 6: + + bs := d.d.b[:8] + clear(bs) + d.r.readb(bs[(7 - d.vs):]) + v = bigen.Uint64(*(*[8]byte)(bs)) + case 7: + v = bigen.Uint64(d.r.readn8()) + default: + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + } + return +} + +func (d *bincDecDriverBytes) uintBytes() (bs []byte) { + switch d.vs { + case 0: + bs = d.d.b[:1] + bs[0] = d.r.readn1() + return + case 1: + bs = d.d.b[:2] + case 2: + bs = d.d.b[:3] + case 3: + bs = d.d.b[:4] + case 4, 5, 6: + lim := 7 - d.vs + bs = d.d.b[lim:8] + case 7: + bs = d.d.b[:8] + default: + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + } + d.r.readb(bs) + return +} + +func (d *bincDecDriverBytes) decInteger() (ui uint64, neg, ok bool) { + ok = true + vd, vs := d.vd, d.vs + if vd == bincVdPosInt { + ui = d.decUint() + } else if vd == bincVdNegInt { + ui = d.decUint() + neg = true + } else if vd == bincVdSmallInt { + ui = uint64(d.vs) + 1 + } else if vd == bincVdSpecial { + if vs == bincSpZero { + + } else if vs == bincSpNegOne { + neg = true + ui = 1 + } else { + ok = false + + } + } else { + ok = false + + } + return +} + +func (d *bincDecDriverBytes) decFloat() (f float64, ok bool) { + ok = true + vd, vs := d.vd, d.vs + if vd == bincVdSpecial { + if vs == bincSpNan { + f = math.NaN() + } else if vs == bincSpPosInf { + f = math.Inf(1) + } else if vs == bincSpZeroFloat || vs == bincSpZero { + + } else if vs == bincSpNegInf { + f = math.Inf(-1) + } else { + ok = false + + } + } else if vd == bincVdFloat { + f = d.decFloatVal() + } else { + ok = false + } + return +} + +func (d *bincDecDriverBytes) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == (bincVdSpecial | bincSpFalse) { + + } else if d.bd == (bincVdSpecial | bincSpTrue) { + b = true + } else { + halt.errorf("bool - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.vd != bincVdMap { + halt.errorf("map - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.vd != bincVdArray { + halt.errorf("array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) decLen() int { + if d.vs > 3 { + return int(d.vs - 4) + } + return int(d.decLenNumber()) +} + +func (d *bincDecDriverBytes) decLenNumber() (v uint64) { + if x := d.vs; x == 0 { + v = uint64(d.r.readn1()) + } else if x == 1 { + v = uint64(bigen.Uint16(d.r.readn2())) + } else if x == 2 { + v = uint64(bigen.Uint32(d.r.readn4())) + } else { + v = bigen.Uint64(d.r.readn8()) + } + return +} + +func (d *bincDecDriverBytes) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + var slen = -1 + switch d.vd { + case bincVdString, bincVdByteArray: + slen = d.decLen() + bs, cond = d.r.readxb(uint(slen)) + state = d.d.attachState(cond) + case bincVdSymbol: + + var symbol uint16 + vs := d.vs + if vs&0x8 == 0 { + symbol = uint16(d.r.readn1()) + } else { + symbol = uint16(bigen.Uint16(d.r.readn2())) + } + if d.s == nil { + d.s = make(map[uint16][]byte, 16) + } + + if vs&0x4 == 0 { + bs = d.s[symbol] + } else { + switch vs & 0x3 { + case 0: + slen = int(d.r.readn1()) + case 1: + slen = int(bigen.Uint16(d.r.readn2())) + case 2: + slen = int(bigen.Uint32(d.r.readn4())) + case 3: + slen = int(bigen.Uint64(d.r.readn8())) + } + + bs, cond = d.r.readxb(uint(slen)) + bs = d.d.detach2Bytes(bs, d.d.attachState(cond)) + d.s[symbol] = bs + } + state = dBytesDetach + default: + halt.errorf("string/bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + + if d.h.ValidateUnicode && !utf8.Valid(bs) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", bs) + } + + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + if d.vd == bincVdArray { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < slen; i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return + } + if !(d.vd == bincVdString || d.vd == bincVdByteArray) { + halt.errorf("bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *bincDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *bincDecDriverBytes) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *bincDecDriverBytes) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + if d.vd == bincVdCustomExt { + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag - got %b, expecting: %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) + + } else if d.vd == bincVdByteArray { + xbs, bstate = d.DecodeBytes() + } else { + halt.errorf("ext expects extensions or byte array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + d.bdRead = false + ok = true + return +} + +func (d *bincDecDriverBytes) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + + switch d.vd { + case bincVdSpecial: + switch d.vs { + case bincSpNil: + n.v = valueTypeNil + case bincSpFalse: + n.v = valueTypeBool + n.b = false + case bincSpTrue: + n.v = valueTypeBool + n.b = true + case bincSpNan: + n.v = valueTypeFloat + n.f = math.NaN() + case bincSpPosInf: + n.v = valueTypeFloat + n.f = math.Inf(1) + case bincSpNegInf: + n.v = valueTypeFloat + n.f = math.Inf(-1) + case bincSpZeroFloat: + n.v = valueTypeFloat + n.f = float64(0) + case bincSpZero: + n.v = valueTypeUint + n.u = uint64(0) + case bincSpNegOne: + n.v = valueTypeInt + n.i = int64(-1) + default: + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdSmallInt: + n.v = valueTypeUint + n.u = uint64(int8(d.vs)) + 1 + case bincVdPosInt: + n.v = valueTypeUint + n.u = d.decUint() + case bincVdNegInt: + n.v = valueTypeInt + n.i = -(int64(d.decUint())) + case bincVdFloat: + n.v = valueTypeFloat + n.f = d.decFloatVal() + case bincVdString: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case bincVdByteArray: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case bincVdSymbol: + n.v = valueTypeSymbol + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case bincVdTimestamp: + n.v = valueTypeTime + tt, err := bincDecodeTime(d.r.readx(uint(d.vs))) + halt.onerror(err) + n.t = tt + case bincVdCustomExt: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) + case bincVdArray: + n.v = valueTypeArray + decodeFurther = true + case bincVdMap: + n.v = valueTypeMap + decodeFurther = true + default: + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.u) + } +} + +func (d *bincDecDriverBytes) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *bincDecDriverBytes) nextValueBytesBdReadR() { + fnLen := func(vs byte) uint { + switch vs { + case 0: + x := d.r.readn1() + return uint(x) + case 1: + x := d.r.readn2() + return uint(bigen.Uint16(x)) + case 2: + x := d.r.readn4() + return uint(bigen.Uint32(x)) + case 3: + x := d.r.readn8() + return uint(bigen.Uint64(x)) + default: + return uint(vs - 4) + } + } + + var clen uint + + switch d.vd { + case bincVdSpecial: + switch d.vs { + case bincSpNil, bincSpFalse, bincSpTrue, bincSpNan, bincSpPosInf: + case bincSpNegInf, bincSpZeroFloat, bincSpZero, bincSpNegOne: + default: + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdSmallInt: + case bincVdPosInt, bincVdNegInt: + d.uintBytes() + case bincVdFloat: + fn := func(xlen byte) { + if d.vs&0x8 != 0 { + xlen = d.r.readn1() + if xlen > 8 { + halt.errorf("cannot read float - at most 8 bytes used to represent float - received %v bytes", xlen) + } + } + d.r.readb(d.d.b[:xlen]) + } + switch d.vs & 0x7 { + case bincFlBin32: + fn(4) + case bincFlBin64: + fn(8) + default: + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdString, bincVdByteArray: + clen = fnLen(d.vs) + d.r.skip(clen) + case bincVdSymbol: + if d.vs&0x8 == 0 { + d.r.readn1() + } else { + d.r.skip(2) + } + if d.vs&0x4 != 0 { + clen = fnLen(d.vs & 0x3) + d.r.skip(clen) + } + case bincVdTimestamp: + d.r.skip(uint(d.vs)) + case bincVdCustomExt: + clen = fnLen(d.vs) + d.r.readn1() + d.r.skip(clen) + case bincVdArray: + clen = fnLen(d.vs) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case bincVdMap: + clen = fnLen(d.vs) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + return +} + +func (d *bincEncDriverBytes) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*BincHandle) + d.e = shared + if shared.bytes { + fp = bincFpEncBytes + } else { + fp = bincFpEncIO + } + + d.init2(enc) + return +} + +func (e *bincEncDriverBytes) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *bincEncDriverBytes) writerEnd() { e.w.end() } + +func (e *bincEncDriverBytes) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *bincEncDriverBytes) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *bincDecDriverBytes) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*BincHandle) + d.d = shared + if shared.bytes { + fp = bincFpDecBytes + } else { + fp = bincFpDecIO + } + + d.init2(dec) + return +} + +func (d *bincDecDriverBytes) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *bincDecDriverBytes) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *bincDecDriverBytes) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *bincDecDriverBytes) descBd() string { + return sprintf("%v (%s)", d.bd, bincdescbd(d.bd)) +} + +func (d *bincDecDriverBytes) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +type helperEncDriverBincIO struct{} +type encFnBincIO struct { + i encFnInfo + fe func(*encoderBincIO, *encFnInfo, reflect.Value) +} +type encRtidFnBincIO struct { + rtid uintptr + fn *encFnBincIO +} +type encoderBincIO struct { + dh helperEncDriverBincIO + fp *fastpathEsBincIO + e bincEncDriverIO + encoderBase +} +type helperDecDriverBincIO struct{} +type decFnBincIO struct { + i decFnInfo + fd func(*decoderBincIO, *decFnInfo, reflect.Value) +} +type decRtidFnBincIO struct { + rtid uintptr + fn *decFnBincIO +} +type decoderBincIO struct { + dh helperDecDriverBincIO + fp *fastpathDsBincIO + d bincDecDriverIO + decoderBase +} +type bincEncDriverIO struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverContainerNoTrackerT + encInit2er + + h *BincHandle + e *encoderBase + w bufioEncWriter + bincEncState +} +type bincDecDriverIO struct { + decDriverNoopContainerReader + + decInit2er + noBuiltInTypes + + h *BincHandle + d *decoderBase + r ioDecReader + + bincDecState +} + +func (e *encoderBincIO) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderBincIO) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderBincIO) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderBincIO) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderBincIO) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderBincIO) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderBincIO) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderBincIO) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderBincIO) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderBincIO) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderBincIO) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderBincIO) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderBincIO) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderBincIO) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderBincIO) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderBincIO) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderBincIO) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderBincIO) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderBincIO) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderBincIO) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderBincIO) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderBincIO) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderBincIO) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderBincIO) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderBincIO) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderBincIO) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderBincIO) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderBincIO) kSeqFn(rt reflect.Type) (fn *encFnBincIO) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderBincIO) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnBincIO + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderBincIO) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnBincIO + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderBincIO) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderBincIO) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderBincIO) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderBincIO) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderBincIO) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderBincIO) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderBincIO) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderBincIO) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnBincIO + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderBincIO) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnBincIO) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderBincIO) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsBincIO) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderBincIO) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderBincIO) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderBincIO) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderBincIO) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderBincIO) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderBincIO) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderBincIO) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderBincIO) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderBincIO) encodeValue(rv reflect.Value, fn *encFnBincIO) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderBincIO) encodeValueNonNil(rv reflect.Value, fn *encFnBincIO) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderBincIO) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderBincIO) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderBincIO) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderBincIO) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderBincIO) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderBincIO) fn(t reflect.Type) *encFnBincIO { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderBincIO) fnNoExt(t reflect.Type) *encFnBincIO { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderBincIO) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderBincIO) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderBincIO) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderBincIO) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderBincIO) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderBincIO) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderBincIO) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderBincIO) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverBincIO) newEncoderBytes(out *[]byte, h Handle) *encoderBincIO { + var c1 encoderBincIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverBincIO) newEncoderIO(out io.Writer, h Handle) *encoderBincIO { + var c1 encoderBincIO + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverBincIO) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsBincIO) (f *fastpathEBincIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverBincIO) encFindRtidFn(s []encRtidFnBincIO, rtid uintptr) (i uint, fn *encFnBincIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverBincIO) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnBincIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnBincIO](v)) + } + return +} + +func (dh helperEncDriverBincIO) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsBincIO, checkExt bool) (fn *encFnBincIO) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverBincIO) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincIO) { + rtid := rt2id(rt) + var sp []encRtidFnBincIO = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverBincIO) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincIO) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnBincIO + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnBincIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnBincIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnBincIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverBincIO) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnBincIO) { + fn = new(encFnBincIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderBincIO).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderBincIO).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderBincIO).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderBincIO).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderBincIO).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderBincIO).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderBincIO).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderBincIO).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderBincIO, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderBincIO).kBool + case reflect.String: + + fn.fe = (*encoderBincIO).kString + case reflect.Int: + fn.fe = (*encoderBincIO).kInt + case reflect.Int8: + fn.fe = (*encoderBincIO).kInt8 + case reflect.Int16: + fn.fe = (*encoderBincIO).kInt16 + case reflect.Int32: + fn.fe = (*encoderBincIO).kInt32 + case reflect.Int64: + fn.fe = (*encoderBincIO).kInt64 + case reflect.Uint: + fn.fe = (*encoderBincIO).kUint + case reflect.Uint8: + fn.fe = (*encoderBincIO).kUint8 + case reflect.Uint16: + fn.fe = (*encoderBincIO).kUint16 + case reflect.Uint32: + fn.fe = (*encoderBincIO).kUint32 + case reflect.Uint64: + fn.fe = (*encoderBincIO).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderBincIO).kUintptr + case reflect.Float32: + fn.fe = (*encoderBincIO).kFloat32 + case reflect.Float64: + fn.fe = (*encoderBincIO).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderBincIO).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderBincIO).kComplex128 + case reflect.Chan: + fn.fe = (*encoderBincIO).kChan + case reflect.Slice: + fn.fe = (*encoderBincIO).kSlice + case reflect.Array: + fn.fe = (*encoderBincIO).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderBincIO).kStructSimple + } else { + fn.fe = (*encoderBincIO).kStruct + } + case reflect.Map: + fn.fe = (*encoderBincIO).kMap + case reflect.Interface: + + fn.fe = (*encoderBincIO).kErr + default: + + fn.fe = (*encoderBincIO).kErr + } + } + } + return +} +func (d *decoderBincIO) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderBincIO) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderBincIO) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderBincIO) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderBincIO) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderBincIO) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderBincIO) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderBincIO) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderBincIO) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderBincIO) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderBincIO) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderBincIO) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderBincIO) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderBincIO) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderBincIO) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderBincIO) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderBincIO) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderBincIO) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderBincIO) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderBincIO) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderBincIO) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderBincIO) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderBincIO) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderBincIO) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderBincIO) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderBincIO) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderBincIO) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderBincIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderBincIO) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderBincIO) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderBincIO) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderBincIO) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderBincIO) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnBincIO + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderBincIO) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnBincIO + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderBincIO) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnBincIO + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderBincIO) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnBincIO + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderBincIO) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsBincIO) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderBincIO) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderBincIO) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderBincIO) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderBincIO) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderBincIO) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderBincIO) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderBincIO) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderBincIO) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderBincIO) Release() {} + +func (d *decoderBincIO) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderBincIO) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderBincIO) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderBincIO) decodeValue(rv reflect.Value, fn *decFnBincIO) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderBincIO) decodeValueNoCheckNil(rv reflect.Value, fn *decFnBincIO) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderBincIO) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderBincIO) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderBincIO) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderBincIO) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderBincIO) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderBincIO) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderBincIO) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderBincIO) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderBincIO) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderBincIO) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderBincIO) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderBincIO) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderBincIO) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderBincIO) fn(t reflect.Type) *decFnBincIO { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderBincIO) fnNoExt(t reflect.Type) *decFnBincIO { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverBincIO) newDecoderBytes(in []byte, h Handle) *decoderBincIO { + var c1 decoderBincIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverBincIO) newDecoderIO(in io.Reader, h Handle) *decoderBincIO { + var c1 decoderBincIO + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverBincIO) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsBincIO) (f *fastpathDBincIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverBincIO) decFindRtidFn(s []decRtidFnBincIO, rtid uintptr) (i uint, fn *decFnBincIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverBincIO) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnBincIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnBincIO](v)) + } + return +} + +func (dh helperDecDriverBincIO) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsBincIO, + checkExt bool) (fn *decFnBincIO) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverBincIO) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincIO) { + rtid := rt2id(rt) + var sp []decRtidFnBincIO = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverBincIO) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincIO) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnBincIO + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnBincIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnBincIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnBincIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverBincIO) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsBincIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnBincIO) { + fn = new(decFnBincIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderBincIO).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderBincIO).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderBincIO).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderBincIO).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderBincIO).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderBincIO).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderBincIO).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderBincIO).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderBincIO, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderBincIO, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderBincIO).kBool + case reflect.String: + fn.fd = (*decoderBincIO).kString + case reflect.Int: + fn.fd = (*decoderBincIO).kInt + case reflect.Int8: + fn.fd = (*decoderBincIO).kInt8 + case reflect.Int16: + fn.fd = (*decoderBincIO).kInt16 + case reflect.Int32: + fn.fd = (*decoderBincIO).kInt32 + case reflect.Int64: + fn.fd = (*decoderBincIO).kInt64 + case reflect.Uint: + fn.fd = (*decoderBincIO).kUint + case reflect.Uint8: + fn.fd = (*decoderBincIO).kUint8 + case reflect.Uint16: + fn.fd = (*decoderBincIO).kUint16 + case reflect.Uint32: + fn.fd = (*decoderBincIO).kUint32 + case reflect.Uint64: + fn.fd = (*decoderBincIO).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderBincIO).kUintptr + case reflect.Float32: + fn.fd = (*decoderBincIO).kFloat32 + case reflect.Float64: + fn.fd = (*decoderBincIO).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderBincIO).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderBincIO).kComplex128 + case reflect.Chan: + fn.fd = (*decoderBincIO).kChan + case reflect.Slice: + fn.fd = (*decoderBincIO).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderBincIO).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderBincIO).kStructSimple + } else { + fn.fd = (*decoderBincIO).kStruct + } + case reflect.Map: + fn.fd = (*decoderBincIO).kMap + case reflect.Interface: + + fn.fd = (*decoderBincIO).kInterface + default: + + fn.fd = (*decoderBincIO).kErr + } + } + } + return +} +func (e *bincEncDriverIO) EncodeNil() { + e.w.writen1(bincBdNil) +} + +func (e *bincEncDriverIO) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + } else { + bs := bincEncodeTime(t) + e.w.writen1(bincVdTimestamp<<4 | uint8(len(bs))) + e.w.writeb(bs) + } +} + +func (e *bincEncDriverIO) EncodeBool(b bool) { + if b { + e.w.writen1(bincVdSpecial<<4 | bincSpTrue) + } else { + e.w.writen1(bincVdSpecial<<4 | bincSpFalse) + } +} + +func (e *bincEncDriverIO) encSpFloat(f float64) (done bool) { + if f == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat) + } else if math.IsNaN(float64(f)) { + e.w.writen1(bincVdSpecial<<4 | bincSpNan) + } else if math.IsInf(float64(f), +1) { + e.w.writen1(bincVdSpecial<<4 | bincSpPosInf) + } else if math.IsInf(float64(f), -1) { + e.w.writen1(bincVdSpecial<<4 | bincSpNegInf) + } else { + return + } + return true +} + +func (e *bincEncDriverIO) EncodeFloat32(f float32) { + if !e.encSpFloat(float64(f)) { + e.w.writen1(bincVdFloat<<4 | bincFlBin32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) + } +} + +func (e *bincEncDriverIO) EncodeFloat64(f float64) { + if e.encSpFloat(f) { + return + } + b := bigen.PutUint64(math.Float64bits(f)) + if bincDoPrune { + i := 7 + for ; i >= 0 && (b[i] == 0); i-- { + } + i++ + if i <= 6 { + e.w.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64) + e.w.writen1(byte(i)) + e.w.writeb(b[:i]) + return + } + } + e.w.writen1(bincVdFloat<<4 | bincFlBin64) + e.w.writen8(b) +} + +func (e *bincEncDriverIO) encIntegerPrune32(bd byte, pos bool, v uint64) { + b := bigen.PutUint32(uint32(v)) + if bincDoPrune { + i := byte(pruneSignExt(b[:], pos)) + e.w.writen1(bd | 3 - i) + e.w.writeb(b[i:]) + } else { + e.w.writen1(bd | 3) + e.w.writen4(b) + } +} + +func (e *bincEncDriverIO) encIntegerPrune64(bd byte, pos bool, v uint64) { + b := bigen.PutUint64(v) + if bincDoPrune { + i := byte(pruneSignExt(b[:], pos)) + e.w.writen1(bd | 7 - i) + e.w.writeb(b[i:]) + } else { + e.w.writen1(bd | 7) + e.w.writen8(b) + } +} + +func (e *bincEncDriverIO) EncodeInt(v int64) { + if v >= 0 { + e.encUint(bincVdPosInt<<4, true, uint64(v)) + } else if v == -1 { + e.w.writen1(bincVdSpecial<<4 | bincSpNegOne) + } else { + e.encUint(bincVdNegInt<<4, false, uint64(-v)) + } +} + +func (e *bincEncDriverIO) EncodeUint(v uint64) { + e.encUint(bincVdPosInt<<4, true, v) +} + +func (e *bincEncDriverIO) encUint(bd byte, pos bool, v uint64) { + if v == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZero) + } else if pos && v >= 1 && v <= 16 { + e.w.writen1(bincVdSmallInt<<4 | byte(v-1)) + } else if v <= math.MaxUint8 { + e.w.writen2(bd, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.encIntegerPrune32(bd, pos, v) + } else { + e.encIntegerPrune64(bd, pos, v) + } +} + +func (e *bincEncDriverIO) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *bincEncDriverIO) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *bincEncDriverIO) encodeExtPreamble(xtag byte, length int) { + e.encLen(bincVdCustomExt<<4, uint64(length)) + e.w.writen1(xtag) +} + +func (e *bincEncDriverIO) WriteArrayStart(length int) { + e.encLen(bincVdArray<<4, uint64(length)) +} + +func (e *bincEncDriverIO) WriteMapStart(length int) { + e.encLen(bincVdMap<<4, uint64(length)) +} + +func (e *bincEncDriverIO) WriteArrayEmpty() { + + e.w.writen1(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverIO) WriteMapEmpty() { + + e.w.writen1(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriverIO) EncodeSymbol(v string) { + + l := len(v) + if l == 0 { + e.encBytesLen(cUTF8, 0) + return + } else if l == 1 { + e.encBytesLen(cUTF8, 1) + e.w.writen1(v[0]) + return + } + if e.m == nil { + e.m = make(map[string]uint16, 16) + } + ui, ok := e.m[v] + if ok { + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8) + e.w.writen2(bigen.PutUint16(ui)) + } + } else { + e.e.seq++ + ui = e.e.seq + e.m[v] = ui + var lenprec uint8 + if l <= math.MaxUint8 { + + } else if l <= math.MaxUint16 { + lenprec = 1 + } else if int64(l) <= math.MaxUint32 { + lenprec = 2 + } else { + lenprec = 3 + } + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4|0x4|lenprec, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec) + e.w.writen2(bigen.PutUint16(ui)) + } + if lenprec == 0 { + e.w.writen1(byte(l)) + } else if lenprec == 1 { + e.w.writen2(bigen.PutUint16(uint16(l))) + } else if lenprec == 2 { + e.w.writen4(bigen.PutUint32(uint32(l))) + } else { + e.w.writen8(bigen.PutUint64(uint64(l))) + } + e.w.writestr(v) + } +} + +func (e *bincEncDriverIO) EncodeString(v string) { + if e.h.StringToRaw { + e.encLen(bincVdByteArray<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writestr(v) + } + return + } + e.EncodeStringEnc(cUTF8, v) +} + +func (e *bincEncDriverIO) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *bincEncDriverIO) EncodeStringEnc(c charEncoding, v string) { + if e.e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 1) { + e.EncodeSymbol(v) + return + } + e.encLen(bincVdString<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writestr(v) + } +} + +func (e *bincEncDriverIO) EncodeStringBytesRaw(v []byte) { + e.encLen(bincVdByteArray<<4, uint64(len(v))) + if len(v) > 0 { + e.w.writeb(v) + } +} + +func (e *bincEncDriverIO) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *bincEncDriverIO) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = bincBdNil + } + e.w.writen1(v) +} + +func (e *bincEncDriverIO) writeNilArray() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverIO) writeNilMap() { + e.writeNilOr(bincVdMap<<4 | uint8(0+4)) +} + +func (e *bincEncDriverIO) writeNilBytes() { + e.writeNilOr(bincVdArray<<4 | uint8(0+4)) +} + +func (e *bincEncDriverIO) encBytesLen(c charEncoding, length uint64) { + + if c == cRAW { + e.encLen(bincVdByteArray<<4, length) + } else { + e.encLen(bincVdString<<4, length) + } +} + +func (e *bincEncDriverIO) encLen(bd byte, l uint64) { + if l < 12 { + e.w.writen1(bd | uint8(l+4)) + } else { + e.encLenNumber(bd, l) + } +} + +func (e *bincEncDriverIO) encLenNumber(bd byte, v uint64) { + if v <= math.MaxUint8 { + e.w.writen2(bd, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd | 0x02) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd | 0x03) + e.w.writen8(bigen.PutUint64(uint64(v))) + } +} + +func (d *bincDecDriverIO) readNextBd() { + d.bd = d.r.readn1() + d.vd = d.bd >> 4 + d.vs = d.bd & 0x0f + d.bdRead = true +} + +func (d *bincDecDriverIO) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincBdNil { + d.bdRead = false + return true + } + return +} + +func (d *bincDecDriverIO) TryNil() bool { + return d.advanceNil() +} + +func (d *bincDecDriverIO) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincBdNil { + d.bdRead = false + return valueTypeNil + } else if d.vd == bincVdByteArray { + return valueTypeBytes + } else if d.vd == bincVdString { + return valueTypeString + } else if d.vd == bincVdArray { + return valueTypeArray + } else if d.vd == bincVdMap { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *bincDecDriverIO) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.vd != bincVdTimestamp { + halt.errorf("cannot decode time - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + t, err := bincDecodeTime(d.r.readx(uint(d.vs))) + halt.onerror(err) + d.bdRead = false + return +} + +func (d *bincDecDriverIO) decFloatPruned(maxlen uint8) { + l := d.r.readn1() + if l > maxlen { + halt.errorf("cannot read float - at most %v bytes used to represent float - received %v bytes", maxlen, l) + } + for i := l; i < maxlen; i++ { + d.d.b[i] = 0 + } + d.r.readb(d.d.b[0:l]) +} + +func (d *bincDecDriverIO) decFloatPre32() (b [4]byte) { + if d.vs&0x8 == 0 { + b = d.r.readn4() + } else { + d.decFloatPruned(4) + copy(b[:], d.d.b[:]) + } + return +} + +func (d *bincDecDriverIO) decFloatPre64() (b [8]byte) { + if d.vs&0x8 == 0 { + b = d.r.readn8() + } else { + d.decFloatPruned(8) + copy(b[:], d.d.b[:]) + } + return +} + +func (d *bincDecDriverIO) decFloatVal() (f float64) { + switch d.vs & 0x7 { + case bincFlBin32: + f = float64(math.Float32frombits(bigen.Uint32(d.decFloatPre32()))) + case bincFlBin64: + f = math.Float64frombits(bigen.Uint64(d.decFloatPre64())) + default: + + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + return +} + +func (d *bincDecDriverIO) decUint() (v uint64) { + switch d.vs { + case 0: + v = uint64(d.r.readn1()) + case 1: + v = uint64(bigen.Uint16(d.r.readn2())) + case 2: + b3 := d.r.readn3() + var b [4]byte + copy(b[1:], b3[:]) + v = uint64(bigen.Uint32(b)) + case 3: + v = uint64(bigen.Uint32(d.r.readn4())) + case 4, 5, 6: + + bs := d.d.b[:8] + clear(bs) + d.r.readb(bs[(7 - d.vs):]) + v = bigen.Uint64(*(*[8]byte)(bs)) + case 7: + v = bigen.Uint64(d.r.readn8()) + default: + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + } + return +} + +func (d *bincDecDriverIO) uintBytes() (bs []byte) { + switch d.vs { + case 0: + bs = d.d.b[:1] + bs[0] = d.r.readn1() + return + case 1: + bs = d.d.b[:2] + case 2: + bs = d.d.b[:3] + case 3: + bs = d.d.b[:4] + case 4, 5, 6: + lim := 7 - d.vs + bs = d.d.b[lim:8] + case 7: + bs = d.d.b[:8] + default: + halt.errorf("unsigned integers with greater than 64 bits of precision not supported: d.vs: %v %x", d.vs, d.vs) + } + d.r.readb(bs) + return +} + +func (d *bincDecDriverIO) decInteger() (ui uint64, neg, ok bool) { + ok = true + vd, vs := d.vd, d.vs + if vd == bincVdPosInt { + ui = d.decUint() + } else if vd == bincVdNegInt { + ui = d.decUint() + neg = true + } else if vd == bincVdSmallInt { + ui = uint64(d.vs) + 1 + } else if vd == bincVdSpecial { + if vs == bincSpZero { + + } else if vs == bincSpNegOne { + neg = true + ui = 1 + } else { + ok = false + + } + } else { + ok = false + + } + return +} + +func (d *bincDecDriverIO) decFloat() (f float64, ok bool) { + ok = true + vd, vs := d.vd, d.vs + if vd == bincVdSpecial { + if vs == bincSpNan { + f = math.NaN() + } else if vs == bincSpPosInf { + f = math.Inf(1) + } else if vs == bincSpZeroFloat || vs == bincSpZero { + + } else if vs == bincSpNegInf { + f = math.Inf(-1) + } else { + ok = false + + } + } else if vd == bincVdFloat { + f = d.decFloatVal() + } else { + ok = false + } + return +} + +func (d *bincDecDriverIO) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) + d.bdRead = false + return +} + +func (d *bincDecDriverIO) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *bincDecDriverIO) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) + d.bdRead = false + return +} + +func (d *bincDecDriverIO) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == (bincVdSpecial | bincSpFalse) { + + } else if d.bd == (bincVdSpecial | bincSpTrue) { + b = true + } else { + halt.errorf("bool - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + d.bdRead = false + return +} + +func (d *bincDecDriverIO) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.vd != bincVdMap { + halt.errorf("map - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriverIO) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.vd != bincVdArray { + halt.errorf("array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriverIO) decLen() int { + if d.vs > 3 { + return int(d.vs - 4) + } + return int(d.decLenNumber()) +} + +func (d *bincDecDriverIO) decLenNumber() (v uint64) { + if x := d.vs; x == 0 { + v = uint64(d.r.readn1()) + } else if x == 1 { + v = uint64(bigen.Uint16(d.r.readn2())) + } else if x == 2 { + v = uint64(bigen.Uint32(d.r.readn4())) + } else { + v = bigen.Uint64(d.r.readn8()) + } + return +} + +func (d *bincDecDriverIO) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + var slen = -1 + switch d.vd { + case bincVdString, bincVdByteArray: + slen = d.decLen() + bs, cond = d.r.readxb(uint(slen)) + state = d.d.attachState(cond) + case bincVdSymbol: + + var symbol uint16 + vs := d.vs + if vs&0x8 == 0 { + symbol = uint16(d.r.readn1()) + } else { + symbol = uint16(bigen.Uint16(d.r.readn2())) + } + if d.s == nil { + d.s = make(map[uint16][]byte, 16) + } + + if vs&0x4 == 0 { + bs = d.s[symbol] + } else { + switch vs & 0x3 { + case 0: + slen = int(d.r.readn1()) + case 1: + slen = int(bigen.Uint16(d.r.readn2())) + case 2: + slen = int(bigen.Uint32(d.r.readn4())) + case 3: + slen = int(bigen.Uint64(d.r.readn8())) + } + + bs, cond = d.r.readxb(uint(slen)) + bs = d.d.detach2Bytes(bs, d.d.attachState(cond)) + d.s[symbol] = bs + } + state = dBytesDetach + default: + halt.errorf("string/bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + + if d.h.ValidateUnicode && !utf8.Valid(bs) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", bs) + } + + d.bdRead = false + return +} + +func (d *bincDecDriverIO) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + if d.vd == bincVdArray { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < slen; i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return + } + if !(d.vd == bincVdString || d.vd == bincVdByteArray) { + halt.errorf("bytes - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *bincDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *bincDecDriverIO) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *bincDecDriverIO) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + if d.vd == bincVdCustomExt { + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag - got %b, expecting: %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) + + } else if d.vd == bincVdByteArray { + xbs, bstate = d.DecodeBytes() + } else { + halt.errorf("ext expects extensions or byte array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + d.bdRead = false + ok = true + return +} + +func (d *bincDecDriverIO) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + + switch d.vd { + case bincVdSpecial: + switch d.vs { + case bincSpNil: + n.v = valueTypeNil + case bincSpFalse: + n.v = valueTypeBool + n.b = false + case bincSpTrue: + n.v = valueTypeBool + n.b = true + case bincSpNan: + n.v = valueTypeFloat + n.f = math.NaN() + case bincSpPosInf: + n.v = valueTypeFloat + n.f = math.Inf(1) + case bincSpNegInf: + n.v = valueTypeFloat + n.f = math.Inf(-1) + case bincSpZeroFloat: + n.v = valueTypeFloat + n.f = float64(0) + case bincSpZero: + n.v = valueTypeUint + n.u = uint64(0) + case bincSpNegOne: + n.v = valueTypeInt + n.i = int64(-1) + default: + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdSmallInt: + n.v = valueTypeUint + n.u = uint64(int8(d.vs)) + 1 + case bincVdPosInt: + n.v = valueTypeUint + n.u = d.decUint() + case bincVdNegInt: + n.v = valueTypeInt + n.i = -(int64(d.decUint())) + case bincVdFloat: + n.v = valueTypeFloat + n.f = d.decFloatVal() + case bincVdString: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case bincVdByteArray: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case bincVdSymbol: + n.v = valueTypeSymbol + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case bincVdTimestamp: + n.v = valueTypeTime + tt, err := bincDecodeTime(d.r.readx(uint(d.vs))) + halt.onerror(err) + n.t = tt + case bincVdCustomExt: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) + case bincVdArray: + n.v = valueTypeArray + decodeFurther = true + case bincVdMap: + n.v = valueTypeMap + decodeFurther = true + default: + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.u) + } +} + +func (d *bincDecDriverIO) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *bincDecDriverIO) nextValueBytesBdReadR() { + fnLen := func(vs byte) uint { + switch vs { + case 0: + x := d.r.readn1() + return uint(x) + case 1: + x := d.r.readn2() + return uint(bigen.Uint16(x)) + case 2: + x := d.r.readn4() + return uint(bigen.Uint32(x)) + case 3: + x := d.r.readn8() + return uint(bigen.Uint64(x)) + default: + return uint(vs - 4) + } + } + + var clen uint + + switch d.vd { + case bincVdSpecial: + switch d.vs { + case bincSpNil, bincSpFalse, bincSpTrue, bincSpNan, bincSpPosInf: + case bincSpNegInf, bincSpZeroFloat, bincSpZero, bincSpNegOne: + default: + halt.errorf("cannot infer value - unrecognized special value %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdSmallInt: + case bincVdPosInt, bincVdNegInt: + d.uintBytes() + case bincVdFloat: + fn := func(xlen byte) { + if d.vs&0x8 != 0 { + xlen = d.r.readn1() + if xlen > 8 { + halt.errorf("cannot read float - at most 8 bytes used to represent float - received %v bytes", xlen) + } + } + d.r.readb(d.d.b[:xlen]) + } + switch d.vs & 0x7 { + case bincFlBin32: + fn(4) + case bincFlBin64: + fn(8) + default: + halt.errorf("read float supports only float32/64 - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + case bincVdString, bincVdByteArray: + clen = fnLen(d.vs) + d.r.skip(clen) + case bincVdSymbol: + if d.vs&0x8 == 0 { + d.r.readn1() + } else { + d.r.skip(2) + } + if d.vs&0x4 != 0 { + clen = fnLen(d.vs & 0x3) + d.r.skip(clen) + } + case bincVdTimestamp: + d.r.skip(uint(d.vs)) + case bincVdCustomExt: + clen = fnLen(d.vs) + d.r.readn1() + d.r.skip(clen) + case bincVdArray: + clen = fnLen(d.vs) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case bincVdMap: + clen = fnLen(d.vs) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + halt.errorf("cannot infer value - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs)) + } + return +} + +func (d *bincEncDriverIO) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*BincHandle) + d.e = shared + if shared.bytes { + fp = bincFpEncBytes + } else { + fp = bincFpEncIO + } + + d.init2(enc) + return +} + +func (e *bincEncDriverIO) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *bincEncDriverIO) writerEnd() { e.w.end() } + +func (e *bincEncDriverIO) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *bincEncDriverIO) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *bincDecDriverIO) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*BincHandle) + d.d = shared + if shared.bytes { + fp = bincFpDecBytes + } else { + fp = bincFpDecIO + } + + d.init2(dec) + return +} + +func (d *bincDecDriverIO) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *bincDecDriverIO) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *bincDecDriverIO) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *bincDecDriverIO) descBd() string { + return sprintf("%v (%s)", d.bd, bincdescbd(d.bd)) +} + +func (d *bincDecDriverIO) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/binc.notfastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/binc.notfastpath.mono.generated.go new file mode 100644 index 000000000..ca893afcd --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/binc.notfastpath.mono.generated.go @@ -0,0 +1,52 @@ +//go:build !notmono && !codec.notmono && (notfastpath || codec.notfastpath) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +type fastpathEBincBytes struct { + rt reflect.Type + encfn func(*encoderBincBytes, *encFnInfo, reflect.Value) +} +type fastpathDBincBytes struct { + rt reflect.Type + decfn func(*decoderBincBytes, *decFnInfo, reflect.Value) +} +type fastpathEsBincBytes [0]fastpathEBincBytes +type fastpathDsBincBytes [0]fastpathDBincBytes + +func (helperEncDriverBincBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderBincBytes) bool { + return false +} +func (helperDecDriverBincBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderBincBytes) bool { + return false +} + +func (helperEncDriverBincBytes) fastpathEList() (v *fastpathEsBincBytes) { return } +func (helperDecDriverBincBytes) fastpathDList() (v *fastpathDsBincBytes) { return } + +type fastpathEBincIO struct { + rt reflect.Type + encfn func(*encoderBincIO, *encFnInfo, reflect.Value) +} +type fastpathDBincIO struct { + rt reflect.Type + decfn func(*decoderBincIO, *decFnInfo, reflect.Value) +} +type fastpathEsBincIO [0]fastpathEBincIO +type fastpathDsBincIO [0]fastpathDBincIO + +func (helperEncDriverBincIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderBincIO) bool { + return false +} +func (helperDecDriverBincIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderBincIO) bool { + return false +} + +func (helperEncDriverBincIO) fastpathEList() (v *fastpathEsBincIO) { return } +func (helperDecDriverBincIO) fastpathDList() (v *fastpathDsBincIO) { return } diff --git a/vendor/github.com/ugorji/go/codec/build.sh b/vendor/github.com/ugorji/go/codec/build.sh index 023faf3d4..5214c7b03 100644 --- a/vendor/github.com/ugorji/go/codec/build.sh +++ b/vendor/github.com/ugorji/go/codec/build.sh @@ -1,232 +1,61 @@ #!/bin/bash -# Run all the different permutations of all the tests and other things -# This helps ensure that nothing gets broken. - -_tests() { - local vet="" # TODO: make it off - local gover=$( ${gocmd} version | cut -f 3 -d ' ' ) - [[ $( ${gocmd} version ) == *"gccgo"* ]] && zcover=0 - [[ $( ${gocmd} version ) == *"gollvm"* ]] && zcover=0 - case $gover in - go1.[7-9]*|go1.1[0-9]*|go2.*|devel*) true ;; - *) return 1 - esac - # note that codecgen requires fastpath, so you cannot do "codecgen codec.notfastpath" - # we test the following permutations wnich all execute different code paths as below. - echo "TestCodecSuite: (fastpath/unsafe), (!fastpath/unsafe), (fastpath/!unsafe), (!fastpath/!unsafe), (codecgen/unsafe)" - local echo=1 - local nc=2 # count - local cpus="1,$(nproc)" - # if using the race detector, then set nc to - if [[ " ${zargs[@]} " =~ "-race" ]]; then - cpus="$(nproc)" - fi - local a=( "" "codec.notfastpath" "codec.safe" "codec.notfastpath codec.safe" "codecgen" ) - local b=() - local c=() - for i in "${a[@]}" - do - local i2=${i:-default} - [[ "$zwait" == "1" ]] && echo ">>>> TAGS: 'alltests $i'; RUN: 'TestCodecSuite'" - [[ "$zcover" == "1" ]] && c=( -coverprofile "${i2// /-}.cov.out" ) - true && - ${gocmd} vet -printfuncs "errorf" "$@" && - if [[ "$echo" == 1 ]]; then set -o xtrace; fi && - ${gocmd} test ${zargs[*]} ${ztestargs[*]} -vet "$vet" -tags "alltests $i" -count $nc -cpu $cpus -run "TestCodecSuite" "${c[@]}" "$@" & - if [[ "$echo" == 1 ]]; then set +o xtrace; fi - b+=("${i2// /-}.cov.out") - [[ "$zwait" == "1" ]] && wait - - # if [[ "$?" != 0 ]]; then return 1; fi +# Build and Run the different test permutations. +# This helps validate that nothing gets broken. + +_build_proceed() { + # return success (0) if we should, and 1 (fail) if not + if [[ "${zforce}" ]]; then return 0; fi + for a in "fastpath.generated.go" "json.mono.generated.go"; do + if [[ ! -e "$a" ]]; then return 0; fi + for b in `ls -1 *.go.tmpl gen.go gen_mono.go values_test.go`; do + if [[ "$a" -ot "$b" ]]; then return 0; fi + done done - if [[ "$zextra" == "1" ]]; then - [[ "$zwait" == "1" ]] && echo ">>>> TAGS: 'codec.notfastpath x'; RUN: 'Test.*X$'" - [[ "$zcover" == "1" ]] && c=( -coverprofile "x.cov.out" ) - ${gocmd} test ${zargs[*]} ${ztestargs[*]} -vet "$vet" -tags "codec.notfastpath x" -count $nc -run 'Test.*X$' "${c[@]}" & - b+=("x.cov.out") - [[ "$zwait" == "1" ]] && wait - fi - wait - # go tool cover is not supported for gccgo, gollvm, other non-standard go compilers - [[ "$zcover" == "1" ]] && - command -v gocovmerge && - gocovmerge "${b[@]}" > __merge.cov.out && - ${gocmd} tool cover -html=__merge.cov.out + return 1 } -# is a generation needed? -_ng() { - local a="$1" - if [[ ! -e "$a" ]]; then echo 1; return; fi - for i in `ls -1 *.go.tmpl gen.go values_test.go` - do - if [[ "$a" -ot "$i" ]]; then echo 1; return; fi - done -} - -_prependbt() { - cat > ${2} <> ${2} - rm -f ${1} -} - -# _build generates fast-path.go and gen-helper.go. +# _build generates fastpath.go _build() { - if ! [[ "${zforce}" || $(_ng "fast-path.generated.go") || $(_ng "gen-helper.generated.go") || $(_ng "gen.generated.go") ]]; then return 0; fi - + # if ! [[ "${zforce}" || $(_ng "fastpath.generated.go") || $(_ng "json.mono.generated.go") ]]; then return 0; fi + _build_proceed + if [ $? -eq 1 ]; then return 0; fi if [ "${zbak}" ]; then _zts=`date '+%m%d%Y_%H%M%S'` _gg=".generated.go" - [ -e "gen-helper${_gg}" ] && mv gen-helper${_gg} gen-helper${_gg}__${_zts}.bak - [ -e "fast-path${_gg}" ] && mv fast-path${_gg} fast-path${_gg}__${_zts}.bak + [ -e "fastpath${_gg}" ] && mv fastpath${_gg} fastpath${_gg}__${_zts}.bak [ -e "gen${_gg}" ] && mv gen${_gg} gen${_gg}__${_zts}.bak - fi - rm -f gen-helper.generated.go fast-path.generated.go gen.generated.go \ - *safe.generated.go *_generated_test.go *.generated_ffjson_expose.go - - cat > gen.generated.go <> gen.generated.go < gen-dec-map.go.tmpl - cat >> gen.generated.go <> gen.generated.go < gen-dec-array.go.tmpl - cat >> gen.generated.go <> gen.generated.go < gen-enc-chan.go.tmpl - cat >> gen.generated.go < gen-from-tmpl.codec.generated.go < gen-from-tmpl.sort-slice-stubs.generated.go <> gen-from-tmpl.sort-slice-stubs.generated.go < bench/shared_test.go - - # explicitly return 0 if this passes, else return 1 - local btags="codec.notfastpath codec.safe codecgen.exec" - rm -f sort-slice.generated.go fast-path.generated.go gen-helper.generated.go mammoth_generated_test.go mammoth2_generated_test.go - - cat > gen-from-tmpl.sort-slice.generated.go < gen-from-tmpl.generated.go < $f <>$f - if [[ "$i" != "master" ]]; then i="release-branch.go$i"; fi - (false || - (echo "===== BUILDING GO SDK for branch: $i ... =====" && - cd $GOROOT && - git checkout -f $i && git reset --hard && git clean -f . && - cd src && ./make.bash >>$f 2>&1 && sleep 1 ) ) && - echo "===== GO SDK BUILD DONE =====" && - _prebuild && - echo "===== PREBUILD DONE with exit: $? =====" && - _tests "$@" - if [[ "$?" != 0 ]]; then return 1; fi +_tests() { + local vet="" # TODO: make it off + local gover=$( ${gocmd} version | cut -f 3 -d ' ' ) + # go tool cover is not supported for gccgo, gollvm, other non-standard go compilers + [[ $( ${gocmd} version ) == *"gccgo"* ]] && zcover=0 + [[ $( ${gocmd} version ) == *"gollvm"* ]] && zcover=0 + case $gover in + go1.2[0-9]*|go2.*|devel*) true ;; + *) return 1 + esac + # we test the following permutations wnich all execute different code paths as below. + echo "TestCodecSuite: (fastpath/unsafe), (!fastpath/unsafe), (fastpath/!unsafe), (!fastpath/!unsafe)" + local nc=2 # count + local cpus="1,$(nproc)" + # if using the race detector, then set nc to + if [[ " ${zargs[@]} " =~ "-race" ]]; then + cpus="$(nproc)" + fi + local covdir="" + local a=( "" "codec.safe" "codec.notfastpath" "codec.safe codec.notfastpath" + "codec.notmono" "codec.notmono codec.safe" + "codec.notmono codec.notfastpath" "codec.notmono codec.safe codec.notfastpath" ) + [[ "$zextra" == "1" ]] && a+=( "x" ) + [[ "$zcover" == "1" ]] && covdir=`mktemp -d` + ${gocmd} vet -printfuncs "errorf" "$@" || return 1 + for i in "${a[@]}"; do + local j=${i:-default}; j="${j// /-}"; j="${j//codec./}" + [[ "$zwait" == "1" ]] && echo ">>>> TAGS: 'alltests $i'; RUN: 'TestCodecSuite'" + _tests_run_one + [[ "$zwait" == "1" ]] && wait + # if [[ "$?" != 0 ]]; then return 1; fi done - zforce=${makeforce} - echo "++++++++ RELEASE TEST SUITES ALL PASSED ++++++++" + wait + [[ "$zcover" == "1" ]] && + echo "go tool covdata output" && + ${gocmd} tool covdata percent -i $covdir && + ${gocmd} tool covdata textfmt -i $covdir -o __cov.out && + ${gocmd} tool cover -html=__cov.out } _usage() { @@ -306,11 +147,10 @@ _usage() { # -pf [p=prebuild (f=force)] cat < t=tests [e=extra, s=short, o=cover, w=wait] -[md] -> [m=make, d=race detector] - -[n l i] -> [n=inlining diagnostics, l=mid-stack inlining, i=check inlining for path (path)] - -v -> v=verbose + -v -> v=verbose (more v's to increase verbose level) EOF if [[ "$(type -t _usage_run)" = "function" ]]; then _usage_run ; fi } @@ -331,15 +171,15 @@ _main() { local gocmd=${MYGOCMD:-go} OPTIND=1 - while getopts ":cetmnrgpfvldsowkxyzi" flag + while getopts ":cetmnrgpfvldsowikxyz" flag do case "x$flag" in + 'xw') zwait=1 ;; + 'xv') zverbose+=(1) ;; 'xo') zcover=1 ;; 'xe') zextra=1 ;; - 'xw') zwait=1 ;; 'xf') zforce=1 ;; 'xs') ztestargs+=("-short") ;; - 'xv') zverbose+=(1) ;; 'xl') zargs+=("-gcflags"); zargs+=("-l=4") ;; 'xn') zargs+=("-gcflags"); zargs+=("-m=2") ;; 'xd') zargs+=("-race") ;; @@ -357,14 +197,23 @@ _main() { 'xg') _go ;; 'xp') _prebuild "$@" ;; 'xc') _clean "$@" ;; + esac + + # handle from local run.sh + case "x$x" in + 'xi') _check_inlining_one "$@" ;; + 'xk') _go_compiler_validation_suite ;; 'xx') _analyze_checks "$@" ;; 'xy') _analyze_debug_types "$@" ;; 'xz') _analyze_do_inlining_and_more "$@" ;; - 'xk') _go_compiler_validation_suite ;; - 'xi') _check_inlining_one "$@" ;; esac # unset zforce zargs zbenchflags } [ "." = `dirname $0` ] && _main "$@" +# _xtrace() { +# local - +# set -x +# "${@}" +# } diff --git a/vendor/github.com/ugorji/go/codec/cbor.base.go b/vendor/github.com/ugorji/go/codec/cbor.base.go new file mode 100644 index 000000000..fad562a63 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/cbor.base.go @@ -0,0 +1,160 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +// major +const ( + cborMajorUint byte = iota + cborMajorNegInt + cborMajorBytes + cborMajorString + cborMajorArray + cborMajorMap + cborMajorTag + cborMajorSimpleOrFloat +) + +// simple +const ( + cborBdFalse byte = 0xf4 + iota + cborBdTrue + cborBdNil + cborBdUndefined + cborBdExt + cborBdFloat16 + cborBdFloat32 + cborBdFloat64 +) + +// indefinite +const ( + cborBdIndefiniteBytes byte = 0x5f + cborBdIndefiniteString byte = 0x7f + cborBdIndefiniteArray byte = 0x9f + cborBdIndefiniteMap byte = 0xbf + cborBdBreak byte = 0xff +) + +// These define some in-stream descriptors for +// manual encoding e.g. when doing explicit indefinite-length +const ( + CborStreamBytes byte = 0x5f + CborStreamString byte = 0x7f + CborStreamArray byte = 0x9f + CborStreamMap byte = 0xbf + CborStreamBreak byte = 0xff +) + +// base values +const ( + cborBaseUint byte = 0x00 + cborBaseNegInt byte = 0x20 + cborBaseBytes byte = 0x40 + cborBaseString byte = 0x60 + cborBaseArray byte = 0x80 + cborBaseMap byte = 0xa0 + cborBaseTag byte = 0xc0 + cborBaseSimple byte = 0xe0 +) + +// const ( +// cborSelfDesrTag byte = 0xd9 +// cborSelfDesrTag2 byte = 0xd9 +// cborSelfDesrTag3 byte = 0xf7 +// ) + +var ( + cbordescSimpleNames = map[byte]string{ + cborBdNil: "nil", + cborBdFalse: "false", + cborBdTrue: "true", + cborBdFloat16: "float", + cborBdFloat32: "float", + cborBdFloat64: "float", + cborBdBreak: "break", + } + cbordescIndefNames = map[byte]string{ + cborBdIndefiniteBytes: "bytes*", + cborBdIndefiniteString: "string*", + cborBdIndefiniteArray: "array*", + cborBdIndefiniteMap: "map*", + } + cbordescMajorNames = map[byte]string{ + cborMajorUint: "(u)int", + cborMajorNegInt: "int", + cborMajorBytes: "bytes", + cborMajorString: "string", + cborMajorArray: "array", + cborMajorMap: "map", + cborMajorTag: "tag", + cborMajorSimpleOrFloat: "simple", + } +) + +func cbordesc(bd byte) (s string) { + bm := bd >> 5 + if bm == cborMajorSimpleOrFloat { + s = cbordescSimpleNames[bd] + } else { + s = cbordescMajorNames[bm] + if s == "" { + s = cbordescIndefNames[bd] + } + } + if s == "" { + s = "unknown" + } + return +} + +// ------------------------- + +// CborHandle is a Handle for the CBOR encoding format, +// defined at http://tools.ietf.org/html/rfc7049 and documented further at http://cbor.io . +// +// CBOR is comprehensively supported, including support for: +// - indefinite-length arrays/maps/bytes/strings +// - (extension) tags in range 0..0xffff (0 .. 65535) +// - half, single and double-precision floats +// - all numbers (1, 2, 4 and 8-byte signed and unsigned integers) +// - nil, true, false, ... +// - arrays and maps, bytes and text strings +// +// None of the optional extensions (with tags) defined in the spec are supported out-of-the-box. +// Users can implement them as needed (using SetExt), including spec-documented ones: +// - timestamp, BigNum, BigFloat, Decimals, +// - Encoded Text (e.g. URL, regexp, base64, MIME Message), etc. +type CborHandle struct { + binaryEncodingType + notJsonType + // noElemSeparators + BasicHandle + + // IndefiniteLength=true, means that we encode using indefinitelength + IndefiniteLength bool + + // TimeRFC3339 says to encode time.Time using RFC3339 format. + // If unset, we encode time.Time using seconds past epoch. + TimeRFC3339 bool + + // SkipUnexpectedTags says to skip over any tags for which extensions are + // not defined. This is in keeping with the cbor spec on "Optional Tagging of Items". + // + // Furthermore, this allows the skipping over of the Self Describing Tag 0xd9d9f7. + SkipUnexpectedTags bool +} + +// Name returns the name of the handle: cbor +func (h *CborHandle) Name() string { return "cbor" } + +func (h *CborHandle) desc(bd byte) string { return cbordesc(bd) } + +// SetInterfaceExt sets an extension +func (h *CborHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { + return h.SetExt(rt, tag, makeExt(ext)) +} diff --git a/vendor/github.com/ugorji/go/codec/cbor.fastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/cbor.fastpath.mono.generated.go new file mode 100644 index 000000000..d9456f3e8 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/cbor.fastpath.mono.generated.go @@ -0,0 +1,12482 @@ +//go:build !notmono && !codec.notmono && !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathECborBytes struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderCborBytes, *encFnInfo, reflect.Value) +} +type fastpathDCborBytes struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderCborBytes, *decFnInfo, reflect.Value) +} +type fastpathEsCborBytes [56]fastpathECborBytes +type fastpathDsCborBytes [56]fastpathDCborBytes +type fastpathETCborBytes struct{} +type fastpathDTCborBytes struct{} + +func (helperEncDriverCborBytes) fastpathEList() *fastpathEsCborBytes { + var i uint = 0 + var s fastpathEsCborBytes + fn := func(v interface{}, fe func(*encoderCborBytes, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathECborBytes{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderCborBytes).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderCborBytes).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderCborBytes).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderCborBytes).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderCborBytes).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderCborBytes).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderCborBytes).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderCborBytes).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderCborBytes).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderCborBytes).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderCborBytes).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderCborBytes).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderCborBytes).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderCborBytes).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderCborBytes).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderCborBytes).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderCborBytes).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderCborBytes).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderCborBytes).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderCborBytes).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderCborBytes).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderCborBytes).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderCborBytes).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderCborBytes).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderCborBytes).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderCborBytes).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderCborBytes).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderCborBytes).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderCborBytes).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderCborBytes).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderCborBytes).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderCborBytes).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderCborBytes).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderCborBytes).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderCborBytes).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderCborBytes).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderCborBytes).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderCborBytes).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderCborBytes).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderCborBytes).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderCborBytes).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderCborBytes).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderCborBytes).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderCborBytes).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderCborBytes).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderCborBytes).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderCborBytes).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderCborBytes).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderCborBytes).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderCborBytes).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderCborBytes).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderCborBytes).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderCborBytes).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderCborBytes).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderCborBytes).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderCborBytes).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverCborBytes) fastpathDList() *fastpathDsCborBytes { + var i uint = 0 + var s fastpathDsCborBytes + fn := func(v interface{}, fd func(*decoderCborBytes, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDCborBytes{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderCborBytes).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderCborBytes).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderCborBytes).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderCborBytes).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderCborBytes).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderCborBytes).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderCborBytes).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderCborBytes).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderCborBytes).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderCborBytes).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderCborBytes).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderCborBytes).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderCborBytes).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderCborBytes).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderCborBytes).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderCborBytes).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderCborBytes).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderCborBytes).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderCborBytes).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderCborBytes).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderCborBytes).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderCborBytes).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderCborBytes).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderCborBytes).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderCborBytes).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderCborBytes).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderCborBytes).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderCborBytes).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderCborBytes).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderCborBytes).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderCborBytes).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderCborBytes).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderCborBytes).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderCborBytes).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderCborBytes).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderCborBytes).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderCborBytes).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderCborBytes).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderCborBytes).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderCborBytes).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderCborBytes).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderCborBytes).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderCborBytes).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderCborBytes).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderCborBytes).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderCborBytes).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderCborBytes).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderCborBytes).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderCborBytes).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderCborBytes).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderCborBytes).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderCborBytes).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderCborBytes).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderCborBytes).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderCborBytes).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderCborBytes).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverCborBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderCborBytes) bool { + var ft fastpathETCborBytes + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderCborBytes) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETCborBytes) EncSliceIntfV(v []interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceIntfV(v []interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETCborBytes) EncSliceStringV(v []string, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceStringV(v []string, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETCborBytes) EncSliceBytesV(v [][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceBytesV(v [][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETCborBytes) EncSliceFloat32V(v []float32, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceFloat32V(v []float32, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETCborBytes) EncSliceFloat64V(v []float64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceFloat64V(v []float64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETCborBytes) EncSliceUint8V(v []uint8, e *encoderCborBytes) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETCborBytes) EncAsMapSliceUint8V(v []uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETCborBytes) EncSliceUint64V(v []uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceUint64V(v []uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETCborBytes) EncSliceIntV(v []int, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceIntV(v []int, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETCborBytes) EncSliceInt32V(v []int32, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceInt32V(v []int32, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETCborBytes) EncSliceInt64V(v []int64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceInt64V(v []int64, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborBytes + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETCborBytes) EncSliceBoolV(v []bool, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborBytes) EncAsMapSliceBoolV(v []bool, e *encoderCborBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETCborBytes) EncMapStringIntfV(v map[string]interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETCborBytes) EncMapStringStringV(v map[string]string, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETCborBytes) EncMapStringBytesV(v map[string][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETCborBytes) EncMapStringUint8V(v map[string]uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETCborBytes) EncMapStringUint64V(v map[string]uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETCborBytes) EncMapStringIntV(v map[string]int, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETCborBytes) EncMapStringInt32V(v map[string]int32, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETCborBytes) EncMapStringFloat64V(v map[string]float64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETCborBytes) EncMapStringBoolV(v map[string]bool, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETCborBytes) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETCborBytes) EncMapUint8StringV(v map[uint8]string, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETCborBytes) EncMapUint8BytesV(v map[uint8][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETCborBytes) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETCborBytes) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETCborBytes) EncMapUint8IntV(v map[uint8]int, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETCborBytes) EncMapUint8Int32V(v map[uint8]int32, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETCborBytes) EncMapUint8Float64V(v map[uint8]float64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETCborBytes) EncMapUint8BoolV(v map[uint8]bool, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETCborBytes) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETCborBytes) EncMapUint64StringV(v map[uint64]string, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETCborBytes) EncMapUint64BytesV(v map[uint64][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETCborBytes) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETCborBytes) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETCborBytes) EncMapUint64IntV(v map[uint64]int, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETCborBytes) EncMapUint64Int32V(v map[uint64]int32, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETCborBytes) EncMapUint64Float64V(v map[uint64]float64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETCborBytes) EncMapUint64BoolV(v map[uint64]bool, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETCborBytes) EncMapIntIntfV(v map[int]interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETCborBytes) EncMapIntStringV(v map[int]string, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETCborBytes) EncMapIntBytesV(v map[int][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETCborBytes) EncMapIntUint8V(v map[int]uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETCborBytes) EncMapIntUint64V(v map[int]uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETCborBytes) EncMapIntIntV(v map[int]int, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETCborBytes) EncMapIntInt32V(v map[int]int32, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETCborBytes) EncMapIntFloat64V(v map[int]float64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETCborBytes) EncMapIntBoolV(v map[int]bool, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETCborBytes) EncMapInt32IntfV(v map[int32]interface{}, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETCborBytes) EncMapInt32StringV(v map[int32]string, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETCborBytes) EncMapInt32BytesV(v map[int32][]byte, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETCborBytes) EncMapInt32Uint8V(v map[int32]uint8, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETCborBytes) EncMapInt32Uint64V(v map[int32]uint64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETCborBytes) EncMapInt32IntV(v map[int32]int, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETCborBytes) EncMapInt32Int32V(v map[int32]int32, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETCborBytes) EncMapInt32Float64V(v map[int32]float64, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborBytes) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborBytes{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETCborBytes) EncMapInt32BoolV(v map[int32]bool, e *encoderCborBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverCborBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderCborBytes) bool { + var ft fastpathDTCborBytes + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderCborBytes) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTCborBytes) DecSliceIntfY(v []interface{}, d *decoderCborBytes) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceIntfN(v []interface{}, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTCborBytes) DecSliceStringY(v []string, d *decoderCborBytes) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceStringN(v []string, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTCborBytes) DecSliceBytesY(v [][]byte, d *decoderCborBytes) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceBytesN(v [][]byte, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTCborBytes) DecSliceFloat32Y(v []float32, d *decoderCborBytes) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceFloat32N(v []float32, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTCborBytes) DecSliceFloat64Y(v []float64, d *decoderCborBytes) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceFloat64N(v []float64, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTCborBytes) DecSliceUint8Y(v []uint8, d *decoderCborBytes) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTCborBytes) DecSliceUint8N(v []uint8, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderCborBytes) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTCborBytes) DecSliceUint64Y(v []uint64, d *decoderCborBytes) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceUint64N(v []uint64, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTCborBytes) DecSliceIntY(v []int, d *decoderCborBytes) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceIntN(v []int, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTCborBytes) DecSliceInt32Y(v []int32, d *decoderCborBytes) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceInt32N(v []int32, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTCborBytes) DecSliceInt64Y(v []int64, d *decoderCborBytes) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceInt64N(v []int64, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTCborBytes) DecSliceBoolY(v []bool, d *decoderCborBytes) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborBytes) DecSliceBoolN(v []bool, d *decoderCborBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderCborBytes) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborBytes) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringStringL(v map[string]string, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborBytes) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborBytes) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborBytes) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborBytes) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringIntL(v map[string]int, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborBytes) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborBytes) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborBytes) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborBytes) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborBytes) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborBytes) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborBytes) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborBytes) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborBytes) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborBytes) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborBytes) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborBytes) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborBytes) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborBytes) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborBytes) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborBytes) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborBytes) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborBytes) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntStringL(v map[int]string, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborBytes) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborBytes) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborBytes) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborBytes) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntIntL(v map[int]int, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborBytes) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborBytes) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborBytes) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborBytes) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborBytes) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborBytes) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborBytes) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborBytes) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborBytes) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborBytes) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborBytes) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborBytes) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborBytes) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderCborBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} + +type fastpathECborIO struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderCborIO, *encFnInfo, reflect.Value) +} +type fastpathDCborIO struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderCborIO, *decFnInfo, reflect.Value) +} +type fastpathEsCborIO [56]fastpathECborIO +type fastpathDsCborIO [56]fastpathDCborIO +type fastpathETCborIO struct{} +type fastpathDTCborIO struct{} + +func (helperEncDriverCborIO) fastpathEList() *fastpathEsCborIO { + var i uint = 0 + var s fastpathEsCborIO + fn := func(v interface{}, fe func(*encoderCborIO, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathECborIO{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderCborIO).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderCborIO).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderCborIO).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderCborIO).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderCborIO).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderCborIO).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderCborIO).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderCborIO).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderCborIO).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderCborIO).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderCborIO).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderCborIO).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderCborIO).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderCborIO).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderCborIO).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderCborIO).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderCborIO).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderCborIO).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderCborIO).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderCborIO).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderCborIO).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderCborIO).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderCborIO).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderCborIO).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderCborIO).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderCborIO).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderCborIO).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderCborIO).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderCborIO).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderCborIO).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderCborIO).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderCborIO).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderCborIO).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderCborIO).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderCborIO).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderCborIO).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderCborIO).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderCborIO).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderCborIO).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderCborIO).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderCborIO).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderCborIO).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderCborIO).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderCborIO).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderCborIO).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderCborIO).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderCborIO).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderCborIO).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderCborIO).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderCborIO).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderCborIO).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderCborIO).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderCborIO).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderCborIO).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderCborIO).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderCborIO).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverCborIO) fastpathDList() *fastpathDsCborIO { + var i uint = 0 + var s fastpathDsCborIO + fn := func(v interface{}, fd func(*decoderCborIO, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDCborIO{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderCborIO).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderCborIO).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderCborIO).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderCborIO).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderCborIO).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderCborIO).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderCborIO).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderCborIO).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderCborIO).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderCborIO).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderCborIO).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderCborIO).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderCborIO).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderCborIO).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderCborIO).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderCborIO).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderCborIO).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderCborIO).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderCborIO).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderCborIO).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderCborIO).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderCborIO).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderCborIO).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderCborIO).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderCborIO).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderCborIO).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderCborIO).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderCborIO).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderCborIO).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderCborIO).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderCborIO).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderCborIO).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderCborIO).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderCborIO).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderCborIO).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderCborIO).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderCborIO).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderCborIO).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderCborIO).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderCborIO).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderCborIO).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderCborIO).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderCborIO).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderCborIO).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderCborIO).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderCborIO).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderCborIO).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderCborIO).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderCborIO).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderCborIO).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderCborIO).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderCborIO).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderCborIO).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderCborIO).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderCborIO).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderCborIO).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverCborIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderCborIO) bool { + var ft fastpathETCborIO + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderCborIO) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETCborIO) EncSliceIntfV(v []interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceIntfV(v []interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETCborIO) EncSliceStringV(v []string, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceStringV(v []string, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETCborIO) EncSliceBytesV(v [][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceBytesV(v [][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETCborIO) EncSliceFloat32V(v []float32, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceFloat32V(v []float32, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETCborIO) EncSliceFloat64V(v []float64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceFloat64V(v []float64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETCborIO) EncSliceUint8V(v []uint8, e *encoderCborIO) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETCborIO) EncAsMapSliceUint8V(v []uint8, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETCborIO) EncSliceUint64V(v []uint64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceUint64V(v []uint64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETCborIO) EncSliceIntV(v []int, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceIntV(v []int, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETCborIO) EncSliceInt32V(v []int32, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceInt32V(v []int32, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETCborIO) EncSliceInt64V(v []int64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceInt64V(v []int64, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETCborIO + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETCborIO) EncSliceBoolV(v []bool, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETCborIO) EncAsMapSliceBoolV(v []bool, e *encoderCborIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETCborIO) EncMapStringIntfV(v map[string]interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETCborIO) EncMapStringStringV(v map[string]string, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETCborIO) EncMapStringBytesV(v map[string][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETCborIO) EncMapStringUint8V(v map[string]uint8, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETCborIO) EncMapStringUint64V(v map[string]uint64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETCborIO) EncMapStringIntV(v map[string]int, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETCborIO) EncMapStringInt32V(v map[string]int32, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETCborIO) EncMapStringFloat64V(v map[string]float64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETCborIO) EncMapStringBoolV(v map[string]bool, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETCborIO) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETCborIO) EncMapUint8StringV(v map[uint8]string, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETCborIO) EncMapUint8BytesV(v map[uint8][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETCborIO) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETCborIO) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETCborIO) EncMapUint8IntV(v map[uint8]int, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETCborIO) EncMapUint8Int32V(v map[uint8]int32, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETCborIO) EncMapUint8Float64V(v map[uint8]float64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETCborIO) EncMapUint8BoolV(v map[uint8]bool, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETCborIO) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETCborIO) EncMapUint64StringV(v map[uint64]string, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETCborIO) EncMapUint64BytesV(v map[uint64][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETCborIO) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETCborIO) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETCborIO) EncMapUint64IntV(v map[uint64]int, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETCborIO) EncMapUint64Int32V(v map[uint64]int32, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETCborIO) EncMapUint64Float64V(v map[uint64]float64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETCborIO) EncMapUint64BoolV(v map[uint64]bool, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETCborIO) EncMapIntIntfV(v map[int]interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETCborIO) EncMapIntStringV(v map[int]string, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETCborIO) EncMapIntBytesV(v map[int][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETCborIO) EncMapIntUint8V(v map[int]uint8, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETCborIO) EncMapIntUint64V(v map[int]uint64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETCborIO) EncMapIntIntV(v map[int]int, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETCborIO) EncMapIntInt32V(v map[int]int32, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETCborIO) EncMapIntFloat64V(v map[int]float64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETCborIO) EncMapIntBoolV(v map[int]bool, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETCborIO) EncMapInt32IntfV(v map[int32]interface{}, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETCborIO) EncMapInt32StringV(v map[int32]string, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETCborIO) EncMapInt32BytesV(v map[int32][]byte, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETCborIO) EncMapInt32Uint8V(v map[int32]uint8, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETCborIO) EncMapInt32Uint64V(v map[int32]uint64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETCborIO) EncMapInt32IntV(v map[int32]int, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETCborIO) EncMapInt32Int32V(v map[int32]int32, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETCborIO) EncMapInt32Float64V(v map[int32]float64, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderCborIO) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETCborIO{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETCborIO) EncMapInt32BoolV(v map[int32]bool, e *encoderCborIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverCborIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderCborIO) bool { + var ft fastpathDTCborIO + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderCborIO) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTCborIO) DecSliceIntfY(v []interface{}, d *decoderCborIO) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceIntfN(v []interface{}, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTCborIO) DecSliceStringY(v []string, d *decoderCborIO) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceStringN(v []string, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTCborIO) DecSliceBytesY(v [][]byte, d *decoderCborIO) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceBytesN(v [][]byte, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTCborIO) DecSliceFloat32Y(v []float32, d *decoderCborIO) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceFloat32N(v []float32, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTCborIO) DecSliceFloat64Y(v []float64, d *decoderCborIO) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceFloat64N(v []float64, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTCborIO) DecSliceUint8Y(v []uint8, d *decoderCborIO) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTCborIO) DecSliceUint8N(v []uint8, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderCborIO) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTCborIO) DecSliceUint64Y(v []uint64, d *decoderCborIO) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceUint64N(v []uint64, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTCborIO) DecSliceIntY(v []int, d *decoderCborIO) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceIntN(v []int, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTCborIO) DecSliceInt32Y(v []int32, d *decoderCborIO) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceInt32N(v []int32, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTCborIO) DecSliceInt64Y(v []int64, d *decoderCborIO) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceInt64N(v []int64, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTCborIO) DecSliceBoolY(v []bool, d *decoderCborIO) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTCborIO) DecSliceBoolN(v []bool, d *decoderCborIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderCborIO) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborIO) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringStringL(v map[string]string, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborIO) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborIO) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborIO) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborIO) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringIntL(v map[string]int, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborIO) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborIO) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborIO) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborIO) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborIO) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborIO) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborIO) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborIO) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborIO) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborIO) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborIO) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborIO) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborIO) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborIO) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborIO) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborIO) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborIO) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborIO) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborIO) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborIO) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborIO) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborIO) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborIO) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntStringL(v map[int]string, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborIO) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborIO) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborIO) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborIO) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntIntL(v map[int]int, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborIO) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborIO) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborIO) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderCborIO) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderCborIO) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderCborIO) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderCborIO) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderCborIO) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderCborIO) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderCborIO) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderCborIO) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderCborIO) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTCborIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTCborIO) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderCborIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/cbor.go b/vendor/github.com/ugorji/go/codec/cbor.go index 802b1fc1d..2229a2b26 100644 --- a/vendor/github.com/ugorji/go/codec/cbor.go +++ b/vendor/github.com/ugorji/go/codec/cbor.go @@ -1,194 +1,92 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. package codec import ( + "io" "math" + "math/big" "reflect" "time" "unicode/utf8" ) -// major -const ( - cborMajorUint byte = iota - cborMajorNegInt - cborMajorBytes - cborMajorString - cborMajorArray - cborMajorMap - cborMajorTag - cborMajorSimpleOrFloat -) - -// simple -const ( - cborBdFalse byte = 0xf4 + iota - cborBdTrue - cborBdNil - cborBdUndefined - cborBdExt - cborBdFloat16 - cborBdFloat32 - cborBdFloat64 -) - -// indefinite -const ( - cborBdIndefiniteBytes byte = 0x5f - cborBdIndefiniteString byte = 0x7f - cborBdIndefiniteArray byte = 0x9f - cborBdIndefiniteMap byte = 0xbf - cborBdBreak byte = 0xff -) - -// These define some in-stream descriptors for -// manual encoding e.g. when doing explicit indefinite-length -const ( - CborStreamBytes byte = 0x5f - CborStreamString byte = 0x7f - CborStreamArray byte = 0x9f - CborStreamMap byte = 0xbf - CborStreamBreak byte = 0xff -) - -// base values -const ( - cborBaseUint byte = 0x00 - cborBaseNegInt byte = 0x20 - cborBaseBytes byte = 0x40 - cborBaseString byte = 0x60 - cborBaseArray byte = 0x80 - cborBaseMap byte = 0xa0 - cborBaseTag byte = 0xc0 - cborBaseSimple byte = 0xe0 -) - -// const ( -// cborSelfDesrTag byte = 0xd9 -// cborSelfDesrTag2 byte = 0xd9 -// cborSelfDesrTag3 byte = 0xf7 -// ) - -var ( - cbordescSimpleNames = map[byte]string{ - cborBdNil: "nil", - cborBdFalse: "false", - cborBdTrue: "true", - cborBdFloat16: "float", - cborBdFloat32: "float", - cborBdFloat64: "float", - cborBdBreak: "break", - } - cbordescIndefNames = map[byte]string{ - cborBdIndefiniteBytes: "bytes*", - cborBdIndefiniteString: "string*", - cborBdIndefiniteArray: "array*", - cborBdIndefiniteMap: "map*", - } - cbordescMajorNames = map[byte]string{ - cborMajorUint: "(u)int", - cborMajorNegInt: "int", - cborMajorBytes: "bytes", - cborMajorString: "string", - cborMajorArray: "array", - cborMajorMap: "map", - cborMajorTag: "tag", - cborMajorSimpleOrFloat: "simple", - } -) - -func cbordesc(bd byte) (s string) { - bm := bd >> 5 - if bm == cborMajorSimpleOrFloat { - s = cbordescSimpleNames[bd] - } else { - s = cbordescMajorNames[bm] - if s == "" { - s = cbordescIndefNames[bd] - } - } - if s == "" { - s = "unknown" - } - return -} - // ------------------- -type cborEncDriver struct { +type cborEncDriver[T encWriter] struct { noBuiltInTypes encDriverNoState encDriverNoopContainerWriter - h *CborHandle + encDriverContainerNoTrackerT + + h *CborHandle + e *encoderBase + w T + enc encoderI // scratch buffer for: encode time, numbers, etc // // RFC3339Nano uses 35 chars: 2006-01-02T15:04:05.999999999Z07:00 b [40]byte - - e Encoder -} - -func (e *cborEncDriver) encoder() *Encoder { - return &e.e } -func (e *cborEncDriver) EncodeNil() { - e.e.encWr.writen1(cborBdNil) +func (e *cborEncDriver[T]) EncodeNil() { + e.w.writen1(cborBdNil) } -func (e *cborEncDriver) EncodeBool(b bool) { +func (e *cborEncDriver[T]) EncodeBool(b bool) { if b { - e.e.encWr.writen1(cborBdTrue) + e.w.writen1(cborBdTrue) } else { - e.e.encWr.writen1(cborBdFalse) + e.w.writen1(cborBdFalse) } } -func (e *cborEncDriver) EncodeFloat32(f float32) { +func (e *cborEncDriver[T]) EncodeFloat32(f float32) { b := math.Float32bits(f) if e.h.OptimumSize { if h := floatToHalfFloatBits(b); halfFloatToFloatBits(h) == b { - e.e.encWr.writen1(cborBdFloat16) - bigen.writeUint16(e.e.w(), h) + e.w.writen1(cborBdFloat16) + e.w.writen2(bigen.PutUint16(h)) return } } - e.e.encWr.writen1(cborBdFloat32) - bigen.writeUint32(e.e.w(), b) + e.w.writen1(cborBdFloat32) + e.w.writen4(bigen.PutUint32(b)) } -func (e *cborEncDriver) EncodeFloat64(f float64) { +func (e *cborEncDriver[T]) EncodeFloat64(f float64) { if e.h.OptimumSize { if f32 := float32(f); float64(f32) == f { e.EncodeFloat32(f32) return } } - e.e.encWr.writen1(cborBdFloat64) - bigen.writeUint64(e.e.w(), math.Float64bits(f)) + e.w.writen1(cborBdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) } -func (e *cborEncDriver) encUint(v uint64, bd byte) { +func (e *cborEncDriver[T]) encUint(v uint64, bd byte) { if v <= 0x17 { - e.e.encWr.writen1(byte(v) + bd) + e.w.writen1(byte(v) + bd) } else if v <= math.MaxUint8 { - e.e.encWr.writen2(bd+0x18, uint8(v)) + e.w.writen2(bd+0x18, uint8(v)) } else if v <= math.MaxUint16 { - e.e.encWr.writen1(bd + 0x19) - bigen.writeUint16(e.e.w(), uint16(v)) + e.w.writen1(bd + 0x19) + e.w.writen2(bigen.PutUint16(uint16(v))) } else if v <= math.MaxUint32 { - e.e.encWr.writen1(bd + 0x1a) - bigen.writeUint32(e.e.w(), uint32(v)) + e.w.writen1(bd + 0x1a) + e.w.writen4(bigen.PutUint32(uint32(v))) } else { // if v <= math.MaxUint64 { - e.e.encWr.writen1(bd + 0x1b) - bigen.writeUint64(e.e.w(), v) + e.w.writen1(bd + 0x1b) + e.w.writen8(bigen.PutUint64(v)) } } -func (e *cborEncDriver) EncodeInt(v int64) { +func (e *cborEncDriver[T]) EncodeInt(v int64) { if v < 0 { e.encUint(uint64(-1-v), cborBaseNegInt) } else { @@ -196,20 +94,20 @@ func (e *cborEncDriver) EncodeInt(v int64) { } } -func (e *cborEncDriver) EncodeUint(v uint64) { +func (e *cborEncDriver[T]) EncodeUint(v uint64) { e.encUint(v, cborBaseUint) } -func (e *cborEncDriver) encLen(bd byte, length int) { +func (e *cborEncDriver[T]) encLen(bd byte, length int) { e.encUint(uint64(length), bd) } -func (e *cborEncDriver) EncodeTime(t time.Time) { +func (e *cborEncDriver[T]) EncodeTime(t time.Time) { if t.IsZero() { e.EncodeNil() } else if e.h.TimeRFC3339 { e.encUint(0, cborBaseTag) - e.encStringBytesS(cborBaseString, stringView(fmtTime(t, time.RFC3339Nano, e.b[:0]))) + e.encStringBytesS(cborBaseString, stringView(t.AppendFormat(e.b[:0], time.RFC3339Nano))) } else { e.encUint(1, cborBaseTag) t = t.UTC().Round(time.Microsecond) @@ -222,56 +120,75 @@ func (e *cborEncDriver) EncodeTime(t time.Time) { } } -func (e *cborEncDriver) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (e *cborEncDriver[T]) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { e.encUint(uint64(xtag), cborBaseTag) if ext == SelfExt { - e.e.encodeValue(baseRV(rv), e.h.fnNoExt(basetype)) + e.enc.encodeAs(rv, basetype, false) } else if v := ext.ConvertExt(rv); v == nil { - e.EncodeNil() + e.writeNilBytes() } else { - e.e.encode(v) + e.enc.encodeI(v) } } -func (e *cborEncDriver) EncodeRawExt(re *RawExt) { +func (e *cborEncDriver[T]) EncodeRawExt(re *RawExt) { e.encUint(uint64(re.Tag), cborBaseTag) - // only encodes re.Value (never re.Data) - if re.Value != nil { - e.e.encode(re.Value) + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) } else { e.EncodeNil() } } -func (e *cborEncDriver) WriteArrayStart(length int) { +func (e *cborEncDriver[T]) WriteArrayEmpty() { if e.h.IndefiniteLength { - e.e.encWr.writen1(cborBdIndefiniteArray) + e.w.writen2(cborBdIndefiniteArray, cborBdBreak) + } else { + e.w.writen1(cborBaseArray) + // e.encLen(cborBaseArray, 0) + } +} + +func (e *cborEncDriver[T]) WriteMapEmpty() { + if e.h.IndefiniteLength { + e.w.writen2(cborBdIndefiniteMap, cborBdBreak) + } else { + e.w.writen1(cborBaseMap) + // e.encLen(cborBaseMap, 0) + } +} + +func (e *cborEncDriver[T]) WriteArrayStart(length int) { + if e.h.IndefiniteLength { + e.w.writen1(cborBdIndefiniteArray) } else { e.encLen(cborBaseArray, length) } } -func (e *cborEncDriver) WriteMapStart(length int) { +func (e *cborEncDriver[T]) WriteMapStart(length int) { if e.h.IndefiniteLength { - e.e.encWr.writen1(cborBdIndefiniteMap) + e.w.writen1(cborBdIndefiniteMap) } else { e.encLen(cborBaseMap, length) } } -func (e *cborEncDriver) WriteMapEnd() { +func (e *cborEncDriver[T]) WriteMapEnd() { if e.h.IndefiniteLength { - e.e.encWr.writen1(cborBdBreak) + e.w.writen1(cborBdBreak) } } -func (e *cborEncDriver) WriteArrayEnd() { +func (e *cborEncDriver[T]) WriteArrayEnd() { if e.h.IndefiniteLength { - e.e.encWr.writen1(cborBdBreak) + e.w.writen1(cborBdBreak) } } -func (e *cborEncDriver) EncodeString(v string) { +func (e *cborEncDriver[T]) EncodeString(v string) { bb := cborBaseString if e.h.StringToRaw { bb = cborBaseBytes @@ -279,74 +196,87 @@ func (e *cborEncDriver) EncodeString(v string) { e.encStringBytesS(bb, v) } -func (e *cborEncDriver) EncodeStringBytesRaw(v []byte) { - if v == nil { - e.EncodeNil() - } else { - e.encStringBytesS(cborBaseBytes, stringView(v)) - } +func (e *cborEncDriver[T]) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *cborEncDriver[T]) EncodeStringBytesRaw(v []byte) { + e.encStringBytesS(cborBaseBytes, stringView(v)) } -func (e *cborEncDriver) encStringBytesS(bb byte, v string) { +func (e *cborEncDriver[T]) encStringBytesS(bb byte, v string) { if e.h.IndefiniteLength { if bb == cborBaseBytes { - e.e.encWr.writen1(cborBdIndefiniteBytes) + e.w.writen1(cborBdIndefiniteBytes) } else { - e.e.encWr.writen1(cborBdIndefiniteString) - } - var vlen uint = uint(len(v)) - blen := vlen / 4 - if blen == 0 { - blen = 64 - } else if blen > 1024 { - blen = 1024 + e.w.writen1(cborBdIndefiniteString) } + vlen := uint(len(v)) + n := max(4, min(vlen/4, 1024)) for i := uint(0); i < vlen; { - var v2 string - i2 := i + blen - if i2 >= i && i2 < vlen { - v2 = v[i:i2] - } else { - v2 = v[i:] + i2 := i + n + if i2 >= vlen { + i2 = vlen } + v2 := v[i:i2] e.encLen(bb, len(v2)) - e.e.encWr.writestr(v2) + e.w.writestr(v2) i = i2 } - e.e.encWr.writen1(cborBdBreak) + e.w.writen1(cborBdBreak) } else { e.encLen(bb, len(v)) - e.e.encWr.writestr(v) + e.w.writestr(v) } } -// ---------------------- +func (e *cborEncDriver[T]) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} -type cborDecDriver struct { - decDriverNoopContainerReader - decDriverNoopNumberHelper - h *CborHandle - bdAndBdread - st bool // skip tags - _ bool // found nil - noBuiltInTypes - d Decoder +func (e *cborEncDriver[T]) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = cborBdNil + } + e.w.writen1(v) } -func (d *cborDecDriver) decoder() *Decoder { - return &d.d +func (e *cborEncDriver[T]) writeNilArray() { + e.writeNilOr(cborBaseArray) } -func (d *cborDecDriver) descBd() string { - return sprintf("%v (%s)", d.bd, cbordesc(d.bd)) +func (e *cborEncDriver[T]) writeNilMap() { + e.writeNilOr(cborBaseMap) } -func (d *cborDecDriver) readNextBd() { - d.bd = d.d.decRd.readn1() +func (e *cborEncDriver[T]) writeNilBytes() { + e.writeNilOr(cborBaseBytes) +} + +// ---------------------- + +type cborDecDriver[T decReader] struct { + decDriverNoopContainerReader + // decDriverNoopNumberHelper + noBuiltInTypes + + h *CborHandle + d *decoderBase + r T + dec decoderI + bdAndBdread + // st bool // skip tags + // bytes bool +} + +func (d *cborDecDriver[T]) readNextBd() { + d.bd = d.r.readn1() d.bdRead = true } -func (d *cborDecDriver) advanceNil() (null bool) { +func (d *cborDecDriver[T]) advanceNil() (null bool) { if !d.bdRead { d.readNextBd() } @@ -357,7 +287,7 @@ func (d *cborDecDriver) advanceNil() (null bool) { return } -func (d *cborDecDriver) TryNil() bool { +func (d *cborDecDriver[T]) TryNil() bool { return d.advanceNil() } @@ -368,18 +298,18 @@ func (d *cborDecDriver) TryNil() bool { // // By definition, skipTags should not be called before // checking for break, or nil or undefined. -func (d *cborDecDriver) skipTags() { +func (d *cborDecDriver[T]) skipTags() { for d.bd>>5 == cborMajorTag { d.decUint() - d.bd = d.d.decRd.readn1() + d.bd = d.r.readn1() } } -func (d *cborDecDriver) ContainerType() (vt valueType) { +func (d *cborDecDriver[T]) ContainerType() (vt valueType) { if !d.bdRead { d.readNextBd() } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } if d.bd == cborBdNil { @@ -399,7 +329,7 @@ func (d *cborDecDriver) ContainerType() (vt valueType) { return valueTypeUnset } -func (d *cborDecDriver) CheckBreak() (v bool) { +func (d *cborDecDriver[T]) CheckBreak() (v bool) { if !d.bdRead { d.readNextBd() } @@ -410,72 +340,60 @@ func (d *cborDecDriver) CheckBreak() (v bool) { return } -func (d *cborDecDriver) decUint() (ui uint64) { +func (d *cborDecDriver[T]) decUint() (ui uint64) { v := d.bd & 0x1f if v <= 0x17 { ui = uint64(v) } else if v == 0x18 { - ui = uint64(d.d.decRd.readn1()) + ui = uint64(d.r.readn1()) } else if v == 0x19 { - ui = uint64(bigen.Uint16(d.d.decRd.readn2())) + ui = uint64(bigen.Uint16(d.r.readn2())) } else if v == 0x1a { - ui = uint64(bigen.Uint32(d.d.decRd.readn4())) + ui = uint64(bigen.Uint32(d.r.readn4())) } else if v == 0x1b { - ui = uint64(bigen.Uint64(d.d.decRd.readn8())) + ui = uint64(bigen.Uint64(d.r.readn8())) } else { - d.d.errorf("invalid descriptor decoding uint: %x/%s", d.bd, cbordesc(d.bd)) + halt.errorf("invalid descriptor decoding uint: %x/%s (%x)", d.bd, cbordesc(d.bd), v) } return } -func (d *cborDecDriver) decLen() int { +func (d *cborDecDriver[T]) decLen() int { return int(d.decUint()) } -func (d *cborDecDriver) decAppendIndefiniteBytes(bs []byte, major byte) []byte { - d.bdRead = false - for !d.CheckBreak() { - chunkMajor := d.bd >> 5 - if chunkMajor != major { - d.d.errorf("malformed indefinite string/bytes %x (%s); contains chunk with major type %v, expected %v", - d.bd, cbordesc(d.bd), chunkMajor, major) - } - n := uint(d.decLen()) - oldLen := uint(len(bs)) - newLen := oldLen + n - if newLen > uint(cap(bs)) { - bs2 := make([]byte, newLen, 2*uint(cap(bs))+n) - copy(bs2, bs) - bs = bs2 - } else { - bs = bs[:newLen] - } - d.d.decRd.readb(bs[oldLen:newLen]) - if d.h.ValidateUnicode && major == cborMajorString && !utf8.Valid(bs[oldLen:newLen]) { - d.d.errorf("indefinite-length text string contains chunk that is not a valid utf-8 sequence: 0x%x", bs[oldLen:newLen]) - } - d.bdRead = false - } - d.bdRead = false - return bs -} - -func (d *cborDecDriver) decFloat() (f float64, ok bool) { +func (d *cborDecDriver[T]) decFloat() (f float64, ok bool) { ok = true switch d.bd { case cborBdFloat16: - f = float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.d.decRd.readn2())))) + f = float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.r.readn2())))) case cborBdFloat32: - f = float64(math.Float32frombits(bigen.Uint32(d.d.decRd.readn4()))) + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) case cborBdFloat64: - f = math.Float64frombits(bigen.Uint64(d.d.decRd.readn8())) + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) default: - ok = false + if d.bd>>5 == cborMajorTag { + // extension tag for bignum/decimal + switch d.bd & 0x1f { // tag + case 2: + f = d.decTagBigIntAsFloat(false) + case 3: + f = d.decTagBigIntAsFloat(true) + case 4: + f = d.decTagBigFloatAsFloat(true) + case 5: + f = d.decTagBigFloatAsFloat(false) + default: + ok = false + } + } else { + ok = false + } } return } -func (d *cborDecDriver) decInteger() (ui uint64, neg, ok bool) { +func (d *cborDecDriver[T]) decInteger() (ui uint64, neg, ok bool) { ok = true switch d.bd >> 5 { case cborMajorUint: @@ -489,65 +407,67 @@ func (d *cborDecDriver) decInteger() (ui uint64, neg, ok bool) { return } -func (d *cborDecDriver) DecodeInt64() (i int64) { +func (d *cborDecDriver[T]) DecodeInt64() (i int64) { if d.advanceNil() { return } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } - i = decNegintPosintFloatNumberHelper{&d.d}.int64(d.decInteger()) + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, true) d.bdRead = false return } -func (d *cborDecDriver) DecodeUint64() (ui uint64) { +func (d *cborDecDriver[T]) DecodeUint64() (ui uint64) { if d.advanceNil() { return } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } - ui = decNegintPosintFloatNumberHelper{&d.d}.uint64(d.decInteger()) + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) d.bdRead = false return } -func (d *cborDecDriver) DecodeFloat64() (f float64) { +func (d *cborDecDriver[T]) DecodeFloat64() (f float64) { if d.advanceNil() { return } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } - f = decNegintPosintFloatNumberHelper{&d.d}.float64(d.decFloat()) + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, true) d.bdRead = false return } // bool can be decoded from bool only (single byte). -func (d *cborDecDriver) DecodeBool() (b bool) { +func (d *cborDecDriver[T]) DecodeBool() (b bool) { if d.advanceNil() { return } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } if d.bd == cborBdTrue { b = true } else if d.bd == cborBdFalse { } else { - d.d.errorf("not bool - %s %x/%s", msgBadDesc, d.bd, cbordesc(d.bd)) + halt.errorf("not bool - %s %x/%s", msgBadDesc, d.bd, cbordesc(d.bd)) } d.bdRead = false return } -func (d *cborDecDriver) ReadMapStart() (length int) { +func (d *cborDecDriver[T]) ReadMapStart() (length int) { if d.advanceNil() { return containerLenNil } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } d.bdRead = false @@ -555,16 +475,16 @@ func (d *cborDecDriver) ReadMapStart() (length int) { return containerLenUnknown } if d.bd>>5 != cborMajorMap { - d.d.errorf("error reading map; got major type: %x, expected %x/%s", d.bd>>5, cborMajorMap, cbordesc(d.bd)) + halt.errorf("error reading map; got major type: %x, expected %x/%s", d.bd>>5, cborMajorMap, cbordesc(d.bd)) } return d.decLen() } -func (d *cborDecDriver) ReadArrayStart() (length int) { +func (d *cborDecDriver[T]) ReadArrayStart() (length int) { if d.advanceNil() { return containerLenNil } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } d.bdRead = false @@ -572,139 +492,206 @@ func (d *cborDecDriver) ReadArrayStart() (length int) { return containerLenUnknown } if d.bd>>5 != cborMajorArray { - d.d.errorf("invalid array; got major type: %x, expect: %x/%s", d.bd>>5, cborMajorArray, cbordesc(d.bd)) + halt.errorf("invalid array; got major type: %x, expect: %x/%s", d.bd>>5, cborMajorArray, cbordesc(d.bd)) } return d.decLen() } -func (d *cborDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { - d.d.decByteState = decByteStateNone +// MARKER d.d.buf is ONLY used within DecodeBytes. +// Safe to use freely here only. + +func (d *cborDecDriver[T]) DecodeBytes() (bs []byte, state dBytesAttachState) { if d.advanceNil() { return } - if d.st { + if d.h.SkipUnexpectedTags { d.skipTags() } + fnEnsureNonNilBytes := func() { + // buf is nil at first. Ensure a non-nil value is returned. + if bs == nil { + bs = zeroByteSlice + state = dBytesDetach + } + } if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + major := d.bd >> 5 + val4str := d.h.ValidateUnicode && major == cborMajorString + bs = d.d.buf[:0] d.bdRead = false - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - return d.decAppendIndefiniteBytes(d.d.b[:0], d.bd>>5) + for !d.CheckBreak() { + if d.bd>>5 != major { + const msg = "malformed indefinite string/bytes %x (%s); " + + "contains chunk with major type %v, expected %v" + halt.errorf(msg, d.bd, cbordesc(d.bd), d.bd>>5, major) + } + n := uint(d.decLen()) + bs = append(bs, d.r.readx(n)...) + d.bdRead = false + if val4str && !utf8.Valid(bs[len(bs)-int(n):]) { + const msg = "indefinite-length text string contains chunk " + + "that is not a valid utf-8 sequence: 0x%x" + halt.errorf(msg, bs[len(bs)-int(n):]) + } } - return d.decAppendIndefiniteBytes(bs[:0], d.bd>>5) + d.bdRead = false + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return } if d.bd == cborBdIndefiniteArray { d.bdRead = false - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:0] - } else { - bs = bs[:0] - } + bs = d.d.buf[:0] for !d.CheckBreak() { bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) } - return bs + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return } + var cond bool if d.bd>>5 == cborMajorArray { d.bdRead = false - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } slen := d.decLen() - var changed bool - if bs, changed = usableByteSlice(bs, slen); changed { - d.d.decByteState = decByteStateNone - } + bs, cond = usableByteSlice(d.d.buf, slen) for i := 0; i < len(bs); i++ { bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) } for i := len(bs); i < slen; i++ { bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) } - return bs + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return } clen := d.decLen() d.bdRead = false - if d.d.zerocopy() { - d.d.decByteState = decByteStateZerocopy - return d.d.decRd.rb.readx(uint(clen)) - } - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } - return decByteSlice(d.d.r(), clen, d.h.MaxInitLen, bs) + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return } -func (d *cborDecDriver) DecodeStringAsBytes() (s []byte) { - s = d.DecodeBytes(nil) - if d.h.ValidateUnicode && !utf8.Valid(s) { - d.d.errorf("DecodeStringAsBytes: invalid UTF-8: %s", s) +func (d *cborDecDriver[T]) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) } return } -func (d *cborDecDriver) DecodeTime() (t time.Time) { +func (d *cborDecDriver[T]) DecodeTime() (t time.Time) { if d.advanceNil() { return } if d.bd>>5 != cborMajorTag { - d.d.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) } xtag := d.decUint() d.bdRead = false return d.decodeTime(xtag) } -func (d *cborDecDriver) decodeTime(xtag uint64) (t time.Time) { +func (d *cborDecDriver[T]) decodeTime(xtag uint64) (t time.Time) { switch xtag { case 0: var err error - t, err = time.Parse(time.RFC3339, stringView(d.DecodeStringAsBytes())) - d.d.onerror(err) + t, err = time.Parse(time.RFC3339, stringView(bytesOKs(d.DecodeStringAsBytes()))) + halt.onerror(err) case 1: f1, f2 := math.Modf(d.DecodeFloat64()) t = time.Unix(int64(f1), int64(f2*1e9)) default: - d.d.errorf("invalid tag for time.Time - expecting 0 or 1, got 0x%x", xtag) + halt.errorf("invalid tag for time.Time - expecting 0 or 1, got 0x%x", xtag) } t = t.UTC().Round(time.Microsecond) return } -func (d *cborDecDriver) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (d *cborDecDriver[T]) preDecodeExt(checkTag bool, xtag uint64) (realxtag uint64, ok bool) { if d.advanceNil() { return } if d.bd>>5 != cborMajorTag { - d.d.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) } - realxtag := d.decUint() + realxtag = d.decUint() d.bdRead = false - if ext == nil { - re := rv.(*RawExt) + if checkTag && xtag != realxtag { + halt.errorf("Wrong extension tag. Got %b. Expecting: %v", realxtag, xtag) + } + ok = true + return +} + +func (d *cborDecDriver[T]) DecodeRawExt(re *RawExt) { + if realxtag, ok := d.preDecodeExt(false, 0); ok { re.Tag = realxtag - d.d.decode(&re.Value) - } else if xtag != realxtag { - d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", realxtag, xtag) - } else if ext == SelfExt { - d.d.decodeValue(baseRV(rv), d.h.fnNoExt(basetype)) - } else { - d.d.interfaceExtConvertAndDecode(rv, ext) + d.dec.decode(&re.Value) + d.bdRead = false } - d.bdRead = false } -func (d *cborDecDriver) DecodeNaked() { +func (d *cborDecDriver[T]) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if _, ok := d.preDecodeExt(true, xtag); ok { + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) + } else { + d.dec.interfaceExtConvertAndDecode(rv, ext) + } + d.bdRead = false + } +} + +func (d *cborDecDriver[T]) decTagBigIntAsFloat(neg bool) (f float64) { + bs, _ := d.DecodeBytes() + bi := new(big.Int).SetBytes(bs) + if neg { // neg big.Int + bi0 := bi + bi = new(big.Int).Sub(big.NewInt(-1), bi0) + } + f, _ = bi.Float64() + return +} + +func (d *cborDecDriver[T]) decTagBigFloatAsFloat(decimal bool) (f float64) { + if nn := d.r.readn1(); nn != 82 { + halt.errorf("(%d) decoding decimal/big.Float: expected 2 numbers", nn) + } + exp := d.DecodeInt64() + mant := d.DecodeInt64() + if decimal { // m*(10**e) + // MARKER: if precision/other issues crop, consider using big.Float on base 10. + // The logic is more convoluted, which is why we leverage readFloatResult for now. + rf := readFloatResult{exp: int8(exp)} + if mant >= 0 { + rf.mantissa = uint64(mant) + } else { + rf.neg = true + rf.mantissa = uint64(-mant) + } + f, _ = parseFloat64_reader(rf) + // f = float64(mant) * math.Pow10(exp) + } else { // m*(2**e) + // f = float64(mant) * math.Pow(2, exp) + bfm := new(big.Float).SetPrec(64).SetInt64(mant) + bf := new(big.Float).SetPrec(64).SetMantExp(bfm, int(exp)) + f, _ = bf.Float64() + } + return +} + +func (d *cborDecDriver[T]) DecodeNaked() { if !d.bdRead { d.readNextBd() } n := d.d.naked() var decodeFurther bool - switch d.bd >> 5 { case cborMajorUint: if d.h.SignedInteger { @@ -718,10 +705,10 @@ func (d *cborDecDriver) DecodeNaked() { n.v = valueTypeInt n.i = d.DecodeInt64() case cborMajorBytes: - d.d.fauxUnionReadRawBytes(false) + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) //, d.h.ZeroCopy) case cborMajorString: n.v = valueTypeString - n.s = d.d.stringZC(d.DecodeStringAsBytes()) + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) case cborMajorArray: n.v = valueTypeArray decodeFurther = true @@ -731,17 +718,46 @@ func (d *cborDecDriver) DecodeNaked() { case cborMajorTag: n.v = valueTypeExt n.u = d.decUint() + d.bdRead = false n.l = nil - if n.u == 0 || n.u == 1 { - d.bdRead = false - n.v = valueTypeTime - n.t = d.decodeTime(n.u) - } else if d.st && d.h.getExtForTag(n.u) == nil { - // d.skipTags() // no need to call this - tags already skipped - d.bdRead = false - d.DecodeNaked() - return // return when done (as true recursive function) + xx := d.h.getExtForTag(n.u) + if xx == nil { + switch n.u { + case 0, 1: + n.v = valueTypeTime + n.t = d.decodeTime(n.u) + case 2: + n.f = d.decTagBigIntAsFloat(false) + n.v = valueTypeFloat + case 3: + n.f = d.decTagBigIntAsFloat(true) + n.v = valueTypeFloat + case 4: + n.f = d.decTagBigFloatAsFloat(true) + n.v = valueTypeFloat + case 5: + n.f = d.decTagBigFloatAsFloat(false) + n.v = valueTypeFloat + case 55799: // skip + d.DecodeNaked() + default: + if d.h.SkipUnexpectedTags { + d.DecodeNaked() + } + // else we will use standard mode to decode ext e.g. into a RawExt + } + return } + // if n.u == 0 || n.u == 1 { + // d.bdRead = false + // n.v = valueTypeTime + // n.t = d.decodeTime(n.u) + // } else if d.h.SkipUnexpectedTags && d.h.getExtForTag(n.u) == nil { + // // d.skipTags() // no need to call this - tags already skipped + // d.bdRead = false + // d.DecodeNaked() + // return // return when done (as true recursive function) + // } case cborMajorSimpleOrFloat: switch d.bd { case cborBdNil, cborBdUndefined: @@ -756,211 +772,224 @@ func (d *cborDecDriver) DecodeNaked() { n.v = valueTypeFloat n.f = d.DecodeFloat64() default: - d.d.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) } default: // should never happen - d.d.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) } if !decodeFurther { d.bdRead = false } } -func (d *cborDecDriver) uintBytes() (v []byte, ui uint64) { +func (d *cborDecDriver[T]) uintBytes() (v []byte, ui uint64) { // this is only used by nextValueBytes, so it's ok to // use readx and bigenstd here. switch vv := d.bd & 0x1f; vv { case 0x18: - v = d.d.decRd.readx(1) + v = d.r.readx(1) ui = uint64(v[0]) case 0x19: - v = d.d.decRd.readx(2) + v = d.r.readx(2) ui = uint64(bigenstd.Uint16(v)) case 0x1a: - v = d.d.decRd.readx(4) + v = d.r.readx(4) ui = uint64(bigenstd.Uint32(v)) case 0x1b: - v = d.d.decRd.readx(8) + v = d.r.readx(8) ui = uint64(bigenstd.Uint64(v)) default: if vv > 0x1b { - d.d.errorf("invalid descriptor decoding uint: %x/%s", d.bd, cbordesc(d.bd)) + halt.errorf("invalid descriptor decoding uint: %x/%s", d.bd, cbordesc(d.bd)) } ui = uint64(vv) } return } -func (d *cborDecDriver) nextValueBytes(v0 []byte) (v []byte) { +func (d *cborDecDriver[T]) nextValueBytes() (v []byte) { if !d.bdRead { d.readNextBd() } - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - var cursor = d.d.rb.c - 1 - h.append1(&v, d.bd) - v = d.nextValueBytesBdReadR(v) + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() d.bdRead = false - h.bytesRdV(&v, cursor) return } -func (d *cborDecDriver) nextValueBytesR(v0 []byte) (v []byte) { - d.readNextBd() - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - h.append1(&v, d.bd) - return d.nextValueBytesBdReadR(v) -} +// func (d *cborDecDriver[T]) nextValueBytesR(v0 []byte) (v []byte) { +// d.readNextBd() +// v0 = append(v0, d.bd) +// d.r.startRecording(v0) +// d.nextValueBytesBdReadR() +// v = d.r.stopRecording() +// return +// } -func (d *cborDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - - var bs []byte +func (d *cborDecDriver[T]) nextValueBytesBdReadR() { + // var bs []byte var ui uint64 switch d.bd >> 5 { case cborMajorUint, cborMajorNegInt: - bs, _ = d.uintBytes() - h.appendN(&v, bs...) + d.uintBytes() case cborMajorString, cborMajorBytes: if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { for { d.readNextBd() - h.append1(&v, d.bd) if d.bd == cborBdBreak { break } - bs, ui = d.uintBytes() - h.appendN(&v, bs...) - h.appendN(&v, d.d.decRd.readx(uint(ui))...) + _, ui = d.uintBytes() + d.r.skip(uint(ui)) } } else { - bs, ui = d.uintBytes() - h.appendN(&v, bs...) - h.appendN(&v, d.d.decRd.readx(uint(ui))...) + _, ui = d.uintBytes() + d.r.skip(uint(ui)) } case cborMajorArray: if d.bd == cborBdIndefiniteArray { for { d.readNextBd() - h.append1(&v, d.bd) if d.bd == cborBdBreak { break } - v = d.nextValueBytesBdReadR(v) + d.nextValueBytesBdReadR() } } else { - bs, ui = d.uintBytes() - h.appendN(&v, bs...) + _, ui = d.uintBytes() for i := uint64(0); i < ui; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } } case cborMajorMap: if d.bd == cborBdIndefiniteMap { for { d.readNextBd() - h.append1(&v, d.bd) if d.bd == cborBdBreak { break } - v = d.nextValueBytesBdReadR(v) - v = d.nextValueBytesR(v) + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } } else { - bs, ui = d.uintBytes() - h.appendN(&v, bs...) + _, ui = d.uintBytes() for i := uint64(0); i < ui; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } } case cborMajorTag: - bs, _ = d.uintBytes() - h.appendN(&v, bs...) - v = d.nextValueBytesR(v) + d.uintBytes() + d.readNextBd() + d.nextValueBytesBdReadR() case cborMajorSimpleOrFloat: switch d.bd { case cborBdNil, cborBdUndefined, cborBdFalse, cborBdTrue: // pass case cborBdFloat16: - h.appendN(&v, d.d.decRd.readx(2)...) + d.r.skip(2) case cborBdFloat32: - h.appendN(&v, d.d.decRd.readx(4)...) + d.r.skip(4) case cborBdFloat64: - h.appendN(&v, d.d.decRd.readx(8)...) + d.r.skip(8) default: - d.d.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) } default: // should never happen - d.d.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) } return } -// ------------------------- +func (d *cborDecDriver[T]) reset() { + d.bdAndBdread.reset() + // d.st = d.h.SkipUnexpectedTags +} -// CborHandle is a Handle for the CBOR encoding format, -// defined at http://tools.ietf.org/html/rfc7049 and documented further at http://cbor.io . +// ---- // -// CBOR is comprehensively supported, including support for: -// - indefinite-length arrays/maps/bytes/strings -// - (extension) tags in range 0..0xffff (0 .. 65535) -// - half, single and double-precision floats -// - all numbers (1, 2, 4 and 8-byte signed and unsigned integers) -// - nil, true, false, ... -// - arrays and maps, bytes and text strings +// The following below are similar across all format files (except for the format name). // -// None of the optional extensions (with tags) defined in the spec are supported out-of-the-box. -// Users can implement them as needed (using SetExt), including spec-documented ones: -// - timestamp, BigNum, BigFloat, Decimals, -// - Encoded Text (e.g. URL, regexp, base64, MIME Message), etc. -type CborHandle struct { - binaryEncodingType - // noElemSeparators - BasicHandle - - // IndefiniteLength=true, means that we encode using indefinitelength - IndefiniteLength bool - - // TimeRFC3339 says to encode time.Time using RFC3339 format. - // If unset, we encode time.Time using seconds past epoch. - TimeRFC3339 bool - - // SkipUnexpectedTags says to skip over any tags for which extensions are - // not defined. This is in keeping with the cbor spec on "Optional Tagging of Items". - // - // Furthermore, this allows the skipping over of the Self Describing Tag 0xd9d9f7. - SkipUnexpectedTags bool +// We keep them together here, so that we can easily copy and compare. + +// ---- + +func (d *cborEncDriver[T]) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*CborHandle) + d.e = shared + if shared.bytes { + fp = cborFpEncBytes + } else { + fp = cborFpEncIO + } + // d.w.init() + d.init2(enc) + return } -// Name returns the name of the handle: cbor -func (h *CborHandle) Name() string { return "cbor" } +func (e *cborEncDriver[T]) writeBytesAsis(b []byte) { e.w.writeb(b) } + +// func (e *cborEncDriver[T]) writeStringAsisDblQuoted(v string) { e.w.writeqstr(v) } -func (h *CborHandle) desc(bd byte) string { return cbordesc(bd) } +func (e *cborEncDriver[T]) writerEnd() { e.w.end() } -func (h *CborHandle) newEncDriver() encDriver { - var e = &cborEncDriver{h: h} - e.e.e = e - e.e.init(h) - e.reset() - return e +func (e *cborEncDriver[T]) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) } -func (h *CborHandle) newDecDriver() decDriver { - d := &cborDecDriver{h: h, st: h.SkipUnexpectedTags} - d.d.d = d - d.d.cbor = true - d.d.init(h) - d.reset() - return d +func (e *cborEncDriver[T]) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) } -func (d *cborDecDriver) reset() { - d.bdAndBdread.reset() - d.st = d.h.SkipUnexpectedTags +// ---- + +func (d *cborDecDriver[T]) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*CborHandle) + d.d = shared + if shared.bytes { + fp = cborFpDecBytes + } else { + fp = cborFpDecIO + } + // d.r.init() + d.init2(dec) + return +} + +func (d *cborDecDriver[T]) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *cborDecDriver[T]) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *cborDecDriver[T]) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +// ---- (custom stanza) + +func (d *cborDecDriver[T]) descBd() string { + return sprintf("%v (%s)", d.bd, cbordesc(d.bd)) } -var _ decDriver = (*cborDecDriver)(nil) -var _ encDriver = (*cborEncDriver)(nil) +func (d *cborDecDriver[T]) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +func (d *cborEncDriver[T]) init2(enc encoderI) { + d.enc = enc +} + +func (d *cborDecDriver[T]) init2(dec decoderI) { + d.dec = dec + // d.d.cbor = true +} diff --git a/vendor/github.com/ugorji/go/codec/cbor.mono.generated.go b/vendor/github.com/ugorji/go/codec/cbor.mono.generated.go new file mode 100644 index 000000000..572d5cb56 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/cbor.mono.generated.go @@ -0,0 +1,7985 @@ +//go:build !notmono && !codec.notmono + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + + "io" + "math" + "math/big" + "reflect" + "slices" + "sort" + "strconv" + "sync" + "time" + "unicode/utf8" +) + +type helperEncDriverCborBytes struct{} +type encFnCborBytes struct { + i encFnInfo + fe func(*encoderCborBytes, *encFnInfo, reflect.Value) +} +type encRtidFnCborBytes struct { + rtid uintptr + fn *encFnCborBytes +} +type encoderCborBytes struct { + dh helperEncDriverCborBytes + fp *fastpathEsCborBytes + e cborEncDriverBytes + encoderBase +} +type helperDecDriverCborBytes struct{} +type decFnCborBytes struct { + i decFnInfo + fd func(*decoderCborBytes, *decFnInfo, reflect.Value) +} +type decRtidFnCborBytes struct { + rtid uintptr + fn *decFnCborBytes +} +type decoderCborBytes struct { + dh helperDecDriverCborBytes + fp *fastpathDsCborBytes + d cborDecDriverBytes + decoderBase +} +type cborEncDriverBytes struct { + noBuiltInTypes + encDriverNoState + encDriverNoopContainerWriter + encDriverContainerNoTrackerT + + h *CborHandle + e *encoderBase + w bytesEncAppender + enc encoderI + + b [40]byte +} +type cborDecDriverBytes struct { + decDriverNoopContainerReader + + noBuiltInTypes + + h *CborHandle + d *decoderBase + r bytesDecReader + dec decoderI + bdAndBdread +} + +func (e *encoderCborBytes) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderCborBytes) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderCborBytes) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderCborBytes) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderCborBytes) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderCborBytes) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderCborBytes) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderCborBytes) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderCborBytes) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderCborBytes) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderCborBytes) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderCborBytes) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderCborBytes) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderCborBytes) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderCborBytes) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderCborBytes) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderCborBytes) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderCborBytes) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderCborBytes) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderCborBytes) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderCborBytes) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderCborBytes) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderCborBytes) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderCborBytes) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderCborBytes) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderCborBytes) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderCborBytes) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderCborBytes) kSeqFn(rt reflect.Type) (fn *encFnCborBytes) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderCborBytes) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnCborBytes + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderCborBytes) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnCborBytes + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderCborBytes) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderCborBytes) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderCborBytes) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderCborBytes) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderCborBytes) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderCborBytes) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderCborBytes) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderCborBytes) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnCborBytes + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborBytes) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnCborBytes) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderCborBytes) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsCborBytes) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderCborBytes) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderCborBytes) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderCborBytes) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderCborBytes) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderCborBytes) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderCborBytes) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderCborBytes) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderCborBytes) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderCborBytes) encodeValue(rv reflect.Value, fn *encFnCborBytes) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderCborBytes) encodeValueNonNil(rv reflect.Value, fn *encFnCborBytes) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderCborBytes) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderCborBytes) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderCborBytes) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderCborBytes) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderCborBytes) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderCborBytes) fn(t reflect.Type) *encFnCborBytes { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderCborBytes) fnNoExt(t reflect.Type) *encFnCborBytes { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderCborBytes) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderCborBytes) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderCborBytes) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderCborBytes) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderCborBytes) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderCborBytes) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderCborBytes) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderCborBytes) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverCborBytes) newEncoderBytes(out *[]byte, h Handle) *encoderCborBytes { + var c1 encoderCborBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverCborBytes) newEncoderIO(out io.Writer, h Handle) *encoderCborBytes { + var c1 encoderCborBytes + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverCborBytes) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsCborBytes) (f *fastpathECborBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverCborBytes) encFindRtidFn(s []encRtidFnCborBytes, rtid uintptr) (i uint, fn *encFnCborBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverCborBytes) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnCborBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnCborBytes](v)) + } + return +} + +func (dh helperEncDriverCborBytes) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsCborBytes, checkExt bool) (fn *encFnCborBytes) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverCborBytes) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborBytes) { + rtid := rt2id(rt) + var sp []encRtidFnCborBytes = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverCborBytes) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborBytes) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnCborBytes + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnCborBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnCborBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnCborBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverCborBytes) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborBytes) { + fn = new(encFnCborBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderCborBytes).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderCborBytes).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderCborBytes).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderCborBytes).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderCborBytes).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderCborBytes).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderCborBytes).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderCborBytes).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderCborBytes, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderCborBytes).kBool + case reflect.String: + + fn.fe = (*encoderCborBytes).kString + case reflect.Int: + fn.fe = (*encoderCborBytes).kInt + case reflect.Int8: + fn.fe = (*encoderCborBytes).kInt8 + case reflect.Int16: + fn.fe = (*encoderCborBytes).kInt16 + case reflect.Int32: + fn.fe = (*encoderCborBytes).kInt32 + case reflect.Int64: + fn.fe = (*encoderCborBytes).kInt64 + case reflect.Uint: + fn.fe = (*encoderCborBytes).kUint + case reflect.Uint8: + fn.fe = (*encoderCborBytes).kUint8 + case reflect.Uint16: + fn.fe = (*encoderCborBytes).kUint16 + case reflect.Uint32: + fn.fe = (*encoderCborBytes).kUint32 + case reflect.Uint64: + fn.fe = (*encoderCborBytes).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderCborBytes).kUintptr + case reflect.Float32: + fn.fe = (*encoderCborBytes).kFloat32 + case reflect.Float64: + fn.fe = (*encoderCborBytes).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderCborBytes).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderCborBytes).kComplex128 + case reflect.Chan: + fn.fe = (*encoderCborBytes).kChan + case reflect.Slice: + fn.fe = (*encoderCborBytes).kSlice + case reflect.Array: + fn.fe = (*encoderCborBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderCborBytes).kStructSimple + } else { + fn.fe = (*encoderCborBytes).kStruct + } + case reflect.Map: + fn.fe = (*encoderCborBytes).kMap + case reflect.Interface: + + fn.fe = (*encoderCborBytes).kErr + default: + + fn.fe = (*encoderCborBytes).kErr + } + } + } + return +} +func (d *decoderCborBytes) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderCborBytes) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderCborBytes) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderCborBytes) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderCborBytes) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderCborBytes) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderCborBytes) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderCborBytes) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderCborBytes) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderCborBytes) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderCborBytes) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderCborBytes) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderCborBytes) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderCborBytes) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderCborBytes) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderCborBytes) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderCborBytes) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderCborBytes) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderCborBytes) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderCborBytes) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderCborBytes) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderCborBytes) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderCborBytes) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderCborBytes) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderCborBytes) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderCborBytes) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderCborBytes) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderCborBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderCborBytes) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderCborBytes) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderCborBytes) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderCborBytes) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderCborBytes) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnCborBytes + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderCborBytes) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnCborBytes + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborBytes) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnCborBytes + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderCborBytes) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnCborBytes + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderCborBytes) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsCborBytes) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderCborBytes) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderCborBytes) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderCborBytes) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderCborBytes) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderCborBytes) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderCborBytes) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderCborBytes) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderCborBytes) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderCborBytes) Release() {} + +func (d *decoderCborBytes) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderCborBytes) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderCborBytes) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderCborBytes) decodeValue(rv reflect.Value, fn *decFnCborBytes) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderCborBytes) decodeValueNoCheckNil(rv reflect.Value, fn *decFnCborBytes) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderCborBytes) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderCborBytes) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderCborBytes) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderCborBytes) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderCborBytes) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderCborBytes) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderCborBytes) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderCborBytes) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderCborBytes) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderCborBytes) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderCborBytes) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderCborBytes) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderCborBytes) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderCborBytes) fn(t reflect.Type) *decFnCborBytes { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderCborBytes) fnNoExt(t reflect.Type) *decFnCborBytes { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverCborBytes) newDecoderBytes(in []byte, h Handle) *decoderCborBytes { + var c1 decoderCborBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverCborBytes) newDecoderIO(in io.Reader, h Handle) *decoderCborBytes { + var c1 decoderCborBytes + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverCborBytes) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsCborBytes) (f *fastpathDCborBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverCborBytes) decFindRtidFn(s []decRtidFnCborBytes, rtid uintptr) (i uint, fn *decFnCborBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverCborBytes) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnCborBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnCborBytes](v)) + } + return +} + +func (dh helperDecDriverCborBytes) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsCborBytes, + checkExt bool) (fn *decFnCborBytes) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverCborBytes) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborBytes) { + rtid := rt2id(rt) + var sp []decRtidFnCborBytes = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverCborBytes) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborBytes) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnCborBytes + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnCborBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnCborBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnCborBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverCborBytes) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsCborBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborBytes) { + fn = new(decFnCborBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderCborBytes).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderCborBytes).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderCborBytes).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderCborBytes).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderCborBytes).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderCborBytes).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderCborBytes).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderCborBytes).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderCborBytes, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderCborBytes, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderCborBytes).kBool + case reflect.String: + fn.fd = (*decoderCborBytes).kString + case reflect.Int: + fn.fd = (*decoderCborBytes).kInt + case reflect.Int8: + fn.fd = (*decoderCborBytes).kInt8 + case reflect.Int16: + fn.fd = (*decoderCborBytes).kInt16 + case reflect.Int32: + fn.fd = (*decoderCborBytes).kInt32 + case reflect.Int64: + fn.fd = (*decoderCborBytes).kInt64 + case reflect.Uint: + fn.fd = (*decoderCborBytes).kUint + case reflect.Uint8: + fn.fd = (*decoderCborBytes).kUint8 + case reflect.Uint16: + fn.fd = (*decoderCborBytes).kUint16 + case reflect.Uint32: + fn.fd = (*decoderCborBytes).kUint32 + case reflect.Uint64: + fn.fd = (*decoderCborBytes).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderCborBytes).kUintptr + case reflect.Float32: + fn.fd = (*decoderCborBytes).kFloat32 + case reflect.Float64: + fn.fd = (*decoderCborBytes).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderCborBytes).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderCborBytes).kComplex128 + case reflect.Chan: + fn.fd = (*decoderCborBytes).kChan + case reflect.Slice: + fn.fd = (*decoderCborBytes).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderCborBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderCborBytes).kStructSimple + } else { + fn.fd = (*decoderCborBytes).kStruct + } + case reflect.Map: + fn.fd = (*decoderCborBytes).kMap + case reflect.Interface: + + fn.fd = (*decoderCborBytes).kInterface + default: + + fn.fd = (*decoderCborBytes).kErr + } + } + } + return +} +func (e *cborEncDriverBytes) EncodeNil() { + e.w.writen1(cborBdNil) +} + +func (e *cborEncDriverBytes) EncodeBool(b bool) { + if b { + e.w.writen1(cborBdTrue) + } else { + e.w.writen1(cborBdFalse) + } +} + +func (e *cborEncDriverBytes) EncodeFloat32(f float32) { + b := math.Float32bits(f) + if e.h.OptimumSize { + if h := floatToHalfFloatBits(b); halfFloatToFloatBits(h) == b { + e.w.writen1(cborBdFloat16) + e.w.writen2(bigen.PutUint16(h)) + return + } + } + e.w.writen1(cborBdFloat32) + e.w.writen4(bigen.PutUint32(b)) +} + +func (e *cborEncDriverBytes) EncodeFloat64(f float64) { + if e.h.OptimumSize { + if f32 := float32(f); float64(f32) == f { + e.EncodeFloat32(f32) + return + } + } + e.w.writen1(cborBdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *cborEncDriverBytes) encUint(v uint64, bd byte) { + if v <= 0x17 { + e.w.writen1(byte(v) + bd) + } else if v <= math.MaxUint8 { + e.w.writen2(bd+0x18, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 0x19) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 0x1a) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd + 0x1b) + e.w.writen8(bigen.PutUint64(v)) + } +} + +func (e *cborEncDriverBytes) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-1-v), cborBaseNegInt) + } else { + e.encUint(uint64(v), cborBaseUint) + } +} + +func (e *cborEncDriverBytes) EncodeUint(v uint64) { + e.encUint(v, cborBaseUint) +} + +func (e *cborEncDriverBytes) encLen(bd byte, length int) { + e.encUint(uint64(length), bd) +} + +func (e *cborEncDriverBytes) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + } else if e.h.TimeRFC3339 { + e.encUint(0, cborBaseTag) + e.encStringBytesS(cborBaseString, stringView(t.AppendFormat(e.b[:0], time.RFC3339Nano))) + } else { + e.encUint(1, cborBaseTag) + t = t.UTC().Round(time.Microsecond) + sec, nsec := t.Unix(), uint64(t.Nanosecond()) + if nsec == 0 { + e.EncodeInt(sec) + } else { + e.EncodeFloat64(float64(sec) + float64(nsec)/1e9) + } + } +} + +func (e *cborEncDriverBytes) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + e.encUint(uint64(xtag), cborBaseTag) + if ext == SelfExt { + e.enc.encodeAs(rv, basetype, false) + } else if v := ext.ConvertExt(rv); v == nil { + e.writeNilBytes() + } else { + e.enc.encodeI(v) + } +} + +func (e *cborEncDriverBytes) EncodeRawExt(re *RawExt) { + e.encUint(uint64(re.Tag), cborBaseTag) + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) + } else { + e.EncodeNil() + } +} + +func (e *cborEncDriverBytes) WriteArrayEmpty() { + if e.h.IndefiniteLength { + e.w.writen2(cborBdIndefiniteArray, cborBdBreak) + } else { + e.w.writen1(cborBaseArray) + + } +} + +func (e *cborEncDriverBytes) WriteMapEmpty() { + if e.h.IndefiniteLength { + e.w.writen2(cborBdIndefiniteMap, cborBdBreak) + } else { + e.w.writen1(cborBaseMap) + + } +} + +func (e *cborEncDriverBytes) WriteArrayStart(length int) { + if e.h.IndefiniteLength { + e.w.writen1(cborBdIndefiniteArray) + } else { + e.encLen(cborBaseArray, length) + } +} + +func (e *cborEncDriverBytes) WriteMapStart(length int) { + if e.h.IndefiniteLength { + e.w.writen1(cborBdIndefiniteMap) + } else { + e.encLen(cborBaseMap, length) + } +} + +func (e *cborEncDriverBytes) WriteMapEnd() { + if e.h.IndefiniteLength { + e.w.writen1(cborBdBreak) + } +} + +func (e *cborEncDriverBytes) WriteArrayEnd() { + if e.h.IndefiniteLength { + e.w.writen1(cborBdBreak) + } +} + +func (e *cborEncDriverBytes) EncodeString(v string) { + bb := cborBaseString + if e.h.StringToRaw { + bb = cborBaseBytes + } + e.encStringBytesS(bb, v) +} + +func (e *cborEncDriverBytes) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *cborEncDriverBytes) EncodeStringBytesRaw(v []byte) { + e.encStringBytesS(cborBaseBytes, stringView(v)) +} + +func (e *cborEncDriverBytes) encStringBytesS(bb byte, v string) { + if e.h.IndefiniteLength { + if bb == cborBaseBytes { + e.w.writen1(cborBdIndefiniteBytes) + } else { + e.w.writen1(cborBdIndefiniteString) + } + vlen := uint(len(v)) + n := max(4, min(vlen/4, 1024)) + for i := uint(0); i < vlen; { + i2 := i + n + if i2 >= vlen { + i2 = vlen + } + v2 := v[i:i2] + e.encLen(bb, len(v2)) + e.w.writestr(v2) + i = i2 + } + e.w.writen1(cborBdBreak) + } else { + e.encLen(bb, len(v)) + e.w.writestr(v) + } +} + +func (e *cborEncDriverBytes) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *cborEncDriverBytes) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = cborBdNil + } + e.w.writen1(v) +} + +func (e *cborEncDriverBytes) writeNilArray() { + e.writeNilOr(cborBaseArray) +} + +func (e *cborEncDriverBytes) writeNilMap() { + e.writeNilOr(cborBaseMap) +} + +func (e *cborEncDriverBytes) writeNilBytes() { + e.writeNilOr(cborBaseBytes) +} + +func (d *cborDecDriverBytes) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *cborDecDriverBytes) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdNil || d.bd == cborBdUndefined { + d.bdRead = false + return true + } + return +} + +func (d *cborDecDriverBytes) TryNil() bool { + return d.advanceNil() +} + +func (d *cborDecDriverBytes) skipTags() { + for d.bd>>5 == cborMajorTag { + d.decUint() + d.bd = d.r.readn1() + } +} + +func (d *cborDecDriverBytes) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + if d.bd == cborBdNil { + d.bdRead = false + return valueTypeNil + } + major := d.bd >> 5 + if major == cborMajorBytes { + return valueTypeBytes + } else if major == cborMajorString { + return valueTypeString + } else if major == cborMajorArray { + return valueTypeArray + } else if major == cborMajorMap { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *cborDecDriverBytes) CheckBreak() (v bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdBreak { + d.bdRead = false + v = true + } + return +} + +func (d *cborDecDriverBytes) decUint() (ui uint64) { + v := d.bd & 0x1f + if v <= 0x17 { + ui = uint64(v) + } else if v == 0x18 { + ui = uint64(d.r.readn1()) + } else if v == 0x19 { + ui = uint64(bigen.Uint16(d.r.readn2())) + } else if v == 0x1a { + ui = uint64(bigen.Uint32(d.r.readn4())) + } else if v == 0x1b { + ui = uint64(bigen.Uint64(d.r.readn8())) + } else { + halt.errorf("invalid descriptor decoding uint: %x/%s (%x)", d.bd, cbordesc(d.bd), v) + } + return +} + +func (d *cborDecDriverBytes) decLen() int { + return int(d.decUint()) +} + +func (d *cborDecDriverBytes) decFloat() (f float64, ok bool) { + ok = true + switch d.bd { + case cborBdFloat16: + f = float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.r.readn2())))) + case cborBdFloat32: + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case cborBdFloat64: + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + default: + if d.bd>>5 == cborMajorTag { + + switch d.bd & 0x1f { + case 2: + f = d.decTagBigIntAsFloat(false) + case 3: + f = d.decTagBigIntAsFloat(true) + case 4: + f = d.decTagBigFloatAsFloat(true) + case 5: + f = d.decTagBigFloatAsFloat(false) + default: + ok = false + } + } else { + ok = false + } + } + return +} + +func (d *cborDecDriverBytes) decInteger() (ui uint64, neg, ok bool) { + ok = true + switch d.bd >> 5 { + case cborMajorUint: + ui = d.decUint() + case cborMajorNegInt: + ui = d.decUint() + neg = true + default: + ok = false + } + return +} + +func (d *cborDecDriverBytes) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, true) + d.bdRead = false + return +} + +func (d *cborDecDriverBytes) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *cborDecDriverBytes) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, true) + d.bdRead = false + return +} + +func (d *cborDecDriverBytes) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + if d.bd == cborBdTrue { + b = true + } else if d.bd == cborBdFalse { + } else { + halt.errorf("not bool - %s %x/%s", msgBadDesc, d.bd, cbordesc(d.bd)) + } + d.bdRead = false + return +} + +func (d *cborDecDriverBytes) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + d.bdRead = false + if d.bd == cborBdIndefiniteMap { + return containerLenUnknown + } + if d.bd>>5 != cborMajorMap { + halt.errorf("error reading map; got major type: %x, expected %x/%s", d.bd>>5, cborMajorMap, cbordesc(d.bd)) + } + return d.decLen() +} + +func (d *cborDecDriverBytes) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + d.bdRead = false + if d.bd == cborBdIndefiniteArray { + return containerLenUnknown + } + if d.bd>>5 != cborMajorArray { + halt.errorf("invalid array; got major type: %x, expect: %x/%s", d.bd>>5, cborMajorArray, cbordesc(d.bd)) + } + return d.decLen() +} + +func (d *cborDecDriverBytes) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + fnEnsureNonNilBytes := func() { + + if bs == nil { + bs = zeroByteSlice + state = dBytesDetach + } + } + if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + major := d.bd >> 5 + val4str := d.h.ValidateUnicode && major == cborMajorString + bs = d.d.buf[:0] + d.bdRead = false + for !d.CheckBreak() { + if d.bd>>5 != major { + const msg = "malformed indefinite string/bytes %x (%s); " + + "contains chunk with major type %v, expected %v" + halt.errorf(msg, d.bd, cbordesc(d.bd), d.bd>>5, major) + } + n := uint(d.decLen()) + bs = append(bs, d.r.readx(n)...) + d.bdRead = false + if val4str && !utf8.Valid(bs[len(bs)-int(n):]) { + const msg = "indefinite-length text string contains chunk " + + "that is not a valid utf-8 sequence: 0x%x" + halt.errorf(msg, bs[len(bs)-int(n):]) + } + } + d.bdRead = false + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + if d.bd == cborBdIndefiniteArray { + d.bdRead = false + bs = d.d.buf[:0] + for !d.CheckBreak() { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + var cond bool + if d.bd>>5 == cborMajorArray { + d.bdRead = false + slen := d.decLen() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *cborDecDriverBytes) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) + } + return +} + +func (d *cborDecDriverBytes) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.bd>>5 != cborMajorTag { + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + } + xtag := d.decUint() + d.bdRead = false + return d.decodeTime(xtag) +} + +func (d *cborDecDriverBytes) decodeTime(xtag uint64) (t time.Time) { + switch xtag { + case 0: + var err error + t, err = time.Parse(time.RFC3339, stringView(bytesOKs(d.DecodeStringAsBytes()))) + halt.onerror(err) + case 1: + f1, f2 := math.Modf(d.DecodeFloat64()) + t = time.Unix(int64(f1), int64(f2*1e9)) + default: + halt.errorf("invalid tag for time.Time - expecting 0 or 1, got 0x%x", xtag) + } + t = t.UTC().Round(time.Microsecond) + return +} + +func (d *cborDecDriverBytes) preDecodeExt(checkTag bool, xtag uint64) (realxtag uint64, ok bool) { + if d.advanceNil() { + return + } + if d.bd>>5 != cborMajorTag { + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + } + realxtag = d.decUint() + d.bdRead = false + if checkTag && xtag != realxtag { + halt.errorf("Wrong extension tag. Got %b. Expecting: %v", realxtag, xtag) + } + ok = true + return +} + +func (d *cborDecDriverBytes) DecodeRawExt(re *RawExt) { + if realxtag, ok := d.preDecodeExt(false, 0); ok { + re.Tag = realxtag + d.dec.decode(&re.Value) + d.bdRead = false + } +} + +func (d *cborDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if _, ok := d.preDecodeExt(true, xtag); ok { + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) + } else { + d.dec.interfaceExtConvertAndDecode(rv, ext) + } + d.bdRead = false + } +} + +func (d *cborDecDriverBytes) decTagBigIntAsFloat(neg bool) (f float64) { + bs, _ := d.DecodeBytes() + bi := new(big.Int).SetBytes(bs) + if neg { + bi0 := bi + bi = new(big.Int).Sub(big.NewInt(-1), bi0) + } + f, _ = bi.Float64() + return +} + +func (d *cborDecDriverBytes) decTagBigFloatAsFloat(decimal bool) (f float64) { + if nn := d.r.readn1(); nn != 82 { + halt.errorf("(%d) decoding decimal/big.Float: expected 2 numbers", nn) + } + exp := d.DecodeInt64() + mant := d.DecodeInt64() + if decimal { + + rf := readFloatResult{exp: int8(exp)} + if mant >= 0 { + rf.mantissa = uint64(mant) + } else { + rf.neg = true + rf.mantissa = uint64(-mant) + } + f, _ = parseFloat64_reader(rf) + + } else { + + bfm := new(big.Float).SetPrec(64).SetInt64(mant) + bf := new(big.Float).SetPrec(64).SetMantExp(bfm, int(exp)) + f, _ = bf.Float64() + } + return +} + +func (d *cborDecDriverBytes) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + switch d.bd >> 5 { + case cborMajorUint: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt64() + } else { + n.v = valueTypeUint + n.u = d.DecodeUint64() + } + case cborMajorNegInt: + n.v = valueTypeInt + n.i = d.DecodeInt64() + case cborMajorBytes: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case cborMajorString: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case cborMajorArray: + n.v = valueTypeArray + decodeFurther = true + case cborMajorMap: + n.v = valueTypeMap + decodeFurther = true + case cborMajorTag: + n.v = valueTypeExt + n.u = d.decUint() + d.bdRead = false + n.l = nil + xx := d.h.getExtForTag(n.u) + if xx == nil { + switch n.u { + case 0, 1: + n.v = valueTypeTime + n.t = d.decodeTime(n.u) + case 2: + n.f = d.decTagBigIntAsFloat(false) + n.v = valueTypeFloat + case 3: + n.f = d.decTagBigIntAsFloat(true) + n.v = valueTypeFloat + case 4: + n.f = d.decTagBigFloatAsFloat(true) + n.v = valueTypeFloat + case 5: + n.f = d.decTagBigFloatAsFloat(false) + n.v = valueTypeFloat + case 55799: + d.DecodeNaked() + default: + if d.h.SkipUnexpectedTags { + d.DecodeNaked() + } + + } + return + } + + case cborMajorSimpleOrFloat: + switch d.bd { + case cborBdNil, cborBdUndefined: + n.v = valueTypeNil + case cborBdFalse: + n.v = valueTypeBool + n.b = false + case cborBdTrue: + n.v = valueTypeBool + n.b = true + case cborBdFloat16, cborBdFloat32, cborBdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + default: + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + } + default: + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + } + if !decodeFurther { + d.bdRead = false + } +} + +func (d *cborDecDriverBytes) uintBytes() (v []byte, ui uint64) { + + switch vv := d.bd & 0x1f; vv { + case 0x18: + v = d.r.readx(1) + ui = uint64(v[0]) + case 0x19: + v = d.r.readx(2) + ui = uint64(bigenstd.Uint16(v)) + case 0x1a: + v = d.r.readx(4) + ui = uint64(bigenstd.Uint32(v)) + case 0x1b: + v = d.r.readx(8) + ui = uint64(bigenstd.Uint64(v)) + default: + if vv > 0x1b { + halt.errorf("invalid descriptor decoding uint: %x/%s", d.bd, cbordesc(d.bd)) + } + ui = uint64(vv) + } + return +} + +func (d *cborDecDriverBytes) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *cborDecDriverBytes) nextValueBytesBdReadR() { + + var ui uint64 + + switch d.bd >> 5 { + case cborMajorUint, cborMajorNegInt: + d.uintBytes() + case cborMajorString, cborMajorBytes: + if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + _, ui = d.uintBytes() + d.r.skip(uint(ui)) + } + } else { + _, ui = d.uintBytes() + d.r.skip(uint(ui)) + } + case cborMajorArray: + if d.bd == cborBdIndefiniteArray { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + d.nextValueBytesBdReadR() + } + } else { + _, ui = d.uintBytes() + for i := uint64(0); i < ui; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + } + case cborMajorMap: + if d.bd == cborBdIndefiniteMap { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else { + _, ui = d.uintBytes() + for i := uint64(0); i < ui; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } + case cborMajorTag: + d.uintBytes() + d.readNextBd() + d.nextValueBytesBdReadR() + case cborMajorSimpleOrFloat: + switch d.bd { + case cborBdNil, cborBdUndefined, cborBdFalse, cborBdTrue: + case cborBdFloat16: + d.r.skip(2) + case cborBdFloat32: + d.r.skip(4) + case cborBdFloat64: + d.r.skip(8) + default: + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + } + default: + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + } + return +} + +func (d *cborDecDriverBytes) reset() { + d.bdAndBdread.reset() + +} + +func (d *cborEncDriverBytes) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*CborHandle) + d.e = shared + if shared.bytes { + fp = cborFpEncBytes + } else { + fp = cborFpEncIO + } + + d.init2(enc) + return +} + +func (e *cborEncDriverBytes) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *cborEncDriverBytes) writerEnd() { e.w.end() } + +func (e *cborEncDriverBytes) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *cborEncDriverBytes) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *cborDecDriverBytes) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*CborHandle) + d.d = shared + if shared.bytes { + fp = cborFpDecBytes + } else { + fp = cborFpDecIO + } + + d.init2(dec) + return +} + +func (d *cborDecDriverBytes) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *cborDecDriverBytes) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *cborDecDriverBytes) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *cborDecDriverBytes) descBd() string { + return sprintf("%v (%s)", d.bd, cbordesc(d.bd)) +} + +func (d *cborDecDriverBytes) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +func (d *cborEncDriverBytes) init2(enc encoderI) { + d.enc = enc +} + +func (d *cborDecDriverBytes) init2(dec decoderI) { + d.dec = dec + +} + +type helperEncDriverCborIO struct{} +type encFnCborIO struct { + i encFnInfo + fe func(*encoderCborIO, *encFnInfo, reflect.Value) +} +type encRtidFnCborIO struct { + rtid uintptr + fn *encFnCborIO +} +type encoderCborIO struct { + dh helperEncDriverCborIO + fp *fastpathEsCborIO + e cborEncDriverIO + encoderBase +} +type helperDecDriverCborIO struct{} +type decFnCborIO struct { + i decFnInfo + fd func(*decoderCborIO, *decFnInfo, reflect.Value) +} +type decRtidFnCborIO struct { + rtid uintptr + fn *decFnCborIO +} +type decoderCborIO struct { + dh helperDecDriverCborIO + fp *fastpathDsCborIO + d cborDecDriverIO + decoderBase +} +type cborEncDriverIO struct { + noBuiltInTypes + encDriverNoState + encDriverNoopContainerWriter + encDriverContainerNoTrackerT + + h *CborHandle + e *encoderBase + w bufioEncWriter + enc encoderI + + b [40]byte +} +type cborDecDriverIO struct { + decDriverNoopContainerReader + + noBuiltInTypes + + h *CborHandle + d *decoderBase + r ioDecReader + dec decoderI + bdAndBdread +} + +func (e *encoderCborIO) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderCborIO) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderCborIO) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderCborIO) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderCborIO) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderCborIO) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderCborIO) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderCborIO) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderCborIO) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderCborIO) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderCborIO) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderCborIO) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderCborIO) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderCborIO) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderCborIO) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderCborIO) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderCborIO) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderCborIO) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderCborIO) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderCborIO) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderCborIO) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderCborIO) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderCborIO) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderCborIO) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderCborIO) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderCborIO) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderCborIO) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderCborIO) kSeqFn(rt reflect.Type) (fn *encFnCborIO) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderCborIO) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnCborIO + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderCborIO) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnCborIO + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderCborIO) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderCborIO) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderCborIO) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderCborIO) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderCborIO) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderCborIO) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderCborIO) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderCborIO) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnCborIO + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderCborIO) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnCborIO) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderCborIO) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsCborIO) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderCborIO) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderCborIO) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderCborIO) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderCborIO) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderCborIO) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderCborIO) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderCborIO) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderCborIO) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderCborIO) encodeValue(rv reflect.Value, fn *encFnCborIO) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderCborIO) encodeValueNonNil(rv reflect.Value, fn *encFnCborIO) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderCborIO) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderCborIO) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderCborIO) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderCborIO) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderCborIO) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderCborIO) fn(t reflect.Type) *encFnCborIO { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderCborIO) fnNoExt(t reflect.Type) *encFnCborIO { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderCborIO) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderCborIO) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderCborIO) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderCborIO) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderCborIO) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderCborIO) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderCborIO) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderCborIO) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverCborIO) newEncoderBytes(out *[]byte, h Handle) *encoderCborIO { + var c1 encoderCborIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverCborIO) newEncoderIO(out io.Writer, h Handle) *encoderCborIO { + var c1 encoderCborIO + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverCborIO) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsCborIO) (f *fastpathECborIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverCborIO) encFindRtidFn(s []encRtidFnCborIO, rtid uintptr) (i uint, fn *encFnCborIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverCborIO) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnCborIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnCborIO](v)) + } + return +} + +func (dh helperEncDriverCborIO) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsCborIO, checkExt bool) (fn *encFnCborIO) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverCborIO) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborIO) { + rtid := rt2id(rt) + var sp []encRtidFnCborIO = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverCborIO) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborIO) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnCborIO + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnCborIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnCborIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnCborIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverCborIO) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnCborIO) { + fn = new(encFnCborIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderCborIO).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderCborIO).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderCborIO).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderCborIO).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderCborIO).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderCborIO).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderCborIO).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderCborIO).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderCborIO, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderCborIO).kBool + case reflect.String: + + fn.fe = (*encoderCborIO).kString + case reflect.Int: + fn.fe = (*encoderCborIO).kInt + case reflect.Int8: + fn.fe = (*encoderCborIO).kInt8 + case reflect.Int16: + fn.fe = (*encoderCborIO).kInt16 + case reflect.Int32: + fn.fe = (*encoderCborIO).kInt32 + case reflect.Int64: + fn.fe = (*encoderCborIO).kInt64 + case reflect.Uint: + fn.fe = (*encoderCborIO).kUint + case reflect.Uint8: + fn.fe = (*encoderCborIO).kUint8 + case reflect.Uint16: + fn.fe = (*encoderCborIO).kUint16 + case reflect.Uint32: + fn.fe = (*encoderCborIO).kUint32 + case reflect.Uint64: + fn.fe = (*encoderCborIO).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderCborIO).kUintptr + case reflect.Float32: + fn.fe = (*encoderCborIO).kFloat32 + case reflect.Float64: + fn.fe = (*encoderCborIO).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderCborIO).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderCborIO).kComplex128 + case reflect.Chan: + fn.fe = (*encoderCborIO).kChan + case reflect.Slice: + fn.fe = (*encoderCborIO).kSlice + case reflect.Array: + fn.fe = (*encoderCborIO).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderCborIO).kStructSimple + } else { + fn.fe = (*encoderCborIO).kStruct + } + case reflect.Map: + fn.fe = (*encoderCborIO).kMap + case reflect.Interface: + + fn.fe = (*encoderCborIO).kErr + default: + + fn.fe = (*encoderCborIO).kErr + } + } + } + return +} +func (d *decoderCborIO) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderCborIO) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderCborIO) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderCborIO) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderCborIO) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderCborIO) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderCborIO) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderCborIO) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderCborIO) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderCborIO) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderCborIO) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderCborIO) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderCborIO) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderCborIO) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderCborIO) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderCborIO) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderCborIO) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderCborIO) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderCborIO) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderCborIO) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderCborIO) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderCborIO) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderCborIO) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderCborIO) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderCborIO) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderCborIO) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderCborIO) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderCborIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderCborIO) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderCborIO) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderCborIO) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderCborIO) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderCborIO) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnCborIO + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderCborIO) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnCborIO + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderCborIO) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnCborIO + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderCborIO) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnCborIO + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderCborIO) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsCborIO) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderCborIO) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderCborIO) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderCborIO) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderCborIO) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderCborIO) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderCborIO) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderCborIO) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderCborIO) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderCborIO) Release() {} + +func (d *decoderCborIO) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderCborIO) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderCborIO) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderCborIO) decodeValue(rv reflect.Value, fn *decFnCborIO) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderCborIO) decodeValueNoCheckNil(rv reflect.Value, fn *decFnCborIO) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderCborIO) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderCborIO) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderCborIO) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderCborIO) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderCborIO) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderCborIO) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderCborIO) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderCborIO) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderCborIO) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderCborIO) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderCborIO) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderCborIO) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderCborIO) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderCborIO) fn(t reflect.Type) *decFnCborIO { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderCborIO) fnNoExt(t reflect.Type) *decFnCborIO { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverCborIO) newDecoderBytes(in []byte, h Handle) *decoderCborIO { + var c1 decoderCborIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverCborIO) newDecoderIO(in io.Reader, h Handle) *decoderCborIO { + var c1 decoderCborIO + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverCborIO) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsCborIO) (f *fastpathDCborIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverCborIO) decFindRtidFn(s []decRtidFnCborIO, rtid uintptr) (i uint, fn *decFnCborIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverCborIO) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnCborIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnCborIO](v)) + } + return +} + +func (dh helperDecDriverCborIO) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsCborIO, + checkExt bool) (fn *decFnCborIO) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverCborIO) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborIO) { + rtid := rt2id(rt) + var sp []decRtidFnCborIO = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverCborIO) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborIO) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnCborIO + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnCborIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnCborIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnCborIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverCborIO) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsCborIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnCborIO) { + fn = new(decFnCborIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderCborIO).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderCborIO).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderCborIO).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderCborIO).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderCborIO).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderCborIO).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderCborIO).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderCborIO).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderCborIO, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderCborIO, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderCborIO).kBool + case reflect.String: + fn.fd = (*decoderCborIO).kString + case reflect.Int: + fn.fd = (*decoderCborIO).kInt + case reflect.Int8: + fn.fd = (*decoderCborIO).kInt8 + case reflect.Int16: + fn.fd = (*decoderCborIO).kInt16 + case reflect.Int32: + fn.fd = (*decoderCborIO).kInt32 + case reflect.Int64: + fn.fd = (*decoderCborIO).kInt64 + case reflect.Uint: + fn.fd = (*decoderCborIO).kUint + case reflect.Uint8: + fn.fd = (*decoderCborIO).kUint8 + case reflect.Uint16: + fn.fd = (*decoderCborIO).kUint16 + case reflect.Uint32: + fn.fd = (*decoderCborIO).kUint32 + case reflect.Uint64: + fn.fd = (*decoderCborIO).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderCborIO).kUintptr + case reflect.Float32: + fn.fd = (*decoderCborIO).kFloat32 + case reflect.Float64: + fn.fd = (*decoderCborIO).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderCborIO).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderCborIO).kComplex128 + case reflect.Chan: + fn.fd = (*decoderCborIO).kChan + case reflect.Slice: + fn.fd = (*decoderCborIO).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderCborIO).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderCborIO).kStructSimple + } else { + fn.fd = (*decoderCborIO).kStruct + } + case reflect.Map: + fn.fd = (*decoderCborIO).kMap + case reflect.Interface: + + fn.fd = (*decoderCborIO).kInterface + default: + + fn.fd = (*decoderCborIO).kErr + } + } + } + return +} +func (e *cborEncDriverIO) EncodeNil() { + e.w.writen1(cborBdNil) +} + +func (e *cborEncDriverIO) EncodeBool(b bool) { + if b { + e.w.writen1(cborBdTrue) + } else { + e.w.writen1(cborBdFalse) + } +} + +func (e *cborEncDriverIO) EncodeFloat32(f float32) { + b := math.Float32bits(f) + if e.h.OptimumSize { + if h := floatToHalfFloatBits(b); halfFloatToFloatBits(h) == b { + e.w.writen1(cborBdFloat16) + e.w.writen2(bigen.PutUint16(h)) + return + } + } + e.w.writen1(cborBdFloat32) + e.w.writen4(bigen.PutUint32(b)) +} + +func (e *cborEncDriverIO) EncodeFloat64(f float64) { + if e.h.OptimumSize { + if f32 := float32(f); float64(f32) == f { + e.EncodeFloat32(f32) + return + } + } + e.w.writen1(cborBdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *cborEncDriverIO) encUint(v uint64, bd byte) { + if v <= 0x17 { + e.w.writen1(byte(v) + bd) + } else if v <= math.MaxUint8 { + e.w.writen2(bd+0x18, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 0x19) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 0x1a) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd + 0x1b) + e.w.writen8(bigen.PutUint64(v)) + } +} + +func (e *cborEncDriverIO) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-1-v), cborBaseNegInt) + } else { + e.encUint(uint64(v), cborBaseUint) + } +} + +func (e *cborEncDriverIO) EncodeUint(v uint64) { + e.encUint(v, cborBaseUint) +} + +func (e *cborEncDriverIO) encLen(bd byte, length int) { + e.encUint(uint64(length), bd) +} + +func (e *cborEncDriverIO) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + } else if e.h.TimeRFC3339 { + e.encUint(0, cborBaseTag) + e.encStringBytesS(cborBaseString, stringView(t.AppendFormat(e.b[:0], time.RFC3339Nano))) + } else { + e.encUint(1, cborBaseTag) + t = t.UTC().Round(time.Microsecond) + sec, nsec := t.Unix(), uint64(t.Nanosecond()) + if nsec == 0 { + e.EncodeInt(sec) + } else { + e.EncodeFloat64(float64(sec) + float64(nsec)/1e9) + } + } +} + +func (e *cborEncDriverIO) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + e.encUint(uint64(xtag), cborBaseTag) + if ext == SelfExt { + e.enc.encodeAs(rv, basetype, false) + } else if v := ext.ConvertExt(rv); v == nil { + e.writeNilBytes() + } else { + e.enc.encodeI(v) + } +} + +func (e *cborEncDriverIO) EncodeRawExt(re *RawExt) { + e.encUint(uint64(re.Tag), cborBaseTag) + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) + } else { + e.EncodeNil() + } +} + +func (e *cborEncDriverIO) WriteArrayEmpty() { + if e.h.IndefiniteLength { + e.w.writen2(cborBdIndefiniteArray, cborBdBreak) + } else { + e.w.writen1(cborBaseArray) + + } +} + +func (e *cborEncDriverIO) WriteMapEmpty() { + if e.h.IndefiniteLength { + e.w.writen2(cborBdIndefiniteMap, cborBdBreak) + } else { + e.w.writen1(cborBaseMap) + + } +} + +func (e *cborEncDriverIO) WriteArrayStart(length int) { + if e.h.IndefiniteLength { + e.w.writen1(cborBdIndefiniteArray) + } else { + e.encLen(cborBaseArray, length) + } +} + +func (e *cborEncDriverIO) WriteMapStart(length int) { + if e.h.IndefiniteLength { + e.w.writen1(cborBdIndefiniteMap) + } else { + e.encLen(cborBaseMap, length) + } +} + +func (e *cborEncDriverIO) WriteMapEnd() { + if e.h.IndefiniteLength { + e.w.writen1(cborBdBreak) + } +} + +func (e *cborEncDriverIO) WriteArrayEnd() { + if e.h.IndefiniteLength { + e.w.writen1(cborBdBreak) + } +} + +func (e *cborEncDriverIO) EncodeString(v string) { + bb := cborBaseString + if e.h.StringToRaw { + bb = cborBaseBytes + } + e.encStringBytesS(bb, v) +} + +func (e *cborEncDriverIO) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *cborEncDriverIO) EncodeStringBytesRaw(v []byte) { + e.encStringBytesS(cborBaseBytes, stringView(v)) +} + +func (e *cborEncDriverIO) encStringBytesS(bb byte, v string) { + if e.h.IndefiniteLength { + if bb == cborBaseBytes { + e.w.writen1(cborBdIndefiniteBytes) + } else { + e.w.writen1(cborBdIndefiniteString) + } + vlen := uint(len(v)) + n := max(4, min(vlen/4, 1024)) + for i := uint(0); i < vlen; { + i2 := i + n + if i2 >= vlen { + i2 = vlen + } + v2 := v[i:i2] + e.encLen(bb, len(v2)) + e.w.writestr(v2) + i = i2 + } + e.w.writen1(cborBdBreak) + } else { + e.encLen(bb, len(v)) + e.w.writestr(v) + } +} + +func (e *cborEncDriverIO) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *cborEncDriverIO) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = cborBdNil + } + e.w.writen1(v) +} + +func (e *cborEncDriverIO) writeNilArray() { + e.writeNilOr(cborBaseArray) +} + +func (e *cborEncDriverIO) writeNilMap() { + e.writeNilOr(cborBaseMap) +} + +func (e *cborEncDriverIO) writeNilBytes() { + e.writeNilOr(cborBaseBytes) +} + +func (d *cborDecDriverIO) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *cborDecDriverIO) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdNil || d.bd == cborBdUndefined { + d.bdRead = false + return true + } + return +} + +func (d *cborDecDriverIO) TryNil() bool { + return d.advanceNil() +} + +func (d *cborDecDriverIO) skipTags() { + for d.bd>>5 == cborMajorTag { + d.decUint() + d.bd = d.r.readn1() + } +} + +func (d *cborDecDriverIO) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + if d.bd == cborBdNil { + d.bdRead = false + return valueTypeNil + } + major := d.bd >> 5 + if major == cborMajorBytes { + return valueTypeBytes + } else if major == cborMajorString { + return valueTypeString + } else if major == cborMajorArray { + return valueTypeArray + } else if major == cborMajorMap { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *cborDecDriverIO) CheckBreak() (v bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdBreak { + d.bdRead = false + v = true + } + return +} + +func (d *cborDecDriverIO) decUint() (ui uint64) { + v := d.bd & 0x1f + if v <= 0x17 { + ui = uint64(v) + } else if v == 0x18 { + ui = uint64(d.r.readn1()) + } else if v == 0x19 { + ui = uint64(bigen.Uint16(d.r.readn2())) + } else if v == 0x1a { + ui = uint64(bigen.Uint32(d.r.readn4())) + } else if v == 0x1b { + ui = uint64(bigen.Uint64(d.r.readn8())) + } else { + halt.errorf("invalid descriptor decoding uint: %x/%s (%x)", d.bd, cbordesc(d.bd), v) + } + return +} + +func (d *cborDecDriverIO) decLen() int { + return int(d.decUint()) +} + +func (d *cborDecDriverIO) decFloat() (f float64, ok bool) { + ok = true + switch d.bd { + case cborBdFloat16: + f = float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.r.readn2())))) + case cborBdFloat32: + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case cborBdFloat64: + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + default: + if d.bd>>5 == cborMajorTag { + + switch d.bd & 0x1f { + case 2: + f = d.decTagBigIntAsFloat(false) + case 3: + f = d.decTagBigIntAsFloat(true) + case 4: + f = d.decTagBigFloatAsFloat(true) + case 5: + f = d.decTagBigFloatAsFloat(false) + default: + ok = false + } + } else { + ok = false + } + } + return +} + +func (d *cborDecDriverIO) decInteger() (ui uint64, neg, ok bool) { + ok = true + switch d.bd >> 5 { + case cborMajorUint: + ui = d.decUint() + case cborMajorNegInt: + ui = d.decUint() + neg = true + default: + ok = false + } + return +} + +func (d *cborDecDriverIO) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, true) + d.bdRead = false + return +} + +func (d *cborDecDriverIO) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *cborDecDriverIO) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, true) + d.bdRead = false + return +} + +func (d *cborDecDriverIO) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + if d.bd == cborBdTrue { + b = true + } else if d.bd == cborBdFalse { + } else { + halt.errorf("not bool - %s %x/%s", msgBadDesc, d.bd, cbordesc(d.bd)) + } + d.bdRead = false + return +} + +func (d *cborDecDriverIO) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + d.bdRead = false + if d.bd == cborBdIndefiniteMap { + return containerLenUnknown + } + if d.bd>>5 != cborMajorMap { + halt.errorf("error reading map; got major type: %x, expected %x/%s", d.bd>>5, cborMajorMap, cbordesc(d.bd)) + } + return d.decLen() +} + +func (d *cborDecDriverIO) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + d.bdRead = false + if d.bd == cborBdIndefiniteArray { + return containerLenUnknown + } + if d.bd>>5 != cborMajorArray { + halt.errorf("invalid array; got major type: %x, expect: %x/%s", d.bd>>5, cborMajorArray, cbordesc(d.bd)) + } + return d.decLen() +} + +func (d *cborDecDriverIO) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + if d.h.SkipUnexpectedTags { + d.skipTags() + } + fnEnsureNonNilBytes := func() { + + if bs == nil { + bs = zeroByteSlice + state = dBytesDetach + } + } + if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + major := d.bd >> 5 + val4str := d.h.ValidateUnicode && major == cborMajorString + bs = d.d.buf[:0] + d.bdRead = false + for !d.CheckBreak() { + if d.bd>>5 != major { + const msg = "malformed indefinite string/bytes %x (%s); " + + "contains chunk with major type %v, expected %v" + halt.errorf(msg, d.bd, cbordesc(d.bd), d.bd>>5, major) + } + n := uint(d.decLen()) + bs = append(bs, d.r.readx(n)...) + d.bdRead = false + if val4str && !utf8.Valid(bs[len(bs)-int(n):]) { + const msg = "indefinite-length text string contains chunk " + + "that is not a valid utf-8 sequence: 0x%x" + halt.errorf(msg, bs[len(bs)-int(n):]) + } + } + d.bdRead = false + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + if d.bd == cborBdIndefiniteArray { + d.bdRead = false + bs = d.d.buf[:0] + for !d.CheckBreak() { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + d.d.buf = bs + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + var cond bool + if d.bd>>5 == cborMajorArray { + d.bdRead = false + slen := d.decLen() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + fnEnsureNonNilBytes() + return + } + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *cborDecDriverIO) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) + } + return +} + +func (d *cborDecDriverIO) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.bd>>5 != cborMajorTag { + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + } + xtag := d.decUint() + d.bdRead = false + return d.decodeTime(xtag) +} + +func (d *cborDecDriverIO) decodeTime(xtag uint64) (t time.Time) { + switch xtag { + case 0: + var err error + t, err = time.Parse(time.RFC3339, stringView(bytesOKs(d.DecodeStringAsBytes()))) + halt.onerror(err) + case 1: + f1, f2 := math.Modf(d.DecodeFloat64()) + t = time.Unix(int64(f1), int64(f2*1e9)) + default: + halt.errorf("invalid tag for time.Time - expecting 0 or 1, got 0x%x", xtag) + } + t = t.UTC().Round(time.Microsecond) + return +} + +func (d *cborDecDriverIO) preDecodeExt(checkTag bool, xtag uint64) (realxtag uint64, ok bool) { + if d.advanceNil() { + return + } + if d.bd>>5 != cborMajorTag { + halt.errorf("error reading tag; expected major type: %x, got: %x", cborMajorTag, d.bd>>5) + } + realxtag = d.decUint() + d.bdRead = false + if checkTag && xtag != realxtag { + halt.errorf("Wrong extension tag. Got %b. Expecting: %v", realxtag, xtag) + } + ok = true + return +} + +func (d *cborDecDriverIO) DecodeRawExt(re *RawExt) { + if realxtag, ok := d.preDecodeExt(false, 0); ok { + re.Tag = realxtag + d.dec.decode(&re.Value) + d.bdRead = false + } +} + +func (d *cborDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if _, ok := d.preDecodeExt(true, xtag); ok { + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) + } else { + d.dec.interfaceExtConvertAndDecode(rv, ext) + } + d.bdRead = false + } +} + +func (d *cborDecDriverIO) decTagBigIntAsFloat(neg bool) (f float64) { + bs, _ := d.DecodeBytes() + bi := new(big.Int).SetBytes(bs) + if neg { + bi0 := bi + bi = new(big.Int).Sub(big.NewInt(-1), bi0) + } + f, _ = bi.Float64() + return +} + +func (d *cborDecDriverIO) decTagBigFloatAsFloat(decimal bool) (f float64) { + if nn := d.r.readn1(); nn != 82 { + halt.errorf("(%d) decoding decimal/big.Float: expected 2 numbers", nn) + } + exp := d.DecodeInt64() + mant := d.DecodeInt64() + if decimal { + + rf := readFloatResult{exp: int8(exp)} + if mant >= 0 { + rf.mantissa = uint64(mant) + } else { + rf.neg = true + rf.mantissa = uint64(-mant) + } + f, _ = parseFloat64_reader(rf) + + } else { + + bfm := new(big.Float).SetPrec(64).SetInt64(mant) + bf := new(big.Float).SetPrec(64).SetMantExp(bfm, int(exp)) + f, _ = bf.Float64() + } + return +} + +func (d *cborDecDriverIO) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + switch d.bd >> 5 { + case cborMajorUint: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt64() + } else { + n.v = valueTypeUint + n.u = d.DecodeUint64() + } + case cborMajorNegInt: + n.v = valueTypeInt + n.i = d.DecodeInt64() + case cborMajorBytes: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case cborMajorString: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case cborMajorArray: + n.v = valueTypeArray + decodeFurther = true + case cborMajorMap: + n.v = valueTypeMap + decodeFurther = true + case cborMajorTag: + n.v = valueTypeExt + n.u = d.decUint() + d.bdRead = false + n.l = nil + xx := d.h.getExtForTag(n.u) + if xx == nil { + switch n.u { + case 0, 1: + n.v = valueTypeTime + n.t = d.decodeTime(n.u) + case 2: + n.f = d.decTagBigIntAsFloat(false) + n.v = valueTypeFloat + case 3: + n.f = d.decTagBigIntAsFloat(true) + n.v = valueTypeFloat + case 4: + n.f = d.decTagBigFloatAsFloat(true) + n.v = valueTypeFloat + case 5: + n.f = d.decTagBigFloatAsFloat(false) + n.v = valueTypeFloat + case 55799: + d.DecodeNaked() + default: + if d.h.SkipUnexpectedTags { + d.DecodeNaked() + } + + } + return + } + + case cborMajorSimpleOrFloat: + switch d.bd { + case cborBdNil, cborBdUndefined: + n.v = valueTypeNil + case cborBdFalse: + n.v = valueTypeBool + n.b = false + case cborBdTrue: + n.v = valueTypeBool + n.b = true + case cborBdFloat16, cborBdFloat32, cborBdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + default: + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + } + default: + halt.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + } + if !decodeFurther { + d.bdRead = false + } +} + +func (d *cborDecDriverIO) uintBytes() (v []byte, ui uint64) { + + switch vv := d.bd & 0x1f; vv { + case 0x18: + v = d.r.readx(1) + ui = uint64(v[0]) + case 0x19: + v = d.r.readx(2) + ui = uint64(bigenstd.Uint16(v)) + case 0x1a: + v = d.r.readx(4) + ui = uint64(bigenstd.Uint32(v)) + case 0x1b: + v = d.r.readx(8) + ui = uint64(bigenstd.Uint64(v)) + default: + if vv > 0x1b { + halt.errorf("invalid descriptor decoding uint: %x/%s", d.bd, cbordesc(d.bd)) + } + ui = uint64(vv) + } + return +} + +func (d *cborDecDriverIO) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *cborDecDriverIO) nextValueBytesBdReadR() { + + var ui uint64 + + switch d.bd >> 5 { + case cborMajorUint, cborMajorNegInt: + d.uintBytes() + case cborMajorString, cborMajorBytes: + if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + _, ui = d.uintBytes() + d.r.skip(uint(ui)) + } + } else { + _, ui = d.uintBytes() + d.r.skip(uint(ui)) + } + case cborMajorArray: + if d.bd == cborBdIndefiniteArray { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + d.nextValueBytesBdReadR() + } + } else { + _, ui = d.uintBytes() + for i := uint64(0); i < ui; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + } + case cborMajorMap: + if d.bd == cborBdIndefiniteMap { + for { + d.readNextBd() + if d.bd == cborBdBreak { + break + } + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else { + _, ui = d.uintBytes() + for i := uint64(0); i < ui; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } + case cborMajorTag: + d.uintBytes() + d.readNextBd() + d.nextValueBytesBdReadR() + case cborMajorSimpleOrFloat: + switch d.bd { + case cborBdNil, cborBdUndefined, cborBdFalse, cborBdTrue: + case cborBdFloat16: + d.r.skip(2) + case cborBdFloat32: + d.r.skip(4) + case cborBdFloat64: + d.r.skip(8) + default: + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + } + default: + halt.errorf("nextValueBytes: Unrecognized d.bd: 0x%x", d.bd) + } + return +} + +func (d *cborDecDriverIO) reset() { + d.bdAndBdread.reset() + +} + +func (d *cborEncDriverIO) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*CborHandle) + d.e = shared + if shared.bytes { + fp = cborFpEncBytes + } else { + fp = cborFpEncIO + } + + d.init2(enc) + return +} + +func (e *cborEncDriverIO) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *cborEncDriverIO) writerEnd() { e.w.end() } + +func (e *cborEncDriverIO) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *cborEncDriverIO) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *cborDecDriverIO) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*CborHandle) + d.d = shared + if shared.bytes { + fp = cborFpDecBytes + } else { + fp = cborFpDecIO + } + + d.init2(dec) + return +} + +func (d *cborDecDriverIO) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *cborDecDriverIO) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *cborDecDriverIO) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *cborDecDriverIO) descBd() string { + return sprintf("%v (%s)", d.bd, cbordesc(d.bd)) +} + +func (d *cborDecDriverIO) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +func (d *cborEncDriverIO) init2(enc encoderI) { + d.enc = enc +} + +func (d *cborDecDriverIO) init2(dec decoderI) { + d.dec = dec + +} diff --git a/vendor/github.com/ugorji/go/codec/cbor.notfastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/cbor.notfastpath.mono.generated.go new file mode 100644 index 000000000..9ae1be245 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/cbor.notfastpath.mono.generated.go @@ -0,0 +1,52 @@ +//go:build !notmono && !codec.notmono && (notfastpath || codec.notfastpath) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +type fastpathECborBytes struct { + rt reflect.Type + encfn func(*encoderCborBytes, *encFnInfo, reflect.Value) +} +type fastpathDCborBytes struct { + rt reflect.Type + decfn func(*decoderCborBytes, *decFnInfo, reflect.Value) +} +type fastpathEsCborBytes [0]fastpathECborBytes +type fastpathDsCborBytes [0]fastpathDCborBytes + +func (helperEncDriverCborBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderCborBytes) bool { + return false +} +func (helperDecDriverCborBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderCborBytes) bool { + return false +} + +func (helperEncDriverCborBytes) fastpathEList() (v *fastpathEsCborBytes) { return } +func (helperDecDriverCborBytes) fastpathDList() (v *fastpathDsCborBytes) { return } + +type fastpathECborIO struct { + rt reflect.Type + encfn func(*encoderCborIO, *encFnInfo, reflect.Value) +} +type fastpathDCborIO struct { + rt reflect.Type + decfn func(*decoderCborIO, *decFnInfo, reflect.Value) +} +type fastpathEsCborIO [0]fastpathECborIO +type fastpathDsCborIO [0]fastpathDCborIO + +func (helperEncDriverCborIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderCborIO) bool { + return false +} +func (helperDecDriverCborIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderCborIO) bool { + return false +} + +func (helperEncDriverCborIO) fastpathEList() (v *fastpathEsCborIO) { return } +func (helperDecDriverCborIO) fastpathDList() (v *fastpathDsCborIO) { return } diff --git a/vendor/github.com/ugorji/go/codec/codecgen.go b/vendor/github.com/ugorji/go/codec/codecgen.go deleted file mode 100644 index 49fb8e515..000000000 --- a/vendor/github.com/ugorji/go/codec/codecgen.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build codecgen || generated -// +build codecgen generated - -package codec - -// this file sets the codecgen variable to true -// when the build tag codecgen is set. -// -// some tests depend on knowing whether in the context of codecgen or not. -// For example, some tests should be skipped during codecgen e.g. missing fields tests. - -func init() { - codecgen = true -} diff --git a/vendor/github.com/ugorji/go/codec/custom_time.go b/vendor/github.com/ugorji/go/codec/custom_time.go new file mode 100644 index 000000000..c6d9e9676 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/custom_time.go @@ -0,0 +1,191 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "math" + "time" +) + +// EncodeTime encodes a time.Time as a []byte, including +// information on the instant in time and UTC offset. +// +// Format Description +// +// A timestamp is composed of 3 components: +// +// - secs: signed integer representing seconds since unix epoch +// - nsces: unsigned integer representing fractional seconds as a +// nanosecond offset within secs, in the range 0 <= nsecs < 1e9 +// - tz: signed integer representing timezone offset in minutes east of UTC, +// and a dst (daylight savings time) flag +// +// When encoding a timestamp, the first byte is the descriptor, which +// defines which components are encoded and how many bytes are used to +// encode secs and nsecs components. *If secs/nsecs is 0 or tz is UTC, it +// is not encoded in the byte array explicitly*. +// +// Descriptor 8 bits are of the form `A B C DDD EE`: +// A: Is secs component encoded? 1 = true +// B: Is nsecs component encoded? 1 = true +// C: Is tz component encoded? 1 = true +// DDD: Number of extra bytes for secs (range 0-7). +// If A = 1, secs encoded in DDD+1 bytes. +// If A = 0, secs is not encoded, and is assumed to be 0. +// If A = 1, then we need at least 1 byte to encode secs. +// DDD says the number of extra bytes beyond that 1. +// E.g. if DDD=0, then secs is represented in 1 byte. +// if DDD=2, then secs is represented in 3 bytes. +// EE: Number of extra bytes for nsecs (range 0-3). +// If B = 1, nsecs encoded in EE+1 bytes (similar to secs/DDD above) +// +// Following the descriptor bytes, subsequent bytes are: +// +// secs component encoded in `DDD + 1` bytes (if A == 1) +// nsecs component encoded in `EE + 1` bytes (if B == 1) +// tz component encoded in 2 bytes (if C == 1) +// +// secs and nsecs components are integers encoded in a BigEndian +// 2-complement encoding format. +// +// tz component is encoded as 2 bytes (16 bits). Most significant bit 15 to +// Least significant bit 0 are described below: +// +// Timezone offset has a range of -12:00 to +14:00 (ie -720 to +840 minutes). +// Bit 15 = have\_dst: set to 1 if we set the dst flag. +// Bit 14 = dst\_on: set to 1 if dst is in effect at the time, or 0 if not. +// Bits 13..0 = timezone offset in minutes. It is a signed integer in Big Endian format. +func customEncodeTime(t time.Time) []byte { + // t := rv2i(rv).(time.Time) + tsecs, tnsecs := t.Unix(), t.Nanosecond() + var ( + bd byte + bs [16]byte + i int = 1 + ) + l := t.Location() + if l == time.UTC { + l = nil + } + if tsecs != 0 { + bd = bd | 0x80 + btmp := bigen.PutUint64(uint64(tsecs)) + f := pruneSignExt(btmp[:], tsecs >= 0) + bd = bd | (byte(7-f) << 2) + copy(bs[i:], btmp[f:]) + i = i + (8 - f) + } + if tnsecs != 0 { + bd = bd | 0x40 + btmp := bigen.PutUint32(uint32(tnsecs)) + f := pruneSignExt(btmp[:4], true) + bd = bd | byte(3-f) + copy(bs[i:], btmp[f:4]) + i = i + (4 - f) + } + if l != nil { + bd = bd | 0x20 + // Note that Go Libs do not give access to dst flag. + _, zoneOffset := t.Zone() + // zoneName, zoneOffset := t.Zone() + zoneOffset /= 60 + z := uint16(zoneOffset) + btmp0, btmp1 := bigen.PutUint16(z) + // clear dst flags + bs[i] = btmp0 & 0x3f + bs[i+1] = btmp1 + i = i + 2 + } + bs[0] = bd + return bs[0:i] +} + +// customDecodeTime decodes a []byte into a time.Time. +func customDecodeTime(bs []byte) (tt time.Time, err error) { + bd := bs[0] + var ( + tsec int64 + tnsec uint32 + tz uint16 + i byte = 1 + i2 byte + n byte + ) + if bd&(1<<7) != 0 { + var btmp [8]byte + n = ((bd >> 2) & 0x7) + 1 + i2 = i + n + copy(btmp[8-n:], bs[i:i2]) + // if first bit of bs[i] is set, then fill btmp[0..8-n] with 0xff (ie sign extend it) + if bs[i]&(1<<7) != 0 { + copy(btmp[0:8-n], bsAll0xff) + } + i = i2 + tsec = int64(bigen.Uint64(btmp)) + } + if bd&(1<<6) != 0 { + var btmp [4]byte + n = (bd & 0x3) + 1 + i2 = i + n + copy(btmp[4-n:], bs[i:i2]) + i = i2 + tnsec = bigen.Uint32(btmp) + } + if bd&(1<<5) == 0 { + tt = time.Unix(tsec, int64(tnsec)).UTC() + return + } + // In stdlib time.Parse, when a date is parsed without a zone name, it uses "" as zone name. + // However, we need name here, so it can be shown when time is printf.d. + // Zone name is in form: UTC-08:00. + // Note that Go Libs do not give access to dst flag, so we ignore dst bits + + tz = bigen.Uint16([2]byte{bs[i], bs[i+1]}) + // sign extend sign bit into top 2 MSB (which were dst bits): + if tz&(1<<13) == 0 { // positive + tz = tz & 0x3fff //clear 2 MSBs: dst bits + } else { // negative + tz = tz | 0xc000 //set 2 MSBs: dst bits + } + tzint := int16(tz) + if tzint == 0 { + tt = time.Unix(tsec, int64(tnsec)).UTC() + } else { + // For Go Time, do not use a descriptive timezone. + // It's unnecessary, and makes it harder to do a reflect.DeepEqual. + // The Offset already tells what the offset should be, if not on UTC and unknown zone name. + // var zoneName = timeLocUTCName(tzint) + tt = time.Unix(tsec, int64(tnsec)).In(time.FixedZone("", int(tzint)*60)) + } + return +} + +// customEncodeTimeAsNum encodes time.Time exactly as cbor does. +func customEncodeTimeAsNum(t time.Time) (r interface{}) { + t = t.UTC().Round(time.Microsecond) + sec, nsec := t.Unix(), uint64(t.Nanosecond()) + if nsec == 0 { + r = sec + } else { + r = float64(sec) + float64(nsec)/1e9 + } + return r +} + +// customDecodeTimeAsNum decodes time.Time exactly as cbor does. +func customDecodeTimeAsNum(v interface{}) (t time.Time) { + switch vv := v.(type) { + case int64: + t = time.Unix(vv, 0) + case uint64: + t = time.Unix((int64)(vv), 0) + case float64: + f1, f2 := math.Modf(vv) + t = time.Unix(int64(f1), int64(f2*1e9)) + default: + halt.errorf("expect int64/float64 for time.Time ext: got %T", v) + } + t = t.UTC().Round(time.Microsecond) + return +} diff --git a/vendor/github.com/ugorji/go/codec/decimal.go b/vendor/github.com/ugorji/go/codec/decimal.go index dbb338049..0c74726b3 100644 --- a/vendor/github.com/ugorji/go/codec/decimal.go +++ b/vendor/github.com/ugorji/go/codec/decimal.go @@ -8,6 +8,19 @@ import ( "strconv" ) +type readFloatResult struct { + mantissa uint64 + exp int8 + neg bool + trunc bool + bad bool // bad decimal string + hardexp bool // exponent is hard to handle (> 2 digits, etc) + ok bool + // sawdot bool + // sawexp bool + //_ [2]bool // padding +} + // Per go spec, floats are represented in memory as // IEEE single or double precision floating point values. // @@ -234,6 +247,10 @@ func parseFloat64_custom(b []byte) (f float64, err error) { } func parseUint64_simple(b []byte) (n uint64, ok bool) { + if len(b) > 1 && b[0] == '0' { // punt on numbers with leading zeros + return + } + var i int var n1 uint64 var c uint8 @@ -356,19 +373,6 @@ func parseNumber(b []byte, z *fauxUnion, preferSignedInt bool) (err error) { return } -type readFloatResult struct { - mantissa uint64 - exp int8 - neg bool - trunc bool - bad bool // bad decimal string - hardexp bool // exponent is hard to handle (> 2 digits, etc) - ok bool - // sawdot bool - // sawexp bool - //_ [2]bool // padding -} - func readFloat(s []byte, y floatinfo) (r readFloatResult) { var i uint // uint, so that we eliminate bounds checking var slen = uint(len(s)) @@ -384,13 +388,23 @@ func readFloat(s []byte, y floatinfo) (r readFloatResult) { i++ } - // we considered punting early if string has length > maxMantDigits, but this doesn't account + // considered punting early if string has length > maxMantDigits, but doesn't account // for trailing 0's e.g. 700000000000000000000 can be encoded exactly as it is 7e20 var nd, ndMant, dp int8 var sawdot, sawexp bool var xu uint64 + if i+1 < slen && s[i] == '0' { + switch s[i+1] { + case '.', 'e', 'E': + // ok + default: + r.bad = true + return + } + } + LOOP: for ; i < slen; i++ { switch s[i] { diff --git a/vendor/github.com/ugorji/go/codec/decode.base.go b/vendor/github.com/ugorji/go/codec/decode.base.go new file mode 100644 index 000000000..e82f40252 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/decode.base.go @@ -0,0 +1,944 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "errors" + "io" + "math" + "reflect" + "slices" + "sync" + "time" +) + +func init() { + for _, v := range []interface{}{ + (*string)(nil), + (*bool)(nil), + (*int)(nil), + (*int8)(nil), + (*int16)(nil), + (*int32)(nil), + (*int64)(nil), + (*uint)(nil), + (*uint8)(nil), + (*uint16)(nil), + (*uint32)(nil), + (*uint64)(nil), + (*uintptr)(nil), + (*float32)(nil), + (*float64)(nil), + (*complex64)(nil), + (*complex128)(nil), + (*[]byte)(nil), + ([]byte)(nil), + (*time.Time)(nil), + (*Raw)(nil), + (*interface{})(nil), + } { + decBuiltinRtids = append(decBuiltinRtids, i2rtid(v)) + } + slices.Sort(decBuiltinRtids) +} + +const msgBadDesc = "unrecognized descriptor byte" + +var decBuiltinRtids []uintptr + +// decDriver calls (DecodeBytes and DecodeStringAsBytes) return a state +// of the view they return, allowing consumers to handle appropriately. +// +// sequencing of this is intentional: +// - mutable if <= dBytesAttachBuffer (buf | view | invalid) +// - noCopy if >= dBytesAttachViewZerocopy +type dBytesAttachState uint8 + +const ( + dBytesAttachInvalid dBytesAttachState = iota + dBytesAttachView // (bytes && !zerocopy && !buf) + dBytesAttachBuffer // (buf) + dBytesAttachViewZerocopy // (bytes && zerocopy && !buf) + dBytesDetach // (!bytes && !buf) +) + +type dBytesIntoState uint8 + +const ( + dBytesIntoNoChange dBytesIntoState = iota + dBytesIntoParamOut + dBytesIntoParamOutSlice + dBytesIntoNew +) + +func (x dBytesAttachState) String() string { + switch x { + case dBytesAttachInvalid: + return "invalid" + case dBytesAttachView: + return "view" + case dBytesAttachBuffer: + return "buffer" + case dBytesAttachViewZerocopy: + return "view-zerocopy" + case dBytesDetach: + return "detach" + } + return "unknown" +} + +const ( + decDefMaxDepth = 1024 // maximum depth + decDefChanCap = 64 // should be large, as cap cannot be expanded + decScratchByteArrayLen = (4 + 3) * 8 // around cacheLineSize ie ~64, depending on Decoder size + + // MARKER: massage decScratchByteArrayLen to ensure xxxDecDriver structs fit within cacheLine*N + + // decFailNonEmptyIntf configures whether we error + // when decoding naked into a non-empty interface. + // + // Typically, we cannot decode non-nil stream value into + // nil interface with methods (e.g. io.Reader). + // However, in some scenarios, this should be allowed: + // - MapType + // - SliceType + // - Extensions + // + // Consequently, we should relax this. Put it behind a const flag for now. + decFailNonEmptyIntf = false + + // decUseTransient says whether we should use the transient optimization. + // + // There's potential for GC corruption or memory overwrites if transient isn't + // used carefully, so this flag helps turn it off quickly if needed. + // + // Use it everywhere needed so we can completely remove unused code blocks. + decUseTransient = true +) + +var ( + errNeedMapOrArrayDecodeToStruct = errors.New("only encoded map or array can decode into struct") + errCannotDecodeIntoNil = errors.New("cannot decode into nil") + + errExpandSliceCannotChange = errors.New("expand slice: cannot change") + + errDecoderNotInitialized = errors.New("Decoder not initialized") + + errDecUnreadByteNothingToRead = errors.New("cannot unread - nothing has been read") + errDecUnreadByteLastByteNotRead = errors.New("cannot unread - last byte has not been read") + errDecUnreadByteUnknown = errors.New("cannot unread - reason unknown") + errMaxDepthExceeded = errors.New("maximum decoding depth exceeded") +) + +type decNotDecodeableReason uint8 + +const ( + decNotDecodeableReasonUnknown decNotDecodeableReason = iota + decNotDecodeableReasonBadKind + decNotDecodeableReasonNonAddrValue + decNotDecodeableReasonNilReference +) + +type decDriverI interface { + + // this will check if the next token is a break. + CheckBreak() bool + + // TryNil tries to decode as nil. + // If a nil is in the stream, it consumes it and returns true. + // + // Note: if TryNil returns true, that must be handled. + TryNil() bool + + // ContainerType returns one of: Bytes, String, Nil, Slice or Map. + // + // Return unSet if not known. + // + // Note: Implementations MUST fully consume sentinel container types, specifically Nil. + ContainerType() (vt valueType) + + // DecodeNaked will decode primitives (number, bool, string, []byte) and RawExt. + // For maps and arrays, it will not do the decoding in-band, but will signal + // the decoder, so that is done later, by setting the fauxUnion.valueType field. + // + // Note: Numbers are decoded as int64, uint64, float64 only (no smaller sized number types). + // for extensions, DecodeNaked must read the tag and the []byte if it exists. + // if the []byte is not read, then kInterfaceNaked will treat it as a Handle + // that stores the subsequent value in-band, and complete reading the RawExt. + // + // extensions should also use readx to decode them, for efficiency. + // kInterface will extract the detached byte slice if it has to pass it outside its realm. + DecodeNaked() + + DecodeInt64() (i int64) + DecodeUint64() (ui uint64) + + DecodeFloat32() (f float32) + DecodeFloat64() (f float64) + + DecodeBool() (b bool) + + // DecodeStringAsBytes returns the bytes representing a string. + // It will return a view into scratch buffer or input []byte (if applicable). + // + // Note: This can also decode symbols, if supported. + // + // Users should consume it right away and not store it for later use. + DecodeStringAsBytes() (v []byte, state dBytesAttachState) + + // DecodeBytes returns the bytes representing a binary value. + // It will return a view into scratch buffer or input []byte (if applicable). + DecodeBytes() (out []byte, state dBytesAttachState) + // DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) + + // DecodeExt will decode into an extension. + // ext is never nil. + DecodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) + // decodeExt(verifyTag bool, tag byte) (xtag byte, xbs []byte) + + // DecodeRawExt will decode into a *RawExt + DecodeRawExt(re *RawExt) + + DecodeTime() (t time.Time) + + // ReadArrayStart will return the length of the array. + // If the format doesn't prefix the length, it returns containerLenUnknown. + // If the expected array was a nil in the stream, it returns containerLenNil. + ReadArrayStart() int + + // ReadMapStart will return the length of the array. + // If the format doesn't prefix the length, it returns containerLenUnknown. + // If the expected array was a nil in the stream, it returns containerLenNil. + ReadMapStart() int + + decDriverContainerTracker + + reset() + + // atEndOfDecode() + + // nextValueBytes will return the bytes representing the next value in the stream. + // It generally will include the last byte read, as that is a part of the next value + // in the stream. + nextValueBytes() []byte + + // descBd will describe the token descriptor that signifies what type was decoded + descBd() string + + // isBytes() bool + + resetInBytes(in []byte) + resetInIO(r io.Reader) + + NumBytesRead() int + + init(h Handle, shared *decoderBase, dec decoderI) (fp interface{}) + + // driverStateManager + decNegintPosintFloatNumber +} + +type decInit2er struct{} + +func (decInit2er) init2(dec decoderI) {} + +type decDriverContainerTracker interface { + ReadArrayElem(firstTime bool) + ReadMapElemKey(firstTime bool) + ReadMapElemValue() + ReadArrayEnd() + ReadMapEnd() +} + +type decNegintPosintFloatNumber interface { + decInteger() (ui uint64, neg, ok bool) + decFloat() (f float64, ok bool) +} + +type decDriverNoopNumberHelper struct{} + +func (x decDriverNoopNumberHelper) decInteger() (ui uint64, neg, ok bool) { + panic("decInteger unsupported") +} +func (x decDriverNoopNumberHelper) decFloat() (f float64, ok bool) { panic("decFloat unsupported") } + +type decDriverNoopContainerReader struct{} + +func (x decDriverNoopContainerReader) ReadArrayStart() (v int) { panic("ReadArrayStart unsupported") } +func (x decDriverNoopContainerReader) ReadMapStart() (v int) { panic("ReadMapStart unsupported") } +func (x decDriverNoopContainerReader) ReadArrayEnd() {} +func (x decDriverNoopContainerReader) ReadMapEnd() {} +func (x decDriverNoopContainerReader) ReadArrayElem(firstTime bool) {} +func (x decDriverNoopContainerReader) ReadMapElemKey(firstTime bool) {} +func (x decDriverNoopContainerReader) ReadMapElemValue() {} +func (x decDriverNoopContainerReader) CheckBreak() (v bool) { return } + +// ---- + +type decFnInfo struct { + ti *typeInfo + xfFn Ext + xfTag uint64 + addrD bool // decoding into a pointer is preferred + addrDf bool // force: if addrD, then decode function MUST take a ptr +} + +// DecodeOptions captures configuration options during decode. +type DecodeOptions struct { + // MapType specifies type to use during schema-less decoding of a map in the stream. + // If nil (unset), we default to map[string]interface{} iff json handle and MapKeyAsString=true, + // else map[interface{}]interface{}. + MapType reflect.Type + + // SliceType specifies type to use during schema-less decoding of an array in the stream. + // If nil (unset), we default to []interface{} for all formats. + SliceType reflect.Type + + // MaxInitLen defines the maxinum initial length that we "make" a collection + // (string, slice, map, chan). If 0 or negative, we default to a sensible value + // based on the size of an element in the collection. + // + // For example, when decoding, a stream may say that it has 2^64 elements. + // We should not auto-matically provision a slice of that size, to prevent Out-Of-Memory crash. + // Instead, we provision up to MaxInitLen, fill that up, and start appending after that. + MaxInitLen int + + // ReaderBufferSize is the size of the buffer used when reading. + // + // if > 0, we use a smart buffer internally for performance purposes. + ReaderBufferSize int + + // MaxDepth defines the maximum depth when decoding nested + // maps and slices. If 0 or negative, we default to a suitably large number (currently 1024). + MaxDepth int16 + + // If ErrorIfNoField, return an error when decoding a map + // from a codec stream into a struct, and no matching struct field is found. + ErrorIfNoField bool + + // If ErrorIfNoArrayExpand, return an error when decoding a slice/array that cannot be expanded. + // For example, the stream contains an array of 8 items, but you are decoding into a [4]T array, + // or you are decoding into a slice of length 4 which is non-addressable (and so cannot be set). + ErrorIfNoArrayExpand bool + + // If SignedInteger, use the int64 during schema-less decoding of unsigned values (not uint64). + SignedInteger bool + + // MapValueReset controls how we decode into a map value. + // + // By default, we MAY retrieve the mapping for a key, and then decode into that. + // However, especially with big maps, that retrieval may be expensive and unnecessary + // if the stream already contains all that is necessary to recreate the value. + // + // If true, we will never retrieve the previous mapping, + // but rather decode into a new value and set that in the map. + // + // If false, we will retrieve the previous mapping if necessary e.g. + // the previous mapping is a pointer, or is a struct or array with pre-set state, + // or is an interface. + MapValueReset bool + + // SliceElementReset: on decoding a slice, reset the element to a zero value first. + // + // concern: if the slice already contained some garbage, we will decode into that garbage. + SliceElementReset bool + + // InterfaceReset controls how we decode into an interface. + // + // By default, when we see a field that is an interface{...}, + // or a map with interface{...} value, we will attempt decoding into the + // "contained" value. + // + // However, this prevents us from reading a string into an interface{} + // that formerly contained a number. + // + // If true, we will decode into a new "blank" value, and set that in the interface. + // If false, we will decode into whatever is contained in the interface. + InterfaceReset bool + + // InternString controls interning of strings during decoding. + // + // Some handles, e.g. json, typically will read map keys as strings. + // If the set of keys are finite, it may help reduce allocation to + // look them up from a map (than to allocate them afresh). + // + // Note: Handles will be smart when using the intern functionality. + // Every string should not be interned. + // An excellent use-case for interning is struct field names, + // or map keys where key type is string. + InternString bool + + // PreferArrayOverSlice controls whether to decode to an array or a slice. + // + // This only impacts decoding into a nil interface{}. + // + // Consequently, it has no effect on codecgen. + // + // *Note*: This only applies if using go1.5 and above, + // as it requires reflect.ArrayOf support which was absent before go1.5. + PreferArrayOverSlice bool + + // DeleteOnNilMapValue controls how to decode a nil value in the stream. + // + // If true, we will delete the mapping of the key. + // Else, just set the mapping to the zero value of the type. + // + // Deprecated: This does NOTHING and is left behind for compiling compatibility. + // This change is necessitated because 'nil' in a stream now consistently + // means the zero value (ie reset the value to its zero state). + DeleteOnNilMapValue bool + + // RawToString controls how raw bytes in a stream are decoded into a nil interface{}. + // By default, they are decoded as []byte, but can be decoded as string (if configured). + RawToString bool + + // ZeroCopy controls whether decoded values of []byte or string type + // point into the input []byte parameter passed to a NewDecoderBytes/ResetBytes(...) call. + // + // To illustrate, if ZeroCopy and decoding from a []byte (not io.Writer), + // then a []byte or string in the output result may just be a slice of (point into) + // the input bytes. + // + // This optimization prevents unnecessary copying. + // + // However, it is made optional, as the caller MUST ensure that the input parameter []byte is + // not modified after the Decode() happens, as any changes are mirrored in the decoded result. + ZeroCopy bool + + // PreferPointerForStructOrArray controls whether a struct or array + // is stored in a nil interface{}, or a pointer to it. + // + // This mostly impacts when we decode registered extensions. + PreferPointerForStructOrArray bool + + // ValidateUnicode controls will cause decoding to fail if an expected unicode + // string is well-formed but include invalid codepoints. + // + // This could have a performance impact. + ValidateUnicode bool +} + +// ---------------------------------------- + +type decoderBase struct { + perType decPerType + + h *BasicHandle + + rtidFn, rtidFnNoExt *atomicRtidFnSlice + + buf []byte + + // used for interning strings + is internerMap + + err error + + // sd decoderI + + blist bytesFreeList + + mtr bool // is maptype a known type? + str bool // is slicetype a known type? + jsms bool // is json handle, and MapKeyAsString + + bytes bool // uses a bytes reader + bufio bool // uses a ioDecReader with buffer size > 0 + + // ---- cpu cache line boundary? + // ---- writable fields during execution --- *try* to keep in sep cache line + maxdepth int16 + depth int16 + + // Extensions can call Decode() within a current Decode() call. + // We need to know when the top level Decode() call returns, + // so we can decide whether to Release() or not. + calls uint16 // what depth in mustDecode are we in now. + + c containerState + + // decByteState + + n fauxUnion + + // b is an always-available scratch buffer used by Decoder and decDrivers. + // By being always-available, it can be used for one-off things without + // having to get from freelist, use, and return back to freelist. + // + // Use it for a narrow set of things e.g. + // - binc uses it for parsing numbers, represented at 8 or less bytes + // - uses as potential buffer for struct field names + b [decScratchByteArrayLen]byte + + hh Handle + // cache the mapTypeId and sliceTypeId for faster comparisons + mtid uintptr + stid uintptr +} + +func (d *decoderBase) maxInitLen() uint { + return uint(max(1024, d.h.MaxInitLen)) +} + +func (d *decoderBase) naked() *fauxUnion { + return &d.n +} + +func (d *decoderBase) fauxUnionReadRawBytes(dr decDriverI, asString, rawToString bool) { //, handleZeroCopy bool) { + // fauxUnion is only used within DecodeNaked calls; consequently, we should try to intern. + d.n.l, d.n.a = dr.DecodeBytes() + if asString || rawToString { + d.n.v = valueTypeString + d.n.s = d.detach2Str(d.n.l, d.n.a) + } else { + d.n.v = valueTypeBytes + d.n.l = d.detach2Bytes(d.n.l, d.n.a) + } +} + +// Return a fixed (detached) string representation of a []byte. +// +// Possibly get an interned version of a string, +// iff InternString=true and decoding a map key. +// +// This should mostly be used for map keys, struct field names, etc +// where the key type is string. This is because keys of a map/struct are +// typically reused across many objects. +func (d *decoderBase) detach2Str(v []byte, state dBytesAttachState) (s string) { + // note: string([]byte) checks - and optimizes - for len 0 and len 1 + if len(v) <= 1 { + s = string(v) + } else if state >= dBytesAttachViewZerocopy { // !scratchBuf && d.bytes && d.h.ZeroCopy + s = stringView(v) + } else if d.is == nil || d.c != containerMapKey || len(v) > internMaxStrLen { + s = string(v) + } else { + s = d.is.string(v) + } + return +} + +func (d *decoderBase) usableStructFieldNameBytes(buf, v []byte, state dBytesAttachState) (out []byte) { + // In JSON, mapElemValue reads a colon and spaces. + // In bufio mode of ioDecReader, fillbuf could overwrite the read buffer + // which readXXX() calls return sub-slices from. + // + // Consequently, we detach the bytes in this special case. + // + // Note: ioDecReader (non-bufio) and bytesDecReader do not have + // this issue (as no fillbuf exists where bytes might be returned from). + if d.bufio && d.h.jsonHandle && state < dBytesAttachViewZerocopy { + if cap(buf) > len(v) { + out = buf[:len(v)] + } else if len(d.b) > len(v) { + out = d.b[:len(v)] + } else { + out = make([]byte, len(v), max(64, len(v))) + } + copy(out, v) + return + } + return v +} + +func (d *decoderBase) detach2Bytes(in []byte, state dBytesAttachState) (out []byte) { + if cap(in) == 0 || state >= dBytesAttachViewZerocopy { + return in + } + if len(in) == 0 { + return zeroByteSlice + } + out = make([]byte, len(in)) + copy(out, in) + return out +} + +func (d *decoderBase) attachState(usingBufFromReader bool) (r dBytesAttachState) { + if usingBufFromReader { + r = dBytesAttachBuffer + } else if !d.bytes { + r = dBytesDetach + } else if d.h.ZeroCopy { + r = dBytesAttachViewZerocopy + } else { + r = dBytesAttachView + } + return +} + +func (d *decoderBase) mapStart(v int) int { + if v != containerLenNil { + d.depthIncr() + d.c = containerMapStart + } + return v +} + +func (d *decoderBase) HandleName() string { + return d.hh.Name() +} + +func (d *decoderBase) isBytes() bool { + return d.bytes +} + +type decoderI interface { + Decode(v interface{}) (err error) + HandleName() string + MustDecode(v interface{}) + NumBytesRead() int + Release() // deprecated + Reset(r io.Reader) + ResetBytes(in []byte) + ResetString(s string) + + isBytes() bool + wrapErr(v error, err *error) + swallow() + + nextValueBytes() []byte // wrapper method, for use in tests + // getDecDriver() decDriverI + + decode(v interface{}) + decodeAs(v interface{}, t reflect.Type, ext bool) + + interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) +} + +var errDecNoResetBytesWithReader = errors.New("cannot reset an Decoder reading from []byte with a io.Reader") +var errDecNoResetReaderWithBytes = errors.New("cannot reset an Decoder reading from io.Reader with a []byte") + +func setZero(iv interface{}) { + rv, isnil := isNil(iv, false) + if isnil { + return + } + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if isnilBitset.isset(byte(rv.Kind())) && rvIsNil(rv) { + return + } + // var canDecode bool + switch v := iv.(type) { + case *string: + *v = "" + case *bool: + *v = false + case *int: + *v = 0 + case *int8: + *v = 0 + case *int16: + *v = 0 + case *int32: + *v = 0 + case *int64: + *v = 0 + case *uint: + *v = 0 + case *uint8: + *v = 0 + case *uint16: + *v = 0 + case *uint32: + *v = 0 + case *uint64: + *v = 0 + case *float32: + *v = 0 + case *float64: + *v = 0 + case *complex64: + *v = 0 + case *complex128: + *v = 0 + case *[]byte: + *v = nil + case *Raw: + *v = nil + case *time.Time: + *v = time.Time{} + case reflect.Value: + decSetNonNilRV2Zero(v) + default: + if !fastpathDecodeSetZeroTypeSwitch(iv) { + decSetNonNilRV2Zero(rv) + } + } +} + +// decSetNonNilRV2Zero will set the non-nil value to its zero value. +func decSetNonNilRV2Zero(v reflect.Value) { + // If not decodeable (settable), we do not touch it. + // We considered empty'ing it if not decodeable e.g. + // - if chan, drain it + // - if map, clear it + // - if slice or array, zero all elements up to len + // + // However, we decided instead that we either will set the + // whole value to the zero value, or leave AS IS. + + k := v.Kind() + if k == reflect.Interface { + decSetNonNilRV2Zero4Intf(v) + } else if k == reflect.Ptr { + decSetNonNilRV2Zero4Ptr(v) + } else if v.CanSet() { + rvSetDirectZero(v) + } +} + +func decSetNonNilRV2Zero4Ptr(v reflect.Value) { + ve := v.Elem() + if ve.CanSet() { + rvSetZero(ve) // we can have a pointer to an interface + } else if v.CanSet() { + rvSetZero(v) + } +} + +func decSetNonNilRV2Zero4Intf(v reflect.Value) { + ve := v.Elem() + if ve.CanSet() { + rvSetDirectZero(ve) // interfaces always have element as a non-interface + } else if v.CanSet() { + rvSetZero(v) + } +} + +func (d *decoderBase) arrayCannotExpand(sliceLen, streamLen int) { + if d.h.ErrorIfNoArrayExpand { + halt.errorf("cannot expand array len during decode from %v to %v", any(sliceLen), any(streamLen)) + } +} + +//go:noinline +func (d *decoderBase) haltAsNotDecodeable(rv reflect.Value) { + if !rv.IsValid() { + halt.onerror(errCannotDecodeIntoNil) + } + // check if an interface can be retrieved, before grabbing an interface + if !rv.CanInterface() { + halt.errorf("cannot decode into a value without an interface: %v", rv) + } + halt.errorf("cannot decode into value of kind: %v, %#v", rv.Kind(), rv2i(rv)) +} + +func (d *decoderBase) depthIncr() { + d.depth++ + if d.depth >= d.maxdepth { + halt.onerror(errMaxDepthExceeded) + } +} + +func (d *decoderBase) depthDecr() { + d.depth-- +} + +func (d *decoderBase) arrayStart(v int) int { + if v != containerLenNil { + d.depthIncr() + d.c = containerArrayStart + } + return v +} + +func (d *decoderBase) oneShotAddrRV(rvt reflect.Type, rvk reflect.Kind) reflect.Value { + // MARKER 2025: is this slow for calling oneShot? + if decUseTransient && d.h.getTypeInfo4RT(baseRT(rvt)).flagCanTransient { + return d.perType.TransientAddrK(rvt, rvk) + } + return rvZeroAddrK(rvt, rvk) +} + +// decNegintPosintFloatNumberHelper is used for formats that are binary +// and have distinct ways of storing positive integers vs negative integers +// vs floats, which are uniquely identified by the byte descriptor. +// +// Currently, these formats are binc, cbor and simple. +type decNegintPosintFloatNumberHelper struct { + d decDriverI +} + +func (x decNegintPosintFloatNumberHelper) uint64(ui uint64, neg, ok bool) uint64 { + if ok && !neg { + return ui + } + return x.uint64TryFloat(ok) +} + +func (x decNegintPosintFloatNumberHelper) uint64TryFloat(neg bool) (ui uint64) { + if neg { // neg = true + halt.errorStr("assigning negative signed value to unsigned type") + } + f, ok := x.d.decFloat() + if !(ok && f >= 0 && noFrac64(math.Float64bits(f))) { + halt.errorStr2("invalid number loading uint64, with descriptor: ", x.d.descBd()) + } + return uint64(f) +} + +func (x decNegintPosintFloatNumberHelper) int64(ui uint64, neg, ok, cbor bool) (i int64) { + if ok { + return decNegintPosintFloatNumberHelperInt64v(ui, neg, cbor) + } + // return x.int64TryFloat() + // } + // func (x decNegintPosintFloatNumberHelper) int64TryFloat() (i int64) { + f, ok := x.d.decFloat() + if !(ok && noFrac64(math.Float64bits(f))) { + halt.errorf("invalid number loading uint64 (%v), with descriptor: %s", f, x.d.descBd()) + } + return int64(f) +} + +func (x decNegintPosintFloatNumberHelper) float64(f float64, ok, cbor bool) float64 { + if ok { + return f + } + return x.float64TryInteger(cbor) +} + +func (x decNegintPosintFloatNumberHelper) float64TryInteger(cbor bool) float64 { + ui, neg, ok := x.d.decInteger() + if !ok { + halt.errorStr2("invalid descriptor for float: ", x.d.descBd()) + } + return float64(decNegintPosintFloatNumberHelperInt64v(ui, neg, cbor)) +} + +func decNegintPosintFloatNumberHelperInt64v(ui uint64, neg, incrIfNeg bool) (i int64) { + if neg && incrIfNeg { + ui++ + } + i = chkOvf.SignedIntV(ui) + if neg { + i = -i + } + return +} + +// isDecodeable checks if value can be decoded into +// +// decode can take any reflect.Value that is a inherently addressable i.e. +// - non-nil chan (we will SEND to it) +// - non-nil slice (we will set its elements) +// - non-nil map (we will put into it) +// - non-nil pointer (we can "update" it) +// - func: no +// - interface: no +// - array: if canAddr=true +// - any other value pointer: if canAddr=true +func isDecodeable(rv reflect.Value) (canDecode bool, reason decNotDecodeableReason) { + switch rv.Kind() { + case reflect.Ptr, reflect.Slice, reflect.Chan, reflect.Map: + canDecode = !rvIsNil(rv) + reason = decNotDecodeableReasonNilReference + case reflect.Func, reflect.Interface, reflect.Invalid, reflect.UnsafePointer: + reason = decNotDecodeableReasonBadKind + default: + canDecode = rv.CanAddr() + reason = decNotDecodeableReasonNonAddrValue + } + return +} + +// decInferLen will infer a sensible length, given the following: +// - clen: length wanted. +// - maxlen: max length to be returned. +// if <= 0, it is unset, and we infer it based on the unit size +// - unit: number of bytes for each element of the collection +func decInferLen(clen int, maxlen, unit uint) (n uint) { + // anecdotal testing showed increase in allocation with map length of 16. + // We saw same typical alloc from 0-8, then a 20% increase at 16. + // Thus, we set it to 8. + + const ( + minLenIfUnset = 8 + maxMem = 1024 * 1024 // 1 MB Memory + ) + + // handle when maxlen is not set i.e. <= 0 + + // clen==0: use 0 + // maxlen<=0, clen<0: use default + // maxlen> 0, clen<0: use default + // maxlen<=0, clen>0: infer maxlen, and cap on it + // maxlen> 0, clen>0: cap at maxlen + + if clen == 0 || clen == containerLenNil { + return 0 + } + if clen < 0 { + // if unspecified, return 64 for bytes, ... 8 for uint64, ... and everything else + return max(64/unit, minLenIfUnset) + } + if unit == 0 { + return uint(clen) + } + if maxlen == 0 { + maxlen = maxMem / unit + } + return min(uint(clen), maxlen) +} + +type Decoder struct { + decoderI +} + +// NewDecoder returns a Decoder for decoding a stream of bytes from an io.Reader. +// +// For efficiency, Users are encouraged to configure ReaderBufferSize on the handle +// OR pass in a memory buffered reader (eg bufio.Reader, bytes.Buffer). +func NewDecoder(r io.Reader, h Handle) *Decoder { + return &Decoder{h.newDecoder(r)} +} + +// NewDecoderBytes returns a Decoder which efficiently decodes directly +// from a byte slice with zero copying. +func NewDecoderBytes(in []byte, h Handle) *Decoder { + return &Decoder{h.newDecoderBytes(in)} +} + +// NewDecoderString returns a Decoder which efficiently decodes directly +// from a string with zero copying. +// +// It is a convenience function that calls NewDecoderBytes with a +// []byte view into the string. +// +// This can be an efficient zero-copy if using default mode i.e. without codec.safe tag. +func NewDecoderString(s string, h Handle) *Decoder { + return NewDecoderBytes(bytesView(s), h) +} + +// ---- + +func sideDecode(h Handle, p *sync.Pool, fn func(decoderI)) { + var s decoderI + if usePoolForSideDecode { + s = p.Get().(decoderI) + defer p.Put(s) + } else { + // initialization cycle error + // s = NewDecoderBytes(nil, h).decoderI + s = p.New().(decoderI) + } + fn(s) +} + +func oneOffDecode(sd decoderI, v interface{}, in []byte, basetype reflect.Type, ext bool) { + sd.ResetBytes(in) + sd.decodeAs(v, basetype, ext) + // d.sideDecoder(xbs) + // d.sideDecode(rv, basetype) +} + +func bytesOKdbi(v []byte, _ dBytesIntoState) []byte { + return v +} + +func bytesOKs(bs []byte, _ dBytesAttachState) []byte { + return bs +} diff --git a/vendor/github.com/ugorji/go/codec/decode.go b/vendor/github.com/ugorji/go/codec/decode.go index f98c8ff2d..eedea89ee 100644 --- a/vendor/github.com/ugorji/go/codec/decode.go +++ b/vendor/github.com/ugorji/go/codec/decode.go @@ -1,3 +1,5 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -5,473 +7,163 @@ package codec import ( "encoding" - "errors" "io" - "math" "reflect" "strconv" + "sync" "time" ) -const msgBadDesc = "unrecognized descriptor byte" - -const ( - decDefMaxDepth = 1024 // maximum depth - decDefChanCap = 64 // should be large, as cap cannot be expanded - decScratchByteArrayLen = (8 + 2 + 2 + 1) * 8 // around cacheLineSize ie ~64, depending on Decoder size - - // MARKER: massage decScratchByteArrayLen to ensure xxxDecDriver structs fit within cacheLine*N - - // decFailNonEmptyIntf configures whether we error - // when decoding naked into a non-empty interface. - // - // Typically, we cannot decode non-nil stream value into - // nil interface with methods (e.g. io.Reader). - // However, in some scenarios, this should be allowed: - // - MapType - // - SliceType - // - Extensions - // - // Consequently, we should relax this. Put it behind a const flag for now. - decFailNonEmptyIntf = false - - // decUseTransient says that we should not use the transient optimization. - // - // There's potential for GC corruption or memory overwrites if transient isn't - // used carefully, so this flag helps turn it off quickly if needed. - // - // Use it everywhere needed so we can completely remove unused code blocks. - decUseTransient = true -) - -var ( - errNeedMapOrArrayDecodeToStruct = errors.New("only encoded map or array can decode into struct") - errCannotDecodeIntoNil = errors.New("cannot decode into nil") - - errExpandSliceCannotChange = errors.New("expand slice: cannot change") - - errDecoderNotInitialized = errors.New("Decoder not initialized") - - errDecUnreadByteNothingToRead = errors.New("cannot unread - nothing has been read") - errDecUnreadByteLastByteNotRead = errors.New("cannot unread - last byte has not been read") - errDecUnreadByteUnknown = errors.New("cannot unread - reason unknown") - errMaxDepthExceeded = errors.New("maximum decoding depth exceeded") -) - -// decByteState tracks where the []byte returned by the last call -// to DecodeBytes or DecodeStringAsByte came from -type decByteState uint8 - -const ( - decByteStateNone decByteState = iota - decByteStateZerocopy // view into []byte that we are decoding from - decByteStateReuseBuf // view into transient buffer used internally by decDriver - // decByteStateNewAlloc -) - -type decNotDecodeableReason uint8 - -const ( - decNotDecodeableReasonUnknown decNotDecodeableReason = iota - decNotDecodeableReasonBadKind - decNotDecodeableReasonNonAddrValue - decNotDecodeableReasonNilReference -) - -type decDriver interface { - // this will check if the next token is a break. - CheckBreak() bool - - // TryNil tries to decode as nil. - // If a nil is in the stream, it consumes it and returns true. - // - // Note: if TryNil returns true, that must be handled. - TryNil() bool - - // ContainerType returns one of: Bytes, String, Nil, Slice or Map. - // - // Return unSet if not known. - // - // Note: Implementations MUST fully consume sentinel container types, specifically Nil. - ContainerType() (vt valueType) - - // DecodeNaked will decode primitives (number, bool, string, []byte) and RawExt. - // For maps and arrays, it will not do the decoding in-band, but will signal - // the decoder, so that is done later, by setting the fauxUnion.valueType field. - // - // Note: Numbers are decoded as int64, uint64, float64 only (no smaller sized number types). - // for extensions, DecodeNaked must read the tag and the []byte if it exists. - // if the []byte is not read, then kInterfaceNaked will treat it as a Handle - // that stores the subsequent value in-band, and complete reading the RawExt. - // - // extensions should also use readx to decode them, for efficiency. - // kInterface will extract the detached byte slice if it has to pass it outside its realm. - DecodeNaked() - - DecodeInt64() (i int64) - DecodeUint64() (ui uint64) - - DecodeFloat64() (f float64) - DecodeBool() (b bool) - - // DecodeStringAsBytes returns the bytes representing a string. - // It will return a view into scratch buffer or input []byte (if applicable). - // - // Note: This can also decode symbols, if supported. - // - // Users should consume it right away and not store it for later use. - DecodeStringAsBytes() (v []byte) - - // DecodeBytes returns the bytes representing a binary value. - // It will return a view into scratch buffer or input []byte (if applicable). - // - // All implementations must honor the contract below: - // if ZeroCopy and applicable, return a view into input []byte we are decoding from - // else if in == nil, return a view into scratch buffer - // else append decoded value to in[:0] and return that - // (this can be simulated by passing []byte{} as in parameter) - // - // Implementations must also update Decoder.decByteState on each call to - // DecodeBytes or DecodeStringAsBytes. Some callers may check that and work appropriately. - // - // Note: DecodeBytes may decode past the length of the passed byte slice, up to the cap. - // Consequently, it is ok to pass a zero-len slice to DecodeBytes, as the returned - // byte slice will have the appropriate length. - DecodeBytes(in []byte) (out []byte) - // DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) - - // DecodeExt will decode into a *RawExt or into an extension. - DecodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) - // decodeExt(verifyTag bool, tag byte) (xtag byte, xbs []byte) - - DecodeTime() (t time.Time) - - // ReadArrayStart will return the length of the array. - // If the format doesn't prefix the length, it returns containerLenUnknown. - // If the expected array was a nil in the stream, it returns containerLenNil. - ReadArrayStart() int - - // ReadMapStart will return the length of the array. - // If the format doesn't prefix the length, it returns containerLenUnknown. - // If the expected array was a nil in the stream, it returns containerLenNil. - ReadMapStart() int - - reset() +type helperDecDriver[T decDriver] struct{} - // atEndOfDecode() - - // nextValueBytes will return the bytes representing the next value in the stream. - // - // if start is nil, then treat it as a request to discard the next set of bytes, - // and the return response does not matter. - // Typically, this means that the returned []byte is nil/empty/undefined. - // - // Optimize for decoding from a []byte, where the nextValueBytes will just be a sub-slice - // of the input slice. Callers that need to use this to not be a view into the input bytes - // should handle it appropriately. - nextValueBytes(start []byte) []byte - - // descBd will describe the token descriptor that signifies what type was decoded - descBd() string - - decoder() *Decoder - - driverStateManager - decNegintPosintFloatNumber -} - -type decDriverContainerTracker interface { - ReadArrayElem() - ReadMapElemKey() - ReadMapElemValue() - ReadArrayEnd() - ReadMapEnd() +// decFn encapsulates the captured variables and the encode function. +// This way, we only do some calculations one times, and pass to the +// code block that should be called (encapsulated in a function) +// instead of executing the checks every time. +type decFn[T decDriver] struct { + i decFnInfo + fd func(*decoder[T], *decFnInfo, reflect.Value) + // _ [1]uint64 // padding (cache-aligned) } -type decNegintPosintFloatNumber interface { - decInteger() (ui uint64, neg, ok bool) - decFloat() (f float64, ok bool) +type decRtidFn[T decDriver] struct { + rtid uintptr + fn *decFn[T] } -type decDriverNoopNumberHelper struct{} - -func (x decDriverNoopNumberHelper) decInteger() (ui uint64, neg, ok bool) { - panic("decInteger unsupported") -} -func (x decDriverNoopNumberHelper) decFloat() (f float64, ok bool) { panic("decFloat unsupported") } - -type decDriverNoopContainerReader struct{} - -// func (x decDriverNoopContainerReader) ReadArrayStart() (v int) { panic("ReadArrayStart unsupported") } -// func (x decDriverNoopContainerReader) ReadMapStart() (v int) { panic("ReadMapStart unsupported") } -func (x decDriverNoopContainerReader) ReadArrayEnd() {} -func (x decDriverNoopContainerReader) ReadMapEnd() {} -func (x decDriverNoopContainerReader) CheckBreak() (v bool) { return } - -// DecodeOptions captures configuration options during decode. -type DecodeOptions struct { - // MapType specifies type to use during schema-less decoding of a map in the stream. - // If nil (unset), we default to map[string]interface{} iff json handle and MapKeyAsString=true, - // else map[interface{}]interface{}. - MapType reflect.Type - - // SliceType specifies type to use during schema-less decoding of an array in the stream. - // If nil (unset), we default to []interface{} for all formats. - SliceType reflect.Type - - // MaxInitLen defines the maxinum initial length that we "make" a collection - // (string, slice, map, chan). If 0 or negative, we default to a sensible value - // based on the size of an element in the collection. - // - // For example, when decoding, a stream may say that it has 2^64 elements. - // We should not auto-matically provision a slice of that size, to prevent Out-Of-Memory crash. - // Instead, we provision up to MaxInitLen, fill that up, and start appending after that. - MaxInitLen int - - // ReaderBufferSize is the size of the buffer used when reading. - // - // if > 0, we use a smart buffer internally for performance purposes. - ReaderBufferSize int - - // MaxDepth defines the maximum depth when decoding nested - // maps and slices. If 0 or negative, we default to a suitably large number (currently 1024). - MaxDepth int16 - - // If ErrorIfNoField, return an error when decoding a map - // from a codec stream into a struct, and no matching struct field is found. - ErrorIfNoField bool - - // If ErrorIfNoArrayExpand, return an error when decoding a slice/array that cannot be expanded. - // For example, the stream contains an array of 8 items, but you are decoding into a [4]T array, - // or you are decoding into a slice of length 4 which is non-addressable (and so cannot be set). - ErrorIfNoArrayExpand bool - - // If SignedInteger, use the int64 during schema-less decoding of unsigned values (not uint64). - SignedInteger bool - - // MapValueReset controls how we decode into a map value. - // - // By default, we MAY retrieve the mapping for a key, and then decode into that. - // However, especially with big maps, that retrieval may be expensive and unnecessary - // if the stream already contains all that is necessary to recreate the value. - // - // If true, we will never retrieve the previous mapping, - // but rather decode into a new value and set that in the map. - // - // If false, we will retrieve the previous mapping if necessary e.g. - // the previous mapping is a pointer, or is a struct or array with pre-set state, - // or is an interface. - MapValueReset bool - - // SliceElementReset: on decoding a slice, reset the element to a zero value first. - // - // concern: if the slice already contained some garbage, we will decode into that garbage. - SliceElementReset bool - - // InterfaceReset controls how we decode into an interface. - // - // By default, when we see a field that is an interface{...}, - // or a map with interface{...} value, we will attempt decoding into the - // "contained" value. - // - // However, this prevents us from reading a string into an interface{} - // that formerly contained a number. - // - // If true, we will decode into a new "blank" value, and set that in the interface. - // If false, we will decode into whatever is contained in the interface. - InterfaceReset bool - - // InternString controls interning of strings during decoding. - // - // Some handles, e.g. json, typically will read map keys as strings. - // If the set of keys are finite, it may help reduce allocation to - // look them up from a map (than to allocate them afresh). - // - // Note: Handles will be smart when using the intern functionality. - // Every string should not be interned. - // An excellent use-case for interning is struct field names, - // or map keys where key type is string. - InternString bool - - // PreferArrayOverSlice controls whether to decode to an array or a slice. - // - // This only impacts decoding into a nil interface{}. - // - // Consequently, it has no effect on codecgen. - // - // *Note*: This only applies if using go1.5 and above, - // as it requires reflect.ArrayOf support which was absent before go1.5. - PreferArrayOverSlice bool - - // DeleteOnNilMapValue controls how to decode a nil value in the stream. - // - // If true, we will delete the mapping of the key. - // Else, just set the mapping to the zero value of the type. - // - // Deprecated: This does NOTHING and is left behind for compiling compatibility. - // This change is necessitated because 'nil' in a stream now consistently - // means the zero value (ie reset the value to its zero state). - DeleteOnNilMapValue bool - - // RawToString controls how raw bytes in a stream are decoded into a nil interface{}. - // By default, they are decoded as []byte, but can be decoded as string (if configured). - RawToString bool - - // ZeroCopy controls whether decoded values of []byte or string type - // point into the input []byte parameter passed to a NewDecoderBytes/ResetBytes(...) call. - // - // To illustrate, if ZeroCopy and decoding from a []byte (not io.Writer), - // then a []byte or string in the output result may just be a slice of (point into) - // the input bytes. - // - // This optimization prevents unnecessary copying. - // - // However, it is made optional, as the caller MUST ensure that the input parameter []byte is - // not modified after the Decode() happens, as any changes are mirrored in the decoded result. - ZeroCopy bool - - // PreferPointerForStructOrArray controls whether a struct or array - // is stored in a nil interface{}, or a pointer to it. - // - // This mostly impacts when we decode registered extensions. - PreferPointerForStructOrArray bool +// ---- - // ValidateUnicode controls will cause decoding to fail if an expected unicode - // string is well-formed but include invalid codepoints. - // - // This could have a performance impact. - ValidateUnicode bool +// Decoder reads and decodes an object from an input stream in a supported format. +// +// Decoder is NOT safe for concurrent use i.e. a Decoder cannot be used +// concurrently in multiple goroutines. +// +// However, as Decoder could be allocation heavy to initialize, a Reset method is provided +// so its state can be reused to decode new input streams repeatedly. +// This is the idiomatic way to use. +type decoder[T decDriver] struct { + dh helperDecDriver[T] + fp *fastpathDs[T] + d T + decoderBase } -// ---------------------------------------- - -func (d *Decoder) rawExt(f *codecFnInfo, rv reflect.Value) { - d.d.DecodeExt(rv2i(rv), f.ti.rt, 0, nil) +func (d *decoder[T]) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) } -func (d *Decoder) ext(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) ext(f *decFnInfo, rv reflect.Value) { d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) } -func (d *Decoder) selferUnmarshal(f *codecFnInfo, rv reflect.Value) { - rv2i(rv).(Selfer).CodecDecodeSelf(d) +func (d *decoder[T]) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) } -func (d *Decoder) binaryUnmarshal(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { bm := rv2i(rv).(encoding.BinaryUnmarshaler) - xbs := d.d.DecodeBytes(nil) + xbs, _ := d.d.DecodeBytes() fnerr := bm.UnmarshalBinary(xbs) - d.onerror(fnerr) + halt.onerror(fnerr) } -func (d *Decoder) textUnmarshal(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) textUnmarshal(_ *decFnInfo, rv reflect.Value) { tm := rv2i(rv).(encoding.TextUnmarshaler) - fnerr := tm.UnmarshalText(d.d.DecodeStringAsBytes()) - d.onerror(fnerr) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) } -func (d *Decoder) jsonUnmarshal(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) } -func (d *Decoder) jsonUnmarshalV(tm jsonUnmarshaler) { +func (d *decoder[T]) jsonUnmarshalV(tm jsonUnmarshaler) { // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. - var bs0 = []byte{} - if !d.bytes { - bs0 = d.blist.get(256) - } - bs := d.d.nextValueBytes(bs0) - fnerr := tm.UnmarshalJSON(bs) - if !d.bytes { - d.blist.put(bs) - if !byteSliceSameData(bs0, bs) { - d.blist.put(bs0) - } - } - d.onerror(fnerr) + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) } -func (d *Decoder) kErr(f *codecFnInfo, rv reflect.Value) { - d.errorf("no decoding function defined for kind %v", rv.Kind()) +func (d *decoder[T]) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + // halt.errorStr2("no decoding function defined for kind: ", rv.Kind().String()) } -func (d *Decoder) raw(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) raw(_ *decFnInfo, rv reflect.Value) { rvSetBytes(rv, d.rawBytes()) } -func (d *Decoder) kString(f *codecFnInfo, rv reflect.Value) { - rvSetString(rv, d.stringZC(d.d.DecodeStringAsBytes())) +func (d *decoder[T]) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) } -func (d *Decoder) kBool(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kBool(_ *decFnInfo, rv reflect.Value) { rvSetBool(rv, d.d.DecodeBool()) } -func (d *Decoder) kTime(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kTime(_ *decFnInfo, rv reflect.Value) { rvSetTime(rv, d.d.DecodeTime()) } -func (d *Decoder) kFloat32(f *codecFnInfo, rv reflect.Value) { - rvSetFloat32(rv, d.decodeFloat32()) +func (d *decoder[T]) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) } -func (d *Decoder) kFloat64(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kFloat64(_ *decFnInfo, rv reflect.Value) { rvSetFloat64(rv, d.d.DecodeFloat64()) } -func (d *Decoder) kComplex64(f *codecFnInfo, rv reflect.Value) { - rvSetComplex64(rv, complex(d.decodeFloat32(), 0)) +func (d *decoder[T]) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) } -func (d *Decoder) kComplex128(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kComplex128(_ *decFnInfo, rv reflect.Value) { rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) } -func (d *Decoder) kInt(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInt(_ *decFnInfo, rv reflect.Value) { rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) } -func (d *Decoder) kInt8(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInt8(_ *decFnInfo, rv reflect.Value) { rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) } -func (d *Decoder) kInt16(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInt16(_ *decFnInfo, rv reflect.Value) { rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) } -func (d *Decoder) kInt32(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInt32(_ *decFnInfo, rv reflect.Value) { rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) } -func (d *Decoder) kInt64(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInt64(_ *decFnInfo, rv reflect.Value) { rvSetInt64(rv, d.d.DecodeInt64()) } -func (d *Decoder) kUint(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUint(_ *decFnInfo, rv reflect.Value) { rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) } -func (d *Decoder) kUintptr(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUintptr(_ *decFnInfo, rv reflect.Value) { rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) } -func (d *Decoder) kUint8(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUint8(_ *decFnInfo, rv reflect.Value) { rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) } -func (d *Decoder) kUint16(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUint16(_ *decFnInfo, rv reflect.Value) { rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) } -func (d *Decoder) kUint32(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUint32(_ *decFnInfo, rv reflect.Value) { rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) } -func (d *Decoder) kUint64(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kUint64(_ *decFnInfo, rv reflect.Value) { rvSetUint64(rv, d.d.DecodeUint64()) } -func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { +func (d *decoder[T]) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { // nil interface: // use some hieristics to decode it appropriately // based on the detected next value in the stream. @@ -486,8 +178,12 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { // // Consequently, we should relax this. Put it behind a const flag for now. if decFailNonEmptyIntf && f.ti.numMeth > 0 { - d.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) } + + // We generally make a pointer to the container here, and pass along, + // so that they will be initialized later when we know the length of the collection. + switch n.v { case valueTypeMap: mtid := d.mtid @@ -511,6 +207,9 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { d.decode(rv2i(rvn)) rvn = rvn.Elem() } else { + // // made map is fully initialized for direct modification. + // // There's no need to make a pointer to it first. + // rvn = makeMapReflect(d.h.MapType, 0) rvn = rvZeroAddrK(d.h.MapType, reflect.Map) d.decodeValue(rvn, nil) } @@ -527,7 +226,7 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) d.decodeValue(rvn, nil) } - if reflectArrayOfSupported && d.h.PreferArrayOverSlice { + if d.h.PreferArrayOverSlice { rvn = rvGetArray4Slice(rvn) } case valueTypeExt: @@ -535,20 +234,18 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { bfn := d.h.getExtForTag(tag) var re = RawExt{Tag: tag} if bytes == nil { - // it is one of the InterfaceExt ones: json and cbor. - // most likely cbor, as json decoding never reveals valueTypeExt (no tagging support) + // one of the InterfaceExt ones: json and cbor. + // (likely cbor, as json has no tagging support and won't reveal valueTypeExt) if bfn == nil { d.decode(&re.Value) rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) } else { - if bfn.ext == SelfExt { - rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) - d.decodeValue(rvn, d.h.fnNoExt(bfn.rt)) - } else { - rvn = reflect.New(bfn.rt) - d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) - rvn = rvn.Elem() - } + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() } } else { // one of the BytesExt ones: binc, msgpack, simple @@ -558,7 +255,7 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { } else { rvn = reflect.New(bfn.rt) if bfn.ext == SelfExt { - d.sideDecode(rv2i(rvn), bfn.rt, bytes) + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) } else { bfn.ext.ReadExt(rv2i(rvn), bytes) } @@ -589,12 +286,12 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) { case valueTypeTime: rvn = n.rt() default: - halt.errorf("kInterfaceNaked: unexpected valueType: %d", n.v) + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) } return } -func (d *Decoder) kInterface(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kInterface(f *decFnInfo, rv reflect.Value) { // Note: A consequence of how kInterface works, is that // if an interface already contains something, we try // to decode into what was there before. @@ -653,30 +350,78 @@ func (d *Decoder) kInterface(f *codecFnInfo, rv reflect.Value) { rvSetIntf(rv, rvn) } -func decStructFieldKeyNotString(dd decDriver, keyType valueType, b *[decScratchByteArrayLen]byte) (rvkencname []byte) { - if keyType == valueTypeInt { - rvkencname = strconv.AppendInt(b[:0], dd.DecodeInt64(), 10) - } else if keyType == valueTypeUint { - rvkencname = strconv.AppendUint(b[:0], dd.DecodeUint64(), 10) - } else if keyType == valueTypeFloat { - rvkencname = strconv.AppendFloat(b[:0], dd.DecodeFloat64(), 'f', -1, 64) +func (d *decoder[T]) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) } else { - halt.errorf("invalid struct key type: %v", keyType) + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) } - return } -func (d *Decoder) kStructField(si *structFieldInfo, rv reflect.Value) { - if d.d.TryNil() { - if rv = si.path.field(rv); rv.IsValid() { - decSetNonNilRV2Zero(rv) +func (d *decoder[T]) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return } - return + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + // Not much gain from doing it two ways for array (used less frequently than structs). + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + // iterate all the items in the stream. + // - if mapped elem-wise to a field, handle it + // - if more stream items than can be mapped, error it + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) } - d.decodeValueNoCheckNil(si.path.fieldAlloc(rv), nil) } -func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once ctyp := d.d.ContainerType() ti := f.ti var mf MissingFielder @@ -693,18 +438,24 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) { } hasLen := containerLen >= 0 var name2 []byte - if mf != nil { - var namearr2 [16]byte - name2 = namearr2[:0] - } var rvkencname []byte + tkt := ti.keyType for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - if ti.keyType == valueTypeString { - rvkencname = d.d.DecodeStringAsBytes() + d.mapElemKey(j == 0) + // use if-else since <8 branches and we need good branch prediction for string + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) } else { - rvkencname = decStructFieldKeyNotString(d.d, ti.keyType, &d.b) + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) } + d.mapElemValue() if si := ti.siForEncName(rvkencname); si != nil { d.kStructField(si, rv) @@ -714,7 +465,7 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) { var f interface{} d.decode(&f) if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { - d.errorf("no matching struct field when decoding stream map with key: %s ", stringView(name2)) + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) } } else { d.structFieldNotFound(-1, stringView(rvkencname)) @@ -736,7 +487,7 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) { // if mapped elem-wise to a field, handle it // if more stream items than can be mapped, error it for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.arrayElem() + d.arrayElem(j == 0) if j < len(tisfi) { d.kStructField(tisfi[j], rv) } else { @@ -746,11 +497,12 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) { d.arrayEnd() } else { - d.onerror(errNeedMapOrArrayDecodeToStruct) + halt.onerror(errNeedMapOrArrayDecodeToStruct) } } -func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once // A slice can be set from a map or array in stream. // This way, the order can be kept (as order is lost with map). @@ -763,26 +515,31 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { if ctyp == valueTypeBytes || ctyp == valueTypeString { // you can only decode bytes or string in the stream into a slice or array of bytes if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { - d.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) } rvbs := rvGetBytes(rv) - if !rvCanset { - // not addressable byte slice, so do not decode into it past the length - rvbs = rvbs[:len(rvbs):len(rvbs)] - } - bs2 := d.decodeBytesInto(rvbs) - // if !(len(bs2) == len(rvbs) && byteSliceSameData(rvbs, bs2)) { - if !(len(bs2) > 0 && len(bs2) == len(rvbs) && &bs2[0] == &rvbs[0]) { - if rvCanset { + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { rvSetBytes(rv, bs2) - } else if len(rvbs) > 0 && len(bs2) > 0 { - copy(rvbs, bs2) } + } else { + // not addressable byte slice, so do not decode into it past the length + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) } return } - slh, containerLenS := d.decSliceHelperStart() // only expects valueType(Array|Map) - never Nil + // only expects valueType(Array|Map) - never Nil + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } // an array can never return a nil slice. so no need to check f.array here. if containerLenS == 0 { @@ -793,7 +550,11 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { rvSetSliceLen(rv, 0) } } - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } return } @@ -804,7 +565,7 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { rtelem = rtelem.Elem() } - var fn *codecFn + var fn *decFn[T] var rvChanged bool @@ -813,11 +574,12 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { rvlen := rvLenSlice(rv) rvcap := rvCapSlice(rv) - hasLen := containerLenS > 0 + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 if hasLen { if containerLenS > rvcap { oldRvlenGtZero := rvlen > 0 - rvlen1 := decInferLen(containerLenS, d.h.MaxInitLen, int(ti.elemsize)) + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) if rvlen1 == rvlen { } else if rvlen1 <= rvcap { if rvCanset { @@ -830,7 +592,7 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { rvcap = rvlen rvChanged = !rvCanset } else { // rvlen1 > rvcap && !canSet - d.errorf("cannot decode into non-settable slice") + halt.errorStr("cannot decode into non-settable slice") } if rvChanged && oldRvlenGtZero && rtelem0Mut { rvCopySlice(rv, rv0, rtelem) // only copy up to length NOT cap i.e. rv0.Slice(0, rvcap) @@ -846,27 +608,48 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { // consider creating new element once, and just decoding into it. var elemReset = d.h.SliceElementReset - var j int + // when decoding into slices, there may be more values in the stream than the slice length. + // decodeValue handles this better when coming from an addressable value (known to reflect.Value). + // Consequently, builtin handling skips slices. + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + var j int for ; d.containerNext(j, containerLenS, hasLen); j++ { if j == 0 { if rvIsNil(rv) { // means hasLen = false if rvCanset { - rvlen = decInferLen(containerLenS, d.h.MaxInitLen, int(ti.elemsize)) + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) rvcap = rvlen rvChanged = !rvCanset } else { - d.errorf("cannot decode into non-settable slice") + halt.errorStr("cannot decode into non-settable slice") } } if fn == nil { - fn = d.h.fn(rtelem) + fn = d.fn(rtelem) } } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + // if indefinite, etc, then expand the slice if necessary if j >= rvlen { - slh.ElemContainerState(j) // expand the slice up to the cap. // Note that we did, so we have to reset it later. @@ -878,24 +661,41 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { } else if rvChanged { rv = rvSlice(rv, rvlen) } else { - d.onerror(errExpandSliceCannotChange) + halt.onerror(errExpandSliceCannotChange) } } else { if !(rvCanset || rvChanged) { - d.onerror(errExpandSliceCannotChange) + halt.onerror(errExpandSliceCannotChange) } rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + // note: 1 requested is hint/minimum - new capacity with more space rvlen = rvcap rvChanged = !rvCanset } - } else { - slh.ElemContainerState(j) } - rv9 = rvSliceIndex(rv, j, f.ti) + + // we check if we can make this an addr, and do builtin + // e.g. if []ints, then fastpath should handle it? + // but if not, we should treat it as each element is *int, and decode into it. + + rv9 = rvArrayIndex(rv, j, f.ti, true) if elemReset { rvSetZero(rv9) } - d.decodeValue(rv9, fn) + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) // d.decode(rv2i(rv9.Addr())) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } } if j < rvlen { if rvCanset { @@ -911,92 +711,139 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) { rvChanged = true } } - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } if rvChanged { // infers rvCanset=true, so it can be reset rvSetDirect(rv0, rv) } } -func (d *Decoder) kArray(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once // An array can be set from a map or array in stream. - + ti := f.ti ctyp := d.d.ContainerType() if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { // you can only decode bytes or string in the stream into a slice or array of bytes - if f.ti.elemkind != uint8(reflect.Uint8) { - d.errorf("bytes/string in stream can decode into array of bytes, but not %v", f.ti.rt) + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) } rvbs := rvGetArrayBytes(rv, nil) - bs2 := d.decodeBytesInto(rvbs) - if !byteSliceSameData(rvbs, bs2) && len(rvbs) > 0 && len(bs2) > 0 { - copy(rvbs, bs2) - } + d.decodeBytesInto(rvbs, true) return } - slh, containerLenS := d.decSliceHelperStart() // only expects valueType(Array|Map) - never Nil + // only expects valueType(Array|Map) - never Nil + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } // an array can never return a nil slice. so no need to check f.array here. if containerLenS == 0 { - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } return } - rtelem := f.ti.elem - for k := reflect.Kind(f.ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { rtelem = rtelem.Elem() } - var fn *codecFn - var rv9 reflect.Value rvlen := rv.Len() // same as cap - hasLen := containerLenS > 0 + hasLen := containerLenS >= 0 if hasLen && containerLenS > rvlen { - d.errorf("cannot decode into array with length: %v, less than container length: %v", rvlen, containerLenS) + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) } // consider creating new element once, and just decoding into it. var elemReset = d.h.SliceElementReset + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFn[T] + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } // note that you cannot expand the array if indefinite and we go past array length if j >= rvlen { - slh.arrayCannotExpand(hasLen, rvlen, j, containerLenS) - return + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue } - slh.ElemContainerState(j) - rv9 = rvArrayIndex(rv, j, f.ti) + rv9 = rvArrayIndex(rv, j, f.ti, false) if elemReset { rvSetZero(rv9) } - - if fn == nil { - fn = d.h.fn(rtelem) + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) // d.decode(rv2i(rv9.Addr())) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) } - d.decodeValue(rv9, fn) } - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } } -func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once // A slice can be set from a map or array in stream. // This way, the order can be kept (as order is lost with map). ti := f.ti if ti.chandir&uint8(reflect.SendDir) == 0 { - d.errorf("receive-only channel cannot be decoded") + halt.errorStr("receive-only channel cannot be decoded") } ctyp := d.d.ContainerType() if ctyp == valueTypeBytes || ctyp == valueTypeString { // you can only decode bytes or string in the stream into a slice or array of bytes if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { - d.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) } - bs2 := d.d.DecodeBytes(nil) + bs2, _ := d.d.DecodeBytes() irv := rv2i(rv) ch, ok := irv.(chan<- byte) if !ok { @@ -1010,15 +857,27 @@ func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { var rvCanset = rv.CanSet() - // only expects valueType(Array|Map - nil handled above) - slh, containerLenS := d.decSliceHelperStart() + // only expects valueType(Array|Map) - never Nil + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } // an array can never return a nil slice. so no need to check f.array here. if containerLenS == 0 { if rvCanset && rvIsNil(rv) { rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) } - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } return } @@ -1029,20 +888,21 @@ func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { rtelem = rtelem.Elem() } - var fn *codecFn + var fn *decFn[T] var rvChanged bool var rv0 = rv var rv9 reflect.Value var rvlen int // = rv.Len() - hasLen := containerLenS > 0 + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { if j == 0 { if rvIsNil(rv) { if hasLen { - rvlen = decInferLen(containerLenS, d.h.MaxInitLen, int(ti.elemsize)) + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) } else { rvlen = decDefChanCap } @@ -1050,17 +910,25 @@ func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { rv = reflect.MakeChan(ti.rt, rvlen) rvChanged = true } else { - d.errorf("cannot decode into non-settable chan") + halt.errorStr("cannot decode into non-settable chan") } } if fn == nil { - fn = d.h.fn(rtelem) + fn = d.fn(rtelem) } } - slh.ElemContainerState(j) + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if rv9.IsValid() { rvSetZero(rv9) - } else if decUseTransient && useTransient { + } else if useTransient { rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) } else { rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) @@ -1070,7 +938,11 @@ func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { } rv.Send(rv9) } - slh.End() + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } if rvChanged { // infers rvCanset=true, so it can be reset rvSetDirect(rv0, rv) @@ -1078,11 +950,12 @@ func (d *Decoder) kChan(f *codecFnInfo, rv reflect.Value) { } -func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { +func (d *decoder[T]) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d // early asserts d, d.d are not nil once containerLen := d.mapStart(d.d.ReadMapStart()) ti := f.ti if rvIsNil(rv) { - rvlen := decInferLen(containerLen, d.h.MaxInitLen, int(ti.keysize+ti.elemsize)) + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) } @@ -1095,19 +968,21 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { ktypeId := rt2id(ktype) vtypeKind := reflect.Kind(ti.elemkind) ktypeKind := reflect.Kind(ti.keykind) - kfast := mapKeyFastKindFor(ktypeKind) - visindirect := mapStoresElemIndirect(uintptr(ti.elemsize)) - visref := refBitset.isset(ti.elemkind) + mparams := getMapReqParams(ti) + // kfast := mapKeyFastKindFor(ktypeKind) + // visindirect := mapStoresElemIndirect(uintptr(ti.elemsize)) + // visref := refBitset.isset(ti.elemkind) vtypePtr := vtypeKind == reflect.Ptr ktypePtr := ktypeKind == reflect.Ptr vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient - kTransient := decUseTransient && !ktypePtr && ti.tikey.flagCanTransient + // keys are transient iff values are transient first + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient var vtypeElem reflect.Type - var keyFn, valFn *codecFn + var keyFn, valFn *decFn[T] var ktypeLo, vtypeLo = ktype, vtype if ktypeKind == reflect.Ptr { @@ -1146,39 +1021,37 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { ktypeIsString := ktypeId == stringTypId ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 - hasLen := containerLen > 0 + var kstr2bs []byte + var kstr string - // kstrbs is used locally for the key bytes, so we can reduce allocation. - // When we read keys, we copy to this local bytes array, and use a stringView for lookup. - // We only convert it into a true string if we have to do a set on the map. + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState - // Since kstr2bs will usually escape to the heap, declaring a [64]byte array may be wasteful. - // It is only valuable if we are sure that it is declared on the stack. - // var kstrarr [64]byte // most keys are less than 32 bytes, and even more less than 64 - // var kstrbs = kstrarr[:0] - var kstrbs []byte - var kstr2bs []byte - var s string + // Use a possibly transient (map) value (and key), to reduce allocation - var callFnRvk bool + // when decoding into slices, there may be more values in the stream than the slice length. + // decodeValue handles this better when coming from an addressable value (known to reflect.Value). + // Consequently, builtin handling skips slices. - fnRvk2 := func() (s string) { - callFnRvk = false - if len(kstr2bs) < 2 { - return string(kstr2bs) - } - return d.mapKeyString(&callFnRvk, &kstrbs, &kstr2bs) + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin // && ti.elemkind != uint8(reflect.Slice) + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() } - - // Use a possibly transient (map) value (and key), to reduce allocation for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - callFnRvk = false + mapKeyStringSharesBytesBuf = false + kstr = "" if j == 0 { // if vtypekind is a scalar and thus value will be decoded using TransientAddrK, // then it is ok to use TransientAddr2K for the map key. - if decUseTransient && vTransient && kTransient { + if kTransient { rvk = d.perType.TransientAddr2K(ktype, ktypeKind) } else { rvk = rvZeroAddrK(ktype, ktypeKind) @@ -1187,17 +1060,17 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { rvkn = rvk } if !rvvMut { - if decUseTransient && vTransient { + if vTransient { rvvn = d.perType.TransientAddrK(vtype, vtypeKind) } else { rvvn = rvZeroAddrK(vtype, vtypeKind) } } if !ktypeIsString && keyFn == nil { - keyFn = d.h.fn(ktypeLo) + keyFn = d.fn(ktypeLo) } if valFn == nil { - valFn = d.h.fn(vtypeLo) + valFn = d.fn(vtypeLo) } } else if rvkMut { rvSetZero(rvk) @@ -1205,39 +1078,68 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { rvk = rvkn } - d.mapElemKey() - if ktypeIsString { - kstr2bs = d.d.DecodeStringAsBytes() - rvSetString(rvk, fnRvk2()) + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) } else { - d.decByteState = decByteStateNone - d.decodeValue(rvk, keyFn) + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } // special case if interface wrapping a byte slice if ktypeIsIntf { if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { kstr2bs = rvGetBytes(rvk2) - rvSetIntf(rvk, rv4istr(fnRvk2())) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) } // NOTE: consider failing early if map/slice/func } } + // TryNil will try to read from the stream and check if a nil marker. + // + // When using ioDecReader (specifically in bufio mode), this TryNil call could + // override part of the buffer used for the string key. + // + // To mitigate this, we do a special check for ioDecReader in bufio mode. + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { // ktypeIsIntf + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + d.mapElemValue() if d.d.TryNil() { - // since a map, we have to set zero value if needed - if !rvvz.IsValid() { - rvvz = rvZeroK(vtype, vtypeKind) - } - if callFnRvk { - s = d.string(kstr2bs) + if mapKeyStringSharesBytesBuf { if ktypeIsString { - rvSetString(rvk, s) + rvSetString(rvk, d.detach2Str(kstr2bs, att)) } else { // ktypeIsIntf - rvSetIntf(rvk, rv4istr(s)) + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) } } - mapSet(rv, rvk, rvvz, kfast, visindirect, visref) + // since a map, we have to set zero value if needed + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) continue } @@ -1252,7 +1154,7 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { } else if !doMapGet { goto NEW_RVV } else { - rvv = mapGet(rv, rvk, rvva, kfast, visindirect, visref) + rvv = mapGet(rv, rvk, rvva, mparams) if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { goto NEW_RVV } @@ -1272,7 +1174,7 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { rvv = rvvn default: // make addressable (so you can set the slice/array elements, etc) - if decUseTransient && vTransient { + if vTransient { rvvn = d.perType.TransientAddrK(vtype, vtypeKind) } else { rvvn = rvZeroAddrK(vtype, vtypeKind) @@ -1286,146 +1188,75 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) { NEW_RVV: if vtypePtr { rvv = reflect.New(vtypeElem) // non-nil in stream, so allocate value - } else if decUseTransient && vTransient { + } else if vTransient { rvv = d.perType.TransientAddrK(vtype, vtypeKind) } else { rvv = rvZeroAddrK(vtype, vtypeKind) } DECODE_VALUE_NO_CHECK_NIL: - d.decodeValueNoCheckNil(rvv, valFn) - - if doMapSet { - if callFnRvk { - s = d.string(kstr2bs) - if ktypeIsString { - rvSetString(rvk, s) - } else { // ktypeIsIntf - rvSetIntf(rvk, rv4istr(s)) + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { // ktypeIsIntf + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) } - mapSet(rv, rvk, rvv, kfast, visindirect, visref) + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) } } d.mapEnd() } -// Decoder reads and decodes an object from an input stream in a supported format. -// -// Decoder is NOT safe for concurrent use i.e. a Decoder cannot be used -// concurrently in multiple goroutines. -// -// However, as Decoder could be allocation heavy to initialize, a Reset method is provided -// so its state can be reused to decode new input streams repeatedly. -// This is the idiomatic way to use. -type Decoder struct { - panicHdl - - d decDriver - - // cache the mapTypeId and sliceTypeId for faster comparisons - mtid uintptr - stid uintptr - - h *BasicHandle - - blist bytesFreelist - - // ---- cpu cache line boundary? - decRd - - // ---- cpu cache line boundary? - n fauxUnion - - hh Handle - err error - - perType decPerType - - // used for interning strings - is internerMap - - // ---- cpu cache line boundary? - // ---- writable fields during execution --- *try* to keep in sep cache line - maxdepth int16 - depth int16 - - // Extensions can call Decode() within a current Decode() call. - // We need to know when the top level Decode() call returns, - // so we can decide whether to Release() or not. - calls uint16 // what depth in mustDecode are we in now. - - c containerState - - decByteState - - // b is an always-available scratch buffer used by Decoder and decDrivers. - // By being always-available, it can be used for one-off things without - // having to get from freelist, use, and return back to freelist. - b [decScratchByteArrayLen]byte -} - -// NewDecoder returns a Decoder for decoding a stream of bytes from an io.Reader. -// -// For efficiency, Users are encouraged to configure ReaderBufferSize on the handle -// OR pass in a memory buffered reader (eg bufio.Reader, bytes.Buffer). -func NewDecoder(r io.Reader, h Handle) *Decoder { - d := h.newDecDriver().decoder() - if r != nil { - d.Reset(r) - } - return d -} +func (d *decoder[T]) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + // d.zeroCopy = d.h.ZeroCopy + // d.be = h.isBinary() + d.err = errDecoderNotInitialized -// NewDecoderBytes returns a Decoder which efficiently decodes directly -// from a byte slice with zero copying. -func NewDecoderBytes(in []byte, h Handle) *Decoder { - d := h.newDecDriver().decoder() - if in != nil { - d.ResetBytes(in) + if d.h.InternString && d.is == nil { + d.is.init() } - return d -} - -// NewDecoderString returns a Decoder which efficiently decodes directly -// from a string with zero copying. -// -// It is a convenience function that calls NewDecoderBytes with a -// []byte view into the string. -// -// This can be an efficient zero-copy if using default mode i.e. without codec.safe tag. -func NewDecoderString(s string, h Handle) *Decoder { - return NewDecoderBytes(bytesView(s), h) -} -func (d *Decoder) HandleName() string { - return d.hh.Name() -} + // d.fp = fastpathDList[T]() + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDs[T]) // should set js, cbor, bytes, etc -func (d *Decoder) r() *decRd { - return &d.decRd -} + // d.cbreak = d.js || d.cbor -func (d *Decoder) init(h Handle) { - initHandle(h) - d.cbreak = d.js || d.cbor - d.bytes = true - d.err = errDecoderNotInitialized - d.h = h.getBasicHandle() - d.hh = h - d.be = h.isBinary() - if d.h.InternString && d.is == nil { - d.is.init() + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO } + + d.reset() // NOTE: do not initialize d.n here. It is lazily initialized in d.naked() } -func (d *Decoder) resetCommon() { +func (d *decoder[T]) reset() { d.d.reset() d.err = nil d.c = 0 - d.decByteState = decByteStateNone d.depth = 0 d.calls = 0 // reset all things which were cached from the Handle, but could change @@ -1439,39 +1270,42 @@ func (d *Decoder) resetCommon() { d.str = false if d.h.MapType != nil { d.mtid = rt2id(d.h.MapType) - d.mtr = fastpathAvIndex(d.mtid) != -1 + _, d.mtr = fastpathAvIndex(d.mtid) } if d.h.SliceType != nil { d.stid = rt2id(d.h.SliceType) - d.str = fastpathAvIndex(d.stid) != -1 + _, d.str = fastpathAvIndex(d.stid) } } // Reset the Decoder with a new Reader to decode from, // clearing all state from last run(s). -func (d *Decoder) Reset(r io.Reader) { +func (d *decoder[T]) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() if r == nil { r = &eofReader } - d.bytes = false - if d.ri == nil { - d.ri = new(ioDecReader) - } - d.ri.reset(r, d.h.ReaderBufferSize, &d.blist) - d.decReader = d.ri - d.resetCommon() + d.d.resetInIO(r) } // ResetBytes resets the Decoder with a new []byte to decode from, // clearing all state from last run(s). -func (d *Decoder) ResetBytes(in []byte) { +func (d *decoder[T]) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoder[T]) resetBytes(in []byte) { + d.reset() if in == nil { - in = []byte{} + in = zeroByteSlice } - d.bytes = true - d.decReader = &d.rb - d.rb.reset(in) - d.resetCommon() + d.d.resetInBytes(in) } // ResetString resets the Decoder with a new string to decode from, @@ -1481,14 +1315,10 @@ func (d *Decoder) ResetBytes(in []byte) { // []byte view into the string. // // This can be an efficient zero-copy if using default mode i.e. without codec.safe tag. -func (d *Decoder) ResetString(s string) { +func (d *decoder[T]) ResetString(s string) { d.ResetBytes(bytesView(s)) } -func (d *Decoder) naked() *fauxUnion { - return &d.n -} - // Decode decodes the stream from reader and stores the result in the // value pointed to by v. v cannot be a nil pointer. v can also be // a reflect.Value of a pointer. @@ -1552,27 +1382,33 @@ func (d *Decoder) naked() *fauxUnion { // // Note: we allow nil values in the stream anywhere except for map keys. // A nil value in the encoded stream where a map key is expected is treated as an error. -func (d *Decoder) Decode(v interface{}) (err error) { +// +// Note that an error from a Decode call will make the Decoder unusable moving forward. +// This is because the state of the Decoder, it's input stream, etc are no longer stable. +// Any subsequent calls to Decode will trigger the same error. +func (d *decoder[T]) Decode(v interface{}) (err error) { // tried to use closure, as runtime optimizes defer with no params. // This seemed to be causing weird issues (like circular reference found, unexpected panic, etc). // Also, see https://github.com/golang/go/issues/14939#issuecomment-417836139 - if !debugging { - defer func() { - if x := recover(); x != nil { - panicValToErr(d, x, &d.err) - err = d.err - } - }() - } - - d.MustDecode(v) + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) return } // MustDecode is like Decode, but panics if unable to Decode. // // Note: This provides insight to the code location that triggered the error. -func (d *Decoder) MustDecode(v interface{}) { +// +// Note that an error from a Decode call will make the Decoder unusable moving forward. +// This is because the state of the Decoder, it's input stream, etc are no longer stable. +// Any subsequent calls to Decode will trigger the same error. +func (d *decoder[T]) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoder[T]) mustDecode(v interface{}) { halt.onerror(d.err) if d.hh == nil { halt.onerror(errNoFormatHandle) @@ -1588,139 +1424,31 @@ func (d *Decoder) MustDecode(v interface{}) { // // Deprecated: Pooled resources are not used with a Decoder. // This method is kept for compatibility reasons only. -func (d *Decoder) Release() { -} - -func (d *Decoder) swallow() { - d.d.nextValueBytes(nil) -} - -func (d *Decoder) swallowErr() (err error) { - if !debugging { - defer func() { - if x := recover(); x != nil { - panicValToErr(d, x, &err) - } - }() - } - d.swallow() - return -} - -func setZero(iv interface{}) { - if iv == nil { - return - } - rv, ok := isNil(iv) - if ok { - return - } - // var canDecode bool - switch v := iv.(type) { - case *string: - *v = "" - case *bool: - *v = false - case *int: - *v = 0 - case *int8: - *v = 0 - case *int16: - *v = 0 - case *int32: - *v = 0 - case *int64: - *v = 0 - case *uint: - *v = 0 - case *uint8: - *v = 0 - case *uint16: - *v = 0 - case *uint32: - *v = 0 - case *uint64: - *v = 0 - case *float32: - *v = 0 - case *float64: - *v = 0 - case *complex64: - *v = 0 - case *complex128: - *v = 0 - case *[]byte: - *v = nil - case *Raw: - *v = nil - case *time.Time: - *v = time.Time{} - case reflect.Value: - decSetNonNilRV2Zero(v) - default: - if !fastpathDecodeSetZeroTypeSwitch(iv) { - decSetNonNilRV2Zero(rv) - } - } -} - -// decSetNonNilRV2Zero will set the non-nil value to its zero value. -func decSetNonNilRV2Zero(v reflect.Value) { - // If not decodeable (settable), we do not touch it. - // We considered empty'ing it if not decodeable e.g. - // - if chan, drain it - // - if map, clear it - // - if slice or array, zero all elements up to len - // - // However, we decided instead that we either will set the - // whole value to the zero value, or leave AS IS. - - k := v.Kind() - if k == reflect.Interface { - decSetNonNilRV2Zero4Intf(v) - } else if k == reflect.Ptr { - decSetNonNilRV2Zero4Ptr(v) - } else if v.CanSet() { - rvSetDirectZero(v) - } -} +func (d *decoder[T]) Release() {} -func decSetNonNilRV2Zero4Ptr(v reflect.Value) { - ve := v.Elem() - if ve.CanSet() { - rvSetZero(ve) // we can have a pointer to an interface - } else if v.CanSet() { - rvSetZero(v) - } +func (d *decoder[T]) swallow() { + d.d.nextValueBytes() } -func decSetNonNilRV2Zero4Intf(v reflect.Value) { - ve := v.Elem() - if ve.CanSet() { - rvSetDirectZero(ve) // interfaces always have element as a non-interface - } else if v.CanSet() { - rvSetZero(v) - } +func (d *decoder[T]) nextValueBytes() []byte { + return d.d.nextValueBytes() } -func (d *Decoder) decode(iv interface{}) { +func (d *decoder[T]) decode(iv interface{}) { + _ = d.d // early asserts d, d.d are not nil once // a switch with only concrete types can be optimized. // consequently, we deal with nil and interfaces outside the switch. - if iv == nil { - d.onerror(errCannotDecodeIntoNil) + rv, ok := isNil(iv, true) // handle nil pointers also + if ok { + halt.onerror(errCannotDecodeIntoNil) } switch v := iv.(type) { // case nil: // case Selfer: - case reflect.Value: - if x, _ := isDecodeable(v); !x { - d.haltAsNotDecodeable(v) - } - d.decodeValue(v, nil) case *string: - *v = d.stringZC(d.d.DecodeStringAsBytes()) + *v = d.detach2Str(d.d.DecodeStringAsBytes()) case *bool: *v = d.d.DecodeBool() case *int: @@ -1743,22 +1471,21 @@ func (d *Decoder) decode(iv interface{}) { *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) case *uint64: *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) case *float32: - *v = d.decodeFloat32() + *v = d.d.DecodeFloat32() case *float64: *v = d.d.DecodeFloat64() case *complex64: - *v = complex(d.decodeFloat32(), 0) + *v = complex(d.d.DecodeFloat32(), 0) case *complex128: *v = complex(d.d.DecodeFloat64(), 0) case *[]byte: - *v = d.decodeBytesInto(*v) + *v, _ = d.decodeBytesInto(*v, false) case []byte: // not addressable byte slice, so do not decode into it past the length - b := d.decodeBytesInto(v[:len(v):len(v)]) - if !(len(b) > 0 && len(b) == len(v) && &b[0] == &v[0]) { // not same slice - copy(v, b) - } + d.decodeBytesInto(v[:len(v):len(v)], true) case *time.Time: *v = d.d.DecodeTime() case *Raw: @@ -1767,14 +1494,22 @@ func (d *Decoder) decode(iv interface{}) { case *interface{}: d.decodeValue(rv4iptr(v), nil) + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + default: // we can't check non-predefined types, as they might be a Selfer or extension. - if skipFastpathTypeSwitchInDirectCall || !fastpathDecodeTypeSwitch(iv, d) { - v := reflect.ValueOf(iv) - if x, _ := isDecodeable(v); !x { - d.haltAsNotDecodeable(v) + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) } - d.decodeValue(v, nil) + d.decodeValue(rv, nil) } } } @@ -1787,15 +1522,15 @@ func (d *Decoder) decode(iv interface{}) { // // Note that decodeValue will handle nil in the stream early, so that the // subsequent calls i.e. kXXX methods, etc do not have to handle it themselves. -func (d *Decoder) decodeValue(rv reflect.Value, fn *codecFn) { +func (d *decoder[T]) decodeValue(rv reflect.Value, fn *decFn[T]) { if d.d.TryNil() { decSetNonNilRV2Zero(rv) - return + } else { + d.decodeValueNoCheckNil(rv, fn) } - d.decodeValueNoCheckNil(rv, fn) } -func (d *Decoder) decodeValueNoCheckNil(rv reflect.Value, fn *codecFn) { +func (d *decoder[T]) decodeValueNoCheckNil(rv reflect.Value, fn *decFn[T]) { // If stream is not containing a nil value, then we can deref to the base // non-pointer value, and decode into that. var rvp reflect.Value @@ -1812,7 +1547,7 @@ PTR: } if fn == nil { - fn = d.h.fn(rv.Type()) + fn = d.fn(rv.Type()) } if fn.i.addrD { if rvpValid { @@ -1820,83 +1555,68 @@ PTR: } else if rv.CanAddr() { rv = rvAddr(rv, fn.i.ti.ptr) } else if fn.i.addrDf { - d.errorf("cannot decode into a non-pointer value") + halt.errorStr("cannot decode into a non-pointer value") } } fn.fd(d, &fn.i, rv) } -func (d *Decoder) structFieldNotFound(index int, rvkencname string) { - // Note: rvkencname is used only if there is an error, to pass into d.errorf. +func (d *decoder[T]) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoder[T]) structFieldNotFound(index int, rvkencname string) { + // Note: rvkencname is used only if there is an error, to pass into halt.errorf. // Consequently, it is ok to pass in a stringView // Since rvkencname may be a stringView, do NOT pass it to another function. if d.h.ErrorIfNoField { if index >= 0 { - d.errorf("no matching struct field found when decoding stream array at index %v", index) + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) } else if rvkencname != "" { - d.errorf("no matching struct field found when decoding stream map with key " + rvkencname) + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) } } d.swallow() } -func (d *Decoder) arrayCannotExpand(sliceLen, streamLen int) { - if d.h.ErrorIfNoArrayExpand { - d.errorf("cannot expand array len during decode from %v to %v", sliceLen, streamLen) - } -} - -func (d *Decoder) haltAsNotDecodeable(rv reflect.Value) { - if !rv.IsValid() { - d.onerror(errCannotDecodeIntoNil) - } - // check if an interface can be retrieved, before grabbing an interface - if !rv.CanInterface() { - d.errorf("cannot decode into a value without an interface: %v", rv) - } - d.errorf("cannot decode into value of kind: %v, %#v", rv.Kind(), rv2i(rv)) -} - -func (d *Decoder) depthIncr() { - d.depth++ - if d.depth >= d.maxdepth { - d.onerror(errMaxDepthExceeded) - } -} - -func (d *Decoder) depthDecr() { - d.depth-- -} - -// Possibly get an interned version of a string, iff InternString=true and decoding a map key. -// -// This should mostly be used for map keys, where the key type is string. -// This is because keys of a map/struct are typically reused across many objects. -func (d *Decoder) string(v []byte) (s string) { - if d.is == nil || d.c != containerMapKey || len(v) < 2 || len(v) > internMaxStrLen { - return string(v) - } - return d.is.string(v) -} - -func (d *Decoder) zerocopy() bool { - return d.bytes && d.h.ZeroCopy -} - // decodeBytesInto is a convenience delegate function to decDriver.DecodeBytes. // It ensures that `in` is not a nil byte, before calling decDriver.DecodeBytes, // as decDriver.DecodeBytes treats a nil as a hint to use its internal scratch buffer. -func (d *Decoder) decodeBytesInto(in []byte) (v []byte) { - if in == nil { - in = []byte{} +func (d *decoder[T]) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + // no need to detach (since mustFit=false) + // including v has no capacity (covers v == nil and []byte{}) + return } - return d.d.DecodeBytes(in) + if len(v) == 0 { + v = zeroByteSlice // cannot be re-sliced/appended to + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return } -func (d *Decoder) rawBytes() (v []byte) { +func (d *decoder[T]) rawBytes() (v []byte) { // ensure that this is not a view into the bytes // i.e. if necessary, make new copy always. - v = d.d.nextValueBytes([]byte{}) + v = d.d.nextValueBytes() if d.bytes && !d.h.ZeroCopy { vv := make([]byte, len(v)) copy(vv, v) // using copy here triggers make+copy optimization eliding memclr @@ -1905,24 +1625,13 @@ func (d *Decoder) rawBytes() (v []byte) { return } -func (d *Decoder) wrapErr(v error, err *error) { - *err = wrapCodecErr(v, d.hh.Name(), d.NumBytesRead(), false) +func (d *decoder[T]) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) } // NumBytesRead returns the number of bytes read -func (d *Decoder) NumBytesRead() int { - return int(d.r().numread()) -} - -// decodeFloat32 will delegate to an appropriate DecodeFloat32 implementation (if exists), -// else if will call DecodeFloat64 and ensure the value doesn't overflow. -// -// Note that we return float64 to reduce unnecessary conversions -func (d *Decoder) decodeFloat32() float32 { - if d.js { - return d.jsondriver().DecodeFloat32() // custom implementation for 32-bit - } - return float32(chkOvf.Float32V(d.d.DecodeFloat64())) +func (d *decoder[T]) NumBytesRead() int { + return d.d.NumBytesRead() } // ---- container tracking @@ -1938,438 +1647,315 @@ func (d *Decoder) decodeFloat32() float32 { // - Read(Map|Array)Elem(Kay|Value) is only supported by json. // Honor these in the code, to reduce the number of interface calls (even if empty). -func (d *Decoder) checkBreak() (v bool) { - // MARKER: jsonDecDriver.CheckBreak() cannot be inlined (over budget inlining cost). - // Consequently, there's no benefit in incurring the cost of this wrapping function. - // It is faster to just call the interface method directly. - - // if d.js { - // return d.jsondriver().CheckBreak() - // } - // if d.cbor { - // return d.cbordriver().CheckBreak() - // } - - if d.cbreak { - v = d.d.CheckBreak() - } - return -} - -func (d *Decoder) containerNext(j, containerLen int, hasLen bool) bool { - // MARKER: keep in sync with gen-helper.go.tmpl - - // return (hasLen && j < containerLen) || !(hasLen || slh.d.checkBreak()) +func (d *decoder[T]) containerNext(j, containerLen int, hasLen bool) bool { + // return (hasLen && (j < containerLen)) || (!hasLen && !d.d.CheckBreak()) if hasLen { return j < containerLen } - return !d.checkBreak() + return !d.d.CheckBreak() } -func (d *Decoder) mapStart(v int) int { - if v != containerLenNil { - d.depthIncr() - d.c = containerMapStart - } - return v -} - -func (d *Decoder) mapElemKey() { - if d.js { - d.jsondriver().ReadMapElemKey() - } +func (d *decoder[T]) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) d.c = containerMapKey } -func (d *Decoder) mapElemValue() { - if d.js { - d.jsondriver().ReadMapElemValue() - } +func (d *decoder[T]) mapElemValue() { + d.d.ReadMapElemValue() d.c = containerMapValue } -func (d *Decoder) mapEnd() { - if d.js { - d.jsondriver().ReadMapEnd() - } - // d.d.ReadMapEnd() +func (d *decoder[T]) mapEnd() { + d.d.ReadMapEnd() d.depthDecr() d.c = 0 } -func (d *Decoder) arrayStart(v int) int { - if v != containerLenNil { - d.depthIncr() - d.c = containerArrayStart - } - return v -} - -func (d *Decoder) arrayElem() { - if d.js { - d.jsondriver().ReadArrayElem() - } +func (d *decoder[T]) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) d.c = containerArrayElem } -func (d *Decoder) arrayEnd() { - if d.js { - d.jsondriver().ReadArrayEnd() - } - // d.d.ReadArrayEnd() +func (d *decoder[T]) arrayEnd() { + d.d.ReadArrayEnd() d.depthDecr() d.c = 0 } -func (d *Decoder) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { - // var v interface{} = ext.ConvertExt(rv) - // d.d.decode(&v) - // ext.UpdateExt(rv, v) - - // assume v is a pointer: - // - if struct|array, pass as is to ConvertExt - // - else make it non-addressable and pass to ConvertExt - // - make return value from ConvertExt addressable - // - decode into it - // - return the interface for passing into UpdateExt. - // - interface should be a pointer if struct|array, else a value - - var s interface{} - rv := reflect.ValueOf(v) - rv2 := rv.Elem() - rvk := rv2.Kind() - if rvk == reflect.Struct || rvk == reflect.Array { - s = ext.ConvertExt(v) - } else { - s = ext.ConvertExt(rv2i(rv2)) - } - rv = reflect.ValueOf(s) - - // We cannot use isDecodeable here, as the value converted may be nil, - // or it may not be nil but is not addressable and thus we cannot extend it, etc. - // Instead, we just ensure that the value is addressable. - - if !rv.CanAddr() { - rvk = rv.Kind() - rv2 = d.oneShotAddrRV(rv.Type(), rvk) - if rvk == reflect.Interface { - rvSetIntf(rv2, rv) - } else { - rvSetDirect(rv2, rv) - } - rv = rv2 - } - - d.decodeValue(rv, nil) - ext.UpdateExt(v, rv2i(rv)) +func (d *decoder[T]) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + // The ext may support different types for performance e.g. int if no fractions, else float64 + // Consequently, best mode is: + // - decode next value into an interface{} + // - pass it to the UpdateExt + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + // rv := d.interfaceExtConvertAndDecodeGetRV(v, ext) + // d.decodeValue(rv, nil) + // ext.UpdateExt(v, rv2i(rv)) } -func (d *Decoder) sideDecode(v interface{}, basetype reflect.Type, bs []byte) { - // NewDecoderBytes(bs, d.hh).decodeValue(baseRV(v), d.h.fnNoExt(basetype)) - - defer func(rb bytesDecReader, bytes bool, - c containerState, dbs decByteState, depth int16, r decReader, state interface{}) { - d.rb = rb - d.bytes = bytes - d.c = c - d.decByteState = dbs - d.depth = depth - d.decReader = r - d.d.restoreState(state) - }(d.rb, d.bytes, d.c, d.decByteState, d.depth, d.decReader, d.d.captureState()) - - // d.rb.reset(in) - d.rb = bytesDecReader{bs[:len(bs):len(bs)], 0} - d.bytes = true - d.decReader = &d.rb - d.d.resetState() - d.c = 0 - d.decByteState = decByteStateNone - d.depth = 0 - - // must call using fnNoExt - d.decodeValue(baseRV(v), d.h.fnNoExt(basetype)) +func (d *decoder[T]) fn(t reflect.Type) *decFn[T] { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) } -func (d *Decoder) fauxUnionReadRawBytes(asString bool) { - if asString || d.h.RawToString { - d.n.v = valueTypeString - // fauxUnion is only used within DecodeNaked calls; consequently, we should try to intern. - d.n.s = d.stringZC(d.d.DecodeBytes(nil)) - } else { - d.n.v = valueTypeBytes - d.n.l = d.d.DecodeBytes([]byte{}) - } +func (d *decoder[T]) fnNoExt(t reflect.Type) *decFn[T] { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) } -func (d *Decoder) oneShotAddrRV(rvt reflect.Type, rvk reflect.Kind) reflect.Value { - if decUseTransient && - (numBoolStrSliceBitset.isset(byte(rvk)) || - ((rvk == reflect.Struct || rvk == reflect.Array) && - d.h.getTypeInfo(rt2id(rvt), rvt).flagCanTransient)) { - return d.perType.TransientAddrK(rvt, rvk) - } - return rvZeroAddrK(rvt, rvk) -} +// ---- -// -------------------------------------------------- - -// decSliceHelper assists when decoding into a slice, from a map or an array in the stream. -// A slice can be set from a map or array in stream. This supports the MapBySlice interface. -// -// Note: if IsNil, do not call ElemContainerState. -type decSliceHelper struct { - d *Decoder - ct valueType - Array bool - IsNil bool -} - -func (d *Decoder) decSliceHelperStart() (x decSliceHelper, clen int) { - x.ct = d.d.ContainerType() - x.d = d - switch x.ct { - case valueTypeNil: - x.IsNil = true - case valueTypeArray: - x.Array = true - clen = d.arrayStart(d.d.ReadArrayStart()) - case valueTypeMap: - clen = d.mapStart(d.d.ReadMapStart()) - clen += clen - default: - d.errorf("only encoded map or array can be decoded into a slice (%d)", x.ct) - } - return +func (helperDecDriver[T]) newDecoderBytes(in []byte, h Handle) *decoder[T] { + var c1 decoder[T] + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) // MARKER check for error + return &c1 } -func (x decSliceHelper) End() { - if x.IsNil { - } else if x.Array { - x.d.arrayEnd() - } else { - x.d.mapEnd() - } -} - -func (x decSliceHelper) ElemContainerState(index int) { - // Note: if isnil, clen=0, so we never call into ElemContainerState - - if x.Array { - x.d.arrayElem() - } else if index&1 == 0 { // index%2 == 0 { - x.d.mapElemKey() - } else { - x.d.mapElemValue() - } -} - -func (x decSliceHelper) arrayCannotExpand(hasLen bool, lenv, j, containerLenS int) { - x.d.arrayCannotExpand(lenv, j+1) - // drain completely and return - x.ElemContainerState(j) - x.d.swallow() - j++ - for ; x.d.containerNext(j, containerLenS, hasLen); j++ { - x.ElemContainerState(j) - x.d.swallow() - } - x.End() -} - -// decNextValueBytesHelper helps with NextValueBytes calls. -// -// Typical usage: -// - each Handle's decDriver will implement a high level nextValueBytes, -// which will track the current cursor, delegate to a nextValueBytesR -// method, and then potentially call bytesRdV at the end. -// -// See simple.go for typical usage model. -type decNextValueBytesHelper struct { - d *Decoder -} - -func (x decNextValueBytesHelper) append1(v *[]byte, b byte) { - if *v != nil && !x.d.bytes { - *v = append(*v, b) - } -} - -func (x decNextValueBytesHelper) appendN(v *[]byte, b ...byte) { - if *v != nil && !x.d.bytes { - *v = append(*v, b...) - } -} - -func (x decNextValueBytesHelper) appendS(v *[]byte, b string) { - if *v != nil && !x.d.bytes { - *v = append(*v, b...) - } -} - -func (x decNextValueBytesHelper) bytesRdV(v *[]byte, startpos uint) { - if x.d.bytes { - *v = x.d.rb.b[startpos:x.d.rb.c] - } -} - -// decNegintPosintFloatNumberHelper is used for formats that are binary -// and have distinct ways of storing positive integers vs negative integers -// vs floats, which are uniquely identified by the byte descriptor. -// -// Currently, these formats are binc, cbor and simple. -type decNegintPosintFloatNumberHelper struct { - d *Decoder +func (helperDecDriver[T]) newDecoderIO(in io.Reader, h Handle) *decoder[T] { + var c1 decoder[T] + c1.init(h) + c1.Reset(in) + return &c1 } -func (x decNegintPosintFloatNumberHelper) uint64(ui uint64, neg, ok bool) uint64 { - if ok && !neg { - return ui - } - return x.uint64TryFloat(ok) -} +// ---- -func (x decNegintPosintFloatNumberHelper) uint64TryFloat(ok bool) (ui uint64) { - if ok { // neg = true - x.d.errorf("assigning negative signed value to unsigned type") +func (helperDecDriver[T]) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDs[T]) (f *fastpathD[T], u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return } - f, ok := x.d.d.decFloat() - if ok && f >= 0 && noFrac64(math.Float64bits(f)) { - ui = uint64(f) + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) } else { - x.d.errorf("invalid number loading uint64, with descriptor: %v", x.d.d.descBd()) + u = f.rt } - return ui + return } -func decNegintPosintFloatNumberHelperInt64v(ui uint64, neg, incrIfNeg bool) (i int64) { - if neg && incrIfNeg { - ui++ +func (helperDecDriver[T]) decFindRtidFn(s []decRtidFn[T], rtid uintptr) (i uint, fn *decFn[T]) { + // binary search. Adapted from sort/search.go. Use goto (not for loop) to allow inlining. + var h uint // var h, i uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP } - i = chkOvf.SignedIntV(ui) - if neg { - i = -i + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn } return } -func (x decNegintPosintFloatNumberHelper) int64(ui uint64, neg, ok bool) (i int64) { - if ok { - return decNegintPosintFloatNumberHelperInt64v(ui, neg, x.d.cbor) - } - // return x.int64TryFloat() - // } - // func (x decNegintPosintFloatNumberHelper) int64TryFloat() (i int64) { - f, ok := x.d.d.decFloat() - if ok && noFrac64(math.Float64bits(f)) { - i = int64(f) - } else { - x.d.errorf("invalid number loading uint64, with descriptor: %v", x.d.d.descBd()) +func (helperDecDriver[T]) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFn[T]) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFn[T]](v)) } return } -func (x decNegintPosintFloatNumberHelper) float64(f float64, ok bool) float64 { - if ok { - return f - } - return x.float64TryInteger() +func (dh helperDecDriver[T]) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDs[T], + checkExt bool) (fn *decFn[T]) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) } -func (x decNegintPosintFloatNumberHelper) float64TryInteger() float64 { - ui, neg, ok := x.d.d.decInteger() - if !ok { - x.d.errorf("invalid descriptor for float: %v", x.d.d.descBd()) +func (dh helperDecDriver[T]) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFn[T]) { + rtid := rt2id(rt) + var sp []decRtidFn[T] = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) } - return float64(decNegintPosintFloatNumberHelperInt64v(ui, neg, x.d.cbor)) -} - -// isDecodeable checks if value can be decoded into -// -// decode can take any reflect.Value that is a inherently addressable i.e. -// - non-nil chan (we will SEND to it) -// - non-nil slice (we will set its elements) -// - non-nil map (we will put into it) -// - non-nil pointer (we can "update" it) -// - func: no -// - interface: no -// - array: if canAddr=true -// - any other value pointer: if canAddr=true -func isDecodeable(rv reflect.Value) (canDecode bool, reason decNotDecodeableReason) { - switch rv.Kind() { - case reflect.Ptr, reflect.Slice, reflect.Chan, reflect.Map: - canDecode = !rvIsNil(rv) - reason = decNotDecodeableReasonNilReference - case reflect.Func, reflect.Interface, reflect.Invalid, reflect.UnsafePointer: - reason = decNotDecodeableReasonBadKind - default: - canDecode = rv.CanAddr() - reason = decNotDecodeableReasonNonAddrValue + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) } return } -func decByteSlice(r *decRd, clen, maxInitLen int, bs []byte) (bsOut []byte) { - if clen <= 0 { - bsOut = zeroByteSlice - } else if cap(bs) >= clen { - bsOut = bs[:clen] - r.readb(bsOut) +func (dh helperDecDriver[T]) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFn[T]) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFn[T] + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + // since this is an atomic load/store, we MUST use a different array each time, + // else we have a data race when a store is happening simultaneously with a decFindRtidFn call. + if sp == nil { + sp = []decRtidFn[T]{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) } else { - var len2 int - for len2 < clen { - len3 := decInferLen(clen-len2, maxInitLen, 1) - bs3 := bsOut - bsOut = make([]byte, len2+len3) - copy(bsOut, bs3) - r.readb(bsOut[len2:]) - len2 += len3 + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFn[T], len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFn[T]{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) } } + mu.Unlock() return } -// decInferLen will infer a sensible length, given the following: -// - clen: length wanted. -// - maxlen: max length to be returned. -// if <= 0, it is unset, and we infer it based on the unit size -// - unit: number of bytes for each element of the collection -func decInferLen(clen, maxlen, unit int) int { - // anecdotal testing showed increase in allocation with map length of 16. - // We saw same typical alloc from 0-8, then a 20% increase at 16. - // Thus, we set it to 8. - const ( - minLenIfUnset = 8 - maxMem = 256 * 1024 // 256Kb Memory - ) - - // handle when maxlen is not set i.e. <= 0 - - // clen==0: use 0 - // maxlen<=0, clen<0: use default - // maxlen> 0, clen<0: use default - // maxlen<=0, clen>0: infer maxlen, and cap on it - // maxlen> 0, clen>0: cap at maxlen - - if clen == 0 || clen == containerLenNil { - return 0 - } - if clen < 0 { - // if unspecified, return 64 for bytes, ... 8 for uint64, ... and everything else - clen = 64 / unit - if clen > minLenIfUnset { - return clen +func (dh helperDecDriver[T]) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFn[T]) { + fn = new(decFn[T]) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + // anything can be an extension except the built-in ones: time, raw and rawext. + // ensure we check for these types, then if extension, before checking if + // it implementes one of the pre-declared interfaces. + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoder[T]).kTime + } else if rtid == rawTypId { + fn.fd = (*decoder[T]).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoder[T]).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoder[T]).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoder[T]).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoder[T]).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + //If JSON, we should check JSONMarshal before textMarshal + fn.fd = (*decoder[T]).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoder[T]).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { // un-named type (slice or mpa or array) + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) // ti.key for arrays = reflect.SliceOf(ti.elem) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false // decode directly into array value (slice made from it) + } + } + } else { // named type (with underlying type of map or slice or array) + // try to use mapping for underlying type + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false // decode directly into array value (slice made from it) + fn.fd = func(d *decoder[T], xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false // meaning it can be an address(ptr) or a value + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoder[T], xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoder[T]).kBool + case reflect.String: + fn.fd = (*decoder[T]).kString + case reflect.Int: + fn.fd = (*decoder[T]).kInt + case reflect.Int8: + fn.fd = (*decoder[T]).kInt8 + case reflect.Int16: + fn.fd = (*decoder[T]).kInt16 + case reflect.Int32: + fn.fd = (*decoder[T]).kInt32 + case reflect.Int64: + fn.fd = (*decoder[T]).kInt64 + case reflect.Uint: + fn.fd = (*decoder[T]).kUint + case reflect.Uint8: + fn.fd = (*decoder[T]).kUint8 + case reflect.Uint16: + fn.fd = (*decoder[T]).kUint16 + case reflect.Uint32: + fn.fd = (*decoder[T]).kUint32 + case reflect.Uint64: + fn.fd = (*decoder[T]).kUint64 + case reflect.Uintptr: + fn.fd = (*decoder[T]).kUintptr + case reflect.Float32: + fn.fd = (*decoder[T]).kFloat32 + case reflect.Float64: + fn.fd = (*decoder[T]).kFloat64 + case reflect.Complex64: + fn.fd = (*decoder[T]).kComplex64 + case reflect.Complex128: + fn.fd = (*decoder[T]).kComplex128 + case reflect.Chan: + fn.fd = (*decoder[T]).kChan + case reflect.Slice: + fn.fd = (*decoder[T]).kSlice + case reflect.Array: + fi.addrD = false // decode directly into array value (slice made from it) + fn.fd = (*decoder[T]).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoder[T]).kStructSimple + } else { + fn.fd = (*decoder[T]).kStruct + } + case reflect.Map: + fn.fd = (*decoder[T]).kMap + case reflect.Interface: + // encode: reflect.Interface are handled already by preEncodeValue + fn.fd = (*decoder[T]).kInterface + default: + // reflect.Ptr and reflect.Interface are handled already by preEncodeValue + fn.fd = (*decoder[T]).kErr + } } - return minLenIfUnset - } - if unit <= 0 { - return clen - } - if maxlen <= 0 { - maxlen = maxMem / unit - } - if clen < maxlen { - return clen } - return maxlen + return } diff --git a/vendor/github.com/ugorji/go/codec/doc.go b/vendor/github.com/ugorji/go/codec/doc.go index 1a16bca8b..750dd234a 100644 --- a/vendor/github.com/ugorji/go/codec/doc.go +++ b/vendor/github.com/ugorji/go/codec/doc.go @@ -12,7 +12,7 @@ Supported Serialization formats are: - binc: http://github.com/ugorji/binc - cbor: http://cbor.io http://tools.ietf.org/html/rfc7049 - json: http://json.org http://tools.ietf.org/html/rfc7159 - - simple: + - simple: (unpublished) This package will carefully use 'package unsafe' for performance reasons in specific places. You can build without unsafe use by passing the safe or appengine tag @@ -78,6 +78,32 @@ Rich Feature Set includes: msgpack-rpc protocol defined at: https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md +# Supported build tags + +We gain performance by code-generating fast-paths for slices and maps of built-in types, +and monomorphizing generic code explicitly so we gain inlining and de-virtualization benefits. + +The results are 20-40% performance improvements. + +Building and running is configured using build tags as below. + +At runtime: + +- codec.safe: run in safe mode (not using unsafe optimizations) +- codec.notmono: use generics code (bypassing performance-boosting monomorphized code) +- codec.notfastpath: skip fast path code for slices and maps of built-in types (number, bool, string, bytes) + +Each of these "runtime" tags have a convenience synonym i.e. safe, notmono, notfastpath. +Pls use these mostly during development - use codec.XXX in your go files. + +Build only: + +- codec.build: used to generate fastpath and monomorphization code + +Test only: + +- codec.notmammoth: skip the mammoth generated tests + # Extension Support Users can register a function to handle the encoding or decoding of @@ -203,6 +229,10 @@ You can run the tag 'codec.safe' to run tests or build in safe mode. e.g. go test -tags codec.safe -run Json go test -tags "alltests codec.safe" -run Suite +You can run the tag 'codec.notmono' to build bypassing the monomorphized code e.g. + + go test -tags codec.notmono -run Json + Running Benchmarks cd bench @@ -225,3 +255,87 @@ Embedded fields are encoded as if they exist in the top-level struct, with some caveats. See Encode documentation. */ package codec + +/* +Generics + +Generics are used across to board to reduce boilerplate, and hopefully +improve performance by +- reducing need for interface calls (de-virtualization) +- resultant inlining of those calls + +encoder/decoder --> Driver (json/cbor/...) --> input/output (bytes or io abstraction) + +There are 2 * 5 * 2 (20) combinations of monomorphized values. + +Key rules +- do not use top-level generic functions. + Due to type inference, monomorphizing them proves challenging +- only use generic methods. + Monomorphizing is done at the type once, and method names need not change +- do not have method calls have a parameter of an encWriter or decReader. + All those calls are handled directly by the driver. +- Include a helper type for each parameterized thing, and add all generic functions to them e.g. + helperEncWriter[T encWriter] + helperEncReader[T decReader] + helperEncDriver[T encDriver] + helperDecDriver[T decDriver] +- Always use T as the generic type name (when needed) +- No inline types +- No closures taking parameters of generic types + +*/ +/* +Naming convention: + +Currently, as generic and non-generic types/functions/vars are put in the same files, +we suffer because: +- build takes longer as non-generic code is built when a build tag wants only monomorphised code +- files have many lines which are not used at runtime (due to type parameters) +- code coverage is inaccurate on a single run + +To resolve this, we are streamlining our file naming strategy. + +Basically, we will have the following nomenclature for filenames: +- fastpath (tag:notfastpath): *.notfastpath.*.go vs *.fastpath.*.go +- typed parameters (tag:notmono): *.notmono.*.go vs *.mono.*.go +- safe (tag:safe): *.safe.*.go vs *.unsafe.go +- generated files: *.generated.go +- all others (tags:N/A): *.go without safe/mono/fastpath/generated in the name + +The following files will be affected and split/renamed accordingly + +Base files: +- binc.go +- cbor.go +- json.go +- msgpack.go +- simple.go +- decode.go +- encode.go + +For each base file, split into __file__.go (containing type parameters) and __file__.base.go. +__file__.go will only build with notmono. + +Other files: +- fastpath.generated.go -> base.fastpath.generated.go and base.fastpath.notmono.generated.go +- fastpath.not.go -> base.notfastpath.go +- init.go -> init.notmono.go + +Appropriate build tags will be included in the files, and the right ones only used for +monomorphization. +*/ +/* +Caching Handle options for fast runtime use + +If using cached values from Handle options, then +- re-cache them at each reset() call +- reset is always called at the start of each (Must)(En|De)code + - which calls (en|de)coder.reset([]byte|io.Reader|String) + - which calls (en|de)cDriver.reset() +- at reset, (en|de)c(oder|Driver) can re-cache Handle options before each run + +Some examples: +- json: e.rawext,di,d,ks,is / d.rawext +- decode: (decoderBase) d.jsms,mtr,str, +*/ diff --git a/vendor/github.com/ugorji/go/codec/encode.base.go b/vendor/github.com/ugorji/go/codec/encode.base.go new file mode 100644 index 000000000..0ded90465 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/encode.base.go @@ -0,0 +1,461 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "cmp" + "errors" + "io" + "reflect" + "slices" + "sync" + "time" +) + +var errEncoderNotInitialized = errors.New("encoder not initialized") + +var encBuiltinRtids []uintptr + +func init() { + for _, v := range []interface{}{ + (string)(""), + (bool)(false), + (int)(0), + (int8)(0), + (int16)(0), + (int32)(0), + (int64)(0), + (uint)(0), + (uint8)(0), + (uint16)(0), + (uint32)(0), + (uint64)(0), + (uintptr)(0), + (float32)(0), + (float64)(0), + (complex64)(0), + (complex128)(0), + (time.Time{}), + ([]byte)(nil), + (Raw{}), + // (interface{})(nil), + } { + t := reflect.TypeOf(v) + encBuiltinRtids = append(encBuiltinRtids, rt2id(t), rt2id(reflect.PointerTo(t))) + } + slices.Sort(encBuiltinRtids) +} + +// encDriver abstracts the actual codec (binc vs msgpack, etc) +type encDriverI interface { + EncodeNil() + EncodeInt(i int64) + EncodeUint(i uint64) + EncodeBool(b bool) + EncodeFloat32(f float32) + EncodeFloat64(f float64) + // re is never nil + EncodeRawExt(re *RawExt) + // ext is never nil + EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) + // EncodeString using cUTF8, honor'ing StringToRaw flag + EncodeString(v string) + EncodeStringNoEscape4Json(v string) + // encode a non-nil []byte + EncodeStringBytesRaw(v []byte) + // encode a []byte as nil, empty or encoded sequence of bytes depending on context + EncodeBytes(v []byte) + EncodeTime(time.Time) + WriteArrayStart(length int) + WriteArrayEnd() + WriteMapStart(length int) + WriteMapEnd() + + // these write a zero-len map or array into the stream + WriteMapEmpty() + WriteArrayEmpty() + + writeNilMap() + writeNilArray() + writeNilBytes() + + // these are no-op except for json + encDriverContainerTracker + + // reset will reset current encoding runtime state, and cached information from the handle + reset() + + atEndOfEncode() + writerEnd() + + writeBytesAsis(b []byte) + // writeStringAsisDblQuoted(v string) + + resetOutBytes(out *[]byte) + resetOutIO(out io.Writer) + + init(h Handle, shared *encoderBase, enc encoderI) (fp interface{}) + + // driverStateManager +} + +type encInit2er struct{} + +func (encInit2er) init2(enc encoderI) {} + +type encDriverContainerTracker interface { + WriteArrayElem(firstTime bool) + WriteMapElemKey(firstTime bool) + WriteMapElemValue() +} + +type encDriverNoState struct{} + +// func (encDriverNoState) captureState() interface{} { return nil } +// func (encDriverNoState) resetState() {} +// func (encDriverNoState) restoreState(v interface{}) {} +func (encDriverNoState) reset() {} + +type encDriverNoopContainerWriter struct{} + +func (encDriverNoopContainerWriter) WriteArrayStart(length int) {} +func (encDriverNoopContainerWriter) WriteArrayEnd() {} +func (encDriverNoopContainerWriter) WriteMapStart(length int) {} +func (encDriverNoopContainerWriter) WriteMapEnd() {} +func (encDriverNoopContainerWriter) atEndOfEncode() {} + +// encStructFieldObj[Slice] is used for sorting when there are missing fields and canonical flag is set +type encStructFieldObj struct { + key string + rv reflect.Value + intf interface{} + isRv bool + noEsc4json bool + builtin bool +} + +type encStructFieldObjSlice []encStructFieldObj + +func (p encStructFieldObjSlice) Len() int { return len(p) } +func (p encStructFieldObjSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } +func (p encStructFieldObjSlice) Less(i, j int) bool { + return p[uint(i)].key < p[uint(j)].key +} + +// ---- + +type orderedRv[T cmp.Ordered] struct { + v T + r reflect.Value +} + +func cmpOrderedRv[T cmp.Ordered](v1, v2 orderedRv[T]) int { + return cmp.Compare(v1.v, v2.v) +} + +// ---- + +type encFnInfo struct { + ti *typeInfo + xfFn Ext + xfTag uint64 + addrE bool + // addrEf bool // force: if addrE, then encode function MUST take a ptr +} + +// ---- + +// EncodeOptions captures configuration options during encode. +type EncodeOptions struct { + // WriterBufferSize is the size of the buffer used when writing. + // + // if > 0, we use a smart buffer internally for performance purposes. + WriterBufferSize int + + // ChanRecvTimeout is the timeout used when selecting from a chan. + // + // Configuring this controls how we receive from a chan during the encoding process. + // - If ==0, we only consume the elements currently available in the chan. + // - if <0, we consume until the chan is closed. + // - If >0, we consume until this timeout. + ChanRecvTimeout time.Duration + + // StructToArray specifies to encode a struct as an array, and not as a map + StructToArray bool + + // Canonical representation means that encoding a value will always result in the same + // sequence of bytes. + // + // This only affects maps, as the iteration order for maps is random. + // + // The implementation MAY use the natural sort order for the map keys if possible: + // + // - If there is a natural sort order (ie for number, bool, string or []byte keys), + // then the map keys are first sorted in natural order and then written + // with corresponding map values to the strema. + // - If there is no natural sort order, then the map keys will first be + // encoded into []byte, and then sorted, + // before writing the sorted keys and the corresponding map values to the stream. + // + Canonical bool + + // CheckCircularRef controls whether we check for circular references + // and error fast during an encode. + // + // If enabled, an error is received if a pointer to a struct + // references itself either directly or through one of its fields (iteratively). + // + // This is opt-in, as there may be a performance hit to checking circular references. + CheckCircularRef bool + + // RecursiveEmptyCheck controls how we determine whether a value is empty. + // + // If true, we descend into interfaces and pointers to reursively check if value is empty. + // + // We *might* check struct fields one by one to see if empty + // (if we cannot directly check if a struct value is equal to its zero value). + // If so, we honor IsZero, Comparable, IsCodecEmpty(), etc. + // Note: This *may* make OmitEmpty more expensive due to the large number of reflect calls. + // + // If false, we check if the value is equal to its zero value (newly allocated state). + RecursiveEmptyCheck bool + + // Raw controls whether we encode Raw values. + // This is a "dangerous" option and must be explicitly set. + // If set, we blindly encode Raw values as-is, without checking + // if they are a correct representation of a value in that format. + // If unset, we error out. + Raw bool + + // StringToRaw controls how strings are encoded. + // + // As a go string is just an (immutable) sequence of bytes, + // it can be encoded either as raw bytes or as a UTF string. + // + // By default, strings are encoded as UTF-8. + // but can be treated as []byte during an encode. + // + // Note that things which we know (by definition) to be UTF-8 + // are ALWAYS encoded as UTF-8 strings. + // These include encoding.TextMarshaler, time.Format calls, struct field names, etc. + StringToRaw bool + + // OptimumSize controls whether we optimize for the smallest size. + // + // Some formats will use this flag to determine whether to encode + // in the smallest size possible, even if it takes slightly longer. + // + // For example, some formats that support half-floats might check if it is possible + // to store a float64 as a half float. Doing this check has a small performance cost, + // but the benefit is that the encoded message will be smaller. + OptimumSize bool + + // NoAddressableReadonly controls whether we try to force a non-addressable value + // to be addressable so we can call a pointer method on it e.g. for types + // that support Selfer, json.Marshaler, etc. + // + // Use it in the very rare occurrence that your types modify a pointer value when calling + // an encode callback function e.g. JsonMarshal, TextMarshal, BinaryMarshal or CodecEncodeSelf. + NoAddressableReadonly bool + + // NilCollectionToZeroLength controls whether we encode nil collections (map, slice, chan) + // as nil (e.g. null if using JSON) or as zero length collections (e.g. [] or {} if using JSON). + // + // This is useful in many scenarios e.g. + // - encoding in go, but decoding the encoded stream in python + // where context of the type is missing but needed + // + // Note: this flag ignores the MapBySlice tag, and will encode nil slices, maps and chan + // in their natural zero-length formats e.g. a slice in json encoded as [] + // (and not nil or {} if MapBySlice tag). + NilCollectionToZeroLength bool +} + +// --------------------------------------------- + +// encoderBase is shared as a field between Encoder and its encDrivers. +// This way, encDrivers need not hold a referece to the Encoder itself. +type encoderBase struct { + perType encPerType + + h *BasicHandle + + // MARKER: these fields below should belong directly in Encoder. + // There should not be any pointers here - just values. + // we pack them here for space efficiency and cache-line optimization. + + rtidFn, rtidFnNoExt *atomicRtidFnSlice + + // se encoderI + err error + + blist bytesFreeList + + // js bool // is json encoder? + // be bool // is binary encoder? + + bytes bool + + c containerState + + calls uint16 + seq uint16 // sequencer (e.g. used by binc for symbols, etc) + + // ---- cpu cache line boundary + hh Handle + + // ---- cpu cache line boundary + + // ---- writable fields during execution --- *try* to keep in sep cache line + + ci circularRefChecker + + slist sfiRvFreeList +} + +func (e *encoderBase) HandleName() string { + return e.hh.Name() +} + +// Release is a no-op. +// +// Deprecated: Pooled resources are not used with an Encoder. +// This method is kept for compatibility reasons only. +func (e *encoderBase) Release() { +} + +func (e *encoderBase) setContainerState(cs containerState) { + if cs != 0 { + e.c = cs + } +} + +func (e *encoderBase) haltOnMbsOddLen(length int) { + if length&1 != 0 { // similar to &1==1 or %2 == 1 + halt.errorInt("mapBySlice requires even slice length, but got ", int64(length)) + } +} + +// addrRV returns a addressable value given that rv is not addressable +func (e *encoderBase) addrRV(rv reflect.Value, typ, ptrType reflect.Type) (rva reflect.Value) { + // if rv.CanAddr() { + // return rvAddr(rv, ptrType) + // } + if e.h.NoAddressableReadonly { + rva = reflect.New(typ) + rvSetDirect(rva.Elem(), rv) + return + } + return rvAddr(e.perType.AddressableRO(rv), ptrType) +} + +func (e *encoderBase) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, e.hh.Name(), 0, true) +} + +func (e *encoderBase) kErr(_ *encFnInfo, rv reflect.Value) { + halt.errorf("unsupported encoding kind: %s, for %#v", rv.Kind(), any(rv)) +} + +func chanToSlice(rv reflect.Value, rtslice reflect.Type, timeout time.Duration) (rvcs reflect.Value) { + rvcs = rvZeroK(rtslice, reflect.Slice) + if timeout < 0 { // consume until close + for { + recv, recvOk := rv.Recv() + if !recvOk { + break + } + rvcs = reflect.Append(rvcs, recv) + } + } else { + cases := make([]reflect.SelectCase, 2) + cases[0] = reflect.SelectCase{Dir: reflect.SelectRecv, Chan: rv} + if timeout == 0 { + cases[1] = reflect.SelectCase{Dir: reflect.SelectDefault} + } else { + tt := time.NewTimer(timeout) + cases[1] = reflect.SelectCase{Dir: reflect.SelectRecv, Chan: reflect.ValueOf(tt.C)} + } + for { + chosen, recv, recvOk := reflect.Select(cases) + if chosen == 1 || !recvOk { + break + } + rvcs = reflect.Append(rvcs, recv) + } + } + return +} + +type encoderI interface { + Encode(v interface{}) error + MustEncode(v interface{}) + Release() + Reset(w io.Writer) + ResetBytes(out *[]byte) + + wrapErr(v error, err *error) + atEndOfEncode() + writerEnd() + + encodeI(v interface{}) + encodeR(v reflect.Value) + encodeAs(v interface{}, t reflect.Type, ext bool) + + setContainerState(cs containerState) // needed for canonical encoding via side encoder +} + +var errEncNoResetBytesWithWriter = errors.New("cannot reset an Encoder which outputs to []byte with a io.Writer") +var errEncNoResetWriterWithBytes = errors.New("cannot reset an Encoder which outputs to io.Writer with a []byte") + +type encDriverContainerNoTrackerT struct{} + +func (encDriverContainerNoTrackerT) WriteArrayElem(firstTime bool) {} +func (encDriverContainerNoTrackerT) WriteMapElemKey(firstTime bool) {} +func (encDriverContainerNoTrackerT) WriteMapElemValue() {} + +type Encoder struct { + encoderI +} + +// NewEncoder returns an Encoder for encoding into an io.Writer. +// +// For efficiency, Users are encouraged to configure WriterBufferSize on the handle +// OR pass in a memory buffered writer (eg bufio.Writer, bytes.Buffer). +func NewEncoder(w io.Writer, h Handle) *Encoder { + return &Encoder{h.newEncoder(w)} +} + +// NewEncoderBytes returns an encoder for encoding directly and efficiently +// into a byte slice, using zero-copying to temporary slices. +// +// It will potentially replace the output byte slice pointed to. +// After encoding, the out parameter contains the encoded contents. +func NewEncoderBytes(out *[]byte, h Handle) *Encoder { + return &Encoder{h.newEncoderBytes(out)} +} + +// ---- + +func sideEncode(h Handle, p *sync.Pool, fn func(encoderI)) { + var s encoderI + if usePoolForSideEncode { + s = p.Get().(encoderI) + defer p.Put(s) + } else { + // initialization cycle error + // s = NewEncoderBytes(nil, h).encoderI + s = p.New().(encoderI) + } + fn(s) +} + +func oneOffEncode(se encoderI, v interface{}, out *[]byte, basetype reflect.Type, ext bool) { + se.ResetBytes(out) + se.encodeAs(v, basetype, ext) + se.atEndOfEncode() + se.writerEnd() + // e.sideEncoder(&bs) + // e.sideEncode(v, basetype, 0) +} diff --git a/vendor/github.com/ugorji/go/codec/encode.go b/vendor/github.com/ugorji/go/codec/encode.go index 0e9f0cc05..b203036b4 100644 --- a/vendor/github.com/ugorji/go/codec/encode.go +++ b/vendor/github.com/ugorji/go/codec/encode.go @@ -1,3 +1,5 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -5,412 +7,295 @@ package codec import ( "encoding" - "errors" "io" "reflect" + "slices" "sort" "strconv" + "sync" "time" ) -// defEncByteBufSize is the default size of []byte used -// for bufio buffer or []byte (when nil passed) -const defEncByteBufSize = 1 << 10 // 4:16, 6:64, 8:256, 10:1024 - -var errEncoderNotInitialized = errors.New("Encoder not initialized") - -// encDriver abstracts the actual codec (binc vs msgpack, etc) -type encDriver interface { - EncodeNil() - EncodeInt(i int64) - EncodeUint(i uint64) - EncodeBool(b bool) - EncodeFloat32(f float32) - EncodeFloat64(f float64) - EncodeRawExt(re *RawExt) - EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) - // EncodeString using cUTF8, honor'ing StringToRaw flag - EncodeString(v string) - EncodeStringBytesRaw(v []byte) - EncodeTime(time.Time) - WriteArrayStart(length int) - WriteArrayEnd() - WriteMapStart(length int) - WriteMapEnd() - - // reset will reset current encoding runtime state, and cached information from the handle - reset() - - encoder() *Encoder - - driverStateManager -} - -type encDriverContainerTracker interface { - WriteArrayElem() - WriteMapElemKey() - WriteMapElemValue() -} - -type encDriverNoState struct{} - -func (encDriverNoState) captureState() interface{} { return nil } -func (encDriverNoState) reset() {} -func (encDriverNoState) resetState() {} -func (encDriverNoState) restoreState(v interface{}) {} +type helperEncDriver[T encDriver] struct{} -type encDriverNoopContainerWriter struct{} - -func (encDriverNoopContainerWriter) WriteArrayStart(length int) {} -func (encDriverNoopContainerWriter) WriteArrayEnd() {} -func (encDriverNoopContainerWriter) WriteMapStart(length int) {} -func (encDriverNoopContainerWriter) WriteMapEnd() {} - -// encStructFieldObj[Slice] is used for sorting when there are missing fields and canonical flag is set -type encStructFieldObj struct { - key string - rv reflect.Value - intf interface{} - ascii bool - isRv bool +// encFn encapsulates the captured variables and the encode function. +// This way, we only do some calculations one times, and pass to the +// code block that should be called (encapsulated in a function) +// instead of executing the checks every time. +type encFn[T encDriver] struct { + i encFnInfo + fe func(*encoder[T], *encFnInfo, reflect.Value) + // _ [1]uint64 // padding (cache-aligned) } -type encStructFieldObjSlice []encStructFieldObj - -func (p encStructFieldObjSlice) Len() int { return len(p) } -func (p encStructFieldObjSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p encStructFieldObjSlice) Less(i, j int) bool { - return p[uint(i)].key < p[uint(j)].key +type encRtidFn[T encDriver] struct { + rtid uintptr + fn *encFn[T] } -// EncodeOptions captures configuration options during encode. -type EncodeOptions struct { - // WriterBufferSize is the size of the buffer used when writing. - // - // if > 0, we use a smart buffer internally for performance purposes. - WriterBufferSize int - - // ChanRecvTimeout is the timeout used when selecting from a chan. - // - // Configuring this controls how we receive from a chan during the encoding process. - // - If ==0, we only consume the elements currently available in the chan. - // - if <0, we consume until the chan is closed. - // - If >0, we consume until this timeout. - ChanRecvTimeout time.Duration - - // StructToArray specifies to encode a struct as an array, and not as a map - StructToArray bool - - // Canonical representation means that encoding a value will always result in the same - // sequence of bytes. - // - // This only affects maps, as the iteration order for maps is random. - // - // The implementation MAY use the natural sort order for the map keys if possible: - // - // - If there is a natural sort order (ie for number, bool, string or []byte keys), - // then the map keys are first sorted in natural order and then written - // with corresponding map values to the strema. - // - If there is no natural sort order, then the map keys will first be - // encoded into []byte, and then sorted, - // before writing the sorted keys and the corresponding map values to the stream. - // - Canonical bool - - // CheckCircularRef controls whether we check for circular references - // and error fast during an encode. - // - // If enabled, an error is received if a pointer to a struct - // references itself either directly or through one of its fields (iteratively). - // - // This is opt-in, as there may be a performance hit to checking circular references. - CheckCircularRef bool - - // RecursiveEmptyCheck controls how we determine whether a value is empty. - // - // If true, we descend into interfaces and pointers to reursively check if value is empty. - // - // We *might* check struct fields one by one to see if empty - // (if we cannot directly check if a struct value is equal to its zero value). - // If so, we honor IsZero, Comparable, IsCodecEmpty(), etc. - // Note: This *may* make OmitEmpty more expensive due to the large number of reflect calls. - // - // If false, we check if the value is equal to its zero value (newly allocated state). - RecursiveEmptyCheck bool - - // Raw controls whether we encode Raw values. - // This is a "dangerous" option and must be explicitly set. - // If set, we blindly encode Raw values as-is, without checking - // if they are a correct representation of a value in that format. - // If unset, we error out. - Raw bool - - // StringToRaw controls how strings are encoded. - // - // As a go string is just an (immutable) sequence of bytes, - // it can be encoded either as raw bytes or as a UTF string. - // - // By default, strings are encoded as UTF-8. - // but can be treated as []byte during an encode. - // - // Note that things which we know (by definition) to be UTF-8 - // are ALWAYS encoded as UTF-8 strings. - // These include encoding.TextMarshaler, time.Format calls, struct field names, etc. - StringToRaw bool - - // OptimumSize controls whether we optimize for the smallest size. - // - // Some formats will use this flag to determine whether to encode - // in the smallest size possible, even if it takes slightly longer. - // - // For example, some formats that support half-floats might check if it is possible - // to store a float64 as a half float. Doing this check has a small performance cost, - // but the benefit is that the encoded message will be smaller. - OptimumSize bool - - // NoAddressableReadonly controls whether we try to force a non-addressable value - // to be addressable so we can call a pointer method on it e.g. for types - // that support Selfer, json.Marshaler, etc. - // - // Use it in the very rare occurrence that your types modify a pointer value when calling - // an encode callback function e.g. JsonMarshal, TextMarshal, BinaryMarshal or CodecEncodeSelf. - NoAddressableReadonly bool +// Encoder writes an object to an output stream in a supported format. +// +// Encoder is NOT safe for concurrent use i.e. a Encoder cannot be used +// concurrently in multiple goroutines. +// +// However, as Encoder could be allocation heavy to initialize, a Reset method is provided +// so its state can be reused to decode new input streams repeatedly. +// This is the idiomatic way to use. +type encoder[T encDriver] struct { + dh helperEncDriver[T] + fp *fastpathEs[T] + e T + encoderBase } -// --------------------------------------------- - -func (e *Encoder) rawExt(f *codecFnInfo, rv reflect.Value) { - e.e.EncodeRawExt(rv2i(rv).(*RawExt)) +func (e *encoder[T]) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } } -func (e *Encoder) ext(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) ext(f *encFnInfo, rv reflect.Value) { e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) } -func (e *Encoder) selferMarshal(f *codecFnInfo, rv reflect.Value) { - rv2i(rv).(Selfer).CodecEncodeSelf(e) +func (e *encoder[T]) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) } -func (e *Encoder) binaryMarshal(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) binaryMarshal(_ *encFnInfo, rv reflect.Value) { bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() e.marshalRaw(bs, fnerr) } -func (e *Encoder) textMarshal(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) textMarshal(_ *encFnInfo, rv reflect.Value) { bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() e.marshalUtf8(bs, fnerr) } -func (e *Encoder) jsonMarshal(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) jsonMarshal(_ *encFnInfo, rv reflect.Value) { bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() e.marshalAsis(bs, fnerr) } -func (e *Encoder) raw(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) raw(_ *encFnInfo, rv reflect.Value) { e.rawBytes(rv2i(rv).(Raw)) } -func (e *Encoder) encodeComplex64(v complex64) { +func (e *encoder[T]) encodeComplex64(v complex64) { if imag(v) != 0 { - e.errorf("cannot encode complex number: %v, with imaginary values: %v", v, imag(v)) + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) } e.e.EncodeFloat32(real(v)) } -func (e *Encoder) encodeComplex128(v complex128) { +func (e *encoder[T]) encodeComplex128(v complex128) { if imag(v) != 0 { - e.errorf("cannot encode complex number: %v, with imaginary values: %v", v, imag(v)) + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) } e.e.EncodeFloat64(real(v)) } -func (e *Encoder) kBool(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kBool(_ *encFnInfo, rv reflect.Value) { e.e.EncodeBool(rvGetBool(rv)) } -func (e *Encoder) kTime(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kTime(_ *encFnInfo, rv reflect.Value) { e.e.EncodeTime(rvGetTime(rv)) } -func (e *Encoder) kString(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kString(_ *encFnInfo, rv reflect.Value) { e.e.EncodeString(rvGetString(rv)) } -func (e *Encoder) kFloat32(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kFloat32(_ *encFnInfo, rv reflect.Value) { e.e.EncodeFloat32(rvGetFloat32(rv)) } -func (e *Encoder) kFloat64(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kFloat64(_ *encFnInfo, rv reflect.Value) { e.e.EncodeFloat64(rvGetFloat64(rv)) } -func (e *Encoder) kComplex64(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kComplex64(_ *encFnInfo, rv reflect.Value) { e.encodeComplex64(rvGetComplex64(rv)) } -func (e *Encoder) kComplex128(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kComplex128(_ *encFnInfo, rv reflect.Value) { e.encodeComplex128(rvGetComplex128(rv)) } -func (e *Encoder) kInt(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kInt(_ *encFnInfo, rv reflect.Value) { e.e.EncodeInt(int64(rvGetInt(rv))) } -func (e *Encoder) kInt8(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kInt8(_ *encFnInfo, rv reflect.Value) { e.e.EncodeInt(int64(rvGetInt8(rv))) } -func (e *Encoder) kInt16(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kInt16(_ *encFnInfo, rv reflect.Value) { e.e.EncodeInt(int64(rvGetInt16(rv))) } -func (e *Encoder) kInt32(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kInt32(_ *encFnInfo, rv reflect.Value) { e.e.EncodeInt(int64(rvGetInt32(rv))) } -func (e *Encoder) kInt64(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kInt64(_ *encFnInfo, rv reflect.Value) { e.e.EncodeInt(int64(rvGetInt64(rv))) } -func (e *Encoder) kUint(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUint(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUint(rv))) } -func (e *Encoder) kUint8(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUint8(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUint8(rv))) } -func (e *Encoder) kUint16(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUint16(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUint16(rv))) } -func (e *Encoder) kUint32(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUint32(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUint32(rv))) } -func (e *Encoder) kUint64(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUint64(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUint64(rv))) } -func (e *Encoder) kUintptr(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kUintptr(_ *encFnInfo, rv reflect.Value) { e.e.EncodeUint(uint64(rvGetUintptr(rv))) } -func (e *Encoder) kErr(f *codecFnInfo, rv reflect.Value) { - e.errorf("unsupported kind %s, for %#v", rv.Kind(), rv) -} - -func chanToSlice(rv reflect.Value, rtslice reflect.Type, timeout time.Duration) (rvcs reflect.Value) { - rvcs = rvZeroK(rtslice, reflect.Slice) - if timeout < 0 { // consume until close - for { - recv, recvOk := rv.Recv() - if !recvOk { - break - } - rvcs = reflect.Append(rvcs, recv) - } - } else { - cases := make([]reflect.SelectCase, 2) - cases[0] = reflect.SelectCase{Dir: reflect.SelectRecv, Chan: rv} - if timeout == 0 { - cases[1] = reflect.SelectCase{Dir: reflect.SelectDefault} - } else { - tt := time.NewTimer(timeout) - cases[1] = reflect.SelectCase{Dir: reflect.SelectRecv, Chan: reflect.ValueOf(tt.C)} - } - for { - chosen, recv, recvOk := reflect.Select(cases) - if chosen == 1 || !recvOk { - break - } - rvcs = reflect.Append(rvcs, recv) - } - } - return -} - -func (e *Encoder) kSeqFn(rtelem reflect.Type) (fn *codecFn) { - for rtelem.Kind() == reflect.Ptr { - rtelem = rtelem.Elem() - } +func (e *encoder[T]) kSeqFn(rt reflect.Type) (fn *encFn[T]) { // if kind is reflect.Interface, do not pre-determine the encoding type, // because preEncodeValue may break it down to a concrete type and kInterface will bomb. - if rtelem.Kind() != reflect.Interface { - fn = e.h.fn(rtelem) + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) } return } -func (e *Encoder) kSliceWMbs(rv reflect.Value, ti *typeInfo) { - var l = rvLenSlice(rv) - if l == 0 { - e.mapStart(0) +func (e *encoder[T]) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) } else { - e.haltOnMbsOddLen(l) - e.mapStart(l >> 1) // e.mapStart(l / 2) - fn := e.kSeqFn(ti.elem) - for j := 0; j < l; j++ { - if j&1 == 0 { // j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.encodeValue(rvSliceIndex(rv, j, ti), fn) - } + l = rv.Len() } - e.mapEnd() -} + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) // e.mapStart(l / 2) -func (e *Encoder) kSliceW(rv reflect.Value, ti *typeInfo) { - var l = rvLenSlice(rv) - e.arrayStart(l) - if l > 0 { - fn := e.kSeqFn(ti.elem) - for j := 0; j < l; j++ { - e.arrayElem() - e.encodeValue(rvSliceIndex(rv, j, ti), fn) - } + var fn *encFn[T] + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) } - e.arrayEnd() -} -func (e *Encoder) kArrayWMbs(rv reflect.Value, ti *typeInfo) { - var l = rv.Len() - if l == 0 { - e.mapStart(0) - } else { - e.haltOnMbsOddLen(l) - e.mapStart(l >> 1) // e.mapStart(l / 2) - fn := e.kSeqFn(ti.elem) - for j := 0; j < l; j++ { - if j&1 == 0 { // j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.encodeValue(rv.Index(j), fn) + // simulate do...while, since we already handled case of 0-length + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { // j%2 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() } } - e.mapEnd() -} + e.c = 0 + e.e.WriteMapEnd() -func (e *Encoder) kArrayW(rv reflect.Value, ti *typeInfo) { - var l = rv.Len() + // for j := 0; j < l; j++ { + // if j&1 == 0 { // j%2 == 0 { + // e.mapElemKey(j == 0) + // } else { + // e.mapElemValue() + // } + // rvv := rvSliceIndex(rv, j, ti) + // if builtin { + // e.encode(rv2i(baseRVRV(rvv))) + // } else { + // e.encodeValue(rvv, fn) + // } + // } + // e.mapEnd() +} + +func (e *encoder[T]) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } e.arrayStart(l) - if l > 0 { - fn := e.kSeqFn(ti.elem) - for j := 0; j < l; j++ { - e.arrayElem() - e.encodeValue(rv.Index(j), fn) + + var fn *encFn[T] + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break } + e.c = containerArrayElem + e.e.WriteArrayElem(false) } - e.arrayEnd() + + // if ti.tielem.flagEncBuiltin { + // for j := 0; j < l; j++ { + // e.arrayElem() + // e.encode(rv2i(baseRVRV(rIndex(rv, j, ti)))) + // } + // } else { + // fn := e.kSeqFn(ti.elem) + // for j := 0; j < l; j++ { + // e.arrayElem() + // e.encodeValue(rvArrayIndex(rv, j, ti), fn) + // } + // } + + e.c = 0 + e.e.WriteArrayEnd() } -func (e *Encoder) kChan(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kChan(f *encFnInfo, rv reflect.Value) { if f.ti.chandir&uint8(reflect.RecvDir) == 0 { - e.errorf("send-only channel cannot be encoded") + halt.errorStr("send-only channel cannot be encoded") } if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { e.kSliceBytesChan(rv) @@ -420,33 +305,34 @@ func (e *Encoder) kChan(f *codecFnInfo, rv reflect.Value) { rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) if f.ti.mbs { - e.kSliceWMbs(rv, ti) + e.kArrayWMbs(rv, ti, true) } else { - e.kSliceW(rv, ti) + e.kArrayW(rv, ti, true) } } -func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kSlice(f *encFnInfo, rv reflect.Value) { if f.ti.mbs { - e.kSliceWMbs(rv, f.ti) + e.kArrayWMbs(rv, f.ti, true) } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { - e.e.EncodeStringBytesRaw(rvGetBytes(rv)) + // 'uint8TypId == rt2id(f.ti.elem)' checks types having underlying []byte + e.e.EncodeBytes(rvGetBytes(rv)) } else { - e.kSliceW(rv, f.ti) + e.kArrayW(rv, f.ti, true) } } -func (e *Encoder) kArray(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kArray(f *encFnInfo, rv reflect.Value) { if f.ti.mbs { - e.kArrayWMbs(rv, f.ti) + e.kArrayWMbs(rv, f.ti, false) } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { - e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, []byte{})) + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) // bytes from array never nil } else { - e.kArrayW(rv, f.ti) + e.kArrayW(rv, f.ti, false) } } -func (e *Encoder) kSliceBytesChan(rv reflect.Value) { +func (e *encoder[T]) kSliceBytesChan(rv reflect.Value) { // do not use range, so that the number of elements encoded // does not change, and encoding does not hang waiting on someone to close chan. @@ -487,78 +373,132 @@ L1: } } - e.e.EncodeStringBytesRaw(bs) + e.e.EncodeBytes(bs) e.blist.put(bs) if !byteSliceSameData(bs0, bs) { e.blist.put(bs0) } } -func (e *Encoder) kStructSfi(f *codecFnInfo) []*structFieldInfo { - if e.h.Canonical { - return f.ti.sfi.sorted() +func (e *encoder[T]) kStructFieldKey(keyType valueType, encName string) { + // use if (not switch) block, so that branch prediction picks valueTypeString first + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) } - return f.ti.sfi.source() + // e.dh.encStructFieldKey(e.e, encName, keyType, encNameAsciiAlphaNum, e.js) } -func (e *Encoder) kStructNoOmitempty(f *codecFnInfo, rv reflect.Value) { - var tisfi []*structFieldInfo +func (e *encoder[T]) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e // early asserts e, e.e are not nil once + tisfi := f.ti.sfi.source() + + // To bypass encodeValue, we need to handle cases where + // the field is an interface kind. To do this, we need to handle an + // interface or a pointer to an interface differently. + // + // Easiest to just delegate to encodeValue. + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + // use value of chkCirRef ie if true, then send the addr of the value if f.ti.toArray || e.h.StructToArray { // toArray - tisfi = f.ti.sfi.source() + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } e.arrayStart(len(tisfi)) - for _, si := range tisfi { - e.arrayElem() - e.encodeValue(si.path.field(rv), nil) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } } - e.arrayEnd() + e.c = 0 + e.e.WriteArrayEnd() } else { - tisfi = e.kStructSfi(f) + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } e.mapStart(len(tisfi)) - keytyp := f.ti.keyType - for _, si := range tisfi { - e.mapElemKey() - e.kStructFieldKey(keytyp, si.path.encNameAsciiAlphaNum, si.encName) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) e.mapElemValue() - e.encodeValue(si.path.field(rv), nil) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } } - e.mapEnd() + e.c = 0 + e.e.WriteMapEnd() } } -func (e *Encoder) kStructFieldKey(keyType valueType, encNameAsciiAlphaNum bool, encName string) { - encStructFieldKey(encName, e.e, e.w(), keyType, encNameAsciiAlphaNum, e.js) -} - -func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) { - var newlen int +func (e *encoder[T]) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e // early asserts e, e.e are not nil once ti := f.ti toMap := !(ti.toArray || e.h.StructToArray) var mf map[string]interface{} if ti.flagMissingFielder { - mf = rv2i(rv).(MissingFielder).CodecMissingFields() toMap = true - newlen += len(mf) + mf = rv2i(rv).(MissingFielder).CodecMissingFields() } else if ti.flagMissingFielderPtr { - rv2 := e.addrRV(rv, ti.rt, ti.ptr) - mf = rv2i(rv2).(MissingFielder).CodecMissingFields() toMap = true - newlen += len(mf) + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } } + newlen := len(mf) tisfi := ti.sfi.source() newlen += len(tisfi) var fkvs = e.slist.get(newlen)[:newlen] recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int var kv sfiRv var j int + var sf encStructFieldObj if toMap { newlen = 0 - for _, si := range e.kStructSfi(f) { - kv.r = si.path.field(rv) - if si.path.omitEmpty && isEmptyValue(kv.r, e.h.TypeInfos, recur) { - continue + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + // kv.r = si.path.field(rv, false, si.encBuiltin || !chkCirRef) + // if si.omitEmpty && isEmptyValue(kv.r, e.h.TypeInfos, recur) { + // continue + // } + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) // test actual field val + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) } kv.v = si fkvs[newlen] = kv @@ -566,7 +506,7 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) { } var mf2s []stringIntf - if len(mf) > 0 { + if len(mf) != 0 { mf2s = make([]stringIntf, 0, len(mf)) for k, v := range mf { if k == "" { @@ -579,87 +519,142 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) { } } - e.mapStart(newlen + len(mf2s)) + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) // When there are missing fields, and Canonical flag is set, // we cannot have the missing fields and struct fields sorted independently. // We have to capture them together and sort as a unit. - if len(mf2s) > 0 && e.h.Canonical { + if len(mf2s) != 0 && e.h.Canonical { mf2w := make([]encStructFieldObj, newlen+len(mf2s)) for j = 0; j < newlen; j++ { kv = fkvs[j] - mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, kv.v.path.encNameAsciiAlphaNum, true} + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} } for _, v := range mf2s { - mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false} + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} j++ } sort.Sort((encStructFieldObjSlice)(mf2w)) - for _, v := range mf2w { - e.mapElemKey() - e.kStructFieldKey(ti.keyType, v.ascii, v.key) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } e.mapElemValue() - if v.isRv { - e.encodeValue(v.rv, nil) + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } } else { - e.encode(v.intf) + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + //e.encodeI(sf.intf) // MARKER inlined } } } else { keytyp := ti.keyType for j = 0; j < newlen; j++ { kv = fkvs[j] - e.mapElemKey() - e.kStructFieldKey(keytyp, kv.v.path.encNameAsciiAlphaNum, kv.v.encName) + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } e.mapElemValue() - e.encodeValue(kv.r, nil) + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } } for _, v := range mf2s { - e.mapElemKey() - e.kStructFieldKey(keytyp, false, v.v) + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) e.mapElemValue() - e.encode(v.i) + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + // e.encodeI(v.i) // MARKER inlined + j++ } } - e.mapEnd() + e.c = 0 + e.e.WriteMapEnd() } else { newlen = len(tisfi) for i, si := range tisfi { // use unsorted array (to match sequence in struct) - kv.r = si.path.field(rv) - // use the zero value. - // if a reference or struct, set to nil (so you do not output too much) - if si.path.omitEmpty && isEmptyValue(kv.r, e.h.TypeInfos, recur) { - switch kv.r.Kind() { - case reflect.Struct, reflect.Interface, reflect.Ptr, reflect.Array, reflect.Map, reflect.Slice: + // kv.r = si.path.field(rv, false, si.encBuiltin || !chkCirRef) + // kv.r = si.path.field(rv, false, !si.omitEmpty || si.encBuiltin || !chkCirRef) + if si.omitEmpty { + // use the zero value. + // if a reference or struct, set to nil (so you do not output too much) + kv.r = si.fieldNoAlloc(rv, false) // test actual field val + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { kv.r = reflect.Value{} //encode as nil } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) } + kv.v = si fkvs[i] = kv } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + // encode it all e.arrayStart(newlen) for j = 0; j < newlen; j++ { - e.arrayElem() - e.encodeValue(fkvs[j].r, nil) + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } } - e.arrayEnd() + e.c = 0 + e.e.WriteArrayEnd() } +END: // do not use defer. Instead, use explicit pool return at end of function. // defer has a cost we are trying to avoid. // If there is a panic and these slices are not returned, it is ok. e.slist.put(fkvs) } -func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) { +func (e *encoder[T]) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e // early asserts e, e.e are not nil once l := rvLenMap(rv) - e.mapStart(l) if l == 0 { - e.mapEnd() + e.e.WriteMapEmpty() return } + e.mapStart(l) // determine the underlying key and val encFn's for the map. // This eliminates some work which is done for each loop iteration i.e. @@ -669,7 +664,7 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) { // encoding type, because preEncodeValue may break it down to // a concrete type and kInterface will bomb. - var keyFn, valFn *codecFn + var keyFn, valFn *encFn[T] ktypeKind := reflect.Kind(f.ti.keykind) vtypeKind := reflect.Kind(f.ti.elemkind) @@ -681,7 +676,7 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) { rtvalkind = rtval.Kind() } if rtvalkind != reflect.Interface { - valFn = e.h.fn(rtval) + valFn = e.fn(rtval) } var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) @@ -689,19 +684,20 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) { rtkey := f.ti.key var keyTypeIsString = stringTypId == rt2id(rtkey) // rtkeyid if keyTypeIsString { - keyFn = e.h.fn(rtkey) + keyFn = e.fn(rtkey) } else { for rtkey.Kind() == reflect.Ptr { rtkey = rtkey.Elem() } if rtkey.Kind() != reflect.Interface { - keyFn = e.h.fn(rtkey) + keyFn = e.fn(rtkey) } } if e.h.Canonical { e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) - e.mapEnd() + e.c = 0 + e.e.WriteMapEnd() return } @@ -710,22 +706,35 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) { var it mapIter mapRange(&it, rv, rvk, rvv, true) - for it.Next() { - e.mapElemKey() + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) if keyTypeIsString { - e.e.EncodeString(it.Key().String()) + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) } else { - e.encodeValue(it.Key(), keyFn) + e.encodeValue(rv, keyFn) } e.mapElemValue() - e.encodeValue(it.Value(), valFn) + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } } it.Done() - e.mapEnd() + e.c = 0 + e.e.WriteMapEnd() } -func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *codecFn) { +func (e *encoder[T]) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFn[T]) { + _ = e.e // early asserts e, e.e are not nil once // The base kind of the type of the map key is sufficient for ordering. // We only do out of band if that kind is not ordered (number or string), bool or time.Time. // If the key is a predeclared type, directly call methods on encDriver e.g. EncodeString @@ -735,9 +744,11 @@ func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valF mks := rv.MapKeys() rtkeyKind := rtkey.Kind() - kfast := mapKeyFastKindFor(rtkeyKind) - visindirect := mapStoresElemIndirect(uintptr(ti.elemsize)) - visref := refBitset.isset(ti.elemkind) + mparams := getMapReqParams(ti) + + // kfast := mapKeyFastKindFor(rtkeyKind) + // visindirect := mapStoresElemIndirect(uintptr(ti.elemsize)) + // visref := refBitset.isset(ti.elemkind) switch rtkeyKind { case reflect.Bool: @@ -751,104 +762,110 @@ func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valF mks[0], mks[1] = mks[1], mks[0] } for i := range mks { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeBool(mks[i].Bool()) } else { e.encodeValueNonNil(mks[i], keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mks[i], rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) } case reflect.String: - mksv := make([]stringRv, len(mks)) + mksv := make([]orderedRv[string], len(mks)) for i, k := range mks { v := &mksv[i] v.r = k - v.v = k.String() + v.v = rvGetString(k) } - sort.Sort(stringRvSlice(mksv)) + slices.SortFunc(mksv, cmpOrderedRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeString(mksv[i].v) } else { e.encodeValueNonNil(mksv[i].r, keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: - mksv := make([]uint64Rv, len(mks)) + mksv := make([]orderedRv[uint64], len(mks)) for i, k := range mks { v := &mksv[i] v.r = k v.v = k.Uint() } - sort.Sort(uint64RvSlice(mksv)) + slices.SortFunc(mksv, cmpOrderedRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeUint(mksv[i].v) } else { e.encodeValueNonNil(mksv[i].r, keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: - mksv := make([]int64Rv, len(mks)) + mksv := make([]orderedRv[int64], len(mks)) for i, k := range mks { v := &mksv[i] v.r = k v.v = k.Int() } - sort.Sort(int64RvSlice(mksv)) + slices.SortFunc(mksv, cmpOrderedRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeInt(mksv[i].v) } else { e.encodeValueNonNil(mksv[i].r, keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } case reflect.Float32: - mksv := make([]float64Rv, len(mks)) + mksv := make([]orderedRv[float64], len(mks)) for i, k := range mks { v := &mksv[i] v.r = k v.v = k.Float() } - sort.Sort(float64RvSlice(mksv)) + slices.SortFunc(mksv, cmpOrderedRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeFloat32(float32(mksv[i].v)) } else { e.encodeValueNonNil(mksv[i].r, keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } case reflect.Float64: - mksv := make([]float64Rv, len(mks)) + mksv := make([]orderedRv[float64], len(mks)) for i, k := range mks { v := &mksv[i] v.r = k v.v = k.Float() } - sort.Sort(float64RvSlice(mksv)) + slices.SortFunc(mksv, cmpOrderedRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) if rtkeydecl { e.e.EncodeFloat64(mksv[i].v) } else { e.encodeValueNonNil(mksv[i].r, keyFn) } e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } default: if rtkey == timeTyp { @@ -858,12 +875,13 @@ func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valF v.r = k v.v = rv2i(k).(time.Time) } - sort.Sort(timeRvSlice(mksv)) + slices.SortFunc(mksv, cmpTimeRv) for i := range mksv { - e.mapElemKey() + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) e.e.EncodeTime(mksv[i].v) e.mapElemValue() - e.encodeValue(mapGet(rv, mksv[i].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) } break } @@ -874,41 +892,27 @@ func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valF mksv := bs0 mksbv := make([]bytesRv, len(mks)) - func() { - // replicate sideEncode logic - defer func(wb bytesEncAppender, bytes bool, c containerState, state interface{}) { - e.wb = wb - e.bytes = bytes - e.c = c - e.e.restoreState(state) - }(e.wb, e.bytes, e.c, e.e.captureState()) - - // e2 := NewEncoderBytes(&mksv, e.hh) - e.wb = bytesEncAppender{mksv[:0], &mksv} - e.bytes = true - e.c = 0 - e.e.resetState() - + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) for i, k := range mks { v := &mksbv[i] l := len(mksv) - - e.c = containerMapKey - e.encodeValue(k, nil) - e.atEndOfEncode() - e.w().end() - + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() v.r = k v.v = mksv[l:] } - }() + }) - sort.Sort(bytesRvSlice(mksbv)) + slices.SortFunc(mksbv, cmpBytesRv) for j := range mksbv { - e.mapElemKey() - e.encWr.writeb(mksbv[j].v) + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) e.mapElemValue() - e.encodeValue(mapGet(rv, mksbv[j].r, rvv, kfast, visindirect, visref), valFn) + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) } e.blist.put(mksv) if !byteSliceSameData(bs0, mksv) { @@ -917,91 +921,29 @@ func (e *Encoder) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valF } } -// Encoder writes an object to an output stream in a supported format. -// -// Encoder is NOT safe for concurrent use i.e. a Encoder cannot be used -// concurrently in multiple goroutines. -// -// However, as Encoder could be allocation heavy to initialize, a Reset method is provided -// so its state can be reused to decode new input streams repeatedly. -// This is the idiomatic way to use. -type Encoder struct { - panicHdl - - e encDriver - - h *BasicHandle - - // hopefully, reduce derefencing cost by laying the encWriter inside the Encoder - encWr - - // ---- cpu cache line boundary - hh Handle - - blist bytesFreelist - err error - - // ---- cpu cache line boundary - - // ---- writable fields during execution --- *try* to keep in sep cache line - - // ci holds interfaces during an encoding (if CheckCircularRef=true) - // - // We considered using a []uintptr (slice of pointer addresses) retrievable via rv.UnsafeAddr. - // However, it is possible for the same pointer to point to 2 different types e.g. - // type T struct { tHelper } - // Here, for var v T; &v and &v.tHelper are the same pointer. - // Consequently, we need a tuple of type and pointer, which interface{} natively provides. - ci []interface{} // []uintptr - - perType encPerType - - slist sfiRvFreelist -} - -// NewEncoder returns an Encoder for encoding into an io.Writer. -// -// For efficiency, Users are encouraged to configure WriterBufferSize on the handle -// OR pass in a memory buffered writer (eg bufio.Writer, bytes.Buffer). -func NewEncoder(w io.Writer, h Handle) *Encoder { - e := h.newEncDriver().encoder() - if w != nil { - e.Reset(w) - } - return e -} - -// NewEncoderBytes returns an encoder for encoding directly and efficiently -// into a byte slice, using zero-copying to temporary slices. -// -// It will potentially replace the output byte slice pointed to. -// After encoding, the out parameter contains the encoded contents. -func NewEncoderBytes(out *[]byte, h Handle) *Encoder { - e := h.newEncDriver().encoder() - if out != nil { - e.ResetBytes(out) - } - return e -} - -func (e *Encoder) HandleName() string { - return e.hh.Name() -} - -func (e *Encoder) init(h Handle) { +func (e *encoder[T]) init(h Handle) { initHandle(h) - e.err = errEncoderNotInitialized - e.bytes = true + callMake(&e.e) e.hh = h e.h = h.getBasicHandle() - e.be = e.hh.isBinary() -} + // e.be = e.hh.isBinary() + e.err = errEncoderNotInitialized + + // e.fp = fastpathEList[T]() + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEs[T]) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } -func (e *Encoder) w() *encWr { - return &e.encWr + e.reset() } -func (e *Encoder) resetCommon() { +func (e *encoder[T]) reset() { e.e.reset() if e.ci != nil { e.ci = e.ci[:0] @@ -1012,26 +954,6 @@ func (e *Encoder) resetCommon() { e.err = nil } -// Reset resets the Encoder with a new output stream. -// -// This accommodates using the state of the Encoder, -// where it has "cached" information about sub-engines. -func (e *Encoder) Reset(w io.Writer) { - e.bytes = false - if e.wf == nil { - e.wf = new(bufioEncWriter) - } - e.wf.reset(w, e.h.WriterBufferSize, &e.blist) - e.resetCommon() -} - -// ResetBytes resets the Encoder with a new destination output []byte. -func (e *Encoder) ResetBytes(out *[]byte) { - e.bytes = true - e.wb.reset(encInBytes(out), out) - e.resetCommon() -} - // Encode writes an object into a stream. // // Encoding can be configured via the struct tag for the fields. @@ -1117,73 +1039,77 @@ func (e *Encoder) ResetBytes(out *[]byte) { // Note that struct field names and keys in map[string]XXX will be treated as symbols. // Some formats support symbols (e.g. binc) and will properly encode the string // only once in the stream, and use a tag to refer to it thereafter. -func (e *Encoder) Encode(v interface{}) (err error) { +// +// Note that an error from an Encode call will make the Encoder unusable moving forward. +// This is because the state of the Encoder, it's output stream, etc are no longer stable. +// Any subsequent calls to Encode will trigger the same error. +func (e *encoder[T]) Encode(v interface{}) (err error) { // tried to use closure, as runtime optimizes defer with no params. // This seemed to be causing weird issues (like circular reference found, unexpected panic, etc). // Also, see https://github.com/golang/go/issues/14939#issuecomment-417836139 - if !debugging { - defer func() { - // if error occurred during encoding, return that error; - // else if error occurred on end'ing (i.e. during flush), return that error. - if x := recover(); x != nil { - panicValToErr(e, x, &e.err) - err = e.err - } - }() - } - - e.MustEncode(v) + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) return } // MustEncode is like Encode, but panics if unable to Encode. // // Note: This provides insight to the code location that triggered the error. -func (e *Encoder) MustEncode(v interface{}) { +// +// Note that an error from an Encode call will make the Encoder unusable moving forward. +// This is because the state of the Encoder, it's output stream, etc are no longer stable. +// Any subsequent calls to Encode will trigger the same error. +func (e *encoder[T]) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoder[T]) mustEncode(v interface{}) { halt.onerror(e.err) if e.hh == nil { halt.onerror(errNoFormatHandle) } e.calls++ - e.encode(v) + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + // e.encodeI(v) // MARKER inlined e.calls-- if e.calls == 0 { - e.atEndOfEncode() - e.w().end() + e.e.atEndOfEncode() + e.e.writerEnd() } } -// Release is a no-op. -// -// Deprecated: Pooled resources are not used with an Encoder. -// This method is kept for compatibility reasons only. -func (e *Encoder) Release() { +func (e *encoder[T]) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } } -func (e *Encoder) encode(iv interface{}) { - // MARKER: a switch with only concrete types can be optimized. - // consequently, we deal with nil and interfaces outside the switch. - - if iv == nil { - e.e.EncodeNil() - return +func (e *encoder[T]) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + // panic("invalid type passed to encodeBuiltin") + // halt.errorf("invalid type passed to encodeBuiltin: %T", iv) + // MARKER: calling halt.errorf pulls in fmt.Sprintf/Errorf which makes this non-inlineable + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") } +} - rv, ok := isNil(iv) - if ok { - e.e.EncodeNil() - return - } +func (e *encoder[T]) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} +func (e *encoder[T]) encodeBuiltin(iv interface{}) (ok bool) { + ok = true switch v := iv.(type) { - // case nil: + case nil: + e.e.EncodeNil() // case Selfer: case Raw: e.rawBytes(v) - case reflect.Value: - e.encodeValue(v, nil) - case string: e.e.EncodeString(v) case bool: @@ -1221,157 +1147,125 @@ func (e *Encoder) encode(iv interface{}) { case time.Time: e.e.EncodeTime(v) case []byte: - e.e.EncodeStringBytesRaw(v) - case *Raw: - e.rawBytes(*v) - case *string: - e.e.EncodeString(*v) - case *bool: - e.e.EncodeBool(*v) - case *int: - e.e.EncodeInt(int64(*v)) - case *int8: - e.e.EncodeInt(int64(*v)) - case *int16: - e.e.EncodeInt(int64(*v)) - case *int32: - e.e.EncodeInt(int64(*v)) - case *int64: - e.e.EncodeInt(*v) - case *uint: - e.e.EncodeUint(uint64(*v)) - case *uint8: - e.e.EncodeUint(uint64(*v)) - case *uint16: - e.e.EncodeUint(uint64(*v)) - case *uint32: - e.e.EncodeUint(uint64(*v)) - case *uint64: - e.e.EncodeUint(*v) - case *uintptr: - e.e.EncodeUint(uint64(*v)) - case *float32: - e.e.EncodeFloat32(*v) - case *float64: - e.e.EncodeFloat64(*v) - case *complex64: - e.encodeComplex64(*v) - case *complex128: - e.encodeComplex128(*v) - case *time.Time: - e.e.EncodeTime(*v) - case *[]byte: - if *v == nil { - e.e.EncodeNil() - } else { - e.e.EncodeStringBytesRaw(*v) - } + e.e.EncodeBytes(v) // e.e.EncodeStringBytesRaw(v) default: // we can't check non-predefined types, as they might be a Selfer or extension. - if skipFastpathTypeSwitchInDirectCall || !fastpathEncodeTypeSwitch(iv, e) { - e.encodeValue(rv, nil) - } + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) } + return } // encodeValue will encode a value. // // Note that encodeValue will handle nil in the stream early, so that the // subsequent calls i.e. kXXX methods, etc do not have to handle it themselves. -func (e *Encoder) encodeValue(rv reflect.Value, fn *codecFn) { +func (e *encoder[T]) encodeValue(rv reflect.Value, fn *encFn[T]) { + // MARKER: We check if value is nil here, so that the kXXX method do not have to. // if a valid fn is passed, it MUST BE for the dereferenced type of rv - // MARKER: We check if value is nil here, so that the kXXX method do not have to. + var ciPushes int + // if e.h.CheckCircularRef { + // ciPushes = e.ci.pushRV(rv) + // } - var sptr interface{} var rvp reflect.Value var rvpValid bool -TOP: + +RV: switch rv.Kind() { case reflect.Ptr: if rvIsNil(rv) { e.e.EncodeNil() - return + goto END } rvpValid = true rvp = rv rv = rv.Elem() - goto TOP + // fn = nil // underlying type still same - no change + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV case reflect.Interface: if rvIsNil(rv) { e.e.EncodeNil() - return + goto END } rvpValid = false rvp = reflect.Value{} rv = rv.Elem() - goto TOP - case reflect.Struct: - if rvpValid && e.h.CheckCircularRef { - sptr = rv2i(rvp) - for _, vv := range e.ci { - if eq4i(sptr, vv) { // error if sptr already seen - e.errorf("circular reference found: %p, %T", sptr, sptr) - } + fn = nil // underlying type may change, so prompt a reset + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() } - e.ci = append(e.ci, sptr) + goto END } - case reflect.Slice, reflect.Map, reflect.Chan: + case reflect.Slice, reflect.Chan: if rvIsNil(rv) { - e.e.EncodeNil() - return + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END } case reflect.Invalid, reflect.Func: e.e.EncodeNil() - return + goto END } if fn == nil { - fn = e.h.fn(rv.Type()) + fn = e.fn(rv.Type()) } if !fn.i.addrE { // typically, addrE = false, so check it first // keep rv same } else if rvpValid { rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) } else { rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) } fn.fe(e, &fn.i, rv) - if sptr != nil { // remove sptr - e.ci = e.ci[:len(e.ci)-1] +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) } } -// encodeValueNonNil can encode a number, bool, or string -// OR non-nil values of kind map, slice and chan. -func (e *Encoder) encodeValueNonNil(rv reflect.Value, fn *codecFn) { - if fn == nil { - fn = e.h.fn(rv.Type()) - } - +func (e *encoder[T]) encodeValueNonNil(rv reflect.Value, fn *encFn[T]) { + // only call this if a primitive (number, bool, string) OR + // a non-nil collection (map/slice/chan). + // + // Expects fn to be non-nil if fn.i.addrE { // typically, addrE = false, so check it first - rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } } fn.fe(e, &fn.i, rv) } -// addrRV returns a addressable value which may be readonly -func (e *Encoder) addrRV(rv reflect.Value, typ, ptrType reflect.Type) (rva reflect.Value) { - if rv.CanAddr() { - return rvAddr(rv, ptrType) - } - if e.h.NoAddressableReadonly { - rva = reflect.New(typ) - rvSetDirect(rva.Elem(), rv) - return +func (e *encoder[T]) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) } - return rvAddr(e.perType.AddressableRO(rv), ptrType) } -func (e *Encoder) marshalUtf8(bs []byte, fnerr error) { - e.onerror(fnerr) +func (e *encoder[T]) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) if bs == nil { e.e.EncodeNil() } else { @@ -1379,148 +1273,380 @@ func (e *Encoder) marshalUtf8(bs []byte, fnerr error) { } } -func (e *Encoder) marshalAsis(bs []byte, fnerr error) { - e.onerror(fnerr) +func (e *encoder[T]) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) if bs == nil { e.e.EncodeNil() } else { - e.encWr.writeb(bs) // e.asis(bs) + e.e.writeBytesAsis(bs) // e.asis(bs) } } -func (e *Encoder) marshalRaw(bs []byte, fnerr error) { - e.onerror(fnerr) - if bs == nil { - e.e.EncodeNil() - } else { - e.e.EncodeStringBytesRaw(bs) - } +func (e *encoder[T]) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) } -func (e *Encoder) rawBytes(vv Raw) { +func (e *encoder[T]) rawBytes(vv Raw) { v := []byte(vv) if !e.h.Raw { - e.errorf("Raw values cannot be encoded: %v", v) + halt.errorBytes("Raw values cannot be encoded: ", v) } - e.encWr.writeb(v) + e.e.writeBytesAsis(v) } -func (e *Encoder) wrapErr(v error, err *error) { - *err = wrapCodecErr(v, e.hh.Name(), 0, true) +func (e *encoder[T]) fn(t reflect.Type) *encFn[T] { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoder[T]) fnNoExt(t reflect.Type) *encFn[T] { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) } // ---- container tracker methods // Note: We update the .c after calling the callback. -// This way, the callback can know what the last status was. +// +// Callbacks ie Write(Map|Array)XXX should not use the containerState. +// It is there for post-callback use. +// Instead, callbacks have a parameter to tell if first time or not. +// +// Some code is commented out below, as they are manually inlined. +// Commented code is retained here for convernience. -func (e *Encoder) mapStart(length int) { +func (e *encoder[T]) mapStart(length int) { e.e.WriteMapStart(length) e.c = containerMapStart } -func (e *Encoder) mapElemKey() { - if e.js { - e.jsondriver().WriteMapElemKey() - } - e.c = containerMapKey -} +// func (e *encoder[T]) mapElemKey(firstTime bool) { +// e.e.WriteMapElemKey(firstTime) +// e.c = containerMapKey +// } -func (e *Encoder) mapElemValue() { - if e.js { - e.jsondriver().WriteMapElemValue() - } +func (e *encoder[T]) mapElemValue() { + e.e.WriteMapElemValue() e.c = containerMapValue } -func (e *Encoder) mapEnd() { - e.e.WriteMapEnd() - e.c = 0 -} +// func (e *encoder[T]) mapEnd() { +// e.e.WriteMapEnd() +// e.c = 0 +// } -func (e *Encoder) arrayStart(length int) { +func (e *encoder[T]) arrayStart(length int) { e.e.WriteArrayStart(length) e.c = containerArrayStart } -func (e *Encoder) arrayElem() { - if e.js { - e.jsondriver().WriteArrayElem() - } - e.c = containerArrayElem +// func (e *encoder[T]) arrayElem(firstTime bool) { +// e.e.WriteArrayElem(firstTime) +// e.c = containerArrayElem +// } + +// func (e *encoder[T]) arrayEnd() { +// e.e.WriteArrayEnd() +// e.c = 0 +// } + +// ---------- + +func (e *encoder[T]) writerEnd() { + e.e.writerEnd() } -func (e *Encoder) arrayEnd() { - e.e.WriteArrayEnd() - e.c = 0 +func (e *encoder[T]) atEndOfEncode() { + e.e.atEndOfEncode() } -// ---------- +// Reset resets the Encoder with a new output stream. +// +// This accommodates using the state of the Encoder, +// where it has "cached" information about sub-engines. +func (e *encoder[T]) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} -func (e *Encoder) haltOnMbsOddLen(length int) { - if length&1 != 0 { // similar to &1==1 or %2 == 1 - e.errorf("mapBySlice requires even slice length, but got %v", length) +// ResetBytes resets the Encoder with a new destination output []byte. +func (e *encoder[T]) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) } + e.resetBytes(out) } -func (e *Encoder) atEndOfEncode() { - // e.e.atEndOfEncode() - if e.js { - e.jsondriver().atEndOfEncode() +// only call this iff you are sure it is a bytes encoder +func (e *encoder[T]) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut } + e.e.resetOutBytes(out) } -func (e *Encoder) sideEncode(v interface{}, basetype reflect.Type, bs *[]byte) { - // rv := baseRV(v) - // e2 := NewEncoderBytes(bs, e.hh) - // e2.encodeValue(rv, e2.h.fnNoExt(basetype)) - // e2.atEndOfEncode() - // e2.w().end() +// ---- - defer func(wb bytesEncAppender, bytes bool, c containerState, state interface{}) { - e.wb = wb - e.bytes = bytes - e.c = c - e.e.restoreState(state) - }(e.wb, e.bytes, e.c, e.e.captureState()) +func (helperEncDriver[T]) newEncoderBytes(out *[]byte, h Handle) *encoder[T] { + var c1 encoder[T] + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} - e.wb = bytesEncAppender{encInBytes(bs)[:0], bs} - e.bytes = true - e.c = 0 - e.e.resetState() +func (helperEncDriver[T]) newEncoderIO(out io.Writer, h Handle) *encoder[T] { + var c1 encoder[T] + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} - // must call using fnNoExt - rv := baseRV(v) - e.encodeValue(rv, e.h.fnNoExt(basetype)) - e.atEndOfEncode() - e.w().end() +func (helperEncDriver[T]) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEs[T]) (f *fastpathE[T], u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +// ---- + +func (helperEncDriver[T]) encFindRtidFn(s []encRtidFn[T], rtid uintptr) (i uint, fn *encFn[T]) { + // binary search. Adapted from sort/search.go. Use goto (not for loop) to allow inlining. + var h uint // var h, i uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return } -func encInBytes(out *[]byte) (in []byte) { - in = *out - if in == nil { - in = make([]byte, defEncByteBufSize) +func (helperEncDriver[T]) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFn[T]) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFn[T]](v)) } return } -func encStructFieldKey(encName string, ee encDriver, w *encWr, - keyType valueType, encNameAsciiAlphaNum bool, js bool) { - // use if-else-if, not switch (which compiles to binary-search) - // since keyType is typically valueTypeString, branch prediction is pretty good. +func (dh helperEncDriver[T]) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEs[T], checkExt bool) (fn *encFn[T]) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} - if keyType == valueTypeString { - if js && encNameAsciiAlphaNum { // keyType == valueTypeString - w.writeqstr(encName) - } else { // keyType == valueTypeString - ee.EncodeString(encName) +func (dh helperEncDriver[T]) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFn[T]) { + rtid := rt2id(rt) + var sp []encRtidFn[T] = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriver[T]) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFn[T]) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFn[T] + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + // since this is an atomic load/store, we MUST use a different array each time, + // else we have a data race when a store is happening simultaneously with a encFindRtidFn call. + if sp == nil { + sp = []encRtidFn[T]{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFn[T], len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFn[T]{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) } - } else if keyType == valueTypeInt { - ee.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) - } else if keyType == valueTypeUint { - ee.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) - } else if keyType == valueTypeFloat { - ee.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } + mu.Unlock() + return +} + +func (dh helperEncDriver[T]) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEs[T], + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFn[T]) { + fn = new(encFn[T]) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + // anything can be an extension except the built-in ones: time, raw and rawext. + // ensure we check for these types, then if extension, before checking if + // it implementes one of the pre-declared interfaces. + + // fi.addrEf = true + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoder[T]).kTime + } else if rtid == rawTypId { + fn.fe = (*encoder[T]).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoder[T]).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoder[T]).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoder[T]).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoder[T]).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + //If JSON, we should check JSONMarshal before textMarshal + fn.fe = (*encoder[T]).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoder[T]).textMarshal + fi.addrE = ti.flagTextMarshalerPtr } else { - halt.errorf("invalid struct key type: %v", keyType) + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + // by default (without using unsafe), + // if an array is not addressable, converting from an array to a slice + // requires an allocation (see helper_not_unsafe.go: func rvGetSlice4Array). + // + // (Non-addressable arrays mostly occur as keys/values from a map). + // + // However, fastpath functions are mostly for slices of numbers or strings, + // which are small by definition and thus allocation should be fast/cheap in time. + // + // Consequently, the value of doing this quick allocation to elide the overhead cost of + // non-optimized (not-unsafe) reflection is a fair price. + var rtid2 uintptr + if !ti.flagHasPkgPath { // un-named type (slice or mpa or array) + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) // ti.key for arrays = reflect.SliceOf(ti.elem) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { // named type (with underlying type of map or slice or array) + // try to use mapping for underlying type + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoder[T], xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoder[T]).kBool + case reflect.String: + // Do not use different functions based on StringToRaw option, as that will statically + // set the function for a string type, and if the Handle is modified thereafter, + // behaviour is non-deterministic + // i.e. DO NOT DO: + // if x.StringToRaw { + // fn.fe = (*encoder[T]).kStringToRaw + // } else { + // fn.fe = (*encoder[T]).kStringEnc + // } + + fn.fe = (*encoder[T]).kString + case reflect.Int: + fn.fe = (*encoder[T]).kInt + case reflect.Int8: + fn.fe = (*encoder[T]).kInt8 + case reflect.Int16: + fn.fe = (*encoder[T]).kInt16 + case reflect.Int32: + fn.fe = (*encoder[T]).kInt32 + case reflect.Int64: + fn.fe = (*encoder[T]).kInt64 + case reflect.Uint: + fn.fe = (*encoder[T]).kUint + case reflect.Uint8: + fn.fe = (*encoder[T]).kUint8 + case reflect.Uint16: + fn.fe = (*encoder[T]).kUint16 + case reflect.Uint32: + fn.fe = (*encoder[T]).kUint32 + case reflect.Uint64: + fn.fe = (*encoder[T]).kUint64 + case reflect.Uintptr: + fn.fe = (*encoder[T]).kUintptr + case reflect.Float32: + fn.fe = (*encoder[T]).kFloat32 + case reflect.Float64: + fn.fe = (*encoder[T]).kFloat64 + case reflect.Complex64: + fn.fe = (*encoder[T]).kComplex64 + case reflect.Complex128: + fn.fe = (*encoder[T]).kComplex128 + case reflect.Chan: + fn.fe = (*encoder[T]).kChan + case reflect.Slice: + fn.fe = (*encoder[T]).kSlice + case reflect.Array: + fn.fe = (*encoder[T]).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoder[T]).kStructSimple + } else { + fn.fe = (*encoder[T]).kStruct + } + case reflect.Map: + fn.fe = (*encoder[T]).kMap + case reflect.Interface: + // encode: reflect.Interface are handled already by preEncodeValue + fn.fe = (*encoder[T]).kErr + default: + // reflect.Ptr and reflect.Interface are handled already by preEncodeValue + fn.fe = (*encoder[T]).kErr + } + } } + return } diff --git a/vendor/github.com/ugorji/go/codec/fast-path.generated.go b/vendor/github.com/ugorji/go/codec/fast-path.generated.go deleted file mode 100644 index 941ef798f..000000000 --- a/vendor/github.com/ugorji/go/codec/fast-path.generated.go +++ /dev/null @@ -1,6157 +0,0 @@ -//go:build !notfastpath && !codec.notfastpath -// +build !notfastpath,!codec.notfastpath - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from fast-path.go.tmpl - DO NOT EDIT. - -package codec - -// Fast path functions try to create a fast path encode or decode implementation -// for common maps and slices. -// -// We define the functions and register them in this single file -// so as not to pollute the encode.go and decode.go, and create a dependency in there. -// This file can be omitted without causing a build failure. -// -// The advantage of fast paths is: -// - Many calls bypass reflection altogether -// -// Currently support -// - slice of all builtin types (numeric, bool, string, []byte) -// - maps of builtin types to builtin or interface{} type, EXCEPT FOR -// keys of type uintptr, int8/16/32, uint16/32, float32/64, bool, interface{} -// AND values of type type int8/16/32, uint16/32 -// This should provide adequate "typical" implementations. -// -// Note that fast track decode functions must handle values for which an address cannot be obtained. -// For example: -// m2 := map[string]int{} -// p2 := []interface{}{m2} -// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. -// - -import ( - "reflect" - "sort" -) - -const fastpathEnabled = true - -type fastpathT struct{} - -var fastpathTV fastpathT - -type fastpathE struct { - rt reflect.Type - encfn func(*Encoder, *codecFnInfo, reflect.Value) - decfn func(*Decoder, *codecFnInfo, reflect.Value) -} - -type fastpathA [56]fastpathE -type fastpathARtid [56]uintptr - -var fastpathAv fastpathA -var fastpathAvRtid fastpathARtid - -type fastpathAslice struct{} - -func (fastpathAslice) Len() int { return 56 } -func (fastpathAslice) Less(i, j int) bool { - return fastpathAvRtid[uint(i)] < fastpathAvRtid[uint(j)] -} -func (fastpathAslice) Swap(i, j int) { - fastpathAvRtid[uint(i)], fastpathAvRtid[uint(j)] = fastpathAvRtid[uint(j)], fastpathAvRtid[uint(i)] - fastpathAv[uint(i)], fastpathAv[uint(j)] = fastpathAv[uint(j)], fastpathAv[uint(i)] -} - -func fastpathAvIndex(rtid uintptr) int { - // use binary search to grab the index (adapted from sort/search.go) - // Note: we use goto (instead of for loop) so this can be inlined. - // h, i, j := 0, 0, 56 - var h, i uint - var j uint = 56 -LOOP: - if i < j { - h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 - if fastpathAvRtid[h] < rtid { - i = h + 1 - } else { - j = h - } - goto LOOP - } - if i < 56 && fastpathAvRtid[i] == rtid { - return int(i) - } - return -1 -} - -// due to possible initialization loop error, make fastpath in an init() -func init() { - var i uint = 0 - fn := func(v interface{}, - fe func(*Encoder, *codecFnInfo, reflect.Value), - fd func(*Decoder, *codecFnInfo, reflect.Value)) { - xrt := reflect.TypeOf(v) - xptr := rt2id(xrt) - fastpathAvRtid[i] = xptr - fastpathAv[i] = fastpathE{xrt, fe, fd} - i++ - } - - fn([]interface{}(nil), (*Encoder).fastpathEncSliceIntfR, (*Decoder).fastpathDecSliceIntfR) - fn([]string(nil), (*Encoder).fastpathEncSliceStringR, (*Decoder).fastpathDecSliceStringR) - fn([][]byte(nil), (*Encoder).fastpathEncSliceBytesR, (*Decoder).fastpathDecSliceBytesR) - fn([]float32(nil), (*Encoder).fastpathEncSliceFloat32R, (*Decoder).fastpathDecSliceFloat32R) - fn([]float64(nil), (*Encoder).fastpathEncSliceFloat64R, (*Decoder).fastpathDecSliceFloat64R) - fn([]uint8(nil), (*Encoder).fastpathEncSliceUint8R, (*Decoder).fastpathDecSliceUint8R) - fn([]uint64(nil), (*Encoder).fastpathEncSliceUint64R, (*Decoder).fastpathDecSliceUint64R) - fn([]int(nil), (*Encoder).fastpathEncSliceIntR, (*Decoder).fastpathDecSliceIntR) - fn([]int32(nil), (*Encoder).fastpathEncSliceInt32R, (*Decoder).fastpathDecSliceInt32R) - fn([]int64(nil), (*Encoder).fastpathEncSliceInt64R, (*Decoder).fastpathDecSliceInt64R) - fn([]bool(nil), (*Encoder).fastpathEncSliceBoolR, (*Decoder).fastpathDecSliceBoolR) - - fn(map[string]interface{}(nil), (*Encoder).fastpathEncMapStringIntfR, (*Decoder).fastpathDecMapStringIntfR) - fn(map[string]string(nil), (*Encoder).fastpathEncMapStringStringR, (*Decoder).fastpathDecMapStringStringR) - fn(map[string][]byte(nil), (*Encoder).fastpathEncMapStringBytesR, (*Decoder).fastpathDecMapStringBytesR) - fn(map[string]uint8(nil), (*Encoder).fastpathEncMapStringUint8R, (*Decoder).fastpathDecMapStringUint8R) - fn(map[string]uint64(nil), (*Encoder).fastpathEncMapStringUint64R, (*Decoder).fastpathDecMapStringUint64R) - fn(map[string]int(nil), (*Encoder).fastpathEncMapStringIntR, (*Decoder).fastpathDecMapStringIntR) - fn(map[string]int32(nil), (*Encoder).fastpathEncMapStringInt32R, (*Decoder).fastpathDecMapStringInt32R) - fn(map[string]float64(nil), (*Encoder).fastpathEncMapStringFloat64R, (*Decoder).fastpathDecMapStringFloat64R) - fn(map[string]bool(nil), (*Encoder).fastpathEncMapStringBoolR, (*Decoder).fastpathDecMapStringBoolR) - fn(map[uint8]interface{}(nil), (*Encoder).fastpathEncMapUint8IntfR, (*Decoder).fastpathDecMapUint8IntfR) - fn(map[uint8]string(nil), (*Encoder).fastpathEncMapUint8StringR, (*Decoder).fastpathDecMapUint8StringR) - fn(map[uint8][]byte(nil), (*Encoder).fastpathEncMapUint8BytesR, (*Decoder).fastpathDecMapUint8BytesR) - fn(map[uint8]uint8(nil), (*Encoder).fastpathEncMapUint8Uint8R, (*Decoder).fastpathDecMapUint8Uint8R) - fn(map[uint8]uint64(nil), (*Encoder).fastpathEncMapUint8Uint64R, (*Decoder).fastpathDecMapUint8Uint64R) - fn(map[uint8]int(nil), (*Encoder).fastpathEncMapUint8IntR, (*Decoder).fastpathDecMapUint8IntR) - fn(map[uint8]int32(nil), (*Encoder).fastpathEncMapUint8Int32R, (*Decoder).fastpathDecMapUint8Int32R) - fn(map[uint8]float64(nil), (*Encoder).fastpathEncMapUint8Float64R, (*Decoder).fastpathDecMapUint8Float64R) - fn(map[uint8]bool(nil), (*Encoder).fastpathEncMapUint8BoolR, (*Decoder).fastpathDecMapUint8BoolR) - fn(map[uint64]interface{}(nil), (*Encoder).fastpathEncMapUint64IntfR, (*Decoder).fastpathDecMapUint64IntfR) - fn(map[uint64]string(nil), (*Encoder).fastpathEncMapUint64StringR, (*Decoder).fastpathDecMapUint64StringR) - fn(map[uint64][]byte(nil), (*Encoder).fastpathEncMapUint64BytesR, (*Decoder).fastpathDecMapUint64BytesR) - fn(map[uint64]uint8(nil), (*Encoder).fastpathEncMapUint64Uint8R, (*Decoder).fastpathDecMapUint64Uint8R) - fn(map[uint64]uint64(nil), (*Encoder).fastpathEncMapUint64Uint64R, (*Decoder).fastpathDecMapUint64Uint64R) - fn(map[uint64]int(nil), (*Encoder).fastpathEncMapUint64IntR, (*Decoder).fastpathDecMapUint64IntR) - fn(map[uint64]int32(nil), (*Encoder).fastpathEncMapUint64Int32R, (*Decoder).fastpathDecMapUint64Int32R) - fn(map[uint64]float64(nil), (*Encoder).fastpathEncMapUint64Float64R, (*Decoder).fastpathDecMapUint64Float64R) - fn(map[uint64]bool(nil), (*Encoder).fastpathEncMapUint64BoolR, (*Decoder).fastpathDecMapUint64BoolR) - fn(map[int]interface{}(nil), (*Encoder).fastpathEncMapIntIntfR, (*Decoder).fastpathDecMapIntIntfR) - fn(map[int]string(nil), (*Encoder).fastpathEncMapIntStringR, (*Decoder).fastpathDecMapIntStringR) - fn(map[int][]byte(nil), (*Encoder).fastpathEncMapIntBytesR, (*Decoder).fastpathDecMapIntBytesR) - fn(map[int]uint8(nil), (*Encoder).fastpathEncMapIntUint8R, (*Decoder).fastpathDecMapIntUint8R) - fn(map[int]uint64(nil), (*Encoder).fastpathEncMapIntUint64R, (*Decoder).fastpathDecMapIntUint64R) - fn(map[int]int(nil), (*Encoder).fastpathEncMapIntIntR, (*Decoder).fastpathDecMapIntIntR) - fn(map[int]int32(nil), (*Encoder).fastpathEncMapIntInt32R, (*Decoder).fastpathDecMapIntInt32R) - fn(map[int]float64(nil), (*Encoder).fastpathEncMapIntFloat64R, (*Decoder).fastpathDecMapIntFloat64R) - fn(map[int]bool(nil), (*Encoder).fastpathEncMapIntBoolR, (*Decoder).fastpathDecMapIntBoolR) - fn(map[int32]interface{}(nil), (*Encoder).fastpathEncMapInt32IntfR, (*Decoder).fastpathDecMapInt32IntfR) - fn(map[int32]string(nil), (*Encoder).fastpathEncMapInt32StringR, (*Decoder).fastpathDecMapInt32StringR) - fn(map[int32][]byte(nil), (*Encoder).fastpathEncMapInt32BytesR, (*Decoder).fastpathDecMapInt32BytesR) - fn(map[int32]uint8(nil), (*Encoder).fastpathEncMapInt32Uint8R, (*Decoder).fastpathDecMapInt32Uint8R) - fn(map[int32]uint64(nil), (*Encoder).fastpathEncMapInt32Uint64R, (*Decoder).fastpathDecMapInt32Uint64R) - fn(map[int32]int(nil), (*Encoder).fastpathEncMapInt32IntR, (*Decoder).fastpathDecMapInt32IntR) - fn(map[int32]int32(nil), (*Encoder).fastpathEncMapInt32Int32R, (*Decoder).fastpathDecMapInt32Int32R) - fn(map[int32]float64(nil), (*Encoder).fastpathEncMapInt32Float64R, (*Decoder).fastpathDecMapInt32Float64R) - fn(map[int32]bool(nil), (*Encoder).fastpathEncMapInt32BoolR, (*Decoder).fastpathDecMapInt32BoolR) - - sort.Sort(fastpathAslice{}) -} - -// -- encode - -// -- -- fast path type switch -func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { - switch v := iv.(type) { - case []interface{}: - fastpathTV.EncSliceIntfV(v, e) - case *[]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceIntfV(*v, e) - } - case []string: - fastpathTV.EncSliceStringV(v, e) - case *[]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceStringV(*v, e) - } - case [][]byte: - fastpathTV.EncSliceBytesV(v, e) - case *[][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceBytesV(*v, e) - } - case []float32: - fastpathTV.EncSliceFloat32V(v, e) - case *[]float32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceFloat32V(*v, e) - } - case []float64: - fastpathTV.EncSliceFloat64V(v, e) - case *[]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceFloat64V(*v, e) - } - case []uint8: - fastpathTV.EncSliceUint8V(v, e) - case *[]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceUint8V(*v, e) - } - case []uint64: - fastpathTV.EncSliceUint64V(v, e) - case *[]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceUint64V(*v, e) - } - case []int: - fastpathTV.EncSliceIntV(v, e) - case *[]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceIntV(*v, e) - } - case []int32: - fastpathTV.EncSliceInt32V(v, e) - case *[]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceInt32V(*v, e) - } - case []int64: - fastpathTV.EncSliceInt64V(v, e) - case *[]int64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceInt64V(*v, e) - } - case []bool: - fastpathTV.EncSliceBoolV(v, e) - case *[]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncSliceBoolV(*v, e) - } - case map[string]interface{}: - fastpathTV.EncMapStringIntfV(v, e) - case *map[string]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringIntfV(*v, e) - } - case map[string]string: - fastpathTV.EncMapStringStringV(v, e) - case *map[string]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringStringV(*v, e) - } - case map[string][]byte: - fastpathTV.EncMapStringBytesV(v, e) - case *map[string][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringBytesV(*v, e) - } - case map[string]uint8: - fastpathTV.EncMapStringUint8V(v, e) - case *map[string]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringUint8V(*v, e) - } - case map[string]uint64: - fastpathTV.EncMapStringUint64V(v, e) - case *map[string]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringUint64V(*v, e) - } - case map[string]int: - fastpathTV.EncMapStringIntV(v, e) - case *map[string]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringIntV(*v, e) - } - case map[string]int32: - fastpathTV.EncMapStringInt32V(v, e) - case *map[string]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringInt32V(*v, e) - } - case map[string]float64: - fastpathTV.EncMapStringFloat64V(v, e) - case *map[string]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringFloat64V(*v, e) - } - case map[string]bool: - fastpathTV.EncMapStringBoolV(v, e) - case *map[string]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapStringBoolV(*v, e) - } - case map[uint8]interface{}: - fastpathTV.EncMapUint8IntfV(v, e) - case *map[uint8]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8IntfV(*v, e) - } - case map[uint8]string: - fastpathTV.EncMapUint8StringV(v, e) - case *map[uint8]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8StringV(*v, e) - } - case map[uint8][]byte: - fastpathTV.EncMapUint8BytesV(v, e) - case *map[uint8][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8BytesV(*v, e) - } - case map[uint8]uint8: - fastpathTV.EncMapUint8Uint8V(v, e) - case *map[uint8]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8Uint8V(*v, e) - } - case map[uint8]uint64: - fastpathTV.EncMapUint8Uint64V(v, e) - case *map[uint8]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8Uint64V(*v, e) - } - case map[uint8]int: - fastpathTV.EncMapUint8IntV(v, e) - case *map[uint8]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8IntV(*v, e) - } - case map[uint8]int32: - fastpathTV.EncMapUint8Int32V(v, e) - case *map[uint8]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8Int32V(*v, e) - } - case map[uint8]float64: - fastpathTV.EncMapUint8Float64V(v, e) - case *map[uint8]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8Float64V(*v, e) - } - case map[uint8]bool: - fastpathTV.EncMapUint8BoolV(v, e) - case *map[uint8]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint8BoolV(*v, e) - } - case map[uint64]interface{}: - fastpathTV.EncMapUint64IntfV(v, e) - case *map[uint64]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64IntfV(*v, e) - } - case map[uint64]string: - fastpathTV.EncMapUint64StringV(v, e) - case *map[uint64]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64StringV(*v, e) - } - case map[uint64][]byte: - fastpathTV.EncMapUint64BytesV(v, e) - case *map[uint64][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64BytesV(*v, e) - } - case map[uint64]uint8: - fastpathTV.EncMapUint64Uint8V(v, e) - case *map[uint64]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64Uint8V(*v, e) - } - case map[uint64]uint64: - fastpathTV.EncMapUint64Uint64V(v, e) - case *map[uint64]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64Uint64V(*v, e) - } - case map[uint64]int: - fastpathTV.EncMapUint64IntV(v, e) - case *map[uint64]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64IntV(*v, e) - } - case map[uint64]int32: - fastpathTV.EncMapUint64Int32V(v, e) - case *map[uint64]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64Int32V(*v, e) - } - case map[uint64]float64: - fastpathTV.EncMapUint64Float64V(v, e) - case *map[uint64]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64Float64V(*v, e) - } - case map[uint64]bool: - fastpathTV.EncMapUint64BoolV(v, e) - case *map[uint64]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapUint64BoolV(*v, e) - } - case map[int]interface{}: - fastpathTV.EncMapIntIntfV(v, e) - case *map[int]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntIntfV(*v, e) - } - case map[int]string: - fastpathTV.EncMapIntStringV(v, e) - case *map[int]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntStringV(*v, e) - } - case map[int][]byte: - fastpathTV.EncMapIntBytesV(v, e) - case *map[int][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntBytesV(*v, e) - } - case map[int]uint8: - fastpathTV.EncMapIntUint8V(v, e) - case *map[int]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntUint8V(*v, e) - } - case map[int]uint64: - fastpathTV.EncMapIntUint64V(v, e) - case *map[int]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntUint64V(*v, e) - } - case map[int]int: - fastpathTV.EncMapIntIntV(v, e) - case *map[int]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntIntV(*v, e) - } - case map[int]int32: - fastpathTV.EncMapIntInt32V(v, e) - case *map[int]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntInt32V(*v, e) - } - case map[int]float64: - fastpathTV.EncMapIntFloat64V(v, e) - case *map[int]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntFloat64V(*v, e) - } - case map[int]bool: - fastpathTV.EncMapIntBoolV(v, e) - case *map[int]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapIntBoolV(*v, e) - } - case map[int32]interface{}: - fastpathTV.EncMapInt32IntfV(v, e) - case *map[int32]interface{}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32IntfV(*v, e) - } - case map[int32]string: - fastpathTV.EncMapInt32StringV(v, e) - case *map[int32]string: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32StringV(*v, e) - } - case map[int32][]byte: - fastpathTV.EncMapInt32BytesV(v, e) - case *map[int32][]byte: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32BytesV(*v, e) - } - case map[int32]uint8: - fastpathTV.EncMapInt32Uint8V(v, e) - case *map[int32]uint8: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32Uint8V(*v, e) - } - case map[int32]uint64: - fastpathTV.EncMapInt32Uint64V(v, e) - case *map[int32]uint64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32Uint64V(*v, e) - } - case map[int32]int: - fastpathTV.EncMapInt32IntV(v, e) - case *map[int32]int: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32IntV(*v, e) - } - case map[int32]int32: - fastpathTV.EncMapInt32Int32V(v, e) - case *map[int32]int32: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32Int32V(*v, e) - } - case map[int32]float64: - fastpathTV.EncMapInt32Float64V(v, e) - case *map[int32]float64: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32Float64V(*v, e) - } - case map[int32]bool: - fastpathTV.EncMapInt32BoolV(v, e) - case *map[int32]bool: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.EncMapInt32BoolV(*v, e) - } - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -// -- -- fast path functions -func (e *Encoder) fastpathEncSliceIntfR(f *codecFnInfo, rv reflect.Value) { - var v []interface{} - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]interface{}) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceIntfV(v, e) - } else { - fastpathTV.EncSliceIntfV(v, e) - } -} -func (fastpathT) EncSliceIntfV(v []interface{}, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.encode(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceIntfV(v []interface{}, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.encode(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceStringR(f *codecFnInfo, rv reflect.Value) { - var v []string - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]string) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceStringV(v, e) - } else { - fastpathTV.EncSliceStringV(v, e) - } -} -func (fastpathT) EncSliceStringV(v []string, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeString(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceStringV(v []string, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeString(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceBytesR(f *codecFnInfo, rv reflect.Value) { - var v [][]byte - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([][]byte) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceBytesV(v, e) - } else { - fastpathTV.EncSliceBytesV(v, e) - } -} -func (fastpathT) EncSliceBytesV(v [][]byte, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeStringBytesRaw(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceBytesV(v [][]byte, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeStringBytesRaw(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceFloat32R(f *codecFnInfo, rv reflect.Value) { - var v []float32 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]float32) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceFloat32V(v, e) - } else { - fastpathTV.EncSliceFloat32V(v, e) - } -} -func (fastpathT) EncSliceFloat32V(v []float32, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeFloat32(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceFloat32V(v []float32, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeFloat32(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceFloat64R(f *codecFnInfo, rv reflect.Value) { - var v []float64 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]float64) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceFloat64V(v, e) - } else { - fastpathTV.EncSliceFloat64V(v, e) - } -} -func (fastpathT) EncSliceFloat64V(v []float64, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeFloat64(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceFloat64V(v []float64, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeFloat64(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceUint8R(f *codecFnInfo, rv reflect.Value) { - var v []uint8 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]uint8) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceUint8V(v, e) - } else { - fastpathTV.EncSliceUint8V(v, e) - } -} -func (fastpathT) EncSliceUint8V(v []uint8, e *Encoder) { - e.e.EncodeStringBytesRaw(v) -} -func (fastpathT) EncAsMapSliceUint8V(v []uint8, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeUint(uint64(v[j])) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceUint64R(f *codecFnInfo, rv reflect.Value) { - var v []uint64 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]uint64) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceUint64V(v, e) - } else { - fastpathTV.EncSliceUint64V(v, e) - } -} -func (fastpathT) EncSliceUint64V(v []uint64, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeUint(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceUint64V(v []uint64, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeUint(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceIntR(f *codecFnInfo, rv reflect.Value) { - var v []int - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]int) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceIntV(v, e) - } else { - fastpathTV.EncSliceIntV(v, e) - } -} -func (fastpathT) EncSliceIntV(v []int, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeInt(int64(v[j])) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceIntV(v []int, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeInt(int64(v[j])) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceInt32R(f *codecFnInfo, rv reflect.Value) { - var v []int32 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]int32) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceInt32V(v, e) - } else { - fastpathTV.EncSliceInt32V(v, e) - } -} -func (fastpathT) EncSliceInt32V(v []int32, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeInt(int64(v[j])) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceInt32V(v []int32, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeInt(int64(v[j])) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceInt64R(f *codecFnInfo, rv reflect.Value) { - var v []int64 - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]int64) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceInt64V(v, e) - } else { - fastpathTV.EncSliceInt64V(v, e) - } -} -func (fastpathT) EncSliceInt64V(v []int64, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeInt(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceInt64V(v []int64, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeInt(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncSliceBoolR(f *codecFnInfo, rv reflect.Value) { - var v []bool - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]bool) - } - if f.ti.mbs { - fastpathTV.EncAsMapSliceBoolV(v, e) - } else { - fastpathTV.EncSliceBoolV(v, e) - } -} -func (fastpathT) EncSliceBoolV(v []bool, e *Encoder) { - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - e.e.EncodeBool(v[j]) - } - e.arrayEnd() -} -func (fastpathT) EncAsMapSliceBoolV(v []bool, e *Encoder) { - e.haltOnMbsOddLen(len(v)) - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - e.e.EncodeBool(v[j]) - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringIntfR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) -} -func (fastpathT) EncMapStringIntfV(v map[string]interface{}, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.encode(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.encode(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringStringR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringStringV(rv2i(rv).(map[string]string), e) -} -func (fastpathT) EncMapStringStringV(v map[string]string, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeString(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeString(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringBytesR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) -} -func (fastpathT) EncMapStringBytesV(v map[string][]byte, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringUint8R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) -} -func (fastpathT) EncMapStringUint8V(v map[string]uint8, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeUint(uint64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeUint(uint64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringUint64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) -} -func (fastpathT) EncMapStringUint64V(v map[string]uint64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeUint(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeUint(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringIntR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringIntV(rv2i(rv).(map[string]int), e) -} -func (fastpathT) EncMapStringIntV(v map[string]int, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringInt32R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) -} -func (fastpathT) EncMapStringInt32V(v map[string]int32, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringFloat64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) -} -func (fastpathT) EncMapStringFloat64V(v map[string]float64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeFloat64(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeFloat64(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapStringBoolR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) -} -func (fastpathT) EncMapStringBoolV(v map[string]bool, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]string, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(stringSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeBool(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeString(k2) - e.mapElemValue() - e.e.EncodeBool(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8IntfR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) -} -func (fastpathT) EncMapUint8IntfV(v map[uint8]interface{}, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.encode(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.encode(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8StringR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) -} -func (fastpathT) EncMapUint8StringV(v map[uint8]string, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeString(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeString(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8BytesR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) -} -func (fastpathT) EncMapUint8BytesV(v map[uint8][]byte, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8Uint8R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) -} -func (fastpathT) EncMapUint8Uint8V(v map[uint8]uint8, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8Uint64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) -} -func (fastpathT) EncMapUint8Uint64V(v map[uint8]uint64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeUint(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeUint(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8IntR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) -} -func (fastpathT) EncMapUint8IntV(v map[uint8]int, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8Int32R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) -} -func (fastpathT) EncMapUint8Int32V(v map[uint8]int32, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8Float64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) -} -func (fastpathT) EncMapUint8Float64V(v map[uint8]float64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint8BoolR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) -} -func (fastpathT) EncMapUint8BoolV(v map[uint8]bool, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint8, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint8Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeBool(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(uint64(k2)) - e.mapElemValue() - e.e.EncodeBool(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64IntfR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) -} -func (fastpathT) EncMapUint64IntfV(v map[uint64]interface{}, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.encode(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.encode(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64StringR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) -} -func (fastpathT) EncMapUint64StringV(v map[uint64]string, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeString(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeString(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64BytesR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) -} -func (fastpathT) EncMapUint64BytesV(v map[uint64][]byte, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64Uint8R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) -} -func (fastpathT) EncMapUint64Uint8V(v map[uint64]uint8, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeUint(uint64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeUint(uint64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64Uint64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) -} -func (fastpathT) EncMapUint64Uint64V(v map[uint64]uint64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeUint(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeUint(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64IntR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) -} -func (fastpathT) EncMapUint64IntV(v map[uint64]int, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64Int32R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) -} -func (fastpathT) EncMapUint64Int32V(v map[uint64]int32, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64Float64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) -} -func (fastpathT) EncMapUint64Float64V(v map[uint64]float64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeFloat64(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeFloat64(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapUint64BoolR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) -} -func (fastpathT) EncMapUint64BoolV(v map[uint64]bool, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]uint64, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(uint64Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeBool(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeUint(k2) - e.mapElemValue() - e.e.EncodeBool(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntIntfR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) -} -func (fastpathT) EncMapIntIntfV(v map[int]interface{}, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.encode(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.encode(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntStringR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntStringV(rv2i(rv).(map[int]string), e) -} -func (fastpathT) EncMapIntStringV(v map[int]string, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeString(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeString(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntBytesR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) -} -func (fastpathT) EncMapIntBytesV(v map[int][]byte, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntUint8R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) -} -func (fastpathT) EncMapIntUint8V(v map[int]uint8, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntUint64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) -} -func (fastpathT) EncMapIntUint64V(v map[int]uint64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntIntR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntIntV(rv2i(rv).(map[int]int), e) -} -func (fastpathT) EncMapIntIntV(v map[int]int, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntInt32R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) -} -func (fastpathT) EncMapIntInt32V(v map[int]int32, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntFloat64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) -} -func (fastpathT) EncMapIntFloat64V(v map[int]float64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapIntBoolR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) -} -func (fastpathT) EncMapIntBoolV(v map[int]bool, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(intSlice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeBool(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeBool(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32IntfR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) -} -func (fastpathT) EncMapInt32IntfV(v map[int32]interface{}, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.encode(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.encode(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32StringR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) -} -func (fastpathT) EncMapInt32StringV(v map[int32]string, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeString(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeString(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32BytesR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) -} -func (fastpathT) EncMapInt32BytesV(v map[int32][]byte, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeStringBytesRaw(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32Uint8R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) -} -func (fastpathT) EncMapInt32Uint8V(v map[int32]uint8, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(uint64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32Uint64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) -} -func (fastpathT) EncMapInt32Uint64V(v map[int32]uint64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeUint(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32IntR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) -} -func (fastpathT) EncMapInt32IntV(v map[int32]int, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32Int32R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) -} -func (fastpathT) EncMapInt32Int32V(v map[int32]int32, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v[k2])) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeInt(int64(v2)) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32Float64R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) -} -func (fastpathT) EncMapInt32Float64V(v map[int32]float64, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeFloat64(v2) - } - } - e.mapEnd() -} -func (e *Encoder) fastpathEncMapInt32BoolR(f *codecFnInfo, rv reflect.Value) { - fastpathTV.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) -} -func (fastpathT) EncMapInt32BoolV(v map[int32]bool, e *Encoder) { - e.mapStart(len(v)) - if e.h.Canonical { - v2 := make([]int32, len(v)) - var i uint - for k := range v { - v2[i] = k - i++ - } - sort.Sort(int32Slice(v2)) - for _, k2 := range v2 { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeBool(v[k2]) - } - } else { - for k2, v2 := range v { - e.mapElemKey() - e.e.EncodeInt(int64(k2)) - e.mapElemValue() - e.e.EncodeBool(v2) - } - } - e.mapEnd() -} - -// -- decode - -// -- -- fast path type switch -func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { - var changed bool - var containerLen int - switch v := iv.(type) { - case []interface{}: - fastpathTV.DecSliceIntfN(v, d) - case *[]interface{}: - var v2 []interface{} - if v2, changed = fastpathTV.DecSliceIntfY(*v, d); changed { - *v = v2 - } - case []string: - fastpathTV.DecSliceStringN(v, d) - case *[]string: - var v2 []string - if v2, changed = fastpathTV.DecSliceStringY(*v, d); changed { - *v = v2 - } - case [][]byte: - fastpathTV.DecSliceBytesN(v, d) - case *[][]byte: - var v2 [][]byte - if v2, changed = fastpathTV.DecSliceBytesY(*v, d); changed { - *v = v2 - } - case []float32: - fastpathTV.DecSliceFloat32N(v, d) - case *[]float32: - var v2 []float32 - if v2, changed = fastpathTV.DecSliceFloat32Y(*v, d); changed { - *v = v2 - } - case []float64: - fastpathTV.DecSliceFloat64N(v, d) - case *[]float64: - var v2 []float64 - if v2, changed = fastpathTV.DecSliceFloat64Y(*v, d); changed { - *v = v2 - } - case []uint8: - fastpathTV.DecSliceUint8N(v, d) - case *[]uint8: - var v2 []uint8 - if v2, changed = fastpathTV.DecSliceUint8Y(*v, d); changed { - *v = v2 - } - case []uint64: - fastpathTV.DecSliceUint64N(v, d) - case *[]uint64: - var v2 []uint64 - if v2, changed = fastpathTV.DecSliceUint64Y(*v, d); changed { - *v = v2 - } - case []int: - fastpathTV.DecSliceIntN(v, d) - case *[]int: - var v2 []int - if v2, changed = fastpathTV.DecSliceIntY(*v, d); changed { - *v = v2 - } - case []int32: - fastpathTV.DecSliceInt32N(v, d) - case *[]int32: - var v2 []int32 - if v2, changed = fastpathTV.DecSliceInt32Y(*v, d); changed { - *v = v2 - } - case []int64: - fastpathTV.DecSliceInt64N(v, d) - case *[]int64: - var v2 []int64 - if v2, changed = fastpathTV.DecSliceInt64Y(*v, d); changed { - *v = v2 - } - case []bool: - fastpathTV.DecSliceBoolN(v, d) - case *[]bool: - var v2 []bool - if v2, changed = fastpathTV.DecSliceBoolY(*v, d); changed { - *v = v2 - } - case map[string]interface{}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringIntfL(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]interface{}: - fastpathTV.DecMapStringIntfX(v, d) - case map[string]string: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringStringL(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]string: - fastpathTV.DecMapStringStringX(v, d) - case map[string][]byte: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringBytesL(v, containerLen, d) - } - d.mapEnd() - } - case *map[string][]byte: - fastpathTV.DecMapStringBytesX(v, d) - case map[string]uint8: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringUint8L(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]uint8: - fastpathTV.DecMapStringUint8X(v, d) - case map[string]uint64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringUint64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]uint64: - fastpathTV.DecMapStringUint64X(v, d) - case map[string]int: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringIntL(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]int: - fastpathTV.DecMapStringIntX(v, d) - case map[string]int32: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringInt32L(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]int32: - fastpathTV.DecMapStringInt32X(v, d) - case map[string]float64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringFloat64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]float64: - fastpathTV.DecMapStringFloat64X(v, d) - case map[string]bool: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapStringBoolL(v, containerLen, d) - } - d.mapEnd() - } - case *map[string]bool: - fastpathTV.DecMapStringBoolX(v, d) - case map[uint8]interface{}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8IntfL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]interface{}: - fastpathTV.DecMapUint8IntfX(v, d) - case map[uint8]string: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8StringL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]string: - fastpathTV.DecMapUint8StringX(v, d) - case map[uint8][]byte: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8BytesL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8][]byte: - fastpathTV.DecMapUint8BytesX(v, d) - case map[uint8]uint8: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8Uint8L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]uint8: - fastpathTV.DecMapUint8Uint8X(v, d) - case map[uint8]uint64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8Uint64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]uint64: - fastpathTV.DecMapUint8Uint64X(v, d) - case map[uint8]int: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8IntL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]int: - fastpathTV.DecMapUint8IntX(v, d) - case map[uint8]int32: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8Int32L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]int32: - fastpathTV.DecMapUint8Int32X(v, d) - case map[uint8]float64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8Float64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]float64: - fastpathTV.DecMapUint8Float64X(v, d) - case map[uint8]bool: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint8BoolL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint8]bool: - fastpathTV.DecMapUint8BoolX(v, d) - case map[uint64]interface{}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64IntfL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]interface{}: - fastpathTV.DecMapUint64IntfX(v, d) - case map[uint64]string: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64StringL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]string: - fastpathTV.DecMapUint64StringX(v, d) - case map[uint64][]byte: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64BytesL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64][]byte: - fastpathTV.DecMapUint64BytesX(v, d) - case map[uint64]uint8: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64Uint8L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]uint8: - fastpathTV.DecMapUint64Uint8X(v, d) - case map[uint64]uint64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64Uint64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]uint64: - fastpathTV.DecMapUint64Uint64X(v, d) - case map[uint64]int: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64IntL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]int: - fastpathTV.DecMapUint64IntX(v, d) - case map[uint64]int32: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64Int32L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]int32: - fastpathTV.DecMapUint64Int32X(v, d) - case map[uint64]float64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64Float64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]float64: - fastpathTV.DecMapUint64Float64X(v, d) - case map[uint64]bool: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapUint64BoolL(v, containerLen, d) - } - d.mapEnd() - } - case *map[uint64]bool: - fastpathTV.DecMapUint64BoolX(v, d) - case map[int]interface{}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntIntfL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]interface{}: - fastpathTV.DecMapIntIntfX(v, d) - case map[int]string: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntStringL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]string: - fastpathTV.DecMapIntStringX(v, d) - case map[int][]byte: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntBytesL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int][]byte: - fastpathTV.DecMapIntBytesX(v, d) - case map[int]uint8: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntUint8L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]uint8: - fastpathTV.DecMapIntUint8X(v, d) - case map[int]uint64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntUint64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]uint64: - fastpathTV.DecMapIntUint64X(v, d) - case map[int]int: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntIntL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]int: - fastpathTV.DecMapIntIntX(v, d) - case map[int]int32: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntInt32L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]int32: - fastpathTV.DecMapIntInt32X(v, d) - case map[int]float64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntFloat64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]float64: - fastpathTV.DecMapIntFloat64X(v, d) - case map[int]bool: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapIntBoolL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int]bool: - fastpathTV.DecMapIntBoolX(v, d) - case map[int32]interface{}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32IntfL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]interface{}: - fastpathTV.DecMapInt32IntfX(v, d) - case map[int32]string: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32StringL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]string: - fastpathTV.DecMapInt32StringX(v, d) - case map[int32][]byte: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32BytesL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32][]byte: - fastpathTV.DecMapInt32BytesX(v, d) - case map[int32]uint8: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32Uint8L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]uint8: - fastpathTV.DecMapInt32Uint8X(v, d) - case map[int32]uint64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32Uint64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]uint64: - fastpathTV.DecMapInt32Uint64X(v, d) - case map[int32]int: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32IntL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]int: - fastpathTV.DecMapInt32IntX(v, d) - case map[int32]int32: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32Int32L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]int32: - fastpathTV.DecMapInt32Int32X(v, d) - case map[int32]float64: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32Float64L(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]float64: - fastpathTV.DecMapInt32Float64X(v, d) - case map[int32]bool: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.DecMapInt32BoolL(v, containerLen, d) - } - d.mapEnd() - } - case *map[int32]bool: - fastpathTV.DecMapInt32BoolX(v, d) - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool { - switch v := iv.(type) { - case *[]interface{}: - *v = nil - case *[]string: - *v = nil - case *[][]byte: - *v = nil - case *[]float32: - *v = nil - case *[]float64: - *v = nil - case *[]uint8: - *v = nil - case *[]uint64: - *v = nil - case *[]int: - *v = nil - case *[]int32: - *v = nil - case *[]int64: - *v = nil - case *[]bool: - *v = nil - - case *map[string]interface{}: - *v = nil - case *map[string]string: - *v = nil - case *map[string][]byte: - *v = nil - case *map[string]uint8: - *v = nil - case *map[string]uint64: - *v = nil - case *map[string]int: - *v = nil - case *map[string]int32: - *v = nil - case *map[string]float64: - *v = nil - case *map[string]bool: - *v = nil - case *map[uint8]interface{}: - *v = nil - case *map[uint8]string: - *v = nil - case *map[uint8][]byte: - *v = nil - case *map[uint8]uint8: - *v = nil - case *map[uint8]uint64: - *v = nil - case *map[uint8]int: - *v = nil - case *map[uint8]int32: - *v = nil - case *map[uint8]float64: - *v = nil - case *map[uint8]bool: - *v = nil - case *map[uint64]interface{}: - *v = nil - case *map[uint64]string: - *v = nil - case *map[uint64][]byte: - *v = nil - case *map[uint64]uint8: - *v = nil - case *map[uint64]uint64: - *v = nil - case *map[uint64]int: - *v = nil - case *map[uint64]int32: - *v = nil - case *map[uint64]float64: - *v = nil - case *map[uint64]bool: - *v = nil - case *map[int]interface{}: - *v = nil - case *map[int]string: - *v = nil - case *map[int][]byte: - *v = nil - case *map[int]uint8: - *v = nil - case *map[int]uint64: - *v = nil - case *map[int]int: - *v = nil - case *map[int]int32: - *v = nil - case *map[int]float64: - *v = nil - case *map[int]bool: - *v = nil - case *map[int32]interface{}: - *v = nil - case *map[int32]string: - *v = nil - case *map[int32][]byte: - *v = nil - case *map[int32]uint8: - *v = nil - case *map[int32]uint64: - *v = nil - case *map[int32]int: - *v = nil - case *map[int32]int32: - *v = nil - case *map[int32]float64: - *v = nil - case *map[int32]bool: - *v = nil - - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -// -- -- fast path functions - -func (d *Decoder) fastpathDecSliceIntfR(f *codecFnInfo, rv reflect.Value) { - var v []interface{} - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]interface{}) - var changed bool - if v, changed = fastpathTV.DecSliceIntfY(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceIntfN(v, d) - default: - fastpathTV.DecSliceIntfN(rv2i(rv).([]interface{}), d) - } -} -func (f fastpathT) DecSliceIntfX(vp *[]interface{}, d *Decoder) { - if v, changed := f.DecSliceIntfY(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceIntfY(v []interface{}, d *Decoder) (v2 []interface{}, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []interface{}{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]interface{}, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - v = make([]interface{}, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, nil) - changed = true - } - slh.ElemContainerState(j) - d.decode(&v[uint(j)]) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []interface{}{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceIntfN(v []interface{}, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - d.decode(&v[uint(j)]) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceStringR(f *codecFnInfo, rv reflect.Value) { - var v []string - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]string) - var changed bool - if v, changed = fastpathTV.DecSliceStringY(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceStringN(v, d) - default: - fastpathTV.DecSliceStringN(rv2i(rv).([]string), d) - } -} -func (f fastpathT) DecSliceStringX(vp *[]string, d *Decoder) { - if v, changed := f.DecSliceStringY(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceStringY(v []string, d *Decoder) (v2 []string, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []string{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]string, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - v = make([]string, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, "") - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.stringZC(d.d.DecodeStringAsBytes()) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []string{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceStringN(v []string, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.stringZC(d.d.DecodeStringAsBytes()) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceBytesR(f *codecFnInfo, rv reflect.Value) { - var v [][]byte - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[][]byte) - var changed bool - if v, changed = fastpathTV.DecSliceBytesY(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceBytesN(v, d) - default: - fastpathTV.DecSliceBytesN(rv2i(rv).([][]byte), d) - } -} -func (f fastpathT) DecSliceBytesX(vp *[][]byte, d *Decoder) { - if v, changed := f.DecSliceBytesY(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceBytesY(v [][]byte, d *Decoder) (v2 [][]byte, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = [][]byte{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 24) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([][]byte, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 24) - v = make([][]byte, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, nil) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeBytes([]byte{}) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = [][]byte{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceBytesN(v [][]byte, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeBytes([]byte{}) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceFloat32R(f *codecFnInfo, rv reflect.Value) { - var v []float32 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]float32) - var changed bool - if v, changed = fastpathTV.DecSliceFloat32Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceFloat32N(v, d) - default: - fastpathTV.DecSliceFloat32N(rv2i(rv).([]float32), d) - } -} -func (f fastpathT) DecSliceFloat32X(vp *[]float32, d *Decoder) { - if v, changed := f.DecSliceFloat32Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceFloat32Y(v []float32, d *Decoder) (v2 []float32, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []float32{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]float32, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - v = make([]float32, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = float32(d.decodeFloat32()) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []float32{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceFloat32N(v []float32, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = float32(d.decodeFloat32()) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceFloat64R(f *codecFnInfo, rv reflect.Value) { - var v []float64 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]float64) - var changed bool - if v, changed = fastpathTV.DecSliceFloat64Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceFloat64N(v, d) - default: - fastpathTV.DecSliceFloat64N(rv2i(rv).([]float64), d) - } -} -func (f fastpathT) DecSliceFloat64X(vp *[]float64, d *Decoder) { - if v, changed := f.DecSliceFloat64Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceFloat64Y(v []float64, d *Decoder) (v2 []float64, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []float64{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]float64, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - v = make([]float64, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeFloat64() - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []float64{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceFloat64N(v []float64, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeFloat64() - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceUint8R(f *codecFnInfo, rv reflect.Value) { - var v []uint8 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]uint8) - var changed bool - if v, changed = fastpathTV.DecSliceUint8Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceUint8N(v, d) - default: - fastpathTV.DecSliceUint8N(rv2i(rv).([]uint8), d) - } -} -func (f fastpathT) DecSliceUint8X(vp *[]uint8, d *Decoder) { - if v, changed := f.DecSliceUint8Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceUint8Y(v []uint8, d *Decoder) (v2 []uint8, changed bool) { - switch d.d.ContainerType() { - case valueTypeNil, valueTypeMap: - break - default: - v2 = d.decodeBytesInto(v[:len(v):len(v)]) - changed = !(len(v2) > 0 && len(v2) == len(v) && &v2[0] == &v[0]) // not same slice - return - } - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []uint8{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]uint8, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - v = make([]uint8, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []uint8{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceUint8N(v []uint8, d *Decoder) { - switch d.d.ContainerType() { - case valueTypeNil, valueTypeMap: - break - default: - v2 := d.decodeBytesInto(v[:len(v):len(v)]) - if !(len(v2) > 0 && len(v2) == len(v) && &v2[0] == &v[0]) { // not same slice - copy(v, v2) - } - return - } - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceUint64R(f *codecFnInfo, rv reflect.Value) { - var v []uint64 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]uint64) - var changed bool - if v, changed = fastpathTV.DecSliceUint64Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceUint64N(v, d) - default: - fastpathTV.DecSliceUint64N(rv2i(rv).([]uint64), d) - } -} -func (f fastpathT) DecSliceUint64X(vp *[]uint64, d *Decoder) { - if v, changed := f.DecSliceUint64Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceUint64Y(v []uint64, d *Decoder) (v2 []uint64, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []uint64{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]uint64, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - v = make([]uint64, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeUint64() - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []uint64{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceUint64N(v []uint64, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeUint64() - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceIntR(f *codecFnInfo, rv reflect.Value) { - var v []int - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]int) - var changed bool - if v, changed = fastpathTV.DecSliceIntY(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceIntN(v, d) - default: - fastpathTV.DecSliceIntN(rv2i(rv).([]int), d) - } -} -func (f fastpathT) DecSliceIntX(vp *[]int, d *Decoder) { - if v, changed := f.DecSliceIntY(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceIntY(v []int, d *Decoder) (v2 []int, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []int{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]int, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - v = make([]int, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []int{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceIntN(v []int, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceInt32R(f *codecFnInfo, rv reflect.Value) { - var v []int32 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]int32) - var changed bool - if v, changed = fastpathTV.DecSliceInt32Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceInt32N(v, d) - default: - fastpathTV.DecSliceInt32N(rv2i(rv).([]int32), d) - } -} -func (f fastpathT) DecSliceInt32X(vp *[]int32, d *Decoder) { - if v, changed := f.DecSliceInt32Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceInt32Y(v []int32, d *Decoder) (v2 []int32, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []int32{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]int32, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - v = make([]int32, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []int32{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceInt32N(v []int32, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceInt64R(f *codecFnInfo, rv reflect.Value) { - var v []int64 - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]int64) - var changed bool - if v, changed = fastpathTV.DecSliceInt64Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceInt64N(v, d) - default: - fastpathTV.DecSliceInt64N(rv2i(rv).([]int64), d) - } -} -func (f fastpathT) DecSliceInt64X(vp *[]int64, d *Decoder) { - if v, changed := f.DecSliceInt64Y(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceInt64Y(v []int64, d *Decoder) (v2 []int64, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []int64{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]int64, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - v = make([]int64, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, 0) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeInt64() - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []int64{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceInt64N(v []int64, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeInt64() - } - slh.End() -} - -func (d *Decoder) fastpathDecSliceBoolR(f *codecFnInfo, rv reflect.Value) { - var v []bool - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]bool) - var changed bool - if v, changed = fastpathTV.DecSliceBoolY(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.DecSliceBoolN(v, d) - default: - fastpathTV.DecSliceBoolN(rv2i(rv).([]bool), d) - } -} -func (f fastpathT) DecSliceBoolX(vp *[]bool, d *Decoder) { - if v, changed := f.DecSliceBoolY(*vp, d); changed { - *vp = v - } -} -func (fastpathT) DecSliceBoolY(v []bool, d *Decoder) (v2 []bool, changed bool) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { - return - } - return nil, true - } - if containerLenS == 0 { - if v == nil { - v = []bool{} - } else if len(v) != 0 { - v = v[:0] - } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]bool, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - v = make([]bool, uint(xlen)) - changed = true - } - if j >= len(v) { - v = append(v, false) - changed = true - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeBool() - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []bool{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) DecSliceBoolN(v []bool, d *Decoder) { - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - v[uint(j)] = d.d.DecodeBool() - } - slh.End() -} -func (d *Decoder) fastpathDecMapStringIntfR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]interface{}) - if *vp == nil { - *vp = make(map[string]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - fastpathTV.DecMapStringIntfL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringIntfX(vp *map[string]interface{}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - f.DecMapStringIntfL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]interface{} given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - var mk string - var mv interface{} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringStringR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]string) - if *vp == nil { - *vp = make(map[string]string, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - fastpathTV.DecMapStringStringL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringStringX(vp *map[string]string, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]string, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - f.DecMapStringStringL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringStringL(v map[string]string, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]string given stream length: %v", containerLen) - return - } - var mk string - var mv string - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = d.stringZC(d.d.DecodeStringAsBytes()) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringBytesR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string][]byte) - if *vp == nil { - *vp = make(map[string][]byte, decInferLen(containerLen, d.h.MaxInitLen, 40)) - } - if containerLen != 0 { - fastpathTV.DecMapStringBytesL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringBytesX(vp *map[string][]byte, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string][]byte, decInferLen(containerLen, d.h.MaxInitLen, 40)) - } - if containerLen != 0 { - f.DecMapStringBytesL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringBytesL(v map[string][]byte, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string][]byte given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset - var mk string - var mv []byte - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - mv = d.decodeBytesInto(mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringUint8R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]uint8) - if *vp == nil { - *vp = make(map[string]uint8, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - fastpathTV.DecMapStringUint8L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringUint8X(vp *map[string]uint8, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]uint8, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - f.DecMapStringUint8L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringUint8L(v map[string]uint8, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]uint8 given stream length: %v", containerLen) - return - } - var mk string - var mv uint8 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringUint64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]uint64) - if *vp == nil { - *vp = make(map[string]uint64, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapStringUint64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringUint64X(vp *map[string]uint64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]uint64, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapStringUint64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringUint64L(v map[string]uint64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]uint64 given stream length: %v", containerLen) - return - } - var mk string - var mv uint64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = d.d.DecodeUint64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringIntR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]int) - if *vp == nil { - *vp = make(map[string]int, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapStringIntL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringIntX(vp *map[string]int, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]int, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapStringIntL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringIntL(v map[string]int, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]int given stream length: %v", containerLen) - return - } - var mk string - var mv int - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringInt32R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]int32) - if *vp == nil { - *vp = make(map[string]int32, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - fastpathTV.DecMapStringInt32L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringInt32X(vp *map[string]int32, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]int32, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - f.DecMapStringInt32L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringInt32L(v map[string]int32, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]int32 given stream length: %v", containerLen) - return - } - var mk string - var mv int32 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringFloat64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]float64) - if *vp == nil { - *vp = make(map[string]float64, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapStringFloat64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringFloat64X(vp *map[string]float64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]float64, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapStringFloat64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringFloat64L(v map[string]float64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]float64 given stream length: %v", containerLen) - return - } - var mk string - var mv float64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = d.d.DecodeFloat64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapStringBoolR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[string]bool) - if *vp == nil { - *vp = make(map[string]bool, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - fastpathTV.DecMapStringBoolL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapStringBoolX(vp *map[string]bool, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[string]bool, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - f.DecMapStringBoolL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapStringBoolL(v map[string]bool, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[string]bool given stream length: %v", containerLen) - return - } - var mk string - var mv bool - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.stringZC(d.d.DecodeStringAsBytes()) - d.mapElemValue() - mv = d.d.DecodeBool() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8IntfR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]interface{}) - if *vp == nil { - *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8IntfL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8IntfX(vp *map[uint8]interface{}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - f.DecMapUint8IntfL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]interface{} given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - var mk uint8 - var mv interface{} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8StringR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]string) - if *vp == nil { - *vp = make(map[uint8]string, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8StringL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8StringX(vp *map[uint8]string, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]string, decInferLen(containerLen, d.h.MaxInitLen, 17)) - } - if containerLen != 0 { - f.DecMapUint8StringL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8StringL(v map[uint8]string, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]string given stream length: %v", containerLen) - return - } - var mk uint8 - var mv string - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = d.stringZC(d.d.DecodeStringAsBytes()) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8BytesR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8][]byte) - if *vp == nil { - *vp = make(map[uint8][]byte, decInferLen(containerLen, d.h.MaxInitLen, 25)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8BytesL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8BytesX(vp *map[uint8][]byte, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8][]byte, decInferLen(containerLen, d.h.MaxInitLen, 25)) - } - if containerLen != 0 { - f.DecMapUint8BytesL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8][]byte given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset - var mk uint8 - var mv []byte - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - mv = d.decodeBytesInto(mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8Uint8R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]uint8) - if *vp == nil { - *vp = make(map[uint8]uint8, decInferLen(containerLen, d.h.MaxInitLen, 2)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8Uint8L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8Uint8X(vp *map[uint8]uint8, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]uint8, decInferLen(containerLen, d.h.MaxInitLen, 2)) - } - if containerLen != 0 { - f.DecMapUint8Uint8L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]uint8 given stream length: %v", containerLen) - return - } - var mk uint8 - var mv uint8 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8Uint64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]uint64) - if *vp == nil { - *vp = make(map[uint8]uint64, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8Uint64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8Uint64X(vp *map[uint8]uint64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]uint64, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapUint8Uint64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]uint64 given stream length: %v", containerLen) - return - } - var mk uint8 - var mv uint64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = d.d.DecodeUint64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8IntR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]int) - if *vp == nil { - *vp = make(map[uint8]int, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8IntL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8IntX(vp *map[uint8]int, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]int, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapUint8IntL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8IntL(v map[uint8]int, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]int given stream length: %v", containerLen) - return - } - var mk uint8 - var mv int - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8Int32R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]int32) - if *vp == nil { - *vp = make(map[uint8]int32, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8Int32L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8Int32X(vp *map[uint8]int32, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]int32, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - f.DecMapUint8Int32L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]int32 given stream length: %v", containerLen) - return - } - var mk uint8 - var mv int32 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8Float64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]float64) - if *vp == nil { - *vp = make(map[uint8]float64, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8Float64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8Float64X(vp *map[uint8]float64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]float64, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapUint8Float64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]float64 given stream length: %v", containerLen) - return - } - var mk uint8 - var mv float64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = d.d.DecodeFloat64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint8BoolR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint8]bool) - if *vp == nil { - *vp = make(map[uint8]bool, decInferLen(containerLen, d.h.MaxInitLen, 2)) - } - if containerLen != 0 { - fastpathTV.DecMapUint8BoolL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint8BoolX(vp *map[uint8]bool, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint8]bool, decInferLen(containerLen, d.h.MaxInitLen, 2)) - } - if containerLen != 0 { - f.DecMapUint8BoolL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint8]bool given stream length: %v", containerLen) - return - } - var mk uint8 - var mv bool - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - d.mapElemValue() - mv = d.d.DecodeBool() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64IntfR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]interface{}) - if *vp == nil { - *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64IntfL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64IntfX(vp *map[uint64]interface{}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapUint64IntfL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]interface{} given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - var mk uint64 - var mv interface{} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64StringR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]string) - if *vp == nil { - *vp = make(map[uint64]string, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64StringL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64StringX(vp *map[uint64]string, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]string, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapUint64StringL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64StringL(v map[uint64]string, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]string given stream length: %v", containerLen) - return - } - var mk uint64 - var mv string - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = d.stringZC(d.d.DecodeStringAsBytes()) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64BytesR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64][]byte) - if *vp == nil { - *vp = make(map[uint64][]byte, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64BytesL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64BytesX(vp *map[uint64][]byte, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64][]byte, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - f.DecMapUint64BytesL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64][]byte given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset - var mk uint64 - var mv []byte - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - mv = d.decodeBytesInto(mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64Uint8R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]uint8) - if *vp == nil { - *vp = make(map[uint64]uint8, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64Uint8L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64Uint8X(vp *map[uint64]uint8, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]uint8, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapUint64Uint8L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]uint8 given stream length: %v", containerLen) - return - } - var mk uint64 - var mv uint8 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64Uint64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]uint64) - if *vp == nil { - *vp = make(map[uint64]uint64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64Uint64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64Uint64X(vp *map[uint64]uint64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]uint64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapUint64Uint64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]uint64 given stream length: %v", containerLen) - return - } - var mk uint64 - var mv uint64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = d.d.DecodeUint64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64IntR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]int) - if *vp == nil { - *vp = make(map[uint64]int, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64IntL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64IntX(vp *map[uint64]int, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]int, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapUint64IntL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64IntL(v map[uint64]int, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]int given stream length: %v", containerLen) - return - } - var mk uint64 - var mv int - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64Int32R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]int32) - if *vp == nil { - *vp = make(map[uint64]int32, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64Int32L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64Int32X(vp *map[uint64]int32, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]int32, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - f.DecMapUint64Int32L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]int32 given stream length: %v", containerLen) - return - } - var mk uint64 - var mv int32 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64Float64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]float64) - if *vp == nil { - *vp = make(map[uint64]float64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64Float64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64Float64X(vp *map[uint64]float64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]float64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapUint64Float64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]float64 given stream length: %v", containerLen) - return - } - var mk uint64 - var mv float64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = d.d.DecodeFloat64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapUint64BoolR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[uint64]bool) - if *vp == nil { - *vp = make(map[uint64]bool, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapUint64BoolL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapUint64BoolX(vp *map[uint64]bool, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[uint64]bool, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapUint64BoolL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[uint64]bool given stream length: %v", containerLen) - return - } - var mk uint64 - var mv bool - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = d.d.DecodeUint64() - d.mapElemValue() - mv = d.d.DecodeBool() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntIntfR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]interface{}) - if *vp == nil { - *vp = make(map[int]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapIntIntfL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntIntfX(vp *map[int]interface{}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapIntIntfL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]interface{} given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - var mk int - var mv interface{} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntStringR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]string) - if *vp == nil { - *vp = make(map[int]string, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - fastpathTV.DecMapIntStringL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntStringX(vp *map[int]string, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]string, decInferLen(containerLen, d.h.MaxInitLen, 24)) - } - if containerLen != 0 { - f.DecMapIntStringL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntStringL(v map[int]string, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]string given stream length: %v", containerLen) - return - } - var mk int - var mv string - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = d.stringZC(d.d.DecodeStringAsBytes()) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntBytesR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int][]byte) - if *vp == nil { - *vp = make(map[int][]byte, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - fastpathTV.DecMapIntBytesL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntBytesX(vp *map[int][]byte, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int][]byte, decInferLen(containerLen, d.h.MaxInitLen, 32)) - } - if containerLen != 0 { - f.DecMapIntBytesL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntBytesL(v map[int][]byte, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int][]byte given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset - var mk int - var mv []byte - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - mv = d.decodeBytesInto(mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntUint8R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]uint8) - if *vp == nil { - *vp = make(map[int]uint8, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapIntUint8L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntUint8X(vp *map[int]uint8, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]uint8, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapIntUint8L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntUint8L(v map[int]uint8, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]uint8 given stream length: %v", containerLen) - return - } - var mk int - var mv uint8 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntUint64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]uint64) - if *vp == nil { - *vp = make(map[int]uint64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapIntUint64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntUint64X(vp *map[int]uint64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]uint64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapIntUint64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntUint64L(v map[int]uint64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]uint64 given stream length: %v", containerLen) - return - } - var mk int - var mv uint64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = d.d.DecodeUint64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntIntR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]int) - if *vp == nil { - *vp = make(map[int]int, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapIntIntL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntIntX(vp *map[int]int, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]int, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapIntIntL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntIntL(v map[int]int, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]int given stream length: %v", containerLen) - return - } - var mk int - var mv int - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntInt32R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]int32) - if *vp == nil { - *vp = make(map[int]int32, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - fastpathTV.DecMapIntInt32L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntInt32X(vp *map[int]int32, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]int32, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - f.DecMapIntInt32L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntInt32L(v map[int]int32, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]int32 given stream length: %v", containerLen) - return - } - var mk int - var mv int32 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntFloat64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]float64) - if *vp == nil { - *vp = make(map[int]float64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - fastpathTV.DecMapIntFloat64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntFloat64X(vp *map[int]float64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]float64, decInferLen(containerLen, d.h.MaxInitLen, 16)) - } - if containerLen != 0 { - f.DecMapIntFloat64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntFloat64L(v map[int]float64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]float64 given stream length: %v", containerLen) - return - } - var mk int - var mv float64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = d.d.DecodeFloat64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapIntBoolR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int]bool) - if *vp == nil { - *vp = make(map[int]bool, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - fastpathTV.DecMapIntBoolL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapIntBoolX(vp *map[int]bool, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int]bool, decInferLen(containerLen, d.h.MaxInitLen, 9)) - } - if containerLen != 0 { - f.DecMapIntBoolL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapIntBoolL(v map[int]bool, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int]bool given stream length: %v", containerLen) - return - } - var mk int - var mv bool - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - d.mapElemValue() - mv = d.d.DecodeBool() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32IntfR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]interface{}) - if *vp == nil { - *vp = make(map[int32]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32IntfL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32IntfX(vp *map[int32]interface{}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]interface{}, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - f.DecMapInt32IntfL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]interface{} given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - var mk int32 - var mv interface{} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32StringR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]string) - if *vp == nil { - *vp = make(map[int32]string, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32StringL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32StringX(vp *map[int32]string, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]string, decInferLen(containerLen, d.h.MaxInitLen, 20)) - } - if containerLen != 0 { - f.DecMapInt32StringL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32StringL(v map[int32]string, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]string given stream length: %v", containerLen) - return - } - var mk int32 - var mv string - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = d.stringZC(d.d.DecodeStringAsBytes()) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32BytesR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32][]byte) - if *vp == nil { - *vp = make(map[int32][]byte, decInferLen(containerLen, d.h.MaxInitLen, 28)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32BytesL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32BytesX(vp *map[int32][]byte, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32][]byte, decInferLen(containerLen, d.h.MaxInitLen, 28)) - } - if containerLen != 0 { - f.DecMapInt32BytesL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32][]byte given stream length: %v", containerLen) - return - } - mapGet := v != nil && !d.h.MapValueReset - var mk int32 - var mv []byte - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - if mapGet { - mv = v[mk] - } else { - mv = nil - } - mv = d.decodeBytesInto(mv) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32Uint8R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]uint8) - if *vp == nil { - *vp = make(map[int32]uint8, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32Uint8L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32Uint8X(vp *map[int32]uint8, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]uint8, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - f.DecMapInt32Uint8L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]uint8 given stream length: %v", containerLen) - return - } - var mk int32 - var mv uint8 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32Uint64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]uint64) - if *vp == nil { - *vp = make(map[int32]uint64, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32Uint64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32Uint64X(vp *map[int32]uint64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]uint64, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - f.DecMapInt32Uint64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]uint64 given stream length: %v", containerLen) - return - } - var mk int32 - var mv uint64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = d.d.DecodeUint64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32IntR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]int) - if *vp == nil { - *vp = make(map[int32]int, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32IntL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32IntX(vp *map[int32]int, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]int, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - f.DecMapInt32IntL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32IntL(v map[int32]int, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]int given stream length: %v", containerLen) - return - } - var mk int32 - var mv int - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32Int32R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]int32) - if *vp == nil { - *vp = make(map[int32]int32, decInferLen(containerLen, d.h.MaxInitLen, 8)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32Int32L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32Int32X(vp *map[int32]int32, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]int32, decInferLen(containerLen, d.h.MaxInitLen, 8)) - } - if containerLen != 0 { - f.DecMapInt32Int32L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]int32 given stream length: %v", containerLen) - return - } - var mk int32 - var mv int32 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32Float64R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]float64) - if *vp == nil { - *vp = make(map[int32]float64, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32Float64L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32Float64X(vp *map[int32]float64, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]float64, decInferLen(containerLen, d.h.MaxInitLen, 12)) - } - if containerLen != 0 { - f.DecMapInt32Float64L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]float64 given stream length: %v", containerLen) - return - } - var mk int32 - var mv float64 - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = d.d.DecodeFloat64() - v[mk] = mv - } -} -func (d *Decoder) fastpathDecMapInt32BoolR(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[int32]bool) - if *vp == nil { - *vp = make(map[int32]bool, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - fastpathTV.DecMapInt32BoolL(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) DecMapInt32BoolX(vp *map[int32]bool, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[int32]bool, decInferLen(containerLen, d.h.MaxInitLen, 5)) - } - if containerLen != 0 { - f.DecMapInt32BoolL(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *Decoder) { - if v == nil { - d.errorf("cannot decode into nil map[int32]bool given stream length: %v", containerLen) - return - } - var mk int32 - var mv bool - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - mk = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) - d.mapElemValue() - mv = d.d.DecodeBool() - v[mk] = mv - } -} diff --git a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl deleted file mode 100644 index 1a1cb95c6..000000000 --- a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl +++ /dev/null @@ -1,555 +0,0 @@ -// +build !notfastpath -// +build !codec.notfastpath - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from fast-path.go.tmpl - DO NOT EDIT. - -package codec - -// Fast path functions try to create a fast path encode or decode implementation -// for common maps and slices. -// -// We define the functions and register them in this single file -// so as not to pollute the encode.go and decode.go, and create a dependency in there. -// This file can be omitted without causing a build failure. -// -// The advantage of fast paths is: -// - Many calls bypass reflection altogether -// -// Currently support -// - slice of all builtin types (numeric, bool, string, []byte) -// - maps of builtin types to builtin or interface{} type, EXCEPT FOR -// keys of type uintptr, int8/16/32, uint16/32, float32/64, bool, interface{} -// AND values of type type int8/16/32, uint16/32 -// This should provide adequate "typical" implementations. -// -// Note that fast track decode functions must handle values for which an address cannot be obtained. -// For example: -// m2 := map[string]int{} -// p2 := []interface{}{m2} -// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. -// - -{{/* -fastpathEncMapStringUint64R (called by fastpath...switch) -EncMapStringUint64V (called by codecgen) - -fastpathEncSliceBoolR: (called by fastpath...switch) (checks f.ti.mbs and calls one of them below) -EncSliceBoolV (also called by codecgen) -EncAsMapSliceBoolV (delegate when mapbyslice=true) - -fastpathDecSliceIntfR (called by fastpath...switch) (calls Y or N below depending on if it can be updated) -DecSliceIntfX (called by codecgen) (calls Y below) -DecSliceIntfY (delegate when slice CAN be updated) -DecSliceIntfN (delegate when slice CANNOT be updated e.g. from array or non-addressable slice) - -fastpathDecMap...R (called by fastpath...switch) (calls L or X? below) -DecMap...X (called by codecgen) -DecMap...L (delegated to by both above) -*/ -}} - -import ( - "reflect" - "sort" -) - -const fastpathEnabled = true - -{{/* -const fastpathMapBySliceErrMsg = "mapBySlice requires even slice length, but got %v" -*/ -}} - -type fastpathT struct {} - -var fastpathTV fastpathT - -type fastpathE struct { - {{/* rtid uintptr */ -}} - rt reflect.Type - encfn func(*Encoder, *codecFnInfo, reflect.Value) - decfn func(*Decoder, *codecFnInfo, reflect.Value) -} - -type fastpathA [{{ .FastpathLen }}]fastpathE -type fastpathARtid [{{ .FastpathLen }}]uintptr - -var fastpathAv fastpathA -var fastpathAvRtid fastpathARtid - -type fastpathAslice struct{} - -func (fastpathAslice) Len() int { return {{ .FastpathLen }} } -func (fastpathAslice) Less(i, j int) bool { - return fastpathAvRtid[uint(i)] < fastpathAvRtid[uint(j)] -} -func (fastpathAslice) Swap(i, j int) { - fastpathAvRtid[uint(i)], fastpathAvRtid[uint(j)] = fastpathAvRtid[uint(j)], fastpathAvRtid[uint(i)] - fastpathAv[uint(i)], fastpathAv[uint(j)] = fastpathAv[uint(j)], fastpathAv[uint(i)] -} - -func fastpathAvIndex(rtid uintptr) int { - // use binary search to grab the index (adapted from sort/search.go) - // Note: we use goto (instead of for loop) so this can be inlined. - // h, i, j := 0, 0, {{ .FastpathLen }} - var h, i uint - var j uint = {{ .FastpathLen }} -LOOP: - if i < j { - h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 - if fastpathAvRtid[h] < rtid { - i = h + 1 - } else { - j = h - } - goto LOOP - } - if i < {{ .FastpathLen }} && fastpathAvRtid[i] == rtid { - return int(i) - } - return -1 -} - - -// due to possible initialization loop error, make fastpath in an init() -func init() { - var i uint = 0 - fn := func(v interface{}, - fe func(*Encoder, *codecFnInfo, reflect.Value), - fd func(*Decoder, *codecFnInfo, reflect.Value)) { - xrt := reflect.TypeOf(v) - xptr := rt2id(xrt) - fastpathAvRtid[i] = xptr - fastpathAv[i] = fastpathE{xrt, fe, fd} - i++ - } - {{/* do not register []byte in fast-path */}} - {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} - fn([]{{ .Elem }}(nil), (*Encoder).{{ .MethodNamePfx "fastpathEnc" false }}R, (*Decoder).{{ .MethodNamePfx "fastpathDec" false }}R) - {{end}}{{end}}{{end}} - - {{range .Values}}{{if not .Primitive}}{{if .MapKey -}} - fn(map[{{ .MapKey }}]{{ .Elem }}(nil), (*Encoder).{{ .MethodNamePfx "fastpathEnc" false }}R, (*Decoder).{{ .MethodNamePfx "fastpathDec" false }}R) - {{end}}{{end}}{{end}} - - sort.Sort(fastpathAslice{}) -} - -// -- encode - -// -- -- fast path type switch -func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { - switch v := iv.(type) { -{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} - case []{{ .Elem }}: - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e) - case *[]{{ .Elem }}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e) - } -{{end}}{{end}}{{end -}} - -{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} - case map[{{ .MapKey }}]{{ .Elem }}: - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e) - case *map[{{ .MapKey }}]{{ .Elem }}: - if *v == nil { - e.e.EncodeNil() - } else { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, e) - } -{{end}}{{end}}{{end -}} - - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -// -- -- fast path functions -{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} -func (e *Encoder) {{ .MethodNamePfx "fastpathEnc" false }}R(f *codecFnInfo, rv reflect.Value) { - var v []{{ .Elem }} - if rv.Kind() == reflect.Array { - rvGetSlice4Array(rv, &v) - } else { - v = rv2i(rv).([]{{ .Elem }}) - } - if f.ti.mbs { - fastpathTV.{{ .MethodNamePfx "EncAsMap" false }}V(v, e) - } else { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, e) - } -} -func (fastpathT) {{ .MethodNamePfx "Enc" false }}V(v []{{ .Elem }}, e *Encoder) { - {{/* if v == nil { e.e.EncodeNil(); return } */ -}} - {{ if eq .Elem "uint8" "byte" -}} - e.e.EncodeStringBytesRaw(v) - {{ else -}} - e.arrayStart(len(v)) - for j := range v { - e.arrayElem() - {{ encmd .Elem "v[j]"}} - } - e.arrayEnd() - {{ end -}} -} -func (fastpathT) {{ .MethodNamePfx "EncAsMap" false }}V(v []{{ .Elem }}, e *Encoder) { - {{/* if v == nil { e.e.EncodeNil() } else */ -}} - e.haltOnMbsOddLen(len(v)) - {{/* - if len(v)&1 != 0 { // similar to &1==1 or %2 == 1 - e.errorf(fastpathMapBySliceErrMsg, len(v)) - } - */ -}} - e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) - for j := range v { - if j&1 == 0 { // if j%2 == 0 { - e.mapElemKey() - } else { - e.mapElemValue() - } - {{ encmd .Elem "v[j]"}} - } - e.mapEnd() -} -{{end}}{{end}}{{end -}} - -{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} -func (e *Encoder) {{ .MethodNamePfx "fastpathEnc" false }}R(f *codecFnInfo, rv reflect.Value) { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), e) -} -func (fastpathT) {{ .MethodNamePfx "Enc" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, e *Encoder) { - {{/* if v == nil { e.e.EncodeNil(); return } */ -}} - e.mapStart(len(v)) - if e.h.Canonical { {{/* need to figure out .NoCanonical */}} - {{if eq .MapKey "interface{}"}}{{/* out of band */ -}} - var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding - e2 := NewEncoderBytes(&mksv, e.hh) - v2 := make([]bytesIntf, len(v)) - var i, l uint {{/* put loop variables outside. seems currently needed for better perf */}} - var vp *bytesIntf - for k2 := range v { - l = uint(len(mksv)) - e2.MustEncode(k2) - vp = &v2[i] - vp.v = mksv[l:] - vp.i = k2 - i++ - } - sort.Sort(bytesIntfSlice(v2)) - for j := range v2 { - e.mapElemKey() - e.asis(v2[j].v) - e.mapElemValue() - e.encode(v[v2[j].i]) - } {{else}}{{ $x := sorttype .MapKey true}}v2 := make([]{{ $x }}, len(v)) - var i uint - for k := range v { - v2[i] = {{if eq $x .MapKey}}k{{else}}{{ $x }}(k){{end}} - i++ - } - sort.Sort({{ sorttype .MapKey false}}(v2)) - for _, k2 := range v2 { - e.mapElemKey() - {{if eq .MapKey "string"}} e.e.EncodeString(k2) {{else}}{{ $y := printf "%s(k2)" .MapKey }}{{if eq $x .MapKey }}{{ $y = "k2" }}{{end}}{{ encmd .MapKey $y }}{{end}} - e.mapElemValue() - {{ $y := printf "v[%s(k2)]" .MapKey }}{{if eq $x .MapKey }}{{ $y = "v[k2]" }}{{end}}{{ encmd .Elem $y }} - } {{end}} - } else { - for k2, v2 := range v { - e.mapElemKey() - {{if eq .MapKey "string"}} e.e.EncodeString(k2) {{else}}{{ encmd .MapKey "k2"}}{{end}} - e.mapElemValue() - {{ encmd .Elem "v2"}} - } - } - e.mapEnd() -} -{{end}}{{end}}{{end -}} - -// -- decode - -// -- -- fast path type switch -func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { - var changed bool - var containerLen int - switch v := iv.(type) { -{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} - case []{{ .Elem }}: - fastpathTV.{{ .MethodNamePfx "Dec" false }}N(v, d) - case *[]{{ .Elem }}: - var v2 []{{ .Elem }} - if v2, changed = fastpathTV.{{ .MethodNamePfx "Dec" false }}Y(*v, d); changed { - *v = v2 - } -{{end}}{{end}}{{end -}} -{{range .Values}}{{if not .Primitive}}{{if .MapKey }}{{/* -// maps only change if nil, and in that case, there's no point copying -*/ -}} - case map[{{ .MapKey }}]{{ .Elem }}: - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen != containerLenNil { - if containerLen != 0 { - fastpathTV.{{ .MethodNamePfx "Dec" false }}L(v, containerLen, d) - } - d.mapEnd() - } - case *map[{{ .MapKey }}]{{ .Elem }}: - {{/* - containerLen = d.mapStart(d.d.ReadMapStart()) - if containerLen == 0 { - d.mapEnd() - } else if containerLen == containerLenNil { - *v = nil - } else { - if *v == nil { - *v = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }})) - } - fastpathTV.{{ .MethodNamePfx "Dec" false }}L(*v, containerLen, d) - } - // consider delegating fully to X - encoding *map is uncommon, so ok to pay small function call cost - */ -}} - fastpathTV.{{ .MethodNamePfx "Dec" false }}X(v, d) -{{end}}{{end}}{{end -}} - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool { - switch v := iv.(type) { -{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} - case *[]{{ .Elem }}: - *v = nil -{{end}}{{end}}{{end}} -{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} - case *map[{{ .MapKey }}]{{ .Elem }}: - *v = nil -{{end}}{{end}}{{end}} - default: - _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 - return false - } - return true -} - -// -- -- fast path functions -{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} -{{/* -Slices can change if they -- did not come from an array -- are addressable (from a ptr) -- are settable (e.g. contained in an interface{}) -*/}} -func (d *Decoder) {{ .MethodNamePfx "fastpathDec" false }}R(f *codecFnInfo, rv reflect.Value) { - {{/* - // seqTypeArray=true means that we are not getting a pointer, so no need to check that. - if f.seq != seqTypeArray && rv.Kind() == reflect.Ptr { - */ -}} - var v []{{ .Elem }} - switch rv.Kind() { - case reflect.Ptr: - vp := rv2i(rv).(*[]{{ .Elem }}) - var changed bool - if v, changed = fastpathTV.{{ .MethodNamePfx "Dec" false }}Y(*vp, d); changed { - *vp = v - } - case reflect.Array: - rvGetSlice4Array(rv, &v) - fastpathTV.{{ .MethodNamePfx "Dec" false }}N(v, d) - default: - fastpathTV.{{ .MethodNamePfx "Dec" false }}N(rv2i(rv).([]{{ .Elem }}), d) - } -} -func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *[]{{ .Elem }}, d *Decoder) { - if v, changed := f.{{ .MethodNamePfx "Dec" false }}Y(*vp, d); changed { *vp = v } -} -func (fastpathT) {{ .MethodNamePfx "Dec" false }}Y(v []{{ .Elem }}, d *Decoder) (v2 []{{ .Elem }}, changed bool) { - {{ if eq .Elem "uint8" "byte" -}} - switch d.d.ContainerType() { - case valueTypeNil, valueTypeMap: - break - default: - v2 = d.decodeBytesInto(v[:len(v):len(v)]) - changed = !(len(v2) > 0 && len(v2) == len(v) && &v2[0] == &v[0]) // not same slice - return - } - {{ end -}} - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - if v == nil { return } - return nil, true - } - if containerLenS == 0 { - if v == nil { v = []{{ .Elem }}{} } else if len(v) != 0 { v = v[:0] } - slh.End() - return v, true - } - hasLen := containerLenS > 0 - var xlen int - if hasLen { - if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) - if xlen <= cap(v) { - v = v[:uint(xlen)] - } else { - v = make([]{{ .Elem }}, uint(xlen)) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - var j int - for j = 0; d.containerNext(j, containerLenS, hasLen); j++ { - if j == 0 && len(v) == 0 { // means hasLen == false - xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) {{/* xlen = decDefSliceCap */}} - v = make([]{{ .Elem }}, uint(xlen)) - changed = true - } - {{/* // if indefinite, etc, then expand the slice if necessary */ -}} - if j >= len(v) { - v = append(v, {{ zerocmd .Elem }}) - changed = true - } - slh.ElemContainerState(j) - {{ if eq .Elem "interface{}" }}d.decode(&v[uint(j)]){{ else }}v[uint(j)] = {{ decmd .Elem false }}{{ end }} - } - if j < len(v) { - v = v[:uint(j)] - changed = true - } else if j == 0 && v == nil { - v = []{{ .Elem }}{} - changed = true - } - slh.End() - return v, changed -} -func (fastpathT) {{ .MethodNamePfx "Dec" false }}N(v []{{ .Elem }}, d *Decoder) { - {{ if eq .Elem "uint8" "byte" -}} - switch d.d.ContainerType() { - case valueTypeNil, valueTypeMap: - break - default: - v2 := d.decodeBytesInto(v[:len(v):len(v)]) - if !(len(v2) > 0 && len(v2) == len(v) && &v2[0] == &v[0]) { // not same slice - copy(v, v2) - } - return - } - {{ end -}} - slh, containerLenS := d.decSliceHelperStart() - if slh.IsNil { - return - } - if containerLenS == 0 { - slh.End() - return - } - hasLen := containerLenS > 0 - for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { - {{/* // if indefinite, etc, then expand the slice if necessary */ -}} - if j >= len(v) { - slh.arrayCannotExpand(hasLen, len(v), j, containerLenS) - return - } - slh.ElemContainerState(j) - {{ if eq .Elem "interface{}" -}} - d.decode(&v[uint(j)]) - {{- else -}} - v[uint(j)] = {{ decmd .Elem false }} - {{- end }} - } - slh.End() -} -{{end}}{{end}}{{end -}} - -{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} -{{/* -Maps can change if they are -- addressable (from a ptr) -- settable (e.g. contained in an interface{}) - -Also, these methods are called by decodeValue directly, after handling a TryNil. -Consequently, there's no need to check for containerLenNil here. -*/ -}} -func (d *Decoder) {{ .MethodNamePfx "fastpathDec" false }}R(f *codecFnInfo, rv reflect.Value) { - containerLen := d.mapStart(d.d.ReadMapStart()) - {{/* - if containerLen == containerLenNil { - if rv.Kind() == reflect.Ptr { - *(rv2i(rv).(*map[{{ .MapKey }}]{{ .Elem }})) = nil - } - return - } - */ -}} - if rv.Kind() == reflect.Ptr { - vp, _ := rv2i(rv).(*map[{{ .MapKey }}]{{ .Elem }}) - if *vp == nil { - *vp = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }})) - } - if containerLen != 0 { - fastpathTV.{{ .MethodNamePfx "Dec" false }}L(*vp, containerLen, d) - } - } else if containerLen != 0 { - fastpathTV.{{ .MethodNamePfx "Dec" false }}L(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), containerLen, d) - } - d.mapEnd() -} -func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *map[{{ .MapKey }}]{{ .Elem }}, d *Decoder) { - containerLen := d.mapStart(d.d.ReadMapStart()) - if containerLen == containerLenNil { - *vp = nil - } else { - if *vp == nil { - *vp = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }})) - } - if containerLen != 0 { - f.{{ .MethodNamePfx "Dec" false }}L(*vp, containerLen, d) - } - d.mapEnd() - } -} -func (fastpathT) {{ .MethodNamePfx "Dec" false }}L(v map[{{ .MapKey }}]{{ .Elem }}, containerLen int, d *Decoder) { - {{/* No need to check if containerLen == containerLenNil, as that is checked by R and L above */ -}} - if v == nil { - d.errorf("cannot decode into nil map[{{ .MapKey }}]{{ .Elem }} given stream length: %v", containerLen) - {{/* d.swallowMapContents(containerLen) */ -}} - return - } - {{if eq .Elem "interface{}" }}mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset - {{else if eq .Elem "bytes" "[]byte" }}mapGet := v != nil && !d.h.MapValueReset - {{end -}} - var mk {{ .MapKey }} - var mv {{ .Elem }} - hasLen := containerLen > 0 - for j := 0; d.containerNext(j, containerLen, hasLen); j++ { - d.mapElemKey() - {{ if eq .MapKey "interface{}" }}mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.stringZC(bv) {{/* // maps cannot have []byte as key. switch to string. */}} - }{{ else }}mk = {{ decmd .MapKey true }}{{ end }} - d.mapElemValue() - {{ if eq .Elem "interface{}" "[]byte" "bytes" -}} - if mapGet { mv = v[mk] } else { mv = nil } - {{ end -}} - {{ if eq .Elem "interface{}" -}} - d.decode(&mv) - {{ else if eq .Elem "[]byte" "bytes" -}} - mv = d.decodeBytesInto(mv) - {{ else -}} - mv = {{ decmd .Elem false }} - {{ end -}} - v[mk] = mv - } -} -{{end}}{{end}}{{end}} diff --git a/vendor/github.com/ugorji/go/codec/fastpath.go.tmpl b/vendor/github.com/ugorji/go/codec/fastpath.go.tmpl new file mode 100644 index 000000000..db60ea837 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/fastpath.go.tmpl @@ -0,0 +1,134 @@ +//go:build !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// Code generated from fastpath.go.tmpl - DO NOT EDIT. + +package codec + +// Fast path functions try to create a fast path encode or decode implementation +// for common maps and slices. +// +// We define the functions and register them in this single file +// so as not to pollute the encode.go and decode.go, and create a dependency in there. +// This file can be omitted without causing a build failure. +// +// The advantage of fast paths is: +// - Many calls bypass reflection altogether +// +// Currently support +// - slice of all builtin types (numeric, bool, string, []byte) +// - maps of builtin types to builtin or interface{} type, EXCEPT FOR +// keys of type uintptr, int8/16/32, uint16/32, float32/64, bool, interface{} +// AND values of type type int8/16/32, uint16/32 +// This should provide adequate "typical" implementations. +// +// Note that fast track decode functions must handle values for which an address cannot be obtained. +// For example: +// m2 := map[string]int{} +// p2 := []interface{}{m2} +// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. +// + +{{/* +// ---------------- +fastpathEncMapR func (mapped to type id), routes to: +- ft.EncMapV + +fastpathEncSliceR func (mapped to type id), delegates to one of: +- ft.EncSliceV +- ft.EncAsMapSliceV (when mapbyslice ie f.ti.mbs=true) + +// ---------------- +fastpathDecSliceR func (mapped to type id), delegates to: +- ft.DecSliceIntfY (when slice CAN be updated) +- ft.DecSliceIntfN (when slice CANNOT be updated e.g. from array or non-addressable slice) + +fastpathDecMapR func (mapped to type id), routes to +- ft.DecMapL (handles ptr which is changeable, and non-pointer which cannot be made if nil) + +// ---------------- +NOTE: +- fastpath typeswitch directly calls the secondary methods for builtin maps/slices with appropriate nil handling: + - except EncAsMapSliceV which only applies to wrapper types not those in the switch +- fastpathEncXXX functions mapped to type ID MUST do nil-checks during encode + - they are only called by decodeValue/encodeValue or other code (same way kMap et al are called) +*/ -}} + +import ( + "reflect" + "sort" + "slices" +) + +const fastpathEnabled = true + +{{/* +const fastpathMapBySliceErrMsg = "mapBySlice requires even slice length, but got %v" +*/ -}} + +type fastpathARtid [{{ .FastpathLen }}]uintptr + +type fastpathRtRtid struct { + rtid uintptr + rt reflect.Type +} +type fastpathARtRtid [{{ .FastpathLen }}]fastpathRtRtid + +var ( + fastpathAvRtidArr fastpathARtid + fastpathAvRtRtidArr fastpathARtRtid + fastpathAvRtid = fastpathAvRtidArr[:] + fastpathAvRtRtid = fastpathAvRtRtidArr[:] +) + +func fastpathAvIndex(rtid uintptr) (i uint, ok bool) { + return searchRtids(fastpathAvRtid, rtid) +} + +func init() { + var i uint = 0 + fn := func(v interface{}) { + xrt := reflect.TypeOf(v) + xrtid := rt2id(xrt) + xptrtid := rt2id(reflect.PointerTo(xrt)) + {{- /* only the base slice/map rtid is put in fastpathAvIndex, since we only handle slices/map/array */}} + fastpathAvRtid[i] = xrtid + fastpathAvRtRtid[i] = fastpathRtRtid{ rtid: xrtid, rt: xrt } + {{- /* fastpath type switches however handle slices/map/array, and pointers to them */}} + encBuiltinRtids = append(encBuiltinRtids, xrtid, xptrtid) + decBuiltinRtids = append(decBuiltinRtids, xrtid, xptrtid) + i++ + } + {{/* do not register []byte in fastpath */}} + {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + fn([]{{ .Elem }}(nil)) + {{end}}{{end}}{{end}} + + {{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + fn(map[{{ .MapKey }}]{{ .Elem }}(nil)) + {{end}}{{end}}{{end}} + + sort.Slice(fastpathAvRtid, func(i, j int) bool { return fastpathAvRtid[i] < fastpathAvRtid[j] }) + sort.Slice(fastpathAvRtRtid, func(i, j int) bool { return fastpathAvRtRtid[i].rtid < fastpathAvRtRtid[j].rtid }) + slices.Sort(encBuiltinRtids) + slices.Sort(decBuiltinRtids) +} + +func fastpathDecodeSetZeroTypeSwitch(iv interface{}) bool { + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + case *[]{{ .Elem }}: + *v = nil +{{end}}{{end}}{{end}} +{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + case *map[{{ .MapKey }}]{{ .Elem }}: + *v = nil +{{end}}{{end}}{{end}} + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} diff --git a/vendor/github.com/ugorji/go/codec/fastpath.notmono.go.tmpl b/vendor/github.com/ugorji/go/codec/fastpath.notmono.go.tmpl new file mode 100644 index 000000000..a85a0d23a --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/fastpath.notmono.go.tmpl @@ -0,0 +1,525 @@ +//go:build !notfastpath && !codec.notfastpath && (notmono || codec.notmono) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// Code generated from fastpath.notmono.go.tmpl - DO NOT EDIT. + +package codec + +import ( + "reflect" + "sort" + "slices" +) + +type fastpathE[T encDriver] struct { + rtid uintptr + rt reflect.Type + encfn func(*encoder[T], *encFnInfo, reflect.Value) +} +type fastpathD[T decDriver] struct { + rtid uintptr + rt reflect.Type + decfn func(*decoder[T], *decFnInfo, reflect.Value) +} +type fastpathEs[T encDriver] [{{ .FastpathLen }}]fastpathE[T] +type fastpathDs[T decDriver] [{{ .FastpathLen }}]fastpathD[T] + +type fastpathET[T encDriver] struct{} +type fastpathDT[T decDriver] struct{} + +func (helperEncDriver[T]) fastpathEList() *fastpathEs[T] { + var i uint = 0 + var s fastpathEs[T] + fn := func(v interface{}, fe func(*encoder[T], *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathE[T]{rt2id(xrt), xrt, fe} + i++ + } + {{/* do not register []byte in fastpath */}} + {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + fn([]{{ .Elem }}(nil), (*encoder[T]).{{ .MethodNamePfx "fastpathEnc" false }}R) + {{end}}{{end}}{{end}} + + {{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + fn(map[{{ .MapKey }}]{{ .Elem }}(nil), (*encoder[T]).{{ .MethodNamePfx "fastpathEnc" false }}R) + {{end}}{{end}}{{end}} + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriver[T]) fastpathDList() *fastpathDs[T] { + var i uint = 0 + var s fastpathDs[T] + fn := func(v interface{}, fd func(*decoder[T], *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathD[T]{rt2id(xrt), xrt, fd} + i++ + } + {{/* do not register []byte in fastpath */}} + {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + fn([]{{ .Elem }}(nil), (*decoder[T]).{{ .MethodNamePfx "fastpathDec" false }}R) + {{end}}{{end}}{{end}} + + {{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + fn(map[{{ .MapKey }}]{{ .Elem }}(nil), (*decoder[T]).{{ .MethodNamePfx "fastpathDec" false }}R) + {{end}}{{end}}{{end}} + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +// -- encode + +// -- -- fast path type switch +func (helperEncDriver[T]) fastpathEncodeTypeSwitch(iv interface{}, e *encoder[T]) bool { + var ft fastpathET[T] + switch v := iv.(type) { + {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + case []{{ .Elem }}: + if v == nil { e.e.writeNilArray() } else { ft.{{ .MethodNamePfx "Enc" false }}V(v, e) } +{{end}}{{end}}{{end -}} + +{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + case map[{{ .MapKey }}]{{ .Elem }}: + if v == nil { e.e.writeNilMap() } else { ft.{{ .MethodNamePfx "Enc" false }}V(v, e) } +{{end}}{{end}}{{end -}} + + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} + +// -- -- fast path functions +{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} +func (e *encoder[T]) {{ .MethodNamePfx "fastpathEnc" false }}R(f *encFnInfo, rv reflect.Value) { + var ft fastpathET[T] + var v []{{ .Elem }} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]{{ .Elem }}) + } + if f.ti.mbs { + ft.{{ .MethodNamePfx "EncAsMap" false }}V(v, e) + return + } + ft.{{ .MethodNamePfx "Enc" false }}V(v, e) +} +func (fastpathET[T]) {{ .MethodNamePfx "Enc" false }}V(v []{{ .Elem }}, e *encoder[T]) { + {{ if eq .Elem "uint8" "byte" -}} + e.e.EncodeStringBytesRaw(v) + {{ else -}} + if len(v) == 0 { + e.c = 0; e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem; e.e.WriteArrayElem(j == 0) + {{ encmd .Elem "v[j]"}} + } + e.c = 0; e.e.WriteArrayEnd() + {{ end -}} +} +func (fastpathET[T]) {{ .MethodNamePfx "EncAsMap" false }}V(v []{{ .Elem }}, e *encoder[T]) { + if len(v) == 0 { + e.c = 0; e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) // e.mapStart(len(v) / 2) + for j := range v { + if j&1 == 0 { // if j%2 == 0 { + e.c = containerMapKey; e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + {{ encmd .Elem "v[j]"}} + } + e.c = 0; e.e.WriteMapEnd() +} + +{{end}}{{end}}{{end -}} + +{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} +func (e *encoder[T]) {{ .MethodNamePfx "fastpathEnc" false }}R(f *encFnInfo, rv reflect.Value) { + {{/* var ft fastpathET[T] + ft.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), e) */ -}} + fastpathET[T]{}.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), e) +} +func (fastpathET[T]) {{ .MethodNamePfx "Enc" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, e *encoder[T]) { + {{/* if v == nil { e.e.EncodeNil(); return } */ -}} + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { {{/* need to figure out .NoCanonical */}} + {{if eq .MapKey "interface{}"}}{{/* out of band */ -}} + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesIntf, len(v)) + var l uint {{/* put loop variables outside. seems currently needed for better perf */}} + var vp *bytesIntf + for k2 := range v { + l = uint(len(mksv)) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + slices.SortFunc(v2, cmpBytesIntf) + for j := range v2 { + e.c = containerMapKey; e.e.WriteMapElemKey(j == 0) + e.asis(v2[j].v) + e.mapElemValue() + e.encode(v[v2[j].i]) + } {{else}}{{ $x := sorttype .MapKey true}}v2 := make([]{{ $x }}, len(v)) + for k := range v { + v2[i] = {{if eq $x .MapKey}}k{{else}}{{ $x }}(k){{end}} + i++ + } + slices.Sort(v2) + {{/* // sort.Sort({{ sorttype .MapKey false}}(v2)) */ -}} + for i, k2 := range v2 { + e.c = containerMapKey; e.e.WriteMapElemKey(i == 0) + {{if eq .MapKey "string"}} e.e.EncodeString(k2) {{else}}{{ $y := printf "%s(k2)" .MapKey }}{{if eq $x .MapKey }}{{ $y = "k2" }}{{end}}{{ encmd .MapKey $y }}{{end}} + e.mapElemValue() + {{ $y := printf "v[%s(k2)]" .MapKey }}{{if eq $x .MapKey }}{{ $y = "v[k2]" }}{{end}}{{ encmd .Elem $y }} + } {{end}} + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey; e.e.WriteMapElemKey(i == 0) + {{if eq .MapKey "string"}} e.e.EncodeString(k2) {{else}}{{ encmd .MapKey "k2"}}{{end}} + e.mapElemValue() + {{ encmd .Elem "v2"}} + i++ + } + } + e.c = 0; e.e.WriteMapEnd() +} +{{end}}{{end}}{{end -}} + +// -- decode + +// -- -- fast path type switch +func (helperDecDriver[T]) fastpathDecodeTypeSwitch(iv interface{}, d *decoder[T]) bool { + var ft fastpathDT[T] + var changed bool + var containerLen int + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + case []{{ .Elem }}: + ft.{{ .MethodNamePfx "Dec" false }}N(v, d) + case *[]{{ .Elem }}: + var v2 []{{ .Elem }} + if v2, changed = ft.{{ .MethodNamePfx "Dec" false }}Y(*v, d); changed { + *v = v2 + } +{{end}}{{end}}{{end -}} +{{range .Values}}{{if not .Primitive}}{{if .MapKey }}{{/* +// maps only change if nil, and in that case, there's no point copying +*/ -}} + case map[{{ .MapKey }}]{{ .Elem }}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.{{ .MethodNamePfx "Dec" false }}L(v, containerLen, d) + } + d.mapEnd() + } + case *map[{{ .MapKey }}]{{ .Elem }}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.maxInitLen(), {{ .Size }})) + } + if containerLen != 0 { + ft.{{ .MethodNamePfx "Dec" false }}L(*v, containerLen, d) + } + d.mapEnd() + } +{{end}}{{end}}{{end -}} + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} + +// -- -- fast path functions +{{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} +{{/* +Slices can change if they +- did not come from an array +- are addressable (from a ptr) +- are settable (e.g. contained in an interface{}) +*/}} +func (d *decoder[T]) {{ .MethodNamePfx "fastpathDec" false }}R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + {{/* + // seqTypeArray=true means that we are not getting a pointer, so no need to check that. + if f.seq != seqTypeArray && rv.Kind() == reflect.Ptr { + */ -}} + switch rv.Kind() { + case reflect.Ptr: {{- /* this block is called for types that wrap a fastpath type e.g. wrapSliceUint64 */}} + v := rv2i(rv).(*[]{{ .Elem }}) + if vv, changed := ft.{{ .MethodNamePfx "Dec" false }}Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []{{ .Elem }} + rvGetSlice4Array(rv, &v) + ft.{{ .MethodNamePfx "Dec" false }}N(v, d) + default: + ft.{{ .MethodNamePfx "Dec" false }}N(rv2i(rv).([]{{ .Elem }}), d) + } +} +func (fastpathDT[T]) {{ .MethodNamePfx "Dec" false }}Y(v []{{ .Elem }}, d *decoder[T]) (v2 []{{ .Elem }}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + {{ if eq .Elem "uint8" "byte" -}} + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + {{ else -}} + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + {{ end -}} + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []{{ .Elem }}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), {{ .Size }})); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]{{ .Elem }}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + {{ if eq .Elem "uint8" "byte" }}{{ else -}} + if isArray { d.arrayElem(j == 0) } else + {{ end -}} + if j&1 == 0 { d.mapElemKey(j == 0) } else { d.mapElemValue() } + if j >= len(v) { {{- /* // if indefinite, json, etc, then expand the slice (if necessary) */}} + fnv(append(v, {{ zerocmd .Elem }})) + } + {{ if eq .Elem "interface{}" }}d.decode(&v[uint(j)]){{ else }}v[uint(j)] = {{ decmd .Elem false }}{{ end }} + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]{{ .Elem }}{}) + } + {{ if eq .Elem "uint8" "byte" -}} + d.mapEnd() + {{ else -}} + if isArray { d.arrayEnd() } else { d.mapEnd() } + {{ end -}} + return v, changed +} +func (fastpathDT[T]) {{ .MethodNamePfx "Dec" false }}N(v []{{ .Elem }}, d *decoder[T]) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + {{ if eq .Elem "uint8" "byte" -}} + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + {{ else -}} + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + {{ end -}} + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + {{/* // if indefinite, etc, then expand the slice if necessary */ -}} + {{ if not (eq .Elem "uint8" "byte") -}} + if isArray { d.arrayElem(j == 0) } else + {{ end -}} + if j&1 == 0 { d.mapElemKey(j == 0) } else { d.mapElemValue() } + if j < len(v) { + {{ if eq .Elem "interface{}" }}d.decode(&v[uint(j)]){{ else }}v[uint(j)] = {{ decmd .Elem false }}{{ end }} + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + {{ if eq .Elem "uint8" "byte" -}} + d.mapEnd() + {{ else -}} + if isArray { d.arrayEnd() } else { d.mapEnd() } + {{ end -}} +} +{{end}}{{end}}{{end -}} + +{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} +{{/* +Maps can change if they are +- addressable (from a ptr) +- settable (e.g. contained in an interface{}) +*/ -}} +func (d *decoder[T]) {{ .MethodNamePfx "fastpathDec" false }}R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDT[T] + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { {{- /* this block is called for types that wrap a fastpath type e.g. wrapMapStringUint64 */}} + vp, _ := rv2i(rv).(*map[{{ .MapKey }}]{{ .Elem }}) + if *vp == nil { + *vp = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.maxInitLen(), {{ .Size }})) + } + if containerLen != 0 { + ft.{{ .MethodNamePfx "Dec" false }}L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.{{ .MethodNamePfx "Dec" false }}L(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDT[T]) {{ .MethodNamePfx "Dec" false }}L(v map[{{ .MapKey }}]{{ .Elem }}, containerLen int, d *decoder[T]) { + if v == nil { + halt.errorInt("cannot decode into nil map[{{ .MapKey }}]{{ .Elem }} given stream length: ", int64(containerLen)) + {{/* d.swallowMapContents(containerLen); return */ -}} + } + {{if eq .MapKey "interface{}" -}} + var mk {{ .MapKey }} + {{end -}} + {{ if eq .Elem "interface{}" "[]byte" "bytes" -}} + var mv {{ .Elem }} + mapGet := !d.h.MapValueReset + {{- if eq .Elem "interface{}" -}} + && !d.h.InterfaceReset + {{- end}} + {{end -}} + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + {{ if eq .MapKey "interface{}" -}} + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.detach2Str(bv) {{/* // maps cannot have []byte as key. switch to string. */}} + }{{ else }}mk := {{ decmd .MapKey true }}{{ end }} + d.mapElemValue() + {{ if eq .Elem "interface{}" "[]byte" "bytes" -}} + if mapGet { mv = v[mk] } else { mv = nil } + {{ end -}} + {{ if eq .Elem "interface{}" -}} + d.decode(&mv) + v[mk] = mv + {{ else if eq .Elem "[]byte" "bytes" -}} + v[mk], _ = d.decodeBytesInto(mv, false) + {{ else -}} + v[mk] = {{ decmd .Elem false }} + {{ end -}} + } +} +{{end}}{{end}}{{end}} + +{{- /* + +// -- -- fast path type switch +func (helperEncDriver[T]) fastpathEncodeTypeSwitch(iv interface{}, e *encoder[T]) bool { + var ft fastpathET[T] + switch v := iv.(type) { + {{range .Values}}{{if not .Primitive}}{{if not .MapKey -}} + case []{{ .Elem }}: + if v != nil { + ft.{{ .MethodNamePfx "Enc" false }}V(v, e) + } else if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + case *[]{{ .Elem }}: + if *v != nil { + ft.{{ .MethodNamePfx "Enc" false }}V(*v, e) + } else if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } +{{end}}{{end}}{{end -}} + +{{range .Values}}{{if not .Primitive}}{{if .MapKey -}} + case map[{{ .MapKey }}]{{ .Elem }}: + if v != nil { + ft.{{ .MethodNamePfx "Enc" false }}V(v, e) + } else if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + case *map[{{ .MapKey }}]{{ .Elem }}: + if *v != nil { + ft.{{ .MethodNamePfx "Enc" false }}V(*v, e) + } else if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } +{{end}}{{end}}{{end -}} + + default: + _ = v // workaround https://github.com/golang/go/issues/12927 seen in go1.4 + return false + } + return true +} + +// used within codecgen, which is no longer supported +func (f fastpathDT[T]) {{ .MethodNamePfx "Dec" false }}X(vp *[]{{ .Elem }}, d *decoder[T]) { + if v, changed := f.{{ .MethodNamePfx "Dec" false }}Y(*vp, d); changed { *vp = v } +} + +func (f fastpathDT[T]) {{ .MethodNamePfx "Dec" false }}X(vp *map[{{ .MapKey }}]{{ .Elem }}, d *decoder[T]) { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == containerLenNil { + *vp = nil + return + } + if *vp == nil { + *vp = make(map[{{ .MapKey }}]{{ .Elem }}, decInferLen(containerLen, d.maxInitLen(), {{ .Size }})) + } + if containerLen != 0 { + f.{{ .MethodNamePfx "Dec" false }}L(*vp, containerLen, d) + } + d.mapEnd() +} + +*/ -}} diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl deleted file mode 100644 index 5e119e715..000000000 --- a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl +++ /dev/null @@ -1,90 +0,0 @@ -{{var "v"}} := {{if not isArray}}*{{end}}{{ .Varname }} -{{var "h"}}, {{var "l"}} := z.DecSliceHelperStart() {{/* // helper, containerLenS */}} -{{if not isArray -}} -var {{var "c"}} bool {{/* // changed */}} -_ = {{var "c"}} -if {{var "h"}}.IsNil { - if {{var "v"}} != nil { - {{var "v"}} = nil - {{var "c"}} = true - } -} else {{end -}} -if {{var "l"}} == 0 { - {{if isSlice -}} - if {{var "v"}} == nil { - {{var "v"}} = []{{ .Typ }}{} - {{var "c"}} = true - } else if len({{var "v"}}) != 0 { - {{var "v"}} = {{var "v"}}[:0] - {{var "c"}} = true - } {{else if isChan }}if {{var "v"}} == nil { - {{var "v"}} = make({{ .CTyp }}, 0) - {{var "c"}} = true - } - {{end -}} -} else { - {{var "hl"}} := {{var "l"}} > 0 - var {{var "rl"}} int - _ = {{var "rl"}} - {{if isSlice }} if {{var "hl"}} { - if {{var "l"}} > cap({{var "v"}}) { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - if {{var "rl"}} <= cap({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "rl"}}] - } else { - {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) - } - {{var "c"}} = true - } else if {{var "l"}} != len({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "l"}}] - {{var "c"}} = true - } - } - {{end -}} - var {{var "j"}} int - {{/* // var {{var "dn"}} bool */ -}} - for {{var "j"}} = 0; z.DecContainerNext({{var "j"}}, {{var "l"}}, {{var "hl"}}); {{var "j"}}++ { - {{if not isArray}} if {{var "j"}} == 0 && {{var "v"}} == nil { - if {{var "hl"}} { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - } else { - {{var "rl"}} = {{if isSlice}}8{{else if isChan}}64{{end}} - } - {{var "v"}} = make({{if isSlice}}[]{{ .Typ }}{{else if isChan}}{{.CTyp}}{{end}}, {{var "rl"}}) - {{var "c"}} = true - } - {{end -}} - {{var "h"}}.ElemContainerState({{var "j"}}) - {{/* {{var "dn"}} = r.TryDecodeAsNil() */}}{{/* commented out, as decLineVar handles this already each time */ -}} - {{if isChan}}{{ $x := printf "%[1]vvcx%[2]v" .TempVar .Rand }}var {{$x}} {{ .Typ }} - {{ decLineVar $x -}} - {{var "v"}} <- {{ $x }} - {{else}}{{/* // if indefinite, etc, then expand the slice if necessary */ -}} - var {{var "db"}} bool - if {{var "j"}} >= len({{var "v"}}) { - {{if isSlice }} {{var "v"}} = append({{var "v"}}, {{ zero }}) - {{var "c"}} = true - {{else}} z.DecArrayCannotExpand(len(v), {{var "j"}}+1); {{var "db"}} = true - {{end -}} - } - if {{var "db"}} { - z.DecSwallow() - } else { - {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x -}} - } - {{end -}} - } - {{if isSlice}} if {{var "j"}} < len({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "j"}}] - {{var "c"}} = true - } else if {{var "j"}} == 0 && {{var "v"}} == nil { - {{var "v"}} = []{{ .Typ }}{} - {{var "c"}} = true - } - {{end -}} -} -{{var "h"}}.End() -{{if not isArray }}if {{var "c"}} { - *{{ .Varname }} = {{var "v"}} -} -{{end -}} diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl deleted file mode 100644 index b32ade2e1..000000000 --- a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl +++ /dev/null @@ -1,58 +0,0 @@ -{{var "v"}} := *{{ .Varname }} -{{var "l"}} := z.DecReadMapStart() -if {{var "l"}} == codecSelferDecContainerLenNil{{xs}} { - *{{ .Varname }} = nil -} else { -if {{var "v"}} == nil { - {{var "rl"}} := z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) - *{{ .Varname }} = {{var "v"}} -} -{{ $mk := var "mk" -}} -var {{ $mk }} {{ .KTyp }} -var {{var "mv"}} {{ .Typ }} -var {{var "mg"}}, {{var "mdn"}} {{if decElemKindPtr}}, {{var "ms"}}, {{var "mok"}}{{end}} bool -if z.DecBasicHandle().MapValueReset { - {{if decElemKindPtr}}{{var "mg"}} = true - {{else if decElemKindIntf}}if !z.DecBasicHandle().InterfaceReset { {{var "mg"}} = true } - {{else if not decElemKindImmutable}}{{var "mg"}} = true - {{end}} } -if {{var "l"}} != 0 { - {{var "hl"}} := {{var "l"}} > 0 - for {{var "j"}} := 0; z.DecContainerNext({{var "j"}}, {{var "l"}}, {{var "hl"}}); {{var "j"}}++ { - z.DecReadMapElemKey() - {{ if eq .KTyp "string" -}} - {{ decLineVarK $mk -}}{{- /* decLineVarKStrZC $mk */ -}} - {{ else -}} - {{ decLineVarK $mk -}} - {{ end -}} - {{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */ -}} - if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { - {{var "mk"}} = z.DecStringZC({{var "bv"}}) - } - {{ end -}} - {{if decElemKindPtr -}} - {{var "ms"}} = true - {{end -}} - if {{var "mg"}} { - {{if decElemKindPtr -}} - {{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{ $mk }}] - if {{var "mok"}} { - {{var "ms"}} = false - } - {{else -}} - {{var "mv"}} = {{var "v"}}[{{ $mk }}] - {{end -}} - } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} - z.DecReadMapElemValue() - {{var "mdn"}} = false - {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ $y := printf "%vmdn%v" .TempVar .Rand }}{{ decLineVar $x $y -}} - if {{var "mdn"}} { - {{var "v"}}[{{ $mk }}] = {{decElemZero}} - } else {{if decElemKindPtr}} if {{var "ms"}} {{end}} { - {{var "v"}}[{{ $mk }}] = {{var "mv"}} - } -} -} // else len==0: leave as-is (do not clear map entries) -z.DecReadMapEnd() -} diff --git a/vendor/github.com/ugorji/go/codec/gen-enc-chan.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-enc-chan.go.tmpl deleted file mode 100644 index 4249588a3..000000000 --- a/vendor/github.com/ugorji/go/codec/gen-enc-chan.go.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -{{.Label}}: -switch timeout{{.Sfx}} := z.EncBasicHandle().ChanRecvTimeout; { -case timeout{{.Sfx}} == 0: // only consume available - for { - select { - case b{{.Sfx}} := <-{{.Chan}}: - {{ .Slice }} = append({{.Slice}}, b{{.Sfx}}) - default: - break {{.Label}} - } - } -case timeout{{.Sfx}} > 0: // consume until timeout - tt{{.Sfx}} := time.NewTimer(timeout{{.Sfx}}) - for { - select { - case b{{.Sfx}} := <-{{.Chan}}: - {{.Slice}} = append({{.Slice}}, b{{.Sfx}}) - case <-tt{{.Sfx}}.C: - // close(tt.C) - break {{.Label}} - } - } -default: // consume until close - for b{{.Sfx}} := range {{.Chan}} { - {{.Slice}} = append({{.Slice}}, b{{.Sfx}}) - } -} diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go deleted file mode 100644 index 9a145f140..000000000 --- a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go +++ /dev/null @@ -1,294 +0,0 @@ -// comment this out // + build ignore - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from gen-helper.go.tmpl - DO NOT EDIT. - -package codec - -import ( - "encoding" - "reflect" -) - -// GenVersion is the current version of codecgen. -const GenVersion = 28 - -// This file is used to generate helper code for codecgen. -// The values here i.e. genHelper(En|De)coder are not to be used directly by -// library users. They WILL change continuously and without notice. - -// GenHelperEncoder is exported so that it can be used externally by codecgen. -// -// Library users: DO NOT USE IT DIRECTLY or INDIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. -func GenHelper() (g genHelper) { return } - -type genHelper struct{} - -func (genHelper) Encoder(e *Encoder) (ge genHelperEncoder, ee genHelperEncDriver) { - ge = genHelperEncoder{e: e} - ee = genHelperEncDriver{encDriver: e.e} - return -} - -func (genHelper) Decoder(d *Decoder) (gd genHelperDecoder, dd genHelperDecDriver) { - gd = genHelperDecoder{d: d} - dd = genHelperDecDriver{decDriver: d.d} - return -} - -type genHelperEncDriver struct { - encDriver -} - -type genHelperDecDriver struct { - decDriver -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -type genHelperEncoder struct { - M mustHdl - F fastpathT - e *Encoder -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -type genHelperDecoder struct { - C checkOverflow - F fastpathT - d *Decoder -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBasicHandle() *BasicHandle { - return f.e.h -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWr() *encWr { - return f.e.w() -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBinary() bool { - return f.e.be // f.e.hh.isBinaryEncoding() -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) IsJSONHandle() bool { - return f.e.js -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncFallback(iv interface{}) { - // f.e.encodeI(iv, false, false) - f.e.encodeValue(reflect.ValueOf(iv), nil) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) { - bs, fnerr := iv.MarshalText() - f.e.marshalUtf8(bs, fnerr) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) { - bs, fnerr := iv.MarshalJSON() - f.e.marshalAsis(bs, fnerr) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) { - bs, fnerr := iv.MarshalBinary() - f.e.marshalRaw(bs, fnerr) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncRaw(iv Raw) { f.e.rawBytes(iv) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) Extension(v interface{}) (xfn *extTypeTagFn) { - return f.e.h.getExtForI(v) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncExtension(v interface{}, xfFn *extTypeTagFn) { - f.e.e.EncodeExt(v, xfFn.rt, xfFn.tag, xfFn.ext) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapStart(length int) { f.e.mapStart(length) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapEnd() { f.e.mapEnd() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayStart(length int) { f.e.arrayStart(length) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayEnd() { f.e.arrayEnd() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayElem() { f.e.arrayElem() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapElemKey() { f.e.mapElemKey() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapElemValue() { f.e.mapElemValue() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeComplex64(v complex64) { f.e.encodeComplex64(v) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeComplex128(v complex128) { f.e.encodeComplex128(v) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncode(v interface{}) { f.e.encode(v) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncFnGivenAddr(v interface{}) *codecFn { - return f.e.h.fn(reflect.TypeOf(v).Elem()) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeNumBoolStrKindGivenAddr(v interface{}, encFn *codecFn) { - f.e.encodeValueNonNil(reflect.ValueOf(v).Elem(), encFn) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeMapNonNil(v interface{}) { - if skipFastpathTypeSwitchInDirectCall || !fastpathEncodeTypeSwitch(v, f.e) { - f.e.encodeValueNonNil(reflect.ValueOf(v), nil) - } -} - -// ---------------- DECODER FOLLOWS ----------------- - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBasicHandle() *BasicHandle { - return f.d.h -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBinary() bool { - return f.d.be // f.d.hh.isBinaryEncoding() -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecSwallow() { f.d.swallow() } - -// // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -// func (f genHelperDecoder) DecScratchBuffer() []byte { -// return f.d.b[:] -// } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecScratchArrayBuffer() *[decScratchByteArrayLen]byte { - return &f.d.b -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) { - rv := reflect.ValueOf(iv) - if chkPtr { - if x, _ := isDecodeable(rv); !x { - f.d.haltAsNotDecodeable(rv) - } - } - f.d.decodeValue(rv, nil) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) { - return f.d.decSliceHelperStart() -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) { - f.d.structFieldNotFound(index, name) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { - f.d.arrayCannotExpand(sliceLen, streamLen) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { - halt.onerror(tm.UnmarshalText(f.d.d.DecodeStringAsBytes())) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { - f.d.jsonUnmarshalV(tm) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { - halt.onerror(bm.UnmarshalBinary(f.d.d.DecodeBytes(nil))) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecRaw() []byte { return f.d.rawBytes() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) IsJSONHandle() bool { - return f.d.js -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) Extension(v interface{}) (xfn *extTypeTagFn) { - return f.d.h.getExtForI(v) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecExtension(v interface{}, xfFn *extTypeTagFn) { - f.d.d.DecodeExt(v, xfFn.rt, xfFn.tag, xfFn.ext) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) { - return decInferLen(clen, maxlen, unit) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapStart() int { return f.d.mapStart(f.d.d.ReadMapStart()) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapEnd() { f.d.mapEnd() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayStart() int { return f.d.arrayStart(f.d.d.ReadArrayStart()) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayEnd() { f.d.arrayEnd() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayElem() { f.d.arrayElem() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapElemKey() { f.d.mapElemKey() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapElemValue() { f.d.mapElemValue() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecDecodeFloat32() float32 { return f.d.decodeFloat32() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecStringZC(v []byte) string { return f.d.stringZC(v) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecodeBytesInto(v []byte) []byte { return f.d.decodeBytesInto(v) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecContainerNext(j, containerLen int, hasLen bool) bool { - // return f.d.containerNext(j, containerLen, hasLen) - // rewriting so it can be inlined - if hasLen { - return j < containerLen - } - return !f.d.checkBreak() -} diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl deleted file mode 100644 index bf824ebdd..000000000 --- a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl +++ /dev/null @@ -1,273 +0,0 @@ -// comment this out // + build ignore - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from gen-helper.go.tmpl - DO NOT EDIT. - -package codec - -import ( - "encoding" - "reflect" -) - -// GenVersion is the current version of codecgen. -const GenVersion = {{ .Version }} - -// This file is used to generate helper code for codecgen. -// The values here i.e. genHelper(En|De)coder are not to be used directly by -// library users. They WILL change continuously and without notice. - -{{/* -// To help enforce this, we create an unexported type with exported members. -// The only way to get the type is via the one exported type that we control (somewhat). -// -// When static codecs are created for types, they will use this value -// to perform encoding or decoding of primitives or known slice or map types. -*/ -}} - -// GenHelperEncoder is exported so that it can be used externally by codecgen. -// -// Library users: DO NOT USE IT DIRECTLY or INDIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. -func GenHelper() (g genHelper) { return } - -type genHelper struct {} - -func (genHelper) Encoder(e *Encoder) (ge genHelperEncoder, ee genHelperEncDriver) { - ge = genHelperEncoder{e: e} - ee = genHelperEncDriver{encDriver: e.e} - return -} - -func (genHelper) Decoder(d *Decoder) (gd genHelperDecoder, dd genHelperDecDriver) { - gd = genHelperDecoder{d: d} - dd = genHelperDecDriver{decDriver: d.d} - return -} - -type genHelperEncDriver struct { - encDriver -} - -type genHelperDecDriver struct { - decDriver -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -type genHelperEncoder struct { - M mustHdl - F fastpathT - e *Encoder -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -type genHelperDecoder struct { - C checkOverflow - F fastpathT - d *Decoder -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBasicHandle() *BasicHandle { - return f.e.h -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWr() *encWr { - return f.e.w() -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBinary() bool { - return f.e.be // f.e.hh.isBinaryEncoding() -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) IsJSONHandle() bool { - return f.e.js -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncFallback(iv interface{}) { - // f.e.encodeI(iv, false, false) - f.e.encodeValue(reflect.ValueOf(iv), nil) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) { - bs, fnerr := iv.MarshalText() - f.e.marshalUtf8(bs, fnerr) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) { - bs, fnerr := iv.MarshalJSON() - f.e.marshalAsis(bs, fnerr) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) { - bs, fnerr := iv.MarshalBinary() - f.e.marshalRaw(bs, fnerr) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncRaw(iv Raw) { f.e.rawBytes(iv) } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) Extension(v interface{}) (xfn *extTypeTagFn) { - return f.e.h.getExtForI(v) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncExtension(v interface{}, xfFn *extTypeTagFn) { - f.e.e.EncodeExt(v, xfFn.rt, xfFn.tag, xfFn.ext) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapStart(length int) { f.e.mapStart(length) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapEnd() { f.e.mapEnd() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayStart(length int) { f.e.arrayStart(length) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayEnd() { f.e.arrayEnd() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteArrayElem() { f.e.arrayElem() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapElemKey() { f.e.mapElemKey() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncWriteMapElemValue() { f.e.mapElemValue() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeComplex64(v complex64) { f.e.encodeComplex64(v) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeComplex128(v complex128) { f.e.encodeComplex128(v) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncode(v interface{}) { f.e.encode(v) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncFnGivenAddr(v interface{}) *codecFn { return f.e.h.fn(reflect.TypeOf(v).Elem()) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeNumBoolStrKindGivenAddr(v interface{}, encFn *codecFn) { - f.e.encodeValueNonNil(reflect.ValueOf(v).Elem(), encFn) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperEncoder) EncEncodeMapNonNil(v interface{}) { - if skipFastpathTypeSwitchInDirectCall || !fastpathEncodeTypeSwitch(v, f.e) { - f.e.encodeValueNonNil(reflect.ValueOf(v), nil) - } -} - -// ---------------- DECODER FOLLOWS ----------------- - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBasicHandle() *BasicHandle { - return f.d.h -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBinary() bool { - return f.d.be // f.d.hh.isBinaryEncoding() -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecSwallow() { f.d.swallow() } - -// // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -// func (f genHelperDecoder) DecScratchBuffer() []byte { -// return f.d.b[:] -// } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecScratchArrayBuffer() *[decScratchByteArrayLen]byte { - return &f.d.b -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) { - rv := reflect.ValueOf(iv) - if chkPtr { - if x, _ := isDecodeable(rv); !x { - f.d.haltAsNotDecodeable(rv) - } - } - f.d.decodeValue(rv, nil) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) { - return f.d.decSliceHelperStart() -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) { - f.d.structFieldNotFound(index, name) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { - f.d.arrayCannotExpand(sliceLen, streamLen) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { - halt.onerror(tm.UnmarshalText(f.d.d.DecodeStringAsBytes())) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { - f.d.jsonUnmarshalV(tm) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { - halt.onerror(bm.UnmarshalBinary(f.d.d.DecodeBytes(nil))) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecRaw() []byte { return f.d.rawBytes() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) IsJSONHandle() bool { - return f.d.js -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) Extension(v interface{}) (xfn *extTypeTagFn) { - return f.d.h.getExtForI(v) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecExtension(v interface{}, xfFn *extTypeTagFn) { - f.d.d.DecodeExt(v, xfFn.rt, xfFn.tag, xfFn.ext) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) { - return decInferLen(clen, maxlen, unit) -} - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapStart() int { return f.d.mapStart(f.d.d.ReadMapStart()) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapEnd() { f.d.mapEnd() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayStart() int { return f.d.arrayStart(f.d.d.ReadArrayStart()) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayEnd() { f.d.arrayEnd() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadArrayElem() { f.d.arrayElem() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapElemKey() { f.d.mapElemKey() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecReadMapElemValue() { f.d.mapElemValue() } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecDecodeFloat32() float32 { return f.d.decodeFloat32() } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecStringZC(v []byte) string { return f.d.stringZC(v) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecodeBytesInto(v []byte) []byte { return f.d.decodeBytesInto(v) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecContainerNext(j, containerLen int, hasLen bool) bool { - // return f.d.containerNext(j, containerLen, hasLen) - // rewriting so it can be inlined - if hasLen { - return j < containerLen - } - return !f.d.checkBreak() -} - -{{/* -// MARKER: remove WriteStr, as it cannot be inlined as of 20230201. -// Instead, generated code calls (*encWr).WriteStr directly. - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -// func (f genHelperEncoder) WriteStr(s string) { -// f.e.encWr.writestr(s) -// } - -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) I2Rtid(v interface{}) uintptr { - return i2rtid(v) -} - -*/ -}} diff --git a/vendor/github.com/ugorji/go/codec/gen.generated.go b/vendor/github.com/ugorji/go/codec/gen.generated.go deleted file mode 100644 index 277180a01..000000000 --- a/vendor/github.com/ugorji/go/codec/gen.generated.go +++ /dev/null @@ -1,192 +0,0 @@ -// +build codecgen.exec - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -package codec - -// DO NOT EDIT. THIS FILE IS AUTO-GENERATED FROM gen-dec-(map|array).go.tmpl - -const genDecMapTmpl = ` -{{var "v"}} := *{{ .Varname }} -{{var "l"}} := z.DecReadMapStart() -if {{var "l"}} == codecSelferDecContainerLenNil{{xs}} { - *{{ .Varname }} = nil -} else { -if {{var "v"}} == nil { - {{var "rl"}} := z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) - *{{ .Varname }} = {{var "v"}} -} -{{ $mk := var "mk" -}} -var {{ $mk }} {{ .KTyp }} -var {{var "mv"}} {{ .Typ }} -var {{var "mg"}}, {{var "mdn"}} {{if decElemKindPtr}}, {{var "ms"}}, {{var "mok"}}{{end}} bool -if z.DecBasicHandle().MapValueReset { - {{if decElemKindPtr}}{{var "mg"}} = true - {{else if decElemKindIntf}}if !z.DecBasicHandle().InterfaceReset { {{var "mg"}} = true } - {{else if not decElemKindImmutable}}{{var "mg"}} = true - {{end}} } -if {{var "l"}} != 0 { - {{var "hl"}} := {{var "l"}} > 0 - for {{var "j"}} := 0; z.DecContainerNext({{var "j"}}, {{var "l"}}, {{var "hl"}}); {{var "j"}}++ { - z.DecReadMapElemKey() - {{ if eq .KTyp "string" -}} - {{ decLineVarK $mk -}}{{- /* decLineVarKStrZC $mk */ -}} - {{ else -}} - {{ decLineVarK $mk -}} - {{ end -}} - {{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */ -}} - if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { - {{var "mk"}} = z.DecStringZC({{var "bv"}}) - } - {{ end -}} - {{if decElemKindPtr -}} - {{var "ms"}} = true - {{end -}} - if {{var "mg"}} { - {{if decElemKindPtr -}} - {{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{ $mk }}] - if {{var "mok"}} { - {{var "ms"}} = false - } - {{else -}} - {{var "mv"}} = {{var "v"}}[{{ $mk }}] - {{end -}} - } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} - z.DecReadMapElemValue() - {{var "mdn"}} = false - {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ $y := printf "%vmdn%v" .TempVar .Rand }}{{ decLineVar $x $y -}} - if {{var "mdn"}} { - {{var "v"}}[{{ $mk }}] = {{decElemZero}} - } else {{if decElemKindPtr}} if {{var "ms"}} {{end}} { - {{var "v"}}[{{ $mk }}] = {{var "mv"}} - } -} -} // else len==0: leave as-is (do not clear map entries) -z.DecReadMapEnd() -} -` - -const genDecListTmpl = ` -{{var "v"}} := {{if not isArray}}*{{end}}{{ .Varname }} -{{var "h"}}, {{var "l"}} := z.DecSliceHelperStart() {{/* // helper, containerLenS */}} -{{if not isArray -}} -var {{var "c"}} bool {{/* // changed */}} -_ = {{var "c"}} -if {{var "h"}}.IsNil { - if {{var "v"}} != nil { - {{var "v"}} = nil - {{var "c"}} = true - } -} else {{end -}} -if {{var "l"}} == 0 { - {{if isSlice -}} - if {{var "v"}} == nil { - {{var "v"}} = []{{ .Typ }}{} - {{var "c"}} = true - } else if len({{var "v"}}) != 0 { - {{var "v"}} = {{var "v"}}[:0] - {{var "c"}} = true - } {{else if isChan }}if {{var "v"}} == nil { - {{var "v"}} = make({{ .CTyp }}, 0) - {{var "c"}} = true - } - {{end -}} -} else { - {{var "hl"}} := {{var "l"}} > 0 - var {{var "rl"}} int - _ = {{var "rl"}} - {{if isSlice }} if {{var "hl"}} { - if {{var "l"}} > cap({{var "v"}}) { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - if {{var "rl"}} <= cap({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "rl"}}] - } else { - {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) - } - {{var "c"}} = true - } else if {{var "l"}} != len({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "l"}}] - {{var "c"}} = true - } - } - {{end -}} - var {{var "j"}} int - {{/* // var {{var "dn"}} bool */ -}} - for {{var "j"}} = 0; z.DecContainerNext({{var "j"}}, {{var "l"}}, {{var "hl"}}); {{var "j"}}++ { - {{if not isArray}} if {{var "j"}} == 0 && {{var "v"}} == nil { - if {{var "hl"}} { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - } else { - {{var "rl"}} = {{if isSlice}}8{{else if isChan}}64{{end}} - } - {{var "v"}} = make({{if isSlice}}[]{{ .Typ }}{{else if isChan}}{{.CTyp}}{{end}}, {{var "rl"}}) - {{var "c"}} = true - } - {{end -}} - {{var "h"}}.ElemContainerState({{var "j"}}) - {{/* {{var "dn"}} = r.TryDecodeAsNil() */}}{{/* commented out, as decLineVar handles this already each time */ -}} - {{if isChan}}{{ $x := printf "%[1]vvcx%[2]v" .TempVar .Rand }}var {{$x}} {{ .Typ }} - {{ decLineVar $x -}} - {{var "v"}} <- {{ $x }} - {{else}}{{/* // if indefinite, etc, then expand the slice if necessary */ -}} - var {{var "db"}} bool - if {{var "j"}} >= len({{var "v"}}) { - {{if isSlice }} {{var "v"}} = append({{var "v"}}, {{ zero }}) - {{var "c"}} = true - {{else}} z.DecArrayCannotExpand(len(v), {{var "j"}}+1); {{var "db"}} = true - {{end -}} - } - if {{var "db"}} { - z.DecSwallow() - } else { - {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x -}} - } - {{end -}} - } - {{if isSlice}} if {{var "j"}} < len({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "j"}}] - {{var "c"}} = true - } else if {{var "j"}} == 0 && {{var "v"}} == nil { - {{var "v"}} = []{{ .Typ }}{} - {{var "c"}} = true - } - {{end -}} -} -{{var "h"}}.End() -{{if not isArray }}if {{var "c"}} { - *{{ .Varname }} = {{var "v"}} -} -{{end -}} -` - -const genEncChanTmpl = ` -{{.Label}}: -switch timeout{{.Sfx}} := z.EncBasicHandle().ChanRecvTimeout; { -case timeout{{.Sfx}} == 0: // only consume available - for { - select { - case b{{.Sfx}} := <-{{.Chan}}: - {{ .Slice }} = append({{.Slice}}, b{{.Sfx}}) - default: - break {{.Label}} - } - } -case timeout{{.Sfx}} > 0: // consume until timeout - tt{{.Sfx}} := time.NewTimer(timeout{{.Sfx}}) - for { - select { - case b{{.Sfx}} := <-{{.Chan}}: - {{.Slice}} = append({{.Slice}}, b{{.Sfx}}) - case <-tt{{.Sfx}}.C: - // close(tt.C) - break {{.Label}} - } - } -default: // consume until close - for b{{.Sfx}} := range {{.Chan}} { - {{.Slice}} = append({{.Slice}}, b{{.Sfx}}) - } -} -` diff --git a/vendor/github.com/ugorji/go/codec/gen.go b/vendor/github.com/ugorji/go/codec/gen.go index 0026e3e1c..4e521adf8 100644 --- a/vendor/github.com/ugorji/go/codec/gen.go +++ b/vendor/github.com/ugorji/go/codec/gen.go @@ -1,8 +1,7 @@ // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. -//go:build codecgen.exec -// +build codecgen.exec +//go:build codec.build package codec @@ -13,2145 +12,64 @@ import ( "fmt" "go/format" "io" - "io/ioutil" - "math/rand" "os" - "reflect" "regexp" - "sort" - "strconv" "strings" "sync" "text/template" - "time" // "ugorji.net/zz" - "unicode" - "unicode/utf8" ) // --------------------------------------------------- -// codecgen supports the full cycle of reflection-based codec: -// - RawExt -// - Raw -// - Extensions -// - (Binary|Text|JSON)(Unm|M)arshal -// - generic by-kind -// -// This means that, for dynamic things, we MUST use reflection to at least get the reflect.Type. -// In those areas, we try to only do reflection or interface-conversion when NECESSARY: -// - Extensions, only if Extensions are configured. -// -// However, note following codecgen caveats: -// - Canonical option. -// If Canonical=true, codecgen'ed code may delegate encoding maps to reflection-based code. -// This is due to the runtime work needed to marshal a map in canonical mode. -// However, if map key is a pre-defined/builtin numeric or string type, codecgen -// will try to write it out itself -// - CheckCircularRef option. -// When encoding a struct, a circular reference can lead to a stack overflow. -// If CheckCircularRef=true, codecgen'ed code will delegate encoding structs to reflection-based code. -// - MissingFielder implementation. -// If a type implements MissingFielder, a Selfer is not generated (with a warning message). -// Statically reproducing the runtime work needed to extract the missing fields and marshal them -// along with the struct fields, while handling the Canonical=true special case, was onerous to implement. -// -// During encode/decode, Selfer takes precedence. -// A type implementing Selfer will know how to encode/decode itself statically. -// -// The following field types are supported: -// array: [n]T -// slice: []T -// map: map[K]V -// primitive: [u]int[n], float(32|64), bool, string -// struct -// -// --------------------------------------------------- -// Note that a Selfer cannot call (e|d).(En|De)code on itself, -// as this will cause a circular reference, as (En|De)code will call Selfer methods. -// Any type that implements Selfer must implement completely and not fallback to (En|De)code. -// -// In addition, code in this file manages the generation of fast-path implementations of -// encode/decode of slices/maps of primitive keys/values. -// -// Users MUST re-generate their implementations whenever the code shape changes. -// The generated code will panic if it was generated with a version older than the supporting library. -// --------------------------------------------------- -// -// codec framework is very feature rich. -// When encoding or decoding into an interface, it depends on the runtime type of the interface. -// The type of the interface may be a named type, an extension, etc. -// Consequently, we fallback to runtime codec for encoding/decoding interfaces. -// In addition, we fallback for any value which cannot be guaranteed at runtime. -// This allows us support ANY value, including any named types, specifically those which -// do not implement our interfaces (e.g. Selfer). -// -// This explains some slowness compared to other code generation codecs (e.g. msgp). -// This reduction in speed is only seen when your refers to interfaces, -// e.g. type T struct { A interface{}; B []interface{}; C map[string]interface{} } -// -// codecgen will panic if the file was generated with an old version of the library in use. -// -// Note: -// It was a conscious decision to have gen.go always explicitly call EncodeNil or TryDecodeAsNil. -// This way, there isn't a function call overhead just to see that we should not enter a block of code. -// -// Note: -// codecgen-generated code depends on the variables defined by fast-path.generated.go. -// consequently, you cannot run with tags "codecgen codec.notfastpath". -// -// Note: -// genInternalXXX functions are used for generating fast-path and other internally generated -// files, and not for use in codecgen. - -// Size of a struct or value is not portable across machines, especially across 32-bit vs 64-bit -// operating systems. This is due to types like int, uintptr, pointers, (and derived types like slice), etc -// which use the natural word size on those machines, which may be 4 bytes (on 32-bit) or 8 bytes (on 64-bit). -// -// Within decInferLen calls, we may generate an explicit size of the entry. -// We do this because decInferLen values are expected to be approximate, -// and serve as a good hint on the size of the elements or key+value entry. -// -// Since development is done on 64-bit machines, the sizes will be roughly correctly -// on 64-bit OS, and slightly larger than expected on 32-bit OS. -// This is ok. -// -// For reference, look for 'Size' in fast-path.go.tmpl, gen-dec-(array|map).go.tmpl and gen.go (this file). - -// GenVersion is the current version of codecgen. -// -// MARKER: Increment this value each time codecgen changes fundamentally. -// Also update codecgen/gen.go (minimumCodecVersion, genVersion, etc). -// Fundamental changes are: -// - helper methods change (signature change, new ones added, some removed, etc) -// - codecgen command line changes -// -// v1: Initial Version -// v2: - -// v3: For Kubernetes: changes in signature of some unpublished helper methods and codecgen cmdline arguments. -// v4: Removed separator support from (en|de)cDriver, and refactored codec(gen) -// v5: changes to support faster json decoding. Let encoder/decoder maintain state of collections. -// v6: removed unsafe from gen, and now uses codecgen.exec tag -// v7: - -// v8: current - we now maintain compatibility with old generated code. -// v9: - skipped -// v10: modified encDriver and decDriver interfaces. -// v11: remove deprecated methods of encDriver and decDriver. -// v12: removed deprecated methods from genHelper and changed container tracking logic -// v13: 20190603 removed DecodeString - use DecodeStringAsBytes instead -// v14: 20190611 refactored nil handling: TryDecodeAsNil -> selective TryNil, etc -// v15: 20190626 encDriver.EncodeString handles StringToRaw flag inside handle -// v16: 20190629 refactoring for v1.1.6 -// v17: 20200911 reduce number of types for which we generate fast path functions (v1.1.8) -// v18: 20201004 changed definition of genHelper...Extension (to take interface{}) and eliminated I2Rtid method -// v19: 20201115 updated codecgen cmdline flags and optimized output -// v20: 20201120 refactored GenHelper to one exported function -// v21: 20210104 refactored generated code to honor ZeroCopy=true for more efficiency -// v22: 20210118 fixed issue in generated code when encoding a type which is also a codec.Selfer -// v23: 20210203 changed slice/map types for which we generate fast-path functions -// v24: 20210226 robust handling for Canonical|CheckCircularRef flags and MissingFielder implementations -// v25: 20210406 pass base reflect.Type to side(En|De)code and (En|De)codeExt calls -// v26: 20230201 genHelper changes for more inlining and consequent performance -// v27: 20230219 fix error decoding struct from array - due to misplaced counter increment -// v28: 20230224 fix decoding missing fields of struct from array, due to double counter increment -const genVersion = 28 - -const ( - genCodecPkg = "codec1978" // MARKER: keep in sync with codecgen/gen.go - genTempVarPfx = "yy" - genTopLevelVarName = "x" - - // ignore canBeNil parameter, and always set to true. - // This is because nil can appear anywhere, so we should always check. - genAnythingCanBeNil = true - - // genStructCanonical configures whether we generate 2 paths based on Canonical flag - // when encoding struct fields. - genStructCanonical = true - - // genFastpathCanonical configures whether we support Canonical in fast path. - // The savings is not much. - // - // MARKER: This MUST ALWAYS BE TRUE. fast-path.go.tmp doesn't handle it being false. - genFastpathCanonical = true - - // genFastpathTrimTypes configures whether we trim uncommon fastpath types. - genFastpathTrimTypes = true -) - -type genStringDecAsBytes string -type genStringDecZC string - -var genStringDecAsBytesTyp = reflect.TypeOf(genStringDecAsBytes("")) -var genStringDecZCTyp = reflect.TypeOf(genStringDecZC("")) -var genFormats = []string{"Json", "Cbor", "Msgpack", "Binc", "Simple"} - -var ( - errGenAllTypesSamePkg = errors.New("All types must be in the same package") - errGenExpectArrayOrMap = errors.New("unexpected type - expecting array/map/slice") - errGenUnexpectedTypeFastpath = errors.New("fast-path: unexpected type - requires map or slice") - - // don't use base64, only 63 characters allowed in valid go identifiers - // ie ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ - // - // don't use numbers, as a valid go identifer must start with a letter. - genTypenameEnc = base32.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef") - genQNameRegex = regexp.MustCompile(`[A-Za-z_.]+`) -) - -type genBuf struct { - buf []byte -} - -func (x *genBuf) sIf(b bool, s, t string) *genBuf { - if b { - x.buf = append(x.buf, s...) - } else { - x.buf = append(x.buf, t...) - } - return x -} -func (x *genBuf) s(s string) *genBuf { x.buf = append(x.buf, s...); return x } -func (x *genBuf) b(s []byte) *genBuf { x.buf = append(x.buf, s...); return x } -func (x *genBuf) v() string { return string(x.buf) } -func (x *genBuf) f(s string, args ...interface{}) { x.s(fmt.Sprintf(s, args...)) } -func (x *genBuf) reset() { - if x.buf != nil { - x.buf = x.buf[:0] - } -} - -// genRunner holds some state used during a Gen run. -type genRunner struct { - w io.Writer // output - c uint64 // counter used for generating varsfx - f uint64 // counter used for saying false - - t []reflect.Type // list of types to run selfer on - tc reflect.Type // currently running selfer on this type - te map[uintptr]bool // types for which the encoder has been created - td map[uintptr]bool // types for which the decoder has been created - tz map[uintptr]bool // types for which GenIsZero has been created - - cp string // codec import path - - im map[string]reflect.Type // imports to add - imn map[string]string // package names of imports to add - imc uint64 // counter for import numbers - - is map[reflect.Type]struct{} // types seen during import search - bp string // base PkgPath, for which we are generating for - - cpfx string // codec package prefix - - ty map[reflect.Type]struct{} // types for which GenIsZero *should* be created - tm map[reflect.Type]struct{} // types for which enc/dec must be generated - ts []reflect.Type // types for which enc/dec must be generated - - xs string // top level variable/constant suffix - hn string // fn helper type name - - ti *TypeInfos - // rr *rand.Rand // random generator for file-specific types - - jsonOnlyWhen, toArrayWhen, omitEmptyWhen *bool - - nx bool // no extensions -} - -type genIfClause struct { - hasIf bool -} - -func (g *genIfClause) end(x *genRunner) { - if g.hasIf { - x.line("}") - } -} - -func (g *genIfClause) c(last bool) (v string) { - if last { - if g.hasIf { - v = " } else { " - } - } else if g.hasIf { - v = " } else if " - } else { - v = "if " - g.hasIf = true - } - return -} - -// Gen will write a complete go file containing Selfer implementations for each -// type passed. All the types must be in the same package. -// -// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINUOUSLY WITHOUT NOTICE. -func Gen(w io.Writer, buildTags, pkgName, uid string, noExtensions bool, - jsonOnlyWhen, toArrayWhen, omitEmptyWhen *bool, - ti *TypeInfos, types ...reflect.Type) (warnings []string) { - // All types passed to this method do not have a codec.Selfer method implemented directly. - // codecgen already checks the AST and skips any types that define the codec.Selfer methods. - // Consequently, there's no need to check and trim them if they implement codec.Selfer - - if len(types) == 0 { - return - } - x := genRunner{ - w: w, - t: types, - te: make(map[uintptr]bool), - td: make(map[uintptr]bool), - tz: make(map[uintptr]bool), - im: make(map[string]reflect.Type), - imn: make(map[string]string), - is: make(map[reflect.Type]struct{}), - tm: make(map[reflect.Type]struct{}), - ty: make(map[reflect.Type]struct{}), - ts: []reflect.Type{}, - bp: genImportPath(types[0]), - xs: uid, - ti: ti, - jsonOnlyWhen: jsonOnlyWhen, - toArrayWhen: toArrayWhen, - omitEmptyWhen: omitEmptyWhen, - - nx: noExtensions, - } - if x.ti == nil { - x.ti = defTypeInfos - } - if x.xs == "" { - rr := rand.New(rand.NewSource(time.Now().UnixNano())) - x.xs = strconv.FormatInt(rr.Int63n(9999), 10) - } - - // gather imports first: - x.cp = genImportPath(reflect.TypeOf(x)) - x.imn[x.cp] = genCodecPkg - - // iterate, check if all in same package, and remove any missingfielders - for i := 0; i < len(x.t); { - t := x.t[i] - // xdebugf("###########: PkgPath: '%v', Name: '%s'\n", genImportPath(t), t.Name()) - if genImportPath(t) != x.bp { - halt.onerror(errGenAllTypesSamePkg) - } - ti1 := x.ti.get(rt2id(t), t) - if ti1.flagMissingFielder || ti1.flagMissingFielderPtr { - // output diagnostic message - that nothing generated for this type - warnings = append(warnings, fmt.Sprintf("type: '%v' not generated; implements codec.MissingFielder", t)) - copy(x.t[i:], x.t[i+1:]) - x.t = x.t[:len(x.t)-1] - continue - } - x.genRefPkgs(t) - i++ - } - - x.line("// +build go1.6") - if buildTags != "" { - x.line("// +build " + buildTags) - } - x.line(` - -// Code generated by codecgen - DO NOT EDIT. - -`) - x.line("package " + pkgName) - x.line("") - x.line("import (") - if x.cp != x.bp { - x.cpfx = genCodecPkg + "." - x.linef("%s \"%s\"", genCodecPkg, x.cp) - } - // use a sorted set of im keys, so that we can get consistent output - imKeys := make([]string, 0, len(x.im)) - for k := range x.im { - imKeys = append(imKeys, k) - } - sort.Strings(imKeys) - for _, k := range imKeys { // for k, _ := range x.im { - if k == x.imn[k] { - x.linef("\"%s\"", k) - } else { - x.linef("%s \"%s\"", x.imn[k], k) - } - } - // add required packages - for _, k := range [...]string{"runtime", "errors", "strconv", "sort"} { // "reflect", "fmt" - if _, ok := x.im[k]; !ok { - x.line("\"" + k + "\"") - } - } - x.line(")") - x.line("") - - x.line("const (") - x.linef("// ----- content types ----") - x.linef("codecSelferCcUTF8%s = %v", x.xs, int64(cUTF8)) - x.linef("codecSelferCcRAW%s = %v", x.xs, int64(cRAW)) - x.linef("// ----- value types used ----") - for _, vt := range [...]valueType{ - valueTypeArray, valueTypeMap, valueTypeString, - valueTypeInt, valueTypeUint, valueTypeFloat, - valueTypeNil, - } { - x.linef("codecSelferValueType%s%s = %v", vt.String(), x.xs, int64(vt)) - } - - x.linef("codecSelferBitsize%s = uint8(32 << (^uint(0) >> 63))", x.xs) - x.linef("codecSelferDecContainerLenNil%s = %d", x.xs, int64(containerLenNil)) - x.line(")") - x.line("var (") - x.line("errCodecSelferOnlyMapOrArrayEncodeToStruct" + x.xs + " = " + "errors.New(`only encoded map or array can be decoded into a struct`)") - x.line("_ sort.Interface = nil") - x.line(")") - x.line("") - - x.hn = "codecSelfer" + x.xs - x.line("type " + x.hn + " struct{}") - x.line("") - x.linef("func %sFalse() bool { return false }", x.hn) - x.linef("func %sTrue() bool { return true }", x.hn) - x.line("") - - // add types for sorting canonical - for _, s := range []string{"string", "uint64", "int64", "float64"} { - x.linef("type %s%sSlice []%s", x.hn, s, s) - x.linef("func (p %s%sSlice) Len() int { return len(p) }", x.hn, s) - x.linef("func (p %s%sSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }", x.hn, s) - x.linef("func (p %s%sSlice) Less(i, j int) bool { return p[uint(i)] < p[uint(j)] }", x.hn, s) - } - - x.line("") - x.varsfxreset() - x.line("func init() {") - x.linef("if %sGenVersion != %v {", x.cpfx, genVersion) - x.line("_, file, _, _ := runtime.Caller(0)") - x.linef("ver := strconv.FormatInt(int64(%sGenVersion), 10)", x.cpfx) - x.outf(`panic(errors.New("codecgen version mismatch: current: %v, need " + ver + ". Re-generate file: " + file))`, genVersion) - x.linef("}") - if len(imKeys) > 0 { - x.line("if false { // reference the types, but skip this branch at build/run time") - for _, k := range imKeys { - t := x.im[k] - x.linef("var _ %s.%s", x.imn[k], t.Name()) - } - x.line("} ") // close if false - } - x.line("}") // close init - x.line("") - - // generate rest of type info - for _, t := range x.t { - x.tc = t - x.linef("func (%s) codecSelferViaCodecgen() {}", x.genTypeName(t)) - x.selfer(true) - x.selfer(false) - x.tryGenIsZero(t) - } - - for _, t := range x.ts { - rtid := rt2id(t) - // generate enc functions for all these slice/map types. - x.varsfxreset() - x.linef("func (x %s) enc%s(v %s%s, e *%sEncoder) {", x.hn, x.genMethodNameT(t), x.arr2str(t, "*"), x.genTypeName(t), x.cpfx) - x.genRequiredMethodVars(true) - switch t.Kind() { - case reflect.Array, reflect.Slice, reflect.Chan: - x.encListFallback("v", t) - case reflect.Map: - x.encMapFallback("v", t) - default: - halt.onerror(errGenExpectArrayOrMap) - } - x.line("}") - x.line("") - - // generate dec functions for all these slice/map types. - x.varsfxreset() - x.linef("func (x %s) dec%s(v *%s, d *%sDecoder) {", x.hn, x.genMethodNameT(t), x.genTypeName(t), x.cpfx) - x.genRequiredMethodVars(false) - switch t.Kind() { - case reflect.Array, reflect.Slice, reflect.Chan: - x.decListFallback("v", rtid, t) - case reflect.Map: - x.decMapFallback("v", rtid, t) - default: - halt.onerror(errGenExpectArrayOrMap) - } - x.line("}") - x.line("") - } - - for t := range x.ty { - x.tryGenIsZero(t) - x.line("") - } - - x.line("") - return -} - -func (x *genRunner) checkForSelfer(t reflect.Type, varname string) bool { - // return varname != genTopLevelVarName && t != x.tc - // the only time we checkForSelfer is if we are not at the TOP of the generated code. - return varname != genTopLevelVarName -} - -func (x *genRunner) arr2str(t reflect.Type, s string) string { - if t.Kind() == reflect.Array { - return s - } - return "" -} - -func (x *genRunner) genRequiredMethodVars(encode bool) { - x.line("var h " + x.hn) - if encode { - x.line("z, r := " + x.cpfx + "GenHelper().Encoder(e)") - } else { - x.line("z, r := " + x.cpfx + "GenHelper().Decoder(d)") - } - x.line("_, _, _ = h, z, r") -} - -func (x *genRunner) genRefPkgs(t reflect.Type) { - if _, ok := x.is[t]; ok { - return - } - x.is[t] = struct{}{} - tpkg, tname := genImportPath(t), t.Name() - if tpkg != "" && tpkg != x.bp && tpkg != x.cp && tname != "" && tname[0] >= 'A' && tname[0] <= 'Z' { - if _, ok := x.im[tpkg]; !ok { - x.im[tpkg] = t - if idx := strings.LastIndex(tpkg, "/"); idx < 0 { - x.imn[tpkg] = tpkg - } else { - x.imc++ - x.imn[tpkg] = "pkg" + strconv.FormatUint(x.imc, 10) + "_" + genGoIdentifier(tpkg[idx+1:], false) - } - } - } - switch t.Kind() { - case reflect.Array, reflect.Slice, reflect.Ptr, reflect.Chan: - x.genRefPkgs(t.Elem()) - case reflect.Map: - x.genRefPkgs(t.Elem()) - x.genRefPkgs(t.Key()) - case reflect.Struct: - for i := 0; i < t.NumField(); i++ { - if fname := t.Field(i).Name; fname != "" && fname[0] >= 'A' && fname[0] <= 'Z' { - x.genRefPkgs(t.Field(i).Type) - } - } - } -} - -// sayFalse will either say "false" or use a function call that returns false. -func (x *genRunner) sayFalse() string { - x.f++ - if x.f%2 == 0 { - return x.hn + "False()" - } - return "false" -} - -// sayFalse will either say "true" or use a function call that returns true. -func (x *genRunner) sayTrue() string { - x.f++ - if x.f%2 == 0 { - return x.hn + "True()" - } - return "true" -} - -func (x *genRunner) varsfx() string { - x.c++ - return strconv.FormatUint(x.c, 10) -} - -func (x *genRunner) varsfxreset() { - x.c = 0 -} - -func (x *genRunner) out(s string) { - _, err := io.WriteString(x.w, s) - genCheckErr(err) -} - -func (x *genRunner) outf(s string, params ...interface{}) { - _, err := fmt.Fprintf(x.w, s, params...) - genCheckErr(err) -} - -func (x *genRunner) line(s string) { - x.out(s) - if len(s) == 0 || s[len(s)-1] != '\n' { - x.out("\n") - } -} - -func (x *genRunner) lineIf(s string) { - if s != "" { - x.line(s) - } -} - -func (x *genRunner) linef(s string, params ...interface{}) { - x.outf(s, params...) - if len(s) == 0 || s[len(s)-1] != '\n' { - x.out("\n") - } -} - -func (x *genRunner) genTypeName(t reflect.Type) (n string) { - // if the type has a PkgPath, which doesn't match the current package, - // then include it. - // We cannot depend on t.String() because it includes current package, - // or t.PkgPath because it includes full import path, - // - var ptrPfx string - for t.Kind() == reflect.Ptr { - ptrPfx += "*" - t = t.Elem() - } - if tn := t.Name(); tn != "" { - return ptrPfx + x.genTypeNamePrim(t) - } - switch t.Kind() { - case reflect.Map: - return ptrPfx + "map[" + x.genTypeName(t.Key()) + "]" + x.genTypeName(t.Elem()) - case reflect.Slice: - return ptrPfx + "[]" + x.genTypeName(t.Elem()) - case reflect.Array: - return ptrPfx + "[" + strconv.FormatInt(int64(t.Len()), 10) + "]" + x.genTypeName(t.Elem()) - case reflect.Chan: - return ptrPfx + t.ChanDir().String() + " " + x.genTypeName(t.Elem()) - default: - if t == intfTyp { - return ptrPfx + "interface{}" - } else { - return ptrPfx + x.genTypeNamePrim(t) - } - } -} - -func (x *genRunner) genTypeNamePrim(t reflect.Type) (n string) { - if t.Name() == "" { - return t.String() - } else if genImportPath(t) == "" || genImportPath(t) == genImportPath(x.tc) { - return t.Name() - } else { - return x.imn[genImportPath(t)] + "." + t.Name() - // return t.String() // best way to get the package name inclusive - } -} - -func (x *genRunner) genZeroValueR(t reflect.Type) string { - // if t is a named type, w - switch t.Kind() { - case reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func, - reflect.Slice, reflect.Map, reflect.Invalid: - return "nil" - case reflect.Bool: - return "false" - case reflect.String: - return `""` - case reflect.Struct, reflect.Array: - return x.genTypeName(t) + "{}" - default: // all numbers - return "0" - } -} - -func (x *genRunner) genMethodNameT(t reflect.Type) (s string) { - return genMethodNameT(t, x.tc) -} - -func (x *genRunner) tryGenIsZero(t reflect.Type) (done bool) { - if t.Kind() != reflect.Struct || t.Implements(isCodecEmptyerTyp) { - return - } - - rtid := rt2id(t) - - if _, ok := x.tz[rtid]; ok { - delete(x.ty, t) - return - } - - x.tz[rtid] = true - delete(x.ty, t) - - ti := x.ti.get(rtid, t) - tisfi := ti.sfi.source() // always use sequence from file. decStruct expects same thing. - varname := genTopLevelVarName - - x.linef("func (%s *%s) IsCodecEmpty() bool {", varname, x.genTypeName(t)) - - anonSeen := make(map[reflect.Type]bool) - var omitline genBuf - for _, si := range tisfi { - if si.path.parent != nil { - root := si.path.root() - if anonSeen[root.typ] { - continue - } - anonSeen[root.typ] = true - } - t2 := genOmitEmptyLinePreChecks(varname, t, si, &omitline, true) - // if Ptr, we already checked if nil above - if t2.Type.Kind() != reflect.Ptr { - x.doEncOmitEmptyLine(t2, varname, &omitline) - omitline.s(" || ") - } - } - omitline.s(" false") - x.linef("return !(%s)", omitline.v()) - - x.line("}") - x.line("") - return true -} - -func (x *genRunner) selfer(encode bool) { - t := x.tc - // ti := x.ti.get(rt2id(t), t) - t0 := t - // always make decode use a pointer receiver, - // and structs/arrays always use a ptr receiver (encode|decode) - isptr := !encode || t.Kind() == reflect.Array || (t.Kind() == reflect.Struct && t != timeTyp) - x.varsfxreset() - - fnSigPfx := "func (" + genTopLevelVarName + " " - if isptr { - fnSigPfx += "*" - } - fnSigPfx += x.genTypeName(t) - x.out(fnSigPfx) - - if isptr { - t = reflect.PtrTo(t) - } - if encode { - x.line(") CodecEncodeSelf(e *" + x.cpfx + "Encoder) {") - x.genRequiredMethodVars(true) - if t0.Kind() == reflect.Struct { - x.linef("if z.EncBasicHandle().CheckCircularRef { z.EncEncode(%s); return }", genTopLevelVarName) - } - x.encVar(genTopLevelVarName, t) - } else { - x.line(") CodecDecodeSelf(d *" + x.cpfx + "Decoder) {") - x.genRequiredMethodVars(false) - // do not use decVar, as there is no need to check TryDecodeAsNil - // or way to elegantly handle that, and also setting it to a - // non-nil value doesn't affect the pointer passed. - // x.decVar(genTopLevelVarName, t, false) - x.dec(genTopLevelVarName, t0, true) - } - x.line("}") - x.line("") - - if encode || t0.Kind() != reflect.Struct { - return - } - - // write is containerMap - x.out(fnSigPfx) - x.line(") codecDecodeSelfFromMap(l int, d *" + x.cpfx + "Decoder) {") - x.genRequiredMethodVars(false) - x.decStructMap(genTopLevelVarName, "l", rt2id(t0), t0) - x.line("}") - x.line("") - - // write containerArray - x.out(fnSigPfx) - x.line(") codecDecodeSelfFromArray(l int, d *" + x.cpfx + "Decoder) {") - x.genRequiredMethodVars(false) - x.decStructArray(genTopLevelVarName, "l", "return", rt2id(t0), t0) - x.line("}") - x.line("") - -} - -// used for chan, array, slice, map -func (x *genRunner) xtraSM(varname string, t reflect.Type, ti *typeInfo, encode, isptr bool) { - var ptrPfx, addrPfx string - if isptr { - ptrPfx = "*" - } else { - addrPfx = "&" - } - if encode { - x.linef("h.enc%s((%s%s)(%s), e)", x.genMethodNameT(t), ptrPfx, x.genTypeName(t), varname) - } else { - x.linef("h.dec%s((*%s)(%s%s), d)", x.genMethodNameT(t), x.genTypeName(t), addrPfx, varname) - } - x.registerXtraT(t, ti) -} - -func (x *genRunner) registerXtraT(t reflect.Type, ti *typeInfo) { - // recursively register the types - tk := t.Kind() - if tk == reflect.Ptr { - x.registerXtraT(t.Elem(), nil) - return - } - if _, ok := x.tm[t]; ok { - return - } - - switch tk { - case reflect.Chan, reflect.Slice, reflect.Array, reflect.Map: - default: - return - } - // only register the type if it will not default to a fast-path - if ti == nil { - ti = x.ti.get(rt2id(t), t) - } - if _, rtidu := genFastpathUnderlying(t, ti.rtid, ti); fastpathAvIndex(rtidu) != -1 { - return - } - x.tm[t] = struct{}{} - x.ts = append(x.ts, t) - // check if this refers to any xtra types eg. a slice of array: add the array - x.registerXtraT(t.Elem(), nil) - if tk == reflect.Map { - x.registerXtraT(t.Key(), nil) - } -} - -// encVar will encode a variable. -// The parameter, t, is the reflect.Type of the variable itself -func (x *genRunner) encVar(varname string, t reflect.Type) { - var checkNil bool - // case reflect.Ptr, reflect.Interface, reflect.Slice, reflect.Map, reflect.Chan: - // do not include checkNil for slice and maps, as we already checkNil below it - switch t.Kind() { - case reflect.Ptr, reflect.Interface, reflect.Chan: - checkNil = true - } - x.encVarChkNil(varname, t, checkNil) -} - -func (x *genRunner) encVarChkNil(varname string, t reflect.Type, checkNil bool) { - if checkNil { - x.linef("if %s == nil { r.EncodeNil() } else {", varname) - } - - switch t.Kind() { - case reflect.Ptr: - telem := t.Elem() - tek := telem.Kind() - if tek == reflect.Array || (tek == reflect.Struct && telem != timeTyp) { - x.enc(varname, genNonPtr(t), true) - break - } - i := x.varsfx() - x.line(genTempVarPfx + i + " := *" + varname) - x.enc(genTempVarPfx+i, genNonPtr(t), false) - case reflect.Struct, reflect.Array: - if t == timeTyp { - x.enc(varname, t, false) - break - } - i := x.varsfx() - x.line(genTempVarPfx + i + " := &" + varname) - x.enc(genTempVarPfx+i, t, true) - default: - x.enc(varname, t, false) - } - - if checkNil { - x.line("}") - } -} - -// enc will encode a variable (varname) of type t, where t represents T. -// if t is !time.Time and t is of kind reflect.Struct or reflect.Array, varname is of type *T -// (to prevent copying), -// else t is of type T -func (x *genRunner) enc(varname string, t reflect.Type, isptr bool) { - rtid := rt2id(t) - ti2 := x.ti.get(rtid, t) - // We call CodecEncodeSelf if one of the following are honored: - // - the type already implements Selfer, call that - // - the type has a Selfer implementation just created, use that - // - the type is in the list of the ones we will generate for, but it is not currently being generated - - mi := x.varsfx() - // tptr := reflect.PtrTo(t) - // tk := t.Kind() - - // check if - // - type is time.Time, RawExt, Raw - // - the type implements (Text|JSON|Binary)(Unm|M)arshal - - var hasIf genIfClause - defer hasIf.end(x) // end if block (if necessary) - - var ptrPfx, addrPfx string - if isptr { - ptrPfx = "*" - } else { - addrPfx = "&" - } - - if t == timeTyp { - x.linef("%s z.EncBasicHandle().TimeBuiltin() { r.EncodeTime(%s%s)", hasIf.c(false), ptrPfx, varname) - // return - } - if t == rawTyp { - x.linef("%s z.EncRaw(%s%s)", hasIf.c(true), ptrPfx, varname) - return - } - if t == rawExtTyp { - x.linef("%s r.EncodeRawExt(%s%s)", hasIf.c(true), addrPfx, varname) - return - } - // only check for extensions if extensions are configured, - // and the type is named, and has a packagePath, - // and this is not the CodecEncodeSelf or CodecDecodeSelf method (i.e. it is not a Selfer) - if !x.nx && varname != genTopLevelVarName && t != genStringDecAsBytesTyp && - t != genStringDecZCTyp && genImportPath(t) != "" && t.Name() != "" { - yy := fmt.Sprintf("%sxt%s", genTempVarPfx, mi) - x.linef("%s %s := z.Extension(%s); %s != nil { z.EncExtension(%s, %s) ", - hasIf.c(false), yy, varname, yy, varname, yy) - } - - if x.checkForSelfer(t, varname) { - if ti2.flagSelfer { - x.linef("%s %s.CodecEncodeSelf(e)", hasIf.c(true), varname) - return - } - if ti2.flagSelferPtr { - if isptr { - x.linef("%s %s.CodecEncodeSelf(e)", hasIf.c(true), varname) - } else { - x.linef("%s %ssf%s := &%s", hasIf.c(true), genTempVarPfx, mi, varname) - x.linef("%ssf%s.CodecEncodeSelf(e)", genTempVarPfx, mi) - } - return - } - - if _, ok := x.te[rtid]; ok { - x.linef("%s %s.CodecEncodeSelf(e)", hasIf.c(true), varname) - return - } - } - - inlist := false - for _, t0 := range x.t { - if t == t0 { - inlist = true - if x.checkForSelfer(t, varname) { - x.linef("%s %s.CodecEncodeSelf(e)", hasIf.c(true), varname) - return - } - break - } - } - - var rtidAdded bool - if t == x.tc { - x.te[rtid] = true - rtidAdded = true - } - - if ti2.flagBinaryMarshaler { - x.linef("%s z.EncBinary() { z.EncBinaryMarshal(%s%v) ", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagBinaryMarshalerPtr { - x.linef("%s z.EncBinary() { z.EncBinaryMarshal(%s%v) ", hasIf.c(false), addrPfx, varname) - } - - if ti2.flagJsonMarshaler { - x.linef("%s !z.EncBinary() && z.IsJSONHandle() { z.EncJSONMarshal(%s%v) ", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagJsonMarshalerPtr { - x.linef("%s !z.EncBinary() && z.IsJSONHandle() { z.EncJSONMarshal(%s%v) ", hasIf.c(false), addrPfx, varname) - } else if ti2.flagTextMarshaler { - x.linef("%s !z.EncBinary() { z.EncTextMarshal(%s%v) ", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagTextMarshalerPtr { - x.linef("%s !z.EncBinary() { z.EncTextMarshal(%s%v) ", hasIf.c(false), addrPfx, varname) - } - - x.lineIf(hasIf.c(true)) - - switch t.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - x.line("r.EncodeInt(int64(" + varname + "))") - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - x.line("r.EncodeUint(uint64(" + varname + "))") - case reflect.Float32: - x.line("r.EncodeFloat32(float32(" + varname + "))") - case reflect.Float64: - x.line("r.EncodeFloat64(float64(" + varname + "))") - case reflect.Complex64: - x.linef("z.EncEncodeComplex64(complex64(%s))", varname) - case reflect.Complex128: - x.linef("z.EncEncodeComplex128(complex128(%s))", varname) - case reflect.Bool: - x.line("r.EncodeBool(bool(" + varname + "))") - case reflect.String: - x.linef("r.EncodeString(string(%s))", varname) - case reflect.Chan: - x.xtraSM(varname, t, ti2, true, false) - // x.encListFallback(varname, rtid, t) - case reflect.Array: - _, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(ti2.key) - x.linef("z.F.%sV((%s)(%s[:]), e)", g.MethodNamePfx("Enc", false), x.genTypeName(ti2.key), varname) - } else { - x.xtraSM(varname, t, ti2, true, true) - } - case reflect.Slice: - // if nil, call dedicated function - // if a []byte, call dedicated function - // if a known fastpath slice, call dedicated function - // else write encode function in-line. - // - if elements are primitives or Selfers, call dedicated function on each member. - // - else call Encoder.encode(XXX) on it. - - x.linef("if %s == nil { r.EncodeNil() } else {", varname) - if rtid == uint8SliceTypId { - x.line("r.EncodeStringBytesRaw([]byte(" + varname + "))") - } else { - tu, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(tu) - if rtid == rtidu { - x.linef("z.F.%sV(%s, e)", g.MethodNamePfx("Enc", false), varname) - } else { - x.linef("z.F.%sV((%s)(%s), e)", g.MethodNamePfx("Enc", false), x.genTypeName(tu), varname) - } - } else { - x.xtraSM(varname, t, ti2, true, false) - } - } - x.linef("} // end block: if %s slice == nil", varname) - case reflect.Map: - // if nil, call dedicated function - // if a known fastpath map, call dedicated function - // else write encode function in-line. - // - if elements are primitives or Selfers, call dedicated function on each member. - // - else call Encoder.encode(XXX) on it. - x.linef("if %s == nil { r.EncodeNil() } else {", varname) - tu, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(tu) - if rtid == rtidu { - x.linef("z.F.%sV(%s, e)", g.MethodNamePfx("Enc", false), varname) - } else { - x.linef("z.F.%sV((%s)(%s), e)", g.MethodNamePfx("Enc", false), x.genTypeName(tu), varname) - } - } else { - x.xtraSM(varname, t, ti2, true, false) - } - x.linef("} // end block: if %s map == nil", varname) - case reflect.Struct: - if !inlist { - delete(x.te, rtid) - x.line("z.EncFallback(" + varname + ")") - break - } - x.encStruct(varname, rtid, t) - default: - if rtidAdded { - delete(x.te, rtid) - } - x.line("z.EncFallback(" + varname + ")") - } -} - -func (x *genRunner) encZero(t reflect.Type) { - switch t.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - x.line("r.EncodeInt(0)") - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - x.line("r.EncodeUint(0)") - case reflect.Float32: - x.line("r.EncodeFloat32(0)") - case reflect.Float64: - x.line("r.EncodeFloat64(0)") - case reflect.Complex64: - x.line("z.EncEncodeComplex64(0)") - case reflect.Complex128: - x.line("z.EncEncodeComplex128(0)") - case reflect.Bool: - x.line("r.EncodeBool(false)") - case reflect.String: - x.linef(`r.EncodeString("")`) - default: - x.line("r.EncodeNil()") - } -} - -func genOmitEmptyLinePreChecks(varname string, t reflect.Type, si *structFieldInfo, omitline *genBuf, oneLevel bool) (t2 reflect.StructField) { - // xdebug2f("calling genOmitEmptyLinePreChecks on: %v", t) - t2typ := t - varname3 := varname - // go through the loop, record the t2 field explicitly, - // and gather the omit line if embedded in pointers. - fullpath := si.path.fullpath() - for i, path := range fullpath { - for t2typ.Kind() == reflect.Ptr { - t2typ = t2typ.Elem() - } - t2 = t2typ.Field(int(path.index)) - t2typ = t2.Type - varname3 = varname3 + "." + t2.Name - // do not include actual field in the omit line. - // that is done subsequently (right after - below). - if i+1 < len(fullpath) && t2typ.Kind() == reflect.Ptr { - omitline.s(varname3).s(" != nil && ") - } - if oneLevel { - break - } - } - return -} - -func (x *genRunner) doEncOmitEmptyLine(t2 reflect.StructField, varname string, buf *genBuf) { - x.f = 0 - x.encOmitEmptyLine(t2, varname, buf) -} - -func (x *genRunner) encOmitEmptyLine(t2 reflect.StructField, varname string, buf *genBuf) { - // xdebugf("calling encOmitEmptyLine on: %v", t2.Type) - // smartly check omitEmpty on a struct type, as it may contain uncomparable map/slice/etc. - // also, for maps/slices, check if len ! 0 (not if == zero value) - varname2 := varname + "." + t2.Name - switch t2.Type.Kind() { - case reflect.Struct: - rtid2 := rt2id(t2.Type) - ti2 := x.ti.get(rtid2, t2.Type) - // xdebugf(">>>> structfield: omitempty: type: %s, field: %s\n", t2.Type.Name(), t2.Name) - if ti2.rtid == timeTypId { - buf.s("!(").s(varname2).s(".IsZero())") - break - } - if ti2.flagIsZeroerPtr || ti2.flagIsZeroer { - buf.s("!(").s(varname2).s(".IsZero())") - break - } - if t2.Type.Implements(isCodecEmptyerTyp) { - buf.s("!(").s(varname2).s(".IsCodecEmpty())") - break - } - _, ok := x.tz[rtid2] - if ok { - buf.s("!(").s(varname2).s(".IsCodecEmpty())") - break - } - // if we *should* create a IsCodecEmpty for it, but haven't yet, add it here - // _, ok = x.ty[rtid2] - if genImportPath(t2.Type) == x.bp { - x.ty[t2.Type] = struct{}{} - buf.s("!(").s(varname2).s(".IsCodecEmpty())") - break - } - if ti2.flagComparable { - buf.s(varname2).s(" != ").s(x.genZeroValueR(t2.Type)) - break - } - // buf.s("(") - buf.s(x.sayFalse()) // buf.s("false") - var wrote bool - for i, n := 0, t2.Type.NumField(); i < n; i++ { - f := t2.Type.Field(i) - if f.PkgPath != "" { // unexported - continue - } - buf.s(" || ") - x.encOmitEmptyLine(f, varname2, buf) - wrote = true - } - if !wrote { - buf.s(" || ").s(x.sayTrue()) - } - //buf.s(")") - case reflect.Bool: - buf.s("bool(").s(varname2).s(")") - case reflect.Map, reflect.Slice, reflect.Chan: - buf.s("len(").s(varname2).s(") != 0") - case reflect.Array: - tlen := t2.Type.Len() - if tlen == 0 { - buf.s(x.sayFalse()) - } else if t2.Type.Comparable() { - buf.s(varname2).s(" != ").s(x.genZeroValueR(t2.Type)) - } else { // then we cannot even compare the individual values - // TODO use playground to check if you can compare to a - // zero value of an array, even if array not comparable. - buf.s(x.sayTrue()) - } - default: - buf.s(varname2).s(" != ").s(x.genZeroValueR(t2.Type)) - } -} - -func (x *genRunner) encStruct(varname string, rtid uintptr, t reflect.Type) { - // Use knowledge from structfieldinfo (mbs, encodable fields. Ignore omitempty. ) - // replicate code in kStruct i.e. for each field, deref type to non-pointer, and call x.enc on it - - // if t === type currently running selfer on, do for all - ti := x.ti.get(rtid, t) - i := x.varsfx() - // sepVarname := genTempVarPfx + "sep" + i - numfieldsvar := genTempVarPfx + "q" + i - ti2arrayvar := genTempVarPfx + "r" + i - struct2arrvar := genTempVarPfx + "2arr" + i - - tisfi := ti.sfi.source() // always use sequence from file. decStruct expects same thing. - - type genFQN struct { - i string - fqname string - nilLine genBuf - nilVar string - canNil bool - sf reflect.StructField - } - - genFQNs := make([]genFQN, len(tisfi)) - si2Pos := make(map[*structFieldInfo]int) // stores position in sorted structFieldInfos - - for j, si := range tisfi { - si2Pos[si] = j - q := &genFQNs[j] - q.i = x.varsfx() - q.nilVar = genTempVarPfx + "n" + q.i - q.canNil = false - q.fqname = varname - { - t2typ := t - fullpath := si.path.fullpath() - for _, path := range fullpath { - for t2typ.Kind() == reflect.Ptr { - t2typ = t2typ.Elem() - } - q.sf = t2typ.Field(int(path.index)) - t2typ = q.sf.Type - q.fqname += "." + q.sf.Name - if t2typ.Kind() == reflect.Ptr { - if !q.canNil { - q.nilLine.f("%s == nil", q.fqname) - q.canNil = true - } else { - q.nilLine.f(" || %s == nil", q.fqname) - } - } - } - } - } - - // x.line(sepVarname + " := !z.EncBinary()") - x.linef("%s := z.EncBasicHandle().StructToArray", struct2arrvar) - // x.linef("_, _ = %s, %s", sepVarname, struct2arrvar) - x.linef("_ = %s", struct2arrvar) - x.linef("const %s bool = %v // struct tag has 'toArray'", ti2arrayvar, ti.toArray) - - for j := range genFQNs { - q := &genFQNs[j] - if q.canNil { - x.linef("var %s bool = %s", q.nilVar, q.nilLine.v()) - } - } - - // var nn int - // due to omitEmpty, we need to calculate the - // number of non-empty things we write out first. - // This is required as we need to pre-determine the size of the container, - // to support length-prefixing. - omitEmptySometimes := x.omitEmptyWhen == nil - omitEmptyAlways := (x.omitEmptyWhen != nil && *(x.omitEmptyWhen)) - // omitEmptyNever := (x.omitEmptyWhen != nil && !*(x.omitEmptyWhen)) - - toArraySometimes := x.toArrayWhen == nil - toArrayAlways := (x.toArrayWhen != nil && *(x.toArrayWhen)) - toArrayNever := (x.toArrayWhen != nil && !(*(x.toArrayWhen))) - - if (omitEmptySometimes && ti.anyOmitEmpty) || omitEmptyAlways { - x.linef("var %s = [%v]bool{ // should field at this index be written?", numfieldsvar, len(tisfi)) - - for _, si := range tisfi { - if omitEmptySometimes && !si.path.omitEmpty { - x.linef("true, // %s", si.encName) // si.fieldName) - continue - } - var omitline genBuf - t2 := genOmitEmptyLinePreChecks(varname, t, si, &omitline, false) - x.doEncOmitEmptyLine(t2, varname, &omitline) - x.linef("%s, // %s", omitline.v(), si.encName) // si.fieldName) - } - x.line("}") - x.linef("_ = %s", numfieldsvar) - } - - if toArraySometimes { - x.linef("if %s || %s {", ti2arrayvar, struct2arrvar) // if ti.toArray - } - if toArraySometimes || toArrayAlways { - x.linef("z.EncWriteArrayStart(%d)", len(tisfi)) - - for j, si := range tisfi { - doOmitEmptyCheck := (omitEmptySometimes && si.path.omitEmpty) || omitEmptyAlways - q := &genFQNs[j] - // if the type of the field is a Selfer, or one of the ones - if q.canNil { - x.linef("if %s { z.EncWriteArrayElem(); r.EncodeNil() } else { ", q.nilVar) - } - x.linef("z.EncWriteArrayElem()") - if doOmitEmptyCheck { - x.linef("if %s[%v] {", numfieldsvar, j) - } - x.encVarChkNil(q.fqname, q.sf.Type, false) - if doOmitEmptyCheck { - x.linef("} else {") - x.encZero(q.sf.Type) - x.linef("}") - } - if q.canNil { - x.line("}") - } - } - - x.line("z.EncWriteArrayEnd()") - } - if toArraySometimes { - x.linef("} else {") // if not ti.toArray - } - if toArraySometimes || toArrayNever { - if (omitEmptySometimes && ti.anyOmitEmpty) || omitEmptyAlways { - x.linef("var %snn%s int", genTempVarPfx, i) - x.linef("for _, b := range %s { if b { %snn%s++ } }", numfieldsvar, genTempVarPfx, i) - x.linef("z.EncWriteMapStart(%snn%s)", genTempVarPfx, i) - x.linef("%snn%s = %v", genTempVarPfx, i, 0) - } else { - x.linef("z.EncWriteMapStart(%d)", len(tisfi)) - } - - fn := func(tisfi []*structFieldInfo) { - // tisfi here may be source or sorted, so use the src position stored elsewhere - for _, si := range tisfi { - pos := si2Pos[si] - q := &genFQNs[pos] - doOmitEmptyCheck := (omitEmptySometimes && si.path.omitEmpty) || omitEmptyAlways - if doOmitEmptyCheck { - x.linef("if %s[%v] {", numfieldsvar, pos) - } - x.linef("z.EncWriteMapElemKey()") - - // emulate EncStructFieldKey - switch ti.keyType { - case valueTypeInt: - x.linef("r.EncodeInt(z.M.Int(strconv.ParseInt(`%s`, 10, 64)))", si.encName) - case valueTypeUint: - x.linef("r.EncodeUint(z.M.Uint(strconv.ParseUint(`%s`, 10, 64)))", si.encName) - case valueTypeFloat: - x.linef("r.EncodeFloat64(z.M.Float(strconv.ParseFloat(`%s`, 64)))", si.encName) - default: // string - if x.jsonOnlyWhen == nil { - if si.path.encNameAsciiAlphaNum { - x.linef(`if z.IsJSONHandle() { z.EncWr().WriteStr("\"%s\"") } else { `, si.encName) - } - x.linef("r.EncodeString(`%s`)", si.encName) - if si.path.encNameAsciiAlphaNum { - x.linef("}") - } - } else if *(x.jsonOnlyWhen) { - if si.path.encNameAsciiAlphaNum { - x.linef(`z.EncWr().WriteStr("\"%s\"")`, si.encName) - } else { - x.linef("r.EncodeString(`%s`)", si.encName) - } - } else { - x.linef("r.EncodeString(`%s`)", si.encName) - } - } - x.line("z.EncWriteMapElemValue()") - if q.canNil { - x.line("if " + q.nilVar + " { r.EncodeNil() } else { ") - x.encVarChkNil(q.fqname, q.sf.Type, false) - x.line("}") - } else { - x.encVarChkNil(q.fqname, q.sf.Type, false) - } - if doOmitEmptyCheck { - x.line("}") - } - } - } - - if genStructCanonical { - x.linef("if z.EncBasicHandle().Canonical {") // if Canonical block - fn(ti.sfi.sorted()) - x.linef("} else {") // else !Canonical block - fn(ti.sfi.source()) - x.linef("}") // end if Canonical block - } else { - fn(tisfi) - } - - x.line("z.EncWriteMapEnd()") - } - if toArraySometimes { - x.linef("} ") // end if/else ti.toArray - } -} - -func (x *genRunner) encListFallback(varname string, t reflect.Type) { - x.linef("if %s == nil { r.EncodeNil(); return }", varname) - elemBytes := t.Elem().Kind() == reflect.Uint8 - if t.AssignableTo(uint8SliceTyp) { - x.linef("r.EncodeStringBytesRaw([]byte(%s))", varname) - return - } - if t.Kind() == reflect.Array && elemBytes { - x.linef("r.EncodeStringBytesRaw(((*[%d]byte)(%s))[:])", t.Len(), varname) - return - } - i := x.varsfx() - if t.Kind() == reflect.Chan { - type ts struct { - Label, Chan, Slice, Sfx string - } - tm, err := template.New("").Parse(genEncChanTmpl) - genCheckErr(err) - x.linef("if %s == nil { r.EncodeNil() } else { ", varname) - x.linef("var sch%s []%s", i, x.genTypeName(t.Elem())) - err = tm.Execute(x.w, &ts{"Lsch" + i, varname, "sch" + i, i}) - genCheckErr(err) - if elemBytes { - x.linef("r.EncodeStringBytesRaw([]byte(%s))", "sch"+i) - x.line("}") - return - } - varname = "sch" + i - } - - x.line("z.EncWriteArrayStart(len(" + varname + "))") - - // x.linef("for _, %sv%s := range %s {", genTempVarPfx, i, varname) - // x.linef("z.EncWriteArrayElem()") - // x.encVar(genTempVarPfx+"v"+i, t.Elem()) - // x.line("}") - - x.linef("for %sv%s := range %s {", genTempVarPfx, i, varname) - x.linef("z.EncWriteArrayElem()") - x.encVar(fmt.Sprintf("%s[%sv%s]", varname, genTempVarPfx, i), t.Elem()) - x.line("}") - - x.line("z.EncWriteArrayEnd()") - if t.Kind() == reflect.Chan { - x.line("}") - } -} - -func (x *genRunner) encMapFallback(varname string, t reflect.Type) { - x.linef("if %s == nil { r.EncodeNil()", varname) - x.line("} else if z.EncBasicHandle().Canonical {") - - // Solve for easy case accomodated by sort package without reflection i.e. - // map keys of type: float, int, string (pre-defined/builtin types). - // - // To do this, we will get the keys into an array of uint64|float64|string, - // sort them, then write them out, and grab the value and encode it appropriately - tkey := t.Key() - tkind := tkey.Kind() - // tkeybase := tkey - // for tkeybase.Kind() == reflect.Ptr { - // tkeybase = tkeybase.Elem() - // } - // tikey := x.ti.get(rt2id(tkeybase), tkeybase) - - // pre-defined types have a name and no pkgpath and appropriate kind - predeclared := tkey.PkgPath() == "" && tkey.Name() != "" - - canonSortKind := reflect.Invalid - switch tkind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - canonSortKind = reflect.Int64 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - canonSortKind = reflect.Uint64 - case reflect.Float32, reflect.Float64: - canonSortKind = reflect.Float64 - case reflect.String: - canonSortKind = reflect.String - } - - var i string = x.varsfx() - - fnCanonNumBoolStrKind := func() { - if !predeclared { - x.linef("var %svv%s %s", genTempVarPfx, i, x.genTypeName(tkey)) - x.linef("%sencfn%s := z.EncFnGivenAddr(&%svv%s)", genTempVarPfx, i, genTempVarPfx, i) - } - // get the type, get the slice type its mapped to, and complete the code - x.linef("%ss%s := make([]%s, 0, len(%s))", genTempVarPfx, i, canonSortKind, varname) - x.linef("for k, _ := range %s {", varname) - x.linef(" %ss%s = append(%ss%s, %s(k))", genTempVarPfx, i, genTempVarPfx, i, canonSortKind) - x.linef("}") - x.linef("sort.Sort(%s%sSlice(%ss%s))", x.hn, canonSortKind, genTempVarPfx, i) - x.linef("z.EncWriteMapStart(len(%s))", varname) - x.linef("for _, %sv%s := range %ss%s {", genTempVarPfx, i, genTempVarPfx, i) - x.linef(" z.EncWriteMapElemKey()") - if predeclared { - switch tkind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32: - x.linef("r.EncodeInt(int64(%sv%s))", genTempVarPfx, i) - case reflect.Int64: - x.linef("r.EncodeInt(%sv%s)", genTempVarPfx, i) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr: - x.linef("r.EncodeUint(%sv%s)", genTempVarPfx, i) - case reflect.Uint64: - x.linef("r.EncodeUint(uint64(%sv%s))", genTempVarPfx, i) - case reflect.Float32: - x.linef("r.EncodeFloat32(float32(%sv%s))", genTempVarPfx, i) - case reflect.Float64: - x.linef("r.EncodeFloat64(%sv%s)", genTempVarPfx, i) - case reflect.String: - x.linef("r.EncodeString(%sv%s)", genTempVarPfx, i) - } - } else { - x.linef("%svv%s = %s(%sv%s)", genTempVarPfx, i, x.genTypeName(tkey), genTempVarPfx, i) - x.linef("z.EncEncodeNumBoolStrKindGivenAddr(&%svv%s, %sencfn%s)", genTempVarPfx, i, genTempVarPfx, i) - } - x.linef(" z.EncWriteMapElemValue()") - vname := genTempVarPfx + "e" + i - if predeclared { - x.linef("%s := %s[%s(%sv%s)]", vname, varname, x.genTypeName(tkey), genTempVarPfx, i) - } else { - x.linef("%s := %s[%svv%s]", vname, varname, genTempVarPfx, i) - } - x.encVar(vname, t.Elem()) - x.linef("}") - - x.line("z.EncWriteMapEnd()") - - } - - // if canonSortKind != reflect.Invalid && !tikey.flagMarshalInterface { - // if predeclared { - // fnCanonNumBoolStrKind() - // } else { - // // handle if an extension - // x.linef("if z.Extension(%s(%s)) != nil { z.EncEncodeMapNonNil(%s) } else {", - // x.genTypeName(tkey), x.genZeroValueR(tkey), varname) - // fnCanonNumBoolStrKind() - // x.line("}") - // } - // } else { - // x.linef("z.EncEncodeMapNonNil(%s)", varname) - // } - - if canonSortKind != reflect.Invalid { - fnCanonNumBoolStrKind() - } else { - x.linef("z.EncEncodeMapNonNil(%s)", varname) - } - - x.line("} else {") - - x.linef("z.EncWriteMapStart(len(%s))", varname) - x.linef("for %sk%s, %sv%s := range %s {", genTempVarPfx, i, genTempVarPfx, i, varname) - x.linef("z.EncWriteMapElemKey()") - x.encVar(genTempVarPfx+"k"+i, t.Key()) - x.line("z.EncWriteMapElemValue()") - x.encVar(genTempVarPfx+"v"+i, t.Elem()) - x.line("}") - x.line("z.EncWriteMapEnd()") - - x.line("}") -} - -func (x *genRunner) decVarInitPtr(varname, nilvar string, t reflect.Type, si *structFieldInfo, - newbuf, nilbuf *genBuf) (varname3 string, t2 reflect.StructField) { - //we must accommodate anonymous fields, where the embedded field is a nil pointer in the value. - // t2 = t.FieldByIndex(si.is) - varname3 = varname - t2typ := t - t2kind := t2typ.Kind() - var nilbufed bool - if si != nil { - fullpath := si.path.fullpath() - for _, path := range fullpath { - // only one-level pointers can be seen in a type - if t2typ.Kind() == reflect.Ptr { - t2typ = t2typ.Elem() - } - t2 = t2typ.Field(int(path.index)) - t2typ = t2.Type - varname3 = varname3 + "." + t2.Name - t2kind = t2typ.Kind() - if t2kind != reflect.Ptr { - continue - } - if newbuf != nil { - if len(newbuf.buf) > 0 { - newbuf.s("\n") - } - newbuf.f("if %s == nil { %s = new(%s) }", varname3, varname3, x.genTypeName(t2typ.Elem())) - } - if nilbuf != nil { - if !nilbufed { - nilbuf.s("if ").s(varname3).s(" != nil") - nilbufed = true - } else { - nilbuf.s(" && ").s(varname3).s(" != nil") - } - } - } - } - if nilbuf != nil { - if nilbufed { - nilbuf.s(" { ").s("// remove the if-true\n") - } - if nilvar != "" { - nilbuf.s(nilvar).s(" = true") - } else if tk := t2typ.Kind(); tk == reflect.Ptr { - if strings.IndexByte(varname3, '.') != -1 || strings.IndexByte(varname3, '[') != -1 { - nilbuf.s(varname3).s(" = nil") - } else { - nilbuf.s("*").s(varname3).s(" = ").s(x.genZeroValueR(t2typ.Elem())) - } - } else { - nilbuf.s(varname3).s(" = ").s(x.genZeroValueR(t2typ)) - } - if nilbufed { - nilbuf.s("}") - } - } - return -} - -// decVar takes a variable called varname, of type t -func (x *genRunner) decVarMain(varname, rand string, t reflect.Type, checkNotNil bool) { - // We only encode as nil if a nillable value. - // This removes some of the wasted checks for TryDecodeAsNil. - // We need to think about this more, to see what happens if omitempty, etc - // cause a nil value to be stored when something is expected. - // This could happen when decoding from a struct encoded as an array. - // For that, decVar should be called with canNil=true, to force true as its value. - var varname2 string - if t.Kind() != reflect.Ptr { - if t.PkgPath() != "" || !x.decTryAssignPrimitive(varname, t, false) { - x.dec(varname, t, false) - } - } else { - if checkNotNil { - x.linef("if %s == nil { %s = new(%s) }", varname, varname, x.genTypeName(t.Elem())) - } - // Ensure we set underlying ptr to a non-nil value (so we can deref to it later). - // There's a chance of a **T in here which is nil. - var ptrPfx string - for t = t.Elem(); t.Kind() == reflect.Ptr; t = t.Elem() { - ptrPfx += "*" - if checkNotNil { - x.linef("if %s%s == nil { %s%s = new(%s)}", ptrPfx, varname, ptrPfx, varname, x.genTypeName(t)) - } - } - // Should we create temp var if a slice/map indexing? No. dec(...) can now handle it. - - if ptrPfx == "" { - x.dec(varname, t, true) - } else { - varname2 = genTempVarPfx + "z" + rand - x.line(varname2 + " := " + ptrPfx + varname) - x.dec(varname2, t, true) - } - } -} - -// decVar takes a variable called varname, of type t -func (x *genRunner) decVar(varname, nilvar string, t reflect.Type, canBeNil, checkNotNil bool) { - - // We only encode as nil if a nillable value. - // This removes some of the wasted checks for TryDecodeAsNil. - // We need to think about this more, to see what happens if omitempty, etc - // cause a nil value to be stored when something is expected. - // This could happen when decoding from a struct encoded as an array. - // For that, decVar should be called with canNil=true, to force true as its value. - - i := x.varsfx() - if t.Kind() == reflect.Ptr { - var buf genBuf - x.decVarInitPtr(varname, nilvar, t, nil, nil, &buf) - x.linef("if r.TryNil() { %s } else {", buf.buf) - x.decVarMain(varname, i, t, checkNotNil) - x.line("} ") - } else { - x.decVarMain(varname, i, t, checkNotNil) - } -} - -// dec will decode a variable (varname) of type t or ptrTo(t) if isptr==true. -func (x *genRunner) dec(varname string, t reflect.Type, isptr bool) { - // assumptions: - // - the varname is to a pointer already. No need to take address of it - // - t is always a baseType T (not a *T, etc). - rtid := rt2id(t) - ti2 := x.ti.get(rtid, t) - - // check if - // - type is time.Time, Raw, RawExt - // - the type implements (Text|JSON|Binary)(Unm|M)arshal - - mi := x.varsfx() - - var hasIf genIfClause - defer hasIf.end(x) - - var ptrPfx, addrPfx string - if isptr { - ptrPfx = "*" - } else { - addrPfx = "&" - } - if t == timeTyp { - x.linef("%s z.DecBasicHandle().TimeBuiltin() { %s%v = r.DecodeTime()", hasIf.c(false), ptrPfx, varname) - // return - } - if t == rawTyp { - x.linef("%s %s%v = z.DecRaw()", hasIf.c(true), ptrPfx, varname) - return - } - - if t == rawExtTyp { - x.linef("%s r.DecodeExt(%s%v, 0, nil)", hasIf.c(true), addrPfx, varname) - return - } - - // only check for extensions if extensions are configured, - // and the type is named, and has a packagePath, - // and this is not the CodecEncodeSelf or CodecDecodeSelf method (i.e. it is not a Selfer) - // xdebugf("genRunner.dec: varname: %v, t: %v, genImportPath: %v, t.Name: %v", varname, t, genImportPath(t), t.Name()) - if !x.nx && varname != genTopLevelVarName && t != genStringDecAsBytesTyp && - t != genStringDecZCTyp && genImportPath(t) != "" && t.Name() != "" { - // first check if extensions are configued, before doing the interface conversion - yy := fmt.Sprintf("%sxt%s", genTempVarPfx, mi) - x.linef("%s %s := z.Extension(%s); %s != nil { z.DecExtension(%s%s, %s) ", hasIf.c(false), yy, varname, yy, addrPfx, varname, yy) - } - - if x.checkForSelfer(t, varname) { - if ti2.flagSelfer { - x.linef("%s %s.CodecDecodeSelf(d)", hasIf.c(true), varname) - return - } - if ti2.flagSelferPtr { - x.linef("%s %s.CodecDecodeSelf(d)", hasIf.c(true), varname) - return - } - if _, ok := x.td[rtid]; ok { - x.linef("%s %s.CodecDecodeSelf(d)", hasIf.c(true), varname) - return - } - } - inlist := false - for _, t0 := range x.t { - if t == t0 { - inlist = true - if x.checkForSelfer(t, varname) { - x.linef("%s %s.CodecDecodeSelf(d)", hasIf.c(true), varname) - return - } - break - } - } +const ( + genTopLevelVarName = "x" - var rtidAdded bool - if t == x.tc { - x.td[rtid] = true - rtidAdded = true - } + // genFastpathCanonical configures whether we support Canonical in fast path. Low savings. + // + // MARKER: This MUST ALWAYS BE TRUE. fastpath.go.tmpl doesn't handle it being false. + genFastpathCanonical = true - if ti2.flagBinaryUnmarshaler { - x.linef("%s z.DecBinary() { z.DecBinaryUnmarshal(%s%v) ", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagBinaryUnmarshalerPtr { - x.linef("%s z.DecBinary() { z.DecBinaryUnmarshal(%s%v) ", hasIf.c(false), addrPfx, varname) - } - if ti2.flagJsonUnmarshaler { - x.linef("%s !z.DecBinary() && z.IsJSONHandle() { z.DecJSONUnmarshal(%s%v)", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagJsonUnmarshalerPtr { - x.linef("%s !z.DecBinary() && z.IsJSONHandle() { z.DecJSONUnmarshal(%s%v)", hasIf.c(false), addrPfx, varname) - } else if ti2.flagTextUnmarshaler { - x.linef("%s !z.DecBinary() { z.DecTextUnmarshal(%s%v)", hasIf.c(false), ptrPfx, varname) - } else if ti2.flagTextUnmarshalerPtr { - x.linef("%s !z.DecBinary() { z.DecTextUnmarshal(%s%v)", hasIf.c(false), addrPfx, varname) - } + // genFastpathTrimTypes configures whether we trim uncommon fastpath types. + genFastpathTrimTypes = true +) - x.lineIf(hasIf.c(true)) +var genFormats = []string{"Json", "Cbor", "Msgpack", "Binc", "Simple"} - if x.decTryAssignPrimitive(varname, t, isptr) { - return - } +var ( + errGenAllTypesSamePkg = errors.New("All types must be in the same package") + errGenExpectArrayOrMap = errors.New("unexpected type - expecting array/map/slice") + errGenUnexpectedTypeFastpath = errors.New("fastpath: unexpected type - requires map or slice") - switch t.Kind() { - case reflect.Chan: - x.xtraSM(varname, t, ti2, false, isptr) - case reflect.Array: - _, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(ti2.key) - x.linef("z.F.%sN((%s)(%s[:]), d)", g.MethodNamePfx("Dec", false), x.genTypeName(ti2.key), varname) - } else { - x.xtraSM(varname, t, ti2, false, isptr) - } - case reflect.Slice: - // if a []byte, call dedicated function - // if a known fastpath slice, call dedicated function - // else write encode function in-line. - // - if elements are primitives or Selfers, call dedicated function on each member. - // - else call Encoder.encode(XXX) on it. + // don't use base64, only 63 characters allowed in valid go identifiers + // ie ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ + // + // don't use numbers, as a valid go identifer must start with a letter. + genTypenameEnc = base32.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef") + genQNameRegex = regexp.MustCompile(`[A-Za-z_.]+`) +) - if rtid == uint8SliceTypId { - x.linef("%s%s = z.DecodeBytesInto(%s(%s[]byte)(%s))", ptrPfx, varname, ptrPfx, ptrPfx, varname) - } else { - tu, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(tu) - if rtid == rtidu { - x.linef("z.F.%sX(%s%s, d)", g.MethodNamePfx("Dec", false), addrPfx, varname) - } else { - x.linef("z.F.%sX((*%s)(%s%s), d)", g.MethodNamePfx("Dec", false), x.genTypeName(tu), addrPfx, varname) - } - } else { - x.xtraSM(varname, t, ti2, false, isptr) - // x.decListFallback(varname, rtid, false, t) - } - } - case reflect.Map: - // if a known fastpath map, call dedicated function - // else write encode function in-line. - // - if elements are primitives or Selfers, call dedicated function on each member. - // - else call Encoder.encode(XXX) on it. +// -------- - tu, rtidu := genFastpathUnderlying(t, rtid, ti2) - if fastpathAvIndex(rtidu) != -1 { - g := x.newFastpathGenV(tu) - if rtid == rtidu { - x.linef("z.F.%sX(%s%s, d)", g.MethodNamePfx("Dec", false), addrPfx, varname) - } else { - x.linef("z.F.%sX((*%s)(%s%s), d)", g.MethodNamePfx("Dec", false), x.genTypeName(tu), addrPfx, varname) - } - } else { - x.xtraSM(varname, t, ti2, false, isptr) - } - case reflect.Struct: - if inlist { - // no need to create temp variable if isptr, or x.F or x[F] - if isptr || strings.IndexByte(varname, '.') != -1 || strings.IndexByte(varname, '[') != -1 { - x.decStruct(varname, rtid, t) - } else { - varname2 := genTempVarPfx + "j" + mi - x.line(varname2 + " := &" + varname) - x.decStruct(varname2, rtid, t) - } - } else { - // delete(x.td, rtid) - x.line("z.DecFallback(" + addrPfx + varname + ", false)") - } - default: - if rtidAdded { - delete(x.te, rtid) - } - x.line("z.DecFallback(" + addrPfx + varname + ", true)") - } +func genCheckErr(err error) { + halt.onerror(err) } -func (x *genRunner) decTryAssignPrimitive(varname string, t reflect.Type, isptr bool) (done bool) { - // This should only be used for exact primitives (ie un-named types). - // Named types may be implementations of Selfer, Unmarshaler, etc. - // They should be handled by dec(...) - - var ptr string - if isptr { - ptr = "*" - } - switch t.Kind() { - case reflect.Int: - x.linef("%s%s = (%s)(z.C.IntV(r.DecodeInt64(), codecSelferBitsize%s))", ptr, varname, x.genTypeName(t), x.xs) - case reflect.Int8: - x.linef("%s%s = (%s)(z.C.IntV(r.DecodeInt64(), 8))", ptr, varname, x.genTypeName(t)) - case reflect.Int16: - x.linef("%s%s = (%s)(z.C.IntV(r.DecodeInt64(), 16))", ptr, varname, x.genTypeName(t)) - case reflect.Int32: - x.linef("%s%s = (%s)(z.C.IntV(r.DecodeInt64(), 32))", ptr, varname, x.genTypeName(t)) - case reflect.Int64: - x.linef("%s%s = (%s)(r.DecodeInt64())", ptr, varname, x.genTypeName(t)) - - case reflect.Uint: - x.linef("%s%s = (%s)(z.C.UintV(r.DecodeUint64(), codecSelferBitsize%s))", ptr, varname, x.genTypeName(t), x.xs) - case reflect.Uint8: - x.linef("%s%s = (%s)(z.C.UintV(r.DecodeUint64(), 8))", ptr, varname, x.genTypeName(t)) - case reflect.Uint16: - x.linef("%s%s = (%s)(z.C.UintV(r.DecodeUint64(), 16))", ptr, varname, x.genTypeName(t)) - case reflect.Uint32: - x.linef("%s%s = (%s)(z.C.UintV(r.DecodeUint64(), 32))", ptr, varname, x.genTypeName(t)) - case reflect.Uint64: - x.linef("%s%s = (%s)(r.DecodeUint64())", ptr, varname, x.genTypeName(t)) - case reflect.Uintptr: - x.linef("%s%s = (%s)(z.C.UintV(r.DecodeUint64(), codecSelferBitsize%s))", ptr, varname, x.genTypeName(t), x.xs) - - case reflect.Float32: - x.linef("%s%s = (%s)(z.DecDecodeFloat32())", ptr, varname, x.genTypeName(t)) - case reflect.Float64: - x.linef("%s%s = (%s)(r.DecodeFloat64())", ptr, varname, x.genTypeName(t)) - - case reflect.Complex64: - x.linef("%s%s = (%s)(complex(z.DecDecodeFloat32(), 0))", ptr, varname, x.genTypeName(t)) - case reflect.Complex128: - x.linef("%s%s = (%s)(complex(r.DecodeFloat64(), 0))", ptr, varname, x.genTypeName(t)) - - case reflect.Bool: - x.linef("%s%s = (%s)(r.DecodeBool())", ptr, varname, x.genTypeName(t)) - case reflect.String: - if t == genStringDecAsBytesTyp { - x.linef("%s%s = r.DecodeStringAsBytes()", ptr, varname) - } else if t == genStringDecZCTyp { - x.linef("%s%s = (string)(z.DecStringZC(r.DecodeStringAsBytes()))", ptr, varname) - } else { - x.linef("%s%s = (%s)(z.DecStringZC(r.DecodeStringAsBytes()))", ptr, varname, x.genTypeName(t)) - } +func genTitleCaseName(s string) string { + switch s { + case "interface{}", "interface {}": + return "Intf" + case "[]byte", "[]uint8", "bytes": + return "Bytes" default: - return false - } - return true -} - -func (x *genRunner) decListFallback(varname string, rtid uintptr, t reflect.Type) { - if t.AssignableTo(uint8SliceTyp) { - x.line("*" + varname + " = z.DecodeBytesInto(*((*[]byte)(" + varname + ")))") - return - } - if t.Kind() == reflect.Array && t.Elem().Kind() == reflect.Uint8 { - x.linef("r.DecodeBytes( ((*[%d]byte)(%s))[:])", t.Len(), varname) - return - } - type tstruc struct { - TempVar string - Sfx string - Rand string - Varname string - CTyp string - Typ string - Immutable bool - Size int - } - telem := t.Elem() - ts := tstruc{genTempVarPfx, x.xs, x.varsfx(), varname, x.genTypeName(t), x.genTypeName(telem), genIsImmutable(telem), int(telem.Size())} - - funcs := make(template.FuncMap) - - funcs["decLineVar"] = func(varname string) string { - x.decVar(varname, "", telem, false, true) - return "" - } - funcs["var"] = func(s string) string { - return ts.TempVar + s + ts.Rand - } - funcs["xs"] = func() string { - return ts.Sfx - } - funcs["zero"] = func() string { - return x.genZeroValueR(telem) - } - funcs["isArray"] = func() bool { - return t.Kind() == reflect.Array - } - funcs["isSlice"] = func() bool { - return t.Kind() == reflect.Slice - } - funcs["isChan"] = func() bool { - return t.Kind() == reflect.Chan - } - tm, err := template.New("").Funcs(funcs).Parse(genDecListTmpl) - genCheckErr(err) - genCheckErr(tm.Execute(x.w, &ts)) -} - -func (x *genRunner) decMapFallback(varname string, rtid uintptr, t reflect.Type) { - type tstruc struct { - TempVar string - Sfx string - Rand string - Varname string - KTyp string - Typ string - Size int - } - telem := t.Elem() - tkey := t.Key() - ts := tstruc{ - genTempVarPfx, x.xs, x.varsfx(), varname, x.genTypeName(tkey), - x.genTypeName(telem), int(telem.Size() + tkey.Size()), - } - - funcs := make(template.FuncMap) - funcs["decElemZero"] = func() string { - return x.genZeroValueR(telem) - } - funcs["decElemKindImmutable"] = func() bool { - return genIsImmutable(telem) - } - funcs["decElemKindPtr"] = func() bool { - return telem.Kind() == reflect.Ptr - } - funcs["decElemKindIntf"] = func() bool { - return telem.Kind() == reflect.Interface - } - funcs["decLineVarKStrBytes"] = func(varname string) string { - x.decVar(varname, "", genStringDecAsBytesTyp, false, true) - return "" - } - funcs["decLineVarKStrZC"] = func(varname string) string { - x.decVar(varname, "", genStringDecZCTyp, false, true) - return "" - } - funcs["decLineVarK"] = func(varname string) string { - x.decVar(varname, "", tkey, false, true) - return "" - } - funcs["decLineVar"] = func(varname, decodedNilVarname string) string { - x.decVar(varname, decodedNilVarname, telem, false, true) - return "" - } - funcs["var"] = func(s string) string { - return ts.TempVar + s + ts.Rand - } - funcs["xs"] = func() string { - return ts.Sfx - } - - tm, err := template.New("").Funcs(funcs).Parse(genDecMapTmpl) - genCheckErr(err) - genCheckErr(tm.Execute(x.w, &ts)) -} - -func (x *genRunner) decStructMapSwitch(kName string, varname string, rtid uintptr, t reflect.Type) { - ti := x.ti.get(rtid, t) - tisfi := ti.sfi.source() // always use sequence from file. decStruct expects same thing. - x.line("switch string(" + kName + ") {") - var newbuf, nilbuf genBuf - for _, si := range tisfi { - x.line("case \"" + si.encName + "\":") - newbuf.reset() - nilbuf.reset() - varname3, t2 := x.decVarInitPtr(varname, "", t, si, &newbuf, &nilbuf) - if len(newbuf.buf) > 0 { - x.linef("if r.TryNil() { %s } else { %s", nilbuf.buf, newbuf.buf) - } - x.decVarMain(varname3, x.varsfx(), t2.Type, false) - if len(newbuf.buf) > 0 { - x.line("}") - } - } - x.line("default:") - // pass the slice here, so that the string will not escape, and maybe save allocation - x.linef("z.DecStructFieldNotFound(-1, string(%s))", kName) - x.linef("} // end switch %s", kName) -} - -func (x *genRunner) decStructMap(varname, lenvarname string, rtid uintptr, t reflect.Type) { - tpfx := genTempVarPfx - ti := x.ti.get(rtid, t) - i := x.varsfx() - kName := tpfx + "s" + i - - x.linef("var %shl%s bool = %s >= 0", tpfx, i, lenvarname) // has length - x.linef("for %sj%s := 0; z.DecContainerNext(%sj%s, %s, %shl%s); %sj%s++ {", - tpfx, i, tpfx, i, lenvarname, tpfx, i, tpfx, i) - - x.line("z.DecReadMapElemKey()") - - // emulate decstructfieldkey - switch ti.keyType { - case valueTypeInt: - x.linef("%s := strconv.AppendInt(z.DecScratchArrayBuffer()[:0], r.DecodeInt64(), 10)", kName) - case valueTypeUint: - x.linef("%s := strconv.AppendUint(z.DecScratchArrayBuffer()[:0], r.DecodeUint64(), 10)", kName) - case valueTypeFloat: - x.linef("%s := strconv.AppendFloat(z.DecScratchArrayBuffer()[:0], r.DecodeFloat64(), 'f', -1, 64)", kName) - default: // string - x.linef("%s := r.DecodeStringAsBytes()", kName) - } - - x.line("z.DecReadMapElemValue()") - x.decStructMapSwitch(kName, varname, rtid, t) - - x.line("} // end for " + tpfx + "j" + i) -} - -func (x *genRunner) decStructArray(varname, lenvarname, breakString string, rtid uintptr, t reflect.Type) { - tpfx := genTempVarPfx - i := x.varsfx() - ti := x.ti.get(rtid, t) - tisfi := ti.sfi.source() // always use sequence from file. decStruct expects same thing. - x.linef("var %sj%s int", tpfx, i) - x.linef("var %sb%s bool", tpfx, i) // break - x.linef("var %shl%s bool = %s >= 0", tpfx, i, lenvarname) // has length - var newbuf, nilbuf genBuf - for _, si := range tisfi { - x.linef("%sb%s = !z.DecContainerNext(%sj%s, %s, %shl%s)", tpfx, i, tpfx, i, lenvarname, tpfx, i) - x.linef("if %sb%s { z.DecReadArrayEnd(); %s }", tpfx, i, breakString) - x.line("z.DecReadArrayElem()") - newbuf.reset() - nilbuf.reset() - varname3, t2 := x.decVarInitPtr(varname, "", t, si, &newbuf, &nilbuf) - if len(newbuf.buf) > 0 { - x.linef("if r.TryNil() { %s } else { %s", nilbuf.buf, newbuf.buf) - } - x.decVarMain(varname3, x.varsfx(), t2.Type, false) - if len(newbuf.buf) > 0 { - x.line("}") - } - x.linef("%sj%s++", tpfx, i) + return strings.ToUpper(s[0:1]) + s[1:] } - // read remaining values and throw away. - x.linef("for ; z.DecContainerNext(%sj%s, %s, %shl%s); %sj%s++ {", - tpfx, i, lenvarname, tpfx, i, tpfx, i) - x.line("z.DecReadArrayElem()") - x.linef(`z.DecStructFieldNotFound(%sj%s - 1, "")`, tpfx, i) - x.line("}") -} - -func (x *genRunner) decStruct(varname string, rtid uintptr, t reflect.Type) { - // varname MUST be a ptr, or a struct field or a slice element. - i := x.varsfx() - x.linef("%sct%s := r.ContainerType()", genTempVarPfx, i) - x.linef("if %sct%s == codecSelferValueTypeNil%s {", genTempVarPfx, i, x.xs) - x.linef("*(%s) = %s{}", varname, x.genTypeName(t)) - x.linef("} else if %sct%s == codecSelferValueTypeMap%s {", genTempVarPfx, i, x.xs) - x.line(genTempVarPfx + "l" + i + " := z.DecReadMapStart()") - x.linef("if %sl%s == 0 {", genTempVarPfx, i) - - x.line("} else { ") - x.linef("%s.codecDecodeSelfFromMap(%sl%s, d)", varname, genTempVarPfx, i) - - x.line("}") - x.line("z.DecReadMapEnd()") - - // else if container is array - x.linef("} else if %sct%s == codecSelferValueTypeArray%s {", genTempVarPfx, i, x.xs) - x.line(genTempVarPfx + "l" + i + " := z.DecReadArrayStart()") - x.linef("if %sl%s != 0 {", genTempVarPfx, i) - x.linef("%s.codecDecodeSelfFromArray(%sl%s, d)", varname, genTempVarPfx, i) - x.line("}") - x.line("z.DecReadArrayEnd()") - // else panic - x.line("} else { ") - x.line("panic(errCodecSelferOnlyMapOrArrayEncodeToStruct" + x.xs + ")") - x.line("} ") } // -------- -type fastpathGenV struct { - // fastpathGenV is either a primitive (Primitive != "") or a map (MapKey != "") or a slice +type genFastpathV struct { + // genFastpathV is either a primitive (Primitive != "") or a map (MapKey != "") or a slice MapKey string Elem string Primitive string @@ -2159,26 +77,7 @@ type fastpathGenV struct { NoCanonical bool } -func (x *genRunner) newFastpathGenV(t reflect.Type) (v fastpathGenV) { - v.NoCanonical = !genFastpathCanonical - switch t.Kind() { - case reflect.Slice, reflect.Array: - te := t.Elem() - v.Elem = x.genTypeName(te) - v.Size = int(te.Size()) - case reflect.Map: - te := t.Elem() - tk := t.Key() - v.Elem = x.genTypeName(te) - v.MapKey = x.genTypeName(tk) - v.Size = int(te.Size() + tk.Size()) - default: - halt.onerror(errGenUnexpectedTypeFastpath) - } - return -} - -func (x *fastpathGenV) MethodNamePfx(prefix string, prim bool) string { +func (x *genFastpathV) MethodNamePfx(prefix string, prim bool) string { var name []byte if prefix != "" { name = append(name, prefix...) @@ -2197,153 +96,14 @@ func (x *fastpathGenV) MethodNamePfx(prefix string, prim bool) string { return string(name) } -// genImportPath returns import path of a non-predeclared named typed, or an empty string otherwise. -// -// This handles the misbehaviour that occurs when 1.5-style vendoring is enabled, -// where PkgPath returns the full path, including the vendoring pre-fix that should have been stripped. -// We strip it here. -func genImportPath(t reflect.Type) (s string) { - s = t.PkgPath() - if genCheckVendor { - // HACK: always handle vendoring. It should be typically on in go 1.6, 1.7 - s = genStripVendor(s) - } - return -} - -// A go identifier is (letter|_)[letter|number|_]* -func genGoIdentifier(s string, checkFirstChar bool) string { - b := make([]byte, 0, len(s)) - t := make([]byte, 4) - var n int - for i, r := range s { - if checkFirstChar && i == 0 && !unicode.IsLetter(r) { - b = append(b, '_') - } - // r must be unicode_letter, unicode_digit or _ - if unicode.IsLetter(r) || unicode.IsDigit(r) { - n = utf8.EncodeRune(t, r) - b = append(b, t[:n]...) - } else { - b = append(b, '_') - } - } - return string(b) -} - -func genNonPtr(t reflect.Type) reflect.Type { - for t.Kind() == reflect.Ptr { - t = t.Elem() - } - return t -} - -func genFastpathUnderlying(t reflect.Type, rtid uintptr, ti *typeInfo) (tu reflect.Type, rtidu uintptr) { - tu = t - rtidu = rtid - if ti.flagHasPkgPath { - tu = ti.fastpathUnderlying - rtidu = rt2id(tu) - } - return -} - -func genTitleCaseName(s string) string { - switch s { - case "interface{}", "interface {}": - return "Intf" - case "[]byte", "[]uint8", "bytes": - return "Bytes" - default: - return strings.ToUpper(s[0:1]) + s[1:] - } -} - -func genMethodNameT(t reflect.Type, tRef reflect.Type) (n string) { - var ptrPfx string - for t.Kind() == reflect.Ptr { - ptrPfx += "Ptrto" - t = t.Elem() - } - tstr := t.String() - if tn := t.Name(); tn != "" { - if tRef != nil && genImportPath(t) == genImportPath(tRef) { - return ptrPfx + tn - } else { - if genQNameRegex.MatchString(tstr) { - return ptrPfx + strings.Replace(tstr, ".", "_", 1000) - } else { - return ptrPfx + genCustomTypeName(tstr) - } - } - } - switch t.Kind() { - case reflect.Map: - return ptrPfx + "Map" + genMethodNameT(t.Key(), tRef) + genMethodNameT(t.Elem(), tRef) - case reflect.Slice: - return ptrPfx + "Slice" + genMethodNameT(t.Elem(), tRef) - case reflect.Array: - return ptrPfx + "Array" + strconv.FormatInt(int64(t.Len()), 10) + genMethodNameT(t.Elem(), tRef) - case reflect.Chan: - var cx string - switch t.ChanDir() { - case reflect.SendDir: - cx = "ChanSend" - case reflect.RecvDir: - cx = "ChanRecv" - default: - cx = "Chan" - } - return ptrPfx + cx + genMethodNameT(t.Elem(), tRef) - default: - if t == intfTyp { - return ptrPfx + "Interface" - } else { - if tRef != nil && genImportPath(t) == genImportPath(tRef) { - if t.Name() != "" { - return ptrPfx + t.Name() - } else { - return ptrPfx + genCustomTypeName(tstr) - } - } else { - // best way to get the package name inclusive - if t.Name() != "" && genQNameRegex.MatchString(tstr) { - return ptrPfx + strings.Replace(tstr, ".", "_", 1000) - } else { - return ptrPfx + genCustomTypeName(tstr) - } - } - } - } -} - -// genCustomNameForType base32 encodes the t.String() value in such a way -// that it can be used within a function name. -func genCustomTypeName(tstr string) string { - len2 := genTypenameEnc.EncodedLen(len(tstr)) - bufx := make([]byte, len2) - genTypenameEnc.Encode(bufx, []byte(tstr)) - for i := len2 - 1; i >= 0; i-- { - if bufx[i] == '=' { - len2-- - } else { - break - } - } - return string(bufx[:len2]) -} - -func genIsImmutable(t reflect.Type) (v bool) { - return scalarBitset.isset(byte(t.Kind())) -} +// -------- -type genInternal struct { - Version int - Values []fastpathGenV +type genTmpl struct { + Values []genFastpathV Formats []string } -func (x genInternal) FastpathLen() (l int) { +func (x genTmpl) FastpathLen() (l int) { for _, v := range x.Values { // if v.Primitive == "" && !(v.MapKey == "" && v.Elem == "uint8") { if v.Primitive == "" { @@ -2353,7 +113,7 @@ func (x genInternal) FastpathLen() (l int) { return } -func genInternalZeroValue(s string) string { +func genTmplZeroValue(s string) string { switch s { case "interface{}", "interface {}": return "nil" @@ -2368,8 +128,8 @@ func genInternalZeroValue(s string) string { } } -var genInternalNonZeroValueIdx [6]uint64 -var genInternalNonZeroValueStrs = [...][6]string{ +var genTmplNonZeroValueIdx [6]uint64 +var genTmplNonZeroValueStrs = [...][6]string{ {`"string-is-an-interface-1"`, "true", `"some-string-1"`, `[]byte("some-string-1")`, "11.1", "111"}, {`"string-is-an-interface-2"`, "false", `"some-string-2"`, `[]byte("some-string-2")`, "22.2", "77"}, {`"string-is-an-interface-3"`, "true", `"some-string-3"`, `[]byte("some-string-3")`, "33.3e3", "127"}, @@ -2377,7 +137,7 @@ var genInternalNonZeroValueStrs = [...][6]string{ // Note: last numbers must be in range: 0-127 (as they may be put into a int8, uint8, etc) -func genInternalNonZeroValue(s string) string { +func genTmplNonZeroValue(s string) string { var i int switch s { case "interface{}", "interface {}": @@ -2393,14 +153,14 @@ func genInternalNonZeroValue(s string) string { default: i = 5 } - genInternalNonZeroValueIdx[i]++ - idx := genInternalNonZeroValueIdx[i] - slen := uint64(len(genInternalNonZeroValueStrs)) - return genInternalNonZeroValueStrs[idx%slen][i] // return string, to remove ambiguity + genTmplNonZeroValueIdx[i]++ + idx := genTmplNonZeroValueIdx[i] + slen := uint64(len(genTmplNonZeroValueStrs)) + return genTmplNonZeroValueStrs[idx%slen][i] // return string, to remove ambiguity } // Note: used for fastpath only -func genInternalEncCommandAsString(s string, vname string) string { +func genTmplEncCommandAsString(s string, vname string) string { switch s { case "uint64": return "e.e.EncodeUint(" + vname + ")" @@ -2411,7 +171,12 @@ func genInternalEncCommandAsString(s string, vname string) string { case "int", "int8", "int16", "int32": return "e.e.EncodeInt(int64(" + vname + "))" case "[]byte", "[]uint8", "bytes": - return "e.e.EncodeStringBytesRaw(" + vname + ")" + // return fmt.Sprintf( + // "if %s != nil { e.e.EncodeStringBytesRaw(%s) } "+ + // "else if e.h.NilCollectionToZeroLength { e.e.WriteArrayEmpty() } "+ + // "else { e.e.EncodeNil() }", vname, vname) + // return "e.e.EncodeStringBytesRaw(" + vname + ")" + return "e.e.EncodeBytes(" + vname + ")" case "string": return "e.e.EncodeString(" + vname + ")" case "float32": @@ -2423,12 +188,13 @@ func genInternalEncCommandAsString(s string, vname string) string { // case "symbol": // return "e.e.EncodeSymbol(" + vname + ")" default: - return "e.encode(" + vname + ")" + return fmt.Sprintf("if !e.encodeBuiltin(%s) { e.encodeR(reflect.ValueOf(%s)) }", vname, vname) + // return "e.encodeI(" + vname + ")" } } // Note: used for fastpath only -func genInternalDecCommandAsString(s string, mapkey bool) string { +func genTmplDecCommandAsString(s string, mapkey bool) string { switch s { case "uint": return "uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))" @@ -2458,77 +224,39 @@ func genInternalDecCommandAsString(s string, mapkey bool) string { // return "d.stringZC(d.d.DecodeStringAsBytes())" // } // return "string(d.d.DecodeStringAsBytes())" - return "d.stringZC(d.d.DecodeStringAsBytes())" + return "d.detach2Str(d.d.DecodeStringAsBytes())" case "[]byte", "[]uint8", "bytes": - return "d.d.DecodeBytes([]byte{})" + // return "bytesOk(d.d.DecodeBytes())" + return "bytesOKdbi(d.decodeBytesInto(v[uint(j)], false))" case "float32": - return "float32(d.decodeFloat32())" + return "float32(d.d.DecodeFloat32())" case "float64": return "d.d.DecodeFloat64()" case "complex64": - return "complex(d.decodeFloat32(), 0)" + return "complex(d.d.DecodeFloat32(), 0)" case "complex128": return "complex(d.d.DecodeFloat64(), 0)" case "bool": return "d.d.DecodeBool()" default: - halt.onerror(errors.New("gen internal: unknown type for decode: " + s)) + halt.error(errors.New("gen internal: unknown type for decode: " + s)) } return "" } -// func genInternalSortType(s string, elem bool) string { -// for _, v := range [...]string{ -// "int", -// "uint", -// "float", -// "bool", -// "string", -// "bytes", "[]uint8", "[]byte", -// } { -// if v == "[]byte" || v == "[]uint8" { -// v = "bytes" -// } -// if strings.HasPrefix(s, v) { -// if v == "int" || v == "uint" || v == "float" { -// v += "64" -// } -// if elem { -// return v -// } -// return v + "Slice" -// } -// } -// halt.onerror(errors.New("sorttype: unexpected type: " + s)) -// } - -func genInternalSortType(s string, elem bool) string { +func genTmplSortType(s string, elem bool) string { if elem { return s } return s + "Slice" } -// MARKER: keep in sync with codecgen/gen.go -func genStripVendor(s string) string { - // HACK: Misbehaviour occurs in go 1.5. May have to re-visit this later. - // if s contains /vendor/ OR startsWith vendor/, then return everything after it. - const vendorStart = "vendor/" - const vendorInline = "/vendor/" - if i := strings.LastIndex(s, vendorInline); i >= 0 { - s = s[i+len(vendorInline):] - } else if strings.HasPrefix(s, vendorStart) { - s = s[len(vendorStart):] - } - return s -} - -// var genInternalMu sync.Mutex -var genInternalV = genInternal{Version: genVersion} -var genInternalTmplFuncs template.FuncMap -var genInternalOnce sync.Once +// var genTmplMu sync.Mutex +var genTmplV = genTmpl{} +var genTmplFuncs template.FuncMap +var genTmplOnce sync.Once -func genInternalInit() { +func genTmplInit() { wordSizeBytes := int(intBitsize) / 8 typesizes := map[string]int{ @@ -2579,78 +307,88 @@ func genInternalInit() { var primitivetypes, slicetypes, mapkeytypes, mapvaltypes []string primitivetypes = types[:] + slicetypes = types[:] mapkeytypes = types[:] mapvaltypes = types[:] if genFastpathTrimTypes { - // Note: we only create fast-paths for commonly used types. + // Note: we only create fastpaths for commonly used types. // Consequently, things like int8, uint16, uint, etc are commented out. - - slicetypes = genInternalFastpathSliceTypes() - mapkeytypes = genInternalFastpathMapKeyTypes() - mapvaltypes = genInternalFastpathMapValueTypes() - } - - // var mapkeytypes [len(&types) - 1]string // skip bool - // copy(mapkeytypes[:], types[:]) - - // var mb []byte - // mb = append(mb, '|') - // for _, s := range mapkeytypes { - // mb = append(mb, s...) - // mb = append(mb, '|') - // } - // var mapkeytypestr = string(mb) - - var gt = genInternal{Version: genVersion, Formats: genFormats} - - // For each slice or map type, there must be a (symmetrical) Encode and Decode fast-path function + slicetypes = []string{ + "interface{}", + "string", + "[]byte", + "float32", + "float64", + "uint8", // keep fastpath, so it doesn't have to go through reflection + "uint64", + "int", + "int32", // rune + "int64", + "bool", + } + mapkeytypes = []string{ + "string", + "uint8", // byte + "uint64", // used for keys + "int", // default number key + "int32", // rune + } + mapvaltypes = []string{ + "interface{}", + "string", + "[]byte", + "uint8", // byte + "uint64", // used for keys, etc + "int", // default number + "int32", // rune (mostly used for unicode) + "float64", + "bool", + } + } + + var gt = genTmpl{Formats: genFormats} + + // For each slice or map type, there must be a (symmetrical) Encode and Decode fastpath function for _, s := range primitivetypes { gt.Values = append(gt.Values, - fastpathGenV{Primitive: s, Size: typesizes[s], NoCanonical: !genFastpathCanonical}) + genFastpathV{Primitive: s, Size: typesizes[s], NoCanonical: !genFastpathCanonical}) } for _, s := range slicetypes { - // if s != "uint8" { // do not generate fast path for slice of bytes. Treat specially already. - // gt.Values = append(gt.Values, fastpathGenV{Elem: s, Size: typesizes[s]}) - // } gt.Values = append(gt.Values, - fastpathGenV{Elem: s, Size: typesizes[s], NoCanonical: !genFastpathCanonical}) + genFastpathV{Elem: s, Size: typesizes[s], NoCanonical: !genFastpathCanonical}) } for _, s := range mapkeytypes { - // if _, ok := typesizes[s]; !ok { - // if strings.Contains(mapkeytypestr, "|"+s+"|") { - // gt.Values = append(gt.Values, fastpathGenV{MapKey: s, Elem: s, Size: 2 * typesizes[s]}) - // } for _, ms := range mapvaltypes { gt.Values = append(gt.Values, - fastpathGenV{MapKey: s, Elem: ms, Size: typesizes[s] + typesizes[ms], NoCanonical: !genFastpathCanonical}) + genFastpathV{MapKey: s, Elem: ms, Size: typesizes[s] + typesizes[ms], NoCanonical: !genFastpathCanonical}) } } funcs := make(template.FuncMap) // funcs["haspfx"] = strings.HasPrefix - funcs["encmd"] = genInternalEncCommandAsString - funcs["decmd"] = genInternalDecCommandAsString - funcs["zerocmd"] = genInternalZeroValue - funcs["nonzerocmd"] = genInternalNonZeroValue + funcs["encmd"] = genTmplEncCommandAsString + funcs["decmd"] = genTmplDecCommandAsString + funcs["zerocmd"] = genTmplZeroValue + funcs["nonzerocmd"] = genTmplNonZeroValue funcs["hasprefix"] = strings.HasPrefix - funcs["sorttype"] = genInternalSortType + funcs["sorttype"] = genTmplSortType - genInternalV = gt - genInternalTmplFuncs = funcs + genTmplV = gt + genTmplFuncs = funcs } -// genInternalGoFile is used to generate source files from templates. -func genInternalGoFile(r io.Reader, w io.Writer) (err error) { - genInternalOnce.Do(genInternalInit) +// genTmplGoFile is used to generate source files from templates. +func genTmplGoFile(r io.Reader, w io.Writer) (err error) { + genTmplOnce.Do(genTmplInit) - gt := genInternalV + gt := genTmplV - t := template.New("").Funcs(genInternalTmplFuncs) + t := template.New("").Funcs(genTmplFuncs) - tmplstr, err := ioutil.ReadAll(r) + tmplstr, err := io.ReadAll(r) if err != nil { return } @@ -2675,175 +413,7 @@ func genInternalGoFile(r io.Reader, w io.Writer) (err error) { return } -func genInternalFastpathSliceTypes() []string { - return []string{ - "interface{}", - "string", - "[]byte", - "float32", - "float64", - // "uint", - // "uint8", // no need for fastpath of []uint8, as it is handled specially - "uint8", // keep fast-path, so it doesn't have to go through reflection - // "uint16", - // "uint32", - "uint64", - // "uintptr", - "int", - // "int8", - // "int16", - "int32", // rune - "int64", - "bool", - } -} - -func genInternalFastpathMapKeyTypes() []string { - return []string{ - // "interface{}", - "string", - // "[]byte", - // "float32", - // "float64", - // "uint", - "uint8", // byte - // "uint16", - // "uint32", - "uint64", // used for keys - // "uintptr", - "int", // default number key - // "int8", - // "int16", - "int32", // rune - // "int64", - // "bool", - } -} - -func genInternalFastpathMapValueTypes() []string { - return []string{ - "interface{}", - "string", - "[]byte", - // "uint", - "uint8", // byte - // "uint16", - // "uint32", - "uint64", // used for keys, etc - // "uintptr", - "int", // default number - //"int8", - // "int16", - "int32", // rune (mostly used for unicode) - // "int64", - // "float32", - "float64", - "bool", - } -} - -// sort-slice ... -// generates sort implementations for -// various slice types and combination slice+reflect.Value types. -// -// The combination slice+reflect.Value types are used -// during canonical encode, and the others are used during fast-path -// encoding of map keys. - -// genInternalSortableTypes returns the types -// that are used for fast-path canonical's encoding of maps. -// -// For now, we only support the highest sizes for -// int64, uint64, float64, bool, string, bytes. -func genInternalSortableTypes() []string { - return genInternalFastpathMapKeyTypes() -} - -// genInternalSortablePlusTypes returns the types -// that are used for reflection-based canonical's encoding of maps. -// -// For now, we only support the highest sizes for -// int64, uint64, float64, string, bytes. -func genInternalSortablePlusTypes() []string { - return []string{ - "string", - "float64", - "uint64", - // "uintptr", - "int64", - // "bool", - "time", - "bytes", - } -} - -func genTypeForShortName(s string) string { - switch s { - case "time": - return "time.Time" - case "bytes": - return "[]byte" - } - return s -} - -func genArgs(args ...interface{}) map[string]interface{} { - m := make(map[string]interface{}, len(args)/2) - for i := 0; i < len(args); { - m[args[i].(string)] = args[i+1] - i += 2 - } - return m -} - -func genEndsWith(s0 string, sn ...string) bool { - for _, s := range sn { - if strings.HasSuffix(s0, s) { - return true - } - } - return false -} - -func genCheckErr(err error) { - halt.onerror(err) -} - -func genRunSortTmpl2Go(fnameIn, fnameOut string) { - var err error - - funcs := make(template.FuncMap) - funcs["sortables"] = genInternalSortableTypes - funcs["sortablesplus"] = genInternalSortablePlusTypes - funcs["tshort"] = genTypeForShortName - funcs["endswith"] = genEndsWith - funcs["args"] = genArgs - - t := template.New("").Funcs(funcs) - fin, err := os.Open(fnameIn) - genCheckErr(err) - defer fin.Close() - fout, err := os.Create(fnameOut) - genCheckErr(err) - defer fout.Close() - tmplstr, err := ioutil.ReadAll(fin) - genCheckErr(err) - t, err = t.Parse(string(tmplstr)) - genCheckErr(err) - var out bytes.Buffer - err = t.Execute(&out, 0) - genCheckErr(err) - bout, err := format.Source(out.Bytes()) - if err != nil { - fout.Write(out.Bytes()) // write out if error, so we can still see. - } - genCheckErr(err) - // write out if error, as much as possible, so we can still see. - _, err = fout.Write(bout) - genCheckErr(err) -} - -func genRunTmpl2Go(fnameIn, fnameOut string) { +func genTmplRun2Go(fnameIn, fnameOut string) { // println("____ " + fnameIn + " --> " + fnameOut + " ______") fin, err := os.Open(fnameIn) genCheckErr(err) @@ -2851,30 +421,6 @@ func genRunTmpl2Go(fnameIn, fnameOut string) { fout, err := os.Create(fnameOut) genCheckErr(err) defer fout.Close() - err = genInternalGoFile(fin, fout) + err = genTmplGoFile(fin, fout) genCheckErr(err) } - -// --- some methods here for other types, which are only used in codecgen - -// depth returns number of valid nodes in the hierachy -func (path *structFieldInfoPathNode) root() *structFieldInfoPathNode { -TOP: - if path.parent != nil { - path = path.parent - goto TOP - } - return path -} - -func (path *structFieldInfoPathNode) fullpath() (p []*structFieldInfoPathNode) { - // this method is mostly called by a command-line tool - it's not optimized, and that's ok. - // it shouldn't be used in typical runtime use - as it does unnecessary allocation. - d := path.depth() - p = make([]*structFieldInfoPathNode, d) - for d--; d >= 0; d-- { - p[d] = path - path = path.parent - } - return -} diff --git a/vendor/github.com/ugorji/go/codec/gen_mono.go b/vendor/github.com/ugorji/go/codec/gen_mono.go new file mode 100644 index 000000000..841147863 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen_mono.go @@ -0,0 +1,586 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build codec.build + +package codec + +import ( + "go/ast" + "go/format" + "go/parser" + "go/token" + "os" + "slices" + "strings" +) + +// This tool will monomorphize types scoped to a specific format. +// +// This tool only monomorphized the type Name, and not a function Name. +// Explicitly, generic functions are not supported, as they cannot be monomorphized +// to a specific format without a corresponding name change. +// +// However, for types constrained to encWriter or decReader, +// which are shared across formats, there's no place to put them without duplication. + +const genMonoParserMode = parser.AllErrors | parser.SkipObjectResolution + +var genMonoSpecialFieldTypes = []string{"helperDecReader"} + +// These functions should take the address of first param when monomorphized +var genMonoSpecialFunc4Addr = []string{} // {"decByteSlice"} + +var genMonoImportsToSkip = []string{`"errors"`, `"fmt"`, `"net/rpc"`} + +var genMonoRefImportsVia_ = [][2]string{ + // {"errors", "New"}, +} + +var genMonoCallsToSkip = []string{"callMake"} + +type genMonoFieldState uint + +const ( + genMonoFieldRecv genMonoFieldState = iota << 1 + genMonoFieldParamsResult + genMonoFieldStruct +) + +type genMonoImports struct { + set map[string]struct{} + specs []*ast.ImportSpec +} + +type genMono struct { + files map[string][]byte + typParam map[string]*ast.Field + typParamTransient map[string]*ast.Field +} + +func (x *genMono) init() { + x.files = make(map[string][]byte) + x.typParam = make(map[string]*ast.Field) + x.typParamTransient = make(map[string]*ast.Field) +} + +func (x *genMono) reset() { + clear(x.typParam) + clear(x.typParamTransient) +} + +func (m *genMono) hdl(hname string) { + m.reset() + m.do(hname, []string{"encode.go", "decode.go", hname + ".go"}, []string{"base.notfastpath.go", "base.notfastpath.notmono.go"}, "", "") + m.do(hname, []string{"base.notfastpath.notmono.go"}, nil, ".notfastpath", ` && (notfastpath || codec.notfastpath)`) + m.do(hname, []string{"base.fastpath.notmono.generated.go"}, []string{"base.fastpath.generated.go"}, ".fastpath", ` && !notfastpath && !codec.notfastpath`) +} + +func (m *genMono) do(hname string, fnames, tnames []string, fnameInfx string, buildTagsSfx string) { + // keep m.typParams across whole call, as all others use it + const fnameSfx = ".mono.generated.go" + fname := hname + fnameInfx + fnameSfx + + var imports = genMonoImports{set: make(map[string]struct{})} + + r1, fset := m.merge(fnames, tnames, &imports) + m.trFile(r1, hname, true) + + r2, fset := m.merge(fnames, tnames, &imports) + m.trFile(r2, hname, false) + + r0 := genMonoOutInit(imports.specs, fname) + r0.Decls = append(r0.Decls, r1.Decls...) + r0.Decls = append(r0.Decls, r2.Decls...) + + // output r1 to a file + f, err := os.Create(fname) + halt.onerror(err) + defer f.Close() + + var s genMonoStrBuilder + s.s(`//go:build !notmono && !codec.notmono `).s(buildTagsSfx).s(` + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +`) + _, err = f.Write(s.v) + halt.onerror(err) + err = format.Node(f, fset, r0) + halt.onerror(err) +} + +func (x *genMono) file(fname string) (b []byte) { + b = x.files[fname] + if b == nil { + var err error + b, err = os.ReadFile(fname) + halt.onerror(err) + x.files[fname] = b + } + return +} + +func (x *genMono) merge(fNames, tNames []string, imports *genMonoImports) (dst *ast.File, fset *token.FileSet) { + // typParams used in fnLoadTyps + var typParams map[string]*ast.Field + var loadTyps bool + fnLoadTyps := func(node ast.Node) bool { + var ok bool + switch n := node.(type) { + case *ast.GenDecl: + if n.Tok == token.TYPE { + for _, v := range n.Specs { + nn := v.(*ast.TypeSpec) + ok = genMonoTypeParamsOk(nn.TypeParams) + if ok { + // each decl will have only 1 var/type + typParams[nn.Name.Name] = nn.TypeParams.List[0] + if loadTyps { + dst.Decls = append(dst.Decls, &ast.GenDecl{Tok: n.Tok, Specs: []ast.Spec{v}}) + } + } + } + } + return false + } + return true + } + + // we only merge top-level methods and types + fnIdX := func(n *ast.FuncDecl, n2 *ast.IndexExpr) (ok bool) { + n9, ok9 := n2.Index.(*ast.Ident) + n3, ok := n2.X.(*ast.Ident) // n3 = type name + ok = ok && ok9 && n9.Name == "T" + if ok { + _, ok = x.typParam[n3.Name] + } + return + } + + fnLoadMethodsAndImports := func(node ast.Node) bool { + var ok bool + switch n := node.(type) { + case *ast.FuncDecl: + // TypeParams is nil for methods, as it is defined at the type node + // instead, look at the name, and + // if IndexExpr.Index=T, and IndexExpr.X matches a type name seen already + // then ok = true + if n.Recv == nil || len(n.Recv.List) != 1 { + return false + } + ok = false + switch nn := n.Recv.List[0].Type.(type) { + case *ast.IndexExpr: + ok = fnIdX(n, nn) + case *ast.StarExpr: + switch nn2 := nn.X.(type) { + case *ast.IndexExpr: + ok = fnIdX(n, nn2) + } + } + if ok { + dst.Decls = append(dst.Decls, n) + } + return false + case *ast.GenDecl: + if n.Tok == token.IMPORT { + for _, v := range n.Specs { + nn := v.(*ast.ImportSpec) + if slices.Contains(genMonoImportsToSkip, nn.Path.Value) { + continue + } + if _, ok = imports.set[nn.Path.Value]; !ok { + imports.specs = append(imports.specs, nn) + imports.set[nn.Path.Value] = struct{}{} + } + } + } + return false + } + return true + } + + fset = token.NewFileSet() + fnLoadAsts := func(names []string) (asts []*ast.File) { + for _, fname := range names { + fsrc := x.file(fname) + f, err := parser.ParseFile(fset, fname, fsrc, genMonoParserMode) + halt.onerror(err) + asts = append(asts, f) + } + return + } + + clear(x.typParamTransient) + + dst = &ast.File{ + Name: &ast.Ident{Name: "codec"}, + } + + fs := fnLoadAsts(fNames) + ts := fnLoadAsts(tNames) + + loadTyps = true + typParams = x.typParam + for _, v := range fs { + ast.Inspect(v, fnLoadTyps) + } + loadTyps = false + typParams = x.typParamTransient + for _, v := range ts { + ast.Inspect(v, fnLoadTyps) + } + typParams = nil + for _, v := range fs { + ast.Inspect(v, fnLoadMethodsAndImports) + } + + return +} + +func (x *genMono) trFile(r *ast.File, hname string, isbytes bool) { + fn := func(node ast.Node) bool { + switch n := node.(type) { + case *ast.TypeSpec: + // type x[T encDriver] struct { ... } + if !genMonoTypeParamsOk(n.TypeParams) { + return false + } + x.trType(n, hname, isbytes) + return false + case *ast.FuncDecl: + if n.Recv == nil || len(n.Recv.List) != 1 { + return false + } + if _, ok := n.Recv.List[0].Type.(*ast.Ident); ok { + return false + } + tp := x.trMethodSign(n, hname, isbytes) // receiver, params, results + // handle the body + x.trMethodBody(n.Body, tp, hname, isbytes) + return false + } + return true + } + ast.Inspect(r, fn) + + // set type params to nil, and Pos to NoPos + fn = func(node ast.Node) bool { + switch n := node.(type) { + case *ast.FuncType: + if genMonoTypeParamsOk(n.TypeParams) { + n.TypeParams = nil + } + case *ast.TypeSpec: // for type ... + if genMonoTypeParamsOk(n.TypeParams) { + n.TypeParams = nil + } + } + return true + } + ast.Inspect(r, fn) +} + +func (x *genMono) trType(n *ast.TypeSpec, hname string, isbytes bool) { + sfx, _, _, hnameUp := genMonoIsBytesVals(hname, isbytes) + tp := n.TypeParams.List[0] + switch tp.Type.(*ast.Ident).Name { + case "encDriver", "decDriver": + n.Name.Name += hnameUp + sfx + case "encWriter", "decReader": + n.Name.Name += sfx + } + + // handle the Struct and Array types + switch nn := n.Type.(type) { + case *ast.StructType: + x.trStruct(nn, tp, hname, isbytes) + case *ast.ArrayType: + x.trArray(nn, tp, hname, isbytes) + } +} + +func (x *genMono) trMethodSign(n *ast.FuncDecl, hname string, isbytes bool) (tp *ast.Field) { + // check if recv type is not parameterized + tp = x.trField(n.Recv.List[0], nil, hname, isbytes, genMonoFieldRecv) + // handle params and results + x.trMethodSignNonRecv(n.Type.Params, tp, hname, isbytes) + x.trMethodSignNonRecv(n.Type.Results, tp, hname, isbytes) + return +} + +func (x *genMono) trMethodSignNonRecv(r *ast.FieldList, tp *ast.Field, hname string, isbytes bool) { + if r == nil || len(r.List) == 0 { + return + } + for _, v := range r.List { + x.trField(v, tp, hname, isbytes, genMonoFieldParamsResult) + } +} + +func (x *genMono) trStruct(r *ast.StructType, tp *ast.Field, hname string, isbytes bool) { + // search for fields, and update accordingly + // type x[T encDriver] struct { w T } + // var x *A[T] + // A[T] + if r == nil || r.Fields == nil || len(r.Fields.List) == 0 { + return + } + for _, v := range r.Fields.List { + x.trField(v, tp, hname, isbytes, genMonoFieldStruct) + } +} + +func (x *genMono) trArray(n *ast.ArrayType, tp *ast.Field, hname string, isbytes bool) { + sfx, _, _, hnameUp := genMonoIsBytesVals(hname, isbytes) + // type fastpathEs[T encDriver] [56]fastpathE[T] + // p := tp.Names[0].Name + switch elt := n.Elt.(type) { + // case *ast.InterfaceType: + case *ast.IndexExpr: + if elt.Index.(*ast.Ident).Name == "T" { // generic + n.Elt = ast.NewIdent(elt.X.(*ast.Ident).Name + hnameUp + sfx) + } + } +} + +func (x *genMono) trMethodBody(r *ast.BlockStmt, tp *ast.Field, hname string, isbytes bool) { + // find the parent node for an indexExpr, or a T/*T, and set the value back in there + + fn := func(pnode ast.Node) bool { + var pn *ast.Ident + fnUp := func() { + x.updateIdentForT(pn, hname, tp, isbytes, false) + } + switch n := pnode.(type) { + // case *ast.SelectorExpr: + // case *ast.TypeAssertExpr: + // case *ast.IndexExpr: + case *ast.StarExpr: + if genMonoUpdateIndexExprT(&pn, n.X) { + n.X = pn + fnUp() + } + case *ast.CallExpr: + for i4, n4 := range n.Args { + if genMonoUpdateIndexExprT(&pn, n4) { + n.Args[i4] = pn + fnUp() + } + } + if n4, ok4 := n.Fun.(*ast.Ident); ok4 && slices.Contains(genMonoSpecialFunc4Addr, n4.Name) { + n.Args[0] = &ast.UnaryExpr{Op: token.AND, X: n.Args[0].(*ast.SelectorExpr)} + } + case *ast.CompositeLit: + if genMonoUpdateIndexExprT(&pn, n.Type) { + n.Type = pn + fnUp() + } + case *ast.ArrayType: + if genMonoUpdateIndexExprT(&pn, n.Elt) { + n.Elt = pn + fnUp() + } + case *ast.ValueSpec: + for i2, n2 := range n.Values { + if genMonoUpdateIndexExprT(&pn, n2) { + n.Values[i2] = pn + fnUp() + } + } + if genMonoUpdateIndexExprT(&pn, n.Type) { + n.Type = pn + fnUp() + } + case *ast.BinaryExpr: + // early return here, since the 2 things can apply + if genMonoUpdateIndexExprT(&pn, n.X) { + n.X = pn + fnUp() + } + if genMonoUpdateIndexExprT(&pn, n.Y) { + n.Y = pn + fnUp() + } + return true + } + return true + } + ast.Inspect(r, fn) +} + +func (x *genMono) trField(f *ast.Field, tpt *ast.Field, hname string, isbytes bool, state genMonoFieldState) (tp *ast.Field) { + var pn *ast.Ident + switch nn := f.Type.(type) { + case *ast.IndexExpr: + if genMonoUpdateIndexExprT(&pn, nn) { + f.Type = pn + } + case *ast.StarExpr: + if genMonoUpdateIndexExprT(&pn, nn.X) { + nn.X = pn + } + case *ast.FuncType: + x.trMethodSignNonRecv(nn.Params, tpt, hname, isbytes) + x.trMethodSignNonRecv(nn.Results, tpt, hname, isbytes) + return + case *ast.ArrayType: + x.trArray(nn, tpt, hname, isbytes) + return + case *ast.Ident: + if state == genMonoFieldRecv || nn.Name != "T" { + return + } + pn = nn // "T" + if state == genMonoFieldParamsResult { + f.Type = &ast.StarExpr{X: pn} + } + } + if pn == nil { + return + } + + tp = x.updateIdentForT(pn, hname, tpt, isbytes, true) + return +} + +func (x *genMono) updateIdentForT(pn *ast.Ident, hname string, tp *ast.Field, + isbytes bool, lookupTP bool) (tp2 *ast.Field) { + sfx, writer, reader, hnameUp := genMonoIsBytesVals(hname, isbytes) + // handle special ones e.g. helperDecReader et al + if slices.Contains(genMonoSpecialFieldTypes, pn.Name) { + pn.Name += sfx + return + } + + if pn.Name != "T" && lookupTP { + tp = x.typParam[pn.Name] + if tp == nil { + tp = x.typParamTransient[pn.Name] + } + } + + paramtyp := tp.Type.(*ast.Ident).Name + if pn.Name == "T" { + switch paramtyp { + case "encDriver", "decDriver": + pn.Name = hname + genMonoTitleCase(paramtyp) + sfx + case "encWriter": + pn.Name = writer + case "decReader": + pn.Name = reader + } + } else { + switch paramtyp { + case "encDriver", "decDriver": + pn.Name += hnameUp + sfx + case "encWriter", "decReader": + pn.Name += sfx + } + } + return tp +} + +func genMonoUpdateIndexExprT(pn **ast.Ident, node ast.Node) (pnok bool) { + *pn = nil + if n2, ok := node.(*ast.IndexExpr); ok { + n9, ok9 := n2.Index.(*ast.Ident) + n3, ok := n2.X.(*ast.Ident) + if ok && ok9 && n9.Name == "T" { + *pn, pnok = ast.NewIdent(n3.Name), true + } + } + return +} + +func genMonoTitleCase(s string) string { + return strings.ToUpper(s[:1]) + s[1:] +} + +func genMonoIsBytesVals(hName string, isbytes bool) (suffix, writer, reader, hNameUp string) { + hNameUp = genMonoTitleCase(hName) + if isbytes { + return "Bytes", "bytesEncAppender", "bytesDecReader", hNameUp + } + return "IO", "bufioEncWriter", "ioDecReader", hNameUp +} + +func genMonoTypeParamsOk(v *ast.FieldList) (ok bool) { + if v == nil || v.List == nil || len(v.List) != 1 { + return false + } + pn := v.List[0] + if len(pn.Names) != 1 { + return false + } + pnName := pn.Names[0].Name + if pnName != "T" { + return false + } + // ignore any nodes which are not idents e.g. cmp.orderedRv + vv, ok := pn.Type.(*ast.Ident) + if !ok { + return false + } + switch vv.Name { + case "encDriver", "decDriver", "encWriter", "decReader": + return true + } + return false +} + +func genMonoCopy(src *ast.File) (dst *ast.File) { + dst = &ast.File{ + Name: &ast.Ident{Name: "codec"}, + } + dst.Decls = append(dst.Decls, src.Decls...) + return +} + +type genMonoStrBuilder struct { + v []byte +} + +func (x *genMonoStrBuilder) s(v string) *genMonoStrBuilder { + x.v = append(x.v, v...) + return x +} + +func genMonoOutInit(importSpecs []*ast.ImportSpec, fname string) (f *ast.File) { + // ParseFile seems to skip the //go:build stanza + // it should be written directly into the file + var s genMonoStrBuilder + s.s(` +package codec + +import ( +`) + for _, v := range importSpecs { + s.s("\t").s(v.Path.Value).s("\n") + } + s.s(")\n") + for _, v := range genMonoRefImportsVia_ { + s.s("var _ = ").s(v[0]).s(".").s(v[1]).s("\n") + } + f, err := parser.ParseFile(token.NewFileSet(), fname, s.v, genMonoParserMode) + halt.onerror(err) + return +} + +func genMonoAll() { + // hdls := []Handle{ + // (*SimpleHandle)(nil), + // (*JsonHandle)(nil), + // (*CborHandle)(nil), + // (*BincHandle)(nil), + // (*MsgpackHandle)(nil), + // } + hdls := []string{"simple", "json", "cbor", "binc", "msgpack"} + var m genMono + m.init() + for _, v := range hdls { + m.hdl(v) + } +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go b/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go deleted file mode 100644 index 25c5b0208..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.5 -// +build go1.5 - -package codec - -import "reflect" - -const reflectArrayOfSupported = true - -func reflectArrayOf(count int, elem reflect.Type) reflect.Type { - return reflect.ArrayOf(count, elem) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go b/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go deleted file mode 100644 index a32dfd7de..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.5 -// +build !go1.5 - -package codec - -import ( - "errors" - "reflect" -) - -const reflectArrayOfSupported = false - -var errNoReflectArrayOf = errors.New("codec: reflect.ArrayOf unsupported by this go version") - -func reflectArrayOf(count int, elem reflect.Type) reflect.Type { - panic(errNoReflectArrayOf) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_check_supported.go b/vendor/github.com/ugorji/go/codec/goversion_check_supported.go new file mode 100644 index 000000000..067c5e9ce --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/goversion_check_supported.go @@ -0,0 +1,20 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build !go1.21 + +package codec + +import "errors" + +// Moving forward, this codec package will support at least the last 4 major Go releases. +// +// As of early summer 2025, codec will support go 1.21, 1.22, 1.23, 1.24 releases of go. +// This allows use of the followin: +// - stabilized generics +// - min/max/clear +// - slice->array conversion + +func init() { + panic(errors.New("codec: supports go 1.21 and above only")) +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_fmt_time_gte_go15.go b/vendor/github.com/ugorji/go/codec/goversion_fmt_time_gte_go15.go deleted file mode 100644 index 688d6b62d..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_fmt_time_gte_go15.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.5 -// +build go1.5 - -package codec - -import "time" - -func fmtTime(t time.Time, fmt string, b []byte) []byte { - return t.AppendFormat(b, fmt) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_fmt_time_lt_go15.go b/vendor/github.com/ugorji/go/codec/goversion_fmt_time_lt_go15.go deleted file mode 100644 index a1b8b973e..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_fmt_time_lt_go15.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.5 -// +build !go1.5 - -package codec - -import "time" - -func fmtTime(t time.Time, fmt string, b []byte) []byte { - s := t.Format(fmt) - b = b[:len(s)] - copy(b, s) - return b -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_gte_go120.go b/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_gte_go120.go deleted file mode 100644 index d5fed78e2..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_gte_go120.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.20 && !safe && !codec.safe && !appengine -// +build go1.20,!safe,!codec.safe,!appengine - -package codec - -import ( - _ "reflect" // needed for go linkname(s) - "unsafe" -) - -func growslice(typ unsafe.Pointer, old unsafeSlice, num int) (s unsafeSlice) { - // culled from GOROOT/runtime/slice.go - num -= old.Cap - old.Len - s = rtgrowslice(old.Data, old.Cap+num, old.Cap, num, typ) - s.Len = old.Len - return -} - -//go:linkname rtgrowslice runtime.growslice -//go:noescape -func rtgrowslice(oldPtr unsafe.Pointer, newLen, oldCap, num int, typ unsafe.Pointer) unsafeSlice - -// //go:linkname growslice reflect.growslice -// //go:noescape -// func growslice(typ unsafe.Pointer, old unsafeSlice, cap int) unsafeSlice diff --git a/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_lt_go120.go b/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_lt_go120.go deleted file mode 100644 index 550c5d9e0..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_lt_go120.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.9 && !go1.20 && !safe && !codec.safe && !appengine -// +build go1.9,!go1.20,!safe,!codec.safe,!appengine - -package codec - -import ( - _ "runtime" // needed for go linkname(s) - "unsafe" -) - -//go:linkname growslice runtime.growslice -//go:noescape -func growslice(typ unsafe.Pointer, old unsafeSlice, num int) unsafeSlice diff --git a/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go110.go b/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go110.go deleted file mode 100644 index 805303172..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go110.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.10 -// +build !go1.10 - -package codec - -import "reflect" - -func makeMapReflect(t reflect.Type, size int) reflect.Value { - return reflect.MakeMap(t) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_makemap_not_unsafe_gte_go110.go b/vendor/github.com/ugorji/go/codec/goversion_makemap_not_unsafe_gte_go110.go deleted file mode 100644 index 46f787db3..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_makemap_not_unsafe_gte_go110.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.10 && (safe || codec.safe || appengine) -// +build go1.10 -// +build safe codec.safe appengine - -package codec - -import "reflect" - -func makeMapReflect(t reflect.Type, size int) reflect.Value { - return reflect.MakeMapWithSize(t, size) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_makemap_unsafe_gte_go110.go b/vendor/github.com/ugorji/go/codec/goversion_makemap_unsafe_gte_go110.go deleted file mode 100644 index 03c069f0f..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_makemap_unsafe_gte_go110.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.10 && !safe && !codec.safe && !appengine -// +build go1.10,!safe,!codec.safe,!appengine - -package codec - -import ( - "reflect" - "unsafe" -) - -func makeMapReflect(typ reflect.Type, size int) (rv reflect.Value) { - t := (*unsafeIntf)(unsafe.Pointer(&typ)).ptr - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - urv.typ = t - urv.flag = uintptr(reflect.Map) - urv.ptr = makemap(t, size, nil) - return -} - -//go:linkname makemap runtime.makemap -//go:noescape -func makemap(typ unsafe.Pointer, size int, h unsafe.Pointer) unsafe.Pointer diff --git a/vendor/github.com/ugorji/go/codec/goversion_maprange_gte_go112.go b/vendor/github.com/ugorji/go/codec/goversion_maprange_gte_go112.go deleted file mode 100644 index 16c8921ba..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_maprange_gte_go112.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.12 && (safe || codec.safe || appengine) -// +build go1.12 -// +build safe codec.safe appengine - -package codec - -import "reflect" - -type mapIter struct { - t *reflect.MapIter - m reflect.Value - values bool -} - -func (t *mapIter) Next() (r bool) { - return t.t.Next() -} - -func (t *mapIter) Key() reflect.Value { - return t.t.Key() -} - -func (t *mapIter) Value() (r reflect.Value) { - if t.values { - return t.t.Value() - } - return -} - -func (t *mapIter) Done() {} - -func mapRange(t *mapIter, m, k, v reflect.Value, values bool) { - *t = mapIter{ - m: m, - t: m.MapRange(), - values: values, - } -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_maprange_lt_go112.go b/vendor/github.com/ugorji/go/codec/goversion_maprange_lt_go112.go deleted file mode 100644 index 85c8ea72f..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_maprange_lt_go112.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.7 && !go1.12 && (safe || codec.safe || appengine) -// +build go1.7 -// +build !go1.12 -// +build safe codec.safe appengine - -package codec - -import "reflect" - -type mapIter struct { - m reflect.Value - keys []reflect.Value - j int - values bool -} - -func (t *mapIter) Next() (r bool) { - t.j++ - return t.j < len(t.keys) -} - -func (t *mapIter) Key() reflect.Value { - return t.keys[t.j] -} - -func (t *mapIter) Value() (r reflect.Value) { - if t.values { - return t.m.MapIndex(t.keys[t.j]) - } - return -} - -func (t *mapIter) Done() {} - -func mapRange(t *mapIter, m, k, v reflect.Value, values bool) { - *t = mapIter{ - m: m, - keys: m.MapKeys(), - values: values, - j: -1, - } -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_noswissmap_unsafe.go b/vendor/github.com/ugorji/go/codec/goversion_noswissmap_unsafe.go new file mode 100644 index 000000000..ca61f6f08 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/goversion_noswissmap_unsafe.go @@ -0,0 +1,16 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build !safe && !codec.safe && !appengine && !go1.24 + +package codec + +import "unsafe" + +// retrofited from hIter struct + +type unsafeMapIterPadding struct { + _ [6]unsafe.Pointer // padding: *maptype, *hmap, buckets, *bmap, overflow, oldoverflow, + _ [4]uintptr // padding: uintptr, uint8, bool fields + _ uintptr // padding: wasted (try to fill cache-line at multiple of 4) +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_swissmap_unsafe.go b/vendor/github.com/ugorji/go/codec/goversion_swissmap_unsafe.go new file mode 100644 index 000000000..5f062e87c --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/goversion_swissmap_unsafe.go @@ -0,0 +1,15 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build !safe && !codec.safe && !appengine && go1.24 + +package codec + +import "unsafe" + +// retrofited from linknameIter struct (compatibility layer for swissmaps) + +type unsafeMapIterPadding struct { + _ [2]unsafe.Pointer // padding: *abi.SwissMapType, *maps.Iter + _ uintptr // padding: wasted (try to fill cache-line at multiple of 4) +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_gte_go110.go b/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_gte_go110.go deleted file mode 100644 index c894a30c1..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_gte_go110.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.10 -// +build go1.10 - -package codec - -const allowSetUnexportedEmbeddedPtr = false diff --git a/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_lt_go110.go b/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_lt_go110.go deleted file mode 100644 index 1476eac01..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_lt_go110.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.10 -// +build !go1.10 - -package codec - -const allowSetUnexportedEmbeddedPtr = true diff --git a/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go b/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go deleted file mode 100644 index c093eebd2..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.4 -// +build !go1.4 - -package codec - -import "errors" - -// This codec package will only work for go1.4 and above. -// This is for the following reasons: -// - go 1.4 was released in 2014 -// - go runtime is written fully in go -// - interface only holds pointers -// - reflect.Value is stabilized as 3 words - -var errCodecSupportedOnlyFromGo14 = errors.New("codec: go 1.3 and below are not supported") - -func init() { - panic(errCodecSupportedOnlyFromGo14) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go b/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go deleted file mode 100644 index e1dfce4a7..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.5 && !go1.6 -// +build go1.5,!go1.6 - -package codec - -import "os" - -var genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") == "1" diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go b/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go deleted file mode 100644 index 5cb4564d2..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.6 && !go1.7 -// +build go1.6,!go1.7 - -package codec - -import "os" - -var genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") != "0" diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go b/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go deleted file mode 100644 index 82ef3ef88..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build go1.7 -// +build go1.7 - -package codec - -const genCheckVendor = true diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go b/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go deleted file mode 100644 index 10274048a..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.5 -// +build !go1.5 - -package codec - -var genCheckVendor = false diff --git a/vendor/github.com/ugorji/go/codec/helper.go b/vendor/github.com/ugorji/go/codec/helper.go index ecd87ba53..e737ef2b9 100644 --- a/vendor/github.com/ugorji/go/codec/helper.go +++ b/vendor/github.com/ugorji/go/codec/helper.go @@ -190,14 +190,17 @@ package codec // These are the TransientAddrK and TransientAddr2K methods of decPerType. import ( + "bytes" "encoding" "encoding/binary" + "encoding/hex" "errors" "fmt" "io" "math" "reflect" "runtime" + "runtime/debug" "sort" "strconv" "strings" @@ -207,18 +210,25 @@ import ( "unicode/utf8" ) -// if debugging is true, then -// - within Encode/Decode, do not recover from panic's -// - etc -// -// Note: Negative tests that check for errors will fail, so only use this -// when debugging, and run only one test at a time preferably. -// -// Note: RPC tests depend on getting the error from an Encode/Decode call. -// Consequently, they will always fail if debugging = true. -const debugging = false - const ( + // if debugging is true, then + // - within Encode/Decode, do not recover from panic's + // - etc + // + // Note: Negative tests that check for errors will fail, so only use this + // when debugging, and run only one test at a time preferably. + // + // Note: RPC tests depend on getting the error from an Encode/Decode call. + // Consequently, they will always fail if debugging = true. + // + // It is generally set to false + debugging = false + + // if debugLogging is false, debugf calls will be a No-op. + // + // It is generally set to true + debugLogging = true + // containerLenUnknown is length returned from Read(Map|Array)Len // when a format doesn't know apiori. // For example, json doesn't pre-determine the length of a container (sequence/map). @@ -240,9 +250,6 @@ const ( // This constant flag will enable or disable it. supportMarshalInterfaces = true - // bytesFreeListNoCache is used for debugging, when we want to skip using a cache of []byte. - bytesFreeListNoCache = false - // size of the cacheline: defaulting to value for archs: amd64, arm64, 386 // should use "runtime/internal/sys".CacheLineSize, but that is not exposed. cacheLineSize = 64 @@ -250,11 +257,38 @@ const ( wordSizeBits = 32 << (^uint(0) >> 63) // strconv.IntSize wordSize = wordSizeBits / 8 + // byteBufSize is the default size of []byte used + // possibly for bufioWriter, etc + byteBufSize = 1 << 10 // 4:16, 6:64, 8:256, 10:1024 + // MARKER: determines whether to skip calling fastpath(En|De)codeTypeSwitch. // Calling the fastpath switch in encode() or decode() could be redundant, // as we still have to introspect it again within fnLoad // to determine the function to use for values of that type. skipFastpathTypeSwitchInDirectCall = false + + // maxArrayLen is the size of uint, which determines + // the maximum length of any array. + maxArrayLen = 1<<((32<<(^uint(0)>>63))-1) - 1 + + // ---- below this line, useXXX consts should be true + + usePoolForSFIs = true + useArenaForSFIs = true + + usePoolForTypeInfoLoad = true + + usePoolForSideEncode = true + + usePoolForSideDecode = true + + useBytesFreeList = true + + useSfiRvFreeList = true + + // ---- below this line, useXXX consts should be false + + useBytesFreeListPutGetSeparateCalls = false ) const cpu32Bit = ^uint(0)>>32 == 0 @@ -267,16 +301,6 @@ const ( rkindChan = rkind(reflect.Chan) ) -type mapKeyFastKind uint8 - -const ( - mapKeyFastKind32 = iota + 1 - mapKeyFastKind32ptr - mapKeyFastKind64 - mapKeyFastKind64ptr - mapKeyFastKindStr -) - var ( // use a global mutex to ensure each Handle is initialized. // We do this, so we don't have to store the basicHandle mutex @@ -289,7 +313,10 @@ var ( digitCharBitset bitset256 numCharBitset bitset256 whitespaceCharBitset bitset256 - asciiAlphaNumBitset bitset256 + // asciiAlphaNumBitset bitset256 + + jsonCharHtmlSafeBitset bitset256 + jsonCharSafeBitset bitset256 // numCharWithExpBitset64 bitset64 // numCharNoExpBitset64 bitset64 @@ -313,8 +340,6 @@ var ( // scalarBitset sets bit for all kinds which are scalars/primitives and thus immutable scalarBitset bitset32 - mapKeyFastKindVals [32]mapKeyFastKind - // codecgen is set to true by codecgen, so that tests, etc can use this information as needed. codecgen bool @@ -322,6 +347,21 @@ var ( zeroByteSlice = oneByteArr[:0:0] eofReader devNullReader + + // string containing all values of a uint8 in sequence. + // We maintain a [256]byte slice, for efficiently making strings with one byte. + // str256 string + + // handleNewFns []handleNewFn + + basicErrDecorator errDecoratorDef + + // sentinel value passed to panicValToErr, signifying to call recover yourself + callRecoverSentinel = new(byte) + + // debugstackOnce is used to put a single debugStack at a certain point (during debugging). + // To use, just call debugstackOnce() wherever you need to see a stack only once. + debugstackOnce = sync.OnceFunc(debug.PrintStack) ) var ( @@ -340,41 +380,13 @@ var ( errNoFormatHandle = errors.New("no handle (cannot identify format)") ) -var pool4tiload = sync.Pool{ +var poolForTypeInfoLoad = sync.Pool{ New: func() interface{} { - return &typeInfoLoad{ - etypes: make([]uintptr, 0, 4), - sfis: make([]structFieldInfo, 0, 4), - sfiNames: make(map[string]uint16, 4), - } + return newTypeInfoLoad() }, } func init() { - xx := func(f mapKeyFastKind, k ...reflect.Kind) { - for _, v := range k { - mapKeyFastKindVals[byte(v)&31] = f // 'v % 32' equal to 'v & 31' - } - } - - var f mapKeyFastKind - - f = mapKeyFastKind64 - if wordSizeBits == 32 { - f = mapKeyFastKind32 - } - xx(f, reflect.Int, reflect.Uint, reflect.Uintptr) - - f = mapKeyFastKind64ptr - if wordSizeBits == 32 { - f = mapKeyFastKind32ptr - } - xx(f, reflect.Ptr) - - xx(mapKeyFastKindStr, reflect.String) - xx(mapKeyFastKind32, reflect.Uint32, reflect.Int32, reflect.Float32) - xx(mapKeyFastKind64, reflect.Uint64, reflect.Int64, reflect.Float64) - numBoolBitset. set(byte(reflect.Bool)). set(byte(reflect.Int)). @@ -425,9 +437,9 @@ func init() { // set(byte(reflect.String)) for i := byte(0); i <= utf8.RuneSelf; i++ { - if (i >= '0' && i <= '9') || (i >= 'a' && i <= 'z') || (i >= 'A' && i <= 'Z') { - asciiAlphaNumBitset.set(i) - } + // if (i >= '0' && i <= '9') || (i >= 'a' && i <= 'z') || (i >= 'A' && i <= 'Z') || i == '_' { + // asciiAlphaNumBitset.set(i) + // } switch i { case ' ', '\t', '\r', '\n': whitespaceCharBitset.set(i) @@ -440,16 +452,74 @@ func init() { numCharBitset.set(i) } } + + // populate the safe values as true: note: ASCII control characters are (0-31) + // jsonCharSafeBitset: all true except (0-31) " \ + // jsonCharHtmlSafeBitset: all true except (0-31) " \ < > & + for i := byte(32); i < utf8.RuneSelf; i++ { + switch i { + case '"', '\\': + case '<', '>', '&': + jsonCharSafeBitset.set(i) // = true + default: + jsonCharSafeBitset.set(i) + jsonCharHtmlSafeBitset.set(i) + } + } } -// driverStateManager supports the runtime state of an (enc|dec)Driver. +func searchRtids(s []uintptr, v uintptr) (i uint, ok bool) { + var h uint + var j uint = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 + if s[h] < v { + i = h + 1 + } else { + j = h + } + goto LOOP + } + return i, i < uint(len(s)) && s[i] == v +} + +// circularRefChecker holds interfaces during an encoding (if CheckCircularRef=true) // -// During a side(En|De)code call, we can capture the state, reset it, -// and then restore it later to continue the primary encoding/decoding. -type driverStateManager interface { - resetState() - captureState() interface{} - restoreState(state interface{}) +// We considered using a []uintptr (slice of pointer addresses) retrievable via rv.UnsafeAddr. +// However, it is possible for the same pointer to point to 2 different types e.g. +// +// type T struct { tHelper } +// Here, for var v T; &v and &v.tHelper are the same pointer. +// +// Consequently, we need a tuple of type and pointer, which interface{} natively provides. +// +// Note: the following references, if seen, can lead to circular references +// - Pointer to struct/slice/array/map (any container) +// - map (reference, where a value in a kv pair could be the map itself) +// - addr of slice/array element +// - add of struct field +type circularRefChecker []interface{} // []uintptr + +func (ci *circularRefChecker) push(v interface{}) { + for _, vv := range *ci { + if eq4i(v, vv) { // error if sptr already seen + halt.errorf("circular reference found: %p, %T", v, v) + } + } + *ci = append(*ci, v) +} + +func (_ *circularRefChecker) canPushElemKind(elemKind reflect.Kind) bool { + switch elemKind { + case reflect.Struct, reflect.Slice, reflect.Array, reflect.Map: + return true + } + return false +} + +func (ci *circularRefChecker) pop(num int) { + *ci = (*ci)[:len(*ci)-num] } type bdAndBdread struct { @@ -457,10 +527,7 @@ type bdAndBdread struct { bd byte } -func (x bdAndBdread) captureState() interface{} { return x } -func (x *bdAndBdread) resetState() { x.bd, x.bdRead = 0, false } -func (x *bdAndBdread) reset() { x.resetState() } -func (x *bdAndBdread) restoreState(v interface{}) { *x = v.(bdAndBdread) } +func (x *bdAndBdread) reset() { x.bd, x.bdRead = 0, false } type clsErr struct { err error // error on closing @@ -570,6 +637,7 @@ type fauxUnion struct { b bool // state + a dBytesAttachState v valueType } @@ -580,12 +648,21 @@ type typeInfoLoad struct { sfiNames map[string]uint16 } +func newTypeInfoLoad() *typeInfoLoad { + return &typeInfoLoad{ + etypes: make([]uintptr, 0, 4), + sfis: make([]structFieldInfo, 0, 4), + sfiNames: make(map[string]uint16, 4), + } +} + func (x *typeInfoLoad) reset() { x.etypes = x.etypes[:0] x.sfis = x.sfis[:0] - for k := range x.sfiNames { // optimized to zero the map - delete(x.sfiNames, k) - } + clear(x.sfiNames) + // for k := range x.sfiNames { // optimized to zero the map + // delete(x.sfiNames, k) + // } } // mirror json.Marshaler and json.Unmarshaler here, @@ -606,6 +683,15 @@ type isCodecEmptyer interface { IsCodecEmpty() bool } +type outOfBoundsError struct { + capacity uint + requested uint +} + +func (x *outOfBoundsError) Error() string { + return sprintf("out of bounds with capacity = %d, requested %d", x.capacity, x.requested) +} + type codecError struct { err error name string @@ -638,6 +724,8 @@ func wrapCodecErr(in error, name string, numbytesread int, encode bool) (out err var ( bigen bigenHelper + // bigenB bigenWriter[bytesEncAppenderM] + // bigenIO bigenWriter[bufioEncWriterM] bigenstd = binary.BigEndian @@ -671,11 +759,10 @@ var ( jsonMarshalerTyp = reflect.TypeOf((*jsonMarshaler)(nil)).Elem() jsonUnmarshalerTyp = reflect.TypeOf((*jsonUnmarshaler)(nil)).Elem() - selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem() - missingFielderTyp = reflect.TypeOf((*MissingFielder)(nil)).Elem() - iszeroTyp = reflect.TypeOf((*isZeroer)(nil)).Elem() - isCodecEmptyerTyp = reflect.TypeOf((*isCodecEmptyer)(nil)).Elem() - isSelferViaCodecgenerTyp = reflect.TypeOf((*isSelferViaCodecgener)(nil)).Elem() + selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem() + missingFielderTyp = reflect.TypeOf((*MissingFielder)(nil)).Elem() + iszeroTyp = reflect.TypeOf((*isZeroer)(nil)).Elem() + isCodecEmptyerTyp = reflect.TypeOf((*isCodecEmptyer)(nil)).Elem() uint8TypId = rt2id(uint8Typ) uint8SliceTypId = rt2id(uint8SliceTyp) @@ -732,10 +819,6 @@ type Selfer interface { CodecDecodeSelf(*Decoder) } -type isSelferViaCodecgener interface { - codecSelferViaCodecgen() -} - // MissingFielder defines the interface allowing structs to internally decode or encode // values which do not map to struct fields. // @@ -782,6 +865,18 @@ type MapBySlice interface { MapBySlice() } +// const ( +// rtidfn_Enc_IO = iota +// rtidfn_Enc_IO_NoExt +// rtidfn_Dec_IO +// rtidfn_Dec_IO_NoExt + +// rtidfn_Enc_Bytes +// rtidfn_Enc_Bytes_NoExt +// rtidfn_Dec_Bytes +// rtidfn_Dec_Bytes_NoExt +// ) + // basicHandleRuntimeState holds onto all BasicHandle runtime and cached config information. // // Storing this outside BasicHandle allows us create shallow copies of a Handle, @@ -790,11 +885,6 @@ type MapBySlice interface { // temporarily when running tests in parallel, without running the risk that a test executing // in parallel with other tests does not see a transient modified values not meant for it. type basicHandleRuntimeState struct { - // these are used during runtime. - // At init time, they should have nothing in them. - rtidFns atomicRtidFnSlice - rtidFnsNoExt atomicRtidFnSlice - // Note: basicHandleRuntimeState is not comparable, due to these slices here (extHandle, intf2impls). // If *[]T is used instead, this becomes comparable, at the cost of extra indirection. // Thses slices are used all the time, so keep as slices (not pointers). @@ -803,16 +893,32 @@ type basicHandleRuntimeState struct { intf2impls + // these keep track of the []codecRtidFns for this handle. + // We used a non-generic value so we can: + // - keep these within BasicHandle + // - work around recursive limitations of go's generics + rtidFnsEncIO, + rtidFnsEncNoExtIO, + rtidFnsEncBytes, + rtidFnsEncNoExtBytes, + rtidFnsDecIO, + rtidFnsDecNoExtIO, + rtidFnsDecBytes, + rtidFnsDecNoExtBytes atomicRtidFnSlice + + sideEncPool sync.Pool + sideDecPool sync.Pool + mu sync.Mutex jsonHandle bool binaryHandle bool - // timeBuiltin is initialized from TimeNotBuiltin, and used internally. + // timeBuiltin is initialized from TimeNotBuiltin, and used internally by setExt. // once initialized, it cannot be changed, as the function for encoding/decoding time.Time // will have been cached and the TimeNotBuiltin value will not be consulted thereafter. timeBuiltin bool - _ bool // padding + // _ bool // padding } // BasicHandle encapsulates the common options and extension functions. @@ -827,7 +933,7 @@ type BasicHandle struct { // If not configured, the default TypeInfos is used, which uses struct tag keys: codec, json TypeInfos *TypeInfos - *basicHandleRuntimeState + basicHandleRuntimeState // ---- cache line @@ -865,6 +971,7 @@ type BasicHandle struct { // ---- cache line inited uint32 // holds if inited, and also handle flags (binary encoding, json handler, etc) + // name string } // initHandle does a one-time initialization of the handle. @@ -886,17 +993,48 @@ func initHandle(hh Handle) { // is not sufficient, since a race condition can occur within init(Handle) function. // init is made noinline, so that this function can be inlined by its caller. if atomic.LoadUint32(&x.inited) == 0 { - x.initHandle(hh) + initHandle2(x, hh) + } +} + +// initHandle2 should be called only from codec.initHandle global function. +// make it uninlineable, as it is called at most once for each handle. +// +//go:noinline +func initHandle2(x *BasicHandle, hh Handle) { + handleInitMu.Lock() + defer handleInitMu.Unlock() // use defer, as halt may panic below + if x.inited != 0 { + return + } + x.jsonHandle = hh.isJson() + x.binaryHandle = hh.isBinary() + x.basicInit() + + x.sideEncPool.New = func() any { + return NewEncoderBytes(nil, hh).encoderI + } + x.sideDecPool.New = func() any { + return NewDecoderBytes(nil, hh).decoderI } + + // hh.init() + + atomic.StoreUint32(&x.inited, 1) } func (x *BasicHandle) basicInit() { - x.rtidFns.store(nil) - x.rtidFnsNoExt.store(nil) + // ensure MapType and SliceType are of correct type + if x.MapType != nil && x.MapType.Kind() != reflect.Map { + halt.onerror(errMapTypeNotMapKind) + } + if x.SliceType != nil && x.SliceType.Kind() != reflect.Slice { + halt.onerror(errSliceTypeNotSliceKind) + } x.timeBuiltin = !x.TimeNotBuiltin } -func (x *BasicHandle) init() {} +// func (x *BasicHandle) init() {} func (x *BasicHandle) isInited() bool { return atomic.LoadUint32(&x.inited) != 0 @@ -907,20 +1045,6 @@ func (x *BasicHandle) clearInited() { atomic.StoreUint32(&x.inited, 0) } -// TimeBuiltin returns whether time.Time OOTB support is used, -// based on the initial configuration of TimeNotBuiltin -func (x *basicHandleRuntimeState) TimeBuiltin() bool { - return x.timeBuiltin -} - -func (x *basicHandleRuntimeState) isJs() bool { - return x.jsonHandle -} - -func (x *basicHandleRuntimeState) isBe() bool { - return x.binaryHandle -} - func (x *basicHandleRuntimeState) setExt(rt reflect.Type, tag uint64, ext Ext) (err error) { rk := rt.Kind() for rk == reflect.Ptr { @@ -957,32 +1081,6 @@ func (x *basicHandleRuntimeState) setExt(rt reflect.Type, tag uint64, ext Ext) ( return } -// initHandle should be called only from codec.initHandle global function. -// make it uninlineable, as it is called at most once for each handle. -// -//go:noinline -func (x *BasicHandle) initHandle(hh Handle) { - handleInitMu.Lock() - defer handleInitMu.Unlock() // use defer, as halt may panic below - if x.inited == 0 { - if x.basicHandleRuntimeState == nil { - x.basicHandleRuntimeState = new(basicHandleRuntimeState) - } - x.jsonHandle = hh.isJson() - x.binaryHandle = hh.isBinary() - // ensure MapType and SliceType are of correct type - if x.MapType != nil && x.MapType.Kind() != reflect.Map { - halt.onerror(errMapTypeNotMapKind) - } - if x.SliceType != nil && x.SliceType.Kind() != reflect.Slice { - halt.onerror(errSliceTypeNotSliceKind) - } - x.basicInit() - hh.init() - atomic.StoreUint32(&x.inited, 1) - } -} - func (x *BasicHandle) getBasicHandle() *BasicHandle { return x } @@ -994,305 +1092,13 @@ func (x *BasicHandle) typeInfos() *TypeInfos { return defTypeInfos } +// getTypeInfo expects a non-pointer func (x *BasicHandle) getTypeInfo(rtid uintptr, rt reflect.Type) (pti *typeInfo) { return x.typeInfos().get(rtid, rt) } -func findRtidFn(s []codecRtidFn, rtid uintptr) (i uint, fn *codecFn) { - // binary search. adapted from sort/search.go. - // Note: we use goto (instead of for loop) so this can be inlined. - - // h, i, j := 0, 0, len(s) - var h uint // var h, i uint - var j = uint(len(s)) -LOOP: - if i < j { - h = (i + j) >> 1 // avoid overflow when computing h // h = i + (j-i)/2 - if s[h].rtid < rtid { - i = h + 1 - } else { - j = h - } - goto LOOP - } - if i < uint(len(s)) && s[i].rtid == rtid { - fn = s[i].fn - } - return -} - -func (x *BasicHandle) fn(rt reflect.Type) (fn *codecFn) { - return x.fnVia(rt, x.typeInfos(), &x.rtidFns, x.CheckCircularRef, true) -} - -func (x *BasicHandle) fnNoExt(rt reflect.Type) (fn *codecFn) { - return x.fnVia(rt, x.typeInfos(), &x.rtidFnsNoExt, x.CheckCircularRef, false) -} - -func (x *basicHandleRuntimeState) fnVia(rt reflect.Type, tinfos *TypeInfos, fs *atomicRtidFnSlice, checkCircularRef, checkExt bool) (fn *codecFn) { - rtid := rt2id(rt) - sp := fs.load() - if sp != nil { - if _, fn = findRtidFn(sp, rtid); fn != nil { - return - } - } - - fn = x.fnLoad(rt, rtid, tinfos, checkCircularRef, checkExt) - x.mu.Lock() - sp = fs.load() - // since this is an atomic load/store, we MUST use a different array each time, - // else we have a data race when a store is happening simultaneously with a findRtidFn call. - if sp == nil { - sp = []codecRtidFn{{rtid, fn}} - fs.store(sp) - } else { - idx, fn2 := findRtidFn(sp, rtid) - if fn2 == nil { - sp2 := make([]codecRtidFn, len(sp)+1) - copy(sp2[idx+1:], sp[idx:]) - copy(sp2, sp[:idx]) - sp2[idx] = codecRtidFn{rtid, fn} - fs.store(sp2) - } - } - x.mu.Unlock() - return -} - -func fnloadFastpathUnderlying(ti *typeInfo) (f *fastpathE, u reflect.Type) { - var rtid uintptr - var idx int - rtid = rt2id(ti.fastpathUnderlying) - idx = fastpathAvIndex(rtid) - if idx == -1 { - return - } - f = &fastpathAv[idx] - if uint8(reflect.Array) == ti.kind { - u = reflectArrayOf(ti.rt.Len(), ti.elem) - } else { - u = f.rt - } - return -} - -func (x *basicHandleRuntimeState) fnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, checkCircularRef, checkExt bool) (fn *codecFn) { - fn = new(codecFn) - fi := &(fn.i) - ti := tinfos.get(rtid, rt) - fi.ti = ti - rk := reflect.Kind(ti.kind) - - // anything can be an extension except the built-in ones: time, raw and rawext. - // ensure we check for these types, then if extension, before checking if - // it implementes one of the pre-declared interfaces. - - fi.addrDf = true - // fi.addrEf = true - - if rtid == timeTypId && x.timeBuiltin { - fn.fe = (*Encoder).kTime - fn.fd = (*Decoder).kTime - } else if rtid == rawTypId { - fn.fe = (*Encoder).raw - fn.fd = (*Decoder).raw - } else if rtid == rawExtTypId { - fn.fe = (*Encoder).rawExt - fn.fd = (*Decoder).rawExt - fi.addrD = true - fi.addrE = true - } else if xfFn := x.getExt(rtid, checkExt); xfFn != nil { - fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext - fn.fe = (*Encoder).ext - fn.fd = (*Decoder).ext - fi.addrD = true - if rk == reflect.Struct || rk == reflect.Array { - fi.addrE = true - } - } else if (ti.flagSelfer || ti.flagSelferPtr) && - !(checkCircularRef && ti.flagSelferViaCodecgen && ti.kind == byte(reflect.Struct)) { - // do not use Selfer generated by codecgen if it is a struct and CheckCircularRef=true - fn.fe = (*Encoder).selferMarshal - fn.fd = (*Decoder).selferUnmarshal - fi.addrD = ti.flagSelferPtr - fi.addrE = ti.flagSelferPtr - } else if supportMarshalInterfaces && x.isBe() && - (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && - (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { - fn.fe = (*Encoder).binaryMarshal - fn.fd = (*Decoder).binaryUnmarshal - fi.addrD = ti.flagBinaryUnmarshalerPtr - fi.addrE = ti.flagBinaryMarshalerPtr - } else if supportMarshalInterfaces && !x.isBe() && x.isJs() && - (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && - (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { - //If JSON, we should check JSONMarshal before textMarshal - fn.fe = (*Encoder).jsonMarshal - fn.fd = (*Decoder).jsonUnmarshal - fi.addrD = ti.flagJsonUnmarshalerPtr - fi.addrE = ti.flagJsonMarshalerPtr - } else if supportMarshalInterfaces && !x.isBe() && - (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && - (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { - fn.fe = (*Encoder).textMarshal - fn.fd = (*Decoder).textUnmarshal - fi.addrD = ti.flagTextUnmarshalerPtr - fi.addrE = ti.flagTextMarshalerPtr - } else { - if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { - // by default (without using unsafe), - // if an array is not addressable, converting from an array to a slice - // requires an allocation (see helper_not_unsafe.go: func rvGetSlice4Array). - // - // (Non-addressable arrays mostly occur as keys/values from a map). - // - // However, fastpath functions are mostly for slices of numbers or strings, - // which are small by definition and thus allocation should be fast/cheap in time. - // - // Consequently, the value of doing this quick allocation to elide the overhead cost of - // non-optimized (not-unsafe) reflection is a fair price. - var rtid2 uintptr - if !ti.flagHasPkgPath { // un-named type (slice or mpa or array) - rtid2 = rtid - if rk == reflect.Array { - rtid2 = rt2id(ti.key) // ti.key for arrays = reflect.SliceOf(ti.elem) - } - if idx := fastpathAvIndex(rtid2); idx != -1 { - fn.fe = fastpathAv[idx].encfn - fn.fd = fastpathAv[idx].decfn - fi.addrD = true - fi.addrDf = false - if rk == reflect.Array { - fi.addrD = false // decode directly into array value (slice made from it) - } - } - } else { // named type (with underlying type of map or slice or array) - // try to use mapping for underlying type - xfe, xrt := fnloadFastpathUnderlying(ti) - if xfe != nil { - xfnf := xfe.encfn - xfnf2 := xfe.decfn - if rk == reflect.Array { - fi.addrD = false // decode directly into array value (slice made from it) - fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) { - xfnf2(d, xf, rvConvert(xrv, xrt)) - } - } else { - fi.addrD = true - fi.addrDf = false // meaning it can be an address(ptr) or a value - xptr2rt := reflect.PtrTo(xrt) - fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) { - if xrv.Kind() == reflect.Ptr { - xfnf2(d, xf, rvConvert(xrv, xptr2rt)) - } else { - xfnf2(d, xf, rvConvert(xrv, xrt)) - } - } - } - fn.fe = func(e *Encoder, xf *codecFnInfo, xrv reflect.Value) { - xfnf(e, xf, rvConvert(xrv, xrt)) - } - } - } - } - if fn.fe == nil && fn.fd == nil { - switch rk { - case reflect.Bool: - fn.fe = (*Encoder).kBool - fn.fd = (*Decoder).kBool - case reflect.String: - // Do not use different functions based on StringToRaw option, as that will statically - // set the function for a string type, and if the Handle is modified thereafter, - // behaviour is non-deterministic - // i.e. DO NOT DO: - // if x.StringToRaw { - // fn.fe = (*Encoder).kStringToRaw - // } else { - // fn.fe = (*Encoder).kStringEnc - // } - - fn.fe = (*Encoder).kString - fn.fd = (*Decoder).kString - case reflect.Int: - fn.fd = (*Decoder).kInt - fn.fe = (*Encoder).kInt - case reflect.Int8: - fn.fe = (*Encoder).kInt8 - fn.fd = (*Decoder).kInt8 - case reflect.Int16: - fn.fe = (*Encoder).kInt16 - fn.fd = (*Decoder).kInt16 - case reflect.Int32: - fn.fe = (*Encoder).kInt32 - fn.fd = (*Decoder).kInt32 - case reflect.Int64: - fn.fe = (*Encoder).kInt64 - fn.fd = (*Decoder).kInt64 - case reflect.Uint: - fn.fd = (*Decoder).kUint - fn.fe = (*Encoder).kUint - case reflect.Uint8: - fn.fe = (*Encoder).kUint8 - fn.fd = (*Decoder).kUint8 - case reflect.Uint16: - fn.fe = (*Encoder).kUint16 - fn.fd = (*Decoder).kUint16 - case reflect.Uint32: - fn.fe = (*Encoder).kUint32 - fn.fd = (*Decoder).kUint32 - case reflect.Uint64: - fn.fe = (*Encoder).kUint64 - fn.fd = (*Decoder).kUint64 - case reflect.Uintptr: - fn.fe = (*Encoder).kUintptr - fn.fd = (*Decoder).kUintptr - case reflect.Float32: - fn.fe = (*Encoder).kFloat32 - fn.fd = (*Decoder).kFloat32 - case reflect.Float64: - fn.fe = (*Encoder).kFloat64 - fn.fd = (*Decoder).kFloat64 - case reflect.Complex64: - fn.fe = (*Encoder).kComplex64 - fn.fd = (*Decoder).kComplex64 - case reflect.Complex128: - fn.fe = (*Encoder).kComplex128 - fn.fd = (*Decoder).kComplex128 - case reflect.Chan: - fn.fe = (*Encoder).kChan - fn.fd = (*Decoder).kChan - case reflect.Slice: - fn.fe = (*Encoder).kSlice - fn.fd = (*Decoder).kSlice - case reflect.Array: - fi.addrD = false // decode directly into array value (slice made from it) - fn.fe = (*Encoder).kArray - fn.fd = (*Decoder).kArray - case reflect.Struct: - if ti.anyOmitEmpty || - ti.flagMissingFielder || - ti.flagMissingFielderPtr { - fn.fe = (*Encoder).kStruct - } else { - fn.fe = (*Encoder).kStructNoOmitempty - } - fn.fd = (*Decoder).kStruct - case reflect.Map: - fn.fe = (*Encoder).kMap - fn.fd = (*Decoder).kMap - case reflect.Interface: - // encode: reflect.Interface are handled already by preEncodeValue - fn.fd = (*Decoder).kInterface - fn.fe = (*Encoder).kErr - default: - // reflect.Ptr and reflect.Interface are handled already by preEncodeValue - fn.fe = (*Encoder).kErr - fn.fd = (*Decoder).kErr - } - } - } - return +func (x *BasicHandle) getTypeInfo4RT(rt reflect.Type) (pti *typeInfo) { + return x.typeInfos().get(rt2id(rt), rt) } // Handle defines a specific encoding format. It also stores any runtime state @@ -1313,14 +1119,18 @@ func (x *basicHandleRuntimeState) fnLoad(rt reflect.Type, rtid uintptr, tinfos * type Handle interface { Name() string getBasicHandle() *BasicHandle - newEncDriver() encDriver - newDecDriver() decDriver isBinary() bool isJson() bool // json is special for now, so track it // desc describes the current byte descriptor, or returns "unknown[XXX]" if not understood. desc(bd byte) string // init initializes the handle based on handle-specific info (beyond what is in BasicHandle) - init() + // init() + // clone() Handle + newEncoderBytes(out *[]byte) encoderI + newEncoder(w io.Writer) encoderI + + newDecoderBytes(in []byte) decoderI + newDecoder(r io.Reader) decoderI } // Raw represents raw formatted bytes. @@ -1330,11 +1140,13 @@ type Handle interface { type Raw []byte // RawExt represents raw unprocessed extension data. +// // Some codecs will decode extension data as a *RawExt // if there is no registered extension for the tag. // -// Only one of Data or Value is nil. -// If Data is nil, then the content of the RawExt is in the Value. +// On encode, encode the Data. If nil, then try to encode the Value. +// +// On decode: store tag, then store bytes and/or decode into Value. type RawExt struct { Tag uint64 // Data is the []byte which represents the raw ext. If nil, ext is exposed in Value. @@ -1454,12 +1266,10 @@ type extFailWrapper struct { type binaryEncodingType struct{} func (binaryEncodingType) isBinary() bool { return true } -func (binaryEncodingType) isJson() bool { return false } type textEncodingType struct{} func (textEncodingType) isBinary() bool { return false } -func (textEncodingType) isJson() bool { return false } type notJsonType struct{} @@ -1487,11 +1297,8 @@ func (noBuiltInTypes) DecodeBuiltin(rt uintptr, v interface{}) {} // retrofitted from stdlib: encoding/binary/BigEndian (ByteOrder) type bigenHelper struct{} -func (z bigenHelper) PutUint16(v uint16) (b [2]byte) { - return [...]byte{ - byte(v >> 8), - byte(v), - } +func (z bigenHelper) PutUint16(v uint16) (b1, b2 byte) { + return byte(v >> 8), byte(v) } func (z bigenHelper) PutUint32(v uint32) (b [4]byte) { @@ -1539,23 +1346,6 @@ func (z bigenHelper) Uint64(b [8]byte) (v uint64) { uint64(b[0])<<56 } -func (z bigenHelper) writeUint16(w *encWr, v uint16) { - x := z.PutUint16(v) - w.writen2(x[0], x[1]) -} - -func (z bigenHelper) writeUint32(w *encWr, v uint32) { - // w.writeb((z.PutUint32(v))[:]) - // x := z.PutUint32(v) - // w.writeb(x[:]) - // w.writen4(x[0], x[1], x[2], x[3]) - w.writen4(z.PutUint32(v)) -} - -func (z bigenHelper) writeUint64(w *encWr, v uint64) { - w.writen8(z.PutUint64(v)) -} - type extTypeTagFn struct { rtid uintptr rtidptr uintptr @@ -1584,14 +1374,13 @@ func (x *BasicHandle) AddExt(rt reflect.Type, tag byte, // An error is returned if that is not honored. // To Deregister an ext, call SetExt with nil Ext. // -// Deprecated: Use SetBytesExt or SetInterfaceExt on the Handle instead. +// It will throw an error if called after the Handle has been initialized. +// +// Deprecated: Use SetBytesExt or SetInterfaceExt on the Handle instead (which *may* internally call this) func (x *BasicHandle) SetExt(rt reflect.Type, tag uint64, ext Ext) (err error) { if x.isInited() { return errHandleInited } - if x.basicHandleRuntimeState == nil { - x.basicHandleRuntimeState = new(basicHandleRuntimeState) - } return x.basicHandleRuntimeState.setExt(rt, tag, ext) } @@ -1672,6 +1461,16 @@ func (o intf2impls) intf2impl(rtid uintptr) (rv reflect.Value) { return } +type structFieldInfoNode struct { + offset uint16 + index uint16 + kind uint8 + numderef uint8 + _ uint16 // padding + + typ reflect.Type +} + // structFieldinfopathNode is a node in a tree, which allows us easily // walk the anonymous path. // @@ -1679,19 +1478,7 @@ func (o intf2impls) intf2impl(rtid uintptr) (rv reflect.Value) { // will be nil and this information becomes a value (not needing any indirection). type structFieldInfoPathNode struct { parent *structFieldInfoPathNode - - offset uint16 - index uint16 - kind uint8 - numderef uint8 - - // encNameAsciiAlphaNum and omitEmpty should be in structFieldInfo, - // but are kept here for tighter packaging. - - encNameAsciiAlphaNum bool // the encName only contains ascii alphabet and numbers - omitEmpty bool - - typ reflect.Type + structFieldInfoNode } // depth returns number of valid nodes in the hierachy @@ -1705,46 +1492,105 @@ TOP: return } -// field returns the field of the struct. -func (path *structFieldInfoPathNode) field(v reflect.Value) (rv2 reflect.Value) { - if parent := path.parent; parent != nil { - v = parent.field(v) - for j, k := uint8(0), parent.numderef; j < k; j++ { - if rvIsNil(v) { - return +// MARKER: fully working code - commented out as we inline the code in sfi.field(No)Alloc +// // field returns the field of the struct. +// func (n *structFieldInfoPathNode) field(v reflect.Value, alloc, base bool) (rv reflect.Value) { +// if n.parent != nil { +// v = n.parent.field(v, alloc, true) +// if !v.IsValid() { +// return +// } +// } +// return n.structFieldInfoNode.field(v, alloc, base) +// } + +type structFieldInfo struct { + encName string // encode name + + // encNameHash uintptr + + // fieldName string // currently unused + + encNameEscape4Json bool + omitEmpty bool + + ptrKind bool + + encBuiltin bool // is field supported for encoding as a builtin? + decBuiltin bool // is field addr supported for decoding as a builtin? + + node structFieldInfoNode + parents []structFieldInfoNode + + // path structFieldInfoPathNode + + baseTyp reflect.Type + ptrTyp reflect.Type +} + +// MARKER: fully working code - commented out as we inline the code in sfi.field(No)Alloc +// func (n *structFieldInfo) field(v reflect.Value, alloc, base bool) (rv reflect.Value) { +// for i := range n.parents { +// v = n.parents[i].field(v, alloc, true) +// if !v.IsValid() { +// return +// } +// } +// return n.node.field(v, alloc, base) +// } + +func (n *structFieldInfo) fieldAlloc(v reflect.Value) reflect.Value { + // return n.path.field(v, true, true) + // return n.field(v, true, true) + var j, nd uint8 + for i := range n.parents { + v = n.parents[i].rvField(v) + nd = n.parents[i].numderef + for j = 0; j < nd; j++ { + if rvPtrIsNil(v) { + rvSetDirect(v, reflect.New(v.Type().Elem())) } v = v.Elem() } } - return path.rvField(v) + v = n.node.rvField(v) + nd = n.node.numderef + for j = 0; j < nd; j++ { + if rvPtrIsNil(v) { + rvSetDirect(v, reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + return v } -// fieldAlloc returns the field of the struct. -// It allocates if a nil value was seen while searching. -func (path *structFieldInfoPathNode) fieldAlloc(v reflect.Value) (rv2 reflect.Value) { - if parent := path.parent; parent != nil { - v = parent.fieldAlloc(v) - for j, k := uint8(0), parent.numderef; j < k; j++ { - if rvIsNil(v) { - rvSetDirect(v, reflect.New(v.Type().Elem())) +func (n *structFieldInfo) fieldNoAlloc(v reflect.Value, base bool) (rv reflect.Value) { + // return n.path.field(v, false, base) + // return n.field(v, false, base) + var j, nd uint8 + for i := range n.parents { + v = n.parents[i].rvField(v) + nd = n.parents[i].numderef + for j = 0; j < nd; j++ { + if rvPtrIsNil(v) { + return reflect.Value{} } v = v.Elem() } } - return path.rvField(v) -} - -type structFieldInfo struct { - encName string // encode name - - // encNameHash uintptr - - // fieldName string // currently unused - - // encNameAsciiAlphaNum and omitEmpty should be here, - // but are stored in structFieldInfoPathNode for tighter packaging. - - path structFieldInfoPathNode + v = n.node.rvField(v) + rv = v + nd = n.node.numderef + for j = 0; j < nd; j++ { + if rvPtrIsNil(v) { + return reflect.Value{} + } + v = v.Elem() + } + if base { + rv = v + } + return } func parseStructInfo(stag string) (toArray, omitEmpty bool, keytype valueType) { @@ -1777,22 +1623,168 @@ func parseStructInfo(stag string) (toArray, omitEmpty bool, keytype valueType) { return } -func (si *structFieldInfo) parseTag(stag string) { +func parseStructFieldTag(stag string) (encName string, omitEmpty bool) { if stag == "" { return } for i, s := range strings.Split(stag, ",") { if i == 0 { if s != "" { - si.encName = s + encName = s } - } else { - switch s { - case "omitempty": - si.path.omitEmpty = true + continue + } + if s == "omitempty" { + omitEmpty = true + } + } + return +} + +// ---- + +type uint8To32TrieNode struct { + uint8To32TrieNodeNoKids + kids uint8To32TrieNodeKids +} + +func (x *uint8To32TrieNode) reset(v uint8) { + x.key = v + x.value = 0 + x.valid = false + x.truncKids() +} + +func (x *uint8To32TrieNode) expandKids() (r *uint8To32TrieNode) { + // since we want to reuse the slices, let's not use append as it will + // always overwrite the value. Only append if we're expanding + kids := x.getKids() + if cap(kids) > len(kids) { + kids = kids[:len(kids)+1] + } else { + kids = append(kids, uint8To32TrieNode{}) + } + x.setKids(kids) + r = &kids[len(kids)-1] + return +} + +func (x *uint8To32TrieNode) put(v uint8) (r *uint8To32TrieNode) { + kids := x.getKids() + for i := range kids { + if kids[i].key == v { + return &kids[i] + } + } + + r = x.expandKids() + r.reset(v) + return r +} + +func (x *uint8To32TrieNode) puts(s string, v uint32) (r *uint8To32TrieNode) { + for _, c := range []byte(s) { + x = x.put(c) + } + x.value = v + x.valid = true + return x +} + +func (x *uint8To32TrieNode) gets(s []byte) (v uint32, ok bool) { +TOP: + for _, b := range s { + kids := x.getKids() + for i := range kids { + if kids[i].key == b { + x = &kids[i] + continue TOP } } + return 0, false + } + return x.value, x.valid +} + +func (x *uint8To32TrieNode) deepNumKids() (n int) { + kids := x.getKids() + n = len(kids) + for i := range kids { + n += kids[i].deepNumKids() } + return +} + +// arena just helps all the nodes stay close for better cache-line performance. +// It basically tries to load up all the nodes within a contiguous space of memory. +type uint8To32TrieNodeArena struct { + arena []uint8To32TrieNode + cursor int +} + +func (x *uint8To32TrieNodeArena) init(v *uint8To32TrieNode) (r *uint8To32TrieNode) { + x.arena = make([]uint8To32TrieNode, v.deepNumKids()+1) // incl one for the node, and one buffer + r = &x.arena[0] + x.cursor++ + x.clone(r, v) + return +} + +func (x *uint8To32TrieNodeArena) clone(dst, src *uint8To32TrieNode) { + dst.uint8To32TrieNodeNoKids = src.uint8To32TrieNodeNoKids + // dst.kids = nil + srckids := src.getKids() + c := len(srckids) + if c == 0 { + return + } + dstkids := x.arena[x.cursor:][:c:c] + dst.setKids(dstkids) + x.cursor += c + for i := range srckids { + x.clone(&dstkids[i], &srckids[i]) + } +} + +// ---- + +var pool4SFIs = sync.Pool{ + New: func() interface{} { + return &uint8To32TrieNode{} + }, +} + +func (x *structFieldInfos) finish() { + var src *uint8To32TrieNode + if usePoolForSFIs { + src = pool4SFIs.Get().(*uint8To32TrieNode) + } else { + src = &x.t + } + x.loadSearchTrie(src) + if useArenaForSFIs { + var ar uint8To32TrieNodeArena + x.t = *(ar.init(src)) + } + if usePoolForSFIs { + src.reset(0) + pool4SFIs.Put(src) + } +} + +func (x *structFieldInfos) loadSearchTrie(src *uint8To32TrieNode) { + // load the search trie + for i, v := range x.source() { + src.puts(v.encName, uint32(i)) + } +} + +func (x *structFieldInfos) search(name []byte) (sfi *structFieldInfo) { + n, ok := x.t.gets(name) + if ok { + sfi = x.source()[n] + } + return } type sfiSortedByEncName []*structFieldInfo @@ -1821,7 +1813,7 @@ type typeInfo4Container struct { tielem *typeInfo } -// typeInfo keeps static (non-changing readonly)information +// typeInfo keeps static (non-changing readonly) information // about each (non-ptr) type referenced in the encode/decode sequence. // // During an encode/decode sequence, we work as below: @@ -1842,12 +1834,15 @@ type typeInfo struct { kind uint8 chandir uint8 - anyOmitEmpty bool // true if a struct, and any of the fields are tagged "omitempty" - toArray bool // whether this (struct) type should be encoded as an array - keyType valueType // if struct, how is the field name stored in a stream? default is string - mbs bool // base type (T or *T) is a MapBySlice - - sfi4Name map[string]*structFieldInfo // map. used for finding sfi given a name + // simple=true if a struct, AND + // - none of the fields are tagged "omitempty" + // - no missingFielder + // - keyType is always string + // - noEsc4Json on any fields + simple bool + toArray bool // whether this (struct) type should be encoded as an array + keyType valueType // if struct, how is the field name stored in a stream? default is string + mbs bool // base type (T or *T) is a MapBySlice *typeInfo4Container @@ -1861,8 +1856,7 @@ type typeInfo struct { flagComparable bool flagCanTransient bool - flagMarshalInterface bool // does this have custom (un)marshal implementation? - flagSelferViaCodecgen bool + flagMarshalInterface bool // does this have custom (un)marshal implementation? // custom implementation flags flagIsZeroer bool @@ -1895,132 +1889,127 @@ type typeInfo struct { flagMissingFielder bool flagMissingFielderPtr bool + flagEncBuiltin bool + flagDecBuiltin bool + infoFieldOmitempty bool + // MARKER - may need padding here (like 6 bytes - auto-handled) sfi structFieldInfos } func (ti *typeInfo) siForEncName(name []byte) (si *structFieldInfo) { - return ti.sfi4Name[string(name)] + return ti.sfi.search(name) } func (ti *typeInfo) resolve(x []structFieldInfo, ss map[string]uint16) (n int) { n = len(x) - for i := range x { ui := uint16(i) - xn := x[i].encName + sf := &x[ui] + xn := sf.encName j, ok := ss[xn] - if ok { - i2clear := ui // index to be cleared - if x[i].path.depth() < x[j].path.depth() { // this one is shallower - ss[xn] = ui - i2clear = j - } - if x[i2clear].encName != "" { - x[i2clear].encName = "" - n-- - } - } else { + if !ok { + ss[xn] = ui + continue + } + if ui == j { + continue + } + // if x[i].path.depth() < x[j].path.depth() { // this one is shallower + sf2 := &x[j] + if len(sf.parents) < len(sf2.parents) { // this one is shallower ss[xn] = ui + sf = sf2 + } + if sf.encName == "" { + continue } + sf.encName = "" + n-- } - return } func (ti *typeInfo) init(x []structFieldInfo, n int) { - var anyOmitEmpty bool + simple := true + + if ti.flagMissingFielder || ti.flagMissingFielderPtr || + ti.keyType != valueTypeString { + simple = false + } // remove all the nils (non-ready) - m := make(map[string]*structFieldInfo, n) + // m := make(map[string]*structFieldInfo, n) w := make([]structFieldInfo, n) y := make([]*structFieldInfo, n+n) z := y[n:] y = y[:n] n = 0 for i := range x { - if x[i].encName == "" { + sfi := &x[i] + if sfi.encName == "" { continue } - if !anyOmitEmpty && x[i].path.omitEmpty { - anyOmitEmpty = true + if simple && (sfi.omitEmpty || sfi.encNameEscape4Json) { + simple = false } - w[n] = x[i] - y[n] = &w[n] - m[x[i].encName] = &w[n] + w[n] = *sfi + sfi = &w[n] + y[n] = sfi + // m[sfi.encName] = sfi n++ } if n != len(y) { - halt.errorf("failure reading struct %v - expecting %d of %d valid fields, got %d", ti.rt, len(y), len(x), n) + halt.errorf("failure reading struct %v - expecting %d of %d valid fields, got %d", ti.rt, len(y), len(x), any(n)) } + ti.simple = simple + copy(z, y) sort.Sort(sfiSortedByEncName(z)) - ti.anyOmitEmpty = anyOmitEmpty ti.sfi.load(y, z) - ti.sfi4Name = m + ti.sfi.finish() + // ti.sfi.byName = m } -// Handling flagCanTransient +// isCanTransient returns whether this type can be transient. +// +// # Handling flagCanTransient // // We support transient optimization if the kind of the type is -// a number, bool, string, or slice (of number/bool). -// In addition, we also support if the kind is struct or array, -// and the type does not contain any pointers recursively). +// - a number, bool, string +// - slice (of number/bool) +// - struct with no reference values (pointers, interface, etc) recursively +// - array with no reference values (pointers, interface, etc) recursively // -// Noteworthy that all reference types (string, slice, func, map, ptr, interface, etc) have pointers. +// NOTE: all reference types (string, slice, func, map, ptr, interface, etc) have pointers. // // If using transient for a type with a pointer, there is the potential for data corruption // when GC tries to follow a "transient" pointer which may become a non-pointer soon after. -// - -func transientBitsetFlags() *bitset32 { - if transientValueHasStringSlice { - return &numBoolStrSliceBitset +func isCanTransient(t reflect.Type, inclStrSlice bool) (v bool) { + k := t.Kind() + bset := &numBoolBitset + if inclStrSlice { + bset = &numBoolStrSliceBitset } - return &numBoolBitset -} - -func isCanTransient(t reflect.Type, k reflect.Kind) (v bool) { - var bs = transientBitsetFlags() - if bs.isset(byte(k)) { + if bset.isset(byte(k)) { v = true - } else if k == reflect.Slice { - elem := t.Elem() - v = numBoolBitset.isset(byte(elem.Kind())) } else if k == reflect.Array { - elem := t.Elem() - v = isCanTransient(elem, elem.Kind()) + v = isCanTransient(t.Elem(), false) } else if k == reflect.Struct { v = true for j, jlen := 0, t.NumField(); j < jlen; j++ { f := t.Field(j) - if !isCanTransient(f.Type, f.Type.Kind()) { - v = false - return + if !isCanTransient(f.Type, false) { + return false } } - } else { - v = false } return } -func (ti *typeInfo) doSetFlagCanTransient() { - if transientSizeMax > 0 { - ti.flagCanTransient = ti.size <= transientSizeMax - } else { - ti.flagCanTransient = true - } - if ti.flagCanTransient { - if !transientBitsetFlags().isset(ti.kind) { - ti.flagCanTransient = isCanTransient(ti.rt, reflect.Kind(ti.kind)) - } - } -} - type rtid2ti struct { rtid uintptr ti *typeInfo @@ -2031,7 +2020,7 @@ type rtid2ti struct { // It is configured with a set of tag keys, which are used to get // configuration for the type. type TypeInfos struct { - infos atomicTypeInfoSlice + infos atomic.Pointer[[]rtid2ti] // atomicTypeInfoSlice mu sync.Mutex _ uint64 // padding (cache-aligned) tags []string @@ -2088,9 +2077,9 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) { } func (x *TypeInfos) find(rtid uintptr) (pti *typeInfo) { - sp := x.infos.load() + sp := x.infos.Load() if sp != nil { - _, pti = findTypeInfo(sp, rtid) + _, pti = findTypeInfo(*sp, rtid) } return } @@ -2099,7 +2088,7 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { rk := rt.Kind() if rk == reflect.Ptr { // || (rk == reflect.Interface && rtid != intfTypId) { - halt.errorf("invalid kind passed to TypeInfos.get: %v - %v", rk, rt) + halt.errorf("invalid kind passed to TypeInfos.get: %v - %v", rk.String(), rt) } rtid := rt2id(rt) @@ -2108,7 +2097,7 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { // it may lead to duplication, but that's ok. ti := typeInfo{ rt: rt, - ptr: reflect.PtrTo(rt), + ptr: reflect.PointerTo(rt), rtid: rtid, kind: uint8(rk), size: uint32(rt.Size()), @@ -2119,6 +2108,12 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { flagHasPkgPath: rt.PkgPath() != "", } + _, ti.flagEncBuiltin = searchRtids(encBuiltinRtids, rtid) + _, ti.flagDecBuiltin = searchRtids(decBuiltinRtids, rtid) + if !ti.flagDecBuiltin { + _, ti.flagDecBuiltin = searchRtids(decBuiltinRtids, rt2id(ti.ptr)) + } + // bset sets custom implementation flags bset := func(when bool, b *bool) { if when { @@ -2159,11 +2154,7 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { bset(b1, &ti.flagIsCodecEmptyer) bset(b2, &ti.flagIsCodecEmptyerPtr) - b1, b2 = implIntf(rt, isSelferViaCodecgenerTyp) - ti.flagSelferViaCodecgen = b1 || b2 - ti.flagMarshalInterface = ti.flagSelfer || ti.flagSelferPtr || - ti.flagSelferViaCodecgen || ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr || ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr || ti.flagTextMarshaler || ti.flagTextMarshalerPtr || @@ -2175,7 +2166,7 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { // bset(b1, &ti.flagComparable) ti.flagComparable = b1 - ti.doSetFlagCanTransient() + ti.flagCanTransient = isTransientType4Size(ti.size) && isCanTransient(ti.rt, true) var tt reflect.Type switch rk { @@ -2187,14 +2178,22 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { } else { ti.keyType = valueTypeString } - pp, pi := &pool4tiload, pool4tiload.Get() - pv := pi.(*typeInfoLoad) - pv.reset() + var pi interface{} + var pv *typeInfoLoad + if usePoolForTypeInfoLoad { + pi = poolForTypeInfoLoad.Get() + pv = pi.(*typeInfoLoad) + pv.reset() + } else { + pv = newTypeInfoLoad() + } pv.etypes = append(pv.etypes, ti.rtid) - x.rget(rt, rtid, nil, pv, omitEmpty) + x.rget(rt, nil, pv, omitEmpty) n := ti.resolve(pv.sfis, pv.sfiNames) ti.init(pv.sfis, n) - pp.Put(pi) + if usePoolForTypeInfoLoad { + poolForTypeInfoLoad.Put(pi) + } case reflect.Map: ti.typeInfo4Container = new(typeInfo4Container) ti.elem = rt.Elem() @@ -2265,13 +2264,16 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { } x.mu.Lock() - sp := x.infos.load() + var sp []rtid2ti + if spt := x.infos.Load(); spt != nil { + sp = *spt + } // since this is an atomic load/store, we MUST use a different array each time, // else we have a data race when a store is happening simultaneously with a findRtidFn call. if sp == nil { pti = &ti sp = []rtid2ti{{rtid, pti}} - x.infos.store(sp) + x.infos.Store(&sp) } else { var idx uint idx, pti = findTypeInfo(sp, rtid) @@ -2281,15 +2283,14 @@ func (x *TypeInfos) load(rt reflect.Type) (pti *typeInfo) { copy(sp2[idx+1:], sp[idx:]) copy(sp2, sp[:idx]) sp2[idx] = rtid2ti{rtid, pti} - x.infos.store(sp2) + x.infos.Store(&sp2) } } x.mu.Unlock() return } -func (x *TypeInfos) rget(rt reflect.Type, rtid uintptr, - path *structFieldInfoPathNode, pv *typeInfoLoad, omitEmpty bool) { +func (x *TypeInfos) rget(rt reflect.Type, path *structFieldInfoPathNode, pv *typeInfoLoad, defaultOmitEmpty bool) { // Read up fields and store how to access the value. // // It uses go's rules for message selectors, @@ -2318,41 +2319,40 @@ LOOP: if stag == "-" { continue } - var si structFieldInfo var numderef uint8 = 0 - for xft := f.Type; xft.Kind() == reflect.Ptr; xft = xft.Elem() { + ft := f.Type + for ; ft.Kind() == reflect.Ptr; ft = ft.Elem() { numderef++ } - var parsed bool + var encName string + var parsed, omitEmpty bool + + ftid := rt2id(ft) // if anonymous and no struct tag (or it's blank), // and a struct (or pointer to struct), inline it. if f.Anonymous && fkind != reflect.Interface { // ^^ redundant but ok: per go spec, an embedded pointer type cannot be to an interface - ft := f.Type - isPtr := ft.Kind() == reflect.Ptr - for ft.Kind() == reflect.Ptr { - ft = ft.Elem() - } + isPtr := f.Type.Kind() == reflect.Ptr isStruct := ft.Kind() == reflect.Struct // Ignore embedded fields of unexported non-struct types. // Also, from go1.10, ignore pointers to unexported struct types // because unmarshal cannot assign a new struct to an unexported field. // See https://golang.org/issue/21357 - if (isUnexported && !isStruct) || (!allowSetUnexportedEmbeddedPtr && isUnexported && isPtr) { + if isUnexported && (!isStruct || isPtr) { continue } doInline := stag == "" if !doInline { - si.parseTag(stag) + encName, omitEmpty = parseStructFieldTag(stag) parsed = true - doInline = si.encName == "" // si.isZero() + doInline = encName == "" // si.isZero() } if doInline && isStruct { // if etypes contains this, don't call rget again (as fields are already seen here) - ftid := rt2id(ft) + // // We cannot recurse forever, but we need to track other field depths. // So - we break if we see a type twice (not the first time). // This should be sufficient to handle an embedded type that refers to its @@ -2371,54 +2371,83 @@ LOOP: if processIt { pv.etypes = append(pv.etypes, ftid) path2 := &structFieldInfoPathNode{ - parent: path, - typ: f.Type, - offset: uint16(f.Offset), - index: j, - kind: uint8(fkind), - numderef: numderef, + parent: path, + structFieldInfoNode: structFieldInfoNode{ + typ: f.Type, + offset: uint16(f.Offset), + index: j, + kind: uint8(fkind), + numderef: numderef, + }, } - x.rget(ft, ftid, path2, pv, omitEmpty) + x.rget(ft, path2, pv, defaultOmitEmpty) } continue } } // after the anonymous dance: if an unexported field, skip - if isUnexported || f.Name == "" { // f.Name cannot be "", but defensively handle it + if isUnexported || f.Name == "" || f.Name == structInfoFieldName { // f.Name cannot be "", but defensively handle it continue } - si.path = structFieldInfoPathNode{ - parent: path, + if !parsed { + encName, omitEmpty = parseStructFieldTag(stag) + parsed = true + } + if encName == "" { + encName = f.Name + } + if defaultOmitEmpty { + omitEmpty = true + } + + var si = structFieldInfo{ + encName: encName, + omitEmpty: omitEmpty, + ptrKind: fkind == reflect.Ptr, + baseTyp: ft, + ptrTyp: reflect.PointerTo(ft), + } + + // si.path = structFieldInfoPathNode{ + // parent: path, + // structFieldInfoNode: structFieldInfoNode{ + // typ: f.Type, + // offset: uint16(f.Offset), + // index: j, + // kind: uint8(fkind), + // numderef: numderef, + // }, + // } + + si.node = structFieldInfoNode{ typ: f.Type, offset: uint16(f.Offset), index: j, kind: uint8(fkind), numderef: numderef, - // set asciiAlphaNum to true (default); checked and may be set to false below - encNameAsciiAlphaNum: true, - // note: omitEmpty might have been set in an earlier parseTag call, etc - so carry it forward - omitEmpty: si.path.omitEmpty, } - if !parsed { - si.encName = f.Name - si.parseTag(stag) - parsed = true - } else if si.encName == "" { - si.encName = f.Name + if path != nil { + si.parents = make([]structFieldInfoNode, path.depth()) + for k, p := len(si.parents)-1, path; k >= 0; k-- { + si.parents[k] = p.structFieldInfoNode + p = p.parent + } } - // si.encNameHash = maxUintptr() // hashShortString(bytesView(si.encName)) - - if omitEmpty { - si.path.omitEmpty = true + // ftid = rt2id(ft) where ft = si.baseTyp) + _, si.encBuiltin = searchRtids(encBuiltinRtids, ftid) + _, si.decBuiltin = searchRtids(decBuiltinRtids, ftid) + if !si.decBuiltin { + _, si.decBuiltin = searchRtids(decBuiltinRtids, rt2id(si.ptrTyp)) } + // si.encNameHash = maxUintptr() // hashShortString(bytesView(si.encName)) for i := len(si.encName) - 1; i >= 0; i-- { // bounds-check elimination - if !asciiAlphaNumBitset.isset(si.encName[i]) { - si.path.encNameAsciiAlphaNum = false + if !jsonCharSafeBitset.isset(si.encName[i]) { + si.encNameEscape4Json = true break } } @@ -2427,6 +2456,29 @@ LOOP: } } +type timeRv struct { + v time.Time + r reflect.Value +} + +type bytesRv struct { + v []byte + r reflect.Value +} + +type stringIntf struct { + v string + i interface{} +} + +func cmpTimeRv(v1, v2 timeRv) int { + return v1.v.Compare(v2.v) +} + +func cmpBytesRv(v1, v2 bytesRv) int { + return bytes.Compare(v1.v, v2.v) +} + func implIntf(rt, iTyp reflect.Type) (base bool, indir bool) { // return rt.Implements(iTyp), reflect.PtrTo(rt).Implements(iTyp) @@ -2441,11 +2493,15 @@ func implIntf(rt, iTyp reflect.Type) (base bool, indir bool) { if base { indir = true } else { - indir = reflect.PtrTo(rt).Implements(iTyp) + indir = reflect.PointerTo(rt).Implements(iTyp) } return } +func bytesOK(bs []byte, _ bool) []byte { + return bs +} + func bool2int(b bool) (v uint8) { // MARKER: optimized to be a single instruction if b { @@ -2455,25 +2511,97 @@ func bool2int(b bool) (v uint8) { } func isSliceBoundsError(s string) bool { - return strings.Contains(s, "index out of range") || - strings.Contains(s, "slice bounds out of range") + return strings.Contains(s, "index out of range") || // indexing error + strings.Contains(s, "slice bounds out of range") || // slicing error + strings.Contains(s, "cannot convert slice with length") // slice-->array error } func sprintf(format string, v ...interface{}) string { return fmt.Sprintf(format, v...) } -func panicValToErr(h errDecorator, v interface{}, err *error) { - if v == *err { +func snip(v []byte) []byte { + return v[:min(96, len(v))] +} + +// These constants are used within debugf. +// If the first parameter to debugf is one of these, it determines +// the ANSI color used within the ANSI terminal. +// +// They make it easier to write different groups of debug statements +// with a visual aid. +const ( + hlSFX = "\033[0m" + hlPFX = "\033[1;" + hlBLACK = hlPFX + "30" + "m" + hlRED = hlPFX + "31" + "m" + hlGREEN = hlPFX + "32" + "m" + hlYELLOW = hlPFX + "33" + "m" + hlBLUE = hlPFX + "34" + "m" + hlPURPLE = hlPFX + "35" + "m" + hlCYAN = hlPFX + "36" + "m" + hlWHITE = hlPFX + "37" + "m" + // hlORANGE = hlYELLOW +) + +// debugf will print debug statements to the screen whether or not debugging is on +// +// Note: if first parameter in a is one of the hlXXX vars, then we treat it as a hint +// to highlight in different colors. +// +//go:noinline +func debugf(s string, a ...any) { + if !debugLogging { + return + } + if len(s) == 0 { + return + } + if s[len(s)-1] != '\n' { + s = s + "\n" + } + if len(a) > 0 { + switch a[0] { + case hlBLACK, hlRED, hlGREEN, hlYELLOW, hlBLUE, hlPURPLE, hlCYAN, hlWHITE: + s = a[0].(string) + s + hlSFX + a = a[1:] + } + } + fmt.Printf(s, a...) +} + +func panicToErr(h errDecorator, fn func()) (err error) { + defer panicValToErr(h, callRecoverSentinel, &err, nil, debugging) + fn() + return +} + +// panicValToErr will convert a panic value into an error +// +// err and recovered are guaranteed to be not nil +func panicValToErr(h errDecorator, recovered interface{}, err, errCopy *error, panicAgain bool) { + if recovered == callRecoverSentinel { + recovered = recover() + } + if recovered == nil || err == nil { return } - switch xerr := v.(type) { - case nil: + if recovered == *err { + goto HANDLE_COPY + } + switch xerr := recovered.(type) { + case *outOfBoundsError: + h.wrapErr(xerr, err) case runtime.Error: - d, dok := h.(*Decoder) - if dok && d.bytes && isSliceBoundsError(xerr.Error()) { - *err = io.ErrUnexpectedEOF - } else { + switch d := h.(type) { + case decoderI: + if d.isBytes() && isSliceBoundsError(xerr.Error()) { + // *err = io.ErrUnexpectedEOF + h.wrapErr(io.ErrUnexpectedEOF, err) + } else { + h.wrapErr(xerr, err) + } + default: h.wrapErr(xerr, err) } case error: @@ -2481,62 +2609,55 @@ func panicValToErr(h errDecorator, v interface{}, err *error) { case nil: case io.EOF, io.ErrUnexpectedEOF, errEncoderNotInitialized, errDecoderNotInitialized: // treat as special (bubble up) - *err = xerr + // *err = xerr + h.wrapErr(xerr, err) default: h.wrapErr(xerr, err) } + case string: + h.wrapErr(errors.New(xerr), err) + // *err = errors.New(xerr) default: // we don't expect this to happen (as this library always panics with an error) - h.wrapErr(fmt.Errorf("%v", v), err) + h.wrapErr(fmt.Errorf("%v", recovered), err) + } +HANDLE_COPY: + if errCopy != nil { + *errCopy = *err + } + if panicAgain { + panic(*err) } } -func usableByteSlice(bs []byte, slen int) (out []byte, changed bool) { +func usableByteSlice(bs []byte, slen int) (out []byte, isMadeNew bool) { const maxCap = 1024 * 1024 * 64 // 64MB - const skipMaxCap = false // allow to test - if slen <= 0 { - return []byte{}, true + // const skipMaxCap = false // allow to test + + // if slen <= 0 { + // return bs[:0], false // return zeroByteSlice, true + // } + + // slen=0 means it's defined-length of 0. + // slen<0 means non-defined length which would be determined in future. + + // if bs is nil, for length=0, ensure we don't return a nil []byte, + // which will cause DecodeBytes (caller) to return a nil []byte incorrectly. + if slen == 0 { + return zeroByteSlice, false + } + if slen < 0 { + return bs[:0], false } if slen <= cap(bs) { return bs[:slen], false } // slen > cap(bs) ... handle memory overload appropriately - if skipMaxCap || slen <= maxCap { - return make([]byte, slen), true - } - return make([]byte, maxCap), true -} - -func mapKeyFastKindFor(k reflect.Kind) mapKeyFastKind { - return mapKeyFastKindVals[k&31] -} - -// ---- - -type codecFnInfo struct { - ti *typeInfo - xfFn Ext - xfTag uint64 - addrD bool - addrDf bool // force: if addrD, then decode function MUST take a ptr - addrE bool - // addrEf bool // force: if addrE, then encode function MUST take a ptr -} - -// codecFn encapsulates the captured variables and the encode function. -// This way, we only do some calculations one times, and pass to the -// code block that should be called (encapsulated in a function) -// instead of executing the checks every time. -type codecFn struct { - i codecFnInfo - fe func(*Encoder, *codecFnInfo, reflect.Value) - fd func(*Decoder, *codecFnInfo, reflect.Value) - // _ [1]uint64 // padding (cache-aligned) -} - -type codecRtidFn struct { - rtid uintptr - fn *codecFn + return make([]byte, min(slen, maxCap)), true + // if skipMaxCap || slen <= maxCap { + // return make([]byte, slen), true + // } + // return make([]byte, maxCap), true } func makeExt(ext interface{}) Ext { @@ -2552,12 +2673,25 @@ func makeExt(ext interface{}) Ext { } func baseRV(v interface{}) (rv reflect.Value) { + // MARKER TODO try using rv4i not reflect.ValueOf // use reflect.ValueOf, not rv4i, as of go 1.16beta, rv4i was not inlineable for rv = reflect.ValueOf(v); rv.Kind() == reflect.Ptr; rv = rv.Elem() { } return } +func baseRVRV(v reflect.Value) (rv reflect.Value) { + for rv = v; rv.Kind() == reflect.Ptr; rv = rv.Elem() { + } + return +} + +func baseRT(v reflect.Type) (vv reflect.Type) { + for vv = v; vv.Kind() == reflect.Ptr; vv = vv.Elem() { + } + return +} + // ---- // these "checkOverflow" functions must be inlinable, and not call anybody. @@ -2613,25 +2747,25 @@ func (checkOverflow) SignedInt(v uint64) (overflow bool) { func (x checkOverflow) Float32V(v float64) float64 { if x.Float32(v) { - halt.errorf("float32 overflow: %v", v) + halt.errorFloat("float32 overflow: ", v) } return v } func (x checkOverflow) UintV(v uint64, bitsize uint8) uint64 { if x.Uint(v, bitsize) { - halt.errorf("uint64 overflow: %v", v) + halt.errorUint("uint64 overflow: ", v) } return v } func (x checkOverflow) IntV(v int64, bitsize uint8) int64 { if x.Int(v, bitsize) { - halt.errorf("int64 overflow: %v", v) + halt.errorInt("int64 overflow: ", v) } return v } func (x checkOverflow) SignedIntV(v uint64) int64 { if x.SignedInt(v) { - halt.errorf("uint64 to int64 overflow: %v", v) + halt.errorUint("uint64 to int64 overflow: ", v) } return int64(v) } @@ -2660,6 +2794,91 @@ func isNumberChar(v byte) bool { // ----------------------- +func pruneSignExt(v []byte, pos bool) (n int) { + if len(v) < 2 { + } else if pos && v[0] == 0 { + for ; v[n] == 0 && n+1 < len(v) && (v[n+1]&(1<<7) == 0); n++ { + } + } else if !pos && v[0] == 0xff { + for ; v[n] == 0xff && n+1 < len(v) && (v[n+1]&(1<<7) != 0); n++ { + } + } + return +} + +func halfFloatToFloatBits(h uint16) (f uint32) { + // retrofitted from: + // - OGRE (Object-Oriented Graphics Rendering Engine) + // function: halfToFloatI https://www.ogre3d.org/docs/api/1.9/_ogre_bitwise_8h_source.html + + s := uint32(h >> 15) + m := uint32(h & 0x03ff) + e := int32((h >> 10) & 0x1f) + + if e == 0 { + if m == 0 { // plus or minus 0 + return s << 31 + } + // Denormalized number -- renormalize it + for (m & 0x0400) == 0 { + m <<= 1 + e -= 1 + } + e += 1 + m &= ^uint32(0x0400) + } else if e == 31 { + if m == 0 { // Inf + return (s << 31) | 0x7f800000 + } + return (s << 31) | 0x7f800000 | (m << 13) // NaN + } + e = e + (127 - 15) + m = m << 13 + return (s << 31) | (uint32(e) << 23) | m +} + +func floatToHalfFloatBits(i uint32) (h uint16) { + // retrofitted from: + // - OGRE (Object-Oriented Graphics Rendering Engine) + // function: halfToFloatI https://www.ogre3d.org/docs/api/1.9/_ogre_bitwise_8h_source.html + // - http://www.java2s.com/example/java-utility-method/float-to/floattohalf-float-f-fae00.html + s := (i >> 16) & 0x8000 + e := int32(((i >> 23) & 0xff) - (127 - 15)) + m := i & 0x7fffff + + var h32 uint32 + + if e <= 0 { + if e < -10 { // zero + h32 = s // track -0 vs +0 + } else { + m = (m | 0x800000) >> uint32(1-e) + h32 = s | (m >> 13) + } + } else if e == 0xff-(127-15) { + if m == 0 { // Inf + h32 = s | 0x7c00 + } else { // NAN + m >>= 13 + var me uint32 + if m == 0 { + me = 1 + } + h32 = s | 0x7c00 | m | me + } + } else { + if e > 30 { // Overflow + h32 = s | 0x7c00 + } else { + h32 = s | (uint32(e) << 10) | (m >> 13) + } + } + h = uint16(h32) + return +} + +// ----------------------- + type ioFlusher interface { Flush() error } @@ -2719,31 +2938,67 @@ func (x *bitset256) isset(pos byte) bool { // ------------ +// panicHdl will panic with the parameters passed. type panicHdl struct{} -// errorv will panic if err is defined (not nil) func (panicHdl) onerror(err error) { if err != nil { panic(err) } } +func (panicHdl) error(err error) { panic(err) } + +func (panicHdl) errorStr(s string) { panic(s) } + +func (panicHdl) errorStr2(s, s2 string) { panic(s + s2) } + +func (panicHdl) errorBytes(s string, p1 []byte) { panic(s + stringView(p1)) } + +func (v panicHdl) errorByte(prefix string, p1 byte) { + panic(stringView(append(panicHdlBytes(prefix), p1))) +} + +func (v panicHdl) errorInt(prefix string, p1 int64) { + panic(stringView(strconv.AppendInt(panicHdlBytes(prefix), p1, 10))) + // bs := make([]byte, len(prefix)+8) + // bs = append(bs, prefix...) + // bs = strconv.AppendInt(bs, p1, 10) + // panic(stringView(bs)) +} + +func (v panicHdl) errorUint(prefix string, p1 uint64) { + panic(stringView(strconv.AppendUint(panicHdlBytes(prefix), p1, 10))) +} + +func (v panicHdl) errorFloat(prefix string, p1 float64) { + panic(stringView(strconv.AppendFloat(panicHdlBytes(prefix), p1, 'G', -1, 64))) +} + +// MARKER +// consider adding //go:noinline to errorf and maybe other methods + // errorf will always panic, using the parameters passed. // // Note: it is ok to pass in a stringView, as it will just pass it directly // to a fmt.Sprintf call and not hold onto it. // -//go:noinline +// Since this is an unexported call, we will not be defensive. +// Callers should ensure a non-empty string and 1+ parameter. func (panicHdl) errorf(format string, params ...interface{}) { - if format == "" { - panic(errPanicUndefined) - } - if len(params) == 0 { - panic(errors.New(format)) - } + // if format == "" { + // panic(errPanicUndefined) + // } + // if len(params) == 0 { + // panic(errors.New(format)) + // } panic(fmt.Errorf(format, params...)) } +func panicHdlBytes(prefix string) []byte { + return append(make([]byte, len(prefix)+8), prefix...) +} + // ---------------------------------------------------- type errDecorator interface { @@ -2778,12 +3033,12 @@ func (mustHdl) Float(s float64, err error) float64 { // ------------------- func freelistCapacity(length int) (capacity int) { - for capacity = 8; capacity <= length; capacity *= 2 { + for capacity = 8; capacity < length; capacity *= 2 { } return } -// bytesFreelist is a list of byte buffers, sorted by cap. +// bytesFreeList is a list of byte buffers, sorted by cap. // // In anecdotal testing (running go test -tsd 1..6), we couldn't get // the length of the list > 4 at any time. So we believe a linear search @@ -2807,12 +3062,12 @@ func freelistCapacity(length int) (capacity int) { // if !byteSliceSameData(v0, v1) { // blist.put(v0) // } -type bytesFreelist [][]byte +type bytesFreeList [][]byte // peek returns a slice of possibly non-zero'ed bytes, with len=0, // and with the largest capacity from the list. -func (x *bytesFreelist) peek(length int, pop bool) (out []byte) { - if bytesFreeListNoCache { +func (x *bytesFreeList) peek(length int, pop bool) (out []byte) { + if !useBytesFreeList { return make([]byte, 0, freelistCapacity(length)) } y := *x @@ -2838,15 +3093,12 @@ func (x *bytesFreelist) peek(length int, pop bool) (out []byte) { // get returns a slice of possibly non-zero'ed bytes, with len=0, // and with cap >= length requested. -func (x *bytesFreelist) get(length int) (out []byte) { - if bytesFreeListNoCache { +func (x *bytesFreeList) get(length int) (out []byte) { + if !useBytesFreeList { return make([]byte, 0, freelistCapacity(length)) } y := *x - // MARKER: do not use range, as range is not currently inlineable as of go 1.16-beta - // for i, v := range y { - for i := 0; i < len(y); i++ { - v := y[i] + for i, v := range y { if cap(v) >= length { // *x = append(y[:i], y[i+1:]...) copy(y[i:], y[i+1:]) @@ -2857,21 +3109,21 @@ func (x *bytesFreelist) get(length int) (out []byte) { return make([]byte, 0, freelistCapacity(length)) } -func (x *bytesFreelist) put(v []byte) { - if bytesFreeListNoCache || cap(v) == 0 { +func (x *bytesFreeList) put(v []byte) { + if !useBytesFreeList || cap(v) == 0 { return } if len(v) != 0 { v = v[:0] } + // v = v[:0] // append the new value, then try to put it in a better position y := append(*x, v) *x = y - // MARKER: do not use range, as range is not currently inlineable as of go 1.16-beta + // MARKER: use simple for loop, so as not to create new slice // for i, z := range y[:len(y)-1] { for i := 0; i < len(y)-1; i++ { - z := y[i] - if cap(z) > cap(v) { + if cap(y[i]) > cap(v) { copy(y[i+1:], y[i:]) y[i] = v return @@ -2879,24 +3131,23 @@ func (x *bytesFreelist) put(v []byte) { } } -func (x *bytesFreelist) check(v []byte, length int) (out []byte) { +func (x *bytesFreeList) check(v []byte, length int) (out []byte) { // ensure inlineable, by moving slow-path out to its own function if cap(v) >= length { return v[:0] } - return x.checkPutGet(v, length) + return x.putGet(v, length) } -func (x *bytesFreelist) checkPutGet(v []byte, length int) []byte { - // checkPutGet broken out into its own function, so check is inlineable in general case - const useSeparateCalls = false +func (x *bytesFreeList) putGet(v []byte, length int) []byte { + // putGet broken out into its own function, so check is inlineable in general case - if useSeparateCalls { + if useBytesFreeListPutGetSeparateCalls { x.put(v) return x.get(length) } - if bytesFreeListNoCache { + if !useBytesFreeList { return make([]byte, 0, freelistCapacity(length)) } @@ -2907,8 +3158,9 @@ func (x *bytesFreelist) checkPutGet(v []byte, length int) []byte { y = append(y, v) *x = y } - for i := 0; i < len(y); i++ { - z := y[i] + // for i := 0; i < len(y); i++ { + // z := y[i] + for i, z := range y { if put { if cap(z) >= length { copy(y[i:], y[i+1:]) @@ -2929,7 +3181,7 @@ func (x *bytesFreelist) checkPutGet(v []byte, length int) []byte { // ------------------------- -// sfiRvFreelist is used by Encoder for encoding structs, +// sfiRvFreeList is used by Encoder for encoding structs, // where we have to gather the fields first and then // analyze them for omitEmpty, before knowing the length of the array/map to encode. // @@ -2938,9 +3190,12 @@ func (x *bytesFreelist) checkPutGet(v []byte, length int) []byte { // // In the general case, the length of this list at most times is 1, // so linear search is fine. -type sfiRvFreelist [][]sfiRv +type sfiRvFreeList [][]sfiRv -func (x *sfiRvFreelist) get(length int) (out []sfiRv) { +func (x *sfiRvFreeList) get(length int) (out []sfiRv) { + if !useSfiRvFreeList { + return make([]sfiRv, 0, freelistCapacity(length)) + } y := *x // MARKER: do not use range, as range is not currently inlineable as of go 1.16-beta @@ -2957,7 +3212,10 @@ func (x *sfiRvFreelist) get(length int) (out []sfiRv) { return make([]sfiRv, 0, freelistCapacity(length)) } -func (x *sfiRvFreelist) put(v []sfiRv) { +func (x *sfiRvFreeList) put(v []sfiRv) { + if !useSfiRvFreeList { + return + } if len(v) != 0 { v = v[:0] } @@ -3002,3 +3260,19 @@ func (x internerMap) string(v []byte) (s string) { } return } + +// ---- + +type bytesEncoder interface { + Encode(dst, src []byte) + Decode(dst, src []byte) (n int, err error) + EncodedLen(n int) int + DecodedLen(n int) int +} + +type hexEncoder struct{} + +func (hexEncoder) Encode(dst, src []byte) { hex.Encode(dst, src) } +func (hexEncoder) Decode(dst, src []byte) (n int, err error) { return hex.Decode(dst, src) } +func (hexEncoder) EncodedLen(n int) int { return hex.EncodedLen(n) } +func (hexEncoder) DecodedLen(n int) int { return hex.DecodedLen(n) } diff --git a/vendor/github.com/ugorji/go/codec/helper_internal.go b/vendor/github.com/ugorji/go/codec/helper_internal.go deleted file mode 100644 index e646249c7..000000000 --- a/vendor/github.com/ugorji/go/codec/helper_internal.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -package codec - -// maxArrayLen is the size of uint, which determines -// the maximum length of any array. -const maxArrayLen = 1<<((32<<(^uint(0)>>63))-1) - 1 - -// All non-std package dependencies live in this file, -// so porting to different environment is easy (just update functions). - -func pruneSignExt(v []byte, pos bool) (n int) { - if len(v) < 2 { - } else if pos && v[0] == 0 { - for ; v[n] == 0 && n+1 < len(v) && (v[n+1]&(1<<7) == 0); n++ { - } - } else if !pos && v[0] == 0xff { - for ; v[n] == 0xff && n+1 < len(v) && (v[n+1]&(1<<7) != 0); n++ { - } - } - return -} - -func halfFloatToFloatBits(h uint16) (f uint32) { - // retrofitted from: - // - OGRE (Object-Oriented Graphics Rendering Engine) - // function: halfToFloatI https://www.ogre3d.org/docs/api/1.9/_ogre_bitwise_8h_source.html - - s := uint32(h >> 15) - m := uint32(h & 0x03ff) - e := int32((h >> 10) & 0x1f) - - if e == 0 { - if m == 0 { // plus or minus 0 - return s << 31 - } - // Denormalized number -- renormalize it - for (m & 0x0400) == 0 { - m <<= 1 - e -= 1 - } - e += 1 - m &= ^uint32(0x0400) - } else if e == 31 { - if m == 0 { // Inf - return (s << 31) | 0x7f800000 - } - return (s << 31) | 0x7f800000 | (m << 13) // NaN - } - e = e + (127 - 15) - m = m << 13 - return (s << 31) | (uint32(e) << 23) | m -} - -func floatToHalfFloatBits(i uint32) (h uint16) { - // retrofitted from: - // - OGRE (Object-Oriented Graphics Rendering Engine) - // function: halfToFloatI https://www.ogre3d.org/docs/api/1.9/_ogre_bitwise_8h_source.html - // - http://www.java2s.com/example/java-utility-method/float-to/floattohalf-float-f-fae00.html - s := (i >> 16) & 0x8000 - e := int32(((i >> 23) & 0xff) - (127 - 15)) - m := i & 0x7fffff - - var h32 uint32 - - if e <= 0 { - if e < -10 { // zero - h32 = s // track -0 vs +0 - } else { - m = (m | 0x800000) >> uint32(1-e) - h32 = s | (m >> 13) - } - } else if e == 0xff-(127-15) { - if m == 0 { // Inf - h32 = s | 0x7c00 - } else { // NAN - m >>= 13 - var me uint32 - if m == 0 { - me = 1 - } - h32 = s | 0x7c00 | m | me - } - } else { - if e > 30 { // Overflow - h32 = s | 0x7c00 - } else { - h32 = s | (uint32(e) << 10) | (m >> 13) - } - } - h = uint16(h32) - return -} - -// growCap will return a new capacity for a slice, given the following: -// - oldCap: current capacity -// - unit: in-memory size of an element -// - num: number of elements to add -func growCap(oldCap, unit, num uint) (newCap uint) { - // appendslice logic (if cap < 1024, *2, else *1.25): - // leads to many copy calls, especially when copying bytes. - // bytes.Buffer model (2*cap + n): much better for bytes. - // smarter way is to take the byte-size of the appended element(type) into account - - // maintain 1 thresholds: - // t1: if cap <= t1, newcap = 2x - // else newcap = 1.5x - // - // t1 is always >= 1024. - // This means that, if unit size >= 16, then always do 2x or 1.5x (ie t1, t2, t3 are all same) - // - // With this, appending for bytes increase by: - // 100% up to 4K - // 50% beyond that - - // unit can be 0 e.g. for struct{}{}; handle that appropriately - maxCap := num + (oldCap * 3 / 2) - if unit == 0 || maxCap > maxArrayLen || maxCap < oldCap { // handle wraparound, etc - return maxArrayLen - } - - var t1 uint = 1024 // default thresholds for large values - if unit <= 4 { - t1 = 8 * 1024 - } else if unit <= 16 { - t1 = 2 * 1024 - } - - newCap = 2 + num - if oldCap > 0 { - if oldCap <= t1 { // [0,t1] - newCap = num + (oldCap * 2) - } else { // (t1,infinity] - newCap = maxCap - } - } - - // ensure newCap takes multiples of a cache line (size is a multiple of 64) - t1 = newCap * unit - if t2 := t1 % 64; t2 != 0 { - t1 += 64 - t2 - newCap = t1 / unit - } - - return -} diff --git a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go index 10034b86f..413dc39de 100644 --- a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go +++ b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go @@ -2,7 +2,6 @@ // Use of this source code is governed by a MIT license found in the LICENSE file. //go:build !go1.9 || safe || codec.safe || appengine -// +build !go1.9 safe codec.safe appengine package codec @@ -19,8 +18,11 @@ import ( const safeMode = true -const transientSizeMax = 0 -const transientValueHasStringSlice = true +func isTransientType4Size(size uint32) bool { return true } + +type mapReqParams struct{} + +func getMapReqParams(ti *typeInfo) (r mapReqParams) { return } func byteAt(b []byte, index uint) byte { return b[index] @@ -30,14 +32,6 @@ func setByteAt(b []byte, index uint, val byte) { b[index] = val } -func byteSliceOf(b []byte, start, end uint) []byte { - return b[start:end] -} - -// func byteSliceWithLen(b []byte, length uint) []byte { -// return b[:length] -// } - func stringView(v []byte) string { return string(v) } @@ -50,32 +44,24 @@ func byteSliceSameData(v1 []byte, v2 []byte) bool { return cap(v1) != 0 && cap(v2) != 0 && &(v1[:1][0]) == &(v2[:1][0]) } -func okBytes2(b []byte) (v [2]byte) { - copy(v[:], b) - return -} - -func okBytes3(b []byte) (v [3]byte) { - copy(v[:], b) - return -} - -func okBytes4(b []byte) (v [4]byte) { - copy(v[:], b) +func isNil(v interface{}, checkPtr bool) (rv reflect.Value, b bool) { + b = v == nil + if b || !checkPtr { + return + } + rv = reflect.ValueOf(v) + if rv.Kind() == reflect.Ptr { + b = rv.IsNil() + } return } -func okBytes8(b []byte) (v [8]byte) { - copy(v[:], b) - return +func ptrToLowLevel(v interface{}) interface{} { + return v } -func isNil(v interface{}) (rv reflect.Value, isnil bool) { - rv = reflect.ValueOf(v) - if isnilBitset.isset(byte(rv.Kind())) { - isnil = rv.IsNil() - } - return +func lowLevelToPtr[T any](v interface{}) *T { + return v.(*T) } func eq4i(i0, i1 interface{}) bool { @@ -85,17 +71,21 @@ func eq4i(i0, i1 interface{}) bool { func rv4iptr(i interface{}) reflect.Value { return reflect.ValueOf(i) } func rv4istr(i interface{}) reflect.Value { return reflect.ValueOf(i) } -// func rv4i(i interface{}) reflect.Value { return reflect.ValueOf(i) } -// func rv4iK(i interface{}, kind byte, isref bool) reflect.Value { return reflect.ValueOf(i) } - func rv2i(rv reflect.Value) interface{} { - return rv.Interface() + if rv.IsValid() { + return rv.Interface() + } + return nil } func rvAddr(rv reflect.Value, ptrType reflect.Type) reflect.Value { return rv.Addr() } +func rvPtrIsNil(rv reflect.Value) bool { + return rv.IsNil() +} + func rvIsNil(rv reflect.Value) bool { return rv.IsNil() } @@ -131,6 +121,30 @@ func i2rtid(i interface{}) uintptr { // -------------------------- +// is this an empty interface/ptr/struct/map/slice/chan/array +func isEmptyContainerValue(v reflect.Value, tinfos *TypeInfos, recursive bool) (empty bool) { + switch v.Kind() { + case reflect.Array: + for i, vlen := 0, v.Len(); i < vlen; i++ { + if !isEmptyValue(v.Index(i), tinfos, false) { + return false + } + } + return true + case reflect.Map, reflect.Slice, reflect.Chan: + return v.IsNil() || v.Len() == 0 + case reflect.Interface, reflect.Ptr: + empty = v.IsNil() + if recursive && !empty { + return isEmptyValue(v.Elem(), tinfos, recursive) + } + return empty + case reflect.Struct: + return isEmptyStruct(v, tinfos, recursive) + } + return false +} + func isEmptyValue(v reflect.Value, tinfos *TypeInfos, recursive bool) bool { switch v.Kind() { case reflect.Invalid: @@ -215,7 +229,7 @@ func isEmptyStruct(v reflect.Value, tinfos *TypeInfos, recursive bool) bool { // We only care about what we can encode/decode, // so that is what we use to check omitEmpty. for _, si := range ti.sfi.source() { - sfv := si.path.field(v) + sfv := si.fieldNoAlloc(v, true) if sfv.IsValid() && !isEmptyValue(sfv, tinfos, recursive) { return false } @@ -223,6 +237,10 @@ func isEmptyStruct(v reflect.Value, tinfos *TypeInfos, recursive bool) bool { return true } +func makeMapReflect(t reflect.Type, size int) reflect.Value { + return reflect.MakeMapWithSize(t, size) +} + // -------------------------- type perTypeElem struct { @@ -247,13 +265,9 @@ type perType struct { v []perTypeElem } -type decPerType struct { - perType -} +type decPerType = perType -type encPerType struct { - perType -} +type encPerType = perType func (x *perType) elem(t reflect.Type) *perTypeElem { rtid := rt2id(t) @@ -296,65 +310,68 @@ func (x *perType) AddressableRO(v reflect.Value) (rv reflect.Value) { } // -------------------------- -type structFieldInfos struct { - c []*structFieldInfo - s []*structFieldInfo +type mapIter struct { + t *reflect.MapIter + m reflect.Value + values bool } -func (x *structFieldInfos) load(source, sorted []*structFieldInfo) { - x.c = source - x.s = sorted +func (t *mapIter) Next() (r bool) { + return t.t.Next() } -func (x *structFieldInfos) sorted() (v []*structFieldInfo) { return x.s } -func (x *structFieldInfos) source() (v []*structFieldInfo) { return x.c } - -type atomicClsErr struct { - v atomic.Value +func (t *mapIter) Key() reflect.Value { + return t.t.Key() } -func (x *atomicClsErr) load() (e clsErr) { - if i := x.v.Load(); i != nil { - e = i.(clsErr) +func (t *mapIter) Value() (r reflect.Value) { + if t.values { + return t.t.Value() } return } -func (x *atomicClsErr) store(p clsErr) { - x.v.Store(p) +func (t *mapIter) Done() {} + +func mapRange(t *mapIter, m, k, v reflect.Value, values bool) { + *t = mapIter{ + m: m, + t: m.MapRange(), + values: values, + } } // -------------------------- -type atomicTypeInfoSlice struct { - v atomic.Value +type structFieldInfos struct { + c []*structFieldInfo + s []*structFieldInfo + t uint8To32TrieNode + // byName map[string]*structFieldInfo // find sfi given a name } -func (x *atomicTypeInfoSlice) load() (e []rtid2ti) { - if i := x.v.Load(); i != nil { - e = i.([]rtid2ti) - } - return +func (x *structFieldInfos) load(source, sorted []*structFieldInfo) { + x.c = source + x.s = sorted } -func (x *atomicTypeInfoSlice) store(p []rtid2ti) { - x.v.Store(p) -} +// func (x *structFieldInfos) count() int { return len(x.c) } +func (x *structFieldInfos) source() (v []*structFieldInfo) { return x.c } +func (x *structFieldInfos) sorted() (v []*structFieldInfo) { return x.s } // -------------------------- -type atomicRtidFnSlice struct { - v atomic.Value -} -func (x *atomicRtidFnSlice) load() (e []codecRtidFn) { - if i := x.v.Load(); i != nil { - e = i.([]codecRtidFn) - } - return +type uint8To32TrieNodeNoKids struct { + key uint8 + valid bool // the value marks the end of a full stored string + _ [2]byte // padding + value uint32 } -func (x *atomicRtidFnSlice) store(p []codecRtidFn) { - x.v.Store(p) -} +type uint8To32TrieNodeKids = []uint8To32TrieNode + +func (x *uint8To32TrieNode) setKids(kids []uint8To32TrieNode) { x.kids = kids } +func (x *uint8To32TrieNode) getKids() []uint8To32TrieNode { return x.kids } +func (x *uint8To32TrieNode) truncKids() { x.kids = x.kids[:0] } // set len to 0 // -------------------------- func (n *fauxUnion) ru() reflect.Value { @@ -501,13 +518,13 @@ func rvGrowSlice(rv reflect.Value, ti *typeInfo, cap, incr int) (v reflect.Value // ---------------- -func rvSliceIndex(rv reflect.Value, i int, ti *typeInfo) reflect.Value { +func rvArrayIndex(rv reflect.Value, i int, _ *typeInfo, _ bool) reflect.Value { return rv.Index(i) } -func rvArrayIndex(rv reflect.Value, i int, ti *typeInfo) reflect.Value { - return rv.Index(i) -} +// func rvArrayIndex(rv reflect.Value, i int, ti *typeInfo) reflect.Value { +// return rv.Index(i) +// } func rvSliceZeroCap(t reflect.Type) (v reflect.Value) { return reflect.MakeSlice(t, 0, 0) @@ -523,7 +540,7 @@ func rvCapSlice(rv reflect.Value) int { func rvGetArrayBytes(rv reflect.Value, scratch []byte) (bs []byte) { l := rv.Len() - if scratch == nil || rv.CanAddr() { + if scratch == nil && rv.CanAddr() { return rv.Slice(0, l).Bytes() } @@ -537,7 +554,7 @@ func rvGetArrayBytes(rv reflect.Value, scratch []byte) (bs []byte) { } func rvGetArray4Slice(rv reflect.Value) (v reflect.Value) { - v = rvZeroAddrK(reflectArrayOf(rvLenSlice(rv), rv.Type().Elem()), reflect.Array) + v = rvZeroAddrK(reflect.ArrayOf(rvLenSlice(rv), rv.Type().Elem()), reflect.Array) reflect.Copy(v, rv) return } @@ -647,60 +664,43 @@ func rvLenMap(rv reflect.Value) int { return rv.Len() } -// func copybytes(to, from []byte) int { -// return copy(to, from) -// } - -// func copybytestr(to []byte, from string) int { -// return copy(to, from) -// } - -// func rvLenArray(rv reflect.Value) int { return rv.Len() } - // ------------ map range and map indexing ---------- -func mapStoresElemIndirect(elemsize uintptr) bool { return false } - -func mapSet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, _, _ bool) { +func mapSet(m, k, v reflect.Value, _ mapReqParams) { m.SetMapIndex(k, v) } -func mapGet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, _, _ bool) (vv reflect.Value) { +func mapGet(m, k, v reflect.Value, _ mapReqParams) (vv reflect.Value) { return m.MapIndex(k) } -// func mapDelete(m, k reflect.Value) { -// m.SetMapIndex(k, reflect.Value{}) -// } - func mapAddrLoopvarRV(t reflect.Type, k reflect.Kind) (r reflect.Value) { return // reflect.New(t).Elem() } // ---------- ENCODER optimized --------------- -func (e *Encoder) jsondriver() *jsonEncDriver { - return e.e.(*jsonEncDriver) +func (d *decoderBase) bytes2Str(in []byte, att dBytesAttachState) (s string, mutable bool) { + return d.detach2Str(in, att), false } -// ---------- DECODER optimized --------------- +// ---------- structFieldInfo optimized --------------- -func (d *Decoder) jsondriver() *jsonDecDriver { - return d.d.(*jsonDecDriver) +func (n *structFieldInfoNode) rvField(v reflect.Value) reflect.Value { + return v.Field(int(n.index)) } -func (d *Decoder) stringZC(v []byte) (s string) { - return d.string(v) -} +// ---------- others --------------- -func (d *Decoder) mapKeyString(callFnRvk *bool, kstrbs, kstr2bs *[]byte) string { - return d.string(*kstr2bs) +// -------------------------- +type atomicRtidFnSlice struct { + v atomic.Value } -// ---------- structFieldInfo optimized --------------- - -func (n *structFieldInfoPathNode) rvField(v reflect.Value) reflect.Value { - return v.Field(int(n.index)) +func (x *atomicRtidFnSlice) load() interface{} { + return x.v.Load() } -// ---------- others --------------- +func (x *atomicRtidFnSlice) store(p interface{}) { + x.v.Store(p) +} diff --git a/vendor/github.com/ugorji/go/codec/helper_not_unsafe_not_gc.go b/vendor/github.com/ugorji/go/codec/helper_not_unsafe_not_gc.go deleted file mode 100644 index 502bc6086..000000000 --- a/vendor/github.com/ugorji/go/codec/helper_not_unsafe_not_gc.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !go1.9 || safe || codec.safe || appengine || !gc -// +build !go1.9 safe codec.safe appengine !gc - -package codec - -// import "reflect" - -// This files contains safe versions of the code where the unsafe versions are not supported -// in either gccgo or gollvm. -// -// - rvType: -// reflect.toType is not supported in gccgo, gollvm. - -// func rvType(rv reflect.Value) reflect.Type { -// return rv.Type() -// } - -var _ = 0 diff --git a/vendor/github.com/ugorji/go/codec/helper_notunsafe_or_notgc.go b/vendor/github.com/ugorji/go/codec/helper_notunsafe_or_notgc.go new file mode 100644 index 000000000..420d717e7 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/helper_notunsafe_or_notgc.go @@ -0,0 +1,59 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build safe || codec.safe || !gc + +package codec + +// growCap will return a new capacity for a slice, given the following: +// - oldCap: current capacity +// - unit: in-memory size of an element +// - num: number of elements to add +func growCap(oldCap, unit, num uint) (newCap uint) { + // appendslice logic (if cap < 1024, *2, else *1.25): + // leads to many copy calls, especially when copying bytes. + // bytes.Buffer model (2*cap + n): much better for bytes. + // smarter way is to take the byte-size of the appended element(type) into account + + // maintain 1 thresholds: + // t1: if cap <= t1, newcap = 2x + // else newcap = 1.5x + // + // t1 is always >= 1024. + // This means that, if unit size >= 16, then always do 2x or 1.5x (ie t1, t2, t3 are all same) + // + // With this, appending for bytes increase by: + // 100% up to 4K + // 50% beyond that + + // unit can be 0 e.g. for struct{}{}; handle that appropriately + maxCap := num + (oldCap * 3 / 2) + if unit == 0 || maxCap > maxArrayLen || maxCap < oldCap { // handle wraparound, etc + return maxArrayLen + } + + var t1 uint = 1024 // default thresholds for large values + if unit <= 4 { + t1 = 8 * 1024 + } else if unit <= 16 { + t1 = 2 * 1024 + } + + newCap = 2 + num + if oldCap > 0 { + if oldCap <= t1 { // [0,t1] + newCap = num + (oldCap * 2) + } else { // (t1,infinity] + newCap = maxCap + } + } + + // ensure newCap takes multiples of a cache line (size is a multiple of 64) + t1 = newCap * unit + if t2 := t1 % 64; t2 != 0 { + t1 += 64 - t2 + newCap = t1 / unit + } + + return +} diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_unsafe.go index 4e29b030b..31f3266a4 100644 --- a/vendor/github.com/ugorji/go/codec/helper_unsafe.go +++ b/vendor/github.com/ugorji/go/codec/helper_unsafe.go @@ -1,12 +1,15 @@ // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. -//go:build !safe && !codec.safe && !appengine && go1.9 -// +build !safe,!codec.safe,!appengine,go1.9 - -// minimum of go 1.9 is needed, as that is the minimum for all features and linked functions we need -// - typedmemclr was introduced in go 1.8 -// - mapassign_fastXXX was introduced in go 1.9 +//go:build !safe && !codec.safe && !appengine && go1.21 + +// minimum of go 1.21 is needed, as that is the minimum for all features and linked functions we need +// - typedmemclr : go1.8 +// - mapassign_fastXXX: go1.9 +// - clear was added in go1.21 +// - unsafe.String(Data): go1.20 +// - unsafe.Add: go1.17 +// - generics/any: go1.18 // etc package codec @@ -21,7 +24,7 @@ import ( // This file has unsafe variants of some helper functions. // MARKER: See helper_unsafe.go for the usage documentation. - +// // There are a number of helper_*unsafe*.go files. // // - helper_unsafe @@ -41,19 +44,32 @@ import ( // As of March 2021, we cannot differentiate whether running with gccgo or gollvm // using a build constraint, as both satisfy 'gccgo' build tag. // Consequently, we must use the lowest common denominator to support both. - +// // For reflect.Value code, we decided to do the following: // - if we know the kind, we can elide conditional checks for // - SetXXX (Int, Uint, String, Bool, etc) // - SetLen // -// We can also optimize -// - IsNil - +// We can also optimize many others, incl IsNil, etc +// // MARKER: Some functions here will not be hit during code coverage runs due to optimizations, e.g. // - rvCopySlice: called by decode if rvGrowSlice did not set new slice into pointer to orig slice. // however, helper_unsafe sets it, so no need to call rvCopySlice later // - rvSlice: same as above +// +// MARKER: Handling flagIndir ---- +// +// flagIndir means that the reflect.Value holds a pointer to the data itself. +// +// flagIndir can be set for: +// - references +// Here, type.IfaceIndir() --> false +// flagIndir is usually false (except when the value is addressable, where in flagIndir may be true) +// - everything else (numbers, bools, string, slice, struct, etc). +// Here, type.IfaceIndir() --> true +// flagIndir is always true +// +// This knowlege is used across this file, e.g. in rv2i and rvRefPtr const safeMode = false @@ -88,7 +104,9 @@ const ( const transientSizeMax = 64 // should struct/array support internal strings and slices? -const transientValueHasStringSlice = false +// const transientValueHasStringSlice = false + +func isTransientType4Size(size uint32) bool { return size <= transientSizeMax } type unsafeString struct { Data unsafe.Pointer @@ -144,7 +162,8 @@ func (x *unsafePerTypeElem) addrFor(k reflect.Kind) unsafe.Pointer { x.slice = unsafeSlice{} // memclr return unsafe.Pointer(&x.slice) } - x.arr = [transientSizeMax]byte{} // memclr + clear(x.arr[:]) + // x.arr = [transientSizeMax]byte{} // memclr return unsafe.Pointer(&x.arr) } @@ -152,9 +171,7 @@ type perType struct { elems [2]unsafePerTypeElem } -type decPerType struct { - perType -} +type decPerType = perType type encPerType struct{} @@ -183,19 +200,6 @@ func byteAt(b []byte, index uint) byte { return *(*byte)(unsafe.Pointer(uintptr((*unsafeSlice)(unsafe.Pointer(&b)).Data) + uintptr(index))) } -func byteSliceOf(b []byte, start, end uint) []byte { - s := (*unsafeSlice)(unsafe.Pointer(&b)) - s.Data = unsafe.Pointer(uintptr(s.Data) + uintptr(start)) - s.Len = int(end - start) - s.Cap -= int(start) - return b -} - -// func byteSliceWithLen(b []byte, length uint) []byte { -// (*unsafeSlice)(unsafe.Pointer(&b)).Len = int(length) -// return b -// } - func setByteAt(b []byte, index uint, val byte) { // b[index] = val *(*byte)(unsafe.Pointer(uintptr((*unsafeSlice)(unsafe.Pointer(&b)).Data) + uintptr(index))) = val @@ -222,49 +226,26 @@ func byteSliceSameData(v1 []byte, v2 []byte) bool { return (*unsafeSlice)(unsafe.Pointer(&v1)).Data == (*unsafeSlice)(unsafe.Pointer(&v2)).Data } -// MARKER: okBytesN functions will copy N bytes into the top slots of the return array. -// These functions expect that the bound check already occured and are are valid. -// copy(...) does a number of checks which are unnecessary in this situation when in bounds. - -func okBytes2(b []byte) [2]byte { - return *((*[2]byte)(((*unsafeSlice)(unsafe.Pointer(&b))).Data)) -} - -func okBytes3(b []byte) [3]byte { - return *((*[3]byte)(((*unsafeSlice)(unsafe.Pointer(&b))).Data)) -} - -func okBytes4(b []byte) [4]byte { - return *((*[4]byte)(((*unsafeSlice)(unsafe.Pointer(&b))).Data)) +// isNil checks - without much effort - if an interface is nil. +// +// returned rv is not guaranteed to be valid (e.g. if v == nil). +// +// Note that this will handle all pointer-sized types e.g. +// pointer, map, chan, func, etc. +func isNil(v interface{}, checkPtr bool) (rv reflect.Value, b bool) { + b = ((*unsafeIntf)(unsafe.Pointer(&v))).ptr == nil + return } -func okBytes8(b []byte) [8]byte { - return *((*[8]byte)(((*unsafeSlice)(unsafe.Pointer(&b))).Data)) +func ptrToLowLevel[T any](ptr *T) unsafe.Pointer { + return unsafe.Pointer(ptr) } -// isNil says whether the value v is nil. -// This applies to references like map/ptr/unsafepointer/chan/func, -// and non-reference values like interface/slice. -func isNil(v interface{}) (rv reflect.Value, isnil bool) { - var ui = (*unsafeIntf)(unsafe.Pointer(&v)) - isnil = ui.ptr == nil - if !isnil { - rv, isnil = unsafeIsNilIntfOrSlice(ui, v) - } - return +func lowLevelToPtr[T any](v unsafe.Pointer) *T { + return (*T)(v) } -func unsafeIsNilIntfOrSlice(ui *unsafeIntf, v interface{}) (rv reflect.Value, isnil bool) { - rv = reflect.ValueOf(v) // reflect.ValueOf is currently not inline'able - so call it directly - tk := rv.Kind() - isnil = (tk == reflect.Interface || tk == reflect.Slice) && *(*unsafe.Pointer)(ui.ptr) == nil - return -} - -// return the pointer for a reference (map/chan/func/pointer/unsafe.Pointer). -// true references (map, func, chan, ptr - NOT slice) may be double-referenced? as flagIndir -// -// Assumes that v is a reference (map/func/chan/ptr/func) +// Given that v is a reference (map/func/chan/ptr/unsafepointer) kind, return the pointer func rvRefPtr(v *unsafeReflectValue) unsafe.Pointer { if v.flag&unsafeFlagIndir != 0 { return *(*unsafe.Pointer)(v.ptr) @@ -295,13 +276,6 @@ func rv4istr(i interface{}) (v reflect.Value) { } func rv2i(rv reflect.Value) (i interface{}) { - // We tap into implememtation details from - // the source go stdlib reflect/value.go, and trims the implementation. - // - // e.g. - // - a map/ptr is a reference, thus flagIndir is not set on it - // - an int/slice is not a reference, thus flagIndir is set on it - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) if refBitset.isset(byte(rv.Kind())) && urv.flag&unsafeFlagIndir != 0 { urv.ptr = *(*unsafe.Pointer)(urv.ptr) @@ -316,12 +290,22 @@ func rvAddr(rv reflect.Value, ptrType reflect.Type) reflect.Value { return rv } +// return true if this rv - got from a pointer kind - is nil. +// For now, only use for struct fields of pointer types, as we're guaranteed +// that flagIndir will never be set. +func rvPtrIsNil(rv reflect.Value) bool { + return rvIsNil(rv) +} + +// checks if a nil'able value is nil func rvIsNil(rv reflect.Value) bool { urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - if urv.flag&unsafeFlagIndir != 0 { - return *(*unsafe.Pointer)(urv.ptr) == nil + if urv.flag&unsafeFlagIndir == 0 { + return urv.ptr == nil } - return urv.ptr == nil + // flagIndir is set for a reference (ptr/map/func/unsafepointer/chan) + // OR kind is slice/interface + return *(*unsafe.Pointer)(urv.ptr) == nil } func rvSetSliceLen(rv reflect.Value, length int) { @@ -499,29 +483,62 @@ func isEmptyValueFallbackRecur(urv *unsafeReflectValue, v reflect.Value, tinfos return false } +// is this an empty interface/ptr/struct/map/slice/chan/array +func isEmptyContainerValue(v reflect.Value, tinfos *TypeInfos, recursive bool) bool { + urv := (*unsafeReflectValue)(unsafe.Pointer(&v)) + switch v.Kind() { + case reflect.Slice: + return (*unsafeSlice)(urv.ptr).Len == 0 + case reflect.Struct: + if tinfos == nil { + tinfos = defTypeInfos + } + ti := tinfos.find(uintptr(urv.typ)) + if ti == nil { + ti = tinfos.load(v.Type()) + } + return unsafeCmpZero(urv.ptr, int(ti.size)) + case reflect.Interface, reflect.Ptr: + // isnil := urv.ptr == nil // (not sufficient, as a pointer value encodes the type) + isnil := urv.ptr == nil || *(*unsafe.Pointer)(urv.ptr) == nil + if recursive && !isnil { + return isEmptyValue(v.Elem(), tinfos, recursive) + } + return isnil + case reflect.Chan: + return urv.ptr == nil || len_chan(rvRefPtr(urv)) == 0 + case reflect.Map: + return urv.ptr == nil || len_map(rvRefPtr(urv)) == 0 + case reflect.Array: + return v.Len() == 0 || + urv.ptr == nil || + urv.typ == nil || + rtsize2(urv.typ) == 0 || + unsafeCmpZero(urv.ptr, int(rtsize2(urv.typ))) + } + return false +} + // -------------------------- type structFieldInfos struct { - c unsafe.Pointer // source - s unsafe.Pointer // sorted + c unsafe.Pointer // source + s unsafe.Pointer // sorted + t uint8To32TrieNode + length int + + // byName map[string]*structFieldInfo // find sfi given a name } +// func (x *structFieldInfos) load(source, sorted []*structFieldInfo, sourceNames, sortedNames []string) { func (x *structFieldInfos) load(source, sorted []*structFieldInfo) { - s := (*unsafeSlice)(unsafe.Pointer(&sorted)) - x.s = s.Data - x.length = s.Len + var s *unsafeSlice s = (*unsafeSlice)(unsafe.Pointer(&source)) x.c = s.Data -} - -func (x *structFieldInfos) sorted() (v []*structFieldInfo) { - *(*unsafeSlice)(unsafe.Pointer(&v)) = unsafeSlice{x.s, x.length, x.length} - // s := (*unsafeSlice)(unsafe.Pointer(&v)) - // s.Data = x.sorted0 - // s.Len = x.length - // s.Cap = s.Len - return + x.length = s.Len + s = (*unsafeSlice)(unsafe.Pointer(&sorted)) + x.s = s.Data } func (x *structFieldInfos) source() (v []*structFieldInfo) { @@ -529,66 +546,48 @@ func (x *structFieldInfos) source() (v []*structFieldInfo) { return } -// atomicXXX is expected to be 2 words (for symmetry with atomic.Value) -// -// Note that we do not atomically load/store length and data pointer separately, -// as this could lead to some races. Instead, we atomically load/store cappedSlice. -// -// Note: with atomic.(Load|Store)Pointer, we MUST work with an unsafe.Pointer directly. - -// ---------------------- -type atomicTypeInfoSlice struct { - v unsafe.Pointer // *[]rtid2ti -} - -func (x *atomicTypeInfoSlice) load() (s []rtid2ti) { - x2 := atomic.LoadPointer(&x.v) - if x2 != nil { - s = *(*[]rtid2ti)(x2) - } +func (x *structFieldInfos) sorted() (v []*structFieldInfo) { + *(*unsafeSlice)(unsafe.Pointer(&v)) = unsafeSlice{x.s, x.length, x.length} return } -func (x *atomicTypeInfoSlice) store(p []rtid2ti) { - atomic.StorePointer(&x.v, unsafe.Pointer(&p)) +// -------------------------- + +type uint8To32TrieNodeNoKids struct { + key uint8 + valid bool // the value marks the end of a full stored string + numkids uint8 + _ byte // padding + value uint32 } -// MARKER: in safe mode, atomicXXX are atomic.Value, which contains an interface{}. -// This is 2 words. -// consider padding atomicXXX here with a uintptr, so they fit into 2 words also. +type uint8To32TrieNodeKids = *uint8To32TrieNode -// -------------------------- -type atomicRtidFnSlice struct { - v unsafe.Pointer // *[]codecRtidFn +func (x *uint8To32TrieNode) setKids(kids []uint8To32TrieNode) { + x.numkids = uint8(len(kids)) + x.kids = &kids[0] } - -func (x *atomicRtidFnSlice) load() (s []codecRtidFn) { - x2 := atomic.LoadPointer(&x.v) - if x2 != nil { - s = *(*[]codecRtidFn)(x2) - } +func (x *uint8To32TrieNode) getKids() (v []uint8To32TrieNode) { + *(*unsafeSlice)(unsafe.Pointer(&v)) = unsafeSlice{unsafe.Pointer(x.kids), int(x.numkids), int(x.numkids)} return } - -func (x *atomicRtidFnSlice) store(p []codecRtidFn) { - atomic.StorePointer(&x.v, unsafe.Pointer(&p)) -} +func (x *uint8To32TrieNode) truncKids() { x.numkids = 0 } // -------------------------- -type atomicClsErr struct { - v unsafe.Pointer // *clsErr + +// Note that we do not atomically load/store length and data pointer separately, +// as this could lead to some races. Instead, we atomically load/store cappedSlice. + +type atomicRtidFnSlice struct { + v unsafe.Pointer // *[]codecRtidFn } -func (x *atomicClsErr) load() (e clsErr) { - x2 := (*clsErr)(atomic.LoadPointer(&x.v)) - if x2 != nil { - e = *x2 - } - return +func (x *atomicRtidFnSlice) load() (s unsafe.Pointer) { + return atomic.LoadPointer(&x.v) } -func (x *atomicClsErr) store(p clsErr) { - atomic.StorePointer(&x.v, unsafe.Pointer(&p)) +func (x *atomicRtidFnSlice) store(p unsafe.Pointer) { + atomic.StorePointer(&x.v, p) } // -------------------------- @@ -660,98 +659,79 @@ func (n *fauxUnion) rb() (v reflect.Value) { // -------------------------- func rvSetBytes(rv reflect.Value, v []byte) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*[]byte)(urv.ptr) = v + *(*[]byte)(rvPtr(rv)) = v } func rvSetString(rv reflect.Value, v string) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*string)(urv.ptr) = v + *(*string)(rvPtr(rv)) = v } func rvSetBool(rv reflect.Value, v bool) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*bool)(urv.ptr) = v + *(*bool)(rvPtr(rv)) = v } func rvSetTime(rv reflect.Value, v time.Time) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*time.Time)(urv.ptr) = v + *(*time.Time)(rvPtr(rv)) = v } func rvSetFloat32(rv reflect.Value, v float32) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*float32)(urv.ptr) = v + *(*float32)(rvPtr(rv)) = v } func rvSetFloat64(rv reflect.Value, v float64) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*float64)(urv.ptr) = v + *(*float64)(rvPtr(rv)) = v } func rvSetComplex64(rv reflect.Value, v complex64) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*complex64)(urv.ptr) = v + *(*complex64)(rvPtr(rv)) = v } func rvSetComplex128(rv reflect.Value, v complex128) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*complex128)(urv.ptr) = v + *(*complex128)(rvPtr(rv)) = v } func rvSetInt(rv reflect.Value, v int) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int)(urv.ptr) = v + *(*int)(rvPtr(rv)) = v } func rvSetInt8(rv reflect.Value, v int8) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int8)(urv.ptr) = v + *(*int8)(rvPtr(rv)) = v } func rvSetInt16(rv reflect.Value, v int16) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int16)(urv.ptr) = v + *(*int16)(rvPtr(rv)) = v } func rvSetInt32(rv reflect.Value, v int32) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int32)(urv.ptr) = v + *(*int32)(rvPtr(rv)) = v } func rvSetInt64(rv reflect.Value, v int64) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int64)(urv.ptr) = v + *(*int64)(rvPtr(rv)) = v } func rvSetUint(rv reflect.Value, v uint) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint)(urv.ptr) = v + *(*uint)(rvPtr(rv)) = v } func rvSetUintptr(rv reflect.Value, v uintptr) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uintptr)(urv.ptr) = v + *(*uintptr)(rvPtr(rv)) = v } func rvSetUint8(rv reflect.Value, v uint8) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint8)(urv.ptr) = v + *(*uint8)(rvPtr(rv)) = v } func rvSetUint16(rv reflect.Value, v uint16) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint16)(urv.ptr) = v + *(*uint16)(rvPtr(rv)) = v } func rvSetUint32(rv reflect.Value, v uint32) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint32)(urv.ptr) = v + *(*uint32)(rvPtr(rv)) = v } func rvSetUint64(rv reflect.Value, v uint64) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint64)(urv.ptr) = v + *(*uint64)(rvPtr(rv)) = v } // ---------------- @@ -775,12 +755,10 @@ func rvSetDirect(rv reflect.Value, v reflect.Value) { uv := (*unsafeReflectValue)(unsafe.Pointer(&v)) if uv.flag&unsafeFlagIndir == 0 { *(*unsafe.Pointer)(urv.ptr) = uv.ptr - } else if uv.ptr == unsafeZeroAddr { - if urv.ptr != unsafeZeroAddr { - typedmemclr(urv.typ, urv.ptr) - } - } else { + } else if uv.ptr != unsafeZeroAddr { typedmemmove(urv.typ, urv.ptr, uv.ptr) + } else if urv.ptr != unsafeZeroAddr { + typedmemclr(urv.typ, urv.ptr) } } @@ -812,11 +790,9 @@ func rvMakeSlice(rv reflect.Value, ti *typeInfo, xlen, xcap int) (_ reflect.Valu // It is typically called when we know that SetLen(...) cannot be done. func rvSlice(rv reflect.Value, length int) reflect.Value { urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - var x []struct{} - ux := (*unsafeSlice)(unsafe.Pointer(&x)) - *ux = *(*unsafeSlice)(urv.ptr) + ux := *(*unsafeSlice)(urv.ptr) // copy slice header ux.Len = length - urv.ptr = unsafe.Pointer(ux) + urv.ptr = unsafe.Pointer(&ux) return rv } @@ -834,10 +810,16 @@ func rvGrowSlice(rv reflect.Value, ti *typeInfo, cap, incr int) (v reflect.Value // ------------ -func rvSliceIndex(rv reflect.Value, i int, ti *typeInfo) (v reflect.Value) { +func rvArrayIndex(rv reflect.Value, i int, ti *typeInfo, isSlice bool) (v reflect.Value) { urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) uv := (*unsafeReflectValue)(unsafe.Pointer(&v)) - uv.ptr = unsafe.Pointer(uintptr(((*unsafeSlice)(urv.ptr)).Data) + uintptr(int(ti.elemsize)*i)) + if isSlice { + uv.ptr = unsafe.Pointer(uintptr(((*unsafeSlice)(urv.ptr)).Data)) + } else { + uv.ptr = unsafe.Pointer(uintptr(urv.ptr)) + } + uv.ptr = unsafe.Add(uv.ptr, ti.elemsize*uint32(i)) + // uv.ptr = unsafe.Pointer(ptr + uintptr(int(ti.elemsize)*i)) uv.typ = ((*unsafeIntf)(unsafe.Pointer(&ti.elem))).ptr uv.flag = uintptr(ti.elemkind) | unsafeFlagIndir | unsafeFlagAddr return @@ -861,19 +843,11 @@ func rvCapSlice(rv reflect.Value) int { return (*unsafeSlice)(urv.ptr).Cap } -func rvArrayIndex(rv reflect.Value, i int, ti *typeInfo) (v reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - uv := (*unsafeReflectValue)(unsafe.Pointer(&v)) - uv.ptr = unsafe.Pointer(uintptr(urv.ptr) + uintptr(int(ti.elemsize)*i)) - uv.typ = ((*unsafeIntf)(unsafe.Pointer(&ti.elem))).ptr - uv.flag = uintptr(ti.elemkind) | unsafeFlagIndir | unsafeFlagAddr - return -} - // if scratch is nil, then return a writable view (assuming canAddr=true) -func rvGetArrayBytes(rv reflect.Value, scratch []byte) (bs []byte) { +func rvGetArrayBytes(rv reflect.Value, _ []byte) (bs []byte) { urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) bx := (*unsafeSlice)(unsafe.Pointer(&bs)) + // bx.Data, bx.Len, bx.Cap = urv.ptr, rv.Len(), bx.Len bx.Data = urv.ptr bx.Len = rv.Len() bx.Cap = bx.Len @@ -889,7 +863,7 @@ func rvGetArray4Slice(rv reflect.Value) (v reflect.Value) { // // Consequently, we use rvLenSlice, not rvCapSlice. - t := reflectArrayOf(rvLenSlice(rv), rv.Type().Elem()) + t := reflect.ArrayOf(rvLenSlice(rv), rv.Type().Elem()) // v = rvZeroAddrK(t, reflect.Array) uv := (*unsafeReflectValue)(unsafe.Pointer(&v)) @@ -921,99 +895,84 @@ func rvCopySlice(dest, src reflect.Value, elemType reflect.Type) { // ------------ +func rvPtr(rv reflect.Value) unsafe.Pointer { + return (*unsafeReflectValue)(unsafe.Pointer(&rv)).ptr +} + func rvGetBool(rv reflect.Value) bool { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*bool)(v.ptr) + return *(*bool)(rvPtr(rv)) } func rvGetBytes(rv reflect.Value) []byte { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*[]byte)(v.ptr) + return *(*[]byte)(rvPtr(rv)) } func rvGetTime(rv reflect.Value) time.Time { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*time.Time)(v.ptr) + return *(*time.Time)(rvPtr(rv)) } func rvGetString(rv reflect.Value) string { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*string)(v.ptr) + return *(*string)(rvPtr(rv)) } func rvGetFloat64(rv reflect.Value) float64 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*float64)(v.ptr) + return *(*float64)(rvPtr(rv)) } func rvGetFloat32(rv reflect.Value) float32 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*float32)(v.ptr) + return *(*float32)(rvPtr(rv)) } func rvGetComplex64(rv reflect.Value) complex64 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*complex64)(v.ptr) + return *(*complex64)(rvPtr(rv)) } func rvGetComplex128(rv reflect.Value) complex128 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*complex128)(v.ptr) + return *(*complex128)(rvPtr(rv)) } func rvGetInt(rv reflect.Value) int { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*int)(v.ptr) + return *(*int)(rvPtr(rv)) } func rvGetInt8(rv reflect.Value) int8 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*int8)(v.ptr) + return *(*int8)(rvPtr(rv)) } func rvGetInt16(rv reflect.Value) int16 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*int16)(v.ptr) + return *(*int16)(rvPtr(rv)) } func rvGetInt32(rv reflect.Value) int32 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*int32)(v.ptr) + return *(*int32)(rvPtr(rv)) } func rvGetInt64(rv reflect.Value) int64 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*int64)(v.ptr) + return *(*int64)(rvPtr(rv)) } func rvGetUint(rv reflect.Value) uint { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uint)(v.ptr) + return *(*uint)(rvPtr(rv)) } func rvGetUint8(rv reflect.Value) uint8 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uint8)(v.ptr) + return *(*uint8)(rvPtr(rv)) } func rvGetUint16(rv reflect.Value) uint16 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uint16)(v.ptr) + return *(*uint16)(rvPtr(rv)) } func rvGetUint32(rv reflect.Value) uint32 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uint32)(v.ptr) + return *(*uint32)(rvPtr(rv)) } func rvGetUint64(rv reflect.Value) uint64 { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uint64)(v.ptr) + return *(*uint64)(rvPtr(rv)) } func rvGetUintptr(rv reflect.Value) uintptr { - v := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - return *(*uintptr)(v.ptr) + return *(*uintptr)(rvPtr(rv)) } func rvLenMap(rv reflect.Value) int { @@ -1027,32 +986,6 @@ func rvLenMap(rv reflect.Value) int { return len_map(rvRefPtr((*unsafeReflectValue)(unsafe.Pointer(&rv)))) } -// copy is an intrinsic, which may use asm if length is small, -// or make a runtime call to runtime.memmove if length is large. -// Performance suffers when you always call runtime.memmove function. -// -// Consequently, there's no value in a copybytes call - just call copy() directly - -// func copybytes(to, from []byte) (n int) { -// n = (*unsafeSlice)(unsafe.Pointer(&from)).Len -// memmove( -// (*unsafeSlice)(unsafe.Pointer(&to)).Data, -// (*unsafeSlice)(unsafe.Pointer(&from)).Data, -// uintptr(n), -// ) -// return -// } - -// func copybytestr(to []byte, from string) (n int) { -// n = (*unsafeSlice)(unsafe.Pointer(&from)).Len -// memmove( -// (*unsafeSlice)(unsafe.Pointer(&to)).Data, -// (*unsafeSlice)(unsafe.Pointer(&from)).Data, -// uintptr(n), -// ) -// return -// } - // Note: it is hard to find len(...) of an array type, // as that is a field in the arrayType representing the array, and hard to introspect. // @@ -1065,24 +998,26 @@ func rvLenMap(rv reflect.Value) int { // // It is more performant to provide a value that the map entry is set into, // and that elides the allocation. - -// go 1.4+ has runtime/hashmap.go or runtime/map.go which has a -// hIter struct with the first 2 values being key and value -// of the current iteration. // +// go 1.4 through go 1.23 (in runtime/hashmap.go or runtime/map.go) has a hIter struct +// with the first 2 values being pointers for key and value of the current iteration. +// The next 6 values are pointers, followed by numeric types (uintptr, uint8, bool, etc). // This *hIter is passed to mapiterinit, mapiternext, mapiterkey, mapiterelem. -// We bypass the reflect wrapper functions and just use the *hIter directly. // -// Though *hIter has many fields, we only care about the first 2. +// In go 1.24, swissmap was introduced, and it provides a compatibility layer +// for hIter (called linknameIter). This has only 2 pointer fields after the key and value pointers. +// +// Note: We bypass the reflect wrapper functions and just use the *hIter directly. // -// We directly embed this in unsafeMapIter below +// When 'faking' these types with our own, we MUST ensure that the GC sees the pointers +// appropriately. These are reflected in goversion_(no)swissmap_unsafe.go files. +// In these files, we pad the extra spaces appropriately. // -// hiter is typically about 12 words, but we just fill up unsafeMapIter to 32 words, -// so it fills multiple cache lines and can give some extra space to accomodate small growth. +// Note: the faux hIter/linknameIter is directly embedded in unsafeMapIter below type unsafeMapIter struct { mtyp, mptr unsafe.Pointer - k, v reflect.Value + k, v unsafeReflectValue kisref bool visref bool mapvalues bool @@ -1092,7 +1027,7 @@ type unsafeMapIter struct { it struct { key unsafe.Pointer value unsafe.Pointer - _ [20]uintptr // padding for other fields (to make up 32 words for enclosing struct) + _ unsafeMapIterPadding } } @@ -1112,18 +1047,16 @@ func (t *unsafeMapIter) Next() (r bool) { } if helperUnsafeDirectAssignMapEntry || t.kisref { - (*unsafeReflectValue)(unsafe.Pointer(&t.k)).ptr = t.it.key + t.k.ptr = t.it.key } else { - k := (*unsafeReflectValue)(unsafe.Pointer(&t.k)) - typedmemmove(k.typ, k.ptr, t.it.key) + typedmemmove(t.k.typ, t.k.ptr, t.it.key) } if t.mapvalues { if helperUnsafeDirectAssignMapEntry || t.visref { - (*unsafeReflectValue)(unsafe.Pointer(&t.v)).ptr = t.it.value + t.v.ptr = t.it.value } else { - v := (*unsafeReflectValue)(unsafe.Pointer(&t.v)) - typedmemmove(v.typ, v.ptr, t.it.value) + typedmemmove(t.v.typ, t.v.ptr, t.it.value) } } @@ -1131,11 +1064,11 @@ func (t *unsafeMapIter) Next() (r bool) { } func (t *unsafeMapIter) Key() (r reflect.Value) { - return t.k + return *(*reflect.Value)(unsafe.Pointer(&t.k)) } func (t *unsafeMapIter) Value() (r reflect.Value) { - return t.v + return *(*reflect.Value)(unsafe.Pointer(&t.v)) } func (t *unsafeMapIter) Done() {} @@ -1162,14 +1095,14 @@ func mapRange(t *mapIter, m, k, v reflect.Value, mapvalues bool) { // t.it = (*unsafeMapHashIter)(reflect_mapiterinit(t.mtyp, t.mptr)) mapiterinit(t.mtyp, t.mptr, unsafe.Pointer(&t.it)) - t.k = k + t.k = *(*unsafeReflectValue)(unsafe.Pointer(&k)) t.kisref = refBitset.isset(byte(k.Kind())) if mapvalues { - t.v = v + t.v = *(*unsafeReflectValue)(unsafe.Pointer(&v)) t.visref = refBitset.isset(byte(v.Kind())) } else { - t.v = reflect.Value{} + t.v = unsafeReflectValue{} } } @@ -1182,13 +1115,6 @@ func unsafeMapKVPtr(urv *unsafeReflectValue) unsafe.Pointer { return urv.ptr } -// func mapDelete(m, k reflect.Value) { -// var urv = (*unsafeReflectValue)(unsafe.Pointer(&k)) -// var kptr = unsafeMapKVPtr(urv) -// urv = (*unsafeReflectValue)(unsafe.Pointer(&m)) -// mapdelete(urv.typ, rv2ptr(urv), kptr) -// } - // return an addressable reflect value that can be used in mapRange and mapGet operations. // // all calls to mapGet or mapRange will call here to get an addressable reflect.Value. @@ -1205,53 +1131,39 @@ func mapAddrLoopvarRV(t reflect.Type, k reflect.Kind) (rv reflect.Value) { return } -// ---------- ENCODER optimized --------------- - -func (e *Encoder) jsondriver() *jsonEncDriver { - return (*jsonEncDriver)((*unsafeIntf)(unsafe.Pointer(&e.e)).ptr) -} - -func (d *Decoder) zerocopystate() bool { - return d.decByteState == decByteStateZerocopy && d.h.ZeroCopy -} - -func (d *Decoder) stringZC(v []byte) (s string) { - // MARKER: inline zerocopystate directly so genHelper forwarding function fits within inlining cost - - // if d.zerocopystate() { - if d.decByteState == decByteStateZerocopy && d.h.ZeroCopy { - return stringView(v) - } - return d.string(v) +func makeMapReflect(typ reflect.Type, size int) (rv reflect.Value) { + t := (*unsafeIntf)(unsafe.Pointer(&typ)).ptr + urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) + urv.typ = t + urv.flag = uintptr(reflect.Map) + urv.ptr = makemap(t, size, nil) + return } -func (d *Decoder) mapKeyString(callFnRvk *bool, kstrbs, kstr2bs *[]byte) string { - if !d.zerocopystate() { - *callFnRvk = true - if d.decByteState == decByteStateReuseBuf { - *kstrbs = append((*kstrbs)[:0], (*kstr2bs)...) - *kstr2bs = *kstrbs - } - } - return stringView(*kstr2bs) -} - -// ---------- DECODER optimized --------------- - -func (d *Decoder) jsondriver() *jsonDecDriver { - return (*jsonDecDriver)((*unsafeIntf)(unsafe.Pointer(&d.d)).ptr) +func (d *decoderBase) bytes2Str(in []byte, state dBytesAttachState) (s string, mutable bool) { + return stringView(in), state <= dBytesAttachBuffer } // ---------- structFieldInfo optimized --------------- -func (n *structFieldInfoPathNode) rvField(v reflect.Value) (rv reflect.Value) { +func (n *structFieldInfoNode) rvField(v reflect.Value) (rv reflect.Value) { // we already know this is exported, and maybe embedded (based on what si says) uv := (*unsafeReflectValue)(unsafe.Pointer(&v)) + urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) // clear flagEmbedRO if necessary, and inherit permission bits from v urv.flag = uv.flag&(unsafeFlagStickyRO|unsafeFlagIndir|unsafeFlagAddr) | uintptr(n.kind) urv.typ = ((*unsafeIntf)(unsafe.Pointer(&n.typ))).ptr urv.ptr = unsafe.Pointer(uintptr(uv.ptr) + uintptr(n.offset)) + + // *(*unsafeReflectValue)(unsafe.Pointer(&rv)) = unsafeReflectValue{ + // unsafeIntf: unsafeIntf{ + // typ: ((*unsafeIntf)(unsafe.Pointer(&n.typ))).ptr, + // ptr: unsafe.Pointer(uintptr(uv.ptr) + uintptr(n.offset)), + // }, + // flag: uv.flag&(unsafeFlagStickyRO|unsafeFlagIndir|unsafeFlagAddr) | uintptr(n.kind), + // } + return } @@ -1299,10 +1211,6 @@ func unsafeNew(typ unsafe.Pointer) unsafe.Pointer { // failing with "error: undefined reference" error. // however, runtime.{mallocgc, newarray} are supported, so use that instead. -//go:linkname memmove runtime.memmove -//go:noescape -func memmove(to, from unsafe.Pointer, n uintptr) - //go:linkname mallocgc runtime.mallocgc //go:noescape func mallocgc(size uintptr, typ unsafe.Pointer, needzero bool) unsafe.Pointer @@ -1319,10 +1227,6 @@ func mapiterinit(typ unsafe.Pointer, m unsafe.Pointer, it unsafe.Pointer) //go:noescape func mapiternext(it unsafe.Pointer) (key unsafe.Pointer) -//go:linkname mapdelete runtime.mapdelete -//go:noescape -func mapdelete(typ unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) - //go:linkname mapassign runtime.mapassign //go:noescape func mapassign(typ unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) unsafe.Pointer @@ -1331,6 +1235,10 @@ func mapassign(typ unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) unsafe. //go:noescape func mapaccess2(typ unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) (val unsafe.Pointer, ok bool) +//go:linkname makemap runtime.makemap +//go:noescape +func makemap(typ unsafe.Pointer, size int, h unsafe.Pointer) unsafe.Pointer + // reflect.typed{memmove, memclr, slicecopy} will handle checking if the type has pointers or not, // and if a writeBarrier is needed, before delegating to the right method in the runtime. // diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_gc.go b/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_gc.go index a5c7d59a0..7d1349304 100644 --- a/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_gc.go +++ b/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_gc.go @@ -2,7 +2,6 @@ // Use of this source code is governed by a MIT license found in the LICENSE file. //go:build !safe && !codec.safe && !appengine && go1.9 && gc -// +build !safe,!codec.safe,!appengine,go1.9,gc package codec @@ -24,8 +23,67 @@ const ( mapMaxElemSize = 128 ) -func unsafeGrowslice(typ unsafe.Pointer, old unsafeSlice, cap, incr int) (v unsafeSlice) { - return growslice(typ, old, cap+incr) +type mapKeyFastKind uint8 + +const ( + mapKeyFastKindAny = iota + 1 + mapKeyFastKind32 + mapKeyFastKind32ptr + mapKeyFastKind64 + mapKeyFastKind64ptr + mapKeyFastKindStr +) + +var mapKeyFastKindVals [32]mapKeyFastKind + +type mapReqParams struct { + kfast mapKeyFastKind + ref bool + indirect bool +} + +func getMapReqParams(ti *typeInfo) (r mapReqParams) { + r.indirect = mapStoresElemIndirect(uintptr(ti.elemsize)) + r.ref = refBitset.isset(ti.elemkind) + r.kfast = mapKeyFastKindFor(reflect.Kind(ti.keykind)) + return +} + +func init() { + xx := func(f mapKeyFastKind, k ...reflect.Kind) { + for _, v := range k { + mapKeyFastKindVals[byte(v)&31] = f // 'v % 32' equal to 'v & 31' + } + } + + var f mapKeyFastKind + + f = mapKeyFastKind64 + if wordSizeBits == 32 { + f = mapKeyFastKind32 + } + xx(f, reflect.Int, reflect.Uint, reflect.Uintptr) + + f = mapKeyFastKind64ptr + if wordSizeBits == 32 { + f = mapKeyFastKind32ptr + } + xx(f, reflect.Ptr) + + xx(mapKeyFastKindStr, reflect.String) + xx(mapKeyFastKind32, reflect.Uint32, reflect.Int32, reflect.Float32) + xx(mapKeyFastKind64, reflect.Uint64, reflect.Int64, reflect.Float64) +} + +func mapKeyFastKindFor(k reflect.Kind) mapKeyFastKind { + return mapKeyFastKindVals[k&31] +} + +func unsafeGrowslice(typ unsafe.Pointer, old unsafeSlice, cap, incr int) (s unsafeSlice) { + // culled from GOROOT/runtime/slice.go + s = rtgrowslice(old.Data, old.Cap+incr, old.Cap, incr, typ) + s.Len = old.Len + return } // func rvType(rv reflect.Value) reflect.Type { @@ -43,7 +101,7 @@ func mapStoresElemIndirect(elemsize uintptr) bool { return elemsize > mapMaxElemSize } -func mapSet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, valIsRef bool) { +func mapSet(m, k, v reflect.Value, p mapReqParams) { // valIsRef var urv = (*unsafeReflectValue)(unsafe.Pointer(&k)) var kptr = unsafeMapKVPtr(urv) urv = (*unsafeReflectValue)(unsafe.Pointer(&v)) @@ -60,14 +118,15 @@ func mapSet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, va // Sometimes, we got vvptr == nil when we dereferenced vvptr (if valIsIndirect). // Consequently, only use fastXXX functions if !valIsIndirect - if valIsIndirect { + if p.indirect { vvptr = mapassign(urv.typ, mptr, kptr) - typedmemmove(vtyp, vvptr, vptr) - // reflect_mapassign(urv.typ, mptr, kptr, vptr) - return + // typedmemmove(vtyp, vvptr, vptr) + // // reflect_mapassign(urv.typ, mptr, kptr, vptr) + // return + goto END } - switch keyFastKind { + switch p.kfast { case mapKeyFastKind32: vvptr = mapassign_fast32(urv.typ, mptr, *(*uint32)(kptr)) case mapKeyFastKind32ptr: @@ -82,14 +141,14 @@ func mapSet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, va vvptr = mapassign(urv.typ, mptr, kptr) } - // if keyFastKind != 0 && valIsIndirect { + // if p.kfast != 0 && valIsIndirect { // vvptr = *(*unsafe.Pointer)(vvptr) // } - +END: typedmemmove(vtyp, vvptr, vptr) } -func mapGet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, valIsRef bool) (_ reflect.Value) { +func mapGet(m, k, v reflect.Value, p mapReqParams) (_ reflect.Value) { var urv = (*unsafeReflectValue)(unsafe.Pointer(&k)) var kptr = unsafeMapKVPtr(urv) urv = (*unsafeReflectValue)(unsafe.Pointer(&m)) @@ -101,7 +160,7 @@ func mapGet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, va // Note that mapaccess2_fastXXX functions do not check if the value needs to be copied. // if they do, we should dereference the pointer and return that - switch keyFastKind { + switch p.kfast { case mapKeyFastKind32, mapKeyFastKind32ptr: vvptr, ok = mapaccess2_fast32(urv.typ, mptr, *(*uint32)(kptr)) case mapKeyFastKind64, mapKeyFastKind64ptr: @@ -118,9 +177,9 @@ func mapGet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, va urv = (*unsafeReflectValue)(unsafe.Pointer(&v)) - if keyFastKind != 0 && valIsIndirect { + if p.kfast != 0 && p.indirect { urv.ptr = *(*unsafe.Pointer)(vvptr) - } else if helperUnsafeDirectAssignMapEntry || valIsRef { + } else if helperUnsafeDirectAssignMapEntry || p.ref { urv.ptr = vvptr } else { typedmemmove(urv.typ, urv.ptr, vvptr) @@ -129,13 +188,11 @@ func mapGet(m, k, v reflect.Value, keyFastKind mapKeyFastKind, valIsIndirect, va return v } +// ---- + //go:linkname unsafeZeroArr runtime.zeroVal var unsafeZeroArr [1024]byte -// //go:linkname rvPtrToType reflect.toType -// //go:noescape -// func rvPtrToType(typ unsafe.Pointer) reflect.Type - //go:linkname mapassign_fast32 runtime.mapassign_fast32 //go:noescape func mapassign_fast32(typ unsafe.Pointer, m unsafe.Pointer, key uint32) unsafe.Pointer @@ -167,3 +224,19 @@ func mapaccess2_fast64(typ unsafe.Pointer, m unsafe.Pointer, key uint64) (val un //go:linkname mapaccess2_faststr runtime.mapaccess2_faststr //go:noescape func mapaccess2_faststr(typ unsafe.Pointer, m unsafe.Pointer, key string) (val unsafe.Pointer, ok bool) + +//go:linkname rtgrowslice runtime.growslice +//go:noescape +func rtgrowslice(oldPtr unsafe.Pointer, newLen, oldCap, num int, typ unsafe.Pointer) unsafeSlice + +// ---- + +// //go:linkname rvPtrToType reflect.toType +// //go:noescape +// func rvPtrToType(typ unsafe.Pointer) reflect.Type + +// //go:linkname growslice reflect.growslice +// //go:noescape +// func growslice(typ unsafe.Pointer, old unsafeSlice, cap int) unsafeSlice + +// ---- diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_not_gc.go b/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_not_gc.go index bd9fdedb6..e33db296e 100644 --- a/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_not_gc.go +++ b/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_not_gc.go @@ -2,7 +2,6 @@ // Use of this source code is governed by a MIT license found in the LICENSE file. //go:build !safe && !codec.safe && !appengine && go1.9 && !gc -// +build !safe,!codec.safe,!appengine,go1.9,!gc package codec @@ -14,6 +13,15 @@ import ( var unsafeZeroArr [1024]byte +type mapReqParams struct { + ref bool +} + +func getMapReqParams(ti *typeInfo) (r mapReqParams) { + r.ref = refBitset.isset(ti.elemkind) + return +} + // runtime.growslice does not work with gccgo, failing with "growslice: cap out of range" error. // consequently, we just call newarray followed by typedslicecopy directly. @@ -31,18 +39,11 @@ func unsafeGrowslice(typ unsafe.Pointer, old unsafeSlice, cap, incr int) (v unsa return } -// func unsafeNew(t reflect.Type, typ unsafe.Pointer) unsafe.Pointer { -// rv := reflect.New(t) -// return ((*unsafeReflectValue)(unsafe.Pointer(&rv))).ptr -// } - // runtime.{mapassign_fastXXX, mapaccess2_fastXXX} are not supported in gollvm, // failing with "error: undefined reference" error. // so we just use runtime.{mapassign, mapaccess2} directly -func mapStoresElemIndirect(elemsize uintptr) bool { return false } - -func mapSet(m, k, v reflect.Value, _ mapKeyFastKind, _, valIsRef bool) { +func mapSet(m, k, v reflect.Value, p mapReqParams) { var urv = (*unsafeReflectValue)(unsafe.Pointer(&k)) var kptr = unsafeMapKVPtr(urv) urv = (*unsafeReflectValue)(unsafe.Pointer(&v)) @@ -56,7 +57,7 @@ func mapSet(m, k, v reflect.Value, _ mapKeyFastKind, _, valIsRef bool) { typedmemmove(vtyp, vvptr, vptr) } -func mapGet(m, k, v reflect.Value, _ mapKeyFastKind, _, valIsRef bool) (_ reflect.Value) { +func mapGet(m, k, v reflect.Value, p mapReqParams) (_ reflect.Value) { var urv = (*unsafeReflectValue)(unsafe.Pointer(&k)) var kptr = unsafeMapKVPtr(urv) urv = (*unsafeReflectValue)(unsafe.Pointer(&m)) @@ -70,7 +71,7 @@ func mapGet(m, k, v reflect.Value, _ mapKeyFastKind, _, valIsRef bool) (_ reflec urv = (*unsafeReflectValue)(unsafe.Pointer(&v)) - if helperUnsafeDirectAssignMapEntry || valIsRef { + if helperUnsafeDirectAssignMapEntry || p.ref { urv.ptr = vvptr } else { typedmemmove(urv.typ, urv.ptr, vvptr) diff --git a/vendor/github.com/ugorji/go/codec/init.mono.go b/vendor/github.com/ugorji/go/codec/init.mono.go new file mode 100644 index 000000000..f4133b026 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/init.mono.go @@ -0,0 +1,130 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build !notmono && !codec.notmono + +package codec + +import "io" + +func callMake(v interface{}) {} + +type encWriter interface{ encWriterI } +type decReader interface{ decReaderI } +type encDriver interface{ encDriverI } +type decDriver interface{ decDriverI } + +func (h *SimpleHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriverSimpleBytes{}.newEncoderBytes(out, h) +} + +func (h *SimpleHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriverSimpleIO{}.newEncoderIO(w, h) +} + +func (h *SimpleHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriverSimpleBytes{}.newDecoderBytes(in, h) +} + +func (h *SimpleHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriverSimpleIO{}.newDecoderIO(r, h) +} + +func (h *JsonHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriverJsonBytes{}.newEncoderBytes(out, h) +} + +func (h *JsonHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriverJsonIO{}.newEncoderIO(w, h) +} + +func (h *JsonHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriverJsonBytes{}.newDecoderBytes(in, h) +} + +func (h *JsonHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriverJsonIO{}.newDecoderIO(r, h) +} + +func (h *MsgpackHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriverMsgpackBytes{}.newEncoderBytes(out, h) +} + +func (h *MsgpackHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriverMsgpackIO{}.newEncoderIO(w, h) +} + +func (h *MsgpackHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriverMsgpackBytes{}.newDecoderBytes(in, h) +} + +func (h *MsgpackHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriverMsgpackIO{}.newDecoderIO(r, h) +} + +func (h *BincHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriverBincBytes{}.newEncoderBytes(out, h) +} + +func (h *BincHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriverBincIO{}.newEncoderIO(w, h) +} + +func (h *BincHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriverBincBytes{}.newDecoderBytes(in, h) +} + +func (h *BincHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriverBincIO{}.newDecoderIO(r, h) +} + +func (h *CborHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriverCborBytes{}.newEncoderBytes(out, h) +} + +func (h *CborHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriverCborIO{}.newEncoderIO(w, h) +} + +func (h *CborHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriverCborBytes{}.newDecoderBytes(in, h) +} + +func (h *CborHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriverCborIO{}.newDecoderIO(r, h) +} + +var ( + bincFpEncIO = helperEncDriverBincIO{}.fastpathEList() + bincFpEncBytes = helperEncDriverBincBytes{}.fastpathEList() + bincFpDecIO = helperDecDriverBincIO{}.fastpathDList() + bincFpDecBytes = helperDecDriverBincBytes{}.fastpathDList() +) + +var ( + cborFpEncIO = helperEncDriverCborIO{}.fastpathEList() + cborFpEncBytes = helperEncDriverCborBytes{}.fastpathEList() + cborFpDecIO = helperDecDriverCborIO{}.fastpathDList() + cborFpDecBytes = helperDecDriverCborBytes{}.fastpathDList() +) + +var ( + jsonFpEncIO = helperEncDriverJsonIO{}.fastpathEList() + jsonFpEncBytes = helperEncDriverJsonBytes{}.fastpathEList() + jsonFpDecIO = helperDecDriverJsonIO{}.fastpathDList() + jsonFpDecBytes = helperDecDriverJsonBytes{}.fastpathDList() +) + +var ( + msgpackFpEncIO = helperEncDriverMsgpackIO{}.fastpathEList() + msgpackFpEncBytes = helperEncDriverMsgpackBytes{}.fastpathEList() + msgpackFpDecIO = helperDecDriverMsgpackIO{}.fastpathDList() + msgpackFpDecBytes = helperDecDriverMsgpackBytes{}.fastpathDList() +) + +var ( + simpleFpEncIO = helperEncDriverSimpleIO{}.fastpathEList() + simpleFpEncBytes = helperEncDriverSimpleBytes{}.fastpathEList() + simpleFpDecIO = helperDecDriverSimpleIO{}.fastpathDList() + simpleFpDecBytes = helperDecDriverSimpleBytes{}.fastpathDList() +) diff --git a/vendor/github.com/ugorji/go/codec/init.notmono.go b/vendor/github.com/ugorji/go/codec/init.notmono.go new file mode 100644 index 000000000..b03fb8503 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/init.notmono.go @@ -0,0 +1,313 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +//go:build notmono || codec.notmono + +package codec + +import ( + "io" +) + +// This contains all the iniatializations of generics. +// Putting it into one file, ensures that we can go generics or not. + +type maker interface{ Make() } + +func callMake(v interface{}) { + v.(maker).Make() +} + +// ---- (writer.go) + +type encWriter interface { + bufioEncWriterM | bytesEncAppenderM + encWriterI +} + +type bytesEncAppenderM struct { + *bytesEncAppender +} + +func (z *bytesEncAppenderM) Make() { + z.bytesEncAppender = new(bytesEncAppender) + z.out = &bytesEncAppenderDefOut +} + +type bufioEncWriterM struct { + *bufioEncWriter +} + +func (z *bufioEncWriterM) Make() { + z.bufioEncWriter = new(bufioEncWriter) + z.w = io.Discard +} + +// ---- reader.go + +type decReader interface { + bytesDecReaderM | ioDecReaderM + + decReaderI +} + +type bytesDecReaderM struct { + *bytesDecReader +} + +func (z *bytesDecReaderM) Make() { + z.bytesDecReader = new(bytesDecReader) +} + +type ioDecReaderM struct { + *ioDecReader +} + +func (z *ioDecReaderM) Make() { + z.ioDecReader = new(ioDecReader) +} + +// type helperEncWriter[T encWriter] struct{} +// type helperDecReader[T decReader] struct{} +// func (helperDecReader[T]) decByteSlice(r T, clen, maxInitLen int, bs []byte) (bsOut []byte) { + +// ---- (encode.go) + +type encDriver interface { + simpleEncDriverM[bufioEncWriterM] | + simpleEncDriverM[bytesEncAppenderM] | + jsonEncDriverM[bufioEncWriterM] | + jsonEncDriverM[bytesEncAppenderM] | + cborEncDriverM[bufioEncWriterM] | + cborEncDriverM[bytesEncAppenderM] | + msgpackEncDriverM[bufioEncWriterM] | + msgpackEncDriverM[bytesEncAppenderM] | + bincEncDriverM[bufioEncWriterM] | + bincEncDriverM[bytesEncAppenderM] + + encDriverI +} + +// ---- (decode.go) + +type decDriver interface { + simpleDecDriverM[bytesDecReaderM] | + simpleDecDriverM[ioDecReaderM] | + jsonDecDriverM[bytesDecReaderM] | + jsonDecDriverM[ioDecReaderM] | + cborDecDriverM[bytesDecReaderM] | + cborDecDriverM[ioDecReaderM] | + msgpackDecDriverM[bytesDecReaderM] | + msgpackDecDriverM[ioDecReaderM] | + bincDecDriverM[bytesDecReaderM] | + bincDecDriverM[ioDecReaderM] + + decDriverI +} + +// Below: .go files + +// ---- (binc.go) + +type bincEncDriverM[T encWriter] struct { + *bincEncDriver[T] +} + +func (d *bincEncDriverM[T]) Make() { + d.bincEncDriver = new(bincEncDriver[T]) +} + +type bincDecDriverM[T decReader] struct { + *bincDecDriver[T] +} + +func (d *bincDecDriverM[T]) Make() { + d.bincDecDriver = new(bincDecDriver[T]) +} + +var ( + bincFpEncIO = helperEncDriver[bincEncDriverM[bufioEncWriterM]]{}.fastpathEList() + bincFpEncBytes = helperEncDriver[bincEncDriverM[bytesEncAppenderM]]{}.fastpathEList() + bincFpDecIO = helperDecDriver[bincDecDriverM[ioDecReaderM]]{}.fastpathDList() + bincFpDecBytes = helperDecDriver[bincDecDriverM[bytesDecReaderM]]{}.fastpathDList() +) + +// ---- (cbor.go) + +type cborEncDriverM[T encWriter] struct { + *cborEncDriver[T] +} + +func (d *cborEncDriverM[T]) Make() { + d.cborEncDriver = new(cborEncDriver[T]) +} + +type cborDecDriverM[T decReader] struct { + *cborDecDriver[T] +} + +func (d *cborDecDriverM[T]) Make() { + d.cborDecDriver = new(cborDecDriver[T]) +} + +var ( + cborFpEncIO = helperEncDriver[cborEncDriverM[bufioEncWriterM]]{}.fastpathEList() + cborFpEncBytes = helperEncDriver[cborEncDriverM[bytesEncAppenderM]]{}.fastpathEList() + cborFpDecIO = helperDecDriver[cborDecDriverM[ioDecReaderM]]{}.fastpathDList() + cborFpDecBytes = helperDecDriver[cborDecDriverM[bytesDecReaderM]]{}.fastpathDList() +) + +// ---- (json.go) + +type jsonEncDriverM[T encWriter] struct { + *jsonEncDriver[T] +} + +func (d *jsonEncDriverM[T]) Make() { + d.jsonEncDriver = new(jsonEncDriver[T]) +} + +type jsonDecDriverM[T decReader] struct { + *jsonDecDriver[T] +} + +func (d *jsonDecDriverM[T]) Make() { + d.jsonDecDriver = new(jsonDecDriver[T]) +} + +var ( + jsonFpEncIO = helperEncDriver[jsonEncDriverM[bufioEncWriterM]]{}.fastpathEList() + jsonFpEncBytes = helperEncDriver[jsonEncDriverM[bytesEncAppenderM]]{}.fastpathEList() + jsonFpDecIO = helperDecDriver[jsonDecDriverM[ioDecReaderM]]{}.fastpathDList() + jsonFpDecBytes = helperDecDriver[jsonDecDriverM[bytesDecReaderM]]{}.fastpathDList() +) + +// ---- (msgpack.go) + +type msgpackEncDriverM[T encWriter] struct { + *msgpackEncDriver[T] +} + +func (d *msgpackEncDriverM[T]) Make() { + d.msgpackEncDriver = new(msgpackEncDriver[T]) +} + +type msgpackDecDriverM[T decReader] struct { + *msgpackDecDriver[T] +} + +func (d *msgpackDecDriverM[T]) Make() { + d.msgpackDecDriver = new(msgpackDecDriver[T]) +} + +var ( + msgpackFpEncIO = helperEncDriver[msgpackEncDriverM[bufioEncWriterM]]{}.fastpathEList() + msgpackFpEncBytes = helperEncDriver[msgpackEncDriverM[bytesEncAppenderM]]{}.fastpathEList() + msgpackFpDecIO = helperDecDriver[msgpackDecDriverM[ioDecReaderM]]{}.fastpathDList() + msgpackFpDecBytes = helperDecDriver[msgpackDecDriverM[bytesDecReaderM]]{}.fastpathDList() +) + +// ---- (simple.go) + +type simpleEncDriverM[T encWriter] struct { + *simpleEncDriver[T] +} + +func (d *simpleEncDriverM[T]) Make() { + d.simpleEncDriver = new(simpleEncDriver[T]) +} + +type simpleDecDriverM[T decReader] struct { + *simpleDecDriver[T] +} + +func (d *simpleDecDriverM[T]) Make() { + d.simpleDecDriver = new(simpleDecDriver[T]) +} + +var ( + simpleFpEncIO = helperEncDriver[simpleEncDriverM[bufioEncWriterM]]{}.fastpathEList() + simpleFpEncBytes = helperEncDriver[simpleEncDriverM[bytesEncAppenderM]]{}.fastpathEList() + simpleFpDecIO = helperDecDriver[simpleDecDriverM[ioDecReaderM]]{}.fastpathDList() + simpleFpDecBytes = helperDecDriver[simpleDecDriverM[bytesDecReaderM]]{}.fastpathDList() +) + +func (h *SimpleHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriver[simpleEncDriverM[bytesEncAppenderM]]{}.newEncoderBytes(out, h) +} + +func (h *SimpleHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriver[simpleEncDriverM[bufioEncWriterM]]{}.newEncoderIO(w, h) +} + +func (h *SimpleHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriver[simpleDecDriverM[bytesDecReaderM]]{}.newDecoderBytes(in, h) +} + +func (h *SimpleHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriver[simpleDecDriverM[ioDecReaderM]]{}.newDecoderIO(r, h) +} + +func (h *JsonHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriver[jsonEncDriverM[bytesEncAppenderM]]{}.newEncoderBytes(out, h) +} + +func (h *JsonHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriver[jsonEncDriverM[bufioEncWriterM]]{}.newEncoderIO(w, h) +} + +func (h *JsonHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriver[jsonDecDriverM[bytesDecReaderM]]{}.newDecoderBytes(in, h) +} + +func (h *JsonHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriver[jsonDecDriverM[ioDecReaderM]]{}.newDecoderIO(r, h) +} + +func (h *MsgpackHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriver[msgpackEncDriverM[bytesEncAppenderM]]{}.newEncoderBytes(out, h) +} + +func (h *MsgpackHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriver[msgpackEncDriverM[bufioEncWriterM]]{}.newEncoderIO(w, h) +} + +func (h *MsgpackHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriver[msgpackDecDriverM[bytesDecReaderM]]{}.newDecoderBytes(in, h) +} + +func (h *MsgpackHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriver[msgpackDecDriverM[ioDecReaderM]]{}.newDecoderIO(r, h) +} + +func (h *CborHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriver[cborEncDriverM[bytesEncAppenderM]]{}.newEncoderBytes(out, h) +} + +func (h *CborHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriver[cborEncDriverM[bufioEncWriterM]]{}.newEncoderIO(w, h) +} + +func (h *CborHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriver[cborDecDriverM[bytesDecReaderM]]{}.newDecoderBytes(in, h) +} + +func (h *CborHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriver[cborDecDriverM[ioDecReaderM]]{}.newDecoderIO(r, h) +} + +func (h *BincHandle) newEncoderBytes(out *[]byte) encoderI { + return helperEncDriver[bincEncDriverM[bytesEncAppenderM]]{}.newEncoderBytes(out, h) +} + +func (h *BincHandle) newEncoder(w io.Writer) encoderI { + return helperEncDriver[bincEncDriverM[bufioEncWriterM]]{}.newEncoderIO(w, h) +} + +func (h *BincHandle) newDecoderBytes(in []byte) decoderI { + return helperDecDriver[bincDecDriverM[bytesDecReaderM]]{}.newDecoderBytes(in, h) +} + +func (h *BincHandle) newDecoder(r io.Reader) decoderI { + return helperDecDriver[bincDecDriverM[ioDecReaderM]]{}.newDecoderIO(r, h) +} diff --git a/vendor/github.com/ugorji/go/codec/json.base.go b/vendor/github.com/ugorji/go/codec/json.base.go new file mode 100644 index 000000000..d87403393 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/json.base.go @@ -0,0 +1,504 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding/base32" + "encoding/base64" + "errors" + "math" + "reflect" + "strings" + "time" + "unicode" +) + +//-------------------------------- + +// jsonLits and jsonLitb are defined at the package level, +// so they are guaranteed to be stored efficiently, making +// for better append/string comparison/etc. +// +// (anecdotal evidence from some benchmarking on go 1.20 devel in 20220104) +const jsonLits = `"true"false"null"{}[]` + +const ( + jsonLitT = 1 + jsonLitF = 6 + jsonLitN = 12 + jsonLitM = 17 + jsonLitA = 19 +) + +var jsonLitb = []byte(jsonLits) +var jsonNull = jsonLitb[jsonLitN : jsonLitN+4] +var jsonArrayEmpty = jsonLitb[jsonLitA : jsonLitA+2] +var jsonMapEmpty = jsonLitb[jsonLitM : jsonLitM+2] + +const jsonEncodeUintSmallsString = "" + + "00010203040506070809" + + "10111213141516171819" + + "20212223242526272829" + + "30313233343536373839" + + "40414243444546474849" + + "50515253545556575859" + + "60616263646566676869" + + "70717273747576777879" + + "80818283848586878889" + + "90919293949596979899" + +var jsonEncodeUintSmallsStringBytes = (*[len(jsonEncodeUintSmallsString)]byte)([]byte(jsonEncodeUintSmallsString)) + +const ( + jsonU4Chk2 = '0' + jsonU4Chk1 = 'a' - 10 + jsonU4Chk0 = 'A' - 10 +) + +const ( + // If !jsonValidateSymbols, decoding will be faster, by skipping some checks: + // - If we see first character of null, false or true, + // do not validate subsequent characters. + // - e.g. if we see a n, assume null and skip next 3 characters, + // and do not validate they are ull. + // P.S. Do not expect a significant decoding boost from this. + jsonValidateSymbols = true + + // jsonEscapeMultiByteUnicodeSep controls whether some unicode characters + // that are valid json but may bomb in some contexts are escaped during encoeing. + // + // U+2028 is LINE SEPARATOR. U+2029 is PARAGRAPH SEPARATOR. + // Both technically valid JSON, but bomb on JSONP, so fix here unconditionally. + jsonEscapeMultiByteUnicodeSep = true + + // jsonNakedBoolNumInQuotedStr is used during decoding into a blank interface{} + // to control whether we detect quoted values of bools and null where a map key is expected, + // and treat as nil, true or false. + jsonNakedBoolNumInQuotedStr = true +) + +var ( + // jsonTabs and jsonSpaces are used as caches for indents + jsonTabs [32]byte + jsonSpaces [128]byte + + jsonHexEncoder hexEncoder + // jsonTimeLayout is used to validate time layouts. + // Unfortunately, we couldn't compare time.Time effectively, so punted. + // jsonTimeLayout time.Time +) + +func init() { + for i := 0; i < len(jsonTabs); i++ { + jsonTabs[i] = '\t' + } + for i := 0; i < len(jsonSpaces); i++ { + jsonSpaces[i] = ' ' + } + // jsonTimeLayout, err := time.Parse(time.Layout, time.Layout) + // halt.onerror(err) + // jsonTimeLayout = jsonTimeLayout.Round(time.Second).UTC() +} + +// ---------------- + +type jsonBytesFmt uint8 + +const ( + jsonBytesFmtArray jsonBytesFmt = iota + 1 + jsonBytesFmtBase64 + jsonBytesFmtBase64url + jsonBytesFmtBase32 + jsonBytesFmtBase32hex + jsonBytesFmtBase16 + + jsonBytesFmtHex = jsonBytesFmtBase16 +) + +type jsonTimeFmt uint8 + +const ( + jsonTimeFmtStringLayout jsonTimeFmt = iota + 1 + jsonTimeFmtUnix + jsonTimeFmtUnixMilli + jsonTimeFmtUnixMicro + jsonTimeFmtUnixNano +) + +type jsonBytesFmter = bytesEncoder + +type jsonHandleOpts struct { + rawext bool + // bytesFmt used during encode to determine how to encode []byte + bytesFmt jsonBytesFmt + // timeFmt used during encode to determine how to encode a time.Time + timeFmt jsonTimeFmt + // timeFmtNum used during decode to decode a time.Time from an int64 in the stream + timeFmtNum jsonTimeFmt + // timeFmtLayouts used on decode, to try to parse time.Time until successful + timeFmtLayouts []string + // byteFmters used on decode, to try to parse []byte from a UTF-8 string encoding (e.g. base64) + byteFmters []jsonBytesFmter +} + +func jsonCheckTimeLayout(s string) (ok bool) { + _, err := time.Parse(s, s) + // t...Equal(jsonTimeLayout) always returns false - unsure why + // return err == nil && t.Round(time.Second).UTC().Equal(jsonTimeLayout) + return err == nil +} + +func (x *jsonHandleOpts) reset(h *JsonHandle) { + x.timeFmt = 0 + x.timeFmtNum = 0 + x.timeFmtLayouts = x.timeFmtLayouts[:0] + if len(h.TimeFormat) != 0 { + switch h.TimeFormat[0] { + case "unix": + x.timeFmt = jsonTimeFmtUnix + case "unixmilli": + x.timeFmt = jsonTimeFmtUnixMilli + case "unixmicro": + x.timeFmt = jsonTimeFmtUnixMicro + case "unixnano": + x.timeFmt = jsonTimeFmtUnixNano + } + x.timeFmtNum = x.timeFmt + for _, v := range h.TimeFormat { + if !strings.HasPrefix(v, "unix") && jsonCheckTimeLayout(v) { + x.timeFmtLayouts = append(x.timeFmtLayouts, v) + } + } + } + if x.timeFmt == 0 { // both timeFmt and timeFmtNum are 0 + x.timeFmtNum = jsonTimeFmtUnix + x.timeFmt = jsonTimeFmtStringLayout + if len(x.timeFmtLayouts) == 0 { + x.timeFmtLayouts = append(x.timeFmtLayouts, time.RFC3339Nano) + } + } + + x.bytesFmt = 0 + x.byteFmters = x.byteFmters[:0] + var b64 bool + if len(h.BytesFormat) != 0 { + switch h.BytesFormat[0] { + case "array": + x.bytesFmt = jsonBytesFmtArray + case "base64": + x.bytesFmt = jsonBytesFmtBase64 + case "base64url": + x.bytesFmt = jsonBytesFmtBase64url + case "base32": + x.bytesFmt = jsonBytesFmtBase32 + case "base32hex": + x.bytesFmt = jsonBytesFmtBase32hex + case "base16", "hex": + x.bytesFmt = jsonBytesFmtBase16 + } + for _, v := range h.BytesFormat { + switch v { + // case "array": + case "base64": + x.byteFmters = append(x.byteFmters, base64.StdEncoding) + b64 = true + case "base64url": + x.byteFmters = append(x.byteFmters, base64.URLEncoding) + case "base32": + x.byteFmters = append(x.byteFmters, base32.StdEncoding) + case "base32hex": + x.byteFmters = append(x.byteFmters, base32.HexEncoding) + case "base16", "hex": + x.byteFmters = append(x.byteFmters, &jsonHexEncoder) + } + } + } + if x.bytesFmt == 0 { + // either len==0 OR gibberish was in the first element; resolve here + x.bytesFmt = jsonBytesFmtBase64 + if !b64 { // not present - so insert into pos 0 + x.byteFmters = append(x.byteFmters, nil) + copy(x.byteFmters[1:], x.byteFmters[0:]) + x.byteFmters[0] = base64.StdEncoding + } + } + // ---- + x.rawext = h.RawBytesExt != nil +} + +var jsonEncBoolStrs = [2][2]string{ + {jsonLits[jsonLitF : jsonLitF+5], jsonLits[jsonLitT : jsonLitT+4]}, + {jsonLits[jsonLitF-1 : jsonLitF+6], jsonLits[jsonLitT-1 : jsonLitT+5]}, +} + +func jsonEncodeUint(neg, quotes bool, u uint64, b *[48]byte) []byte { + // MARKER: use setByteAt/byteAt to elide the bounds-checks + // when we are sure that we don't go beyond the bounds. + + // MARKER: copied mostly from std library: strconv/itoa.go + // this should only be called on 64bit OS. + + var ss = jsonEncodeUintSmallsStringBytes[:] + + // typically, 19 or 20 bytes sufficient for decimal encoding a uint64 + var a = b[:24] + var i = uint(len(a)) + + if quotes { + i-- + setByteAt(a, i, '"') + // a[i] = '"' + } + var is, us uint // use uint, as those fit into a register on the platform + if cpu32Bit { + for u >= 1e9 { + q := u / 1e9 + us = uint(u - q*1e9) // u % 1e9 fits into a uint + for j := 4; j > 0; j-- { + is = us % 100 * 2 + us /= 100 + i -= 2 + setByteAt(a, i+1, byteAt(ss, is+1)) + setByteAt(a, i, byteAt(ss, is)) + } + i-- + setByteAt(a, i, byteAt(ss, us*2+1)) + u = q + } + // u is now < 1e9, so is guaranteed to fit into a uint + } + us = uint(u) + for us >= 100 { + is = us % 100 * 2 + us /= 100 + i -= 2 + setByteAt(a, i+1, byteAt(ss, is+1)) + setByteAt(a, i, byteAt(ss, is)) + // a[i+1], a[i] = ss[is+1], ss[is] + } + + // us < 100 + is = us * 2 + i-- + setByteAt(a, i, byteAt(ss, is+1)) + // a[i] = ss[is+1] + if us >= 10 { + i-- + setByteAt(a, i, byteAt(ss, is)) + // a[i] = ss[is] + } + if neg { + i-- + setByteAt(a, i, '-') + // a[i] = '-' + } + if quotes { + i-- + setByteAt(a, i, '"') + // a[i] = '"' + } + return a[i:] +} + +// MARKER: checkLitErr methods to prevent the got/expect parameters from escaping + +//go:noinline +func jsonCheckLitErr3(got, expect [3]byte) { + halt.errorf("expecting %s: got %s", expect, got) +} + +//go:noinline +func jsonCheckLitErr4(got, expect [4]byte) { + halt.errorf("expecting %s: got %s", expect, got) +} + +func jsonSlashURune(cs [4]byte) (rr uint32) { + for _, c := range cs { + // best to use explicit if-else + // - not a table, etc which involve memory loads, array lookup with bounds checks, etc + if c >= '0' && c <= '9' { + rr = rr*16 + uint32(c-jsonU4Chk2) + } else if c >= 'a' && c <= 'f' { + rr = rr*16 + uint32(c-jsonU4Chk1) + } else if c >= 'A' && c <= 'F' { + rr = rr*16 + uint32(c-jsonU4Chk0) + } else { + return unicode.ReplacementChar + } + } + return +} + +func jsonNakedNum(z *fauxUnion, bs []byte, preferFloat, signedInt bool) (err error) { + // Note: jsonNakedNum is NEVER called with a zero-length []byte + if preferFloat { + z.v = valueTypeFloat + z.f, err = parseFloat64(bs) + } else { + err = parseNumber(bs, z, signedInt) + } + return +} + +//---------------------- + +// JsonHandle is a handle for JSON encoding format. +// +// Json is comprehensively supported: +// - decodes numbers into interface{} as int, uint or float64 +// based on how the number looks and some config parameters e.g. PreferFloat, SignedInt, etc. +// - decode integers from float formatted numbers e.g. 1.27e+8 +// - decode any json value (numbers, bool, etc) from quoted strings +// - configurable way to encode/decode []byte . +// by default, encodes and decodes []byte using base64 Std Encoding +// - UTF-8 support for encoding and decoding +// +// It has better performance than the json library in the standard library, +// by leveraging the performance improvements of the codec library. +// +// In addition, it doesn't read more bytes than necessary during a decode, which allows +// reading multiple values from a stream containing json and non-json content. +// For example, a user can read a json value, then a cbor value, then a msgpack value, +// all from the same stream in sequence. +// +// Note that, when decoding quoted strings, invalid UTF-8 or invalid UTF-16 surrogate pairs are +// not treated as an error. Instead, they are replaced by the Unicode replacement character U+FFFD. +// +// Note also that the float values for NaN, +Inf or -Inf are encoded as null, +// as suggested by NOTE 4 of the ECMA-262 ECMAScript Language Specification 5.1 edition. +// see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf . +// +// Note the following behaviour differences vs std-library encoding/json package: +// - struct field names matched in case-sensitive manner +type JsonHandle struct { + textEncodingType + BasicHandle + + // Indent indicates how a value is encoded. + // - If positive, indent by that number of spaces. + // - If negative, indent by that number of tabs. + Indent int8 + + // IntegerAsString controls how integers (signed and unsigned) are encoded. + // + // Per the JSON Spec, JSON numbers are 64-bit floating point numbers. + // Consequently, integers > 2^53 cannot be represented as a JSON number without losing precision. + // This can be mitigated by configuring how to encode integers. + // + // IntegerAsString interpretes the following values: + // - if 'L', then encode integers > 2^53 as a json string. + // - if 'A', then encode all integers as a json string + // containing the exact integer representation as a decimal. + // - else encode all integers as a json number (default) + IntegerAsString byte + + // HTMLCharsAsIs controls how to encode some special characters to html: < > & + // + // By default, we encode them as \uXXX + // to prevent security holes when served from some browsers. + HTMLCharsAsIs bool + + // PreferFloat says that we will default to decoding a number as a float. + // If not set, we will examine the characters of the number and decode as an + // integer type if it doesn't have any of the characters [.eE]. + PreferFloat bool + + // TermWhitespace says that we add a whitespace character + // at the end of an encoding. + // + // The whitespace is important, especially if using numbers in a context + // where multiple items are written to a stream. + TermWhitespace bool + + // MapKeyAsString says to encode all map keys as strings. + // + // Use this to enforce strict json output. + // The only caveat is that nil value is ALWAYS written as null (never as "null") + MapKeyAsString bool + + // _ uint64 // padding (cache line) + + // Note: below, we store hardly-used items e.g. RawBytesExt. + // These values below may straddle a cache line, but they are hardly-used, + // so shouldn't contribute to false-sharing except in rare cases. + + // RawBytesExt, if configured, is used to encode and decode raw bytes in a custom way. + // If not configured, raw bytes are encoded to/from base64 text. + RawBytesExt InterfaceExt + + // TimeFormat is an array of strings representing a time.Time format, with each one being either + // a layout that honor the time.Time.Format specification. + // In addition, at most one of the set below (unix, unixmilli, unixmicro, unixnana) can be specified + // supporting encoding and decoding time as a number relative to the time epoch of Jan 1, 1970. + // + // During encode of a time.Time, the first entry in the array is used (defaults to RFC 3339). + // + // During decode, + // - if a string, then each of the layout formats will be tried in order until a time.Time is decoded. + // - if a number, then the sole unix entry is used. + TimeFormat []string + + // BytesFormat is an array of strings representing how bytes are encoded. + // + // Supported values are base64 (default), base64url, base32, base32hex, base16 (synonymous with hex) and array. + // + // array is a special value configuring that bytes are encoded as a sequence of numbers. + // + // During encode of a []byte, the first entry is used (defaults to base64 if none specified). + // + // During decode + // - if a string, then attempt decoding using each format in sequence until successful. + // - if an array, then decode normally + BytesFormat []string +} + +func (h *JsonHandle) isJson() bool { return true } + +// Name returns the name of the handle: json +func (h *JsonHandle) Name() string { return "json" } + +// func (h *JsonHandle) desc(bd byte) string { return str4byte(bd) } +func (h *JsonHandle) desc(bd byte) string { return string(bd) } + +func (h *JsonHandle) typical() bool { + return h.Indent == 0 && !h.MapKeyAsString && h.IntegerAsString != 'A' && h.IntegerAsString != 'L' +} + +// SetInterfaceExt sets an extension +func (h *JsonHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { + return h.SetExt(rt, tag, makeExt(ext)) +} + +func jsonFloatStrconvFmtPrec64(f float64) (fmt byte, prec int8) { + fmt = 'f' + prec = -1 + fbits := math.Float64bits(f) + abs := math.Float64frombits(fbits &^ (1 << 63)) + if abs == 0 || abs == 1 { + prec = 1 + } else if abs < 1e-6 || abs >= 1e21 { + fmt = 'e' + } else if noFrac64(fbits) { + prec = 1 + } + return +} + +func jsonFloatStrconvFmtPrec32(f float32) (fmt byte, prec int8) { + fmt = 'f' + prec = -1 + // directly handle Modf (to get fractions) and Abs (to get absolute) + fbits := math.Float32bits(f) + abs := math.Float32frombits(fbits &^ (1 << 31)) + if abs == 0 || abs == 1 { + prec = 1 + } else if abs < 1e-6 || abs >= 1e21 { + fmt = 'e' + } else if noFrac32(fbits) { + prec = 1 + } + return +} + +var errJsonNoBd = errors.New("descBd unsupported in json") diff --git a/vendor/github.com/ugorji/go/codec/json.fastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/json.fastpath.mono.generated.go new file mode 100644 index 000000000..b873b0aef --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/json.fastpath.mono.generated.go @@ -0,0 +1,12482 @@ +//go:build !notmono && !codec.notmono && !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathEJsonBytes struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderJsonBytes, *encFnInfo, reflect.Value) +} +type fastpathDJsonBytes struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderJsonBytes, *decFnInfo, reflect.Value) +} +type fastpathEsJsonBytes [56]fastpathEJsonBytes +type fastpathDsJsonBytes [56]fastpathDJsonBytes +type fastpathETJsonBytes struct{} +type fastpathDTJsonBytes struct{} + +func (helperEncDriverJsonBytes) fastpathEList() *fastpathEsJsonBytes { + var i uint = 0 + var s fastpathEsJsonBytes + fn := func(v interface{}, fe func(*encoderJsonBytes, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEJsonBytes{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderJsonBytes).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderJsonBytes).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderJsonBytes).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderJsonBytes).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderJsonBytes).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderJsonBytes).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderJsonBytes).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderJsonBytes).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderJsonBytes).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderJsonBytes).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderJsonBytes).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderJsonBytes).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderJsonBytes).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderJsonBytes).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderJsonBytes).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderJsonBytes).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderJsonBytes).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderJsonBytes).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderJsonBytes).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderJsonBytes).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderJsonBytes).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderJsonBytes).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderJsonBytes).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderJsonBytes).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderJsonBytes).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderJsonBytes).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderJsonBytes).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderJsonBytes).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderJsonBytes).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderJsonBytes).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderJsonBytes).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderJsonBytes).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderJsonBytes).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderJsonBytes).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderJsonBytes).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderJsonBytes).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderJsonBytes).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderJsonBytes).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderJsonBytes).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderJsonBytes).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderJsonBytes).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderJsonBytes).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderJsonBytes).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderJsonBytes).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderJsonBytes).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderJsonBytes).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderJsonBytes).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderJsonBytes).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderJsonBytes).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderJsonBytes).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderJsonBytes).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderJsonBytes).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderJsonBytes).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderJsonBytes).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderJsonBytes).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderJsonBytes).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverJsonBytes) fastpathDList() *fastpathDsJsonBytes { + var i uint = 0 + var s fastpathDsJsonBytes + fn := func(v interface{}, fd func(*decoderJsonBytes, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDJsonBytes{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderJsonBytes).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderJsonBytes).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderJsonBytes).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderJsonBytes).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderJsonBytes).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderJsonBytes).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderJsonBytes).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderJsonBytes).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderJsonBytes).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderJsonBytes).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderJsonBytes).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderJsonBytes).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderJsonBytes).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderJsonBytes).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderJsonBytes).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderJsonBytes).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderJsonBytes).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderJsonBytes).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderJsonBytes).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderJsonBytes).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderJsonBytes).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderJsonBytes).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderJsonBytes).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderJsonBytes).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderJsonBytes).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderJsonBytes).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderJsonBytes).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderJsonBytes).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderJsonBytes).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderJsonBytes).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderJsonBytes).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderJsonBytes).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderJsonBytes).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderJsonBytes).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderJsonBytes).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderJsonBytes).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderJsonBytes).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderJsonBytes).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderJsonBytes).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderJsonBytes).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderJsonBytes).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderJsonBytes).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderJsonBytes).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderJsonBytes).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderJsonBytes).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderJsonBytes).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderJsonBytes).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderJsonBytes).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderJsonBytes).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderJsonBytes).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderJsonBytes).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderJsonBytes).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderJsonBytes).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderJsonBytes).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderJsonBytes).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderJsonBytes).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverJsonBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderJsonBytes) bool { + var ft fastpathETJsonBytes + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderJsonBytes) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETJsonBytes) EncSliceIntfV(v []interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceIntfV(v []interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETJsonBytes) EncSliceStringV(v []string, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceStringV(v []string, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETJsonBytes) EncSliceBytesV(v [][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceBytesV(v [][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETJsonBytes) EncSliceFloat32V(v []float32, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceFloat32V(v []float32, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETJsonBytes) EncSliceFloat64V(v []float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceFloat64V(v []float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETJsonBytes) EncSliceUint8V(v []uint8, e *encoderJsonBytes) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETJsonBytes) EncAsMapSliceUint8V(v []uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETJsonBytes) EncSliceUint64V(v []uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceUint64V(v []uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETJsonBytes) EncSliceIntV(v []int, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceIntV(v []int, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETJsonBytes) EncSliceInt32V(v []int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceInt32V(v []int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETJsonBytes) EncSliceInt64V(v []int64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceInt64V(v []int64, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonBytes + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETJsonBytes) EncSliceBoolV(v []bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonBytes) EncAsMapSliceBoolV(v []bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETJsonBytes) EncMapStringIntfV(v map[string]interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETJsonBytes) EncMapStringStringV(v map[string]string, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETJsonBytes) EncMapStringBytesV(v map[string][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETJsonBytes) EncMapStringUint8V(v map[string]uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETJsonBytes) EncMapStringUint64V(v map[string]uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETJsonBytes) EncMapStringIntV(v map[string]int, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETJsonBytes) EncMapStringInt32V(v map[string]int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETJsonBytes) EncMapStringFloat64V(v map[string]float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETJsonBytes) EncMapStringBoolV(v map[string]bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETJsonBytes) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETJsonBytes) EncMapUint8StringV(v map[uint8]string, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETJsonBytes) EncMapUint8BytesV(v map[uint8][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETJsonBytes) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETJsonBytes) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETJsonBytes) EncMapUint8IntV(v map[uint8]int, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETJsonBytes) EncMapUint8Int32V(v map[uint8]int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETJsonBytes) EncMapUint8Float64V(v map[uint8]float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETJsonBytes) EncMapUint8BoolV(v map[uint8]bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETJsonBytes) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETJsonBytes) EncMapUint64StringV(v map[uint64]string, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETJsonBytes) EncMapUint64BytesV(v map[uint64][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETJsonBytes) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETJsonBytes) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETJsonBytes) EncMapUint64IntV(v map[uint64]int, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETJsonBytes) EncMapUint64Int32V(v map[uint64]int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETJsonBytes) EncMapUint64Float64V(v map[uint64]float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETJsonBytes) EncMapUint64BoolV(v map[uint64]bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETJsonBytes) EncMapIntIntfV(v map[int]interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETJsonBytes) EncMapIntStringV(v map[int]string, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETJsonBytes) EncMapIntBytesV(v map[int][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETJsonBytes) EncMapIntUint8V(v map[int]uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETJsonBytes) EncMapIntUint64V(v map[int]uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETJsonBytes) EncMapIntIntV(v map[int]int, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETJsonBytes) EncMapIntInt32V(v map[int]int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETJsonBytes) EncMapIntFloat64V(v map[int]float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETJsonBytes) EncMapIntBoolV(v map[int]bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETJsonBytes) EncMapInt32IntfV(v map[int32]interface{}, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETJsonBytes) EncMapInt32StringV(v map[int32]string, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETJsonBytes) EncMapInt32BytesV(v map[int32][]byte, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETJsonBytes) EncMapInt32Uint8V(v map[int32]uint8, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETJsonBytes) EncMapInt32Uint64V(v map[int32]uint64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETJsonBytes) EncMapInt32IntV(v map[int32]int, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETJsonBytes) EncMapInt32Int32V(v map[int32]int32, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETJsonBytes) EncMapInt32Float64V(v map[int32]float64, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonBytes) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonBytes{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETJsonBytes) EncMapInt32BoolV(v map[int32]bool, e *encoderJsonBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverJsonBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderJsonBytes) bool { + var ft fastpathDTJsonBytes + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderJsonBytes) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTJsonBytes) DecSliceIntfY(v []interface{}, d *decoderJsonBytes) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceIntfN(v []interface{}, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTJsonBytes) DecSliceStringY(v []string, d *decoderJsonBytes) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceStringN(v []string, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTJsonBytes) DecSliceBytesY(v [][]byte, d *decoderJsonBytes) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceBytesN(v [][]byte, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTJsonBytes) DecSliceFloat32Y(v []float32, d *decoderJsonBytes) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceFloat32N(v []float32, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTJsonBytes) DecSliceFloat64Y(v []float64, d *decoderJsonBytes) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceFloat64N(v []float64, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTJsonBytes) DecSliceUint8Y(v []uint8, d *decoderJsonBytes) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTJsonBytes) DecSliceUint8N(v []uint8, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderJsonBytes) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTJsonBytes) DecSliceUint64Y(v []uint64, d *decoderJsonBytes) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceUint64N(v []uint64, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTJsonBytes) DecSliceIntY(v []int, d *decoderJsonBytes) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceIntN(v []int, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTJsonBytes) DecSliceInt32Y(v []int32, d *decoderJsonBytes) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceInt32N(v []int32, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTJsonBytes) DecSliceInt64Y(v []int64, d *decoderJsonBytes) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceInt64N(v []int64, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTJsonBytes) DecSliceBoolY(v []bool, d *decoderJsonBytes) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonBytes) DecSliceBoolN(v []bool, d *decoderJsonBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderJsonBytes) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonBytes) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringStringL(v map[string]string, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonBytes) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonBytes) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonBytes) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonBytes) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringIntL(v map[string]int, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonBytes) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonBytes) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonBytes) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonBytes) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonBytes) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonBytes) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntStringL(v map[int]string, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonBytes) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonBytes) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonBytes) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonBytes) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntIntL(v map[int]int, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonBytes) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonBytes) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonBytes) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonBytes) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonBytes) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderJsonBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} + +type fastpathEJsonIO struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderJsonIO, *encFnInfo, reflect.Value) +} +type fastpathDJsonIO struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderJsonIO, *decFnInfo, reflect.Value) +} +type fastpathEsJsonIO [56]fastpathEJsonIO +type fastpathDsJsonIO [56]fastpathDJsonIO +type fastpathETJsonIO struct{} +type fastpathDTJsonIO struct{} + +func (helperEncDriverJsonIO) fastpathEList() *fastpathEsJsonIO { + var i uint = 0 + var s fastpathEsJsonIO + fn := func(v interface{}, fe func(*encoderJsonIO, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEJsonIO{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderJsonIO).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderJsonIO).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderJsonIO).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderJsonIO).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderJsonIO).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderJsonIO).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderJsonIO).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderJsonIO).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderJsonIO).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderJsonIO).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderJsonIO).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderJsonIO).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderJsonIO).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderJsonIO).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderJsonIO).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderJsonIO).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderJsonIO).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderJsonIO).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderJsonIO).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderJsonIO).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderJsonIO).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderJsonIO).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderJsonIO).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderJsonIO).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderJsonIO).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderJsonIO).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderJsonIO).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderJsonIO).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderJsonIO).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderJsonIO).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderJsonIO).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderJsonIO).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderJsonIO).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderJsonIO).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderJsonIO).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderJsonIO).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderJsonIO).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderJsonIO).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderJsonIO).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderJsonIO).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderJsonIO).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderJsonIO).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderJsonIO).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderJsonIO).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderJsonIO).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderJsonIO).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderJsonIO).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderJsonIO).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderJsonIO).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderJsonIO).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderJsonIO).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderJsonIO).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderJsonIO).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderJsonIO).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderJsonIO).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderJsonIO).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverJsonIO) fastpathDList() *fastpathDsJsonIO { + var i uint = 0 + var s fastpathDsJsonIO + fn := func(v interface{}, fd func(*decoderJsonIO, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDJsonIO{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderJsonIO).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderJsonIO).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderJsonIO).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderJsonIO).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderJsonIO).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderJsonIO).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderJsonIO).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderJsonIO).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderJsonIO).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderJsonIO).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderJsonIO).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderJsonIO).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderJsonIO).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderJsonIO).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderJsonIO).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderJsonIO).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderJsonIO).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderJsonIO).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderJsonIO).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderJsonIO).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderJsonIO).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderJsonIO).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderJsonIO).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderJsonIO).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderJsonIO).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderJsonIO).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderJsonIO).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderJsonIO).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderJsonIO).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderJsonIO).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderJsonIO).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderJsonIO).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderJsonIO).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderJsonIO).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderJsonIO).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderJsonIO).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderJsonIO).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderJsonIO).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderJsonIO).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderJsonIO).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderJsonIO).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderJsonIO).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderJsonIO).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderJsonIO).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderJsonIO).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderJsonIO).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderJsonIO).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderJsonIO).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderJsonIO).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderJsonIO).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderJsonIO).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderJsonIO).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderJsonIO).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderJsonIO).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderJsonIO).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderJsonIO).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverJsonIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderJsonIO) bool { + var ft fastpathETJsonIO + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderJsonIO) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETJsonIO) EncSliceIntfV(v []interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceIntfV(v []interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETJsonIO) EncSliceStringV(v []string, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceStringV(v []string, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETJsonIO) EncSliceBytesV(v [][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceBytesV(v [][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETJsonIO) EncSliceFloat32V(v []float32, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceFloat32V(v []float32, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETJsonIO) EncSliceFloat64V(v []float64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceFloat64V(v []float64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETJsonIO) EncSliceUint8V(v []uint8, e *encoderJsonIO) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETJsonIO) EncAsMapSliceUint8V(v []uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETJsonIO) EncSliceUint64V(v []uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceUint64V(v []uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETJsonIO) EncSliceIntV(v []int, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceIntV(v []int, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETJsonIO) EncSliceInt32V(v []int32, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceInt32V(v []int32, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETJsonIO) EncSliceInt64V(v []int64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceInt64V(v []int64, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETJsonIO + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETJsonIO) EncSliceBoolV(v []bool, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETJsonIO) EncAsMapSliceBoolV(v []bool, e *encoderJsonIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETJsonIO) EncMapStringIntfV(v map[string]interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETJsonIO) EncMapStringStringV(v map[string]string, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETJsonIO) EncMapStringBytesV(v map[string][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETJsonIO) EncMapStringUint8V(v map[string]uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETJsonIO) EncMapStringUint64V(v map[string]uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETJsonIO) EncMapStringIntV(v map[string]int, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETJsonIO) EncMapStringInt32V(v map[string]int32, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETJsonIO) EncMapStringFloat64V(v map[string]float64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETJsonIO) EncMapStringBoolV(v map[string]bool, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETJsonIO) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETJsonIO) EncMapUint8StringV(v map[uint8]string, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETJsonIO) EncMapUint8BytesV(v map[uint8][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETJsonIO) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETJsonIO) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETJsonIO) EncMapUint8IntV(v map[uint8]int, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETJsonIO) EncMapUint8Int32V(v map[uint8]int32, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETJsonIO) EncMapUint8Float64V(v map[uint8]float64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETJsonIO) EncMapUint8BoolV(v map[uint8]bool, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETJsonIO) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETJsonIO) EncMapUint64StringV(v map[uint64]string, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETJsonIO) EncMapUint64BytesV(v map[uint64][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETJsonIO) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETJsonIO) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETJsonIO) EncMapUint64IntV(v map[uint64]int, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETJsonIO) EncMapUint64Int32V(v map[uint64]int32, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETJsonIO) EncMapUint64Float64V(v map[uint64]float64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETJsonIO) EncMapUint64BoolV(v map[uint64]bool, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETJsonIO) EncMapIntIntfV(v map[int]interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETJsonIO) EncMapIntStringV(v map[int]string, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETJsonIO) EncMapIntBytesV(v map[int][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETJsonIO) EncMapIntUint8V(v map[int]uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETJsonIO) EncMapIntUint64V(v map[int]uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETJsonIO) EncMapIntIntV(v map[int]int, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETJsonIO) EncMapIntInt32V(v map[int]int32, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETJsonIO) EncMapIntFloat64V(v map[int]float64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETJsonIO) EncMapIntBoolV(v map[int]bool, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETJsonIO) EncMapInt32IntfV(v map[int32]interface{}, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETJsonIO) EncMapInt32StringV(v map[int32]string, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETJsonIO) EncMapInt32BytesV(v map[int32][]byte, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETJsonIO) EncMapInt32Uint8V(v map[int32]uint8, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETJsonIO) EncMapInt32Uint64V(v map[int32]uint64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETJsonIO) EncMapInt32IntV(v map[int32]int, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETJsonIO) EncMapInt32Int32V(v map[int32]int32, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETJsonIO) EncMapInt32Float64V(v map[int32]float64, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderJsonIO) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETJsonIO{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETJsonIO) EncMapInt32BoolV(v map[int32]bool, e *encoderJsonIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverJsonIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderJsonIO) bool { + var ft fastpathDTJsonIO + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderJsonIO) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTJsonIO) DecSliceIntfY(v []interface{}, d *decoderJsonIO) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceIntfN(v []interface{}, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTJsonIO) DecSliceStringY(v []string, d *decoderJsonIO) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceStringN(v []string, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTJsonIO) DecSliceBytesY(v [][]byte, d *decoderJsonIO) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceBytesN(v [][]byte, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTJsonIO) DecSliceFloat32Y(v []float32, d *decoderJsonIO) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceFloat32N(v []float32, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTJsonIO) DecSliceFloat64Y(v []float64, d *decoderJsonIO) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceFloat64N(v []float64, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTJsonIO) DecSliceUint8Y(v []uint8, d *decoderJsonIO) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTJsonIO) DecSliceUint8N(v []uint8, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderJsonIO) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTJsonIO) DecSliceUint64Y(v []uint64, d *decoderJsonIO) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceUint64N(v []uint64, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTJsonIO) DecSliceIntY(v []int, d *decoderJsonIO) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceIntN(v []int, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTJsonIO) DecSliceInt32Y(v []int32, d *decoderJsonIO) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceInt32N(v []int32, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTJsonIO) DecSliceInt64Y(v []int64, d *decoderJsonIO) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceInt64N(v []int64, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTJsonIO) DecSliceBoolY(v []bool, d *decoderJsonIO) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTJsonIO) DecSliceBoolN(v []bool, d *decoderJsonIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderJsonIO) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonIO) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringStringL(v map[string]string, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonIO) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonIO) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonIO) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonIO) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringIntL(v map[string]int, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonIO) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonIO) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonIO) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonIO) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonIO) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonIO) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonIO) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonIO) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonIO) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonIO) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonIO) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonIO) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonIO) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonIO) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonIO) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonIO) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonIO) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonIO) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntStringL(v map[int]string, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonIO) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonIO) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonIO) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonIO) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntIntL(v map[int]int, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonIO) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonIO) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonIO) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderJsonIO) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderJsonIO) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderJsonIO) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderJsonIO) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderJsonIO) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderJsonIO) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderJsonIO) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderJsonIO) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderJsonIO) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTJsonIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTJsonIO) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderJsonIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/json.go b/vendor/github.com/ugorji/go/codec/json.go index 569b0cc9e..ba0e55005 100644 --- a/vendor/github.com/ugorji/go/codec/json.go +++ b/vendor/github.com/ugorji/go/codec/json.go @@ -1,3 +1,5 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -18,6 +20,7 @@ package codec import ( "encoding/base64" + "io" "math" "reflect" "strconv" @@ -27,154 +30,36 @@ import ( "unicode/utf8" ) -//-------------------------------- - -// jsonLits and jsonLitb are defined at the package level, -// so they are guaranteed to be stored efficiently, making -// for better append/string comparison/etc. -// -// (anecdotal evidence from some benchmarking on go 1.20 devel in 20220104) -const jsonLits = `"true"false"null"` - -var jsonLitb = []byte(jsonLits) - -const ( - jsonLitT = 1 - jsonLitF = 6 - jsonLitN = 12 -) - -const jsonEncodeUintSmallsString = "" + - "00010203040506070809" + - "10111213141516171819" + - "20212223242526272829" + - "30313233343536373839" + - "40414243444546474849" + - "50515253545556575859" + - "60616263646566676869" + - "70717273747576777879" + - "80818283848586878889" + - "90919293949596979899" - -var jsonEncodeUintSmallsStringBytes = []byte(jsonEncodeUintSmallsString) - -const ( - jsonU4Chk2 = '0' - jsonU4Chk1 = 'a' - 10 - jsonU4Chk0 = 'A' - 10 -) - -const ( - // If !jsonValidateSymbols, decoding will be faster, by skipping some checks: - // - If we see first character of null, false or true, - // do not validate subsequent characters. - // - e.g. if we see a n, assume null and skip next 3 characters, - // and do not validate they are ull. - // P.S. Do not expect a significant decoding boost from this. - jsonValidateSymbols = true - - // jsonEscapeMultiByteUnicodeSep controls whether some unicode characters - // that are valid json but may bomb in some contexts are escaped during encoeing. - // - // U+2028 is LINE SEPARATOR. U+2029 is PARAGRAPH SEPARATOR. - // Both technically valid JSON, but bomb on JSONP, so fix here unconditionally. - jsonEscapeMultiByteUnicodeSep = true - - // jsonRecognizeBoolNullInQuotedStr is used during decoding into a blank interface{} - // to control whether we detect quoted values of bools and null where a map key is expected, - // and treat as nil, true or false. - jsonNakedBoolNullInQuotedStr = true - - // jsonManualInlineDecRdInHotZones controls whether we manually inline some decReader calls. - // - // encode performance is at par with libraries that just iterate over bytes directly, - // because encWr (with inlined bytesEncAppender calls) is inlined. - // Conversely, decode performance suffers because decRd (with inlined bytesDecReader calls) - // isn't inlinable. - // - // To improve decode performamnce from json: - // - readn1 is only called for \u - // - consequently, to optimize json decoding, we specifically need inlining - // for bytes use-case of some other decReader methods: - // - jsonReadAsisChars, skipWhitespace (advance) and jsonReadNum - // - AND THEN readn3, readn4 (for ull, rue and alse). - // - (readn1 is only called when a char is escaped). - // - without inlining, we still pay the cost of a method invocationK, and this dominates time - // - To mitigate, we manually inline in hot zones - // *excluding places where used sparingly (e.g. nextValueBytes, and other atypical cases)*. - // - jsonReadAsisChars *only* called in: appendStringAsBytes - // - advance called: everywhere - // - jsonReadNum: decNumBytes, DecodeNaked - // - From running go test (our anecdotal findings): - // - calling jsonReadAsisChars in appendStringAsBytes: 23431 - // - calling jsonReadNum in decNumBytes: 15251 - // - calling jsonReadNum in DecodeNaked: 612 - // Consequently, we manually inline jsonReadAsisChars (in appendStringAsBytes) - // and jsonReadNum (in decNumbytes) - jsonManualInlineDecRdInHotZones = true - - jsonSpacesOrTabsLen = 128 - - // jsonAlwaysReturnInternString = false -) +type jsonEncDriver[T encWriter] struct { + noBuiltInTypes + h *JsonHandle + e *encoderBase + s *bitset256 // safe set for characters (taking h.HTMLAsIs into consideration) -var ( - // jsonTabs and jsonSpaces are used as caches for indents - jsonTabs, jsonSpaces [jsonSpacesOrTabsLen]byte + w T + // se interfaceExtWrapper - jsonCharHtmlSafeSet bitset256 - jsonCharSafeSet bitset256 -) + enc encoderI -func init() { - var i byte - for i = 0; i < jsonSpacesOrTabsLen; i++ { - jsonSpaces[i] = ' ' - jsonTabs[i] = '\t' - } - - // populate the safe values as true: note: ASCII control characters are (0-31) - // jsonCharSafeSet: all true except (0-31) " \ - // jsonCharHtmlSafeSet: all true except (0-31) " \ < > & - for i = 32; i < utf8.RuneSelf; i++ { - switch i { - case '"', '\\': - case '<', '>', '&': - jsonCharSafeSet.set(i) // = true - default: - jsonCharSafeSet.set(i) - jsonCharHtmlSafeSet.set(i) - } - } -} + timeFmtLayout string + byteFmter jsonBytesFmter + // ---- cpu cache line boundary??? -// ---------------- + // bytes2Arr bool + // time2Num bool + timeFmt jsonTimeFmt + bytesFmt jsonBytesFmt -type jsonEncState struct { di int8 // indent per: if negative, use tabs d bool // indenting? dl uint16 // indent level -} - -func (x jsonEncState) captureState() interface{} { return x } -func (x *jsonEncState) restoreState(v interface{}) { *x = v.(jsonEncState) } - -type jsonEncDriver struct { - noBuiltInTypes - h *JsonHandle - - // se interfaceExtWrapper - - // ---- cpu cache line boundary? - jsonEncState ks bool // map key as string is byte // integer as string typical bool - rawext bool // rawext configured on the handle - s *bitset256 // safe set for characters (taking h.HTMLAsIs into consideration) + rawext bool // rawext configured on the handle // buf *[]byte // used mostly for encoding []byte @@ -190,137 +75,132 @@ type jsonEncDriver struct { // Consequently, 35 characters should be sufficient for encoding time, integers or floats. // We use up all the remaining bytes to make this use full cache lines. b [48]byte - - e Encoder } -func (e *jsonEncDriver) encoder() *Encoder { return &e.e } - -func (e *jsonEncDriver) writeIndent() { - e.e.encWr.writen1('\n') +func (e *jsonEncDriver[T]) writeIndent() { + e.w.writen1('\n') x := int(e.di) * int(e.dl) if e.di < 0 { x = -x - for x > jsonSpacesOrTabsLen { - e.e.encWr.writeb(jsonTabs[:]) - x -= jsonSpacesOrTabsLen + for x > len(jsonTabs) { + e.w.writeb(jsonTabs[:]) + x -= len(jsonTabs) } - e.e.encWr.writeb(jsonTabs[:x]) + e.w.writeb(jsonTabs[:x]) } else { - for x > jsonSpacesOrTabsLen { - e.e.encWr.writeb(jsonSpaces[:]) - x -= jsonSpacesOrTabsLen + for x > len(jsonSpaces) { + e.w.writeb(jsonSpaces[:]) + x -= len(jsonSpaces) } - e.e.encWr.writeb(jsonSpaces[:x]) + e.w.writeb(jsonSpaces[:x]) } } -func (e *jsonEncDriver) WriteArrayElem() { - if e.e.c != containerArrayStart { - e.e.encWr.writen1(',') +func (e *jsonEncDriver[T]) WriteArrayElem(firstTime bool) { + if !firstTime { + e.w.writen1(',') } if e.d { e.writeIndent() } } -func (e *jsonEncDriver) WriteMapElemKey() { - if e.e.c != containerMapStart { - e.e.encWr.writen1(',') +func (e *jsonEncDriver[T]) WriteMapElemKey(firstTime bool) { + if !firstTime { + e.w.writen1(',') } if e.d { e.writeIndent() } } -func (e *jsonEncDriver) WriteMapElemValue() { +func (e *jsonEncDriver[T]) WriteMapElemValue() { if e.d { - e.e.encWr.writen2(':', ' ') + e.w.writen2(':', ' ') } else { - e.e.encWr.writen1(':') + e.w.writen1(':') } } -func (e *jsonEncDriver) EncodeNil() { +func (e *jsonEncDriver[T]) EncodeNil() { // We always encode nil as just null (never in quotes) // so we can easily decode if a nil in the json stream ie if initial token is n. - e.e.encWr.writestr(jsonLits[jsonLitN : jsonLitN+4]) + // e.w.writestr(jsonLits[jsonLitN : jsonLitN+4]) + e.w.writeb(jsonNull) +} + +func (e *jsonEncDriver[T]) encodeIntAsUint(v int64, quotes bool) { + neg := v < 0 + if neg { + v = -v + } + e.encodeUint(neg, quotes, uint64(v)) } -func (e *jsonEncDriver) EncodeTime(t time.Time) { +func (e *jsonEncDriver[T]) EncodeTime(t time.Time) { // Do NOT use MarshalJSON, as it allocates internally. // instead, we call AppendFormat directly, using our scratch buffer (e.b) if t.IsZero() { e.EncodeNil() - } else { + return + } + switch e.timeFmt { + case jsonTimeFmtStringLayout: e.b[0] = '"' - b := fmtTime(t, time.RFC3339Nano, e.b[1:1]) + b := t.AppendFormat(e.b[1:1], e.timeFmtLayout) e.b[len(b)+1] = '"' - e.e.encWr.writeb(e.b[:len(b)+2]) + e.w.writeb(e.b[:len(b)+2]) + case jsonTimeFmtUnix: + e.encodeIntAsUint(t.Unix(), false) + case jsonTimeFmtUnixMilli: + e.encodeIntAsUint(t.UnixMilli(), false) + case jsonTimeFmtUnixMicro: + e.encodeIntAsUint(t.UnixMicro(), false) + case jsonTimeFmtUnixNano: + e.encodeIntAsUint(t.UnixNano(), false) } } -func (e *jsonEncDriver) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (e *jsonEncDriver[T]) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { if ext == SelfExt { - e.e.encodeValue(baseRV(rv), e.h.fnNoExt(basetype)) + e.enc.encodeAs(rv, basetype, false) } else if v := ext.ConvertExt(rv); v == nil { - e.EncodeNil() + e.writeNilBytes() } else { - e.e.encode(v) + e.enc.encodeI(v) } } -func (e *jsonEncDriver) EncodeRawExt(re *RawExt) { - // only encodes re.Value (never re.Data) - if re.Value == nil { - e.EncodeNil() +func (e *jsonEncDriver[T]) EncodeRawExt(re *RawExt) { + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) } else { - e.e.encode(re.Value) + e.EncodeNil() } } -var jsonEncBoolStrs = [2][2]string{ - {jsonLits[jsonLitF : jsonLitF+5], jsonLits[jsonLitT : jsonLitT+4]}, - {jsonLits[jsonLitF-1 : jsonLitF+6], jsonLits[jsonLitT-1 : jsonLitT+5]}, +func (e *jsonEncDriver[T]) EncodeBool(b bool) { + e.w.writestr(jsonEncBoolStrs[bool2int(e.ks && e.e.c == containerMapKey)%2][bool2int(b)%2]) } -func (e *jsonEncDriver) EncodeBool(b bool) { - e.e.encWr.writestr( - jsonEncBoolStrs[bool2int(e.ks && e.e.c == containerMapKey)%2][bool2int(b)%2]) -} - -// func (e *jsonEncDriver) EncodeBool(b bool) { -// if e.ks && e.e.c == containerMapKey { -// if b { -// e.e.encWr.writestr(jsonLits[jsonLitT-1 : jsonLitT+5]) -// } else { -// e.e.encWr.writestr(jsonLits[jsonLitF-1 : jsonLitF+6]) -// } -// } else { -// if b { -// e.e.encWr.writestr(jsonLits[jsonLitT : jsonLitT+4]) -// } else { -// e.e.encWr.writestr(jsonLits[jsonLitF : jsonLitF+5]) -// } -// } -// } - -func (e *jsonEncDriver) encodeFloat(f float64, bitsize, fmt byte, prec int8) { +func (e *jsonEncDriver[T]) encodeFloat(f float64, bitsize, fmt byte, prec int8) { var blen uint if e.ks && e.e.c == containerMapKey { blen = 2 + uint(len(strconv.AppendFloat(e.b[1:1], f, fmt, int(prec), int(bitsize)))) // _ = e.b[:blen] e.b[0] = '"' e.b[blen-1] = '"' - e.e.encWr.writeb(e.b[:blen]) + e.w.writeb(e.b[:blen]) } else { - e.e.encWr.writeb(strconv.AppendFloat(e.b[:0], f, fmt, int(prec), int(bitsize))) + e.w.writeb(strconv.AppendFloat(e.b[:0], f, fmt, int(prec), int(bitsize))) } } -func (e *jsonEncDriver) EncodeFloat64(f float64) { +func (e *jsonEncDriver[T]) EncodeFloat64(f float64) { if math.IsNaN(f) || math.IsInf(f, 0) { e.EncodeNil() return @@ -329,7 +209,7 @@ func (e *jsonEncDriver) EncodeFloat64(f float64) { e.encodeFloat(f, 64, fmt, prec) } -func (e *jsonEncDriver) EncodeFloat32(f float32) { +func (e *jsonEncDriver[T]) EncodeFloat32(f float32) { if math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) { e.EncodeNil() return @@ -338,60 +218,11 @@ func (e *jsonEncDriver) EncodeFloat32(f float32) { e.encodeFloat(float64(f), 32, fmt, prec) } -func (e *jsonEncDriver) encodeUint(neg bool, quotes bool, u uint64) { - // copied mostly from std library: strconv - // this should only be called on 64bit OS. - - // const smallsString = jsonEncodeUintSmallsString - var ss = jsonEncodeUintSmallsStringBytes - - // typically, 19 or 20 bytes sufficient for decimal encoding a uint64 - // var a [24]byte - var a = e.b[0:24] - var i = uint(len(a)) - - if quotes { - i-- - setByteAt(a, i, '"') - // a[i] = '"' - } - // u guaranteed to fit into a uint (as we are not 32bit OS) - var is uint - var us = uint(u) - for us >= 100 { - is = us % 100 * 2 - us /= 100 - i -= 2 - setByteAt(a, i+1, byteAt(ss, is+1)) - setByteAt(a, i, byteAt(ss, is)) - // a[i+1] = smallsString[is+1] - // a[i+0] = smallsString[is+0] - } - - // us < 100 - is = us * 2 - i-- - setByteAt(a, i, byteAt(ss, is+1)) - // a[i] = smallsString[is+1] - if us >= 10 { - i-- - setByteAt(a, i, byteAt(ss, is)) - // a[i] = smallsString[is] - } - if neg { - i-- - setByteAt(a, i, '-') - // a[i] = '-' - } - if quotes { - i-- - setByteAt(a, i, '"') - // a[i] = '"' - } - e.e.encWr.writeb(a[i:]) +func (e *jsonEncDriver[T]) encodeUint(neg bool, quotes bool, u uint64) { + e.w.writeb(jsonEncodeUint(neg, quotes, u, &e.b)) } -func (e *jsonEncDriver) EncodeInt(v int64) { +func (e *jsonEncDriver[T]) EncodeInt(v int64) { quotes := e.is == 'A' || e.is == 'L' && (v > 1<<53 || v < -(1<<53)) || (e.ks && e.e.c == containerMapKey) @@ -400,9 +231,9 @@ func (e *jsonEncDriver) EncodeInt(v int64) { blen := 2 + len(strconv.AppendInt(e.b[1:1], v, 10)) e.b[0] = '"' e.b[blen-1] = '"' - e.e.encWr.writeb(e.b[:blen]) + e.w.writeb(e.b[:blen]) } else { - e.e.encWr.writeb(strconv.AppendInt(e.b[:0], v, 10)) + e.w.writeb(strconv.AppendInt(e.b[:0], v, 10)) } return } @@ -414,7 +245,7 @@ func (e *jsonEncDriver) EncodeInt(v int64) { } } -func (e *jsonEncDriver) EncodeUint(v uint64) { +func (e *jsonEncDriver[T]) EncodeUint(v uint64) { quotes := e.is == 'A' || e.is == 'L' && v > 1<<53 || (e.ks && e.e.c == containerMapKey) @@ -424,9 +255,9 @@ func (e *jsonEncDriver) EncodeUint(v uint64) { blen := 2 + len(strconv.AppendUint(e.b[1:1], v, 10)) e.b[0] = '"' e.b[blen-1] = '"' - e.e.encWr.writeb(e.b[:blen]) + e.w.writeb(e.b[:blen]) } else { - e.e.encWr.writeb(strconv.AppendUint(e.b[:0], v, 10)) + e.w.writeb(strconv.AppendUint(e.b[:0], v, 10)) } return } @@ -434,7 +265,7 @@ func (e *jsonEncDriver) EncodeUint(v uint64) { e.encodeUint(false, quotes, v) } -func (e *jsonEncDriver) EncodeString(v string) { +func (e *jsonEncDriver[T]) EncodeString(v string) { if e.h.StringToRaw { e.EncodeStringBytesRaw(bytesView(v)) return @@ -442,35 +273,80 @@ func (e *jsonEncDriver) EncodeString(v string) { e.quoteStr(v) } -func (e *jsonEncDriver) EncodeStringBytesRaw(v []byte) { - // if encoding raw bytes and RawBytesExt is configured, use it to encode - if v == nil { - e.EncodeNil() - return - } +func (e *jsonEncDriver[T]) EncodeStringNoEscape4Json(v string) { e.w.writeqstr(v) } +func (e *jsonEncDriver[T]) EncodeStringBytesRaw(v []byte) { if e.rawext { - iv := e.h.RawBytesExt.ConvertExt(v) + // explicitly convert v to interface{} so that v doesn't escape to heap + iv := e.h.RawBytesExt.ConvertExt(any(v)) if iv == nil { e.EncodeNil() } else { - e.e.encode(iv) + e.enc.encodeI(iv) } return } - slen := base64.StdEncoding.EncodedLen(len(v)) + 2 + if e.bytesFmt == jsonBytesFmtArray { + e.WriteArrayStart(len(v)) + for j := range v { + e.WriteArrayElem(j == 0) + e.encodeUint(false, false, uint64(v[j])) + } + e.WriteArrayEnd() + return + } + + // hardcode base64, so we call direct (not via interface) and hopefully inline + var slen int + if e.bytesFmt == jsonBytesFmtBase64 { + slen = base64.StdEncoding.EncodedLen(len(v)) + } else { + slen = e.byteFmter.EncodedLen(len(v)) + } + slen += 2 // bs := e.e.blist.check(*e.buf, n)[:slen] // *e.buf = bs - bs := e.e.blist.peek(slen, false) - bs = bs[:slen] + bs := e.e.blist.peek(slen, false)[:slen] + + if e.bytesFmt == jsonBytesFmtBase64 { + base64.StdEncoding.Encode(bs[1:], v) + } else { + e.byteFmter.Encode(bs[1:], v) + } - base64.StdEncoding.Encode(bs[1:], v) bs[len(bs)-1] = '"' bs[0] = '"' - e.e.encWr.writeb(bs) + e.w.writeb(bs) +} + +func (e *jsonEncDriver[T]) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *jsonEncDriver[T]) writeNilOr(v []byte) { + if !e.h.NilCollectionToZeroLength { + v = jsonNull + } + e.w.writeb(v) +} + +func (e *jsonEncDriver[T]) writeNilBytes() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriver[T]) writeNilArray() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriver[T]) writeNilMap() { + e.writeNilOr(jsonMapEmpty) } // indent is done as below: @@ -478,78 +354,89 @@ func (e *jsonEncDriver) EncodeStringBytesRaw(v []byte) { // - newline and indent are added before each ending, // except there was no entry (so we can have {} or []) -func (e *jsonEncDriver) WriteArrayStart(length int) { +func (e *jsonEncDriver[T]) WriteArrayEmpty() { + e.w.writen2('[', ']') +} + +func (e *jsonEncDriver[T]) WriteMapEmpty() { + e.w.writen2('{', '}') +} + +func (e *jsonEncDriver[T]) WriteArrayStart(length int) { if e.d { e.dl++ } - e.e.encWr.writen1('[') + e.w.writen1('[') } -func (e *jsonEncDriver) WriteArrayEnd() { +func (e *jsonEncDriver[T]) WriteArrayEnd() { if e.d { e.dl-- + // No need as encoder handles zero-len already + // if e.e.c != containerArrayStart { e.writeIndent() } - e.e.encWr.writen1(']') + e.w.writen1(']') } -func (e *jsonEncDriver) WriteMapStart(length int) { +func (e *jsonEncDriver[T]) WriteMapStart(length int) { if e.d { e.dl++ } - e.e.encWr.writen1('{') + e.w.writen1('{') } -func (e *jsonEncDriver) WriteMapEnd() { +func (e *jsonEncDriver[T]) WriteMapEnd() { if e.d { e.dl-- - if e.e.c != containerMapStart { - e.writeIndent() - } + // No need as encoder handles zero-len already + // if e.e.c != containerMapStart { + e.writeIndent() } - e.e.encWr.writen1('}') + e.w.writen1('}') } -func (e *jsonEncDriver) quoteStr(s string) { +func (e *jsonEncDriver[T]) quoteStr(s string) { // adapted from std pkg encoding/json const hex = "0123456789abcdef" - w := e.e.w() - w.writen1('"') + e.w.writen1('"') var i, start uint for i < uint(len(s)) { // encode all bytes < 0x20 (except \r, \n). // also encode < > & to prevent security holes when served to some browsers. - // We optimize for ascii, by assumining that most characters are in the BMP + // We optimize for ascii, by assuming that most characters are in the BMP // and natively consumed by json without much computation. // if 0x20 <= b && b != '\\' && b != '"' && b != '<' && b != '>' && b != '&' { // if (htmlasis && jsonCharSafeSet.isset(b)) || jsonCharHtmlSafeSet.isset(b) { - if e.s.isset(s[i]) { + b := s[i] + if e.s.isset(b) { i++ continue } - // b := s[i] - if s[i] < utf8.RuneSelf { + if b < utf8.RuneSelf { if start < i { - w.writestr(s[start:i]) + e.w.writestr(s[start:i]) } - switch s[i] { - case '\\', '"': - w.writen2('\\', s[i]) + switch b { + case '\\': + e.w.writen2('\\', '\\') + case '"': + e.w.writen2('\\', '"') case '\n': - w.writen2('\\', 'n') + e.w.writen2('\\', 'n') + case '\t': + e.w.writen2('\\', 't') case '\r': - w.writen2('\\', 'r') + e.w.writen2('\\', 'r') case '\b': - w.writen2('\\', 'b') + e.w.writen2('\\', 'b') case '\f': - w.writen2('\\', 'f') - case '\t': - w.writen2('\\', 't') + e.w.writen2('\\', 'f') default: - w.writestr(`\u00`) - w.writen2(hex[s[i]>>4], hex[s[i]&0xF]) + e.w.writestr(`\u00`) + e.w.writen2(hex[b>>4], hex[b&0xF]) } i++ start = i @@ -558,9 +445,9 @@ func (e *jsonEncDriver) quoteStr(s string) { c, size := utf8.DecodeRuneInString(s[i:]) if c == utf8.RuneError && size == 1 { // meaning invalid encoding (so output as-is) if start < i { - w.writestr(s[start:i]) + e.w.writestr(s[start:i]) } - w.writestr(`\uFFFD`) + e.w.writestr(`\uFFFD`) i++ start = i continue @@ -569,10 +456,10 @@ func (e *jsonEncDriver) quoteStr(s string) { // Both technically valid JSON, but bomb on JSONP, so fix here *unconditionally*. if jsonEscapeMultiByteUnicodeSep && (c == '\u2028' || c == '\u2029') { if start < i { - w.writestr(s[start:i]) + e.w.writestr(s[start:i]) } - w.writestr(`\u202`) - w.writen1(hex[c&0xF]) + e.w.writestr(`\u202`) + e.w.writen1(hex[c&0xF]) i += uint(size) start = i continue @@ -580,80 +467,72 @@ func (e *jsonEncDriver) quoteStr(s string) { i += uint(size) } if start < uint(len(s)) { - w.writestr(s[start:]) + e.w.writestr(s[start:]) } - w.writen1('"') + e.w.writen1('"') } -func (e *jsonEncDriver) atEndOfEncode() { +func (e *jsonEncDriver[T]) atEndOfEncode() { if e.h.TermWhitespace { var c byte = ' ' // default is that scalar is written, so output space if e.e.c != 0 { c = '\n' // for containers (map/list), output a newline } - e.e.encWr.writen1(c) + e.w.writen1(c) } } // ---------- -type jsonDecState struct { - rawext bool // rawext configured on the handle +type jsonDecDriver[T decReader] struct { + noBuiltInTypes + decDriverNoopNumberHelper + h *JsonHandle + d *decoderBase - tok uint8 // used to store the token read right after skipWhiteSpace - _ bool // found null - _ byte // padding - bstr [4]byte // scratch used for string \UXXX parsing + r T // scratch buffer used for base64 decoding (DecodeBytes in reuseBuf mode), // or reading doubleQuoted string (DecodeStringAsBytes, DecodeNaked) - buf *[]byte -} - -func (x jsonDecState) captureState() interface{} { return x } -func (x *jsonDecState) restoreState(v interface{}) { *x = v.(jsonDecState) } + buf []byte -type jsonDecDriver struct { - noBuiltInTypes - decDriverNoopNumberHelper - h *JsonHandle + tok uint8 // used to store the token read right after skipWhiteSpace + _ bool // found null + _ byte // padding + bstr [4]byte // scratch used for string \UXXX parsing - jsonDecState + jsonHandleOpts // se interfaceExtWrapper // ---- cpu cache line boundary? - d Decoder -} - -func (d *jsonDecDriver) descBd() (s string) { panic("descBd unsupported") } + // bytes bool -func (d *jsonDecDriver) decoder() *Decoder { - return &d.d + dec decoderI } -func (d *jsonDecDriver) ReadMapStart() int { +func (d *jsonDecDriver[T]) ReadMapStart() int { d.advance() if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) return containerLenNil } if d.tok != '{' { - d.d.errorf("read map - expect char '%c' but got char '%c'", '{', d.tok) + halt.errorByte("read map - expect char '{' but got char: ", d.tok) } d.tok = 0 return containerLenUnknown } -func (d *jsonDecDriver) ReadArrayStart() int { +func (d *jsonDecDriver[T]) ReadArrayStart() int { d.advance() if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) return containerLenNil } if d.tok != '[' { - d.d.errorf("read array - expect char '%c' but got char '%c'", '[', d.tok) + halt.errorByte("read array - expect char '[' but got char ", d.tok) } d.tok = 0 return containerLenUnknown @@ -665,24 +544,12 @@ func (d *jsonDecDriver) ReadArrayStart() int { // However, this forces CheckBreak to always incur a function call if there was whitespace, // with no clear benefit. -func (d *jsonDecDriver) CheckBreak() bool { +func (d *jsonDecDriver[T]) CheckBreak() bool { d.advance() return d.tok == '}' || d.tok == ']' } -func (d *jsonDecDriver) ReadArrayElem() { - const xc uint8 = ',' - if d.d.c != containerArrayStart { - d.advance() - if d.tok != xc { - d.readDelimError(xc) - } - d.tok = 0 - } -} - -func (d *jsonDecDriver) ReadArrayEnd() { - const xc uint8 = ']' +func (d *jsonDecDriver[T]) checkSep(xc byte) { d.advance() if d.tok != xc { d.readDelimError(xc) @@ -690,118 +557,96 @@ func (d *jsonDecDriver) ReadArrayEnd() { d.tok = 0 } -func (d *jsonDecDriver) ReadMapElemKey() { - const xc uint8 = ',' - if d.d.c != containerMapStart { - d.advance() - if d.tok != xc { - d.readDelimError(xc) - } - d.tok = 0 +func (d *jsonDecDriver[T]) ReadArrayElem(firstTime bool) { + if !firstTime { + d.checkSep(',') } } -func (d *jsonDecDriver) ReadMapElemValue() { - const xc uint8 = ':' - d.advance() - if d.tok != xc { - d.readDelimError(xc) - } - d.tok = 0 +func (d *jsonDecDriver[T]) ReadArrayEnd() { + d.checkSep(']') } -func (d *jsonDecDriver) ReadMapEnd() { - const xc uint8 = '}' - d.advance() - if d.tok != xc { - d.readDelimError(xc) - } - d.tok = 0 +func (d *jsonDecDriver[T]) ReadMapElemKey(firstTime bool) { + d.ReadArrayElem(firstTime) } -func (d *jsonDecDriver) readDelimError(xc uint8) { - d.d.errorf("read json delimiter - expect char '%c' but got char '%c'", xc, d.tok) +func (d *jsonDecDriver[T]) ReadMapElemValue() { + d.checkSep(':') +} + +func (d *jsonDecDriver[T]) ReadMapEnd() { + d.checkSep('}') +} + +//go:inline +func (d *jsonDecDriver[T]) readDelimError(xc uint8) { + halt.errorf("read json delimiter - expect char '%c' but got char '%c'", xc, d.tok) } // MARKER: checkLit takes the readn(3|4) result as a parameter so they can be inlined. // We pass the array directly to errorf, as passing slice pushes past inlining threshold, // and passing slice also might cause allocation of the bs array on the heap. -func (d *jsonDecDriver) checkLit3(got, expect [3]byte) { - d.tok = 0 +func (d *jsonDecDriver[T]) checkLit3(got, expect [3]byte) { if jsonValidateSymbols && got != expect { - d.d.errorf("expecting %s: got %s", expect, got) + jsonCheckLitErr3(got, expect) } + d.tok = 0 } -func (d *jsonDecDriver) checkLit4(got, expect [4]byte) { - d.tok = 0 +func (d *jsonDecDriver[T]) checkLit4(got, expect [4]byte) { if jsonValidateSymbols && got != expect { - d.d.errorf("expecting %s: got %s", expect, got) + jsonCheckLitErr4(got, expect) } + d.tok = 0 } -func (d *jsonDecDriver) skipWhitespace() { - d.tok = d.d.decRd.skipWhitespace() +func (d *jsonDecDriver[T]) skipWhitespace() { + d.tok = d.r.skipWhitespace() } -func (d *jsonDecDriver) advance() { - if d.tok == 0 { +func (d *jsonDecDriver[T]) advance() { + // handles jsonReadNum returning possibly non-printable value as tok + if d.tok < 33 { // d.tok == 0 { d.skipWhitespace() } } -func (d *jsonDecDriver) nextValueBytes(v []byte) []byte { - v, cursor := d.nextValueBytesR(v) - decNextValueBytesHelper{d: &d.d}.bytesRdV(&v, cursor) - return v -} - -func (d *jsonDecDriver) nextValueBytesR(v0 []byte) (v []byte, cursor uint) { - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - dr := &d.d.decRd - +func (d *jsonDecDriver[T]) nextValueBytes() []byte { consumeString := func() { TOP: - bs := dr.jsonReadAsisChars() - h.appendN(&v, bs...) - if bs[len(bs)-1] != '"' { - // last char is '\', so consume next one and try again - h.append1(&v, dr.readn1()) + _, c := d.r.jsonReadAsisChars() + if c == '\\' { // consume next one and try again + d.r.readn1() goto TOP } } - d.advance() // ignore leading whitespace - cursor = d.d.rb.c - 1 // cursor starts just before non-whitespace token + d.advance() // ignore leading whitespace + d.r.startRecording() + // cursor = d.d.rb.c - 1 // cursor starts just before non-whitespace token switch d.tok { default: - h.appendN(&v, dr.jsonReadNum()...) + _, d.tok = d.r.jsonReadNum() case 'n': - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) - h.appendS(&v, jsonLits[jsonLitN:jsonLitN+4]) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) case 'f': - d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.d.decRd.readn4()) - h.appendS(&v, jsonLits[jsonLitF:jsonLitF+5]) + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) case 't': - d.checkLit3([3]byte{'r', 'u', 'e'}, d.d.decRd.readn3()) - h.appendS(&v, jsonLits[jsonLitT:jsonLitT+4]) + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) case '"': - h.append1(&v, '"') consumeString() + d.tok = 0 case '{', '[': var elem struct{} var stack []struct{} stack = append(stack, elem) - h.append1(&v, d.tok) - for len(stack) != 0 { - c := dr.readn1() - h.append1(&v, c) + c := d.r.readn1() switch c { case '"': consumeString() @@ -811,64 +656,91 @@ func (d *jsonDecDriver) nextValueBytesR(v0 []byte) (v []byte, cursor uint) { stack = stack[:len(stack)-1] } } + d.tok = 0 } - d.tok = 0 - return + return d.r.stopRecording() } -func (d *jsonDecDriver) TryNil() bool { +func (d *jsonDecDriver[T]) TryNil() bool { d.advance() - // we shouldn't try to see if quoted "null" was here, right? - // only the plain string: `null` denotes a nil (ie not quotes) + // we don't try to see if quoted "null" was here. + // only the plain string: null denotes a nil (ie not quotes) if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) return true } return false } -func (d *jsonDecDriver) DecodeBool() (v bool) { +func (d *jsonDecDriver[T]) DecodeBool() (v bool) { d.advance() // bool can be in quotes if and only if it's a map key fquot := d.d.c == containerMapKey && d.tok == '"' if fquot { - d.tok = d.d.decRd.readn1() + d.tok = d.r.readn1() } switch d.tok { case 'f': - d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.d.decRd.readn4()) + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) // v = false case 't': - d.checkLit3([3]byte{'r', 'u', 'e'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) v = true case 'n': - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) // v = false default: - d.d.errorf("decode bool: got first char %c", d.tok) + halt.errorByte("decode bool: got first char: ", d.tok) // v = false // "unreachable" } if fquot { - d.d.decRd.readn1() + d.r.readn1() } return } -func (d *jsonDecDriver) DecodeTime() (t time.Time) { +func (d *jsonDecDriver[T]) DecodeTime() (t time.Time) { // read string, and pass the string into json.unmarshal d.advance() if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) return } - d.ensureReadingString() - bs := d.readUnescapedString() - t, err := time.Parse(time.RFC3339, stringView(bs)) - d.d.onerror(err) + var bs []byte + // if a number, use the timeFmtNum + if d.tok != '"' { + bs, d.tok = d.r.jsonReadNum() + i := d.parseInt64(bs) + switch d.timeFmtNum { + case jsonTimeFmtUnix: + t = time.Unix(i, 0) + case jsonTimeFmtUnixMilli: + t = time.UnixMilli(i) + case jsonTimeFmtUnixMicro: + t = time.UnixMicro(i) + case jsonTimeFmtUnixNano: + t = time.Unix(0, i) + default: + halt.errorStr("invalid timeFmtNum") + } + return + } + + // d.tok is now '"' + // d.ensureReadingString() + bs = d.readUnescapedString() + var err error + for _, v := range d.timeFmtLayouts { + t, err = time.Parse(v, stringView(bs)) + if err == nil { + return + } + } + halt.errorStr("error decoding time") return } -func (d *jsonDecDriver) ContainerType() (vt valueType) { +func (d *jsonDecDriver[T]) ContainerType() (vt valueType) { // check container type by checking the first char d.advance() @@ -882,7 +754,7 @@ func (d *jsonDecDriver) ContainerType() (vt valueType) { } else if d.tok == '[' { return valueTypeArray } else if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) return valueTypeNil } else if d.tok == '"' { return valueTypeString @@ -890,48 +762,42 @@ func (d *jsonDecDriver) ContainerType() (vt valueType) { return valueTypeUnset } -func (d *jsonDecDriver) decNumBytes() (bs []byte) { +func (d *jsonDecDriver[T]) decNumBytes() (bs []byte) { d.advance() - dr := &d.d.decRd if d.tok == '"' { - bs = dr.readUntil('"') + bs = d.r.jsonReadUntilDblQuote() + d.tok = 0 } else if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, dr.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) } else { - if jsonManualInlineDecRdInHotZones { - if dr.bytes { - bs = dr.rb.jsonReadNum() - } else { - bs = dr.ri.jsonReadNum() - } - } else { - bs = dr.jsonReadNum() - } + bs, d.tok = d.r.jsonReadNum() } - d.tok = 0 return } -func (d *jsonDecDriver) DecodeUint64() (u uint64) { +func (d *jsonDecDriver[T]) DecodeUint64() (u uint64) { b := d.decNumBytes() u, neg, ok := parseInteger_bytes(b) if neg { - d.d.errorf("negative number cannot be decoded as uint64") + halt.errorf("negative number cannot be decoded as uint64: %s", any(b)) } if !ok { - d.d.onerror(strconvParseErr(b, "ParseUint")) + halt.onerror(strconvParseErr(b, "ParseUint")) } return } -func (d *jsonDecDriver) DecodeInt64() (v int64) { - b := d.decNumBytes() +func (d *jsonDecDriver[T]) DecodeInt64() (v int64) { + return d.parseInt64(d.decNumBytes()) +} + +func (d *jsonDecDriver[T]) parseInt64(b []byte) (v int64) { u, neg, ok := parseInteger_bytes(b) if !ok { - d.d.onerror(strconvParseErr(b, "ParseInt")) + halt.onerror(strconvParseErr(b, "ParseInt")) } if chkOvf.Uint2Int(u, neg) { - d.d.errorf("overflow decoding number from %s", b) + halt.errorBytes("overflow decoding number from ", b) } if neg { v = -int64(u) @@ -941,85 +807,95 @@ func (d *jsonDecDriver) DecodeInt64() (v int64) { return } -func (d *jsonDecDriver) DecodeFloat64() (f float64) { +func (d *jsonDecDriver[T]) DecodeFloat64() (f float64) { var err error bs := d.decNumBytes() if len(bs) == 0 { return } f, err = parseFloat64(bs) - d.d.onerror(err) + halt.onerror(err) return } -func (d *jsonDecDriver) DecodeFloat32() (f float32) { +func (d *jsonDecDriver[T]) DecodeFloat32() (f float32) { var err error bs := d.decNumBytes() if len(bs) == 0 { return } f, err = parseFloat32(bs) - d.d.onerror(err) + halt.onerror(err) return } -func (d *jsonDecDriver) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (d *jsonDecDriver[T]) advanceNil() (ok bool) { d.advance() if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return true + } + return false +} + +func (d *jsonDecDriver[T]) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if d.advanceNil() { return } - if ext == nil { - re := rv.(*RawExt) - re.Tag = xtag - d.d.decode(&re.Value) - } else if ext == SelfExt { - d.d.decodeValue(baseRV(rv), d.h.fnNoExt(basetype)) + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) } else { - d.d.interfaceExtConvertAndDecode(rv, ext) + d.dec.interfaceExtConvertAndDecode(rv, ext) } } -func (d *jsonDecDriver) decBytesFromArray(bs []byte) []byte { - if bs != nil { - bs = bs[:0] +func (d *jsonDecDriver[T]) DecodeRawExt(re *RawExt) { + if d.advanceNil() { + return + } + d.dec.decode(&re.Value) +} + +func (d *jsonDecDriver[T]) decBytesFromArray(bs []byte) []byte { + d.advance() + if d.tok != ']' { + bs = append(bs, uint8(d.DecodeUint64())) + d.advance() } - d.tok = 0 - bs = append(bs, uint8(d.DecodeUint64())) - d.tok = d.d.decRd.skipWhitespace() // skip(&whitespaceCharBitset) for d.tok != ']' { if d.tok != ',' { - d.d.errorf("read array element - expect char '%c' but got char '%c'", ',', d.tok) + halt.errorByte("read array element - expect char ',' but got char: ", d.tok) } d.tok = 0 bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) - d.tok = d.d.decRd.skipWhitespace() // skip(&whitespaceCharBitset) + d.advance() } d.tok = 0 return bs } -func (d *jsonDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { - d.d.decByteState = decByteStateNone +func (d *jsonDecDriver[T]) DecodeBytes() (bs []byte, state dBytesAttachState) { d.advance() + state = dBytesDetach if d.tok == 'n' { - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) - return nil + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return } + state = dBytesAttachBuffer // if decoding into raw bytes, and the RawBytesExt is configured, use it to decode. if d.rawext { - bsOut = bs - d.d.interfaceExtConvertAndDecode(&bsOut, d.h.RawBytesExt) + d.buf = d.buf[:0] + d.dec.interfaceExtConvertAndDecode(&d.buf, d.h.RawBytesExt) + bs = d.buf return } // check if an "array" of uint8's (see ContainerType for how to infer if an array) if d.tok == '[' { + d.tok = 0 // bsOut, _ = fastpathTV.DecSliceUint8V(bs, true, d.d) - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } - return d.decBytesFromArray(bs) + bs = d.decBytesFromArray(d.buf[:0]) + d.buf = bs + return } // base64 encodes []byte{} as "", and we encode nil []byte as null. @@ -1027,115 +903,88 @@ func (d *jsonDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { d.ensureReadingString() bs1 := d.readUnescapedString() + // base64 is most compact of supported formats; it's decodedlen is sufficient for all slen := base64.StdEncoding.DecodedLen(len(bs1)) if slen == 0 { - bsOut = []byte{} - } else if slen <= cap(bs) { - bsOut = bs[:slen] - } else if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bsOut = d.d.blist.check(*d.buf, slen) - bsOut = bsOut[:slen] - *d.buf = bsOut + bs = zeroByteSlice + state = dBytesDetach + } else if slen <= cap(d.buf) { + bs = d.buf[:slen] } else { - bsOut = make([]byte, slen) + d.buf = d.d.blist.putGet(d.buf, slen)[:slen] + bs = d.buf } - slen2, err := base64.StdEncoding.Decode(bsOut, bs1) - if err != nil { - d.d.errorf("error decoding base64 binary '%s': %v", bs1, err) - } - if slen != slen2 { - bsOut = bsOut[:slen2] + var err error + for _, v := range d.byteFmters { + // slen := v.DecodedLen(len(bs1)) + slen, err = v.Decode(bs, bs1) + if err == nil { + bs = bs[:slen] + return + } } + halt.errorf("error decoding byte string '%s': %v", any(bs1), err) return } -func (d *jsonDecDriver) DecodeStringAsBytes() (s []byte) { - d.d.decByteState = decByteStateNone +func (d *jsonDecDriver[T]) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { d.advance() + var cond bool // common case - hoist outside the switch statement if d.tok == '"' { - return d.dblQuoteStringAsBytes() + d.tok = 0 + bs, cond = d.dblQuoteStringAsBytes() + state = d.d.attachState(cond) + return } + state = dBytesDetach // handle non-string scalar: null, true, false or a number switch d.tok { case 'n': - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) - return nil // []byte{} + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + // out = nil // []byte{} case 'f': - d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.d.decRd.readn4()) - return jsonLitb[jsonLitF : jsonLitF+5] + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + bs = jsonLitb[jsonLitF : jsonLitF+5] case 't': - d.checkLit3([3]byte{'r', 'u', 'e'}, d.d.decRd.readn3()) - return jsonLitb[jsonLitT : jsonLitT+4] + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + bs = jsonLitb[jsonLitT : jsonLitT+4] default: // try to parse a valid number - d.tok = 0 - return d.d.decRd.jsonReadNum() + bs, d.tok = d.r.jsonReadNum() + state = d.d.attachState(!d.d.bytes) } + return } -func (d *jsonDecDriver) ensureReadingString() { +func (d *jsonDecDriver[T]) ensureReadingString() { if d.tok != '"' { - d.d.errorf("expecting string starting with '\"'; got '%c'", d.tok) + halt.errorByte("expecting string starting with '\"'; got ", d.tok) } } -func (d *jsonDecDriver) readUnescapedString() (bs []byte) { +func (d *jsonDecDriver[T]) readUnescapedString() (bs []byte) { // d.ensureReadingString() - bs = d.d.decRd.readUntil('"') + bs = d.r.jsonReadUntilDblQuote() d.tok = 0 return } -func (d *jsonDecDriver) dblQuoteStringAsBytes() (buf []byte) { - checkUtf8 := d.h.ValidateUnicode - d.d.decByteState = decByteStateNone - // use a local buf variable, so we don't do pointer chasing within loop - buf = (*d.buf)[:0] - dr := &d.d.decRd - d.tok = 0 +func (d *jsonDecDriver[T]) dblQuoteStringAsBytes() (buf []byte, usingBuf bool) { + bs, c := d.r.jsonReadAsisChars() + if c == '"' { + return bs, !d.d.bytes + } + buf = append(d.buf[:0], bs...) - var bs []byte - var c byte - var firstTime bool = true + checkUtf8 := d.h.ValidateUnicode + usingBuf = true for { - if firstTime { - firstTime = false - if dr.bytes { - bs = dr.rb.jsonReadAsisChars() - if bs[len(bs)-1] == '"' { - d.d.decByteState = decByteStateZerocopy - return bs[:len(bs)-1] - } - goto APPEND - } - } - - if jsonManualInlineDecRdInHotZones { - if dr.bytes { - bs = dr.rb.jsonReadAsisChars() - } else { - bs = dr.ri.jsonReadAsisChars() - } - } else { - bs = dr.jsonReadAsisChars() - } - - APPEND: - _ = bs[0] // bounds check hint - slice must be > 0 elements - buf = append(buf, bs[:len(bs)-1]...) - c = bs[len(bs)-1] - - if c == '"' { - break - } - // c is now '\' - c = dr.readn1() + c = d.r.readn1() switch c { case '"', '\\', '/', '\'': @@ -1153,30 +1002,35 @@ func (d *jsonDecDriver) dblQuoteStringAsBytes() (buf []byte) { case 'u': rr := d.appendStringAsBytesSlashU() if checkUtf8 && rr == unicode.ReplacementChar { - d.d.errorf("invalid UTF-8 character found after: %s", buf) + d.buf = buf + halt.errorBytes("invalid UTF-8 character found after: ", buf) } buf = append(buf, d.bstr[:utf8.EncodeRune(d.bstr[:], rr)]...) default: - *d.buf = buf - d.d.errorf("unsupported escaped value: %c", c) + d.buf = buf + halt.errorByte("unsupported escaped value: ", c) + } + + bs, c = d.r.jsonReadAsisChars() + buf = append(buf, bs...) + if c == '"' { + break } } - *d.buf = buf - d.d.decByteState = decByteStateReuseBuf + d.buf = buf return } -func (d *jsonDecDriver) appendStringAsBytesSlashU() (r rune) { +func (d *jsonDecDriver[T]) appendStringAsBytesSlashU() (r rune) { var rr uint32 - var csu [2]byte - var cs [4]byte = d.d.decRd.readn4() + cs := d.r.readn4() if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { return unicode.ReplacementChar } r = rune(rr) if utf16.IsSurrogate(r) { - csu = d.d.decRd.readn2() - cs = d.d.decRd.readn4() + csu := d.r.readn2() + cs = d.r.readn4() if csu[0] == '\\' && csu[1] == 'u' { if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { return unicode.ReplacementChar @@ -1188,49 +1042,22 @@ func (d *jsonDecDriver) appendStringAsBytesSlashU() (r rune) { return } -func jsonSlashURune(cs [4]byte) (rr uint32) { - for _, c := range cs { - // best to use explicit if-else - // - not a table, etc which involve memory loads, array lookup with bounds checks, etc - if c >= '0' && c <= '9' { - rr = rr*16 + uint32(c-jsonU4Chk2) - } else if c >= 'a' && c <= 'f' { - rr = rr*16 + uint32(c-jsonU4Chk1) - } else if c >= 'A' && c <= 'F' { - rr = rr*16 + uint32(c-jsonU4Chk0) - } else { - return unicode.ReplacementChar - } - } - return -} - -func (d *jsonDecDriver) nakedNum(z *fauxUnion, bs []byte) (err error) { - // Note: nakedNum is NEVER called with a zero-length []byte - if d.h.PreferFloat { - z.v = valueTypeFloat - z.f, err = parseFloat64(bs) - } else { - err = parseNumber(bs, z, d.h.SignedInteger) - } - return -} - -func (d *jsonDecDriver) DecodeNaked() { +func (d *jsonDecDriver[T]) DecodeNaked() { z := d.d.naked() d.advance() var bs []byte + var err error switch d.tok { case 'n': - d.checkLit3([3]byte{'u', 'l', 'l'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) z.v = valueTypeNil case 'f': - d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.d.decRd.readn4()) + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) z.v = valueTypeBool z.b = false case 't': - d.checkLit3([3]byte{'r', 'u', 'e'}, d.d.decRd.readn3()) + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) z.v = valueTypeBool z.b = true case '{': @@ -1239,8 +1066,10 @@ func (d *jsonDecDriver) DecodeNaked() { z.v = valueTypeArray // don't consume. kInterfaceNaked will call ReadArrayStart case '"': // if a string, and MapKeyAsString, then try to decode it as a bool or number first - bs = d.dblQuoteStringAsBytes() - if jsonNakedBoolNullInQuotedStr && + d.tok = 0 + bs, z.b = d.dblQuoteStringAsBytes() + att := d.d.attachState(z.b) + if jsonNakedBoolNumInQuotedStr && d.h.MapKeyAsString && len(bs) > 0 && d.d.c == containerMapKey { switch string(bs) { // case "null": // nil is never quoted @@ -1251,213 +1080,146 @@ func (d *jsonDecDriver) DecodeNaked() { case "false": z.v = valueTypeBool z.b = false - default: - // check if a number: float, int or uint - if err := d.nakedNum(z, bs); err != nil { + default: // check if a number: float, int or uint + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { z.v = valueTypeString - z.s = d.d.stringZC(bs) + z.s = d.d.detach2Str(bs, att) } } } else { z.v = valueTypeString - z.s = d.d.stringZC(bs) + z.s = d.d.detach2Str(bs, att) } default: // number - bs = d.d.decRd.jsonReadNum() - d.tok = 0 + bs, d.tok = d.r.jsonReadNum() if len(bs) == 0 { - d.d.errorf("decode number from empty string") + halt.errorStr("decode number from empty string") } - if err := d.nakedNum(z, bs); err != nil { - d.d.errorf("decode number from %s: %v", bs, err) + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { + halt.errorf("decode number from %s: %v", any(bs), err) } } } -//---------------------- - -// JsonHandle is a handle for JSON encoding format. -// -// Json is comprehensively supported: -// - decodes numbers into interface{} as int, uint or float64 -// based on how the number looks and some config parameters e.g. PreferFloat, SignedInt, etc. -// - decode integers from float formatted numbers e.g. 1.27e+8 -// - decode any json value (numbers, bool, etc) from quoted strings -// - configurable way to encode/decode []byte . -// by default, encodes and decodes []byte using base64 Std Encoding -// - UTF-8 support for encoding and decoding -// -// It has better performance than the json library in the standard library, -// by leveraging the performance improvements of the codec library. -// -// In addition, it doesn't read more bytes than necessary during a decode, which allows -// reading multiple values from a stream containing json and non-json content. -// For example, a user can read a json value, then a cbor value, then a msgpack value, -// all from the same stream in sequence. -// -// Note that, when decoding quoted strings, invalid UTF-8 or invalid UTF-16 surrogate pairs are -// not treated as an error. Instead, they are replaced by the Unicode replacement character U+FFFD. -// -// Note also that the float values for NaN, +Inf or -Inf are encoded as null, -// as suggested by NOTE 4 of the ECMA-262 ECMAScript Language Specification 5.1 edition. -// see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf . -// -// Note the following behaviour differences vs std-library encoding/json package: -// - struct field names matched in case-sensitive manner -type JsonHandle struct { - textEncodingType - BasicHandle - - // Indent indicates how a value is encoded. - // - If positive, indent by that number of spaces. - // - If negative, indent by that number of tabs. - Indent int8 - - // IntegerAsString controls how integers (signed and unsigned) are encoded. - // - // Per the JSON Spec, JSON numbers are 64-bit floating point numbers. - // Consequently, integers > 2^53 cannot be represented as a JSON number without losing precision. - // This can be mitigated by configuring how to encode integers. - // - // IntegerAsString interpretes the following values: - // - if 'L', then encode integers > 2^53 as a json string. - // - if 'A', then encode all integers as a json string - // containing the exact integer representation as a decimal. - // - else encode all integers as a json number (default) - IntegerAsString byte - - // HTMLCharsAsIs controls how to encode some special characters to html: < > & - // - // By default, we encode them as \uXXX - // to prevent security holes when served from some browsers. - HTMLCharsAsIs bool - - // PreferFloat says that we will default to decoding a number as a float. - // If not set, we will examine the characters of the number and decode as an - // integer type if it doesn't have any of the characters [.eE]. - PreferFloat bool +func (e *jsonEncDriver[T]) reset() { + e.dl = 0 + // e.resetState() + // (htmlasis && jsonCharSafeSet.isset(b)) || jsonCharHtmlSafeSet.isset(b) + // cache values from the handle + e.typical = e.h.typical() + if e.h.HTMLCharsAsIs { + e.s = &jsonCharSafeBitset + } else { + e.s = &jsonCharHtmlSafeBitset + } + e.di = int8(e.h.Indent) + e.d = e.h.Indent != 0 + e.ks = e.h.MapKeyAsString + e.is = e.h.IntegerAsString - // TermWhitespace says that we add a whitespace character - // at the end of an encoding. - // - // The whitespace is important, especially if using numbers in a context - // where multiple items are written to a stream. - TermWhitespace bool + var ho jsonHandleOpts + ho.reset(e.h) + e.timeFmt = ho.timeFmt + e.bytesFmt = ho.bytesFmt + e.timeFmtLayout = "" + e.byteFmter = nil + if len(ho.timeFmtLayouts) > 0 { + e.timeFmtLayout = ho.timeFmtLayouts[0] + } + if len(ho.byteFmters) > 0 { + e.byteFmter = ho.byteFmters[0] + } + e.rawext = ho.rawext +} - // MapKeyAsString says to encode all map keys as strings. - // - // Use this to enforce strict json output. - // The only caveat is that nil value is ALWAYS written as null (never as "null") - MapKeyAsString bool +func (d *jsonDecDriver[T]) reset() { + d.buf = d.d.blist.check(d.buf, 256) + d.tok = 0 + // d.resetState() + d.jsonHandleOpts.reset(d.h) +} - // _ uint64 // padding (cache line) +// ---- +// +// The following below are similar across all format files (except for the format name). +// +// We keep them together here, so that we can easily copy and compare. - // Note: below, we store hardly-used items e.g. RawBytesExt. - // These values below may straddle a cache line, but they are hardly-used, - // so shouldn't contribute to false-sharing except in rare cases. +// ---- - // RawBytesExt, if configured, is used to encode and decode raw bytes in a custom way. - // If not configured, raw bytes are encoded to/from base64 text. - RawBytesExt InterfaceExt +func (d *jsonEncDriver[T]) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*JsonHandle) + d.e = shared + if shared.bytes { + fp = jsonFpEncBytes + } else { + fp = jsonFpEncIO + } + // d.w.init() + d.init2(enc) + return } -func (h *JsonHandle) isJson() bool { return true } - -// Name returns the name of the handle: json -func (h *JsonHandle) Name() string { return "json" } +func (e *jsonEncDriver[T]) writeBytesAsis(b []byte) { e.w.writeb(b) } -func (h *JsonHandle) desc(bd byte) string { return string(bd) } +// func (e *jsonEncDriver[T]) writeStringAsisDblQuoted(v string) { e.w.writeqstr(v) } +func (e *jsonEncDriver[T]) writerEnd() { e.w.end() } -func (h *JsonHandle) typical() bool { - return h.Indent == 0 && !h.MapKeyAsString && h.IntegerAsString != 'A' && h.IntegerAsString != 'L' +func (e *jsonEncDriver[T]) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) } -func (h *JsonHandle) newEncDriver() encDriver { - var e = &jsonEncDriver{h: h} - // var x []byte - // e.buf = &x - e.e.e = e - e.e.js = true - e.e.init(h) - e.reset() - return e -} - -func (h *JsonHandle) newDecDriver() decDriver { - var d = &jsonDecDriver{h: h} - var x []byte - d.buf = &x - d.d.d = d - d.d.js = true - d.d.jsms = h.MapKeyAsString - d.d.init(h) - d.reset() - return d -} - -func (e *jsonEncDriver) resetState() { - e.dl = 0 +func (e *jsonEncDriver[T]) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) } -func (e *jsonEncDriver) reset() { - e.resetState() - // (htmlasis && jsonCharSafeSet.isset(b)) || jsonCharHtmlSafeSet.isset(b) - // cache values from the handle - e.typical = e.h.typical() - if e.h.HTMLCharsAsIs { - e.s = &jsonCharSafeSet +// ---- + +func (d *jsonDecDriver[T]) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*JsonHandle) + d.d = shared + if shared.bytes { + fp = jsonFpDecBytes } else { - e.s = &jsonCharHtmlSafeSet + fp = jsonFpDecIO } - e.rawext = e.h.RawBytesExt != nil - e.di = int8(e.h.Indent) - e.d = e.h.Indent != 0 - e.ks = e.h.MapKeyAsString - e.is = e.h.IntegerAsString + // d.r.init() + d.init2(dec) + return } -func (d *jsonDecDriver) resetState() { - *d.buf = d.d.blist.check(*d.buf, 256) - d.tok = 0 +func (d *jsonDecDriver[T]) NumBytesRead() int { + return int(d.r.numread()) } -func (d *jsonDecDriver) reset() { - d.resetState() - d.rawext = d.h.RawBytesExt != nil +func (d *jsonDecDriver[T]) resetInBytes(in []byte) { + d.r.resetBytes(in) } -func jsonFloatStrconvFmtPrec64(f float64) (fmt byte, prec int8) { - fmt = 'f' - prec = -1 - fbits := math.Float64bits(f) - abs := math.Float64frombits(fbits &^ (1 << 63)) - if abs == 0 || abs == 1 { - prec = 1 - } else if abs < 1e-6 || abs >= 1e21 { - fmt = 'e' - } else if noFrac64(fbits) { - prec = 1 - } - return +func (d *jsonDecDriver[T]) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) } -func jsonFloatStrconvFmtPrec32(f float32) (fmt byte, prec int8) { - fmt = 'f' - prec = -1 - // directly handle Modf (to get fractions) and Abs (to get absolute) - fbits := math.Float32bits(f) - abs := math.Float32frombits(fbits &^ (1 << 31)) - if abs == 0 || abs == 1 { - prec = 1 - } else if abs < 1e-6 || abs >= 1e21 { - fmt = 'e' - } else if noFrac32(fbits) { - prec = 1 - } +// ---- (custom stanza) + +func (d *jsonDecDriver[T]) descBd() (s string) { + halt.onerror(errJsonNoBd) return } -var _ decDriverContainerTracker = (*jsonDecDriver)(nil) -var _ encDriverContainerTracker = (*jsonEncDriver)(nil) -var _ decDriver = (*jsonDecDriver)(nil) -var _ encDriver = (*jsonEncDriver)(nil) +func (d *jsonEncDriver[T]) init2(enc encoderI) { + d.enc = enc + // d.e.js = true +} + +func (d *jsonDecDriver[T]) init2(dec decoderI) { + d.dec = dec + // var x []byte + // d.buf = &x + // d.buf = new([]byte) + d.buf = d.buf[:0] + // d.d.js = true + d.d.jsms = d.h.MapKeyAsString +} diff --git a/vendor/github.com/ugorji/go/codec/json.mono.generated.go b/vendor/github.com/ugorji/go/codec/json.mono.generated.go new file mode 100644 index 000000000..12da25c30 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/json.mono.generated.go @@ -0,0 +1,8339 @@ +//go:build !notmono && !codec.notmono + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + + "encoding/base64" + "io" + "math" + "reflect" + "slices" + "sort" + "strconv" + "sync" + "time" + "unicode" + "unicode/utf16" + "unicode/utf8" +) + +type helperEncDriverJsonBytes struct{} +type encFnJsonBytes struct { + i encFnInfo + fe func(*encoderJsonBytes, *encFnInfo, reflect.Value) +} +type encRtidFnJsonBytes struct { + rtid uintptr + fn *encFnJsonBytes +} +type encoderJsonBytes struct { + dh helperEncDriverJsonBytes + fp *fastpathEsJsonBytes + e jsonEncDriverBytes + encoderBase +} +type helperDecDriverJsonBytes struct{} +type decFnJsonBytes struct { + i decFnInfo + fd func(*decoderJsonBytes, *decFnInfo, reflect.Value) +} +type decRtidFnJsonBytes struct { + rtid uintptr + fn *decFnJsonBytes +} +type decoderJsonBytes struct { + dh helperDecDriverJsonBytes + fp *fastpathDsJsonBytes + d jsonDecDriverBytes + decoderBase +} +type jsonEncDriverBytes struct { + noBuiltInTypes + h *JsonHandle + e *encoderBase + s *bitset256 + + w bytesEncAppender + + enc encoderI + + timeFmtLayout string + byteFmter jsonBytesFmter + + timeFmt jsonTimeFmt + bytesFmt jsonBytesFmt + + di int8 + d bool + dl uint16 + + ks bool + is byte + + typical bool + + rawext bool + + b [48]byte +} +type jsonDecDriverBytes struct { + noBuiltInTypes + decDriverNoopNumberHelper + h *JsonHandle + d *decoderBase + + r bytesDecReader + + buf []byte + + tok uint8 + _ bool + _ byte + bstr [4]byte + + jsonHandleOpts + + dec decoderI +} + +func (e *encoderJsonBytes) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderJsonBytes) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderJsonBytes) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderJsonBytes) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderJsonBytes) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderJsonBytes) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderJsonBytes) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderJsonBytes) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderJsonBytes) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderJsonBytes) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderJsonBytes) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderJsonBytes) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderJsonBytes) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderJsonBytes) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderJsonBytes) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderJsonBytes) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderJsonBytes) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderJsonBytes) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderJsonBytes) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderJsonBytes) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderJsonBytes) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderJsonBytes) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderJsonBytes) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderJsonBytes) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderJsonBytes) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderJsonBytes) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderJsonBytes) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderJsonBytes) kSeqFn(rt reflect.Type) (fn *encFnJsonBytes) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderJsonBytes) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnJsonBytes + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderJsonBytes) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnJsonBytes + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderJsonBytes) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderJsonBytes) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderJsonBytes) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderJsonBytes) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderJsonBytes) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderJsonBytes) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderJsonBytes) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderJsonBytes) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnJsonBytes + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonBytes) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnJsonBytes) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderJsonBytes) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsJsonBytes) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderJsonBytes) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderJsonBytes) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderJsonBytes) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderJsonBytes) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderJsonBytes) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderJsonBytes) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderJsonBytes) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderJsonBytes) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderJsonBytes) encodeValue(rv reflect.Value, fn *encFnJsonBytes) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderJsonBytes) encodeValueNonNil(rv reflect.Value, fn *encFnJsonBytes) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderJsonBytes) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderJsonBytes) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderJsonBytes) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderJsonBytes) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderJsonBytes) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderJsonBytes) fn(t reflect.Type) *encFnJsonBytes { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderJsonBytes) fnNoExt(t reflect.Type) *encFnJsonBytes { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderJsonBytes) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderJsonBytes) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderJsonBytes) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderJsonBytes) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderJsonBytes) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderJsonBytes) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderJsonBytes) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderJsonBytes) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverJsonBytes) newEncoderBytes(out *[]byte, h Handle) *encoderJsonBytes { + var c1 encoderJsonBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverJsonBytes) newEncoderIO(out io.Writer, h Handle) *encoderJsonBytes { + var c1 encoderJsonBytes + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverJsonBytes) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsJsonBytes) (f *fastpathEJsonBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverJsonBytes) encFindRtidFn(s []encRtidFnJsonBytes, rtid uintptr) (i uint, fn *encFnJsonBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverJsonBytes) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnJsonBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnJsonBytes](v)) + } + return +} + +func (dh helperEncDriverJsonBytes) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsJsonBytes, checkExt bool) (fn *encFnJsonBytes) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverJsonBytes) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonBytes) { + rtid := rt2id(rt) + var sp []encRtidFnJsonBytes = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverJsonBytes) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonBytes) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnJsonBytes + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnJsonBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnJsonBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnJsonBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverJsonBytes) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonBytes) { + fn = new(encFnJsonBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderJsonBytes).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderJsonBytes).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderJsonBytes).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderJsonBytes).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderJsonBytes).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderJsonBytes).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderJsonBytes).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderJsonBytes).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderJsonBytes, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderJsonBytes).kBool + case reflect.String: + + fn.fe = (*encoderJsonBytes).kString + case reflect.Int: + fn.fe = (*encoderJsonBytes).kInt + case reflect.Int8: + fn.fe = (*encoderJsonBytes).kInt8 + case reflect.Int16: + fn.fe = (*encoderJsonBytes).kInt16 + case reflect.Int32: + fn.fe = (*encoderJsonBytes).kInt32 + case reflect.Int64: + fn.fe = (*encoderJsonBytes).kInt64 + case reflect.Uint: + fn.fe = (*encoderJsonBytes).kUint + case reflect.Uint8: + fn.fe = (*encoderJsonBytes).kUint8 + case reflect.Uint16: + fn.fe = (*encoderJsonBytes).kUint16 + case reflect.Uint32: + fn.fe = (*encoderJsonBytes).kUint32 + case reflect.Uint64: + fn.fe = (*encoderJsonBytes).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderJsonBytes).kUintptr + case reflect.Float32: + fn.fe = (*encoderJsonBytes).kFloat32 + case reflect.Float64: + fn.fe = (*encoderJsonBytes).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderJsonBytes).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderJsonBytes).kComplex128 + case reflect.Chan: + fn.fe = (*encoderJsonBytes).kChan + case reflect.Slice: + fn.fe = (*encoderJsonBytes).kSlice + case reflect.Array: + fn.fe = (*encoderJsonBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderJsonBytes).kStructSimple + } else { + fn.fe = (*encoderJsonBytes).kStruct + } + case reflect.Map: + fn.fe = (*encoderJsonBytes).kMap + case reflect.Interface: + + fn.fe = (*encoderJsonBytes).kErr + default: + + fn.fe = (*encoderJsonBytes).kErr + } + } + } + return +} +func (d *decoderJsonBytes) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderJsonBytes) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderJsonBytes) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderJsonBytes) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderJsonBytes) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderJsonBytes) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderJsonBytes) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderJsonBytes) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderJsonBytes) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderJsonBytes) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderJsonBytes) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderJsonBytes) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderJsonBytes) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderJsonBytes) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderJsonBytes) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderJsonBytes) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderJsonBytes) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderJsonBytes) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderJsonBytes) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderJsonBytes) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderJsonBytes) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderJsonBytes) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderJsonBytes) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderJsonBytes) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderJsonBytes) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderJsonBytes) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderJsonBytes) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderJsonBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderJsonBytes) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderJsonBytes) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderJsonBytes) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderJsonBytes) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderJsonBytes) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnJsonBytes + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderJsonBytes) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnJsonBytes + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonBytes) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnJsonBytes + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderJsonBytes) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnJsonBytes + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderJsonBytes) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsJsonBytes) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderJsonBytes) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderJsonBytes) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderJsonBytes) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderJsonBytes) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderJsonBytes) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderJsonBytes) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderJsonBytes) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderJsonBytes) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderJsonBytes) Release() {} + +func (d *decoderJsonBytes) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderJsonBytes) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderJsonBytes) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderJsonBytes) decodeValue(rv reflect.Value, fn *decFnJsonBytes) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderJsonBytes) decodeValueNoCheckNil(rv reflect.Value, fn *decFnJsonBytes) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderJsonBytes) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderJsonBytes) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderJsonBytes) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderJsonBytes) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderJsonBytes) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderJsonBytes) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderJsonBytes) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderJsonBytes) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderJsonBytes) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderJsonBytes) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderJsonBytes) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderJsonBytes) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderJsonBytes) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderJsonBytes) fn(t reflect.Type) *decFnJsonBytes { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderJsonBytes) fnNoExt(t reflect.Type) *decFnJsonBytes { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverJsonBytes) newDecoderBytes(in []byte, h Handle) *decoderJsonBytes { + var c1 decoderJsonBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverJsonBytes) newDecoderIO(in io.Reader, h Handle) *decoderJsonBytes { + var c1 decoderJsonBytes + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverJsonBytes) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsJsonBytes) (f *fastpathDJsonBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverJsonBytes) decFindRtidFn(s []decRtidFnJsonBytes, rtid uintptr) (i uint, fn *decFnJsonBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverJsonBytes) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnJsonBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnJsonBytes](v)) + } + return +} + +func (dh helperDecDriverJsonBytes) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsJsonBytes, + checkExt bool) (fn *decFnJsonBytes) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverJsonBytes) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonBytes) { + rtid := rt2id(rt) + var sp []decRtidFnJsonBytes = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverJsonBytes) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonBytes) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnJsonBytes + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnJsonBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnJsonBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnJsonBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverJsonBytes) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsJsonBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonBytes) { + fn = new(decFnJsonBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderJsonBytes).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderJsonBytes).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderJsonBytes).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderJsonBytes).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderJsonBytes).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderJsonBytes).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderJsonBytes).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderJsonBytes).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderJsonBytes, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderJsonBytes, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderJsonBytes).kBool + case reflect.String: + fn.fd = (*decoderJsonBytes).kString + case reflect.Int: + fn.fd = (*decoderJsonBytes).kInt + case reflect.Int8: + fn.fd = (*decoderJsonBytes).kInt8 + case reflect.Int16: + fn.fd = (*decoderJsonBytes).kInt16 + case reflect.Int32: + fn.fd = (*decoderJsonBytes).kInt32 + case reflect.Int64: + fn.fd = (*decoderJsonBytes).kInt64 + case reflect.Uint: + fn.fd = (*decoderJsonBytes).kUint + case reflect.Uint8: + fn.fd = (*decoderJsonBytes).kUint8 + case reflect.Uint16: + fn.fd = (*decoderJsonBytes).kUint16 + case reflect.Uint32: + fn.fd = (*decoderJsonBytes).kUint32 + case reflect.Uint64: + fn.fd = (*decoderJsonBytes).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderJsonBytes).kUintptr + case reflect.Float32: + fn.fd = (*decoderJsonBytes).kFloat32 + case reflect.Float64: + fn.fd = (*decoderJsonBytes).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderJsonBytes).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderJsonBytes).kComplex128 + case reflect.Chan: + fn.fd = (*decoderJsonBytes).kChan + case reflect.Slice: + fn.fd = (*decoderJsonBytes).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderJsonBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderJsonBytes).kStructSimple + } else { + fn.fd = (*decoderJsonBytes).kStruct + } + case reflect.Map: + fn.fd = (*decoderJsonBytes).kMap + case reflect.Interface: + + fn.fd = (*decoderJsonBytes).kInterface + default: + + fn.fd = (*decoderJsonBytes).kErr + } + } + } + return +} +func (e *jsonEncDriverBytes) writeIndent() { + e.w.writen1('\n') + x := int(e.di) * int(e.dl) + if e.di < 0 { + x = -x + for x > len(jsonTabs) { + e.w.writeb(jsonTabs[:]) + x -= len(jsonTabs) + } + e.w.writeb(jsonTabs[:x]) + } else { + for x > len(jsonSpaces) { + e.w.writeb(jsonSpaces[:]) + x -= len(jsonSpaces) + } + e.w.writeb(jsonSpaces[:x]) + } +} + +func (e *jsonEncDriverBytes) WriteArrayElem(firstTime bool) { + if !firstTime { + e.w.writen1(',') + } + if e.d { + e.writeIndent() + } +} + +func (e *jsonEncDriverBytes) WriteMapElemKey(firstTime bool) { + if !firstTime { + e.w.writen1(',') + } + if e.d { + e.writeIndent() + } +} + +func (e *jsonEncDriverBytes) WriteMapElemValue() { + if e.d { + e.w.writen2(':', ' ') + } else { + e.w.writen1(':') + } +} + +func (e *jsonEncDriverBytes) EncodeNil() { + + e.w.writeb(jsonNull) +} + +func (e *jsonEncDriverBytes) encodeIntAsUint(v int64, quotes bool) { + neg := v < 0 + if neg { + v = -v + } + e.encodeUint(neg, quotes, uint64(v)) +} + +func (e *jsonEncDriverBytes) EncodeTime(t time.Time) { + + if t.IsZero() { + e.EncodeNil() + return + } + switch e.timeFmt { + case jsonTimeFmtStringLayout: + e.b[0] = '"' + b := t.AppendFormat(e.b[1:1], e.timeFmtLayout) + e.b[len(b)+1] = '"' + e.w.writeb(e.b[:len(b)+2]) + case jsonTimeFmtUnix: + e.encodeIntAsUint(t.Unix(), false) + case jsonTimeFmtUnixMilli: + e.encodeIntAsUint(t.UnixMilli(), false) + case jsonTimeFmtUnixMicro: + e.encodeIntAsUint(t.UnixMicro(), false) + case jsonTimeFmtUnixNano: + e.encodeIntAsUint(t.UnixNano(), false) + } +} + +func (e *jsonEncDriverBytes) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if ext == SelfExt { + e.enc.encodeAs(rv, basetype, false) + } else if v := ext.ConvertExt(rv); v == nil { + e.writeNilBytes() + } else { + e.enc.encodeI(v) + } +} + +func (e *jsonEncDriverBytes) EncodeRawExt(re *RawExt) { + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) + } else { + e.EncodeNil() + } +} + +func (e *jsonEncDriverBytes) EncodeBool(b bool) { + e.w.writestr(jsonEncBoolStrs[bool2int(e.ks && e.e.c == containerMapKey)%2][bool2int(b)%2]) +} + +func (e *jsonEncDriverBytes) encodeFloat(f float64, bitsize, fmt byte, prec int8) { + var blen uint + if e.ks && e.e.c == containerMapKey { + blen = 2 + uint(len(strconv.AppendFloat(e.b[1:1], f, fmt, int(prec), int(bitsize)))) + + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendFloat(e.b[:0], f, fmt, int(prec), int(bitsize))) + } +} + +func (e *jsonEncDriverBytes) EncodeFloat64(f float64) { + if math.IsNaN(f) || math.IsInf(f, 0) { + e.EncodeNil() + return + } + fmt, prec := jsonFloatStrconvFmtPrec64(f) + e.encodeFloat(f, 64, fmt, prec) +} + +func (e *jsonEncDriverBytes) EncodeFloat32(f float32) { + if math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) { + e.EncodeNil() + return + } + fmt, prec := jsonFloatStrconvFmtPrec32(f) + e.encodeFloat(float64(f), 32, fmt, prec) +} + +func (e *jsonEncDriverBytes) encodeUint(neg bool, quotes bool, u uint64) { + e.w.writeb(jsonEncodeUint(neg, quotes, u, &e.b)) +} + +func (e *jsonEncDriverBytes) EncodeInt(v int64) { + quotes := e.is == 'A' || e.is == 'L' && (v > 1<<53 || v < -(1<<53)) || + (e.ks && e.e.c == containerMapKey) + + if cpu32Bit { + if quotes { + blen := 2 + len(strconv.AppendInt(e.b[1:1], v, 10)) + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendInt(e.b[:0], v, 10)) + } + return + } + + if v < 0 { + e.encodeUint(true, quotes, uint64(-v)) + } else { + e.encodeUint(false, quotes, uint64(v)) + } +} + +func (e *jsonEncDriverBytes) EncodeUint(v uint64) { + quotes := e.is == 'A' || e.is == 'L' && v > 1<<53 || + (e.ks && e.e.c == containerMapKey) + + if cpu32Bit { + + if quotes { + blen := 2 + len(strconv.AppendUint(e.b[1:1], v, 10)) + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendUint(e.b[:0], v, 10)) + } + return + } + + e.encodeUint(false, quotes, v) +} + +func (e *jsonEncDriverBytes) EncodeString(v string) { + if e.h.StringToRaw { + e.EncodeStringBytesRaw(bytesView(v)) + return + } + e.quoteStr(v) +} + +func (e *jsonEncDriverBytes) EncodeStringNoEscape4Json(v string) { e.w.writeqstr(v) } + +func (e *jsonEncDriverBytes) EncodeStringBytesRaw(v []byte) { + if e.rawext { + + iv := e.h.RawBytesExt.ConvertExt(any(v)) + if iv == nil { + e.EncodeNil() + } else { + e.enc.encodeI(iv) + } + return + } + + if e.bytesFmt == jsonBytesFmtArray { + e.WriteArrayStart(len(v)) + for j := range v { + e.WriteArrayElem(j == 0) + e.encodeUint(false, false, uint64(v[j])) + } + e.WriteArrayEnd() + return + } + + var slen int + if e.bytesFmt == jsonBytesFmtBase64 { + slen = base64.StdEncoding.EncodedLen(len(v)) + } else { + slen = e.byteFmter.EncodedLen(len(v)) + } + slen += 2 + + bs := e.e.blist.peek(slen, false)[:slen] + + if e.bytesFmt == jsonBytesFmtBase64 { + base64.StdEncoding.Encode(bs[1:], v) + } else { + e.byteFmter.Encode(bs[1:], v) + } + + bs[len(bs)-1] = '"' + bs[0] = '"' + e.w.writeb(bs) +} + +func (e *jsonEncDriverBytes) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *jsonEncDriverBytes) writeNilOr(v []byte) { + if !e.h.NilCollectionToZeroLength { + v = jsonNull + } + e.w.writeb(v) +} + +func (e *jsonEncDriverBytes) writeNilBytes() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriverBytes) writeNilArray() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriverBytes) writeNilMap() { + e.writeNilOr(jsonMapEmpty) +} + +func (e *jsonEncDriverBytes) WriteArrayEmpty() { + e.w.writen2('[', ']') +} + +func (e *jsonEncDriverBytes) WriteMapEmpty() { + e.w.writen2('{', '}') +} + +func (e *jsonEncDriverBytes) WriteArrayStart(length int) { + if e.d { + e.dl++ + } + e.w.writen1('[') +} + +func (e *jsonEncDriverBytes) WriteArrayEnd() { + if e.d { + e.dl-- + + e.writeIndent() + } + e.w.writen1(']') +} + +func (e *jsonEncDriverBytes) WriteMapStart(length int) { + if e.d { + e.dl++ + } + e.w.writen1('{') +} + +func (e *jsonEncDriverBytes) WriteMapEnd() { + if e.d { + e.dl-- + + e.writeIndent() + } + e.w.writen1('}') +} + +func (e *jsonEncDriverBytes) quoteStr(s string) { + + const hex = "0123456789abcdef" + e.w.writen1('"') + var i, start uint + for i < uint(len(s)) { + + b := s[i] + if e.s.isset(b) { + i++ + continue + } + if b < utf8.RuneSelf { + if start < i { + e.w.writestr(s[start:i]) + } + switch b { + case '\\': + e.w.writen2('\\', '\\') + case '"': + e.w.writen2('\\', '"') + case '\n': + e.w.writen2('\\', 'n') + case '\t': + e.w.writen2('\\', 't') + case '\r': + e.w.writen2('\\', 'r') + case '\b': + e.w.writen2('\\', 'b') + case '\f': + e.w.writen2('\\', 'f') + default: + e.w.writestr(`\u00`) + e.w.writen2(hex[b>>4], hex[b&0xF]) + } + i++ + start = i + continue + } + c, size := utf8.DecodeRuneInString(s[i:]) + if c == utf8.RuneError && size == 1 { + if start < i { + e.w.writestr(s[start:i]) + } + e.w.writestr(`\uFFFD`) + i++ + start = i + continue + } + + if jsonEscapeMultiByteUnicodeSep && (c == '\u2028' || c == '\u2029') { + if start < i { + e.w.writestr(s[start:i]) + } + e.w.writestr(`\u202`) + e.w.writen1(hex[c&0xF]) + i += uint(size) + start = i + continue + } + i += uint(size) + } + if start < uint(len(s)) { + e.w.writestr(s[start:]) + } + e.w.writen1('"') +} + +func (e *jsonEncDriverBytes) atEndOfEncode() { + if e.h.TermWhitespace { + var c byte = ' ' + if e.e.c != 0 { + c = '\n' + } + e.w.writen1(c) + } +} + +func (d *jsonDecDriverBytes) ReadMapStart() int { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return containerLenNil + } + if d.tok != '{' { + halt.errorByte("read map - expect char '{' but got char: ", d.tok) + } + d.tok = 0 + return containerLenUnknown +} + +func (d *jsonDecDriverBytes) ReadArrayStart() int { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return containerLenNil + } + if d.tok != '[' { + halt.errorByte("read array - expect char '[' but got char ", d.tok) + } + d.tok = 0 + return containerLenUnknown +} + +func (d *jsonDecDriverBytes) CheckBreak() bool { + d.advance() + return d.tok == '}' || d.tok == ']' +} + +func (d *jsonDecDriverBytes) checkSep(xc byte) { + d.advance() + if d.tok != xc { + d.readDelimError(xc) + } + d.tok = 0 +} + +func (d *jsonDecDriverBytes) ReadArrayElem(firstTime bool) { + if !firstTime { + d.checkSep(',') + } +} + +func (d *jsonDecDriverBytes) ReadArrayEnd() { + d.checkSep(']') +} + +func (d *jsonDecDriverBytes) ReadMapElemKey(firstTime bool) { + d.ReadArrayElem(firstTime) +} + +func (d *jsonDecDriverBytes) ReadMapElemValue() { + d.checkSep(':') +} + +func (d *jsonDecDriverBytes) ReadMapEnd() { + d.checkSep('}') +} + +func (d *jsonDecDriverBytes) readDelimError(xc uint8) { + halt.errorf("read json delimiter - expect char '%c' but got char '%c'", xc, d.tok) +} + +func (d *jsonDecDriverBytes) checkLit3(got, expect [3]byte) { + if jsonValidateSymbols && got != expect { + jsonCheckLitErr3(got, expect) + } + d.tok = 0 +} + +func (d *jsonDecDriverBytes) checkLit4(got, expect [4]byte) { + if jsonValidateSymbols && got != expect { + jsonCheckLitErr4(got, expect) + } + d.tok = 0 +} + +func (d *jsonDecDriverBytes) skipWhitespace() { + d.tok = d.r.skipWhitespace() +} + +func (d *jsonDecDriverBytes) advance() { + + if d.tok < 33 { + d.skipWhitespace() + } +} + +func (d *jsonDecDriverBytes) nextValueBytes() []byte { + consumeString := func() { + TOP: + _, c := d.r.jsonReadAsisChars() + if c == '\\' { + d.r.readn1() + goto TOP + } + } + + d.advance() + d.r.startRecording() + + switch d.tok { + default: + _, d.tok = d.r.jsonReadNum() + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + case '"': + consumeString() + d.tok = 0 + case '{', '[': + var elem struct{} + var stack []struct{} + + stack = append(stack, elem) + + for len(stack) != 0 { + c := d.r.readn1() + switch c { + case '"': + consumeString() + case '{', '[': + stack = append(stack, elem) + case '}', ']': + stack = stack[:len(stack)-1] + } + } + d.tok = 0 + } + return d.r.stopRecording() +} + +func (d *jsonDecDriverBytes) TryNil() bool { + d.advance() + + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return true + } + return false +} + +func (d *jsonDecDriverBytes) DecodeBool() (v bool) { + d.advance() + + fquot := d.d.c == containerMapKey && d.tok == '"' + if fquot { + d.tok = d.r.readn1() + } + switch d.tok { + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + v = true + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + + default: + halt.errorByte("decode bool: got first char: ", d.tok) + + } + if fquot { + d.r.readn1() + } + return +} + +func (d *jsonDecDriverBytes) DecodeTime() (t time.Time) { + + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return + } + var bs []byte + + if d.tok != '"' { + bs, d.tok = d.r.jsonReadNum() + i := d.parseInt64(bs) + switch d.timeFmtNum { + case jsonTimeFmtUnix: + t = time.Unix(i, 0) + case jsonTimeFmtUnixMilli: + t = time.UnixMilli(i) + case jsonTimeFmtUnixMicro: + t = time.UnixMicro(i) + case jsonTimeFmtUnixNano: + t = time.Unix(0, i) + default: + halt.errorStr("invalid timeFmtNum") + } + return + } + + bs = d.readUnescapedString() + var err error + for _, v := range d.timeFmtLayouts { + t, err = time.Parse(v, stringView(bs)) + if err == nil { + return + } + } + halt.errorStr("error decoding time") + return +} + +func (d *jsonDecDriverBytes) ContainerType() (vt valueType) { + + d.advance() + + if d.tok == '{' { + return valueTypeMap + } else if d.tok == '[' { + return valueTypeArray + } else if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return valueTypeNil + } else if d.tok == '"' { + return valueTypeString + } + return valueTypeUnset +} + +func (d *jsonDecDriverBytes) decNumBytes() (bs []byte) { + d.advance() + if d.tok == '"' { + bs = d.r.jsonReadUntilDblQuote() + d.tok = 0 + } else if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + } else { + bs, d.tok = d.r.jsonReadNum() + } + return +} + +func (d *jsonDecDriverBytes) DecodeUint64() (u uint64) { + b := d.decNumBytes() + u, neg, ok := parseInteger_bytes(b) + if neg { + halt.errorf("negative number cannot be decoded as uint64: %s", any(b)) + } + if !ok { + halt.onerror(strconvParseErr(b, "ParseUint")) + } + return +} + +func (d *jsonDecDriverBytes) DecodeInt64() (v int64) { + return d.parseInt64(d.decNumBytes()) +} + +func (d *jsonDecDriverBytes) parseInt64(b []byte) (v int64) { + u, neg, ok := parseInteger_bytes(b) + if !ok { + halt.onerror(strconvParseErr(b, "ParseInt")) + } + if chkOvf.Uint2Int(u, neg) { + halt.errorBytes("overflow decoding number from ", b) + } + if neg { + v = -int64(u) + } else { + v = int64(u) + } + return +} + +func (d *jsonDecDriverBytes) DecodeFloat64() (f float64) { + var err error + bs := d.decNumBytes() + if len(bs) == 0 { + return + } + f, err = parseFloat64(bs) + halt.onerror(err) + return +} + +func (d *jsonDecDriverBytes) DecodeFloat32() (f float32) { + var err error + bs := d.decNumBytes() + if len(bs) == 0 { + return + } + f, err = parseFloat32(bs) + halt.onerror(err) + return +} + +func (d *jsonDecDriverBytes) advanceNil() (ok bool) { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return true + } + return false +} + +func (d *jsonDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if d.advanceNil() { + return + } + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) + } else { + d.dec.interfaceExtConvertAndDecode(rv, ext) + } +} + +func (d *jsonDecDriverBytes) DecodeRawExt(re *RawExt) { + if d.advanceNil() { + return + } + d.dec.decode(&re.Value) +} + +func (d *jsonDecDriverBytes) decBytesFromArray(bs []byte) []byte { + d.advance() + if d.tok != ']' { + bs = append(bs, uint8(d.DecodeUint64())) + d.advance() + } + for d.tok != ']' { + if d.tok != ',' { + halt.errorByte("read array element - expect char ',' but got char: ", d.tok) + } + d.tok = 0 + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + d.advance() + } + d.tok = 0 + return bs +} + +func (d *jsonDecDriverBytes) DecodeBytes() (bs []byte, state dBytesAttachState) { + d.advance() + state = dBytesDetach + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return + } + state = dBytesAttachBuffer + + if d.rawext { + d.buf = d.buf[:0] + d.dec.interfaceExtConvertAndDecode(&d.buf, d.h.RawBytesExt) + bs = d.buf + return + } + + if d.tok == '[' { + d.tok = 0 + + bs = d.decBytesFromArray(d.buf[:0]) + d.buf = bs + return + } + + d.ensureReadingString() + bs1 := d.readUnescapedString() + + slen := base64.StdEncoding.DecodedLen(len(bs1)) + if slen == 0 { + bs = zeroByteSlice + state = dBytesDetach + } else if slen <= cap(d.buf) { + bs = d.buf[:slen] + } else { + d.buf = d.d.blist.putGet(d.buf, slen)[:slen] + bs = d.buf + } + var err error + for _, v := range d.byteFmters { + + slen, err = v.Decode(bs, bs1) + if err == nil { + bs = bs[:slen] + return + } + } + halt.errorf("error decoding byte string '%s': %v", any(bs1), err) + return +} + +func (d *jsonDecDriverBytes) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { + d.advance() + + var cond bool + + if d.tok == '"' { + d.tok = 0 + bs, cond = d.dblQuoteStringAsBytes() + state = d.d.attachState(cond) + return + } + + state = dBytesDetach + + switch d.tok { + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + bs = jsonLitb[jsonLitF : jsonLitF+5] + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + bs = jsonLitb[jsonLitT : jsonLitT+4] + default: + + bs, d.tok = d.r.jsonReadNum() + state = d.d.attachState(!d.d.bytes) + } + return +} + +func (d *jsonDecDriverBytes) ensureReadingString() { + if d.tok != '"' { + halt.errorByte("expecting string starting with '\"'; got ", d.tok) + } +} + +func (d *jsonDecDriverBytes) readUnescapedString() (bs []byte) { + + bs = d.r.jsonReadUntilDblQuote() + d.tok = 0 + return +} + +func (d *jsonDecDriverBytes) dblQuoteStringAsBytes() (buf []byte, usingBuf bool) { + bs, c := d.r.jsonReadAsisChars() + if c == '"' { + return bs, !d.d.bytes + } + buf = append(d.buf[:0], bs...) + + checkUtf8 := d.h.ValidateUnicode + usingBuf = true + + for { + + c = d.r.readn1() + + switch c { + case '"', '\\', '/', '\'': + buf = append(buf, c) + case 'b': + buf = append(buf, '\b') + case 'f': + buf = append(buf, '\f') + case 'n': + buf = append(buf, '\n') + case 'r': + buf = append(buf, '\r') + case 't': + buf = append(buf, '\t') + case 'u': + rr := d.appendStringAsBytesSlashU() + if checkUtf8 && rr == unicode.ReplacementChar { + d.buf = buf + halt.errorBytes("invalid UTF-8 character found after: ", buf) + } + buf = append(buf, d.bstr[:utf8.EncodeRune(d.bstr[:], rr)]...) + default: + d.buf = buf + halt.errorByte("unsupported escaped value: ", c) + } + + bs, c = d.r.jsonReadAsisChars() + buf = append(buf, bs...) + if c == '"' { + break + } + } + d.buf = buf + return +} + +func (d *jsonDecDriverBytes) appendStringAsBytesSlashU() (r rune) { + var rr uint32 + cs := d.r.readn4() + if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { + return unicode.ReplacementChar + } + r = rune(rr) + if utf16.IsSurrogate(r) { + csu := d.r.readn2() + cs = d.r.readn4() + if csu[0] == '\\' && csu[1] == 'u' { + if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { + return unicode.ReplacementChar + } + return utf16.DecodeRune(r, rune(rr)) + } + return unicode.ReplacementChar + } + return +} + +func (d *jsonDecDriverBytes) DecodeNaked() { + z := d.d.naked() + + d.advance() + var bs []byte + var err error + switch d.tok { + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + z.v = valueTypeNil + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + z.v = valueTypeBool + z.b = false + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + z.v = valueTypeBool + z.b = true + case '{': + z.v = valueTypeMap + case '[': + z.v = valueTypeArray + case '"': + + d.tok = 0 + bs, z.b = d.dblQuoteStringAsBytes() + att := d.d.attachState(z.b) + if jsonNakedBoolNumInQuotedStr && + d.h.MapKeyAsString && len(bs) > 0 && d.d.c == containerMapKey { + switch string(bs) { + + case "true": + z.v = valueTypeBool + z.b = true + case "false": + z.v = valueTypeBool + z.b = false + default: + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { + z.v = valueTypeString + z.s = d.d.detach2Str(bs, att) + } + } + } else { + z.v = valueTypeString + z.s = d.d.detach2Str(bs, att) + } + default: + bs, d.tok = d.r.jsonReadNum() + if len(bs) == 0 { + halt.errorStr("decode number from empty string") + } + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { + halt.errorf("decode number from %s: %v", any(bs), err) + } + } +} + +func (e *jsonEncDriverBytes) reset() { + e.dl = 0 + + e.typical = e.h.typical() + if e.h.HTMLCharsAsIs { + e.s = &jsonCharSafeBitset + } else { + e.s = &jsonCharHtmlSafeBitset + } + e.di = int8(e.h.Indent) + e.d = e.h.Indent != 0 + e.ks = e.h.MapKeyAsString + e.is = e.h.IntegerAsString + + var ho jsonHandleOpts + ho.reset(e.h) + e.timeFmt = ho.timeFmt + e.bytesFmt = ho.bytesFmt + e.timeFmtLayout = "" + e.byteFmter = nil + if len(ho.timeFmtLayouts) > 0 { + e.timeFmtLayout = ho.timeFmtLayouts[0] + } + if len(ho.byteFmters) > 0 { + e.byteFmter = ho.byteFmters[0] + } + e.rawext = ho.rawext +} + +func (d *jsonDecDriverBytes) reset() { + d.buf = d.d.blist.check(d.buf, 256) + d.tok = 0 + + d.jsonHandleOpts.reset(d.h) +} + +func (d *jsonEncDriverBytes) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*JsonHandle) + d.e = shared + if shared.bytes { + fp = jsonFpEncBytes + } else { + fp = jsonFpEncIO + } + + d.init2(enc) + return +} + +func (e *jsonEncDriverBytes) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *jsonEncDriverBytes) writerEnd() { e.w.end() } + +func (e *jsonEncDriverBytes) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *jsonEncDriverBytes) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *jsonDecDriverBytes) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*JsonHandle) + d.d = shared + if shared.bytes { + fp = jsonFpDecBytes + } else { + fp = jsonFpDecIO + } + + d.init2(dec) + return +} + +func (d *jsonDecDriverBytes) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *jsonDecDriverBytes) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *jsonDecDriverBytes) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *jsonDecDriverBytes) descBd() (s string) { + halt.onerror(errJsonNoBd) + return +} + +func (d *jsonEncDriverBytes) init2(enc encoderI) { + d.enc = enc + +} + +func (d *jsonDecDriverBytes) init2(dec decoderI) { + d.dec = dec + + d.buf = d.buf[:0] + + d.d.jsms = d.h.MapKeyAsString +} + +type helperEncDriverJsonIO struct{} +type encFnJsonIO struct { + i encFnInfo + fe func(*encoderJsonIO, *encFnInfo, reflect.Value) +} +type encRtidFnJsonIO struct { + rtid uintptr + fn *encFnJsonIO +} +type encoderJsonIO struct { + dh helperEncDriverJsonIO + fp *fastpathEsJsonIO + e jsonEncDriverIO + encoderBase +} +type helperDecDriverJsonIO struct{} +type decFnJsonIO struct { + i decFnInfo + fd func(*decoderJsonIO, *decFnInfo, reflect.Value) +} +type decRtidFnJsonIO struct { + rtid uintptr + fn *decFnJsonIO +} +type decoderJsonIO struct { + dh helperDecDriverJsonIO + fp *fastpathDsJsonIO + d jsonDecDriverIO + decoderBase +} +type jsonEncDriverIO struct { + noBuiltInTypes + h *JsonHandle + e *encoderBase + s *bitset256 + + w bufioEncWriter + + enc encoderI + + timeFmtLayout string + byteFmter jsonBytesFmter + + timeFmt jsonTimeFmt + bytesFmt jsonBytesFmt + + di int8 + d bool + dl uint16 + + ks bool + is byte + + typical bool + + rawext bool + + b [48]byte +} +type jsonDecDriverIO struct { + noBuiltInTypes + decDriverNoopNumberHelper + h *JsonHandle + d *decoderBase + + r ioDecReader + + buf []byte + + tok uint8 + _ bool + _ byte + bstr [4]byte + + jsonHandleOpts + + dec decoderI +} + +func (e *encoderJsonIO) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderJsonIO) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderJsonIO) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderJsonIO) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderJsonIO) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderJsonIO) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderJsonIO) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderJsonIO) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderJsonIO) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderJsonIO) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderJsonIO) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderJsonIO) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderJsonIO) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderJsonIO) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderJsonIO) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderJsonIO) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderJsonIO) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderJsonIO) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderJsonIO) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderJsonIO) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderJsonIO) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderJsonIO) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderJsonIO) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderJsonIO) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderJsonIO) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderJsonIO) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderJsonIO) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderJsonIO) kSeqFn(rt reflect.Type) (fn *encFnJsonIO) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderJsonIO) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnJsonIO + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderJsonIO) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnJsonIO + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderJsonIO) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderJsonIO) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderJsonIO) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderJsonIO) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderJsonIO) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderJsonIO) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderJsonIO) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderJsonIO) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnJsonIO + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderJsonIO) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnJsonIO) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderJsonIO) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsJsonIO) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderJsonIO) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderJsonIO) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderJsonIO) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderJsonIO) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderJsonIO) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderJsonIO) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderJsonIO) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderJsonIO) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderJsonIO) encodeValue(rv reflect.Value, fn *encFnJsonIO) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderJsonIO) encodeValueNonNil(rv reflect.Value, fn *encFnJsonIO) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderJsonIO) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderJsonIO) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderJsonIO) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderJsonIO) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderJsonIO) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderJsonIO) fn(t reflect.Type) *encFnJsonIO { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderJsonIO) fnNoExt(t reflect.Type) *encFnJsonIO { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderJsonIO) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderJsonIO) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderJsonIO) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderJsonIO) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderJsonIO) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderJsonIO) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderJsonIO) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderJsonIO) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverJsonIO) newEncoderBytes(out *[]byte, h Handle) *encoderJsonIO { + var c1 encoderJsonIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverJsonIO) newEncoderIO(out io.Writer, h Handle) *encoderJsonIO { + var c1 encoderJsonIO + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverJsonIO) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsJsonIO) (f *fastpathEJsonIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverJsonIO) encFindRtidFn(s []encRtidFnJsonIO, rtid uintptr) (i uint, fn *encFnJsonIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverJsonIO) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnJsonIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnJsonIO](v)) + } + return +} + +func (dh helperEncDriverJsonIO) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsJsonIO, checkExt bool) (fn *encFnJsonIO) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverJsonIO) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonIO) { + rtid := rt2id(rt) + var sp []encRtidFnJsonIO = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverJsonIO) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonIO) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnJsonIO + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnJsonIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnJsonIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnJsonIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverJsonIO) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnJsonIO) { + fn = new(encFnJsonIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderJsonIO).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderJsonIO).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderJsonIO).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderJsonIO).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderJsonIO).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderJsonIO).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderJsonIO).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderJsonIO).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderJsonIO, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderJsonIO).kBool + case reflect.String: + + fn.fe = (*encoderJsonIO).kString + case reflect.Int: + fn.fe = (*encoderJsonIO).kInt + case reflect.Int8: + fn.fe = (*encoderJsonIO).kInt8 + case reflect.Int16: + fn.fe = (*encoderJsonIO).kInt16 + case reflect.Int32: + fn.fe = (*encoderJsonIO).kInt32 + case reflect.Int64: + fn.fe = (*encoderJsonIO).kInt64 + case reflect.Uint: + fn.fe = (*encoderJsonIO).kUint + case reflect.Uint8: + fn.fe = (*encoderJsonIO).kUint8 + case reflect.Uint16: + fn.fe = (*encoderJsonIO).kUint16 + case reflect.Uint32: + fn.fe = (*encoderJsonIO).kUint32 + case reflect.Uint64: + fn.fe = (*encoderJsonIO).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderJsonIO).kUintptr + case reflect.Float32: + fn.fe = (*encoderJsonIO).kFloat32 + case reflect.Float64: + fn.fe = (*encoderJsonIO).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderJsonIO).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderJsonIO).kComplex128 + case reflect.Chan: + fn.fe = (*encoderJsonIO).kChan + case reflect.Slice: + fn.fe = (*encoderJsonIO).kSlice + case reflect.Array: + fn.fe = (*encoderJsonIO).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderJsonIO).kStructSimple + } else { + fn.fe = (*encoderJsonIO).kStruct + } + case reflect.Map: + fn.fe = (*encoderJsonIO).kMap + case reflect.Interface: + + fn.fe = (*encoderJsonIO).kErr + default: + + fn.fe = (*encoderJsonIO).kErr + } + } + } + return +} +func (d *decoderJsonIO) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderJsonIO) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderJsonIO) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderJsonIO) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderJsonIO) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderJsonIO) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderJsonIO) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderJsonIO) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderJsonIO) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderJsonIO) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderJsonIO) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderJsonIO) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderJsonIO) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderJsonIO) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderJsonIO) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderJsonIO) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderJsonIO) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderJsonIO) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderJsonIO) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderJsonIO) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderJsonIO) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderJsonIO) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderJsonIO) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderJsonIO) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderJsonIO) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderJsonIO) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderJsonIO) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderJsonIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderJsonIO) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderJsonIO) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderJsonIO) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderJsonIO) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderJsonIO) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnJsonIO + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderJsonIO) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnJsonIO + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderJsonIO) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnJsonIO + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderJsonIO) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnJsonIO + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderJsonIO) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsJsonIO) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderJsonIO) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderJsonIO) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderJsonIO) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderJsonIO) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderJsonIO) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderJsonIO) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderJsonIO) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderJsonIO) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderJsonIO) Release() {} + +func (d *decoderJsonIO) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderJsonIO) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderJsonIO) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderJsonIO) decodeValue(rv reflect.Value, fn *decFnJsonIO) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderJsonIO) decodeValueNoCheckNil(rv reflect.Value, fn *decFnJsonIO) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderJsonIO) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderJsonIO) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderJsonIO) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderJsonIO) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderJsonIO) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderJsonIO) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderJsonIO) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderJsonIO) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderJsonIO) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderJsonIO) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderJsonIO) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderJsonIO) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderJsonIO) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderJsonIO) fn(t reflect.Type) *decFnJsonIO { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderJsonIO) fnNoExt(t reflect.Type) *decFnJsonIO { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverJsonIO) newDecoderBytes(in []byte, h Handle) *decoderJsonIO { + var c1 decoderJsonIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverJsonIO) newDecoderIO(in io.Reader, h Handle) *decoderJsonIO { + var c1 decoderJsonIO + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverJsonIO) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsJsonIO) (f *fastpathDJsonIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverJsonIO) decFindRtidFn(s []decRtidFnJsonIO, rtid uintptr) (i uint, fn *decFnJsonIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverJsonIO) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnJsonIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnJsonIO](v)) + } + return +} + +func (dh helperDecDriverJsonIO) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsJsonIO, + checkExt bool) (fn *decFnJsonIO) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverJsonIO) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonIO) { + rtid := rt2id(rt) + var sp []decRtidFnJsonIO = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverJsonIO) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonIO) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnJsonIO + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnJsonIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnJsonIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnJsonIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverJsonIO) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsJsonIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnJsonIO) { + fn = new(decFnJsonIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderJsonIO).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderJsonIO).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderJsonIO).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderJsonIO).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderJsonIO).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderJsonIO).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderJsonIO).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderJsonIO).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderJsonIO, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderJsonIO, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderJsonIO).kBool + case reflect.String: + fn.fd = (*decoderJsonIO).kString + case reflect.Int: + fn.fd = (*decoderJsonIO).kInt + case reflect.Int8: + fn.fd = (*decoderJsonIO).kInt8 + case reflect.Int16: + fn.fd = (*decoderJsonIO).kInt16 + case reflect.Int32: + fn.fd = (*decoderJsonIO).kInt32 + case reflect.Int64: + fn.fd = (*decoderJsonIO).kInt64 + case reflect.Uint: + fn.fd = (*decoderJsonIO).kUint + case reflect.Uint8: + fn.fd = (*decoderJsonIO).kUint8 + case reflect.Uint16: + fn.fd = (*decoderJsonIO).kUint16 + case reflect.Uint32: + fn.fd = (*decoderJsonIO).kUint32 + case reflect.Uint64: + fn.fd = (*decoderJsonIO).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderJsonIO).kUintptr + case reflect.Float32: + fn.fd = (*decoderJsonIO).kFloat32 + case reflect.Float64: + fn.fd = (*decoderJsonIO).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderJsonIO).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderJsonIO).kComplex128 + case reflect.Chan: + fn.fd = (*decoderJsonIO).kChan + case reflect.Slice: + fn.fd = (*decoderJsonIO).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderJsonIO).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderJsonIO).kStructSimple + } else { + fn.fd = (*decoderJsonIO).kStruct + } + case reflect.Map: + fn.fd = (*decoderJsonIO).kMap + case reflect.Interface: + + fn.fd = (*decoderJsonIO).kInterface + default: + + fn.fd = (*decoderJsonIO).kErr + } + } + } + return +} +func (e *jsonEncDriverIO) writeIndent() { + e.w.writen1('\n') + x := int(e.di) * int(e.dl) + if e.di < 0 { + x = -x + for x > len(jsonTabs) { + e.w.writeb(jsonTabs[:]) + x -= len(jsonTabs) + } + e.w.writeb(jsonTabs[:x]) + } else { + for x > len(jsonSpaces) { + e.w.writeb(jsonSpaces[:]) + x -= len(jsonSpaces) + } + e.w.writeb(jsonSpaces[:x]) + } +} + +func (e *jsonEncDriverIO) WriteArrayElem(firstTime bool) { + if !firstTime { + e.w.writen1(',') + } + if e.d { + e.writeIndent() + } +} + +func (e *jsonEncDriverIO) WriteMapElemKey(firstTime bool) { + if !firstTime { + e.w.writen1(',') + } + if e.d { + e.writeIndent() + } +} + +func (e *jsonEncDriverIO) WriteMapElemValue() { + if e.d { + e.w.writen2(':', ' ') + } else { + e.w.writen1(':') + } +} + +func (e *jsonEncDriverIO) EncodeNil() { + + e.w.writeb(jsonNull) +} + +func (e *jsonEncDriverIO) encodeIntAsUint(v int64, quotes bool) { + neg := v < 0 + if neg { + v = -v + } + e.encodeUint(neg, quotes, uint64(v)) +} + +func (e *jsonEncDriverIO) EncodeTime(t time.Time) { + + if t.IsZero() { + e.EncodeNil() + return + } + switch e.timeFmt { + case jsonTimeFmtStringLayout: + e.b[0] = '"' + b := t.AppendFormat(e.b[1:1], e.timeFmtLayout) + e.b[len(b)+1] = '"' + e.w.writeb(e.b[:len(b)+2]) + case jsonTimeFmtUnix: + e.encodeIntAsUint(t.Unix(), false) + case jsonTimeFmtUnixMilli: + e.encodeIntAsUint(t.UnixMilli(), false) + case jsonTimeFmtUnixMicro: + e.encodeIntAsUint(t.UnixMicro(), false) + case jsonTimeFmtUnixNano: + e.encodeIntAsUint(t.UnixNano(), false) + } +} + +func (e *jsonEncDriverIO) EncodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if ext == SelfExt { + e.enc.encodeAs(rv, basetype, false) + } else if v := ext.ConvertExt(rv); v == nil { + e.writeNilBytes() + } else { + e.enc.encodeI(v) + } +} + +func (e *jsonEncDriverIO) EncodeRawExt(re *RawExt) { + if re.Data != nil { + e.w.writeb(re.Data) + } else if re.Value != nil { + e.enc.encodeI(re.Value) + } else { + e.EncodeNil() + } +} + +func (e *jsonEncDriverIO) EncodeBool(b bool) { + e.w.writestr(jsonEncBoolStrs[bool2int(e.ks && e.e.c == containerMapKey)%2][bool2int(b)%2]) +} + +func (e *jsonEncDriverIO) encodeFloat(f float64, bitsize, fmt byte, prec int8) { + var blen uint + if e.ks && e.e.c == containerMapKey { + blen = 2 + uint(len(strconv.AppendFloat(e.b[1:1], f, fmt, int(prec), int(bitsize)))) + + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendFloat(e.b[:0], f, fmt, int(prec), int(bitsize))) + } +} + +func (e *jsonEncDriverIO) EncodeFloat64(f float64) { + if math.IsNaN(f) || math.IsInf(f, 0) { + e.EncodeNil() + return + } + fmt, prec := jsonFloatStrconvFmtPrec64(f) + e.encodeFloat(f, 64, fmt, prec) +} + +func (e *jsonEncDriverIO) EncodeFloat32(f float32) { + if math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) { + e.EncodeNil() + return + } + fmt, prec := jsonFloatStrconvFmtPrec32(f) + e.encodeFloat(float64(f), 32, fmt, prec) +} + +func (e *jsonEncDriverIO) encodeUint(neg bool, quotes bool, u uint64) { + e.w.writeb(jsonEncodeUint(neg, quotes, u, &e.b)) +} + +func (e *jsonEncDriverIO) EncodeInt(v int64) { + quotes := e.is == 'A' || e.is == 'L' && (v > 1<<53 || v < -(1<<53)) || + (e.ks && e.e.c == containerMapKey) + + if cpu32Bit { + if quotes { + blen := 2 + len(strconv.AppendInt(e.b[1:1], v, 10)) + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendInt(e.b[:0], v, 10)) + } + return + } + + if v < 0 { + e.encodeUint(true, quotes, uint64(-v)) + } else { + e.encodeUint(false, quotes, uint64(v)) + } +} + +func (e *jsonEncDriverIO) EncodeUint(v uint64) { + quotes := e.is == 'A' || e.is == 'L' && v > 1<<53 || + (e.ks && e.e.c == containerMapKey) + + if cpu32Bit { + + if quotes { + blen := 2 + len(strconv.AppendUint(e.b[1:1], v, 10)) + e.b[0] = '"' + e.b[blen-1] = '"' + e.w.writeb(e.b[:blen]) + } else { + e.w.writeb(strconv.AppendUint(e.b[:0], v, 10)) + } + return + } + + e.encodeUint(false, quotes, v) +} + +func (e *jsonEncDriverIO) EncodeString(v string) { + if e.h.StringToRaw { + e.EncodeStringBytesRaw(bytesView(v)) + return + } + e.quoteStr(v) +} + +func (e *jsonEncDriverIO) EncodeStringNoEscape4Json(v string) { e.w.writeqstr(v) } + +func (e *jsonEncDriverIO) EncodeStringBytesRaw(v []byte) { + if e.rawext { + + iv := e.h.RawBytesExt.ConvertExt(any(v)) + if iv == nil { + e.EncodeNil() + } else { + e.enc.encodeI(iv) + } + return + } + + if e.bytesFmt == jsonBytesFmtArray { + e.WriteArrayStart(len(v)) + for j := range v { + e.WriteArrayElem(j == 0) + e.encodeUint(false, false, uint64(v[j])) + } + e.WriteArrayEnd() + return + } + + var slen int + if e.bytesFmt == jsonBytesFmtBase64 { + slen = base64.StdEncoding.EncodedLen(len(v)) + } else { + slen = e.byteFmter.EncodedLen(len(v)) + } + slen += 2 + + bs := e.e.blist.peek(slen, false)[:slen] + + if e.bytesFmt == jsonBytesFmtBase64 { + base64.StdEncoding.Encode(bs[1:], v) + } else { + e.byteFmter.Encode(bs[1:], v) + } + + bs[len(bs)-1] = '"' + bs[0] = '"' + e.w.writeb(bs) +} + +func (e *jsonEncDriverIO) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *jsonEncDriverIO) writeNilOr(v []byte) { + if !e.h.NilCollectionToZeroLength { + v = jsonNull + } + e.w.writeb(v) +} + +func (e *jsonEncDriverIO) writeNilBytes() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriverIO) writeNilArray() { + e.writeNilOr(jsonArrayEmpty) +} + +func (e *jsonEncDriverIO) writeNilMap() { + e.writeNilOr(jsonMapEmpty) +} + +func (e *jsonEncDriverIO) WriteArrayEmpty() { + e.w.writen2('[', ']') +} + +func (e *jsonEncDriverIO) WriteMapEmpty() { + e.w.writen2('{', '}') +} + +func (e *jsonEncDriverIO) WriteArrayStart(length int) { + if e.d { + e.dl++ + } + e.w.writen1('[') +} + +func (e *jsonEncDriverIO) WriteArrayEnd() { + if e.d { + e.dl-- + + e.writeIndent() + } + e.w.writen1(']') +} + +func (e *jsonEncDriverIO) WriteMapStart(length int) { + if e.d { + e.dl++ + } + e.w.writen1('{') +} + +func (e *jsonEncDriverIO) WriteMapEnd() { + if e.d { + e.dl-- + + e.writeIndent() + } + e.w.writen1('}') +} + +func (e *jsonEncDriverIO) quoteStr(s string) { + + const hex = "0123456789abcdef" + e.w.writen1('"') + var i, start uint + for i < uint(len(s)) { + + b := s[i] + if e.s.isset(b) { + i++ + continue + } + if b < utf8.RuneSelf { + if start < i { + e.w.writestr(s[start:i]) + } + switch b { + case '\\': + e.w.writen2('\\', '\\') + case '"': + e.w.writen2('\\', '"') + case '\n': + e.w.writen2('\\', 'n') + case '\t': + e.w.writen2('\\', 't') + case '\r': + e.w.writen2('\\', 'r') + case '\b': + e.w.writen2('\\', 'b') + case '\f': + e.w.writen2('\\', 'f') + default: + e.w.writestr(`\u00`) + e.w.writen2(hex[b>>4], hex[b&0xF]) + } + i++ + start = i + continue + } + c, size := utf8.DecodeRuneInString(s[i:]) + if c == utf8.RuneError && size == 1 { + if start < i { + e.w.writestr(s[start:i]) + } + e.w.writestr(`\uFFFD`) + i++ + start = i + continue + } + + if jsonEscapeMultiByteUnicodeSep && (c == '\u2028' || c == '\u2029') { + if start < i { + e.w.writestr(s[start:i]) + } + e.w.writestr(`\u202`) + e.w.writen1(hex[c&0xF]) + i += uint(size) + start = i + continue + } + i += uint(size) + } + if start < uint(len(s)) { + e.w.writestr(s[start:]) + } + e.w.writen1('"') +} + +func (e *jsonEncDriverIO) atEndOfEncode() { + if e.h.TermWhitespace { + var c byte = ' ' + if e.e.c != 0 { + c = '\n' + } + e.w.writen1(c) + } +} + +func (d *jsonDecDriverIO) ReadMapStart() int { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return containerLenNil + } + if d.tok != '{' { + halt.errorByte("read map - expect char '{' but got char: ", d.tok) + } + d.tok = 0 + return containerLenUnknown +} + +func (d *jsonDecDriverIO) ReadArrayStart() int { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return containerLenNil + } + if d.tok != '[' { + halt.errorByte("read array - expect char '[' but got char ", d.tok) + } + d.tok = 0 + return containerLenUnknown +} + +func (d *jsonDecDriverIO) CheckBreak() bool { + d.advance() + return d.tok == '}' || d.tok == ']' +} + +func (d *jsonDecDriverIO) checkSep(xc byte) { + d.advance() + if d.tok != xc { + d.readDelimError(xc) + } + d.tok = 0 +} + +func (d *jsonDecDriverIO) ReadArrayElem(firstTime bool) { + if !firstTime { + d.checkSep(',') + } +} + +func (d *jsonDecDriverIO) ReadArrayEnd() { + d.checkSep(']') +} + +func (d *jsonDecDriverIO) ReadMapElemKey(firstTime bool) { + d.ReadArrayElem(firstTime) +} + +func (d *jsonDecDriverIO) ReadMapElemValue() { + d.checkSep(':') +} + +func (d *jsonDecDriverIO) ReadMapEnd() { + d.checkSep('}') +} + +func (d *jsonDecDriverIO) readDelimError(xc uint8) { + halt.errorf("read json delimiter - expect char '%c' but got char '%c'", xc, d.tok) +} + +func (d *jsonDecDriverIO) checkLit3(got, expect [3]byte) { + if jsonValidateSymbols && got != expect { + jsonCheckLitErr3(got, expect) + } + d.tok = 0 +} + +func (d *jsonDecDriverIO) checkLit4(got, expect [4]byte) { + if jsonValidateSymbols && got != expect { + jsonCheckLitErr4(got, expect) + } + d.tok = 0 +} + +func (d *jsonDecDriverIO) skipWhitespace() { + d.tok = d.r.skipWhitespace() +} + +func (d *jsonDecDriverIO) advance() { + + if d.tok < 33 { + d.skipWhitespace() + } +} + +func (d *jsonDecDriverIO) nextValueBytes() []byte { + consumeString := func() { + TOP: + _, c := d.r.jsonReadAsisChars() + if c == '\\' { + d.r.readn1() + goto TOP + } + } + + d.advance() + d.r.startRecording() + + switch d.tok { + default: + _, d.tok = d.r.jsonReadNum() + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + case '"': + consumeString() + d.tok = 0 + case '{', '[': + var elem struct{} + var stack []struct{} + + stack = append(stack, elem) + + for len(stack) != 0 { + c := d.r.readn1() + switch c { + case '"': + consumeString() + case '{', '[': + stack = append(stack, elem) + case '}', ']': + stack = stack[:len(stack)-1] + } + } + d.tok = 0 + } + return d.r.stopRecording() +} + +func (d *jsonDecDriverIO) TryNil() bool { + d.advance() + + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return true + } + return false +} + +func (d *jsonDecDriverIO) DecodeBool() (v bool) { + d.advance() + + fquot := d.d.c == containerMapKey && d.tok == '"' + if fquot { + d.tok = d.r.readn1() + } + switch d.tok { + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + v = true + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + + default: + halt.errorByte("decode bool: got first char: ", d.tok) + + } + if fquot { + d.r.readn1() + } + return +} + +func (d *jsonDecDriverIO) DecodeTime() (t time.Time) { + + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return + } + var bs []byte + + if d.tok != '"' { + bs, d.tok = d.r.jsonReadNum() + i := d.parseInt64(bs) + switch d.timeFmtNum { + case jsonTimeFmtUnix: + t = time.Unix(i, 0) + case jsonTimeFmtUnixMilli: + t = time.UnixMilli(i) + case jsonTimeFmtUnixMicro: + t = time.UnixMicro(i) + case jsonTimeFmtUnixNano: + t = time.Unix(0, i) + default: + halt.errorStr("invalid timeFmtNum") + } + return + } + + bs = d.readUnescapedString() + var err error + for _, v := range d.timeFmtLayouts { + t, err = time.Parse(v, stringView(bs)) + if err == nil { + return + } + } + halt.errorStr("error decoding time") + return +} + +func (d *jsonDecDriverIO) ContainerType() (vt valueType) { + + d.advance() + + if d.tok == '{' { + return valueTypeMap + } else if d.tok == '[' { + return valueTypeArray + } else if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return valueTypeNil + } else if d.tok == '"' { + return valueTypeString + } + return valueTypeUnset +} + +func (d *jsonDecDriverIO) decNumBytes() (bs []byte) { + d.advance() + if d.tok == '"' { + bs = d.r.jsonReadUntilDblQuote() + d.tok = 0 + } else if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + } else { + bs, d.tok = d.r.jsonReadNum() + } + return +} + +func (d *jsonDecDriverIO) DecodeUint64() (u uint64) { + b := d.decNumBytes() + u, neg, ok := parseInteger_bytes(b) + if neg { + halt.errorf("negative number cannot be decoded as uint64: %s", any(b)) + } + if !ok { + halt.onerror(strconvParseErr(b, "ParseUint")) + } + return +} + +func (d *jsonDecDriverIO) DecodeInt64() (v int64) { + return d.parseInt64(d.decNumBytes()) +} + +func (d *jsonDecDriverIO) parseInt64(b []byte) (v int64) { + u, neg, ok := parseInteger_bytes(b) + if !ok { + halt.onerror(strconvParseErr(b, "ParseInt")) + } + if chkOvf.Uint2Int(u, neg) { + halt.errorBytes("overflow decoding number from ", b) + } + if neg { + v = -int64(u) + } else { + v = int64(u) + } + return +} + +func (d *jsonDecDriverIO) DecodeFloat64() (f float64) { + var err error + bs := d.decNumBytes() + if len(bs) == 0 { + return + } + f, err = parseFloat64(bs) + halt.onerror(err) + return +} + +func (d *jsonDecDriverIO) DecodeFloat32() (f float32) { + var err error + bs := d.decNumBytes() + if len(bs) == 0 { + return + } + f, err = parseFloat32(bs) + halt.onerror(err) + return +} + +func (d *jsonDecDriverIO) advanceNil() (ok bool) { + d.advance() + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return true + } + return false +} + +func (d *jsonDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + if d.advanceNil() { + return + } + if ext == SelfExt { + d.dec.decodeAs(rv, basetype, false) + } else { + d.dec.interfaceExtConvertAndDecode(rv, ext) + } +} + +func (d *jsonDecDriverIO) DecodeRawExt(re *RawExt) { + if d.advanceNil() { + return + } + d.dec.decode(&re.Value) +} + +func (d *jsonDecDriverIO) decBytesFromArray(bs []byte) []byte { + d.advance() + if d.tok != ']' { + bs = append(bs, uint8(d.DecodeUint64())) + d.advance() + } + for d.tok != ']' { + if d.tok != ',' { + halt.errorByte("read array element - expect char ',' but got char: ", d.tok) + } + d.tok = 0 + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + d.advance() + } + d.tok = 0 + return bs +} + +func (d *jsonDecDriverIO) DecodeBytes() (bs []byte, state dBytesAttachState) { + d.advance() + state = dBytesDetach + if d.tok == 'n' { + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + return + } + state = dBytesAttachBuffer + + if d.rawext { + d.buf = d.buf[:0] + d.dec.interfaceExtConvertAndDecode(&d.buf, d.h.RawBytesExt) + bs = d.buf + return + } + + if d.tok == '[' { + d.tok = 0 + + bs = d.decBytesFromArray(d.buf[:0]) + d.buf = bs + return + } + + d.ensureReadingString() + bs1 := d.readUnescapedString() + + slen := base64.StdEncoding.DecodedLen(len(bs1)) + if slen == 0 { + bs = zeroByteSlice + state = dBytesDetach + } else if slen <= cap(d.buf) { + bs = d.buf[:slen] + } else { + d.buf = d.d.blist.putGet(d.buf, slen)[:slen] + bs = d.buf + } + var err error + for _, v := range d.byteFmters { + + slen, err = v.Decode(bs, bs1) + if err == nil { + bs = bs[:slen] + return + } + } + halt.errorf("error decoding byte string '%s': %v", any(bs1), err) + return +} + +func (d *jsonDecDriverIO) DecodeStringAsBytes() (bs []byte, state dBytesAttachState) { + d.advance() + + var cond bool + + if d.tok == '"' { + d.tok = 0 + bs, cond = d.dblQuoteStringAsBytes() + state = d.d.attachState(cond) + return + } + + state = dBytesDetach + + switch d.tok { + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + bs = jsonLitb[jsonLitF : jsonLitF+5] + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + bs = jsonLitb[jsonLitT : jsonLitT+4] + default: + + bs, d.tok = d.r.jsonReadNum() + state = d.d.attachState(!d.d.bytes) + } + return +} + +func (d *jsonDecDriverIO) ensureReadingString() { + if d.tok != '"' { + halt.errorByte("expecting string starting with '\"'; got ", d.tok) + } +} + +func (d *jsonDecDriverIO) readUnescapedString() (bs []byte) { + + bs = d.r.jsonReadUntilDblQuote() + d.tok = 0 + return +} + +func (d *jsonDecDriverIO) dblQuoteStringAsBytes() (buf []byte, usingBuf bool) { + bs, c := d.r.jsonReadAsisChars() + if c == '"' { + return bs, !d.d.bytes + } + buf = append(d.buf[:0], bs...) + + checkUtf8 := d.h.ValidateUnicode + usingBuf = true + + for { + + c = d.r.readn1() + + switch c { + case '"', '\\', '/', '\'': + buf = append(buf, c) + case 'b': + buf = append(buf, '\b') + case 'f': + buf = append(buf, '\f') + case 'n': + buf = append(buf, '\n') + case 'r': + buf = append(buf, '\r') + case 't': + buf = append(buf, '\t') + case 'u': + rr := d.appendStringAsBytesSlashU() + if checkUtf8 && rr == unicode.ReplacementChar { + d.buf = buf + halt.errorBytes("invalid UTF-8 character found after: ", buf) + } + buf = append(buf, d.bstr[:utf8.EncodeRune(d.bstr[:], rr)]...) + default: + d.buf = buf + halt.errorByte("unsupported escaped value: ", c) + } + + bs, c = d.r.jsonReadAsisChars() + buf = append(buf, bs...) + if c == '"' { + break + } + } + d.buf = buf + return +} + +func (d *jsonDecDriverIO) appendStringAsBytesSlashU() (r rune) { + var rr uint32 + cs := d.r.readn4() + if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { + return unicode.ReplacementChar + } + r = rune(rr) + if utf16.IsSurrogate(r) { + csu := d.r.readn2() + cs = d.r.readn4() + if csu[0] == '\\' && csu[1] == 'u' { + if rr = jsonSlashURune(cs); rr == unicode.ReplacementChar { + return unicode.ReplacementChar + } + return utf16.DecodeRune(r, rune(rr)) + } + return unicode.ReplacementChar + } + return +} + +func (d *jsonDecDriverIO) DecodeNaked() { + z := d.d.naked() + + d.advance() + var bs []byte + var err error + switch d.tok { + case 'n': + d.checkLit3([3]byte{'u', 'l', 'l'}, d.r.readn3()) + z.v = valueTypeNil + case 'f': + d.checkLit4([4]byte{'a', 'l', 's', 'e'}, d.r.readn4()) + z.v = valueTypeBool + z.b = false + case 't': + d.checkLit3([3]byte{'r', 'u', 'e'}, d.r.readn3()) + z.v = valueTypeBool + z.b = true + case '{': + z.v = valueTypeMap + case '[': + z.v = valueTypeArray + case '"': + + d.tok = 0 + bs, z.b = d.dblQuoteStringAsBytes() + att := d.d.attachState(z.b) + if jsonNakedBoolNumInQuotedStr && + d.h.MapKeyAsString && len(bs) > 0 && d.d.c == containerMapKey { + switch string(bs) { + + case "true": + z.v = valueTypeBool + z.b = true + case "false": + z.v = valueTypeBool + z.b = false + default: + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { + z.v = valueTypeString + z.s = d.d.detach2Str(bs, att) + } + } + } else { + z.v = valueTypeString + z.s = d.d.detach2Str(bs, att) + } + default: + bs, d.tok = d.r.jsonReadNum() + if len(bs) == 0 { + halt.errorStr("decode number from empty string") + } + if err = jsonNakedNum(z, bs, d.h.PreferFloat, d.h.SignedInteger); err != nil { + halt.errorf("decode number from %s: %v", any(bs), err) + } + } +} + +func (e *jsonEncDriverIO) reset() { + e.dl = 0 + + e.typical = e.h.typical() + if e.h.HTMLCharsAsIs { + e.s = &jsonCharSafeBitset + } else { + e.s = &jsonCharHtmlSafeBitset + } + e.di = int8(e.h.Indent) + e.d = e.h.Indent != 0 + e.ks = e.h.MapKeyAsString + e.is = e.h.IntegerAsString + + var ho jsonHandleOpts + ho.reset(e.h) + e.timeFmt = ho.timeFmt + e.bytesFmt = ho.bytesFmt + e.timeFmtLayout = "" + e.byteFmter = nil + if len(ho.timeFmtLayouts) > 0 { + e.timeFmtLayout = ho.timeFmtLayouts[0] + } + if len(ho.byteFmters) > 0 { + e.byteFmter = ho.byteFmters[0] + } + e.rawext = ho.rawext +} + +func (d *jsonDecDriverIO) reset() { + d.buf = d.d.blist.check(d.buf, 256) + d.tok = 0 + + d.jsonHandleOpts.reset(d.h) +} + +func (d *jsonEncDriverIO) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*JsonHandle) + d.e = shared + if shared.bytes { + fp = jsonFpEncBytes + } else { + fp = jsonFpEncIO + } + + d.init2(enc) + return +} + +func (e *jsonEncDriverIO) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *jsonEncDriverIO) writerEnd() { e.w.end() } + +func (e *jsonEncDriverIO) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *jsonEncDriverIO) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *jsonDecDriverIO) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*JsonHandle) + d.d = shared + if shared.bytes { + fp = jsonFpDecBytes + } else { + fp = jsonFpDecIO + } + + d.init2(dec) + return +} + +func (d *jsonDecDriverIO) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *jsonDecDriverIO) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *jsonDecDriverIO) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *jsonDecDriverIO) descBd() (s string) { + halt.onerror(errJsonNoBd) + return +} + +func (d *jsonEncDriverIO) init2(enc encoderI) { + d.enc = enc + +} + +func (d *jsonDecDriverIO) init2(dec decoderI) { + d.dec = dec + + d.buf = d.buf[:0] + + d.d.jsms = d.h.MapKeyAsString +} diff --git a/vendor/github.com/ugorji/go/codec/json.notfastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/json.notfastpath.mono.generated.go new file mode 100644 index 000000000..d23c173be --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/json.notfastpath.mono.generated.go @@ -0,0 +1,52 @@ +//go:build !notmono && !codec.notmono && (notfastpath || codec.notfastpath) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +type fastpathEJsonBytes struct { + rt reflect.Type + encfn func(*encoderJsonBytes, *encFnInfo, reflect.Value) +} +type fastpathDJsonBytes struct { + rt reflect.Type + decfn func(*decoderJsonBytes, *decFnInfo, reflect.Value) +} +type fastpathEsJsonBytes [0]fastpathEJsonBytes +type fastpathDsJsonBytes [0]fastpathDJsonBytes + +func (helperEncDriverJsonBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderJsonBytes) bool { + return false +} +func (helperDecDriverJsonBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderJsonBytes) bool { + return false +} + +func (helperEncDriverJsonBytes) fastpathEList() (v *fastpathEsJsonBytes) { return } +func (helperDecDriverJsonBytes) fastpathDList() (v *fastpathDsJsonBytes) { return } + +type fastpathEJsonIO struct { + rt reflect.Type + encfn func(*encoderJsonIO, *encFnInfo, reflect.Value) +} +type fastpathDJsonIO struct { + rt reflect.Type + decfn func(*decoderJsonIO, *decFnInfo, reflect.Value) +} +type fastpathEsJsonIO [0]fastpathEJsonIO +type fastpathDsJsonIO [0]fastpathDJsonIO + +func (helperEncDriverJsonIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderJsonIO) bool { + return false +} +func (helperDecDriverJsonIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderJsonIO) bool { + return false +} + +func (helperEncDriverJsonIO) fastpathEList() (v *fastpathEsJsonIO) { return } +func (helperDecDriverJsonIO) fastpathDList() (v *fastpathDsJsonIO) { return } diff --git a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl deleted file mode 100644 index 53198064d..000000000 --- a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -//go:build !codec.notmammoth -// +build codec.notmammoth - -// Code generated from mammoth-test.go.tmpl - DO NOT EDIT. - -package codec - -import "testing" -import "fmt" -import "reflect" - -// TestMammoth has all the different paths optimized in fast-path -// It has all the primitives, slices and maps. -// -// For each of those types, it has a pointer and a non-pointer field. - -func init() { _ = fmt.Printf } // so we can include fmt as needed - -type TestMammoth struct { - -{{range .Values }}{{if .Primitive -}} -{{ .MethodNamePfx "F" true }} {{ .Primitive }} -{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }} -{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if not .MapKey -}} -{{ .MethodNamePfx "F" false }} []{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }} -{{ .MethodNamePfx "Farr4" false }} [4]{{ .Elem }} -{{end}}{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if .MapKey -}} -{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }} -{{end}}{{end}}{{end}} - -} - -{{range .Values }}{{if not .Primitive }}{{if not .MapKey -}} -type {{ .MethodNamePfx "typMbs" false }} []{{ .Elem }} -func (_ {{ .MethodNamePfx "typMbs" false }}) MapBySlice() { } -{{end}}{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if .MapKey -}} -type {{ .MethodNamePfx "typMap" false }} map[{{ .MapKey }}]{{ .Elem }} -{{end}}{{end}}{{end}} - -func __doTestMammothSlices(t *testing.T, h Handle) { -{{range $i, $e := .Values }}{{if not .Primitive }}{{if not .MapKey -}} - var v{{$i}}va [8]{{ .Elem }} - for _, v := range [][]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .Elem }}, {{ zerocmd .Elem }}, {{ zerocmd .Elem }}, {{ nonzerocmd .Elem }} } } { - {{/* - // fmt.Printf(">>>> running mammoth slice v{{$i}}: %v\n", v) - // - encode value to some []byte - // - decode into a length-wise-equal []byte - // - check if equal to initial slice - // - encode ptr to the value - // - check if encode bytes are same - // - decode into ptrs to: nil, then 1-elem slice, equal-length, then large len slice - // - decode into non-addressable slice of equal length, then larger len - // - for each decode, compare elem-by-elem to the original slice - // - - // - rinse and repeat for a MapBySlice version - // - - */ -}} - var v{{$i}}v1, v{{$i}}v2 []{{ .Elem }} - var bs{{$i}} []byte - v{{$i}}v1 = v - bs{{$i}} = testMarshalErr(v{{$i}}v1, h, t, "enc-slice-v{{$i}}") - if v == nil { - v{{$i}}v2 = make([]{{ .Elem }}, 2) - testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}") - testDeepEqualErr(v{{$i}}v2[0], v{{$i}}v2[1], t, "equal-slice-v{{$i}}") // should not change - testDeepEqualErr(len(v{{$i}}v2), 2, t, "equal-slice-v{{$i}}") // should not change - v{{$i}}v2 = make([]{{ .Elem }}, 2) - testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-slice-v{{$i}}-noaddr") // non-addressable value - testDeepEqualErr(v{{$i}}v2[0], v{{$i}}v2[1], t, "equal-slice-v{{$i}}-noaddr") // should not change - testDeepEqualErr(len(v{{$i}}v2), 2, t, "equal-slice-v{{$i}}") // should not change - } else { - v{{$i}}v2 = make([]{{ .Elem }}, len(v)) - testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}") - v{{$i}}v2 = make([]{{ .Elem }}, len(v)) - testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-slice-v{{$i}}-noaddr") // non-addressable value - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-noaddr") - } - testReleaseBytes(bs{{$i}}) - // ... - bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-slice-v{{$i}}-p") - v{{$i}}v2 = nil - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p") - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - testUnmarshalErr(&v{{$i}}va, bs{{$i}}, h, t, "dec-array-v{{$i}}-p-1") - if v{{$i}}v1 == nil && v{{$i}}v2 == nil { v{{$i}}v2 = []{{ .Elem }}{} } // so we can compare to zero len slice below - testDeepEqualErr(v{{$i}}va[:len(v{{$i}}v2)], v{{$i}}v2, t, "equal-array-v{{$i}}-p-1") - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - v{{$i}}v2 = v{{$i}}va[:1:1] - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-1") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-1") - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - v{{$i}}v2 = v{{$i}}va[:len(v{{$i}}v1):len(v{{$i}}v1)] - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-len") - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - v{{$i}}v2 = v{{$i}}va[:] - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-slice-v{{$i}}-p-cap") - if len(v{{$i}}v1) > 1 { - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - testUnmarshalErr((&v{{$i}}va)[:len(v{{$i}}v1)], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len-noaddr") - testDeepEqualErr(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], t, "equal-slice-v{{$i}}-p-len-noaddr") - v{{$i}}va = [8]{{ .Elem }}{} // clear the array - testUnmarshalErr((&v{{$i}}va)[:], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap-noaddr") - testDeepEqualErr(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], t, "equal-slice-v{{$i}}-p-cap-noaddr") - } - testReleaseBytes(bs{{$i}}) - // ... - var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMbs" false }} - v{{$i}}v2 = nil - if v != nil { v{{$i}}v2 = make([]{{ .Elem }}, len(v)) } - v{{$i}}v3 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v1) - v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2) - if v != nil { - bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom") - testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom") - testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-slice-v{{$i}}-custom") - testReleaseBytes(bs{{$i}}) - } - bs{{$i}} = testMarshalErr(&v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom-p") - v{{$i}}v2 = nil - v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2) - testUnmarshalErr(&v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom-p") - testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-slice-v{{$i}}-custom-p") - testReleaseBytes(bs{{$i}}) - } -{{end}}{{end}}{{end}} -} - -func __doTestMammothMaps(t *testing.T, h Handle) { -{{range $i, $e := .Values }}{{if not .Primitive }}{{if .MapKey -}} - for _, v := range []map[{{ .MapKey }}]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .MapKey }}:{{ zerocmd .Elem }} {{if ne "bool" .MapKey}}, {{ nonzerocmd .MapKey }}:{{ nonzerocmd .Elem }} {{end}} } } { - // fmt.Printf(">>>> running mammoth map v{{$i}}: %v\n", v) - var v{{$i}}v1, v{{$i}}v2 map[{{ .MapKey }}]{{ .Elem }} - var bs{{$i}} []byte - v{{$i}}v1 = v - bs{{$i}} = testMarshalErr(v{{$i}}v1, h, t, "enc-map-v{{$i}}") - if v != nil { - if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map - testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}") - if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map - testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-map-v{{$i}}-noaddr") // decode into non-addressable map value - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-noaddr") - } - if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-p-len") - testReleaseBytes(bs{{$i}}) - bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-map-v{{$i}}-p") - v{{$i}}v2 = nil - testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-nil") - testDeepEqualErr(v{{$i}}v1, v{{$i}}v2, t, "equal-map-v{{$i}}-p-nil") - testReleaseBytes(bs{{$i}}) - // ... - if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map - var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMap" false }} - v{{$i}}v3 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v1) - v{{$i}}v4 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v2) - if v != nil { - bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-map-v{{$i}}-custom") - testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") - testDeepEqualErr(v{{$i}}v3, v{{$i}}v4, t, "equal-map-v{{$i}}-p-len") - testReleaseBytes(bs{{$i}}) - } - } -{{end}}{{end}}{{end}} - -} - -func doTestMammothMapsAndSlices(t *testing.T, h Handle) { - defer testSetup(t, &h)() - if mh, ok := h.(*MsgpackHandle); ok { - defer func(b bool) { mh.RawToString = b }(mh.RawToString) - mh.RawToString = true - } - __doTestMammothSlices(t, h) - __doTestMammothMaps(t, h) -} - -func doTestMammoth(t *testing.T, h Handle) { - defer testSetup(t, &h)() - if mh, ok := h.(*MsgpackHandle); ok { - defer func(b bool) { mh.RawToString = b }(mh.RawToString) - mh.RawToString = true - } - - name := h.Name() - var b []byte - - var m, m2 TestMammoth - testRandomFillRV(reflect.ValueOf(&m).Elem()) - b = testMarshalErr(&m, h, t, "mammoth-"+name) - - testUnmarshalErr(&m2, b, h, t, "mammoth-"+name) - testDeepEqualErr(&m, &m2, t, "mammoth-"+name) - testReleaseBytes(b) - - if testing.Short() { - t.Skipf("skipping rest of mammoth test in -short mode") - } - - var mm, mm2 TestMammoth2Wrapper - testRandomFillRV(reflect.ValueOf(&mm).Elem()) - b = testMarshalErr(&mm, h, t, "mammoth2-"+name) - // os.Stderr.Write([]byte("\n\n\n\n" + string(b) + "\n\n\n\n")) - testUnmarshalErr(&mm2, b, h, t, "mammoth2-"+name) - testDeepEqualErr(&mm, &mm2, t, "mammoth2-"+name) - // testMammoth2(t, name, h) - testReleaseBytes(b) -} - -{{range $i, $e := .Formats -}} -func Test{{ . }}Mammoth(t *testing.T) { - doTestMammoth(t, test{{ . }}H) -} -{{end}} -{{range $i, $e := .Formats -}} -func Test{{ . }}MammothMapsAndSlices(t *testing.T) { - doTestMammothMapsAndSlices(t, test{{ . }}H) -} -{{end}} diff --git a/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl deleted file mode 100644 index 9fe56ec7f..000000000 --- a/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl +++ /dev/null @@ -1,101 +0,0 @@ -// +build !codec.notmammoth - -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from mammoth2-test.go.tmpl - DO NOT EDIT. - -package codec - -// Increase codecoverage by covering all the codecgen paths, in fast-path and gen-helper.go.... -// -// Note: even though this is built based on fast-path and gen-helper, we will run these tests -// in all modes, including notfastpath, etc. -// -// Add test file for creating a mammoth generated file as _mammoth_generated.go -// - generate a second mammoth files in a different file: mammoth2_generated_test.go -// mammoth-test.go.tmpl will do this -// - run codecgen on it, into mammoth2_codecgen_generated_test.go (no build tags) -// - as part of TestMammoth, run it also -// - this will cover all the codecgen, gen-helper, etc in one full run -// - check in mammoth* files into github also -// -// Now, add some types: -// - some that implement BinaryMarshal, TextMarshal, JSONMarshal, and one that implements none of it -// - create a wrapper type that includes TestMammoth2, with it in slices, and maps, and the custom types -// - this wrapper object is what we work encode/decode (so that the codecgen methods are called) - - -// import "encoding/binary" - -import "fmt" - -type TestMammoth2 struct { - -{{range .Values }}{{if .Primitive }}{{/* -*/}}{{ .MethodNamePfx "F" true }} {{ .Primitive }} -{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }} -{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/* -*/}}{{ .MethodNamePfx "F" false }} []{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }} -{{end}}{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if .MapKey }}{{/* -*/}}{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }} -{{end}}{{end}}{{end}} - -} - -// ----------- - -type testMammoth2Binary uint64 -func (x testMammoth2Binary) MarshalBinary() (data []byte, err error) { -data = make([]byte, 8) -bigenstd.PutUint64(data, uint64(x)) -return -} -func (x *testMammoth2Binary) UnmarshalBinary(data []byte) (err error) { -*x = testMammoth2Binary(bigenstd.Uint64(data)) -return -} - -type testMammoth2Text uint64 -func (x testMammoth2Text) MarshalText() (data []byte, err error) { -data = []byte(fmt.Sprintf("%b", uint64(x))) -return -} -func (x *testMammoth2Text) UnmarshalText(data []byte) (err error) { -_, err = fmt.Sscanf(string(data), "%b", (*uint64)(x)) -return -} - -type testMammoth2Json uint64 -func (x testMammoth2Json) MarshalJSON() (data []byte, err error) { -data = []byte(fmt.Sprintf("%v", uint64(x))) -return -} -func (x *testMammoth2Json) UnmarshalJSON(data []byte) (err error) { -_, err = fmt.Sscanf(string(data), "%v", (*uint64)(x)) -return -} - -type testMammoth2Basic [4]uint64 - -type TestMammoth2Wrapper struct { - V TestMammoth2 - T testMammoth2Text - B testMammoth2Binary - J testMammoth2Json - C testMammoth2Basic - M map[testMammoth2Basic]TestMammoth2 - L []TestMammoth2 - A [4]int64 - - Tcomplex128 complex128 - Tcomplex64 complex64 - Tbytes []uint8 - Tpbytes *[]uint8 -} diff --git a/vendor/github.com/ugorji/go/codec/mammoth_test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth_test.go.tmpl new file mode 100644 index 000000000..f6a02436e --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/mammoth_test.go.tmpl @@ -0,0 +1,324 @@ +//go:build !codec.notmammoth + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// Code generated from mammoth_test.go.tmpl - DO NOT EDIT. + +package codec + +import "testing" +import "fmt" +import "reflect" + +// TestMammoth has all the different paths optimized in fastpath +// It has all the primitives, slices and maps. +// +// For each of those types, it has a pointer and a non-pointer field. + +func init() { _ = fmt.Printf } // so we can include fmt as needed + +type TestMammoth struct { + +{{range .Values }}{{if .Primitive -}} +{{ .MethodNamePfx "F" true }} {{ .Primitive }} +{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }} +{{end}}{{end}} + +{{range .Values }}{{if not .Primitive }}{{if not .MapKey -}} +{{ .MethodNamePfx "F" false }} []{{ .Elem }} +{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }} +{{ .MethodNamePfx "Farr4" false }} [4]{{ .Elem }} +{{end}}{{end}}{{end}} + +{{range .Values }}{{if not .Primitive }}{{if .MapKey -}} +{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }} +{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }} +{{end}}{{end}}{{end}} + +} + +// ----------- + +// Increase codecoverage by covering all the codecgen paths, in fastpath .... +// +// Note: even though this is built based on fastpath, we will run these tests +// in all modes, including notfastpath, etc. +// +// Add test file for creating a mammoth generated file as _mammoth_generated.go +// +// Now, add some types: +// - some that implement BinaryMarshal, TextMarshal, JSONMarshal, and one that implements none of it +// - create a wrapper type that includes TestMammoth2, with it in slices, and maps, and the custom types +// - this wrapper object is what we work encode/decode (so that the codecgen methods are called) + +type testMammoth2Binary uint64 +func (x testMammoth2Binary) MarshalBinary() (data []byte, err error) { +data = make([]byte, 8) +bigenstd.PutUint64(data, uint64(x)) +return +} +func (x *testMammoth2Binary) UnmarshalBinary(data []byte) (err error) { +*x = testMammoth2Binary(bigenstd.Uint64(data)) +return +} + +type testMammoth2Text uint64 +func (x testMammoth2Text) MarshalText() (data []byte, err error) { +data = []byte(fmt.Sprintf("%b", uint64(x))) +return +} +func (x *testMammoth2Text) UnmarshalText(data []byte) (err error) { +_, err = fmt.Sscanf(string(data), "%b", (*uint64)(x)) +return +} + +type testMammoth2Json uint64 +func (x testMammoth2Json) MarshalJSON() (data []byte, err error) { +data = []byte(fmt.Sprintf("%v", uint64(x))) +return +} +func (x *testMammoth2Json) UnmarshalJSON(data []byte) (err error) { +_, err = fmt.Sscanf(string(data), "%v", (*uint64)(x)) +return +} + +type testMammoth2Basic [4]uint64 + +type TestMammoth2Wrapper struct { + V TestMammoth + T testMammoth2Text + B testMammoth2Binary + J testMammoth2Json + C testMammoth2Basic + M map[testMammoth2Basic]TestMammoth + L []TestMammoth + A [4]int64 + + Tcomplex128 complex128 + Tcomplex64 complex64 + Tbytes []uint8 + Tpbytes *[]uint8 +} + +// ----------- + +{{range .Values }}{{if not .Primitive }}{{if not .MapKey -}} +type {{ .MethodNamePfx "typMbs" false }} []{{ .Elem }} +func (_ {{ .MethodNamePfx "typMbs" false }}) MapBySlice() { } +{{end}}{{end}}{{end}} + +{{range .Values }}{{if not .Primitive }}{{if .MapKey -}} +type {{ .MethodNamePfx "typMap" false }} map[{{ .MapKey }}]{{ .Elem }} +{{end}}{{end}}{{end}} + +func __doTestMammothSlices(t *testing.T, h Handle) { +{{range $i, $e := .Values }}{{if not .Primitive }}{{if not .MapKey -}} + var v{{$i}}va [8]{{ .Elem }} + for _, v := range [][]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .Elem }}, {{ zerocmd .Elem }}, {{ zerocmd .Elem }}, {{ nonzerocmd .Elem }} } } { + {{/* + // fmt.Printf(">>>> running mammoth slice v{{$i}}: %v\n", v) + // - encode value to some []byte + // - decode into a length-wise-equal []byte + // - check if equal to initial slice + // - encode ptr to the value + // - check if encode bytes are same + // - decode into ptrs to: nil, then 1-elem slice, equal-length, then large len slice + // - decode into non-addressable slice of equal length, then larger len + // - for each decode, compare elem-by-elem to the original slice + // - + // - rinse and repeat for a MapBySlice version + // - + */ -}} + var v{{$i}}v1, v{{$i}}v2 []{{ .Elem }} + var bs{{$i}} []byte + v{{$i}}v1 = v + bs{{$i}} = testMarshalErr(v{{$i}}v1, h, t, "enc-slice-v{{$i}}") + if v == nil { + v{{$i}}v2 = make([]{{ .Elem }}, 2) + testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}") + testDeepEqualErr(v{{$i}}v2[0], v{{$i}}v2[1], t, "equal-slice-v{{$i}}") // should not change + testDeepEqualErr(len(v{{$i}}v2), 2, t, "equal-slice-v{{$i}}") // should not change + v{{$i}}v2 = make([]{{ .Elem }}, 2) + testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-slice-v{{$i}}-noaddr") // non-addressable value + testDeepEqualErr(v{{$i}}v2[0], v{{$i}}v2[1], t, "equal-slice-v{{$i}}-noaddr") // should not change + testDeepEqualErr(len(v{{$i}}v2), 2, t, "equal-slice-v{{$i}}") // should not change + } else { + v{{$i}}v2 = make([]{{ .Elem }}, len(v)) + testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}") + v{{$i}}v2 = make([]{{ .Elem }}, len(v)) + testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-slice-v{{$i}}-noaddr") // non-addressable value + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}-noaddr") + } + testReleaseBytes(bs{{$i}}) + // ... + bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-slice-v{{$i}}-p") + v{{$i}}v2 = nil + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}-p") + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + testUnmarshalErr(&v{{$i}}va, bs{{$i}}, h, t, "dec-array-v{{$i}}-p-1") + if v{{$i}}v1 == nil && v{{$i}}v2 == nil { v{{$i}}v2 = []{{ .Elem }}{} } // so we can compare to zero len slice below + testDeepEqualErrHandle(v{{$i}}va[:len(v{{$i}}v2)], v{{$i}}v2, h, t, "equal-array-v{{$i}}-p-1") + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + v{{$i}}v2 = v{{$i}}va[:1:1] + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-1") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}-p-1") + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + v{{$i}}v2 = v{{$i}}va[:len(v{{$i}}v1):len(v{{$i}}v1)] + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}-p-len") + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + v{{$i}}v2 = v{{$i}}va[:] + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-slice-v{{$i}}-p-cap") + if len(v{{$i}}v1) > 1 { + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + testUnmarshalErr((&v{{$i}}va)[:len(v{{$i}}v1)], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-len-noaddr") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], h, t, "equal-slice-v{{$i}}-p-len-noaddr") + v{{$i}}va = [8]{{ .Elem }}{} // clear the array + testUnmarshalErr((&v{{$i}}va)[:], bs{{$i}}, h, t, "dec-slice-v{{$i}}-p-cap-noaddr") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}va[:len(v{{$i}}v1)], h, t, "equal-slice-v{{$i}}-p-cap-noaddr") + } + testReleaseBytes(bs{{$i}}) + // ... + var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMbs" false }} + v{{$i}}v2 = nil + if v != nil { v{{$i}}v2 = make([]{{ .Elem }}, len(v)) } + v{{$i}}v3 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v1) + v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2) + if v != nil { + bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom") + testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom") + testDeepEqualErrHandle(v{{$i}}v3, v{{$i}}v4, h, t, "equal-slice-v{{$i}}-custom") + testReleaseBytes(bs{{$i}}) + } + bs{{$i}} = testMarshalErr(&v{{$i}}v3, h, t, "enc-slice-v{{$i}}-custom-p") + v{{$i}}v2 = nil + v{{$i}}v4 = {{ .MethodNamePfx "typMbs" false }}(v{{$i}}v2) + testUnmarshalErr(&v{{$i}}v4, bs{{$i}}, h, t, "dec-slice-v{{$i}}-custom-p") + testDeepEqualErrHandle(v{{$i}}v3, v{{$i}}v4, h, t, "equal-slice-v{{$i}}-custom-p") + testReleaseBytes(bs{{$i}}) + } +{{end}}{{end}}{{end}} +} + +func __doTestMammothMaps(t *testing.T, h Handle) { +{{range $i, $e := .Values }}{{if not .Primitive }}{{if .MapKey -}} + for _, v := range []map[{{ .MapKey }}]{{ .Elem }}{ nil, {}, { {{ nonzerocmd .MapKey }}:{{ zerocmd .Elem }} {{if ne "bool" .MapKey}}, {{ nonzerocmd .MapKey }}:{{ nonzerocmd .Elem }} {{end}} } } { + {{/* // fmt.Printf(">>>> running mammoth map v{{$i}}: %v\n", v) */ -}} + var v{{$i}}v1, v{{$i}}v2 map[{{ .MapKey }}]{{ .Elem }} + var bs{{$i}} []byte + v{{$i}}v1 = v + bs{{$i}} = testMarshalErr(v{{$i}}v1, h, t, "enc-map-v{{$i}}") + if v != nil { + v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) // reset map + testUnmarshalErr(v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-map-v{{$i}}") + v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) // reset map + testUnmarshalErr(reflect.ValueOf(v{{$i}}v2), bs{{$i}}, h, t, "dec-map-v{{$i}}-noaddr") // decode into non-addressable map value + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-map-v{{$i}}-noaddr") + } + if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-map-v{{$i}}-p-len") + testReleaseBytes(bs{{$i}}) + bs{{$i}} = testMarshalErr(&v{{$i}}v1, h, t, "enc-map-v{{$i}}-p") + v{{$i}}v2 = nil + testUnmarshalErr(&v{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-nil") + testDeepEqualErrHandle(v{{$i}}v1, v{{$i}}v2, h, t, "equal-map-v{{$i}}-p-nil") + testReleaseBytes(bs{{$i}}) + // ... + if v == nil { v{{$i}}v2 = nil } else { v{{$i}}v2 = make(map[{{ .MapKey }}]{{ .Elem }}, len(v)) } // reset map + var v{{$i}}v3, v{{$i}}v4 {{ .MethodNamePfx "typMap" false }} + v{{$i}}v3 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v1) + v{{$i}}v4 = {{ .MethodNamePfx "typMap" false }}(v{{$i}}v2) + if v != nil { + bs{{$i}} = testMarshalErr(v{{$i}}v3, h, t, "enc-map-v{{$i}}-custom") + testUnmarshalErr(v{{$i}}v4, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") + testDeepEqualErrHandle(v{{$i}}v3, v{{$i}}v4, h, t, "equal-map-v{{$i}}-p-len") + testReleaseBytes(bs{{$i}}) + } + type s{{$i}}T struct { + M map[{{ .MapKey }}]{{ .Elem }} + Mp *map[{{ .MapKey }}]{{ .Elem }} + } + var m{{$i}}v99 = map[{{ .MapKey }}]{{ .Elem }}{ + {{ zerocmd .MapKey }}: {{ zerocmd .Elem }}, + {{ nonzerocmd .MapKey }}:{{ nonzerocmd .Elem }}, + } + var s{{$i}}v1, s{{$i}}v2 s{{$i}}T + bs{{$i}} = testMarshalErr(s{{$i}}v1, h, t, "enc-map-v{{$i}}-custom") + testUnmarshalErr(&s{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") + testDeepEqualErrHandle(s{{$i}}v1, s{{$i}}v2, h, t, "equal-map-v{{$i}}-p-len") + testReleaseBytes(bs{{$i}}) + s{{$i}}v2 = s{{$i}}T{} + s{{$i}}v1.M = m{{$i}}v99 + bs{{$i}} = testMarshalErr(s{{$i}}v1, h, t, "enc-map-v{{$i}}-custom") + testUnmarshalErr(&s{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") + testDeepEqualErrHandle(s{{$i}}v1, s{{$i}}v2, h, t, "equal-map-v{{$i}}-p-len") + testReleaseBytes(bs{{$i}}) + s{{$i}}v2 = s{{$i}}T{} + s{{$i}}v1.Mp = &m{{$i}}v99 + bs{{$i}} = testMarshalErr(s{{$i}}v1, h, t, "enc-map-v{{$i}}-custom") + testUnmarshalErr(&s{{$i}}v2, bs{{$i}}, h, t, "dec-map-v{{$i}}-p-len") + testDeepEqualErrHandle(s{{$i}}v1, s{{$i}}v2, h, t, "equal-map-v{{$i}}-p-len") + testReleaseBytes(bs{{$i}}) + } +{{end}}{{end}}{{end}} + +} + +func doTestMammothMapsAndSlices(t *testing.T, h Handle) { + defer testSetup(t, &h)() + if mh, ok := h.(*MsgpackHandle); ok { + defer func(b bool) { mh.RawToString = b }(mh.RawToString) + mh.RawToString = true + } + __doTestMammothSlices(t, h) + __doTestMammothMaps(t, h) +} + +func doTestMammoth(t *testing.T, h Handle) { + defer testSetup(t, &h)() + if mh, ok := h.(*MsgpackHandle); ok { + defer func(b bool) { mh.RawToString = b }(mh.RawToString) + mh.RawToString = true + } + + name := h.Name() + var b []byte + + var m, m2 TestMammoth + testRandomFillRV(reflect.ValueOf(&m).Elem()) + b = testMarshalErr(&m, h, t, "mammoth-"+name) + + testUnmarshalErr(&m2, b, h, t, "mammoth-"+name) + testDeepEqualErrHandle(&m, &m2, h, t, "mammoth-"+name) + testReleaseBytes(b) + + if testing.Short() { + t.Skipf("skipping rest of mammoth test in -short mode") + } + + var mm, mm2 TestMammoth2Wrapper + testRandomFillRV(reflect.ValueOf(&mm).Elem()) + b = testMarshalErr(&mm, h, t, "mammoth2-"+name) + // os.Stderr.Write([]byte("\n\n\n\n" + string(b) + "\n\n\n\n")) + testUnmarshalErr(&mm2, b, h, t, "mammoth2-"+name) + testDeepEqualErrHandle(&mm, &mm2, h, t, "mammoth2-"+name) + // testMammoth2(t, name, h) + testReleaseBytes(b) +} + +{{range $i, $e := .Formats -}} +func Test{{ . }}Mammoth(t *testing.T) { + doTestMammoth(t, test{{ . }}H) +} +{{end}} +{{range $i, $e := .Formats -}} +func Test{{ . }}MammothMapsAndSlices(t *testing.T) { + doTestMammothMapsAndSlices(t, test{{ . }}H) +} +{{end}} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.base.go b/vendor/github.com/ugorji/go/codec/msgpack.base.go new file mode 100644 index 000000000..0388f0cec --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/msgpack.base.go @@ -0,0 +1,299 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "fmt" + "io" + "net/rpc" + "reflect" +) + +const ( + mpPosFixNumMin byte = 0x00 + mpPosFixNumMax byte = 0x7f + mpFixMapMin byte = 0x80 + mpFixMapMax byte = 0x8f + mpFixArrayMin byte = 0x90 + mpFixArrayMax byte = 0x9f + mpFixStrMin byte = 0xa0 + mpFixStrMax byte = 0xbf + mpNil byte = 0xc0 + _ byte = 0xc1 + mpFalse byte = 0xc2 + mpTrue byte = 0xc3 + mpFloat byte = 0xca + mpDouble byte = 0xcb + mpUint8 byte = 0xcc + mpUint16 byte = 0xcd + mpUint32 byte = 0xce + mpUint64 byte = 0xcf + mpInt8 byte = 0xd0 + mpInt16 byte = 0xd1 + mpInt32 byte = 0xd2 + mpInt64 byte = 0xd3 + + // extensions below + mpBin8 byte = 0xc4 + mpBin16 byte = 0xc5 + mpBin32 byte = 0xc6 + mpExt8 byte = 0xc7 + mpExt16 byte = 0xc8 + mpExt32 byte = 0xc9 + mpFixExt1 byte = 0xd4 + mpFixExt2 byte = 0xd5 + mpFixExt4 byte = 0xd6 + mpFixExt8 byte = 0xd7 + mpFixExt16 byte = 0xd8 + + mpStr8 byte = 0xd9 // new + mpStr16 byte = 0xda + mpStr32 byte = 0xdb + + mpArray16 byte = 0xdc + mpArray32 byte = 0xdd + + mpMap16 byte = 0xde + mpMap32 byte = 0xdf + + mpNegFixNumMin byte = 0xe0 + mpNegFixNumMax byte = 0xff +) + +var mpTimeExtTag int8 = -1 +var mpTimeExtTagU = uint8(mpTimeExtTag) + +var mpdescNames = map[byte]string{ + mpNil: "nil", + mpFalse: "false", + mpTrue: "true", + mpFloat: "float", + mpDouble: "float", + mpUint8: "uuint", + mpUint16: "uint", + mpUint32: "uint", + mpUint64: "uint", + mpInt8: "int", + mpInt16: "int", + mpInt32: "int", + mpInt64: "int", + + mpStr8: "string|bytes", + mpStr16: "string|bytes", + mpStr32: "string|bytes", + + mpBin8: "bytes", + mpBin16: "bytes", + mpBin32: "bytes", + + mpArray16: "array", + mpArray32: "array", + + mpMap16: "map", + mpMap32: "map", +} + +func mpdesc(bd byte) (s string) { + s = mpdescNames[bd] + if s == "" { + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax, + bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + s = "int" + case bd >= mpFixStrMin && bd <= mpFixStrMax: + s = "string|bytes" + case bd >= mpFixArrayMin && bd <= mpFixArrayMax: + s = "array" + case bd >= mpFixMapMin && bd <= mpFixMapMax: + s = "map" + case bd >= mpFixExt1 && bd <= mpFixExt16, + bd >= mpExt8 && bd <= mpExt32: + s = "ext" + default: + s = "unknown" + } + } + return +} + +// MsgpackSpecRpcMultiArgs is a special type which signifies to the MsgpackSpecRpcCodec +// that the backend RPC service takes multiple arguments, which have been arranged +// in sequence in the slice. +// +// The Codec then passes it AS-IS to the rpc service (without wrapping it in an +// array of 1 element). +type MsgpackSpecRpcMultiArgs []interface{} + +// A MsgpackContainer type specifies the different types of msgpackContainers. +type msgpackContainerType struct { + fixCutoff, bFixMin, b8, b16, b32 byte + // hasFixMin, has8, has8Always bool +} + +var ( + msgpackContainerRawLegacy = msgpackContainerType{ + 32, mpFixStrMin, 0, mpStr16, mpStr32, + } + msgpackContainerStr = msgpackContainerType{ + 32, mpFixStrMin, mpStr8, mpStr16, mpStr32, // true, true, false, + } + msgpackContainerBin = msgpackContainerType{ + 0, 0, mpBin8, mpBin16, mpBin32, // false, true, true, + } + msgpackContainerList = msgpackContainerType{ + 16, mpFixArrayMin, 0, mpArray16, mpArray32, // true, false, false, + } + msgpackContainerMap = msgpackContainerType{ + 16, mpFixMapMin, 0, mpMap16, mpMap32, // true, false, false, + } +) + +//-------------------------------------------------- + +// MsgpackHandle is a Handle for the Msgpack Schema-Free Encoding Format. +type MsgpackHandle struct { + binaryEncodingType + notJsonType + BasicHandle + + // NoFixedNum says to output all signed integers as 2-bytes, never as 1-byte fixednum. + NoFixedNum bool + + // WriteExt controls whether the new spec is honored. + // + // With WriteExt=true, we can encode configured extensions with extension tags + // and encode string/[]byte/extensions in a way compatible with the new spec + // but incompatible with the old spec. + // + // For compatibility with the old spec, set WriteExt=false. + // + // With WriteExt=false: + // configured extensions are serialized as raw bytes (not msgpack extensions). + // reserved byte descriptors like Str8 and those enabling the new msgpack Binary type + // are not encoded. + WriteExt bool + + // PositiveIntUnsigned says to encode positive integers as unsigned. + PositiveIntUnsigned bool +} + +// Name returns the name of the handle: msgpack +func (h *MsgpackHandle) Name() string { return "msgpack" } + +func (h *MsgpackHandle) desc(bd byte) string { return mpdesc(bd) } + +// SetBytesExt sets an extension +func (h *MsgpackHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, makeExt(ext)) +} + +//-------------------------------------------------- + +type msgpackSpecRpcCodec struct { + *rpcCodec +} + +// /////////////// Spec RPC Codec /////////////////// +func (c *msgpackSpecRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error { + // WriteRequest can write to both a Go service, and other services that do + // not abide by the 1 argument rule of a Go service. + // We discriminate based on if the body is a MsgpackSpecRpcMultiArgs + var bodyArr []interface{} + if m, ok := body.(MsgpackSpecRpcMultiArgs); ok { + bodyArr = ([]interface{})(m) + } else { + bodyArr = []interface{}{body} + } + r2 := []interface{}{0, uint32(r.Seq), r.ServiceMethod, bodyArr} + return c.write(r2) +} + +func (c *msgpackSpecRpcCodec) WriteResponse(r *rpc.Response, body interface{}) error { + var moe interface{} + if r.Error != "" { + moe = r.Error + } + if moe != nil && body != nil { + body = nil + } + r2 := []interface{}{1, uint32(r.Seq), moe, body} + return c.write(r2) +} + +func (c *msgpackSpecRpcCodec) ReadResponseHeader(r *rpc.Response) error { + return c.parseCustomHeader(1, &r.Seq, &r.Error) +} + +func (c *msgpackSpecRpcCodec) ReadRequestHeader(r *rpc.Request) error { + return c.parseCustomHeader(0, &r.Seq, &r.ServiceMethod) +} + +func (c *msgpackSpecRpcCodec) ReadRequestBody(body interface{}) error { + if body == nil { // read and discard + return c.read(nil) + } + bodyArr := []interface{}{body} + return c.read(&bodyArr) +} + +func (c *msgpackSpecRpcCodec) parseCustomHeader(expectTypeByte byte, msgid *uint64, methodOrError *string) (err error) { + if c.cls.Load().closed { + return io.ErrUnexpectedEOF + } + + // We read the response header by hand + // so that the body can be decoded on its own from the stream at a later time. + + const fia byte = 0x94 //four item array descriptor value + + var ba [1]byte + var n int + for { + n, err = c.r.Read(ba[:]) + if err != nil { + return + } + if n == 1 { + break + } + } + + var b = ba[0] + if b != fia { + err = fmt.Errorf("not array - %s %x/%s", msgBadDesc, b, mpdesc(b)) + } else { + err = c.read(&b) + if err == nil { + if b != expectTypeByte { + err = fmt.Errorf("%s - expecting %v but got %x/%s", msgBadDesc, expectTypeByte, b, mpdesc(b)) + } else { + err = c.read(msgid) + if err == nil { + err = c.read(methodOrError) + } + } + } + } + return +} + +//-------------------------------------------------- + +// msgpackSpecRpc is the implementation of Rpc that uses custom communication protocol +// as defined in the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md +type msgpackSpecRpc struct{} + +// MsgpackSpecRpc implements Rpc using the communication protocol defined in +// the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md . +// +// See GoRpc documentation, for information on buffering for better performance. +var MsgpackSpecRpc msgpackSpecRpc + +func (x msgpackSpecRpc) ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec { + return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +} + +func (x msgpackSpecRpc) ClientCodec(conn io.ReadWriteCloser, h Handle) rpc.ClientCodec { + return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.fastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/msgpack.fastpath.mono.generated.go new file mode 100644 index 000000000..6d6a880e8 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/msgpack.fastpath.mono.generated.go @@ -0,0 +1,12482 @@ +//go:build !notmono && !codec.notmono && !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathEMsgpackBytes struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderMsgpackBytes, *encFnInfo, reflect.Value) +} +type fastpathDMsgpackBytes struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderMsgpackBytes, *decFnInfo, reflect.Value) +} +type fastpathEsMsgpackBytes [56]fastpathEMsgpackBytes +type fastpathDsMsgpackBytes [56]fastpathDMsgpackBytes +type fastpathETMsgpackBytes struct{} +type fastpathDTMsgpackBytes struct{} + +func (helperEncDriverMsgpackBytes) fastpathEList() *fastpathEsMsgpackBytes { + var i uint = 0 + var s fastpathEsMsgpackBytes + fn := func(v interface{}, fe func(*encoderMsgpackBytes, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEMsgpackBytes{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderMsgpackBytes).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderMsgpackBytes).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderMsgpackBytes).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderMsgpackBytes).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderMsgpackBytes).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderMsgpackBytes).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderMsgpackBytes).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderMsgpackBytes).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderMsgpackBytes).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderMsgpackBytes).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderMsgpackBytes).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderMsgpackBytes).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderMsgpackBytes).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderMsgpackBytes).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderMsgpackBytes).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderMsgpackBytes).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderMsgpackBytes).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderMsgpackBytes).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderMsgpackBytes).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderMsgpackBytes).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderMsgpackBytes).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderMsgpackBytes).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderMsgpackBytes).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderMsgpackBytes).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderMsgpackBytes).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderMsgpackBytes).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderMsgpackBytes).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderMsgpackBytes).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderMsgpackBytes).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderMsgpackBytes).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderMsgpackBytes).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderMsgpackBytes).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderMsgpackBytes).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderMsgpackBytes).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderMsgpackBytes).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderMsgpackBytes).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderMsgpackBytes).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderMsgpackBytes).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderMsgpackBytes).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderMsgpackBytes).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderMsgpackBytes).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderMsgpackBytes).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderMsgpackBytes).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderMsgpackBytes).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderMsgpackBytes).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderMsgpackBytes).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderMsgpackBytes).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderMsgpackBytes).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderMsgpackBytes).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderMsgpackBytes).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderMsgpackBytes).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderMsgpackBytes).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderMsgpackBytes).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderMsgpackBytes).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderMsgpackBytes).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderMsgpackBytes).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverMsgpackBytes) fastpathDList() *fastpathDsMsgpackBytes { + var i uint = 0 + var s fastpathDsMsgpackBytes + fn := func(v interface{}, fd func(*decoderMsgpackBytes, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDMsgpackBytes{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderMsgpackBytes).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderMsgpackBytes).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderMsgpackBytes).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderMsgpackBytes).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderMsgpackBytes).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderMsgpackBytes).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderMsgpackBytes).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderMsgpackBytes).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderMsgpackBytes).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderMsgpackBytes).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderMsgpackBytes).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderMsgpackBytes).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderMsgpackBytes).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderMsgpackBytes).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderMsgpackBytes).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderMsgpackBytes).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderMsgpackBytes).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderMsgpackBytes).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderMsgpackBytes).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderMsgpackBytes).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderMsgpackBytes).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderMsgpackBytes).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderMsgpackBytes).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderMsgpackBytes).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderMsgpackBytes).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderMsgpackBytes).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderMsgpackBytes).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderMsgpackBytes).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderMsgpackBytes).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderMsgpackBytes).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderMsgpackBytes).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderMsgpackBytes).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderMsgpackBytes).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderMsgpackBytes).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderMsgpackBytes).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderMsgpackBytes).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderMsgpackBytes).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderMsgpackBytes).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderMsgpackBytes).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderMsgpackBytes).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderMsgpackBytes).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderMsgpackBytes).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderMsgpackBytes).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderMsgpackBytes).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderMsgpackBytes).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderMsgpackBytes).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderMsgpackBytes).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderMsgpackBytes).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderMsgpackBytes).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderMsgpackBytes).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderMsgpackBytes).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderMsgpackBytes).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderMsgpackBytes).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderMsgpackBytes).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderMsgpackBytes).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderMsgpackBytes).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverMsgpackBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderMsgpackBytes) bool { + var ft fastpathETMsgpackBytes + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderMsgpackBytes) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETMsgpackBytes) EncSliceIntfV(v []interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceIntfV(v []interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETMsgpackBytes) EncSliceStringV(v []string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceStringV(v []string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETMsgpackBytes) EncSliceBytesV(v [][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceBytesV(v [][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceFloat32V(v []float32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceFloat32V(v []float32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceFloat64V(v []float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceFloat64V(v []float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceUint8V(v []uint8, e *encoderMsgpackBytes) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETMsgpackBytes) EncAsMapSliceUint8V(v []uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceUint64V(v []uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceUint64V(v []uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETMsgpackBytes) EncSliceIntV(v []int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceIntV(v []int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceInt32V(v []int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceInt32V(v []int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETMsgpackBytes) EncSliceInt64V(v []int64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceInt64V(v []int64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackBytes + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETMsgpackBytes) EncSliceBoolV(v []bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackBytes) EncAsMapSliceBoolV(v []bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETMsgpackBytes) EncMapStringIntfV(v map[string]interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETMsgpackBytes) EncMapStringStringV(v map[string]string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETMsgpackBytes) EncMapStringBytesV(v map[string][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETMsgpackBytes) EncMapStringUint8V(v map[string]uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETMsgpackBytes) EncMapStringUint64V(v map[string]uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETMsgpackBytes) EncMapStringIntV(v map[string]int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETMsgpackBytes) EncMapStringInt32V(v map[string]int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETMsgpackBytes) EncMapStringFloat64V(v map[string]float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETMsgpackBytes) EncMapStringBoolV(v map[string]bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETMsgpackBytes) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETMsgpackBytes) EncMapUint8StringV(v map[uint8]string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETMsgpackBytes) EncMapUint8BytesV(v map[uint8][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETMsgpackBytes) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETMsgpackBytes) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETMsgpackBytes) EncMapUint8IntV(v map[uint8]int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETMsgpackBytes) EncMapUint8Int32V(v map[uint8]int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETMsgpackBytes) EncMapUint8Float64V(v map[uint8]float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETMsgpackBytes) EncMapUint8BoolV(v map[uint8]bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETMsgpackBytes) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETMsgpackBytes) EncMapUint64StringV(v map[uint64]string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETMsgpackBytes) EncMapUint64BytesV(v map[uint64][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETMsgpackBytes) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETMsgpackBytes) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETMsgpackBytes) EncMapUint64IntV(v map[uint64]int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETMsgpackBytes) EncMapUint64Int32V(v map[uint64]int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETMsgpackBytes) EncMapUint64Float64V(v map[uint64]float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETMsgpackBytes) EncMapUint64BoolV(v map[uint64]bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETMsgpackBytes) EncMapIntIntfV(v map[int]interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETMsgpackBytes) EncMapIntStringV(v map[int]string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETMsgpackBytes) EncMapIntBytesV(v map[int][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETMsgpackBytes) EncMapIntUint8V(v map[int]uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETMsgpackBytes) EncMapIntUint64V(v map[int]uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETMsgpackBytes) EncMapIntIntV(v map[int]int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETMsgpackBytes) EncMapIntInt32V(v map[int]int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETMsgpackBytes) EncMapIntFloat64V(v map[int]float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETMsgpackBytes) EncMapIntBoolV(v map[int]bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETMsgpackBytes) EncMapInt32IntfV(v map[int32]interface{}, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETMsgpackBytes) EncMapInt32StringV(v map[int32]string, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETMsgpackBytes) EncMapInt32BytesV(v map[int32][]byte, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETMsgpackBytes) EncMapInt32Uint8V(v map[int32]uint8, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETMsgpackBytes) EncMapInt32Uint64V(v map[int32]uint64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETMsgpackBytes) EncMapInt32IntV(v map[int32]int, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETMsgpackBytes) EncMapInt32Int32V(v map[int32]int32, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETMsgpackBytes) EncMapInt32Float64V(v map[int32]float64, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackBytes) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackBytes{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETMsgpackBytes) EncMapInt32BoolV(v map[int32]bool, e *encoderMsgpackBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverMsgpackBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderMsgpackBytes) bool { + var ft fastpathDTMsgpackBytes + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderMsgpackBytes) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceIntfY(v []interface{}, d *decoderMsgpackBytes) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceIntfN(v []interface{}, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceStringY(v []string, d *decoderMsgpackBytes) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceStringN(v []string, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceBytesY(v [][]byte, d *decoderMsgpackBytes) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceBytesN(v [][]byte, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceFloat32Y(v []float32, d *decoderMsgpackBytes) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceFloat32N(v []float32, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceFloat64Y(v []float64, d *decoderMsgpackBytes) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceFloat64N(v []float64, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceUint8Y(v []uint8, d *decoderMsgpackBytes) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceUint8N(v []uint8, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderMsgpackBytes) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceUint64Y(v []uint64, d *decoderMsgpackBytes) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceUint64N(v []uint64, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceIntY(v []int, d *decoderMsgpackBytes) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceIntN(v []int, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceInt32Y(v []int32, d *decoderMsgpackBytes) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceInt32N(v []int32, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceInt64Y(v []int64, d *decoderMsgpackBytes) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceInt64N(v []int64, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTMsgpackBytes) DecSliceBoolY(v []bool, d *decoderMsgpackBytes) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackBytes) DecSliceBoolN(v []bool, d *decoderMsgpackBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringStringL(v map[string]string, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringIntL(v map[string]int, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntStringL(v map[int]string, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntIntL(v map[int]int, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackBytes) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackBytes) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderMsgpackBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} + +type fastpathEMsgpackIO struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderMsgpackIO, *encFnInfo, reflect.Value) +} +type fastpathDMsgpackIO struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderMsgpackIO, *decFnInfo, reflect.Value) +} +type fastpathEsMsgpackIO [56]fastpathEMsgpackIO +type fastpathDsMsgpackIO [56]fastpathDMsgpackIO +type fastpathETMsgpackIO struct{} +type fastpathDTMsgpackIO struct{} + +func (helperEncDriverMsgpackIO) fastpathEList() *fastpathEsMsgpackIO { + var i uint = 0 + var s fastpathEsMsgpackIO + fn := func(v interface{}, fe func(*encoderMsgpackIO, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathEMsgpackIO{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderMsgpackIO).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderMsgpackIO).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderMsgpackIO).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderMsgpackIO).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderMsgpackIO).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderMsgpackIO).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderMsgpackIO).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderMsgpackIO).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderMsgpackIO).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderMsgpackIO).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderMsgpackIO).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderMsgpackIO).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderMsgpackIO).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderMsgpackIO).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderMsgpackIO).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderMsgpackIO).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderMsgpackIO).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderMsgpackIO).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderMsgpackIO).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderMsgpackIO).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderMsgpackIO).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderMsgpackIO).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderMsgpackIO).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderMsgpackIO).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderMsgpackIO).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderMsgpackIO).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderMsgpackIO).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderMsgpackIO).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderMsgpackIO).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderMsgpackIO).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderMsgpackIO).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderMsgpackIO).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderMsgpackIO).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderMsgpackIO).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderMsgpackIO).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderMsgpackIO).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderMsgpackIO).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderMsgpackIO).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderMsgpackIO).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderMsgpackIO).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderMsgpackIO).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderMsgpackIO).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderMsgpackIO).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderMsgpackIO).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderMsgpackIO).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderMsgpackIO).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderMsgpackIO).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderMsgpackIO).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderMsgpackIO).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderMsgpackIO).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderMsgpackIO).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderMsgpackIO).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderMsgpackIO).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderMsgpackIO).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderMsgpackIO).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderMsgpackIO).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverMsgpackIO) fastpathDList() *fastpathDsMsgpackIO { + var i uint = 0 + var s fastpathDsMsgpackIO + fn := func(v interface{}, fd func(*decoderMsgpackIO, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDMsgpackIO{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderMsgpackIO).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderMsgpackIO).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderMsgpackIO).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderMsgpackIO).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderMsgpackIO).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderMsgpackIO).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderMsgpackIO).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderMsgpackIO).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderMsgpackIO).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderMsgpackIO).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderMsgpackIO).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderMsgpackIO).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderMsgpackIO).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderMsgpackIO).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderMsgpackIO).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderMsgpackIO).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderMsgpackIO).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderMsgpackIO).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderMsgpackIO).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderMsgpackIO).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderMsgpackIO).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderMsgpackIO).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderMsgpackIO).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderMsgpackIO).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderMsgpackIO).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderMsgpackIO).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderMsgpackIO).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderMsgpackIO).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderMsgpackIO).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderMsgpackIO).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderMsgpackIO).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderMsgpackIO).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderMsgpackIO).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderMsgpackIO).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderMsgpackIO).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderMsgpackIO).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderMsgpackIO).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderMsgpackIO).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderMsgpackIO).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderMsgpackIO).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderMsgpackIO).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderMsgpackIO).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderMsgpackIO).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderMsgpackIO).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderMsgpackIO).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderMsgpackIO).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderMsgpackIO).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderMsgpackIO).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderMsgpackIO).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderMsgpackIO).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderMsgpackIO).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderMsgpackIO).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderMsgpackIO).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderMsgpackIO).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderMsgpackIO).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderMsgpackIO).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverMsgpackIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderMsgpackIO) bool { + var ft fastpathETMsgpackIO + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderMsgpackIO) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETMsgpackIO) EncSliceIntfV(v []interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceIntfV(v []interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETMsgpackIO) EncSliceStringV(v []string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceStringV(v []string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETMsgpackIO) EncSliceBytesV(v [][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceBytesV(v [][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETMsgpackIO) EncSliceFloat32V(v []float32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceFloat32V(v []float32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETMsgpackIO) EncSliceFloat64V(v []float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceFloat64V(v []float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETMsgpackIO) EncSliceUint8V(v []uint8, e *encoderMsgpackIO) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETMsgpackIO) EncAsMapSliceUint8V(v []uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETMsgpackIO) EncSliceUint64V(v []uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceUint64V(v []uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETMsgpackIO) EncSliceIntV(v []int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceIntV(v []int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETMsgpackIO) EncSliceInt32V(v []int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceInt32V(v []int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETMsgpackIO) EncSliceInt64V(v []int64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceInt64V(v []int64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETMsgpackIO + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETMsgpackIO) EncSliceBoolV(v []bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETMsgpackIO) EncAsMapSliceBoolV(v []bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETMsgpackIO) EncMapStringIntfV(v map[string]interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETMsgpackIO) EncMapStringStringV(v map[string]string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETMsgpackIO) EncMapStringBytesV(v map[string][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETMsgpackIO) EncMapStringUint8V(v map[string]uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETMsgpackIO) EncMapStringUint64V(v map[string]uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETMsgpackIO) EncMapStringIntV(v map[string]int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETMsgpackIO) EncMapStringInt32V(v map[string]int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETMsgpackIO) EncMapStringFloat64V(v map[string]float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETMsgpackIO) EncMapStringBoolV(v map[string]bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETMsgpackIO) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETMsgpackIO) EncMapUint8StringV(v map[uint8]string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETMsgpackIO) EncMapUint8BytesV(v map[uint8][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETMsgpackIO) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETMsgpackIO) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETMsgpackIO) EncMapUint8IntV(v map[uint8]int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETMsgpackIO) EncMapUint8Int32V(v map[uint8]int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETMsgpackIO) EncMapUint8Float64V(v map[uint8]float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETMsgpackIO) EncMapUint8BoolV(v map[uint8]bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETMsgpackIO) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETMsgpackIO) EncMapUint64StringV(v map[uint64]string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETMsgpackIO) EncMapUint64BytesV(v map[uint64][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETMsgpackIO) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETMsgpackIO) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETMsgpackIO) EncMapUint64IntV(v map[uint64]int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETMsgpackIO) EncMapUint64Int32V(v map[uint64]int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETMsgpackIO) EncMapUint64Float64V(v map[uint64]float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETMsgpackIO) EncMapUint64BoolV(v map[uint64]bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETMsgpackIO) EncMapIntIntfV(v map[int]interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETMsgpackIO) EncMapIntStringV(v map[int]string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETMsgpackIO) EncMapIntBytesV(v map[int][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETMsgpackIO) EncMapIntUint8V(v map[int]uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETMsgpackIO) EncMapIntUint64V(v map[int]uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETMsgpackIO) EncMapIntIntV(v map[int]int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETMsgpackIO) EncMapIntInt32V(v map[int]int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETMsgpackIO) EncMapIntFloat64V(v map[int]float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETMsgpackIO) EncMapIntBoolV(v map[int]bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETMsgpackIO) EncMapInt32IntfV(v map[int32]interface{}, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETMsgpackIO) EncMapInt32StringV(v map[int32]string, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETMsgpackIO) EncMapInt32BytesV(v map[int32][]byte, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETMsgpackIO) EncMapInt32Uint8V(v map[int32]uint8, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETMsgpackIO) EncMapInt32Uint64V(v map[int32]uint64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETMsgpackIO) EncMapInt32IntV(v map[int32]int, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETMsgpackIO) EncMapInt32Int32V(v map[int32]int32, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETMsgpackIO) EncMapInt32Float64V(v map[int32]float64, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderMsgpackIO) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETMsgpackIO{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETMsgpackIO) EncMapInt32BoolV(v map[int32]bool, e *encoderMsgpackIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverMsgpackIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderMsgpackIO) bool { + var ft fastpathDTMsgpackIO + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderMsgpackIO) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTMsgpackIO) DecSliceIntfY(v []interface{}, d *decoderMsgpackIO) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceIntfN(v []interface{}, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTMsgpackIO) DecSliceStringY(v []string, d *decoderMsgpackIO) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceStringN(v []string, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTMsgpackIO) DecSliceBytesY(v [][]byte, d *decoderMsgpackIO) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceBytesN(v [][]byte, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTMsgpackIO) DecSliceFloat32Y(v []float32, d *decoderMsgpackIO) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceFloat32N(v []float32, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTMsgpackIO) DecSliceFloat64Y(v []float64, d *decoderMsgpackIO) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceFloat64N(v []float64, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTMsgpackIO) DecSliceUint8Y(v []uint8, d *decoderMsgpackIO) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceUint8N(v []uint8, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderMsgpackIO) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTMsgpackIO) DecSliceUint64Y(v []uint64, d *decoderMsgpackIO) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceUint64N(v []uint64, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTMsgpackIO) DecSliceIntY(v []int, d *decoderMsgpackIO) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceIntN(v []int, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTMsgpackIO) DecSliceInt32Y(v []int32, d *decoderMsgpackIO) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceInt32N(v []int32, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTMsgpackIO) DecSliceInt64Y(v []int64, d *decoderMsgpackIO) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceInt64N(v []int64, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTMsgpackIO) DecSliceBoolY(v []bool, d *decoderMsgpackIO) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTMsgpackIO) DecSliceBoolN(v []bool, d *decoderMsgpackIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringStringL(v map[string]string, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringIntL(v map[string]int, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntStringL(v map[int]string, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntIntL(v map[int]int, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderMsgpackIO) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTMsgpackIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTMsgpackIO) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderMsgpackIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.go b/vendor/github.com/ugorji/go/codec/msgpack.go index c0861df5e..ed8ca99a6 100644 --- a/vendor/github.com/ugorji/go/codec/msgpack.go +++ b/vendor/github.com/ugorji/go/codec/msgpack.go @@ -1,3 +1,5 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -18,247 +20,106 @@ For compatibility with behaviour of msgpack-c reference implementation: package codec import ( - "fmt" "io" "math" - "net/rpc" "reflect" "time" "unicode/utf8" ) -const ( - mpPosFixNumMin byte = 0x00 - mpPosFixNumMax byte = 0x7f - mpFixMapMin byte = 0x80 - mpFixMapMax byte = 0x8f - mpFixArrayMin byte = 0x90 - mpFixArrayMax byte = 0x9f - mpFixStrMin byte = 0xa0 - mpFixStrMax byte = 0xbf - mpNil byte = 0xc0 - _ byte = 0xc1 - mpFalse byte = 0xc2 - mpTrue byte = 0xc3 - mpFloat byte = 0xca - mpDouble byte = 0xcb - mpUint8 byte = 0xcc - mpUint16 byte = 0xcd - mpUint32 byte = 0xce - mpUint64 byte = 0xcf - mpInt8 byte = 0xd0 - mpInt16 byte = 0xd1 - mpInt32 byte = 0xd2 - mpInt64 byte = 0xd3 - - // extensions below - mpBin8 byte = 0xc4 - mpBin16 byte = 0xc5 - mpBin32 byte = 0xc6 - mpExt8 byte = 0xc7 - mpExt16 byte = 0xc8 - mpExt32 byte = 0xc9 - mpFixExt1 byte = 0xd4 - mpFixExt2 byte = 0xd5 - mpFixExt4 byte = 0xd6 - mpFixExt8 byte = 0xd7 - mpFixExt16 byte = 0xd8 - - mpStr8 byte = 0xd9 // new - mpStr16 byte = 0xda - mpStr32 byte = 0xdb - - mpArray16 byte = 0xdc - mpArray32 byte = 0xdd - - mpMap16 byte = 0xde - mpMap32 byte = 0xdf - - mpNegFixNumMin byte = 0xe0 - mpNegFixNumMax byte = 0xff -) - -var mpTimeExtTag int8 = -1 -var mpTimeExtTagU = uint8(mpTimeExtTag) - -var mpdescNames = map[byte]string{ - mpNil: "nil", - mpFalse: "false", - mpTrue: "true", - mpFloat: "float", - mpDouble: "float", - mpUint8: "uuint", - mpUint16: "uint", - mpUint32: "uint", - mpUint64: "uint", - mpInt8: "int", - mpInt16: "int", - mpInt32: "int", - mpInt64: "int", - - mpStr8: "string|bytes", - mpStr16: "string|bytes", - mpStr32: "string|bytes", - - mpBin8: "bytes", - mpBin16: "bytes", - mpBin32: "bytes", - - mpArray16: "array", - mpArray32: "array", - - mpMap16: "map", - mpMap32: "map", -} - -func mpdesc(bd byte) (s string) { - s = mpdescNames[bd] - if s == "" { - switch { - case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax, - bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: - s = "int" - case bd >= mpFixStrMin && bd <= mpFixStrMax: - s = "string|bytes" - case bd >= mpFixArrayMin && bd <= mpFixArrayMax: - s = "array" - case bd >= mpFixMapMin && bd <= mpFixMapMax: - s = "map" - case bd >= mpFixExt1 && bd <= mpFixExt16, - bd >= mpExt8 && bd <= mpExt32: - s = "ext" - default: - s = "unknown" - } - } - return -} - -// MsgpackSpecRpcMultiArgs is a special type which signifies to the MsgpackSpecRpcCodec -// that the backend RPC service takes multiple arguments, which have been arranged -// in sequence in the slice. -// -// The Codec then passes it AS-IS to the rpc service (without wrapping it in an -// array of 1 element). -type MsgpackSpecRpcMultiArgs []interface{} - -// A MsgpackContainer type specifies the different types of msgpackContainers. -type msgpackContainerType struct { - fixCutoff, bFixMin, b8, b16, b32 byte - // hasFixMin, has8, has8Always bool -} - -var ( - msgpackContainerRawLegacy = msgpackContainerType{ - 32, mpFixStrMin, 0, mpStr16, mpStr32, - } - msgpackContainerStr = msgpackContainerType{ - 32, mpFixStrMin, mpStr8, mpStr16, mpStr32, // true, true, false, - } - msgpackContainerBin = msgpackContainerType{ - 0, 0, mpBin8, mpBin16, mpBin32, // false, true, true, - } - msgpackContainerList = msgpackContainerType{ - 16, mpFixArrayMin, 0, mpArray16, mpArray32, // true, false, false, - } - msgpackContainerMap = msgpackContainerType{ - 16, mpFixMapMin, 0, mpMap16, mpMap32, // true, false, false, - } -) - //--------------------------------------------- -type msgpackEncDriver struct { +type msgpackEncDriver[T encWriter] struct { noBuiltInTypes encDriverNoopContainerWriter encDriverNoState + encDriverContainerNoTrackerT + encInit2er + h *MsgpackHandle + e *encoderBase + w T // x [8]byte - e Encoder } -func (e *msgpackEncDriver) encoder() *Encoder { - return &e.e +func (e *msgpackEncDriver[T]) EncodeNil() { + e.w.writen1(mpNil) } -func (e *msgpackEncDriver) EncodeNil() { - e.e.encWr.writen1(mpNil) -} - -func (e *msgpackEncDriver) EncodeInt(i int64) { +func (e *msgpackEncDriver[T]) EncodeInt(i int64) { if e.h.PositiveIntUnsigned && i >= 0 { e.EncodeUint(uint64(i)) } else if i > math.MaxInt8 { if i <= math.MaxInt16 { - e.e.encWr.writen1(mpInt16) - bigen.writeUint16(e.e.w(), uint16(i)) + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) } else if i <= math.MaxInt32 { - e.e.encWr.writen1(mpInt32) - bigen.writeUint32(e.e.w(), uint32(i)) + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) } else { - e.e.encWr.writen1(mpInt64) - bigen.writeUint64(e.e.w(), uint64(i)) + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) } } else if i >= -32 { if e.h.NoFixedNum { - e.e.encWr.writen2(mpInt8, byte(i)) + e.w.writen2(mpInt8, byte(i)) } else { - e.e.encWr.writen1(byte(i)) + e.w.writen1(byte(i)) } } else if i >= math.MinInt8 { - e.e.encWr.writen2(mpInt8, byte(i)) + e.w.writen2(mpInt8, byte(i)) } else if i >= math.MinInt16 { - e.e.encWr.writen1(mpInt16) - bigen.writeUint16(e.e.w(), uint16(i)) + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) } else if i >= math.MinInt32 { - e.e.encWr.writen1(mpInt32) - bigen.writeUint32(e.e.w(), uint32(i)) + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) } else { - e.e.encWr.writen1(mpInt64) - bigen.writeUint64(e.e.w(), uint64(i)) + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) } } -func (e *msgpackEncDriver) EncodeUint(i uint64) { +func (e *msgpackEncDriver[T]) EncodeUint(i uint64) { if i <= math.MaxInt8 { if e.h.NoFixedNum { - e.e.encWr.writen2(mpUint8, byte(i)) + e.w.writen2(mpUint8, byte(i)) } else { - e.e.encWr.writen1(byte(i)) + e.w.writen1(byte(i)) } } else if i <= math.MaxUint8 { - e.e.encWr.writen2(mpUint8, byte(i)) + e.w.writen2(mpUint8, byte(i)) } else if i <= math.MaxUint16 { - e.e.encWr.writen1(mpUint16) - bigen.writeUint16(e.e.w(), uint16(i)) + e.w.writen1(mpUint16) + e.w.writen2(bigen.PutUint16(uint16(i))) } else if i <= math.MaxUint32 { - e.e.encWr.writen1(mpUint32) - bigen.writeUint32(e.e.w(), uint32(i)) + e.w.writen1(mpUint32) + e.w.writen4(bigen.PutUint32(uint32(i))) } else { - e.e.encWr.writen1(mpUint64) - bigen.writeUint64(e.e.w(), uint64(i)) + e.w.writen1(mpUint64) + e.w.writen8(bigen.PutUint64(uint64(i))) } } -func (e *msgpackEncDriver) EncodeBool(b bool) { +func (e *msgpackEncDriver[T]) EncodeBool(b bool) { if b { - e.e.encWr.writen1(mpTrue) + e.w.writen1(mpTrue) } else { - e.e.encWr.writen1(mpFalse) + e.w.writen1(mpFalse) } } -func (e *msgpackEncDriver) EncodeFloat32(f float32) { - e.e.encWr.writen1(mpFloat) - bigen.writeUint32(e.e.w(), math.Float32bits(f)) +func (e *msgpackEncDriver[T]) EncodeFloat32(f float32) { + e.w.writen1(mpFloat) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) } -func (e *msgpackEncDriver) EncodeFloat64(f float64) { - e.e.encWr.writen1(mpDouble) - bigen.writeUint64(e.e.w(), math.Float64bits(f)) +func (e *msgpackEncDriver[T]) EncodeFloat64(f float64) { + e.w.writen1(mpDouble) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) } -func (e *msgpackEncDriver) EncodeTime(t time.Time) { +func (e *msgpackEncDriver[T]) EncodeTime(t time.Time) { if t.IsZero() { e.EncodeNil() return @@ -282,33 +143,33 @@ func (e *msgpackEncDriver) EncodeTime(t time.Time) { } switch l { case 4: - bigen.writeUint32(e.e.w(), uint32(data64)) + e.w.writen4(bigen.PutUint32(uint32(data64))) case 8: - bigen.writeUint64(e.e.w(), data64) + e.w.writen8(bigen.PutUint64(data64)) case 12: - bigen.writeUint32(e.e.w(), uint32(nsec)) - bigen.writeUint64(e.e.w(), uint64(sec)) + e.w.writen4(bigen.PutUint32(uint32(nsec))) + e.w.writen8(bigen.PutUint64(uint64(sec))) } } -func (e *msgpackEncDriver) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (e *msgpackEncDriver[T]) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { var bs0, bs []byte if ext == SelfExt { bs0 = e.e.blist.get(1024) bs = bs0 - e.e.sideEncode(v, basetype, &bs) + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) } else { bs = ext.WriteExt(v) } if bs == nil { - e.EncodeNil() + e.writeNilBytes() goto END } if e.h.WriteExt { e.encodeExtPreamble(uint8(xtag), len(bs)) - e.e.encWr.writeb(bs) + e.w.writeb(bs) } else { - e.EncodeStringBytesRaw(bs) + e.EncodeBytes(bs) } END: if ext == SelfExt { @@ -319,45 +180,55 @@ END: } } -func (e *msgpackEncDriver) EncodeRawExt(re *RawExt) { +func (e *msgpackEncDriver[T]) EncodeRawExt(re *RawExt) { e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) - e.e.encWr.writeb(re.Data) + e.w.writeb(re.Data) } -func (e *msgpackEncDriver) encodeExtPreamble(xtag byte, l int) { +func (e *msgpackEncDriver[T]) encodeExtPreamble(xtag byte, l int) { if l == 1 { - e.e.encWr.writen2(mpFixExt1, xtag) + e.w.writen2(mpFixExt1, xtag) } else if l == 2 { - e.e.encWr.writen2(mpFixExt2, xtag) + e.w.writen2(mpFixExt2, xtag) } else if l == 4 { - e.e.encWr.writen2(mpFixExt4, xtag) + e.w.writen2(mpFixExt4, xtag) } else if l == 8 { - e.e.encWr.writen2(mpFixExt8, xtag) + e.w.writen2(mpFixExt8, xtag) } else if l == 16 { - e.e.encWr.writen2(mpFixExt16, xtag) + e.w.writen2(mpFixExt16, xtag) } else if l < 256 { - e.e.encWr.writen2(mpExt8, byte(l)) - e.e.encWr.writen1(xtag) + e.w.writen2(mpExt8, byte(l)) + e.w.writen1(xtag) } else if l < 65536 { - e.e.encWr.writen1(mpExt16) - bigen.writeUint16(e.e.w(), uint16(l)) - e.e.encWr.writen1(xtag) + e.w.writen1(mpExt16) + e.w.writen2(bigen.PutUint16(uint16(l))) + e.w.writen1(xtag) } else { - e.e.encWr.writen1(mpExt32) - bigen.writeUint32(e.e.w(), uint32(l)) - e.e.encWr.writen1(xtag) + e.w.writen1(mpExt32) + e.w.writen4(bigen.PutUint32(uint32(l))) + e.w.writen1(xtag) } } -func (e *msgpackEncDriver) WriteArrayStart(length int) { +func (e *msgpackEncDriver[T]) WriteArrayStart(length int) { e.writeContainerLen(msgpackContainerList, length) } -func (e *msgpackEncDriver) WriteMapStart(length int) { +func (e *msgpackEncDriver[T]) WriteMapStart(length int) { e.writeContainerLen(msgpackContainerMap, length) } -func (e *msgpackEncDriver) EncodeString(s string) { +func (e *msgpackEncDriver[T]) WriteArrayEmpty() { + // e.WriteArrayStart(0) = e.writeContainerLen(msgpackContainerList, 0) + e.w.writen1(mpFixArrayMin) +} + +func (e *msgpackEncDriver[T]) WriteMapEmpty() { + // e.WriteMapStart(0) = e.writeContainerLen(msgpackContainerMap, 0) + e.w.writen1(mpFixMapMin) +} + +func (e *msgpackEncDriver[T]) EncodeString(s string) { var ct msgpackContainerType if e.h.WriteExt { if e.h.StringToRaw { @@ -370,53 +241,78 @@ func (e *msgpackEncDriver) EncodeString(s string) { } e.writeContainerLen(ct, len(s)) if len(s) > 0 { - e.e.encWr.writestr(s) + e.w.writestr(s) } } -func (e *msgpackEncDriver) EncodeStringBytesRaw(bs []byte) { - if bs == nil { - e.EncodeNil() - return - } +func (e *msgpackEncDriver[T]) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *msgpackEncDriver[T]) EncodeStringBytesRaw(bs []byte) { if e.h.WriteExt { e.writeContainerLen(msgpackContainerBin, len(bs)) } else { e.writeContainerLen(msgpackContainerRawLegacy, len(bs)) } if len(bs) > 0 { - e.e.encWr.writeb(bs) + e.w.writeb(bs) + } +} + +func (e *msgpackEncDriver[T]) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *msgpackEncDriver[T]) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = mpNil } + e.w.writen1(v) } -func (e *msgpackEncDriver) writeContainerLen(ct msgpackContainerType, l int) { +func (e *msgpackEncDriver[T]) writeNilArray() { + e.writeNilOr(mpFixArrayMin) +} + +func (e *msgpackEncDriver[T]) writeNilMap() { + e.writeNilOr(mpFixMapMin) +} + +func (e *msgpackEncDriver[T]) writeNilBytes() { + e.writeNilOr(mpFixStrMin) +} + +func (e *msgpackEncDriver[T]) writeContainerLen(ct msgpackContainerType, l int) { if ct.fixCutoff > 0 && l < int(ct.fixCutoff) { - e.e.encWr.writen1(ct.bFixMin | byte(l)) + e.w.writen1(ct.bFixMin | byte(l)) } else if ct.b8 > 0 && l < 256 { - e.e.encWr.writen2(ct.b8, uint8(l)) + e.w.writen2(ct.b8, uint8(l)) } else if l < 65536 { - e.e.encWr.writen1(ct.b16) - bigen.writeUint16(e.e.w(), uint16(l)) + e.w.writen1(ct.b16) + e.w.writen2(bigen.PutUint16(uint16(l))) } else { - e.e.encWr.writen1(ct.b32) - bigen.writeUint32(e.e.w(), uint32(l)) + e.w.writen1(ct.b32) + e.w.writen4(bigen.PutUint32(uint32(l))) } } //--------------------------------------------- -type msgpackDecDriver struct { +type msgpackDecDriver[T decReader] struct { decDriverNoopContainerReader decDriverNoopNumberHelper + decInit2er + h *MsgpackHandle + d *decoderBase + r T + bdAndBdread - _ bool + // bytes bool noBuiltInTypes - d Decoder -} - -func (d *msgpackDecDriver) decoder() *Decoder { - return &d.d } // Note: This returns either a primitive (int, bool, etc) for non-containers, @@ -424,7 +320,7 @@ func (d *msgpackDecDriver) decoder() *Decoder { // It is called when a nil interface{} is passed, leaving it up to the DecDriver // to introspect the stream and decide how best to decode. // It deciphers the value by looking at the stream first. -func (d *msgpackDecDriver) DecodeNaked() { +func (d *msgpackDecDriver[T]) DecodeNaked() { if !d.bdRead { d.readNextBd() } @@ -445,36 +341,36 @@ func (d *msgpackDecDriver) DecodeNaked() { case mpFloat: n.v = valueTypeFloat - n.f = float64(math.Float32frombits(bigen.Uint32(d.d.decRd.readn4()))) + n.f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) case mpDouble: n.v = valueTypeFloat - n.f = math.Float64frombits(bigen.Uint64(d.d.decRd.readn8())) + n.f = math.Float64frombits(bigen.Uint64(d.r.readn8())) case mpUint8: n.v = valueTypeUint - n.u = uint64(d.d.decRd.readn1()) + n.u = uint64(d.r.readn1()) case mpUint16: n.v = valueTypeUint - n.u = uint64(bigen.Uint16(d.d.decRd.readn2())) + n.u = uint64(bigen.Uint16(d.r.readn2())) case mpUint32: n.v = valueTypeUint - n.u = uint64(bigen.Uint32(d.d.decRd.readn4())) + n.u = uint64(bigen.Uint32(d.r.readn4())) case mpUint64: n.v = valueTypeUint - n.u = uint64(bigen.Uint64(d.d.decRd.readn8())) + n.u = uint64(bigen.Uint64(d.r.readn8())) case mpInt8: n.v = valueTypeInt - n.i = int64(int8(d.d.decRd.readn1())) + n.i = int64(int8(d.r.readn1())) case mpInt16: n.v = valueTypeInt - n.i = int64(int16(bigen.Uint16(d.d.decRd.readn2()))) + n.i = int64(int16(bigen.Uint16(d.r.readn2()))) case mpInt32: n.v = valueTypeInt - n.i = int64(int32(bigen.Uint32(d.d.decRd.readn4()))) + n.i = int64(int32(bigen.Uint32(d.r.readn4()))) case mpInt64: n.v = valueTypeInt - n.i = int64(int64(bigen.Uint64(d.d.decRd.readn8()))) + n.i = int64(int64(bigen.Uint64(d.r.readn8()))) default: switch { @@ -487,7 +383,7 @@ func (d *msgpackDecDriver) DecodeNaked() { n.v = valueTypeInt n.i = int64(int8(bd)) case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax: - d.d.fauxUnionReadRawBytes(d.h.WriteExt) + d.d.fauxUnionReadRawBytes(d, d.h.WriteExt, d.h.RawToString) //, d.h.ZeroCopy) // if d.h.WriteExt || d.h.RawToString { // n.v = valueTypeString // n.s = d.d.stringZC(d.DecodeStringAsBytes()) @@ -496,7 +392,7 @@ func (d *msgpackDecDriver) DecodeNaked() { // n.l = d.DecodeBytes([]byte{}) // } case bd == mpBin8, bd == mpBin16, bd == mpBin32: - d.d.fauxUnionReadRawBytes(false) + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) //, d.h.ZeroCopy) case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax: n.v = valueTypeArray decodeFurther = true @@ -506,17 +402,15 @@ func (d *msgpackDecDriver) DecodeNaked() { case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32: n.v = valueTypeExt clen := d.readExtLen() - n.u = uint64(d.d.decRd.readn1()) + n.u = uint64(d.r.readn1()) if n.u == uint64(mpTimeExtTagU) { n.v = valueTypeTime n.t = d.decodeTime(clen) - } else if d.d.bytes { - n.l = d.d.decRd.rb.readx(uint(clen)) } else { - n.l = decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, d.d.b[:]) + n.l = d.r.readx(uint(clen)) } default: - d.d.errorf("cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + halt.errorf("cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) } } if !decodeFurther { @@ -528,32 +422,18 @@ func (d *msgpackDecDriver) DecodeNaked() { } } -func (d *msgpackDecDriver) nextValueBytes(v0 []byte) (v []byte) { +func (d *msgpackDecDriver[T]) nextValueBytes() (v []byte) { if !d.bdRead { d.readNextBd() } - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - var cursor = d.d.rb.c - 1 - h.append1(&v, d.bd) - v = d.nextValueBytesBdReadR(v) + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() d.bdRead = false - h.bytesRdV(&v, cursor) return } -func (d *msgpackDecDriver) nextValueBytesR(v0 []byte) (v []byte) { - d.readNextBd() - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - h.append1(&v, d.bd) - return d.nextValueBytesBdReadR(v) -} - -func (d *msgpackDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - +func (d *msgpackDecDriver[T]) nextValueBytesBdReadR() { bd := d.bd var clen uint @@ -561,88 +441,84 @@ func (d *msgpackDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { switch bd { case mpNil, mpFalse, mpTrue: // pass case mpUint8, mpInt8: - h.append1(&v, d.d.decRd.readn1()) + d.r.readn1() case mpUint16, mpInt16: - h.appendN(&v, d.d.decRd.readx(2)...) + d.r.skip(2) case mpFloat, mpUint32, mpInt32: - h.appendN(&v, d.d.decRd.readx(4)...) + d.r.skip(4) case mpDouble, mpUint64, mpInt64: - h.appendN(&v, d.d.decRd.readx(8)...) + d.r.skip(8) case mpStr8, mpBin8: - clen = uint(d.d.decRd.readn1()) - h.append1(&v, byte(clen)) - h.appendN(&v, d.d.decRd.readx(clen)...) + clen = uint(d.r.readn1()) + d.r.skip(clen) case mpStr16, mpBin16: - x := d.d.decRd.readn2() - h.appendN(&v, x[:]...) + x := d.r.readn2() clen = uint(bigen.Uint16(x)) - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.skip(clen) case mpStr32, mpBin32: - x := d.d.decRd.readn4() - h.appendN(&v, x[:]...) + x := d.r.readn4() clen = uint(bigen.Uint32(x)) - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.skip(clen) case mpFixExt1: - h.append1(&v, d.d.decRd.readn1()) // tag - h.append1(&v, d.d.decRd.readn1()) + d.r.readn1() // tag + d.r.readn1() case mpFixExt2: - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(2)...) + d.r.readn1() // tag + d.r.skip(2) case mpFixExt4: - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(4)...) + d.r.readn1() // tag + d.r.skip(4) case mpFixExt8: - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(8)...) + d.r.readn1() // tag + d.r.skip(8) case mpFixExt16: - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(16)...) + d.r.readn1() // tag + d.r.skip(16) case mpExt8: - clen = uint(d.d.decRd.readn1()) - h.append1(&v, uint8(clen)) - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(clen)...) + clen = uint(d.r.readn1()) + d.r.readn1() // tag + d.r.skip(clen) case mpExt16: - x := d.d.decRd.readn2() + x := d.r.readn2() clen = uint(bigen.Uint16(x)) - h.appendN(&v, x[:]...) - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.readn1() // tag + d.r.skip(clen) case mpExt32: - x := d.d.decRd.readn4() + x := d.r.readn4() clen = uint(bigen.Uint32(x)) - h.appendN(&v, x[:]...) - h.append1(&v, d.d.decRd.readn1()) // tag - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.readn1() // tag + d.r.skip(clen) case mpArray16: - x := d.d.decRd.readn2() + x := d.r.readn2() clen = uint(bigen.Uint16(x)) - h.appendN(&v, x[:]...) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } case mpArray32: - x := d.d.decRd.readn4() + x := d.r.readn4() clen = uint(bigen.Uint32(x)) - h.appendN(&v, x[:]...) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } case mpMap16: - x := d.d.decRd.readn2() + x := d.r.readn2() clen = uint(bigen.Uint16(x)) - h.appendN(&v, x[:]...) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } case mpMap32: - x := d.d.decRd.readn4() + x := d.r.readn4() clen = uint(bigen.Uint32(x)) - h.appendN(&v, x[:]...) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } default: switch { @@ -650,65 +526,68 @@ func (d *msgpackDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: // pass case bd >= mpFixStrMin && bd <= mpFixStrMax: clen = uint(mpFixStrMin ^ bd) - h.appendN(&v, d.d.decRd.readx(clen)...) + d.r.skip(clen) case bd >= mpFixArrayMin && bd <= mpFixArrayMax: clen = uint(mpFixArrayMin ^ bd) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } case bd >= mpFixMapMin && bd <= mpFixMapMax: clen = uint(mpFixMapMin ^ bd) for i := uint(0); i < clen; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } default: - d.d.errorf("nextValueBytes: cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + halt.errorf("nextValueBytes: cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) } } return } -func (d *msgpackDecDriver) decFloat4Int32() (f float32) { - fbits := bigen.Uint32(d.d.decRd.readn4()) +func (d *msgpackDecDriver[T]) decFloat4Int32() (f float32) { + fbits := bigen.Uint32(d.r.readn4()) f = math.Float32frombits(fbits) if !noFrac32(fbits) { - d.d.errorf("assigning integer value from float32 with a fraction: %v", f) + halt.errorf("assigning integer value from float32 with a fraction: %v", f) } return } -func (d *msgpackDecDriver) decFloat4Int64() (f float64) { - fbits := bigen.Uint64(d.d.decRd.readn8()) +func (d *msgpackDecDriver[T]) decFloat4Int64() (f float64) { + fbits := bigen.Uint64(d.r.readn8()) f = math.Float64frombits(fbits) if !noFrac64(fbits) { - d.d.errorf("assigning integer value from float64 with a fraction: %v", f) + halt.errorf("assigning integer value from float64 with a fraction: %v", f) } return } // int can be decoded from msgpack type: intXXX or uintXXX -func (d *msgpackDecDriver) DecodeInt64() (i int64) { +func (d *msgpackDecDriver[T]) DecodeInt64() (i int64) { if d.advanceNil() { return } switch d.bd { case mpUint8: - i = int64(uint64(d.d.decRd.readn1())) + i = int64(uint64(d.r.readn1())) case mpUint16: - i = int64(uint64(bigen.Uint16(d.d.decRd.readn2()))) + i = int64(uint64(bigen.Uint16(d.r.readn2()))) case mpUint32: - i = int64(uint64(bigen.Uint32(d.d.decRd.readn4()))) + i = int64(uint64(bigen.Uint32(d.r.readn4()))) case mpUint64: - i = int64(bigen.Uint64(d.d.decRd.readn8())) + i = int64(bigen.Uint64(d.r.readn8())) case mpInt8: - i = int64(int8(d.d.decRd.readn1())) + i = int64(int8(d.r.readn1())) case mpInt16: - i = int64(int16(bigen.Uint16(d.d.decRd.readn2()))) + i = int64(int16(bigen.Uint16(d.r.readn2()))) case mpInt32: - i = int64(int32(bigen.Uint32(d.d.decRd.readn4()))) + i = int64(int32(bigen.Uint32(d.r.readn4()))) case mpInt64: - i = int64(bigen.Uint64(d.d.decRd.readn8())) + i = int64(bigen.Uint64(d.r.readn8())) case mpFloat: i = int64(d.decFloat4Int32()) case mpDouble: @@ -720,7 +599,7 @@ func (d *msgpackDecDriver) DecodeInt64() (i int64) { case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: i = int64(int8(d.bd)) default: - d.d.errorf("cannot decode signed integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + halt.errorf("cannot decode signed integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) } } d.bdRead = false @@ -728,63 +607,63 @@ func (d *msgpackDecDriver) DecodeInt64() (i int64) { } // uint can be decoded from msgpack type: intXXX or uintXXX -func (d *msgpackDecDriver) DecodeUint64() (ui uint64) { +func (d *msgpackDecDriver[T]) DecodeUint64() (ui uint64) { if d.advanceNil() { return } switch d.bd { case mpUint8: - ui = uint64(d.d.decRd.readn1()) + ui = uint64(d.r.readn1()) case mpUint16: - ui = uint64(bigen.Uint16(d.d.decRd.readn2())) + ui = uint64(bigen.Uint16(d.r.readn2())) case mpUint32: - ui = uint64(bigen.Uint32(d.d.decRd.readn4())) + ui = uint64(bigen.Uint32(d.r.readn4())) case mpUint64: - ui = bigen.Uint64(d.d.decRd.readn8()) + ui = bigen.Uint64(d.r.readn8()) case mpInt8: - if i := int64(int8(d.d.decRd.readn1())); i >= 0 { + if i := int64(int8(d.r.readn1())); i >= 0 { ui = uint64(i) } else { - d.d.errorf("assigning negative signed value: %v, to unsigned type", i) + halt.errorf("assigning negative signed value: %v, to unsigned type", i) } case mpInt16: - if i := int64(int16(bigen.Uint16(d.d.decRd.readn2()))); i >= 0 { + if i := int64(int16(bigen.Uint16(d.r.readn2()))); i >= 0 { ui = uint64(i) } else { - d.d.errorf("assigning negative signed value: %v, to unsigned type", i) + halt.errorf("assigning negative signed value: %v, to unsigned type", i) } case mpInt32: - if i := int64(int32(bigen.Uint32(d.d.decRd.readn4()))); i >= 0 { + if i := int64(int32(bigen.Uint32(d.r.readn4()))); i >= 0 { ui = uint64(i) } else { - d.d.errorf("assigning negative signed value: %v, to unsigned type", i) + halt.errorf("assigning negative signed value: %v, to unsigned type", i) } case mpInt64: - if i := int64(bigen.Uint64(d.d.decRd.readn8())); i >= 0 { + if i := int64(bigen.Uint64(d.r.readn8())); i >= 0 { ui = uint64(i) } else { - d.d.errorf("assigning negative signed value: %v, to unsigned type", i) + halt.errorf("assigning negative signed value: %v, to unsigned type", i) } case mpFloat: if f := d.decFloat4Int32(); f >= 0 { ui = uint64(f) } else { - d.d.errorf("assigning negative float value: %v, to unsigned type", f) + halt.errorf("assigning negative float value: %v, to unsigned type", f) } case mpDouble: if f := d.decFloat4Int64(); f >= 0 { ui = uint64(f) } else { - d.d.errorf("assigning negative float value: %v, to unsigned type", f) + halt.errorf("assigning negative float value: %v, to unsigned type", f) } default: switch { case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: ui = uint64(d.bd) case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: - d.d.errorf("assigning negative signed value: %v, to unsigned type", int(d.bd)) + halt.errorf("assigning negative signed value: %v, to unsigned type", int(d.bd)) default: - d.d.errorf("cannot decode unsigned integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + halt.errorf("cannot decode unsigned integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) } } d.bdRead = false @@ -792,14 +671,14 @@ func (d *msgpackDecDriver) DecodeUint64() (ui uint64) { } // float can either be decoded from msgpack type: float, double or intX -func (d *msgpackDecDriver) DecodeFloat64() (f float64) { +func (d *msgpackDecDriver[T]) DecodeFloat64() (f float64) { if d.advanceNil() { return } if d.bd == mpFloat { - f = float64(math.Float32frombits(bigen.Uint32(d.d.decRd.readn4()))) + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) } else if d.bd == mpDouble { - f = math.Float64frombits(bigen.Uint64(d.d.decRd.readn8())) + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) } else { f = float64(d.DecodeInt64()) } @@ -808,7 +687,7 @@ func (d *msgpackDecDriver) DecodeFloat64() (f float64) { } // bool can be decoded from bool, fixnum 0 or 1. -func (d *msgpackDecDriver) DecodeBool() (b bool) { +func (d *msgpackDecDriver[T]) DecodeBool() (b bool) { if d.advanceNil() { return } @@ -817,18 +696,18 @@ func (d *msgpackDecDriver) DecodeBool() (b bool) { } else if d.bd == mpTrue || d.bd == 1 { b = true } else { - d.d.errorf("cannot decode bool: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + halt.errorf("cannot decode bool: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) } d.bdRead = false return } -func (d *msgpackDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { - d.d.decByteState = decByteStateNone +func (d *msgpackDecDriver[T]) DecodeBytes() (bs []byte, state dBytesAttachState) { if d.advanceNil() { return } + var cond bool bd := d.bd var clen int if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { @@ -838,58 +717,43 @@ func (d *msgpackDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { clen = d.readContainerLen(msgpackContainerStr) // string/raw } else if bd == mpArray16 || bd == mpArray32 || (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { - // check if an "array" of uint8's - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } - // bsOut, _ = fastpathTV.DecSliceUint8V(bs, true, d.d) slen := d.ReadArrayStart() - var changed bool - if bs, changed = usableByteSlice(bs, slen); changed { - d.d.decByteState = decByteStateNone - } + bs, cond = usableByteSlice(d.d.buf, slen) for i := 0; i < len(bs); i++ { bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) } for i := len(bs); i < slen; i++ { bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) } - return bs + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return } else { - d.d.errorf("invalid byte descriptor for decoding bytes, got: 0x%x", d.bd) + halt.errorf("invalid byte descriptor for decoding bytes, got: 0x%x", d.bd) } d.bdRead = false - if d.d.zerocopy() { - d.d.decByteState = decByteStateZerocopy - return d.d.decRd.rb.readx(uint(clen)) - } - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } - return decByteSlice(d.d.r(), clen, d.h.MaxInitLen, bs) + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return } -func (d *msgpackDecDriver) DecodeStringAsBytes() (s []byte) { - s = d.DecodeBytes(nil) - if d.h.ValidateUnicode && !utf8.Valid(s) { - d.d.errorf("DecodeStringAsBytes: invalid UTF-8: %s", s) +func (d *msgpackDecDriver[T]) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) } return } -func (d *msgpackDecDriver) descBd() string { - return sprintf("%v (%s)", d.bd, mpdesc(d.bd)) -} - -func (d *msgpackDecDriver) readNextBd() { - d.bd = d.d.decRd.readn1() +func (d *msgpackDecDriver[T]) readNextBd() { + d.bd = d.r.readn1() d.bdRead = true } -func (d *msgpackDecDriver) advanceNil() (null bool) { +func (d *msgpackDecDriver[T]) advanceNil() (null bool) { if !d.bdRead { d.readNextBd() } @@ -900,11 +764,11 @@ func (d *msgpackDecDriver) advanceNil() (null bool) { return } -func (d *msgpackDecDriver) TryNil() (v bool) { +func (d *msgpackDecDriver[T]) TryNil() (v bool) { return d.advanceNil() } -func (d *msgpackDecDriver) ContainerType() (vt valueType) { +func (d *msgpackDecDriver[T]) ContainerType() (vt valueType) { if !d.bdRead { d.readNextBd() } @@ -928,38 +792,38 @@ func (d *msgpackDecDriver) ContainerType() (vt valueType) { return valueTypeUnset } -func (d *msgpackDecDriver) readContainerLen(ct msgpackContainerType) (clen int) { +func (d *msgpackDecDriver[T]) readContainerLen(ct msgpackContainerType) (clen int) { bd := d.bd if bd == ct.b8 { - clen = int(d.d.decRd.readn1()) + clen = int(d.r.readn1()) } else if bd == ct.b16 { - clen = int(bigen.Uint16(d.d.decRd.readn2())) + clen = int(bigen.Uint16(d.r.readn2())) } else if bd == ct.b32 { - clen = int(bigen.Uint32(d.d.decRd.readn4())) + clen = int(bigen.Uint32(d.r.readn4())) } else if (ct.bFixMin & bd) == ct.bFixMin { clen = int(ct.bFixMin ^ bd) } else { - d.d.errorf("cannot read container length: %s: hex: %x, decimal: %d", msgBadDesc, bd, bd) + halt.errorf("cannot read container length: %s: hex: %x, decimal: %d", msgBadDesc, bd, bd) } d.bdRead = false return } -func (d *msgpackDecDriver) ReadMapStart() int { +func (d *msgpackDecDriver[T]) ReadMapStart() int { if d.advanceNil() { return containerLenNil } return d.readContainerLen(msgpackContainerMap) } -func (d *msgpackDecDriver) ReadArrayStart() int { +func (d *msgpackDecDriver[T]) ReadArrayStart() int { if d.advanceNil() { return containerLenNil } return d.readContainerLen(msgpackContainerList) } -func (d *msgpackDecDriver) readExtLen() (clen int) { +func (d *msgpackDecDriver[T]) readExtLen() (clen int) { switch d.bd { case mpFixExt1: clen = 1 @@ -972,18 +836,18 @@ func (d *msgpackDecDriver) readExtLen() (clen int) { case mpFixExt16: clen = 16 case mpExt8: - clen = int(d.d.decRd.readn1()) + clen = int(d.r.readn1()) case mpExt16: - clen = int(bigen.Uint16(d.d.decRd.readn2())) + clen = int(bigen.Uint16(d.r.readn2())) case mpExt32: - clen = int(bigen.Uint32(d.d.decRd.readn4())) + clen = int(bigen.Uint32(d.r.readn4())) default: - d.d.errorf("decoding ext bytes: found unexpected byte: %x", d.bd) + halt.errorf("decoding ext bytes: found unexpected byte: %x", d.bd) } return } -func (d *msgpackDecDriver) DecodeTime() (t time.Time) { +func (d *msgpackDecDriver[T]) DecodeTime() (t time.Time) { // decode time from string bytes or ext if d.advanceNil() { return @@ -998,240 +862,158 @@ func (d *msgpackDecDriver) DecodeTime() (t time.Time) { } else { // expect to see mpFixExt4,-1 OR mpFixExt8,-1 OR mpExt8,12,-1 d.bdRead = false - b2 := d.d.decRd.readn1() + b2 := d.r.readn1() if d.bd == mpFixExt4 && b2 == mpTimeExtTagU { clen = 4 } else if d.bd == mpFixExt8 && b2 == mpTimeExtTagU { clen = 8 - } else if d.bd == mpExt8 && b2 == 12 && d.d.decRd.readn1() == mpTimeExtTagU { + } else if d.bd == mpExt8 && b2 == 12 && d.r.readn1() == mpTimeExtTagU { clen = 12 } else { - d.d.errorf("invalid stream for decoding time as extension: got 0x%x, 0x%x", d.bd, b2) + halt.errorf("invalid stream for decoding time as extension: got 0x%x, 0x%x", d.bd, b2) } } return d.decodeTime(clen) } -func (d *msgpackDecDriver) decodeTime(clen int) (t time.Time) { +func (d *msgpackDecDriver[T]) decodeTime(clen int) (t time.Time) { d.bdRead = false switch clen { case 4: - t = time.Unix(int64(bigen.Uint32(d.d.decRd.readn4())), 0).UTC() + t = time.Unix(int64(bigen.Uint32(d.r.readn4())), 0).UTC() case 8: - tv := bigen.Uint64(d.d.decRd.readn8()) + tv := bigen.Uint64(d.r.readn8()) t = time.Unix(int64(tv&0x00000003ffffffff), int64(tv>>34)).UTC() case 12: - nsec := bigen.Uint32(d.d.decRd.readn4()) - sec := bigen.Uint64(d.d.decRd.readn8()) + nsec := bigen.Uint32(d.r.readn4()) + sec := bigen.Uint64(d.r.readn8()) t = time.Unix(int64(sec), int64(nsec)).UTC() default: - d.d.errorf("invalid length of bytes for decoding time - expecting 4 or 8 or 12, got %d", clen) + halt.errorf("invalid length of bytes for decoding time - expecting 4 or 8 or 12, got %d", clen) } return } -func (d *msgpackDecDriver) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { - if xtag > 0xff { - d.d.errorf("ext: tag must be <= 0xff; got: %v", xtag) - } - if d.advanceNil() { +func (d *msgpackDecDriver[T]) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { return } - xbs, realxtag1, zerocopy := d.decodeExtV(ext != nil, uint8(xtag)) - realxtag := uint64(realxtag1) - if ext == nil { - re := rv.(*RawExt) - re.Tag = realxtag - re.setData(xbs, zerocopy) - } else if ext == SelfExt { - d.d.sideDecode(rv, basetype, xbs) + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) } else { ext.ReadExt(rv, xbs) } } -func (d *msgpackDecDriver) decodeExtV(verifyTag bool, tag byte) (xbs []byte, xtag byte, zerocopy bool) { +func (d *msgpackDecDriver[T]) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *msgpackDecDriver[T]) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) xbd := d.bd if xbd == mpBin8 || xbd == mpBin16 || xbd == mpBin32 { - xbs = d.DecodeBytes(nil) + xbs, bstate = d.DecodeBytes() } else if xbd == mpStr8 || xbd == mpStr16 || xbd == mpStr32 || (xbd >= mpFixStrMin && xbd <= mpFixStrMax) { - xbs = d.DecodeStringAsBytes() + xbs, bstate = d.DecodeStringAsBytes() } else { clen := d.readExtLen() - xtag = d.d.decRd.readn1() + xtag = d.r.readn1() if verifyTag && xtag != tag { - d.d.errorf("wrong extension tag - got %b, expecting %v", xtag, tag) - } - if d.d.bytes { - xbs = d.d.decRd.rb.readx(uint(clen)) - zerocopy = true - } else { - xbs = decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, d.d.b[:]) + halt.errorf("wrong extension tag - got %b, expecting %v", xtag, tag) } + xbs, ok = d.r.readxb(uint(clen)) + bstate = d.d.attachState(ok) + // zerocopy = d.d.bytes } d.bdRead = false + ok = true return } -//-------------------------------------------------- - -// MsgpackHandle is a Handle for the Msgpack Schema-Free Encoding Format. -type MsgpackHandle struct { - binaryEncodingType - BasicHandle - - // NoFixedNum says to output all signed integers as 2-bytes, never as 1-byte fixednum. - NoFixedNum bool - - // WriteExt controls whether the new spec is honored. - // - // With WriteExt=true, we can encode configured extensions with extension tags - // and encode string/[]byte/extensions in a way compatible with the new spec - // but incompatible with the old spec. - // - // For compatibility with the old spec, set WriteExt=false. - // - // With WriteExt=false: - // configured extensions are serialized as raw bytes (not msgpack extensions). - // reserved byte descriptors like Str8 and those enabling the new msgpack Binary type - // are not encoded. - WriteExt bool - - // PositiveIntUnsigned says to encode positive integers as unsigned. - PositiveIntUnsigned bool -} - -// Name returns the name of the handle: msgpack -func (h *MsgpackHandle) Name() string { return "msgpack" } - -func (h *MsgpackHandle) desc(bd byte) string { return mpdesc(bd) } - -func (h *MsgpackHandle) newEncDriver() encDriver { - var e = &msgpackEncDriver{h: h} - e.e.e = e - e.e.init(h) - e.reset() - return e -} - -func (h *MsgpackHandle) newDecDriver() decDriver { - d := &msgpackDecDriver{h: h} - d.d.d = d - d.d.init(h) - d.reset() - return d -} - -//-------------------------------------------------- +// ---- +// +// The following below are similar across all format files (except for the format name). +// +// We keep them together here, so that we can easily copy and compare. -type msgpackSpecRpcCodec struct { - rpcCodec -} +// ---- -// /////////////// Spec RPC Codec /////////////////// -func (c *msgpackSpecRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error { - // WriteRequest can write to both a Go service, and other services that do - // not abide by the 1 argument rule of a Go service. - // We discriminate based on if the body is a MsgpackSpecRpcMultiArgs - var bodyArr []interface{} - if m, ok := body.(MsgpackSpecRpcMultiArgs); ok { - bodyArr = ([]interface{})(m) +func (d *msgpackEncDriver[T]) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*MsgpackHandle) + d.e = shared + if shared.bytes { + fp = msgpackFpEncBytes } else { - bodyArr = []interface{}{body} + fp = msgpackFpEncIO } - r2 := []interface{}{0, uint32(r.Seq), r.ServiceMethod, bodyArr} - return c.write(r2) + // d.w.init() + d.init2(enc) + return } -func (c *msgpackSpecRpcCodec) WriteResponse(r *rpc.Response, body interface{}) error { - var moe interface{} - if r.Error != "" { - moe = r.Error - } - if moe != nil && body != nil { - body = nil - } - r2 := []interface{}{1, uint32(r.Seq), moe, body} - return c.write(r2) -} +func (e *msgpackEncDriver[T]) writeBytesAsis(b []byte) { e.w.writeb(b) } -func (c *msgpackSpecRpcCodec) ReadResponseHeader(r *rpc.Response) error { - return c.parseCustomHeader(1, &r.Seq, &r.Error) -} +// func (e *msgpackEncDriver[T]) writeStringAsisDblQuoted(v string) { e.w.writeqstr(v) } -func (c *msgpackSpecRpcCodec) ReadRequestHeader(r *rpc.Request) error { - return c.parseCustomHeader(0, &r.Seq, &r.ServiceMethod) -} +func (e *msgpackEncDriver[T]) writerEnd() { e.w.end() } -func (c *msgpackSpecRpcCodec) ReadRequestBody(body interface{}) error { - if body == nil { // read and discard - return c.read(nil) - } - bodyArr := []interface{}{body} - return c.read(&bodyArr) +func (e *msgpackEncDriver[T]) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) } -func (c *msgpackSpecRpcCodec) parseCustomHeader(expectTypeByte byte, msgid *uint64, methodOrError *string) (err error) { - if cls := c.cls.load(); cls.closed { - return io.ErrUnexpectedEOF - } - - // We read the response header by hand - // so that the body can be decoded on its own from the stream at a later time. - - const fia byte = 0x94 //four item array descriptor value +func (e *msgpackEncDriver[T]) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} - var ba [1]byte - var n int - for { - n, err = c.r.Read(ba[:]) - if err != nil { - return - } - if n == 1 { - break - } - } +// ---- - var b = ba[0] - if b != fia { - err = fmt.Errorf("not array - %s %x/%s", msgBadDesc, b, mpdesc(b)) +func (d *msgpackDecDriver[T]) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*MsgpackHandle) + d.d = shared + if shared.bytes { + fp = msgpackFpDecBytes } else { - err = c.read(&b) - if err == nil { - if b != expectTypeByte { - err = fmt.Errorf("%s - expecting %v but got %x/%s", msgBadDesc, expectTypeByte, b, mpdesc(b)) - } else { - err = c.read(msgid) - if err == nil { - err = c.read(methodOrError) - } - } - } + fp = msgpackFpDecIO } + // d.r.init() + d.init2(dec) return } -//-------------------------------------------------- - -// msgpackSpecRpc is the implementation of Rpc that uses custom communication protocol -// as defined in the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md -type msgpackSpecRpc struct{} +func (d *msgpackDecDriver[T]) NumBytesRead() int { + return int(d.r.numread()) +} -// MsgpackSpecRpc implements Rpc using the communication protocol defined in -// the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md . -// -// See GoRpc documentation, for information on buffering for better performance. -var MsgpackSpecRpc msgpackSpecRpc +func (d *msgpackDecDriver[T]) resetInBytes(in []byte) { + d.r.resetBytes(in) +} -func (x msgpackSpecRpc) ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec { - return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +func (d *msgpackDecDriver[T]) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) } -func (x msgpackSpecRpc) ClientCodec(conn io.ReadWriteCloser, h Handle) rpc.ClientCodec { - return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +// ---- (custom stanza) + +func (d *msgpackDecDriver[T]) descBd() string { + return sprintf("%v (%s)", d.bd, mpdesc(d.bd)) } -var _ decDriver = (*msgpackDecDriver)(nil) -var _ encDriver = (*msgpackEncDriver)(nil) +func (d *msgpackDecDriver[T]) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.mono.generated.go b/vendor/github.com/ugorji/go/codec/msgpack.mono.generated.go new file mode 100644 index 000000000..ff2fe4af9 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/msgpack.mono.generated.go @@ -0,0 +1,8046 @@ +//go:build !notmono && !codec.notmono + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + + "io" + "math" + "reflect" + "slices" + "sort" + "strconv" + "sync" + "time" + "unicode/utf8" +) + +type helperEncDriverMsgpackBytes struct{} +type encFnMsgpackBytes struct { + i encFnInfo + fe func(*encoderMsgpackBytes, *encFnInfo, reflect.Value) +} +type encRtidFnMsgpackBytes struct { + rtid uintptr + fn *encFnMsgpackBytes +} +type encoderMsgpackBytes struct { + dh helperEncDriverMsgpackBytes + fp *fastpathEsMsgpackBytes + e msgpackEncDriverBytes + encoderBase +} +type helperDecDriverMsgpackBytes struct{} +type decFnMsgpackBytes struct { + i decFnInfo + fd func(*decoderMsgpackBytes, *decFnInfo, reflect.Value) +} +type decRtidFnMsgpackBytes struct { + rtid uintptr + fn *decFnMsgpackBytes +} +type decoderMsgpackBytes struct { + dh helperDecDriverMsgpackBytes + fp *fastpathDsMsgpackBytes + d msgpackDecDriverBytes + decoderBase +} +type msgpackEncDriverBytes struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverNoState + encDriverContainerNoTrackerT + encInit2er + + h *MsgpackHandle + e *encoderBase + w bytesEncAppender +} +type msgpackDecDriverBytes struct { + decDriverNoopContainerReader + decDriverNoopNumberHelper + decInit2er + + h *MsgpackHandle + d *decoderBase + r bytesDecReader + + bdAndBdread + + noBuiltInTypes +} + +func (e *encoderMsgpackBytes) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderMsgpackBytes) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderMsgpackBytes) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderMsgpackBytes) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderMsgpackBytes) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderMsgpackBytes) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderMsgpackBytes) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderMsgpackBytes) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderMsgpackBytes) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderMsgpackBytes) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderMsgpackBytes) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderMsgpackBytes) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderMsgpackBytes) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderMsgpackBytes) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderMsgpackBytes) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderMsgpackBytes) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderMsgpackBytes) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderMsgpackBytes) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderMsgpackBytes) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderMsgpackBytes) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderMsgpackBytes) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderMsgpackBytes) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderMsgpackBytes) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderMsgpackBytes) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderMsgpackBytes) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderMsgpackBytes) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderMsgpackBytes) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderMsgpackBytes) kSeqFn(rt reflect.Type) (fn *encFnMsgpackBytes) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderMsgpackBytes) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnMsgpackBytes + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderMsgpackBytes) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnMsgpackBytes + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderMsgpackBytes) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderMsgpackBytes) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderMsgpackBytes) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderMsgpackBytes) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderMsgpackBytes) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderMsgpackBytes) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderMsgpackBytes) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderMsgpackBytes) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnMsgpackBytes + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackBytes) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnMsgpackBytes) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderMsgpackBytes) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsMsgpackBytes) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderMsgpackBytes) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderMsgpackBytes) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderMsgpackBytes) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderMsgpackBytes) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderMsgpackBytes) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderMsgpackBytes) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderMsgpackBytes) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderMsgpackBytes) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderMsgpackBytes) encodeValue(rv reflect.Value, fn *encFnMsgpackBytes) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderMsgpackBytes) encodeValueNonNil(rv reflect.Value, fn *encFnMsgpackBytes) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderMsgpackBytes) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderMsgpackBytes) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderMsgpackBytes) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderMsgpackBytes) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderMsgpackBytes) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderMsgpackBytes) fn(t reflect.Type) *encFnMsgpackBytes { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderMsgpackBytes) fnNoExt(t reflect.Type) *encFnMsgpackBytes { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderMsgpackBytes) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderMsgpackBytes) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderMsgpackBytes) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderMsgpackBytes) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderMsgpackBytes) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderMsgpackBytes) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderMsgpackBytes) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderMsgpackBytes) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverMsgpackBytes) newEncoderBytes(out *[]byte, h Handle) *encoderMsgpackBytes { + var c1 encoderMsgpackBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverMsgpackBytes) newEncoderIO(out io.Writer, h Handle) *encoderMsgpackBytes { + var c1 encoderMsgpackBytes + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverMsgpackBytes) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsMsgpackBytes) (f *fastpathEMsgpackBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverMsgpackBytes) encFindRtidFn(s []encRtidFnMsgpackBytes, rtid uintptr) (i uint, fn *encFnMsgpackBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverMsgpackBytes) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnMsgpackBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnMsgpackBytes](v)) + } + return +} + +func (dh helperEncDriverMsgpackBytes) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsMsgpackBytes, checkExt bool) (fn *encFnMsgpackBytes) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverMsgpackBytes) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackBytes) { + rtid := rt2id(rt) + var sp []encRtidFnMsgpackBytes = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverMsgpackBytes) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackBytes) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnMsgpackBytes + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnMsgpackBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnMsgpackBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnMsgpackBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverMsgpackBytes) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackBytes) { + fn = new(encFnMsgpackBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderMsgpackBytes).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderMsgpackBytes).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderMsgpackBytes).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderMsgpackBytes).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderMsgpackBytes).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderMsgpackBytes).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderMsgpackBytes).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderMsgpackBytes).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderMsgpackBytes, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderMsgpackBytes).kBool + case reflect.String: + + fn.fe = (*encoderMsgpackBytes).kString + case reflect.Int: + fn.fe = (*encoderMsgpackBytes).kInt + case reflect.Int8: + fn.fe = (*encoderMsgpackBytes).kInt8 + case reflect.Int16: + fn.fe = (*encoderMsgpackBytes).kInt16 + case reflect.Int32: + fn.fe = (*encoderMsgpackBytes).kInt32 + case reflect.Int64: + fn.fe = (*encoderMsgpackBytes).kInt64 + case reflect.Uint: + fn.fe = (*encoderMsgpackBytes).kUint + case reflect.Uint8: + fn.fe = (*encoderMsgpackBytes).kUint8 + case reflect.Uint16: + fn.fe = (*encoderMsgpackBytes).kUint16 + case reflect.Uint32: + fn.fe = (*encoderMsgpackBytes).kUint32 + case reflect.Uint64: + fn.fe = (*encoderMsgpackBytes).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderMsgpackBytes).kUintptr + case reflect.Float32: + fn.fe = (*encoderMsgpackBytes).kFloat32 + case reflect.Float64: + fn.fe = (*encoderMsgpackBytes).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderMsgpackBytes).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderMsgpackBytes).kComplex128 + case reflect.Chan: + fn.fe = (*encoderMsgpackBytes).kChan + case reflect.Slice: + fn.fe = (*encoderMsgpackBytes).kSlice + case reflect.Array: + fn.fe = (*encoderMsgpackBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderMsgpackBytes).kStructSimple + } else { + fn.fe = (*encoderMsgpackBytes).kStruct + } + case reflect.Map: + fn.fe = (*encoderMsgpackBytes).kMap + case reflect.Interface: + + fn.fe = (*encoderMsgpackBytes).kErr + default: + + fn.fe = (*encoderMsgpackBytes).kErr + } + } + } + return +} +func (d *decoderMsgpackBytes) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderMsgpackBytes) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderMsgpackBytes) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderMsgpackBytes) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderMsgpackBytes) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderMsgpackBytes) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderMsgpackBytes) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderMsgpackBytes) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderMsgpackBytes) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderMsgpackBytes) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderMsgpackBytes) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderMsgpackBytes) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderMsgpackBytes) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderMsgpackBytes) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderMsgpackBytes) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderMsgpackBytes) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderMsgpackBytes) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderMsgpackBytes) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderMsgpackBytes) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderMsgpackBytes) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderMsgpackBytes) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderMsgpackBytes) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderMsgpackBytes) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderMsgpackBytes) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderMsgpackBytes) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderMsgpackBytes) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderMsgpackBytes) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderMsgpackBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderMsgpackBytes) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderMsgpackBytes) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderMsgpackBytes) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderMsgpackBytes) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderMsgpackBytes) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnMsgpackBytes + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderMsgpackBytes) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnMsgpackBytes + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackBytes) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnMsgpackBytes + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderMsgpackBytes) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnMsgpackBytes + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderMsgpackBytes) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsMsgpackBytes) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderMsgpackBytes) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderMsgpackBytes) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderMsgpackBytes) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderMsgpackBytes) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderMsgpackBytes) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderMsgpackBytes) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderMsgpackBytes) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderMsgpackBytes) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderMsgpackBytes) Release() {} + +func (d *decoderMsgpackBytes) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderMsgpackBytes) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderMsgpackBytes) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderMsgpackBytes) decodeValue(rv reflect.Value, fn *decFnMsgpackBytes) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderMsgpackBytes) decodeValueNoCheckNil(rv reflect.Value, fn *decFnMsgpackBytes) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderMsgpackBytes) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderMsgpackBytes) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderMsgpackBytes) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderMsgpackBytes) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderMsgpackBytes) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderMsgpackBytes) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderMsgpackBytes) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderMsgpackBytes) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderMsgpackBytes) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderMsgpackBytes) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderMsgpackBytes) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderMsgpackBytes) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderMsgpackBytes) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderMsgpackBytes) fn(t reflect.Type) *decFnMsgpackBytes { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderMsgpackBytes) fnNoExt(t reflect.Type) *decFnMsgpackBytes { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverMsgpackBytes) newDecoderBytes(in []byte, h Handle) *decoderMsgpackBytes { + var c1 decoderMsgpackBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverMsgpackBytes) newDecoderIO(in io.Reader, h Handle) *decoderMsgpackBytes { + var c1 decoderMsgpackBytes + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverMsgpackBytes) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsMsgpackBytes) (f *fastpathDMsgpackBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverMsgpackBytes) decFindRtidFn(s []decRtidFnMsgpackBytes, rtid uintptr) (i uint, fn *decFnMsgpackBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverMsgpackBytes) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnMsgpackBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnMsgpackBytes](v)) + } + return +} + +func (dh helperDecDriverMsgpackBytes) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsMsgpackBytes, + checkExt bool) (fn *decFnMsgpackBytes) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverMsgpackBytes) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackBytes) { + rtid := rt2id(rt) + var sp []decRtidFnMsgpackBytes = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverMsgpackBytes) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackBytes) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnMsgpackBytes + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnMsgpackBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnMsgpackBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnMsgpackBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverMsgpackBytes) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsMsgpackBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackBytes) { + fn = new(decFnMsgpackBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderMsgpackBytes).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderMsgpackBytes).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderMsgpackBytes).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderMsgpackBytes).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderMsgpackBytes).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderMsgpackBytes).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderMsgpackBytes).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderMsgpackBytes).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderMsgpackBytes, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderMsgpackBytes, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderMsgpackBytes).kBool + case reflect.String: + fn.fd = (*decoderMsgpackBytes).kString + case reflect.Int: + fn.fd = (*decoderMsgpackBytes).kInt + case reflect.Int8: + fn.fd = (*decoderMsgpackBytes).kInt8 + case reflect.Int16: + fn.fd = (*decoderMsgpackBytes).kInt16 + case reflect.Int32: + fn.fd = (*decoderMsgpackBytes).kInt32 + case reflect.Int64: + fn.fd = (*decoderMsgpackBytes).kInt64 + case reflect.Uint: + fn.fd = (*decoderMsgpackBytes).kUint + case reflect.Uint8: + fn.fd = (*decoderMsgpackBytes).kUint8 + case reflect.Uint16: + fn.fd = (*decoderMsgpackBytes).kUint16 + case reflect.Uint32: + fn.fd = (*decoderMsgpackBytes).kUint32 + case reflect.Uint64: + fn.fd = (*decoderMsgpackBytes).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderMsgpackBytes).kUintptr + case reflect.Float32: + fn.fd = (*decoderMsgpackBytes).kFloat32 + case reflect.Float64: + fn.fd = (*decoderMsgpackBytes).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderMsgpackBytes).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderMsgpackBytes).kComplex128 + case reflect.Chan: + fn.fd = (*decoderMsgpackBytes).kChan + case reflect.Slice: + fn.fd = (*decoderMsgpackBytes).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderMsgpackBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderMsgpackBytes).kStructSimple + } else { + fn.fd = (*decoderMsgpackBytes).kStruct + } + case reflect.Map: + fn.fd = (*decoderMsgpackBytes).kMap + case reflect.Interface: + + fn.fd = (*decoderMsgpackBytes).kInterface + default: + + fn.fd = (*decoderMsgpackBytes).kErr + } + } + } + return +} +func (e *msgpackEncDriverBytes) EncodeNil() { + e.w.writen1(mpNil) +} + +func (e *msgpackEncDriverBytes) EncodeInt(i int64) { + if e.h.PositiveIntUnsigned && i >= 0 { + e.EncodeUint(uint64(i)) + } else if i > math.MaxInt8 { + if i <= math.MaxInt16 { + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i <= math.MaxInt32 { + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } + } else if i >= -32 { + if e.h.NoFixedNum { + e.w.writen2(mpInt8, byte(i)) + } else { + e.w.writen1(byte(i)) + } + } else if i >= math.MinInt8 { + e.w.writen2(mpInt8, byte(i)) + } else if i >= math.MinInt16 { + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i >= math.MinInt32 { + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } +} + +func (e *msgpackEncDriverBytes) EncodeUint(i uint64) { + if i <= math.MaxInt8 { + if e.h.NoFixedNum { + e.w.writen2(mpUint8, byte(i)) + } else { + e.w.writen1(byte(i)) + } + } else if i <= math.MaxUint8 { + e.w.writen2(mpUint8, byte(i)) + } else if i <= math.MaxUint16 { + e.w.writen1(mpUint16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i <= math.MaxUint32 { + e.w.writen1(mpUint32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpUint64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } +} + +func (e *msgpackEncDriverBytes) EncodeBool(b bool) { + if b { + e.w.writen1(mpTrue) + } else { + e.w.writen1(mpFalse) + } +} + +func (e *msgpackEncDriverBytes) EncodeFloat32(f float32) { + e.w.writen1(mpFloat) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) +} + +func (e *msgpackEncDriverBytes) EncodeFloat64(f float64) { + e.w.writen1(mpDouble) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *msgpackEncDriverBytes) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + return + } + t = t.UTC() + sec, nsec := t.Unix(), uint64(t.Nanosecond()) + var data64 uint64 + var l = 4 + if sec >= 0 && sec>>34 == 0 { + data64 = (nsec << 34) | uint64(sec) + if data64&0xffffffff00000000 != 0 { + l = 8 + } + } else { + l = 12 + } + if e.h.WriteExt { + e.encodeExtPreamble(mpTimeExtTagU, l) + } else { + e.writeContainerLen(msgpackContainerRawLegacy, l) + } + switch l { + case 4: + e.w.writen4(bigen.PutUint32(uint32(data64))) + case 8: + e.w.writen8(bigen.PutUint64(data64)) + case 12: + e.w.writen4(bigen.PutUint32(uint32(nsec))) + e.w.writen8(bigen.PutUint64(uint64(sec))) + } +} + +func (e *msgpackEncDriverBytes) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + if e.h.WriteExt { + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) + } else { + e.EncodeBytes(bs) + } +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *msgpackEncDriverBytes) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *msgpackEncDriverBytes) encodeExtPreamble(xtag byte, l int) { + if l == 1 { + e.w.writen2(mpFixExt1, xtag) + } else if l == 2 { + e.w.writen2(mpFixExt2, xtag) + } else if l == 4 { + e.w.writen2(mpFixExt4, xtag) + } else if l == 8 { + e.w.writen2(mpFixExt8, xtag) + } else if l == 16 { + e.w.writen2(mpFixExt16, xtag) + } else if l < 256 { + e.w.writen2(mpExt8, byte(l)) + e.w.writen1(xtag) + } else if l < 65536 { + e.w.writen1(mpExt16) + e.w.writen2(bigen.PutUint16(uint16(l))) + e.w.writen1(xtag) + } else { + e.w.writen1(mpExt32) + e.w.writen4(bigen.PutUint32(uint32(l))) + e.w.writen1(xtag) + } +} + +func (e *msgpackEncDriverBytes) WriteArrayStart(length int) { + e.writeContainerLen(msgpackContainerList, length) +} + +func (e *msgpackEncDriverBytes) WriteMapStart(length int) { + e.writeContainerLen(msgpackContainerMap, length) +} + +func (e *msgpackEncDriverBytes) WriteArrayEmpty() { + + e.w.writen1(mpFixArrayMin) +} + +func (e *msgpackEncDriverBytes) WriteMapEmpty() { + + e.w.writen1(mpFixMapMin) +} + +func (e *msgpackEncDriverBytes) EncodeString(s string) { + var ct msgpackContainerType + if e.h.WriteExt { + if e.h.StringToRaw { + ct = msgpackContainerBin + } else { + ct = msgpackContainerStr + } + } else { + ct = msgpackContainerRawLegacy + } + e.writeContainerLen(ct, len(s)) + if len(s) > 0 { + e.w.writestr(s) + } +} + +func (e *msgpackEncDriverBytes) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *msgpackEncDriverBytes) EncodeStringBytesRaw(bs []byte) { + if e.h.WriteExt { + e.writeContainerLen(msgpackContainerBin, len(bs)) + } else { + e.writeContainerLen(msgpackContainerRawLegacy, len(bs)) + } + if len(bs) > 0 { + e.w.writeb(bs) + } +} + +func (e *msgpackEncDriverBytes) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *msgpackEncDriverBytes) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = mpNil + } + e.w.writen1(v) +} + +func (e *msgpackEncDriverBytes) writeNilArray() { + e.writeNilOr(mpFixArrayMin) +} + +func (e *msgpackEncDriverBytes) writeNilMap() { + e.writeNilOr(mpFixMapMin) +} + +func (e *msgpackEncDriverBytes) writeNilBytes() { + e.writeNilOr(mpFixStrMin) +} + +func (e *msgpackEncDriverBytes) writeContainerLen(ct msgpackContainerType, l int) { + if ct.fixCutoff > 0 && l < int(ct.fixCutoff) { + e.w.writen1(ct.bFixMin | byte(l)) + } else if ct.b8 > 0 && l < 256 { + e.w.writen2(ct.b8, uint8(l)) + } else if l < 65536 { + e.w.writen1(ct.b16) + e.w.writen2(bigen.PutUint16(uint16(l))) + } else { + e.w.writen1(ct.b32) + e.w.writen4(bigen.PutUint32(uint32(l))) + } +} + +func (d *msgpackDecDriverBytes) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + bd := d.bd + n := d.d.naked() + var decodeFurther bool + + switch bd { + case mpNil: + n.v = valueTypeNil + d.bdRead = false + case mpFalse: + n.v = valueTypeBool + n.b = false + case mpTrue: + n.v = valueTypeBool + n.b = true + + case mpFloat: + n.v = valueTypeFloat + n.f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case mpDouble: + n.v = valueTypeFloat + n.f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + + case mpUint8: + n.v = valueTypeUint + n.u = uint64(d.r.readn1()) + case mpUint16: + n.v = valueTypeUint + n.u = uint64(bigen.Uint16(d.r.readn2())) + case mpUint32: + n.v = valueTypeUint + n.u = uint64(bigen.Uint32(d.r.readn4())) + case mpUint64: + n.v = valueTypeUint + n.u = uint64(bigen.Uint64(d.r.readn8())) + + case mpInt8: + n.v = valueTypeInt + n.i = int64(int8(d.r.readn1())) + case mpInt16: + n.v = valueTypeInt + n.i = int64(int16(bigen.Uint16(d.r.readn2()))) + case mpInt32: + n.v = valueTypeInt + n.i = int64(int32(bigen.Uint32(d.r.readn4()))) + case mpInt64: + n.v = valueTypeInt + n.i = int64(int64(bigen.Uint64(d.r.readn8()))) + + default: + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax: + + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax: + d.d.fauxUnionReadRawBytes(d, d.h.WriteExt, d.h.RawToString) + + case bd == mpBin8, bd == mpBin16, bd == mpBin32: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax: + n.v = valueTypeArray + decodeFurther = true + case bd == mpMap16, bd == mpMap32, bd >= mpFixMapMin && bd <= mpFixMapMax: + n.v = valueTypeMap + decodeFurther = true + case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32: + n.v = valueTypeExt + clen := d.readExtLen() + n.u = uint64(d.r.readn1()) + if n.u == uint64(mpTimeExtTagU) { + n.v = valueTypeTime + n.t = d.decodeTime(clen) + } else { + n.l = d.r.readx(uint(clen)) + } + default: + halt.errorf("cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + } + } + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.u) + } +} + +func (d *msgpackDecDriverBytes) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) nextValueBytesBdReadR() { + bd := d.bd + + var clen uint + + switch bd { + case mpNil, mpFalse, mpTrue: + case mpUint8, mpInt8: + d.r.readn1() + case mpUint16, mpInt16: + d.r.skip(2) + case mpFloat, mpUint32, mpInt32: + d.r.skip(4) + case mpDouble, mpUint64, mpInt64: + d.r.skip(8) + case mpStr8, mpBin8: + clen = uint(d.r.readn1()) + d.r.skip(clen) + case mpStr16, mpBin16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + d.r.skip(clen) + case mpStr32, mpBin32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + d.r.skip(clen) + case mpFixExt1: + d.r.readn1() + d.r.readn1() + case mpFixExt2: + d.r.readn1() + d.r.skip(2) + case mpFixExt4: + d.r.readn1() + d.r.skip(4) + case mpFixExt8: + d.r.readn1() + d.r.skip(8) + case mpFixExt16: + d.r.readn1() + d.r.skip(16) + case mpExt8: + clen = uint(d.r.readn1()) + d.r.readn1() + d.r.skip(clen) + case mpExt16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + d.r.readn1() + d.r.skip(clen) + case mpExt32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + d.r.readn1() + d.r.skip(clen) + case mpArray16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpArray32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpMap16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpMap32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax: + case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + case bd >= mpFixStrMin && bd <= mpFixStrMax: + clen = uint(mpFixStrMin ^ bd) + d.r.skip(clen) + case bd >= mpFixArrayMin && bd <= mpFixArrayMax: + clen = uint(mpFixArrayMin ^ bd) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case bd >= mpFixMapMin && bd <= mpFixMapMax: + clen = uint(mpFixMapMin ^ bd) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + halt.errorf("nextValueBytes: cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + } + } + return +} + +func (d *msgpackDecDriverBytes) decFloat4Int32() (f float32) { + fbits := bigen.Uint32(d.r.readn4()) + f = math.Float32frombits(fbits) + if !noFrac32(fbits) { + halt.errorf("assigning integer value from float32 with a fraction: %v", f) + } + return +} + +func (d *msgpackDecDriverBytes) decFloat4Int64() (f float64) { + fbits := bigen.Uint64(d.r.readn8()) + f = math.Float64frombits(fbits) + if !noFrac64(fbits) { + halt.errorf("assigning integer value from float64 with a fraction: %v", f) + } + return +} + +func (d *msgpackDecDriverBytes) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + switch d.bd { + case mpUint8: + i = int64(uint64(d.r.readn1())) + case mpUint16: + i = int64(uint64(bigen.Uint16(d.r.readn2()))) + case mpUint32: + i = int64(uint64(bigen.Uint32(d.r.readn4()))) + case mpUint64: + i = int64(bigen.Uint64(d.r.readn8())) + case mpInt8: + i = int64(int8(d.r.readn1())) + case mpInt16: + i = int64(int16(bigen.Uint16(d.r.readn2()))) + case mpInt32: + i = int64(int32(bigen.Uint32(d.r.readn4()))) + case mpInt64: + i = int64(bigen.Uint64(d.r.readn8())) + case mpFloat: + i = int64(d.decFloat4Int32()) + case mpDouble: + i = int64(d.decFloat4Int64()) + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + i = int64(int8(d.bd)) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + i = int64(int8(d.bd)) + default: + halt.errorf("cannot decode signed integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + switch d.bd { + case mpUint8: + ui = uint64(d.r.readn1()) + case mpUint16: + ui = uint64(bigen.Uint16(d.r.readn2())) + case mpUint32: + ui = uint64(bigen.Uint32(d.r.readn4())) + case mpUint64: + ui = bigen.Uint64(d.r.readn8()) + case mpInt8: + if i := int64(int8(d.r.readn1())); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt16: + if i := int64(int16(bigen.Uint16(d.r.readn2()))); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt32: + if i := int64(int32(bigen.Uint32(d.r.readn4()))); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt64: + if i := int64(bigen.Uint64(d.r.readn8())); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpFloat: + if f := d.decFloat4Int32(); f >= 0 { + ui = uint64(f) + } else { + halt.errorf("assigning negative float value: %v, to unsigned type", f) + } + case mpDouble: + if f := d.decFloat4Int64(); f >= 0 { + ui = uint64(f) + } else { + halt.errorf("assigning negative float value: %v, to unsigned type", f) + } + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + ui = uint64(d.bd) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + halt.errorf("assigning negative signed value: %v, to unsigned type", int(d.bd)) + default: + halt.errorf("cannot decode unsigned integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + if d.bd == mpFloat { + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + } else if d.bd == mpDouble { + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + } else { + f = float64(d.DecodeInt64()) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == mpFalse || d.bd == 0 { + + } else if d.bd == mpTrue || d.bd == 1 { + b = true + } else { + halt.errorf("cannot decode bool: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + + var cond bool + bd := d.bd + var clen int + if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + clen = d.readContainerLen(msgpackContainerBin) + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + clen = d.readContainerLen(msgpackContainerStr) + } else if bd == mpArray16 || bd == mpArray32 || + (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return + } else { + halt.errorf("invalid byte descriptor for decoding bytes, got: 0x%x", d.bd) + } + + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *msgpackDecDriverBytes) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) + } + return +} + +func (d *msgpackDecDriverBytes) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *msgpackDecDriverBytes) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == mpNil { + d.bdRead = false + return true + } + return +} + +func (d *msgpackDecDriverBytes) TryNil() (v bool) { + return d.advanceNil() +} + +func (d *msgpackDecDriverBytes) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + bd := d.bd + if bd == mpNil { + d.bdRead = false + return valueTypeNil + } else if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + return valueTypeBytes + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + if d.h.WriteExt || d.h.RawToString { + return valueTypeString + } + return valueTypeBytes + } else if bd == mpArray16 || bd == mpArray32 || (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { + return valueTypeArray + } else if bd == mpMap16 || bd == mpMap32 || (bd >= mpFixMapMin && bd <= mpFixMapMax) { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *msgpackDecDriverBytes) readContainerLen(ct msgpackContainerType) (clen int) { + bd := d.bd + if bd == ct.b8 { + clen = int(d.r.readn1()) + } else if bd == ct.b16 { + clen = int(bigen.Uint16(d.r.readn2())) + } else if bd == ct.b32 { + clen = int(bigen.Uint32(d.r.readn4())) + } else if (ct.bFixMin & bd) == ct.bFixMin { + clen = int(ct.bFixMin ^ bd) + } else { + halt.errorf("cannot read container length: %s: hex: %x, decimal: %d", msgBadDesc, bd, bd) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverBytes) ReadMapStart() int { + if d.advanceNil() { + return containerLenNil + } + return d.readContainerLen(msgpackContainerMap) +} + +func (d *msgpackDecDriverBytes) ReadArrayStart() int { + if d.advanceNil() { + return containerLenNil + } + return d.readContainerLen(msgpackContainerList) +} + +func (d *msgpackDecDriverBytes) readExtLen() (clen int) { + switch d.bd { + case mpFixExt1: + clen = 1 + case mpFixExt2: + clen = 2 + case mpFixExt4: + clen = 4 + case mpFixExt8: + clen = 8 + case mpFixExt16: + clen = 16 + case mpExt8: + clen = int(d.r.readn1()) + case mpExt16: + clen = int(bigen.Uint16(d.r.readn2())) + case mpExt32: + clen = int(bigen.Uint32(d.r.readn4())) + default: + halt.errorf("decoding ext bytes: found unexpected byte: %x", d.bd) + } + return +} + +func (d *msgpackDecDriverBytes) DecodeTime() (t time.Time) { + + if d.advanceNil() { + return + } + bd := d.bd + var clen int + if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + clen = d.readContainerLen(msgpackContainerBin) + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + clen = d.readContainerLen(msgpackContainerStr) + } else { + + d.bdRead = false + b2 := d.r.readn1() + if d.bd == mpFixExt4 && b2 == mpTimeExtTagU { + clen = 4 + } else if d.bd == mpFixExt8 && b2 == mpTimeExtTagU { + clen = 8 + } else if d.bd == mpExt8 && b2 == 12 && d.r.readn1() == mpTimeExtTagU { + clen = 12 + } else { + halt.errorf("invalid stream for decoding time as extension: got 0x%x, 0x%x", d.bd, b2) + } + } + return d.decodeTime(clen) +} + +func (d *msgpackDecDriverBytes) decodeTime(clen int) (t time.Time) { + d.bdRead = false + switch clen { + case 4: + t = time.Unix(int64(bigen.Uint32(d.r.readn4())), 0).UTC() + case 8: + tv := bigen.Uint64(d.r.readn8()) + t = time.Unix(int64(tv&0x00000003ffffffff), int64(tv>>34)).UTC() + case 12: + nsec := bigen.Uint32(d.r.readn4()) + sec := bigen.Uint64(d.r.readn8()) + t = time.Unix(int64(sec), int64(nsec)).UTC() + default: + halt.errorf("invalid length of bytes for decoding time - expecting 4 or 8 or 12, got %d", clen) + } + return +} + +func (d *msgpackDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *msgpackDecDriverBytes) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *msgpackDecDriverBytes) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + xbd := d.bd + if xbd == mpBin8 || xbd == mpBin16 || xbd == mpBin32 { + xbs, bstate = d.DecodeBytes() + } else if xbd == mpStr8 || xbd == mpStr16 || xbd == mpStr32 || + (xbd >= mpFixStrMin && xbd <= mpFixStrMax) { + xbs, bstate = d.DecodeStringAsBytes() + } else { + clen := d.readExtLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag - got %b, expecting %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(clen)) + bstate = d.d.attachState(ok) + + } + d.bdRead = false + ok = true + return +} + +func (d *msgpackEncDriverBytes) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*MsgpackHandle) + d.e = shared + if shared.bytes { + fp = msgpackFpEncBytes + } else { + fp = msgpackFpEncIO + } + + d.init2(enc) + return +} + +func (e *msgpackEncDriverBytes) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *msgpackEncDriverBytes) writerEnd() { e.w.end() } + +func (e *msgpackEncDriverBytes) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *msgpackEncDriverBytes) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *msgpackDecDriverBytes) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*MsgpackHandle) + d.d = shared + if shared.bytes { + fp = msgpackFpDecBytes + } else { + fp = msgpackFpDecIO + } + + d.init2(dec) + return +} + +func (d *msgpackDecDriverBytes) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *msgpackDecDriverBytes) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *msgpackDecDriverBytes) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *msgpackDecDriverBytes) descBd() string { + return sprintf("%v (%s)", d.bd, mpdesc(d.bd)) +} + +func (d *msgpackDecDriverBytes) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +type helperEncDriverMsgpackIO struct{} +type encFnMsgpackIO struct { + i encFnInfo + fe func(*encoderMsgpackIO, *encFnInfo, reflect.Value) +} +type encRtidFnMsgpackIO struct { + rtid uintptr + fn *encFnMsgpackIO +} +type encoderMsgpackIO struct { + dh helperEncDriverMsgpackIO + fp *fastpathEsMsgpackIO + e msgpackEncDriverIO + encoderBase +} +type helperDecDriverMsgpackIO struct{} +type decFnMsgpackIO struct { + i decFnInfo + fd func(*decoderMsgpackIO, *decFnInfo, reflect.Value) +} +type decRtidFnMsgpackIO struct { + rtid uintptr + fn *decFnMsgpackIO +} +type decoderMsgpackIO struct { + dh helperDecDriverMsgpackIO + fp *fastpathDsMsgpackIO + d msgpackDecDriverIO + decoderBase +} +type msgpackEncDriverIO struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverNoState + encDriverContainerNoTrackerT + encInit2er + + h *MsgpackHandle + e *encoderBase + w bufioEncWriter +} +type msgpackDecDriverIO struct { + decDriverNoopContainerReader + decDriverNoopNumberHelper + decInit2er + + h *MsgpackHandle + d *decoderBase + r ioDecReader + + bdAndBdread + + noBuiltInTypes +} + +func (e *encoderMsgpackIO) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderMsgpackIO) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderMsgpackIO) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderMsgpackIO) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderMsgpackIO) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderMsgpackIO) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderMsgpackIO) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderMsgpackIO) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderMsgpackIO) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderMsgpackIO) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderMsgpackIO) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderMsgpackIO) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderMsgpackIO) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderMsgpackIO) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderMsgpackIO) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderMsgpackIO) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderMsgpackIO) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderMsgpackIO) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderMsgpackIO) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderMsgpackIO) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderMsgpackIO) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderMsgpackIO) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderMsgpackIO) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderMsgpackIO) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderMsgpackIO) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderMsgpackIO) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderMsgpackIO) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderMsgpackIO) kSeqFn(rt reflect.Type) (fn *encFnMsgpackIO) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderMsgpackIO) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnMsgpackIO + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderMsgpackIO) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnMsgpackIO + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderMsgpackIO) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderMsgpackIO) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderMsgpackIO) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderMsgpackIO) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderMsgpackIO) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderMsgpackIO) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderMsgpackIO) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderMsgpackIO) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnMsgpackIO + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderMsgpackIO) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnMsgpackIO) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderMsgpackIO) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsMsgpackIO) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderMsgpackIO) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderMsgpackIO) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderMsgpackIO) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderMsgpackIO) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderMsgpackIO) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderMsgpackIO) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderMsgpackIO) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderMsgpackIO) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderMsgpackIO) encodeValue(rv reflect.Value, fn *encFnMsgpackIO) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderMsgpackIO) encodeValueNonNil(rv reflect.Value, fn *encFnMsgpackIO) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderMsgpackIO) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderMsgpackIO) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderMsgpackIO) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderMsgpackIO) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderMsgpackIO) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderMsgpackIO) fn(t reflect.Type) *encFnMsgpackIO { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderMsgpackIO) fnNoExt(t reflect.Type) *encFnMsgpackIO { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderMsgpackIO) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderMsgpackIO) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderMsgpackIO) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderMsgpackIO) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderMsgpackIO) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderMsgpackIO) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderMsgpackIO) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderMsgpackIO) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverMsgpackIO) newEncoderBytes(out *[]byte, h Handle) *encoderMsgpackIO { + var c1 encoderMsgpackIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverMsgpackIO) newEncoderIO(out io.Writer, h Handle) *encoderMsgpackIO { + var c1 encoderMsgpackIO + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverMsgpackIO) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsMsgpackIO) (f *fastpathEMsgpackIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverMsgpackIO) encFindRtidFn(s []encRtidFnMsgpackIO, rtid uintptr) (i uint, fn *encFnMsgpackIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverMsgpackIO) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnMsgpackIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnMsgpackIO](v)) + } + return +} + +func (dh helperEncDriverMsgpackIO) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsMsgpackIO, checkExt bool) (fn *encFnMsgpackIO) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverMsgpackIO) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackIO) { + rtid := rt2id(rt) + var sp []encRtidFnMsgpackIO = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverMsgpackIO) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackIO) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnMsgpackIO + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnMsgpackIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnMsgpackIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnMsgpackIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverMsgpackIO) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnMsgpackIO) { + fn = new(encFnMsgpackIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderMsgpackIO).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderMsgpackIO).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderMsgpackIO).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderMsgpackIO).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderMsgpackIO).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderMsgpackIO).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderMsgpackIO).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderMsgpackIO).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderMsgpackIO, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderMsgpackIO).kBool + case reflect.String: + + fn.fe = (*encoderMsgpackIO).kString + case reflect.Int: + fn.fe = (*encoderMsgpackIO).kInt + case reflect.Int8: + fn.fe = (*encoderMsgpackIO).kInt8 + case reflect.Int16: + fn.fe = (*encoderMsgpackIO).kInt16 + case reflect.Int32: + fn.fe = (*encoderMsgpackIO).kInt32 + case reflect.Int64: + fn.fe = (*encoderMsgpackIO).kInt64 + case reflect.Uint: + fn.fe = (*encoderMsgpackIO).kUint + case reflect.Uint8: + fn.fe = (*encoderMsgpackIO).kUint8 + case reflect.Uint16: + fn.fe = (*encoderMsgpackIO).kUint16 + case reflect.Uint32: + fn.fe = (*encoderMsgpackIO).kUint32 + case reflect.Uint64: + fn.fe = (*encoderMsgpackIO).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderMsgpackIO).kUintptr + case reflect.Float32: + fn.fe = (*encoderMsgpackIO).kFloat32 + case reflect.Float64: + fn.fe = (*encoderMsgpackIO).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderMsgpackIO).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderMsgpackIO).kComplex128 + case reflect.Chan: + fn.fe = (*encoderMsgpackIO).kChan + case reflect.Slice: + fn.fe = (*encoderMsgpackIO).kSlice + case reflect.Array: + fn.fe = (*encoderMsgpackIO).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderMsgpackIO).kStructSimple + } else { + fn.fe = (*encoderMsgpackIO).kStruct + } + case reflect.Map: + fn.fe = (*encoderMsgpackIO).kMap + case reflect.Interface: + + fn.fe = (*encoderMsgpackIO).kErr + default: + + fn.fe = (*encoderMsgpackIO).kErr + } + } + } + return +} +func (d *decoderMsgpackIO) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderMsgpackIO) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderMsgpackIO) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderMsgpackIO) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderMsgpackIO) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderMsgpackIO) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderMsgpackIO) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderMsgpackIO) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderMsgpackIO) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderMsgpackIO) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderMsgpackIO) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderMsgpackIO) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderMsgpackIO) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderMsgpackIO) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderMsgpackIO) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderMsgpackIO) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderMsgpackIO) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderMsgpackIO) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderMsgpackIO) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderMsgpackIO) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderMsgpackIO) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderMsgpackIO) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderMsgpackIO) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderMsgpackIO) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderMsgpackIO) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderMsgpackIO) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderMsgpackIO) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderMsgpackIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderMsgpackIO) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderMsgpackIO) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderMsgpackIO) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderMsgpackIO) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderMsgpackIO) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnMsgpackIO + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderMsgpackIO) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnMsgpackIO + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderMsgpackIO) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnMsgpackIO + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderMsgpackIO) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnMsgpackIO + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderMsgpackIO) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsMsgpackIO) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderMsgpackIO) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderMsgpackIO) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderMsgpackIO) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderMsgpackIO) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderMsgpackIO) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderMsgpackIO) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderMsgpackIO) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderMsgpackIO) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderMsgpackIO) Release() {} + +func (d *decoderMsgpackIO) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderMsgpackIO) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderMsgpackIO) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderMsgpackIO) decodeValue(rv reflect.Value, fn *decFnMsgpackIO) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderMsgpackIO) decodeValueNoCheckNil(rv reflect.Value, fn *decFnMsgpackIO) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderMsgpackIO) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderMsgpackIO) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderMsgpackIO) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderMsgpackIO) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderMsgpackIO) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderMsgpackIO) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderMsgpackIO) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderMsgpackIO) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderMsgpackIO) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderMsgpackIO) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderMsgpackIO) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderMsgpackIO) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderMsgpackIO) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderMsgpackIO) fn(t reflect.Type) *decFnMsgpackIO { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderMsgpackIO) fnNoExt(t reflect.Type) *decFnMsgpackIO { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverMsgpackIO) newDecoderBytes(in []byte, h Handle) *decoderMsgpackIO { + var c1 decoderMsgpackIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverMsgpackIO) newDecoderIO(in io.Reader, h Handle) *decoderMsgpackIO { + var c1 decoderMsgpackIO + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverMsgpackIO) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsMsgpackIO) (f *fastpathDMsgpackIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverMsgpackIO) decFindRtidFn(s []decRtidFnMsgpackIO, rtid uintptr) (i uint, fn *decFnMsgpackIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverMsgpackIO) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnMsgpackIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnMsgpackIO](v)) + } + return +} + +func (dh helperDecDriverMsgpackIO) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsMsgpackIO, + checkExt bool) (fn *decFnMsgpackIO) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverMsgpackIO) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackIO) { + rtid := rt2id(rt) + var sp []decRtidFnMsgpackIO = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverMsgpackIO) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackIO) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnMsgpackIO + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnMsgpackIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnMsgpackIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnMsgpackIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverMsgpackIO) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsMsgpackIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnMsgpackIO) { + fn = new(decFnMsgpackIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderMsgpackIO).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderMsgpackIO).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderMsgpackIO).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderMsgpackIO).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderMsgpackIO).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderMsgpackIO).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderMsgpackIO).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderMsgpackIO).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderMsgpackIO, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderMsgpackIO, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderMsgpackIO).kBool + case reflect.String: + fn.fd = (*decoderMsgpackIO).kString + case reflect.Int: + fn.fd = (*decoderMsgpackIO).kInt + case reflect.Int8: + fn.fd = (*decoderMsgpackIO).kInt8 + case reflect.Int16: + fn.fd = (*decoderMsgpackIO).kInt16 + case reflect.Int32: + fn.fd = (*decoderMsgpackIO).kInt32 + case reflect.Int64: + fn.fd = (*decoderMsgpackIO).kInt64 + case reflect.Uint: + fn.fd = (*decoderMsgpackIO).kUint + case reflect.Uint8: + fn.fd = (*decoderMsgpackIO).kUint8 + case reflect.Uint16: + fn.fd = (*decoderMsgpackIO).kUint16 + case reflect.Uint32: + fn.fd = (*decoderMsgpackIO).kUint32 + case reflect.Uint64: + fn.fd = (*decoderMsgpackIO).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderMsgpackIO).kUintptr + case reflect.Float32: + fn.fd = (*decoderMsgpackIO).kFloat32 + case reflect.Float64: + fn.fd = (*decoderMsgpackIO).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderMsgpackIO).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderMsgpackIO).kComplex128 + case reflect.Chan: + fn.fd = (*decoderMsgpackIO).kChan + case reflect.Slice: + fn.fd = (*decoderMsgpackIO).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderMsgpackIO).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderMsgpackIO).kStructSimple + } else { + fn.fd = (*decoderMsgpackIO).kStruct + } + case reflect.Map: + fn.fd = (*decoderMsgpackIO).kMap + case reflect.Interface: + + fn.fd = (*decoderMsgpackIO).kInterface + default: + + fn.fd = (*decoderMsgpackIO).kErr + } + } + } + return +} +func (e *msgpackEncDriverIO) EncodeNil() { + e.w.writen1(mpNil) +} + +func (e *msgpackEncDriverIO) EncodeInt(i int64) { + if e.h.PositiveIntUnsigned && i >= 0 { + e.EncodeUint(uint64(i)) + } else if i > math.MaxInt8 { + if i <= math.MaxInt16 { + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i <= math.MaxInt32 { + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } + } else if i >= -32 { + if e.h.NoFixedNum { + e.w.writen2(mpInt8, byte(i)) + } else { + e.w.writen1(byte(i)) + } + } else if i >= math.MinInt8 { + e.w.writen2(mpInt8, byte(i)) + } else if i >= math.MinInt16 { + e.w.writen1(mpInt16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i >= math.MinInt32 { + e.w.writen1(mpInt32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpInt64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } +} + +func (e *msgpackEncDriverIO) EncodeUint(i uint64) { + if i <= math.MaxInt8 { + if e.h.NoFixedNum { + e.w.writen2(mpUint8, byte(i)) + } else { + e.w.writen1(byte(i)) + } + } else if i <= math.MaxUint8 { + e.w.writen2(mpUint8, byte(i)) + } else if i <= math.MaxUint16 { + e.w.writen1(mpUint16) + e.w.writen2(bigen.PutUint16(uint16(i))) + } else if i <= math.MaxUint32 { + e.w.writen1(mpUint32) + e.w.writen4(bigen.PutUint32(uint32(i))) + } else { + e.w.writen1(mpUint64) + e.w.writen8(bigen.PutUint64(uint64(i))) + } +} + +func (e *msgpackEncDriverIO) EncodeBool(b bool) { + if b { + e.w.writen1(mpTrue) + } else { + e.w.writen1(mpFalse) + } +} + +func (e *msgpackEncDriverIO) EncodeFloat32(f float32) { + e.w.writen1(mpFloat) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) +} + +func (e *msgpackEncDriverIO) EncodeFloat64(f float64) { + e.w.writen1(mpDouble) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *msgpackEncDriverIO) EncodeTime(t time.Time) { + if t.IsZero() { + e.EncodeNil() + return + } + t = t.UTC() + sec, nsec := t.Unix(), uint64(t.Nanosecond()) + var data64 uint64 + var l = 4 + if sec >= 0 && sec>>34 == 0 { + data64 = (nsec << 34) | uint64(sec) + if data64&0xffffffff00000000 != 0 { + l = 8 + } + } else { + l = 12 + } + if e.h.WriteExt { + e.encodeExtPreamble(mpTimeExtTagU, l) + } else { + e.writeContainerLen(msgpackContainerRawLegacy, l) + } + switch l { + case 4: + e.w.writen4(bigen.PutUint32(uint32(data64))) + case 8: + e.w.writen8(bigen.PutUint64(data64)) + case 12: + e.w.writen4(bigen.PutUint32(uint32(nsec))) + e.w.writen8(bigen.PutUint64(uint64(sec))) + } +} + +func (e *msgpackEncDriverIO) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + if e.h.WriteExt { + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) + } else { + e.EncodeBytes(bs) + } +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *msgpackEncDriverIO) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *msgpackEncDriverIO) encodeExtPreamble(xtag byte, l int) { + if l == 1 { + e.w.writen2(mpFixExt1, xtag) + } else if l == 2 { + e.w.writen2(mpFixExt2, xtag) + } else if l == 4 { + e.w.writen2(mpFixExt4, xtag) + } else if l == 8 { + e.w.writen2(mpFixExt8, xtag) + } else if l == 16 { + e.w.writen2(mpFixExt16, xtag) + } else if l < 256 { + e.w.writen2(mpExt8, byte(l)) + e.w.writen1(xtag) + } else if l < 65536 { + e.w.writen1(mpExt16) + e.w.writen2(bigen.PutUint16(uint16(l))) + e.w.writen1(xtag) + } else { + e.w.writen1(mpExt32) + e.w.writen4(bigen.PutUint32(uint32(l))) + e.w.writen1(xtag) + } +} + +func (e *msgpackEncDriverIO) WriteArrayStart(length int) { + e.writeContainerLen(msgpackContainerList, length) +} + +func (e *msgpackEncDriverIO) WriteMapStart(length int) { + e.writeContainerLen(msgpackContainerMap, length) +} + +func (e *msgpackEncDriverIO) WriteArrayEmpty() { + + e.w.writen1(mpFixArrayMin) +} + +func (e *msgpackEncDriverIO) WriteMapEmpty() { + + e.w.writen1(mpFixMapMin) +} + +func (e *msgpackEncDriverIO) EncodeString(s string) { + var ct msgpackContainerType + if e.h.WriteExt { + if e.h.StringToRaw { + ct = msgpackContainerBin + } else { + ct = msgpackContainerStr + } + } else { + ct = msgpackContainerRawLegacy + } + e.writeContainerLen(ct, len(s)) + if len(s) > 0 { + e.w.writestr(s) + } +} + +func (e *msgpackEncDriverIO) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *msgpackEncDriverIO) EncodeStringBytesRaw(bs []byte) { + if e.h.WriteExt { + e.writeContainerLen(msgpackContainerBin, len(bs)) + } else { + e.writeContainerLen(msgpackContainerRawLegacy, len(bs)) + } + if len(bs) > 0 { + e.w.writeb(bs) + } +} + +func (e *msgpackEncDriverIO) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *msgpackEncDriverIO) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = mpNil + } + e.w.writen1(v) +} + +func (e *msgpackEncDriverIO) writeNilArray() { + e.writeNilOr(mpFixArrayMin) +} + +func (e *msgpackEncDriverIO) writeNilMap() { + e.writeNilOr(mpFixMapMin) +} + +func (e *msgpackEncDriverIO) writeNilBytes() { + e.writeNilOr(mpFixStrMin) +} + +func (e *msgpackEncDriverIO) writeContainerLen(ct msgpackContainerType, l int) { + if ct.fixCutoff > 0 && l < int(ct.fixCutoff) { + e.w.writen1(ct.bFixMin | byte(l)) + } else if ct.b8 > 0 && l < 256 { + e.w.writen2(ct.b8, uint8(l)) + } else if l < 65536 { + e.w.writen1(ct.b16) + e.w.writen2(bigen.PutUint16(uint16(l))) + } else { + e.w.writen1(ct.b32) + e.w.writen4(bigen.PutUint32(uint32(l))) + } +} + +func (d *msgpackDecDriverIO) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + bd := d.bd + n := d.d.naked() + var decodeFurther bool + + switch bd { + case mpNil: + n.v = valueTypeNil + d.bdRead = false + case mpFalse: + n.v = valueTypeBool + n.b = false + case mpTrue: + n.v = valueTypeBool + n.b = true + + case mpFloat: + n.v = valueTypeFloat + n.f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case mpDouble: + n.v = valueTypeFloat + n.f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + + case mpUint8: + n.v = valueTypeUint + n.u = uint64(d.r.readn1()) + case mpUint16: + n.v = valueTypeUint + n.u = uint64(bigen.Uint16(d.r.readn2())) + case mpUint32: + n.v = valueTypeUint + n.u = uint64(bigen.Uint32(d.r.readn4())) + case mpUint64: + n.v = valueTypeUint + n.u = uint64(bigen.Uint64(d.r.readn8())) + + case mpInt8: + n.v = valueTypeInt + n.i = int64(int8(d.r.readn1())) + case mpInt16: + n.v = valueTypeInt + n.i = int64(int16(bigen.Uint16(d.r.readn2()))) + case mpInt32: + n.v = valueTypeInt + n.i = int64(int32(bigen.Uint32(d.r.readn4()))) + case mpInt64: + n.v = valueTypeInt + n.i = int64(int64(bigen.Uint64(d.r.readn8()))) + + default: + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax: + + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax: + d.d.fauxUnionReadRawBytes(d, d.h.WriteExt, d.h.RawToString) + + case bd == mpBin8, bd == mpBin16, bd == mpBin32: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax: + n.v = valueTypeArray + decodeFurther = true + case bd == mpMap16, bd == mpMap32, bd >= mpFixMapMin && bd <= mpFixMapMax: + n.v = valueTypeMap + decodeFurther = true + case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32: + n.v = valueTypeExt + clen := d.readExtLen() + n.u = uint64(d.r.readn1()) + if n.u == uint64(mpTimeExtTagU) { + n.v = valueTypeTime + n.t = d.decodeTime(clen) + } else { + n.l = d.r.readx(uint(clen)) + } + default: + halt.errorf("cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + } + } + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.u) + } +} + +func (d *msgpackDecDriverIO) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) nextValueBytesBdReadR() { + bd := d.bd + + var clen uint + + switch bd { + case mpNil, mpFalse, mpTrue: + case mpUint8, mpInt8: + d.r.readn1() + case mpUint16, mpInt16: + d.r.skip(2) + case mpFloat, mpUint32, mpInt32: + d.r.skip(4) + case mpDouble, mpUint64, mpInt64: + d.r.skip(8) + case mpStr8, mpBin8: + clen = uint(d.r.readn1()) + d.r.skip(clen) + case mpStr16, mpBin16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + d.r.skip(clen) + case mpStr32, mpBin32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + d.r.skip(clen) + case mpFixExt1: + d.r.readn1() + d.r.readn1() + case mpFixExt2: + d.r.readn1() + d.r.skip(2) + case mpFixExt4: + d.r.readn1() + d.r.skip(4) + case mpFixExt8: + d.r.readn1() + d.r.skip(8) + case mpFixExt16: + d.r.readn1() + d.r.skip(16) + case mpExt8: + clen = uint(d.r.readn1()) + d.r.readn1() + d.r.skip(clen) + case mpExt16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + d.r.readn1() + d.r.skip(clen) + case mpExt32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + d.r.readn1() + d.r.skip(clen) + case mpArray16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpArray32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpMap16: + x := d.r.readn2() + clen = uint(bigen.Uint16(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + case mpMap32: + x := d.r.readn4() + clen = uint(bigen.Uint32(x)) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax: + case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + case bd >= mpFixStrMin && bd <= mpFixStrMax: + clen = uint(mpFixStrMin ^ bd) + d.r.skip(clen) + case bd >= mpFixArrayMin && bd <= mpFixArrayMax: + clen = uint(mpFixArrayMin ^ bd) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + case bd >= mpFixMapMin && bd <= mpFixMapMax: + clen = uint(mpFixMapMin ^ bd) + for i := uint(0); i < clen; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + default: + halt.errorf("nextValueBytes: cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd)) + } + } + return +} + +func (d *msgpackDecDriverIO) decFloat4Int32() (f float32) { + fbits := bigen.Uint32(d.r.readn4()) + f = math.Float32frombits(fbits) + if !noFrac32(fbits) { + halt.errorf("assigning integer value from float32 with a fraction: %v", f) + } + return +} + +func (d *msgpackDecDriverIO) decFloat4Int64() (f float64) { + fbits := bigen.Uint64(d.r.readn8()) + f = math.Float64frombits(fbits) + if !noFrac64(fbits) { + halt.errorf("assigning integer value from float64 with a fraction: %v", f) + } + return +} + +func (d *msgpackDecDriverIO) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + switch d.bd { + case mpUint8: + i = int64(uint64(d.r.readn1())) + case mpUint16: + i = int64(uint64(bigen.Uint16(d.r.readn2()))) + case mpUint32: + i = int64(uint64(bigen.Uint32(d.r.readn4()))) + case mpUint64: + i = int64(bigen.Uint64(d.r.readn8())) + case mpInt8: + i = int64(int8(d.r.readn1())) + case mpInt16: + i = int64(int16(bigen.Uint16(d.r.readn2()))) + case mpInt32: + i = int64(int32(bigen.Uint32(d.r.readn4()))) + case mpInt64: + i = int64(bigen.Uint64(d.r.readn8())) + case mpFloat: + i = int64(d.decFloat4Int32()) + case mpDouble: + i = int64(d.decFloat4Int64()) + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + i = int64(int8(d.bd)) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + i = int64(int8(d.bd)) + default: + halt.errorf("cannot decode signed integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + switch d.bd { + case mpUint8: + ui = uint64(d.r.readn1()) + case mpUint16: + ui = uint64(bigen.Uint16(d.r.readn2())) + case mpUint32: + ui = uint64(bigen.Uint32(d.r.readn4())) + case mpUint64: + ui = bigen.Uint64(d.r.readn8()) + case mpInt8: + if i := int64(int8(d.r.readn1())); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt16: + if i := int64(int16(bigen.Uint16(d.r.readn2()))); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt32: + if i := int64(int32(bigen.Uint32(d.r.readn4()))); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpInt64: + if i := int64(bigen.Uint64(d.r.readn8())); i >= 0 { + ui = uint64(i) + } else { + halt.errorf("assigning negative signed value: %v, to unsigned type", i) + } + case mpFloat: + if f := d.decFloat4Int32(); f >= 0 { + ui = uint64(f) + } else { + halt.errorf("assigning negative float value: %v, to unsigned type", f) + } + case mpDouble: + if f := d.decFloat4Int64(); f >= 0 { + ui = uint64(f) + } else { + halt.errorf("assigning negative float value: %v, to unsigned type", f) + } + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + ui = uint64(d.bd) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + halt.errorf("assigning negative signed value: %v, to unsigned type", int(d.bd)) + default: + halt.errorf("cannot decode unsigned integer: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + if d.bd == mpFloat { + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + } else if d.bd == mpDouble { + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + } else { + f = float64(d.DecodeInt64()) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == mpFalse || d.bd == 0 { + + } else if d.bd == mpTrue || d.bd == 1 { + b = true + } else { + halt.errorf("cannot decode bool: %s: %x/%s", msgBadDesc, d.bd, mpdesc(d.bd)) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + + var cond bool + bd := d.bd + var clen int + if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + clen = d.readContainerLen(msgpackContainerBin) + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + clen = d.readContainerLen(msgpackContainerStr) + } else if bd == mpArray16 || bd == mpArray32 || + (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + return + } else { + halt.errorf("invalid byte descriptor for decoding bytes, got: 0x%x", d.bd) + } + + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *msgpackDecDriverIO) DecodeStringAsBytes() (out []byte, state dBytesAttachState) { + out, state = d.DecodeBytes() + if d.h.ValidateUnicode && !utf8.Valid(out) { + halt.errorf("DecodeStringAsBytes: invalid UTF-8: %s", out) + } + return +} + +func (d *msgpackDecDriverIO) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *msgpackDecDriverIO) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == mpNil { + d.bdRead = false + return true + } + return +} + +func (d *msgpackDecDriverIO) TryNil() (v bool) { + return d.advanceNil() +} + +func (d *msgpackDecDriverIO) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + bd := d.bd + if bd == mpNil { + d.bdRead = false + return valueTypeNil + } else if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + return valueTypeBytes + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + if d.h.WriteExt || d.h.RawToString { + return valueTypeString + } + return valueTypeBytes + } else if bd == mpArray16 || bd == mpArray32 || (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { + return valueTypeArray + } else if bd == mpMap16 || bd == mpMap32 || (bd >= mpFixMapMin && bd <= mpFixMapMax) { + return valueTypeMap + } + return valueTypeUnset +} + +func (d *msgpackDecDriverIO) readContainerLen(ct msgpackContainerType) (clen int) { + bd := d.bd + if bd == ct.b8 { + clen = int(d.r.readn1()) + } else if bd == ct.b16 { + clen = int(bigen.Uint16(d.r.readn2())) + } else if bd == ct.b32 { + clen = int(bigen.Uint32(d.r.readn4())) + } else if (ct.bFixMin & bd) == ct.bFixMin { + clen = int(ct.bFixMin ^ bd) + } else { + halt.errorf("cannot read container length: %s: hex: %x, decimal: %d", msgBadDesc, bd, bd) + } + d.bdRead = false + return +} + +func (d *msgpackDecDriverIO) ReadMapStart() int { + if d.advanceNil() { + return containerLenNil + } + return d.readContainerLen(msgpackContainerMap) +} + +func (d *msgpackDecDriverIO) ReadArrayStart() int { + if d.advanceNil() { + return containerLenNil + } + return d.readContainerLen(msgpackContainerList) +} + +func (d *msgpackDecDriverIO) readExtLen() (clen int) { + switch d.bd { + case mpFixExt1: + clen = 1 + case mpFixExt2: + clen = 2 + case mpFixExt4: + clen = 4 + case mpFixExt8: + clen = 8 + case mpFixExt16: + clen = 16 + case mpExt8: + clen = int(d.r.readn1()) + case mpExt16: + clen = int(bigen.Uint16(d.r.readn2())) + case mpExt32: + clen = int(bigen.Uint32(d.r.readn4())) + default: + halt.errorf("decoding ext bytes: found unexpected byte: %x", d.bd) + } + return +} + +func (d *msgpackDecDriverIO) DecodeTime() (t time.Time) { + + if d.advanceNil() { + return + } + bd := d.bd + var clen int + if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + clen = d.readContainerLen(msgpackContainerBin) + } else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || + (bd >= mpFixStrMin && bd <= mpFixStrMax) { + clen = d.readContainerLen(msgpackContainerStr) + } else { + + d.bdRead = false + b2 := d.r.readn1() + if d.bd == mpFixExt4 && b2 == mpTimeExtTagU { + clen = 4 + } else if d.bd == mpFixExt8 && b2 == mpTimeExtTagU { + clen = 8 + } else if d.bd == mpExt8 && b2 == 12 && d.r.readn1() == mpTimeExtTagU { + clen = 12 + } else { + halt.errorf("invalid stream for decoding time as extension: got 0x%x, 0x%x", d.bd, b2) + } + } + return d.decodeTime(clen) +} + +func (d *msgpackDecDriverIO) decodeTime(clen int) (t time.Time) { + d.bdRead = false + switch clen { + case 4: + t = time.Unix(int64(bigen.Uint32(d.r.readn4())), 0).UTC() + case 8: + tv := bigen.Uint64(d.r.readn8()) + t = time.Unix(int64(tv&0x00000003ffffffff), int64(tv>>34)).UTC() + case 12: + nsec := bigen.Uint32(d.r.readn4()) + sec := bigen.Uint64(d.r.readn8()) + t = time.Unix(int64(sec), int64(nsec)).UTC() + default: + halt.errorf("invalid length of bytes for decoding time - expecting 4 or 8 or 12, got %d", clen) + } + return +} + +func (d *msgpackDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *msgpackDecDriverIO) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *msgpackDecDriverIO) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + xbd := d.bd + if xbd == mpBin8 || xbd == mpBin16 || xbd == mpBin32 { + xbs, bstate = d.DecodeBytes() + } else if xbd == mpStr8 || xbd == mpStr16 || xbd == mpStr32 || + (xbd >= mpFixStrMin && xbd <= mpFixStrMax) { + xbs, bstate = d.DecodeStringAsBytes() + } else { + clen := d.readExtLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag - got %b, expecting %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(clen)) + bstate = d.d.attachState(ok) + + } + d.bdRead = false + ok = true + return +} + +func (d *msgpackEncDriverIO) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*MsgpackHandle) + d.e = shared + if shared.bytes { + fp = msgpackFpEncBytes + } else { + fp = msgpackFpEncIO + } + + d.init2(enc) + return +} + +func (e *msgpackEncDriverIO) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *msgpackEncDriverIO) writerEnd() { e.w.end() } + +func (e *msgpackEncDriverIO) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *msgpackEncDriverIO) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *msgpackDecDriverIO) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*MsgpackHandle) + d.d = shared + if shared.bytes { + fp = msgpackFpDecBytes + } else { + fp = msgpackFpDecIO + } + + d.init2(dec) + return +} + +func (d *msgpackDecDriverIO) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *msgpackDecDriverIO) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *msgpackDecDriverIO) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *msgpackDecDriverIO) descBd() string { + return sprintf("%v (%s)", d.bd, mpdesc(d.bd)) +} + +func (d *msgpackDecDriverIO) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.notfastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/msgpack.notfastpath.mono.generated.go new file mode 100644 index 000000000..b4f7d2465 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/msgpack.notfastpath.mono.generated.go @@ -0,0 +1,52 @@ +//go:build !notmono && !codec.notmono && (notfastpath || codec.notfastpath) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +type fastpathEMsgpackBytes struct { + rt reflect.Type + encfn func(*encoderMsgpackBytes, *encFnInfo, reflect.Value) +} +type fastpathDMsgpackBytes struct { + rt reflect.Type + decfn func(*decoderMsgpackBytes, *decFnInfo, reflect.Value) +} +type fastpathEsMsgpackBytes [0]fastpathEMsgpackBytes +type fastpathDsMsgpackBytes [0]fastpathDMsgpackBytes + +func (helperEncDriverMsgpackBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderMsgpackBytes) bool { + return false +} +func (helperDecDriverMsgpackBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderMsgpackBytes) bool { + return false +} + +func (helperEncDriverMsgpackBytes) fastpathEList() (v *fastpathEsMsgpackBytes) { return } +func (helperDecDriverMsgpackBytes) fastpathDList() (v *fastpathDsMsgpackBytes) { return } + +type fastpathEMsgpackIO struct { + rt reflect.Type + encfn func(*encoderMsgpackIO, *encFnInfo, reflect.Value) +} +type fastpathDMsgpackIO struct { + rt reflect.Type + decfn func(*decoderMsgpackIO, *decFnInfo, reflect.Value) +} +type fastpathEsMsgpackIO [0]fastpathEMsgpackIO +type fastpathDsMsgpackIO [0]fastpathDMsgpackIO + +func (helperEncDriverMsgpackIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderMsgpackIO) bool { + return false +} +func (helperDecDriverMsgpackIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderMsgpackIO) bool { + return false +} + +func (helperEncDriverMsgpackIO) fastpathEList() (v *fastpathEsMsgpackIO) { return } +func (helperDecDriverMsgpackIO) fastpathDList() (v *fastpathDsMsgpackIO) { return } diff --git a/vendor/github.com/ugorji/go/codec/reader.go b/vendor/github.com/ugorji/go/codec/reader.go index ec5dac0e9..86c403ab5 100644 --- a/vendor/github.com/ugorji/go/codec/reader.go +++ b/vendor/github.com/ugorji/go/codec/reader.go @@ -4,22 +4,30 @@ package codec import ( - "bufio" - "bytes" + "errors" "io" - "strings" + "os" ) // decReader abstracts the reading source, allowing implementations that can // read from an io.Reader or directly off a byte slice with zero-copying. -type decReader interface { - // readx will return a view of the []byte if decoding from a []byte, OR - // read into the implementation scratch buffer if possible i.e. n < len(scratchbuf), OR - // create a new []byte and read into that +type decReaderI interface { + // readx will return a view of the []byte in one of 2 ways: + // - direct view into []byte which decoding is happening from (if bytes) + // - view into a mutable []byte which the ioReader is using (if IO) + // + // Users should directly consume the contents read, and not store for future use. readx(n uint) []byte + // skip n bytes + skip(n uint) + readb([]byte) + // readxb will read n bytes, returning as out, and a flag stating whether + // an internal buffer (not the view) was used. + readxb(n uint) (out []byte, usingBuf bool) + readn1() byte readn2() [2]byte readn3() [3]byte @@ -35,14 +43,22 @@ type decReader interface { // skip any whitespace characters, and return the first non-matching byte skipWhitespace() (token byte) - // jsonReadNum will include last read byte in first element of slice, - // and continue numeric characters until it sees a non-numeric char - // or EOF. If it sees a non-numeric character, it will unread that. - jsonReadNum() []byte + // jsonReadNum will read a sequence of numeric characters, checking from the last + // read byte. It will return a sequence of numeric characters (v), + // and the next token character (tok - returned separately), + // + // if an EOF is found before the next token is seen, it returns a token value of 0. + jsonReadNum() (v []byte, token byte) - // jsonReadAsisChars will read json plain characters (anything but " or \) - // and return a slice terminated by a non-json asis character. - jsonReadAsisChars() []byte + // jsonReadAsisChars recognizes 2 terminal characters (" or \). + // jsonReadAsisChars will read json plain characters until it reaches a terminal char, + // and returns a slice up to the terminal char (excluded), + // and also returns the terminal char separately (" or \). + jsonReadAsisChars() (v []byte, terminal byte) + + // readUntil will read characters until it reaches a ", + // return a slice up to " (excluded) + jsonReadUntilDblQuote() (v []byte) // skip will skip any byte that matches, and return the first non-matching byte // skip(accept *bitset256) (token byte) @@ -50,21 +66,28 @@ type decReader interface { // readTo will read any byte that matches, stopping once no-longer matching. // readTo(accept *bitset256) (out []byte) - // readUntil will read, only stopping once it matches the 'stop' byte (which it excludes). - readUntil(stop byte) (out []byte) -} + // // readUntil will read characters until it reaches a stop char, + // // return a slice up to the terminal byte (excluded) + // readUntil(stop byte) (out []byte) -// ------------------------------------------------ + // only supported when reading from bytes + // bytesReadFrom(startpos uint) []byte -type unreadByteStatus uint8 + // isBytes() bool + resetIO(r io.Reader, bufsize int, maxInitLen int, blist *bytesFreeList) -// unreadByteStatus goes from -// undefined (when initialized) -- (read) --> canUnread -- (unread) --> canRead ... -const ( - unreadByteUndefined unreadByteStatus = iota - unreadByteCanRead - unreadByteCanUnread -) + resetBytes(in []byte) + + // nextValueBytes() captures bytes read between a call to startRecording and stopRecording. + // startRecording will always includes the last byte read. + startRecording() + // stopRecording will include all bytes read between the point of startRecording and now. + stopRecording() []byte +} + +// // ------------------------------------------------ + +const maxConsecutiveEmptyReads = 16 // 2 is sufficient, 16 is enough, 64 is optimal // const defBufReaderSize = 4096 @@ -74,276 +97,568 @@ const ( type ioReaderByteScanner interface { io.Reader io.ByteScanner - // ReadByte() (byte, error) - // UnreadByte() error - // Read(p []byte) (n int, err error) } -// ioReaderByteScannerT does a simple wrapper of a io.ByteScanner -// over a io.Reader -type ioReaderByteScannerT struct { +// MARKER: why not separate bufioDecReader from ioDecReader? +// +// We tried, but only readn1 of bufioDecReader came close to being +// inlined (at inline cost 82). All other methods were at inline cost >= 90. +// +// Consequently, there's no performance impact from having both together +// (except a single if z.bufio branch, which is likely well predicted and happens +// only once per call (right at the top). + +// ioDecReader is a decReader that reads off an io.Reader. +type ioDecReader struct { r io.Reader - l byte // last byte - ls unreadByteStatus // last byte status + blist *bytesFreeList - _ [2]byte // padding - b [4]byte // tiny buffer for reading single bytes + maxInitLen uint + + n uint // num read + + bufsize uint + + bufio bool // are we buffering (rc and wc are valid) + rbr bool // r is a byte reader + recording bool // are we recording (src and erc are valid) + done bool // did we reach EOF and are we done? + + // valid when: bufio=false + b [1]byte // tiny buffer for reading single byte (if z.br == nil) + l byte // last byte read + br io.ByteReader // main reader used for ReadByte + + // valid when: bufio=true + wc uint // read cursor + rc uint // write cursor + err error + + // valid when: recording=true + recc uint // start-recording cursor (valid: recording=true) + + buf []byte // buffer for bufio OR recording (if !bufio) +} + +func (z *ioDecReader) resetBytes(in []byte) { + halt.errorStr("resetBytes unsupported by ioDecReader") } -func (z *ioReaderByteScannerT) ReadByte() (c byte, err error) { - if z.ls == unreadByteCanRead { - z.ls = unreadByteCanUnread - c = z.l +func (z *ioDecReader) resetIO(r io.Reader, bufsize int, maxInitLen int, blist *bytesFreeList) { + buf := z.buf + *z = ioDecReader{} + z.maxInitLen = max(1024, uint(maxInitLen)) + z.blist = blist + z.buf = blist.check(buf, max(256, bufsize)) + z.bufsize = uint(max(0, bufsize)) + z.bufio = z.bufsize > 0 + if z.bufio { + z.buf = z.buf[:cap(z.buf)] } else { - _, err = z.Read(z.b[:1]) - c = z.b[0] + z.buf = z.buf[:0] } - return + if r == nil { + z.r = &eofReader + } else { + z.r = r + } + z.br, z.rbr = z.r.(io.ByteReader) } -func (z *ioReaderByteScannerT) UnreadByte() (err error) { - switch z.ls { - case unreadByteCanUnread: - z.ls = unreadByteCanRead - case unreadByteCanRead: - err = errDecUnreadByteLastByteNotRead - case unreadByteUndefined: - err = errDecUnreadByteNothingToRead - default: - err = errDecUnreadByteUnknown - } - return +func (z *ioDecReader) numread() uint { + return z.n } -func (z *ioReaderByteScannerT) Read(p []byte) (n int, err error) { - if len(p) == 0 { - return - } - var firstByte bool - if z.ls == unreadByteCanRead { - z.ls = unreadByteCanUnread - p[0] = z.l - if len(p) == 1 { - n = 1 - return - } - firstByte = true - p = p[1:] - } - n, err = z.r.Read(p) - if n > 0 { - if err == io.EOF && n == len(p) { - err = nil // read was successful, so postpone EOF (till next time) - } - z.l = p[n-1] - z.ls = unreadByteCanUnread - } - if firstByte { - n++ - } - return +func (z *ioDecReader) readn2() [2]byte { + return ([2]byte)(z.readx(2)) + // using readb forced return bs onto heap, unnecessarily + // z.readb(bs[:]) + // return } -func (z *ioReaderByteScannerT) reset(r io.Reader) { - z.r = r - z.ls = unreadByteUndefined - z.l = 0 +func (z *ioDecReader) readn3() [3]byte { + return ([3]byte)(z.readx(3)) } -// ioDecReader is a decReader that reads off an io.Reader. -type ioDecReader struct { - rr ioReaderByteScannerT // the reader passed in, wrapped into a reader+bytescanner +func (z *ioDecReader) readn4() [4]byte { + return ([4]byte)(z.readx(4)) +} - n uint // num read +func (z *ioDecReader) readn8() [8]byte { + return ([8]byte)(z.readx(8)) +} - blist *bytesFreelist +func (z *ioDecReader) readx(n uint) (bs []byte) { + return bytesOK(z.readxb(n)) +} - bufr []byte // buffer for readTo/readUntil - br ioReaderByteScanner // main reader used for Read|ReadByte|UnreadByte - bb *bufio.Reader // created internally, and reused on reset if needed +func (z *ioDecReader) readErr() (err error) { + err, z.err = z.err, nil + return +} - x [64 + 40]byte // for: get struct field name, swallow valueTypeBytes, etc +func (z *ioDecReader) checkErr() { + halt.onerror(z.readErr()) } -func (z *ioDecReader) reset(r io.Reader, bufsize int, blist *bytesFreelist) { - z.blist = blist - z.n = 0 - z.bufr = z.blist.check(z.bufr, 256) - z.br = nil +func (z *ioDecReader) readOne() (b byte, err error) { + n, err := z.r.Read(z.b[:]) + if n == 1 { + err = nil + b = z.b[0] + } + return +} - var ok bool +// fillbuf reads a new chunk into the buffer. +func (z *ioDecReader) fillbuf(bufsize uint) (numShift, numRead uint) { + z.checkErr() + bufsize = max(bufsize, z.bufsize) - if bufsize <= 0 { - z.br, ok = r.(ioReaderByteScanner) - if !ok { - z.rr.reset(r) - z.br = &z.rr + // Slide existing data to beginning. + if z.recording { + numShift = z.recc // recc is always <= rc + } else { + numShift = z.rc + } + if numShift > 0 { + numShift-- // never shift last byte read out + } + copy(z.buf, z.buf[numShift:z.wc]) + z.wc -= numShift + z.rc -= numShift + if z.recording { + z.recc -= numShift + } + // add enough to allow u to read up to bufsize again iff + // - buf is fully written + // - NOTE: don't pre-allocate more until needed + if uint(len(z.buf)) == z.wc { + if bufsize+z.wc < uint(cap(z.buf)) { + z.buf = z.buf[:uint(cap(z.buf))] + } else { + bufsize = max(uint(cap(z.buf)*3/2), bufsize+z.wc) + buf := z.blist.get(int(bufsize)) + buf = buf[:cap(buf)] + copy(buf, z.buf[:z.wc]) + z.blist.put(z.buf) + z.buf = buf } - return } + // Read new data: try a limited number of times. + // if n == 0: try up to maxConsecutiveEmptyReads + // if n > 0 and err == nil: try one more time (to see if we get n == 0 and EOF) + for i := maxConsecutiveEmptyReads; i > 0; i-- { + n, err := z.r.Read(z.buf[z.wc:]) + numRead += uint(n) + z.wc += uint(n) + if err != nil { + // if os read dealine, and we have read something, return + z.err = err + if err == io.EOF { + z.done = true + } else if errors.Is(err, os.ErrDeadlineExceeded) { + // os read deadline, but some bytes read: return (don't store err) + z.err = nil + } + return + } - // bufsize > 0 ... - - // if bytes.[Buffer|Reader], no value in adding extra buffer - // if bufio.Reader, no value in extra buffer unless size changes - switch bb := r.(type) { - case *strings.Reader: - z.br = bb - case *bytes.Buffer: - z.br = bb - case *bytes.Reader: - z.br = bb - case *bufio.Reader: - if bb.Size() == bufsize { - z.br = bb + // if z.wc == uint(len(z.buf)) { + // return + // } + // only read one time if results returned + // if n > 0 && i > 2 { + // i = 2 // try max one more time (to see about getting EOF) + // } + + // Once you have some data from this read call, move on. + // Consequently, a blocked Read has less chance of happening. + if n > 0 { + return } } + z.err = io.ErrNoProgress // either no data read OR not enough data read, without an EOF + return +} - if z.br == nil { - if z.bb != nil && z.bb.Size() == bufsize { - z.bb.Reset(r) - } else { - z.bb = bufio.NewReaderSize(r, bufsize) +func (z *ioDecReader) readb(bs []byte) { + if len(bs) == 0 { + return + } + var err error + var n int + if z.bufio { + BUFIO: + for z.rc == z.wc { + z.fillbuf(0) } - z.br = z.bb + n = copy(bs, z.buf[z.rc:z.wc]) + z.rc += uint(n) + z.n += uint(n) + if n == len(bs) { + return + } + bs = bs[n:] + goto BUFIO } -} -func (z *ioDecReader) numread() uint { - return z.n + // -------- NOT BUFIO ------ + + var nn uint + bs0 := bs +READER: + n, err = z.r.Read(bs) + if n > 0 { + z.l = bs[n-1] + nn += uint(n) + bs = bs[n:] + } + if len(bs) != 0 && err == nil { + goto READER + } + if z.recording { + z.buf = append(z.buf, bs0[:nn]...) + } + z.n += nn + if len(bs) != 0 { + halt.onerror(err) + halt.errorf("ioDecReader.readb read %d out of %d bytes requested", nn, len(bs0)) + } + return } func (z *ioDecReader) readn1() (b uint8) { - b, err := z.br.ReadByte() + if z.bufio { + for z.rc == z.wc { + z.fillbuf(0) + } + b = z.buf[z.rc] + z.rc++ + z.n++ + return + } + + // -------- NOT BUFIO ------ + + var err error + if z.rbr { + b, err = z.br.ReadByte() + } else { + b, err = z.readOne() + } halt.onerror(err) + z.l = b z.n++ + if z.recording { + z.buf = append(z.buf, b) + } return } -func (z *ioDecReader) readn2() (bs [2]byte) { - z.readb(bs[:]) - return -} +func (z *ioDecReader) readxb(n uint) (out []byte, useBuf bool) { + if n == 0 { + return zeroByteSlice, false + } -func (z *ioDecReader) readn3() (bs [3]byte) { - z.readb(bs[:]) - return -} + if z.bufio { + BUFIO: + nn := int(n+z.rc) - int(z.wc) + if nn > 0 { + z.fillbuf(decInferLen(nn, z.maxInitLen, 1)) + goto BUFIO + } + pos := z.rc + z.rc += uint(n) + z.n += uint(n) + out = z.buf[pos:z.rc] + useBuf = true + return + } -func (z *ioDecReader) readn4() (bs [4]byte) { - z.readb(bs[:]) + // -------- NOT BUFIO ------ + + useBuf = true + out = z.buf + r0 := uint(len(out)) + r := r0 + nn := int(n) + var n2 uint + for nn > 0 { + n2 = r + decInferLen(int(nn), z.maxInitLen, 1) + if cap(out) < int(n2) { + out2 := z.blist.putGet(out, int(n2))[:n2] // make([]byte, len2+len3) + copy(out2, out) + out = out2 + } else { + out = out[:n2] + } + n3, err := z.r.Read(out[r:n2]) + if n3 > 0 { + z.l = out[r+uint(n3)-1] + nn -= n3 + r += uint(n3) + } + halt.onerror(err) + } + z.buf = out[:r0+n] + out = out[r0 : r0+n] + z.n += n return } -func (z *ioDecReader) readn8() (bs [8]byte) { - z.readb(bs[:]) +func (z *ioDecReader) skip(n uint) { + if n == 0 { + return + } + + if z.bufio { + BUFIO: + n2 := min(n, z.wc-z.rc) + // handle in-line, so z.buf doesn't grow much (since we're skipping) + // ie by setting z.rc, fillbuf should keep shifting left (unless recording) + z.rc += n2 + z.n += n2 + n -= n2 + if n > 0 { + z.fillbuf(decInferLen(int(n+z.rc)-int(z.wc), z.maxInitLen, 1)) + goto BUFIO + } + return + } + + // -------- NOT BUFIO ------ + + var out []byte + var fromBlist bool + if z.recording { + out = z.buf + } else { + nn := int(decInferLen(int(n), z.maxInitLen, 1)) + if cap(z.buf) >= nn/2 { + out = z.buf[:cap(z.buf)] + } else { + fromBlist = true + out = z.blist.get(nn) + } + } + + var r, n2 uint + nn := int(n) + for nn > 0 { + n2 = uint(nn) + if z.recording { + r = uint(len(out)) + n2 = r + decInferLen(int(nn), z.maxInitLen, 1) + if cap(out) < int(n2) { + out2 := z.blist.putGet(out, int(n2))[:n2] // make([]byte, len2+len3) + copy(out2, out) + out = out2 + } else { + out = out[:n2] + } + } + n3, err := z.r.Read(out[r:n2]) + if n3 > 0 { + z.l = out[r+uint(n3)-1] + z.n += uint(n3) + nn -= n3 + } + halt.onerror(err) + } + if z.recording { + z.buf = out + } else if fromBlist { + z.blist.put(out) + } return } -func (z *ioDecReader) readx(n uint) (bs []byte) { - if n == 0 { - return zeroByteSlice +// ---- JSON SPECIFIC HELPERS HERE ---- + +func (z *ioDecReader) jsonReadNum() (bs []byte, token byte) { + var start, pos, end uint + if z.bufio { + // read and fill into buf, then take substring + start = z.rc - 1 // include last byte read + pos = start + BUFIO: + if pos == z.wc { + if z.done { + end = pos + goto END + } + numshift, numread := z.fillbuf(0) + start -= numshift + pos -= numshift + if numread == 0 { + end = pos + goto END + } + } + token = z.buf[pos] + pos++ + if isNumberChar(token) { + goto BUFIO + } + end = pos - 1 + END: + z.n += (pos - z.rc) + z.rc = pos + return z.buf[start:end], token } - if n < uint(len(z.x)) { - bs = z.x[:n] + + // if not recording, add the last read byte into buf + if !z.recording { + z.buf = append(z.buf[:0], z.l) + } + start = uint(len(z.buf) - 1) // incl last byte in z.buf + var b byte + var err error + +READER: + if z.rbr { + b, err = z.br.ReadByte() } else { - bs = make([]byte, n) + b, err = z.readOne() + } + if err == io.EOF { + return z.buf[start:], 0 } - nn, err := readFull(z.br, bs) - z.n += nn halt.onerror(err) - return + z.l = b + z.n++ + z.buf = append(z.buf, b) + if isNumberChar(b) { + goto READER + } + return z.buf[start : len(z.buf)-1], b } -func (z *ioDecReader) readb(bs []byte) { - if len(bs) == 0 { - return +func (z *ioDecReader) skipWhitespace() (tok byte) { + var pos uint + if z.bufio { + pos = z.rc + BUFIO: + if pos == z.wc { + if z.done { + halt.onerror(io.ErrUnexpectedEOF) + } + numshift, numread := z.fillbuf(0) + pos -= numshift + if numread == 0 { + halt.onerror(io.ErrUnexpectedEOF) + } + } + tok = z.buf[pos] + pos++ + if isWhitespaceChar(tok) { + goto BUFIO + } + z.n += (pos - z.rc) + z.rc = pos + return tok + } + + var err error +READER: + if z.rbr { + tok, err = z.br.ReadByte() + } else { + tok, err = z.readOne() } - nn, err := readFull(z.br, bs) - z.n += nn halt.onerror(err) -} + z.n++ + z.l = tok + if z.recording { + z.buf = append(z.buf, tok) + } + if isWhitespaceChar(tok) { + goto READER + } + return tok +} + +func (z *ioDecReader) readUntil(stop1, stop2 byte) (bs []byte, tok byte) { + var start, pos uint + if z.bufio { + start = z.rc + pos = start + BUFIO: + if pos == z.wc { + if z.done { + halt.onerror(io.ErrUnexpectedEOF) + } + numshift, numread := z.fillbuf(0) + start -= numshift + pos -= numshift + if numread == 0 { + halt.onerror(io.ErrUnexpectedEOF) + } + } + tok = z.buf[pos] + pos++ + if tok == stop1 || tok == stop2 { + z.n += (pos - z.rc) + z.rc = pos + return z.buf[start : pos-1], tok + } + goto BUFIO + } -// func (z *ioDecReader) readn1eof() (b uint8, eof bool) { -// b, err := z.br.ReadByte() -// if err == nil { -// z.n++ -// } else if err == io.EOF { -// eof = true -// } else { -// halt.onerror(err) -// } -// return -// } - -func (z *ioDecReader) jsonReadNum() (bs []byte) { - z.unreadn1() - z.bufr = z.bufr[:0] -LOOP: - // i, eof := z.readn1eof() - i, err := z.br.ReadByte() - if err == io.EOF { - return z.bufr + var err error + if !z.recording { + z.buf = z.buf[:0] } - if err != nil { - halt.onerror(err) + start = uint(len(z.buf)) +READER: + if z.rbr { + tok, err = z.br.ReadByte() + } else { + tok, err = z.readOne() } + halt.onerror(err) z.n++ - if isNumberChar(i) { - z.bufr = append(z.bufr, i) - goto LOOP + z.l = tok + z.buf = append(z.buf, tok) + if tok == stop1 || tok == stop2 { + return z.buf[start : len(z.buf)-1], tok } - z.unreadn1() - return z.bufr + goto READER } -func (z *ioDecReader) jsonReadAsisChars() (bs []byte) { - z.bufr = z.bufr[:0] -LOOP: - i := z.readn1() - z.bufr = append(z.bufr, i) - if i == '"' || i == '\\' { - return z.bufr - } - goto LOOP +func (z *ioDecReader) jsonReadAsisChars() (bs []byte, tok byte) { + return z.readUntil('"', '\\') } -func (z *ioDecReader) skipWhitespace() (token byte) { -LOOP: - token = z.readn1() - if isWhitespaceChar(token) { - goto LOOP - } +func (z *ioDecReader) jsonReadUntilDblQuote() (bs []byte) { + bs, _ = z.readUntil('"', 0) return } -// func (z *ioDecReader) readUntil(stop byte) []byte { -// z.bufr = z.bufr[:0] -// LOOP: -// token := z.readn1() -// z.bufr = append(z.bufr, token) -// if token == stop { -// return z.bufr[:len(z.bufr)-1] -// } -// goto LOOP -// } +// ---- start/stop recording ---- -func (z *ioDecReader) readUntil(stop byte) []byte { - z.bufr = z.bufr[:0] -LOOP: - token := z.readn1() - if token == stop { - return z.bufr +func (z *ioDecReader) startRecording() { + z.recording = true + // always include last byte read + if z.bufio { + z.recc = z.rc - 1 + } else { + z.buf = append(z.buf[:0], z.l) } - z.bufr = append(z.bufr, token) - goto LOOP } -func (z *ioDecReader) unreadn1() { - err := z.br.UnreadByte() - halt.onerror(err) - z.n-- +func (z *ioDecReader) stopRecording() (v []byte) { + z.recording = false + if z.bufio { + v = z.buf[z.recc:z.rc] + z.recc = 0 + } else { + v = z.buf + z.buf = z.buf[:0] + } + return } // ------------------------------------ @@ -359,11 +674,18 @@ func (z *ioDecReader) unreadn1() { // // see panicValToErr(...) function in helper.go. type bytesDecReader struct { - b []byte // data - c uint // cursor + b []byte // data + c uint // cursor + r uint // recording cursor + xb []byte // buffer for readxb } -func (z *bytesDecReader) reset(in []byte) { +func (z *bytesDecReader) resetIO(r io.Reader, bufsize int, maxInitLen int, blist *bytesFreeList) { + halt.errorStr("resetIO unsupported by bytesDecReader") +} + +func (z *bytesDecReader) resetBytes(in []byte) { + // it's ok to resize a nil slice, so long as it's not past 0 z.b = in[:len(in):len(in)] // reslicing must not go past capacity z.c = 0 } @@ -377,40 +699,25 @@ func (z *bytesDecReader) numread() uint { // However, we do it only once, and it's better than reslicing both z.b and return value. func (z *bytesDecReader) readx(n uint) (bs []byte) { - // x := z.c + n - // bs = z.b[z.c:x] - // z.c = x bs = z.b[z.c : z.c+n] z.c += n return } -func (z *bytesDecReader) readb(bs []byte) { - copy(bs, z.readx(uint(len(bs)))) +func (z *bytesDecReader) skip(n uint) { + if z.c+n > uint(cap(z.b)) { + halt.error(&outOfBoundsError{uint(cap(z.b)), z.c + n}) + } + z.c += n } -// MARKER: do not use this - as it calls into memmove (as the size of data to move is unknown) -// func (z *bytesDecReader) readnn(bs []byte, n uint) { -// x := z.c -// copy(bs, z.b[x:x+n]) -// z.c += n -// } - -// func (z *bytesDecReader) readn(num uint8) (bs [8]byte) { -// x := z.c + uint(num) -// copy(bs[:], z.b[z.c:x]) // slice z.b completely, so we get bounds error if past -// z.c = x -// return -// } - -// func (z *bytesDecReader) readn1() uint8 { -// z.c++ -// return z.b[z.c-1] -// } +func (z *bytesDecReader) readxb(n uint) (out []byte, usingBuf bool) { + return z.readx(n), false +} -// MARKER: readn{1,2,3,4,8} should throw an out of bounds error if past length. -// MARKER: readn1: explicitly ensure bounds check is done -// MARKER: readn{2,3,4,8}: ensure you slice z.b completely so we get bounds error if past end. +func (z *bytesDecReader) readb(bs []byte) { + copy(bs, z.readx(uint(len(bs)))) +} func (z *bytesDecReader) readn1() (v uint8) { v = z.b[z.c] @@ -419,59 +726,58 @@ func (z *bytesDecReader) readn1() (v uint8) { } func (z *bytesDecReader) readn2() (bs [2]byte) { - // copy(bs[:], z.b[z.c:z.c+2]) - // bs[1] = z.b[z.c+1] - // bs[0] = z.b[z.c] - bs = okBytes2(z.b[z.c : z.c+2]) + bs = [2]byte(z.b[z.c:]) z.c += 2 return } func (z *bytesDecReader) readn3() (bs [3]byte) { - // copy(bs[1:], z.b[z.c:z.c+3]) - bs = okBytes3(z.b[z.c : z.c+3]) + bs = [3]byte(z.b[z.c:]) z.c += 3 return } func (z *bytesDecReader) readn4() (bs [4]byte) { - // copy(bs[:], z.b[z.c:z.c+4]) - bs = okBytes4(z.b[z.c : z.c+4]) + bs = [4]byte(z.b[z.c:]) z.c += 4 return } func (z *bytesDecReader) readn8() (bs [8]byte) { - // copy(bs[:], z.b[z.c:z.c+8]) - bs = okBytes8(z.b[z.c : z.c+8]) + bs = [8]byte(z.b[z.c:]) z.c += 8 return } -func (z *bytesDecReader) jsonReadNum() []byte { - z.c-- // unread - i := z.c +func (z *bytesDecReader) jsonReadNum() (bs []byte, token byte) { + start := z.c - 1 // include last byte + i := start LOOP: - // gracefully handle end of slice, as end of stream is meaningful here - if i < uint(len(z.b)) && isNumberChar(z.b[i]) { - i++ - goto LOOP + // gracefully handle end of slice (~= EOF) + if i < uint(len(z.b)) { + if isNumberChar(z.b[i]) { + i++ + goto LOOP + } + token = z.b[i] } - z.c, i = i, z.c - // MARKER: 20230103: byteSliceOf here prevents inlining of jsonReadNum - // return byteSliceOf(z.b, i, z.c) - return z.b[i:z.c] + z.c = i + 1 + bs = z.b[start:i] // byteSliceOf(z.b, start, i) + return } -func (z *bytesDecReader) jsonReadAsisChars() []byte { +func (z *bytesDecReader) jsonReadAsisChars() (bs []byte, token byte) { i := z.c LOOP: - token := z.b[i] + token = z.b[i] i++ if token == '"' || token == '\\' { - z.c, i = i, z.c - return byteSliceOf(z.b, i, z.c) - // return z.b[i:z.c] + // z.c, i = i, z.c + // return byteSliceOf(z.b, i, z.c-1), token + bs = z.b[z.c : i-1] + z.c = i + return + // return z.b[i : z.c-1], token } goto LOOP } @@ -479,21 +785,22 @@ LOOP: func (z *bytesDecReader) skipWhitespace() (token byte) { i := z.c LOOP: + // setting token before check reduces inlining cost, + // making containerNext inlineable token = z.b[i] - if isWhitespaceChar(token) { - i++ - goto LOOP + if !isWhitespaceChar(token) { + z.c = i + 1 + return } - z.c = i + 1 - return + i++ + goto LOOP } -func (z *bytesDecReader) readUntil(stop byte) (out []byte) { +func (z *bytesDecReader) jsonReadUntilDblQuote() (out []byte) { i := z.c LOOP: - if z.b[i] == stop { - out = byteSliceOf(z.b, z.c, i) - // out = z.b[z.c:i] + if z.b[i] == '"' { + out = z.b[z.c:i] // byteSliceOf(z.b, z.c, i) z.c = i + 1 return } @@ -501,107 +808,23 @@ LOOP: goto LOOP } -// -------------- - -type decRd struct { - rb bytesDecReader - ri *ioDecReader - - decReader - - bytes bool // is bytes reader - - // MARKER: these fields below should belong directly in Encoder. - // we pack them here for space efficiency and cache-line optimization. - - mtr bool // is maptype a known type? - str bool // is slicetype a known type? - - be bool // is binary encoding - js bool // is json handle - jsms bool // is json handle, and MapKeyAsString - cbor bool // is cbor handle - - cbreak bool // is a check breaker - +func (z *bytesDecReader) startRecording() { + z.r = z.c - 1 } -// From out benchmarking, we see the following impact performance: -// -// - functions that are too big to inline -// - interface calls (as no inlining can occur) -// -// decRd is designed to embed a decReader, and then re-implement some of the decReader -// methods using a conditional branch. -// -// We only override the ones where the bytes version is inlined AND the wrapper method -// (containing the bytes version alongside a conditional branch) is also inlined. -// -// We use ./run.sh -z to check. -// -// Right now, only numread and "carefully crafted" readn1 can be inlined. - -func (z *decRd) numread() uint { - if z.bytes { - return z.rb.numread() - } - return z.ri.numread() -} - -func (z *decRd) readn1() (v uint8) { - if z.bytes { - // return z.rb.readn1() - // MARKER: calling z.rb.readn1() prevents decRd.readn1 from being inlined. - // copy code, to manually inline and explicitly return here. - // Keep in sync with bytesDecReader.readn1 - v = z.rb.b[z.rb.c] - z.rb.c++ - return - } - return z.ri.readn1() +func (z *bytesDecReader) stopRecording() (v []byte) { + v = z.b[z.r:z.c] + z.r = 0 + return } -// func (z *decRd) readn4() [4]byte { -// if z.bytes { -// return z.rb.readn4() -// } -// return z.ri.readn4() -// } - -// func (z *decRd) readn3() [3]byte { -// if z.bytes { -// return z.rb.readn3() -// } -// return z.ri.readn3() -// } - -// func (z *decRd) skipWhitespace() byte { -// if z.bytes { -// return z.rb.skipWhitespace() -// } -// return z.ri.skipWhitespace() -// } - type devNullReader struct{} func (devNullReader) Read(p []byte) (int, error) { return 0, io.EOF } func (devNullReader) Close() error { return nil } +func (devNullReader) ReadByte() (byte, error) { return 0, io.EOF } +func (devNullReader) UnreadByte() error { return io.EOF } -func readFull(r io.Reader, bs []byte) (n uint, err error) { - var nn int - for n < uint(len(bs)) && err == nil { - nn, err = r.Read(bs[n:]) - if nn > 0 { - if err == io.EOF { - // leave EOF for next time - err = nil - } - n += uint(nn) - } - } - // do not do this below - it serves no purpose - // if n != len(bs) && err == io.EOF { err = io.ErrUnexpectedEOF } - return -} - -var _ decReader = (*decRd)(nil) +// MARKER: readn{1,2,3,4,8} should throw an out of bounds error if past length. +// MARKER: readn1: explicitly ensure bounds check is done +// MARKER: readn{2,3,4,8}: ensure you slice z.b completely so we get bounds error if past end. diff --git a/vendor/github.com/ugorji/go/codec/register_ext.go b/vendor/github.com/ugorji/go/codec/register_ext.go deleted file mode 100644 index 65e455377..000000000 --- a/vendor/github.com/ugorji/go/codec/register_ext.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -package codec - -import "reflect" - -// This file exists, so that the files for specific formats do not all import reflect. -// This just helps us ensure that reflect package is isolated to a few files. - -// SetInterfaceExt sets an extension -func (h *JsonHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { - return h.SetExt(rt, tag, makeExt(ext)) -} - -// SetInterfaceExt sets an extension -func (h *CborHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { - return h.SetExt(rt, tag, makeExt(ext)) -} - -// SetBytesExt sets an extension -func (h *MsgpackHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { - return h.SetExt(rt, tag, makeExt(ext)) -} - -// SetBytesExt sets an extension -func (h *SimpleHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { - return h.SetExt(rt, tag, makeExt(ext)) -} - -// SetBytesExt sets an extension -func (h *BincHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { - return h.SetExt(rt, tag, makeExt(ext)) -} - -// func (h *XMLHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { -// return h.SetExt(rt, tag, &interfaceExtWrapper{InterfaceExt: ext}) -// } diff --git a/vendor/github.com/ugorji/go/codec/rpc.go b/vendor/github.com/ugorji/go/codec/rpc.go index 0da8ad577..bdc535b6d 100644 --- a/vendor/github.com/ugorji/go/codec/rpc.go +++ b/vendor/github.com/ugorji/go/codec/rpc.go @@ -4,10 +4,11 @@ package codec import ( - "bufio" "errors" "io" + "net" "net/rpc" + "sync/atomic" ) var ( @@ -28,57 +29,44 @@ type RPCOptions struct { // RPCNoBuffer configures whether we attempt to buffer reads and writes during RPC calls. // // Set RPCNoBuffer=true to turn buffering off. + // // Buffering can still be done if buffered connections are passed in, or // buffering is configured on the handle. + // + // Deprecated: Buffering should be configured at the Handle or by using a buffer Reader. + // Setting this has no effect anymore (after v1.2.12 - authored 2025-05-06) RPCNoBuffer bool } // rpcCodec defines the struct members and common methods. type rpcCodec struct { - c io.Closer - r io.Reader - w io.Writer - f ioFlusher - + c io.Closer + r io.Reader + w io.Writer + f ioFlusher + nc net.Conn dec *Decoder enc *Encoder h Handle - cls atomicClsErr + cls atomic.Pointer[clsErr] } -func newRPCCodec(conn io.ReadWriteCloser, h Handle) rpcCodec { - return newRPCCodec2(conn, conn, conn, h) -} - -func newRPCCodec2(r io.Reader, w io.Writer, c io.Closer, h Handle) rpcCodec { - bh := h.getBasicHandle() - // if the writer can flush, ensure we leverage it, else - // we may hang waiting on read if write isn't flushed. - // var f ioFlusher - f, ok := w.(ioFlusher) - if !bh.RPCNoBuffer { - if bh.WriterBufferSize <= 0 { - if !ok { // a flusher means there's already a buffer - bw := bufio.NewWriter(w) - f, w = bw, bw - } - } - if bh.ReaderBufferSize <= 0 { - if _, ok = w.(ioBuffered); !ok { - r = bufio.NewReader(r) - } - } - } - return rpcCodec{ - c: c, - w: w, - r: r, - f: f, +func newRPCCodec(conn io.ReadWriteCloser, h Handle) *rpcCodec { + nc, _ := conn.(net.Conn) + f, _ := conn.(ioFlusher) + rc := &rpcCodec{ h: h, - enc: NewEncoder(w, h), - dec: NewDecoder(r, h), + c: conn, + w: conn, + r: conn, + f: f, + nc: nc, + enc: NewEncoder(conn, h), + dec: NewDecoder(conn, h), } + rc.cls.Store(new(clsErr)) + return rc } func (c *rpcCodec) write(obj ...interface{}) (err error) { @@ -116,10 +104,16 @@ func (c *rpcCodec) write(obj ...interface{}) (err error) { func (c *rpcCodec) read(obj interface{}) (err error) { err = c.ready() if err == nil { - //If nil is passed in, we should read and discard + // Setting ReadDeadline should not be necessary, + // especially since it only works for net.Conn (not generic ioReadCloser). + // if c.nc != nil { + // c.nc.SetReadDeadline(time.Now().Add(1 * time.Second)) + // } + + // Note: If nil is passed in, we should read and discard if obj == nil { // return c.dec.Decode(&obj) - err = c.dec.swallowErr() + err = panicToErr(c.dec, func() { c.dec.swallow() }) } else { err = c.dec.Decode(obj) } @@ -129,11 +123,11 @@ func (c *rpcCodec) read(obj interface{}) (err error) { func (c *rpcCodec) Close() (err error) { if c.c != nil { - cls := c.cls.load() + cls := c.cls.Load() if !cls.closed { - cls.err = c.c.Close() - cls.closed = true - c.cls.store(cls) + // writing to same pointer could lead to a data race (always make new one) + cls = &clsErr{closed: true, err: c.c.Close()} + c.cls.Store(cls) } err = cls.err } @@ -144,8 +138,8 @@ func (c *rpcCodec) ready() (err error) { if c.c == nil { err = errRpcNoConn } else { - cls := c.cls.load() - if cls.closed { + cls := c.cls.Load() + if cls != nil && cls.closed { if err = cls.err; err == nil { err = errRpcIsClosed } @@ -161,7 +155,7 @@ func (c *rpcCodec) ReadResponseBody(body interface{}) error { // ------------------------------------- type goRpcCodec struct { - rpcCodec + *rpcCodec } func (c *goRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error { diff --git a/vendor/github.com/ugorji/go/codec/simple.base.go b/vendor/github.com/ugorji/go/codec/simple.base.go new file mode 100644 index 000000000..2522282cf --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/simple.base.go @@ -0,0 +1,97 @@ +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +const ( + _ uint8 = iota + simpleVdNil = 1 + simpleVdFalse = 2 + simpleVdTrue = 3 + simpleVdFloat32 = 4 + simpleVdFloat64 = 5 + + // each lasts for 4 (ie n, n+1, n+2, n+3) + simpleVdPosInt = 8 + simpleVdNegInt = 12 + + simpleVdTime = 24 + + // containers: each lasts for 8 (ie n, n+1, n+2, ... n+7) + simpleVdString = 216 + simpleVdByteArray = 224 + simpleVdArray = 232 + simpleVdMap = 240 + simpleVdExt = 248 +) + +var simpledescNames = map[byte]string{ + simpleVdNil: "null", + simpleVdFalse: "false", + simpleVdTrue: "true", + simpleVdFloat32: "float32", + simpleVdFloat64: "float64", + + simpleVdPosInt: "+int", + simpleVdNegInt: "-int", + + simpleVdTime: "time", + + simpleVdString: "string", + simpleVdByteArray: "binary", + simpleVdArray: "array", + simpleVdMap: "map", + simpleVdExt: "ext", +} + +func simpledesc(bd byte) (s string) { + s = simpledescNames[bd] + if s == "" { + s = "unknown" + } + return +} + +//------------------------------------ + +// SimpleHandle is a Handle for a very simple encoding format. +// +// simple is a simplistic codec similar to binc, but not as compact. +// - Encoding of a value is always preceded by the descriptor byte (bd) +// - True, false, nil are encoded fully in 1 byte (the descriptor) +// - Integers (intXXX, uintXXX) are encoded in 1, 2, 4 or 8 bytes (plus a descriptor byte). +// There are positive (uintXXX and intXXX >= 0) and negative (intXXX < 0) integers. +// - Floats are encoded in 4 or 8 bytes (plus a descriptor byte) +// - Length of containers (strings, bytes, array, map, extensions) +// are encoded in 0, 1, 2, 4 or 8 bytes. +// Zero-length containers have no length encoded. +// For others, the number of bytes is given by pow(2, bd%3) +// - maps are encoded as [bd] [length] [[key][value]]... +// - arrays are encoded as [bd] [length] [value]... +// - extensions are encoded as [bd] [length] [tag] [byte]... +// - strings/bytearrays are encoded as [bd] [length] [byte]... +// - time.Time are encoded as [bd] [length] [byte]... +// +// The full spec will be published soon. +type SimpleHandle struct { + binaryEncodingType + notJsonType + BasicHandle + + // EncZeroValuesAsNil says to encode zero values for numbers, bool, string, etc as nil + EncZeroValuesAsNil bool +} + +// Name returns the name of the handle: simple +func (h *SimpleHandle) Name() string { return "simple" } + +func (h *SimpleHandle) desc(bd byte) string { return simpledesc(bd) } + +// SetBytesExt sets an extension +func (h *SimpleHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, makeExt(ext)) +} diff --git a/vendor/github.com/ugorji/go/codec/simple.fastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/simple.fastpath.mono.generated.go new file mode 100644 index 000000000..329c4bfe5 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/simple.fastpath.mono.generated.go @@ -0,0 +1,12482 @@ +//go:build !notmono && !codec.notmono && !notfastpath && !codec.notfastpath + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" + "slices" + "sort" +) + +type fastpathESimpleBytes struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderSimpleBytes, *encFnInfo, reflect.Value) +} +type fastpathDSimpleBytes struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderSimpleBytes, *decFnInfo, reflect.Value) +} +type fastpathEsSimpleBytes [56]fastpathESimpleBytes +type fastpathDsSimpleBytes [56]fastpathDSimpleBytes +type fastpathETSimpleBytes struct{} +type fastpathDTSimpleBytes struct{} + +func (helperEncDriverSimpleBytes) fastpathEList() *fastpathEsSimpleBytes { + var i uint = 0 + var s fastpathEsSimpleBytes + fn := func(v interface{}, fe func(*encoderSimpleBytes, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathESimpleBytes{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderSimpleBytes).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderSimpleBytes).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderSimpleBytes).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderSimpleBytes).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderSimpleBytes).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderSimpleBytes).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderSimpleBytes).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderSimpleBytes).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderSimpleBytes).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderSimpleBytes).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderSimpleBytes).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderSimpleBytes).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderSimpleBytes).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderSimpleBytes).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderSimpleBytes).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderSimpleBytes).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderSimpleBytes).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderSimpleBytes).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderSimpleBytes).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderSimpleBytes).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderSimpleBytes).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderSimpleBytes).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderSimpleBytes).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderSimpleBytes).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderSimpleBytes).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderSimpleBytes).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderSimpleBytes).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderSimpleBytes).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderSimpleBytes).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderSimpleBytes).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderSimpleBytes).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderSimpleBytes).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderSimpleBytes).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderSimpleBytes).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderSimpleBytes).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderSimpleBytes).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderSimpleBytes).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderSimpleBytes).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderSimpleBytes).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderSimpleBytes).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderSimpleBytes).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderSimpleBytes).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderSimpleBytes).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderSimpleBytes).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderSimpleBytes).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderSimpleBytes).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderSimpleBytes).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderSimpleBytes).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderSimpleBytes).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderSimpleBytes).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderSimpleBytes).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderSimpleBytes).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderSimpleBytes).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderSimpleBytes).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderSimpleBytes).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderSimpleBytes).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverSimpleBytes) fastpathDList() *fastpathDsSimpleBytes { + var i uint = 0 + var s fastpathDsSimpleBytes + fn := func(v interface{}, fd func(*decoderSimpleBytes, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDSimpleBytes{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderSimpleBytes).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderSimpleBytes).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderSimpleBytes).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderSimpleBytes).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderSimpleBytes).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderSimpleBytes).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderSimpleBytes).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderSimpleBytes).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderSimpleBytes).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderSimpleBytes).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderSimpleBytes).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderSimpleBytes).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderSimpleBytes).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderSimpleBytes).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderSimpleBytes).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderSimpleBytes).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderSimpleBytes).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderSimpleBytes).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderSimpleBytes).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderSimpleBytes).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderSimpleBytes).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderSimpleBytes).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderSimpleBytes).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderSimpleBytes).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderSimpleBytes).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderSimpleBytes).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderSimpleBytes).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderSimpleBytes).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderSimpleBytes).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderSimpleBytes).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderSimpleBytes).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderSimpleBytes).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderSimpleBytes).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderSimpleBytes).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderSimpleBytes).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderSimpleBytes).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderSimpleBytes).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderSimpleBytes).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderSimpleBytes).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderSimpleBytes).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderSimpleBytes).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderSimpleBytes).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderSimpleBytes).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderSimpleBytes).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderSimpleBytes).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderSimpleBytes).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderSimpleBytes).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderSimpleBytes).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderSimpleBytes).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderSimpleBytes).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderSimpleBytes).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderSimpleBytes).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderSimpleBytes).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderSimpleBytes).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderSimpleBytes).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderSimpleBytes).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverSimpleBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderSimpleBytes) bool { + var ft fastpathETSimpleBytes + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderSimpleBytes) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETSimpleBytes) EncSliceIntfV(v []interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceIntfV(v []interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETSimpleBytes) EncSliceStringV(v []string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceStringV(v []string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETSimpleBytes) EncSliceBytesV(v [][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceBytesV(v [][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETSimpleBytes) EncSliceFloat32V(v []float32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceFloat32V(v []float32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETSimpleBytes) EncSliceFloat64V(v []float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceFloat64V(v []float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETSimpleBytes) EncSliceUint8V(v []uint8, e *encoderSimpleBytes) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETSimpleBytes) EncAsMapSliceUint8V(v []uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETSimpleBytes) EncSliceUint64V(v []uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceUint64V(v []uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETSimpleBytes) EncSliceIntV(v []int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceIntV(v []int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETSimpleBytes) EncSliceInt32V(v []int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceInt32V(v []int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETSimpleBytes) EncSliceInt64V(v []int64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceInt64V(v []int64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleBytes + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETSimpleBytes) EncSliceBoolV(v []bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleBytes) EncAsMapSliceBoolV(v []bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETSimpleBytes) EncMapStringIntfV(v map[string]interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETSimpleBytes) EncMapStringStringV(v map[string]string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETSimpleBytes) EncMapStringBytesV(v map[string][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETSimpleBytes) EncMapStringUint8V(v map[string]uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETSimpleBytes) EncMapStringUint64V(v map[string]uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETSimpleBytes) EncMapStringIntV(v map[string]int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETSimpleBytes) EncMapStringInt32V(v map[string]int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETSimpleBytes) EncMapStringFloat64V(v map[string]float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETSimpleBytes) EncMapStringBoolV(v map[string]bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETSimpleBytes) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETSimpleBytes) EncMapUint8StringV(v map[uint8]string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETSimpleBytes) EncMapUint8BytesV(v map[uint8][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETSimpleBytes) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETSimpleBytes) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETSimpleBytes) EncMapUint8IntV(v map[uint8]int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETSimpleBytes) EncMapUint8Int32V(v map[uint8]int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETSimpleBytes) EncMapUint8Float64V(v map[uint8]float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETSimpleBytes) EncMapUint8BoolV(v map[uint8]bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETSimpleBytes) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETSimpleBytes) EncMapUint64StringV(v map[uint64]string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETSimpleBytes) EncMapUint64BytesV(v map[uint64][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETSimpleBytes) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETSimpleBytes) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETSimpleBytes) EncMapUint64IntV(v map[uint64]int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETSimpleBytes) EncMapUint64Int32V(v map[uint64]int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETSimpleBytes) EncMapUint64Float64V(v map[uint64]float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETSimpleBytes) EncMapUint64BoolV(v map[uint64]bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETSimpleBytes) EncMapIntIntfV(v map[int]interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETSimpleBytes) EncMapIntStringV(v map[int]string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETSimpleBytes) EncMapIntBytesV(v map[int][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETSimpleBytes) EncMapIntUint8V(v map[int]uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETSimpleBytes) EncMapIntUint64V(v map[int]uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETSimpleBytes) EncMapIntIntV(v map[int]int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETSimpleBytes) EncMapIntInt32V(v map[int]int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETSimpleBytes) EncMapIntFloat64V(v map[int]float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETSimpleBytes) EncMapIntBoolV(v map[int]bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETSimpleBytes) EncMapInt32IntfV(v map[int32]interface{}, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETSimpleBytes) EncMapInt32StringV(v map[int32]string, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETSimpleBytes) EncMapInt32BytesV(v map[int32][]byte, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETSimpleBytes) EncMapInt32Uint8V(v map[int32]uint8, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETSimpleBytes) EncMapInt32Uint64V(v map[int32]uint64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETSimpleBytes) EncMapInt32IntV(v map[int32]int, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETSimpleBytes) EncMapInt32Int32V(v map[int32]int32, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETSimpleBytes) EncMapInt32Float64V(v map[int32]float64, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleBytes) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleBytes{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETSimpleBytes) EncMapInt32BoolV(v map[int32]bool, e *encoderSimpleBytes) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverSimpleBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderSimpleBytes) bool { + var ft fastpathDTSimpleBytes + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderSimpleBytes) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTSimpleBytes) DecSliceIntfY(v []interface{}, d *decoderSimpleBytes) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceIntfN(v []interface{}, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTSimpleBytes) DecSliceStringY(v []string, d *decoderSimpleBytes) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceStringN(v []string, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTSimpleBytes) DecSliceBytesY(v [][]byte, d *decoderSimpleBytes) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceBytesN(v [][]byte, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTSimpleBytes) DecSliceFloat32Y(v []float32, d *decoderSimpleBytes) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceFloat32N(v []float32, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTSimpleBytes) DecSliceFloat64Y(v []float64, d *decoderSimpleBytes) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceFloat64N(v []float64, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTSimpleBytes) DecSliceUint8Y(v []uint8, d *decoderSimpleBytes) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceUint8N(v []uint8, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderSimpleBytes) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTSimpleBytes) DecSliceUint64Y(v []uint64, d *decoderSimpleBytes) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceUint64N(v []uint64, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTSimpleBytes) DecSliceIntY(v []int, d *decoderSimpleBytes) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceIntN(v []int, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTSimpleBytes) DecSliceInt32Y(v []int32, d *decoderSimpleBytes) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceInt32N(v []int32, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTSimpleBytes) DecSliceInt64Y(v []int64, d *decoderSimpleBytes) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceInt64N(v []int64, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTSimpleBytes) DecSliceBoolY(v []bool, d *decoderSimpleBytes) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleBytes) DecSliceBoolN(v []bool, d *decoderSimpleBytes) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringStringL(v map[string]string, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringIntL(v map[string]int, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntStringL(v map[int]string, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntIntL(v map[int]int, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleBytes) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleBytes + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleBytes) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderSimpleBytes) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} + +type fastpathESimpleIO struct { + rtid uintptr + rt reflect.Type + encfn func(*encoderSimpleIO, *encFnInfo, reflect.Value) +} +type fastpathDSimpleIO struct { + rtid uintptr + rt reflect.Type + decfn func(*decoderSimpleIO, *decFnInfo, reflect.Value) +} +type fastpathEsSimpleIO [56]fastpathESimpleIO +type fastpathDsSimpleIO [56]fastpathDSimpleIO +type fastpathETSimpleIO struct{} +type fastpathDTSimpleIO struct{} + +func (helperEncDriverSimpleIO) fastpathEList() *fastpathEsSimpleIO { + var i uint = 0 + var s fastpathEsSimpleIO + fn := func(v interface{}, fe func(*encoderSimpleIO, *encFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathESimpleIO{rt2id(xrt), xrt, fe} + i++ + } + + fn([]interface{}(nil), (*encoderSimpleIO).fastpathEncSliceIntfR) + fn([]string(nil), (*encoderSimpleIO).fastpathEncSliceStringR) + fn([][]byte(nil), (*encoderSimpleIO).fastpathEncSliceBytesR) + fn([]float32(nil), (*encoderSimpleIO).fastpathEncSliceFloat32R) + fn([]float64(nil), (*encoderSimpleIO).fastpathEncSliceFloat64R) + fn([]uint8(nil), (*encoderSimpleIO).fastpathEncSliceUint8R) + fn([]uint64(nil), (*encoderSimpleIO).fastpathEncSliceUint64R) + fn([]int(nil), (*encoderSimpleIO).fastpathEncSliceIntR) + fn([]int32(nil), (*encoderSimpleIO).fastpathEncSliceInt32R) + fn([]int64(nil), (*encoderSimpleIO).fastpathEncSliceInt64R) + fn([]bool(nil), (*encoderSimpleIO).fastpathEncSliceBoolR) + + fn(map[string]interface{}(nil), (*encoderSimpleIO).fastpathEncMapStringIntfR) + fn(map[string]string(nil), (*encoderSimpleIO).fastpathEncMapStringStringR) + fn(map[string][]byte(nil), (*encoderSimpleIO).fastpathEncMapStringBytesR) + fn(map[string]uint8(nil), (*encoderSimpleIO).fastpathEncMapStringUint8R) + fn(map[string]uint64(nil), (*encoderSimpleIO).fastpathEncMapStringUint64R) + fn(map[string]int(nil), (*encoderSimpleIO).fastpathEncMapStringIntR) + fn(map[string]int32(nil), (*encoderSimpleIO).fastpathEncMapStringInt32R) + fn(map[string]float64(nil), (*encoderSimpleIO).fastpathEncMapStringFloat64R) + fn(map[string]bool(nil), (*encoderSimpleIO).fastpathEncMapStringBoolR) + fn(map[uint8]interface{}(nil), (*encoderSimpleIO).fastpathEncMapUint8IntfR) + fn(map[uint8]string(nil), (*encoderSimpleIO).fastpathEncMapUint8StringR) + fn(map[uint8][]byte(nil), (*encoderSimpleIO).fastpathEncMapUint8BytesR) + fn(map[uint8]uint8(nil), (*encoderSimpleIO).fastpathEncMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*encoderSimpleIO).fastpathEncMapUint8Uint64R) + fn(map[uint8]int(nil), (*encoderSimpleIO).fastpathEncMapUint8IntR) + fn(map[uint8]int32(nil), (*encoderSimpleIO).fastpathEncMapUint8Int32R) + fn(map[uint8]float64(nil), (*encoderSimpleIO).fastpathEncMapUint8Float64R) + fn(map[uint8]bool(nil), (*encoderSimpleIO).fastpathEncMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*encoderSimpleIO).fastpathEncMapUint64IntfR) + fn(map[uint64]string(nil), (*encoderSimpleIO).fastpathEncMapUint64StringR) + fn(map[uint64][]byte(nil), (*encoderSimpleIO).fastpathEncMapUint64BytesR) + fn(map[uint64]uint8(nil), (*encoderSimpleIO).fastpathEncMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*encoderSimpleIO).fastpathEncMapUint64Uint64R) + fn(map[uint64]int(nil), (*encoderSimpleIO).fastpathEncMapUint64IntR) + fn(map[uint64]int32(nil), (*encoderSimpleIO).fastpathEncMapUint64Int32R) + fn(map[uint64]float64(nil), (*encoderSimpleIO).fastpathEncMapUint64Float64R) + fn(map[uint64]bool(nil), (*encoderSimpleIO).fastpathEncMapUint64BoolR) + fn(map[int]interface{}(nil), (*encoderSimpleIO).fastpathEncMapIntIntfR) + fn(map[int]string(nil), (*encoderSimpleIO).fastpathEncMapIntStringR) + fn(map[int][]byte(nil), (*encoderSimpleIO).fastpathEncMapIntBytesR) + fn(map[int]uint8(nil), (*encoderSimpleIO).fastpathEncMapIntUint8R) + fn(map[int]uint64(nil), (*encoderSimpleIO).fastpathEncMapIntUint64R) + fn(map[int]int(nil), (*encoderSimpleIO).fastpathEncMapIntIntR) + fn(map[int]int32(nil), (*encoderSimpleIO).fastpathEncMapIntInt32R) + fn(map[int]float64(nil), (*encoderSimpleIO).fastpathEncMapIntFloat64R) + fn(map[int]bool(nil), (*encoderSimpleIO).fastpathEncMapIntBoolR) + fn(map[int32]interface{}(nil), (*encoderSimpleIO).fastpathEncMapInt32IntfR) + fn(map[int32]string(nil), (*encoderSimpleIO).fastpathEncMapInt32StringR) + fn(map[int32][]byte(nil), (*encoderSimpleIO).fastpathEncMapInt32BytesR) + fn(map[int32]uint8(nil), (*encoderSimpleIO).fastpathEncMapInt32Uint8R) + fn(map[int32]uint64(nil), (*encoderSimpleIO).fastpathEncMapInt32Uint64R) + fn(map[int32]int(nil), (*encoderSimpleIO).fastpathEncMapInt32IntR) + fn(map[int32]int32(nil), (*encoderSimpleIO).fastpathEncMapInt32Int32R) + fn(map[int32]float64(nil), (*encoderSimpleIO).fastpathEncMapInt32Float64R) + fn(map[int32]bool(nil), (*encoderSimpleIO).fastpathEncMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperDecDriverSimpleIO) fastpathDList() *fastpathDsSimpleIO { + var i uint = 0 + var s fastpathDsSimpleIO + fn := func(v interface{}, fd func(*decoderSimpleIO, *decFnInfo, reflect.Value)) { + xrt := reflect.TypeOf(v) + s[i] = fastpathDSimpleIO{rt2id(xrt), xrt, fd} + i++ + } + + fn([]interface{}(nil), (*decoderSimpleIO).fastpathDecSliceIntfR) + fn([]string(nil), (*decoderSimpleIO).fastpathDecSliceStringR) + fn([][]byte(nil), (*decoderSimpleIO).fastpathDecSliceBytesR) + fn([]float32(nil), (*decoderSimpleIO).fastpathDecSliceFloat32R) + fn([]float64(nil), (*decoderSimpleIO).fastpathDecSliceFloat64R) + fn([]uint8(nil), (*decoderSimpleIO).fastpathDecSliceUint8R) + fn([]uint64(nil), (*decoderSimpleIO).fastpathDecSliceUint64R) + fn([]int(nil), (*decoderSimpleIO).fastpathDecSliceIntR) + fn([]int32(nil), (*decoderSimpleIO).fastpathDecSliceInt32R) + fn([]int64(nil), (*decoderSimpleIO).fastpathDecSliceInt64R) + fn([]bool(nil), (*decoderSimpleIO).fastpathDecSliceBoolR) + + fn(map[string]interface{}(nil), (*decoderSimpleIO).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*decoderSimpleIO).fastpathDecMapStringStringR) + fn(map[string][]byte(nil), (*decoderSimpleIO).fastpathDecMapStringBytesR) + fn(map[string]uint8(nil), (*decoderSimpleIO).fastpathDecMapStringUint8R) + fn(map[string]uint64(nil), (*decoderSimpleIO).fastpathDecMapStringUint64R) + fn(map[string]int(nil), (*decoderSimpleIO).fastpathDecMapStringIntR) + fn(map[string]int32(nil), (*decoderSimpleIO).fastpathDecMapStringInt32R) + fn(map[string]float64(nil), (*decoderSimpleIO).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*decoderSimpleIO).fastpathDecMapStringBoolR) + fn(map[uint8]interface{}(nil), (*decoderSimpleIO).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*decoderSimpleIO).fastpathDecMapUint8StringR) + fn(map[uint8][]byte(nil), (*decoderSimpleIO).fastpathDecMapUint8BytesR) + fn(map[uint8]uint8(nil), (*decoderSimpleIO).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint64(nil), (*decoderSimpleIO).fastpathDecMapUint8Uint64R) + fn(map[uint8]int(nil), (*decoderSimpleIO).fastpathDecMapUint8IntR) + fn(map[uint8]int32(nil), (*decoderSimpleIO).fastpathDecMapUint8Int32R) + fn(map[uint8]float64(nil), (*decoderSimpleIO).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*decoderSimpleIO).fastpathDecMapUint8BoolR) + fn(map[uint64]interface{}(nil), (*decoderSimpleIO).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*decoderSimpleIO).fastpathDecMapUint64StringR) + fn(map[uint64][]byte(nil), (*decoderSimpleIO).fastpathDecMapUint64BytesR) + fn(map[uint64]uint8(nil), (*decoderSimpleIO).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint64(nil), (*decoderSimpleIO).fastpathDecMapUint64Uint64R) + fn(map[uint64]int(nil), (*decoderSimpleIO).fastpathDecMapUint64IntR) + fn(map[uint64]int32(nil), (*decoderSimpleIO).fastpathDecMapUint64Int32R) + fn(map[uint64]float64(nil), (*decoderSimpleIO).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*decoderSimpleIO).fastpathDecMapUint64BoolR) + fn(map[int]interface{}(nil), (*decoderSimpleIO).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*decoderSimpleIO).fastpathDecMapIntStringR) + fn(map[int][]byte(nil), (*decoderSimpleIO).fastpathDecMapIntBytesR) + fn(map[int]uint8(nil), (*decoderSimpleIO).fastpathDecMapIntUint8R) + fn(map[int]uint64(nil), (*decoderSimpleIO).fastpathDecMapIntUint64R) + fn(map[int]int(nil), (*decoderSimpleIO).fastpathDecMapIntIntR) + fn(map[int]int32(nil), (*decoderSimpleIO).fastpathDecMapIntInt32R) + fn(map[int]float64(nil), (*decoderSimpleIO).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*decoderSimpleIO).fastpathDecMapIntBoolR) + fn(map[int32]interface{}(nil), (*decoderSimpleIO).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*decoderSimpleIO).fastpathDecMapInt32StringR) + fn(map[int32][]byte(nil), (*decoderSimpleIO).fastpathDecMapInt32BytesR) + fn(map[int32]uint8(nil), (*decoderSimpleIO).fastpathDecMapInt32Uint8R) + fn(map[int32]uint64(nil), (*decoderSimpleIO).fastpathDecMapInt32Uint64R) + fn(map[int32]int(nil), (*decoderSimpleIO).fastpathDecMapInt32IntR) + fn(map[int32]int32(nil), (*decoderSimpleIO).fastpathDecMapInt32Int32R) + fn(map[int32]float64(nil), (*decoderSimpleIO).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*decoderSimpleIO).fastpathDecMapInt32BoolR) + + sort.Slice(s[:], func(i, j int) bool { return s[i].rtid < s[j].rtid }) + return &s +} + +func (helperEncDriverSimpleIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderSimpleIO) bool { + var ft fastpathETSimpleIO + switch v := iv.(type) { + case []interface{}: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntfV(v, e) + } + case []string: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceStringV(v, e) + } + case [][]byte: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBytesV(v, e) + } + case []float32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat32V(v, e) + } + case []float64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceFloat64V(v, e) + } + case []uint8: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint8V(v, e) + } + case []uint64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceUint64V(v, e) + } + case []int: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceIntV(v, e) + } + case []int32: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt32V(v, e) + } + case []int64: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceInt64V(v, e) + } + case []bool: + if v == nil { + e.e.writeNilArray() + } else { + ft.EncSliceBoolV(v, e) + } + case map[string]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntfV(v, e) + } + case map[string]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringStringV(v, e) + } + case map[string][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBytesV(v, e) + } + case map[string]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint8V(v, e) + } + case map[string]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringUint64V(v, e) + } + case map[string]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringIntV(v, e) + } + case map[string]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringInt32V(v, e) + } + case map[string]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringFloat64V(v, e) + } + case map[string]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapStringBoolV(v, e) + } + case map[uint8]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntfV(v, e) + } + case map[uint8]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8StringV(v, e) + } + case map[uint8][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BytesV(v, e) + } + case map[uint8]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint8V(v, e) + } + case map[uint8]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Uint64V(v, e) + } + case map[uint8]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8IntV(v, e) + } + case map[uint8]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Int32V(v, e) + } + case map[uint8]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8Float64V(v, e) + } + case map[uint8]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint8BoolV(v, e) + } + case map[uint64]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntfV(v, e) + } + case map[uint64]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64StringV(v, e) + } + case map[uint64][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BytesV(v, e) + } + case map[uint64]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint8V(v, e) + } + case map[uint64]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Uint64V(v, e) + } + case map[uint64]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64IntV(v, e) + } + case map[uint64]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Int32V(v, e) + } + case map[uint64]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64Float64V(v, e) + } + case map[uint64]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapUint64BoolV(v, e) + } + case map[int]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntfV(v, e) + } + case map[int]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntStringV(v, e) + } + case map[int][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBytesV(v, e) + } + case map[int]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint8V(v, e) + } + case map[int]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntUint64V(v, e) + } + case map[int]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntIntV(v, e) + } + case map[int]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntInt32V(v, e) + } + case map[int]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntFloat64V(v, e) + } + case map[int]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapIntBoolV(v, e) + } + case map[int32]interface{}: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntfV(v, e) + } + case map[int32]string: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32StringV(v, e) + } + case map[int32][]byte: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BytesV(v, e) + } + case map[int32]uint8: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint8V(v, e) + } + case map[int32]uint64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Uint64V(v, e) + } + case map[int32]int: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32IntV(v, e) + } + case map[int32]int32: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Int32V(v, e) + } + case map[int32]float64: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32Float64V(v, e) + } + case map[int32]bool: + if v == nil { + e.e.writeNilMap() + } else { + ft.EncMapInt32BoolV(v, e) + } + default: + _ = v + return false + } + return true +} + +func (e *encoderSimpleIO) fastpathEncSliceIntfR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []interface{} + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]interface{}) + } + if f.ti.mbs { + ft.EncAsMapSliceIntfV(v, e) + return + } + ft.EncSliceIntfV(v, e) +} +func (fastpathETSimpleIO) EncSliceIntfV(v []interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceIntfV(v []interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + if !e.encodeBuiltin(v[j]) { + e.encodeR(reflect.ValueOf(v[j])) + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceStringR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []string + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]string) + } + if f.ti.mbs { + ft.EncAsMapSliceStringV(v, e) + return + } + ft.EncSliceStringV(v, e) +} +func (fastpathETSimpleIO) EncSliceStringV(v []string, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceStringV(v []string, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeString(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceBytesR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v [][]byte + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([][]byte) + } + if f.ti.mbs { + ft.EncAsMapSliceBytesV(v, e) + return + } + ft.EncSliceBytesV(v, e) +} +func (fastpathETSimpleIO) EncSliceBytesV(v [][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceBytesV(v [][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBytes(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceFloat32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []float32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float32) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat32V(v, e) + return + } + ft.EncSliceFloat32V(v, e) +} +func (fastpathETSimpleIO) EncSliceFloat32V(v []float32, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceFloat32V(v []float32, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat32(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceFloat64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []float64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]float64) + } + if f.ti.mbs { + ft.EncAsMapSliceFloat64V(v, e) + return + } + ft.EncSliceFloat64V(v, e) +} +func (fastpathETSimpleIO) EncSliceFloat64V(v []float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceFloat64V(v []float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeFloat64(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceUint8R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []uint8 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint8) + } + if f.ti.mbs { + ft.EncAsMapSliceUint8V(v, e) + return + } + ft.EncSliceUint8V(v, e) +} +func (fastpathETSimpleIO) EncSliceUint8V(v []uint8, e *encoderSimpleIO) { + e.e.EncodeStringBytesRaw(v) +} +func (fastpathETSimpleIO) EncAsMapSliceUint8V(v []uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(uint64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceUint64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []uint64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]uint64) + } + if f.ti.mbs { + ft.EncAsMapSliceUint64V(v, e) + return + } + ft.EncSliceUint64V(v, e) +} +func (fastpathETSimpleIO) EncSliceUint64V(v []uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceUint64V(v []uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeUint(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceIntR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []int + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int) + } + if f.ti.mbs { + ft.EncAsMapSliceIntV(v, e) + return + } + ft.EncSliceIntV(v, e) +} +func (fastpathETSimpleIO) EncSliceIntV(v []int, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceIntV(v []int, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceInt32R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []int32 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int32) + } + if f.ti.mbs { + ft.EncAsMapSliceInt32V(v, e) + return + } + ft.EncSliceInt32V(v, e) +} +func (fastpathETSimpleIO) EncSliceInt32V(v []int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceInt32V(v []int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(int64(v[j])) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceInt64R(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []int64 + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]int64) + } + if f.ti.mbs { + ft.EncAsMapSliceInt64V(v, e) + return + } + ft.EncSliceInt64V(v, e) +} +func (fastpathETSimpleIO) EncSliceInt64V(v []int64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceInt64V(v []int64, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeInt(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncSliceBoolR(f *encFnInfo, rv reflect.Value) { + var ft fastpathETSimpleIO + var v []bool + if rv.Kind() == reflect.Array { + rvGetSlice4Array(rv, &v) + } else { + v = rv2i(rv).([]bool) + } + if f.ti.mbs { + ft.EncAsMapSliceBoolV(v, e) + return + } + ft.EncSliceBoolV(v, e) +} +func (fastpathETSimpleIO) EncSliceBoolV(v []bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(v)) + for j := range v { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteArrayEnd() +} +func (fastpathETSimpleIO) EncAsMapSliceBoolV(v []bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.c = 0 + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(len(v)) + e.mapStart(len(v) >> 1) + for j := range v { + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + } else { + e.mapElemValue() + } + e.e.EncodeBool(v[j]) + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) fastpathEncMapStringIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), e) +} +func (fastpathETSimpleIO) EncMapStringIntfV(v map[string]interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringStringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringStringV(rv2i(rv).(map[string]string), e) +} +func (fastpathETSimpleIO) EncMapStringStringV(v map[string]string, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringBytesV(rv2i(rv).(map[string][]byte), e) +} +func (fastpathETSimpleIO) EncMapStringBytesV(v map[string][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringUint8V(rv2i(rv).(map[string]uint8), e) +} +func (fastpathETSimpleIO) EncMapStringUint8V(v map[string]uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringUint64V(rv2i(rv).(map[string]uint64), e) +} +func (fastpathETSimpleIO) EncMapStringUint64V(v map[string]uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringIntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringIntV(rv2i(rv).(map[string]int), e) +} +func (fastpathETSimpleIO) EncMapStringIntV(v map[string]int, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringInt32V(rv2i(rv).(map[string]int32), e) +} +func (fastpathETSimpleIO) EncMapStringInt32V(v map[string]int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringFloat64V(rv2i(rv).(map[string]float64), e) +} +func (fastpathETSimpleIO) EncMapStringFloat64V(v map[string]float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapStringBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapStringBoolV(rv2i(rv).(map[string]bool), e) +} +func (fastpathETSimpleIO) EncMapStringBoolV(v map[string]bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]string, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeString(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), e) +} +func (fastpathETSimpleIO) EncMapUint8IntfV(v map[uint8]interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8StringV(rv2i(rv).(map[uint8]string), e) +} +func (fastpathETSimpleIO) EncMapUint8StringV(v map[uint8]string, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8BytesV(rv2i(rv).(map[uint8][]byte), e) +} +func (fastpathETSimpleIO) EncMapUint8BytesV(v map[uint8][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), e) +} +func (fastpathETSimpleIO) EncMapUint8Uint8V(v map[uint8]uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), e) +} +func (fastpathETSimpleIO) EncMapUint8Uint64V(v map[uint8]uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8IntV(rv2i(rv).(map[uint8]int), e) +} +func (fastpathETSimpleIO) EncMapUint8IntV(v map[uint8]int, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), e) +} +func (fastpathETSimpleIO) EncMapUint8Int32V(v map[uint8]int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), e) +} +func (fastpathETSimpleIO) EncMapUint8Float64V(v map[uint8]float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint8BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), e) +} +func (fastpathETSimpleIO) EncMapUint8BoolV(v map[uint8]bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint8, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(uint64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), e) +} +func (fastpathETSimpleIO) EncMapUint64IntfV(v map[uint64]interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64StringV(rv2i(rv).(map[uint64]string), e) +} +func (fastpathETSimpleIO) EncMapUint64StringV(v map[uint64]string, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64BytesV(rv2i(rv).(map[uint64][]byte), e) +} +func (fastpathETSimpleIO) EncMapUint64BytesV(v map[uint64][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), e) +} +func (fastpathETSimpleIO) EncMapUint64Uint8V(v map[uint64]uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), e) +} +func (fastpathETSimpleIO) EncMapUint64Uint64V(v map[uint64]uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64IntV(rv2i(rv).(map[uint64]int), e) +} +func (fastpathETSimpleIO) EncMapUint64IntV(v map[uint64]int, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), e) +} +func (fastpathETSimpleIO) EncMapUint64Int32V(v map[uint64]int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), e) +} +func (fastpathETSimpleIO) EncMapUint64Float64V(v map[uint64]float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapUint64BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), e) +} +func (fastpathETSimpleIO) EncMapUint64BoolV(v map[uint64]bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeUint(k2) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntIntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), e) +} +func (fastpathETSimpleIO) EncMapIntIntfV(v map[int]interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntStringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntStringV(rv2i(rv).(map[int]string), e) +} +func (fastpathETSimpleIO) EncMapIntStringV(v map[int]string, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntBytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntBytesV(rv2i(rv).(map[int][]byte), e) +} +func (fastpathETSimpleIO) EncMapIntBytesV(v map[int][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntUint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntUint8V(rv2i(rv).(map[int]uint8), e) +} +func (fastpathETSimpleIO) EncMapIntUint8V(v map[int]uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntUint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntUint64V(rv2i(rv).(map[int]uint64), e) +} +func (fastpathETSimpleIO) EncMapIntUint64V(v map[int]uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntIntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntIntV(rv2i(rv).(map[int]int), e) +} +func (fastpathETSimpleIO) EncMapIntIntV(v map[int]int, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntInt32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntInt32V(rv2i(rv).(map[int]int32), e) +} +func (fastpathETSimpleIO) EncMapIntInt32V(v map[int]int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntFloat64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntFloat64V(rv2i(rv).(map[int]float64), e) +} +func (fastpathETSimpleIO) EncMapIntFloat64V(v map[int]float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapIntBoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapIntBoolV(rv2i(rv).(map[int]bool), e) +} +func (fastpathETSimpleIO) EncMapIntBoolV(v map[int]bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32IntfR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), e) +} +func (fastpathETSimpleIO) EncMapInt32IntfV(v map[int32]interface{}, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v[k2]) { + e.encodeR(reflect.ValueOf(v[k2])) + } + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + if !e.encodeBuiltin(v2) { + e.encodeR(reflect.ValueOf(v2)) + } + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32StringR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32StringV(rv2i(rv).(map[int32]string), e) +} +func (fastpathETSimpleIO) EncMapInt32StringV(v map[int32]string, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeString(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32BytesR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32BytesV(rv2i(rv).(map[int32][]byte), e) +} +func (fastpathETSimpleIO) EncMapInt32BytesV(v map[int32][]byte, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBytes(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32Uint8R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), e) +} +func (fastpathETSimpleIO) EncMapInt32Uint8V(v map[int32]uint8, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(uint64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32Uint64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), e) +} +func (fastpathETSimpleIO) EncMapInt32Uint64V(v map[int32]uint64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeUint(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32IntR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32IntV(rv2i(rv).(map[int32]int), e) +} +func (fastpathETSimpleIO) EncMapInt32IntV(v map[int32]int, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32Int32R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), e) +} +func (fastpathETSimpleIO) EncMapInt32Int32V(v map[int32]int32, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v[k2])) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeInt(int64(v2)) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32Float64R(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), e) +} +func (fastpathETSimpleIO) EncMapInt32Float64V(v map[int32]float64, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeFloat64(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} +func (e *encoderSimpleIO) fastpathEncMapInt32BoolR(f *encFnInfo, rv reflect.Value) { + fastpathETSimpleIO{}.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), e) +} +func (fastpathETSimpleIO) EncMapInt32BoolV(v map[int32]bool, e *encoderSimpleIO) { + if len(v) == 0 { + e.e.WriteMapEmpty() + return + } + var i uint + e.mapStart(len(v)) + if e.h.Canonical { + v2 := make([]int32, len(v)) + for k := range v { + v2[i] = k + i++ + } + slices.Sort(v2) + for i, k2 := range v2 { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v[k2]) + } + } else { + i = 0 + for k2, v2 := range v { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeInt(int64(k2)) + e.mapElemValue() + e.e.EncodeBool(v2) + i++ + } + } + e.c = 0 + e.e.WriteMapEnd() +} + +func (helperDecDriverSimpleIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderSimpleIO) bool { + var ft fastpathDTSimpleIO + var changed bool + var containerLen int + switch v := iv.(type) { + case []interface{}: + ft.DecSliceIntfN(v, d) + case *[]interface{}: + var v2 []interface{} + if v2, changed = ft.DecSliceIntfY(*v, d); changed { + *v = v2 + } + case []string: + ft.DecSliceStringN(v, d) + case *[]string: + var v2 []string + if v2, changed = ft.DecSliceStringY(*v, d); changed { + *v = v2 + } + case [][]byte: + ft.DecSliceBytesN(v, d) + case *[][]byte: + var v2 [][]byte + if v2, changed = ft.DecSliceBytesY(*v, d); changed { + *v = v2 + } + case []float32: + ft.DecSliceFloat32N(v, d) + case *[]float32: + var v2 []float32 + if v2, changed = ft.DecSliceFloat32Y(*v, d); changed { + *v = v2 + } + case []float64: + ft.DecSliceFloat64N(v, d) + case *[]float64: + var v2 []float64 + if v2, changed = ft.DecSliceFloat64Y(*v, d); changed { + *v = v2 + } + case []uint8: + ft.DecSliceUint8N(v, d) + case *[]uint8: + var v2 []uint8 + if v2, changed = ft.DecSliceUint8Y(*v, d); changed { + *v = v2 + } + case []uint64: + ft.DecSliceUint64N(v, d) + case *[]uint64: + var v2 []uint64 + if v2, changed = ft.DecSliceUint64Y(*v, d); changed { + *v = v2 + } + case []int: + ft.DecSliceIntN(v, d) + case *[]int: + var v2 []int + if v2, changed = ft.DecSliceIntY(*v, d); changed { + *v = v2 + } + case []int32: + ft.DecSliceInt32N(v, d) + case *[]int32: + var v2 []int32 + if v2, changed = ft.DecSliceInt32Y(*v, d); changed { + *v = v2 + } + case []int64: + ft.DecSliceInt64N(v, d) + case *[]int64: + var v2 []int64 + if v2, changed = ft.DecSliceInt64Y(*v, d); changed { + *v = v2 + } + case []bool: + ft.DecSliceBoolN(v, d) + case *[]bool: + var v2 []bool + if v2, changed = ft.DecSliceBoolY(*v, d); changed { + *v = v2 + } + case map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapStringBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[string]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint8BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint8]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapUint64BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[uint64]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntStringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntUint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntIntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntInt32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntFloat64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapIntBoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntfL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]interface{}: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32StringL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]string: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BytesL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32][]byte: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint8L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint8: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Uint64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]uint64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32IntL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Int32L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]int32: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32Float64L(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]float64: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*v, containerLen, d) + } + d.mapEnd() + } + case map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen != containerLenNil { + if containerLen != 0 { + ft.DecMapInt32BoolL(v, containerLen, d) + } + d.mapEnd() + } + case *map[int32]bool: + if containerLen = d.mapStart(d.d.ReadMapStart()); containerLen == containerLenNil { + *v = nil + } else { + if *v == nil { + *v = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*v, containerLen, d) + } + d.mapEnd() + } + default: + _ = v + return false + } + return true +} + +func (d *decoderSimpleIO) fastpathDecSliceIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]interface{}) + if vv, changed := ft.DecSliceIntfY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []interface{} + rvGetSlice4Array(rv, &v) + ft.DecSliceIntfN(v, d) + default: + ft.DecSliceIntfN(rv2i(rv).([]interface{}), d) + } +} +func (fastpathDTSimpleIO) DecSliceIntfY(v []interface{}, d *decoderSimpleIO) (v2 []interface{}, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []interface{}) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]interface{}, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + d.decode(&v[uint(j)]) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]interface{}{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceIntfN(v []interface{}, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + d.decode(&v[uint(j)]) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]string) + if vv, changed := ft.DecSliceStringY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []string + rvGetSlice4Array(rv, &v) + ft.DecSliceStringN(v, d) + default: + ft.DecSliceStringN(rv2i(rv).([]string), d) + } +} +func (fastpathDTSimpleIO) DecSliceStringY(v []string, d *decoderSimpleIO) (v2 []string, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []string) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 16)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]string, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, "")) + } + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]string{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceStringN(v []string, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.detach2Str(d.d.DecodeStringAsBytes()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[][]byte) + if vv, changed := ft.DecSliceBytesY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v [][]byte + rvGetSlice4Array(rv, &v) + ft.DecSliceBytesN(v, d) + default: + ft.DecSliceBytesN(rv2i(rv).([][]byte), d) + } +} +func (fastpathDTSimpleIO) DecSliceBytesY(v [][]byte, d *decoderSimpleIO) (v2 [][]byte, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst [][]byte) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 24)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([][]byte, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, nil)) + } + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([][]byte{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceBytesN(v [][]byte, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = bytesOKdbi(d.decodeBytesInto(v[uint(j)], false)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceFloat32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float32) + if vv, changed := ft.DecSliceFloat32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float32 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat32N(v, d) + default: + ft.DecSliceFloat32N(rv2i(rv).([]float32), d) + } +} +func (fastpathDTSimpleIO) DecSliceFloat32Y(v []float32, d *decoderSimpleIO) (v2 []float32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = float32(d.d.DecodeFloat32()) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceFloat32N(v []float32, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = float32(d.d.DecodeFloat32()) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]float64) + if vv, changed := ft.DecSliceFloat64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []float64 + rvGetSlice4Array(rv, &v) + ft.DecSliceFloat64N(v, d) + default: + ft.DecSliceFloat64N(rv2i(rv).([]float64), d) + } +} +func (fastpathDTSimpleIO) DecSliceFloat64Y(v []float64, d *decoderSimpleIO) (v2 []float64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []float64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]float64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeFloat64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]float64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceFloat64N(v []float64, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeFloat64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint8) + if vv, changed := ft.DecSliceUint8Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint8 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint8N(v, d) + default: + ft.DecSliceUint8N(rv2i(rv).([]uint8), d) + } +} +func (fastpathDTSimpleIO) DecSliceUint8Y(v []uint8, d *decoderSimpleIO) (v2 []uint8, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + if ctyp != valueTypeMap { + var dbi dBytesIntoState + v2, dbi = d.decodeBytesInto(v[:len(v):len(v)], false) + return v2, dbi != dBytesIntoParamOut + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint8) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint8, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint8{}) + } + d.mapEnd() + return v, changed +} +func (fastpathDTSimpleIO) DecSliceUint8N(v []uint8, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + if ctyp != valueTypeMap { + d.decodeBytesInto(v[:len(v):len(v)], true) + return + } + containerLenS := d.mapStart(d.d.ReadMapStart()) * 2 + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + d.mapEnd() +} + +func (d *decoderSimpleIO) fastpathDecSliceUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]uint64) + if vv, changed := ft.DecSliceUint64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []uint64 + rvGetSlice4Array(rv, &v) + ft.DecSliceUint64N(v, d) + default: + ft.DecSliceUint64N(rv2i(rv).([]uint64), d) + } +} +func (fastpathDTSimpleIO) DecSliceUint64Y(v []uint64, d *decoderSimpleIO) (v2 []uint64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []uint64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]uint64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeUint64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]uint64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceUint64N(v []uint64, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeUint64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int) + if vv, changed := ft.DecSliceIntY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int + rvGetSlice4Array(rv, &v) + ft.DecSliceIntN(v, d) + default: + ft.DecSliceIntN(rv2i(rv).([]int), d) + } +} +func (fastpathDTSimpleIO) DecSliceIntY(v []int, d *decoderSimpleIO) (v2 []int, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceIntN(v []int, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int32) + if vv, changed := ft.DecSliceInt32Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int32 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt32N(v, d) + default: + ft.DecSliceInt32N(rv2i(rv).([]int32), d) + } +} +func (fastpathDTSimpleIO) DecSliceInt32Y(v []int32, d *decoderSimpleIO) (v2 []int32, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int32) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 4)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int32, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int32{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceInt32N(v []int32, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceInt64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]int64) + if vv, changed := ft.DecSliceInt64Y(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []int64 + rvGetSlice4Array(rv, &v) + ft.DecSliceInt64N(v, d) + default: + ft.DecSliceInt64N(rv2i(rv).([]int64), d) + } +} +func (fastpathDTSimpleIO) DecSliceInt64Y(v []int64, d *decoderSimpleIO) (v2 []int64, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []int64) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 8)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]int64, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, 0)) + } + v[uint(j)] = d.d.DecodeInt64() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]int64{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceInt64N(v []int64, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeInt64() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) fastpathDecSliceBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + switch rv.Kind() { + case reflect.Ptr: + v := rv2i(rv).(*[]bool) + if vv, changed := ft.DecSliceBoolY(*v, d); changed { + *v = vv + } + case reflect.Array: + var v []bool + rvGetSlice4Array(rv, &v) + ft.DecSliceBoolN(v, d) + default: + ft.DecSliceBoolN(rv2i(rv).([]bool), d) + } +} +func (fastpathDTSimpleIO) DecSliceBoolY(v []bool, d *decoderSimpleIO) (v2 []bool, changed bool) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return nil, v != nil + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + var j int + fnv := func(dst []bool) { v, changed = dst, true } + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if containerLenS == len(v) { + } else if containerLenS < 0 || containerLenS > cap(v) { + if xlen := int(decInferLen(containerLenS, d.maxInitLen(), 1)); xlen <= cap(v) { + fnv(v[:uint(xlen)]) + } else { + v2 = make([]bool, uint(xlen)) + copy(v2, v) + fnv(v2) + } + } else { + fnv(v[:containerLenS]) + } + } + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j >= len(v) { + fnv(append(v, false)) + } + v[uint(j)] = d.d.DecodeBool() + } + if j < len(v) { + fnv(v[:uint(j)]) + } else if j == 0 && v == nil { + fnv([]bool{}) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return v, changed +} +func (fastpathDTSimpleIO) DecSliceBoolN(v []bool, d *decoderSimpleIO) { + ctyp := d.d.ContainerType() + if ctyp == valueTypeNil { + return + } + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + hasLen := containerLenS >= 0 + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if isArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + if j < len(v) { + v[uint(j)] = d.d.DecodeBool() + } else { + d.arrayCannotExpand(len(v), j+1) + d.swallow() + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} +func (d *decoderSimpleIO) fastpathDecMapStringIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]interface{}) + if *vp == nil { + *vp = make(map[string]interface{}, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntfL(rv2i(rv).(map[string]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringIntfL(v map[string]interface{}, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleIO) fastpathDecMapStringStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]string) + if *vp == nil { + *vp = make(map[string]string, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapStringStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringStringL(rv2i(rv).(map[string]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringStringL(v map[string]string, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleIO) fastpathDecMapStringBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string][]byte) + if *vp == nil { + *vp = make(map[string][]byte, decInferLen(containerLen, d.maxInitLen(), 40)) + } + if containerLen != 0 { + ft.DecMapStringBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBytesL(rv2i(rv).(map[string][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringBytesL(v map[string][]byte, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleIO) fastpathDecMapStringUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint8) + if *vp == nil { + *vp = make(map[string]uint8, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint8L(rv2i(rv).(map[string]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringUint8L(v map[string]uint8, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleIO) fastpathDecMapStringUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]uint64) + if *vp == nil { + *vp = make(map[string]uint64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringUint64L(rv2i(rv).(map[string]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringUint64L(v map[string]uint64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleIO) fastpathDecMapStringIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int) + if *vp == nil { + *vp = make(map[string]int, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringIntL(rv2i(rv).(map[string]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringIntL(v map[string]int, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleIO) fastpathDecMapStringInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]int32) + if *vp == nil { + *vp = make(map[string]int32, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapStringInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringInt32L(rv2i(rv).(map[string]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringInt32L(v map[string]int32, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleIO) fastpathDecMapStringFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]float64) + if *vp == nil { + *vp = make(map[string]float64, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapStringFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringFloat64L(rv2i(rv).(map[string]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringFloat64L(v map[string]float64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleIO) fastpathDecMapStringBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[string]bool) + if *vp == nil { + *vp = make(map[string]bool, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapStringBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapStringBoolL(rv2i(rv).(map[string]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapStringBoolL(v map[string]bool, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[string]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.detach2Str(d.d.DecodeStringAsBytes()) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]interface{}) + if *vp == nil { + *vp = make(map[uint8]interface{}, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntfL(rv2i(rv).(map[uint8]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8IntfL(v map[uint8]interface{}, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]string) + if *vp == nil { + *vp = make(map[uint8]string, decInferLen(containerLen, d.maxInitLen(), 17)) + } + if containerLen != 0 { + ft.DecMapUint8StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8StringL(rv2i(rv).(map[uint8]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8StringL(v map[uint8]string, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8][]byte) + if *vp == nil { + *vp = make(map[uint8][]byte, decInferLen(containerLen, d.maxInitLen(), 25)) + } + if containerLen != 0 { + ft.DecMapUint8BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BytesL(rv2i(rv).(map[uint8][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8BytesL(v map[uint8][]byte, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint8) + if *vp == nil { + *vp = make(map[uint8]uint8, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint8L(rv2i(rv).(map[uint8]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8Uint8L(v map[uint8]uint8, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]uint64) + if *vp == nil { + *vp = make(map[uint8]uint64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Uint64L(rv2i(rv).(map[uint8]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8Uint64L(v map[uint8]uint64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int) + if *vp == nil { + *vp = make(map[uint8]int, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8IntL(rv2i(rv).(map[uint8]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8IntL(v map[uint8]int, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]int32) + if *vp == nil { + *vp = make(map[uint8]int32, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapUint8Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Int32L(rv2i(rv).(map[uint8]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8Int32L(v map[uint8]int32, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]float64) + if *vp == nil { + *vp = make(map[uint8]float64, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint8Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8Float64L(rv2i(rv).(map[uint8]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8Float64L(v map[uint8]float64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint8BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint8]bool) + if *vp == nil { + *vp = make(map[uint8]bool, decInferLen(containerLen, d.maxInitLen(), 2)) + } + if containerLen != 0 { + ft.DecMapUint8BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint8BoolL(rv2i(rv).(map[uint8]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint8BoolL(v map[uint8]bool, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint8]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]interface{}) + if *vp == nil { + *vp = make(map[uint64]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntfL(rv2i(rv).(map[uint64]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64IntfL(v map[uint64]interface{}, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]string) + if *vp == nil { + *vp = make(map[uint64]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapUint64StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64StringL(rv2i(rv).(map[uint64]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64StringL(v map[uint64]string, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64][]byte) + if *vp == nil { + *vp = make(map[uint64][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapUint64BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BytesL(rv2i(rv).(map[uint64][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64BytesL(v map[uint64][]byte, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint8) + if *vp == nil { + *vp = make(map[uint64]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint8L(rv2i(rv).(map[uint64]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64Uint8L(v map[uint64]uint8, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]uint64) + if *vp == nil { + *vp = make(map[uint64]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Uint64L(rv2i(rv).(map[uint64]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64Uint64L(v map[uint64]uint64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int) + if *vp == nil { + *vp = make(map[uint64]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64IntL(rv2i(rv).(map[uint64]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64IntL(v map[uint64]int, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]int32) + if *vp == nil { + *vp = make(map[uint64]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapUint64Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Int32L(rv2i(rv).(map[uint64]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64Int32L(v map[uint64]int32, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]float64) + if *vp == nil { + *vp = make(map[uint64]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapUint64Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64Float64L(rv2i(rv).(map[uint64]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64Float64L(v map[uint64]float64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleIO) fastpathDecMapUint64BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[uint64]bool) + if *vp == nil { + *vp = make(map[uint64]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapUint64BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapUint64BoolL(rv2i(rv).(map[uint64]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapUint64BoolL(v map[uint64]bool, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[uint64]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := d.d.DecodeUint64() + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleIO) fastpathDecMapIntIntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]interface{}) + if *vp == nil { + *vp = make(map[int]interface{}, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntIntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntfL(rv2i(rv).(map[int]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntIntfL(v map[int]interface{}, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleIO) fastpathDecMapIntStringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]string) + if *vp == nil { + *vp = make(map[int]string, decInferLen(containerLen, d.maxInitLen(), 24)) + } + if containerLen != 0 { + ft.DecMapIntStringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntStringL(rv2i(rv).(map[int]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntStringL(v map[int]string, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleIO) fastpathDecMapIntBytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int][]byte) + if *vp == nil { + *vp = make(map[int][]byte, decInferLen(containerLen, d.maxInitLen(), 32)) + } + if containerLen != 0 { + ft.DecMapIntBytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBytesL(rv2i(rv).(map[int][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntBytesL(v map[int][]byte, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleIO) fastpathDecMapIntUint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint8) + if *vp == nil { + *vp = make(map[int]uint8, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntUint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint8L(rv2i(rv).(map[int]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntUint8L(v map[int]uint8, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleIO) fastpathDecMapIntUint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]uint64) + if *vp == nil { + *vp = make(map[int]uint64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntUint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntUint64L(rv2i(rv).(map[int]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntUint64L(v map[int]uint64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleIO) fastpathDecMapIntIntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int) + if *vp == nil { + *vp = make(map[int]int, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntIntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntIntL(rv2i(rv).(map[int]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntIntL(v map[int]int, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleIO) fastpathDecMapIntInt32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]int32) + if *vp == nil { + *vp = make(map[int]int32, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapIntInt32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntInt32L(rv2i(rv).(map[int]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntInt32L(v map[int]int32, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleIO) fastpathDecMapIntFloat64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]float64) + if *vp == nil { + *vp = make(map[int]float64, decInferLen(containerLen, d.maxInitLen(), 16)) + } + if containerLen != 0 { + ft.DecMapIntFloat64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntFloat64L(rv2i(rv).(map[int]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntFloat64L(v map[int]float64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleIO) fastpathDecMapIntBoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int]bool) + if *vp == nil { + *vp = make(map[int]bool, decInferLen(containerLen, d.maxInitLen(), 9)) + } + if containerLen != 0 { + ft.DecMapIntBoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapIntBoolL(rv2i(rv).(map[int]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapIntBoolL(v map[int]bool, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32IntfR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]interface{}) + if *vp == nil { + *vp = make(map[int32]interface{}, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32IntfL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntfL(rv2i(rv).(map[int32]interface{}), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32IntfL(v map[int32]interface{}, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]interface{} given stream length: ", int64(containerLen)) + } + var mv interface{} + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + v[mk] = mv + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32StringR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]string) + if *vp == nil { + *vp = make(map[int32]string, decInferLen(containerLen, d.maxInitLen(), 20)) + } + if containerLen != 0 { + ft.DecMapInt32StringL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32StringL(rv2i(rv).(map[int32]string), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32StringL(v map[int32]string, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]string given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.detach2Str(d.d.DecodeStringAsBytes()) + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32BytesR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32][]byte) + if *vp == nil { + *vp = make(map[int32][]byte, decInferLen(containerLen, d.maxInitLen(), 28)) + } + if containerLen != 0 { + ft.DecMapInt32BytesL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BytesL(rv2i(rv).(map[int32][]byte), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32BytesL(v map[int32][]byte, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32][]byte given stream length: ", int64(containerLen)) + } + var mv []byte + mapGet := !d.h.MapValueReset + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + if mapGet { + mv = v[mk] + } else { + mv = nil + } + v[mk], _ = d.decodeBytesInto(mv, false) + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32Uint8R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint8) + if *vp == nil { + *vp = make(map[int32]uint8, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32Uint8L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint8L(rv2i(rv).(map[int32]uint8), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32Uint8L(v map[int32]uint8, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint8 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32Uint64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]uint64) + if *vp == nil { + *vp = make(map[int32]uint64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Uint64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Uint64L(rv2i(rv).(map[int32]uint64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32Uint64L(v map[int32]uint64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]uint64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeUint64() + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32IntR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int) + if *vp == nil { + *vp = make(map[int32]int, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32IntL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32IntL(rv2i(rv).(map[int32]int), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32IntL(v map[int32]int, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32Int32R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]int32) + if *vp == nil { + *vp = make(map[int32]int32, decInferLen(containerLen, d.maxInitLen(), 8)) + } + if containerLen != 0 { + ft.DecMapInt32Int32L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Int32L(rv2i(rv).(map[int32]int32), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32Int32L(v map[int32]int32, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]int32 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32Float64R(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]float64) + if *vp == nil { + *vp = make(map[int32]float64, decInferLen(containerLen, d.maxInitLen(), 12)) + } + if containerLen != 0 { + ft.DecMapInt32Float64L(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32Float64L(rv2i(rv).(map[int32]float64), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32Float64L(v map[int32]float64, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]float64 given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeFloat64() + } +} +func (d *decoderSimpleIO) fastpathDecMapInt32BoolR(f *decFnInfo, rv reflect.Value) { + var ft fastpathDTSimpleIO + containerLen := d.mapStart(d.d.ReadMapStart()) + if rv.Kind() == reflect.Ptr { + vp, _ := rv2i(rv).(*map[int32]bool) + if *vp == nil { + *vp = make(map[int32]bool, decInferLen(containerLen, d.maxInitLen(), 5)) + } + if containerLen != 0 { + ft.DecMapInt32BoolL(*vp, containerLen, d) + } + } else if containerLen != 0 { + ft.DecMapInt32BoolL(rv2i(rv).(map[int32]bool), containerLen, d) + } + d.mapEnd() +} +func (fastpathDTSimpleIO) DecMapInt32BoolL(v map[int32]bool, containerLen int, d *decoderSimpleIO) { + if v == nil { + halt.errorInt("cannot decode into nil map[int32]bool given stream length: ", int64(containerLen)) + } + hasLen := containerLen >= 0 + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + mk := int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + d.mapElemValue() + v[mk] = d.d.DecodeBool() + } +} diff --git a/vendor/github.com/ugorji/go/codec/simple.go b/vendor/github.com/ugorji/go/codec/simple.go index e8a63717e..64df60f3c 100644 --- a/vendor/github.com/ugorji/go/codec/simple.go +++ b/vendor/github.com/ugorji/go/codec/simple.go @@ -1,111 +1,65 @@ +//go:build notmono || codec.notmono + // Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. package codec import ( + "io" "math" "reflect" "time" ) -const ( - _ uint8 = iota - simpleVdNil = 1 - simpleVdFalse = 2 - simpleVdTrue = 3 - simpleVdFloat32 = 4 - simpleVdFloat64 = 5 - - // each lasts for 4 (ie n, n+1, n+2, n+3) - simpleVdPosInt = 8 - simpleVdNegInt = 12 - - simpleVdTime = 24 - - // containers: each lasts for 4 (ie n, n+1, n+2, ... n+7) - simpleVdString = 216 - simpleVdByteArray = 224 - simpleVdArray = 232 - simpleVdMap = 240 - simpleVdExt = 248 -) - -var simpledescNames = map[byte]string{ - simpleVdNil: "null", - simpleVdFalse: "false", - simpleVdTrue: "true", - simpleVdFloat32: "float32", - simpleVdFloat64: "float64", - - simpleVdPosInt: "+int", - simpleVdNegInt: "-int", - - simpleVdTime: "time", - - simpleVdString: "string", - simpleVdByteArray: "binary", - simpleVdArray: "array", - simpleVdMap: "map", - simpleVdExt: "ext", -} - -func simpledesc(bd byte) (s string) { - s = simpledescNames[bd] - if s == "" { - s = "unknown" - } - return -} - -type simpleEncDriver struct { +type simpleEncDriver[T encWriter] struct { noBuiltInTypes encDriverNoopContainerWriter encDriverNoState + encDriverContainerNoTrackerT + encInit2er + h *SimpleHandle + e *encoderBase // b [8]byte - e Encoder -} - -func (e *simpleEncDriver) encoder() *Encoder { - return &e.e + w T } -func (e *simpleEncDriver) EncodeNil() { - e.e.encWr.writen1(simpleVdNil) +func (e *simpleEncDriver[T]) EncodeNil() { + e.w.writen1(simpleVdNil) } -func (e *simpleEncDriver) EncodeBool(b bool) { +func (e *simpleEncDriver[T]) EncodeBool(b bool) { if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && !b { e.EncodeNil() return } if b { - e.e.encWr.writen1(simpleVdTrue) + e.w.writen1(simpleVdTrue) } else { - e.e.encWr.writen1(simpleVdFalse) + e.w.writen1(simpleVdFalse) } } -func (e *simpleEncDriver) EncodeFloat32(f float32) { +func (e *simpleEncDriver[T]) EncodeFloat32(f float32) { if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { e.EncodeNil() return } - e.e.encWr.writen1(simpleVdFloat32) - bigen.writeUint32(e.e.w(), math.Float32bits(f)) + e.w.writen1(simpleVdFloat32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) } -func (e *simpleEncDriver) EncodeFloat64(f float64) { +func (e *simpleEncDriver[T]) EncodeFloat64(f float64) { if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { e.EncodeNil() return } - e.e.encWr.writen1(simpleVdFloat64) - bigen.writeUint64(e.e.w(), math.Float64bits(f)) + e.w.writen1(simpleVdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) } -func (e *simpleEncDriver) EncodeInt(v int64) { +func (e *simpleEncDriver[T]) EncodeInt(v int64) { if v < 0 { e.encUint(uint64(-v), simpleVdNegInt) } else { @@ -113,62 +67,62 @@ func (e *simpleEncDriver) EncodeInt(v int64) { } } -func (e *simpleEncDriver) EncodeUint(v uint64) { +func (e *simpleEncDriver[T]) EncodeUint(v uint64) { e.encUint(v, simpleVdPosInt) } -func (e *simpleEncDriver) encUint(v uint64, bd uint8) { +func (e *simpleEncDriver[T]) encUint(v uint64, bd uint8) { if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == 0 { e.EncodeNil() return } if v <= math.MaxUint8 { - e.e.encWr.writen2(bd, uint8(v)) + e.w.writen2(bd, uint8(v)) } else if v <= math.MaxUint16 { - e.e.encWr.writen1(bd + 1) - bigen.writeUint16(e.e.w(), uint16(v)) + e.w.writen1(bd + 1) + e.w.writen2(bigen.PutUint16(uint16(v))) } else if v <= math.MaxUint32 { - e.e.encWr.writen1(bd + 2) - bigen.writeUint32(e.e.w(), uint32(v)) + e.w.writen1(bd + 2) + e.w.writen4(bigen.PutUint32(uint32(v))) } else { // if v <= math.MaxUint64 { - e.e.encWr.writen1(bd + 3) - bigen.writeUint64(e.e.w(), v) + e.w.writen1(bd + 3) + e.w.writen8(bigen.PutUint64(v)) } } -func (e *simpleEncDriver) encLen(bd byte, length int) { +func (e *simpleEncDriver[T]) encLen(bd byte, length int) { if length == 0 { - e.e.encWr.writen1(bd) + e.w.writen1(bd) } else if length <= math.MaxUint8 { - e.e.encWr.writen1(bd + 1) - e.e.encWr.writen1(uint8(length)) + e.w.writen1(bd + 1) + e.w.writen1(uint8(length)) } else if length <= math.MaxUint16 { - e.e.encWr.writen1(bd + 2) - bigen.writeUint16(e.e.w(), uint16(length)) + e.w.writen1(bd + 2) + e.w.writen2(bigen.PutUint16(uint16(length))) } else if int64(length) <= math.MaxUint32 { - e.e.encWr.writen1(bd + 3) - bigen.writeUint32(e.e.w(), uint32(length)) + e.w.writen1(bd + 3) + e.w.writen4(bigen.PutUint32(uint32(length))) } else { - e.e.encWr.writen1(bd + 4) - bigen.writeUint64(e.e.w(), uint64(length)) + e.w.writen1(bd + 4) + e.w.writen8(bigen.PutUint64(uint64(length))) } } -func (e *simpleEncDriver) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { +func (e *simpleEncDriver[T]) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { var bs0, bs []byte if ext == SelfExt { bs0 = e.e.blist.get(1024) bs = bs0 - e.e.sideEncode(v, basetype, &bs) + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) } else { bs = ext.WriteExt(v) } if bs == nil { - e.EncodeNil() + e.writeNilBytes() goto END } e.encodeExtPreamble(uint8(xtag), len(bs)) - e.e.encWr.writeb(bs) + e.w.writeb(bs) END: if ext == SelfExt { e.e.blist.put(bs) @@ -178,25 +132,35 @@ END: } } -func (e *simpleEncDriver) EncodeRawExt(re *RawExt) { +func (e *simpleEncDriver[T]) EncodeRawExt(re *RawExt) { e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) - e.e.encWr.writeb(re.Data) + e.w.writeb(re.Data) } -func (e *simpleEncDriver) encodeExtPreamble(xtag byte, length int) { +func (e *simpleEncDriver[T]) encodeExtPreamble(xtag byte, length int) { e.encLen(simpleVdExt, length) - e.e.encWr.writen1(xtag) + e.w.writen1(xtag) } -func (e *simpleEncDriver) WriteArrayStart(length int) { +func (e *simpleEncDriver[T]) WriteArrayStart(length int) { e.encLen(simpleVdArray, length) } -func (e *simpleEncDriver) WriteMapStart(length int) { +func (e *simpleEncDriver[T]) WriteMapStart(length int) { e.encLen(simpleVdMap, length) } -func (e *simpleEncDriver) EncodeString(v string) { +func (e *simpleEncDriver[T]) WriteArrayEmpty() { + // e.WriteArrayStart(0) = e.encLen(simpleVdArray, 0) + e.w.writen1(simpleVdArray) +} + +func (e *simpleEncDriver[T]) WriteMapEmpty() { + // e.WriteMapStart(0) = e.encLen(simpleVdMap, 0) + e.w.writen1(simpleVdMap) +} + +func (e *simpleEncDriver[T]) EncodeString(v string) { if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == "" { e.EncodeNil() return @@ -206,57 +170,88 @@ func (e *simpleEncDriver) EncodeString(v string) { } else { e.encLen(simpleVdString, len(v)) } - e.e.encWr.writestr(v) + e.w.writestr(v) } -func (e *simpleEncDriver) EncodeStringBytesRaw(v []byte) { +func (e *simpleEncDriver[T]) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *simpleEncDriver[T]) EncodeStringBytesRaw(v []byte) { // if e.h.EncZeroValuesAsNil && e.c != containerMapKey && v == nil { + e.encLen(simpleVdByteArray, len(v)) + e.w.writeb(v) +} + +func (e *simpleEncDriver[T]) EncodeBytes(v []byte) { if v == nil { - e.EncodeNil() + e.writeNilBytes() return } - e.encLen(simpleVdByteArray, len(v)) - e.e.encWr.writeb(v) + e.EncodeStringBytesRaw(v) +} + +func (e *simpleEncDriver[T]) encodeNilBytes() { + b := byte(simpleVdNil) + if e.h.NilCollectionToZeroLength { + b = simpleVdArray + } + e.w.writen1(b) +} + +func (e *simpleEncDriver[T]) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = simpleVdNil + } + e.w.writen1(v) +} + +func (e *simpleEncDriver[T]) writeNilArray() { + e.writeNilOr(simpleVdArray) +} + +func (e *simpleEncDriver[T]) writeNilMap() { + e.writeNilOr(simpleVdMap) } -func (e *simpleEncDriver) EncodeTime(t time.Time) { +func (e *simpleEncDriver[T]) writeNilBytes() { + e.writeNilOr(simpleVdByteArray) +} + +func (e *simpleEncDriver[T]) EncodeTime(t time.Time) { // if e.h.EncZeroValuesAsNil && e.c != containerMapKey && t.IsZero() { if t.IsZero() { e.EncodeNil() return } v, err := t.MarshalBinary() - e.e.onerror(err) - e.e.encWr.writen2(simpleVdTime, uint8(len(v))) - e.e.encWr.writeb(v) + halt.onerror(err) + e.w.writen2(simpleVdTime, uint8(len(v))) + e.w.writeb(v) } //------------------------------------ -type simpleDecDriver struct { +type simpleDecDriver[T decReader] struct { h *SimpleHandle + d *decoderBase + r T + bdAndBdread - _ bool + // bytes bool + noBuiltInTypes + // decDriverNoopNumberHelper decDriverNoopContainerReader - decDriverNoopNumberHelper - d Decoder -} - -func (d *simpleDecDriver) decoder() *Decoder { - return &d.d -} + decInit2er -func (d *simpleDecDriver) descBd() string { - return sprintf("%v (%s)", d.bd, simpledesc(d.bd)) + // ds interface{} // must be *decoder[simpleDecDriverM[bytes...]] } -func (d *simpleDecDriver) readNextBd() { - d.bd = d.d.decRd.readn1() +func (d *simpleDecDriver[T]) readNextBd() { + d.bd = d.r.readn1() d.bdRead = true } -func (d *simpleDecDriver) advanceNil() (null bool) { +func (d *simpleDecDriver[T]) advanceNil() (null bool) { if !d.bdRead { d.readNextBd() } @@ -267,7 +262,7 @@ func (d *simpleDecDriver) advanceNil() (null bool) { return } -func (d *simpleDecDriver) ContainerType() (vt valueType) { +func (d *simpleDecDriver[T]) ContainerType() (vt valueType) { if !d.bdRead { d.readNextBd() } @@ -291,88 +286,90 @@ func (d *simpleDecDriver) ContainerType() (vt valueType) { return valueTypeUnset } -func (d *simpleDecDriver) TryNil() bool { +func (d *simpleDecDriver[T]) TryNil() bool { return d.advanceNil() } -func (d *simpleDecDriver) decFloat() (f float64, ok bool) { +func (d *simpleDecDriver[T]) decFloat() (f float64, ok bool) { ok = true switch d.bd { case simpleVdFloat32: - f = float64(math.Float32frombits(bigen.Uint32(d.d.decRd.readn4()))) + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) case simpleVdFloat64: - f = math.Float64frombits(bigen.Uint64(d.d.decRd.readn8())) + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) default: ok = false } return } -func (d *simpleDecDriver) decInteger() (ui uint64, neg, ok bool) { +func (d *simpleDecDriver[T]) decInteger() (ui uint64, neg, ok bool) { ok = true switch d.bd { case simpleVdPosInt: - ui = uint64(d.d.decRd.readn1()) + ui = uint64(d.r.readn1()) case simpleVdPosInt + 1: - ui = uint64(bigen.Uint16(d.d.decRd.readn2())) + ui = uint64(bigen.Uint16(d.r.readn2())) case simpleVdPosInt + 2: - ui = uint64(bigen.Uint32(d.d.decRd.readn4())) + ui = uint64(bigen.Uint32(d.r.readn4())) case simpleVdPosInt + 3: - ui = uint64(bigen.Uint64(d.d.decRd.readn8())) + ui = uint64(bigen.Uint64(d.r.readn8())) case simpleVdNegInt: - ui = uint64(d.d.decRd.readn1()) + ui = uint64(d.r.readn1()) neg = true case simpleVdNegInt + 1: - ui = uint64(bigen.Uint16(d.d.decRd.readn2())) + ui = uint64(bigen.Uint16(d.r.readn2())) neg = true case simpleVdNegInt + 2: - ui = uint64(bigen.Uint32(d.d.decRd.readn4())) + ui = uint64(bigen.Uint32(d.r.readn4())) neg = true case simpleVdNegInt + 3: - ui = uint64(bigen.Uint64(d.d.decRd.readn8())) + ui = uint64(bigen.Uint64(d.r.readn8())) neg = true default: ok = false - // d.d.errorf("integer only valid from pos/neg integer1..8. Invalid descriptor: %v", d.bd) + // halt.errorf("integer only valid from pos/neg integer1..8. Invalid descriptor: %v", d.bd) } // DO NOT do this check below, because callers may only want the unsigned value: // // if ui > math.MaxInt64 { - // d.d.errorf("decIntAny: Integer out of range for signed int64: %v", ui) + // halt.errorf("decIntAny: Integer out of range for signed int64: %v", ui) // return // } return } -func (d *simpleDecDriver) DecodeInt64() (i int64) { +func (d *simpleDecDriver[T]) DecodeInt64() (i int64) { if d.advanceNil() { return } - i = decNegintPosintFloatNumberHelper{&d.d}.int64(d.decInteger()) + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) d.bdRead = false return } -func (d *simpleDecDriver) DecodeUint64() (ui uint64) { +func (d *simpleDecDriver[T]) DecodeUint64() (ui uint64) { if d.advanceNil() { return } - ui = decNegintPosintFloatNumberHelper{&d.d}.uint64(d.decInteger()) + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) d.bdRead = false return } -func (d *simpleDecDriver) DecodeFloat64() (f float64) { +func (d *simpleDecDriver[T]) DecodeFloat64() (f float64) { if d.advanceNil() { return } - f = decNegintPosintFloatNumberHelper{&d.d}.float64(d.decFloat()) + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) d.bdRead = false return } // bool can be decoded from bool only (single byte). -func (d *simpleDecDriver) DecodeBool() (b bool) { +func (d *simpleDecDriver[T]) DecodeBool() (b bool) { if d.advanceNil() { return } @@ -380,13 +377,13 @@ func (d *simpleDecDriver) DecodeBool() (b bool) { } else if d.bd == simpleVdTrue { b = true } else { - d.d.errorf("cannot decode bool - %s: %x", msgBadDesc, d.bd) + halt.errorf("cannot decode bool - %s: %x", msgBadDesc, d.bd) } d.bdRead = false return } -func (d *simpleDecDriver) ReadMapStart() (length int) { +func (d *simpleDecDriver[T]) ReadMapStart() (length int) { if d.advanceNil() { return containerLenNil } @@ -394,7 +391,7 @@ func (d *simpleDecDriver) ReadMapStart() (length int) { return d.decLen() } -func (d *simpleDecDriver) ReadArrayStart() (length int) { +func (d *simpleDecDriver[T]) ReadArrayStart() (length int) { if d.advanceNil() { return containerLenNil } @@ -402,131 +399,128 @@ func (d *simpleDecDriver) ReadArrayStart() (length int) { return d.decLen() } -func (d *simpleDecDriver) uint2Len(ui uint64) int { +func (d *simpleDecDriver[T]) uint2Len(ui uint64) int { if chkOvf.Uint(ui, intBitsize) { - d.d.errorf("overflow integer: %v", ui) + halt.errorf("overflow integer: %v", ui) } return int(ui) } -func (d *simpleDecDriver) decLen() int { +func (d *simpleDecDriver[T]) decLen() int { switch d.bd & 7 { // d.bd % 8 { case 0: return 0 case 1: - return int(d.d.decRd.readn1()) + return int(d.r.readn1()) case 2: - return int(bigen.Uint16(d.d.decRd.readn2())) + return int(bigen.Uint16(d.r.readn2())) case 3: - return d.uint2Len(uint64(bigen.Uint32(d.d.decRd.readn4()))) + return d.uint2Len(uint64(bigen.Uint32(d.r.readn4()))) case 4: - return d.uint2Len(bigen.Uint64(d.d.decRd.readn8())) + return d.uint2Len(bigen.Uint64(d.r.readn8())) } - d.d.errorf("cannot read length: bd%%8 must be in range 0..4. Got: %d", d.bd%8) + halt.errorf("cannot read length: bd%%8 must be in range 0..4. Got: %d", d.bd%8) return -1 } -func (d *simpleDecDriver) DecodeStringAsBytes() (s []byte) { - return d.DecodeBytes(nil) +func (d *simpleDecDriver[T]) DecodeStringAsBytes() ([]byte, dBytesAttachState) { + return d.DecodeBytes() } -func (d *simpleDecDriver) DecodeBytes(bs []byte) (bsOut []byte) { - d.d.decByteState = decByteStateNone +func (d *simpleDecDriver[T]) DecodeBytes() (bs []byte, state dBytesAttachState) { if d.advanceNil() { return } + var cond bool // check if an "array" of uint8's (see ContainerType for how to infer if an array) - if d.bd >= simpleVdArray && d.bd <= simpleVdMap+4 { - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } + if d.bd >= simpleVdArray && d.bd <= simpleVdArray+4 { slen := d.ReadArrayStart() - var changed bool - if bs, changed = usableByteSlice(bs, slen); changed { - d.d.decByteState = decByteStateNone - } + bs, cond = usableByteSlice(d.d.buf, slen) for i := 0; i < len(bs); i++ { bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) } for i := len(bs); i < slen; i++ { bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) } - return bs + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + + return } clen := d.decLen() d.bdRead = false - if d.d.zerocopy() { - d.d.decByteState = decByteStateZerocopy - return d.d.decRd.rb.readx(uint(clen)) - } - if bs == nil { - d.d.decByteState = decByteStateReuseBuf - bs = d.d.b[:] - } - return decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, bs) + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return } -func (d *simpleDecDriver) DecodeTime() (t time.Time) { +func (d *simpleDecDriver[T]) DecodeTime() (t time.Time) { if d.advanceNil() { return } if d.bd != simpleVdTime { - d.d.errorf("invalid descriptor for time.Time - expect 0x%x, received 0x%x", simpleVdTime, d.bd) + halt.errorf("invalid descriptor for time.Time - expect 0x%x, received 0x%x", simpleVdTime, d.bd) } d.bdRead = false - clen := uint(d.d.decRd.readn1()) - b := d.d.decRd.readx(clen) - d.d.onerror((&t).UnmarshalBinary(b)) + clen := uint(d.r.readn1()) + b := d.r.readx(clen) + halt.onerror((&t).UnmarshalBinary(b)) return } -func (d *simpleDecDriver) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { - if xtag > 0xff { - d.d.errorf("ext: tag must be <= 0xff; got: %v", xtag) - } - if d.advanceNil() { +func (d *simpleDecDriver[T]) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { return } - xbs, realxtag1, zerocopy := d.decodeExtV(ext != nil, uint8(xtag)) - realxtag := uint64(realxtag1) - if ext == nil { - re := rv.(*RawExt) - re.Tag = realxtag - re.setData(xbs, zerocopy) - } else if ext == SelfExt { - d.d.sideDecode(rv, basetype, xbs) + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) } else { ext.ReadExt(rv, xbs) } } -func (d *simpleDecDriver) decodeExtV(verifyTag bool, tag byte) (xbs []byte, xtag byte, zerocopy bool) { +func (d *simpleDecDriver[T]) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *simpleDecDriver[T]) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) switch d.bd { case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: l := d.decLen() - xtag = d.d.decRd.readn1() + xtag = d.r.readn1() if verifyTag && xtag != tag { - d.d.errorf("wrong extension tag. Got %b. Expecting: %v", xtag, tag) - } - if d.d.bytes { - xbs = d.d.decRd.rb.readx(uint(l)) - zerocopy = true - } else { - xbs = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:]) + halt.errorf("wrong extension tag. Got %b. Expecting: %v", xtag, tag) } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: - xbs = d.DecodeBytes(nil) + xbs, bstate = d.DecodeBytes() default: - d.d.errorf("ext - %s - expecting extensions/bytearray, got: 0x%x", msgBadDesc, d.bd) + halt.errorf("ext - %s - expecting extensions/bytearray, got: 0x%x", msgBadDesc, d.bd) } d.bdRead = false + ok = true return } -func (d *simpleDecDriver) DecodeNaked() { +func (d *simpleDecDriver[T]) DecodeNaked() { if !d.bdRead { d.readNextBd() } @@ -566,19 +560,20 @@ func (d *simpleDecDriver) DecodeNaked() { case simpleVdString, simpleVdString + 1, simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: n.v = valueTypeString - n.s = d.d.stringZC(d.DecodeStringAsBytes()) + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: - d.d.fauxUnionReadRawBytes(false) + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) //, d.h.ZeroCopy) case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: n.v = valueTypeExt l := d.decLen() - n.u = uint64(d.d.decRd.readn1()) - if d.d.bytes { - n.l = d.d.decRd.rb.readx(uint(l)) - } else { - n.l = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:]) - } + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) + // MARKER: not necessary to detach for extensions + // var useBuf bool + // n.l, useBuf = d.r.readxb(uint(l)) + // n.a = d.d.attachState(useBuf) + // n.l = d.d.detach2Bytes(n.l, nil, n.a) case simpleVdArray, simpleVdArray + 1, simpleVdArray + 2, simpleVdArray + 3, simpleVdArray + 4: n.v = valueTypeArray @@ -587,7 +582,7 @@ func (d *simpleDecDriver) DecodeNaked() { n.v = valueTypeMap decodeFurther = true default: - d.d.errorf("cannot infer value - %s 0x%x", msgBadDesc, d.bd) + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, d.bd) } if !decodeFurther { @@ -595,32 +590,18 @@ func (d *simpleDecDriver) DecodeNaked() { } } -func (d *simpleDecDriver) nextValueBytes(v0 []byte) (v []byte) { +func (d *simpleDecDriver[T]) nextValueBytes() (v []byte) { if !d.bdRead { d.readNextBd() } - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - var cursor = d.d.rb.c - 1 - h.append1(&v, d.bd) - v = d.nextValueBytesBdReadR(v) + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() d.bdRead = false - h.bytesRdV(&v, cursor) return } -func (d *simpleDecDriver) nextValueBytesR(v0 []byte) (v []byte) { - d.readNextBd() - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - h.append1(&v, d.bd) - return d.nextValueBytesBdReadR(v) -} - -func (d *simpleDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { - v = v0 - var h = decNextValueBytesHelper{d: &d.d} - +func (d *simpleDecDriver[T]) nextValueBytesBdReadR() { c := d.bd var length uint @@ -629,38 +610,33 @@ func (d *simpleDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { case simpleVdNil, simpleVdFalse, simpleVdTrue, simpleVdString, simpleVdByteArray: // pass case simpleVdPosInt, simpleVdNegInt: - h.append1(&v, d.d.decRd.readn1()) + d.r.readn1() case simpleVdPosInt + 1, simpleVdNegInt + 1: - h.appendN(&v, d.d.decRd.readx(2)...) + d.r.skip(2) case simpleVdPosInt + 2, simpleVdNegInt + 2, simpleVdFloat32: - h.appendN(&v, d.d.decRd.readx(4)...) + d.r.skip(4) case simpleVdPosInt + 3, simpleVdNegInt + 3, simpleVdFloat64: - h.appendN(&v, d.d.decRd.readx(8)...) + d.r.skip(8) case simpleVdTime: - c = d.d.decRd.readn1() - h.append1(&v, c) - h.appendN(&v, d.d.decRd.readx(uint(c))...) + c = d.r.readn1() + d.r.skip(uint(c)) default: switch c & 7 { // c % 8 { case 0: length = 0 case 1: - b := d.d.decRd.readn1() + b := d.r.readn1() length = uint(b) - h.append1(&v, b) case 2: - x := d.d.decRd.readn2() + x := d.r.readn2() length = uint(bigen.Uint16(x)) - h.appendN(&v, x[:]...) case 3: - x := d.d.decRd.readn4() + x := d.r.readn4() length = uint(bigen.Uint32(x)) - h.appendN(&v, x[:]...) case 4: - x := d.d.decRd.readn8() + x := d.r.readn8() length = uint(bigen.Uint64(x)) - h.appendN(&v, x[:]...) } bExt := c >= simpleVdExt && c <= simpleVdExt+7 @@ -670,11 +646,11 @@ func (d *simpleDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { bMap := c >= simpleVdMap && c <= simpleVdMap+7 if !(bExt || bStr || bByteArray || bArray || bMap) { - d.d.errorf("cannot infer value - %s 0x%x", msgBadDesc, c) + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, c) } if bExt { - h.append1(&v, d.d.decRd.readn1()) // tag + d.r.readn1() // tag } if length == 0 { @@ -683,68 +659,91 @@ func (d *simpleDecDriver) nextValueBytesBdReadR(v0 []byte) (v []byte) { if bArray { for i := uint(0); i < length; i++ { - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() } } else if bMap { for i := uint(0); i < length; i++ { - v = d.nextValueBytesR(v) - v = d.nextValueBytesR(v) + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() } } else { - h.appendN(&v, d.d.decRd.readx(length)...) + d.r.skip(length) } } return } -//------------------------------------ - -// SimpleHandle is a Handle for a very simple encoding format. +// ---- // -// simple is a simplistic codec similar to binc, but not as compact. -// - Encoding of a value is always preceded by the descriptor byte (bd) -// - True, false, nil are encoded fully in 1 byte (the descriptor) -// - Integers (intXXX, uintXXX) are encoded in 1, 2, 4 or 8 bytes (plus a descriptor byte). -// There are positive (uintXXX and intXXX >= 0) and negative (intXXX < 0) integers. -// - Floats are encoded in 4 or 8 bytes (plus a descriptor byte) -// - Length of containers (strings, bytes, array, map, extensions) -// are encoded in 0, 1, 2, 4 or 8 bytes. -// Zero-length containers have no length encoded. -// For others, the number of bytes is given by pow(2, bd%3) -// - maps are encoded as [bd] [length] [[key][value]]... -// - arrays are encoded as [bd] [length] [value]... -// - extensions are encoded as [bd] [length] [tag] [byte]... -// - strings/bytearrays are encoded as [bd] [length] [byte]... -// - time.Time are encoded as [bd] [length] [byte]... +// The following below are similar across all format files (except for the format name). // -// The full spec will be published soon. -type SimpleHandle struct { - binaryEncodingType - BasicHandle - // EncZeroValuesAsNil says to encode zero values for numbers, bool, string, etc as nil - EncZeroValuesAsNil bool +// We keep them together here, so that we can easily copy and compare. + +// ---- + +func (d *simpleEncDriver[T]) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*SimpleHandle) + d.e = shared + if shared.bytes { + fp = simpleFpEncBytes + } else { + fp = simpleFpEncIO + } + // d.w.init() + d.init2(enc) + return +} + +func (e *simpleEncDriver[T]) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *simpleEncDriver[T]) writerEnd() { e.w.end() } + +func (e *simpleEncDriver[T]) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *simpleEncDriver[T]) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +// ---- + +func (d *simpleDecDriver[T]) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*SimpleHandle) + d.d = shared + if shared.bytes { + fp = simpleFpDecBytes + } else { + fp = simpleFpDecIO + } + // d.r.init() + d.init2(dec) + return } -// Name returns the name of the handle: simple -func (h *SimpleHandle) Name() string { return "simple" } +func (d *simpleDecDriver[T]) NumBytesRead() int { + return int(d.r.numread()) +} -func (h *SimpleHandle) desc(bd byte) string { return simpledesc(bd) } +func (d *simpleDecDriver[T]) resetInBytes(in []byte) { + d.r.resetBytes(in) +} -func (h *SimpleHandle) newEncDriver() encDriver { - var e = &simpleEncDriver{h: h} - e.e.e = e - e.e.init(h) - e.reset() - return e +func (d *simpleDecDriver[T]) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) } -func (h *SimpleHandle) newDecDriver() decDriver { - d := &simpleDecDriver{h: h} - d.d.d = d - d.d.init(h) - d.reset() - return d +// ---- (custom stanza) + +func (d *simpleDecDriver[T]) descBd() string { + return sprintf("%v (%s)", d.bd, simpledesc(d.bd)) } -var _ decDriver = (*simpleDecDriver)(nil) -var _ encDriver = (*simpleEncDriver)(nil) +func (d *simpleDecDriver[T]) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/simple.mono.generated.go b/vendor/github.com/ugorji/go/codec/simple.mono.generated.go new file mode 100644 index 000000000..ff1b02238 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/simple.mono.generated.go @@ -0,0 +1,7549 @@ +//go:build !notmono && !codec.notmono + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + + "io" + "math" + "reflect" + "slices" + "sort" + "strconv" + "sync" + "time" +) + +type helperEncDriverSimpleBytes struct{} +type encFnSimpleBytes struct { + i encFnInfo + fe func(*encoderSimpleBytes, *encFnInfo, reflect.Value) +} +type encRtidFnSimpleBytes struct { + rtid uintptr + fn *encFnSimpleBytes +} +type encoderSimpleBytes struct { + dh helperEncDriverSimpleBytes + fp *fastpathEsSimpleBytes + e simpleEncDriverBytes + encoderBase +} +type helperDecDriverSimpleBytes struct{} +type decFnSimpleBytes struct { + i decFnInfo + fd func(*decoderSimpleBytes, *decFnInfo, reflect.Value) +} +type decRtidFnSimpleBytes struct { + rtid uintptr + fn *decFnSimpleBytes +} +type decoderSimpleBytes struct { + dh helperDecDriverSimpleBytes + fp *fastpathDsSimpleBytes + d simpleDecDriverBytes + decoderBase +} +type simpleEncDriverBytes struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverNoState + encDriverContainerNoTrackerT + encInit2er + + h *SimpleHandle + e *encoderBase + + w bytesEncAppender +} +type simpleDecDriverBytes struct { + h *SimpleHandle + d *decoderBase + r bytesDecReader + + bdAndBdread + + noBuiltInTypes + + decDriverNoopContainerReader + decInit2er +} + +func (e *encoderSimpleBytes) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderSimpleBytes) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderSimpleBytes) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderSimpleBytes) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderSimpleBytes) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderSimpleBytes) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderSimpleBytes) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderSimpleBytes) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderSimpleBytes) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderSimpleBytes) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderSimpleBytes) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderSimpleBytes) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderSimpleBytes) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderSimpleBytes) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderSimpleBytes) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderSimpleBytes) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderSimpleBytes) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderSimpleBytes) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderSimpleBytes) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderSimpleBytes) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderSimpleBytes) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderSimpleBytes) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderSimpleBytes) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderSimpleBytes) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderSimpleBytes) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderSimpleBytes) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderSimpleBytes) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderSimpleBytes) kSeqFn(rt reflect.Type) (fn *encFnSimpleBytes) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderSimpleBytes) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnSimpleBytes + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderSimpleBytes) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnSimpleBytes + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderSimpleBytes) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderSimpleBytes) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderSimpleBytes) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderSimpleBytes) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderSimpleBytes) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderSimpleBytes) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderSimpleBytes) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderSimpleBytes) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnSimpleBytes + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleBytes) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnSimpleBytes) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderSimpleBytes) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsSimpleBytes) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderSimpleBytes) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderSimpleBytes) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderSimpleBytes) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderSimpleBytes) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderSimpleBytes) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderSimpleBytes) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderSimpleBytes) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderSimpleBytes) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderSimpleBytes) encodeValue(rv reflect.Value, fn *encFnSimpleBytes) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderSimpleBytes) encodeValueNonNil(rv reflect.Value, fn *encFnSimpleBytes) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderSimpleBytes) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderSimpleBytes) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderSimpleBytes) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderSimpleBytes) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderSimpleBytes) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderSimpleBytes) fn(t reflect.Type) *encFnSimpleBytes { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderSimpleBytes) fnNoExt(t reflect.Type) *encFnSimpleBytes { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderSimpleBytes) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderSimpleBytes) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderSimpleBytes) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderSimpleBytes) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderSimpleBytes) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderSimpleBytes) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderSimpleBytes) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderSimpleBytes) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverSimpleBytes) newEncoderBytes(out *[]byte, h Handle) *encoderSimpleBytes { + var c1 encoderSimpleBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverSimpleBytes) newEncoderIO(out io.Writer, h Handle) *encoderSimpleBytes { + var c1 encoderSimpleBytes + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverSimpleBytes) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsSimpleBytes) (f *fastpathESimpleBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverSimpleBytes) encFindRtidFn(s []encRtidFnSimpleBytes, rtid uintptr) (i uint, fn *encFnSimpleBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverSimpleBytes) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnSimpleBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnSimpleBytes](v)) + } + return +} + +func (dh helperEncDriverSimpleBytes) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsSimpleBytes, checkExt bool) (fn *encFnSimpleBytes) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverSimpleBytes) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleBytes) { + rtid := rt2id(rt) + var sp []encRtidFnSimpleBytes = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverSimpleBytes) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleBytes) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnSimpleBytes + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnSimpleBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnSimpleBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnSimpleBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverSimpleBytes) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleBytes) { + fn = new(encFnSimpleBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderSimpleBytes).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderSimpleBytes).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderSimpleBytes).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderSimpleBytes).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderSimpleBytes).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderSimpleBytes).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderSimpleBytes).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderSimpleBytes).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderSimpleBytes, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderSimpleBytes).kBool + case reflect.String: + + fn.fe = (*encoderSimpleBytes).kString + case reflect.Int: + fn.fe = (*encoderSimpleBytes).kInt + case reflect.Int8: + fn.fe = (*encoderSimpleBytes).kInt8 + case reflect.Int16: + fn.fe = (*encoderSimpleBytes).kInt16 + case reflect.Int32: + fn.fe = (*encoderSimpleBytes).kInt32 + case reflect.Int64: + fn.fe = (*encoderSimpleBytes).kInt64 + case reflect.Uint: + fn.fe = (*encoderSimpleBytes).kUint + case reflect.Uint8: + fn.fe = (*encoderSimpleBytes).kUint8 + case reflect.Uint16: + fn.fe = (*encoderSimpleBytes).kUint16 + case reflect.Uint32: + fn.fe = (*encoderSimpleBytes).kUint32 + case reflect.Uint64: + fn.fe = (*encoderSimpleBytes).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderSimpleBytes).kUintptr + case reflect.Float32: + fn.fe = (*encoderSimpleBytes).kFloat32 + case reflect.Float64: + fn.fe = (*encoderSimpleBytes).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderSimpleBytes).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderSimpleBytes).kComplex128 + case reflect.Chan: + fn.fe = (*encoderSimpleBytes).kChan + case reflect.Slice: + fn.fe = (*encoderSimpleBytes).kSlice + case reflect.Array: + fn.fe = (*encoderSimpleBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderSimpleBytes).kStructSimple + } else { + fn.fe = (*encoderSimpleBytes).kStruct + } + case reflect.Map: + fn.fe = (*encoderSimpleBytes).kMap + case reflect.Interface: + + fn.fe = (*encoderSimpleBytes).kErr + default: + + fn.fe = (*encoderSimpleBytes).kErr + } + } + } + return +} +func (d *decoderSimpleBytes) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderSimpleBytes) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderSimpleBytes) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderSimpleBytes) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderSimpleBytes) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderSimpleBytes) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderSimpleBytes) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderSimpleBytes) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderSimpleBytes) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderSimpleBytes) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderSimpleBytes) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderSimpleBytes) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderSimpleBytes) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderSimpleBytes) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderSimpleBytes) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderSimpleBytes) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderSimpleBytes) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderSimpleBytes) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderSimpleBytes) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderSimpleBytes) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderSimpleBytes) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderSimpleBytes) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderSimpleBytes) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderSimpleBytes) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderSimpleBytes) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderSimpleBytes) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderSimpleBytes) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderSimpleBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderSimpleBytes) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderSimpleBytes) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderSimpleBytes) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderSimpleBytes) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderSimpleBytes) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnSimpleBytes + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderSimpleBytes) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnSimpleBytes + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleBytes) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnSimpleBytes + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderSimpleBytes) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnSimpleBytes + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderSimpleBytes) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsSimpleBytes) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderSimpleBytes) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderSimpleBytes) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderSimpleBytes) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderSimpleBytes) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderSimpleBytes) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderSimpleBytes) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderSimpleBytes) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderSimpleBytes) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderSimpleBytes) Release() {} + +func (d *decoderSimpleBytes) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderSimpleBytes) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderSimpleBytes) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderSimpleBytes) decodeValue(rv reflect.Value, fn *decFnSimpleBytes) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderSimpleBytes) decodeValueNoCheckNil(rv reflect.Value, fn *decFnSimpleBytes) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderSimpleBytes) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderSimpleBytes) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderSimpleBytes) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderSimpleBytes) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderSimpleBytes) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderSimpleBytes) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderSimpleBytes) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderSimpleBytes) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderSimpleBytes) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderSimpleBytes) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderSimpleBytes) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderSimpleBytes) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderSimpleBytes) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderSimpleBytes) fn(t reflect.Type) *decFnSimpleBytes { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderSimpleBytes) fnNoExt(t reflect.Type) *decFnSimpleBytes { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverSimpleBytes) newDecoderBytes(in []byte, h Handle) *decoderSimpleBytes { + var c1 decoderSimpleBytes + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverSimpleBytes) newDecoderIO(in io.Reader, h Handle) *decoderSimpleBytes { + var c1 decoderSimpleBytes + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverSimpleBytes) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsSimpleBytes) (f *fastpathDSimpleBytes, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverSimpleBytes) decFindRtidFn(s []decRtidFnSimpleBytes, rtid uintptr) (i uint, fn *decFnSimpleBytes) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverSimpleBytes) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnSimpleBytes) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnSimpleBytes](v)) + } + return +} + +func (dh helperDecDriverSimpleBytes) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsSimpleBytes, + checkExt bool) (fn *decFnSimpleBytes) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverSimpleBytes) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleBytes) { + rtid := rt2id(rt) + var sp []decRtidFnSimpleBytes = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverSimpleBytes) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleBytes) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnSimpleBytes + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnSimpleBytes{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnSimpleBytes, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnSimpleBytes{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverSimpleBytes) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsSimpleBytes, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleBytes) { + fn = new(decFnSimpleBytes) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderSimpleBytes).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderSimpleBytes).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderSimpleBytes).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderSimpleBytes).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderSimpleBytes).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderSimpleBytes).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderSimpleBytes).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderSimpleBytes).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderSimpleBytes, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderSimpleBytes, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderSimpleBytes).kBool + case reflect.String: + fn.fd = (*decoderSimpleBytes).kString + case reflect.Int: + fn.fd = (*decoderSimpleBytes).kInt + case reflect.Int8: + fn.fd = (*decoderSimpleBytes).kInt8 + case reflect.Int16: + fn.fd = (*decoderSimpleBytes).kInt16 + case reflect.Int32: + fn.fd = (*decoderSimpleBytes).kInt32 + case reflect.Int64: + fn.fd = (*decoderSimpleBytes).kInt64 + case reflect.Uint: + fn.fd = (*decoderSimpleBytes).kUint + case reflect.Uint8: + fn.fd = (*decoderSimpleBytes).kUint8 + case reflect.Uint16: + fn.fd = (*decoderSimpleBytes).kUint16 + case reflect.Uint32: + fn.fd = (*decoderSimpleBytes).kUint32 + case reflect.Uint64: + fn.fd = (*decoderSimpleBytes).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderSimpleBytes).kUintptr + case reflect.Float32: + fn.fd = (*decoderSimpleBytes).kFloat32 + case reflect.Float64: + fn.fd = (*decoderSimpleBytes).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderSimpleBytes).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderSimpleBytes).kComplex128 + case reflect.Chan: + fn.fd = (*decoderSimpleBytes).kChan + case reflect.Slice: + fn.fd = (*decoderSimpleBytes).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderSimpleBytes).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderSimpleBytes).kStructSimple + } else { + fn.fd = (*decoderSimpleBytes).kStruct + } + case reflect.Map: + fn.fd = (*decoderSimpleBytes).kMap + case reflect.Interface: + + fn.fd = (*decoderSimpleBytes).kInterface + default: + + fn.fd = (*decoderSimpleBytes).kErr + } + } + } + return +} +func (e *simpleEncDriverBytes) EncodeNil() { + e.w.writen1(simpleVdNil) +} + +func (e *simpleEncDriverBytes) EncodeBool(b bool) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && !b { + e.EncodeNil() + return + } + if b { + e.w.writen1(simpleVdTrue) + } else { + e.w.writen1(simpleVdFalse) + } +} + +func (e *simpleEncDriverBytes) EncodeFloat32(f float32) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { + e.EncodeNil() + return + } + e.w.writen1(simpleVdFloat32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) +} + +func (e *simpleEncDriverBytes) EncodeFloat64(f float64) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { + e.EncodeNil() + return + } + e.w.writen1(simpleVdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *simpleEncDriverBytes) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-v), simpleVdNegInt) + } else { + e.encUint(uint64(v), simpleVdPosInt) + } +} + +func (e *simpleEncDriverBytes) EncodeUint(v uint64) { + e.encUint(v, simpleVdPosInt) +} + +func (e *simpleEncDriverBytes) encUint(v uint64, bd uint8) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == 0 { + e.EncodeNil() + return + } + if v <= math.MaxUint8 { + e.w.writen2(bd, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 1) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 2) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd + 3) + e.w.writen8(bigen.PutUint64(v)) + } +} + +func (e *simpleEncDriverBytes) encLen(bd byte, length int) { + if length == 0 { + e.w.writen1(bd) + } else if length <= math.MaxUint8 { + e.w.writen1(bd + 1) + e.w.writen1(uint8(length)) + } else if length <= math.MaxUint16 { + e.w.writen1(bd + 2) + e.w.writen2(bigen.PutUint16(uint16(length))) + } else if int64(length) <= math.MaxUint32 { + e.w.writen1(bd + 3) + e.w.writen4(bigen.PutUint32(uint32(length))) + } else { + e.w.writen1(bd + 4) + e.w.writen8(bigen.PutUint64(uint64(length))) + } +} + +func (e *simpleEncDriverBytes) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *simpleEncDriverBytes) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *simpleEncDriverBytes) encodeExtPreamble(xtag byte, length int) { + e.encLen(simpleVdExt, length) + e.w.writen1(xtag) +} + +func (e *simpleEncDriverBytes) WriteArrayStart(length int) { + e.encLen(simpleVdArray, length) +} + +func (e *simpleEncDriverBytes) WriteMapStart(length int) { + e.encLen(simpleVdMap, length) +} + +func (e *simpleEncDriverBytes) WriteArrayEmpty() { + + e.w.writen1(simpleVdArray) +} + +func (e *simpleEncDriverBytes) WriteMapEmpty() { + + e.w.writen1(simpleVdMap) +} + +func (e *simpleEncDriverBytes) EncodeString(v string) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == "" { + e.EncodeNil() + return + } + if e.h.StringToRaw { + e.encLen(simpleVdByteArray, len(v)) + } else { + e.encLen(simpleVdString, len(v)) + } + e.w.writestr(v) +} + +func (e *simpleEncDriverBytes) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *simpleEncDriverBytes) EncodeStringBytesRaw(v []byte) { + + e.encLen(simpleVdByteArray, len(v)) + e.w.writeb(v) +} + +func (e *simpleEncDriverBytes) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *simpleEncDriverBytes) encodeNilBytes() { + b := byte(simpleVdNil) + if e.h.NilCollectionToZeroLength { + b = simpleVdArray + } + e.w.writen1(b) +} + +func (e *simpleEncDriverBytes) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = simpleVdNil + } + e.w.writen1(v) +} + +func (e *simpleEncDriverBytes) writeNilArray() { + e.writeNilOr(simpleVdArray) +} + +func (e *simpleEncDriverBytes) writeNilMap() { + e.writeNilOr(simpleVdMap) +} + +func (e *simpleEncDriverBytes) writeNilBytes() { + e.writeNilOr(simpleVdByteArray) +} + +func (e *simpleEncDriverBytes) EncodeTime(t time.Time) { + + if t.IsZero() { + e.EncodeNil() + return + } + v, err := t.MarshalBinary() + halt.onerror(err) + e.w.writen2(simpleVdTime, uint8(len(v))) + e.w.writeb(v) +} + +func (d *simpleDecDriverBytes) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *simpleDecDriverBytes) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdNil { + d.bdRead = false + return true + } + return +} + +func (d *simpleDecDriverBytes) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case simpleVdNil: + d.bdRead = false + return valueTypeNil + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + return valueTypeBytes + case simpleVdString, simpleVdString + 1, + simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: + return valueTypeString + case simpleVdArray, simpleVdArray + 1, + simpleVdArray + 2, simpleVdArray + 3, simpleVdArray + 4: + return valueTypeArray + case simpleVdMap, simpleVdMap + 1, + simpleVdMap + 2, simpleVdMap + 3, simpleVdMap + 4: + return valueTypeMap + } + return valueTypeUnset +} + +func (d *simpleDecDriverBytes) TryNil() bool { + return d.advanceNil() +} + +func (d *simpleDecDriverBytes) decFloat() (f float64, ok bool) { + ok = true + switch d.bd { + case simpleVdFloat32: + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case simpleVdFloat64: + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + default: + ok = false + } + return +} + +func (d *simpleDecDriverBytes) decInteger() (ui uint64, neg, ok bool) { + ok = true + switch d.bd { + case simpleVdPosInt: + ui = uint64(d.r.readn1()) + case simpleVdPosInt + 1: + ui = uint64(bigen.Uint16(d.r.readn2())) + case simpleVdPosInt + 2: + ui = uint64(bigen.Uint32(d.r.readn4())) + case simpleVdPosInt + 3: + ui = uint64(bigen.Uint64(d.r.readn8())) + case simpleVdNegInt: + ui = uint64(d.r.readn1()) + neg = true + case simpleVdNegInt + 1: + ui = uint64(bigen.Uint16(d.r.readn2())) + neg = true + case simpleVdNegInt + 2: + ui = uint64(bigen.Uint32(d.r.readn4())) + neg = true + case simpleVdNegInt + 3: + ui = uint64(bigen.Uint64(d.r.readn8())) + neg = true + default: + ok = false + + } + + return +} + +func (d *simpleDecDriverBytes) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) + d.bdRead = false + return +} + +func (d *simpleDecDriverBytes) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *simpleDecDriverBytes) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) + d.bdRead = false + return +} + +func (d *simpleDecDriverBytes) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == simpleVdFalse { + } else if d.bd == simpleVdTrue { + b = true + } else { + halt.errorf("cannot decode bool - %s: %x", msgBadDesc, d.bd) + } + d.bdRead = false + return +} + +func (d *simpleDecDriverBytes) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriverBytes) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriverBytes) uint2Len(ui uint64) int { + if chkOvf.Uint(ui, intBitsize) { + halt.errorf("overflow integer: %v", ui) + } + return int(ui) +} + +func (d *simpleDecDriverBytes) decLen() int { + switch d.bd & 7 { + case 0: + return 0 + case 1: + return int(d.r.readn1()) + case 2: + return int(bigen.Uint16(d.r.readn2())) + case 3: + return d.uint2Len(uint64(bigen.Uint32(d.r.readn4()))) + case 4: + return d.uint2Len(bigen.Uint64(d.r.readn8())) + } + halt.errorf("cannot read length: bd%%8 must be in range 0..4. Got: %d", d.bd%8) + return -1 +} + +func (d *simpleDecDriverBytes) DecodeStringAsBytes() ([]byte, dBytesAttachState) { + return d.DecodeBytes() +} + +func (d *simpleDecDriverBytes) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + + if d.bd >= simpleVdArray && d.bd <= simpleVdArray+4 { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + + return + } + + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *simpleDecDriverBytes) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.bd != simpleVdTime { + halt.errorf("invalid descriptor for time.Time - expect 0x%x, received 0x%x", simpleVdTime, d.bd) + } + d.bdRead = false + clen := uint(d.r.readn1()) + b := d.r.readx(clen) + halt.onerror((&t).UnmarshalBinary(b)) + return +} + +func (d *simpleDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *simpleDecDriverBytes) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *simpleDecDriverBytes) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + switch d.bd { + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag. Got %b. Expecting: %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + xbs, bstate = d.DecodeBytes() + default: + halt.errorf("ext - %s - expecting extensions/bytearray, got: 0x%x", msgBadDesc, d.bd) + } + d.bdRead = false + ok = true + return +} + +func (d *simpleDecDriverBytes) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + + switch d.bd { + case simpleVdNil: + n.v = valueTypeNil + case simpleVdFalse: + n.v = valueTypeBool + n.b = false + case simpleVdTrue: + n.v = valueTypeBool + n.b = true + case simpleVdPosInt, simpleVdPosInt + 1, simpleVdPosInt + 2, simpleVdPosInt + 3: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt64() + } else { + n.v = valueTypeUint + n.u = d.DecodeUint64() + } + case simpleVdNegInt, simpleVdNegInt + 1, simpleVdNegInt + 2, simpleVdNegInt + 3: + n.v = valueTypeInt + n.i = d.DecodeInt64() + case simpleVdFloat32: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + case simpleVdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + case simpleVdTime: + n.v = valueTypeTime + n.t = d.DecodeTime() + case simpleVdString, simpleVdString + 1, + simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) + + case simpleVdArray, simpleVdArray + 1, simpleVdArray + 2, + simpleVdArray + 3, simpleVdArray + 4: + n.v = valueTypeArray + decodeFurther = true + case simpleVdMap, simpleVdMap + 1, simpleVdMap + 2, simpleVdMap + 3, simpleVdMap + 4: + n.v = valueTypeMap + decodeFurther = true + default: + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, d.bd) + } + + if !decodeFurther { + d.bdRead = false + } +} + +func (d *simpleDecDriverBytes) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *simpleDecDriverBytes) nextValueBytesBdReadR() { + c := d.bd + + var length uint + + switch c { + case simpleVdNil, simpleVdFalse, simpleVdTrue, simpleVdString, simpleVdByteArray: + + case simpleVdPosInt, simpleVdNegInt: + d.r.readn1() + case simpleVdPosInt + 1, simpleVdNegInt + 1: + d.r.skip(2) + case simpleVdPosInt + 2, simpleVdNegInt + 2, simpleVdFloat32: + d.r.skip(4) + case simpleVdPosInt + 3, simpleVdNegInt + 3, simpleVdFloat64: + d.r.skip(8) + case simpleVdTime: + c = d.r.readn1() + d.r.skip(uint(c)) + + default: + switch c & 7 { + case 0: + length = 0 + case 1: + b := d.r.readn1() + length = uint(b) + case 2: + x := d.r.readn2() + length = uint(bigen.Uint16(x)) + case 3: + x := d.r.readn4() + length = uint(bigen.Uint32(x)) + case 4: + x := d.r.readn8() + length = uint(bigen.Uint64(x)) + } + + bExt := c >= simpleVdExt && c <= simpleVdExt+7 + bStr := c >= simpleVdString && c <= simpleVdString+7 + bByteArray := c >= simpleVdByteArray && c <= simpleVdByteArray+7 + bArray := c >= simpleVdArray && c <= simpleVdArray+7 + bMap := c >= simpleVdMap && c <= simpleVdMap+7 + + if !(bExt || bStr || bByteArray || bArray || bMap) { + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, c) + } + + if bExt { + d.r.readn1() + } + + if length == 0 { + break + } + + if bArray { + for i := uint(0); i < length; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else if bMap { + for i := uint(0); i < length; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else { + d.r.skip(length) + } + } + return +} + +func (d *simpleEncDriverBytes) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*SimpleHandle) + d.e = shared + if shared.bytes { + fp = simpleFpEncBytes + } else { + fp = simpleFpEncIO + } + + d.init2(enc) + return +} + +func (e *simpleEncDriverBytes) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *simpleEncDriverBytes) writerEnd() { e.w.end() } + +func (e *simpleEncDriverBytes) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *simpleEncDriverBytes) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *simpleDecDriverBytes) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*SimpleHandle) + d.d = shared + if shared.bytes { + fp = simpleFpDecBytes + } else { + fp = simpleFpDecIO + } + + d.init2(dec) + return +} + +func (d *simpleDecDriverBytes) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *simpleDecDriverBytes) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *simpleDecDriverBytes) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *simpleDecDriverBytes) descBd() string { + return sprintf("%v (%s)", d.bd, simpledesc(d.bd)) +} + +func (d *simpleDecDriverBytes) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} + +type helperEncDriverSimpleIO struct{} +type encFnSimpleIO struct { + i encFnInfo + fe func(*encoderSimpleIO, *encFnInfo, reflect.Value) +} +type encRtidFnSimpleIO struct { + rtid uintptr + fn *encFnSimpleIO +} +type encoderSimpleIO struct { + dh helperEncDriverSimpleIO + fp *fastpathEsSimpleIO + e simpleEncDriverIO + encoderBase +} +type helperDecDriverSimpleIO struct{} +type decFnSimpleIO struct { + i decFnInfo + fd func(*decoderSimpleIO, *decFnInfo, reflect.Value) +} +type decRtidFnSimpleIO struct { + rtid uintptr + fn *decFnSimpleIO +} +type decoderSimpleIO struct { + dh helperDecDriverSimpleIO + fp *fastpathDsSimpleIO + d simpleDecDriverIO + decoderBase +} +type simpleEncDriverIO struct { + noBuiltInTypes + encDriverNoopContainerWriter + encDriverNoState + encDriverContainerNoTrackerT + encInit2er + + h *SimpleHandle + e *encoderBase + + w bufioEncWriter +} +type simpleDecDriverIO struct { + h *SimpleHandle + d *decoderBase + r ioDecReader + + bdAndBdread + + noBuiltInTypes + + decDriverNoopContainerReader + decInit2er +} + +func (e *encoderSimpleIO) rawExt(_ *encFnInfo, rv reflect.Value) { + if re := rv2i(rv).(*RawExt); re == nil { + e.e.EncodeNil() + } else { + e.e.EncodeRawExt(re) + } +} + +func (e *encoderSimpleIO) ext(f *encFnInfo, rv reflect.Value) { + e.e.EncodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (e *encoderSimpleIO) selferMarshal(_ *encFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecEncodeSelf(&Encoder{e}) +} + +func (e *encoderSimpleIO) binaryMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary() + e.marshalRaw(bs, fnerr) +} + +func (e *encoderSimpleIO) textMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText() + e.marshalUtf8(bs, fnerr) +} + +func (e *encoderSimpleIO) jsonMarshal(_ *encFnInfo, rv reflect.Value) { + bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON() + e.marshalAsis(bs, fnerr) +} + +func (e *encoderSimpleIO) raw(_ *encFnInfo, rv reflect.Value) { + e.rawBytes(rv2i(rv).(Raw)) +} + +func (e *encoderSimpleIO) encodeComplex64(v complex64) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat32(real(v)) +} + +func (e *encoderSimpleIO) encodeComplex128(v complex128) { + if imag(v) != 0 { + halt.errorf("cannot encode complex number: %v, with imaginary values: %v", any(v), any(imag(v))) + } + e.e.EncodeFloat64(real(v)) +} + +func (e *encoderSimpleIO) kBool(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeBool(rvGetBool(rv)) +} + +func (e *encoderSimpleIO) kTime(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeTime(rvGetTime(rv)) +} + +func (e *encoderSimpleIO) kString(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeString(rvGetString(rv)) +} + +func (e *encoderSimpleIO) kFloat32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat32(rvGetFloat32(rv)) +} + +func (e *encoderSimpleIO) kFloat64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeFloat64(rvGetFloat64(rv)) +} + +func (e *encoderSimpleIO) kComplex64(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex64(rvGetComplex64(rv)) +} + +func (e *encoderSimpleIO) kComplex128(_ *encFnInfo, rv reflect.Value) { + e.encodeComplex128(rvGetComplex128(rv)) +} + +func (e *encoderSimpleIO) kInt(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt(rv))) +} + +func (e *encoderSimpleIO) kInt8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt8(rv))) +} + +func (e *encoderSimpleIO) kInt16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt16(rv))) +} + +func (e *encoderSimpleIO) kInt32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt32(rv))) +} + +func (e *encoderSimpleIO) kInt64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeInt(int64(rvGetInt64(rv))) +} + +func (e *encoderSimpleIO) kUint(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint(rv))) +} + +func (e *encoderSimpleIO) kUint8(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint8(rv))) +} + +func (e *encoderSimpleIO) kUint16(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint16(rv))) +} + +func (e *encoderSimpleIO) kUint32(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint32(rv))) +} + +func (e *encoderSimpleIO) kUint64(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUint64(rv))) +} + +func (e *encoderSimpleIO) kUintptr(_ *encFnInfo, rv reflect.Value) { + e.e.EncodeUint(uint64(rvGetUintptr(rv))) +} + +func (e *encoderSimpleIO) kSeqFn(rt reflect.Type) (fn *encFnSimpleIO) { + + if rt = baseRT(rt); rt.Kind() != reflect.Interface { + fn = e.fn(rt) + } + return +} + +func (e *encoderSimpleIO) kArrayWMbs(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.haltOnMbsOddLen(l) + e.mapStart(l >> 1) + + var fn *encFnSimpleIO + builtin := ti.tielem.flagEncBuiltin + if !builtin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerMapKey + e.e.WriteMapElemKey(true) + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + if j&1 == 0 { + e.c = containerMapKey + e.e.WriteMapElemKey(false) + } else { + e.mapElemValue() + } + } + e.c = 0 + e.e.WriteMapEnd() + +} + +func (e *encoderSimpleIO) kArrayW(rv reflect.Value, ti *typeInfo, isSlice bool) { + var l int + if isSlice { + l = rvLenSlice(rv) + } else { + l = rv.Len() + } + if l <= 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(l) + + var fn *encFnSimpleIO + if !ti.tielem.flagEncBuiltin { + fn = e.kSeqFn(ti.elem) + } + + j := 0 + e.c = containerArrayElem + e.e.WriteArrayElem(true) + builtin := ti.tielem.flagEncBuiltin + for { + rvv := rvArrayIndex(rv, j, ti, isSlice) + if builtin { + e.encodeIB(rv2i(baseRVRV(rvv))) + } else { + e.encodeValue(rvv, fn) + } + j++ + if j == l { + break + } + e.c = containerArrayElem + e.e.WriteArrayElem(false) + } + + e.c = 0 + e.e.WriteArrayEnd() +} + +func (e *encoderSimpleIO) kChan(f *encFnInfo, rv reflect.Value) { + if f.ti.chandir&uint8(reflect.RecvDir) == 0 { + halt.errorStr("send-only channel cannot be encoded") + } + if !f.ti.mbs && uint8TypId == rt2id(f.ti.elem) { + e.kSliceBytesChan(rv) + return + } + rtslice := reflect.SliceOf(f.ti.elem) + rv = chanToSlice(rv, rtslice, e.h.ChanRecvTimeout) + ti := e.h.getTypeInfo(rt2id(rtslice), rtslice) + if f.ti.mbs { + e.kArrayWMbs(rv, ti, true) + } else { + e.kArrayW(rv, ti, true) + } +} + +func (e *encoderSimpleIO) kSlice(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, true) + } else if f.ti.rtid == uint8SliceTypId || uint8TypId == rt2id(f.ti.elem) { + + e.e.EncodeBytes(rvGetBytes(rv)) + } else { + e.kArrayW(rv, f.ti, true) + } +} + +func (e *encoderSimpleIO) kArray(f *encFnInfo, rv reflect.Value) { + if f.ti.mbs { + e.kArrayWMbs(rv, f.ti, false) + } else if handleBytesWithinKArray && uint8TypId == rt2id(f.ti.elem) { + e.e.EncodeStringBytesRaw(rvGetArrayBytes(rv, nil)) + } else { + e.kArrayW(rv, f.ti, false) + } +} + +func (e *encoderSimpleIO) kSliceBytesChan(rv reflect.Value) { + + bs0 := e.blist.peek(32, true) + bs := bs0 + + irv := rv2i(rv) + ch, ok := irv.(<-chan byte) + if !ok { + ch = irv.(chan byte) + } + +L1: + switch timeout := e.h.ChanRecvTimeout; { + case timeout == 0: + for { + select { + case b := <-ch: + bs = append(bs, b) + default: + break L1 + } + } + case timeout > 0: + tt := time.NewTimer(timeout) + for { + select { + case b := <-ch: + bs = append(bs, b) + case <-tt.C: + + break L1 + } + } + default: + for b := range ch { + bs = append(bs, b) + } + } + + e.e.EncodeBytes(bs) + e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.blist.put(bs0) + } +} + +func (e *encoderSimpleIO) kStructFieldKey(keyType valueType, encName string) { + + if keyType == valueTypeString { + e.e.EncodeString(encName) + } else if keyType == valueTypeInt { + e.e.EncodeInt(must.Int(strconv.ParseInt(encName, 10, 64))) + } else if keyType == valueTypeUint { + e.e.EncodeUint(must.Uint(strconv.ParseUint(encName, 10, 64))) + } else if keyType == valueTypeFloat { + e.e.EncodeFloat64(must.Float(strconv.ParseFloat(encName, 64))) + } else { + halt.errorStr2("invalid struct key type: ", keyType.String()) + } + +} + +func (e *encoderSimpleIO) kStructSimple(f *encFnInfo, rv reflect.Value) { + _ = e.e + tisfi := f.ti.sfi.source() + + chkCirRef := e.h.CheckCircularRef + var si *structFieldInfo + var j int + + if f.ti.toArray || e.h.StructToArray { + if len(tisfi) == 0 { + e.e.WriteArrayEmpty() + return + } + e.arrayStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } else { + if len(tisfi) == 0 { + e.e.WriteMapEmpty() + return + } + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + e.mapStart(len(tisfi)) + for j, si = range tisfi { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.EncodeStringNoEscape4Json(si.encName) + e.mapElemValue() + if si.encBuiltin { + e.encodeIB(rv2i(si.fieldNoAlloc(rv, true))) + } else { + e.encodeValue(si.fieldNoAlloc(rv, !chkCirRef), nil) + } + } + e.c = 0 + e.e.WriteMapEnd() + } +} + +func (e *encoderSimpleIO) kStruct(f *encFnInfo, rv reflect.Value) { + _ = e.e + ti := f.ti + toMap := !(ti.toArray || e.h.StructToArray) + var mf map[string]interface{} + if ti.flagMissingFielder { + toMap = true + mf = rv2i(rv).(MissingFielder).CodecMissingFields() + } else if ti.flagMissingFielderPtr { + toMap = true + if rv.CanAddr() { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder).CodecMissingFields() + } else { + mf = rv2i(e.addrRV(rv, ti.rt, ti.ptr)).(MissingFielder).CodecMissingFields() + } + } + newlen := len(mf) + tisfi := ti.sfi.source() + newlen += len(tisfi) + + var fkvs = e.slist.get(newlen)[:newlen] + + recur := e.h.RecursiveEmptyCheck + chkCirRef := e.h.CheckCircularRef + + var xlen int + + var kv sfiRv + var j int + var sf encStructFieldObj + if toMap { + newlen = 0 + if e.h.Canonical { + tisfi = f.ti.sfi.sorted() + } + for _, si := range tisfi { + + if si.omitEmpty { + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyValue(kv.r, e.h.TypeInfos, recur) { + continue + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[newlen] = kv + newlen++ + } + + var mf2s []stringIntf + if len(mf) != 0 { + mf2s = make([]stringIntf, 0, len(mf)) + for k, v := range mf { + if k == "" { + continue + } + if ti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur) { + continue + } + mf2s = append(mf2s, stringIntf{k, v}) + } + } + + xlen = newlen + len(mf2s) + if xlen == 0 { + e.e.WriteMapEmpty() + goto END + } + + e.mapStart(xlen) + + if len(mf2s) != 0 && e.h.Canonical { + mf2w := make([]encStructFieldObj, newlen+len(mf2s)) + for j = 0; j < newlen; j++ { + kv = fkvs[j] + mf2w[j] = encStructFieldObj{kv.v.encName, kv.r, nil, true, + !kv.v.encNameEscape4Json, kv.v.encBuiltin} + } + for _, v := range mf2s { + mf2w[j] = encStructFieldObj{v.v, reflect.Value{}, v.i, false, false, false} + j++ + } + sort.Sort((encStructFieldObjSlice)(mf2w)) + for j, sf = range mf2w { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && sf.noEsc4json { + e.e.EncodeStringNoEscape4Json(sf.key) + } else { + e.kStructFieldKey(ti.keyType, sf.key) + } + e.mapElemValue() + if sf.isRv { + if sf.builtin { + e.encodeIB(rv2i(baseRVRV(sf.rv))) + } else { + e.encodeValue(sf.rv, nil) + } + } else { + if !e.encodeBuiltin(sf.intf) { + e.encodeR(reflect.ValueOf(sf.intf)) + } + + } + } + } else { + keytyp := ti.keyType + for j = 0; j < newlen; j++ { + kv = fkvs[j] + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if ti.keyType == valueTypeString && !kv.v.encNameEscape4Json { + e.e.EncodeStringNoEscape4Json(kv.v.encName) + } else { + e.kStructFieldKey(keytyp, kv.v.encName) + } + e.mapElemValue() + if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + for _, v := range mf2s { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.kStructFieldKey(keytyp, v.v) + e.mapElemValue() + if !e.encodeBuiltin(v.i) { + e.encodeR(reflect.ValueOf(v.i)) + } + + j++ + } + } + + e.c = 0 + e.e.WriteMapEnd() + } else { + newlen = len(tisfi) + for i, si := range tisfi { + + if si.omitEmpty { + + kv.r = si.fieldNoAlloc(rv, false) + if isEmptyContainerValue(kv.r, e.h.TypeInfos, recur) { + kv.r = reflect.Value{} + } + } else { + kv.r = si.fieldNoAlloc(rv, si.encBuiltin || !chkCirRef) + } + kv.v = si + fkvs[i] = kv + } + + if newlen == 0 { + e.e.WriteArrayEmpty() + goto END + } + + e.arrayStart(newlen) + for j = 0; j < newlen; j++ { + e.c = containerArrayElem + e.e.WriteArrayElem(j == 0) + kv = fkvs[j] + if !kv.r.IsValid() { + e.e.EncodeNil() + } else if kv.v.encBuiltin { + e.encodeIB(rv2i(baseRVRV(kv.r))) + } else { + e.encodeValue(kv.r, nil) + } + } + e.c = 0 + e.e.WriteArrayEnd() + } + +END: + + e.slist.put(fkvs) +} + +func (e *encoderSimpleIO) kMap(f *encFnInfo, rv reflect.Value) { + _ = e.e + l := rvLenMap(rv) + if l == 0 { + e.e.WriteMapEmpty() + return + } + e.mapStart(l) + + var keyFn, valFn *encFnSimpleIO + + ktypeKind := reflect.Kind(f.ti.keykind) + vtypeKind := reflect.Kind(f.ti.elemkind) + + rtval := f.ti.elem + rtvalkind := vtypeKind + for rtvalkind == reflect.Ptr { + rtval = rtval.Elem() + rtvalkind = rtval.Kind() + } + if rtvalkind != reflect.Interface { + valFn = e.fn(rtval) + } + + var rvv = mapAddrLoopvarRV(f.ti.elem, vtypeKind) + + rtkey := f.ti.key + var keyTypeIsString = stringTypId == rt2id(rtkey) + if keyTypeIsString { + keyFn = e.fn(rtkey) + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + keyFn = e.fn(rtkey) + } + } + + if e.h.Canonical { + e.kMapCanonical(f.ti, rv, rvv, keyFn, valFn) + e.c = 0 + e.e.WriteMapEnd() + return + } + + var rvk = mapAddrLoopvarRV(f.ti.key, ktypeKind) + + var it mapIter + mapRange(&it, rv, rvk, rvv, true) + + kbuiltin := f.ti.tikey.flagEncBuiltin + vbuiltin := f.ti.tielem.flagEncBuiltin + for j := 0; it.Next(); j++ { + rv = it.Key() + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + if keyTypeIsString { + e.e.EncodeString(rvGetString(rv)) + } else if kbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(rv, keyFn) + } + e.mapElemValue() + rv = it.Value() + if vbuiltin { + e.encodeIB(rv2i(baseRVRV(rv))) + } else { + e.encodeValue(it.Value(), valFn) + } + } + it.Done() + + e.c = 0 + e.e.WriteMapEnd() +} + +func (e *encoderSimpleIO) kMapCanonical(ti *typeInfo, rv, rvv reflect.Value, keyFn, valFn *encFnSimpleIO) { + _ = e.e + + rtkey := ti.key + rtkeydecl := rtkey.PkgPath() == "" && rtkey.Name() != "" + + mks := rv.MapKeys() + rtkeyKind := rtkey.Kind() + mparams := getMapReqParams(ti) + + switch rtkeyKind { + case reflect.Bool: + + if len(mks) == 2 && mks[0].Bool() { + mks[0], mks[1] = mks[1], mks[0] + } + for i := range mks { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeBool(mks[i].Bool()) + } else { + e.encodeValueNonNil(mks[i], keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mks[i], rvv, mparams), valFn) + } + case reflect.String: + mksv := make([]orderedRv[string], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rvGetString(k) + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeString(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]orderedRv[uint64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeUint(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]orderedRv[int64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeInt(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float32: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat32(float32(mksv[i].v)) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + case reflect.Float64: + mksv := make([]orderedRv[float64], len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + slices.SortFunc(mksv, cmpOrderedRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + if rtkeydecl { + e.e.EncodeFloat64(mksv[i].v) + } else { + e.encodeValueNonNil(mksv[i].r, keyFn) + } + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + default: + if rtkey == timeTyp { + mksv := make([]timeRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = rv2i(k).(time.Time) + } + slices.SortFunc(mksv, cmpTimeRv) + for i := range mksv { + e.c = containerMapKey + e.e.WriteMapElemKey(i == 0) + e.e.EncodeTime(mksv[i].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksv[i].r, rvv, mparams), valFn) + } + break + } + + bs0 := e.blist.get(len(mks) * 16) + mksv := bs0 + mksbv := make([]bytesRv, len(mks)) + + sideEncode(e.hh, &e.h.sideEncPool, func(se encoderI) { + se.ResetBytes(&mksv) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + se.setContainerState(containerMapKey) + se.encodeR(baseRVRV(k)) + se.atEndOfEncode() + se.writerEnd() + v.r = k + v.v = mksv[l:] + } + }) + + slices.SortFunc(mksbv, cmpBytesRv) + for j := range mksbv { + e.c = containerMapKey + e.e.WriteMapElemKey(j == 0) + e.e.writeBytesAsis(mksbv[j].v) + e.mapElemValue() + e.encodeValue(mapGet(rv, mksbv[j].r, rvv, mparams), valFn) + } + e.blist.put(mksv) + if !byteSliceSameData(bs0, mksv) { + e.blist.put(bs0) + } + } +} + +func (e *encoderSimpleIO) init(h Handle) { + initHandle(h) + callMake(&e.e) + e.hh = h + e.h = h.getBasicHandle() + + e.err = errEncoderNotInitialized + + e.fp = e.e.init(h, &e.encoderBase, e).(*fastpathEsSimpleIO) + + if e.bytes { + e.rtidFn = &e.h.rtidFnsEncBytes + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtBytes + } else { + e.rtidFn = &e.h.rtidFnsEncIO + e.rtidFnNoExt = &e.h.rtidFnsEncNoExtIO + } + + e.reset() +} + +func (e *encoderSimpleIO) reset() { + e.e.reset() + if e.ci != nil { + e.ci = e.ci[:0] + } + e.c = 0 + e.calls = 0 + e.seq = 0 + e.err = nil +} + +func (e *encoderSimpleIO) Encode(v interface{}) (err error) { + + defer panicValToErr(e, callRecoverSentinel, &e.err, &err, debugging) + e.mustEncode(v) + return +} + +func (e *encoderSimpleIO) MustEncode(v interface{}) { + defer panicValToErr(e, callRecoverSentinel, &e.err, nil, true) + e.mustEncode(v) + return +} + +func (e *encoderSimpleIO) mustEncode(v interface{}) { + halt.onerror(e.err) + if e.hh == nil { + halt.onerror(errNoFormatHandle) + } + + e.calls++ + if !e.encodeBuiltin(v) { + e.encodeR(reflect.ValueOf(v)) + } + + e.calls-- + if e.calls == 0 { + e.e.atEndOfEncode() + e.e.writerEnd() + } +} + +func (e *encoderSimpleIO) encodeI(iv interface{}) { + if !e.encodeBuiltin(iv) { + e.encodeR(reflect.ValueOf(iv)) + } +} + +func (e *encoderSimpleIO) encodeIB(iv interface{}) { + if !e.encodeBuiltin(iv) { + + halt.errorStr("[should not happen] invalid type passed to encodeBuiltin") + } +} + +func (e *encoderSimpleIO) encodeR(base reflect.Value) { + e.encodeValue(base, nil) +} + +func (e *encoderSimpleIO) encodeBuiltin(iv interface{}) (ok bool) { + ok = true + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + + case Raw: + e.rawBytes(v) + case string: + e.e.EncodeString(v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case uintptr: + e.e.EncodeUint(uint64(v)) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + case complex64: + e.encodeComplex64(v) + case complex128: + e.encodeComplex128(v) + case time.Time: + e.e.EncodeTime(v) + case []byte: + e.e.EncodeBytes(v) + default: + + ok = !skipFastpathTypeSwitchInDirectCall && e.dh.fastpathEncodeTypeSwitch(iv, e) + } + return +} + +func (e *encoderSimpleIO) encodeValue(rv reflect.Value, fn *encFnSimpleIO) { + + var ciPushes int + + var rvp reflect.Value + var rvpValid bool + +RV: + switch rv.Kind() { + case reflect.Ptr: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = true + rvp = rv + rv = rv.Elem() + + if e.h.CheckCircularRef && e.ci.canPushElemKind(rv.Kind()) { + e.ci.push(rv2i(rvp)) + ciPushes++ + } + goto RV + case reflect.Interface: + if rvIsNil(rv) { + e.e.EncodeNil() + goto END + } + rvpValid = false + rvp = reflect.Value{} + rv = rv.Elem() + fn = nil + goto RV + case reflect.Map: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteMapEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Slice, reflect.Chan: + if rvIsNil(rv) { + if e.h.NilCollectionToZeroLength { + e.e.WriteArrayEmpty() + } else { + e.e.EncodeNil() + } + goto END + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + goto END + } + + if fn == nil { + fn = e.fn(rv.Type()) + } + + if !fn.i.addrE { + + } else if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + fn.fe(e, &fn.i, rv) + +END: + if ciPushes > 0 { + e.ci.pop(ciPushes) + } +} + +func (e *encoderSimpleIO) encodeValueNonNil(rv reflect.Value, fn *encFnSimpleIO) { + + if fn.i.addrE { + if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else { + rv = e.addrRV(rv, fn.i.ti.rt, fn.i.ti.ptr) + } + } + fn.fe(e, &fn.i, rv) +} + +func (e *encoderSimpleIO) encodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + e.encodeValue(baseRV(v), e.fn(t)) + } else { + e.encodeValue(baseRV(v), e.fnNoExt(t)) + } +} + +func (e *encoderSimpleIO) marshalUtf8(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.EncodeString(stringView(bs)) + } +} + +func (e *encoderSimpleIO) marshalAsis(bs []byte, fnerr error) { + halt.onerror(fnerr) + if bs == nil { + e.e.EncodeNil() + } else { + e.e.writeBytesAsis(bs) + } +} + +func (e *encoderSimpleIO) marshalRaw(bs []byte, fnerr error) { + halt.onerror(fnerr) + e.e.EncodeBytes(bs) +} + +func (e *encoderSimpleIO) rawBytes(vv Raw) { + v := []byte(vv) + if !e.h.Raw { + halt.errorBytes("Raw values cannot be encoded: ", v) + } + e.e.writeBytesAsis(v) +} + +func (e *encoderSimpleIO) fn(t reflect.Type) *encFnSimpleIO { + return e.dh.encFnViaBH(t, e.rtidFn, e.h, e.fp, false) +} + +func (e *encoderSimpleIO) fnNoExt(t reflect.Type) *encFnSimpleIO { + return e.dh.encFnViaBH(t, e.rtidFnNoExt, e.h, e.fp, true) +} + +func (e *encoderSimpleIO) mapStart(length int) { + e.e.WriteMapStart(length) + e.c = containerMapStart +} + +func (e *encoderSimpleIO) mapElemValue() { + e.e.WriteMapElemValue() + e.c = containerMapValue +} + +func (e *encoderSimpleIO) arrayStart(length int) { + e.e.WriteArrayStart(length) + e.c = containerArrayStart +} + +func (e *encoderSimpleIO) writerEnd() { + e.e.writerEnd() +} + +func (e *encoderSimpleIO) atEndOfEncode() { + e.e.atEndOfEncode() +} + +func (e *encoderSimpleIO) Reset(w io.Writer) { + if e.bytes { + halt.onerror(errEncNoResetBytesWithWriter) + } + e.reset() + if w == nil { + w = io.Discard + } + e.e.resetOutIO(w) +} + +func (e *encoderSimpleIO) ResetBytes(out *[]byte) { + if !e.bytes { + halt.onerror(errEncNoResetWriterWithBytes) + } + e.resetBytes(out) +} + +func (e *encoderSimpleIO) resetBytes(out *[]byte) { + e.reset() + if out == nil { + out = &bytesEncAppenderDefOut + } + e.e.resetOutBytes(out) +} + +func (helperEncDriverSimpleIO) newEncoderBytes(out *[]byte, h Handle) *encoderSimpleIO { + var c1 encoderSimpleIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(out) + return &c1 +} + +func (helperEncDriverSimpleIO) newEncoderIO(out io.Writer, h Handle) *encoderSimpleIO { + var c1 encoderSimpleIO + c1.bytes = false + c1.init(h) + c1.Reset(out) + return &c1 +} + +func (helperEncDriverSimpleIO) encFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathEsSimpleIO) (f *fastpathESimpleIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperEncDriverSimpleIO) encFindRtidFn(s []encRtidFnSimpleIO, rtid uintptr) (i uint, fn *encFnSimpleIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperEncDriverSimpleIO) encFromRtidFnSlice(fns *atomicRtidFnSlice) (s []encRtidFnSimpleIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]encRtidFnSimpleIO](v)) + } + return +} + +func (dh helperEncDriverSimpleIO) encFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, + x *BasicHandle, fp *fastpathEsSimpleIO, checkExt bool) (fn *encFnSimpleIO) { + return dh.encFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperEncDriverSimpleIO) encFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleIO) { + rtid := rt2id(rt) + var sp []encRtidFnSimpleIO = dh.encFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.encFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.encFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperEncDriverSimpleIO) encFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathEsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleIO) { + + fn = dh.encFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []encRtidFnSimpleIO + mu.Lock() + sp = dh.encFromRtidFnSlice(fns) + + if sp == nil { + sp = []encRtidFnSimpleIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.encFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]encRtidFnSimpleIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = encRtidFnSimpleIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperEncDriverSimpleIO) encFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathEsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *encFnSimpleIO) { + fn = new(encFnSimpleIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + if rtid == timeTypId && timeBuiltin { + fn.fe = (*encoderSimpleIO).kTime + } else if rtid == rawTypId { + fn.fe = (*encoderSimpleIO).raw + } else if rtid == rawExtTypId { + fn.fe = (*encoderSimpleIO).rawExt + fi.addrE = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fe = (*encoderSimpleIO).ext + if rk == reflect.Struct || rk == reflect.Array { + fi.addrE = true + } + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fe = (*encoderSimpleIO).selferMarshal + fi.addrE = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fe = (*encoderSimpleIO).binaryMarshal + fi.addrE = ti.flagBinaryMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fe = (*encoderSimpleIO).jsonMarshal + fi.addrE = ti.flagJsonMarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fe = (*encoderSimpleIO).textMarshal + fi.addrE = ti.flagTextMarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fe = fp[idx].encfn + } + } else { + + xfe, xrt := dh.encFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf := xfe.encfn + fn.fe = func(e *encoderSimpleIO, xf *encFnInfo, xrv reflect.Value) { + xfnf(e, xf, rvConvert(xrv, xrt)) + } + } + } + } + if fn.fe == nil { + switch rk { + case reflect.Bool: + fn.fe = (*encoderSimpleIO).kBool + case reflect.String: + + fn.fe = (*encoderSimpleIO).kString + case reflect.Int: + fn.fe = (*encoderSimpleIO).kInt + case reflect.Int8: + fn.fe = (*encoderSimpleIO).kInt8 + case reflect.Int16: + fn.fe = (*encoderSimpleIO).kInt16 + case reflect.Int32: + fn.fe = (*encoderSimpleIO).kInt32 + case reflect.Int64: + fn.fe = (*encoderSimpleIO).kInt64 + case reflect.Uint: + fn.fe = (*encoderSimpleIO).kUint + case reflect.Uint8: + fn.fe = (*encoderSimpleIO).kUint8 + case reflect.Uint16: + fn.fe = (*encoderSimpleIO).kUint16 + case reflect.Uint32: + fn.fe = (*encoderSimpleIO).kUint32 + case reflect.Uint64: + fn.fe = (*encoderSimpleIO).kUint64 + case reflect.Uintptr: + fn.fe = (*encoderSimpleIO).kUintptr + case reflect.Float32: + fn.fe = (*encoderSimpleIO).kFloat32 + case reflect.Float64: + fn.fe = (*encoderSimpleIO).kFloat64 + case reflect.Complex64: + fn.fe = (*encoderSimpleIO).kComplex64 + case reflect.Complex128: + fn.fe = (*encoderSimpleIO).kComplex128 + case reflect.Chan: + fn.fe = (*encoderSimpleIO).kChan + case reflect.Slice: + fn.fe = (*encoderSimpleIO).kSlice + case reflect.Array: + fn.fe = (*encoderSimpleIO).kArray + case reflect.Struct: + if ti.simple { + fn.fe = (*encoderSimpleIO).kStructSimple + } else { + fn.fe = (*encoderSimpleIO).kStruct + } + case reflect.Map: + fn.fe = (*encoderSimpleIO).kMap + case reflect.Interface: + + fn.fe = (*encoderSimpleIO).kErr + default: + + fn.fe = (*encoderSimpleIO).kErr + } + } + } + return +} +func (d *decoderSimpleIO) rawExt(f *decFnInfo, rv reflect.Value) { + d.d.DecodeRawExt(rv2i(rv).(*RawExt)) +} + +func (d *decoderSimpleIO) ext(f *decFnInfo, rv reflect.Value) { + d.d.DecodeExt(rv2i(rv), f.ti.rt, f.xfTag, f.xfFn) +} + +func (d *decoderSimpleIO) selferUnmarshal(_ *decFnInfo, rv reflect.Value) { + rv2i(rv).(Selfer).CodecDecodeSelf(&Decoder{d}) +} + +func (d *decoderSimpleIO) binaryUnmarshal(_ *decFnInfo, rv reflect.Value) { + bm := rv2i(rv).(encoding.BinaryUnmarshaler) + xbs, _ := d.d.DecodeBytes() + fnerr := bm.UnmarshalBinary(xbs) + halt.onerror(fnerr) +} + +func (d *decoderSimpleIO) textUnmarshal(_ *decFnInfo, rv reflect.Value) { + tm := rv2i(rv).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(bytesOKs(d.d.DecodeStringAsBytes())) + halt.onerror(fnerr) +} + +func (d *decoderSimpleIO) jsonUnmarshal(_ *decFnInfo, rv reflect.Value) { + d.jsonUnmarshalV(rv2i(rv).(jsonUnmarshaler)) +} + +func (d *decoderSimpleIO) jsonUnmarshalV(tm jsonUnmarshaler) { + + halt.onerror(tm.UnmarshalJSON(d.d.nextValueBytes())) +} + +func (d *decoderSimpleIO) kErr(_ *decFnInfo, rv reflect.Value) { + halt.errorf("unsupported decoding kind: %s, for %#v", rv.Kind(), rv) + +} + +func (d *decoderSimpleIO) raw(_ *decFnInfo, rv reflect.Value) { + rvSetBytes(rv, d.rawBytes()) +} + +func (d *decoderSimpleIO) kString(_ *decFnInfo, rv reflect.Value) { + rvSetString(rv, d.detach2Str(d.d.DecodeStringAsBytes())) +} + +func (d *decoderSimpleIO) kBool(_ *decFnInfo, rv reflect.Value) { + rvSetBool(rv, d.d.DecodeBool()) +} + +func (d *decoderSimpleIO) kTime(_ *decFnInfo, rv reflect.Value) { + rvSetTime(rv, d.d.DecodeTime()) +} + +func (d *decoderSimpleIO) kFloat32(_ *decFnInfo, rv reflect.Value) { + rvSetFloat32(rv, d.d.DecodeFloat32()) +} + +func (d *decoderSimpleIO) kFloat64(_ *decFnInfo, rv reflect.Value) { + rvSetFloat64(rv, d.d.DecodeFloat64()) +} + +func (d *decoderSimpleIO) kComplex64(_ *decFnInfo, rv reflect.Value) { + rvSetComplex64(rv, complex(d.d.DecodeFloat32(), 0)) +} + +func (d *decoderSimpleIO) kComplex128(_ *decFnInfo, rv reflect.Value) { + rvSetComplex128(rv, complex(d.d.DecodeFloat64(), 0)) +} + +func (d *decoderSimpleIO) kInt(_ *decFnInfo, rv reflect.Value) { + rvSetInt(rv, int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize))) +} + +func (d *decoderSimpleIO) kInt8(_ *decFnInfo, rv reflect.Value) { + rvSetInt8(rv, int8(chkOvf.IntV(d.d.DecodeInt64(), 8))) +} + +func (d *decoderSimpleIO) kInt16(_ *decFnInfo, rv reflect.Value) { + rvSetInt16(rv, int16(chkOvf.IntV(d.d.DecodeInt64(), 16))) +} + +func (d *decoderSimpleIO) kInt32(_ *decFnInfo, rv reflect.Value) { + rvSetInt32(rv, int32(chkOvf.IntV(d.d.DecodeInt64(), 32))) +} + +func (d *decoderSimpleIO) kInt64(_ *decFnInfo, rv reflect.Value) { + rvSetInt64(rv, d.d.DecodeInt64()) +} + +func (d *decoderSimpleIO) kUint(_ *decFnInfo, rv reflect.Value) { + rvSetUint(rv, uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderSimpleIO) kUintptr(_ *decFnInfo, rv reflect.Value) { + rvSetUintptr(rv, uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize))) +} + +func (d *decoderSimpleIO) kUint8(_ *decFnInfo, rv reflect.Value) { + rvSetUint8(rv, uint8(chkOvf.UintV(d.d.DecodeUint64(), 8))) +} + +func (d *decoderSimpleIO) kUint16(_ *decFnInfo, rv reflect.Value) { + rvSetUint16(rv, uint16(chkOvf.UintV(d.d.DecodeUint64(), 16))) +} + +func (d *decoderSimpleIO) kUint32(_ *decFnInfo, rv reflect.Value) { + rvSetUint32(rv, uint32(chkOvf.UintV(d.d.DecodeUint64(), 32))) +} + +func (d *decoderSimpleIO) kUint64(_ *decFnInfo, rv reflect.Value) { + rvSetUint64(rv, d.d.DecodeUint64()) +} + +func (d *decoderSimpleIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) { + + n := d.naked() + d.d.DecodeNaked() + + if decFailNonEmptyIntf && f.ti.numMeth > 0 { + halt.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + } + + switch n.v { + case valueTypeMap: + mtid := d.mtid + if mtid == 0 { + if d.jsms { + mtid = mapStrIntfTypId + } else { + mtid = mapIntfIntfTypId + } + } + if mtid == mapStrIntfTypId { + var v2 map[string]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if mtid == mapIntfIntfTypId { + var v2 map[interface{}]interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.mtr { + rvn = reflect.New(d.h.MapType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + + rvn = rvZeroAddrK(d.h.MapType, reflect.Map) + d.decodeValue(rvn, nil) + } + case valueTypeArray: + if d.stid == 0 || d.stid == intfSliceTypId { + var v2 []interface{} + d.decode(&v2) + rvn = rv4iptr(&v2).Elem() + } else if d.str { + rvn = reflect.New(d.h.SliceType) + d.decode(rv2i(rvn)) + rvn = rvn.Elem() + } else { + rvn = rvZeroAddrK(d.h.SliceType, reflect.Slice) + d.decodeValue(rvn, nil) + } + if d.h.PreferArrayOverSlice { + rvn = rvGetArray4Slice(rvn) + } + case valueTypeExt: + tag, bytes := n.u, n.l + bfn := d.h.getExtForTag(tag) + var re = RawExt{Tag: tag} + if bytes == nil { + + if bfn == nil { + d.decode(&re.Value) + rvn = rv4iptr(&re).Elem() + } else if bfn.ext == SelfExt { + rvn = rvZeroAddrK(bfn.rt, bfn.rt.Kind()) + d.decodeValue(rvn, d.fnNoExt(bfn.rt)) + } else { + rvn = reflect.New(bfn.rt) + d.interfaceExtConvertAndDecode(rv2i(rvn), bfn.ext) + rvn = rvn.Elem() + } + } else { + + if bfn == nil { + re.setData(bytes, false) + rvn = rv4iptr(&re).Elem() + } else { + rvn = reflect.New(bfn.rt) + if bfn.ext == SelfExt { + sideDecode(d.hh, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv2i(rvn), bytes, bfn.rt, true) }) + } else { + bfn.ext.ReadExt(rv2i(rvn), bytes) + } + rvn = rvn.Elem() + } + } + + if d.h.PreferPointerForStructOrArray && rvn.CanAddr() { + if rk := rvn.Kind(); rk == reflect.Array || rk == reflect.Struct { + rvn = rvn.Addr() + } + } + case valueTypeNil: + + case valueTypeInt: + rvn = n.ri() + case valueTypeUint: + rvn = n.ru() + case valueTypeFloat: + rvn = n.rf() + case valueTypeBool: + rvn = n.rb() + case valueTypeString, valueTypeSymbol: + rvn = n.rs() + case valueTypeBytes: + rvn = n.rl() + case valueTypeTime: + rvn = n.rt() + default: + halt.errorStr2("kInterfaceNaked: unexpected valueType: ", n.v.String()) + } + return +} + +func (d *decoderSimpleIO) kInterface(f *decFnInfo, rv reflect.Value) { + + isnilrv := rvIsNil(rv) + + var rvn reflect.Value + + if d.h.InterfaceReset { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } else if !isnilrv { + decSetNonNilRV2Zero4Intf(rv) + } + return + } + } else if isnilrv { + + rvn = d.h.intf2impl(f.ti.rtid) + if !rvn.IsValid() { + rvn = d.kInterfaceNaked(f) + if rvn.IsValid() { + rvSetIntf(rv, rvn) + } + return + } + } else { + + rvn = rv.Elem() + } + + canDecode, _ := isDecodeable(rvn) + + if !canDecode { + rvn2 := d.oneShotAddrRV(rvn.Type(), rvn.Kind()) + rvSetDirect(rvn2, rvn) + rvn = rvn2 + } + + d.decodeValue(rvn, nil) + rvSetIntf(rv, rvn) +} + +func (d *decoderSimpleIO) kStructField(si *structFieldInfo, rv reflect.Value) { + if d.d.TryNil() { + rv = si.fieldNoAlloc(rv, true) + if rv.IsValid() { + decSetNonNilRV2Zero(rv) + } + } else if si.decBuiltin { + rv = rvAddr(si.fieldAlloc(rv), si.ptrTyp) + d.decode(rv2i(rv)) + } else { + fn := d.fn(si.baseTyp) + rv = si.fieldAlloc(rv) + if fn.i.addrD { + rv = rvAddr(rv, si.ptrTyp) + } + fn.fd(d, &fn.i, rv) + } +} + +func (d *decoderSimpleIO) kStructSimple(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var rvkencname []byte + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderSimpleIO) kStruct(f *decFnInfo, rv reflect.Value) { + _ = d.d + ctyp := d.d.ContainerType() + ti := f.ti + var mf MissingFielder + if ti.flagMissingFielder { + mf = rv2i(rv).(MissingFielder) + } else if ti.flagMissingFielderPtr { + mf = rv2i(rvAddr(rv, ti.ptr)).(MissingFielder) + } + if ctyp == valueTypeMap { + containerLen := d.mapStart(d.d.ReadMapStart()) + if containerLen == 0 { + d.mapEnd() + return + } + hasLen := containerLen >= 0 + var name2 []byte + var rvkencname []byte + tkt := ti.keyType + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.mapElemKey(j == 0) + + if tkt == valueTypeString { + sab, att := d.d.DecodeStringAsBytes() + rvkencname = d.usableStructFieldNameBytes(rvkencname, sab, att) + } else if tkt == valueTypeInt { + rvkencname = strconv.AppendInt(d.b[:0], d.d.DecodeInt64(), 10) + } else if tkt == valueTypeUint { + rvkencname = strconv.AppendUint(d.b[:0], d.d.DecodeUint64(), 10) + } else if tkt == valueTypeFloat { + rvkencname = strconv.AppendFloat(d.b[:0], d.d.DecodeFloat64(), 'f', -1, 64) + } else { + halt.errorStr2("invalid struct key type: ", ti.keyType.String()) + } + + d.mapElemValue() + if si := ti.siForEncName(rvkencname); si != nil { + d.kStructField(si, rv) + } else if mf != nil { + + name2 = append(name2[:0], rvkencname...) + var f interface{} + d.decode(&f) + if !mf.CodecMissingField(name2, f) && d.h.ErrorIfNoField { + halt.errorStr2("no matching struct field when decoding stream map with key: ", stringView(name2)) + } + } else { + d.structFieldNotFound(-1, stringView(rvkencname)) + } + } + d.mapEnd() + } else if ctyp == valueTypeArray { + containerLen := d.arrayStart(d.d.ReadArrayStart()) + if containerLen == 0 { + d.arrayEnd() + return + } + + tisfi := ti.sfi.source() + hasLen := containerLen >= 0 + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + d.arrayElem(j == 0) + if j < len(tisfi) { + d.kStructField(tisfi[j], rv) + } else { + d.structFieldNotFound(j, "") + } + } + + d.arrayEnd() + } else { + halt.onerror(errNeedMapOrArrayDecodeToStruct) + } +} + +func (d *decoderSimpleIO) kSlice(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + rvCanset := rv.CanSet() + + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + rvbs := rvGetBytes(rv) + if rvCanset { + bs2, bst := d.decodeBytesInto(rvbs, false) + if bst != dBytesIntoParamOut { + rvSetBytes(rv, bs2) + } + } else { + + d.decodeBytesInto(rvbs[:len(rvbs):len(rvbs)], true) + } + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset { + if rvIsNil(rv) { + rvSetDirect(rv, rvSliceZeroCap(ti.rt)) + } else { + rvSetSliceLen(rv, 0) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem0Mut := !scalarBitset.isset(ti.elemkind) + rtelem := ti.elem + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnSimpleIO + + var rvChanged bool + + var rv0 = rv + var rv9 reflect.Value + + rvlen := rvLenSlice(rv) + rvcap := rvCapSlice(rv) + maxInitLen := d.maxInitLen() + hasLen := containerLenS >= 0 + if hasLen { + if containerLenS > rvcap { + oldRvlenGtZero := rvlen > 0 + rvlen1 := int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + if rvlen1 == rvlen { + } else if rvlen1 <= rvcap { + if rvCanset { + rvlen = rvlen1 + rvSetSliceLen(rv, rvlen) + } + } else if rvCanset { + rvlen = rvlen1 + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + if rvChanged && oldRvlenGtZero && rtelem0Mut { + rvCopySlice(rv, rv0, rtelem) + } + } else if containerLenS != rvlen { + if rvCanset { + rvlen = containerLenS + rvSetSliceLen(rv, rvlen) + } + } + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } + + var j int + for ; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if rvCanset { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + rv, rvCanset = rvMakeSlice(rv, f.ti, rvlen, rvlen) + rvcap = rvlen + rvChanged = !rvCanset + } else { + halt.errorStr("cannot decode into non-settable slice") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + + if rvlen < rvcap { + rvlen = rvcap + if rvCanset { + rvSetSliceLen(rv, rvlen) + } else if rvChanged { + rv = rvSlice(rv, rvlen) + } else { + halt.onerror(errExpandSliceCannotChange) + } + } else { + if !(rvCanset || rvChanged) { + halt.onerror(errExpandSliceCannotChange) + } + rv, rvcap, rvCanset = rvGrowSlice(rv, f.ti, rvcap, 1) + + rvlen = rvcap + rvChanged = !rvCanset + } + } + + rv9 = rvArrayIndex(rv, j, f.ti, true) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if j < rvlen { + if rvCanset { + rvSetSliceLen(rv, j) + } else if rvChanged { + rv = rvSlice(rv, j) + } + + } else if j == 0 && rvIsNil(rv) { + if rvCanset { + rv = rvSliceZeroCap(ti.rt) + rvCanset = false + rvChanged = true + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } +} + +func (d *decoderSimpleIO) kArray(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + ctyp := d.d.ContainerType() + if handleBytesWithinKArray && (ctyp == valueTypeBytes || ctyp == valueTypeString) { + + if ti.elemkind != uint8(reflect.Uint8) { + halt.errorf("bytes/string in stream can decode into array of bytes, but not %v", ti.rt) + } + rvbs := rvGetArrayBytes(rv, nil) + d.decodeBytesInto(rvbs, true) + return + } + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var rv9 reflect.Value + + rvlen := rv.Len() + hasLen := containerLenS >= 0 + if hasLen && containerLenS > rvlen { + halt.errorf("cannot decode into array with length: %v, less than container length: %v", any(rvlen), any(containerLenS)) + } + + var elemReset = d.h.SliceElementReset + + var rtelemIsPtr bool + var rtelemElem reflect.Type + var fn *decFnSimpleIO + builtin := ti.tielem.flagDecBuiltin + if builtin { + rtelemIsPtr = ti.elemkind == uint8(reflect.Ptr) + if rtelemIsPtr { + rtelemElem = ti.elem.Elem() + } + } else { + fn = d.fn(rtelem) + } + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if j >= rvlen { + d.arrayCannotExpand(rvlen, j+1) + d.swallow() + continue + } + + rv9 = rvArrayIndex(rv, j, f.ti, false) + if elemReset { + rvSetZero(rv9) + } + if d.d.TryNil() { + rvSetZero(rv9) + } else if builtin { + if rtelemIsPtr { + if rvIsNil(rv9) { + rvSetDirect(rv9, reflect.New(rtelemElem)) + } + d.decode(rv2i(rv9)) + } else { + d.decode(rv2i(rvAddr(rv9, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rv9, fn) + } + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } +} + +func (d *decoderSimpleIO) kChan(f *decFnInfo, rv reflect.Value) { + _ = d.d + + ti := f.ti + if ti.chandir&uint8(reflect.SendDir) == 0 { + halt.errorStr("receive-only channel cannot be decoded") + } + ctyp := d.d.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + + if !(ti.rtid == uint8SliceTypId || ti.elemkind == uint8(reflect.Uint8)) { + halt.errorf("bytes/string in stream must decode into slice/array of bytes, not %v", ti.rt) + } + bs2, _ := d.d.DecodeBytes() + irv := rv2i(rv) + ch, ok := irv.(chan<- byte) + if !ok { + ch = irv.(chan byte) + } + for _, b := range bs2 { + ch <- b + } + return + } + + var rvCanset = rv.CanSet() + + var containerLenS int + isArray := ctyp == valueTypeArray + if isArray { + containerLenS = d.arrayStart(d.d.ReadArrayStart()) + } else if ctyp == valueTypeMap { + containerLenS = d.mapStart(d.d.ReadMapStart()) * 2 + } else { + halt.errorStr2("decoding into a slice, expect map/array - got ", ctyp.String()) + } + + if containerLenS == 0 { + if rvCanset && rvIsNil(rv) { + rvSetDirect(rv, reflect.MakeChan(ti.rt, 0)) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + return + } + + rtelem := ti.elem + useTransient := decUseTransient && ti.elemkind != byte(reflect.Ptr) && ti.tielem.flagCanTransient + + for k := reflect.Kind(ti.elemkind); k == reflect.Ptr; k = rtelem.Kind() { + rtelem = rtelem.Elem() + } + + var fn *decFnSimpleIO + + var rvChanged bool + var rv0 = rv + var rv9 reflect.Value + + var rvlen int + hasLen := containerLenS >= 0 + maxInitLen := d.maxInitLen() + + for j := 0; d.containerNext(j, containerLenS, hasLen); j++ { + if j == 0 { + if rvIsNil(rv) { + if hasLen { + rvlen = int(decInferLen(containerLenS, maxInitLen, uint(ti.elemsize))) + } else { + rvlen = decDefChanCap + } + if rvCanset { + rv = reflect.MakeChan(ti.rt, rvlen) + rvChanged = true + } else { + halt.errorStr("cannot decode into non-settable chan") + } + } + if fn == nil { + fn = d.fn(rtelem) + } + } + + if ctyp == valueTypeArray { + d.arrayElem(j == 0) + } else if j&1 == 0 { + d.mapElemKey(j == 0) + } else { + d.mapElemValue() + } + + if rv9.IsValid() { + rvSetZero(rv9) + } else if useTransient { + rv9 = d.perType.TransientAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } else { + rv9 = rvZeroAddrK(ti.elem, reflect.Kind(ti.elemkind)) + } + if !d.d.TryNil() { + d.decodeValueNoCheckNil(rv9, fn) + } + rv.Send(rv9) + } + if isArray { + d.arrayEnd() + } else { + d.mapEnd() + } + + if rvChanged { + rvSetDirect(rv0, rv) + } + +} + +func (d *decoderSimpleIO) kMap(f *decFnInfo, rv reflect.Value) { + _ = d.d + containerLen := d.mapStart(d.d.ReadMapStart()) + ti := f.ti + if rvIsNil(rv) { + rvlen := int(decInferLen(containerLen, d.maxInitLen(), uint(ti.keysize+ti.elemsize))) + rvSetDirect(rv, makeMapReflect(ti.rt, rvlen)) + } + + if containerLen == 0 { + d.mapEnd() + return + } + + ktype, vtype := ti.key, ti.elem + ktypeId := rt2id(ktype) + vtypeKind := reflect.Kind(ti.elemkind) + ktypeKind := reflect.Kind(ti.keykind) + mparams := getMapReqParams(ti) + + vtypePtr := vtypeKind == reflect.Ptr + ktypePtr := ktypeKind == reflect.Ptr + + vTransient := decUseTransient && !vtypePtr && ti.tielem.flagCanTransient + + kTransient := vTransient && !ktypePtr && ti.tikey.flagCanTransient + + var vtypeElem reflect.Type + + var keyFn, valFn *decFnSimpleIO + var ktypeLo, vtypeLo = ktype, vtype + + if ktypeKind == reflect.Ptr { + for ktypeLo = ktype.Elem(); ktypeLo.Kind() == reflect.Ptr; ktypeLo = ktypeLo.Elem() { + } + } + + if vtypePtr { + vtypeElem = vtype.Elem() + for vtypeLo = vtypeElem; vtypeLo.Kind() == reflect.Ptr; vtypeLo = vtypeLo.Elem() { + } + } + + rvkMut := !scalarBitset.isset(ti.keykind) + rvvMut := !scalarBitset.isset(ti.elemkind) + rvvCanNil := isnilBitset.isset(ti.elemkind) + + var rvk, rvkn, rvv, rvvn, rvva, rvvz reflect.Value + + var doMapGet, doMapSet bool + + if !d.h.MapValueReset { + if rvvMut && (vtypeKind != reflect.Interface || !d.h.InterfaceReset) { + doMapGet = true + rvva = mapAddrLoopvarRV(vtype, vtypeKind) + } + } + + ktypeIsString := ktypeId == stringTypId + ktypeIsIntf := ktypeId == intfTypId + hasLen := containerLen >= 0 + + var kstr2bs []byte + var kstr string + + var mapKeyStringSharesBytesBuf bool + var att dBytesAttachState + + var vElem, kElem reflect.Type + kbuiltin := ti.tikey.flagDecBuiltin && ti.keykind != uint8(reflect.Slice) + vbuiltin := ti.tielem.flagDecBuiltin + if kbuiltin && ktypePtr { + kElem = ti.key.Elem() + } + if vbuiltin && vtypePtr { + vElem = ti.elem.Elem() + } + + for j := 0; d.containerNext(j, containerLen, hasLen); j++ { + mapKeyStringSharesBytesBuf = false + kstr = "" + if j == 0 { + + if kTransient { + rvk = d.perType.TransientAddr2K(ktype, ktypeKind) + } else { + rvk = rvZeroAddrK(ktype, ktypeKind) + } + if !rvkMut { + rvkn = rvk + } + if !rvvMut { + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + } + if !ktypeIsString && keyFn == nil { + keyFn = d.fn(ktypeLo) + } + if valFn == nil { + valFn = d.fn(vtypeLo) + } + } else if rvkMut { + rvSetZero(rvk) + } else { + rvk = rvkn + } + + d.mapElemKey(j == 0) + + if d.d.TryNil() { + rvSetZero(rvk) + } else if ktypeIsString { + kstr2bs, att = d.d.DecodeStringAsBytes() + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, att) + rvSetString(rvk, kstr) + } else { + if kbuiltin { + if ktypePtr { + if rvIsNil(rvk) { + rvSetDirect(rvk, reflect.New(kElem)) + } + d.decode(rv2i(rvk)) + } else { + d.decode(rv2i(rvAddr(rvk, ti.tikey.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvk, keyFn) + } + + if ktypeIsIntf { + if rvk2 := rvk.Elem(); rvk2.IsValid() && rvk2.Type() == uint8SliceTyp { + kstr2bs = rvGetBytes(rvk2) + kstr, mapKeyStringSharesBytesBuf = d.bytes2Str(kstr2bs, dBytesAttachView) + rvSetIntf(rvk, rv4istr(kstr)) + } + + } + } + + if mapKeyStringSharesBytesBuf && d.bufio { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + mapKeyStringSharesBytesBuf = false + } + + d.mapElemValue() + + if d.d.TryNil() { + if mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + + if !rvvz.IsValid() { + rvvz = rvZeroK(vtype, vtypeKind) + } + mapSet(rv, rvk, rvvz, mparams) + continue + } + + doMapSet = true + + if !rvvMut { + rvv = rvvn + } else if !doMapGet { + goto NEW_RVV + } else { + rvv = mapGet(rv, rvk, rvva, mparams) + if !rvv.IsValid() || (rvvCanNil && rvIsNil(rvv)) { + goto NEW_RVV + } + switch vtypeKind { + case reflect.Ptr, reflect.Map: + doMapSet = false + case reflect.Interface: + + rvvn = rvv.Elem() + if k := rvvn.Kind(); (k == reflect.Ptr || k == reflect.Map) && !rvIsNil(rvvn) { + d.decodeValueNoCheckNil(rvvn, nil) + continue + } + + rvvn = rvZeroAddrK(vtype, vtypeKind) + rvSetIntf(rvvn, rvv) + rvv = rvvn + default: + + if vTransient { + rvvn = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvvn = rvZeroAddrK(vtype, vtypeKind) + } + rvSetDirect(rvvn, rvv) + rvv = rvvn + } + } + goto DECODE_VALUE_NO_CHECK_NIL + + NEW_RVV: + if vtypePtr { + rvv = reflect.New(vtypeElem) + } else if vTransient { + rvv = d.perType.TransientAddrK(vtype, vtypeKind) + } else { + rvv = rvZeroAddrK(vtype, vtypeKind) + } + + DECODE_VALUE_NO_CHECK_NIL: + if doMapSet && mapKeyStringSharesBytesBuf { + if ktypeIsString { + rvSetString(rvk, d.detach2Str(kstr2bs, att)) + } else { + rvSetIntf(rvk, rv4istr(d.detach2Str(kstr2bs, att))) + } + } + if vbuiltin { + if vtypePtr { + if rvIsNil(rvv) { + rvSetDirect(rvv, reflect.New(vElem)) + } + d.decode(rv2i(rvv)) + } else { + d.decode(rv2i(rvAddr(rvv, ti.tielem.ptr))) + } + } else { + d.decodeValueNoCheckNil(rvv, valFn) + } + if doMapSet { + mapSet(rv, rvk, rvv, mparams) + } + } + + d.mapEnd() +} + +func (d *decoderSimpleIO) init(h Handle) { + initHandle(h) + callMake(&d.d) + d.hh = h + d.h = h.getBasicHandle() + + d.err = errDecoderNotInitialized + + if d.h.InternString && d.is == nil { + d.is.init() + } + + d.fp = d.d.init(h, &d.decoderBase, d).(*fastpathDsSimpleIO) + + if d.bytes { + d.rtidFn = &d.h.rtidFnsDecBytes + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtBytes + } else { + d.bufio = d.h.ReaderBufferSize > 0 + d.rtidFn = &d.h.rtidFnsDecIO + d.rtidFnNoExt = &d.h.rtidFnsDecNoExtIO + } + + d.reset() + +} + +func (d *decoderSimpleIO) reset() { + d.d.reset() + d.err = nil + d.c = 0 + d.depth = 0 + d.calls = 0 + + d.maxdepth = decDefMaxDepth + if d.h.MaxDepth > 0 { + d.maxdepth = d.h.MaxDepth + } + d.mtid = 0 + d.stid = 0 + d.mtr = false + d.str = false + if d.h.MapType != nil { + d.mtid = rt2id(d.h.MapType) + _, d.mtr = fastpathAvIndex(d.mtid) + } + if d.h.SliceType != nil { + d.stid = rt2id(d.h.SliceType) + _, d.str = fastpathAvIndex(d.stid) + } +} + +func (d *decoderSimpleIO) Reset(r io.Reader) { + if d.bytes { + halt.onerror(errDecNoResetBytesWithReader) + } + d.reset() + if r == nil { + r = &eofReader + } + d.d.resetInIO(r) +} + +func (d *decoderSimpleIO) ResetBytes(in []byte) { + if !d.bytes { + halt.onerror(errDecNoResetReaderWithBytes) + } + d.resetBytes(in) +} + +func (d *decoderSimpleIO) resetBytes(in []byte) { + d.reset() + if in == nil { + in = zeroByteSlice + } + d.d.resetInBytes(in) +} + +func (d *decoderSimpleIO) ResetString(s string) { + d.ResetBytes(bytesView(s)) +} + +func (d *decoderSimpleIO) Decode(v interface{}) (err error) { + + defer panicValToErr(d, callRecoverSentinel, &d.err, &err, debugging) + d.mustDecode(v) + return +} + +func (d *decoderSimpleIO) MustDecode(v interface{}) { + defer panicValToErr(d, callRecoverSentinel, &d.err, nil, true) + d.mustDecode(v) + return +} + +func (d *decoderSimpleIO) mustDecode(v interface{}) { + halt.onerror(d.err) + if d.hh == nil { + halt.onerror(errNoFormatHandle) + } + + d.calls++ + d.decode(v) + d.calls-- +} + +func (d *decoderSimpleIO) Release() {} + +func (d *decoderSimpleIO) swallow() { + d.d.nextValueBytes() +} + +func (d *decoderSimpleIO) nextValueBytes() []byte { + return d.d.nextValueBytes() +} + +func (d *decoderSimpleIO) decode(iv interface{}) { + _ = d.d + + rv, ok := isNil(iv, true) + if ok { + halt.onerror(errCannotDecodeIntoNil) + } + + switch v := iv.(type) { + + case *string: + *v = d.detach2Str(d.d.DecodeStringAsBytes()) + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(chkOvf.IntV(d.d.DecodeInt64(), intBitsize)) + case *int8: + *v = int8(chkOvf.IntV(d.d.DecodeInt64(), 8)) + case *int16: + *v = int16(chkOvf.IntV(d.d.DecodeInt64(), 16)) + case *int32: + *v = int32(chkOvf.IntV(d.d.DecodeInt64(), 32)) + case *int64: + *v = d.d.DecodeInt64() + case *uint: + *v = uint(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *uint8: + *v = uint8(chkOvf.UintV(d.d.DecodeUint64(), 8)) + case *uint16: + *v = uint16(chkOvf.UintV(d.d.DecodeUint64(), 16)) + case *uint32: + *v = uint32(chkOvf.UintV(d.d.DecodeUint64(), 32)) + case *uint64: + *v = d.d.DecodeUint64() + case *uintptr: + *v = uintptr(chkOvf.UintV(d.d.DecodeUint64(), uintBitsize)) + case *float32: + *v = d.d.DecodeFloat32() + case *float64: + *v = d.d.DecodeFloat64() + case *complex64: + *v = complex(d.d.DecodeFloat32(), 0) + case *complex128: + *v = complex(d.d.DecodeFloat64(), 0) + case *[]byte: + *v, _ = d.decodeBytesInto(*v, false) + case []byte: + + d.decodeBytesInto(v[:len(v):len(v)], true) + case *time.Time: + *v = d.d.DecodeTime() + case *Raw: + *v = d.rawBytes() + + case *interface{}: + d.decodeValue(rv4iptr(v), nil) + + case reflect.Value: + if ok, _ = isDecodeable(v); !ok { + d.haltAsNotDecodeable(v) + } + d.decodeValue(v, nil) + + default: + + if skipFastpathTypeSwitchInDirectCall || !d.dh.fastpathDecodeTypeSwitch(iv, d) { + if !rv.IsValid() { + rv = reflect.ValueOf(iv) + } + if ok, _ = isDecodeable(rv); !ok { + d.haltAsNotDecodeable(rv) + } + d.decodeValue(rv, nil) + } + } +} + +func (d *decoderSimpleIO) decodeValue(rv reflect.Value, fn *decFnSimpleIO) { + if d.d.TryNil() { + decSetNonNilRV2Zero(rv) + } else { + d.decodeValueNoCheckNil(rv, fn) + } +} + +func (d *decoderSimpleIO) decodeValueNoCheckNil(rv reflect.Value, fn *decFnSimpleIO) { + + var rvp reflect.Value + var rvpValid bool +PTR: + if rv.Kind() == reflect.Ptr { + rvpValid = true + if rvIsNil(rv) { + rvSetDirect(rv, reflect.New(rv.Type().Elem())) + } + rvp = rv + rv = rv.Elem() + goto PTR + } + + if fn == nil { + fn = d.fn(rv.Type()) + } + if fn.i.addrD { + if rvpValid { + rv = rvp + } else if rv.CanAddr() { + rv = rvAddr(rv, fn.i.ti.ptr) + } else if fn.i.addrDf { + halt.errorStr("cannot decode into a non-pointer value") + } + } + fn.fd(d, &fn.i, rv) +} + +func (d *decoderSimpleIO) decodeAs(v interface{}, t reflect.Type, ext bool) { + if ext { + d.decodeValue(baseRV(v), d.fn(t)) + } else { + d.decodeValue(baseRV(v), d.fnNoExt(t)) + } +} + +func (d *decoderSimpleIO) structFieldNotFound(index int, rvkencname string) { + + if d.h.ErrorIfNoField { + if index >= 0 { + halt.errorInt("no matching struct field found when decoding stream array at index ", int64(index)) + } else if rvkencname != "" { + halt.errorStr2("no matching struct field found when decoding stream map with key ", rvkencname) + } + } + d.swallow() +} + +func (d *decoderSimpleIO) decodeBytesInto(out []byte, mustFit bool) (v []byte, state dBytesIntoState) { + v, att := d.d.DecodeBytes() + if cap(v) == 0 || (att >= dBytesAttachViewZerocopy && !mustFit) { + + return + } + if len(v) == 0 { + v = zeroByteSlice + return + } + if len(out) == len(v) { + state = dBytesIntoParamOut + } else if cap(out) >= len(v) { + out = out[:len(v)] + state = dBytesIntoParamOutSlice + } else if mustFit { + halt.errorf("bytes capacity insufficient for decoded bytes: got/expected: %d/%d", len(v), len(out)) + } else { + out = make([]byte, len(v)) + state = dBytesIntoNew + } + copy(out, v) + v = out + return +} + +func (d *decoderSimpleIO) rawBytes() (v []byte) { + + v = d.d.nextValueBytes() + if d.bytes && !d.h.ZeroCopy { + vv := make([]byte, len(v)) + copy(vv, v) + v = vv + } + return +} + +func (d *decoderSimpleIO) wrapErr(v error, err *error) { + *err = wrapCodecErr(v, d.hh.Name(), d.d.NumBytesRead(), false) +} + +func (d *decoderSimpleIO) NumBytesRead() int { + return d.d.NumBytesRead() +} + +func (d *decoderSimpleIO) containerNext(j, containerLen int, hasLen bool) bool { + + if hasLen { + return j < containerLen + } + return !d.d.CheckBreak() +} + +func (d *decoderSimpleIO) mapElemKey(firstTime bool) { + d.d.ReadMapElemKey(firstTime) + d.c = containerMapKey +} + +func (d *decoderSimpleIO) mapElemValue() { + d.d.ReadMapElemValue() + d.c = containerMapValue +} + +func (d *decoderSimpleIO) mapEnd() { + d.d.ReadMapEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderSimpleIO) arrayElem(firstTime bool) { + d.d.ReadArrayElem(firstTime) + d.c = containerArrayElem +} + +func (d *decoderSimpleIO) arrayEnd() { + d.d.ReadArrayEnd() + d.depthDecr() + d.c = 0 +} + +func (d *decoderSimpleIO) interfaceExtConvertAndDecode(v interface{}, ext InterfaceExt) { + + var vv interface{} + d.decode(&vv) + ext.UpdateExt(v, vv) + +} + +func (d *decoderSimpleIO) fn(t reflect.Type) *decFnSimpleIO { + return d.dh.decFnViaBH(t, d.rtidFn, d.h, d.fp, false) +} + +func (d *decoderSimpleIO) fnNoExt(t reflect.Type) *decFnSimpleIO { + return d.dh.decFnViaBH(t, d.rtidFnNoExt, d.h, d.fp, true) +} + +func (helperDecDriverSimpleIO) newDecoderBytes(in []byte, h Handle) *decoderSimpleIO { + var c1 decoderSimpleIO + c1.bytes = true + c1.init(h) + c1.ResetBytes(in) + return &c1 +} + +func (helperDecDriverSimpleIO) newDecoderIO(in io.Reader, h Handle) *decoderSimpleIO { + var c1 decoderSimpleIO + c1.init(h) + c1.Reset(in) + return &c1 +} + +func (helperDecDriverSimpleIO) decFnloadFastpathUnderlying(ti *typeInfo, fp *fastpathDsSimpleIO) (f *fastpathDSimpleIO, u reflect.Type) { + rtid := rt2id(ti.fastpathUnderlying) + idx, ok := fastpathAvIndex(rtid) + if !ok { + return + } + f = &fp[idx] + if uint8(reflect.Array) == ti.kind { + u = reflect.ArrayOf(ti.rt.Len(), ti.elem) + } else { + u = f.rt + } + return +} + +func (helperDecDriverSimpleIO) decFindRtidFn(s []decRtidFnSimpleIO, rtid uintptr) (i uint, fn *decFnSimpleIO) { + + var h uint + var j = uint(len(s)) +LOOP: + if i < j { + h = (i + j) >> 1 + if s[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + goto LOOP + } + if i < uint(len(s)) && s[i].rtid == rtid { + fn = s[i].fn + } + return +} + +func (helperDecDriverSimpleIO) decFromRtidFnSlice(fns *atomicRtidFnSlice) (s []decRtidFnSimpleIO) { + if v := fns.load(); v != nil { + s = *(lowLevelToPtr[[]decRtidFnSimpleIO](v)) + } + return +} + +func (dh helperDecDriverSimpleIO) decFnViaBH(rt reflect.Type, fns *atomicRtidFnSlice, x *BasicHandle, fp *fastpathDsSimpleIO, + checkExt bool) (fn *decFnSimpleIO) { + return dh.decFnVia(rt, fns, x.typeInfos(), &x.mu, x.extHandle, fp, + checkExt, x.CheckCircularRef, x.timeBuiltin, x.binaryHandle, x.jsonHandle) +} + +func (dh helperDecDriverSimpleIO) decFnVia(rt reflect.Type, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleIO) { + rtid := rt2id(rt) + var sp []decRtidFnSimpleIO = dh.decFromRtidFnSlice(fns) + if sp != nil { + _, fn = dh.decFindRtidFn(sp, rtid) + } + if fn == nil { + fn = dh.decFnViaLoader(rt, rtid, fns, tinfos, mu, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + } + return +} + +func (dh helperDecDriverSimpleIO) decFnViaLoader(rt reflect.Type, rtid uintptr, fns *atomicRtidFnSlice, + tinfos *TypeInfos, mu *sync.Mutex, exth extHandle, fp *fastpathDsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleIO) { + + fn = dh.decFnLoad(rt, rtid, tinfos, exth, fp, checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json) + var sp []decRtidFnSimpleIO + mu.Lock() + sp = dh.decFromRtidFnSlice(fns) + + if sp == nil { + sp = []decRtidFnSimpleIO{{rtid, fn}} + fns.store(ptrToLowLevel(&sp)) + } else { + idx, fn2 := dh.decFindRtidFn(sp, rtid) + if fn2 == nil { + sp2 := make([]decRtidFnSimpleIO, len(sp)+1) + copy(sp2[idx+1:], sp[idx:]) + copy(sp2, sp[:idx]) + sp2[idx] = decRtidFnSimpleIO{rtid, fn} + fns.store(ptrToLowLevel(&sp2)) + } + } + mu.Unlock() + return +} + +func (dh helperDecDriverSimpleIO) decFnLoad(rt reflect.Type, rtid uintptr, tinfos *TypeInfos, + exth extHandle, fp *fastpathDsSimpleIO, + checkExt, checkCircularRef, timeBuiltin, binaryEncoding, json bool) (fn *decFnSimpleIO) { + fn = new(decFnSimpleIO) + fi := &(fn.i) + ti := tinfos.get(rtid, rt) + fi.ti = ti + rk := reflect.Kind(ti.kind) + + fi.addrDf = true + + if rtid == timeTypId && timeBuiltin { + fn.fd = (*decoderSimpleIO).kTime + } else if rtid == rawTypId { + fn.fd = (*decoderSimpleIO).raw + } else if rtid == rawExtTypId { + fn.fd = (*decoderSimpleIO).rawExt + fi.addrD = true + } else if xfFn := exth.getExt(rtid, checkExt); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.fd = (*decoderSimpleIO).ext + fi.addrD = true + } else if ti.flagSelfer || ti.flagSelferPtr { + fn.fd = (*decoderSimpleIO).selferUnmarshal + fi.addrD = ti.flagSelferPtr + } else if supportMarshalInterfaces && binaryEncoding && + (ti.flagBinaryMarshaler || ti.flagBinaryMarshalerPtr) && + (ti.flagBinaryUnmarshaler || ti.flagBinaryUnmarshalerPtr) { + fn.fd = (*decoderSimpleIO).binaryUnmarshal + fi.addrD = ti.flagBinaryUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && json && + (ti.flagJsonMarshaler || ti.flagJsonMarshalerPtr) && + (ti.flagJsonUnmarshaler || ti.flagJsonUnmarshalerPtr) { + + fn.fd = (*decoderSimpleIO).jsonUnmarshal + fi.addrD = ti.flagJsonUnmarshalerPtr + } else if supportMarshalInterfaces && !binaryEncoding && + (ti.flagTextMarshaler || ti.flagTextMarshalerPtr) && + (ti.flagTextUnmarshaler || ti.flagTextUnmarshalerPtr) { + fn.fd = (*decoderSimpleIO).textUnmarshal + fi.addrD = ti.flagTextUnmarshalerPtr + } else { + if fastpathEnabled && (rk == reflect.Map || rk == reflect.Slice || rk == reflect.Array) { + var rtid2 uintptr + if !ti.flagHasPkgPath { + rtid2 = rtid + if rk == reflect.Array { + rtid2 = rt2id(ti.key) + } + if idx, ok := fastpathAvIndex(rtid2); ok { + fn.fd = fp[idx].decfn + fi.addrD = true + fi.addrDf = false + if rk == reflect.Array { + fi.addrD = false + } + } + } else { + + xfe, xrt := dh.decFnloadFastpathUnderlying(ti, fp) + if xfe != nil { + xfnf2 := xfe.decfn + if rk == reflect.Array { + fi.addrD = false + fn.fd = func(d *decoderSimpleIO, xf *decFnInfo, xrv reflect.Value) { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } else { + fi.addrD = true + fi.addrDf = false + xptr2rt := reflect.PointerTo(xrt) + fn.fd = func(d *decoderSimpleIO, xf *decFnInfo, xrv reflect.Value) { + if xrv.Kind() == reflect.Ptr { + xfnf2(d, xf, rvConvert(xrv, xptr2rt)) + } else { + xfnf2(d, xf, rvConvert(xrv, xrt)) + } + } + } + } + } + } + if fn.fd == nil { + switch rk { + case reflect.Bool: + fn.fd = (*decoderSimpleIO).kBool + case reflect.String: + fn.fd = (*decoderSimpleIO).kString + case reflect.Int: + fn.fd = (*decoderSimpleIO).kInt + case reflect.Int8: + fn.fd = (*decoderSimpleIO).kInt8 + case reflect.Int16: + fn.fd = (*decoderSimpleIO).kInt16 + case reflect.Int32: + fn.fd = (*decoderSimpleIO).kInt32 + case reflect.Int64: + fn.fd = (*decoderSimpleIO).kInt64 + case reflect.Uint: + fn.fd = (*decoderSimpleIO).kUint + case reflect.Uint8: + fn.fd = (*decoderSimpleIO).kUint8 + case reflect.Uint16: + fn.fd = (*decoderSimpleIO).kUint16 + case reflect.Uint32: + fn.fd = (*decoderSimpleIO).kUint32 + case reflect.Uint64: + fn.fd = (*decoderSimpleIO).kUint64 + case reflect.Uintptr: + fn.fd = (*decoderSimpleIO).kUintptr + case reflect.Float32: + fn.fd = (*decoderSimpleIO).kFloat32 + case reflect.Float64: + fn.fd = (*decoderSimpleIO).kFloat64 + case reflect.Complex64: + fn.fd = (*decoderSimpleIO).kComplex64 + case reflect.Complex128: + fn.fd = (*decoderSimpleIO).kComplex128 + case reflect.Chan: + fn.fd = (*decoderSimpleIO).kChan + case reflect.Slice: + fn.fd = (*decoderSimpleIO).kSlice + case reflect.Array: + fi.addrD = false + fn.fd = (*decoderSimpleIO).kArray + case reflect.Struct: + if ti.simple { + fn.fd = (*decoderSimpleIO).kStructSimple + } else { + fn.fd = (*decoderSimpleIO).kStruct + } + case reflect.Map: + fn.fd = (*decoderSimpleIO).kMap + case reflect.Interface: + + fn.fd = (*decoderSimpleIO).kInterface + default: + + fn.fd = (*decoderSimpleIO).kErr + } + } + } + return +} +func (e *simpleEncDriverIO) EncodeNil() { + e.w.writen1(simpleVdNil) +} + +func (e *simpleEncDriverIO) EncodeBool(b bool) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && !b { + e.EncodeNil() + return + } + if b { + e.w.writen1(simpleVdTrue) + } else { + e.w.writen1(simpleVdFalse) + } +} + +func (e *simpleEncDriverIO) EncodeFloat32(f float32) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { + e.EncodeNil() + return + } + e.w.writen1(simpleVdFloat32) + e.w.writen4(bigen.PutUint32(math.Float32bits(f))) +} + +func (e *simpleEncDriverIO) EncodeFloat64(f float64) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && f == 0.0 { + e.EncodeNil() + return + } + e.w.writen1(simpleVdFloat64) + e.w.writen8(bigen.PutUint64(math.Float64bits(f))) +} + +func (e *simpleEncDriverIO) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-v), simpleVdNegInt) + } else { + e.encUint(uint64(v), simpleVdPosInt) + } +} + +func (e *simpleEncDriverIO) EncodeUint(v uint64) { + e.encUint(v, simpleVdPosInt) +} + +func (e *simpleEncDriverIO) encUint(v uint64, bd uint8) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == 0 { + e.EncodeNil() + return + } + if v <= math.MaxUint8 { + e.w.writen2(bd, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 1) + e.w.writen2(bigen.PutUint16(uint16(v))) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 2) + e.w.writen4(bigen.PutUint32(uint32(v))) + } else { + e.w.writen1(bd + 3) + e.w.writen8(bigen.PutUint64(v)) + } +} + +func (e *simpleEncDriverIO) encLen(bd byte, length int) { + if length == 0 { + e.w.writen1(bd) + } else if length <= math.MaxUint8 { + e.w.writen1(bd + 1) + e.w.writen1(uint8(length)) + } else if length <= math.MaxUint16 { + e.w.writen1(bd + 2) + e.w.writen2(bigen.PutUint16(uint16(length))) + } else if int64(length) <= math.MaxUint32 { + e.w.writen1(bd + 3) + e.w.writen4(bigen.PutUint32(uint32(length))) + } else { + e.w.writen1(bd + 4) + e.w.writen8(bigen.PutUint64(uint64(length))) + } +} + +func (e *simpleEncDriverIO) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + var bs0, bs []byte + if ext == SelfExt { + bs0 = e.e.blist.get(1024) + bs = bs0 + sideEncode(e.h, &e.h.sideEncPool, func(se encoderI) { oneOffEncode(se, v, &bs, basetype, true) }) + } else { + bs = ext.WriteExt(v) + } + if bs == nil { + e.writeNilBytes() + goto END + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +END: + if ext == SelfExt { + e.e.blist.put(bs) + if !byteSliceSameData(bs0, bs) { + e.e.blist.put(bs0) + } + } +} + +func (e *simpleEncDriverIO) EncodeRawExt(re *RawExt) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *simpleEncDriverIO) encodeExtPreamble(xtag byte, length int) { + e.encLen(simpleVdExt, length) + e.w.writen1(xtag) +} + +func (e *simpleEncDriverIO) WriteArrayStart(length int) { + e.encLen(simpleVdArray, length) +} + +func (e *simpleEncDriverIO) WriteMapStart(length int) { + e.encLen(simpleVdMap, length) +} + +func (e *simpleEncDriverIO) WriteArrayEmpty() { + + e.w.writen1(simpleVdArray) +} + +func (e *simpleEncDriverIO) WriteMapEmpty() { + + e.w.writen1(simpleVdMap) +} + +func (e *simpleEncDriverIO) EncodeString(v string) { + if e.h.EncZeroValuesAsNil && e.e.c != containerMapKey && v == "" { + e.EncodeNil() + return + } + if e.h.StringToRaw { + e.encLen(simpleVdByteArray, len(v)) + } else { + e.encLen(simpleVdString, len(v)) + } + e.w.writestr(v) +} + +func (e *simpleEncDriverIO) EncodeStringNoEscape4Json(v string) { e.EncodeString(v) } + +func (e *simpleEncDriverIO) EncodeStringBytesRaw(v []byte) { + + e.encLen(simpleVdByteArray, len(v)) + e.w.writeb(v) +} + +func (e *simpleEncDriverIO) EncodeBytes(v []byte) { + if v == nil { + e.writeNilBytes() + return + } + e.EncodeStringBytesRaw(v) +} + +func (e *simpleEncDriverIO) encodeNilBytes() { + b := byte(simpleVdNil) + if e.h.NilCollectionToZeroLength { + b = simpleVdArray + } + e.w.writen1(b) +} + +func (e *simpleEncDriverIO) writeNilOr(v byte) { + if !e.h.NilCollectionToZeroLength { + v = simpleVdNil + } + e.w.writen1(v) +} + +func (e *simpleEncDriverIO) writeNilArray() { + e.writeNilOr(simpleVdArray) +} + +func (e *simpleEncDriverIO) writeNilMap() { + e.writeNilOr(simpleVdMap) +} + +func (e *simpleEncDriverIO) writeNilBytes() { + e.writeNilOr(simpleVdByteArray) +} + +func (e *simpleEncDriverIO) EncodeTime(t time.Time) { + + if t.IsZero() { + e.EncodeNil() + return + } + v, err := t.MarshalBinary() + halt.onerror(err) + e.w.writen2(simpleVdTime, uint8(len(v))) + e.w.writeb(v) +} + +func (d *simpleDecDriverIO) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *simpleDecDriverIO) advanceNil() (null bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdNil { + d.bdRead = false + return true + } + return +} + +func (d *simpleDecDriverIO) ContainerType() (vt valueType) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case simpleVdNil: + d.bdRead = false + return valueTypeNil + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + return valueTypeBytes + case simpleVdString, simpleVdString + 1, + simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: + return valueTypeString + case simpleVdArray, simpleVdArray + 1, + simpleVdArray + 2, simpleVdArray + 3, simpleVdArray + 4: + return valueTypeArray + case simpleVdMap, simpleVdMap + 1, + simpleVdMap + 2, simpleVdMap + 3, simpleVdMap + 4: + return valueTypeMap + } + return valueTypeUnset +} + +func (d *simpleDecDriverIO) TryNil() bool { + return d.advanceNil() +} + +func (d *simpleDecDriverIO) decFloat() (f float64, ok bool) { + ok = true + switch d.bd { + case simpleVdFloat32: + f = float64(math.Float32frombits(bigen.Uint32(d.r.readn4()))) + case simpleVdFloat64: + f = math.Float64frombits(bigen.Uint64(d.r.readn8())) + default: + ok = false + } + return +} + +func (d *simpleDecDriverIO) decInteger() (ui uint64, neg, ok bool) { + ok = true + switch d.bd { + case simpleVdPosInt: + ui = uint64(d.r.readn1()) + case simpleVdPosInt + 1: + ui = uint64(bigen.Uint16(d.r.readn2())) + case simpleVdPosInt + 2: + ui = uint64(bigen.Uint32(d.r.readn4())) + case simpleVdPosInt + 3: + ui = uint64(bigen.Uint64(d.r.readn8())) + case simpleVdNegInt: + ui = uint64(d.r.readn1()) + neg = true + case simpleVdNegInt + 1: + ui = uint64(bigen.Uint16(d.r.readn2())) + neg = true + case simpleVdNegInt + 2: + ui = uint64(bigen.Uint32(d.r.readn4())) + neg = true + case simpleVdNegInt + 3: + ui = uint64(bigen.Uint64(d.r.readn8())) + neg = true + default: + ok = false + + } + + return +} + +func (d *simpleDecDriverIO) DecodeInt64() (i int64) { + if d.advanceNil() { + return + } + v1, v2, v3 := d.decInteger() + i = decNegintPosintFloatNumberHelper{d}.int64(v1, v2, v3, false) + d.bdRead = false + return +} + +func (d *simpleDecDriverIO) DecodeUint64() (ui uint64) { + if d.advanceNil() { + return + } + ui = decNegintPosintFloatNumberHelper{d}.uint64(d.decInteger()) + d.bdRead = false + return +} + +func (d *simpleDecDriverIO) DecodeFloat64() (f float64) { + if d.advanceNil() { + return + } + v1, v2 := d.decFloat() + f = decNegintPosintFloatNumberHelper{d}.float64(v1, v2, false) + d.bdRead = false + return +} + +func (d *simpleDecDriverIO) DecodeBool() (b bool) { + if d.advanceNil() { + return + } + if d.bd == simpleVdFalse { + } else if d.bd == simpleVdTrue { + b = true + } else { + halt.errorf("cannot decode bool - %s: %x", msgBadDesc, d.bd) + } + d.bdRead = false + return +} + +func (d *simpleDecDriverIO) ReadMapStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriverIO) ReadArrayStart() (length int) { + if d.advanceNil() { + return containerLenNil + } + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriverIO) uint2Len(ui uint64) int { + if chkOvf.Uint(ui, intBitsize) { + halt.errorf("overflow integer: %v", ui) + } + return int(ui) +} + +func (d *simpleDecDriverIO) decLen() int { + switch d.bd & 7 { + case 0: + return 0 + case 1: + return int(d.r.readn1()) + case 2: + return int(bigen.Uint16(d.r.readn2())) + case 3: + return d.uint2Len(uint64(bigen.Uint32(d.r.readn4()))) + case 4: + return d.uint2Len(bigen.Uint64(d.r.readn8())) + } + halt.errorf("cannot read length: bd%%8 must be in range 0..4. Got: %d", d.bd%8) + return -1 +} + +func (d *simpleDecDriverIO) DecodeStringAsBytes() ([]byte, dBytesAttachState) { + return d.DecodeBytes() +} + +func (d *simpleDecDriverIO) DecodeBytes() (bs []byte, state dBytesAttachState) { + if d.advanceNil() { + return + } + var cond bool + + if d.bd >= simpleVdArray && d.bd <= simpleVdArray+4 { + slen := d.ReadArrayStart() + bs, cond = usableByteSlice(d.d.buf, slen) + for i := 0; i < len(bs); i++ { + bs[i] = uint8(chkOvf.UintV(d.DecodeUint64(), 8)) + } + for i := len(bs); i < slen; i++ { + bs = append(bs, uint8(chkOvf.UintV(d.DecodeUint64(), 8))) + } + if cond { + d.d.buf = bs + } + state = dBytesAttachBuffer + + return + } + + clen := d.decLen() + d.bdRead = false + bs, cond = d.r.readxb(uint(clen)) + state = d.d.attachState(cond) + return +} + +func (d *simpleDecDriverIO) DecodeTime() (t time.Time) { + if d.advanceNil() { + return + } + if d.bd != simpleVdTime { + halt.errorf("invalid descriptor for time.Time - expect 0x%x, received 0x%x", simpleVdTime, d.bd) + } + d.bdRead = false + clen := uint(d.r.readn1()) + b := d.r.readx(clen) + halt.onerror((&t).UnmarshalBinary(b)) + return +} + +func (d *simpleDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag uint64, ext Ext) { + xbs, _, _, ok := d.decodeExtV(ext != nil, xtag) + if !ok { + return + } + if ext == SelfExt { + sideDecode(d.h, &d.h.sideDecPool, func(sd decoderI) { oneOffDecode(sd, rv, xbs, basetype, true) }) + } else { + ext.ReadExt(rv, xbs) + } +} + +func (d *simpleDecDriverIO) DecodeRawExt(re *RawExt) { + xbs, realxtag, state, ok := d.decodeExtV(false, 0) + if !ok { + return + } + re.Tag = uint64(realxtag) + re.setData(xbs, state >= dBytesAttachViewZerocopy) +} + +func (d *simpleDecDriverIO) decodeExtV(verifyTag bool, xtagIn uint64) (xbs []byte, xtag byte, bstate dBytesAttachState, ok bool) { + if xtagIn > 0xff { + halt.errorf("ext: tag must be <= 0xff; got: %v", xtagIn) + } + if d.advanceNil() { + return + } + tag := uint8(xtagIn) + switch d.bd { + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + halt.errorf("wrong extension tag. Got %b. Expecting: %v", xtag, tag) + } + xbs, ok = d.r.readxb(uint(l)) + bstate = d.d.attachState(ok) + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + xbs, bstate = d.DecodeBytes() + default: + halt.errorf("ext - %s - expecting extensions/bytearray, got: 0x%x", msgBadDesc, d.bd) + } + d.bdRead = false + ok = true + return +} + +func (d *simpleDecDriverIO) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := d.d.naked() + var decodeFurther bool + + switch d.bd { + case simpleVdNil: + n.v = valueTypeNil + case simpleVdFalse: + n.v = valueTypeBool + n.b = false + case simpleVdTrue: + n.v = valueTypeBool + n.b = true + case simpleVdPosInt, simpleVdPosInt + 1, simpleVdPosInt + 2, simpleVdPosInt + 3: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt64() + } else { + n.v = valueTypeUint + n.u = d.DecodeUint64() + } + case simpleVdNegInt, simpleVdNegInt + 1, simpleVdNegInt + 2, simpleVdNegInt + 3: + n.v = valueTypeInt + n.i = d.DecodeInt64() + case simpleVdFloat32: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + case simpleVdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat64() + case simpleVdTime: + n.v = valueTypeTime + n.t = d.DecodeTime() + case simpleVdString, simpleVdString + 1, + simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: + n.v = valueTypeString + n.s = d.d.detach2Str(d.DecodeStringAsBytes()) + case simpleVdByteArray, simpleVdByteArray + 1, + simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + d.d.fauxUnionReadRawBytes(d, false, d.h.RawToString) + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(uint(l)) + + case simpleVdArray, simpleVdArray + 1, simpleVdArray + 2, + simpleVdArray + 3, simpleVdArray + 4: + n.v = valueTypeArray + decodeFurther = true + case simpleVdMap, simpleVdMap + 1, simpleVdMap + 2, simpleVdMap + 3, simpleVdMap + 4: + n.v = valueTypeMap + decodeFurther = true + default: + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, d.bd) + } + + if !decodeFurther { + d.bdRead = false + } +} + +func (d *simpleDecDriverIO) nextValueBytes() (v []byte) { + if !d.bdRead { + d.readNextBd() + } + d.r.startRecording() + d.nextValueBytesBdReadR() + v = d.r.stopRecording() + d.bdRead = false + return +} + +func (d *simpleDecDriverIO) nextValueBytesBdReadR() { + c := d.bd + + var length uint + + switch c { + case simpleVdNil, simpleVdFalse, simpleVdTrue, simpleVdString, simpleVdByteArray: + + case simpleVdPosInt, simpleVdNegInt: + d.r.readn1() + case simpleVdPosInt + 1, simpleVdNegInt + 1: + d.r.skip(2) + case simpleVdPosInt + 2, simpleVdNegInt + 2, simpleVdFloat32: + d.r.skip(4) + case simpleVdPosInt + 3, simpleVdNegInt + 3, simpleVdFloat64: + d.r.skip(8) + case simpleVdTime: + c = d.r.readn1() + d.r.skip(uint(c)) + + default: + switch c & 7 { + case 0: + length = 0 + case 1: + b := d.r.readn1() + length = uint(b) + case 2: + x := d.r.readn2() + length = uint(bigen.Uint16(x)) + case 3: + x := d.r.readn4() + length = uint(bigen.Uint32(x)) + case 4: + x := d.r.readn8() + length = uint(bigen.Uint64(x)) + } + + bExt := c >= simpleVdExt && c <= simpleVdExt+7 + bStr := c >= simpleVdString && c <= simpleVdString+7 + bByteArray := c >= simpleVdByteArray && c <= simpleVdByteArray+7 + bArray := c >= simpleVdArray && c <= simpleVdArray+7 + bMap := c >= simpleVdMap && c <= simpleVdMap+7 + + if !(bExt || bStr || bByteArray || bArray || bMap) { + halt.errorf("cannot infer value - %s 0x%x", msgBadDesc, c) + } + + if bExt { + d.r.readn1() + } + + if length == 0 { + break + } + + if bArray { + for i := uint(0); i < length; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else if bMap { + for i := uint(0); i < length; i++ { + d.readNextBd() + d.nextValueBytesBdReadR() + d.readNextBd() + d.nextValueBytesBdReadR() + } + } else { + d.r.skip(length) + } + } + return +} + +func (d *simpleEncDriverIO) init(hh Handle, shared *encoderBase, enc encoderI) (fp interface{}) { + callMake(&d.w) + d.h = hh.(*SimpleHandle) + d.e = shared + if shared.bytes { + fp = simpleFpEncBytes + } else { + fp = simpleFpEncIO + } + + d.init2(enc) + return +} + +func (e *simpleEncDriverIO) writeBytesAsis(b []byte) { e.w.writeb(b) } + +func (e *simpleEncDriverIO) writerEnd() { e.w.end() } + +func (e *simpleEncDriverIO) resetOutBytes(out *[]byte) { + e.w.resetBytes(*out, out) +} + +func (e *simpleEncDriverIO) resetOutIO(out io.Writer) { + e.w.resetIO(out, e.h.WriterBufferSize, &e.e.blist) +} + +func (d *simpleDecDriverIO) init(hh Handle, shared *decoderBase, dec decoderI) (fp interface{}) { + callMake(&d.r) + d.h = hh.(*SimpleHandle) + d.d = shared + if shared.bytes { + fp = simpleFpDecBytes + } else { + fp = simpleFpDecIO + } + + d.init2(dec) + return +} + +func (d *simpleDecDriverIO) NumBytesRead() int { + return int(d.r.numread()) +} + +func (d *simpleDecDriverIO) resetInBytes(in []byte) { + d.r.resetBytes(in) +} + +func (d *simpleDecDriverIO) resetInIO(r io.Reader) { + d.r.resetIO(r, d.h.ReaderBufferSize, d.h.MaxInitLen, &d.d.blist) +} + +func (d *simpleDecDriverIO) descBd() string { + return sprintf("%v (%s)", d.bd, simpledesc(d.bd)) +} + +func (d *simpleDecDriverIO) DecodeFloat32() (f float32) { + return float32(chkOvf.Float32V(d.DecodeFloat64())) +} diff --git a/vendor/github.com/ugorji/go/codec/simple.notfastpath.mono.generated.go b/vendor/github.com/ugorji/go/codec/simple.notfastpath.mono.generated.go new file mode 100644 index 000000000..04edb7438 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/simple.notfastpath.mono.generated.go @@ -0,0 +1,52 @@ +//go:build !notmono && !codec.notmono && (notfastpath || codec.notfastpath) + +// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "reflect" +) + +type fastpathESimpleBytes struct { + rt reflect.Type + encfn func(*encoderSimpleBytes, *encFnInfo, reflect.Value) +} +type fastpathDSimpleBytes struct { + rt reflect.Type + decfn func(*decoderSimpleBytes, *decFnInfo, reflect.Value) +} +type fastpathEsSimpleBytes [0]fastpathESimpleBytes +type fastpathDsSimpleBytes [0]fastpathDSimpleBytes + +func (helperEncDriverSimpleBytes) fastpathEncodeTypeSwitch(iv interface{}, e *encoderSimpleBytes) bool { + return false +} +func (helperDecDriverSimpleBytes) fastpathDecodeTypeSwitch(iv interface{}, d *decoderSimpleBytes) bool { + return false +} + +func (helperEncDriverSimpleBytes) fastpathEList() (v *fastpathEsSimpleBytes) { return } +func (helperDecDriverSimpleBytes) fastpathDList() (v *fastpathDsSimpleBytes) { return } + +type fastpathESimpleIO struct { + rt reflect.Type + encfn func(*encoderSimpleIO, *encFnInfo, reflect.Value) +} +type fastpathDSimpleIO struct { + rt reflect.Type + decfn func(*decoderSimpleIO, *decFnInfo, reflect.Value) +} +type fastpathEsSimpleIO [0]fastpathESimpleIO +type fastpathDsSimpleIO [0]fastpathDSimpleIO + +func (helperEncDriverSimpleIO) fastpathEncodeTypeSwitch(iv interface{}, e *encoderSimpleIO) bool { + return false +} +func (helperDecDriverSimpleIO) fastpathDecodeTypeSwitch(iv interface{}, d *decoderSimpleIO) bool { + return false +} + +func (helperEncDriverSimpleIO) fastpathEList() (v *fastpathEsSimpleIO) { return } +func (helperDecDriverSimpleIO) fastpathDList() (v *fastpathDsSimpleIO) { return } diff --git a/vendor/github.com/ugorji/go/codec/sort-slice.generated.go b/vendor/github.com/ugorji/go/codec/sort-slice.generated.go deleted file mode 100644 index a755a02af..000000000 --- a/vendor/github.com/ugorji/go/codec/sort-slice.generated.go +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from sort-slice.go.tmpl - DO NOT EDIT. - -package codec - -import ( - "bytes" - "reflect" - "time" -) - -type stringSlice []string - -func (p stringSlice) Len() int { return len(p) } -func (p stringSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p stringSlice) Less(i, j int) bool { - return p[uint(i)] < p[uint(j)] -} - -type uint8Slice []uint8 - -func (p uint8Slice) Len() int { return len(p) } -func (p uint8Slice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p uint8Slice) Less(i, j int) bool { - return p[uint(i)] < p[uint(j)] -} - -type uint64Slice []uint64 - -func (p uint64Slice) Len() int { return len(p) } -func (p uint64Slice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p uint64Slice) Less(i, j int) bool { - return p[uint(i)] < p[uint(j)] -} - -type intSlice []int - -func (p intSlice) Len() int { return len(p) } -func (p intSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p intSlice) Less(i, j int) bool { - return p[uint(i)] < p[uint(j)] -} - -type int32Slice []int32 - -func (p int32Slice) Len() int { return len(p) } -func (p int32Slice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p int32Slice) Less(i, j int) bool { - return p[uint(i)] < p[uint(j)] -} - -type stringRv struct { - v string - r reflect.Value -} -type stringRvSlice []stringRv - -func (p stringRvSlice) Len() int { return len(p) } -func (p stringRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p stringRvSlice) Less(i, j int) bool { - return p[uint(i)].v < p[uint(j)].v -} - -type stringIntf struct { - v string - i interface{} -} -type stringIntfSlice []stringIntf - -func (p stringIntfSlice) Len() int { return len(p) } -func (p stringIntfSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p stringIntfSlice) Less(i, j int) bool { - return p[uint(i)].v < p[uint(j)].v -} - -type float64Rv struct { - v float64 - r reflect.Value -} -type float64RvSlice []float64Rv - -func (p float64RvSlice) Len() int { return len(p) } -func (p float64RvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p float64RvSlice) Less(i, j int) bool { - return p[uint(i)].v < p[uint(j)].v || isNaN64(p[uint(i)].v) && !isNaN64(p[uint(j)].v) -} - -type uint64Rv struct { - v uint64 - r reflect.Value -} -type uint64RvSlice []uint64Rv - -func (p uint64RvSlice) Len() int { return len(p) } -func (p uint64RvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p uint64RvSlice) Less(i, j int) bool { - return p[uint(i)].v < p[uint(j)].v -} - -type int64Rv struct { - v int64 - r reflect.Value -} -type int64RvSlice []int64Rv - -func (p int64RvSlice) Len() int { return len(p) } -func (p int64RvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p int64RvSlice) Less(i, j int) bool { - return p[uint(i)].v < p[uint(j)].v -} - -type timeRv struct { - v time.Time - r reflect.Value -} -type timeRvSlice []timeRv - -func (p timeRvSlice) Len() int { return len(p) } -func (p timeRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p timeRvSlice) Less(i, j int) bool { - return p[uint(i)].v.Before(p[uint(j)].v) -} - -type bytesRv struct { - v []byte - r reflect.Value -} -type bytesRvSlice []bytesRv - -func (p bytesRvSlice) Len() int { return len(p) } -func (p bytesRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p bytesRvSlice) Less(i, j int) bool { - return bytes.Compare(p[uint(i)].v, p[uint(j)].v) == -1 -} - -type bytesIntf struct { - v []byte - i interface{} -} -type bytesIntfSlice []bytesIntf - -func (p bytesIntfSlice) Len() int { return len(p) } -func (p bytesIntfSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p bytesIntfSlice) Less(i, j int) bool { - return bytes.Compare(p[uint(i)].v, p[uint(j)].v) == -1 -} diff --git a/vendor/github.com/ugorji/go/codec/sort-slice.go.tmpl b/vendor/github.com/ugorji/go/codec/sort-slice.go.tmpl deleted file mode 100644 index 98209603e..000000000 --- a/vendor/github.com/ugorji/go/codec/sort-slice.go.tmpl +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// Code generated from sort-slice.go.tmpl - DO NOT EDIT. - -{{/* -xxxSlice -xxxIntf -xxxIntfSlice -xxxRv -xxxRvSlice - -I'm now going to create them for -- sortables -- sortablesplus - -With the parameters passed in sortables or sortablesplus, -'time, 'bytes' are special, and correspond to time.Time and []byte respectively. -*/}} - -package codec - -import ( - "time" - "reflect" - "bytes" -) - -{{/* func init() { _ = time.Unix } */}} - -{{define "T"}} -func (p {{ .Type }}) Len() int { return len(p) } -func (p {{ .Type }}) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] } -func (p {{ .Type }}) Less(i, j int) bool { - {{ if eq .Kind "bool" }} return !p[uint(i)]{{.V}} && p[uint(j)]{{.V}} - {{ else if eq .Kind "float32" }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}} || isNaN32(p[uint(i)]{{.V}}) && !isNaN32(p[uint(j)]{{.V}}) - {{ else if eq .Kind "float64" }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}} || isNaN64(p[uint(i)]{{.V}}) && !isNaN64(p[uint(j)]{{.V}}) - {{ else if eq .Kind "time" }} return p[uint(i)]{{.V}}.Before(p[uint(j)]{{.V}}) - {{ else if eq .Kind "bytes" }} return bytes.Compare(p[uint(i)]{{.V}}, p[uint(j)]{{.V}}) == -1 - {{ else }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}} - {{ end -}} -} -{{end}} - -{{range $i, $v := sortables }}{{ $t := tshort $v }} -type {{ $v }}Slice []{{ $t }} -{{template "T" args "Kind" $v "Type" (print $v "Slice") "V" ""}} -{{end}} - -{{range $i, $v := sortablesplus }}{{ $t := tshort $v }} - -type {{ $v }}Rv struct { - v {{ $t }} - r reflect.Value -} -type {{ $v }}RvSlice []{{ $v }}Rv -{{template "T" args "Kind" $v "Type" (print $v "RvSlice") "V" ".v"}} - -{{if eq $v "bytes" "string" -}} -type {{ $v }}Intf struct { - v {{ $t }} - i interface{} -} -type {{ $v }}IntfSlice []{{ $v }}Intf -{{template "T" args "Kind" $v "Type" (print $v "IntfSlice") "V" ".v"}} -{{end}} - -{{end}} diff --git a/vendor/github.com/ugorji/go/codec/writer.go b/vendor/github.com/ugorji/go/codec/writer.go index b6e4813f8..fcfce6109 100644 --- a/vendor/github.com/ugorji/go/codec/writer.go +++ b/vendor/github.com/ugorji/go/codec/writer.go @@ -3,10 +3,14 @@ package codec -import "io" +import ( + "io" +) + +const maxConsecutiveEmptyWrites = 16 // 2 is sufficient, 16 is enough, 64 is optimal // encWriter abstracts writing to a byte array or to an io.Writer. -type encWriter interface { +type encWriterI interface { writeb([]byte) writestr(string) writeqstr(string) // write string wrapped in quotes ie "..." @@ -17,7 +21,11 @@ type encWriter interface { writen4([4]byte) writen8([8]byte) + // isBytes() bool end() + + resetIO(w io.Writer, bufsize int, blist *bytesFreeList) + resetBytes(in []byte, out *[]byte) } // --------------------------------------------- @@ -32,16 +40,18 @@ type bufioEncWriter struct { b [16]byte // scratch buffer and padding (cache-aligned) } -func (z *bufioEncWriter) reset(w io.Writer, bufsize int, blist *bytesFreelist) { +// MARKER: use setByteAt/byteAt to elide the bounds-checks +// when we are sure that we don't go beyond the bounds. + +func (z *bufioEncWriter) resetBytes(in []byte, out *[]byte) { + halt.errorStr("resetBytes is unsupported by bufioEncWriter") +} + +func (z *bufioEncWriter) resetIO(w io.Writer, bufsize int, blist *bytesFreeList) { z.w = w z.n = 0 - if bufsize <= 0 { - bufsize = defEncByteBufSize - } - // bufsize must be >= 8, to accomodate writen methods (where n <= 8) - if bufsize <= 8 { - bufsize = 8 - } + // use minimum bufsize of 16, matching the array z.b and accomodating writen methods (where n <= 8) + bufsize = max(16, bufsize) // max(byteBufSize, bufsize) if cap(z.buf) < bufsize { if len(z.buf) > 0 && &z.buf[0] != &z.b[0] { blist.put(z.buf) @@ -56,17 +66,19 @@ func (z *bufioEncWriter) reset(w io.Writer, bufsize int, blist *bytesFreelist) { } func (z *bufioEncWriter) flushErr() (err error) { - n, err := z.w.Write(z.buf[:z.n]) - z.n -= n - if z.n > 0 { - if err == nil { - err = io.ErrShortWrite + var n int + for i := maxConsecutiveEmptyReads; i > 0; i-- { + n, err = z.w.Write(z.buf[:z.n]) + z.n -= n + if z.n == 0 || err != nil { + return } + // at this point: z.n > 0 && err == nil if n > 0 { copy(z.buf, z.buf[n:z.n+n]) } } - return err + return io.ErrShortWrite // OR io.ErrNoProgress: not enough (or no) data written } func (z *bufioEncWriter) flush() { @@ -131,6 +143,7 @@ func (z *bufioEncWriter) writen1(b1 byte) { // z.buf[z.n] = b1 z.n++ } + func (z *bufioEncWriter) writen2(b1, b2 byte) { if 2 > len(z.buf)-z.n { z.flush() @@ -169,8 +182,14 @@ func (z *bufioEncWriter) endErr() (err error) { return } +func (z *bufioEncWriter) end() { + halt.onerror(z.endErr()) +} + // --------------------------------------------- +var bytesEncAppenderDefOut = []byte{} + // bytesEncAppender implements encWriter and can write to an byte slice. type bytesEncAppender struct { b []byte @@ -203,122 +222,18 @@ func (z *bytesEncAppender) writen4(b [4]byte) { func (z *bytesEncAppender) writen8(b [8]byte) { z.b = append(z.b, b[:]...) - // z.b = append(z.b, b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]) // prevents inlining encWr.writen4 + // z.b = append(z.b, b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]) } -func (z *bytesEncAppender) endErr() error { +func (z *bytesEncAppender) end() { *(z.out) = z.b - return nil } -func (z *bytesEncAppender) reset(in []byte, out *[]byte) { + +func (z *bytesEncAppender) resetBytes(in []byte, out *[]byte) { z.b = in[:0] z.out = out } -// -------------------------------------------------- - -type encWr struct { - wb bytesEncAppender - wf *bufioEncWriter - - bytes bool // encoding to []byte - - // MARKER: these fields below should belong directly in Encoder. - // we pack them here for space efficiency and cache-line optimization. - - js bool // is json encoder? - be bool // is binary encoder? - - c containerState - - calls uint16 - seq uint16 // sequencer (e.g. used by binc for symbols, etc) -} - -// MARKER: manually inline bytesEncAppender.writenx/writeqstr methods, -// as calling them causes encWr.writenx/writeqstr methods to not be inlined (cost > 80). -// -// i.e. e.g. instead of writing z.wb.writen2(b1, b2), use z.wb.b = append(z.wb.b, b1, b2) - -func (z *encWr) writeb(s []byte) { - if z.bytes { - z.wb.writeb(s) - } else { - z.wf.writeb(s) - } -} -func (z *encWr) writestr(s string) { - if z.bytes { - z.wb.writestr(s) - } else { - z.wf.writestr(s) - } +func (z *bytesEncAppender) resetIO(w io.Writer, bufsize int, blist *bytesFreeList) { + halt.errorStr("resetIO is unsupported by bytesEncAppender") } - -// MARKER: Add WriteStr to be called directly by generated code without a genHelper forwarding function. -// Go's inlining model adds cost for forwarding functions, preventing inlining (cost goes above 80 budget). - -func (z *encWr) WriteStr(s string) { - if z.bytes { - z.wb.writestr(s) - } else { - z.wf.writestr(s) - } -} - -func (z *encWr) writen1(b1 byte) { - if z.bytes { - z.wb.writen1(b1) - } else { - z.wf.writen1(b1) - } -} - -func (z *encWr) writen2(b1, b2 byte) { - if z.bytes { - // MARKER: z.wb.writen2(b1, b2) - z.wb.b = append(z.wb.b, b1, b2) - } else { - z.wf.writen2(b1, b2) - } -} - -func (z *encWr) writen4(b [4]byte) { - if z.bytes { - // MARKER: z.wb.writen4(b1, b2, b3, b4) - z.wb.b = append(z.wb.b, b[:]...) - // z.wb.writen4(b) - } else { - z.wf.writen4(b) - } -} -func (z *encWr) writen8(b [8]byte) { - if z.bytes { - // z.wb.b = append(z.wb.b, b[:]...) - z.wb.writen8(b) - } else { - z.wf.writen8(b) - } -} - -func (z *encWr) writeqstr(s string) { - if z.bytes { - // MARKER: z.wb.writeqstr(s) - z.wb.b = append(append(append(z.wb.b, '"'), s...), '"') - } else { - z.wf.writeqstr(s) - } -} - -func (z *encWr) endErr() error { - if z.bytes { - return z.wb.endErr() - } - return z.wf.endErr() -} - -func (z *encWr) end() { - halt.onerror(z.endErr()) -} - -var _ encWriter = (*encWr)(nil) diff --git a/vendor/github.com/wI2L/jsondiff/.gitignore b/vendor/github.com/wI2L/jsondiff/.gitignore index 8931226f5..879c84d02 100644 --- a/vendor/github.com/wI2L/jsondiff/.gitignore +++ b/vendor/github.com/wI2L/jsondiff/.gitignore @@ -53,4 +53,7 @@ benchstats .benchruns coverage.txt dist/ -*.txt \ No newline at end of file +*.txt + +# Editors +.idea/ diff --git a/vendor/github.com/wI2L/jsondiff/.golangci.v1.yaml b/vendor/github.com/wI2L/jsondiff/.golangci.v1.yaml new file mode 100644 index 000000000..886b7b774 --- /dev/null +++ b/vendor/github.com/wI2L/jsondiff/.golangci.v1.yaml @@ -0,0 +1,35 @@ +run: + timeout: 10m +linters: + disable-all: true + enable: + - dupl + - dupword + - forbidigo + - gocritic + - gofumpt + - goimports + - misspell + - prealloc + - revive + - revive + - stylecheck + - thelper + - tparallel + - unconvert + - unparam + - unused + - wastedassign + - whitespace +linters-settings: + gofmt: + simplify: true + dupl: + threshold: 400 + funlen: + lines: 120 +issues: + exclude-rules: + - path: (.+)_test.go + linters: + - funlen diff --git a/vendor/github.com/wI2L/jsondiff/.golangci.yaml b/vendor/github.com/wI2L/jsondiff/.golangci.yaml index 886b7b774..71bf0b993 100644 --- a/vendor/github.com/wI2L/jsondiff/.golangci.yaml +++ b/vendor/github.com/wI2L/jsondiff/.golangci.yaml @@ -1,19 +1,15 @@ -run: - timeout: 10m +version: "2" linters: - disable-all: true + default: none enable: - dupl - dupword - forbidigo - gocritic - - gofumpt - - goimports - misspell - prealloc - revive - - revive - - stylecheck + - staticcheck - thelper - tparallel - unconvert @@ -21,15 +17,36 @@ linters: - unused - wastedassign - whitespace -linters-settings: - gofmt: - simplify: true - dupl: - threshold: 400 - funlen: - lines: 120 -issues: - exclude-rules: - - path: (.+)_test.go - linters: - - funlen + settings: + dupl: + threshold: 400 + funlen: + lines: 120 + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - funlen + path: (.+)_test.go + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofumpt + - goimports + settings: + gofmt: + simplify: true + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/vendor/github.com/wI2L/jsondiff/LICENSE b/vendor/github.com/wI2L/jsondiff/LICENSE index 74ad0a1f9..afe79cdd9 100644 --- a/vendor/github.com/wI2L/jsondiff/LICENSE +++ b/vendor/github.com/wI2L/jsondiff/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020-2024 William Poussier +Copyright (c) 2020-2025 William Poussier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/github.com/wI2L/jsondiff/apply.go b/vendor/github.com/wI2L/jsondiff/apply.go index 00ce38723..e0368ea93 100644 --- a/vendor/github.com/wI2L/jsondiff/apply.go +++ b/vendor/github.com/wI2L/jsondiff/apply.go @@ -15,6 +15,11 @@ import ( // apply applies the patch to the given source document. // If valid is true, the document is validated prior to // the application of the patch. +// +// Note for readers, this method will **NEVER** be exported, +// as it is only used for internal tests, and is feature-wise +// out of scope of the project. +// See https://github.com/wI2L/jsondiff/issues/28#issuecomment-2360883098 func (p Patch) apply(src []byte, valid bool) ([]byte, error) { if valid && !json.Valid(src) { return nil, fmt.Errorf("invalid source document") @@ -64,6 +69,12 @@ func (p Patch) apply(src []byte, valid bool) ([]byte, error) { break // bail out to interpret error } case OperationTest: + if strings.HasSuffix(dp, "-1") { + // Special case when the path inserts an + // element at the end of an array, we revert + // the array and test the first element. + dp = strings.TrimSuffix(dp, "-1") + "@reverse.0" + } r := gjson.GetBytes(tgt, dp) if !r.Exists() { return nil, fmt.Errorf("invalid patch: %q value is not set", op.Path) @@ -126,9 +137,9 @@ func isArrayIndex(path string) bool { } // dotPath converts the given JSON Pointer string to the -// dot-path notation used by tidwall/sjson package. +// dot-path notation used by sjson package. // The source document is required in order to distinguish -// // numeric object keys from array indices +// numeric object keys from array indices func toDotPath(path string, src []byte) (string, error) { if path == "" { // @this returns the current element. diff --git a/vendor/github.com/wI2L/jsondiff/differ.go b/vendor/github.com/wI2L/jsondiff/differ.go index c6283b57e..2679d61ad 100644 --- a/vendor/github.com/wI2L/jsondiff/differ.go +++ b/vendor/github.com/wI2L/jsondiff/differ.go @@ -330,32 +330,37 @@ comparisons: } func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc string) { + if len(src) == len(tgt) { + if d.opts.equivalent && d.unorderedDeepEqualSlice(src, tgt) { + return + } + } ptr.snapshot() pairs := lcs(src, tgt) d.snapshotPatchLen = len(d.patch) var ai, bi int // src && tgt arrows - var add, remove int + var adds, removes int adjust := func(i int) int { - // Adjust indice considering add and remove + // Adjust index considering add and remove // operations that precede it. - return i + add - remove + return i + adds - removes } - // Iterate over all the indices of the LCS, which + // Iterate over all the indexs of the LCS, which // represent the position of items that are present // in both the source and target slices. for p := 0; p < len(pairs); p++ { ma, mb := pairs[p][0], pairs[p][1] // Proceed with addition/deletion or change events - // until both arrows reach the current indice. + // until both arrows reach the current index. for ai < ma || bi < mb { switch { case ai < ma && bi < mb: // Both arrows points to an item before the - // current match indice, which indicate an + // current match index, which indicate an // equal amount of different items. ptr.appendIndex(adjust(ai)) if d.opts.rationalize { @@ -368,7 +373,7 @@ func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc strin bi++ case ai < ma: // The left arrow representing the source slice - // is lower than the current match indice, which + // is lower than the current match index, which // indicate that a preceding item has been removed. ptr.appendIndex(adjust(ai)) @@ -377,7 +382,7 @@ func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc strin } ptr.rewind() ai++ - remove++ + removes++ default: // bi < mb // Opposite case of the previous condition. ptr.appendIndex(bi) @@ -386,10 +391,10 @@ func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc strin } ptr.rewind() bi++ - add++ + adds++ } } - // Both arrows reached the current match indice + // Both arrows reached the current match index // where the elements of the source and target // slice are equal, i.e. `src[ai] == tgt[bi]`. ai++ @@ -419,7 +424,7 @@ func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc strin } ptr.rewind() ai++ - remove++ + removes++ default: // bi < len(tgt) ptr.appendIndex(bi) if !d.isIgnored(ptr) { @@ -427,7 +432,7 @@ func (d *Differ) compareArraysLCS(ptr pointer, src, tgt []interface{}, doc strin } ptr.rewind() bi++ - add++ + adds++ } } } diff --git a/vendor/github.com/wI2L/jsondiff/operation.go b/vendor/github.com/wI2L/jsondiff/operation.go index 6c0883585..db3c4fe5a 100644 --- a/vendor/github.com/wI2L/jsondiff/operation.go +++ b/vendor/github.com/wI2L/jsondiff/operation.go @@ -19,17 +19,14 @@ const ( ) const ( - fromFieldLen = len(`,"from":""`) - valueFieldLen = len(`,"value":`) - opBaseLen = len(`{"op":"","path":""}`) + fromFieldLen = 10 // ,"from":"" + valueFieldLen = 9 // ,"value": + opBaseLen = 19 // {"op":"","path":""} ) // null represents a JSON null value. type null struct{} -// Patch represents a series of JSON Patch operations. -type Patch []Operation - // Operation represents a single JSON Patch (RFC6902) operation. type Operation struct { Value interface{} `json:"value,omitempty"` diff --git a/vendor/github.com/wI2L/jsondiff/patch.go b/vendor/github.com/wI2L/jsondiff/patch.go new file mode 100644 index 000000000..0e87bc0cb --- /dev/null +++ b/vendor/github.com/wI2L/jsondiff/patch.go @@ -0,0 +1,124 @@ +package jsondiff + +import ( + "errors" + "fmt" +) + +var ( + // ErrNonReversible is returned when a non-reversible + // operation (not preceded by a test) is found in a patch. + ErrNonReversible = errors.New("non-reversible operation") + + // ErrAmbiguousCopyOp is returned to signal that a copy + // operation cannot be reversed as it is ambiguous. + ErrAmbiguousCopyOp = errors.New("copy operation is ambiguous") +) + +// A ErrTestPointer is returned by [Patch.Reverse] when the +// pointer of an operator does not match the preceding test +// operation pointer. +type ErrTestPointer struct { + Op string +} + +func (e ErrTestPointer) Error() string { + return fmt.Sprintf("test pointer mismatch for %q operation", e.Op) +} + +// Patch represents a series of JSON Patch operations. +type Patch []Operation + +// Invert returns a patch that undo the modifications +// represented by this patch. +func (p Patch) Invert() (Patch, error) { + newPatch := make(Patch, 0, len(p)/2) + + var skip int + for i := len(p) - 1; i >= 0; i -= skip { + ops, n, err := p.invertOp(i) + if err != nil { + return nil, err + } + newPatch = append(newPatch, ops...) + skip = n + } + return newPatch, nil +} + +func (p Patch) prevOp(i int) (*Operation, error) { + op := p[i] + if y := i - 1; y >= 0 && p[y].Type == OperationTest { + if p[i].Path != p[y].Path { + return nil, &ErrTestPointer{Op: op.Type} + } + return &p[y], nil + } + return nil, ErrNonReversible +} + +func (p Patch) invertOp(i int) ([]Operation, int, error) { + op := p[i] + + var ops []Operation + switch op.Type { + case OperationCopy: + return nil, 0, ErrAmbiguousCopyOp + + case OperationTest: + return []Operation{op}, 1, nil + + case OperationAdd: + ops = make([]Operation, 0, 2) + ops = append(ops, Operation{ + Type: OperationTest, + Path: op.Path, + Value: op.Value, + }) + ops = append(ops, Operation{ + Type: OperationRemove, + Path: op.Path, + OldValue: op.Value, + }) + return ops, 1, nil + + case OperationRemove: + prev, err := p.prevOp(i) + if err != nil { + return nil, 0, err + } + return []Operation{{ + Type: OperationAdd, + Path: prev.Path, + Value: prev.Value, + }}, 1, nil + + case OperationReplace: + prev, err := p.prevOp(i) + if err != nil { + return nil, 0, err + } + ops = make([]Operation, 0, 2) + ops = append(ops, Operation{ + Type: OperationTest, + Path: prev.Path, + Value: op.Value, + }) + ops = append(ops, Operation{ + Type: OperationReplace, + Path: prev.Path, + Value: prev.Value, + OldValue: op.Value, + }) + return ops, 2, nil + + case OperationMove: + return []Operation{{ + Type: OperationMove, + Path: op.From, + From: op.Path, + Value: op.Value, + }}, 1, nil + } + return nil, 0, errors.New("unknown operation") +} diff --git a/vendor/github.com/xrash/smetrics/jaro.go b/vendor/github.com/xrash/smetrics/jaro.go index 75f924e11..fc1ad1952 100644 --- a/vendor/github.com/xrash/smetrics/jaro.go +++ b/vendor/github.com/xrash/smetrics/jaro.go @@ -75,7 +75,7 @@ func Jaro(a, b string) float64 { } // The number of unaligned matches divided by two, is the number of _transpositions_. - transpositions := math.Floor(float64(unaligned / 2)) + transpositions := math.Floor(float64(unaligned) / 2) // Jaro distance is the average between these three numbers: // 1. matches / length of string A diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/README.md b/vendor/go.opentelemetry.io/contrib/detectors/gcp/README.md index ec35080b4..e94760ffa 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/README.md +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/README.md @@ -2,12 +2,12 @@ The GCP resource detector supports detecting resources on: - * Google Compute Engine (GCE) - * Google Kubernetes Engine (GKE) - * Google App Engine (GAE) - * Cloud Run - * Cloud Run jobs - * Cloud Functions +* Google Compute Engine (GCE) +* Google Kubernetes Engine (GKE) +* Google App Engine (GAE) +* Cloud Run +* Cloud Run jobs +* Cloud Functions ## Usage @@ -56,6 +56,7 @@ env: value: my-container-name - name: OTEL_RESOURCE_ATTRIBUTES value: k8s.pod.name=$(POD_NAME),k8s.namespace.name=$(NAMESPACE_NAME),k8s.container.name=$(CONTAINER_NAME) + ``` To have a detector unpack the `OTEL_RESOURCE_ATTRIBUTES` envvar, use the `WithFromEnv` option: diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go index 1c1490b02..0f0f68c0a 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go @@ -1,6 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package gcp provides a resource detector for GCP Cloud Function. package gcp // import "go.opentelemetry.io/contrib/detectors/gcp" import ( @@ -9,7 +10,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) const ( diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go index 7754b4668..8c2ce3e3e 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go @@ -13,7 +13,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) const serviceNamespace = "cloud-run-managed" diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go index b9eb1e1e1..4449a8213 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go @@ -13,7 +13,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) // NewDetector returns a resource detector which detects resource attributes on: @@ -84,8 +84,8 @@ func (d *detector) Detect(ctx context.Context) (*resource.Resource, error) { b.add(semconv.HostTypeKey, d.detector.GCEHostType) b.add(semconv.HostIDKey, d.detector.GCEHostID) b.add(semconv.HostNameKey, d.detector.GCEHostName) - b.add(semconv.GCPGceInstanceNameKey, d.detector.GCEInstanceName) - b.add(semconv.GCPGceInstanceHostnameKey, d.detector.GCEInstanceHostname) + b.add(semconv.GCPGCEInstanceNameKey, d.detector.GCEInstanceName) + b.add(semconv.GCPGCEInstanceHostnameKey, d.detector.GCEInstanceHostname) default: // We don't support this platform yet, so just return with what we have } diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go index 2a29c420b..e66b10f1e 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go @@ -14,7 +14,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) // GCE collects resource information of GCE computing instances. diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go index 0588ad6a4..be4b53172 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go @@ -12,7 +12,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) // GKE collects resource information of GKE computing instances. diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go index 3ae2c6490..d1152ec45 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go @@ -5,7 +5,7 @@ package gcp // import "go.opentelemetry.io/contrib/detectors/gcp" // Version is the current release version of the GCP resource detector. func Version() string { - return "1.35.0" + return "1.37.0" // This string is updated by the pre_release.sh script during release } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go index 9e87fb4bb..e3b5ff1fc 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go @@ -4,23 +4,19 @@ package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" import ( + "context" + "google.golang.org/grpc/stats" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/noop" "go.opentelemetry.io/otel/propagation" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" "go.opentelemetry.io/otel/trace" ) -const ( - // ScopeName is the instrumentation scope name. - ScopeName = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" - // GRPCStatusCodeKey is convention for numeric status code of a gRPC request. - GRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") -) +// ScopeName is the instrumentation scope name. +const ScopeName = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" // InterceptorFilter is a predicate used to determine whether a given request in // interceptor info should be instrumented. A InterceptorFilter must return true if @@ -45,17 +41,11 @@ type config struct { SpanAttributes []attribute.KeyValue MetricAttributes []attribute.KeyValue + PublicEndpoint bool + PublicEndpointFn func(ctx context.Context, info *stats.RPCTagInfo) bool + ReceivedEvent bool SentEvent bool - - tracer trace.Tracer - meter metric.Meter - - rpcDuration metric.Float64Histogram - rpcInBytes metric.Int64Histogram - rpcOutBytes metric.Int64Histogram - rpcInMessages metric.Int64Histogram - rpcOutMessages metric.Int64Histogram } // Option applies an option value for a config. @@ -64,7 +54,7 @@ type Option interface { } // newConfig returns a config configured with all the passed Options. -func newConfig(opts []Option, role string) *config { +func newConfig(opts []Option) *config { c := &config{ Propagators: otel.GetTextMapPropagator(), TracerProvider: otel.GetTracerProvider(), @@ -73,88 +63,39 @@ func newConfig(opts []Option, role string) *config { for _, o := range opts { o.apply(c) } + return c +} - c.tracer = c.TracerProvider.Tracer( - ScopeName, - trace.WithInstrumentationVersion(SemVersion()), - ) - - c.meter = c.MeterProvider.Meter( - ScopeName, - metric.WithInstrumentationVersion(Version()), - metric.WithSchemaURL(semconv.SchemaURL), - ) - - var err error - c.rpcDuration, err = c.meter.Float64Histogram("rpc."+role+".duration", - metric.WithDescription("Measures the duration of inbound RPC."), - metric.WithUnit("ms")) - if err != nil { - otel.Handle(err) - if c.rpcDuration == nil { - c.rpcDuration = noop.Float64Histogram{} - } - } - - rpcRequestSize, err := c.meter.Int64Histogram("rpc."+role+".request.size", - metric.WithDescription("Measures size of RPC request messages (uncompressed)."), - metric.WithUnit("By")) - if err != nil { - otel.Handle(err) - if rpcRequestSize == nil { - rpcRequestSize = noop.Int64Histogram{} - } - } +type publicEndpointOption struct{ p bool } - rpcResponseSize, err := c.meter.Int64Histogram("rpc."+role+".response.size", - metric.WithDescription("Measures size of RPC response messages (uncompressed)."), - metric.WithUnit("By")) - if err != nil { - otel.Handle(err) - if rpcResponseSize == nil { - rpcResponseSize = noop.Int64Histogram{} - } - } +func (o publicEndpointOption) apply(c *config) { + c.PublicEndpoint = o.p +} - rpcRequestsPerRPC, err := c.meter.Int64Histogram("rpc."+role+".requests_per_rpc", - metric.WithDescription("Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs."), - metric.WithUnit("{count}")) - if err != nil { - otel.Handle(err) - if rpcRequestsPerRPC == nil { - rpcRequestsPerRPC = noop.Int64Histogram{} - } - } +// WithPublicEndpoint configures the Handler to link the span with an incoming +// span context. If this option is not provided, then the association is a child +// association instead of a link. +func WithPublicEndpoint() Option { + return publicEndpointOption{p: true} +} - rpcResponsesPerRPC, err := c.meter.Int64Histogram("rpc."+role+".responses_per_rpc", - metric.WithDescription("Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs."), - metric.WithUnit("{count}")) - if err != nil { - otel.Handle(err) - if rpcResponsesPerRPC == nil { - rpcResponsesPerRPC = noop.Int64Histogram{} - } - } +type publicEndpointFnOption struct { + fn func(context.Context, *stats.RPCTagInfo) bool +} - switch role { - case "client": - c.rpcInBytes = rpcResponseSize - c.rpcInMessages = rpcResponsesPerRPC - c.rpcOutBytes = rpcRequestSize - c.rpcOutMessages = rpcRequestsPerRPC - case "server": - c.rpcInBytes = rpcRequestSize - c.rpcInMessages = rpcRequestsPerRPC - c.rpcOutBytes = rpcResponseSize - c.rpcOutMessages = rpcResponsesPerRPC - default: - c.rpcInBytes = noop.Int64Histogram{} - c.rpcInMessages = noop.Int64Histogram{} - c.rpcOutBytes = noop.Int64Histogram{} - c.rpcOutMessages = noop.Int64Histogram{} +func (o publicEndpointFnOption) apply(c *config) { + if o.fn != nil { + c.PublicEndpointFn = o.fn } +} - return c +// WithPublicEndpointFn runs with every request, and allows conditionally +// configuring the Handler to link the span with an incoming span context. If +// this option is not provided or returns false, then the association is a +// child association instead of a link. +// Note: WithPublicEndpoint takes precedence over WithPublicEndpointFn. +func WithPublicEndpointFn(fn func(context.Context, *stats.RPCTagInfo) bool) Option { + return publicEndpointFnOption{fn: fn} } type propagatorsOption struct{ p propagation.TextMapPropagator } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go index 7d5ed0580..7fc8193f6 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go @@ -4,27 +4,24 @@ package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" // gRPC tracing middleware -// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md +// https://opentelemetry.io/docs/specs/semconv/rpc/ import ( "context" "errors" "io" "net" "strconv" - "time" "google.golang.org/grpc" grpc_codes "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" - "google.golang.org/grpc/peer" "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/metric" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" "go.opentelemetry.io/otel/trace" ) @@ -39,82 +36,15 @@ func (m messageType) Event(ctx context.Context, id int, _ interface{}) { } span.AddEvent("message", trace.WithAttributes( attribute.KeyValue(m), - RPCMessageIDKey.Int(id), + semconv.RPCMessageIDKey.Int(id), )) } var ( - messageSent = messageType(RPCMessageTypeSent) - messageReceived = messageType(RPCMessageTypeReceived) + messageSent = messageType(semconv.RPCMessageTypeSent) + messageReceived = messageType(semconv.RPCMessageTypeReceived) ) -// UnaryClientInterceptor returns a grpc.UnaryClientInterceptor suitable -// for use in a grpc.NewClient call. -// -// Deprecated: Use [NewClientHandler] instead. -func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor { - cfg := newConfig(opts, "client") - tracer := cfg.TracerProvider.Tracer( - ScopeName, - trace.WithInstrumentationVersion(Version()), - ) - - return func( - ctx context.Context, - method string, - req, reply interface{}, - cc *grpc.ClientConn, - invoker grpc.UnaryInvoker, - callOpts ...grpc.CallOption, - ) error { - i := &InterceptorInfo{ - Method: method, - Type: UnaryClient, - } - if cfg.InterceptorFilter != nil && !cfg.InterceptorFilter(i) { - return invoker(ctx, method, req, reply, cc, callOpts...) - } - - name, attr, _ := telemetryAttributes(method, cc.Target()) - - startOpts := append([]trace.SpanStartOption{ - trace.WithSpanKind(trace.SpanKindClient), - trace.WithAttributes(attr...), - }, - cfg.SpanStartOptions..., - ) - - ctx, span := tracer.Start( - ctx, - name, - startOpts..., - ) - defer span.End() - - ctx = inject(ctx, cfg.Propagators) - - if cfg.SentEvent { - messageSent.Event(ctx, 1, req) - } - - err := invoker(ctx, method, req, reply, cc, callOpts...) - - if cfg.ReceivedEvent { - messageReceived.Event(ctx, 1, reply) - } - - if err != nil { - s, _ := status.FromError(err) - span.SetStatus(codes.Error, s.Message()) - span.SetAttributes(statusCodeAttr(s.Code())) - } else { - span.SetAttributes(statusCodeAttr(grpc_codes.OK)) - } - - return err - } -} - // clientStream wraps around the embedded grpc.ClientStream, and intercepts the RecvMsg and // SendMsg method call. type clientStream struct { @@ -213,7 +143,7 @@ func (w *clientStream) endSpan(err error) { // // Deprecated: Use [NewClientHandler] instead. func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor { - cfg := newConfig(opts, "client") + cfg := newConfig(opts) tracer := cfg.TracerProvider.Tracer( ScopeName, trace.WithInstrumentationVersion(Version()), @@ -235,7 +165,7 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor { return streamer(ctx, desc, cc, method, callOpts...) } - name, attr, _ := telemetryAttributes(method, cc.Target()) + name, attr := telemetryAttributes(method, cc.Target()) startOpts := append([]trace.SpanStartOption{ trace.WithSpanKind(trace.SpanKindClient), @@ -265,245 +195,39 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor { } } -// UnaryServerInterceptor returns a grpc.UnaryServerInterceptor suitable -// for use in a grpc.NewServer call. -// -// Deprecated: Use [NewServerHandler] instead. -func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor { - cfg := newConfig(opts, "server") - tracer := cfg.TracerProvider.Tracer( - ScopeName, - trace.WithInstrumentationVersion(Version()), - ) - - return func( - ctx context.Context, - req interface{}, - info *grpc.UnaryServerInfo, - handler grpc.UnaryHandler, - ) (interface{}, error) { - i := &InterceptorInfo{ - UnaryServerInfo: info, - Type: UnaryServer, - } - if cfg.InterceptorFilter != nil && !cfg.InterceptorFilter(i) { - return handler(ctx, req) - } - - ctx = extract(ctx, cfg.Propagators) - name, attr, metricAttrs := telemetryAttributes(info.FullMethod, peerFromCtx(ctx)) - - startOpts := append([]trace.SpanStartOption{ - trace.WithSpanKind(trace.SpanKindServer), - trace.WithAttributes(attr...), - }, - cfg.SpanStartOptions..., - ) - - ctx, span := tracer.Start( - trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)), - name, - startOpts..., - ) - defer span.End() - - if cfg.ReceivedEvent { - messageReceived.Event(ctx, 1, req) - } - - before := time.Now() - - resp, err := handler(ctx, req) - - s, _ := status.FromError(err) - if err != nil { - statusCode, msg := serverStatus(s) - span.SetStatus(statusCode, msg) - if cfg.SentEvent { - messageSent.Event(ctx, 1, s.Proto()) - } - } else { - if cfg.SentEvent { - messageSent.Event(ctx, 1, resp) - } - } - grpcStatusCodeAttr := statusCodeAttr(s.Code()) - span.SetAttributes(grpcStatusCodeAttr) - - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedTime := float64(time.Since(before)) / float64(time.Millisecond) - - metricAttrs = append(metricAttrs, grpcStatusCodeAttr) - cfg.rpcDuration.Record(ctx, elapsedTime, metric.WithAttributeSet(attribute.NewSet(metricAttrs...))) - - return resp, err - } -} - -// serverStream wraps around the embedded grpc.ServerStream, and intercepts the RecvMsg and -// SendMsg method call. -type serverStream struct { - grpc.ServerStream - ctx context.Context - - receivedMessageID int - sentMessageID int - - receivedEvent bool - sentEvent bool -} - -func (w *serverStream) Context() context.Context { - return w.ctx -} - -func (w *serverStream) RecvMsg(m interface{}) error { - err := w.ServerStream.RecvMsg(m) - - if err == nil { - w.receivedMessageID++ - if w.receivedEvent { - messageReceived.Event(w.Context(), w.receivedMessageID, m) - } - } - - return err -} - -func (w *serverStream) SendMsg(m interface{}) error { - err := w.ServerStream.SendMsg(m) - - w.sentMessageID++ - if w.sentEvent { - messageSent.Event(w.Context(), w.sentMessageID, m) - } - - return err -} - -func wrapServerStream(ctx context.Context, ss grpc.ServerStream, cfg *config) *serverStream { - return &serverStream{ - ServerStream: ss, - ctx: ctx, - receivedEvent: cfg.ReceivedEvent, - sentEvent: cfg.SentEvent, - } -} - -// StreamServerInterceptor returns a grpc.StreamServerInterceptor suitable -// for use in a grpc.NewServer call. -// -// Deprecated: Use [NewServerHandler] instead. -func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor { - cfg := newConfig(opts, "server") - tracer := cfg.TracerProvider.Tracer( - ScopeName, - trace.WithInstrumentationVersion(Version()), - ) - - return func( - srv interface{}, - ss grpc.ServerStream, - info *grpc.StreamServerInfo, - handler grpc.StreamHandler, - ) error { - ctx := ss.Context() - i := &InterceptorInfo{ - StreamServerInfo: info, - Type: StreamServer, - } - if cfg.InterceptorFilter != nil && !cfg.InterceptorFilter(i) { - return handler(srv, wrapServerStream(ctx, ss, cfg)) - } - - ctx = extract(ctx, cfg.Propagators) - name, attr, _ := telemetryAttributes(info.FullMethod, peerFromCtx(ctx)) - - startOpts := append([]trace.SpanStartOption{ - trace.WithSpanKind(trace.SpanKindServer), - trace.WithAttributes(attr...), - }, - cfg.SpanStartOptions..., - ) - - ctx, span := tracer.Start( - trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)), - name, - startOpts..., - ) - defer span.End() - - err := handler(srv, wrapServerStream(ctx, ss, cfg)) - if err != nil { - s, _ := status.FromError(err) - statusCode, msg := serverStatus(s) - span.SetStatus(statusCode, msg) - span.SetAttributes(statusCodeAttr(s.Code())) - } else { - span.SetAttributes(statusCodeAttr(grpc_codes.OK)) - } - - return err - } -} - // telemetryAttributes returns a span name and span and metric attributes from // the gRPC method and peer address. -func telemetryAttributes(fullMethod, peerAddress string) (string, []attribute.KeyValue, []attribute.KeyValue) { +func telemetryAttributes(fullMethod, serverAddr string) (string, []attribute.KeyValue) { name, methodAttrs := internal.ParseFullMethod(fullMethod) - peerAttrs := peerAttr(peerAddress) + srvAttrs := serverAddrAttrs(serverAddr) - attrs := make([]attribute.KeyValue, 0, 1+len(methodAttrs)+len(peerAttrs)) - attrs = append(attrs, RPCSystemGRPC) + attrs := make([]attribute.KeyValue, 0, 1+len(methodAttrs)+len(srvAttrs)) + attrs = append(attrs, semconv.RPCSystemGRPC) attrs = append(attrs, methodAttrs...) - metricAttrs := attrs[:1+len(methodAttrs)] - attrs = append(attrs, peerAttrs...) - return name, attrs, metricAttrs + attrs = append(attrs, srvAttrs...) + return name, attrs } -// peerAttr returns attributes about the peer address. -func peerAttr(addr string) []attribute.KeyValue { - host, p, err := net.SplitHostPort(addr) +// serverAddrAttrs returns the server address attributes for the hostport. +func serverAddrAttrs(hostport string) []attribute.KeyValue { + h, pStr, err := net.SplitHostPort(hostport) if err != nil { - return nil + // The server.address attribute is required. + return []attribute.KeyValue{semconv.ServerAddress(hostport)} } - - if host == "" { - host = "127.0.0.1" - } - port, err := strconv.Atoi(p) + p, err := strconv.Atoi(pStr) if err != nil { - return nil + return []attribute.KeyValue{semconv.ServerAddress(h)} } - - var attr []attribute.KeyValue - if ip := net.ParseIP(host); ip != nil { - attr = []attribute.KeyValue{ - semconv.NetSockPeerAddr(host), - semconv.NetSockPeerPort(port), - } - } else { - attr = []attribute.KeyValue{ - semconv.NetPeerName(host), - semconv.NetPeerPort(port), - } - } - - return attr -} - -// peerFromCtx returns a peer address from a context, if one exists. -func peerFromCtx(ctx context.Context) string { - p, ok := peer.FromContext(ctx) - if !ok { - return "" + return []attribute.KeyValue{ + semconv.ServerAddress(h), + semconv.ServerPort(p), } - return p.Addr.String() } // statusCodeAttr returns status code attribute based on given gRPC code. func statusCodeAttr(c grpc_codes.Code) attribute.KeyValue { - return GRPCStatusCodeKey.Int64(int64(c)) + return semconv.RPCGRPCStatusCodeKey.Int64(int64(c)) } // serverStatus returns a span status code and message for a given gRPC diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go index bef07b7a3..9b98644fe 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go @@ -1,13 +1,14 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package internal provides internal functionality for the otelgrpc package. package internal // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal" import ( "strings" "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) // ParseFullMethod returns a span name following the OpenTelemetry semantic diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go index 3aa37915d..6e67f0216 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go @@ -45,7 +45,7 @@ func (s *metadataSupplier) Keys() []string { // requests. // Deprecated: Unnecessary public func. func Inject(ctx context.Context, md *metadata.MD, opts ...Option) { - c := newConfig(opts, "") + c := newConfig(opts) c.Propagators.Inject(ctx, &metadataSupplier{ metadata: md, }) @@ -67,7 +67,7 @@ func inject(ctx context.Context, propagators propagation.TextMapPropagator) cont // This function is meant to be used on incoming requests. // Deprecated: Unnecessary public func. func Extract(ctx context.Context, md *metadata.MD, opts ...Option) (baggage.Baggage, trace.SpanContext) { - c := newConfig(opts, "") + c := newConfig(opts) ctx = c.Propagators.Extract(ctx, &metadataSupplier{ metadata: md, }) diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go deleted file mode 100644 index 409c621b7..000000000 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" - -import ( - "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" -) - -// Semantic conventions for attribute keys for gRPC. -const ( - // Name of message transmitted or received. - RPCNameKey = attribute.Key("name") - - // Type of message transmitted or received. - RPCMessageTypeKey = attribute.Key("message.type") - - // Identifier of message transmitted or received. - RPCMessageIDKey = attribute.Key("message.id") - - // The compressed size of the message transmitted or received in bytes. - RPCMessageCompressedSizeKey = attribute.Key("message.compressed_size") - - // The uncompressed size of the message transmitted or received in - // bytes. - RPCMessageUncompressedSizeKey = attribute.Key("message.uncompressed_size") -) - -// Semantic conventions for common RPC attributes. -var ( - // Semantic convention for gRPC as the remoting system. - RPCSystemGRPC = semconv.RPCSystemGRPC - - // Semantic convention for a message named message. - RPCNameMessage = RPCNameKey.String("message") - - // Semantic conventions for RPC message types. - RPCMessageTypeSent = RPCMessageTypeKey.String("SENT") - RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED") -) diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go index 216127d6f..17404c8d7 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go @@ -13,10 +13,12 @@ import ( "google.golang.org/grpc/stats" "google.golang.org/grpc/status" + "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/metric" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + "go.opentelemetry.io/otel/semconv/v1.34.0/rpcconv" "go.opentelemetry.io/otel/trace" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal" @@ -33,12 +35,56 @@ type gRPCContext struct { type serverHandler struct { *config + + tracer trace.Tracer + + duration rpcconv.ServerDuration + inSize rpcconv.ServerRequestSize + outSize rpcconv.ServerResponseSize + inMsg rpcconv.ServerRequestsPerRPC + outMsg rpcconv.ServerResponsesPerRPC } // NewServerHandler creates a stats.Handler for a gRPC server. func NewServerHandler(opts ...Option) stats.Handler { - h := &serverHandler{ - config: newConfig(opts, "server"), + c := newConfig(opts) + h := &serverHandler{config: c} + + h.tracer = c.TracerProvider.Tracer( + ScopeName, + trace.WithInstrumentationVersion(Version()), + ) + + meter := c.MeterProvider.Meter( + ScopeName, + metric.WithInstrumentationVersion(Version()), + metric.WithSchemaURL(semconv.SchemaURL), + ) + + var err error + h.duration, err = rpcconv.NewServerDuration(meter) + if err != nil { + otel.Handle(err) + } + + h.inSize, err = rpcconv.NewServerRequestSize(meter) + if err != nil { + otel.Handle(err) + } + + h.outSize, err = rpcconv.NewServerResponseSize(meter) + if err != nil { + otel.Handle(err) + } + + h.inMsg, err = rpcconv.NewServerRequestsPerRPC(meter) + if err != nil { + otel.Handle(err) + } + + h.outMsg, err = rpcconv.NewServerResponsesPerRPC(meter) + if err != nil { + otel.Handle(err) } return h @@ -55,27 +101,37 @@ func (h *serverHandler) HandleConn(ctx context.Context, info stats.ConnStats) { // TagRPC can attach some information to the given context. func (h *serverHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { - ctx = extract(ctx, h.config.Propagators) + ctx = extract(ctx, h.Propagators) name, attrs := internal.ParseFullMethod(info.FullMethodName) - attrs = append(attrs, RPCSystemGRPC) + attrs = append(attrs, semconv.RPCSystemGRPC) record := true - if h.config.Filter != nil { - record = h.config.Filter(info) + if h.Filter != nil { + record = h.Filter(info) } if record { + opts := []trace.SpanStartOption{ + trace.WithSpanKind(trace.SpanKindServer), + trace.WithAttributes(append(attrs, h.SpanAttributes...)...), + } + if h.PublicEndpoint || (h.PublicEndpointFn != nil && h.PublicEndpointFn(ctx, info)) { + opts = append(opts, trace.WithNewRoot()) + // Linking incoming span context if any for public endpoint. + if s := trace.SpanContextFromContext(ctx); s.IsValid() && s.IsRemote() { + opts = append(opts, trace.WithLinks(trace.Link{SpanContext: s})) + } + } ctx, _ = h.tracer.Start( trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)), name, - trace.WithSpanKind(trace.SpanKindServer), - trace.WithAttributes(append(attrs, h.config.SpanAttributes...)...), + opts..., ) } gctx := gRPCContext{ - metricAttrs: append(attrs, h.config.MetricAttributes...), + metricAttrs: append(attrs, h.MetricAttributes...), record: record, } @@ -84,18 +140,70 @@ func (h *serverHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) cont // HandleRPC processes the RPC stats. func (h *serverHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { - isServer := true - h.handleRPC(ctx, rs, isServer) + h.handleRPC( + ctx, + rs, + h.duration.Inst(), + h.inSize, + h.outSize, + h.inMsg.Inst(), + h.outMsg.Inst(), + serverStatus, + ) } type clientHandler struct { *config + + tracer trace.Tracer + + duration rpcconv.ClientDuration + inSize rpcconv.ClientResponseSize + outSize rpcconv.ClientRequestSize + inMsg rpcconv.ClientResponsesPerRPC + outMsg rpcconv.ClientRequestsPerRPC } // NewClientHandler creates a stats.Handler for a gRPC client. func NewClientHandler(opts ...Option) stats.Handler { - h := &clientHandler{ - config: newConfig(opts, "client"), + c := newConfig(opts) + h := &clientHandler{config: c} + + h.tracer = c.TracerProvider.Tracer( + ScopeName, + trace.WithInstrumentationVersion(Version()), + ) + + meter := c.MeterProvider.Meter( + ScopeName, + metric.WithInstrumentationVersion(Version()), + metric.WithSchemaURL(semconv.SchemaURL), + ) + + var err error + h.duration, err = rpcconv.NewClientDuration(meter) + if err != nil { + otel.Handle(err) + } + + h.inSize, err = rpcconv.NewClientResponseSize(meter) + if err != nil { + otel.Handle(err) + } + + h.outSize, err = rpcconv.NewClientRequestSize(meter) + if err != nil { + otel.Handle(err) + } + + h.inMsg, err = rpcconv.NewClientResponsesPerRPC(meter) + if err != nil { + otel.Handle(err) + } + + h.outMsg, err = rpcconv.NewClientRequestsPerRPC(meter) + if err != nil { + otel.Handle(err) } return h @@ -104,11 +212,11 @@ func NewClientHandler(opts ...Option) stats.Handler { // TagRPC can attach some information to the given context. func (h *clientHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { name, attrs := internal.ParseFullMethod(info.FullMethodName) - attrs = append(attrs, RPCSystemGRPC) + attrs = append(attrs, semconv.RPCSystemGRPC) record := true - if h.config.Filter != nil { - record = h.config.Filter(info) + if h.Filter != nil { + record = h.Filter(info) } if record { @@ -116,22 +224,32 @@ func (h *clientHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) cont ctx, name, trace.WithSpanKind(trace.SpanKindClient), - trace.WithAttributes(append(attrs, h.config.SpanAttributes...)...), + trace.WithAttributes(append(attrs, h.SpanAttributes...)...), ) } gctx := gRPCContext{ - metricAttrs: append(attrs, h.config.MetricAttributes...), + metricAttrs: append(attrs, h.MetricAttributes...), record: record, } - return inject(context.WithValue(ctx, gRPCContextKey{}, &gctx), h.config.Propagators) + return inject(context.WithValue(ctx, gRPCContextKey{}, &gctx), h.Propagators) } // HandleRPC processes the RPC stats. func (h *clientHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { - isServer := false - h.handleRPC(ctx, rs, isServer) + h.handleRPC( + ctx, + rs, + h.duration.Inst(), + h.inSize, + h.outSize, + h.inMsg.Inst(), + h.outMsg.Inst(), + func(s *status.Status) (codes.Code, string) { + return codes.Error, s.Message() + }, + ) } // TagConn can attach some information to the given context. @@ -144,77 +262,91 @@ func (h *clientHandler) HandleConn(context.Context, stats.ConnStats) { // no-op } -func (c *config) handleRPC(ctx context.Context, rs stats.RPCStats, isServer bool) { // nolint: revive // isServer is not a control flag. - span := trace.SpanFromContext(ctx) - var metricAttrs []attribute.KeyValue - var messageId int64 +type int64Hist interface { + Record(context.Context, int64, ...attribute.KeyValue) +} +func (c *config) handleRPC( + ctx context.Context, + rs stats.RPCStats, + duration metric.Float64Histogram, + inSize, outSize int64Hist, + inMsg, outMsg metric.Int64Histogram, + recordStatus func(*status.Status) (codes.Code, string), +) { gctx, _ := ctx.Value(gRPCContextKey{}).(*gRPCContext) - if gctx != nil { - if !gctx.record { - return - } - metricAttrs = make([]attribute.KeyValue, 0, len(gctx.metricAttrs)+1) - metricAttrs = append(metricAttrs, gctx.metricAttrs...) + if gctx != nil && !gctx.record { + return } + span := trace.SpanFromContext(ctx) + var messageId int64 + switch rs := rs.(type) { case *stats.Begin: case *stats.InPayload: if gctx != nil { messageId = atomic.AddInt64(&gctx.inMessages, 1) - c.rpcInBytes.Record(ctx, int64(rs.Length), metric.WithAttributeSet(attribute.NewSet(metricAttrs...))) + inSize.Record(ctx, int64(rs.Length), gctx.metricAttrs...) } - if c.ReceivedEvent { + if c.ReceivedEvent && span.IsRecording() { span.AddEvent("message", trace.WithAttributes( - semconv.MessageTypeReceived, - semconv.MessageIDKey.Int64(messageId), - semconv.MessageCompressedSizeKey.Int(rs.CompressedLength), - semconv.MessageUncompressedSizeKey.Int(rs.Length), + semconv.RPCMessageTypeReceived, + semconv.RPCMessageIDKey.Int64(messageId), + semconv.RPCMessageCompressedSizeKey.Int(rs.CompressedLength), + semconv.RPCMessageUncompressedSizeKey.Int(rs.Length), ), ) } case *stats.OutPayload: if gctx != nil { messageId = atomic.AddInt64(&gctx.outMessages, 1) - c.rpcOutBytes.Record(ctx, int64(rs.Length), metric.WithAttributeSet(attribute.NewSet(metricAttrs...))) + outSize.Record(ctx, int64(rs.Length), gctx.metricAttrs...) } - if c.SentEvent { + if c.SentEvent && span.IsRecording() { span.AddEvent("message", trace.WithAttributes( - semconv.MessageTypeSent, - semconv.MessageIDKey.Int64(messageId), - semconv.MessageCompressedSizeKey.Int(rs.CompressedLength), - semconv.MessageUncompressedSizeKey.Int(rs.Length), + semconv.RPCMessageTypeSent, + semconv.RPCMessageIDKey.Int64(messageId), + semconv.RPCMessageCompressedSizeKey.Int(rs.CompressedLength), + semconv.RPCMessageUncompressedSizeKey.Int(rs.Length), ), ) } case *stats.OutTrailer: case *stats.OutHeader: - if p, ok := peer.FromContext(ctx); ok { - span.SetAttributes(peerAttr(p.Addr.String())...) + if span.IsRecording() { + if p, ok := peer.FromContext(ctx); ok { + span.SetAttributes(serverAddrAttrs(p.Addr.String())...) + } } case *stats.End: var rpcStatusAttr attribute.KeyValue + var s *status.Status if rs.Error != nil { - s, _ := status.FromError(rs.Error) - if isServer { - statusCode, msg := serverStatus(s) - span.SetStatus(statusCode, msg) - } else { - span.SetStatus(codes.Error, s.Message()) - } + s, _ = status.FromError(rs.Error) rpcStatusAttr = semconv.RPCGRPCStatusCodeKey.Int(int(s.Code())) } else { rpcStatusAttr = semconv.RPCGRPCStatusCodeKey.Int(int(grpc_codes.OK)) } - span.SetAttributes(rpcStatusAttr) - span.End() + if span.IsRecording() { + if s != nil { + c, m := recordStatus(s) + span.SetStatus(c, m) + } + span.SetAttributes(rpcStatusAttr) + span.End() + } + var metricAttrs []attribute.KeyValue + if gctx != nil { + metricAttrs = make([]attribute.KeyValue, 0, len(gctx.metricAttrs)+1) + metricAttrs = append(metricAttrs, gctx.metricAttrs...) + } metricAttrs = append(metricAttrs, rpcStatusAttr) // Allocate vararg slice once. recordOpts := []metric.RecordOption{metric.WithAttributeSet(attribute.NewSet(metricAttrs...))} @@ -223,10 +355,10 @@ func (c *config) handleRPC(ctx context.Context, rs stats.RPCStats, isServer bool // Measure right before calling Record() to capture as much elapsed time as possible. elapsedTime := float64(rs.EndTime.Sub(rs.BeginTime)) / float64(time.Millisecond) - c.rpcDuration.Record(ctx, elapsedTime, recordOpts...) + duration.Record(ctx, elapsedTime, recordOpts...) if gctx != nil { - c.rpcInMessages.Record(ctx, atomic.LoadInt64(&gctx.inMessages), recordOpts...) - c.rpcOutMessages.Record(ctx, atomic.LoadInt64(&gctx.outMessages), recordOpts...) + inMsg.Record(ctx, atomic.LoadInt64(&gctx.inMessages), recordOpts...) + outMsg.Record(ctx, atomic.LoadInt64(&gctx.outMessages), recordOpts...) } default: return diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go index 442e8a838..8849d79b8 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go @@ -5,13 +5,6 @@ package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.g // Version is the current release version of the gRPC instrumentation. func Version() string { - return "0.60.0" + return "0.62.0" // This string is updated by the pre_release.sh script during release } - -// SemVersion is the semantic version to be supplied to tracer/meter creation. -// -// Deprecated: Use [Version] instead. -func SemVersion() string { - return Version() -} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go index a01bfafbe..6bd50d4c9 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go @@ -176,6 +176,10 @@ func WithMessageEvents(events ...event) Option { // WithSpanNameFormatter takes a function that will be called on every // request and the returned string will become the Span Name. +// +// When using [http.ServeMux] (or any middleware that sets the Pattern of [http.Request]), +// the span name formatter will run twice. Once when the span is created, and +// second time after the middleware, so the pattern can be used. func WithSpanNameFormatter(f func(operation string, r *http.Request) string) Option { return optionFunc(func(c *config) { c.SpanNameFormatter = f diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go index 3ea05d019..937f9b4e7 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go @@ -98,7 +98,7 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http ctx := h.propagators.Extract(r.Context(), propagation.HeaderCarrier(r.Header)) opts := []trace.SpanStartOption{ - trace.WithAttributes(h.semconv.RequestTraceAttrs(h.server, r)...), + trace.WithAttributes(h.semconv.RequestTraceAttrs(h.server, r, semconv.RequestTraceAttrsOpts{})...), } opts = append(opts, h.spanStartOptions...) @@ -176,7 +176,12 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http ctx = ContextWithLabeler(ctx, labeler) } - next.ServeHTTP(w, r.WithContext(ctx)) + r = r.WithContext(ctx) + next.ServeHTTP(w, r) + + if r.Pattern != "" { + span.SetName(h.spanNameFormatter(h.operation, r)) + } statusCode := rww.StatusCode() bytesWritten := rww.BytesWritten() diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go index 866aa21dc..d032aa841 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go @@ -1,9 +1,11 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/request/body_wrapper.go.tmpl // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package request provides types and functionality to handle HTTP request +// handling. package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request" import ( @@ -56,7 +58,7 @@ func (w *BodyWrapper) updateReadData(n int64, err error) { } } -// Closes closes the io.ReadCloser. +// Close closes the io.ReadCloser. func (w *BodyWrapper) Close() error { return w.ReadCloser.Close() } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go index 73184e7d0..ca2e4c14c 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go @@ -1,4 +1,4 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/request/resp_writer_wrapper.go.tmpl // Copyright The OpenTelemetry Authors @@ -105,7 +105,7 @@ func (w *RespWriterWrapper) BytesWritten() int64 { return w.written } -// BytesWritten returns the HTTP status code that was sent. +// StatusCode returns the HTTP status code that was sent. func (w *RespWriterWrapper) StatusCode() int { w.mu.RLock() defer w.mu.RUnlock() diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go index 4693a0194..7edc8d10f 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go @@ -1,4 +1,4 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconv/env.go.tmpl // Copyright The OpenTelemetry Authors @@ -17,10 +17,11 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/semconv/v1.34.0/httpconv" ) // OTelSemConvStabilityOptIn is an environment variable. -// That can be set to "old" or "http/dup" to opt into the new HTTP semantic conventions. +// That can be set to "http/dup" to keep getting the old HTTP semantic conventions. const OTelSemConvStabilityOptIn = "OTEL_SEMCONV_STABILITY_OPT_IN" type ResponseTelemetry struct { @@ -40,9 +41,9 @@ type HTTPServer struct { serverLatencyMeasure metric.Float64Histogram // New metrics - requestBodySizeHistogram metric.Int64Histogram - responseBodySizeHistogram metric.Int64Histogram - requestDurationHistogram metric.Float64Histogram + requestBodySizeHistogram httpconv.ServerRequestBodySize + responseBodySizeHistogram httpconv.ServerResponseBodySize + requestDurationHistogram httpconv.ServerRequestDuration } // RequestTraceAttrs returns trace attributes for an HTTP request received by a @@ -61,19 +62,23 @@ type HTTPServer struct { // // If the primary server name is not known, server should be an empty string. // The req Host will be used to determine the server instead. -func (s HTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { +func (s HTTPServer) RequestTraceAttrs(server string, req *http.Request, opts RequestTraceAttrsOpts) []attribute.KeyValue { + attrs := CurrentHTTPServer{}.RequestTraceAttrs(server, req, opts) if s.duplicate { - return append(OldHTTPServer{}.RequestTraceAttrs(server, req), CurrentHTTPServer{}.RequestTraceAttrs(server, req)...) + return OldHTTPServer{}.RequestTraceAttrs(server, req, attrs) } - return OldHTTPServer{}.RequestTraceAttrs(server, req) + return attrs } func (s HTTPServer) NetworkTransportAttr(network string) []attribute.KeyValue { if s.duplicate { - return append([]attribute.KeyValue{OldHTTPServer{}.NetworkTransportAttr(network)}, CurrentHTTPServer{}.NetworkTransportAttr(network)) + return []attribute.KeyValue{ + OldHTTPServer{}.NetworkTransportAttr(network), + CurrentHTTPServer{}.NetworkTransportAttr(network), + } } return []attribute.KeyValue{ - OldHTTPServer{}.NetworkTransportAttr(network), + CurrentHTTPServer{}.NetworkTransportAttr(network), } } @@ -81,15 +86,16 @@ func (s HTTPServer) NetworkTransportAttr(network string) []attribute.KeyValue { // // If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. func (s HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { + attrs := CurrentHTTPServer{}.ResponseTraceAttrs(resp) if s.duplicate { - return append(OldHTTPServer{}.ResponseTraceAttrs(resp), CurrentHTTPServer{}.ResponseTraceAttrs(resp)...) + return OldHTTPServer{}.ResponseTraceAttrs(resp, attrs) } - return OldHTTPServer{}.ResponseTraceAttrs(resp) + return attrs } // Route returns the attribute for the route. func (s HTTPServer) Route(route string) attribute.KeyValue { - return OldHTTPServer{}.Route(route) + return CurrentHTTPServer{}.Route(route) } // Status returns a span status code and message for an HTTP status code @@ -121,6 +127,8 @@ type MetricAttributes struct { type MetricData struct { RequestSize int64 + + // The request duration, in milliseconds ElapsedTime float64 } @@ -139,7 +147,17 @@ var ( ) func (s HTTPServer) RecordMetrics(ctx context.Context, md ServerMetricData) { - if s.requestBytesCounter != nil && s.responseBytesCounter != nil && s.serverLatencyMeasure != nil { + attributes := CurrentHTTPServer{}.MetricAttributes(md.ServerName, md.Req, md.StatusCode, md.AdditionalAttributes) + o := metric.WithAttributeSet(attribute.NewSet(attributes...)) + recordOpts := metricRecordOptionPool.Get().(*[]metric.RecordOption) + *recordOpts = append(*recordOpts, o) + s.requestBodySizeHistogram.Inst().Record(ctx, md.RequestSize, *recordOpts...) + s.responseBodySizeHistogram.Inst().Record(ctx, md.ResponseSize, *recordOpts...) + s.requestDurationHistogram.Inst().Record(ctx, md.ElapsedTime/1000.0, o) + *recordOpts = (*recordOpts)[:0] + metricRecordOptionPool.Put(recordOpts) + + if s.duplicate && s.requestBytesCounter != nil && s.responseBytesCounter != nil && s.serverLatencyMeasure != nil { attributes := OldHTTPServer{}.MetricAttributes(md.ServerName, md.Req, md.StatusCode, md.AdditionalAttributes) o := metric.WithAttributeSet(attribute.NewSet(attributes...)) addOpts := metricAddOptionPool.Get().(*[]metric.AddOption) @@ -150,29 +168,44 @@ func (s HTTPServer) RecordMetrics(ctx context.Context, md ServerMetricData) { *addOpts = (*addOpts)[:0] metricAddOptionPool.Put(addOpts) } +} - if s.duplicate && s.requestDurationHistogram != nil && s.requestBodySizeHistogram != nil && s.responseBodySizeHistogram != nil { - attributes := CurrentHTTPServer{}.MetricAttributes(md.ServerName, md.Req, md.StatusCode, md.AdditionalAttributes) - o := metric.WithAttributeSet(attribute.NewSet(attributes...)) - recordOpts := metricRecordOptionPool.Get().(*[]metric.RecordOption) - *recordOpts = append(*recordOpts, o) - s.requestBodySizeHistogram.Record(ctx, md.RequestSize, *recordOpts...) - s.responseBodySizeHistogram.Record(ctx, md.ResponseSize, *recordOpts...) - s.requestDurationHistogram.Record(ctx, md.ElapsedTime, o) - *recordOpts = (*recordOpts)[:0] - metricRecordOptionPool.Put(recordOpts) +// hasOptIn returns true if the comma-separated version string contains the +// exact optIn value. +func hasOptIn(version, optIn string) bool { + for _, v := range strings.Split(version, ",") { + if strings.TrimSpace(v) == optIn { + return true + } } + return false } func NewHTTPServer(meter metric.Meter) HTTPServer { env := strings.ToLower(os.Getenv(OTelSemConvStabilityOptIn)) - duplicate := env == "http/dup" + duplicate := hasOptIn(env, "http/dup") server := HTTPServer{ duplicate: duplicate, } - server.requestBytesCounter, server.responseBytesCounter, server.serverLatencyMeasure = OldHTTPServer{}.createMeasures(meter) + + var err error + server.requestBodySizeHistogram, err = httpconv.NewServerRequestBodySize(meter) + handleErr(err) + + server.responseBodySizeHistogram, err = httpconv.NewServerResponseBodySize(meter) + handleErr(err) + + server.requestDurationHistogram, err = httpconv.NewServerRequestDuration( + meter, + metric.WithExplicitBucketBoundaries( + 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, + 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + ), + ) + handleErr(err) + if duplicate { - server.requestBodySizeHistogram, server.responseBodySizeHistogram, server.requestDurationHistogram = CurrentHTTPServer{}.createMeasures(meter) + server.requestBytesCounter, server.responseBytesCounter, server.serverLatencyMeasure = OldHTTPServer{}.createMeasures(meter) } return server } @@ -186,19 +219,29 @@ type HTTPClient struct { latencyMeasure metric.Float64Histogram // new metrics - requestBodySize metric.Int64Histogram - requestDuration metric.Float64Histogram + requestBodySize httpconv.ClientRequestBodySize + requestDuration httpconv.ClientRequestDuration } func NewHTTPClient(meter metric.Meter) HTTPClient { env := strings.ToLower(os.Getenv(OTelSemConvStabilityOptIn)) - duplicate := env == "http/dup" + duplicate := hasOptIn(env, "http/dup") client := HTTPClient{ duplicate: duplicate, } - client.requestBytesCounter, client.responseBytesCounter, client.latencyMeasure = OldHTTPClient{}.createMeasures(meter) + + var err error + client.requestBodySize, err = httpconv.NewClientRequestBodySize(meter) + handleErr(err) + + client.requestDuration, err = httpconv.NewClientRequestDuration( + meter, + metric.WithExplicitBucketBoundaries(0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10), + ) + handleErr(err) + if duplicate { - client.requestBodySize, client.requestDuration = CurrentHTTPClient{}.createMeasures(meter) + client.requestBytesCounter, client.responseBytesCounter, client.latencyMeasure = OldHTTPClient{}.createMeasures(meter) } return client @@ -206,19 +249,20 @@ func NewHTTPClient(meter metric.Meter) HTTPClient { // RequestTraceAttrs returns attributes for an HTTP request made by a client. func (c HTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue { + attrs := CurrentHTTPClient{}.RequestTraceAttrs(req) if c.duplicate { - return append(OldHTTPClient{}.RequestTraceAttrs(req), CurrentHTTPClient{}.RequestTraceAttrs(req)...) + return OldHTTPClient{}.RequestTraceAttrs(req, attrs) } - return OldHTTPClient{}.RequestTraceAttrs(req) + return attrs } // ResponseTraceAttrs returns metric attributes for an HTTP request made by a client. func (c HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue { + attrs := CurrentHTTPClient{}.ResponseTraceAttrs(resp) if c.duplicate { - return append(OldHTTPClient{}.ResponseTraceAttrs(resp), CurrentHTTPClient{}.ResponseTraceAttrs(resp)...) + return OldHTTPClient{}.ResponseTraceAttrs(resp, attrs) } - - return OldHTTPClient{}.ResponseTraceAttrs(resp) + return attrs } func (c HTTPClient) Status(code int) (codes.Code, string) { @@ -232,11 +276,7 @@ func (c HTTPClient) Status(code int) (codes.Code, string) { } func (c HTTPClient) ErrorType(err error) attribute.KeyValue { - if c.duplicate { - return CurrentHTTPClient{}.ErrorType(err) - } - - return attribute.KeyValue{} + return CurrentHTTPClient{}.ErrorType(err) } type MetricOpts struct { @@ -255,17 +295,17 @@ func (o MetricOpts) AddOptions() metric.AddOption { func (c HTTPClient) MetricOptions(ma MetricAttributes) map[string]MetricOpts { opts := map[string]MetricOpts{} - attributes := OldHTTPClient{}.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes) + attributes := CurrentHTTPClient{}.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes) set := metric.WithAttributeSet(attribute.NewSet(attributes...)) - opts["old"] = MetricOpts{ + opts["new"] = MetricOpts{ measurement: set, addOptions: set, } if c.duplicate { - attributes := CurrentHTTPClient{}.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes) + attributes := OldHTTPClient{}.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes) set := metric.WithAttributeSet(attribute.NewSet(attributes...)) - opts["new"] = MetricOpts{ + opts["old"] = MetricOpts{ measurement: set, addOptions: set, } @@ -275,17 +315,12 @@ func (c HTTPClient) MetricOptions(ma MetricAttributes) map[string]MetricOpts { } func (s HTTPClient) RecordMetrics(ctx context.Context, md MetricData, opts map[string]MetricOpts) { - if s.requestBytesCounter == nil || s.latencyMeasure == nil { - // This will happen if an HTTPClient{} is used instead of NewHTTPClient(). - return - } - - s.requestBytesCounter.Add(ctx, md.RequestSize, opts["old"].AddOptions()) - s.latencyMeasure.Record(ctx, md.ElapsedTime, opts["old"].MeasurementOption()) + s.requestBodySize.Inst().Record(ctx, md.RequestSize, opts["new"].MeasurementOption()) + s.requestDuration.Inst().Record(ctx, md.ElapsedTime/1000, opts["new"].MeasurementOption()) if s.duplicate { - s.requestBodySize.Record(ctx, md.RequestSize, opts["new"].MeasurementOption()) - s.requestDuration.Record(ctx, md.ElapsedTime, opts["new"].MeasurementOption()) + s.requestBytesCounter.Add(ctx, md.RequestSize, opts["old"].AddOptions()) + s.latencyMeasure.Record(ctx, md.ElapsedTime, opts["old"].MeasurementOption()) } } @@ -299,9 +334,10 @@ func (s HTTPClient) RecordResponseSize(ctx context.Context, responseData int64, } func (s HTTPClient) TraceAttributes(host string) []attribute.KeyValue { + attrs := CurrentHTTPClient{}.TraceAttributes(host) if s.duplicate { - return append(OldHTTPClient{}.TraceAttributes(host), CurrentHTTPClient{}.TraceAttributes(host)...) + return OldHTTPClient{}.TraceAttributes(host, attrs) } - return OldHTTPClient{}.TraceAttributes(host) + return attrs } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go index f2cf8a152..b4036dd90 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go @@ -5,10 +5,12 @@ package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/ // Generate semconv package: //go:generate gotmpl --body=../../../../../../internal/shared/semconv/bench_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=bench_test.go +//go:generate gotmpl --body=../../../../../../internal/shared/semconv/common_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=common_test.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/env.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=env.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/env_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=env_test.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/httpconv.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=httpconv.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/httpconv_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=httpconv_test.go +//go:generate gotmpl --body=../../../../../../internal/shared/semconv/httpconvtest_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=httpconvtest_test.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/util.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=util.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/util_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=util_test.go //go:generate gotmpl --body=../../../../../../internal/shared/semconv/v1.20.0.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=v1.20.0.go diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go index 8b85eff90..9766f3ac8 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go @@ -1,9 +1,11 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconv/httpconv.go.tmpl // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package semconv provides OpenTelemetry semantic convention types and +// functionality. package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" import ( @@ -15,14 +17,17 @@ import ( "strings" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/noop" - semconvNew "go.opentelemetry.io/otel/semconv/v1.26.0" + semconvNew "go.opentelemetry.io/otel/semconv/v1.34.0" ) +type RequestTraceAttrsOpts struct { + // If set, this is used as value for the "http.client_ip" attribute. + HTTPClientIP string +} + type CurrentHTTPServer struct{} -// TraceRequest returns trace attributes for an HTTP request received by a +// RequestTraceAttrs returns trace attributes for an HTTP request received by a // server. // // The server must be the primary server name if it is known. For example this @@ -38,7 +43,7 @@ type CurrentHTTPServer struct{} // // If the primary server name is not known, server should be an empty string. // The req Host will be used to determine the server instead. -func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { +func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request, opts RequestTraceAttrsOpts) []attribute.KeyValue { count := 3 // ServerAddress, Method, Scheme var host string @@ -65,7 +70,8 @@ func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) [ scheme := n.scheme(req.TLS != nil) - if peer, peerPort := SplitHostPort(req.RemoteAddr); peer != "" { + peer, peerPort := SplitHostPort(req.RemoteAddr) + if peer != "" { // The Go HTTP server sets RemoteAddr to "IP:port", this will not be a // file-path that would be interpreted with a sock family. count++ @@ -79,7 +85,17 @@ func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) [ count++ } - clientIP := serverClientIP(req.Header.Get("X-Forwarded-For")) + // For client IP, use, in order: + // 1. The value passed in the options + // 2. The value in the X-Forwarded-For header + // 3. The peer address + clientIP := opts.HTTPClientIP + if clientIP == "" { + clientIP = serverClientIP(req.Header.Get("X-Forwarded-For")) + if clientIP == "" { + clientIP = peer + } + } if clientIP != "" { count++ } @@ -96,6 +112,11 @@ func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) [ count++ } + route := httpRoute(req.Pattern) + if route != "" { + count++ + } + attrs := make([]attribute.KeyValue, 0, count) attrs = append(attrs, semconvNew.ServerAddress(host), @@ -119,7 +140,7 @@ func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) [ } } - if useragent := req.UserAgent(); useragent != "" { + if useragent != "" { attrs = append(attrs, semconvNew.UserAgentOriginal(useragent)) } @@ -138,10 +159,14 @@ func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) [ attrs = append(attrs, semconvNew.NetworkProtocolVersion(protoVersion)) } + if route != "" { + attrs = append(attrs, n.Route(route)) + } + return attrs } -func (o CurrentHTTPServer) NetworkTransportAttr(network string) attribute.KeyValue { +func (n CurrentHTTPServer) NetworkTransportAttr(network string) attribute.KeyValue { switch network { case "tcp", "tcp4", "tcp6": return semconvNew.NetworkTransportTCP @@ -176,9 +201,11 @@ func (n CurrentHTTPServer) scheme(https bool) attribute.KeyValue { // nolint:rev return semconvNew.URLScheme("http") } -// TraceResponse returns trace attributes for telemetry from an HTTP response. +// ResponseTraceAttrs returns trace attributes for telemetry from an HTTP +// response. // -// If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. +// If any of the fields in the ResponseTelemetry are not set the attribute will +// be omitted. func (n CurrentHTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { var count int @@ -218,35 +245,6 @@ func (n CurrentHTTPServer) Route(route string) attribute.KeyValue { return semconvNew.HTTPRoute(route) } -func (n CurrentHTTPServer) createMeasures(meter metric.Meter) (metric.Int64Histogram, metric.Int64Histogram, metric.Float64Histogram) { - if meter == nil { - return noop.Int64Histogram{}, noop.Int64Histogram{}, noop.Float64Histogram{} - } - - var err error - requestBodySizeHistogram, err := meter.Int64Histogram( - semconvNew.HTTPServerRequestBodySizeName, - metric.WithUnit(semconvNew.HTTPServerRequestBodySizeUnit), - metric.WithDescription(semconvNew.HTTPServerRequestBodySizeDescription), - ) - handleErr(err) - - responseBodySizeHistogram, err := meter.Int64Histogram( - semconvNew.HTTPServerResponseBodySizeName, - metric.WithUnit(semconvNew.HTTPServerResponseBodySizeUnit), - metric.WithDescription(semconvNew.HTTPServerResponseBodySizeDescription), - ) - handleErr(err) - requestDurationHistogram, err := meter.Float64Histogram( - semconvNew.HTTPServerRequestDurationName, - metric.WithUnit(semconvNew.HTTPServerRequestDurationUnit), - metric.WithDescription(semconvNew.HTTPServerRequestDurationDescription), - ) - handleErr(err) - - return requestBodySizeHistogram, responseBodySizeHistogram, requestDurationHistogram -} - func (n CurrentHTTPServer) MetricAttributes(server string, req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue { num := len(additionalAttributes) + 3 var host string @@ -442,29 +440,6 @@ func (n CurrentHTTPClient) method(method string) (attribute.KeyValue, attribute. return semconvNew.HTTPRequestMethodGet, orig } -func (n CurrentHTTPClient) createMeasures(meter metric.Meter) (metric.Int64Histogram, metric.Float64Histogram) { - if meter == nil { - return noop.Int64Histogram{}, noop.Float64Histogram{} - } - - var err error - requestBodySize, err := meter.Int64Histogram( - semconvNew.HTTPClientRequestBodySizeName, - metric.WithUnit(semconvNew.HTTPClientRequestBodySizeUnit), - metric.WithDescription(semconvNew.HTTPClientRequestBodySizeDescription), - ) - handleErr(err) - - requestDuration, err := meter.Float64Histogram( - semconvNew.HTTPClientRequestDurationName, - metric.WithUnit(semconvNew.HTTPClientRequestDurationUnit), - metric.WithDescription(semconvNew.HTTPClientRequestDurationDescription), - ) - handleErr(err) - - return requestBodySize, requestDuration -} - func (n CurrentHTTPClient) MetricAttributes(req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue { num := len(additionalAttributes) + 2 var h string @@ -501,7 +476,7 @@ func (n CurrentHTTPClient) MetricAttributes(req *http.Request, statusCode int, a attributes = append(attributes, semconvNew.HTTPRequestMethodKey.String(standardizeHTTPMethod(req.Method)), semconvNew.ServerAddress(requestHost), - n.scheme(req.TLS != nil), + n.scheme(req), ) if port > 0 { @@ -520,15 +495,18 @@ func (n CurrentHTTPClient) MetricAttributes(req *http.Request, statusCode int, a return attributes } -// Attributes for httptrace. +// TraceAttributes returns attributes for httptrace. func (n CurrentHTTPClient) TraceAttributes(host string) []attribute.KeyValue { return []attribute.KeyValue{ semconvNew.ServerAddress(host), } } -func (n CurrentHTTPClient) scheme(https bool) attribute.KeyValue { // nolint:revive - if https { +func (n CurrentHTTPClient) scheme(req *http.Request) attribute.KeyValue { + if req.URL != nil && req.URL.Scheme != "" { + return semconvNew.URLScheme(req.URL.Scheme) + } + if req.TLS != nil { return semconvNew.URLScheme("https") } return semconvNew.URLScheme("http") diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go index 315d3dd29..e4ebf8581 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go @@ -1,4 +1,4 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconv/util.go.tmpl // Copyright The OpenTelemetry Authors @@ -14,7 +14,7 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" - semconvNew "go.opentelemetry.io/otel/semconv/v1.26.0" + semconvNew "go.opentelemetry.io/otel/semconv/v1.34.0" ) // SplitHostPort splits a network address hostport of the form "host", @@ -28,17 +28,17 @@ func SplitHostPort(hostport string) (host string, port int) { port = -1 if strings.HasPrefix(hostport, "[") { - addrEnd := strings.LastIndex(hostport, "]") + addrEnd := strings.LastIndexByte(hostport, ']') if addrEnd < 0 { // Invalid hostport. return } - if i := strings.LastIndex(hostport[addrEnd:], ":"); i < 0 { + if i := strings.LastIndexByte(hostport[addrEnd:], ':'); i < 0 { host = hostport[1:addrEnd] return } } else { - if i := strings.LastIndex(hostport, ":"); i < 0 { + if i := strings.LastIndexByte(hostport, ':'); i < 0 { host = hostport return } @@ -70,12 +70,19 @@ func requiredHTTPPort(https bool, port int) int { // nolint:revive } func serverClientIP(xForwardedFor string) string { - if idx := strings.Index(xForwardedFor, ","); idx >= 0 { + if idx := strings.IndexByte(xForwardedFor, ','); idx >= 0 { xForwardedFor = xForwardedFor[:idx] } return xForwardedFor } +func httpRoute(pattern string) string { + if idx := strings.IndexByte(pattern, '/'); idx >= 0 { + return pattern[idx:] + } + return "" +} + func netProtocol(proto string) (name string, version string) { name, version, _ = strings.Cut(proto, "/") switch name { diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go index 742c2113e..ba7fccf1e 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go @@ -1,4 +1,4 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconv/v120.0.go.tmpl // Copyright The OpenTelemetry Authors @@ -37,8 +37,8 @@ type OldHTTPServer struct{} // // If the primary server name is not known, server should be an empty string. // The req Host will be used to determine the server instead. -func (o OldHTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { - return semconvutil.HTTPServerRequest(server, req) +func (o OldHTTPServer) RequestTraceAttrs(server string, req *http.Request, attrs []attribute.KeyValue) []attribute.KeyValue { + return semconvutil.HTTPServerRequest(server, req, semconvutil.HTTPServerRequestOptions{}, attrs) } func (o OldHTTPServer) NetworkTransportAttr(network string) attribute.KeyValue { @@ -48,9 +48,7 @@ func (o OldHTTPServer) NetworkTransportAttr(network string) attribute.KeyValue { // ResponseTraceAttrs returns trace attributes for telemetry from an HTTP response. // // If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. -func (o OldHTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { - attributes := []attribute.KeyValue{} - +func (o OldHTTPServer) ResponseTraceAttrs(resp ResponseTelemetry, attributes []attribute.KeyValue) []attribute.KeyValue { if resp.ReadBytes > 0 { attributes = append(attributes, semconv.HTTPRequestContentLength(int(resp.ReadBytes))) } @@ -179,12 +177,12 @@ func (o OldHTTPServer) scheme(https bool) attribute.KeyValue { // nolint:revive type OldHTTPClient struct{} -func (o OldHTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue { - return semconvutil.HTTPClientRequest(req) +func (o OldHTTPClient) RequestTraceAttrs(req *http.Request, attrs []attribute.KeyValue) []attribute.KeyValue { + return semconvutil.HTTPClientRequest(req, attrs) } -func (o OldHTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue { - return semconvutil.HTTPClientResponse(resp) +func (o OldHTTPClient) ResponseTraceAttrs(resp *http.Response, attrs []attribute.KeyValue) []attribute.KeyValue { + return semconvutil.HTTPClientResponse(resp, attrs) } func (o OldHTTPClient) MetricAttributes(req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue { @@ -269,9 +267,7 @@ func (o OldHTTPClient) createMeasures(meter metric.Meter) (metric.Int64Counter, return requestBytesCounter, responseBytesCounter, latencyMeasure } -// Attributes for httptrace. -func (c OldHTTPClient) TraceAttributes(host string) []attribute.KeyValue { - return []attribute.KeyValue{ - semconv.NetHostName(host), - } +// TraceAttributes returns attributes for httptrace. +func (c OldHTTPClient) TraceAttributes(host string, attrs []attribute.KeyValue) []attribute.KeyValue { + return append(attrs, semconv.NetHostName(host)) } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go index a73bb06e9..b99735479 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go @@ -1,14 +1,16 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconvutil/httpconv.go.tmpl // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package semconvutil provides OpenTelemetry semantic convention utilities. package semconvutil // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" import ( "fmt" "net/http" + "slices" "strings" "go.opentelemetry.io/otel/attribute" @@ -16,6 +18,11 @@ import ( semconv "go.opentelemetry.io/otel/semconv/v1.20.0" ) +type HTTPServerRequestOptions struct { + // If set, this is used as value for the "http.client_ip" attribute. + HTTPClientIP string +} + // HTTPClientResponse returns trace attributes for an HTTP response received by a // client from a server. It will return the following attributes if the related // values are defined in resp: "http.status.code", @@ -26,9 +33,9 @@ import ( // attributes. If a complete set of attributes can be generated using the // request contained in resp. For example: // -// append(HTTPClientResponse(resp), ClientRequest(resp.Request)...) -func HTTPClientResponse(resp *http.Response) []attribute.KeyValue { - return hc.ClientResponse(resp) +// HTTPClientResponse(resp, ClientRequest(resp.Request))) +func HTTPClientResponse(resp *http.Response, attrs []attribute.KeyValue) []attribute.KeyValue { + return hc.ClientResponse(resp, attrs) } // HTTPClientRequest returns trace attributes for an HTTP request made by a client. @@ -36,8 +43,8 @@ func HTTPClientResponse(resp *http.Response) []attribute.KeyValue { // "net.peer.name". The following attributes are returned if the related values // are defined in req: "net.peer.port", "user_agent.original", // "http.request_content_length". -func HTTPClientRequest(req *http.Request) []attribute.KeyValue { - return hc.ClientRequest(req) +func HTTPClientRequest(req *http.Request, attrs []attribute.KeyValue) []attribute.KeyValue { + return hc.ClientRequest(req, attrs) } // HTTPClientRequestMetrics returns metric attributes for an HTTP request made by a client. @@ -75,8 +82,8 @@ func HTTPClientStatus(code int) (codes.Code, string) { // "http.target", "net.host.name". The following attributes are returned if // they related values are defined in req: "net.host.port", "net.sock.peer.addr", // "net.sock.peer.port", "user_agent.original", "http.client_ip". -func HTTPServerRequest(server string, req *http.Request) []attribute.KeyValue { - return hc.ServerRequest(server, req) +func HTTPServerRequest(server string, req *http.Request, opts HTTPServerRequestOptions, attrs []attribute.KeyValue) []attribute.KeyValue { + return hc.ServerRequest(server, req, opts, attrs) } // HTTPServerRequestMetrics returns metric attributes for an HTTP request received by a @@ -153,8 +160,8 @@ var hc = &httpConv{ // attributes. If a complete set of attributes can be generated using the // request contained in resp. For example: // -// append(ClientResponse(resp), ClientRequest(resp.Request)...) -func (c *httpConv) ClientResponse(resp *http.Response) []attribute.KeyValue { +// ClientResponse(resp, ClientRequest(resp.Request)) +func (c *httpConv) ClientResponse(resp *http.Response, attrs []attribute.KeyValue) []attribute.KeyValue { /* The following semantic conventions are returned if present: http.status_code int http.response_content_length int @@ -166,8 +173,11 @@ func (c *httpConv) ClientResponse(resp *http.Response) []attribute.KeyValue { if resp.ContentLength > 0 { n++ } + if n == 0 { + return attrs + } - attrs := make([]attribute.KeyValue, 0, n) + attrs = slices.Grow(attrs, n) if resp.StatusCode > 0 { attrs = append(attrs, c.HTTPStatusCodeKey.Int(resp.StatusCode)) } @@ -182,7 +192,7 @@ func (c *httpConv) ClientResponse(resp *http.Response) []attribute.KeyValue { // "net.peer.name". The following attributes are returned if the related values // are defined in req: "net.peer.port", "user_agent.original", // "http.request_content_length", "user_agent.original". -func (c *httpConv) ClientRequest(req *http.Request) []attribute.KeyValue { +func (c *httpConv) ClientRequest(req *http.Request, attrs []attribute.KeyValue) []attribute.KeyValue { /* The following semantic conventions are returned if present: http.method string user_agent.original string @@ -221,8 +231,7 @@ func (c *httpConv) ClientRequest(req *http.Request) []attribute.KeyValue { n++ } - attrs := make([]attribute.KeyValue, 0, n) - + attrs = slices.Grow(attrs, n) attrs = append(attrs, c.method(req.Method)) var u string @@ -305,7 +314,7 @@ func (c *httpConv) ClientRequestMetrics(req *http.Request) []attribute.KeyValue // related values are defined in req: "net.host.port", "net.sock.peer.addr", // "net.sock.peer.port", "user_agent.original", "http.client_ip", // "net.protocol.name", "net.protocol.version". -func (c *httpConv) ServerRequest(server string, req *http.Request) []attribute.KeyValue { +func (c *httpConv) ServerRequest(server string, req *http.Request, opts HTTPServerRequestOptions, attrs []attribute.KeyValue) []attribute.KeyValue { /* The following semantic conventions are returned if present: http.method string http.scheme string @@ -358,7 +367,17 @@ func (c *httpConv) ServerRequest(server string, req *http.Request) []attribute.K n++ } - clientIP := serverClientIP(req.Header.Get("X-Forwarded-For")) + // For client IP, use, in order: + // 1. The value passed in the options + // 2. The value in the X-Forwarded-For header + // 3. The peer address + clientIP := opts.HTTPClientIP + if clientIP == "" { + clientIP = serverClientIP(req.Header.Get("X-Forwarded-For")) + if clientIP == "" { + clientIP = peer + } + } if clientIP != "" { n++ } @@ -378,7 +397,7 @@ func (c *httpConv) ServerRequest(server string, req *http.Request) []attribute.K n++ } - attrs := make([]attribute.KeyValue, 0, n) + attrs = slices.Grow(attrs, n) attrs = append(attrs, c.method(req.Method)) attrs = append(attrs, c.scheme(req.TLS != nil)) diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go index de74fa252..df97255e4 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go @@ -1,4 +1,4 @@ -// Code created by gotmpl. DO NOT MODIFY. +// Code generated by gotmpl. DO NOT MODIFY. // source: internal/shared/semconvutil/netconv.go.tmpl // Copyright The OpenTelemetry Authors diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go index ea504e396..d62ce44b0 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go @@ -35,14 +35,14 @@ func (l *Labeler) Get() []attribute.KeyValue { type labelerContextKeyType int -const lablelerContextKey labelerContextKeyType = 0 +const labelerContextKey labelerContextKeyType = 0 // ContextWithLabeler returns a new context with the provided Labeler instance. // Attributes added to the specified labeler will be injected into metrics // emitted by the instrumentation. Only one labeller can be injected into the // context. Injecting it multiple times will override the previous calls. func ContextWithLabeler(parent context.Context, l *Labeler) context.Context { - return context.WithValue(parent, lablelerContextKey, l) + return context.WithValue(parent, labelerContextKey, l) } // LabelerFromContext retrieves a Labeler instance from the provided context if @@ -50,7 +50,7 @@ func ContextWithLabeler(parent context.Context, l *Labeler) context.Context { // Labeler is returned and the second return value is false. In this case it is // safe to use the Labeler but any attributes added to it will not be used. func LabelerFromContext(ctx context.Context) (*Labeler, bool) { - l, ok := ctx.Value(lablelerContextKey).(*Labeler) + l, ok := ctx.Value(labelerContextKey).(*Labeler) if !ok { l = &Labeler{} } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go index 44b86ad86..e4c02a429 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go @@ -129,6 +129,41 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) { t.propagators.Inject(ctx, propagation.HeaderCarrier(r.Header)) res, err := t.rt.RoundTrip(r) + + // Defer metrics recording function to record the metrics on error or no error. + defer func() { + metricAttributes := semconv.MetricAttributes{ + Req: r, + AdditionalAttributes: append(labeler.Get(), t.metricAttributesFromRequest(r)...), + } + + if err == nil { + metricAttributes.StatusCode = res.StatusCode + } + + metricOpts := t.semconv.MetricOptions(metricAttributes) + + metricData := semconv.MetricData{ + RequestSize: bw.BytesRead(), + } + + if err == nil { + // For handling response bytes we leverage a callback when the client reads the http response + readRecordFunc := func(n int64) { + t.semconv.RecordResponseSize(ctx, n, metricOpts) + } + + res.Body = newWrappedBody(span, readRecordFunc, res.Body) + } + + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedTime := float64(time.Since(requestStartTime)) / float64(time.Millisecond) + + metricData.ElapsedTime = elapsedTime + + t.semconv.RecordMetrics(ctx, metricData, metricOpts) + }() + if err != nil { // set error type attribute if the error is part of the predefined // error types. @@ -141,35 +176,14 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) { span.SetStatus(codes.Error, err.Error()) span.End() - return res, err - } - // metrics - metricOpts := t.semconv.MetricOptions(semconv.MetricAttributes{ - Req: r, - StatusCode: res.StatusCode, - AdditionalAttributes: append(labeler.Get(), t.metricAttributesFromRequest(r)...), - }) - - // For handling response bytes we leverage a callback when the client reads the http response - readRecordFunc := func(n int64) { - t.semconv.RecordResponseSize(ctx, n, metricOpts) + return res, err } // traces span.SetAttributes(t.semconv.ResponseTraceAttrs(res)...) span.SetStatus(t.semconv.Status(res.StatusCode)) - res.Body = newWrappedBody(span, readRecordFunc, res.Body) - - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedTime := float64(time.Since(requestStartTime)) / float64(time.Millisecond) - - t.semconv.RecordMetrics(ctx, semconv.MetricData{ - RequestSize: bw.BytesRead(), - ElapsedTime: elapsedTime, - }, metricOpts) - return res, nil } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go index 1ec9a00c7..2fe5a1361 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go @@ -5,13 +5,6 @@ package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http // Version is the current release version of the otelhttp instrumentation. func Version() string { - return "0.60.0" + return "0.62.0" // This string is updated by the pre_release.sh script during release } - -// SemVersion is the semantic version to be supplied to tracer/meter creation. -// -// Deprecated: Use [Version] instead. -func SemVersion() string { - return Version() -} diff --git a/vendor/go.opentelemetry.io/otel/.clomonitor.yml b/vendor/go.opentelemetry.io/otel/.clomonitor.yml new file mode 100644 index 000000000..128d61a22 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/.clomonitor.yml @@ -0,0 +1,3 @@ +exemptions: + - check: artifacthub_badge + reason: "Artifact Hub doesn't support Go packages" diff --git a/vendor/go.opentelemetry.io/otel/.golangci.yml b/vendor/go.opentelemetry.io/otel/.golangci.yml index c58e48ab0..5f69cc027 100644 --- a/vendor/go.opentelemetry.io/otel/.golangci.yml +++ b/vendor/go.opentelemetry.io/otel/.golangci.yml @@ -1,13 +1,9 @@ -# See https://github.com/golangci/golangci-lint#config-file +version: "2" run: - issues-exit-code: 1 #Default - tests: true #Default - + issues-exit-code: 1 + tests: true linters: - # Disable everything by default so upgrades to not include new "default - # enabled" linters. - disable-all: true - # Specifically enable linters we want to use. + default: none enable: - asasalint - bodyclose @@ -15,10 +11,7 @@ linters: - errcheck - errorlint - godot - - gofumpt - - goimports - gosec - - gosimple - govet - ineffassign - misspell @@ -26,227 +19,232 @@ linters: - revive - staticcheck - testifylint - - typecheck - unconvert - - unused - unparam + - unused - usestdlibvars - usetesting - + settings: + depguard: + rules: + auto/sdk: + files: + - '!internal/global/trace.go' + - ~internal/global/trace_test.go + deny: + - pkg: go.opentelemetry.io/auto/sdk + desc: Do not use SDK from automatic instrumentation. + non-tests: + files: + - '!$test' + - '!**/*test/*.go' + - '!**/internal/matchers/*.go' + deny: + - pkg: testing + - pkg: github.com/stretchr/testify + - pkg: crypto/md5 + - pkg: crypto/sha1 + - pkg: crypto/**/pkix + otel-internal: + files: + - '**/sdk/*.go' + - '**/sdk/**/*.go' + - '**/exporters/*.go' + - '**/exporters/**/*.go' + - '**/schema/*.go' + - '**/schema/**/*.go' + - '**/metric/*.go' + - '**/metric/**/*.go' + - '**/bridge/*.go' + - '**/bridge/**/*.go' + - '**/trace/*.go' + - '**/trace/**/*.go' + - '**/log/*.go' + - '**/log/**/*.go' + deny: + - pkg: go.opentelemetry.io/otel/internal$ + desc: Do not use cross-module internal packages. + - pkg: go.opentelemetry.io/otel/internal/internaltest + desc: Do not use cross-module internal packages. + otlp-internal: + files: + - '!**/exporters/otlp/internal/**/*.go' + deny: + - pkg: go.opentelemetry.io/otel/exporters/otlp/internal + desc: Do not use cross-module internal packages. + otlpmetric-internal: + files: + - '!**/exporters/otlp/otlpmetric/internal/*.go' + - '!**/exporters/otlp/otlpmetric/internal/**/*.go' + deny: + - pkg: go.opentelemetry.io/otel/exporters/otlp/otlpmetric/internal + desc: Do not use cross-module internal packages. + otlptrace-internal: + files: + - '!**/exporters/otlp/otlptrace/*.go' + - '!**/exporters/otlp/otlptrace/internal/**.go' + deny: + - pkg: go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal + desc: Do not use cross-module internal packages. + godot: + exclude: + # Exclude links. + - '^ *\[[^]]+\]:' + # Exclude sentence fragments for lists. + - ^[ ]*[-•] + # Exclude sentences prefixing a list. + - :$ + misspell: + locale: US + ignore-rules: + - cancelled + perfsprint: + int-conversion: true + err-error: true + errorf: true + sprintf1: true + strconcat: true + revive: + confidence: 0.01 + rules: + - name: blank-imports + - name: bool-literal-in-expr + - name: constant-logical-expr + - name: context-as-argument + arguments: + - allowTypesBefore: '*testing.T' + disabled: true + - name: context-keys-type + - name: deep-exit + - name: defer + arguments: + - - call-chain + - loop + - name: dot-imports + - name: duplicated-imports + - name: early-return + arguments: + - preserveScope + - name: empty-block + - name: empty-lines + - name: error-naming + - name: error-return + - name: error-strings + - name: errorf + - name: exported + arguments: + - sayRepetitiveInsteadOfStutters + - name: flag-parameter + - name: identical-branches + - name: if-return + - name: import-shadowing + - name: increment-decrement + - name: indent-error-flow + arguments: + - preserveScope + - name: package-comments + - name: range + - name: range-val-in-closure + - name: range-val-address + - name: redefines-builtin-id + - name: string-format + arguments: + - - panic + - /^[^\n]*$/ + - must not contain line breaks + - name: struct-tag + - name: superfluous-else + arguments: + - preserveScope + - name: time-equal + - name: unconditional-recursion + - name: unexported-return + - name: unhandled-error + arguments: + - fmt.Fprint + - fmt.Fprintf + - fmt.Fprintln + - fmt.Print + - fmt.Printf + - fmt.Println + - name: unnecessary-stmt + - name: useless-break + - name: var-declaration + - name: var-naming + arguments: + - ["ID"] # AllowList + - ["Otel", "Aws", "Gcp"] # DenyList + - name: waitgroup-by-value + testifylint: + enable-all: true + disable: + - float-compare + - go-require + - require-error + exclusions: + generated: lax + presets: + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - revive + path: schema/v.*/types/.* + text: avoid meaningless package names + # TODO: Having appropriate comments for exported objects helps development, + # even for objects in internal packages. Appropriate comments for all + # exported objects should be added and this exclusion removed. + - linters: + - revive + path: .*internal/.* + text: exported (method|function|type|const) (.+) should have comment or be unexported + # Yes, they are, but it's okay in a test. + - linters: + - revive + path: _test\.go + text: exported func.*returns unexported type.*which can be annoying to use + # Example test functions should be treated like main. + - linters: + - revive + path: example.*_test\.go + text: calls to (.+) only in main[(][)] or init[(][)] functions + # It's okay to not run gosec and perfsprint in a test. + - linters: + - gosec + - perfsprint + path: _test\.go + # Ignoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand) + # as we commonly use it in tests and examples. + - linters: + - gosec + text: 'G404:' + # Ignoring gosec G402: TLS MinVersion too low + # as the https://pkg.go.dev/crypto/tls#Config handles MinVersion default well. + - linters: + - gosec + text: 'G402: TLS MinVersion too low.' + paths: + - third_party$ + - builtin$ + - examples$ issues: - # Maximum issues count per one linter. - # Set to 0 to disable. - # Default: 50 - # Setting to unlimited so the linter only is run once to debug all issues. max-issues-per-linter: 0 - # Maximum count of issues with the same text. - # Set to 0 to disable. - # Default: 3 - # Setting to unlimited so the linter only is run once to debug all issues. max-same-issues: 0 - # Excluding configuration per-path, per-linter, per-text and per-source. - exclude-rules: - # TODO: Having appropriate comments for exported objects helps development, - # even for objects in internal packages. Appropriate comments for all - # exported objects should be added and this exclusion removed. - - path: '.*internal/.*' - text: "exported (method|function|type|const) (.+) should have comment or be unexported" - linters: - - revive - # Yes, they are, but it's okay in a test. - - path: _test\.go - text: "exported func.*returns unexported type.*which can be annoying to use" - linters: - - revive - # Example test functions should be treated like main. - - path: example.*_test\.go - text: "calls to (.+) only in main[(][)] or init[(][)] functions" - linters: - - revive - # It's okay to not run gosec and perfsprint in a test. - - path: _test\.go - linters: - - gosec - - perfsprint - # Ignoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand) - # as we commonly use it in tests and examples. - - text: "G404:" - linters: - - gosec - # Ignoring gosec G402: TLS MinVersion too low - # as the https://pkg.go.dev/crypto/tls#Config handles MinVersion default well. - - text: "G402: TLS MinVersion too low." - linters: - - gosec - include: - # revive exported should have comment or be unexported. - - EXC0012 - # revive package comment should be of the form ... - - EXC0013 - -linters-settings: - depguard: - rules: - non-tests: - files: - - "!$test" - - "!**/*test/*.go" - - "!**/internal/matchers/*.go" - deny: - - pkg: "testing" - - pkg: "github.com/stretchr/testify" - - pkg: "crypto/md5" - - pkg: "crypto/sha1" - - pkg: "crypto/**/pkix" - auto/sdk: - files: - - "!internal/global/trace.go" - - "~internal/global/trace_test.go" - deny: - - pkg: "go.opentelemetry.io/auto/sdk" - desc: Do not use SDK from automatic instrumentation. - otlp-internal: - files: - - "!**/exporters/otlp/internal/**/*.go" - deny: - - pkg: "go.opentelemetry.io/otel/exporters/otlp/internal" - desc: Do not use cross-module internal packages. - otlptrace-internal: - files: - - "!**/exporters/otlp/otlptrace/*.go" - - "!**/exporters/otlp/otlptrace/internal/**.go" - deny: - - pkg: "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal" - desc: Do not use cross-module internal packages. - otlpmetric-internal: - files: - - "!**/exporters/otlp/otlpmetric/internal/*.go" - - "!**/exporters/otlp/otlpmetric/internal/**/*.go" - deny: - - pkg: "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/internal" - desc: Do not use cross-module internal packages. - otel-internal: - files: - - "**/sdk/*.go" - - "**/sdk/**/*.go" - - "**/exporters/*.go" - - "**/exporters/**/*.go" - - "**/schema/*.go" - - "**/schema/**/*.go" - - "**/metric/*.go" - - "**/metric/**/*.go" - - "**/bridge/*.go" - - "**/bridge/**/*.go" - - "**/trace/*.go" - - "**/trace/**/*.go" - - "**/log/*.go" - - "**/log/**/*.go" - deny: - - pkg: "go.opentelemetry.io/otel/internal$" - desc: Do not use cross-module internal packages. - - pkg: "go.opentelemetry.io/otel/internal/attribute" - desc: Do not use cross-module internal packages. - - pkg: "go.opentelemetry.io/otel/internal/internaltest" - desc: Do not use cross-module internal packages. - - pkg: "go.opentelemetry.io/otel/internal/matchers" - desc: Do not use cross-module internal packages. - godot: - exclude: - # Exclude links. - - '^ *\[[^]]+\]:' - # Exclude sentence fragments for lists. - - '^[ ]*[-•]' - # Exclude sentences prefixing a list. - - ':$' - goimports: - local-prefixes: go.opentelemetry.io - misspell: - locale: US - ignore-words: - - cancelled - perfsprint: - err-error: true - errorf: true - int-conversion: true - sprintf1: true - strconcat: true - revive: - # Sets the default failure confidence. - # This means that linting errors with less than 0.8 confidence will be ignored. - # Default: 0.8 - confidence: 0.01 - # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md - rules: - - name: blank-imports - - name: bool-literal-in-expr - - name: constant-logical-expr - - name: context-as-argument - disabled: true - arguments: - - allowTypesBefore: "*testing.T" - - name: context-keys-type - - name: deep-exit - - name: defer - arguments: - - ["call-chain", "loop"] - - name: dot-imports - - name: duplicated-imports - - name: early-return - arguments: - - "preserveScope" - - name: empty-block - - name: empty-lines - - name: error-naming - - name: error-return - - name: error-strings - - name: errorf - - name: exported - arguments: - - "sayRepetitiveInsteadOfStutters" - - name: flag-parameter - - name: identical-branches - - name: if-return - - name: import-shadowing - - name: increment-decrement - - name: indent-error-flow - arguments: - - "preserveScope" - - name: package-comments - - name: range - - name: range-val-in-closure - - name: range-val-address - - name: redefines-builtin-id - - name: string-format - arguments: - - - panic - - '/^[^\n]*$/' - - must not contain line breaks - - name: struct-tag - - name: superfluous-else - arguments: - - "preserveScope" - - name: time-equal - - name: unconditional-recursion - - name: unexported-return - - name: unhandled-error - arguments: - - "fmt.Fprint" - - "fmt.Fprintf" - - "fmt.Fprintln" - - "fmt.Print" - - "fmt.Printf" - - "fmt.Println" - - name: unnecessary-stmt - - name: useless-break - - name: var-declaration - - name: var-naming - arguments: - - ["ID"] # AllowList - - ["Otel", "Aws", "Gcp"] # DenyList - - name: waitgroup-by-value - testifylint: - enable-all: true - disable: - - float-compare - - go-require - - require-error +formatters: + enable: + - gofumpt + - goimports + - golines + settings: + goimports: + local-prefixes: + - go.opentelemetry.io + golines: + max-len: 120 + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/vendor/go.opentelemetry.io/otel/CHANGELOG.md index c076db282..4acc75701 100644 --- a/vendor/go.opentelemetry.io/otel/CHANGELOG.md +++ b/vendor/go.opentelemetry.io/otel/CHANGELOG.md @@ -11,6 +11,112 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm +## [1.37.0/0.59.0/0.13.0] 2025-06-25 + +### Added + +- The `go.opentelemetry.io/otel/semconv/v1.33.0` package. + The package contains semantic conventions from the `v1.33.0` version of the OpenTelemetry Semantic Conventions. + See the [migration documentation](./semconv/v1.33.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.32.0.`(#6799) +- The `go.opentelemetry.io/otel/semconv/v1.34.0` package. + The package contains semantic conventions from the `v1.34.0` version of the OpenTelemetry Semantic Conventions. (#6812) +- Add metric's schema URL as `otel_scope_schema_url` label in `go.opentelemetry.io/otel/exporters/prometheus`. (#5947) +- Add metric's scope attributes as `otel_scope_[attribute]` labels in `go.opentelemetry.io/otel/exporters/prometheus`. (#5947) +- Add `EventName` to `EnabledParameters` in `go.opentelemetry.io/otel/log`. (#6825) +- Add `EventName` to `EnabledParameters` in `go.opentelemetry.io/otel/sdk/log`. (#6825) +- Changed handling of `go.opentelemetry.io/otel/exporters/prometheus` metric renaming to add unit suffixes when it doesn't match one of the pre-defined values in the unit suffix map. (#6839) + +### Changed + +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/bridge/opentracing`. (#6827) +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/exporters/zipkin`. (#6829) +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/metric`. (#6832) +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/sdk/resource`. (#6834) +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/sdk/trace`. (#6835) +- The semantic conventions have been upgraded from `v1.26.0` to `v1.34.0` in `go.opentelemetry.io/otel/trace`. (#6836) +- `Record.Resource` now returns `*resource.Resource` instead of `resource.Resource` in `go.opentelemetry.io/otel/sdk/log`. (#6864) +- Retry now shows error cause for context timeout in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`, `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6898) + +### Fixed + +- Stop stripping trailing slashes from configured endpoint URL in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#6710) +- Stop stripping trailing slashes from configured endpoint URL in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#6710) +- Stop stripping trailing slashes from configured endpoint URL in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`. (#6710) +- Stop stripping trailing slashes from configured endpoint URL in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#6710) +- Validate exponential histogram scale range for Prometheus compatibility in `go.opentelemetry.io/otel/exporters/prometheus`. (#6822) +- Context cancellation during metric pipeline produce does not corrupt data in `go.opentelemetry.io/otel/sdk/metric`. (#6914) + +### Removed + +- `go.opentelemetry.io/otel/exporters/prometheus` no longer exports `otel_scope_info` metric. (#6770) + +## [0.12.2] 2025-05-22 + +### Fixed + +- Retract `v0.12.0` release of `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` module that contains invalid dependencies. (#6804) +- Retract `v0.12.0` release of `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` module that contains invalid dependencies. (#6804) +- Retract `v0.12.0` release of `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` module that contains invalid dependencies. (#6804) + +## [0.12.1] 2025-05-21 + +### Fixes + +- Use the proper dependency version of `go.opentelemetry.io/otel/sdk/log/logtest` in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#6800) +- Use the proper dependency version of `go.opentelemetry.io/otel/sdk/log/logtest` in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6800) +- Use the proper dependency version of `go.opentelemetry.io/otel/sdk/log/logtest` in `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#6800) + +## [1.36.0/0.58.0/0.12.0] 2025-05-20 + +### Added + +- Add exponential histogram support in `go.opentelemetry.io/otel/exporters/prometheus`. (#6421) +- The `go.opentelemetry.io/otel/semconv/v1.31.0` package. + The package contains semantic conventions from the `v1.31.0` version of the OpenTelemetry Semantic Conventions. + See the [migration documentation](./semconv/v1.31.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.30.0`. (#6479) +- Add `Recording`, `Scope`, and `Record` types in `go.opentelemetry.io/otel/log/logtest`. (#6507) +- Add `WithHTTPClient` option to configure the `http.Client` used by `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#6751) +- Add `WithHTTPClient` option to configure the `http.Client` used by `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#6752) +- Add `WithHTTPClient` option to configure the `http.Client` used by `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6688) +- Add `ValuesGetter` in `go.opentelemetry.io/otel/propagation`, a `TextMapCarrier` that supports retrieving multiple values for a single key. (#5973) +- Add `Values` method to `HeaderCarrier` to implement the new `ValuesGetter` interface in `go.opentelemetry.io/otel/propagation`. (#5973) +- Update `Baggage` in `go.opentelemetry.io/otel/propagation` to retrieve multiple values for a key when the carrier implements `ValuesGetter`. (#5973) +- Add `AssertEqual` function in `go.opentelemetry.io/otel/log/logtest`. (#6662) +- The `go.opentelemetry.io/otel/semconv/v1.32.0` package. + The package contains semantic conventions from the `v1.32.0` version of the OpenTelemetry Semantic Conventions. + See the [migration documentation](./semconv/v1.32.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.31.0`(#6782) +- Add `Transform` option in `go.opentelemetry.io/otel/log/logtest`. (#6794) +- Add `Desc` option in `go.opentelemetry.io/otel/log/logtest`. (#6796) + +### Removed + +- Drop support for [Go 1.22]. (#6381, #6418) +- Remove `Resource` field from `EnabledParameters` in `go.opentelemetry.io/otel/sdk/log`. (#6494) +- Remove `RecordFactory` type from `go.opentelemetry.io/otel/log/logtest`. (#6492) +- Remove `ScopeRecords`, `EmittedRecord`, and `RecordFactory` types from `go.opentelemetry.io/otel/log/logtest`. (#6507) +- Remove `AssertRecordEqual` function in `go.opentelemetry.io/otel/log/logtest`, use `AssertEqual` instead. (#6662) + +### Changed + +- ⚠️ Update `github.com/prometheus/client_golang` to `v1.21.1`, which changes the `NameValidationScheme` to `UTF8Validation`. + This allows metrics names to keep original delimiters (e.g. `.`), rather than replacing with underscores. + This can be reverted by setting `github.com/prometheus/common/model.NameValidationScheme` to `LegacyValidation` in `github.com/prometheus/common/model`. (#6433) +- Initialize map with `len(keys)` in `NewAllowKeysFilter` and `NewDenyKeysFilter` to avoid unnecessary allocations in `go.opentelemetry.io/otel/attribute`. (#6455) +- `go.opentelemetry.io/otel/log/logtest` is now a separate Go module. (#6465) +- `go.opentelemetry.io/otel/sdk/log/logtest` is now a separate Go module. (#6466) +- `Recorder` in `go.opentelemetry.io/otel/log/logtest` no longer separately stores records emitted by loggers with the same instrumentation scope. (#6507) +- Improve performance of `BatchProcessor` in `go.opentelemetry.io/otel/sdk/log` by not exporting when exporter cannot accept more. (#6569, #6641) + +### Deprecated + +- Deprecate support for `model.LegacyValidation` for `go.opentelemetry.io/otel/exporters/prometheus`. (#6449) + +### Fixes + +- Stop percent encoding header environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` and `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6392) +- Ensure the `noopSpan.tracerProvider` method is not inlined in `go.opentelemetry.io/otel/trace` so the `go.opentelemetry.io/auto` instrumentation can instrument non-recording spans. (#6456) +- Use a `sync.Pool` instead of allocating `metricdata.ResourceMetrics` in `go.opentelemetry.io/otel/exporters/prometheus`. (#6472) + ## [1.35.0/0.57.0/0.11.0] 2025-03-05 This release is the last to support [Go 1.22]. @@ -3237,7 +3343,11 @@ It contains api and sdk for trace and meter. - CircleCI build CI manifest files. - CODEOWNERS file to track owners of this project. -[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.35.0...HEAD +[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.37.0...HEAD +[1.37.0/0.59.0/0.13.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.37.0 +[0.12.2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.2 +[0.12.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.1 +[1.36.0/0.58.0/0.12.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.36.0 [1.35.0/0.57.0/0.11.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.35.0 [1.34.0/0.56.0/0.10.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.34.0 [1.33.0/0.55.0/0.9.0/0.0.12]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.33.0 diff --git a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md index 7b8af585a..f9ddc281f 100644 --- a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md +++ b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md @@ -109,10 +109,9 @@ A PR is considered **ready to merge** when: This is not enforced through automation, but needs to be validated by the maintainer merging. - * The qualified approvals need to be from [Approver]s/[Maintainer]s - affiliated with different companies. Two qualified approvals from - [Approver]s or [Maintainer]s affiliated with the same company counts as a - single qualified approval. + * At least one of the qualified approvals need to be from an + [Approver]/[Maintainer] affiliated with a different company than the author + of the PR. * PRs introducing changes that have already been discussed and consensus reached only need one qualified approval. The discussion and resolution needs to be linked to the PR. @@ -643,17 +642,18 @@ should be canceled. ### Triagers +- [Alex Kats](https://github.com/akats7), Capital One - [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent ### Approvers ### Maintainers -- [Damien Mathieu](https://github.com/dmathieu), Elastic -- [David Ashpole](https://github.com/dashpole), Google -- [Robert Pająk](https://github.com/pellared), Splunk -- [Sam Xie](https://github.com/XSAM), Cisco/AppDynamics -- [Tyler Yahn](https://github.com/MrAlias), Splunk +- [Damien Mathieu](https://github.com/dmathieu), Elastic ([GPG](https://keys.openpgp.org/search?q=5A126B972A81A6CE443E5E1B408B8E44F0873832)) +- [David Ashpole](https://github.com/dashpole), Google ([GPG](https://keys.openpgp.org/search?q=C0D1BDDCAAEAE573673085F176327DA4D864DC70)) +- [Robert Pająk](https://github.com/pellared), Splunk ([GPG](https://keys.openpgp.org/search?q=CDAD3A60476A3DE599AA5092E5F7C35A4DBE90C2)) +- [Sam Xie](https://github.com/XSAM), Splunk ([GPG](https://keys.openpgp.org/search?q=AEA033782371ABB18EE39188B8044925D6FEEBEA)) +- [Tyler Yahn](https://github.com/MrAlias), Splunk ([GPG](https://keys.openpgp.org/search?q=0x46B0F3E1A8B1BA5A)) ### Emeritus diff --git a/vendor/go.opentelemetry.io/otel/Makefile b/vendor/go.opentelemetry.io/otel/Makefile index 226410d74..4fa423ca0 100644 --- a/vendor/go.opentelemetry.io/otel/Makefile +++ b/vendor/go.opentelemetry.io/otel/Makefile @@ -43,8 +43,11 @@ $(TOOLS)/crosslink: PACKAGE=go.opentelemetry.io/build-tools/crosslink SEMCONVKIT = $(TOOLS)/semconvkit $(TOOLS)/semconvkit: PACKAGE=go.opentelemetry.io/otel/$(TOOLS_MOD_DIR)/semconvkit +VERIFYREADMES = $(TOOLS)/verifyreadmes +$(TOOLS)/verifyreadmes: PACKAGE=go.opentelemetry.io/otel/$(TOOLS_MOD_DIR)/verifyreadmes + GOLANGCI_LINT = $(TOOLS)/golangci-lint -$(TOOLS)/golangci-lint: PACKAGE=github.com/golangci/golangci-lint/cmd/golangci-lint +$(TOOLS)/golangci-lint: PACKAGE=github.com/golangci/golangci-lint/v2/cmd/golangci-lint MISSPELL = $(TOOLS)/misspell $(TOOLS)/misspell: PACKAGE=github.com/client9/misspell/cmd/misspell @@ -68,7 +71,7 @@ GOVULNCHECK = $(TOOLS)/govulncheck $(TOOLS)/govulncheck: PACKAGE=golang.org/x/vuln/cmd/govulncheck .PHONY: tools -tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(SEMCONVGEN) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) +tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(SEMCONVGEN) $(VERIFYREADMES) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) # Virtualized python tools via docker @@ -213,11 +216,8 @@ go-mod-tidy/%: crosslink && cd $(DIR) \ && $(GO) mod tidy -compat=1.21 -.PHONY: lint-modules -lint-modules: go-mod-tidy - .PHONY: lint -lint: misspell lint-modules golangci-lint govulncheck +lint: misspell go-mod-tidy golangci-lint govulncheck .PHONY: vanity-import-check vanity-import-check: $(PORTO) @@ -293,7 +293,7 @@ semconv-generate: $(SEMCONVKIT) --param tag=$(TAG) \ go \ /home/weaver/target - $(SEMCONVKIT) -output "$(SEMCONVPKG)/$(TAG)" -tag "$(TAG)" + $(SEMCONVKIT) -semconv "$(SEMCONVPKG)" -tag "$(TAG)" .PHONY: gorelease gorelease: $(OTEL_GO_MOD_DIRS:%=gorelease/%) @@ -319,10 +319,11 @@ add-tags: verify-mods @[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) $(MULTIMOD) tag -m ${MODSET} -c ${COMMIT} +MARKDOWNIMAGE := $(shell awk '$$4=="markdown" {print $$2}' $(DEPENDENCIES_DOCKERFILE)) .PHONY: lint-markdown lint-markdown: - docker run -v "$(CURDIR):$(WORKDIR)" avtodev/markdown-lint:v1 -c $(WORKDIR)/.markdownlint.yaml $(WORKDIR)/**/*.md + docker run --rm -u $(DOCKER_USER) -v "$(CURDIR):$(WORKDIR)" $(MARKDOWNIMAGE) -c $(WORKDIR)/.markdownlint.yaml $(WORKDIR)/**/*.md .PHONY: verify-readmes -verify-readmes: - ./verify_readmes.sh +verify-readmes: $(VERIFYREADMES) + $(VERIFYREADMES) diff --git a/vendor/go.opentelemetry.io/otel/README.md b/vendor/go.opentelemetry.io/otel/README.md index 8421cd7e5..5fa1b75c6 100644 --- a/vendor/go.opentelemetry.io/otel/README.md +++ b/vendor/go.opentelemetry.io/otel/README.md @@ -6,6 +6,8 @@ [![Go Report Card](https://goreportcard.com/badge/go.opentelemetry.io/otel)](https://goreportcard.com/report/go.opentelemetry.io/otel) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/open-telemetry/opentelemetry-go/badge)](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/opentelemetry-go) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9996/badge)](https://www.bestpractices.dev/projects/9996) +[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/opentelemetry-go.svg)](https://issues.oss-fuzz.com/issues?q=project:opentelemetry-go) +[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-go.svg?type=shield&issueType=license)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-go?ref=badge_shield&issueType=license) [![Slack](https://img.shields.io/badge/slack-@cncf/otel--go-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C01NPAXACKT) OpenTelemetry-Go is the [Go](https://golang.org/) implementation of [OpenTelemetry](https://opentelemetry.io/). @@ -53,25 +55,18 @@ Currently, this project supports the following environments. |----------|------------|--------------| | Ubuntu | 1.24 | amd64 | | Ubuntu | 1.23 | amd64 | -| Ubuntu | 1.22 | amd64 | | Ubuntu | 1.24 | 386 | | Ubuntu | 1.23 | 386 | -| Ubuntu | 1.22 | 386 | | Ubuntu | 1.24 | arm64 | | Ubuntu | 1.23 | arm64 | -| Ubuntu | 1.22 | arm64 | | macOS 13 | 1.24 | amd64 | | macOS 13 | 1.23 | amd64 | -| macOS 13 | 1.22 | amd64 | | macOS | 1.24 | arm64 | | macOS | 1.23 | arm64 | -| macOS | 1.22 | arm64 | | Windows | 1.24 | amd64 | | Windows | 1.23 | amd64 | -| Windows | 1.22 | amd64 | | Windows | 1.24 | 386 | | Windows | 1.23 | 386 | -| Windows | 1.22 | 386 | While this project should work for other systems, no compatibility guarantees are made for those systems currently. diff --git a/vendor/go.opentelemetry.io/otel/RELEASING.md b/vendor/go.opentelemetry.io/otel/RELEASING.md index 1e13ae54f..1ddcdef03 100644 --- a/vendor/go.opentelemetry.io/otel/RELEASING.md +++ b/vendor/go.opentelemetry.io/otel/RELEASING.md @@ -1,5 +1,9 @@ # Release Process +## Create a `Version Release` issue + +Create a `Version Release` issue to track the release process. + ## Semantic Convention Generation New versions of the [OpenTelemetry Semantic Conventions] mean new versions of the `semconv` package need to be generated. @@ -108,6 +112,29 @@ It is critical you make sure the version you push upstream is correct. Finally create a Release for the new `` on GitHub. The release body should include all the release notes from the Changelog for this release. +### Sign the Release Artifact + +To ensure we comply with CNCF best practices, we need to sign the release artifact. +The tarball attached to the GitHub release needs to be signed with your GPG key. + +Follow [these steps] to sign the release artifact and upload it to GitHub. +You can use [this script] to verify the contents of the tarball before signing it. + +Be sure to use the correct GPG key when signing the release artifact. + +```terminal +gpg --local-user --armor --detach-sign opentelemetry-go-.tar.gz +``` + +You can verify the signature with: + +```terminal +gpg --verify opentelemetry-go-.tar.gz.asc opentelemetry-go-.tar.gz +``` + +[these steps]: https://wiki.debian.org/Creating%20signed%20GitHub%20releases +[this script]: https://github.com/MrAlias/attest-sh + ## Post-Release ### Contrib Repository @@ -123,6 +150,16 @@ Importantly, bump any package versions referenced to be the latest one you just [Go instrumentation documentation]: https://opentelemetry.io/docs/languages/go/ [content/en/docs/languages/go]: https://github.com/open-telemetry/opentelemetry.io/tree/main/content/en/docs/languages/go +### Close the milestone + +Once a release is made, ensure all issues that were fixed and PRs that were merged as part of this release are added to the corresponding milestone. +This helps track what changes were included in each release. + +- To find issues that haven't been included in a milestone, use this [GitHub search query](https://github.com/open-telemetry/opentelemetry-go/issues?q=is%3Aissue%20no%3Amilestone%20is%3Aclosed%20sort%3Aupdated-desc%20reason%3Acompleted%20-label%3AStale%20linked%3Apr) +- To find merged PRs that haven't been included in a milestone, use this [GitHub search query](https://github.com/open-telemetry/opentelemetry-go/pulls?q=is%3Apr+no%3Amilestone+is%3Amerged). + +Once all related issues and PRs have been added to the milestone, close the milestone. + ### Demo Repository Bump the dependencies in the following Go services: @@ -130,3 +167,7 @@ Bump the dependencies in the following Go services: - [`accounting`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/accounting) - [`checkoutservice`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/checkout) - [`productcatalogservice`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/product-catalog) + +### Close the `Version Release` issue + +Once the todo list in the `Version Release` issue is complete, close the issue. diff --git a/vendor/go.opentelemetry.io/otel/attribute/filter.go b/vendor/go.opentelemetry.io/otel/attribute/filter.go index be9cd922d..3eeaa5d44 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/filter.go +++ b/vendor/go.opentelemetry.io/otel/attribute/filter.go @@ -19,7 +19,7 @@ func NewAllowKeysFilter(keys ...Key) Filter { return func(kv KeyValue) bool { return false } } - allowed := make(map[Key]struct{}) + allowed := make(map[Key]struct{}, len(keys)) for _, k := range keys { allowed[k] = struct{}{} } @@ -38,7 +38,7 @@ func NewDenyKeysFilter(keys ...Key) Filter { return func(kv KeyValue) bool { return true } } - forbid := make(map[Key]struct{}) + forbid := make(map[Key]struct{}, len(keys)) for _, k := range keys { forbid[k] = struct{}{} } diff --git a/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go similarity index 97% rename from vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go rename to vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go index 691d96c75..b76d2bbfd 100644 --- a/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go +++ b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go @@ -5,7 +5,7 @@ Package attribute provide several helper functions for some commonly used logic of processing attributes. */ -package attribute // import "go.opentelemetry.io/otel/internal/attribute" +package attribute // import "go.opentelemetry.io/otel/attribute/internal" import ( "reflect" diff --git a/vendor/go.opentelemetry.io/otel/attribute/rawhelpers.go b/vendor/go.opentelemetry.io/otel/attribute/rawhelpers.go new file mode 100644 index 000000000..5791c6e7a --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/attribute/rawhelpers.go @@ -0,0 +1,37 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attribute // import "go.opentelemetry.io/otel/attribute" + +import ( + "math" +) + +func boolToRaw(b bool) uint64 { // nolint:revive // b is not a control flag. + if b { + return 1 + } + return 0 +} + +func rawToBool(r uint64) bool { + return r != 0 +} + +func int64ToRaw(i int64) uint64 { + // Assumes original was a valid int64 (overflow not checked). + return uint64(i) // nolint: gosec +} + +func rawToInt64(r uint64) int64 { + // Assumes original was a valid int64 (overflow not checked). + return int64(r) // nolint: gosec +} + +func float64ToRaw(f float64) uint64 { + return math.Float64bits(f) +} + +func rawToFloat64(r uint64) float64 { + return math.Float64frombits(r) +} diff --git a/vendor/go.opentelemetry.io/otel/attribute/value.go b/vendor/go.opentelemetry.io/otel/attribute/value.go index 9ea0ecbbd..817eecacf 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/value.go +++ b/vendor/go.opentelemetry.io/otel/attribute/value.go @@ -9,8 +9,7 @@ import ( "reflect" "strconv" - "go.opentelemetry.io/otel/internal" - "go.opentelemetry.io/otel/internal/attribute" + attribute "go.opentelemetry.io/otel/attribute/internal" ) //go:generate stringer -type=Type @@ -51,7 +50,7 @@ const ( func BoolValue(v bool) Value { return Value{ vtype: BOOL, - numeric: internal.BoolToRaw(v), + numeric: boolToRaw(v), } } @@ -82,7 +81,7 @@ func IntSliceValue(v []int) Value { func Int64Value(v int64) Value { return Value{ vtype: INT64, - numeric: internal.Int64ToRaw(v), + numeric: int64ToRaw(v), } } @@ -95,7 +94,7 @@ func Int64SliceValue(v []int64) Value { func Float64Value(v float64) Value { return Value{ vtype: FLOAT64, - numeric: internal.Float64ToRaw(v), + numeric: float64ToRaw(v), } } @@ -125,7 +124,7 @@ func (v Value) Type() Type { // AsBool returns the bool value. Make sure that the Value's type is // BOOL. func (v Value) AsBool() bool { - return internal.RawToBool(v.numeric) + return rawToBool(v.numeric) } // AsBoolSlice returns the []bool value. Make sure that the Value's type is @@ -144,7 +143,7 @@ func (v Value) asBoolSlice() []bool { // AsInt64 returns the int64 value. Make sure that the Value's type is // INT64. func (v Value) AsInt64() int64 { - return internal.RawToInt64(v.numeric) + return rawToInt64(v.numeric) } // AsInt64Slice returns the []int64 value. Make sure that the Value's type is @@ -163,7 +162,7 @@ func (v Value) asInt64Slice() []int64 { // AsFloat64 returns the float64 value. Make sure that the Value's // type is FLOAT64. func (v Value) AsFloat64() float64 { - return internal.RawToFloat64(v.numeric) + return rawToFloat64(v.numeric) } // AsFloat64Slice returns the []float64 value. Make sure that the Value's type is diff --git a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile index e4c4a753c..935bd4876 100644 --- a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile +++ b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile @@ -1,3 +1,4 @@ # This is a renovate-friendly source of Docker images. -FROM python:3.13.2-slim-bullseye@sha256:31b581c8218e1f3c58672481b3b7dba8e898852866b408c6a984c22832523935 AS python -FROM otel/weaver:v0.13.2@sha256:ae7346b992e477f629ea327e0979e8a416a97f7956ab1f7e95ac1f44edf1a893 AS weaver +FROM python:3.13.5-slim-bullseye@sha256:5b9fc0d8ef79cfb5f300e61cb516e0c668067bbf77646762c38c94107e230dbc AS python +FROM otel/weaver:v0.15.2@sha256:b13acea09f721774daba36344861f689ac4bb8d6ecd94c4600b4d590c8fb34b9 AS weaver +FROM avtodev/markdown-lint:v1@sha256:6aeedc2f49138ce7a1cd0adffc1b1c0321b841dc2102408967d9301c031949ee AS markdown diff --git a/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh b/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh deleted file mode 100644 index 93e80ea30..000000000 --- a/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The OpenTelemetry Authors -# SPDX-License-Identifier: Apache-2.0 - -set -euo pipefail - -top_dir='.' -if [[ $# -gt 0 ]]; then - top_dir="${1}" -fi - -p=$(pwd) -mod_dirs=() - -# Note `mapfile` does not exist in older bash versions: -# https://stackoverflow.com/questions/41475261/need-alternative-to-readarray-mapfile-for-script-on-older-version-of-bash - -while IFS= read -r line; do - mod_dirs+=("$line") -done < <(find "${top_dir}" -type f -name 'go.mod' -exec dirname {} \; | sort) - -for mod_dir in "${mod_dirs[@]}"; do - cd "${mod_dir}" - - while IFS= read -r line; do - echo ".${line#${p}}" - done < <(go list --find -f '{{.Name}}|{{.Dir}}' ./... | grep '^main|' | cut -f 2- -d '|') - cd "${p}" -done diff --git a/vendor/go.opentelemetry.io/otel/internal/gen.go b/vendor/go.opentelemetry.io/otel/internal/gen.go deleted file mode 100644 index 4259f0320..000000000 --- a/vendor/go.opentelemetry.io/otel/internal/gen.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal // import "go.opentelemetry.io/otel/internal" - -//go:generate gotmpl --body=./shared/matchers/expectation.go.tmpl "--data={}" --out=matchers/expectation.go -//go:generate gotmpl --body=./shared/matchers/expecter.go.tmpl "--data={}" --out=matchers/expecter.go -//go:generate gotmpl --body=./shared/matchers/temporal_matcher.go.tmpl "--data={}" --out=matchers/temporal_matcher.go - -//go:generate gotmpl --body=./shared/internaltest/alignment.go.tmpl "--data={}" --out=internaltest/alignment.go -//go:generate gotmpl --body=./shared/internaltest/env.go.tmpl "--data={}" --out=internaltest/env.go -//go:generate gotmpl --body=./shared/internaltest/env_test.go.tmpl "--data={}" --out=internaltest/env_test.go -//go:generate gotmpl --body=./shared/internaltest/errors.go.tmpl "--data={}" --out=internaltest/errors.go -//go:generate gotmpl --body=./shared/internaltest/harness.go.tmpl "--data={\"matchersImportPath\": \"go.opentelemetry.io/otel/internal/matchers\"}" --out=internaltest/harness.go -//go:generate gotmpl --body=./shared/internaltest/text_map_carrier.go.tmpl "--data={}" --out=internaltest/text_map_carrier.go -//go:generate gotmpl --body=./shared/internaltest/text_map_carrier_test.go.tmpl "--data={}" --out=internaltest/text_map_carrier_test.go -//go:generate gotmpl --body=./shared/internaltest/text_map_propagator.go.tmpl "--data={}" --out=internaltest/text_map_propagator.go -//go:generate gotmpl --body=./shared/internaltest/text_map_propagator_test.go.tmpl "--data={}" --out=internaltest/text_map_propagator_test.go diff --git a/vendor/go.opentelemetry.io/otel/internal/global/handler.go b/vendor/go.opentelemetry.io/otel/internal/global/handler.go index c657ff8e7..2e47b2964 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/handler.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/handler.go @@ -1,6 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package global provides the OpenTelemetry global API. package global // import "go.opentelemetry.io/otel/internal/global" import ( diff --git a/vendor/go.opentelemetry.io/otel/internal/global/meter.go b/vendor/go.opentelemetry.io/otel/internal/global/meter.go index a6acd8dca..adb37b5b0 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/meter.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/meter.go @@ -169,7 +169,10 @@ func (m *meter) Int64Counter(name string, options ...metric.Int64CounterOption) return i, nil } -func (m *meter) Int64UpDownCounter(name string, options ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { +func (m *meter) Int64UpDownCounter( + name string, + options ...metric.Int64UpDownCounterOption, +) (metric.Int64UpDownCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -238,7 +241,10 @@ func (m *meter) Int64Gauge(name string, options ...metric.Int64GaugeOption) (met return i, nil } -func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { +func (m *meter) Int64ObservableCounter( + name string, + options ...metric.Int64ObservableCounterOption, +) (metric.Int64ObservableCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -261,7 +267,10 @@ func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64Obser return i, nil } -func (m *meter) Int64ObservableUpDownCounter(name string, options ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { +func (m *meter) Int64ObservableUpDownCounter( + name string, + options ...metric.Int64ObservableUpDownCounterOption, +) (metric.Int64ObservableUpDownCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -284,7 +293,10 @@ func (m *meter) Int64ObservableUpDownCounter(name string, options ...metric.Int6 return i, nil } -func (m *meter) Int64ObservableGauge(name string, options ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { +func (m *meter) Int64ObservableGauge( + name string, + options ...metric.Int64ObservableGaugeOption, +) (metric.Int64ObservableGauge, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -330,7 +342,10 @@ func (m *meter) Float64Counter(name string, options ...metric.Float64CounterOpti return i, nil } -func (m *meter) Float64UpDownCounter(name string, options ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { +func (m *meter) Float64UpDownCounter( + name string, + options ...metric.Float64UpDownCounterOption, +) (metric.Float64UpDownCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -353,7 +368,10 @@ func (m *meter) Float64UpDownCounter(name string, options ...metric.Float64UpDow return i, nil } -func (m *meter) Float64Histogram(name string, options ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { +func (m *meter) Float64Histogram( + name string, + options ...metric.Float64HistogramOption, +) (metric.Float64Histogram, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -399,7 +417,10 @@ func (m *meter) Float64Gauge(name string, options ...metric.Float64GaugeOption) return i, nil } -func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { +func (m *meter) Float64ObservableCounter( + name string, + options ...metric.Float64ObservableCounterOption, +) (metric.Float64ObservableCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -422,7 +443,10 @@ func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64O return i, nil } -func (m *meter) Float64ObservableUpDownCounter(name string, options ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { +func (m *meter) Float64ObservableUpDownCounter( + name string, + options ...metric.Float64ObservableUpDownCounterOption, +) (metric.Float64ObservableUpDownCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() @@ -445,7 +469,10 @@ func (m *meter) Float64ObservableUpDownCounter(name string, options ...metric.Fl return i, nil } -func (m *meter) Float64ObservableGauge(name string, options ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { +func (m *meter) Float64ObservableGauge( + name string, + options ...metric.Float64ObservableGaugeOption, +) (metric.Float64ObservableGauge, error) { m.mtx.Lock() defer m.mtx.Unlock() diff --git a/vendor/go.opentelemetry.io/otel/internal/global/trace.go b/vendor/go.opentelemetry.io/otel/internal/global/trace.go index 8982aa0dc..49e4ac4fa 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/trace.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/trace.go @@ -158,7 +158,18 @@ func (t *tracer) Start(ctx context.Context, name string, opts ...trace.SpanStart // a nonRecordingSpan by default. var autoInstEnabled = new(bool) -func (t *tracer) newSpan(ctx context.Context, autoSpan *bool, name string, opts []trace.SpanStartOption) (context.Context, trace.Span) { +// newSpan is called by tracer.Start so auto-instrumentation can attach an eBPF +// uprobe to this code. +// +// "noinline" pragma prevents the method from ever being inlined. +// +//go:noinline +func (t *tracer) newSpan( + ctx context.Context, + autoSpan *bool, + name string, + opts []trace.SpanStartOption, +) (context.Context, trace.Span) { // autoInstEnabled is passed to newSpan via the autoSpan parameter. This is // so the auto-instrumentation can define a uprobe for (*t).newSpan and be // provided with the address of the bool autoInstEnabled points to. It diff --git a/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go b/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go deleted file mode 100644 index b2fe3e41d..000000000 --- a/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal // import "go.opentelemetry.io/otel/internal" - -import ( - "math" - "unsafe" -) - -func BoolToRaw(b bool) uint64 { // nolint:revive // b is not a control flag. - if b { - return 1 - } - return 0 -} - -func RawToBool(r uint64) bool { - return r != 0 -} - -func Int64ToRaw(i int64) uint64 { - // Assumes original was a valid int64 (overflow not checked). - return uint64(i) // nolint: gosec -} - -func RawToInt64(r uint64) int64 { - // Assumes original was a valid int64 (overflow not checked). - return int64(r) // nolint: gosec -} - -func Float64ToRaw(f float64) uint64 { - return math.Float64bits(f) -} - -func RawToFloat64(r uint64) float64 { - return math.Float64frombits(r) -} - -func RawPtrToFloat64Ptr(r *uint64) *float64 { - // Assumes original was a valid *float64 (overflow not checked). - return (*float64)(unsafe.Pointer(r)) // nolint: gosec -} - -func RawPtrToInt64Ptr(r *uint64) *int64 { - // Assumes original was a valid *int64 (overflow not checked). - return (*int64)(unsafe.Pointer(r)) // nolint: gosec -} diff --git a/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go b/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go index f8435d8f2..b7fc973a6 100644 --- a/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go +++ b/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go @@ -106,7 +106,9 @@ type Float64ObservableUpDownCounterConfig struct { // NewFloat64ObservableUpDownCounterConfig returns a new // [Float64ObservableUpDownCounterConfig] with all opts applied. -func NewFloat64ObservableUpDownCounterConfig(opts ...Float64ObservableUpDownCounterOption) Float64ObservableUpDownCounterConfig { +func NewFloat64ObservableUpDownCounterConfig( + opts ...Float64ObservableUpDownCounterOption, +) Float64ObservableUpDownCounterConfig { var config Float64ObservableUpDownCounterConfig for _, o := range opts { config = o.applyFloat64ObservableUpDownCounter(config) @@ -239,12 +241,16 @@ type float64CallbackOpt struct { cback Float64Callback } -func (o float64CallbackOpt) applyFloat64ObservableCounter(cfg Float64ObservableCounterConfig) Float64ObservableCounterConfig { +func (o float64CallbackOpt) applyFloat64ObservableCounter( + cfg Float64ObservableCounterConfig, +) Float64ObservableCounterConfig { cfg.callbacks = append(cfg.callbacks, o.cback) return cfg } -func (o float64CallbackOpt) applyFloat64ObservableUpDownCounter(cfg Float64ObservableUpDownCounterConfig) Float64ObservableUpDownCounterConfig { +func (o float64CallbackOpt) applyFloat64ObservableUpDownCounter( + cfg Float64ObservableUpDownCounterConfig, +) Float64ObservableUpDownCounterConfig { cfg.callbacks = append(cfg.callbacks, o.cback) return cfg } diff --git a/vendor/go.opentelemetry.io/otel/metric/asyncint64.go b/vendor/go.opentelemetry.io/otel/metric/asyncint64.go index e079aaef1..4404b71a2 100644 --- a/vendor/go.opentelemetry.io/otel/metric/asyncint64.go +++ b/vendor/go.opentelemetry.io/otel/metric/asyncint64.go @@ -105,7 +105,9 @@ type Int64ObservableUpDownCounterConfig struct { // NewInt64ObservableUpDownCounterConfig returns a new // [Int64ObservableUpDownCounterConfig] with all opts applied. -func NewInt64ObservableUpDownCounterConfig(opts ...Int64ObservableUpDownCounterOption) Int64ObservableUpDownCounterConfig { +func NewInt64ObservableUpDownCounterConfig( + opts ...Int64ObservableUpDownCounterOption, +) Int64ObservableUpDownCounterConfig { var config Int64ObservableUpDownCounterConfig for _, o := range opts { config = o.applyInt64ObservableUpDownCounter(config) @@ -242,7 +244,9 @@ func (o int64CallbackOpt) applyInt64ObservableCounter(cfg Int64ObservableCounter return cfg } -func (o int64CallbackOpt) applyInt64ObservableUpDownCounter(cfg Int64ObservableUpDownCounterConfig) Int64ObservableUpDownCounterConfig { +func (o int64CallbackOpt) applyInt64ObservableUpDownCounter( + cfg Int64ObservableUpDownCounterConfig, +) Int64ObservableUpDownCounterConfig { cfg.callbacks = append(cfg.callbacks, o.cback) return cfg } diff --git a/vendor/go.opentelemetry.io/otel/metric/instrument.go b/vendor/go.opentelemetry.io/otel/metric/instrument.go index a535782e1..9f48d5f11 100644 --- a/vendor/go.opentelemetry.io/otel/metric/instrument.go +++ b/vendor/go.opentelemetry.io/otel/metric/instrument.go @@ -63,7 +63,9 @@ func (o descOpt) applyFloat64ObservableCounter(c Float64ObservableCounterConfig) return c } -func (o descOpt) applyFloat64ObservableUpDownCounter(c Float64ObservableUpDownCounterConfig) Float64ObservableUpDownCounterConfig { +func (o descOpt) applyFloat64ObservableUpDownCounter( + c Float64ObservableUpDownCounterConfig, +) Float64ObservableUpDownCounterConfig { c.description = string(o) return c } @@ -98,7 +100,9 @@ func (o descOpt) applyInt64ObservableCounter(c Int64ObservableCounterConfig) Int return c } -func (o descOpt) applyInt64ObservableUpDownCounter(c Int64ObservableUpDownCounterConfig) Int64ObservableUpDownCounterConfig { +func (o descOpt) applyInt64ObservableUpDownCounter( + c Int64ObservableUpDownCounterConfig, +) Int64ObservableUpDownCounterConfig { c.description = string(o) return c } @@ -138,7 +142,9 @@ func (o unitOpt) applyFloat64ObservableCounter(c Float64ObservableCounterConfig) return c } -func (o unitOpt) applyFloat64ObservableUpDownCounter(c Float64ObservableUpDownCounterConfig) Float64ObservableUpDownCounterConfig { +func (o unitOpt) applyFloat64ObservableUpDownCounter( + c Float64ObservableUpDownCounterConfig, +) Float64ObservableUpDownCounterConfig { c.unit = string(o) return c } @@ -173,7 +179,9 @@ func (o unitOpt) applyInt64ObservableCounter(c Int64ObservableCounterConfig) Int return c } -func (o unitOpt) applyInt64ObservableUpDownCounter(c Int64ObservableUpDownCounterConfig) Int64ObservableUpDownCounterConfig { +func (o unitOpt) applyInt64ObservableUpDownCounter( + c Int64ObservableUpDownCounterConfig, +) Int64ObservableUpDownCounterConfig { c.unit = string(o) return c } diff --git a/vendor/go.opentelemetry.io/otel/metric/meter.go b/vendor/go.opentelemetry.io/otel/metric/meter.go index 14e08c24a..fdd2a7011 100644 --- a/vendor/go.opentelemetry.io/otel/metric/meter.go +++ b/vendor/go.opentelemetry.io/otel/metric/meter.go @@ -110,7 +110,10 @@ type Meter interface { // The name needs to conform to the OpenTelemetry instrument name syntax. // See the Instrument Name section of the package documentation for more // information. - Int64ObservableUpDownCounter(name string, options ...Int64ObservableUpDownCounterOption) (Int64ObservableUpDownCounter, error) + Int64ObservableUpDownCounter( + name string, + options ...Int64ObservableUpDownCounterOption, + ) (Int64ObservableUpDownCounter, error) // Int64ObservableGauge returns a new Int64ObservableGauge instrument // identified by name and configured with options. The instrument is used @@ -194,7 +197,10 @@ type Meter interface { // The name needs to conform to the OpenTelemetry instrument name syntax. // See the Instrument Name section of the package documentation for more // information. - Float64ObservableUpDownCounter(name string, options ...Float64ObservableUpDownCounterOption) (Float64ObservableUpDownCounter, error) + Float64ObservableUpDownCounter( + name string, + options ...Float64ObservableUpDownCounterOption, + ) (Float64ObservableUpDownCounter, error) // Float64ObservableGauge returns a new Float64ObservableGauge instrument // identified by name and configured with options. The instrument is used diff --git a/vendor/go.opentelemetry.io/otel/metric/noop/noop.go b/vendor/go.opentelemetry.io/otel/metric/noop/noop.go index ca6fcbdc0..9afb69e58 100644 --- a/vendor/go.opentelemetry.io/otel/metric/noop/noop.go +++ b/vendor/go.opentelemetry.io/otel/metric/noop/noop.go @@ -86,13 +86,19 @@ func (Meter) Int64Gauge(string, ...metric.Int64GaugeOption) (metric.Int64Gauge, // Int64ObservableCounter returns an ObservableCounter used to record int64 // measurements that produces no telemetry. -func (Meter) Int64ObservableCounter(string, ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { +func (Meter) Int64ObservableCounter( + string, + ...metric.Int64ObservableCounterOption, +) (metric.Int64ObservableCounter, error) { return Int64ObservableCounter{}, nil } // Int64ObservableUpDownCounter returns an ObservableUpDownCounter used to // record int64 measurements that produces no telemetry. -func (Meter) Int64ObservableUpDownCounter(string, ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { +func (Meter) Int64ObservableUpDownCounter( + string, + ...metric.Int64ObservableUpDownCounterOption, +) (metric.Int64ObservableUpDownCounter, error) { return Int64ObservableUpDownCounter{}, nil } @@ -128,19 +134,28 @@ func (Meter) Float64Gauge(string, ...metric.Float64GaugeOption) (metric.Float64G // Float64ObservableCounter returns an ObservableCounter used to record int64 // measurements that produces no telemetry. -func (Meter) Float64ObservableCounter(string, ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { +func (Meter) Float64ObservableCounter( + string, + ...metric.Float64ObservableCounterOption, +) (metric.Float64ObservableCounter, error) { return Float64ObservableCounter{}, nil } // Float64ObservableUpDownCounter returns an ObservableUpDownCounter used to // record int64 measurements that produces no telemetry. -func (Meter) Float64ObservableUpDownCounter(string, ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { +func (Meter) Float64ObservableUpDownCounter( + string, + ...metric.Float64ObservableUpDownCounterOption, +) (metric.Float64ObservableUpDownCounter, error) { return Float64ObservableUpDownCounter{}, nil } // Float64ObservableGauge returns an ObservableGauge used to record int64 // measurements that produces no telemetry. -func (Meter) Float64ObservableGauge(string, ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { +func (Meter) Float64ObservableGauge( + string, + ...metric.Float64ObservableGaugeOption, +) (metric.Float64ObservableGauge, error) { return Float64ObservableGauge{}, nil } diff --git a/vendor/go.opentelemetry.io/otel/propagation/baggage.go b/vendor/go.opentelemetry.io/otel/propagation/baggage.go index 552263ba7..ebda5026d 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/baggage.go +++ b/vendor/go.opentelemetry.io/otel/propagation/baggage.go @@ -28,7 +28,21 @@ func (b Baggage) Inject(ctx context.Context, carrier TextMapCarrier) { } // Extract returns a copy of parent with the baggage from the carrier added. +// If carrier implements [ValuesGetter] (e.g. [HeaderCarrier]), Values is invoked +// for multiple values extraction. Otherwise, Get is called. func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context { + if multiCarrier, ok := carrier.(ValuesGetter); ok { + return extractMultiBaggage(parent, multiCarrier) + } + return extractSingleBaggage(parent, carrier) +} + +// Fields returns the keys who's values are set with Inject. +func (b Baggage) Fields() []string { + return []string{baggageHeader} +} + +func extractSingleBaggage(parent context.Context, carrier TextMapCarrier) context.Context { bStr := carrier.Get(baggageHeader) if bStr == "" { return parent @@ -41,7 +55,23 @@ func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context return baggage.ContextWithBaggage(parent, bag) } -// Fields returns the keys who's values are set with Inject. -func (b Baggage) Fields() []string { - return []string{baggageHeader} +func extractMultiBaggage(parent context.Context, carrier ValuesGetter) context.Context { + bVals := carrier.Values(baggageHeader) + if len(bVals) == 0 { + return parent + } + var members []baggage.Member + for _, bStr := range bVals { + currBag, err := baggage.Parse(bStr) + if err != nil { + continue + } + members = append(members, currBag.Members()...) + } + + b, err := baggage.New(members...) + if err != nil || b.Len() == 0 { + return parent + } + return baggage.ContextWithBaggage(parent, b) } diff --git a/vendor/go.opentelemetry.io/otel/propagation/propagation.go b/vendor/go.opentelemetry.io/otel/propagation/propagation.go index 8c8286aab..5c8c26ea2 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/propagation.go +++ b/vendor/go.opentelemetry.io/otel/propagation/propagation.go @@ -9,6 +9,7 @@ import ( ) // TextMapCarrier is the storage medium used by a TextMapPropagator. +// See ValuesGetter for how a TextMapCarrier can get multiple values for a key. type TextMapCarrier interface { // DO NOT CHANGE: any modification will not be backwards compatible and // must never be done outside of a new major release. @@ -29,6 +30,18 @@ type TextMapCarrier interface { // must never be done outside of a new major release. } +// ValuesGetter can return multiple values for a single key, +// with contrast to TextMapCarrier.Get which returns a single value. +type ValuesGetter interface { + // DO NOT CHANGE: any modification will not be backwards compatible and + // must never be done outside of a new major release. + + // Values returns all values associated with the passed key. + Values(key string) []string + // DO NOT CHANGE: any modification will not be backwards compatible and + // must never be done outside of a new major release. +} + // MapCarrier is a TextMapCarrier that uses a map held in memory as a storage // medium for propagated key-value pairs. type MapCarrier map[string]string @@ -55,14 +68,25 @@ func (c MapCarrier) Keys() []string { return keys } -// HeaderCarrier adapts http.Header to satisfy the TextMapCarrier interface. +// HeaderCarrier adapts http.Header to satisfy the TextMapCarrier and ValuesGetter interfaces. type HeaderCarrier http.Header -// Get returns the value associated with the passed key. +// Compile time check that HeaderCarrier implements ValuesGetter. +var _ TextMapCarrier = HeaderCarrier{} + +// Compile time check that HeaderCarrier implements TextMapCarrier. +var _ ValuesGetter = HeaderCarrier{} + +// Get returns the first value associated with the passed key. func (hc HeaderCarrier) Get(key string) string { return http.Header(hc).Get(key) } +// Values returns all values associated with the passed key. +func (hc HeaderCarrier) Values(key string) []string { + return http.Header(hc).Values(key) +} + // Set stores the key-value pair. func (hc HeaderCarrier) Set(key string, value string) { http.Header(hc).Set(key, value) @@ -89,6 +113,8 @@ type TextMapPropagator interface { // must never be done outside of a new major release. // Extract reads cross-cutting concerns from the carrier into a Context. + // Implementations may check if the carrier implements ValuesGetter, + // to support extraction of multiple values per key. Extract(ctx context.Context, carrier TextMapCarrier) context.Context // DO NOT CHANGE: any modification will not be backwards compatible and // must never be done outside of a new major release. diff --git a/vendor/go.opentelemetry.io/otel/renovate.json b/vendor/go.opentelemetry.io/otel/renovate.json index a6fa353f9..fa5acf2d3 100644 --- a/vendor/go.opentelemetry.io/otel/renovate.json +++ b/vendor/go.opentelemetry.io/otel/renovate.json @@ -1,7 +1,8 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:best-practices" + "config:best-practices", + "helpers:pinGitHubActionDigestsToSemver" ], "ignorePaths": [], "labels": ["Skip Changelog", "dependencies"], @@ -25,6 +26,10 @@ { "matchPackageNames": ["golang.org/x/**"], "groupName": "golang.org/x" + }, + { + "matchPackageNames": ["go.opentelemetry.io/otel/sdk/log/logtest"], + "enabled": false } ] } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go index 0335b8ae4..549d3bd5f 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go @@ -18,7 +18,10 @@ type ExemplarReservoirProviderSelector func(Aggregation) exemplar.ReservoirProvi // reservoirFunc returns the appropriately configured exemplar reservoir // creation func based on the passed InstrumentKind and filter configuration. -func reservoirFunc[N int64 | float64](provider exemplar.ReservoirProvider, filter exemplar.Filter) func(attribute.Set) aggregate.FilteredExemplarReservoir[N] { +func reservoirFunc[N int64 | float64]( + provider exemplar.ReservoirProvider, + filter exemplar.Filter, +) func(attribute.Set) aggregate.FilteredExemplarReservoir[N] { return func(attrs attribute.Set) aggregate.FilteredExemplarReservoir[N] { return aggregate.NewFilteredExemplarReservoir[N](filter, provider(attrs)) } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go index d4aab0aad..1fb1e0095 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go @@ -6,7 +6,7 @@ package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar" import ( "context" "math" - "math/rand" + "math/rand/v2" "time" "go.opentelemetry.io/otel/attribute" @@ -44,18 +44,11 @@ type FixedSizeReservoir struct { // w is the largest random number in a distribution that is used to compute // the next next. w float64 - - // rng is used to make sampling decisions. - // - // Do not use crypto/rand. There is no reason for the decrease in performance - // given this is not a security sensitive decision. - rng *rand.Rand } func newFixedSizeReservoir(s *storage) *FixedSizeReservoir { r := &FixedSizeReservoir{ storage: s, - rng: rand.New(rand.NewSource(time.Now().UnixNano())), } r.reset() return r @@ -64,26 +57,15 @@ func newFixedSizeReservoir(s *storage) *FixedSizeReservoir { // randomFloat64 returns, as a float64, a uniform pseudo-random number in the // open interval (0.0,1.0). func (r *FixedSizeReservoir) randomFloat64() float64 { - // TODO: This does not return a uniform number. rng.Float64 returns a - // uniformly random int in [0,2^53) that is divided by 2^53. Meaning it - // returns multiples of 2^-53, and not all floating point numbers between 0 - // and 1 (i.e. for values less than 2^-4 the 4 last bits of the significand - // are always going to be 0). - // - // An alternative algorithm should be considered that will actually return - // a uniform number in the interval (0,1). For example, since the default - // rand source provides a uniform distribution for Int63, this can be - // converted following the prototypical code of Mersenne Twister 64 (Takuji - // Nishimura and Makoto Matsumoto: - // http://www.math.sci.hiroshima-u.ac.jp/m-mat/MT/VERSIONS/C-LANG/mt19937-64.c) + // TODO: Use an algorithm that avoids rejection sampling. For example: // - // (float64(rng.Int63()>>11) + 0.5) * (1.0 / 4503599627370496.0) - // - // There are likely many other methods to explore here as well. - - f := r.rng.Float64() + // const precision = 1 << 53 // 2^53 + // // Generate an integer in [1, 2^53 - 1] + // v := rand.Uint64() % (precision - 1) + 1 + // return float64(v) / float64(precision) + f := rand.Float64() for f == 0 { - f = r.rng.Float64() + f = rand.Float64() } return f } @@ -146,7 +128,7 @@ func (r *FixedSizeReservoir) Offer(ctx context.Context, t time.Time, n Value, a } else { if r.count == r.next { // Overwrite a random existing measurement with the one offered. - idx := int(r.rng.Int63n(int64(cap(r.store)))) + idx := int(rand.Int64N(int64(cap(r.store)))) r.store[idx] = newMeasurement(ctx, t, n, a) r.advance() } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go index c33e1a28c..18891ed5b 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go @@ -28,7 +28,7 @@ type InstrumentKind uint8 const ( // instrumentKindUndefined is an undefined instrument kind, it should not // be used by any initialized type. - instrumentKindUndefined InstrumentKind = 0 // nolint:deadcode,varcheck,unused + instrumentKindUndefined InstrumentKind = 0 // nolint:unused // InstrumentKindCounter identifies a group of instruments that record // increasing values synchronously with the code path they are measuring. InstrumentKindCounter InstrumentKind = 1 @@ -208,7 +208,11 @@ func (i *int64Inst) Enabled(_ context.Context) bool { return len(i.measures) != 0 } -func (i *int64Inst) aggregate(ctx context.Context, val int64, s attribute.Set) { // nolint:revive // okay to shadow pkg with method. +func (i *int64Inst) aggregate( + ctx context.Context, + val int64, + s attribute.Set, +) { // nolint:revive // okay to shadow pkg with method. for _, in := range i.measures { in(ctx, val, s) } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go index fde219333..0321da681 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go @@ -121,7 +121,10 @@ func (b Builder[N]) Sum(monotonic bool) (Measure[N], ComputeAggregation) { // ExplicitBucketHistogram returns a histogram aggregate function input and // output. -func (b Builder[N]) ExplicitBucketHistogram(boundaries []float64, noMinMax, noSum bool) (Measure[N], ComputeAggregation) { +func (b Builder[N]) ExplicitBucketHistogram( + boundaries []float64, + noMinMax, noSum bool, +) (Measure[N], ComputeAggregation) { h := newHistogram[N](boundaries, noMinMax, noSum, b.AggregationLimit, b.resFunc()) switch b.Temporality { case metricdata.DeltaTemporality: @@ -133,7 +136,10 @@ func (b Builder[N]) ExplicitBucketHistogram(boundaries []float64, noMinMax, noSu // ExponentialBucketHistogram returns a histogram aggregate function input and // output. -func (b Builder[N]) ExponentialBucketHistogram(maxSize, maxScale int32, noMinMax, noSum bool) (Measure[N], ComputeAggregation) { +func (b Builder[N]) ExponentialBucketHistogram( + maxSize, maxScale int32, + noMinMax, noSum bool, +) (Measure[N], ComputeAggregation) { h := newExponentialHistogram[N](maxSize, maxScale, noMinMax, noSum, b.AggregationLimit, b.resFunc()) switch b.Temporality { case metricdata.DeltaTemporality: diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go index 32a62e1b8..ae1f59344 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go @@ -48,7 +48,12 @@ type expoHistogramDataPoint[N int64 | float64] struct { zeroCount uint64 } -func newExpoHistogramDataPoint[N int64 | float64](attrs attribute.Set, maxSize int, maxScale int32, noMinMax, noSum bool) *expoHistogramDataPoint[N] { // nolint:revive // we need this control flag +func newExpoHistogramDataPoint[N int64 | float64]( + attrs attribute.Set, + maxSize int, + maxScale int32, + noMinMax, noSum bool, +) *expoHistogramDataPoint[N] { // nolint:revive // we need this control flag f := math.MaxFloat64 ma := N(f) // if N is int64, max will overflow to -9223372036854775808 mi := N(-f) @@ -283,7 +288,12 @@ func (b *expoBuckets) downscale(delta int32) { // newExponentialHistogram returns an Aggregator that summarizes a set of // measurements as an exponential histogram. Each histogram is scoped by attributes // and the aggregation cycle the measurements were made in. -func newExponentialHistogram[N int64 | float64](maxSize, maxScale int32, noMinMax, noSum bool, limit int, r func(attribute.Set) FilteredExemplarReservoir[N]) *expoHistogram[N] { +func newExponentialHistogram[N int64 | float64]( + maxSize, maxScale int32, + noMinMax, noSum bool, + limit int, + r func(attribute.Set) FilteredExemplarReservoir[N], +) *expoHistogram[N] { return &expoHistogram[N]{ noSum: noSum, noMinMax: noMinMax, @@ -314,7 +324,12 @@ type expoHistogram[N int64 | float64] struct { start time.Time } -func (e *expoHistogram[N]) measure(ctx context.Context, value N, fltrAttr attribute.Set, droppedAttr []attribute.KeyValue) { +func (e *expoHistogram[N]) measure( + ctx context.Context, + value N, + fltrAttr attribute.Set, + droppedAttr []attribute.KeyValue, +) { // Ignore NaN and infinity. if math.IsInf(float64(value), 0) || math.IsNaN(float64(value)) { return @@ -360,11 +375,19 @@ func (e *expoHistogram[N]) delta(dest *metricdata.Aggregation) int { hDPts[i].ZeroThreshold = 0.0 hDPts[i].PositiveBucket.Offset = val.posBuckets.startBin - hDPts[i].PositiveBucket.Counts = reset(hDPts[i].PositiveBucket.Counts, len(val.posBuckets.counts), len(val.posBuckets.counts)) + hDPts[i].PositiveBucket.Counts = reset( + hDPts[i].PositiveBucket.Counts, + len(val.posBuckets.counts), + len(val.posBuckets.counts), + ) copy(hDPts[i].PositiveBucket.Counts, val.posBuckets.counts) hDPts[i].NegativeBucket.Offset = val.negBuckets.startBin - hDPts[i].NegativeBucket.Counts = reset(hDPts[i].NegativeBucket.Counts, len(val.negBuckets.counts), len(val.negBuckets.counts)) + hDPts[i].NegativeBucket.Counts = reset( + hDPts[i].NegativeBucket.Counts, + len(val.negBuckets.counts), + len(val.negBuckets.counts), + ) copy(hDPts[i].NegativeBucket.Counts, val.negBuckets.counts) if !e.noSum { @@ -413,11 +436,19 @@ func (e *expoHistogram[N]) cumulative(dest *metricdata.Aggregation) int { hDPts[i].ZeroThreshold = 0.0 hDPts[i].PositiveBucket.Offset = val.posBuckets.startBin - hDPts[i].PositiveBucket.Counts = reset(hDPts[i].PositiveBucket.Counts, len(val.posBuckets.counts), len(val.posBuckets.counts)) + hDPts[i].PositiveBucket.Counts = reset( + hDPts[i].PositiveBucket.Counts, + len(val.posBuckets.counts), + len(val.posBuckets.counts), + ) copy(hDPts[i].PositiveBucket.Counts, val.posBuckets.counts) hDPts[i].NegativeBucket.Offset = val.negBuckets.startBin - hDPts[i].NegativeBucket.Counts = reset(hDPts[i].NegativeBucket.Counts, len(val.negBuckets.counts), len(val.negBuckets.counts)) + hDPts[i].NegativeBucket.Counts = reset( + hDPts[i].NegativeBucket.Counts, + len(val.negBuckets.counts), + len(val.negBuckets.counts), + ) copy(hDPts[i].NegativeBucket.Counts, val.negBuckets.counts) if !e.noSum { diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go index 691a91060..d4c41642d 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go @@ -33,7 +33,10 @@ type filteredExemplarReservoir[N int64 | float64] struct { // NewFilteredExemplarReservoir creates a [FilteredExemplarReservoir] which only offers values // that are allowed by the filter. -func NewFilteredExemplarReservoir[N int64 | float64](f exemplar.Filter, r exemplar.Reservoir) FilteredExemplarReservoir[N] { +func NewFilteredExemplarReservoir[N int64 | float64]( + f exemplar.Filter, + r exemplar.Reservoir, +) FilteredExemplarReservoir[N] { return &filteredExemplarReservoir[N]{ filter: f, reservoir: r, diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go index d577ae2c1..d3068484c 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go @@ -53,7 +53,12 @@ type histValues[N int64 | float64] struct { valuesMu sync.Mutex } -func newHistValues[N int64 | float64](bounds []float64, noSum bool, limit int, r func(attribute.Set) FilteredExemplarReservoir[N]) *histValues[N] { +func newHistValues[N int64 | float64]( + bounds []float64, + noSum bool, + limit int, + r func(attribute.Set) FilteredExemplarReservoir[N], +) *histValues[N] { // The responsibility of keeping all buckets correctly associated with the // passed boundaries is ultimately this type's responsibility. Make a copy // here so we can always guarantee this. Or, in the case of failure, have @@ -71,7 +76,12 @@ func newHistValues[N int64 | float64](bounds []float64, noSum bool, limit int, r // Aggregate records the measurement value, scoped by attr, and aggregates it // into a histogram. -func (s *histValues[N]) measure(ctx context.Context, value N, fltrAttr attribute.Set, droppedAttr []attribute.KeyValue) { +func (s *histValues[N]) measure( + ctx context.Context, + value N, + fltrAttr attribute.Set, + droppedAttr []attribute.KeyValue, +) { // This search will return an index in the range [0, len(s.bounds)], where // it will return len(s.bounds) if value is greater than the last element // of s.bounds. This aligns with the buckets in that the length of buckets @@ -108,7 +118,12 @@ func (s *histValues[N]) measure(ctx context.Context, value N, fltrAttr attribute // newHistogram returns an Aggregator that summarizes a set of measurements as // an histogram. -func newHistogram[N int64 | float64](boundaries []float64, noMinMax, noSum bool, limit int, r func(attribute.Set) FilteredExemplarReservoir[N]) *histogram[N] { +func newHistogram[N int64 | float64]( + boundaries []float64, + noMinMax, noSum bool, + limit int, + r func(attribute.Set) FilteredExemplarReservoir[N], +) *histogram[N] { return &histogram[N]{ histValues: newHistValues[N](boundaries, noSum, limit, r), noMinMax: noMinMax, diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go index d3a93f085..350ccebdc 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go @@ -114,7 +114,10 @@ func (s *lastValue[N]) copyDpts(dest *[]metricdata.DataPoint[N], t time.Time) in // newPrecomputedLastValue returns an aggregator that summarizes a set of // observations as the last one made. -func newPrecomputedLastValue[N int64 | float64](limit int, r func(attribute.Set) FilteredExemplarReservoir[N]) *precomputedLastValue[N] { +func newPrecomputedLastValue[N int64 | float64]( + limit int, + r func(attribute.Set) FilteredExemplarReservoir[N], +) *precomputedLastValue[N] { return &precomputedLastValue[N]{lastValue: newLastValue[N](limit, r)} } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go index 8e132ad61..612cde432 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go @@ -143,7 +143,11 @@ func (s *sum[N]) cumulative(dest *metricdata.Aggregation) int { // newPrecomputedSum returns an aggregator that summarizes a set of // observations as their arithmetic sum. Each sum is scoped by attributes and // the aggregation cycle the measurements were made in. -func newPrecomputedSum[N int64 | float64](monotonic bool, limit int, r func(attribute.Set) FilteredExemplarReservoir[N]) *precomputedSum[N] { +func newPrecomputedSum[N int64 | float64]( + monotonic bool, + limit int, + r func(attribute.Set) FilteredExemplarReservoir[N], +) *precomputedSum[N] { return &precomputedSum[N]{ valueMap: newValueMap[N](limit, r), monotonic: monotonic, diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go index 19ec6806f..ea452be6c 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go @@ -1,6 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package internal provides internal functionality for the metric package. package internal // import "go.opentelemetry.io/otel/sdk/metric/internal" // ReuseSlice returns a zeroed view of slice if its capacity is greater than or diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go index c495985bc..96e779086 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go @@ -58,7 +58,9 @@ func (mr *ManualReader) temporality(kind InstrumentKind) metricdata.Temporality } // aggregation returns what Aggregation to use for kind. -func (mr *ManualReader) aggregation(kind InstrumentKind) Aggregation { // nolint:revive // import-shadow for method scoped by type. +func (mr *ManualReader) aggregation( + kind InstrumentKind, +) Aggregation { // nolint:revive // import-shadow for method scoped by type. return mr.aggregationSelector(kind) } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go index a6ccd117b..c500fd9f2 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go @@ -82,7 +82,10 @@ func (m *meter) Int64Counter(name string, options ...metric.Int64CounterOption) // Int64UpDownCounter returns a new instrument identified by name and // configured with options. The instrument is used to synchronously record // int64 measurements during a computational operation. -func (m *meter) Int64UpDownCounter(name string, options ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { +func (m *meter) Int64UpDownCounter( + name string, + options ...metric.Int64UpDownCounterOption, +) (metric.Int64UpDownCounter, error) { cfg := metric.NewInt64UpDownCounterConfig(options...) const kind = InstrumentKindUpDownCounter p := int64InstProvider{m} @@ -174,7 +177,10 @@ func (m *meter) int64ObservableInstrument(id Instrument, callbacks []metric.Int6 // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { +func (m *meter) Int64ObservableCounter( + name string, + options ...metric.Int64ObservableCounterOption, +) (metric.Int64ObservableCounter, error) { cfg := metric.NewInt64ObservableCounterConfig(options...) id := Instrument{ Name: name, @@ -195,7 +201,10 @@ func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64Obser // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Int64ObservableUpDownCounter(name string, options ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { +func (m *meter) Int64ObservableUpDownCounter( + name string, + options ...metric.Int64ObservableUpDownCounterOption, +) (metric.Int64ObservableUpDownCounter, error) { cfg := metric.NewInt64ObservableUpDownCounterConfig(options...) id := Instrument{ Name: name, @@ -216,7 +225,10 @@ func (m *meter) Int64ObservableUpDownCounter(name string, options ...metric.Int6 // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Int64ObservableGauge(name string, options ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { +func (m *meter) Int64ObservableGauge( + name string, + options ...metric.Int64ObservableGaugeOption, +) (metric.Int64ObservableGauge, error) { cfg := metric.NewInt64ObservableGaugeConfig(options...) id := Instrument{ Name: name, @@ -246,7 +258,10 @@ func (m *meter) Float64Counter(name string, options ...metric.Float64CounterOpti // Float64UpDownCounter returns a new instrument identified by name and // configured with options. The instrument is used to synchronously record // float64 measurements during a computational operation. -func (m *meter) Float64UpDownCounter(name string, options ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { +func (m *meter) Float64UpDownCounter( + name string, + options ...metric.Float64UpDownCounterOption, +) (metric.Float64UpDownCounter, error) { cfg := metric.NewFloat64UpDownCounterConfig(options...) const kind = InstrumentKindUpDownCounter p := float64InstProvider{m} @@ -261,7 +276,10 @@ func (m *meter) Float64UpDownCounter(name string, options ...metric.Float64UpDow // Float64Histogram returns a new instrument identified by name and configured // with options. The instrument is used to synchronously record the // distribution of float64 measurements during a computational operation. -func (m *meter) Float64Histogram(name string, options ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { +func (m *meter) Float64Histogram( + name string, + options ...metric.Float64HistogramOption, +) (metric.Float64Histogram, error) { cfg := metric.NewFloat64HistogramConfig(options...) p := float64InstProvider{m} i, err := p.lookupHistogram(name, cfg) @@ -289,7 +307,10 @@ func (m *meter) Float64Gauge(name string, options ...metric.Float64GaugeOption) // float64ObservableInstrument returns a new observable identified by the Instrument. // It registers callbacks for each reader's pipeline. -func (m *meter) float64ObservableInstrument(id Instrument, callbacks []metric.Float64Callback) (float64Observable, error) { +func (m *meter) float64ObservableInstrument( + id Instrument, + callbacks []metric.Float64Callback, +) (float64Observable, error) { key := instID{ Name: id.Name, Description: id.Description, @@ -338,7 +359,10 @@ func (m *meter) float64ObservableInstrument(id Instrument, callbacks []metric.Fl // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { +func (m *meter) Float64ObservableCounter( + name string, + options ...metric.Float64ObservableCounterOption, +) (metric.Float64ObservableCounter, error) { cfg := metric.NewFloat64ObservableCounterConfig(options...) id := Instrument{ Name: name, @@ -359,7 +383,10 @@ func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64O // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Float64ObservableUpDownCounter(name string, options ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { +func (m *meter) Float64ObservableUpDownCounter( + name string, + options ...metric.Float64ObservableUpDownCounterOption, +) (metric.Float64ObservableUpDownCounter, error) { cfg := metric.NewFloat64ObservableUpDownCounterConfig(options...) id := Instrument{ Name: name, @@ -380,7 +407,10 @@ func (m *meter) Float64ObservableUpDownCounter(name string, options ...metric.Fl // Description, and Unit, only the first set of callbacks provided are used. // Use meter.RegisterCallback and Registration.Unregister to manage callbacks // if instrumentation can be created multiple times with different callbacks. -func (m *meter) Float64ObservableGauge(name string, options ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { +func (m *meter) Float64ObservableGauge( + name string, + options ...metric.Float64ObservableGaugeOption, +) (metric.Float64ObservableGauge, error) { cfg := metric.NewFloat64ObservableGaugeConfig(options...) id := Instrument{ Name: name, @@ -426,8 +456,10 @@ func warnRepeatedObservableCallbacks(id Instrument) { "Instrument{Name: %q, Description: %q, Kind: %q, Unit: %q}", id.Name, id.Description, "InstrumentKind"+id.Kind.String(), id.Unit, ) - global.Warn("Repeated observable instrument creation with callbacks. Ignoring new callbacks. Use meter.RegisterCallback and Registration.Unregister to manage callbacks.", - "instrument", inst, + global.Warn( + "Repeated observable instrument creation with callbacks. Ignoring new callbacks. Use meter.RegisterCallback and Registration.Unregister to manage callbacks.", + "instrument", + inst, ) } @@ -613,7 +645,10 @@ func (p int64InstProvider) aggs(kind InstrumentKind, name, desc, u string) ([]ag return p.int64Resolver.Aggregators(inst) } -func (p int64InstProvider) histogramAggs(name string, cfg metric.Int64HistogramConfig) ([]aggregate.Measure[int64], error) { +func (p int64InstProvider) histogramAggs( + name string, + cfg metric.Int64HistogramConfig, +) ([]aggregate.Measure[int64], error) { boundaries := cfg.ExplicitBucketBoundaries() aggError := AggregationExplicitBucketHistogram{Boundaries: boundaries}.err() if aggError != nil { @@ -633,7 +668,7 @@ func (p int64InstProvider) histogramAggs(name string, cfg metric.Int64HistogramC // lookup returns the resolved instrumentImpl. func (p int64InstProvider) lookup(kind InstrumentKind, name, desc, u string) (*int64Inst, error) { - return p.meter.int64Insts.Lookup(instID{ + return p.int64Insts.Lookup(instID{ Name: name, Description: desc, Unit: u, @@ -646,7 +681,7 @@ func (p int64InstProvider) lookup(kind InstrumentKind, name, desc, u string) (*i // lookupHistogram returns the resolved instrumentImpl. func (p int64InstProvider) lookupHistogram(name string, cfg metric.Int64HistogramConfig) (*int64Inst, error) { - return p.meter.int64Insts.Lookup(instID{ + return p.int64Insts.Lookup(instID{ Name: name, Description: cfg.Description(), Unit: cfg.Unit(), @@ -671,7 +706,10 @@ func (p float64InstProvider) aggs(kind InstrumentKind, name, desc, u string) ([] return p.float64Resolver.Aggregators(inst) } -func (p float64InstProvider) histogramAggs(name string, cfg metric.Float64HistogramConfig) ([]aggregate.Measure[float64], error) { +func (p float64InstProvider) histogramAggs( + name string, + cfg metric.Float64HistogramConfig, +) ([]aggregate.Measure[float64], error) { boundaries := cfg.ExplicitBucketBoundaries() aggError := AggregationExplicitBucketHistogram{Boundaries: boundaries}.err() if aggError != nil { @@ -691,7 +729,7 @@ func (p float64InstProvider) histogramAggs(name string, cfg metric.Float64Histog // lookup returns the resolved instrumentImpl. func (p float64InstProvider) lookup(kind InstrumentKind, name, desc, u string) (*float64Inst, error) { - return p.meter.float64Insts.Lookup(instID{ + return p.float64Insts.Lookup(instID{ Name: name, Description: desc, Unit: u, @@ -704,7 +742,7 @@ func (p float64InstProvider) lookup(kind InstrumentKind, name, desc, u string) ( // lookupHistogram returns the resolved instrumentImpl. func (p float64InstProvider) lookupHistogram(name string, cfg metric.Float64HistogramConfig) (*float64Inst, error) { - return p.meter.float64Insts.Lookup(instID{ + return p.float64Insts.Lookup(instID{ Name: name, Description: cfg.Description(), Unit: cfg.Unit(), diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go index d32cfc67d..af835e9d9 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go @@ -1,6 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package metricdata provides types for the metric SDK data model. package metricdata // import "go.opentelemetry.io/otel/sdk/metric/metricdata" import ( diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go index 187713dad..2ac840ff3 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go @@ -10,7 +10,7 @@ type Temporality uint8 const ( // undefinedTemporality represents an unset Temporality. - //nolint:deadcode,unused,varcheck + //nolint:unused undefinedTemporality Temporality = iota // CumulativeTemporality defines a measurement interval that continues to diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go index dcd2182d9..0a48aed74 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go @@ -193,14 +193,16 @@ func (r *PeriodicReader) temporality(kind InstrumentKind) metricdata.Temporality } // aggregation returns what Aggregation to use for kind. -func (r *PeriodicReader) aggregation(kind InstrumentKind) Aggregation { // nolint:revive // import-shadow for method scoped by type. +func (r *PeriodicReader) aggregation( + kind InstrumentKind, +) Aggregation { // nolint:revive // import-shadow for method scoped by type. return r.exporter.Aggregation(kind) } // collectAndExport gather all metric data related to the periodicReader r from // the SDK and exports it with r's exporter. func (r *PeriodicReader) collectAndExport(ctx context.Context) error { - ctx, cancel := context.WithTimeout(ctx, r.timeout) + ctx, cancel := context.WithTimeoutCause(ctx, r.timeout, errors.New("reader collect and export timeout")) defer cancel() // TODO (#3047): Use a sync.Pool or persistent pointer instead of allocating rm every Collect. @@ -276,7 +278,7 @@ func (r *PeriodicReader) ForceFlush(ctx context.Context) error { // Prioritize the ctx timeout if it is set. if _, ok := ctx.Deadline(); !ok { var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, r.timeout) + ctx, cancel = context.WithTimeoutCause(ctx, r.timeout, errors.New("reader force flush timeout")) defer cancel() } @@ -309,7 +311,7 @@ func (r *PeriodicReader) Shutdown(ctx context.Context) error { // Prioritize the ctx timeout if it is set. if _, ok := ctx.Deadline(); !ok { var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, r.timeout) + ctx, cancel = context.WithTimeoutCause(ctx, r.timeout, errors.New("reader shutdown timeout")) defer cancel() } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go index 775e24526..7bdb699ca 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go @@ -121,6 +121,14 @@ func (p *pipeline) addMultiCallback(c multiCallback) (unregister func()) { // // This method is safe to call concurrently. func (p *pipeline) produce(ctx context.Context, rm *metricdata.ResourceMetrics) error { + // Only check if context is already cancelled before starting, not inside or after callback loops. + // If this method returns after executing some callbacks but before running all aggregations, + // internal aggregation state can be corrupted and result in incorrect data returned + // by future produce calls. + if err := ctx.Err(); err != nil { + return err + } + p.Lock() defer p.Unlock() @@ -130,12 +138,6 @@ func (p *pipeline) produce(ctx context.Context, rm *metricdata.ResourceMetrics) if e := c(ctx); e != nil { err = errors.Join(err, e) } - if err := ctx.Err(); err != nil { - rm.Resource = nil - clear(rm.ScopeMetrics) // Erase elements to let GC collect objects. - rm.ScopeMetrics = rm.ScopeMetrics[:0] - return err - } } for e := p.multiCallbacks.Front(); e != nil; e = e.Next() { // TODO make the callbacks parallel. ( #3034 ) @@ -143,13 +145,6 @@ func (p *pipeline) produce(ctx context.Context, rm *metricdata.ResourceMetrics) if e := f(ctx); e != nil { err = errors.Join(err, e) } - if err := ctx.Err(); err != nil { - // This means the context expired before we finished running callbacks. - rm.Resource = nil - clear(rm.ScopeMetrics) // Erase elements to let GC collect objects. - rm.ScopeMetrics = rm.ScopeMetrics[:0] - return err - } } rm.Resource = p.resource @@ -347,7 +342,12 @@ func (i *inserter[N]) readerDefaultAggregation(kind InstrumentKind) Aggregation // // If the instrument defines an unknown or incompatible aggregation, an error // is returned. -func (i *inserter[N]) cachedAggregator(scope instrumentation.Scope, kind InstrumentKind, stream Stream, readerAggregation Aggregation) (meas aggregate.Measure[N], aggID uint64, err error) { +func (i *inserter[N]) cachedAggregator( + scope instrumentation.Scope, + kind InstrumentKind, + stream Stream, + readerAggregation Aggregation, +) (meas aggregate.Measure[N], aggID uint64, err error) { switch stream.Aggregation.(type) { case nil: // The aggregation was not overridden with a view. Use the aggregation @@ -379,8 +379,11 @@ func (i *inserter[N]) cachedAggregator(scope instrumentation.Scope, kind Instrum normID := id.normalize() cv := i.aggregators.Lookup(normID, func() aggVal[N] { b := aggregate.Builder[N]{ - Temporality: i.pipeline.reader.temporality(kind), - ReservoirFunc: reservoirFunc[N](stream.ExemplarReservoirProviderSelector(stream.Aggregation), i.pipeline.exemplarFilter), + Temporality: i.pipeline.reader.temporality(kind), + ReservoirFunc: reservoirFunc[N]( + stream.ExemplarReservoirProviderSelector(stream.Aggregation), + i.pipeline.exemplarFilter, + ), } b.Filter = stream.AttributeFilter // A value less than or equal to zero will disable the aggregation @@ -471,7 +474,11 @@ func (i *inserter[N]) instID(kind InstrumentKind, stream Stream) instID { // aggregateFunc returns new aggregate functions matching agg, kind, and // monotonic. If the agg is unknown or temporality is invalid, an error is // returned. -func (i *inserter[N]) aggregateFunc(b aggregate.Builder[N], agg Aggregation, kind InstrumentKind) (meas aggregate.Measure[N], comp aggregate.ComputeAggregation, err error) { +func (i *inserter[N]) aggregateFunc( + b aggregate.Builder[N], + agg Aggregation, + kind InstrumentKind, +) (meas aggregate.Measure[N], comp aggregate.ComputeAggregation, err error) { switch a := agg.(type) { case AggregationDefault: return i.aggregateFunc(b, DefaultAggregationSelector(kind), kind) diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go index d13a70697..c96e500a2 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go @@ -146,7 +146,10 @@ type AggregationSelector func(InstrumentKind) Aggregation // Histogram ⇨ ExplicitBucketHistogram. func DefaultAggregationSelector(ik InstrumentKind) Aggregation { switch ik { - case InstrumentKindCounter, InstrumentKindUpDownCounter, InstrumentKindObservableCounter, InstrumentKindObservableUpDownCounter: + case InstrumentKindCounter, + InstrumentKindUpDownCounter, + InstrumentKindObservableCounter, + InstrumentKindObservableUpDownCounter: return AggregationSum{} case InstrumentKindObservableGauge, InstrumentKindGauge: return AggregationLastValue{} diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go index 92d2589da..0e5adc1a7 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go @@ -5,5 +5,5 @@ package metric // import "go.opentelemetry.io/otel/sdk/metric" // version is the current release version of the metric SDK in use. func version() string { - return "1.35.0" + return "1.37.0" } diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go index cf3c88e15..cefe4ab91 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go @@ -13,7 +13,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) type ( diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go index 5ecd859a5..0d8619715 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go @@ -11,7 +11,7 @@ import ( "os" "regexp" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) type containerIDProvider func() (string, error) diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go index 813f05624..16a062ad8 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go @@ -12,7 +12,7 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) const ( diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go index 2d0f65498..781903923 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go @@ -8,7 +8,7 @@ import ( "errors" "strings" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) type hostIDProvider func() (string, error) diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go index 8a48ab4fa..01b4d27a0 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go @@ -8,7 +8,7 @@ import ( "strings" "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) type osDescriptionProvider func() (string, error) diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go index 085fe68fd..6712ce80d 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go @@ -11,7 +11,7 @@ import ( "path/filepath" "runtime" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" ) type ( diff --git a/vendor/go.opentelemetry.io/otel/sdk/version.go b/vendor/go.opentelemetry.io/otel/sdk/version.go index 2b797fbde..c0217af6b 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/version.go +++ b/vendor/go.opentelemetry.io/otel/sdk/version.go @@ -1,9 +1,10 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +// Package sdk provides the OpenTelemetry default SDK for Go. package sdk // import "go.opentelemetry.io/otel/sdk" // Version is the current release version of the OpenTelemetry SDK in use. func Version() string { - return "1.35.0" + return "1.37.0" } diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/README.md deleted file mode 100644 index 87b842c5d..000000000 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Semconv v1.17.0 - -[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.17.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.17.0) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/event.go b/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/event.go deleted file mode 100644 index c7b804bbe..000000000 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/event.go +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Code generated from semantic convention specification. DO NOT EDIT. - -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" - -import "go.opentelemetry.io/otel/attribute" - -// This semantic convention defines the attributes used to represent a feature -// flag evaluation as an event. -const ( - // FeatureFlagKeyKey is the attribute Key conforming to the - // "feature_flag.key" semantic conventions. It represents the unique - // identifier of the feature flag. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'logo-color' - FeatureFlagKeyKey = attribute.Key("feature_flag.key") - - // FeatureFlagProviderNameKey is the attribute Key conforming to the - // "feature_flag.provider_name" semantic conventions. It represents the - // name of the service provider that performs the flag evaluation. - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'Flag Manager' - FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider_name") - - // FeatureFlagVariantKey is the attribute Key conforming to the - // "feature_flag.variant" semantic conventions. It represents the sHOULD be - // a semantic identifier for a value. If one is unavailable, a stringified - // version of the value can be used. - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'red', 'true', 'on' - // Note: A semantic identifier, commonly referred to as a variant, provides - // a means - // for referring to a value without including the value itself. This can - // provide additional context for understanding the meaning behind a value. - // For example, the variant `red` maybe be used for the value `#c05543`. - // - // A stringified version of the value can be used in situations where a - // semantic identifier is unavailable. String representation of the value - // should be determined by the implementer. - FeatureFlagVariantKey = attribute.Key("feature_flag.variant") -) - -// FeatureFlagKey returns an attribute KeyValue conforming to the -// "feature_flag.key" semantic conventions. It represents the unique identifier -// of the feature flag. -func FeatureFlagKey(val string) attribute.KeyValue { - return FeatureFlagKeyKey.String(val) -} - -// FeatureFlagProviderName returns an attribute KeyValue conforming to the -// "feature_flag.provider_name" semantic conventions. It represents the name of -// the service provider that performs the flag evaluation. -func FeatureFlagProviderName(val string) attribute.KeyValue { - return FeatureFlagProviderNameKey.String(val) -} - -// FeatureFlagVariant returns an attribute KeyValue conforming to the -// "feature_flag.variant" semantic conventions. It represents the sHOULD be a -// semantic identifier for a value. If one is unavailable, a stringified -// version of the value can be used. -func FeatureFlagVariant(val string) attribute.KeyValue { - return FeatureFlagVariantKey.String(val) -} - -// RPC received/sent message. -const ( - // MessageTypeKey is the attribute Key conforming to the "message.type" - // semantic conventions. It represents the whether this is a received or - // sent message. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - MessageTypeKey = attribute.Key("message.type") - - // MessageIDKey is the attribute Key conforming to the "message.id" - // semantic conventions. It represents the mUST be calculated as two - // different counters starting from `1` one for sent messages and one for - // received message. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Note: This way we guarantee that the values will be consistent between - // different implementations. - MessageIDKey = attribute.Key("message.id") - - // MessageCompressedSizeKey is the attribute Key conforming to the - // "message.compressed_size" semantic conventions. It represents the - // compressed size of the message in bytes. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - MessageCompressedSizeKey = attribute.Key("message.compressed_size") - - // MessageUncompressedSizeKey is the attribute Key conforming to the - // "message.uncompressed_size" semantic conventions. It represents the - // uncompressed size of the message in bytes. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - MessageUncompressedSizeKey = attribute.Key("message.uncompressed_size") -) - -var ( - // sent - MessageTypeSent = MessageTypeKey.String("SENT") - // received - MessageTypeReceived = MessageTypeKey.String("RECEIVED") -) - -// MessageID returns an attribute KeyValue conforming to the "message.id" -// semantic conventions. It represents the mUST be calculated as two different -// counters starting from `1` one for sent messages and one for received -// message. -func MessageID(val int) attribute.KeyValue { - return MessageIDKey.Int(val) -} - -// MessageCompressedSize returns an attribute KeyValue conforming to the -// "message.compressed_size" semantic conventions. It represents the compressed -// size of the message in bytes. -func MessageCompressedSize(val int) attribute.KeyValue { - return MessageCompressedSizeKey.Int(val) -} - -// MessageUncompressedSize returns an attribute KeyValue conforming to the -// "message.uncompressed_size" semantic conventions. It represents the -// uncompressed size of the message in bytes. -func MessageUncompressedSize(val int) attribute.KeyValue { - return MessageUncompressedSizeKey.Int(val) -} - -// The attributes used to report a single exception associated with a span. -const ( - // ExceptionEscapedKey is the attribute Key conforming to the - // "exception.escaped" semantic conventions. It represents the sHOULD be - // set to true if the exception event is recorded at a point where it is - // known that the exception is escaping the scope of the span. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - // Note: An exception is considered to have escaped (or left) the scope of - // a span, - // if that span is ended while the exception is still logically "in - // flight". - // This may be actually "in flight" in some languages (e.g. if the - // exception - // is passed to a Context manager's `__exit__` method in Python) but will - // usually be caught at the point of recording the exception in most - // languages. - // - // It is usually not possible to determine at the point where an exception - // is thrown - // whether it will escape the scope of a span. - // However, it is trivial to know that an exception - // will escape, if one checks for an active exception just before ending - // the span, - // as done in the [example above](#recording-an-exception). - // - // It follows that an exception may still escape the scope of the span - // even if the `exception.escaped` attribute was not set or set to false, - // since the event might have been recorded at a time where it was not - // clear whether the exception will escape. - ExceptionEscapedKey = attribute.Key("exception.escaped") -) - -// ExceptionEscaped returns an attribute KeyValue conforming to the -// "exception.escaped" semantic conventions. It represents the sHOULD be set to -// true if the exception event is recorded at a point where it is known that -// the exception is escaping the scope of the span. -func ExceptionEscaped(val bool) attribute.KeyValue { - return ExceptionEscapedKey.Bool(val) -} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/http.go b/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/http.go deleted file mode 100644 index d318221e5..000000000 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/http.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" - -// HTTP scheme attributes. -var ( - HTTPSchemeHTTP = HTTPSchemeKey.String("http") - HTTPSchemeHTTPS = HTTPSchemeKey.String("https") -) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/resource.go b/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/resource.go deleted file mode 100644 index 7e365e82c..000000000 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/resource.go +++ /dev/null @@ -1,1999 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Code generated from semantic convention specification. DO NOT EDIT. - -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" - -import "go.opentelemetry.io/otel/attribute" - -// The web browser in which the application represented by the resource is -// running. The `browser.*` attributes MUST be used only for resources that -// represent applications running in a web browser (regardless of whether -// running on a mobile or desktop device). -const ( - // BrowserBrandsKey is the attribute Key conforming to the "browser.brands" - // semantic conventions. It represents the array of brand name and version - // separated by a space - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: ' Not A;Brand 99', 'Chromium 99', 'Chrome 99' - // Note: This value is intended to be taken from the [UA client hints - // API](https://wicg.github.io/ua-client-hints/#interface) - // (`navigator.userAgentData.brands`). - BrowserBrandsKey = attribute.Key("browser.brands") - - // BrowserPlatformKey is the attribute Key conforming to the - // "browser.platform" semantic conventions. It represents the platform on - // which the browser is running - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Windows', 'macOS', 'Android' - // Note: This value is intended to be taken from the [UA client hints - // API](https://wicg.github.io/ua-client-hints/#interface) - // (`navigator.userAgentData.platform`). If unavailable, the legacy - // `navigator.platform` API SHOULD NOT be used instead and this attribute - // SHOULD be left unset in order for the values to be consistent. - // The list of possible values is defined in the [W3C User-Agent Client - // Hints - // specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). - // Note that some (but not all) of these values can overlap with values in - // the [`os.type` and `os.name` attributes](./os.md). However, for - // consistency, the values in the `browser.platform` attribute should - // capture the exact value that the user agent provides. - BrowserPlatformKey = attribute.Key("browser.platform") - - // BrowserMobileKey is the attribute Key conforming to the "browser.mobile" - // semantic conventions. It represents a boolean that is true if the - // browser is running on a mobile device - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - // Note: This value is intended to be taken from the [UA client hints - // API](https://wicg.github.io/ua-client-hints/#interface) - // (`navigator.userAgentData.mobile`). If unavailable, this attribute - // SHOULD be left unset. - BrowserMobileKey = attribute.Key("browser.mobile") - - // BrowserUserAgentKey is the attribute Key conforming to the - // "browser.user_agent" semantic conventions. It represents the full - // user-agent string provided by the browser - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - // AppleWebKit/537.36 (KHTML, ' - // 'like Gecko) Chrome/95.0.4638.54 Safari/537.36' - // Note: The user-agent value SHOULD be provided only from browsers that do - // not have a mechanism to retrieve brands and platform individually from - // the User-Agent Client Hints API. To retrieve the value, the legacy - // `navigator.userAgent` API can be used. - BrowserUserAgentKey = attribute.Key("browser.user_agent") - - // BrowserLanguageKey is the attribute Key conforming to the - // "browser.language" semantic conventions. It represents the preferred - // language of the user using the browser - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'en', 'en-US', 'fr', 'fr-FR' - // Note: This value is intended to be taken from the Navigator API - // `navigator.language`. - BrowserLanguageKey = attribute.Key("browser.language") -) - -// BrowserBrands returns an attribute KeyValue conforming to the -// "browser.brands" semantic conventions. It represents the array of brand name -// and version separated by a space -func BrowserBrands(val ...string) attribute.KeyValue { - return BrowserBrandsKey.StringSlice(val) -} - -// BrowserPlatform returns an attribute KeyValue conforming to the -// "browser.platform" semantic conventions. It represents the platform on which -// the browser is running -func BrowserPlatform(val string) attribute.KeyValue { - return BrowserPlatformKey.String(val) -} - -// BrowserMobile returns an attribute KeyValue conforming to the -// "browser.mobile" semantic conventions. It represents a boolean that is true -// if the browser is running on a mobile device -func BrowserMobile(val bool) attribute.KeyValue { - return BrowserMobileKey.Bool(val) -} - -// BrowserUserAgent returns an attribute KeyValue conforming to the -// "browser.user_agent" semantic conventions. It represents the full user-agent -// string provided by the browser -func BrowserUserAgent(val string) attribute.KeyValue { - return BrowserUserAgentKey.String(val) -} - -// BrowserLanguage returns an attribute KeyValue conforming to the -// "browser.language" semantic conventions. It represents the preferred -// language of the user using the browser -func BrowserLanguage(val string) attribute.KeyValue { - return BrowserLanguageKey.String(val) -} - -// A cloud environment (e.g. GCP, Azure, AWS) -const ( - // CloudProviderKey is the attribute Key conforming to the "cloud.provider" - // semantic conventions. It represents the name of the cloud provider. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - CloudProviderKey = attribute.Key("cloud.provider") - - // CloudAccountIDKey is the attribute Key conforming to the - // "cloud.account.id" semantic conventions. It represents the cloud account - // ID the resource is assigned to. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '111111111111', 'opentelemetry' - CloudAccountIDKey = attribute.Key("cloud.account.id") - - // CloudRegionKey is the attribute Key conforming to the "cloud.region" - // semantic conventions. It represents the geographical region the resource - // is running. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'us-central1', 'us-east-1' - // Note: Refer to your provider's docs to see the available regions, for - // example [Alibaba Cloud - // regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS - // regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), - // [Azure - // regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), - // [Google Cloud regions](https://cloud.google.com/about/locations), or - // [Tencent Cloud - // regions](https://intl.cloud.tencent.com/document/product/213/6091). - CloudRegionKey = attribute.Key("cloud.region") - - // CloudAvailabilityZoneKey is the attribute Key conforming to the - // "cloud.availability_zone" semantic conventions. It represents the cloud - // regions often have multiple, isolated locations known as zones to - // increase availability. Availability zone represents the zone where the - // resource is running. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'us-east-1c' - // Note: Availability zones are called "zones" on Alibaba Cloud and Google - // Cloud. - CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone") - - // CloudPlatformKey is the attribute Key conforming to the "cloud.platform" - // semantic conventions. It represents the cloud platform in use. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Note: The prefix of the service SHOULD match the one specified in - // `cloud.provider`. - CloudPlatformKey = attribute.Key("cloud.platform") -) - -var ( - // Alibaba Cloud - CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud") - // Amazon Web Services - CloudProviderAWS = CloudProviderKey.String("aws") - // Microsoft Azure - CloudProviderAzure = CloudProviderKey.String("azure") - // Google Cloud Platform - CloudProviderGCP = CloudProviderKey.String("gcp") - // IBM Cloud - CloudProviderIbmCloud = CloudProviderKey.String("ibm_cloud") - // Tencent Cloud - CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud") -) - -var ( - // Alibaba Cloud Elastic Compute Service - CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs") - // Alibaba Cloud Function Compute - CloudPlatformAlibabaCloudFc = CloudPlatformKey.String("alibaba_cloud_fc") - // Red Hat OpenShift on Alibaba Cloud - CloudPlatformAlibabaCloudOpenshift = CloudPlatformKey.String("alibaba_cloud_openshift") - // AWS Elastic Compute Cloud - CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2") - // AWS Elastic Container Service - CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs") - // AWS Elastic Kubernetes Service - CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks") - // AWS Lambda - CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda") - // AWS Elastic Beanstalk - CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk") - // AWS App Runner - CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner") - // Red Hat OpenShift on AWS (ROSA) - CloudPlatformAWSOpenshift = CloudPlatformKey.String("aws_openshift") - // Azure Virtual Machines - CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm") - // Azure Container Instances - CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances") - // Azure Kubernetes Service - CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks") - // Azure Functions - CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions") - // Azure App Service - CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service") - // Azure Red Hat OpenShift - CloudPlatformAzureOpenshift = CloudPlatformKey.String("azure_openshift") - // Google Cloud Compute Engine (GCE) - CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine") - // Google Cloud Run - CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run") - // Google Cloud Kubernetes Engine (GKE) - CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine") - // Google Cloud Functions (GCF) - CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions") - // Google Cloud App Engine (GAE) - CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine") - // Red Hat OpenShift on Google Cloud - CloudPlatformGoogleCloudOpenshift = CloudPlatformKey.String("google_cloud_openshift") - // Red Hat OpenShift on IBM Cloud - CloudPlatformIbmCloudOpenshift = CloudPlatformKey.String("ibm_cloud_openshift") - // Tencent Cloud Cloud Virtual Machine (CVM) - CloudPlatformTencentCloudCvm = CloudPlatformKey.String("tencent_cloud_cvm") - // Tencent Cloud Elastic Kubernetes Service (EKS) - CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks") - // Tencent Cloud Serverless Cloud Function (SCF) - CloudPlatformTencentCloudScf = CloudPlatformKey.String("tencent_cloud_scf") -) - -// CloudAccountID returns an attribute KeyValue conforming to the -// "cloud.account.id" semantic conventions. It represents the cloud account ID -// the resource is assigned to. -func CloudAccountID(val string) attribute.KeyValue { - return CloudAccountIDKey.String(val) -} - -// CloudRegion returns an attribute KeyValue conforming to the -// "cloud.region" semantic conventions. It represents the geographical region -// the resource is running. -func CloudRegion(val string) attribute.KeyValue { - return CloudRegionKey.String(val) -} - -// CloudAvailabilityZone returns an attribute KeyValue conforming to the -// "cloud.availability_zone" semantic conventions. It represents the cloud -// regions often have multiple, isolated locations known as zones to increase -// availability. Availability zone represents the zone where the resource is -// running. -func CloudAvailabilityZone(val string) attribute.KeyValue { - return CloudAvailabilityZoneKey.String(val) -} - -// Resources used by AWS Elastic Container Service (ECS). -const ( - // AWSECSContainerARNKey is the attribute Key conforming to the - // "aws.ecs.container.arn" semantic conventions. It represents the Amazon - // Resource Name (ARN) of an [ECS container - // instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: - // 'arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9' - AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn") - - // AWSECSClusterARNKey is the attribute Key conforming to the - // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an - // [ECS - // cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster' - AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn") - - // AWSECSLaunchtypeKey is the attribute Key conforming to the - // "aws.ecs.launchtype" semantic conventions. It represents the [launch - // type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) - // for an ECS task. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype") - - // AWSECSTaskARNKey is the attribute Key conforming to the - // "aws.ecs.task.arn" semantic conventions. It represents the ARN of an - // [ECS task - // definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: - // 'arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b' - AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn") - - // AWSECSTaskFamilyKey is the attribute Key conforming to the - // "aws.ecs.task.family" semantic conventions. It represents the task - // definition family this task definition is a member of. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry-family' - AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family") - - // AWSECSTaskRevisionKey is the attribute Key conforming to the - // "aws.ecs.task.revision" semantic conventions. It represents the revision - // for this task definition. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '8', '26' - AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision") -) - -var ( - // ec2 - AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2") - // fargate - AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate") -) - -// AWSECSContainerARN returns an attribute KeyValue conforming to the -// "aws.ecs.container.arn" semantic conventions. It represents the Amazon -// Resource Name (ARN) of an [ECS container -// instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). -func AWSECSContainerARN(val string) attribute.KeyValue { - return AWSECSContainerARNKey.String(val) -} - -// AWSECSClusterARN returns an attribute KeyValue conforming to the -// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an [ECS -// cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). -func AWSECSClusterARN(val string) attribute.KeyValue { - return AWSECSClusterARNKey.String(val) -} - -// AWSECSTaskARN returns an attribute KeyValue conforming to the -// "aws.ecs.task.arn" semantic conventions. It represents the ARN of an [ECS -// task -// definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). -func AWSECSTaskARN(val string) attribute.KeyValue { - return AWSECSTaskARNKey.String(val) -} - -// AWSECSTaskFamily returns an attribute KeyValue conforming to the -// "aws.ecs.task.family" semantic conventions. It represents the task -// definition family this task definition is a member of. -func AWSECSTaskFamily(val string) attribute.KeyValue { - return AWSECSTaskFamilyKey.String(val) -} - -// AWSECSTaskRevision returns an attribute KeyValue conforming to the -// "aws.ecs.task.revision" semantic conventions. It represents the revision for -// this task definition. -func AWSECSTaskRevision(val string) attribute.KeyValue { - return AWSECSTaskRevisionKey.String(val) -} - -// Resources used by AWS Elastic Kubernetes Service (EKS). -const ( - // AWSEKSClusterARNKey is the attribute Key conforming to the - // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an - // EKS cluster. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster' - AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn") -) - -// AWSEKSClusterARN returns an attribute KeyValue conforming to the -// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS -// cluster. -func AWSEKSClusterARN(val string) attribute.KeyValue { - return AWSEKSClusterARNKey.String(val) -} - -// Resources specific to Amazon Web Services. -const ( - // AWSLogGroupNamesKey is the attribute Key conforming to the - // "aws.log.group.names" semantic conventions. It represents the name(s) of - // the AWS log group(s) an application is writing to. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '/aws/lambda/my-function', 'opentelemetry-service' - // Note: Multiple log groups must be supported for cases like - // multi-container applications, where a single application has sidecar - // containers, and each write to their own log group. - AWSLogGroupNamesKey = attribute.Key("aws.log.group.names") - - // AWSLogGroupARNsKey is the attribute Key conforming to the - // "aws.log.group.arns" semantic conventions. It represents the Amazon - // Resource Name(s) (ARN) of the AWS log group(s). - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: - // 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*' - // Note: See the [log group ARN format - // documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). - AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns") - - // AWSLogStreamNamesKey is the attribute Key conforming to the - // "aws.log.stream.names" semantic conventions. It represents the name(s) - // of the AWS log stream(s) an application is writing to. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: 'logs/main/10838bed-421f-43ef-870a-f43feacbbb5b' - AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names") - - // AWSLogStreamARNsKey is the attribute Key conforming to the - // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of - // the AWS log stream(s). - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: - // 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b' - // Note: See the [log stream ARN format - // documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). - // One log group can contain several log streams, so these ARNs necessarily - // identify both a log group and a log stream. - AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns") -) - -// AWSLogGroupNames returns an attribute KeyValue conforming to the -// "aws.log.group.names" semantic conventions. It represents the name(s) of the -// AWS log group(s) an application is writing to. -func AWSLogGroupNames(val ...string) attribute.KeyValue { - return AWSLogGroupNamesKey.StringSlice(val) -} - -// AWSLogGroupARNs returns an attribute KeyValue conforming to the -// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource -// Name(s) (ARN) of the AWS log group(s). -func AWSLogGroupARNs(val ...string) attribute.KeyValue { - return AWSLogGroupARNsKey.StringSlice(val) -} - -// AWSLogStreamNames returns an attribute KeyValue conforming to the -// "aws.log.stream.names" semantic conventions. It represents the name(s) of -// the AWS log stream(s) an application is writing to. -func AWSLogStreamNames(val ...string) attribute.KeyValue { - return AWSLogStreamNamesKey.StringSlice(val) -} - -// AWSLogStreamARNs returns an attribute KeyValue conforming to the -// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the -// AWS log stream(s). -func AWSLogStreamARNs(val ...string) attribute.KeyValue { - return AWSLogStreamARNsKey.StringSlice(val) -} - -// A container instance. -const ( - // ContainerNameKey is the attribute Key conforming to the "container.name" - // semantic conventions. It represents the container name used by container - // runtime. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry-autoconf' - ContainerNameKey = attribute.Key("container.name") - - // ContainerIDKey is the attribute Key conforming to the "container.id" - // semantic conventions. It represents the container ID. Usually a UUID, as - // for example used to [identify Docker - // containers](https://docs.docker.com/engine/reference/run/#container-identification). - // The UUID might be abbreviated. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'a3bf90e006b2' - ContainerIDKey = attribute.Key("container.id") - - // ContainerRuntimeKey is the attribute Key conforming to the - // "container.runtime" semantic conventions. It represents the container - // runtime managing this container. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'docker', 'containerd', 'rkt' - ContainerRuntimeKey = attribute.Key("container.runtime") - - // ContainerImageNameKey is the attribute Key conforming to the - // "container.image.name" semantic conventions. It represents the name of - // the image the container was built on. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'gcr.io/opentelemetry/operator' - ContainerImageNameKey = attribute.Key("container.image.name") - - // ContainerImageTagKey is the attribute Key conforming to the - // "container.image.tag" semantic conventions. It represents the container - // image tag. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '0.1' - ContainerImageTagKey = attribute.Key("container.image.tag") -) - -// ContainerName returns an attribute KeyValue conforming to the -// "container.name" semantic conventions. It represents the container name used -// by container runtime. -func ContainerName(val string) attribute.KeyValue { - return ContainerNameKey.String(val) -} - -// ContainerID returns an attribute KeyValue conforming to the -// "container.id" semantic conventions. It represents the container ID. Usually -// a UUID, as for example used to [identify Docker -// containers](https://docs.docker.com/engine/reference/run/#container-identification). -// The UUID might be abbreviated. -func ContainerID(val string) attribute.KeyValue { - return ContainerIDKey.String(val) -} - -// ContainerRuntime returns an attribute KeyValue conforming to the -// "container.runtime" semantic conventions. It represents the container -// runtime managing this container. -func ContainerRuntime(val string) attribute.KeyValue { - return ContainerRuntimeKey.String(val) -} - -// ContainerImageName returns an attribute KeyValue conforming to the -// "container.image.name" semantic conventions. It represents the name of the -// image the container was built on. -func ContainerImageName(val string) attribute.KeyValue { - return ContainerImageNameKey.String(val) -} - -// ContainerImageTag returns an attribute KeyValue conforming to the -// "container.image.tag" semantic conventions. It represents the container -// image tag. -func ContainerImageTag(val string) attribute.KeyValue { - return ContainerImageTagKey.String(val) -} - -// The software deployment. -const ( - // DeploymentEnvironmentKey is the attribute Key conforming to the - // "deployment.environment" semantic conventions. It represents the name of - // the [deployment - // environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka - // deployment tier). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'staging', 'production' - DeploymentEnvironmentKey = attribute.Key("deployment.environment") -) - -// DeploymentEnvironment returns an attribute KeyValue conforming to the -// "deployment.environment" semantic conventions. It represents the name of the -// [deployment -// environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka -// deployment tier). -func DeploymentEnvironment(val string) attribute.KeyValue { - return DeploymentEnvironmentKey.String(val) -} - -// The device on which the process represented by this resource is running. -const ( - // DeviceIDKey is the attribute Key conforming to the "device.id" semantic - // conventions. It represents a unique identifier representing the device - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '2ab2916d-a51f-4ac8-80ee-45ac31a28092' - // Note: The device identifier MUST only be defined using the values - // outlined below. This value is not an advertising identifier and MUST NOT - // be used as such. On iOS (Swift or Objective-C), this value MUST be equal - // to the [vendor - // identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). - // On Android (Java or Kotlin), this value MUST be equal to the Firebase - // Installation ID or a globally unique UUID which is persisted across - // sessions in your application. More information can be found - // [here](https://developer.android.com/training/articles/user-data-ids) on - // best practices and exact implementation details. Caution should be taken - // when storing personal data or anything which can identify a user. GDPR - // and data protection laws may apply, ensure you do your own due - // diligence. - DeviceIDKey = attribute.Key("device.id") - - // DeviceModelIdentifierKey is the attribute Key conforming to the - // "device.model.identifier" semantic conventions. It represents the model - // identifier for the device - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'iPhone3,4', 'SM-G920F' - // Note: It's recommended this value represents a machine readable version - // of the model identifier rather than the market or consumer-friendly name - // of the device. - DeviceModelIdentifierKey = attribute.Key("device.model.identifier") - - // DeviceModelNameKey is the attribute Key conforming to the - // "device.model.name" semantic conventions. It represents the marketing - // name for the device model - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'iPhone 6s Plus', 'Samsung Galaxy S6' - // Note: It's recommended this value represents a human readable version of - // the device model rather than a machine readable alternative. - DeviceModelNameKey = attribute.Key("device.model.name") - - // DeviceManufacturerKey is the attribute Key conforming to the - // "device.manufacturer" semantic conventions. It represents the name of - // the device manufacturer - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Apple', 'Samsung' - // Note: The Android OS provides this field via - // [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). - // iOS apps SHOULD hardcode the value `Apple`. - DeviceManufacturerKey = attribute.Key("device.manufacturer") -) - -// DeviceID returns an attribute KeyValue conforming to the "device.id" -// semantic conventions. It represents a unique identifier representing the -// device -func DeviceID(val string) attribute.KeyValue { - return DeviceIDKey.String(val) -} - -// DeviceModelIdentifier returns an attribute KeyValue conforming to the -// "device.model.identifier" semantic conventions. It represents the model -// identifier for the device -func DeviceModelIdentifier(val string) attribute.KeyValue { - return DeviceModelIdentifierKey.String(val) -} - -// DeviceModelName returns an attribute KeyValue conforming to the -// "device.model.name" semantic conventions. It represents the marketing name -// for the device model -func DeviceModelName(val string) attribute.KeyValue { - return DeviceModelNameKey.String(val) -} - -// DeviceManufacturer returns an attribute KeyValue conforming to the -// "device.manufacturer" semantic conventions. It represents the name of the -// device manufacturer -func DeviceManufacturer(val string) attribute.KeyValue { - return DeviceManufacturerKey.String(val) -} - -// A serverless instance. -const ( - // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic - // conventions. It represents the name of the single function that this - // runtime instance executes. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'my-function', 'myazurefunctionapp/some-function-name' - // Note: This is the name of the function as configured/deployed on the - // FaaS - // platform and is usually different from the name of the callback - // function (which may be stored in the - // [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) - // span attributes). - // - // For some cloud providers, the above definition is ambiguous. The - // following - // definition of function name MUST be used for this attribute - // (and consequently the span name) for the listed cloud - // providers/products: - // - // * **Azure:** The full name `/`, i.e., function app name - // followed by a forward slash followed by the function name (this form - // can also be seen in the resource JSON for the function). - // This means that a span attribute MUST be used, as an Azure function - // app can host multiple functions that would usually share - // a TracerProvider (see also the `faas.id` attribute). - FaaSNameKey = attribute.Key("faas.name") - - // FaaSIDKey is the attribute Key conforming to the "faas.id" semantic - // conventions. It represents the unique ID of the single function that - // this runtime instance executes. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'arn:aws:lambda:us-west-2:123456789012:function:my-function' - // Note: On some cloud providers, it may not be possible to determine the - // full ID at startup, - // so consider setting `faas.id` as a span attribute instead. - // - // The exact value to use for `faas.id` depends on the cloud provider: - // - // * **AWS Lambda:** The function - // [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). - // Take care not to use the "invoked ARN" directly but replace any - // [alias - // suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) - // with the resolved function version, as the same runtime instance may - // be invokable with - // multiple different aliases. - // * **GCP:** The [URI of the - // resource](https://cloud.google.com/iam/docs/full-resource-names) - // * **Azure:** The [Fully Qualified Resource - // ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id) - // of the invoked function, - // *not* the function app, having the form - // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. - // This means that a span attribute MUST be used, as an Azure function - // app can host multiple functions that would usually share - // a TracerProvider. - FaaSIDKey = attribute.Key("faas.id") - - // FaaSVersionKey is the attribute Key conforming to the "faas.version" - // semantic conventions. It represents the immutable version of the - // function being executed. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '26', 'pinkfroid-00002' - // Note: Depending on the cloud provider and platform, use: - // - // * **AWS Lambda:** The [function - // version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) - // (an integer represented as a decimal string). - // * **Google Cloud Run:** The - // [revision](https://cloud.google.com/run/docs/managing/revisions) - // (i.e., the function name plus the revision suffix). - // * **Google Cloud Functions:** The value of the - // [`K_REVISION` environment - // variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). - // * **Azure Functions:** Not applicable. Do not set this attribute. - FaaSVersionKey = attribute.Key("faas.version") - - // FaaSInstanceKey is the attribute Key conforming to the "faas.instance" - // semantic conventions. It represents the execution environment ID as a - // string, that will be potentially reused for other invocations to the - // same function/function version. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de' - // Note: * **AWS Lambda:** Use the (full) log stream name. - FaaSInstanceKey = attribute.Key("faas.instance") - - // FaaSMaxMemoryKey is the attribute Key conforming to the - // "faas.max_memory" semantic conventions. It represents the amount of - // memory available to the serverless function in MiB. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 128 - // Note: It's recommended to set this attribute since e.g. too little - // memory can easily stop a Java AWS Lambda function from working - // correctly. On AWS Lambda, the environment variable - // `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information. - FaaSMaxMemoryKey = attribute.Key("faas.max_memory") -) - -// FaaSName returns an attribute KeyValue conforming to the "faas.name" -// semantic conventions. It represents the name of the single function that -// this runtime instance executes. -func FaaSName(val string) attribute.KeyValue { - return FaaSNameKey.String(val) -} - -// FaaSID returns an attribute KeyValue conforming to the "faas.id" semantic -// conventions. It represents the unique ID of the single function that this -// runtime instance executes. -func FaaSID(val string) attribute.KeyValue { - return FaaSIDKey.String(val) -} - -// FaaSVersion returns an attribute KeyValue conforming to the -// "faas.version" semantic conventions. It represents the immutable version of -// the function being executed. -func FaaSVersion(val string) attribute.KeyValue { - return FaaSVersionKey.String(val) -} - -// FaaSInstance returns an attribute KeyValue conforming to the -// "faas.instance" semantic conventions. It represents the execution -// environment ID as a string, that will be potentially reused for other -// invocations to the same function/function version. -func FaaSInstance(val string) attribute.KeyValue { - return FaaSInstanceKey.String(val) -} - -// FaaSMaxMemory returns an attribute KeyValue conforming to the -// "faas.max_memory" semantic conventions. It represents the amount of memory -// available to the serverless function in MiB. -func FaaSMaxMemory(val int) attribute.KeyValue { - return FaaSMaxMemoryKey.Int(val) -} - -// A host is defined as a general computing instance. -const ( - // HostIDKey is the attribute Key conforming to the "host.id" semantic - // conventions. It represents the unique host ID. For Cloud, this must be - // the instance_id assigned by the cloud provider. For non-containerized - // Linux systems, the `machine-id` located in `/etc/machine-id` or - // `/var/lib/dbus/machine-id` may be used. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'fdbf79e8af94cb7f9e8df36789187052' - HostIDKey = attribute.Key("host.id") - - // HostNameKey is the attribute Key conforming to the "host.name" semantic - // conventions. It represents the name of the host. On Unix systems, it may - // contain what the hostname command returns, or the fully qualified - // hostname, or another name specified by the user. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry-test' - HostNameKey = attribute.Key("host.name") - - // HostTypeKey is the attribute Key conforming to the "host.type" semantic - // conventions. It represents the type of host. For Cloud, this must be the - // machine type. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'n1-standard-1' - HostTypeKey = attribute.Key("host.type") - - // HostArchKey is the attribute Key conforming to the "host.arch" semantic - // conventions. It represents the CPU architecture the host system is - // running on. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - HostArchKey = attribute.Key("host.arch") - - // HostImageNameKey is the attribute Key conforming to the - // "host.image.name" semantic conventions. It represents the name of the VM - // image or OS install the host was instantiated from. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905' - HostImageNameKey = attribute.Key("host.image.name") - - // HostImageIDKey is the attribute Key conforming to the "host.image.id" - // semantic conventions. It represents the vM image ID. For Cloud, this - // value is from the provider. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'ami-07b06b442921831e5' - HostImageIDKey = attribute.Key("host.image.id") - - // HostImageVersionKey is the attribute Key conforming to the - // "host.image.version" semantic conventions. It represents the version - // string of the VM image as defined in [Version - // Attributes](README.md#version-attributes). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '0.1' - HostImageVersionKey = attribute.Key("host.image.version") -) - -var ( - // AMD64 - HostArchAMD64 = HostArchKey.String("amd64") - // ARM32 - HostArchARM32 = HostArchKey.String("arm32") - // ARM64 - HostArchARM64 = HostArchKey.String("arm64") - // Itanium - HostArchIA64 = HostArchKey.String("ia64") - // 32-bit PowerPC - HostArchPPC32 = HostArchKey.String("ppc32") - // 64-bit PowerPC - HostArchPPC64 = HostArchKey.String("ppc64") - // IBM z/Architecture - HostArchS390x = HostArchKey.String("s390x") - // 32-bit x86 - HostArchX86 = HostArchKey.String("x86") -) - -// HostID returns an attribute KeyValue conforming to the "host.id" semantic -// conventions. It represents the unique host ID. For Cloud, this must be the -// instance_id assigned by the cloud provider. For non-containerized Linux -// systems, the `machine-id` located in `/etc/machine-id` or -// `/var/lib/dbus/machine-id` may be used. -func HostID(val string) attribute.KeyValue { - return HostIDKey.String(val) -} - -// HostName returns an attribute KeyValue conforming to the "host.name" -// semantic conventions. It represents the name of the host. On Unix systems, -// it may contain what the hostname command returns, or the fully qualified -// hostname, or another name specified by the user. -func HostName(val string) attribute.KeyValue { - return HostNameKey.String(val) -} - -// HostType returns an attribute KeyValue conforming to the "host.type" -// semantic conventions. It represents the type of host. For Cloud, this must -// be the machine type. -func HostType(val string) attribute.KeyValue { - return HostTypeKey.String(val) -} - -// HostImageName returns an attribute KeyValue conforming to the -// "host.image.name" semantic conventions. It represents the name of the VM -// image or OS install the host was instantiated from. -func HostImageName(val string) attribute.KeyValue { - return HostImageNameKey.String(val) -} - -// HostImageID returns an attribute KeyValue conforming to the -// "host.image.id" semantic conventions. It represents the vM image ID. For -// Cloud, this value is from the provider. -func HostImageID(val string) attribute.KeyValue { - return HostImageIDKey.String(val) -} - -// HostImageVersion returns an attribute KeyValue conforming to the -// "host.image.version" semantic conventions. It represents the version string -// of the VM image as defined in [Version -// Attributes](README.md#version-attributes). -func HostImageVersion(val string) attribute.KeyValue { - return HostImageVersionKey.String(val) -} - -// A Kubernetes Cluster. -const ( - // K8SClusterNameKey is the attribute Key conforming to the - // "k8s.cluster.name" semantic conventions. It represents the name of the - // cluster. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry-cluster' - K8SClusterNameKey = attribute.Key("k8s.cluster.name") -) - -// K8SClusterName returns an attribute KeyValue conforming to the -// "k8s.cluster.name" semantic conventions. It represents the name of the -// cluster. -func K8SClusterName(val string) attribute.KeyValue { - return K8SClusterNameKey.String(val) -} - -// A Kubernetes Node object. -const ( - // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name" - // semantic conventions. It represents the name of the Node. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'node-1' - K8SNodeNameKey = attribute.Key("k8s.node.name") - - // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" - // semantic conventions. It represents the UID of the Node. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2' - K8SNodeUIDKey = attribute.Key("k8s.node.uid") -) - -// K8SNodeName returns an attribute KeyValue conforming to the -// "k8s.node.name" semantic conventions. It represents the name of the Node. -func K8SNodeName(val string) attribute.KeyValue { - return K8SNodeNameKey.String(val) -} - -// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid" -// semantic conventions. It represents the UID of the Node. -func K8SNodeUID(val string) attribute.KeyValue { - return K8SNodeUIDKey.String(val) -} - -// A Kubernetes Namespace. -const ( - // K8SNamespaceNameKey is the attribute Key conforming to the - // "k8s.namespace.name" semantic conventions. It represents the name of the - // namespace that the pod is running in. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'default' - K8SNamespaceNameKey = attribute.Key("k8s.namespace.name") -) - -// K8SNamespaceName returns an attribute KeyValue conforming to the -// "k8s.namespace.name" semantic conventions. It represents the name of the -// namespace that the pod is running in. -func K8SNamespaceName(val string) attribute.KeyValue { - return K8SNamespaceNameKey.String(val) -} - -// A Kubernetes Pod object. -const ( - // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" - // semantic conventions. It represents the UID of the Pod. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SPodUIDKey = attribute.Key("k8s.pod.uid") - - // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" - // semantic conventions. It represents the name of the Pod. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry-pod-autoconf' - K8SPodNameKey = attribute.Key("k8s.pod.name") -) - -// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid" -// semantic conventions. It represents the UID of the Pod. -func K8SPodUID(val string) attribute.KeyValue { - return K8SPodUIDKey.String(val) -} - -// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name" -// semantic conventions. It represents the name of the Pod. -func K8SPodName(val string) attribute.KeyValue { - return K8SPodNameKey.String(val) -} - -// A container in a -// [PodTemplate](https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates). -const ( - // K8SContainerNameKey is the attribute Key conforming to the - // "k8s.container.name" semantic conventions. It represents the name of the - // Container from Pod specification, must be unique within a Pod. Container - // runtime usually uses different globally unique name (`container.name`). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'redis' - K8SContainerNameKey = attribute.Key("k8s.container.name") - - // K8SContainerRestartCountKey is the attribute Key conforming to the - // "k8s.container.restart_count" semantic conventions. It represents the - // number of times the container was restarted. This attribute can be used - // to identify a particular container (running or stopped) within a - // container spec. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 0, 2 - K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count") -) - -// K8SContainerName returns an attribute KeyValue conforming to the -// "k8s.container.name" semantic conventions. It represents the name of the -// Container from Pod specification, must be unique within a Pod. Container -// runtime usually uses different globally unique name (`container.name`). -func K8SContainerName(val string) attribute.KeyValue { - return K8SContainerNameKey.String(val) -} - -// K8SContainerRestartCount returns an attribute KeyValue conforming to the -// "k8s.container.restart_count" semantic conventions. It represents the number -// of times the container was restarted. This attribute can be used to identify -// a particular container (running or stopped) within a container spec. -func K8SContainerRestartCount(val int) attribute.KeyValue { - return K8SContainerRestartCountKey.Int(val) -} - -// A Kubernetes ReplicaSet object. -const ( - // K8SReplicaSetUIDKey is the attribute Key conforming to the - // "k8s.replicaset.uid" semantic conventions. It represents the UID of the - // ReplicaSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid") - - // K8SReplicaSetNameKey is the attribute Key conforming to the - // "k8s.replicaset.name" semantic conventions. It represents the name of - // the ReplicaSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name") -) - -// K8SReplicaSetUID returns an attribute KeyValue conforming to the -// "k8s.replicaset.uid" semantic conventions. It represents the UID of the -// ReplicaSet. -func K8SReplicaSetUID(val string) attribute.KeyValue { - return K8SReplicaSetUIDKey.String(val) -} - -// K8SReplicaSetName returns an attribute KeyValue conforming to the -// "k8s.replicaset.name" semantic conventions. It represents the name of the -// ReplicaSet. -func K8SReplicaSetName(val string) attribute.KeyValue { - return K8SReplicaSetNameKey.String(val) -} - -// A Kubernetes Deployment object. -const ( - // K8SDeploymentUIDKey is the attribute Key conforming to the - // "k8s.deployment.uid" semantic conventions. It represents the UID of the - // Deployment. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid") - - // K8SDeploymentNameKey is the attribute Key conforming to the - // "k8s.deployment.name" semantic conventions. It represents the name of - // the Deployment. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SDeploymentNameKey = attribute.Key("k8s.deployment.name") -) - -// K8SDeploymentUID returns an attribute KeyValue conforming to the -// "k8s.deployment.uid" semantic conventions. It represents the UID of the -// Deployment. -func K8SDeploymentUID(val string) attribute.KeyValue { - return K8SDeploymentUIDKey.String(val) -} - -// K8SDeploymentName returns an attribute KeyValue conforming to the -// "k8s.deployment.name" semantic conventions. It represents the name of the -// Deployment. -func K8SDeploymentName(val string) attribute.KeyValue { - return K8SDeploymentNameKey.String(val) -} - -// A Kubernetes StatefulSet object. -const ( - // K8SStatefulSetUIDKey is the attribute Key conforming to the - // "k8s.statefulset.uid" semantic conventions. It represents the UID of the - // StatefulSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid") - - // K8SStatefulSetNameKey is the attribute Key conforming to the - // "k8s.statefulset.name" semantic conventions. It represents the name of - // the StatefulSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name") -) - -// K8SStatefulSetUID returns an attribute KeyValue conforming to the -// "k8s.statefulset.uid" semantic conventions. It represents the UID of the -// StatefulSet. -func K8SStatefulSetUID(val string) attribute.KeyValue { - return K8SStatefulSetUIDKey.String(val) -} - -// K8SStatefulSetName returns an attribute KeyValue conforming to the -// "k8s.statefulset.name" semantic conventions. It represents the name of the -// StatefulSet. -func K8SStatefulSetName(val string) attribute.KeyValue { - return K8SStatefulSetNameKey.String(val) -} - -// A Kubernetes DaemonSet object. -const ( - // K8SDaemonSetUIDKey is the attribute Key conforming to the - // "k8s.daemonset.uid" semantic conventions. It represents the UID of the - // DaemonSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid") - - // K8SDaemonSetNameKey is the attribute Key conforming to the - // "k8s.daemonset.name" semantic conventions. It represents the name of the - // DaemonSet. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name") -) - -// K8SDaemonSetUID returns an attribute KeyValue conforming to the -// "k8s.daemonset.uid" semantic conventions. It represents the UID of the -// DaemonSet. -func K8SDaemonSetUID(val string) attribute.KeyValue { - return K8SDaemonSetUIDKey.String(val) -} - -// K8SDaemonSetName returns an attribute KeyValue conforming to the -// "k8s.daemonset.name" semantic conventions. It represents the name of the -// DaemonSet. -func K8SDaemonSetName(val string) attribute.KeyValue { - return K8SDaemonSetNameKey.String(val) -} - -// A Kubernetes Job object. -const ( - // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" - // semantic conventions. It represents the UID of the Job. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SJobUIDKey = attribute.Key("k8s.job.uid") - - // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" - // semantic conventions. It represents the name of the Job. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SJobNameKey = attribute.Key("k8s.job.name") -) - -// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid" -// semantic conventions. It represents the UID of the Job. -func K8SJobUID(val string) attribute.KeyValue { - return K8SJobUIDKey.String(val) -} - -// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name" -// semantic conventions. It represents the name of the Job. -func K8SJobName(val string) attribute.KeyValue { - return K8SJobNameKey.String(val) -} - -// A Kubernetes CronJob object. -const ( - // K8SCronJobUIDKey is the attribute Key conforming to the - // "k8s.cronjob.uid" semantic conventions. It represents the UID of the - // CronJob. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' - K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid") - - // K8SCronJobNameKey is the attribute Key conforming to the - // "k8s.cronjob.name" semantic conventions. It represents the name of the - // CronJob. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - K8SCronJobNameKey = attribute.Key("k8s.cronjob.name") -) - -// K8SCronJobUID returns an attribute KeyValue conforming to the -// "k8s.cronjob.uid" semantic conventions. It represents the UID of the -// CronJob. -func K8SCronJobUID(val string) attribute.KeyValue { - return K8SCronJobUIDKey.String(val) -} - -// K8SCronJobName returns an attribute KeyValue conforming to the -// "k8s.cronjob.name" semantic conventions. It represents the name of the -// CronJob. -func K8SCronJobName(val string) attribute.KeyValue { - return K8SCronJobNameKey.String(val) -} - -// The operating system (OS) on which the process represented by this resource -// is running. -const ( - // OSTypeKey is the attribute Key conforming to the "os.type" semantic - // conventions. It represents the operating system type. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - OSTypeKey = attribute.Key("os.type") - - // OSDescriptionKey is the attribute Key conforming to the "os.description" - // semantic conventions. It represents the human readable (not intended to - // be parsed) OS version information, like e.g. reported by `ver` or - // `lsb_release -a` commands. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1 - // LTS' - OSDescriptionKey = attribute.Key("os.description") - - // OSNameKey is the attribute Key conforming to the "os.name" semantic - // conventions. It represents the human readable operating system name. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'iOS', 'Android', 'Ubuntu' - OSNameKey = attribute.Key("os.name") - - // OSVersionKey is the attribute Key conforming to the "os.version" - // semantic conventions. It represents the version string of the operating - // system as defined in [Version - // Attributes](../../resource/semantic_conventions/README.md#version-attributes). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '14.2.1', '18.04.1' - OSVersionKey = attribute.Key("os.version") -) - -var ( - // Microsoft Windows - OSTypeWindows = OSTypeKey.String("windows") - // Linux - OSTypeLinux = OSTypeKey.String("linux") - // Apple Darwin - OSTypeDarwin = OSTypeKey.String("darwin") - // FreeBSD - OSTypeFreeBSD = OSTypeKey.String("freebsd") - // NetBSD - OSTypeNetBSD = OSTypeKey.String("netbsd") - // OpenBSD - OSTypeOpenBSD = OSTypeKey.String("openbsd") - // DragonFly BSD - OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd") - // HP-UX (Hewlett Packard Unix) - OSTypeHPUX = OSTypeKey.String("hpux") - // AIX (Advanced Interactive eXecutive) - OSTypeAIX = OSTypeKey.String("aix") - // SunOS, Oracle Solaris - OSTypeSolaris = OSTypeKey.String("solaris") - // IBM z/OS - OSTypeZOS = OSTypeKey.String("z_os") -) - -// OSDescription returns an attribute KeyValue conforming to the -// "os.description" semantic conventions. It represents the human readable (not -// intended to be parsed) OS version information, like e.g. reported by `ver` -// or `lsb_release -a` commands. -func OSDescription(val string) attribute.KeyValue { - return OSDescriptionKey.String(val) -} - -// OSName returns an attribute KeyValue conforming to the "os.name" semantic -// conventions. It represents the human readable operating system name. -func OSName(val string) attribute.KeyValue { - return OSNameKey.String(val) -} - -// OSVersion returns an attribute KeyValue conforming to the "os.version" -// semantic conventions. It represents the version string of the operating -// system as defined in [Version -// Attributes](../../resource/semantic_conventions/README.md#version-attributes). -func OSVersion(val string) attribute.KeyValue { - return OSVersionKey.String(val) -} - -// An operating system process. -const ( - // ProcessPIDKey is the attribute Key conforming to the "process.pid" - // semantic conventions. It represents the process identifier (PID). - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 1234 - ProcessPIDKey = attribute.Key("process.pid") - - // ProcessParentPIDKey is the attribute Key conforming to the - // "process.parent_pid" semantic conventions. It represents the parent - // Process identifier (PID). - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 111 - ProcessParentPIDKey = attribute.Key("process.parent_pid") - - // ProcessExecutableNameKey is the attribute Key conforming to the - // "process.executable.name" semantic conventions. It represents the name - // of the process executable. On Linux based systems, can be set to the - // `Name` in `proc/[pid]/status`. On Windows, can be set to the base name - // of `GetProcessImageFileNameW`. - // - // Type: string - // RequirementLevel: ConditionallyRequired (See alternative attributes - // below.) - // Stability: stable - // Examples: 'otelcol' - ProcessExecutableNameKey = attribute.Key("process.executable.name") - - // ProcessExecutablePathKey is the attribute Key conforming to the - // "process.executable.path" semantic conventions. It represents the full - // path to the process executable. On Linux based systems, can be set to - // the target of `proc/[pid]/exe`. On Windows, can be set to the result of - // `GetProcessImageFileNameW`. - // - // Type: string - // RequirementLevel: ConditionallyRequired (See alternative attributes - // below.) - // Stability: stable - // Examples: '/usr/bin/cmd/otelcol' - ProcessExecutablePathKey = attribute.Key("process.executable.path") - - // ProcessCommandKey is the attribute Key conforming to the - // "process.command" semantic conventions. It represents the command used - // to launch the process (i.e. the command name). On Linux based systems, - // can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can - // be set to the first parameter extracted from `GetCommandLineW`. - // - // Type: string - // RequirementLevel: ConditionallyRequired (See alternative attributes - // below.) - // Stability: stable - // Examples: 'cmd/otelcol' - ProcessCommandKey = attribute.Key("process.command") - - // ProcessCommandLineKey is the attribute Key conforming to the - // "process.command_line" semantic conventions. It represents the full - // command used to launch the process as a single string representing the - // full command. On Windows, can be set to the result of `GetCommandLineW`. - // Do not set this if you have to assemble it just for monitoring; use - // `process.command_args` instead. - // - // Type: string - // RequirementLevel: ConditionallyRequired (See alternative attributes - // below.) - // Stability: stable - // Examples: 'C:\\cmd\\otecol --config="my directory\\config.yaml"' - ProcessCommandLineKey = attribute.Key("process.command_line") - - // ProcessCommandArgsKey is the attribute Key conforming to the - // "process.command_args" semantic conventions. It represents the all the - // command arguments (including the command/executable itself) as received - // by the process. On Linux-based systems (and some other Unixoid systems - // supporting procfs), can be set according to the list of null-delimited - // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, - // this would be the full argv vector passed to `main`. - // - // Type: string[] - // RequirementLevel: ConditionallyRequired (See alternative attributes - // below.) - // Stability: stable - // Examples: 'cmd/otecol', '--config=config.yaml' - ProcessCommandArgsKey = attribute.Key("process.command_args") - - // ProcessOwnerKey is the attribute Key conforming to the "process.owner" - // semantic conventions. It represents the username of the user that owns - // the process. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'root' - ProcessOwnerKey = attribute.Key("process.owner") -) - -// ProcessPID returns an attribute KeyValue conforming to the "process.pid" -// semantic conventions. It represents the process identifier (PID). -func ProcessPID(val int) attribute.KeyValue { - return ProcessPIDKey.Int(val) -} - -// ProcessParentPID returns an attribute KeyValue conforming to the -// "process.parent_pid" semantic conventions. It represents the parent Process -// identifier (PID). -func ProcessParentPID(val int) attribute.KeyValue { - return ProcessParentPIDKey.Int(val) -} - -// ProcessExecutableName returns an attribute KeyValue conforming to the -// "process.executable.name" semantic conventions. It represents the name of -// the process executable. On Linux based systems, can be set to the `Name` in -// `proc/[pid]/status`. On Windows, can be set to the base name of -// `GetProcessImageFileNameW`. -func ProcessExecutableName(val string) attribute.KeyValue { - return ProcessExecutableNameKey.String(val) -} - -// ProcessExecutablePath returns an attribute KeyValue conforming to the -// "process.executable.path" semantic conventions. It represents the full path -// to the process executable. On Linux based systems, can be set to the target -// of `proc/[pid]/exe`. On Windows, can be set to the result of -// `GetProcessImageFileNameW`. -func ProcessExecutablePath(val string) attribute.KeyValue { - return ProcessExecutablePathKey.String(val) -} - -// ProcessCommand returns an attribute KeyValue conforming to the -// "process.command" semantic conventions. It represents the command used to -// launch the process (i.e. the command name). On Linux based systems, can be -// set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to -// the first parameter extracted from `GetCommandLineW`. -func ProcessCommand(val string) attribute.KeyValue { - return ProcessCommandKey.String(val) -} - -// ProcessCommandLine returns an attribute KeyValue conforming to the -// "process.command_line" semantic conventions. It represents the full command -// used to launch the process as a single string representing the full command. -// On Windows, can be set to the result of `GetCommandLineW`. Do not set this -// if you have to assemble it just for monitoring; use `process.command_args` -// instead. -func ProcessCommandLine(val string) attribute.KeyValue { - return ProcessCommandLineKey.String(val) -} - -// ProcessCommandArgs returns an attribute KeyValue conforming to the -// "process.command_args" semantic conventions. It represents the all the -// command arguments (including the command/executable itself) as received by -// the process. On Linux-based systems (and some other Unixoid systems -// supporting procfs), can be set according to the list of null-delimited -// strings extracted from `proc/[pid]/cmdline`. For libc-based executables, -// this would be the full argv vector passed to `main`. -func ProcessCommandArgs(val ...string) attribute.KeyValue { - return ProcessCommandArgsKey.StringSlice(val) -} - -// ProcessOwner returns an attribute KeyValue conforming to the -// "process.owner" semantic conventions. It represents the username of the user -// that owns the process. -func ProcessOwner(val string) attribute.KeyValue { - return ProcessOwnerKey.String(val) -} - -// The single (language) runtime instance which is monitored. -const ( - // ProcessRuntimeNameKey is the attribute Key conforming to the - // "process.runtime.name" semantic conventions. It represents the name of - // the runtime of this process. For compiled native binaries, this SHOULD - // be the name of the compiler. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'OpenJDK Runtime Environment' - ProcessRuntimeNameKey = attribute.Key("process.runtime.name") - - // ProcessRuntimeVersionKey is the attribute Key conforming to the - // "process.runtime.version" semantic conventions. It represents the - // version of the runtime of this process, as returned by the runtime - // without modification. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '14.0.2' - ProcessRuntimeVersionKey = attribute.Key("process.runtime.version") - - // ProcessRuntimeDescriptionKey is the attribute Key conforming to the - // "process.runtime.description" semantic conventions. It represents an - // additional description about the runtime of the process, for example a - // specific vendor customization of the runtime environment. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0' - ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description") -) - -// ProcessRuntimeName returns an attribute KeyValue conforming to the -// "process.runtime.name" semantic conventions. It represents the name of the -// runtime of this process. For compiled native binaries, this SHOULD be the -// name of the compiler. -func ProcessRuntimeName(val string) attribute.KeyValue { - return ProcessRuntimeNameKey.String(val) -} - -// ProcessRuntimeVersion returns an attribute KeyValue conforming to the -// "process.runtime.version" semantic conventions. It represents the version of -// the runtime of this process, as returned by the runtime without -// modification. -func ProcessRuntimeVersion(val string) attribute.KeyValue { - return ProcessRuntimeVersionKey.String(val) -} - -// ProcessRuntimeDescription returns an attribute KeyValue conforming to the -// "process.runtime.description" semantic conventions. It represents an -// additional description about the runtime of the process, for example a -// specific vendor customization of the runtime environment. -func ProcessRuntimeDescription(val string) attribute.KeyValue { - return ProcessRuntimeDescriptionKey.String(val) -} - -// A service instance. -const ( - // ServiceNameKey is the attribute Key conforming to the "service.name" - // semantic conventions. It represents the logical name of the service. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'shoppingcart' - // Note: MUST be the same for all instances of horizontally scaled - // services. If the value was not specified, SDKs MUST fallback to - // `unknown_service:` concatenated with - // [`process.executable.name`](process.md#process), e.g. - // `unknown_service:bash`. If `process.executable.name` is not available, - // the value MUST be set to `unknown_service`. - ServiceNameKey = attribute.Key("service.name") - - // ServiceNamespaceKey is the attribute Key conforming to the - // "service.namespace" semantic conventions. It represents a namespace for - // `service.name`. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Shop' - // Note: A string value having a meaning that helps to distinguish a group - // of services, for example the team name that owns a group of services. - // `service.name` is expected to be unique within the same namespace. If - // `service.namespace` is not specified in the Resource then `service.name` - // is expected to be unique for all services that have no explicit - // namespace defined (so the empty/unspecified namespace is simply one more - // valid namespace). Zero-length namespace string is assumed equal to - // unspecified namespace. - ServiceNamespaceKey = attribute.Key("service.namespace") - - // ServiceInstanceIDKey is the attribute Key conforming to the - // "service.instance.id" semantic conventions. It represents the string ID - // of the service instance. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '627cc493-f310-47de-96bd-71410b7dec09' - // Note: MUST be unique for each instance of the same - // `service.namespace,service.name` pair (in other words - // `service.namespace,service.name,service.instance.id` triplet MUST be - // globally unique). The ID helps to distinguish instances of the same - // service that exist at the same time (e.g. instances of a horizontally - // scaled service). It is preferable for the ID to be persistent and stay - // the same for the lifetime of the service instance, however it is - // acceptable that the ID is ephemeral and changes during important - // lifetime events for the service (e.g. service restarts). If the service - // has no inherent unique ID that can be used as the value of this - // attribute it is recommended to generate a random Version 1 or Version 4 - // RFC 4122 UUID (services aiming for reproducible UUIDs may also use - // Version 5, see RFC 4122 for more recommendations). - ServiceInstanceIDKey = attribute.Key("service.instance.id") - - // ServiceVersionKey is the attribute Key conforming to the - // "service.version" semantic conventions. It represents the version string - // of the service API or implementation. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '2.0.0' - ServiceVersionKey = attribute.Key("service.version") -) - -// ServiceName returns an attribute KeyValue conforming to the -// "service.name" semantic conventions. It represents the logical name of the -// service. -func ServiceName(val string) attribute.KeyValue { - return ServiceNameKey.String(val) -} - -// ServiceNamespace returns an attribute KeyValue conforming to the -// "service.namespace" semantic conventions. It represents a namespace for -// `service.name`. -func ServiceNamespace(val string) attribute.KeyValue { - return ServiceNamespaceKey.String(val) -} - -// ServiceInstanceID returns an attribute KeyValue conforming to the -// "service.instance.id" semantic conventions. It represents the string ID of -// the service instance. -func ServiceInstanceID(val string) attribute.KeyValue { - return ServiceInstanceIDKey.String(val) -} - -// ServiceVersion returns an attribute KeyValue conforming to the -// "service.version" semantic conventions. It represents the version string of -// the service API or implementation. -func ServiceVersion(val string) attribute.KeyValue { - return ServiceVersionKey.String(val) -} - -// The telemetry SDK used to capture data recorded by the instrumentation -// libraries. -const ( - // TelemetrySDKNameKey is the attribute Key conforming to the - // "telemetry.sdk.name" semantic conventions. It represents the name of the - // telemetry SDK as defined above. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'opentelemetry' - TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name") - - // TelemetrySDKLanguageKey is the attribute Key conforming to the - // "telemetry.sdk.language" semantic conventions. It represents the - // language of the telemetry SDK. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language") - - // TelemetrySDKVersionKey is the attribute Key conforming to the - // "telemetry.sdk.version" semantic conventions. It represents the version - // string of the telemetry SDK. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '1.2.3' - TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version") - - // TelemetryAutoVersionKey is the attribute Key conforming to the - // "telemetry.auto.version" semantic conventions. It represents the version - // string of the auto instrumentation agent, if used. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '1.2.3' - TelemetryAutoVersionKey = attribute.Key("telemetry.auto.version") -) - -var ( - // cpp - TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp") - // dotnet - TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet") - // erlang - TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang") - // go - TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go") - // java - TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java") - // nodejs - TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs") - // php - TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php") - // python - TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python") - // ruby - TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby") - // webjs - TelemetrySDKLanguageWebjs = TelemetrySDKLanguageKey.String("webjs") - // swift - TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift") -) - -// TelemetrySDKName returns an attribute KeyValue conforming to the -// "telemetry.sdk.name" semantic conventions. It represents the name of the -// telemetry SDK as defined above. -func TelemetrySDKName(val string) attribute.KeyValue { - return TelemetrySDKNameKey.String(val) -} - -// TelemetrySDKVersion returns an attribute KeyValue conforming to the -// "telemetry.sdk.version" semantic conventions. It represents the version -// string of the telemetry SDK. -func TelemetrySDKVersion(val string) attribute.KeyValue { - return TelemetrySDKVersionKey.String(val) -} - -// TelemetryAutoVersion returns an attribute KeyValue conforming to the -// "telemetry.auto.version" semantic conventions. It represents the version -// string of the auto instrumentation agent, if used. -func TelemetryAutoVersion(val string) attribute.KeyValue { - return TelemetryAutoVersionKey.String(val) -} - -// Resource describing the packaged software running the application code. Web -// engines are typically executed using process.runtime. -const ( - // WebEngineNameKey is the attribute Key conforming to the "webengine.name" - // semantic conventions. It represents the name of the web engine. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'WildFly' - WebEngineNameKey = attribute.Key("webengine.name") - - // WebEngineVersionKey is the attribute Key conforming to the - // "webengine.version" semantic conventions. It represents the version of - // the web engine. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '21.0.0' - WebEngineVersionKey = attribute.Key("webengine.version") - - // WebEngineDescriptionKey is the attribute Key conforming to the - // "webengine.description" semantic conventions. It represents the - // additional description of the web engine (e.g. detailed version and - // edition information). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - - // 2.2.2.Final' - WebEngineDescriptionKey = attribute.Key("webengine.description") -) - -// WebEngineName returns an attribute KeyValue conforming to the -// "webengine.name" semantic conventions. It represents the name of the web -// engine. -func WebEngineName(val string) attribute.KeyValue { - return WebEngineNameKey.String(val) -} - -// WebEngineVersion returns an attribute KeyValue conforming to the -// "webengine.version" semantic conventions. It represents the version of the -// web engine. -func WebEngineVersion(val string) attribute.KeyValue { - return WebEngineVersionKey.String(val) -} - -// WebEngineDescription returns an attribute KeyValue conforming to the -// "webengine.description" semantic conventions. It represents the additional -// description of the web engine (e.g. detailed version and edition -// information). -func WebEngineDescription(val string) attribute.KeyValue { - return WebEngineDescriptionKey.String(val) -} - -// Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's -// concepts. -const ( - // OtelScopeNameKey is the attribute Key conforming to the - // "otel.scope.name" semantic conventions. It represents the name of the - // instrumentation scope - (`InstrumentationScope.Name` in OTLP). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'io.opentelemetry.contrib.mongodb' - OtelScopeNameKey = attribute.Key("otel.scope.name") - - // OtelScopeVersionKey is the attribute Key conforming to the - // "otel.scope.version" semantic conventions. It represents the version of - // the instrumentation scope - (`InstrumentationScope.Version` in OTLP). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '1.0.0' - OtelScopeVersionKey = attribute.Key("otel.scope.version") -) - -// OtelScopeName returns an attribute KeyValue conforming to the -// "otel.scope.name" semantic conventions. It represents the name of the -// instrumentation scope - (`InstrumentationScope.Name` in OTLP). -func OtelScopeName(val string) attribute.KeyValue { - return OtelScopeNameKey.String(val) -} - -// OtelScopeVersion returns an attribute KeyValue conforming to the -// "otel.scope.version" semantic conventions. It represents the version of the -// instrumentation scope - (`InstrumentationScope.Version` in OTLP). -func OtelScopeVersion(val string) attribute.KeyValue { - return OtelScopeVersionKey.String(val) -} - -// Span attributes used by non-OTLP exporters to represent OpenTelemetry -// Scope's concepts. -const ( - // OtelLibraryNameKey is the attribute Key conforming to the - // "otel.library.name" semantic conventions. It represents the deprecated, - // use the `otel.scope.name` attribute. - // - // Type: string - // RequirementLevel: Optional - // Stability: deprecated - // Examples: 'io.opentelemetry.contrib.mongodb' - OtelLibraryNameKey = attribute.Key("otel.library.name") - - // OtelLibraryVersionKey is the attribute Key conforming to the - // "otel.library.version" semantic conventions. It represents the - // deprecated, use the `otel.scope.version` attribute. - // - // Type: string - // RequirementLevel: Optional - // Stability: deprecated - // Examples: '1.0.0' - OtelLibraryVersionKey = attribute.Key("otel.library.version") -) - -// OtelLibraryName returns an attribute KeyValue conforming to the -// "otel.library.name" semantic conventions. It represents the deprecated, use -// the `otel.scope.name` attribute. -func OtelLibraryName(val string) attribute.KeyValue { - return OtelLibraryNameKey.String(val) -} - -// OtelLibraryVersion returns an attribute KeyValue conforming to the -// "otel.library.version" semantic conventions. It represents the deprecated, -// use the `otel.scope.version` attribute. -func OtelLibraryVersion(val string) attribute.KeyValue { - return OtelLibraryVersionKey.String(val) -} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/trace.go b/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/trace.go deleted file mode 100644 index 21497bb6b..000000000 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/trace.go +++ /dev/null @@ -1,3364 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Code generated from semantic convention specification. DO NOT EDIT. - -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" - -import "go.opentelemetry.io/otel/attribute" - -// The shared attributes used to report a single exception associated with a -// span or log. -const ( - // ExceptionTypeKey is the attribute Key conforming to the "exception.type" - // semantic conventions. It represents the type of the exception (its - // fully-qualified class name, if applicable). The dynamic type of the - // exception should be preferred over the static type in languages that - // support it. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'java.net.ConnectException', 'OSError' - ExceptionTypeKey = attribute.Key("exception.type") - - // ExceptionMessageKey is the attribute Key conforming to the - // "exception.message" semantic conventions. It represents the exception - // message. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Division by zero', "Can't convert 'int' object to str - // implicitly" - ExceptionMessageKey = attribute.Key("exception.message") - - // ExceptionStacktraceKey is the attribute Key conforming to the - // "exception.stacktrace" semantic conventions. It represents a stacktrace - // as a string in the natural representation for the language runtime. The - // representation is to be determined and documented by each language SIG. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Exception in thread "main" java.lang.RuntimeException: Test - // exception\\n at ' - // 'com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at ' - // 'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at ' - // 'com.example.GenerateTrace.main(GenerateTrace.java:5)' - ExceptionStacktraceKey = attribute.Key("exception.stacktrace") -) - -// ExceptionType returns an attribute KeyValue conforming to the -// "exception.type" semantic conventions. It represents the type of the -// exception (its fully-qualified class name, if applicable). The dynamic type -// of the exception should be preferred over the static type in languages that -// support it. -func ExceptionType(val string) attribute.KeyValue { - return ExceptionTypeKey.String(val) -} - -// ExceptionMessage returns an attribute KeyValue conforming to the -// "exception.message" semantic conventions. It represents the exception -// message. -func ExceptionMessage(val string) attribute.KeyValue { - return ExceptionMessageKey.String(val) -} - -// ExceptionStacktrace returns an attribute KeyValue conforming to the -// "exception.stacktrace" semantic conventions. It represents a stacktrace as a -// string in the natural representation for the language runtime. The -// representation is to be determined and documented by each language SIG. -func ExceptionStacktrace(val string) attribute.KeyValue { - return ExceptionStacktraceKey.String(val) -} - -// Attributes for Events represented using Log Records. -const ( - // EventNameKey is the attribute Key conforming to the "event.name" - // semantic conventions. It represents the name identifies the event. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'click', 'exception' - EventNameKey = attribute.Key("event.name") - - // EventDomainKey is the attribute Key conforming to the "event.domain" - // semantic conventions. It represents the domain identifies the business - // context for the events. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - // Note: Events across different domains may have same `event.name`, yet be - // unrelated events. - EventDomainKey = attribute.Key("event.domain") -) - -var ( - // Events from browser apps - EventDomainBrowser = EventDomainKey.String("browser") - // Events from mobile apps - EventDomainDevice = EventDomainKey.String("device") - // Events from Kubernetes - EventDomainK8S = EventDomainKey.String("k8s") -) - -// EventName returns an attribute KeyValue conforming to the "event.name" -// semantic conventions. It represents the name identifies the event. -func EventName(val string) attribute.KeyValue { - return EventNameKey.String(val) -} - -// Span attributes used by AWS Lambda (in addition to general `faas` -// attributes). -const ( - // AWSLambdaInvokedARNKey is the attribute Key conforming to the - // "aws.lambda.invoked_arn" semantic conventions. It represents the full - // invoked ARN as provided on the `Context` passed to the function - // (`Lambda-Runtime-Invoked-Function-ARN` header on the - // `/runtime/invocation/next` applicable). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'arn:aws:lambda:us-east-1:123456:function:myfunction:myalias' - // Note: This may be different from `faas.id` if an alias is involved. - AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn") -) - -// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the -// "aws.lambda.invoked_arn" semantic conventions. It represents the full -// invoked ARN as provided on the `Context` passed to the function -// (`Lambda-Runtime-Invoked-Function-ARN` header on the -// `/runtime/invocation/next` applicable). -func AWSLambdaInvokedARN(val string) attribute.KeyValue { - return AWSLambdaInvokedARNKey.String(val) -} - -// Attributes for CloudEvents. CloudEvents is a specification on how to define -// event data in a standard way. These attributes can be attached to spans when -// performing operations with CloudEvents, regardless of the protocol being -// used. -const ( - // CloudeventsEventIDKey is the attribute Key conforming to the - // "cloudevents.event_id" semantic conventions. It represents the - // [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) - // uniquely identifies the event. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: '123e4567-e89b-12d3-a456-426614174000', '0001' - CloudeventsEventIDKey = attribute.Key("cloudevents.event_id") - - // CloudeventsEventSourceKey is the attribute Key conforming to the - // "cloudevents.event_source" semantic conventions. It represents the - // [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) - // identifies the context in which an event happened. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'https://github.com/cloudevents', - // '/cloudevents/spec/pull/123', 'my-service' - CloudeventsEventSourceKey = attribute.Key("cloudevents.event_source") - - // CloudeventsEventSpecVersionKey is the attribute Key conforming to the - // "cloudevents.event_spec_version" semantic conventions. It represents the - // [version of the CloudEvents - // specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) - // which the event uses. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '1.0' - CloudeventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version") - - // CloudeventsEventTypeKey is the attribute Key conforming to the - // "cloudevents.event_type" semantic conventions. It represents the - // [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) - // contains a value describing the type of event related to the originating - // occurrence. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'com.github.pull_request.opened', - // 'com.example.object.deleted.v2' - CloudeventsEventTypeKey = attribute.Key("cloudevents.event_type") - - // CloudeventsEventSubjectKey is the attribute Key conforming to the - // "cloudevents.event_subject" semantic conventions. It represents the - // [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) - // of the event in the context of the event producer (identified by - // source). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'mynewfile.jpg' - CloudeventsEventSubjectKey = attribute.Key("cloudevents.event_subject") -) - -// CloudeventsEventID returns an attribute KeyValue conforming to the -// "cloudevents.event_id" semantic conventions. It represents the -// [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) -// uniquely identifies the event. -func CloudeventsEventID(val string) attribute.KeyValue { - return CloudeventsEventIDKey.String(val) -} - -// CloudeventsEventSource returns an attribute KeyValue conforming to the -// "cloudevents.event_source" semantic conventions. It represents the -// [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) -// identifies the context in which an event happened. -func CloudeventsEventSource(val string) attribute.KeyValue { - return CloudeventsEventSourceKey.String(val) -} - -// CloudeventsEventSpecVersion returns an attribute KeyValue conforming to -// the "cloudevents.event_spec_version" semantic conventions. It represents the -// [version of the CloudEvents -// specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) -// which the event uses. -func CloudeventsEventSpecVersion(val string) attribute.KeyValue { - return CloudeventsEventSpecVersionKey.String(val) -} - -// CloudeventsEventType returns an attribute KeyValue conforming to the -// "cloudevents.event_type" semantic conventions. It represents the -// [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) -// contains a value describing the type of event related to the originating -// occurrence. -func CloudeventsEventType(val string) attribute.KeyValue { - return CloudeventsEventTypeKey.String(val) -} - -// CloudeventsEventSubject returns an attribute KeyValue conforming to the -// "cloudevents.event_subject" semantic conventions. It represents the -// [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) -// of the event in the context of the event producer (identified by source). -func CloudeventsEventSubject(val string) attribute.KeyValue { - return CloudeventsEventSubjectKey.String(val) -} - -// Semantic conventions for the OpenTracing Shim -const ( - // OpentracingRefTypeKey is the attribute Key conforming to the - // "opentracing.ref_type" semantic conventions. It represents the - // parent-child Reference type - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Note: The causal relationship between a child Span and a parent Span. - OpentracingRefTypeKey = attribute.Key("opentracing.ref_type") -) - -var ( - // The parent Span depends on the child Span in some capacity - OpentracingRefTypeChildOf = OpentracingRefTypeKey.String("child_of") - // The parent Span does not depend in any way on the result of the child Span - OpentracingRefTypeFollowsFrom = OpentracingRefTypeKey.String("follows_from") -) - -// The attributes used to perform database client calls. -const ( - // DBSystemKey is the attribute Key conforming to the "db.system" semantic - // conventions. It represents an identifier for the database management - // system (DBMS) product being used. See below for a list of well-known - // identifiers. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - DBSystemKey = attribute.Key("db.system") - - // DBConnectionStringKey is the attribute Key conforming to the - // "db.connection_string" semantic conventions. It represents the - // connection string used to connect to the database. It is recommended to - // remove embedded credentials. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Server=(localdb)\\v11.0;Integrated Security=true;' - DBConnectionStringKey = attribute.Key("db.connection_string") - - // DBUserKey is the attribute Key conforming to the "db.user" semantic - // conventions. It represents the username for accessing the database. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'readonly_user', 'reporting_user' - DBUserKey = attribute.Key("db.user") - - // DBJDBCDriverClassnameKey is the attribute Key conforming to the - // "db.jdbc.driver_classname" semantic conventions. It represents the - // fully-qualified class name of the [Java Database Connectivity - // (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) - // driver used to connect. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'org.postgresql.Driver', - // 'com.microsoft.sqlserver.jdbc.SQLServerDriver' - DBJDBCDriverClassnameKey = attribute.Key("db.jdbc.driver_classname") - - // DBNameKey is the attribute Key conforming to the "db.name" semantic - // conventions. It represents the this attribute is used to report the name - // of the database being accessed. For commands that switch the database, - // this should be set to the target database (even if the command fails). - // - // Type: string - // RequirementLevel: ConditionallyRequired (If applicable.) - // Stability: stable - // Examples: 'customers', 'main' - // Note: In some SQL databases, the database name to be used is called - // "schema name". In case there are multiple layers that could be - // considered for database name (e.g. Oracle instance name and schema - // name), the database name to be used is the more specific layer (e.g. - // Oracle schema name). - DBNameKey = attribute.Key("db.name") - - // DBStatementKey is the attribute Key conforming to the "db.statement" - // semantic conventions. It represents the database statement being - // executed. - // - // Type: string - // RequirementLevel: ConditionallyRequired (If applicable and not - // explicitly disabled via instrumentation configuration.) - // Stability: stable - // Examples: 'SELECT * FROM wuser_table', 'SET mykey "WuValue"' - // Note: The value may be sanitized to exclude sensitive information. - DBStatementKey = attribute.Key("db.statement") - - // DBOperationKey is the attribute Key conforming to the "db.operation" - // semantic conventions. It represents the name of the operation being - // executed, e.g. the [MongoDB command - // name](https://docs.mongodb.com/manual/reference/command/#database-operations) - // such as `findAndModify`, or the SQL keyword. - // - // Type: string - // RequirementLevel: ConditionallyRequired (If `db.statement` is not - // applicable.) - // Stability: stable - // Examples: 'findAndModify', 'HMSET', 'SELECT' - // Note: When setting this to an SQL keyword, it is not recommended to - // attempt any client-side parsing of `db.statement` just to get this - // property, but it should be set if the operation name is provided by the - // library being instrumented. If the SQL statement has an ambiguous - // operation, or performs more than one operation, this value may be - // omitted. - DBOperationKey = attribute.Key("db.operation") -) - -var ( - // Some other SQL database. Fallback only. See notes - DBSystemOtherSQL = DBSystemKey.String("other_sql") - // Microsoft SQL Server - DBSystemMSSQL = DBSystemKey.String("mssql") - // MySQL - DBSystemMySQL = DBSystemKey.String("mysql") - // Oracle Database - DBSystemOracle = DBSystemKey.String("oracle") - // IBM DB2 - DBSystemDB2 = DBSystemKey.String("db2") - // PostgreSQL - DBSystemPostgreSQL = DBSystemKey.String("postgresql") - // Amazon Redshift - DBSystemRedshift = DBSystemKey.String("redshift") - // Apache Hive - DBSystemHive = DBSystemKey.String("hive") - // Cloudscape - DBSystemCloudscape = DBSystemKey.String("cloudscape") - // HyperSQL DataBase - DBSystemHSQLDB = DBSystemKey.String("hsqldb") - // Progress Database - DBSystemProgress = DBSystemKey.String("progress") - // SAP MaxDB - DBSystemMaxDB = DBSystemKey.String("maxdb") - // SAP HANA - DBSystemHanaDB = DBSystemKey.String("hanadb") - // Ingres - DBSystemIngres = DBSystemKey.String("ingres") - // FirstSQL - DBSystemFirstSQL = DBSystemKey.String("firstsql") - // EnterpriseDB - DBSystemEDB = DBSystemKey.String("edb") - // InterSystems Caché - DBSystemCache = DBSystemKey.String("cache") - // Adabas (Adaptable Database System) - DBSystemAdabas = DBSystemKey.String("adabas") - // Firebird - DBSystemFirebird = DBSystemKey.String("firebird") - // Apache Derby - DBSystemDerby = DBSystemKey.String("derby") - // FileMaker - DBSystemFilemaker = DBSystemKey.String("filemaker") - // Informix - DBSystemInformix = DBSystemKey.String("informix") - // InstantDB - DBSystemInstantDB = DBSystemKey.String("instantdb") - // InterBase - DBSystemInterbase = DBSystemKey.String("interbase") - // MariaDB - DBSystemMariaDB = DBSystemKey.String("mariadb") - // Netezza - DBSystemNetezza = DBSystemKey.String("netezza") - // Pervasive PSQL - DBSystemPervasive = DBSystemKey.String("pervasive") - // PointBase - DBSystemPointbase = DBSystemKey.String("pointbase") - // SQLite - DBSystemSqlite = DBSystemKey.String("sqlite") - // Sybase - DBSystemSybase = DBSystemKey.String("sybase") - // Teradata - DBSystemTeradata = DBSystemKey.String("teradata") - // Vertica - DBSystemVertica = DBSystemKey.String("vertica") - // H2 - DBSystemH2 = DBSystemKey.String("h2") - // ColdFusion IMQ - DBSystemColdfusion = DBSystemKey.String("coldfusion") - // Apache Cassandra - DBSystemCassandra = DBSystemKey.String("cassandra") - // Apache HBase - DBSystemHBase = DBSystemKey.String("hbase") - // MongoDB - DBSystemMongoDB = DBSystemKey.String("mongodb") - // Redis - DBSystemRedis = DBSystemKey.String("redis") - // Couchbase - DBSystemCouchbase = DBSystemKey.String("couchbase") - // CouchDB - DBSystemCouchDB = DBSystemKey.String("couchdb") - // Microsoft Azure Cosmos DB - DBSystemCosmosDB = DBSystemKey.String("cosmosdb") - // Amazon DynamoDB - DBSystemDynamoDB = DBSystemKey.String("dynamodb") - // Neo4j - DBSystemNeo4j = DBSystemKey.String("neo4j") - // Apache Geode - DBSystemGeode = DBSystemKey.String("geode") - // Elasticsearch - DBSystemElasticsearch = DBSystemKey.String("elasticsearch") - // Memcached - DBSystemMemcached = DBSystemKey.String("memcached") - // CockroachDB - DBSystemCockroachdb = DBSystemKey.String("cockroachdb") - // OpenSearch - DBSystemOpensearch = DBSystemKey.String("opensearch") - // ClickHouse - DBSystemClickhouse = DBSystemKey.String("clickhouse") -) - -// DBConnectionString returns an attribute KeyValue conforming to the -// "db.connection_string" semantic conventions. It represents the connection -// string used to connect to the database. It is recommended to remove embedded -// credentials. -func DBConnectionString(val string) attribute.KeyValue { - return DBConnectionStringKey.String(val) -} - -// DBUser returns an attribute KeyValue conforming to the "db.user" semantic -// conventions. It represents the username for accessing the database. -func DBUser(val string) attribute.KeyValue { - return DBUserKey.String(val) -} - -// DBJDBCDriverClassname returns an attribute KeyValue conforming to the -// "db.jdbc.driver_classname" semantic conventions. It represents the -// fully-qualified class name of the [Java Database Connectivity -// (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver -// used to connect. -func DBJDBCDriverClassname(val string) attribute.KeyValue { - return DBJDBCDriverClassnameKey.String(val) -} - -// DBName returns an attribute KeyValue conforming to the "db.name" semantic -// conventions. It represents the this attribute is used to report the name of -// the database being accessed. For commands that switch the database, this -// should be set to the target database (even if the command fails). -func DBName(val string) attribute.KeyValue { - return DBNameKey.String(val) -} - -// DBStatement returns an attribute KeyValue conforming to the -// "db.statement" semantic conventions. It represents the database statement -// being executed. -func DBStatement(val string) attribute.KeyValue { - return DBStatementKey.String(val) -} - -// DBOperation returns an attribute KeyValue conforming to the -// "db.operation" semantic conventions. It represents the name of the operation -// being executed, e.g. the [MongoDB command -// name](https://docs.mongodb.com/manual/reference/command/#database-operations) -// such as `findAndModify`, or the SQL keyword. -func DBOperation(val string) attribute.KeyValue { - return DBOperationKey.String(val) -} - -// Connection-level attributes for Microsoft SQL Server -const ( - // DBMSSQLInstanceNameKey is the attribute Key conforming to the - // "db.mssql.instance_name" semantic conventions. It represents the - // Microsoft SQL Server [instance - // name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) - // connecting to. This name is used to determine the port of a named - // instance. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'MSSQLSERVER' - // Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no - // longer required (but still recommended if non-standard). - DBMSSQLInstanceNameKey = attribute.Key("db.mssql.instance_name") -) - -// DBMSSQLInstanceName returns an attribute KeyValue conforming to the -// "db.mssql.instance_name" semantic conventions. It represents the Microsoft -// SQL Server [instance -// name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) -// connecting to. This name is used to determine the port of a named instance. -func DBMSSQLInstanceName(val string) attribute.KeyValue { - return DBMSSQLInstanceNameKey.String(val) -} - -// Call-level attributes for Cassandra -const ( - // DBCassandraPageSizeKey is the attribute Key conforming to the - // "db.cassandra.page_size" semantic conventions. It represents the fetch - // size used for paging, i.e. how many rows will be returned at once. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 5000 - DBCassandraPageSizeKey = attribute.Key("db.cassandra.page_size") - - // DBCassandraConsistencyLevelKey is the attribute Key conforming to the - // "db.cassandra.consistency_level" semantic conventions. It represents the - // consistency level of the query. Based on consistency values from - // [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - DBCassandraConsistencyLevelKey = attribute.Key("db.cassandra.consistency_level") - - // DBCassandraTableKey is the attribute Key conforming to the - // "db.cassandra.table" semantic conventions. It represents the name of the - // primary table that the operation is acting upon, including the keyspace - // name (if applicable). - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'mytable' - // Note: This mirrors the db.sql.table attribute but references cassandra - // rather than sql. It is not recommended to attempt any client-side - // parsing of `db.statement` just to get this property, but it should be - // set if it is provided by the library being instrumented. If the - // operation is acting upon an anonymous table, or more than one table, - // this value MUST NOT be set. - DBCassandraTableKey = attribute.Key("db.cassandra.table") - - // DBCassandraIdempotenceKey is the attribute Key conforming to the - // "db.cassandra.idempotence" semantic conventions. It represents the - // whether or not the query is idempotent. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - DBCassandraIdempotenceKey = attribute.Key("db.cassandra.idempotence") - - // DBCassandraSpeculativeExecutionCountKey is the attribute Key conforming - // to the "db.cassandra.speculative_execution_count" semantic conventions. - // It represents the number of times a query was speculatively executed. - // Not set or `0` if the query was not executed speculatively. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 0, 2 - DBCassandraSpeculativeExecutionCountKey = attribute.Key("db.cassandra.speculative_execution_count") - - // DBCassandraCoordinatorIDKey is the attribute Key conforming to the - // "db.cassandra.coordinator.id" semantic conventions. It represents the ID - // of the coordinating node for a query. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'be13faa2-8574-4d71-926d-27f16cf8a7af' - DBCassandraCoordinatorIDKey = attribute.Key("db.cassandra.coordinator.id") - - // DBCassandraCoordinatorDCKey is the attribute Key conforming to the - // "db.cassandra.coordinator.dc" semantic conventions. It represents the - // data center of the coordinating node for a query. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'us-west-2' - DBCassandraCoordinatorDCKey = attribute.Key("db.cassandra.coordinator.dc") -) - -var ( - // all - DBCassandraConsistencyLevelAll = DBCassandraConsistencyLevelKey.String("all") - // each_quorum - DBCassandraConsistencyLevelEachQuorum = DBCassandraConsistencyLevelKey.String("each_quorum") - // quorum - DBCassandraConsistencyLevelQuorum = DBCassandraConsistencyLevelKey.String("quorum") - // local_quorum - DBCassandraConsistencyLevelLocalQuorum = DBCassandraConsistencyLevelKey.String("local_quorum") - // one - DBCassandraConsistencyLevelOne = DBCassandraConsistencyLevelKey.String("one") - // two - DBCassandraConsistencyLevelTwo = DBCassandraConsistencyLevelKey.String("two") - // three - DBCassandraConsistencyLevelThree = DBCassandraConsistencyLevelKey.String("three") - // local_one - DBCassandraConsistencyLevelLocalOne = DBCassandraConsistencyLevelKey.String("local_one") - // any - DBCassandraConsistencyLevelAny = DBCassandraConsistencyLevelKey.String("any") - // serial - DBCassandraConsistencyLevelSerial = DBCassandraConsistencyLevelKey.String("serial") - // local_serial - DBCassandraConsistencyLevelLocalSerial = DBCassandraConsistencyLevelKey.String("local_serial") -) - -// DBCassandraPageSize returns an attribute KeyValue conforming to the -// "db.cassandra.page_size" semantic conventions. It represents the fetch size -// used for paging, i.e. how many rows will be returned at once. -func DBCassandraPageSize(val int) attribute.KeyValue { - return DBCassandraPageSizeKey.Int(val) -} - -// DBCassandraTable returns an attribute KeyValue conforming to the -// "db.cassandra.table" semantic conventions. It represents the name of the -// primary table that the operation is acting upon, including the keyspace name -// (if applicable). -func DBCassandraTable(val string) attribute.KeyValue { - return DBCassandraTableKey.String(val) -} - -// DBCassandraIdempotence returns an attribute KeyValue conforming to the -// "db.cassandra.idempotence" semantic conventions. It represents the whether -// or not the query is idempotent. -func DBCassandraIdempotence(val bool) attribute.KeyValue { - return DBCassandraIdempotenceKey.Bool(val) -} - -// DBCassandraSpeculativeExecutionCount returns an attribute KeyValue -// conforming to the "db.cassandra.speculative_execution_count" semantic -// conventions. It represents the number of times a query was speculatively -// executed. Not set or `0` if the query was not executed speculatively. -func DBCassandraSpeculativeExecutionCount(val int) attribute.KeyValue { - return DBCassandraSpeculativeExecutionCountKey.Int(val) -} - -// DBCassandraCoordinatorID returns an attribute KeyValue conforming to the -// "db.cassandra.coordinator.id" semantic conventions. It represents the ID of -// the coordinating node for a query. -func DBCassandraCoordinatorID(val string) attribute.KeyValue { - return DBCassandraCoordinatorIDKey.String(val) -} - -// DBCassandraCoordinatorDC returns an attribute KeyValue conforming to the -// "db.cassandra.coordinator.dc" semantic conventions. It represents the data -// center of the coordinating node for a query. -func DBCassandraCoordinatorDC(val string) attribute.KeyValue { - return DBCassandraCoordinatorDCKey.String(val) -} - -// Call-level attributes for Redis -const ( - // DBRedisDBIndexKey is the attribute Key conforming to the - // "db.redis.database_index" semantic conventions. It represents the index - // of the database being accessed as used in the [`SELECT` - // command](https://redis.io/commands/select), provided as an integer. To - // be used instead of the generic `db.name` attribute. - // - // Type: int - // RequirementLevel: ConditionallyRequired (If other than the default - // database (`0`).) - // Stability: stable - // Examples: 0, 1, 15 - DBRedisDBIndexKey = attribute.Key("db.redis.database_index") -) - -// DBRedisDBIndex returns an attribute KeyValue conforming to the -// "db.redis.database_index" semantic conventions. It represents the index of -// the database being accessed as used in the [`SELECT` -// command](https://redis.io/commands/select), provided as an integer. To be -// used instead of the generic `db.name` attribute. -func DBRedisDBIndex(val int) attribute.KeyValue { - return DBRedisDBIndexKey.Int(val) -} - -// Call-level attributes for MongoDB -const ( - // DBMongoDBCollectionKey is the attribute Key conforming to the - // "db.mongodb.collection" semantic conventions. It represents the - // collection being accessed within the database stated in `db.name`. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'customers', 'products' - DBMongoDBCollectionKey = attribute.Key("db.mongodb.collection") -) - -// DBMongoDBCollection returns an attribute KeyValue conforming to the -// "db.mongodb.collection" semantic conventions. It represents the collection -// being accessed within the database stated in `db.name`. -func DBMongoDBCollection(val string) attribute.KeyValue { - return DBMongoDBCollectionKey.String(val) -} - -// Call-level attributes for SQL databases -const ( - // DBSQLTableKey is the attribute Key conforming to the "db.sql.table" - // semantic conventions. It represents the name of the primary table that - // the operation is acting upon, including the database name (if - // applicable). - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'public.users', 'customers' - // Note: It is not recommended to attempt any client-side parsing of - // `db.statement` just to get this property, but it should be set if it is - // provided by the library being instrumented. If the operation is acting - // upon an anonymous table, or more than one table, this value MUST NOT be - // set. - DBSQLTableKey = attribute.Key("db.sql.table") -) - -// DBSQLTable returns an attribute KeyValue conforming to the "db.sql.table" -// semantic conventions. It represents the name of the primary table that the -// operation is acting upon, including the database name (if applicable). -func DBSQLTable(val string) attribute.KeyValue { - return DBSQLTableKey.String(val) -} - -// Span attributes used by non-OTLP exporters to represent OpenTelemetry Span's -// concepts. -const ( - // OtelStatusCodeKey is the attribute Key conforming to the - // "otel.status_code" semantic conventions. It represents the name of the - // code, either "OK" or "ERROR". MUST NOT be set if the status code is - // UNSET. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - OtelStatusCodeKey = attribute.Key("otel.status_code") - - // OtelStatusDescriptionKey is the attribute Key conforming to the - // "otel.status_description" semantic conventions. It represents the - // description of the Status if it has a value, otherwise not set. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'resource not found' - OtelStatusDescriptionKey = attribute.Key("otel.status_description") -) - -var ( - // The operation has been validated by an Application developer or Operator to have completed successfully - OtelStatusCodeOk = OtelStatusCodeKey.String("OK") - // The operation contains an error - OtelStatusCodeError = OtelStatusCodeKey.String("ERROR") -) - -// OtelStatusDescription returns an attribute KeyValue conforming to the -// "otel.status_description" semantic conventions. It represents the -// description of the Status if it has a value, otherwise not set. -func OtelStatusDescription(val string) attribute.KeyValue { - return OtelStatusDescriptionKey.String(val) -} - -// This semantic convention describes an instance of a function that runs -// without provisioning or managing of servers (also known as serverless -// functions or Function as a Service (FaaS)) with spans. -const ( - // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" - // semantic conventions. It represents the type of the trigger which caused - // this function execution. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Note: For the server/consumer span on the incoming side, - // `faas.trigger` MUST be set. - // - // Clients invoking FaaS instances usually cannot set `faas.trigger`, - // since they would typically need to look in the payload to determine - // the event type. If clients set it, it should be the same as the - // trigger that corresponding incoming would have (i.e., this has - // nothing to do with the underlying transport used to make the API - // call to invoke the lambda, which is often HTTP). - FaaSTriggerKey = attribute.Key("faas.trigger") - - // FaaSExecutionKey is the attribute Key conforming to the "faas.execution" - // semantic conventions. It represents the execution ID of the current - // function execution. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28' - FaaSExecutionKey = attribute.Key("faas.execution") -) - -var ( - // A response to some data source operation such as a database or filesystem read/write - FaaSTriggerDatasource = FaaSTriggerKey.String("datasource") - // To provide an answer to an inbound HTTP request - FaaSTriggerHTTP = FaaSTriggerKey.String("http") - // A function is set to be executed when messages are sent to a messaging system - FaaSTriggerPubsub = FaaSTriggerKey.String("pubsub") - // A function is scheduled to be executed regularly - FaaSTriggerTimer = FaaSTriggerKey.String("timer") - // If none of the others apply - FaaSTriggerOther = FaaSTriggerKey.String("other") -) - -// FaaSExecution returns an attribute KeyValue conforming to the -// "faas.execution" semantic conventions. It represents the execution ID of the -// current function execution. -func FaaSExecution(val string) attribute.KeyValue { - return FaaSExecutionKey.String(val) -} - -// Semantic Convention for FaaS triggered as a response to some data source -// operation such as a database or filesystem read/write. -const ( - // FaaSDocumentCollectionKey is the attribute Key conforming to the - // "faas.document.collection" semantic conventions. It represents the name - // of the source on which the triggering operation was performed. For - // example, in Cloud Storage or S3 corresponds to the bucket name, and in - // Cosmos DB to the database name. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'myBucketName', 'myDBName' - FaaSDocumentCollectionKey = attribute.Key("faas.document.collection") - - // FaaSDocumentOperationKey is the attribute Key conforming to the - // "faas.document.operation" semantic conventions. It represents the - // describes the type of the operation that was performed on the data. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - FaaSDocumentOperationKey = attribute.Key("faas.document.operation") - - // FaaSDocumentTimeKey is the attribute Key conforming to the - // "faas.document.time" semantic conventions. It represents a string - // containing the time when the data was accessed in the [ISO - // 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format - // expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '2020-01-23T13:47:06Z' - FaaSDocumentTimeKey = attribute.Key("faas.document.time") - - // FaaSDocumentNameKey is the attribute Key conforming to the - // "faas.document.name" semantic conventions. It represents the document - // name/table subjected to the operation. For example, in Cloud Storage or - // S3 is the name of the file, and in Cosmos DB the table name. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'myFile.txt', 'myTableName' - FaaSDocumentNameKey = attribute.Key("faas.document.name") -) - -var ( - // When a new object is created - FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert") - // When an object is modified - FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit") - // When an object is deleted - FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete") -) - -// FaaSDocumentCollection returns an attribute KeyValue conforming to the -// "faas.document.collection" semantic conventions. It represents the name of -// the source on which the triggering operation was performed. For example, in -// Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the -// database name. -func FaaSDocumentCollection(val string) attribute.KeyValue { - return FaaSDocumentCollectionKey.String(val) -} - -// FaaSDocumentTime returns an attribute KeyValue conforming to the -// "faas.document.time" semantic conventions. It represents a string containing -// the time when the data was accessed in the [ISO -// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format -// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). -func FaaSDocumentTime(val string) attribute.KeyValue { - return FaaSDocumentTimeKey.String(val) -} - -// FaaSDocumentName returns an attribute KeyValue conforming to the -// "faas.document.name" semantic conventions. It represents the document -// name/table subjected to the operation. For example, in Cloud Storage or S3 -// is the name of the file, and in Cosmos DB the table name. -func FaaSDocumentName(val string) attribute.KeyValue { - return FaaSDocumentNameKey.String(val) -} - -// Semantic Convention for FaaS scheduled to be executed regularly. -const ( - // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic - // conventions. It represents a string containing the function invocation - // time in the [ISO - // 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format - // expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '2020-01-23T13:47:06Z' - FaaSTimeKey = attribute.Key("faas.time") - - // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic - // conventions. It represents a string containing the schedule period as - // [Cron - // Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '0/5 * * * ? *' - FaaSCronKey = attribute.Key("faas.cron") -) - -// FaaSTime returns an attribute KeyValue conforming to the "faas.time" -// semantic conventions. It represents a string containing the function -// invocation time in the [ISO -// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format -// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). -func FaaSTime(val string) attribute.KeyValue { - return FaaSTimeKey.String(val) -} - -// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" -// semantic conventions. It represents a string containing the schedule period -// as [Cron -// Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). -func FaaSCron(val string) attribute.KeyValue { - return FaaSCronKey.String(val) -} - -// Contains additional attributes for incoming FaaS spans. -const ( - // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart" - // semantic conventions. It represents a boolean that is true if the - // serverless function is executed for the first time (aka cold-start). - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - FaaSColdstartKey = attribute.Key("faas.coldstart") -) - -// FaaSColdstart returns an attribute KeyValue conforming to the -// "faas.coldstart" semantic conventions. It represents a boolean that is true -// if the serverless function is executed for the first time (aka cold-start). -func FaaSColdstart(val bool) attribute.KeyValue { - return FaaSColdstartKey.Bool(val) -} - -// Contains additional attributes for outgoing FaaS spans. -const ( - // FaaSInvokedNameKey is the attribute Key conforming to the - // "faas.invoked_name" semantic conventions. It represents the name of the - // invoked function. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'my-function' - // Note: SHOULD be equal to the `faas.name` resource attribute of the - // invoked function. - FaaSInvokedNameKey = attribute.Key("faas.invoked_name") - - // FaaSInvokedProviderKey is the attribute Key conforming to the - // "faas.invoked_provider" semantic conventions. It represents the cloud - // provider of the invoked function. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - // Note: SHOULD be equal to the `cloud.provider` resource attribute of the - // invoked function. - FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider") - - // FaaSInvokedRegionKey is the attribute Key conforming to the - // "faas.invoked_region" semantic conventions. It represents the cloud - // region of the invoked function. - // - // Type: string - // RequirementLevel: ConditionallyRequired (For some cloud providers, like - // AWS or GCP, the region in which a function is hosted is essential to - // uniquely identify the function and also part of its endpoint. Since it's - // part of the endpoint being called, the region is always known to - // clients. In these cases, `faas.invoked_region` MUST be set accordingly. - // If the region is unknown to the client or not required for identifying - // the invoked function, setting `faas.invoked_region` is optional.) - // Stability: stable - // Examples: 'eu-central-1' - // Note: SHOULD be equal to the `cloud.region` resource attribute of the - // invoked function. - FaaSInvokedRegionKey = attribute.Key("faas.invoked_region") -) - -var ( - // Alibaba Cloud - FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud") - // Amazon Web Services - FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws") - // Microsoft Azure - FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure") - // Google Cloud Platform - FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp") - // Tencent Cloud - FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud") -) - -// FaaSInvokedName returns an attribute KeyValue conforming to the -// "faas.invoked_name" semantic conventions. It represents the name of the -// invoked function. -func FaaSInvokedName(val string) attribute.KeyValue { - return FaaSInvokedNameKey.String(val) -} - -// FaaSInvokedRegion returns an attribute KeyValue conforming to the -// "faas.invoked_region" semantic conventions. It represents the cloud region -// of the invoked function. -func FaaSInvokedRegion(val string) attribute.KeyValue { - return FaaSInvokedRegionKey.String(val) -} - -// These attributes may be used for any network related operation. -const ( - // NetTransportKey is the attribute Key conforming to the "net.transport" - // semantic conventions. It represents the transport protocol used. See - // note below. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - NetTransportKey = attribute.Key("net.transport") - - // NetAppProtocolNameKey is the attribute Key conforming to the - // "net.app.protocol.name" semantic conventions. It represents the - // application layer protocol used. The value SHOULD be normalized to - // lowercase. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'amqp', 'http', 'mqtt' - NetAppProtocolNameKey = attribute.Key("net.app.protocol.name") - - // NetAppProtocolVersionKey is the attribute Key conforming to the - // "net.app.protocol.version" semantic conventions. It represents the - // version of the application layer protocol used. See note below. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '3.1.1' - // Note: `net.app.protocol.version` refers to the version of the protocol - // used and might be different from the protocol client's version. If the - // HTTP client used has a version of `0.27.2`, but sends HTTP version - // `1.1`, this attribute should be set to `1.1`. - NetAppProtocolVersionKey = attribute.Key("net.app.protocol.version") - - // NetSockPeerNameKey is the attribute Key conforming to the - // "net.sock.peer.name" semantic conventions. It represents the remote - // socket peer name. - // - // Type: string - // RequirementLevel: Recommended (If available and different from - // `net.peer.name` and if `net.sock.peer.addr` is set.) - // Stability: stable - // Examples: 'proxy.example.com' - NetSockPeerNameKey = attribute.Key("net.sock.peer.name") - - // NetSockPeerAddrKey is the attribute Key conforming to the - // "net.sock.peer.addr" semantic conventions. It represents the remote - // socket peer address: IPv4 or IPv6 for internet protocols, path for local - // communication, - // [etc](https://man7.org/linux/man-pages/man7/address_families.7.html). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '127.0.0.1', '/tmp/mysql.sock' - NetSockPeerAddrKey = attribute.Key("net.sock.peer.addr") - - // NetSockPeerPortKey is the attribute Key conforming to the - // "net.sock.peer.port" semantic conventions. It represents the remote - // socket peer port. - // - // Type: int - // RequirementLevel: Recommended (If defined for the address family and if - // different than `net.peer.port` and if `net.sock.peer.addr` is set.) - // Stability: stable - // Examples: 16456 - NetSockPeerPortKey = attribute.Key("net.sock.peer.port") - - // NetSockFamilyKey is the attribute Key conforming to the - // "net.sock.family" semantic conventions. It represents the protocol - // [address - // family](https://man7.org/linux/man-pages/man7/address_families.7.html) - // which is used for communication. - // - // Type: Enum - // RequirementLevel: ConditionallyRequired (If different than `inet` and if - // any of `net.sock.peer.addr` or `net.sock.host.addr` are set. Consumers - // of telemetry SHOULD accept both IPv4 and IPv6 formats for the address in - // `net.sock.peer.addr` if `net.sock.family` is not set. This is to support - // instrumentations that follow previous versions of this document.) - // Stability: stable - // Examples: 'inet6', 'bluetooth' - NetSockFamilyKey = attribute.Key("net.sock.family") - - // NetPeerNameKey is the attribute Key conforming to the "net.peer.name" - // semantic conventions. It represents the logical remote hostname, see - // note below. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'example.com' - // Note: `net.peer.name` SHOULD NOT be set if capturing it would require an - // extra DNS lookup. - NetPeerNameKey = attribute.Key("net.peer.name") - - // NetPeerPortKey is the attribute Key conforming to the "net.peer.port" - // semantic conventions. It represents the logical remote port number - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 80, 8080, 443 - NetPeerPortKey = attribute.Key("net.peer.port") - - // NetHostNameKey is the attribute Key conforming to the "net.host.name" - // semantic conventions. It represents the logical local hostname or - // similar, see note below. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'localhost' - NetHostNameKey = attribute.Key("net.host.name") - - // NetHostPortKey is the attribute Key conforming to the "net.host.port" - // semantic conventions. It represents the logical local port number, - // preferably the one that the peer used to connect - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 8080 - NetHostPortKey = attribute.Key("net.host.port") - - // NetSockHostAddrKey is the attribute Key conforming to the - // "net.sock.host.addr" semantic conventions. It represents the local - // socket address. Useful in case of a multi-IP host. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '192.168.0.1' - NetSockHostAddrKey = attribute.Key("net.sock.host.addr") - - // NetSockHostPortKey is the attribute Key conforming to the - // "net.sock.host.port" semantic conventions. It represents the local - // socket port number. - // - // Type: int - // RequirementLevel: Recommended (If defined for the address family and if - // different than `net.host.port` and if `net.sock.host.addr` is set.) - // Stability: stable - // Examples: 35555 - NetSockHostPortKey = attribute.Key("net.sock.host.port") - - // NetHostConnectionTypeKey is the attribute Key conforming to the - // "net.host.connection.type" semantic conventions. It represents the - // internet connection type currently being used by the host. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Examples: 'wifi' - NetHostConnectionTypeKey = attribute.Key("net.host.connection.type") - - // NetHostConnectionSubtypeKey is the attribute Key conforming to the - // "net.host.connection.subtype" semantic conventions. It represents the - // this describes more details regarding the connection.type. It may be the - // type of cell technology connection, but it could be used for describing - // details about a wifi connection. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Examples: 'LTE' - NetHostConnectionSubtypeKey = attribute.Key("net.host.connection.subtype") - - // NetHostCarrierNameKey is the attribute Key conforming to the - // "net.host.carrier.name" semantic conventions. It represents the name of - // the mobile carrier. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'sprint' - NetHostCarrierNameKey = attribute.Key("net.host.carrier.name") - - // NetHostCarrierMccKey is the attribute Key conforming to the - // "net.host.carrier.mcc" semantic conventions. It represents the mobile - // carrier country code. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '310' - NetHostCarrierMccKey = attribute.Key("net.host.carrier.mcc") - - // NetHostCarrierMncKey is the attribute Key conforming to the - // "net.host.carrier.mnc" semantic conventions. It represents the mobile - // carrier network code. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '001' - NetHostCarrierMncKey = attribute.Key("net.host.carrier.mnc") - - // NetHostCarrierIccKey is the attribute Key conforming to the - // "net.host.carrier.icc" semantic conventions. It represents the ISO - // 3166-1 alpha-2 2-character country code associated with the mobile - // carrier network. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'DE' - NetHostCarrierIccKey = attribute.Key("net.host.carrier.icc") -) - -var ( - // ip_tcp - NetTransportTCP = NetTransportKey.String("ip_tcp") - // ip_udp - NetTransportUDP = NetTransportKey.String("ip_udp") - // Named or anonymous pipe. See note below - NetTransportPipe = NetTransportKey.String("pipe") - // In-process communication - NetTransportInProc = NetTransportKey.String("inproc") - // Something else (non IP-based) - NetTransportOther = NetTransportKey.String("other") -) - -var ( - // IPv4 address - NetSockFamilyInet = NetSockFamilyKey.String("inet") - // IPv6 address - NetSockFamilyInet6 = NetSockFamilyKey.String("inet6") - // Unix domain socket path - NetSockFamilyUnix = NetSockFamilyKey.String("unix") -) - -var ( - // wifi - NetHostConnectionTypeWifi = NetHostConnectionTypeKey.String("wifi") - // wired - NetHostConnectionTypeWired = NetHostConnectionTypeKey.String("wired") - // cell - NetHostConnectionTypeCell = NetHostConnectionTypeKey.String("cell") - // unavailable - NetHostConnectionTypeUnavailable = NetHostConnectionTypeKey.String("unavailable") - // unknown - NetHostConnectionTypeUnknown = NetHostConnectionTypeKey.String("unknown") -) - -var ( - // GPRS - NetHostConnectionSubtypeGprs = NetHostConnectionSubtypeKey.String("gprs") - // EDGE - NetHostConnectionSubtypeEdge = NetHostConnectionSubtypeKey.String("edge") - // UMTS - NetHostConnectionSubtypeUmts = NetHostConnectionSubtypeKey.String("umts") - // CDMA - NetHostConnectionSubtypeCdma = NetHostConnectionSubtypeKey.String("cdma") - // EVDO Rel. 0 - NetHostConnectionSubtypeEvdo0 = NetHostConnectionSubtypeKey.String("evdo_0") - // EVDO Rev. A - NetHostConnectionSubtypeEvdoA = NetHostConnectionSubtypeKey.String("evdo_a") - // CDMA2000 1XRTT - NetHostConnectionSubtypeCdma20001xrtt = NetHostConnectionSubtypeKey.String("cdma2000_1xrtt") - // HSDPA - NetHostConnectionSubtypeHsdpa = NetHostConnectionSubtypeKey.String("hsdpa") - // HSUPA - NetHostConnectionSubtypeHsupa = NetHostConnectionSubtypeKey.String("hsupa") - // HSPA - NetHostConnectionSubtypeHspa = NetHostConnectionSubtypeKey.String("hspa") - // IDEN - NetHostConnectionSubtypeIden = NetHostConnectionSubtypeKey.String("iden") - // EVDO Rev. B - NetHostConnectionSubtypeEvdoB = NetHostConnectionSubtypeKey.String("evdo_b") - // LTE - NetHostConnectionSubtypeLte = NetHostConnectionSubtypeKey.String("lte") - // EHRPD - NetHostConnectionSubtypeEhrpd = NetHostConnectionSubtypeKey.String("ehrpd") - // HSPAP - NetHostConnectionSubtypeHspap = NetHostConnectionSubtypeKey.String("hspap") - // GSM - NetHostConnectionSubtypeGsm = NetHostConnectionSubtypeKey.String("gsm") - // TD-SCDMA - NetHostConnectionSubtypeTdScdma = NetHostConnectionSubtypeKey.String("td_scdma") - // IWLAN - NetHostConnectionSubtypeIwlan = NetHostConnectionSubtypeKey.String("iwlan") - // 5G NR (New Radio) - NetHostConnectionSubtypeNr = NetHostConnectionSubtypeKey.String("nr") - // 5G NRNSA (New Radio Non-Standalone) - NetHostConnectionSubtypeNrnsa = NetHostConnectionSubtypeKey.String("nrnsa") - // LTE CA - NetHostConnectionSubtypeLteCa = NetHostConnectionSubtypeKey.String("lte_ca") -) - -// NetAppProtocolName returns an attribute KeyValue conforming to the -// "net.app.protocol.name" semantic conventions. It represents the application -// layer protocol used. The value SHOULD be normalized to lowercase. -func NetAppProtocolName(val string) attribute.KeyValue { - return NetAppProtocolNameKey.String(val) -} - -// NetAppProtocolVersion returns an attribute KeyValue conforming to the -// "net.app.protocol.version" semantic conventions. It represents the version -// of the application layer protocol used. See note below. -func NetAppProtocolVersion(val string) attribute.KeyValue { - return NetAppProtocolVersionKey.String(val) -} - -// NetSockPeerName returns an attribute KeyValue conforming to the -// "net.sock.peer.name" semantic conventions. It represents the remote socket -// peer name. -func NetSockPeerName(val string) attribute.KeyValue { - return NetSockPeerNameKey.String(val) -} - -// NetSockPeerAddr returns an attribute KeyValue conforming to the -// "net.sock.peer.addr" semantic conventions. It represents the remote socket -// peer address: IPv4 or IPv6 for internet protocols, path for local -// communication, -// [etc](https://man7.org/linux/man-pages/man7/address_families.7.html). -func NetSockPeerAddr(val string) attribute.KeyValue { - return NetSockPeerAddrKey.String(val) -} - -// NetSockPeerPort returns an attribute KeyValue conforming to the -// "net.sock.peer.port" semantic conventions. It represents the remote socket -// peer port. -func NetSockPeerPort(val int) attribute.KeyValue { - return NetSockPeerPortKey.Int(val) -} - -// NetPeerName returns an attribute KeyValue conforming to the -// "net.peer.name" semantic conventions. It represents the logical remote -// hostname, see note below. -func NetPeerName(val string) attribute.KeyValue { - return NetPeerNameKey.String(val) -} - -// NetPeerPort returns an attribute KeyValue conforming to the -// "net.peer.port" semantic conventions. It represents the logical remote port -// number -func NetPeerPort(val int) attribute.KeyValue { - return NetPeerPortKey.Int(val) -} - -// NetHostName returns an attribute KeyValue conforming to the -// "net.host.name" semantic conventions. It represents the logical local -// hostname or similar, see note below. -func NetHostName(val string) attribute.KeyValue { - return NetHostNameKey.String(val) -} - -// NetHostPort returns an attribute KeyValue conforming to the -// "net.host.port" semantic conventions. It represents the logical local port -// number, preferably the one that the peer used to connect -func NetHostPort(val int) attribute.KeyValue { - return NetHostPortKey.Int(val) -} - -// NetSockHostAddr returns an attribute KeyValue conforming to the -// "net.sock.host.addr" semantic conventions. It represents the local socket -// address. Useful in case of a multi-IP host. -func NetSockHostAddr(val string) attribute.KeyValue { - return NetSockHostAddrKey.String(val) -} - -// NetSockHostPort returns an attribute KeyValue conforming to the -// "net.sock.host.port" semantic conventions. It represents the local socket -// port number. -func NetSockHostPort(val int) attribute.KeyValue { - return NetSockHostPortKey.Int(val) -} - -// NetHostCarrierName returns an attribute KeyValue conforming to the -// "net.host.carrier.name" semantic conventions. It represents the name of the -// mobile carrier. -func NetHostCarrierName(val string) attribute.KeyValue { - return NetHostCarrierNameKey.String(val) -} - -// NetHostCarrierMcc returns an attribute KeyValue conforming to the -// "net.host.carrier.mcc" semantic conventions. It represents the mobile -// carrier country code. -func NetHostCarrierMcc(val string) attribute.KeyValue { - return NetHostCarrierMccKey.String(val) -} - -// NetHostCarrierMnc returns an attribute KeyValue conforming to the -// "net.host.carrier.mnc" semantic conventions. It represents the mobile -// carrier network code. -func NetHostCarrierMnc(val string) attribute.KeyValue { - return NetHostCarrierMncKey.String(val) -} - -// NetHostCarrierIcc returns an attribute KeyValue conforming to the -// "net.host.carrier.icc" semantic conventions. It represents the ISO 3166-1 -// alpha-2 2-character country code associated with the mobile carrier network. -func NetHostCarrierIcc(val string) attribute.KeyValue { - return NetHostCarrierIccKey.String(val) -} - -// Operations that access some remote service. -const ( - // PeerServiceKey is the attribute Key conforming to the "peer.service" - // semantic conventions. It represents the - // [`service.name`](../../resource/semantic_conventions/README.md#service) - // of the remote service. SHOULD be equal to the actual `service.name` - // resource attribute of the remote service if any. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'AuthTokenCache' - PeerServiceKey = attribute.Key("peer.service") -) - -// PeerService returns an attribute KeyValue conforming to the -// "peer.service" semantic conventions. It represents the -// [`service.name`](../../resource/semantic_conventions/README.md#service) of -// the remote service. SHOULD be equal to the actual `service.name` resource -// attribute of the remote service if any. -func PeerService(val string) attribute.KeyValue { - return PeerServiceKey.String(val) -} - -// These attributes may be used for any operation with an authenticated and/or -// authorized enduser. -const ( - // EnduserIDKey is the attribute Key conforming to the "enduser.id" - // semantic conventions. It represents the username or client_id extracted - // from the access token or - // [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header - // in the inbound request from outside the system. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'username' - EnduserIDKey = attribute.Key("enduser.id") - - // EnduserRoleKey is the attribute Key conforming to the "enduser.role" - // semantic conventions. It represents the actual/assumed role the client - // is making the request under extracted from token or application security - // context. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'admin' - EnduserRoleKey = attribute.Key("enduser.role") - - // EnduserScopeKey is the attribute Key conforming to the "enduser.scope" - // semantic conventions. It represents the scopes or granted authorities - // the client currently possesses extracted from token or application - // security context. The value would come from the scope associated with an - // [OAuth 2.0 Access - // Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute - // value in a [SAML 2.0 - // Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'read:message, write:files' - EnduserScopeKey = attribute.Key("enduser.scope") -) - -// EnduserID returns an attribute KeyValue conforming to the "enduser.id" -// semantic conventions. It represents the username or client_id extracted from -// the access token or -// [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in -// the inbound request from outside the system. -func EnduserID(val string) attribute.KeyValue { - return EnduserIDKey.String(val) -} - -// EnduserRole returns an attribute KeyValue conforming to the -// "enduser.role" semantic conventions. It represents the actual/assumed role -// the client is making the request under extracted from token or application -// security context. -func EnduserRole(val string) attribute.KeyValue { - return EnduserRoleKey.String(val) -} - -// EnduserScope returns an attribute KeyValue conforming to the -// "enduser.scope" semantic conventions. It represents the scopes or granted -// authorities the client currently possesses extracted from token or -// application security context. The value would come from the scope associated -// with an [OAuth 2.0 Access -// Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute -// value in a [SAML 2.0 -// Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). -func EnduserScope(val string) attribute.KeyValue { - return EnduserScopeKey.String(val) -} - -// These attributes may be used for any operation to store information about a -// thread that started a span. -const ( - // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic - // conventions. It represents the current "managed" thread ID (as opposed - // to OS thread ID). - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 42 - ThreadIDKey = attribute.Key("thread.id") - - // ThreadNameKey is the attribute Key conforming to the "thread.name" - // semantic conventions. It represents the current thread name. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'main' - ThreadNameKey = attribute.Key("thread.name") -) - -// ThreadID returns an attribute KeyValue conforming to the "thread.id" -// semantic conventions. It represents the current "managed" thread ID (as -// opposed to OS thread ID). -func ThreadID(val int) attribute.KeyValue { - return ThreadIDKey.Int(val) -} - -// ThreadName returns an attribute KeyValue conforming to the "thread.name" -// semantic conventions. It represents the current thread name. -func ThreadName(val string) attribute.KeyValue { - return ThreadNameKey.String(val) -} - -// These attributes allow to report this unit of code and therefore to provide -// more context about the span. -const ( - // CodeFunctionKey is the attribute Key conforming to the "code.function" - // semantic conventions. It represents the method or function name, or - // equivalent (usually rightmost part of the code unit's name). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'serveRequest' - CodeFunctionKey = attribute.Key("code.function") - - // CodeNamespaceKey is the attribute Key conforming to the "code.namespace" - // semantic conventions. It represents the "namespace" within which - // `code.function` is defined. Usually the qualified class or module name, - // such that `code.namespace` + some separator + `code.function` form a - // unique identifier for the code unit. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'com.example.MyHTTPService' - CodeNamespaceKey = attribute.Key("code.namespace") - - // CodeFilepathKey is the attribute Key conforming to the "code.filepath" - // semantic conventions. It represents the source code file name that - // identifies the code unit as uniquely as possible (preferably an absolute - // file path). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '/usr/local/MyApplication/content_root/app/index.php' - CodeFilepathKey = attribute.Key("code.filepath") - - // CodeLineNumberKey is the attribute Key conforming to the "code.lineno" - // semantic conventions. It represents the line number in `code.filepath` - // best representing the operation. It SHOULD point within the code unit - // named in `code.function`. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 42 - CodeLineNumberKey = attribute.Key("code.lineno") - - // CodeColumnKey is the attribute Key conforming to the "code.column" - // semantic conventions. It represents the column number in `code.filepath` - // best representing the operation. It SHOULD point within the code unit - // named in `code.function`. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 16 - CodeColumnKey = attribute.Key("code.column") -) - -// CodeFunction returns an attribute KeyValue conforming to the -// "code.function" semantic conventions. It represents the method or function -// name, or equivalent (usually rightmost part of the code unit's name). -func CodeFunction(val string) attribute.KeyValue { - return CodeFunctionKey.String(val) -} - -// CodeNamespace returns an attribute KeyValue conforming to the -// "code.namespace" semantic conventions. It represents the "namespace" within -// which `code.function` is defined. Usually the qualified class or module -// name, such that `code.namespace` + some separator + `code.function` form a -// unique identifier for the code unit. -func CodeNamespace(val string) attribute.KeyValue { - return CodeNamespaceKey.String(val) -} - -// CodeFilepath returns an attribute KeyValue conforming to the -// "code.filepath" semantic conventions. It represents the source code file -// name that identifies the code unit as uniquely as possible (preferably an -// absolute file path). -func CodeFilepath(val string) attribute.KeyValue { - return CodeFilepathKey.String(val) -} - -// CodeLineNumber returns an attribute KeyValue conforming to the "code.lineno" -// semantic conventions. It represents the line number in `code.filepath` best -// representing the operation. It SHOULD point within the code unit named in -// `code.function`. -func CodeLineNumber(val int) attribute.KeyValue { - return CodeLineNumberKey.Int(val) -} - -// CodeColumn returns an attribute KeyValue conforming to the "code.column" -// semantic conventions. It represents the column number in `code.filepath` -// best representing the operation. It SHOULD point within the code unit named -// in `code.function`. -func CodeColumn(val int) attribute.KeyValue { - return CodeColumnKey.Int(val) -} - -// Semantic conventions for HTTP client and server Spans. -const ( - // HTTPMethodKey is the attribute Key conforming to the "http.method" - // semantic conventions. It represents the hTTP request method. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'GET', 'POST', 'HEAD' - HTTPMethodKey = attribute.Key("http.method") - - // HTTPStatusCodeKey is the attribute Key conforming to the - // "http.status_code" semantic conventions. It represents the [HTTP - // response status code](https://tools.ietf.org/html/rfc7231#section-6). - // - // Type: int - // RequirementLevel: ConditionallyRequired (If and only if one was - // received/sent.) - // Stability: stable - // Examples: 200 - HTTPStatusCodeKey = attribute.Key("http.status_code") - - // HTTPFlavorKey is the attribute Key conforming to the "http.flavor" - // semantic conventions. It represents the kind of HTTP protocol used. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Note: If `net.transport` is not specified, it can be assumed to be - // `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is - // assumed. - HTTPFlavorKey = attribute.Key("http.flavor") - - // HTTPUserAgentKey is the attribute Key conforming to the - // "http.user_agent" semantic conventions. It represents the value of the - // [HTTP - // User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) - // header sent by the client. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'CERN-LineMode/2.15 libwww/2.17b3' - HTTPUserAgentKey = attribute.Key("http.user_agent") - - // HTTPRequestContentLengthKey is the attribute Key conforming to the - // "http.request_content_length" semantic conventions. It represents the - // size of the request payload body in bytes. This is the number of bytes - // transferred excluding headers and is often, but not always, present as - // the - // [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) - // header. For requests using transport encoding, this should be the - // compressed size. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 3495 - HTTPRequestContentLengthKey = attribute.Key("http.request_content_length") - - // HTTPResponseContentLengthKey is the attribute Key conforming to the - // "http.response_content_length" semantic conventions. It represents the - // size of the response payload body in bytes. This is the number of bytes - // transferred excluding headers and is often, but not always, present as - // the - // [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) - // header. For requests using transport encoding, this should be the - // compressed size. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 3495 - HTTPResponseContentLengthKey = attribute.Key("http.response_content_length") -) - -var ( - // HTTP/1.0 - HTTPFlavorHTTP10 = HTTPFlavorKey.String("1.0") - // HTTP/1.1 - HTTPFlavorHTTP11 = HTTPFlavorKey.String("1.1") - // HTTP/2 - HTTPFlavorHTTP20 = HTTPFlavorKey.String("2.0") - // HTTP/3 - HTTPFlavorHTTP30 = HTTPFlavorKey.String("3.0") - // SPDY protocol - HTTPFlavorSPDY = HTTPFlavorKey.String("SPDY") - // QUIC protocol - HTTPFlavorQUIC = HTTPFlavorKey.String("QUIC") -) - -// HTTPMethod returns an attribute KeyValue conforming to the "http.method" -// semantic conventions. It represents the hTTP request method. -func HTTPMethod(val string) attribute.KeyValue { - return HTTPMethodKey.String(val) -} - -// HTTPStatusCode returns an attribute KeyValue conforming to the -// "http.status_code" semantic conventions. It represents the [HTTP response -// status code](https://tools.ietf.org/html/rfc7231#section-6). -func HTTPStatusCode(val int) attribute.KeyValue { - return HTTPStatusCodeKey.Int(val) -} - -// HTTPUserAgent returns an attribute KeyValue conforming to the -// "http.user_agent" semantic conventions. It represents the value of the [HTTP -// User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) -// header sent by the client. -func HTTPUserAgent(val string) attribute.KeyValue { - return HTTPUserAgentKey.String(val) -} - -// HTTPRequestContentLength returns an attribute KeyValue conforming to the -// "http.request_content_length" semantic conventions. It represents the size -// of the request payload body in bytes. This is the number of bytes -// transferred excluding headers and is often, but not always, present as the -// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) -// header. For requests using transport encoding, this should be the compressed -// size. -func HTTPRequestContentLength(val int) attribute.KeyValue { - return HTTPRequestContentLengthKey.Int(val) -} - -// HTTPResponseContentLength returns an attribute KeyValue conforming to the -// "http.response_content_length" semantic conventions. It represents the size -// of the response payload body in bytes. This is the number of bytes -// transferred excluding headers and is often, but not always, present as the -// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) -// header. For requests using transport encoding, this should be the compressed -// size. -func HTTPResponseContentLength(val int) attribute.KeyValue { - return HTTPResponseContentLengthKey.Int(val) -} - -// Semantic Convention for HTTP Client -const ( - // HTTPURLKey is the attribute Key conforming to the "http.url" semantic - // conventions. It represents the full HTTP request URL in the form - // `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is - // not transmitted over HTTP, but if it is known, it should be included - // nevertheless. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv' - // Note: `http.url` MUST NOT contain credentials passed via URL in form of - // `https://username:password@www.example.com/`. In such case the - // attribute's value should be `https://www.example.com/`. - HTTPURLKey = attribute.Key("http.url") - - // HTTPResendCountKey is the attribute Key conforming to the - // "http.resend_count" semantic conventions. It represents the ordinal - // number of request resending attempt (for any reason, including - // redirects). - // - // Type: int - // RequirementLevel: Recommended (if and only if request was retried.) - // Stability: stable - // Examples: 3 - // Note: The resend count SHOULD be updated each time an HTTP request gets - // resent by the client, regardless of what was the cause of the resending - // (e.g. redirection, authorization failure, 503 Server Unavailable, - // network issues, or any other). - HTTPResendCountKey = attribute.Key("http.resend_count") -) - -// HTTPURL returns an attribute KeyValue conforming to the "http.url" -// semantic conventions. It represents the full HTTP request URL in the form -// `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not -// transmitted over HTTP, but if it is known, it should be included -// nevertheless. -func HTTPURL(val string) attribute.KeyValue { - return HTTPURLKey.String(val) -} - -// HTTPResendCount returns an attribute KeyValue conforming to the -// "http.resend_count" semantic conventions. It represents the ordinal number -// of request resending attempt (for any reason, including redirects). -func HTTPResendCount(val int) attribute.KeyValue { - return HTTPResendCountKey.Int(val) -} - -// Semantic Convention for HTTP Server -const ( - // HTTPSchemeKey is the attribute Key conforming to the "http.scheme" - // semantic conventions. It represents the URI scheme identifying the used - // protocol. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'http', 'https' - HTTPSchemeKey = attribute.Key("http.scheme") - - // HTTPTargetKey is the attribute Key conforming to the "http.target" - // semantic conventions. It represents the full request target as passed in - // a HTTP request line or equivalent. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: '/path/12314/?q=ddds' - HTTPTargetKey = attribute.Key("http.target") - - // HTTPRouteKey is the attribute Key conforming to the "http.route" - // semantic conventions. It represents the matched route (path template in - // the format used by the respective server framework). See note below - // - // Type: string - // RequirementLevel: ConditionallyRequired (If and only if it's available) - // Stability: stable - // Examples: '/users/:userID?', '{controller}/{action}/{id?}' - // Note: 'http.route' MUST NOT be populated when this is not supported by - // the HTTP server framework as the route attribute should have - // low-cardinality and the URI path can NOT substitute it. - HTTPRouteKey = attribute.Key("http.route") - - // HTTPClientIPKey is the attribute Key conforming to the "http.client_ip" - // semantic conventions. It represents the IP address of the original - // client behind all proxies, if known (e.g. from - // [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)). - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '83.164.160.102' - // Note: This is not necessarily the same as `net.sock.peer.addr`, which - // would - // identify the network-level peer, which may be a proxy. - // - // This attribute should be set when a source of information different - // from the one used for `net.sock.peer.addr`, is available even if that - // other - // source just confirms the same value as `net.sock.peer.addr`. - // Rationale: For `net.sock.peer.addr`, one typically does not know if it - // comes from a proxy, reverse proxy, or the actual client. Setting - // `http.client_ip` when it's the same as `net.sock.peer.addr` means that - // one is at least somewhat confident that the address is not that of - // the closest proxy. - HTTPClientIPKey = attribute.Key("http.client_ip") -) - -// HTTPScheme returns an attribute KeyValue conforming to the "http.scheme" -// semantic conventions. It represents the URI scheme identifying the used -// protocol. -func HTTPScheme(val string) attribute.KeyValue { - return HTTPSchemeKey.String(val) -} - -// HTTPTarget returns an attribute KeyValue conforming to the "http.target" -// semantic conventions. It represents the full request target as passed in a -// HTTP request line or equivalent. -func HTTPTarget(val string) attribute.KeyValue { - return HTTPTargetKey.String(val) -} - -// HTTPRoute returns an attribute KeyValue conforming to the "http.route" -// semantic conventions. It represents the matched route (path template in the -// format used by the respective server framework). See note below -func HTTPRoute(val string) attribute.KeyValue { - return HTTPRouteKey.String(val) -} - -// HTTPClientIP returns an attribute KeyValue conforming to the -// "http.client_ip" semantic conventions. It represents the IP address of the -// original client behind all proxies, if known (e.g. from -// [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)). -func HTTPClientIP(val string) attribute.KeyValue { - return HTTPClientIPKey.String(val) -} - -// Attributes that exist for multiple DynamoDB request types. -const ( - // AWSDynamoDBTableNamesKey is the attribute Key conforming to the - // "aws.dynamodb.table_names" semantic conventions. It represents the keys - // in the `RequestItems` object field. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Users', 'Cats' - AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names") - - // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the - // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the - // JSON-serialized value of each item in the `ConsumedCapacity` response - // field. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "CapacityUnits": number, "GlobalSecondaryIndexes": { - // "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, - // "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : - // { "CapacityUnits": number, "ReadCapacityUnits": number, - // "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": - // { "CapacityUnits": number, "ReadCapacityUnits": number, - // "WriteCapacityUnits": number }, "TableName": "string", - // "WriteCapacityUnits": number }' - AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity") - - // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to - // the "aws.dynamodb.item_collection_metrics" semantic conventions. It - // represents the JSON-serialized value of the `ItemCollectionMetrics` - // response field. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "string" : [ { "ItemCollectionKey": { "string" : { "B": - // blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { - // "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], - // "NULL": boolean, "S": "string", "SS": [ "string" ] } }, - // "SizeEstimateRangeGB": [ number ] } ] }' - AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics") - - // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to - // the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It - // represents the value of the `ProvisionedThroughput.ReadCapacityUnits` - // request parameter. - // - // Type: double - // RequirementLevel: Optional - // Stability: stable - // Examples: 1.0, 2.0 - AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity") - - // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming - // to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. - // It represents the value of the - // `ProvisionedThroughput.WriteCapacityUnits` request parameter. - // - // Type: double - // RequirementLevel: Optional - // Stability: stable - // Examples: 1.0, 2.0 - AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity") - - // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the - // "aws.dynamodb.consistent_read" semantic conventions. It represents the - // value of the `ConsistentRead` request parameter. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read") - - // AWSDynamoDBProjectionKey is the attribute Key conforming to the - // "aws.dynamodb.projection" semantic conventions. It represents the value - // of the `ProjectionExpression` request parameter. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Title', 'Title, Price, Color', 'Title, Description, - // RelatedItems, ProductReviews' - AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection") - - // AWSDynamoDBLimitKey is the attribute Key conforming to the - // "aws.dynamodb.limit" semantic conventions. It represents the value of - // the `Limit` request parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 10 - AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit") - - // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the - // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the - // value of the `AttributesToGet` request parameter. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: 'lives', 'id' - AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get") - - // AWSDynamoDBIndexNameKey is the attribute Key conforming to the - // "aws.dynamodb.index_name" semantic conventions. It represents the value - // of the `IndexName` request parameter. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'name_to_group' - AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name") - - // AWSDynamoDBSelectKey is the attribute Key conforming to the - // "aws.dynamodb.select" semantic conventions. It represents the value of - // the `Select` request parameter. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'ALL_ATTRIBUTES', 'COUNT' - AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select") -) - -// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the -// "aws.dynamodb.table_names" semantic conventions. It represents the keys in -// the `RequestItems` object field. -func AWSDynamoDBTableNames(val ...string) attribute.KeyValue { - return AWSDynamoDBTableNamesKey.StringSlice(val) -} - -// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to -// the "aws.dynamodb.consumed_capacity" semantic conventions. It represents the -// JSON-serialized value of each item in the `ConsumedCapacity` response field. -func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue { - return AWSDynamoDBConsumedCapacityKey.StringSlice(val) -} - -// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming -// to the "aws.dynamodb.item_collection_metrics" semantic conventions. It -// represents the JSON-serialized value of the `ItemCollectionMetrics` response -// field. -func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue { - return AWSDynamoDBItemCollectionMetricsKey.String(val) -} - -// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue -// conforming to the "aws.dynamodb.provisioned_read_capacity" semantic -// conventions. It represents the value of the -// `ProvisionedThroughput.ReadCapacityUnits` request parameter. -func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue { - return AWSDynamoDBProvisionedReadCapacityKey.Float64(val) -} - -// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue -// conforming to the "aws.dynamodb.provisioned_write_capacity" semantic -// conventions. It represents the value of the -// `ProvisionedThroughput.WriteCapacityUnits` request parameter. -func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue { - return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val) -} - -// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the -// "aws.dynamodb.consistent_read" semantic conventions. It represents the value -// of the `ConsistentRead` request parameter. -func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue { - return AWSDynamoDBConsistentReadKey.Bool(val) -} - -// AWSDynamoDBProjection returns an attribute KeyValue conforming to the -// "aws.dynamodb.projection" semantic conventions. It represents the value of -// the `ProjectionExpression` request parameter. -func AWSDynamoDBProjection(val string) attribute.KeyValue { - return AWSDynamoDBProjectionKey.String(val) -} - -// AWSDynamoDBLimit returns an attribute KeyValue conforming to the -// "aws.dynamodb.limit" semantic conventions. It represents the value of the -// `Limit` request parameter. -func AWSDynamoDBLimit(val int) attribute.KeyValue { - return AWSDynamoDBLimitKey.Int(val) -} - -// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to -// the "aws.dynamodb.attributes_to_get" semantic conventions. It represents the -// value of the `AttributesToGet` request parameter. -func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue { - return AWSDynamoDBAttributesToGetKey.StringSlice(val) -} - -// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the -// "aws.dynamodb.index_name" semantic conventions. It represents the value of -// the `IndexName` request parameter. -func AWSDynamoDBIndexName(val string) attribute.KeyValue { - return AWSDynamoDBIndexNameKey.String(val) -} - -// AWSDynamoDBSelect returns an attribute KeyValue conforming to the -// "aws.dynamodb.select" semantic conventions. It represents the value of the -// `Select` request parameter. -func AWSDynamoDBSelect(val string) attribute.KeyValue { - return AWSDynamoDBSelectKey.String(val) -} - -// DynamoDB.CreateTable -const ( - // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to - // the "aws.dynamodb.global_secondary_indexes" semantic conventions. It - // represents the JSON-serialized value of each item of the - // `GlobalSecondaryIndexes` request field - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "IndexName": "string", "KeySchema": [ { "AttributeName": - // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ - // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { - // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }' - AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes") - - // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to - // the "aws.dynamodb.local_secondary_indexes" semantic conventions. It - // represents the JSON-serialized value of each item of the - // `LocalSecondaryIndexes` request field. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "IndexARN": "string", "IndexName": "string", - // "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { - // "AttributeName": "string", "KeyType": "string" } ], "Projection": { - // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }' - AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes") -) - -// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue -// conforming to the "aws.dynamodb.global_secondary_indexes" semantic -// conventions. It represents the JSON-serialized value of each item of the -// `GlobalSecondaryIndexes` request field -func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue { - return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val) -} - -// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming -// to the "aws.dynamodb.local_secondary_indexes" semantic conventions. It -// represents the JSON-serialized value of each item of the -// `LocalSecondaryIndexes` request field. -func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue { - return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val) -} - -// DynamoDB.ListTables -const ( - // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the - // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents - // the value of the `ExclusiveStartTableName` request parameter. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Users', 'CatsTable' - AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table") - - // AWSDynamoDBTableCountKey is the attribute Key conforming to the - // "aws.dynamodb.table_count" semantic conventions. It represents the the - // number of items in the `TableNames` response parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 20 - AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count") -) - -// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming -// to the "aws.dynamodb.exclusive_start_table" semantic conventions. It -// represents the value of the `ExclusiveStartTableName` request parameter. -func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue { - return AWSDynamoDBExclusiveStartTableKey.String(val) -} - -// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the -// "aws.dynamodb.table_count" semantic conventions. It represents the the -// number of items in the `TableNames` response parameter. -func AWSDynamoDBTableCount(val int) attribute.KeyValue { - return AWSDynamoDBTableCountKey.Int(val) -} - -// DynamoDB.Query -const ( - // AWSDynamoDBScanForwardKey is the attribute Key conforming to the - // "aws.dynamodb.scan_forward" semantic conventions. It represents the - // value of the `ScanIndexForward` request parameter. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward") -) - -// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the -// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of -// the `ScanIndexForward` request parameter. -func AWSDynamoDBScanForward(val bool) attribute.KeyValue { - return AWSDynamoDBScanForwardKey.Bool(val) -} - -// DynamoDB.Scan -const ( - // AWSDynamoDBSegmentKey is the attribute Key conforming to the - // "aws.dynamodb.segment" semantic conventions. It represents the value of - // the `Segment` request parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 10 - AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment") - - // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the - // "aws.dynamodb.total_segments" semantic conventions. It represents the - // value of the `TotalSegments` request parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 100 - AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments") - - // AWSDynamoDBCountKey is the attribute Key conforming to the - // "aws.dynamodb.count" semantic conventions. It represents the value of - // the `Count` response parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 10 - AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count") - - // AWSDynamoDBScannedCountKey is the attribute Key conforming to the - // "aws.dynamodb.scanned_count" semantic conventions. It represents the - // value of the `ScannedCount` response parameter. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 50 - AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count") -) - -// AWSDynamoDBSegment returns an attribute KeyValue conforming to the -// "aws.dynamodb.segment" semantic conventions. It represents the value of the -// `Segment` request parameter. -func AWSDynamoDBSegment(val int) attribute.KeyValue { - return AWSDynamoDBSegmentKey.Int(val) -} - -// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the -// "aws.dynamodb.total_segments" semantic conventions. It represents the value -// of the `TotalSegments` request parameter. -func AWSDynamoDBTotalSegments(val int) attribute.KeyValue { - return AWSDynamoDBTotalSegmentsKey.Int(val) -} - -// AWSDynamoDBCount returns an attribute KeyValue conforming to the -// "aws.dynamodb.count" semantic conventions. It represents the value of the -// `Count` response parameter. -func AWSDynamoDBCount(val int) attribute.KeyValue { - return AWSDynamoDBCountKey.Int(val) -} - -// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the -// "aws.dynamodb.scanned_count" semantic conventions. It represents the value -// of the `ScannedCount` response parameter. -func AWSDynamoDBScannedCount(val int) attribute.KeyValue { - return AWSDynamoDBScannedCountKey.Int(val) -} - -// DynamoDB.UpdateTable -const ( - // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to - // the "aws.dynamodb.attribute_definitions" semantic conventions. It - // represents the JSON-serialized value of each item in the - // `AttributeDefinitions` request field. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "AttributeName": "string", "AttributeType": "string" }' - AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions") - - // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key - // conforming to the "aws.dynamodb.global_secondary_index_updates" semantic - // conventions. It represents the JSON-serialized value of each item in the - // the `GlobalSecondaryIndexUpdates` request field. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: '{ "Create": { "IndexName": "string", "KeySchema": [ { - // "AttributeName": "string", "KeyType": "string" } ], "Projection": { - // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, - // "ProvisionedThroughput": { "ReadCapacityUnits": number, - // "WriteCapacityUnits": number } }' - AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates") -) - -// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming -// to the "aws.dynamodb.attribute_definitions" semantic conventions. It -// represents the JSON-serialized value of each item in the -// `AttributeDefinitions` request field. -func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue { - return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val) -} - -// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue -// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic -// conventions. It represents the JSON-serialized value of each item in the the -// `GlobalSecondaryIndexUpdates` request field. -func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue { - return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val) -} - -// Semantic conventions to apply when instrumenting the GraphQL implementation. -// They map GraphQL operations to attributes on a Span. -const ( - // GraphqlOperationNameKey is the attribute Key conforming to the - // "graphql.operation.name" semantic conventions. It represents the name of - // the operation being executed. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'findBookByID' - GraphqlOperationNameKey = attribute.Key("graphql.operation.name") - - // GraphqlOperationTypeKey is the attribute Key conforming to the - // "graphql.operation.type" semantic conventions. It represents the type of - // the operation being executed. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - // Examples: 'query', 'mutation', 'subscription' - GraphqlOperationTypeKey = attribute.Key("graphql.operation.type") - - // GraphqlDocumentKey is the attribute Key conforming to the - // "graphql.document" semantic conventions. It represents the GraphQL - // document being executed. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'query findBookByID { bookByID(id: ?) { name } }' - // Note: The value may be sanitized to exclude sensitive information. - GraphqlDocumentKey = attribute.Key("graphql.document") -) - -var ( - // GraphQL query - GraphqlOperationTypeQuery = GraphqlOperationTypeKey.String("query") - // GraphQL mutation - GraphqlOperationTypeMutation = GraphqlOperationTypeKey.String("mutation") - // GraphQL subscription - GraphqlOperationTypeSubscription = GraphqlOperationTypeKey.String("subscription") -) - -// GraphqlOperationName returns an attribute KeyValue conforming to the -// "graphql.operation.name" semantic conventions. It represents the name of the -// operation being executed. -func GraphqlOperationName(val string) attribute.KeyValue { - return GraphqlOperationNameKey.String(val) -} - -// GraphqlDocument returns an attribute KeyValue conforming to the -// "graphql.document" semantic conventions. It represents the GraphQL document -// being executed. -func GraphqlDocument(val string) attribute.KeyValue { - return GraphqlDocumentKey.String(val) -} - -// Semantic convention describing per-message attributes populated on messaging -// spans or links. -const ( - // MessagingMessageIDKey is the attribute Key conforming to the - // "messaging.message.id" semantic conventions. It represents a value used - // by the messaging system as an identifier for the message, represented as - // a string. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '452a7c7c7c7048c2f887f61572b18fc2' - MessagingMessageIDKey = attribute.Key("messaging.message.id") - - // MessagingMessageConversationIDKey is the attribute Key conforming to the - // "messaging.message.conversation_id" semantic conventions. It represents - // the [conversation ID](#conversations) identifying the conversation to - // which the message belongs, represented as a string. Sometimes called - // "Correlation ID". - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'MyConversationID' - MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id") - - // MessagingMessagePayloadSizeBytesKey is the attribute Key conforming to - // the "messaging.message.payload_size_bytes" semantic conventions. It - // represents the (uncompressed) size of the message payload in bytes. Also - // use this attribute if it is unknown whether the compressed or - // uncompressed payload size is reported. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 2738 - MessagingMessagePayloadSizeBytesKey = attribute.Key("messaging.message.payload_size_bytes") - - // MessagingMessagePayloadCompressedSizeBytesKey is the attribute Key - // conforming to the "messaging.message.payload_compressed_size_bytes" - // semantic conventions. It represents the compressed size of the message - // payload in bytes. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 2048 - MessagingMessagePayloadCompressedSizeBytesKey = attribute.Key("messaging.message.payload_compressed_size_bytes") -) - -// MessagingMessageID returns an attribute KeyValue conforming to the -// "messaging.message.id" semantic conventions. It represents a value used by -// the messaging system as an identifier for the message, represented as a -// string. -func MessagingMessageID(val string) attribute.KeyValue { - return MessagingMessageIDKey.String(val) -} - -// MessagingMessageConversationID returns an attribute KeyValue conforming -// to the "messaging.message.conversation_id" semantic conventions. It -// represents the [conversation ID](#conversations) identifying the -// conversation to which the message belongs, represented as a string. -// Sometimes called "Correlation ID". -func MessagingMessageConversationID(val string) attribute.KeyValue { - return MessagingMessageConversationIDKey.String(val) -} - -// MessagingMessagePayloadSizeBytes returns an attribute KeyValue conforming -// to the "messaging.message.payload_size_bytes" semantic conventions. It -// represents the (uncompressed) size of the message payload in bytes. Also use -// this attribute if it is unknown whether the compressed or uncompressed -// payload size is reported. -func MessagingMessagePayloadSizeBytes(val int) attribute.KeyValue { - return MessagingMessagePayloadSizeBytesKey.Int(val) -} - -// MessagingMessagePayloadCompressedSizeBytes returns an attribute KeyValue -// conforming to the "messaging.message.payload_compressed_size_bytes" semantic -// conventions. It represents the compressed size of the message payload in -// bytes. -func MessagingMessagePayloadCompressedSizeBytes(val int) attribute.KeyValue { - return MessagingMessagePayloadCompressedSizeBytesKey.Int(val) -} - -// Semantic convention for attributes that describe messaging destination on -// broker -const ( - // MessagingDestinationNameKey is the attribute Key conforming to the - // "messaging.destination.name" semantic conventions. It represents the - // message destination name - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'MyQueue', 'MyTopic' - // Note: Destination name SHOULD uniquely identify a specific queue, topic - // or other entity within the broker. If - // the broker does not have such notion, the destination name SHOULD - // uniquely identify the broker. - MessagingDestinationNameKey = attribute.Key("messaging.destination.name") - - // MessagingDestinationKindKey is the attribute Key conforming to the - // "messaging.destination.kind" semantic conventions. It represents the - // kind of message destination - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - MessagingDestinationKindKey = attribute.Key("messaging.destination.kind") - - // MessagingDestinationTemplateKey is the attribute Key conforming to the - // "messaging.destination.template" semantic conventions. It represents the - // low cardinality representation of the messaging destination name - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '/customers/{customerID}' - // Note: Destination names could be constructed from templates. An example - // would be a destination name involving a user name or product id. - // Although the destination name in this case is of high cardinality, the - // underlying template is of low cardinality and can be effectively used - // for grouping and aggregation. - MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template") - - // MessagingDestinationTemporaryKey is the attribute Key conforming to the - // "messaging.destination.temporary" semantic conventions. It represents a - // boolean that is true if the message destination is temporary and might - // not exist anymore after messages are processed. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary") - - // MessagingDestinationAnonymousKey is the attribute Key conforming to the - // "messaging.destination.anonymous" semantic conventions. It represents a - // boolean that is true if the message destination is anonymous (could be - // unnamed or have auto-generated name). - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous") -) - -var ( - // A message sent to a queue - MessagingDestinationKindQueue = MessagingDestinationKindKey.String("queue") - // A message sent to a topic - MessagingDestinationKindTopic = MessagingDestinationKindKey.String("topic") -) - -// MessagingDestinationName returns an attribute KeyValue conforming to the -// "messaging.destination.name" semantic conventions. It represents the message -// destination name -func MessagingDestinationName(val string) attribute.KeyValue { - return MessagingDestinationNameKey.String(val) -} - -// MessagingDestinationTemplate returns an attribute KeyValue conforming to -// the "messaging.destination.template" semantic conventions. It represents the -// low cardinality representation of the messaging destination name -func MessagingDestinationTemplate(val string) attribute.KeyValue { - return MessagingDestinationTemplateKey.String(val) -} - -// MessagingDestinationTemporary returns an attribute KeyValue conforming to -// the "messaging.destination.temporary" semantic conventions. It represents a -// boolean that is true if the message destination is temporary and might not -// exist anymore after messages are processed. -func MessagingDestinationTemporary(val bool) attribute.KeyValue { - return MessagingDestinationTemporaryKey.Bool(val) -} - -// MessagingDestinationAnonymous returns an attribute KeyValue conforming to -// the "messaging.destination.anonymous" semantic conventions. It represents a -// boolean that is true if the message destination is anonymous (could be -// unnamed or have auto-generated name). -func MessagingDestinationAnonymous(val bool) attribute.KeyValue { - return MessagingDestinationAnonymousKey.Bool(val) -} - -// Semantic convention for attributes that describe messaging source on broker -const ( - // MessagingSourceNameKey is the attribute Key conforming to the - // "messaging.source.name" semantic conventions. It represents the message - // source name - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'MyQueue', 'MyTopic' - // Note: Source name SHOULD uniquely identify a specific queue, topic, or - // other entity within the broker. If - // the broker does not have such notion, the source name SHOULD uniquely - // identify the broker. - MessagingSourceNameKey = attribute.Key("messaging.source.name") - - // MessagingSourceKindKey is the attribute Key conforming to the - // "messaging.source.kind" semantic conventions. It represents the kind of - // message source - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - MessagingSourceKindKey = attribute.Key("messaging.source.kind") - - // MessagingSourceTemplateKey is the attribute Key conforming to the - // "messaging.source.template" semantic conventions. It represents the low - // cardinality representation of the messaging source name - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '/customers/{customerID}' - // Note: Source names could be constructed from templates. An example would - // be a source name involving a user name or product id. Although the - // source name in this case is of high cardinality, the underlying template - // is of low cardinality and can be effectively used for grouping and - // aggregation. - MessagingSourceTemplateKey = attribute.Key("messaging.source.template") - - // MessagingSourceTemporaryKey is the attribute Key conforming to the - // "messaging.source.temporary" semantic conventions. It represents a - // boolean that is true if the message source is temporary and might not - // exist anymore after messages are processed. - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - MessagingSourceTemporaryKey = attribute.Key("messaging.source.temporary") - - // MessagingSourceAnonymousKey is the attribute Key conforming to the - // "messaging.source.anonymous" semantic conventions. It represents a - // boolean that is true if the message source is anonymous (could be - // unnamed or have auto-generated name). - // - // Type: boolean - // RequirementLevel: Optional - // Stability: stable - MessagingSourceAnonymousKey = attribute.Key("messaging.source.anonymous") -) - -var ( - // A message received from a queue - MessagingSourceKindQueue = MessagingSourceKindKey.String("queue") - // A message received from a topic - MessagingSourceKindTopic = MessagingSourceKindKey.String("topic") -) - -// MessagingSourceName returns an attribute KeyValue conforming to the -// "messaging.source.name" semantic conventions. It represents the message -// source name -func MessagingSourceName(val string) attribute.KeyValue { - return MessagingSourceNameKey.String(val) -} - -// MessagingSourceTemplate returns an attribute KeyValue conforming to the -// "messaging.source.template" semantic conventions. It represents the low -// cardinality representation of the messaging source name -func MessagingSourceTemplate(val string) attribute.KeyValue { - return MessagingSourceTemplateKey.String(val) -} - -// MessagingSourceTemporary returns an attribute KeyValue conforming to the -// "messaging.source.temporary" semantic conventions. It represents a boolean -// that is true if the message source is temporary and might not exist anymore -// after messages are processed. -func MessagingSourceTemporary(val bool) attribute.KeyValue { - return MessagingSourceTemporaryKey.Bool(val) -} - -// MessagingSourceAnonymous returns an attribute KeyValue conforming to the -// "messaging.source.anonymous" semantic conventions. It represents a boolean -// that is true if the message source is anonymous (could be unnamed or have -// auto-generated name). -func MessagingSourceAnonymous(val bool) attribute.KeyValue { - return MessagingSourceAnonymousKey.Bool(val) -} - -// General attributes used in messaging systems. -const ( - // MessagingSystemKey is the attribute Key conforming to the - // "messaging.system" semantic conventions. It represents a string - // identifying the messaging system. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'kafka', 'rabbitmq', 'rocketmq', 'activemq', 'AmazonSQS' - MessagingSystemKey = attribute.Key("messaging.system") - - // MessagingOperationKey is the attribute Key conforming to the - // "messaging.operation" semantic conventions. It represents a string - // identifying the kind of messaging operation as defined in the [Operation - // names](#operation-names) section above. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - // Note: If a custom value is used, it MUST be of low cardinality. - MessagingOperationKey = attribute.Key("messaging.operation") - - // MessagingBatchMessageCountKey is the attribute Key conforming to the - // "messaging.batch.message_count" semantic conventions. It represents the - // number of messages sent, received, or processed in the scope of the - // batching operation. - // - // Type: int - // RequirementLevel: ConditionallyRequired (If the span describes an - // operation on a batch of messages.) - // Stability: stable - // Examples: 0, 1, 2 - // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on - // spans that operate with a single message. When a messaging client - // library supports both batch and single-message API for the same - // operation, instrumentations SHOULD use `messaging.batch.message_count` - // for batching APIs and SHOULD NOT use it for single-message APIs. - MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count") -) - -var ( - // publish - MessagingOperationPublish = MessagingOperationKey.String("publish") - // receive - MessagingOperationReceive = MessagingOperationKey.String("receive") - // process - MessagingOperationProcess = MessagingOperationKey.String("process") -) - -// MessagingSystem returns an attribute KeyValue conforming to the -// "messaging.system" semantic conventions. It represents a string identifying -// the messaging system. -func MessagingSystem(val string) attribute.KeyValue { - return MessagingSystemKey.String(val) -} - -// MessagingBatchMessageCount returns an attribute KeyValue conforming to -// the "messaging.batch.message_count" semantic conventions. It represents the -// number of messages sent, received, or processed in the scope of the batching -// operation. -func MessagingBatchMessageCount(val int) attribute.KeyValue { - return MessagingBatchMessageCountKey.Int(val) -} - -// Semantic convention for a consumer of messages received from a messaging -// system -const ( - // MessagingConsumerIDKey is the attribute Key conforming to the - // "messaging.consumer.id" semantic conventions. It represents the - // identifier for the consumer receiving a message. For Kafka, set it to - // `{messaging.kafka.consumer.group} - {messaging.kafka.client_id}`, if - // both are present, or only `messaging.kafka.consumer.group`. For brokers, - // such as RabbitMQ and Artemis, set it to the `client_id` of the client - // consuming the message. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'mygroup - client-6' - MessagingConsumerIDKey = attribute.Key("messaging.consumer.id") -) - -// MessagingConsumerID returns an attribute KeyValue conforming to the -// "messaging.consumer.id" semantic conventions. It represents the identifier -// for the consumer receiving a message. For Kafka, set it to -// `{messaging.kafka.consumer.group} - {messaging.kafka.client_id}`, if both -// are present, or only `messaging.kafka.consumer.group`. For brokers, such as -// RabbitMQ and Artemis, set it to the `client_id` of the client consuming the -// message. -func MessagingConsumerID(val string) attribute.KeyValue { - return MessagingConsumerIDKey.String(val) -} - -// Attributes for RabbitMQ -const ( - // MessagingRabbitmqDestinationRoutingKeyKey is the attribute Key - // conforming to the "messaging.rabbitmq.destination.routing_key" semantic - // conventions. It represents the rabbitMQ message routing key. - // - // Type: string - // RequirementLevel: ConditionallyRequired (If not empty.) - // Stability: stable - // Examples: 'myKey' - MessagingRabbitmqDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key") -) - -// MessagingRabbitmqDestinationRoutingKey returns an attribute KeyValue -// conforming to the "messaging.rabbitmq.destination.routing_key" semantic -// conventions. It represents the rabbitMQ message routing key. -func MessagingRabbitmqDestinationRoutingKey(val string) attribute.KeyValue { - return MessagingRabbitmqDestinationRoutingKeyKey.String(val) -} - -// Attributes for Apache Kafka -const ( - // MessagingKafkaMessageKeyKey is the attribute Key conforming to the - // "messaging.kafka.message.key" semantic conventions. It represents the - // message keys in Kafka are used for grouping alike messages to ensure - // they're processed on the same partition. They differ from - // `messaging.message.id` in that they're not unique. If the key is `null`, - // the attribute MUST NOT be set. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'myKey' - // Note: If the key type is not string, it's string representation has to - // be supplied for the attribute. If the key has no unambiguous, canonical - // string form, don't include its value. - MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key") - - // MessagingKafkaConsumerGroupKey is the attribute Key conforming to the - // "messaging.kafka.consumer.group" semantic conventions. It represents the - // name of the Kafka Consumer Group that is handling the message. Only - // applies to consumers, not producers. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'my-group' - MessagingKafkaConsumerGroupKey = attribute.Key("messaging.kafka.consumer.group") - - // MessagingKafkaClientIDKey is the attribute Key conforming to the - // "messaging.kafka.client_id" semantic conventions. It represents the - // client ID for the Consumer or Producer that is handling the message. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'client-5' - MessagingKafkaClientIDKey = attribute.Key("messaging.kafka.client_id") - - // MessagingKafkaDestinationPartitionKey is the attribute Key conforming to - // the "messaging.kafka.destination.partition" semantic conventions. It - // represents the partition the message is sent to. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 2 - MessagingKafkaDestinationPartitionKey = attribute.Key("messaging.kafka.destination.partition") - - // MessagingKafkaSourcePartitionKey is the attribute Key conforming to the - // "messaging.kafka.source.partition" semantic conventions. It represents - // the partition the message is received from. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 2 - MessagingKafkaSourcePartitionKey = attribute.Key("messaging.kafka.source.partition") - - // MessagingKafkaMessageOffsetKey is the attribute Key conforming to the - // "messaging.kafka.message.offset" semantic conventions. It represents the - // offset of a record in the corresponding Kafka partition. - // - // Type: int - // RequirementLevel: Optional - // Stability: stable - // Examples: 42 - MessagingKafkaMessageOffsetKey = attribute.Key("messaging.kafka.message.offset") - - // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the - // "messaging.kafka.message.tombstone" semantic conventions. It represents - // a boolean that is true if the message is a tombstone. - // - // Type: boolean - // RequirementLevel: ConditionallyRequired (If value is `true`. When - // missing, the value is assumed to be `false`.) - // Stability: stable - MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone") -) - -// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the -// "messaging.kafka.message.key" semantic conventions. It represents the -// message keys in Kafka are used for grouping alike messages to ensure they're -// processed on the same partition. They differ from `messaging.message.id` in -// that they're not unique. If the key is `null`, the attribute MUST NOT be -// set. -func MessagingKafkaMessageKey(val string) attribute.KeyValue { - return MessagingKafkaMessageKeyKey.String(val) -} - -// MessagingKafkaConsumerGroup returns an attribute KeyValue conforming to -// the "messaging.kafka.consumer.group" semantic conventions. It represents the -// name of the Kafka Consumer Group that is handling the message. Only applies -// to consumers, not producers. -func MessagingKafkaConsumerGroup(val string) attribute.KeyValue { - return MessagingKafkaConsumerGroupKey.String(val) -} - -// MessagingKafkaClientID returns an attribute KeyValue conforming to the -// "messaging.kafka.client_id" semantic conventions. It represents the client -// ID for the Consumer or Producer that is handling the message. -func MessagingKafkaClientID(val string) attribute.KeyValue { - return MessagingKafkaClientIDKey.String(val) -} - -// MessagingKafkaDestinationPartition returns an attribute KeyValue -// conforming to the "messaging.kafka.destination.partition" semantic -// conventions. It represents the partition the message is sent to. -func MessagingKafkaDestinationPartition(val int) attribute.KeyValue { - return MessagingKafkaDestinationPartitionKey.Int(val) -} - -// MessagingKafkaSourcePartition returns an attribute KeyValue conforming to -// the "messaging.kafka.source.partition" semantic conventions. It represents -// the partition the message is received from. -func MessagingKafkaSourcePartition(val int) attribute.KeyValue { - return MessagingKafkaSourcePartitionKey.Int(val) -} - -// MessagingKafkaMessageOffset returns an attribute KeyValue conforming to -// the "messaging.kafka.message.offset" semantic conventions. It represents the -// offset of a record in the corresponding Kafka partition. -func MessagingKafkaMessageOffset(val int) attribute.KeyValue { - return MessagingKafkaMessageOffsetKey.Int(val) -} - -// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming -// to the "messaging.kafka.message.tombstone" semantic conventions. It -// represents a boolean that is true if the message is a tombstone. -func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue { - return MessagingKafkaMessageTombstoneKey.Bool(val) -} - -// Attributes for Apache RocketMQ -const ( - // MessagingRocketmqNamespaceKey is the attribute Key conforming to the - // "messaging.rocketmq.namespace" semantic conventions. It represents the - // namespace of RocketMQ resources, resources in different namespaces are - // individual. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'myNamespace' - MessagingRocketmqNamespaceKey = attribute.Key("messaging.rocketmq.namespace") - - // MessagingRocketmqClientGroupKey is the attribute Key conforming to the - // "messaging.rocketmq.client_group" semantic conventions. It represents - // the name of the RocketMQ producer/consumer group that is handling the - // message. The client type is identified by the SpanKind. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'myConsumerGroup' - MessagingRocketmqClientGroupKey = attribute.Key("messaging.rocketmq.client_group") - - // MessagingRocketmqClientIDKey is the attribute Key conforming to the - // "messaging.rocketmq.client_id" semantic conventions. It represents the - // unique identifier for each client. - // - // Type: string - // RequirementLevel: Required - // Stability: stable - // Examples: 'myhost@8742@s8083jm' - MessagingRocketmqClientIDKey = attribute.Key("messaging.rocketmq.client_id") - - // MessagingRocketmqMessageDeliveryTimestampKey is the attribute Key - // conforming to the "messaging.rocketmq.message.delivery_timestamp" - // semantic conventions. It represents the timestamp in milliseconds that - // the delay message is expected to be delivered to consumer. - // - // Type: int - // RequirementLevel: ConditionallyRequired (If the message type is delay - // and delay time level is not specified.) - // Stability: stable - // Examples: 1665987217045 - MessagingRocketmqMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp") - - // MessagingRocketmqMessageDelayTimeLevelKey is the attribute Key - // conforming to the "messaging.rocketmq.message.delay_time_level" semantic - // conventions. It represents the delay time level for delay message, which - // determines the message delay time. - // - // Type: int - // RequirementLevel: ConditionallyRequired (If the message type is delay - // and delivery timestamp is not specified.) - // Stability: stable - // Examples: 3 - MessagingRocketmqMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level") - - // MessagingRocketmqMessageGroupKey is the attribute Key conforming to the - // "messaging.rocketmq.message.group" semantic conventions. It represents - // the it is essential for FIFO message. Messages that belong to the same - // message group are always processed one by one within the same consumer - // group. - // - // Type: string - // RequirementLevel: ConditionallyRequired (If the message type is FIFO.) - // Stability: stable - // Examples: 'myMessageGroup' - MessagingRocketmqMessageGroupKey = attribute.Key("messaging.rocketmq.message.group") - - // MessagingRocketmqMessageTypeKey is the attribute Key conforming to the - // "messaging.rocketmq.message.type" semantic conventions. It represents - // the type of message. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - MessagingRocketmqMessageTypeKey = attribute.Key("messaging.rocketmq.message.type") - - // MessagingRocketmqMessageTagKey is the attribute Key conforming to the - // "messaging.rocketmq.message.tag" semantic conventions. It represents the - // secondary classifier of message besides topic. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'tagA' - MessagingRocketmqMessageTagKey = attribute.Key("messaging.rocketmq.message.tag") - - // MessagingRocketmqMessageKeysKey is the attribute Key conforming to the - // "messaging.rocketmq.message.keys" semantic conventions. It represents - // the key(s) of message, another way to mark message besides message id. - // - // Type: string[] - // RequirementLevel: Optional - // Stability: stable - // Examples: 'keyA', 'keyB' - MessagingRocketmqMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys") - - // MessagingRocketmqConsumptionModelKey is the attribute Key conforming to - // the "messaging.rocketmq.consumption_model" semantic conventions. It - // represents the model of message consumption. This only applies to - // consumer spans. - // - // Type: Enum - // RequirementLevel: Optional - // Stability: stable - MessagingRocketmqConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model") -) - -var ( - // Normal message - MessagingRocketmqMessageTypeNormal = MessagingRocketmqMessageTypeKey.String("normal") - // FIFO message - MessagingRocketmqMessageTypeFifo = MessagingRocketmqMessageTypeKey.String("fifo") - // Delay message - MessagingRocketmqMessageTypeDelay = MessagingRocketmqMessageTypeKey.String("delay") - // Transaction message - MessagingRocketmqMessageTypeTransaction = MessagingRocketmqMessageTypeKey.String("transaction") -) - -var ( - // Clustering consumption model - MessagingRocketmqConsumptionModelClustering = MessagingRocketmqConsumptionModelKey.String("clustering") - // Broadcasting consumption model - MessagingRocketmqConsumptionModelBroadcasting = MessagingRocketmqConsumptionModelKey.String("broadcasting") -) - -// MessagingRocketmqNamespace returns an attribute KeyValue conforming to -// the "messaging.rocketmq.namespace" semantic conventions. It represents the -// namespace of RocketMQ resources, resources in different namespaces are -// individual. -func MessagingRocketmqNamespace(val string) attribute.KeyValue { - return MessagingRocketmqNamespaceKey.String(val) -} - -// MessagingRocketmqClientGroup returns an attribute KeyValue conforming to -// the "messaging.rocketmq.client_group" semantic conventions. It represents -// the name of the RocketMQ producer/consumer group that is handling the -// message. The client type is identified by the SpanKind. -func MessagingRocketmqClientGroup(val string) attribute.KeyValue { - return MessagingRocketmqClientGroupKey.String(val) -} - -// MessagingRocketmqClientID returns an attribute KeyValue conforming to the -// "messaging.rocketmq.client_id" semantic conventions. It represents the -// unique identifier for each client. -func MessagingRocketmqClientID(val string) attribute.KeyValue { - return MessagingRocketmqClientIDKey.String(val) -} - -// MessagingRocketmqMessageDeliveryTimestamp returns an attribute KeyValue -// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic -// conventions. It represents the timestamp in milliseconds that the delay -// message is expected to be delivered to consumer. -func MessagingRocketmqMessageDeliveryTimestamp(val int) attribute.KeyValue { - return MessagingRocketmqMessageDeliveryTimestampKey.Int(val) -} - -// MessagingRocketmqMessageDelayTimeLevel returns an attribute KeyValue -// conforming to the "messaging.rocketmq.message.delay_time_level" semantic -// conventions. It represents the delay time level for delay message, which -// determines the message delay time. -func MessagingRocketmqMessageDelayTimeLevel(val int) attribute.KeyValue { - return MessagingRocketmqMessageDelayTimeLevelKey.Int(val) -} - -// MessagingRocketmqMessageGroup returns an attribute KeyValue conforming to -// the "messaging.rocketmq.message.group" semantic conventions. It represents -// the it is essential for FIFO message. Messages that belong to the same -// message group are always processed one by one within the same consumer -// group. -func MessagingRocketmqMessageGroup(val string) attribute.KeyValue { - return MessagingRocketmqMessageGroupKey.String(val) -} - -// MessagingRocketmqMessageTag returns an attribute KeyValue conforming to -// the "messaging.rocketmq.message.tag" semantic conventions. It represents the -// secondary classifier of message besides topic. -func MessagingRocketmqMessageTag(val string) attribute.KeyValue { - return MessagingRocketmqMessageTagKey.String(val) -} - -// MessagingRocketmqMessageKeys returns an attribute KeyValue conforming to -// the "messaging.rocketmq.message.keys" semantic conventions. It represents -// the key(s) of message, another way to mark message besides message id. -func MessagingRocketmqMessageKeys(val ...string) attribute.KeyValue { - return MessagingRocketmqMessageKeysKey.StringSlice(val) -} - -// Semantic conventions for remote procedure calls. -const ( - // RPCSystemKey is the attribute Key conforming to the "rpc.system" - // semantic conventions. It represents a string identifying the remoting - // system. See below for a list of well-known identifiers. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - RPCSystemKey = attribute.Key("rpc.system") - - // RPCServiceKey is the attribute Key conforming to the "rpc.service" - // semantic conventions. It represents the full (logical) name of the - // service being called, including its package name, if applicable. - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'myservice.EchoService' - // Note: This is the logical name of the service from the RPC interface - // perspective, which can be different from the name of any implementing - // class. The `code.namespace` attribute may be used to store the latter - // (despite the attribute name, it may include a class name; e.g., class - // with method actually executing the call on the server side, RPC client - // stub class on the client side). - RPCServiceKey = attribute.Key("rpc.service") - - // RPCMethodKey is the attribute Key conforming to the "rpc.method" - // semantic conventions. It represents the name of the (logical) method - // being called, must be equal to the $method part in the span name. - // - // Type: string - // RequirementLevel: Recommended - // Stability: stable - // Examples: 'exampleMethod' - // Note: This is the logical name of the method from the RPC interface - // perspective, which can be different from the name of any implementing - // method/function. The `code.function` attribute may be used to store the - // latter (e.g., method actually executing the call on the server side, RPC - // client stub method on the client side). - RPCMethodKey = attribute.Key("rpc.method") -) - -var ( - // gRPC - RPCSystemGRPC = RPCSystemKey.String("grpc") - // Java RMI - RPCSystemJavaRmi = RPCSystemKey.String("java_rmi") - // .NET WCF - RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf") - // Apache Dubbo - RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo") -) - -// RPCService returns an attribute KeyValue conforming to the "rpc.service" -// semantic conventions. It represents the full (logical) name of the service -// being called, including its package name, if applicable. -func RPCService(val string) attribute.KeyValue { - return RPCServiceKey.String(val) -} - -// RPCMethod returns an attribute KeyValue conforming to the "rpc.method" -// semantic conventions. It represents the name of the (logical) method being -// called, must be equal to the $method part in the span name. -func RPCMethod(val string) attribute.KeyValue { - return RPCMethodKey.String(val) -} - -// Tech-specific attributes for gRPC. -const ( - // RPCGRPCStatusCodeKey is the attribute Key conforming to the - // "rpc.grpc.status_code" semantic conventions. It represents the [numeric - // status - // code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of - // the gRPC request. - // - // Type: Enum - // RequirementLevel: Required - // Stability: stable - RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") -) - -var ( - // OK - RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0) - // CANCELLED - RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1) - // UNKNOWN - RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2) - // INVALID_ARGUMENT - RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3) - // DEADLINE_EXCEEDED - RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4) - // NOT_FOUND - RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5) - // ALREADY_EXISTS - RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6) - // PERMISSION_DENIED - RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7) - // RESOURCE_EXHAUSTED - RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8) - // FAILED_PRECONDITION - RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9) - // ABORTED - RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10) - // OUT_OF_RANGE - RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11) - // UNIMPLEMENTED - RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12) - // INTERNAL - RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13) - // UNAVAILABLE - RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14) - // DATA_LOSS - RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15) - // UNAUTHENTICATED - RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16) -) - -// Tech-specific attributes for [JSON RPC](https://www.jsonrpc.org/). -const ( - // RPCJsonrpcVersionKey is the attribute Key conforming to the - // "rpc.jsonrpc.version" semantic conventions. It represents the protocol - // version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 - // does not specify this, the value can be omitted. - // - // Type: string - // RequirementLevel: ConditionallyRequired (If other than the default - // version (`1.0`)) - // Stability: stable - // Examples: '2.0', '1.0' - RPCJsonrpcVersionKey = attribute.Key("rpc.jsonrpc.version") - - // RPCJsonrpcRequestIDKey is the attribute Key conforming to the - // "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` - // property of request or response. Since protocol allows id to be int, - // string, `null` or missing (for notifications), value is expected to be - // cast to string for simplicity. Use empty string in case of `null` value. - // Omit entirely if this is a notification. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: '10', 'request-7', '' - RPCJsonrpcRequestIDKey = attribute.Key("rpc.jsonrpc.request_id") - - // RPCJsonrpcErrorCodeKey is the attribute Key conforming to the - // "rpc.jsonrpc.error_code" semantic conventions. It represents the - // `error.code` property of response if it is an error response. - // - // Type: int - // RequirementLevel: ConditionallyRequired (If response is not successful.) - // Stability: stable - // Examples: -32700, 100 - RPCJsonrpcErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code") - - // RPCJsonrpcErrorMessageKey is the attribute Key conforming to the - // "rpc.jsonrpc.error_message" semantic conventions. It represents the - // `error.message` property of response if it is an error response. - // - // Type: string - // RequirementLevel: Optional - // Stability: stable - // Examples: 'Parse error', 'User already exists' - RPCJsonrpcErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message") -) - -// RPCJsonrpcVersion returns an attribute KeyValue conforming to the -// "rpc.jsonrpc.version" semantic conventions. It represents the protocol -// version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 -// does not specify this, the value can be omitted. -func RPCJsonrpcVersion(val string) attribute.KeyValue { - return RPCJsonrpcVersionKey.String(val) -} - -// RPCJsonrpcRequestID returns an attribute KeyValue conforming to the -// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` -// property of request or response. Since protocol allows id to be int, string, -// `null` or missing (for notifications), value is expected to be cast to -// string for simplicity. Use empty string in case of `null` value. Omit -// entirely if this is a notification. -func RPCJsonrpcRequestID(val string) attribute.KeyValue { - return RPCJsonrpcRequestIDKey.String(val) -} - -// RPCJsonrpcErrorCode returns an attribute KeyValue conforming to the -// "rpc.jsonrpc.error_code" semantic conventions. It represents the -// `error.code` property of response if it is an error response. -func RPCJsonrpcErrorCode(val int) attribute.KeyValue { - return RPCJsonrpcErrorCodeKey.Int(val) -} - -// RPCJsonrpcErrorMessage returns an attribute KeyValue conforming to the -// "rpc.jsonrpc.error_message" semantic conventions. It represents the -// `error.message` property of response if it is an error response. -func RPCJsonrpcErrorMessage(val string) attribute.KeyValue { - return RPCJsonrpcErrorMessageKey.String(val) -} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md new file mode 100644 index 000000000..02b56115e --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md @@ -0,0 +1,4 @@ + +# Migration from v1.33.0 to v1.34.0 + +The `go.opentelemetry.io/otel/semconv/v1.34.0` package should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.33.0`. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md new file mode 100644 index 000000000..fab06c975 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md @@ -0,0 +1,3 @@ +# Semconv v1.34.0 + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.34.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.34.0) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go new file mode 100644 index 000000000..5b5666257 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go @@ -0,0 +1,13851 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Code generated from semantic convention specification. DO NOT EDIT. + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0" + +import "go.opentelemetry.io/otel/attribute" + +// Namespace: android +const ( + // AndroidAppStateKey is the attribute Key conforming to the "android.app.state" + // semantic conventions. It represents the this attribute represents the state + // of the application. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "created" + // Note: The Android lifecycle states are defined in + // [Activity lifecycle callbacks], and from which the `OS identifiers` are + // derived. + // + // [Activity lifecycle callbacks]: https://developer.android.com/guide/components/activities/activity-lifecycle#lc + AndroidAppStateKey = attribute.Key("android.app.state") + + // AndroidOSAPILevelKey is the attribute Key conforming to the + // "android.os.api_level" semantic conventions. It represents the uniquely + // identifies the framework API revision offered by a version (`os.version`) of + // the android operating system. More information can be found [here]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "33", "32" + // + // [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels + AndroidOSAPILevelKey = attribute.Key("android.os.api_level") +) + +// AndroidOSAPILevel returns an attribute KeyValue conforming to the +// "android.os.api_level" semantic conventions. It represents the uniquely +// identifies the framework API revision offered by a version (`os.version`) of +// the android operating system. More information can be found [here]. +// +// [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels +func AndroidOSAPILevel(val string) attribute.KeyValue { + return AndroidOSAPILevelKey.String(val) +} + +// Enum values for android.app.state +var ( + // Any time before Activity.onResume() or, if the app has no Activity, + // Context.startService() has been called in the app for the first time. + // + // Stability: development + AndroidAppStateCreated = AndroidAppStateKey.String("created") + // Any time after Activity.onPause() or, if the app has no Activity, + // Context.stopService() has been called when the app was in the foreground + // state. + // + // Stability: development + AndroidAppStateBackground = AndroidAppStateKey.String("background") + // Any time after Activity.onResume() or, if the app has no Activity, + // Context.startService() has been called when the app was in either the created + // or background states. + // + // Stability: development + AndroidAppStateForeground = AndroidAppStateKey.String("foreground") +) + +// Namespace: app +const ( + // AppInstallationIDKey is the attribute Key conforming to the + // "app.installation.id" semantic conventions. It represents a unique identifier + // representing the installation of an application on a specific device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2ab2916d-a51f-4ac8-80ee-45ac31a28092" + // Note: Its value SHOULD persist across launches of the same application + // installation, including through application upgrades. + // It SHOULD change if the application is uninstalled or if all applications of + // the vendor are uninstalled. + // Additionally, users might be able to reset this value (e.g. by clearing + // application data). + // If an app is installed multiple times on the same device (e.g. in different + // accounts on Android), each `app.installation.id` SHOULD have a different + // value. + // If multiple OpenTelemetry SDKs are used within the same application, they + // SHOULD use the same value for `app.installation.id`. + // Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the + // `app.installation.id`. + // + // For iOS, this value SHOULD be equal to the [vendor identifier]. + // + // For Android, examples of `app.installation.id` implementations include: + // + // - [Firebase Installation ID]. + // - A globally unique UUID which is persisted across sessions in your + // application. + // - [App set ID]. + // - [`Settings.getString(Settings.Secure.ANDROID_ID)`]. + // + // More information about Android identifier best practices can be found [here] + // . + // + // [vendor identifier]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor + // [Firebase Installation ID]: https://firebase.google.com/docs/projects/manage-installations + // [App set ID]: https://developer.android.com/identity/app-set-id + // [`Settings.getString(Settings.Secure.ANDROID_ID)`]: https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID + // [here]: https://developer.android.com/training/articles/user-data-ids + AppInstallationIDKey = attribute.Key("app.installation.id") + + // AppScreenCoordinateXKey is the attribute Key conforming to the + // "app.screen.coordinate.x" semantic conventions. It represents the x + // (horizontal) coordinate of a screen coordinate, in screen pixels. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 131 + AppScreenCoordinateXKey = attribute.Key("app.screen.coordinate.x") + + // AppScreenCoordinateYKey is the attribute Key conforming to the + // "app.screen.coordinate.y" semantic conventions. It represents the y + // (vertical) component of a screen coordinate, in screen pixels. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12, 99 + AppScreenCoordinateYKey = attribute.Key("app.screen.coordinate.y") + + // AppWidgetIDKey is the attribute Key conforming to the "app.widget.id" + // semantic conventions. It represents an identifier that uniquely + // differentiates this widget from other widgets in the same application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "f9bc787d-ff05-48ad-90e1-fca1d46130b3", "submit_order_1829" + // Note: A widget is an application component, typically an on-screen visual GUI + // element. + AppWidgetIDKey = attribute.Key("app.widget.id") + + // AppWidgetNameKey is the attribute Key conforming to the "app.widget.name" + // semantic conventions. It represents the name of an application widget. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "submit", "attack", "Clear Cart" + // Note: A widget is an application component, typically an on-screen visual GUI + // element. + AppWidgetNameKey = attribute.Key("app.widget.name") +) + +// AppInstallationID returns an attribute KeyValue conforming to the +// "app.installation.id" semantic conventions. It represents a unique identifier +// representing the installation of an application on a specific device. +func AppInstallationID(val string) attribute.KeyValue { + return AppInstallationIDKey.String(val) +} + +// AppScreenCoordinateX returns an attribute KeyValue conforming to the +// "app.screen.coordinate.x" semantic conventions. It represents the x +// (horizontal) coordinate of a screen coordinate, in screen pixels. +func AppScreenCoordinateX(val int) attribute.KeyValue { + return AppScreenCoordinateXKey.Int(val) +} + +// AppScreenCoordinateY returns an attribute KeyValue conforming to the +// "app.screen.coordinate.y" semantic conventions. It represents the y (vertical) +// component of a screen coordinate, in screen pixels. +func AppScreenCoordinateY(val int) attribute.KeyValue { + return AppScreenCoordinateYKey.Int(val) +} + +// AppWidgetID returns an attribute KeyValue conforming to the "app.widget.id" +// semantic conventions. It represents an identifier that uniquely differentiates +// this widget from other widgets in the same application. +func AppWidgetID(val string) attribute.KeyValue { + return AppWidgetIDKey.String(val) +} + +// AppWidgetName returns an attribute KeyValue conforming to the +// "app.widget.name" semantic conventions. It represents the name of an +// application widget. +func AppWidgetName(val string) attribute.KeyValue { + return AppWidgetNameKey.String(val) +} + +// Namespace: artifact +const ( + // ArtifactAttestationFilenameKey is the attribute Key conforming to the + // "artifact.attestation.filename" semantic conventions. It represents the + // provenance filename of the built attestation which directly relates to the + // build artifact filename. This filename SHOULD accompany the artifact at + // publish time. See the [SLSA Relationship] specification for more information. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "golang-binary-amd64-v0.1.0.attestation", + // "docker-image-amd64-v0.1.0.intoto.json1", "release-1.tar.gz.attestation", + // "file-name-package.tar.gz.intoto.json1" + // + // [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations + ArtifactAttestationFilenameKey = attribute.Key("artifact.attestation.filename") + + // ArtifactAttestationHashKey is the attribute Key conforming to the + // "artifact.attestation.hash" semantic conventions. It represents the full + // [hash value (see glossary)], of the built attestation. Some envelopes in the + // [software attestation space] also refer to this as the **digest**. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408" + // + // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec + ArtifactAttestationHashKey = attribute.Key("artifact.attestation.hash") + + // ArtifactAttestationIDKey is the attribute Key conforming to the + // "artifact.attestation.id" semantic conventions. It represents the id of the + // build [software attestation]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123" + // + // [software attestation]: https://slsa.dev/attestation-model + ArtifactAttestationIDKey = attribute.Key("artifact.attestation.id") + + // ArtifactFilenameKey is the attribute Key conforming to the + // "artifact.filename" semantic conventions. It represents the human readable + // file name of the artifact, typically generated during build and release + // processes. Often includes the package name and version in the file name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "golang-binary-amd64-v0.1.0", "docker-image-amd64-v0.1.0", + // "release-1.tar.gz", "file-name-package.tar.gz" + // Note: This file name can also act as the [Package Name] + // in cases where the package ecosystem maps accordingly. + // Additionally, the artifact [can be published] + // for others, but that is not a guarantee. + // + // [Package Name]: https://slsa.dev/spec/v1.0/terminology#package-model + // [can be published]: https://slsa.dev/spec/v1.0/terminology#software-supply-chain + ArtifactFilenameKey = attribute.Key("artifact.filename") + + // ArtifactHashKey is the attribute Key conforming to the "artifact.hash" + // semantic conventions. It represents the full [hash value (see glossary)], + // often found in checksum.txt on a release of the artifact and used to verify + // package integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9" + // Note: The specific algorithm used to create the cryptographic hash value is + // not defined. In situations where an artifact has multiple + // cryptographic hashes, it is up to the implementer to choose which + // hash value to set here; this should be the most secure hash algorithm + // that is suitable for the situation and consistent with the + // corresponding attestation. The implementer can then provide the other + // hash values through an additional set of attribute extensions as they + // deem necessary. + // + // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + ArtifactHashKey = attribute.Key("artifact.hash") + + // ArtifactPurlKey is the attribute Key conforming to the "artifact.purl" + // semantic conventions. It represents the [Package URL] of the + // [package artifact] provides a standard way to identify and locate the + // packaged artifact. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pkg:github/package-url/purl-spec@1209109710924", + // "pkg:npm/foo@12.12.3" + // + // [Package URL]: https://github.com/package-url/purl-spec + // [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model + ArtifactPurlKey = attribute.Key("artifact.purl") + + // ArtifactVersionKey is the attribute Key conforming to the "artifact.version" + // semantic conventions. It represents the version of the artifact. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "v0.1.0", "1.2.1", "122691-build" + ArtifactVersionKey = attribute.Key("artifact.version") +) + +// ArtifactAttestationFilename returns an attribute KeyValue conforming to the +// "artifact.attestation.filename" semantic conventions. It represents the +// provenance filename of the built attestation which directly relates to the +// build artifact filename. This filename SHOULD accompany the artifact at +// publish time. See the [SLSA Relationship] specification for more information. +// +// [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations +func ArtifactAttestationFilename(val string) attribute.KeyValue { + return ArtifactAttestationFilenameKey.String(val) +} + +// ArtifactAttestationHash returns an attribute KeyValue conforming to the +// "artifact.attestation.hash" semantic conventions. It represents the full +// [hash value (see glossary)], of the built attestation. Some envelopes in the +// [software attestation space] also refer to this as the **digest**. +// +// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf +// [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec +func ArtifactAttestationHash(val string) attribute.KeyValue { + return ArtifactAttestationHashKey.String(val) +} + +// ArtifactAttestationID returns an attribute KeyValue conforming to the +// "artifact.attestation.id" semantic conventions. It represents the id of the +// build [software attestation]. +// +// [software attestation]: https://slsa.dev/attestation-model +func ArtifactAttestationID(val string) attribute.KeyValue { + return ArtifactAttestationIDKey.String(val) +} + +// ArtifactFilename returns an attribute KeyValue conforming to the +// "artifact.filename" semantic conventions. It represents the human readable +// file name of the artifact, typically generated during build and release +// processes. Often includes the package name and version in the file name. +func ArtifactFilename(val string) attribute.KeyValue { + return ArtifactFilenameKey.String(val) +} + +// ArtifactHash returns an attribute KeyValue conforming to the "artifact.hash" +// semantic conventions. It represents the full [hash value (see glossary)], +// often found in checksum.txt on a release of the artifact and used to verify +// package integrity. +// +// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf +func ArtifactHash(val string) attribute.KeyValue { + return ArtifactHashKey.String(val) +} + +// ArtifactPurl returns an attribute KeyValue conforming to the "artifact.purl" +// semantic conventions. It represents the [Package URL] of the +// [package artifact] provides a standard way to identify and locate the packaged +// artifact. +// +// [Package URL]: https://github.com/package-url/purl-spec +// [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model +func ArtifactPurl(val string) attribute.KeyValue { + return ArtifactPurlKey.String(val) +} + +// ArtifactVersion returns an attribute KeyValue conforming to the +// "artifact.version" semantic conventions. It represents the version of the +// artifact. +func ArtifactVersion(val string) attribute.KeyValue { + return ArtifactVersionKey.String(val) +} + +// Namespace: aws +const ( + // AWSBedrockGuardrailIDKey is the attribute Key conforming to the + // "aws.bedrock.guardrail.id" semantic conventions. It represents the unique + // identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and + // prevent unwanted behavior from model responses or user messages. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "sgi5gkybzqak" + // + // [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html + AWSBedrockGuardrailIDKey = attribute.Key("aws.bedrock.guardrail.id") + + // AWSBedrockKnowledgeBaseIDKey is the attribute Key conforming to the + // "aws.bedrock.knowledge_base.id" semantic conventions. It represents the + // unique identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a + // bank of information that can be queried by models to generate more relevant + // responses and augment prompts. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "XFWUPB9PAW" + // + // [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html + AWSBedrockKnowledgeBaseIDKey = attribute.Key("aws.bedrock.knowledge_base.id") + + // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to the + // "aws.dynamodb.attribute_definitions" semantic conventions. It represents the + // JSON-serialized value of each item in the `AttributeDefinitions` request + // field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "AttributeName": "string", "AttributeType": "string" }" + AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions") + + // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the + // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the + // value of the `AttributesToGet` request parameter. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "lives", "id" + AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get") + + // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the + // "aws.dynamodb.consistent_read" semantic conventions. It represents the value + // of the `ConsistentRead` request parameter. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read") + + // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the + // JSON-serialized value of each item in the `ConsumedCapacity` response field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : + // { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": + // number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, + // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, + // "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, + // "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": + // "string", "WriteCapacityUnits": number }" + AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity") + + // AWSDynamoDBCountKey is the attribute Key conforming to the + // "aws.dynamodb.count" semantic conventions. It represents the value of the + // `Count` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count") + + // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the + // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the + // value of the `ExclusiveStartTableName` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Users", "CatsTable" + AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table") + + // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key conforming to + // the "aws.dynamodb.global_secondary_index_updates" semantic conventions. It + // represents the JSON-serialized value of each item in the + // `GlobalSecondaryIndexUpdates` request field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "Create": { "IndexName": "string", "KeySchema": [ { + // "AttributeName": "string", "KeyType": "string" } ], "Projection": { + // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, + // "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": + // number } }" + AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates") + + // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to the + // "aws.dynamodb.global_secondary_indexes" semantic conventions. It represents + // the JSON-serialized value of each item of the `GlobalSecondaryIndexes` + // request field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "IndexName": "string", "KeySchema": [ { "AttributeName": + // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ + // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { + // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }" + AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes") + + // AWSDynamoDBIndexNameKey is the attribute Key conforming to the + // "aws.dynamodb.index_name" semantic conventions. It represents the value of + // the `IndexName` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "name_to_group" + AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name") + + // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to the + // "aws.dynamodb.item_collection_metrics" semantic conventions. It represents + // the JSON-serialized value of the `ItemCollectionMetrics` response field. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, + // "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : + // "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": + // "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }" + AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics") + + // AWSDynamoDBLimitKey is the attribute Key conforming to the + // "aws.dynamodb.limit" semantic conventions. It represents the value of the + // `Limit` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit") + + // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to the + // "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents + // the JSON-serialized value of each item of the `LocalSecondaryIndexes` request + // field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": + // number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", + // "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], + // "ProjectionType": "string" } }" + AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes") + + // AWSDynamoDBProjectionKey is the attribute Key conforming to the + // "aws.dynamodb.projection" semantic conventions. It represents the value of + // the `ProjectionExpression` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Title", "Title, Price, Color", "Title, Description, RelatedItems, + // ProductReviews" + AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection") + + // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.provisioned_read_capacity" semantic conventions. It represents + // the value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity") + + // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.provisioned_write_capacity" semantic conventions. It represents + // the value of the `ProvisionedThroughput.WriteCapacityUnits` request + // parameter. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity") + + // AWSDynamoDBScanForwardKey is the attribute Key conforming to the + // "aws.dynamodb.scan_forward" semantic conventions. It represents the value of + // the `ScanIndexForward` request parameter. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward") + + // AWSDynamoDBScannedCountKey is the attribute Key conforming to the + // "aws.dynamodb.scanned_count" semantic conventions. It represents the value of + // the `ScannedCount` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 50 + AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count") + + // AWSDynamoDBSegmentKey is the attribute Key conforming to the + // "aws.dynamodb.segment" semantic conventions. It represents the value of the + // `Segment` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment") + + // AWSDynamoDBSelectKey is the attribute Key conforming to the + // "aws.dynamodb.select" semantic conventions. It represents the value of the + // `Select` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ALL_ATTRIBUTES", "COUNT" + AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select") + + // AWSDynamoDBTableCountKey is the attribute Key conforming to the + // "aws.dynamodb.table_count" semantic conventions. It represents the number of + // items in the `TableNames` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 20 + AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count") + + // AWSDynamoDBTableNamesKey is the attribute Key conforming to the + // "aws.dynamodb.table_names" semantic conventions. It represents the keys in + // the `RequestItems` object field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Users", "Cats" + AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names") + + // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the + // "aws.dynamodb.total_segments" semantic conventions. It represents the value + // of the `TotalSegments` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments") + + // AWSECSClusterARNKey is the attribute Key conforming to the + // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an + // [ECS cluster]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster" + // + // [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html + AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn") + + // AWSECSContainerARNKey is the attribute Key conforming to the + // "aws.ecs.container.arn" semantic conventions. It represents the Amazon + // Resource Name (ARN) of an [ECS container instance]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9" + // + // [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html + AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn") + + // AWSECSLaunchtypeKey is the attribute Key conforming to the + // "aws.ecs.launchtype" semantic conventions. It represents the [launch type] + // for an ECS task. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [launch type]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype") + + // AWSECSTaskARNKey is the attribute Key conforming to the "aws.ecs.task.arn" + // semantic conventions. It represents the ARN of a running [ECS task]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b", + // "arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd" + // + // [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn") + + // AWSECSTaskFamilyKey is the attribute Key conforming to the + // "aws.ecs.task.family" semantic conventions. It represents the family name of + // the [ECS task definition] used to create the ECS task. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-family" + // + // [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html + AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family") + + // AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id" + // semantic conventions. It represents the ID of a running ECS task. The ID MUST + // be extracted from `task.arn`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10838bed-421f-43ef-870a-f43feacbbb5b", + // "23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd" + AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id") + + // AWSECSTaskRevisionKey is the attribute Key conforming to the + // "aws.ecs.task.revision" semantic conventions. It represents the revision for + // the task definition used to create the ECS task. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "8", "26" + AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision") + + // AWSEKSClusterARNKey is the attribute Key conforming to the + // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS + // cluster. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster" + AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn") + + // AWSExtendedRequestIDKey is the attribute Key conforming to the + // "aws.extended_request_id" semantic conventions. It represents the AWS + // extended request ID as returned in the response header `x-amz-id-2`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=" + AWSExtendedRequestIDKey = attribute.Key("aws.extended_request_id") + + // AWSKinesisStreamNameKey is the attribute Key conforming to the + // "aws.kinesis.stream_name" semantic conventions. It represents the name of the + // AWS Kinesis [stream] the request refers to. Corresponds to the + // `--stream-name` parameter of the Kinesis [describe-stream] operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "some-stream-name" + // + // [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html + // [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html + AWSKinesisStreamNameKey = attribute.Key("aws.kinesis.stream_name") + + // AWSLambdaInvokedARNKey is the attribute Key conforming to the + // "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked + // ARN as provided on the `Context` passed to the function ( + // `Lambda-Runtime-Invoked-Function-Arn` header on the + // `/runtime/invocation/next` applicable). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:lambda:us-east-1:123456:function:myfunction:myalias" + // Note: This may be different from `cloud.resource_id` if an alias is involved. + AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn") + + // AWSLambdaResourceMappingIDKey is the attribute Key conforming to the + // "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID + // of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda + // function. It's contents are read by Lambda and used to trigger a function. + // This isn't available in the lambda execution context or the lambda runtime + // environtment. This is going to be populated by the AWS SDK for each language + // when that UUID is present. Some of these operations are + // Create/Delete/Get/List/Update EventSourceMapping. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "587ad24b-03b9-4413-8202-bbd56b36e5b7" + // + // [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html + AWSLambdaResourceMappingIDKey = attribute.Key("aws.lambda.resource_mapping.id") + + // AWSLogGroupARNsKey is the attribute Key conforming to the + // "aws.log.group.arns" semantic conventions. It represents the Amazon Resource + // Name(s) (ARN) of the AWS log group(s). + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*" + // Note: See the [log group ARN format documentation]. + // + // [log group ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format + AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns") + + // AWSLogGroupNamesKey is the attribute Key conforming to the + // "aws.log.group.names" semantic conventions. It represents the name(s) of the + // AWS log group(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/aws/lambda/my-function", "opentelemetry-service" + // Note: Multiple log groups must be supported for cases like multi-container + // applications, where a single application has sidecar containers, and each + // write to their own log group. + AWSLogGroupNamesKey = attribute.Key("aws.log.group.names") + + // AWSLogStreamARNsKey is the attribute Key conforming to the + // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the + // AWS log stream(s). + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b" + // Note: See the [log stream ARN format documentation]. One log group can + // contain several log streams, so these ARNs necessarily identify both a log + // group and a log stream. + // + // [log stream ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format + AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns") + + // AWSLogStreamNamesKey is the attribute Key conforming to the + // "aws.log.stream.names" semantic conventions. It represents the name(s) of the + // AWS log stream(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "logs/main/10838bed-421f-43ef-870a-f43feacbbb5b" + AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names") + + // AWSRequestIDKey is the attribute Key conforming to the "aws.request_id" + // semantic conventions. It represents the AWS request ID as returned in the + // response headers `x-amzn-requestid`, `x-amzn-request-id` or + // `x-amz-request-id`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "79b9da39-b7ae-508a-a6bc-864b2829c622", "C9ER4AJX75574TDJ" + AWSRequestIDKey = attribute.Key("aws.request_id") + + // AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket" + // semantic conventions. It represents the S3 bucket name the request refers to. + // Corresponds to the `--bucket` parameter of the [S3 API] operations. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "some-bucket-name" + // Note: The `bucket` attribute is applicable to all S3 operations that + // reference a bucket, i.e. that require the bucket name as a mandatory + // parameter. + // This applies to almost all S3 operations except `list-buckets`. + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + AWSS3BucketKey = attribute.Key("aws.s3.bucket") + + // AWSS3CopySourceKey is the attribute Key conforming to the + // "aws.s3.copy_source" semantic conventions. It represents the source object + // (in the form `bucket`/`key`) for the copy operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "someFile.yml" + // Note: The `copy_source` attribute applies to S3 copy operations and + // corresponds to the `--copy-source` parameter + // of the [copy-object operation within the S3 API]. + // This applies in particular to the following operations: + // + // - [copy-object] + // - [upload-part-copy] + // + // + // [copy-object operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source") + + // AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete" + // semantic conventions. It represents the delete request container that + // specifies the objects to be deleted. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean" + // Note: The `delete` attribute is only applicable to the [delete-object] + // operation. + // The `delete` attribute corresponds to the `--delete` parameter of the + // [delete-objects operation within the S3 API]. + // + // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html + // [delete-objects operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html + AWSS3DeleteKey = attribute.Key("aws.s3.delete") + + // AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic + // conventions. It represents the S3 object key the request refers to. + // Corresponds to the `--key` parameter of the [S3 API] operations. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "someFile.yml" + // Note: The `key` attribute is applicable to all object-related S3 operations, + // i.e. that require the object key as a mandatory parameter. + // This applies in particular to the following operations: + // + // - [copy-object] + // - [delete-object] + // - [get-object] + // - [head-object] + // - [put-object] + // - [restore-object] + // - [select-object-content] + // - [abort-multipart-upload] + // - [complete-multipart-upload] + // - [create-multipart-upload] + // - [list-parts] + // - [upload-part] + // - [upload-part-copy] + // + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html + // [get-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html + // [head-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html + // [put-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html + // [restore-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html + // [select-object-content]: https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html + // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html + // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html + // [create-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html + // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3KeyKey = attribute.Key("aws.s3.key") + + // AWSS3PartNumberKey is the attribute Key conforming to the + // "aws.s3.part_number" semantic conventions. It represents the part number of + // the part being uploaded in a multipart-upload operation. This is a positive + // integer between 1 and 10,000. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3456 + // Note: The `part_number` attribute is only applicable to the [upload-part] + // and [upload-part-copy] operations. + // The `part_number` attribute corresponds to the `--part-number` parameter of + // the + // [upload-part operation within the S3 API]. + // + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + // [upload-part operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + AWSS3PartNumberKey = attribute.Key("aws.s3.part_number") + + // AWSS3UploadIDKey is the attribute Key conforming to the "aws.s3.upload_id" + // semantic conventions. It represents the upload ID that identifies the + // multipart upload. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ" + // Note: The `upload_id` attribute applies to S3 multipart-upload operations and + // corresponds to the `--upload-id` parameter + // of the [S3 API] multipart operations. + // This applies in particular to the following operations: + // + // - [abort-multipart-upload] + // - [complete-multipart-upload] + // - [list-parts] + // - [upload-part] + // - [upload-part-copy] + // + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html + // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html + // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id") + + // AWSSecretsmanagerSecretARNKey is the attribute Key conforming to the + // "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN + // of the Secret stored in the Secrets Mangger. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters" + AWSSecretsmanagerSecretARNKey = attribute.Key("aws.secretsmanager.secret.arn") + + // AWSSNSTopicARNKey is the attribute Key conforming to the "aws.sns.topic.arn" + // semantic conventions. It represents the ARN of the AWS SNS Topic. An Amazon + // SNS [topic] is a logical access point that acts as a communication channel. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE" + // + // [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html + AWSSNSTopicARNKey = attribute.Key("aws.sns.topic.arn") + + // AWSSQSQueueURLKey is the attribute Key conforming to the "aws.sqs.queue.url" + // semantic conventions. It represents the URL of the AWS SQS Queue. It's a + // unique identifier for a queue in Amazon Simple Queue Service (SQS) and is + // used to access the queue and perform actions on it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" + AWSSQSQueueURLKey = attribute.Key("aws.sqs.queue.url") + + // AWSStepFunctionsActivityARNKey is the attribute Key conforming to the + // "aws.step_functions.activity.arn" semantic conventions. It represents the ARN + // of the AWS Step Functions Activity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:states:us-east-1:123456789012:activity:get-greeting" + AWSStepFunctionsActivityARNKey = attribute.Key("aws.step_functions.activity.arn") + + // AWSStepFunctionsStateMachineARNKey is the attribute Key conforming to the + // "aws.step_functions.state_machine.arn" semantic conventions. It represents + // the ARN of the AWS Step Functions State Machine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1" + AWSStepFunctionsStateMachineARNKey = attribute.Key("aws.step_functions.state_machine.arn") +) + +// AWSBedrockGuardrailID returns an attribute KeyValue conforming to the +// "aws.bedrock.guardrail.id" semantic conventions. It represents the unique +// identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and +// prevent unwanted behavior from model responses or user messages. +// +// [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html +func AWSBedrockGuardrailID(val string) attribute.KeyValue { + return AWSBedrockGuardrailIDKey.String(val) +} + +// AWSBedrockKnowledgeBaseID returns an attribute KeyValue conforming to the +// "aws.bedrock.knowledge_base.id" semantic conventions. It represents the unique +// identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a bank of +// information that can be queried by models to generate more relevant responses +// and augment prompts. +// +// [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html +func AWSBedrockKnowledgeBaseID(val string) attribute.KeyValue { + return AWSBedrockKnowledgeBaseIDKey.String(val) +} + +// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming to +// the "aws.dynamodb.attribute_definitions" semantic conventions. It represents +// the JSON-serialized value of each item in the `AttributeDefinitions` request +// field. +func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val) +} + +// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to the +// "aws.dynamodb.attributes_to_get" semantic conventions. It represents the value +// of the `AttributesToGet` request parameter. +func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributesToGetKey.StringSlice(val) +} + +// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the +// "aws.dynamodb.consistent_read" semantic conventions. It represents the value +// of the `ConsistentRead` request parameter. +func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue { + return AWSDynamoDBConsistentReadKey.Bool(val) +} + +// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to the +// "aws.dynamodb.consumed_capacity" semantic conventions. It represents the +// JSON-serialized value of each item in the `ConsumedCapacity` response field. +func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue { + return AWSDynamoDBConsumedCapacityKey.StringSlice(val) +} + +// AWSDynamoDBCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.count" semantic conventions. It represents the value of the +// `Count` response parameter. +func AWSDynamoDBCount(val int) attribute.KeyValue { + return AWSDynamoDBCountKey.Int(val) +} + +// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming to the +// "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the +// value of the `ExclusiveStartTableName` request parameter. +func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue { + return AWSDynamoDBExclusiveStartTableKey.String(val) +} + +// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue +// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic +// conventions. It represents the JSON-serialized value of each item in the +// `GlobalSecondaryIndexUpdates` request field. +func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val) +} + +// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue conforming to +// the "aws.dynamodb.global_secondary_indexes" semantic conventions. It +// represents the JSON-serialized value of each item of the +// `GlobalSecondaryIndexes` request field. +func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the +// "aws.dynamodb.index_name" semantic conventions. It represents the value of the +// `IndexName` request parameter. +func AWSDynamoDBIndexName(val string) attribute.KeyValue { + return AWSDynamoDBIndexNameKey.String(val) +} + +// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming to +// the "aws.dynamodb.item_collection_metrics" semantic conventions. It represents +// the JSON-serialized value of the `ItemCollectionMetrics` response field. +func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue { + return AWSDynamoDBItemCollectionMetricsKey.String(val) +} + +// AWSDynamoDBLimit returns an attribute KeyValue conforming to the +// "aws.dynamodb.limit" semantic conventions. It represents the value of the +// `Limit` request parameter. +func AWSDynamoDBLimit(val int) attribute.KeyValue { + return AWSDynamoDBLimitKey.Int(val) +} + +// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming to +// the "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents +// the JSON-serialized value of each item of the `LocalSecondaryIndexes` request +// field. +func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBProjection returns an attribute KeyValue conforming to the +// "aws.dynamodb.projection" semantic conventions. It represents the value of the +// `ProjectionExpression` request parameter. +func AWSDynamoDBProjection(val string) attribute.KeyValue { + return AWSDynamoDBProjectionKey.String(val) +} + +// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue conforming to +// the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It +// represents the value of the `ProvisionedThroughput.ReadCapacityUnits` request +// parameter. +func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedReadCapacityKey.Float64(val) +} + +// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue conforming +// to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. It +// represents the value of the `ProvisionedThroughput.WriteCapacityUnits` request +// parameter. +func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val) +} + +// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the +// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of +// the `ScanIndexForward` request parameter. +func AWSDynamoDBScanForward(val bool) attribute.KeyValue { + return AWSDynamoDBScanForwardKey.Bool(val) +} + +// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.scanned_count" semantic conventions. It represents the value of +// the `ScannedCount` response parameter. +func AWSDynamoDBScannedCount(val int) attribute.KeyValue { + return AWSDynamoDBScannedCountKey.Int(val) +} + +// AWSDynamoDBSegment returns an attribute KeyValue conforming to the +// "aws.dynamodb.segment" semantic conventions. It represents the value of the +// `Segment` request parameter. +func AWSDynamoDBSegment(val int) attribute.KeyValue { + return AWSDynamoDBSegmentKey.Int(val) +} + +// AWSDynamoDBSelect returns an attribute KeyValue conforming to the +// "aws.dynamodb.select" semantic conventions. It represents the value of the +// `Select` request parameter. +func AWSDynamoDBSelect(val string) attribute.KeyValue { + return AWSDynamoDBSelectKey.String(val) +} + +// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_count" semantic conventions. It represents the number of +// items in the `TableNames` response parameter. +func AWSDynamoDBTableCount(val int) attribute.KeyValue { + return AWSDynamoDBTableCountKey.Int(val) +} + +// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_names" semantic conventions. It represents the keys in the +// `RequestItems` object field. +func AWSDynamoDBTableNames(val ...string) attribute.KeyValue { + return AWSDynamoDBTableNamesKey.StringSlice(val) +} + +// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the +// "aws.dynamodb.total_segments" semantic conventions. It represents the value of +// the `TotalSegments` request parameter. +func AWSDynamoDBTotalSegments(val int) attribute.KeyValue { + return AWSDynamoDBTotalSegmentsKey.Int(val) +} + +// AWSECSClusterARN returns an attribute KeyValue conforming to the +// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an +// [ECS cluster]. +// +// [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html +func AWSECSClusterARN(val string) attribute.KeyValue { + return AWSECSClusterARNKey.String(val) +} + +// AWSECSContainerARN returns an attribute KeyValue conforming to the +// "aws.ecs.container.arn" semantic conventions. It represents the Amazon +// Resource Name (ARN) of an [ECS container instance]. +// +// [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html +func AWSECSContainerARN(val string) attribute.KeyValue { + return AWSECSContainerARNKey.String(val) +} + +// AWSECSTaskARN returns an attribute KeyValue conforming to the +// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running +// [ECS task]. +// +// [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids +func AWSECSTaskARN(val string) attribute.KeyValue { + return AWSECSTaskARNKey.String(val) +} + +// AWSECSTaskFamily returns an attribute KeyValue conforming to the +// "aws.ecs.task.family" semantic conventions. It represents the family name of +// the [ECS task definition] used to create the ECS task. +// +// [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html +func AWSECSTaskFamily(val string) attribute.KeyValue { + return AWSECSTaskFamilyKey.String(val) +} + +// AWSECSTaskID returns an attribute KeyValue conforming to the "aws.ecs.task.id" +// semantic conventions. It represents the ID of a running ECS task. The ID MUST +// be extracted from `task.arn`. +func AWSECSTaskID(val string) attribute.KeyValue { + return AWSECSTaskIDKey.String(val) +} + +// AWSECSTaskRevision returns an attribute KeyValue conforming to the +// "aws.ecs.task.revision" semantic conventions. It represents the revision for +// the task definition used to create the ECS task. +func AWSECSTaskRevision(val string) attribute.KeyValue { + return AWSECSTaskRevisionKey.String(val) +} + +// AWSEKSClusterARN returns an attribute KeyValue conforming to the +// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS +// cluster. +func AWSEKSClusterARN(val string) attribute.KeyValue { + return AWSEKSClusterARNKey.String(val) +} + +// AWSExtendedRequestID returns an attribute KeyValue conforming to the +// "aws.extended_request_id" semantic conventions. It represents the AWS extended +// request ID as returned in the response header `x-amz-id-2`. +func AWSExtendedRequestID(val string) attribute.KeyValue { + return AWSExtendedRequestIDKey.String(val) +} + +// AWSKinesisStreamName returns an attribute KeyValue conforming to the +// "aws.kinesis.stream_name" semantic conventions. It represents the name of the +// AWS Kinesis [stream] the request refers to. Corresponds to the `--stream-name` +// parameter of the Kinesis [describe-stream] operation. +// +// [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html +// [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html +func AWSKinesisStreamName(val string) attribute.KeyValue { + return AWSKinesisStreamNameKey.String(val) +} + +// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the +// "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked +// ARN as provided on the `Context` passed to the function ( +// `Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` +// applicable). +func AWSLambdaInvokedARN(val string) attribute.KeyValue { + return AWSLambdaInvokedARNKey.String(val) +} + +// AWSLambdaResourceMappingID returns an attribute KeyValue conforming to the +// "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID +// of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda +// function. It's contents are read by Lambda and used to trigger a function. +// This isn't available in the lambda execution context or the lambda runtime +// environtment. This is going to be populated by the AWS SDK for each language +// when that UUID is present. Some of these operations are +// Create/Delete/Get/List/Update EventSourceMapping. +// +// [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html +func AWSLambdaResourceMappingID(val string) attribute.KeyValue { + return AWSLambdaResourceMappingIDKey.String(val) +} + +// AWSLogGroupARNs returns an attribute KeyValue conforming to the +// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource +// Name(s) (ARN) of the AWS log group(s). +func AWSLogGroupARNs(val ...string) attribute.KeyValue { + return AWSLogGroupARNsKey.StringSlice(val) +} + +// AWSLogGroupNames returns an attribute KeyValue conforming to the +// "aws.log.group.names" semantic conventions. It represents the name(s) of the +// AWS log group(s) an application is writing to. +func AWSLogGroupNames(val ...string) attribute.KeyValue { + return AWSLogGroupNamesKey.StringSlice(val) +} + +// AWSLogStreamARNs returns an attribute KeyValue conforming to the +// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the +// AWS log stream(s). +func AWSLogStreamARNs(val ...string) attribute.KeyValue { + return AWSLogStreamARNsKey.StringSlice(val) +} + +// AWSLogStreamNames returns an attribute KeyValue conforming to the +// "aws.log.stream.names" semantic conventions. It represents the name(s) of the +// AWS log stream(s) an application is writing to. +func AWSLogStreamNames(val ...string) attribute.KeyValue { + return AWSLogStreamNamesKey.StringSlice(val) +} + +// AWSRequestID returns an attribute KeyValue conforming to the "aws.request_id" +// semantic conventions. It represents the AWS request ID as returned in the +// response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id` +// . +func AWSRequestID(val string) attribute.KeyValue { + return AWSRequestIDKey.String(val) +} + +// AWSS3Bucket returns an attribute KeyValue conforming to the "aws.s3.bucket" +// semantic conventions. It represents the S3 bucket name the request refers to. +// Corresponds to the `--bucket` parameter of the [S3 API] operations. +// +// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html +func AWSS3Bucket(val string) attribute.KeyValue { + return AWSS3BucketKey.String(val) +} + +// AWSS3CopySource returns an attribute KeyValue conforming to the +// "aws.s3.copy_source" semantic conventions. It represents the source object (in +// the form `bucket`/`key`) for the copy operation. +func AWSS3CopySource(val string) attribute.KeyValue { + return AWSS3CopySourceKey.String(val) +} + +// AWSS3Delete returns an attribute KeyValue conforming to the "aws.s3.delete" +// semantic conventions. It represents the delete request container that +// specifies the objects to be deleted. +func AWSS3Delete(val string) attribute.KeyValue { + return AWSS3DeleteKey.String(val) +} + +// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key" semantic +// conventions. It represents the S3 object key the request refers to. +// Corresponds to the `--key` parameter of the [S3 API] operations. +// +// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html +func AWSS3Key(val string) attribute.KeyValue { + return AWSS3KeyKey.String(val) +} + +// AWSS3PartNumber returns an attribute KeyValue conforming to the +// "aws.s3.part_number" semantic conventions. It represents the part number of +// the part being uploaded in a multipart-upload operation. This is a positive +// integer between 1 and 10,000. +func AWSS3PartNumber(val int) attribute.KeyValue { + return AWSS3PartNumberKey.Int(val) +} + +// AWSS3UploadID returns an attribute KeyValue conforming to the +// "aws.s3.upload_id" semantic conventions. It represents the upload ID that +// identifies the multipart upload. +func AWSS3UploadID(val string) attribute.KeyValue { + return AWSS3UploadIDKey.String(val) +} + +// AWSSecretsmanagerSecretARN returns an attribute KeyValue conforming to the +// "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN of +// the Secret stored in the Secrets Mangger. +func AWSSecretsmanagerSecretARN(val string) attribute.KeyValue { + return AWSSecretsmanagerSecretARNKey.String(val) +} + +// AWSSNSTopicARN returns an attribute KeyValue conforming to the +// "aws.sns.topic.arn" semantic conventions. It represents the ARN of the AWS SNS +// Topic. An Amazon SNS [topic] is a logical access point that acts as a +// communication channel. +// +// [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html +func AWSSNSTopicARN(val string) attribute.KeyValue { + return AWSSNSTopicARNKey.String(val) +} + +// AWSSQSQueueURL returns an attribute KeyValue conforming to the +// "aws.sqs.queue.url" semantic conventions. It represents the URL of the AWS SQS +// Queue. It's a unique identifier for a queue in Amazon Simple Queue Service +// (SQS) and is used to access the queue and perform actions on it. +func AWSSQSQueueURL(val string) attribute.KeyValue { + return AWSSQSQueueURLKey.String(val) +} + +// AWSStepFunctionsActivityARN returns an attribute KeyValue conforming to the +// "aws.step_functions.activity.arn" semantic conventions. It represents the ARN +// of the AWS Step Functions Activity. +func AWSStepFunctionsActivityARN(val string) attribute.KeyValue { + return AWSStepFunctionsActivityARNKey.String(val) +} + +// AWSStepFunctionsStateMachineARN returns an attribute KeyValue conforming to +// the "aws.step_functions.state_machine.arn" semantic conventions. It represents +// the ARN of the AWS Step Functions State Machine. +func AWSStepFunctionsStateMachineARN(val string) attribute.KeyValue { + return AWSStepFunctionsStateMachineARNKey.String(val) +} + +// Enum values for aws.ecs.launchtype +var ( + // ec2 + // Stability: development + AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2") + // fargate + // Stability: development + AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate") +) + +// Namespace: az +const ( + // AzNamespaceKey is the attribute Key conforming to the "az.namespace" semantic + // conventions. It represents the [Azure Resource Provider Namespace] as + // recognized by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus" + // + // [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers + AzNamespaceKey = attribute.Key("az.namespace") + + // AzServiceRequestIDKey is the attribute Key conforming to the + // "az.service_request_id" semantic conventions. It represents the unique + // identifier of the service request. It's generated by the Azure service and + // returned with the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "00000000-0000-0000-0000-000000000000" + AzServiceRequestIDKey = attribute.Key("az.service_request_id") +) + +// AzNamespace returns an attribute KeyValue conforming to the "az.namespace" +// semantic conventions. It represents the [Azure Resource Provider Namespace] as +// recognized by the client. +// +// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers +func AzNamespace(val string) attribute.KeyValue { + return AzNamespaceKey.String(val) +} + +// AzServiceRequestID returns an attribute KeyValue conforming to the +// "az.service_request_id" semantic conventions. It represents the unique +// identifier of the service request. It's generated by the Azure service and +// returned with the response. +func AzServiceRequestID(val string) attribute.KeyValue { + return AzServiceRequestIDKey.String(val) +} + +// Namespace: azure +const ( + // AzureClientIDKey is the attribute Key conforming to the "azure.client.id" + // semantic conventions. It represents the unique identifier of the client + // instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "3ba4827d-4422-483f-b59f-85b74211c11d", "storage-client-1" + AzureClientIDKey = attribute.Key("azure.client.id") + + // AzureCosmosDBConnectionModeKey is the attribute Key conforming to the + // "azure.cosmosdb.connection.mode" semantic conventions. It represents the + // cosmos client connection mode. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AzureCosmosDBConnectionModeKey = attribute.Key("azure.cosmosdb.connection.mode") + + // AzureCosmosDBConsistencyLevelKey is the attribute Key conforming to the + // "azure.cosmosdb.consistency.level" semantic conventions. It represents the + // account or request [consistency level]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong", + // "Session" + // + // [consistency level]: https://learn.microsoft.com/azure/cosmos-db/consistency-levels + AzureCosmosDBConsistencyLevelKey = attribute.Key("azure.cosmosdb.consistency.level") + + // AzureCosmosDBOperationContactedRegionsKey is the attribute Key conforming to + // the "azure.cosmosdb.operation.contacted_regions" semantic conventions. It + // represents the list of regions contacted during operation in the order that + // they were contacted. If there is more than one region listed, it indicates + // that the operation was performed on multiple regions i.e. cross-regional + // call. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "North Central US", "Australia East", "Australia Southeast" + // Note: Region name matches the format of `displayName` in [Azure Location API] + // + // [Azure Location API]: https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location + AzureCosmosDBOperationContactedRegionsKey = attribute.Key("azure.cosmosdb.operation.contacted_regions") + + // AzureCosmosDBOperationRequestChargeKey is the attribute Key conforming to the + // "azure.cosmosdb.operation.request_charge" semantic conventions. It represents + // the number of request units consumed by the operation. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 46.18, 1.0 + AzureCosmosDBOperationRequestChargeKey = attribute.Key("azure.cosmosdb.operation.request_charge") + + // AzureCosmosDBRequestBodySizeKey is the attribute Key conforming to the + // "azure.cosmosdb.request.body.size" semantic conventions. It represents the + // request payload size in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AzureCosmosDBRequestBodySizeKey = attribute.Key("azure.cosmosdb.request.body.size") + + // AzureCosmosDBResponseSubStatusCodeKey is the attribute Key conforming to the + // "azure.cosmosdb.response.sub_status_code" semantic conventions. It represents + // the cosmos DB sub status code. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1000, 1002 + AzureCosmosDBResponseSubStatusCodeKey = attribute.Key("azure.cosmosdb.response.sub_status_code") +) + +// AzureClientID returns an attribute KeyValue conforming to the +// "azure.client.id" semantic conventions. It represents the unique identifier of +// the client instance. +func AzureClientID(val string) attribute.KeyValue { + return AzureClientIDKey.String(val) +} + +// AzureCosmosDBOperationContactedRegions returns an attribute KeyValue +// conforming to the "azure.cosmosdb.operation.contacted_regions" semantic +// conventions. It represents the list of regions contacted during operation in +// the order that they were contacted. If there is more than one region listed, +// it indicates that the operation was performed on multiple regions i.e. +// cross-regional call. +func AzureCosmosDBOperationContactedRegions(val ...string) attribute.KeyValue { + return AzureCosmosDBOperationContactedRegionsKey.StringSlice(val) +} + +// AzureCosmosDBOperationRequestCharge returns an attribute KeyValue conforming +// to the "azure.cosmosdb.operation.request_charge" semantic conventions. It +// represents the number of request units consumed by the operation. +func AzureCosmosDBOperationRequestCharge(val float64) attribute.KeyValue { + return AzureCosmosDBOperationRequestChargeKey.Float64(val) +} + +// AzureCosmosDBRequestBodySize returns an attribute KeyValue conforming to the +// "azure.cosmosdb.request.body.size" semantic conventions. It represents the +// request payload size in bytes. +func AzureCosmosDBRequestBodySize(val int) attribute.KeyValue { + return AzureCosmosDBRequestBodySizeKey.Int(val) +} + +// AzureCosmosDBResponseSubStatusCode returns an attribute KeyValue conforming to +// the "azure.cosmosdb.response.sub_status_code" semantic conventions. It +// represents the cosmos DB sub status code. +func AzureCosmosDBResponseSubStatusCode(val int) attribute.KeyValue { + return AzureCosmosDBResponseSubStatusCodeKey.Int(val) +} + +// Enum values for azure.cosmosdb.connection.mode +var ( + // Gateway (HTTP) connection. + // Stability: development + AzureCosmosDBConnectionModeGateway = AzureCosmosDBConnectionModeKey.String("gateway") + // Direct connection. + // Stability: development + AzureCosmosDBConnectionModeDirect = AzureCosmosDBConnectionModeKey.String("direct") +) + +// Enum values for azure.cosmosdb.consistency.level +var ( + // strong + // Stability: development + AzureCosmosDBConsistencyLevelStrong = AzureCosmosDBConsistencyLevelKey.String("Strong") + // bounded_staleness + // Stability: development + AzureCosmosDBConsistencyLevelBoundedStaleness = AzureCosmosDBConsistencyLevelKey.String("BoundedStaleness") + // session + // Stability: development + AzureCosmosDBConsistencyLevelSession = AzureCosmosDBConsistencyLevelKey.String("Session") + // eventual + // Stability: development + AzureCosmosDBConsistencyLevelEventual = AzureCosmosDBConsistencyLevelKey.String("Eventual") + // consistent_prefix + // Stability: development + AzureCosmosDBConsistencyLevelConsistentPrefix = AzureCosmosDBConsistencyLevelKey.String("ConsistentPrefix") +) + +// Namespace: browser +const ( + // BrowserBrandsKey is the attribute Key conforming to the "browser.brands" + // semantic conventions. It represents the array of brand name and version + // separated by a space. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: " Not A;Brand 99", "Chromium 99", "Chrome 99" + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.brands`). + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + BrowserBrandsKey = attribute.Key("browser.brands") + + // BrowserLanguageKey is the attribute Key conforming to the "browser.language" + // semantic conventions. It represents the preferred language of the user using + // the browser. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "en", "en-US", "fr", "fr-FR" + // Note: This value is intended to be taken from the Navigator API + // `navigator.language`. + BrowserLanguageKey = attribute.Key("browser.language") + + // BrowserMobileKey is the attribute Key conforming to the "browser.mobile" + // semantic conventions. It represents a boolean that is true if the browser is + // running on a mobile device. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be + // left unset. + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + BrowserMobileKey = attribute.Key("browser.mobile") + + // BrowserPlatformKey is the attribute Key conforming to the "browser.platform" + // semantic conventions. It represents the platform on which the browser is + // running. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Windows", "macOS", "Android" + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.platform`). If unavailable, the legacy + // `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD + // be left unset in order for the values to be consistent. + // The list of possible values is defined in the + // [W3C User-Agent Client Hints specification]. Note that some (but not all) of + // these values can overlap with values in the + // [`os.type` and `os.name` attributes]. However, for consistency, the values in + // the `browser.platform` attribute should capture the exact value that the user + // agent provides. + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + // [W3C User-Agent Client Hints specification]: https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform + // [`os.type` and `os.name` attributes]: ./os.md + BrowserPlatformKey = attribute.Key("browser.platform") +) + +// BrowserBrands returns an attribute KeyValue conforming to the "browser.brands" +// semantic conventions. It represents the array of brand name and version +// separated by a space. +func BrowserBrands(val ...string) attribute.KeyValue { + return BrowserBrandsKey.StringSlice(val) +} + +// BrowserLanguage returns an attribute KeyValue conforming to the +// "browser.language" semantic conventions. It represents the preferred language +// of the user using the browser. +func BrowserLanguage(val string) attribute.KeyValue { + return BrowserLanguageKey.String(val) +} + +// BrowserMobile returns an attribute KeyValue conforming to the "browser.mobile" +// semantic conventions. It represents a boolean that is true if the browser is +// running on a mobile device. +func BrowserMobile(val bool) attribute.KeyValue { + return BrowserMobileKey.Bool(val) +} + +// BrowserPlatform returns an attribute KeyValue conforming to the +// "browser.platform" semantic conventions. It represents the platform on which +// the browser is running. +func BrowserPlatform(val string) attribute.KeyValue { + return BrowserPlatformKey.String(val) +} + +// Namespace: cassandra +const ( + // CassandraConsistencyLevelKey is the attribute Key conforming to the + // "cassandra.consistency.level" semantic conventions. It represents the + // consistency level of the query. Based on consistency values from [CQL]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [CQL]: https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html + CassandraConsistencyLevelKey = attribute.Key("cassandra.consistency.level") + + // CassandraCoordinatorDCKey is the attribute Key conforming to the + // "cassandra.coordinator.dc" semantic conventions. It represents the data + // center of the coordinating node for a query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: us-west-2 + CassandraCoordinatorDCKey = attribute.Key("cassandra.coordinator.dc") + + // CassandraCoordinatorIDKey is the attribute Key conforming to the + // "cassandra.coordinator.id" semantic conventions. It represents the ID of the + // coordinating node for a query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: be13faa2-8574-4d71-926d-27f16cf8a7af + CassandraCoordinatorIDKey = attribute.Key("cassandra.coordinator.id") + + // CassandraPageSizeKey is the attribute Key conforming to the + // "cassandra.page.size" semantic conventions. It represents the fetch size used + // for paging, i.e. how many rows will be returned at once. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 5000 + CassandraPageSizeKey = attribute.Key("cassandra.page.size") + + // CassandraQueryIdempotentKey is the attribute Key conforming to the + // "cassandra.query.idempotent" semantic conventions. It represents the whether + // or not the query is idempotent. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + CassandraQueryIdempotentKey = attribute.Key("cassandra.query.idempotent") + + // CassandraSpeculativeExecutionCountKey is the attribute Key conforming to the + // "cassandra.speculative_execution.count" semantic conventions. It represents + // the number of times a query was speculatively executed. Not set or `0` if the + // query was not executed speculatively. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 2 + CassandraSpeculativeExecutionCountKey = attribute.Key("cassandra.speculative_execution.count") +) + +// CassandraCoordinatorDC returns an attribute KeyValue conforming to the +// "cassandra.coordinator.dc" semantic conventions. It represents the data center +// of the coordinating node for a query. +func CassandraCoordinatorDC(val string) attribute.KeyValue { + return CassandraCoordinatorDCKey.String(val) +} + +// CassandraCoordinatorID returns an attribute KeyValue conforming to the +// "cassandra.coordinator.id" semantic conventions. It represents the ID of the +// coordinating node for a query. +func CassandraCoordinatorID(val string) attribute.KeyValue { + return CassandraCoordinatorIDKey.String(val) +} + +// CassandraPageSize returns an attribute KeyValue conforming to the +// "cassandra.page.size" semantic conventions. It represents the fetch size used +// for paging, i.e. how many rows will be returned at once. +func CassandraPageSize(val int) attribute.KeyValue { + return CassandraPageSizeKey.Int(val) +} + +// CassandraQueryIdempotent returns an attribute KeyValue conforming to the +// "cassandra.query.idempotent" semantic conventions. It represents the whether +// or not the query is idempotent. +func CassandraQueryIdempotent(val bool) attribute.KeyValue { + return CassandraQueryIdempotentKey.Bool(val) +} + +// CassandraSpeculativeExecutionCount returns an attribute KeyValue conforming to +// the "cassandra.speculative_execution.count" semantic conventions. It +// represents the number of times a query was speculatively executed. Not set or +// `0` if the query was not executed speculatively. +func CassandraSpeculativeExecutionCount(val int) attribute.KeyValue { + return CassandraSpeculativeExecutionCountKey.Int(val) +} + +// Enum values for cassandra.consistency.level +var ( + // all + // Stability: development + CassandraConsistencyLevelAll = CassandraConsistencyLevelKey.String("all") + // each_quorum + // Stability: development + CassandraConsistencyLevelEachQuorum = CassandraConsistencyLevelKey.String("each_quorum") + // quorum + // Stability: development + CassandraConsistencyLevelQuorum = CassandraConsistencyLevelKey.String("quorum") + // local_quorum + // Stability: development + CassandraConsistencyLevelLocalQuorum = CassandraConsistencyLevelKey.String("local_quorum") + // one + // Stability: development + CassandraConsistencyLevelOne = CassandraConsistencyLevelKey.String("one") + // two + // Stability: development + CassandraConsistencyLevelTwo = CassandraConsistencyLevelKey.String("two") + // three + // Stability: development + CassandraConsistencyLevelThree = CassandraConsistencyLevelKey.String("three") + // local_one + // Stability: development + CassandraConsistencyLevelLocalOne = CassandraConsistencyLevelKey.String("local_one") + // any + // Stability: development + CassandraConsistencyLevelAny = CassandraConsistencyLevelKey.String("any") + // serial + // Stability: development + CassandraConsistencyLevelSerial = CassandraConsistencyLevelKey.String("serial") + // local_serial + // Stability: development + CassandraConsistencyLevelLocalSerial = CassandraConsistencyLevelKey.String("local_serial") +) + +// Namespace: cicd +const ( + // CICDPipelineActionNameKey is the attribute Key conforming to the + // "cicd.pipeline.action.name" semantic conventions. It represents the kind of + // action a pipeline run is performing. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "BUILD", "RUN", "SYNC" + CICDPipelineActionNameKey = attribute.Key("cicd.pipeline.action.name") + + // CICDPipelineNameKey is the attribute Key conforming to the + // "cicd.pipeline.name" semantic conventions. It represents the human readable + // name of the pipeline within a CI/CD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Build and Test", "Lint", "Deploy Go Project", + // "deploy_to_environment" + CICDPipelineNameKey = attribute.Key("cicd.pipeline.name") + + // CICDPipelineResultKey is the attribute Key conforming to the + // "cicd.pipeline.result" semantic conventions. It represents the result of a + // pipeline run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "timeout", "skipped" + CICDPipelineResultKey = attribute.Key("cicd.pipeline.result") + + // CICDPipelineRunIDKey is the attribute Key conforming to the + // "cicd.pipeline.run.id" semantic conventions. It represents the unique + // identifier of a pipeline run within a CI/CD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "120912" + CICDPipelineRunIDKey = attribute.Key("cicd.pipeline.run.id") + + // CICDPipelineRunStateKey is the attribute Key conforming to the + // "cicd.pipeline.run.state" semantic conventions. It represents the pipeline + // run goes through these states during its lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pending", "executing", "finalizing" + CICDPipelineRunStateKey = attribute.Key("cicd.pipeline.run.state") + + // CICDPipelineRunURLFullKey is the attribute Key conforming to the + // "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of + // the pipeline run, providing the complete address in order to locate and + // identify the pipeline run. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDPipelineRunURLFullKey = attribute.Key("cicd.pipeline.run.url.full") + + // CICDPipelineTaskNameKey is the attribute Key conforming to the + // "cicd.pipeline.task.name" semantic conventions. It represents the human + // readable name of a task within a pipeline. Task here most closely aligns with + // a [computing process] in a pipeline. Other terms for tasks include commands, + // steps, and procedures. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Run GoLang Linter", "Go Build", "go-test", "deploy_binary" + // + // [computing process]: https://wikipedia.org/wiki/Pipeline_(computing) + CICDPipelineTaskNameKey = attribute.Key("cicd.pipeline.task.name") + + // CICDPipelineTaskRunIDKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.id" semantic conventions. It represents the unique + // identifier of a task run within a pipeline. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "12097" + CICDPipelineTaskRunIDKey = attribute.Key("cicd.pipeline.task.run.id") + + // CICDPipelineTaskRunResultKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.result" semantic conventions. It represents the + // result of a task run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "timeout", "skipped" + CICDPipelineTaskRunResultKey = attribute.Key("cicd.pipeline.task.run.result") + + // CICDPipelineTaskRunURLFullKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.url.full" semantic conventions. It represents the + // [URL] of the pipeline task run, providing the complete address in order to + // locate and identify the pipeline task run. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDPipelineTaskRunURLFullKey = attribute.Key("cicd.pipeline.task.run.url.full") + + // CICDPipelineTaskTypeKey is the attribute Key conforming to the + // "cicd.pipeline.task.type" semantic conventions. It represents the type of the + // task within a pipeline. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "build", "test", "deploy" + CICDPipelineTaskTypeKey = attribute.Key("cicd.pipeline.task.type") + + // CICDSystemComponentKey is the attribute Key conforming to the + // "cicd.system.component" semantic conventions. It represents the name of a + // component of the CICD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "controller", "scheduler", "agent" + CICDSystemComponentKey = attribute.Key("cicd.system.component") + + // CICDWorkerIDKey is the attribute Key conforming to the "cicd.worker.id" + // semantic conventions. It represents the unique identifier of a worker within + // a CICD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "abc123", "10.0.1.2", "controller" + CICDWorkerIDKey = attribute.Key("cicd.worker.id") + + // CICDWorkerNameKey is the attribute Key conforming to the "cicd.worker.name" + // semantic conventions. It represents the name of a worker within a CICD + // system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "agent-abc", "controller", "Ubuntu LTS" + CICDWorkerNameKey = attribute.Key("cicd.worker.name") + + // CICDWorkerStateKey is the attribute Key conforming to the "cicd.worker.state" + // semantic conventions. It represents the state of a CICD worker / agent. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "idle", "busy", "down" + CICDWorkerStateKey = attribute.Key("cicd.worker.state") + + // CICDWorkerURLFullKey is the attribute Key conforming to the + // "cicd.worker.url.full" semantic conventions. It represents the [URL] of the + // worker, providing the complete address in order to locate and identify the + // worker. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://cicd.example.org/worker/abc123" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDWorkerURLFullKey = attribute.Key("cicd.worker.url.full") +) + +// CICDPipelineName returns an attribute KeyValue conforming to the +// "cicd.pipeline.name" semantic conventions. It represents the human readable +// name of the pipeline within a CI/CD system. +func CICDPipelineName(val string) attribute.KeyValue { + return CICDPipelineNameKey.String(val) +} + +// CICDPipelineRunID returns an attribute KeyValue conforming to the +// "cicd.pipeline.run.id" semantic conventions. It represents the unique +// identifier of a pipeline run within a CI/CD system. +func CICDPipelineRunID(val string) attribute.KeyValue { + return CICDPipelineRunIDKey.String(val) +} + +// CICDPipelineRunURLFull returns an attribute KeyValue conforming to the +// "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of +// the pipeline run, providing the complete address in order to locate and +// identify the pipeline run. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDPipelineRunURLFull(val string) attribute.KeyValue { + return CICDPipelineRunURLFullKey.String(val) +} + +// CICDPipelineTaskName returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.name" semantic conventions. It represents the human +// readable name of a task within a pipeline. Task here most closely aligns with +// a [computing process] in a pipeline. Other terms for tasks include commands, +// steps, and procedures. +// +// [computing process]: https://wikipedia.org/wiki/Pipeline_(computing) +func CICDPipelineTaskName(val string) attribute.KeyValue { + return CICDPipelineTaskNameKey.String(val) +} + +// CICDPipelineTaskRunID returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.run.id" semantic conventions. It represents the unique +// identifier of a task run within a pipeline. +func CICDPipelineTaskRunID(val string) attribute.KeyValue { + return CICDPipelineTaskRunIDKey.String(val) +} + +// CICDPipelineTaskRunURLFull returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.run.url.full" semantic conventions. It represents the +// [URL] of the pipeline task run, providing the complete address in order to +// locate and identify the pipeline task run. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDPipelineTaskRunURLFull(val string) attribute.KeyValue { + return CICDPipelineTaskRunURLFullKey.String(val) +} + +// CICDSystemComponent returns an attribute KeyValue conforming to the +// "cicd.system.component" semantic conventions. It represents the name of a +// component of the CICD system. +func CICDSystemComponent(val string) attribute.KeyValue { + return CICDSystemComponentKey.String(val) +} + +// CICDWorkerID returns an attribute KeyValue conforming to the "cicd.worker.id" +// semantic conventions. It represents the unique identifier of a worker within a +// CICD system. +func CICDWorkerID(val string) attribute.KeyValue { + return CICDWorkerIDKey.String(val) +} + +// CICDWorkerName returns an attribute KeyValue conforming to the +// "cicd.worker.name" semantic conventions. It represents the name of a worker +// within a CICD system. +func CICDWorkerName(val string) attribute.KeyValue { + return CICDWorkerNameKey.String(val) +} + +// CICDWorkerURLFull returns an attribute KeyValue conforming to the +// "cicd.worker.url.full" semantic conventions. It represents the [URL] of the +// worker, providing the complete address in order to locate and identify the +// worker. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDWorkerURLFull(val string) attribute.KeyValue { + return CICDWorkerURLFullKey.String(val) +} + +// Enum values for cicd.pipeline.action.name +var ( + // The pipeline run is executing a build. + // Stability: development + CICDPipelineActionNameBuild = CICDPipelineActionNameKey.String("BUILD") + // The pipeline run is executing. + // Stability: development + CICDPipelineActionNameRun = CICDPipelineActionNameKey.String("RUN") + // The pipeline run is executing a sync. + // Stability: development + CICDPipelineActionNameSync = CICDPipelineActionNameKey.String("SYNC") +) + +// Enum values for cicd.pipeline.result +var ( + // The pipeline run finished successfully. + // Stability: development + CICDPipelineResultSuccess = CICDPipelineResultKey.String("success") + // The pipeline run did not finish successfully, eg. due to a compile error or a + // failing test. Such failures are usually detected by non-zero exit codes of + // the tools executed in the pipeline run. + // Stability: development + CICDPipelineResultFailure = CICDPipelineResultKey.String("failure") + // The pipeline run failed due to an error in the CICD system, eg. due to the + // worker being killed. + // Stability: development + CICDPipelineResultError = CICDPipelineResultKey.String("error") + // A timeout caused the pipeline run to be interrupted. + // Stability: development + CICDPipelineResultTimeout = CICDPipelineResultKey.String("timeout") + // The pipeline run was cancelled, eg. by a user manually cancelling the + // pipeline run. + // Stability: development + CICDPipelineResultCancellation = CICDPipelineResultKey.String("cancellation") + // The pipeline run was skipped, eg. due to a precondition not being met. + // Stability: development + CICDPipelineResultSkip = CICDPipelineResultKey.String("skip") +) + +// Enum values for cicd.pipeline.run.state +var ( + // The run pending state spans from the event triggering the pipeline run until + // the execution of the run starts (eg. time spent in a queue, provisioning + // agents, creating run resources). + // + // Stability: development + CICDPipelineRunStatePending = CICDPipelineRunStateKey.String("pending") + // The executing state spans the execution of any run tasks (eg. build, test). + // Stability: development + CICDPipelineRunStateExecuting = CICDPipelineRunStateKey.String("executing") + // The finalizing state spans from when the run has finished executing (eg. + // cleanup of run resources). + // Stability: development + CICDPipelineRunStateFinalizing = CICDPipelineRunStateKey.String("finalizing") +) + +// Enum values for cicd.pipeline.task.run.result +var ( + // The task run finished successfully. + // Stability: development + CICDPipelineTaskRunResultSuccess = CICDPipelineTaskRunResultKey.String("success") + // The task run did not finish successfully, eg. due to a compile error or a + // failing test. Such failures are usually detected by non-zero exit codes of + // the tools executed in the task run. + // Stability: development + CICDPipelineTaskRunResultFailure = CICDPipelineTaskRunResultKey.String("failure") + // The task run failed due to an error in the CICD system, eg. due to the worker + // being killed. + // Stability: development + CICDPipelineTaskRunResultError = CICDPipelineTaskRunResultKey.String("error") + // A timeout caused the task run to be interrupted. + // Stability: development + CICDPipelineTaskRunResultTimeout = CICDPipelineTaskRunResultKey.String("timeout") + // The task run was cancelled, eg. by a user manually cancelling the task run. + // Stability: development + CICDPipelineTaskRunResultCancellation = CICDPipelineTaskRunResultKey.String("cancellation") + // The task run was skipped, eg. due to a precondition not being met. + // Stability: development + CICDPipelineTaskRunResultSkip = CICDPipelineTaskRunResultKey.String("skip") +) + +// Enum values for cicd.pipeline.task.type +var ( + // build + // Stability: development + CICDPipelineTaskTypeBuild = CICDPipelineTaskTypeKey.String("build") + // test + // Stability: development + CICDPipelineTaskTypeTest = CICDPipelineTaskTypeKey.String("test") + // deploy + // Stability: development + CICDPipelineTaskTypeDeploy = CICDPipelineTaskTypeKey.String("deploy") +) + +// Enum values for cicd.worker.state +var ( + // The worker is not performing work for the CICD system. It is available to the + // CICD system to perform work on (online / idle). + // Stability: development + CICDWorkerStateAvailable = CICDWorkerStateKey.String("available") + // The worker is performing work for the CICD system. + // Stability: development + CICDWorkerStateBusy = CICDWorkerStateKey.String("busy") + // The worker is not available to the CICD system (disconnected / down). + // Stability: development + CICDWorkerStateOffline = CICDWorkerStateKey.String("offline") +) + +// Namespace: client +const ( + // ClientAddressKey is the attribute Key conforming to the "client.address" + // semantic conventions. It represents the client address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix domain + // socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "client.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the server side, and when communicating through an + // intermediary, `client.address` SHOULD represent the client address behind any + // intermediaries, for example proxies, if it's available. + ClientAddressKey = attribute.Key("client.address") + + // ClientPortKey is the attribute Key conforming to the "client.port" semantic + // conventions. It represents the client port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + // Note: When observed from the server side, and when communicating through an + // intermediary, `client.port` SHOULD represent the client port behind any + // intermediaries, for example proxies, if it's available. + ClientPortKey = attribute.Key("client.port") +) + +// ClientAddress returns an attribute KeyValue conforming to the "client.address" +// semantic conventions. It represents the client address - domain name if +// available without reverse DNS lookup; otherwise, IP address or Unix domain +// socket name. +func ClientAddress(val string) attribute.KeyValue { + return ClientAddressKey.String(val) +} + +// ClientPort returns an attribute KeyValue conforming to the "client.port" +// semantic conventions. It represents the client port number. +func ClientPort(val int) attribute.KeyValue { + return ClientPortKey.Int(val) +} + +// Namespace: cloud +const ( + // CloudAccountIDKey is the attribute Key conforming to the "cloud.account.id" + // semantic conventions. It represents the cloud account ID the resource is + // assigned to. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "111111111111", "opentelemetry" + CloudAccountIDKey = attribute.Key("cloud.account.id") + + // CloudAvailabilityZoneKey is the attribute Key conforming to the + // "cloud.availability_zone" semantic conventions. It represents the cloud + // regions often have multiple, isolated locations known as zones to increase + // availability. Availability zone represents the zone where the resource is + // running. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-east-1c" + // Note: Availability zones are called "zones" on Alibaba Cloud and Google + // Cloud. + CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone") + + // CloudPlatformKey is the attribute Key conforming to the "cloud.platform" + // semantic conventions. It represents the cloud platform in use. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The prefix of the service SHOULD match the one specified in + // `cloud.provider`. + CloudPlatformKey = attribute.Key("cloud.platform") + + // CloudProviderKey is the attribute Key conforming to the "cloud.provider" + // semantic conventions. It represents the name of the cloud provider. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + CloudProviderKey = attribute.Key("cloud.provider") + + // CloudRegionKey is the attribute Key conforming to the "cloud.region" semantic + // conventions. It represents the geographical region within a cloud provider. + // When associated with a resource, this attribute specifies the region where + // the resource operates. When calling services or APIs deployed on a cloud, + // this attribute identifies the region where the called destination is + // deployed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-central1", "us-east-1" + // Note: Refer to your provider's docs to see the available regions, for example + // [Alibaba Cloud regions], [AWS regions], [Azure regions], + // [Google Cloud regions], or [Tencent Cloud regions]. + // + // [Alibaba Cloud regions]: https://www.alibabacloud.com/help/doc-detail/40654.htm + // [AWS regions]: https://aws.amazon.com/about-aws/global-infrastructure/regions_az/ + // [Azure regions]: https://azure.microsoft.com/global-infrastructure/geographies/ + // [Google Cloud regions]: https://cloud.google.com/about/locations + // [Tencent Cloud regions]: https://www.tencentcloud.com/document/product/213/6091 + CloudRegionKey = attribute.Key("cloud.region") + + // CloudResourceIDKey is the attribute Key conforming to the "cloud.resource_id" + // semantic conventions. It represents the cloud provider-specific native + // identifier of the monitored cloud resource (e.g. an [ARN] on AWS, a + // [fully qualified resource ID] on Azure, a [full resource name] on GCP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", + // "//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID", + // "/subscriptions//resourceGroups/ + // /providers/Microsoft.Web/sites//functions/" + // Note: On some cloud providers, it may not be possible to determine the full + // ID at startup, + // so it may be necessary to set `cloud.resource_id` as a span attribute + // instead. + // + // The exact value to use for `cloud.resource_id` depends on the cloud provider. + // The following well-known definitions MUST be used if you set this attribute + // and they apply: + // + // - **AWS Lambda:** The function [ARN]. + // Take care not to use the "invoked ARN" directly but replace any + // [alias suffix] + // with the resolved function version, as the same runtime instance may be + // invocable with + // multiple different aliases. + // - **GCP:** The [URI of the resource] + // - **Azure:** The [Fully Qualified Resource ID] of the invoked function, + // *not* the function app, having the form + // + // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/` + // . + // This means that a span attribute MUST be used, as an Azure function app + // can host multiple functions that would usually share + // a TracerProvider. + // + // + // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + // [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id + // [full resource name]: https://google.aip.dev/122#full-resource-names + // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + // [alias suffix]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html + // [URI of the resource]: https://cloud.google.com/iam/docs/full-resource-names + // [Fully Qualified Resource ID]: https://docs.microsoft.com/rest/api/resources/resources/get-by-id + CloudResourceIDKey = attribute.Key("cloud.resource_id") +) + +// CloudAccountID returns an attribute KeyValue conforming to the +// "cloud.account.id" semantic conventions. It represents the cloud account ID +// the resource is assigned to. +func CloudAccountID(val string) attribute.KeyValue { + return CloudAccountIDKey.String(val) +} + +// CloudAvailabilityZone returns an attribute KeyValue conforming to the +// "cloud.availability_zone" semantic conventions. It represents the cloud +// regions often have multiple, isolated locations known as zones to increase +// availability. Availability zone represents the zone where the resource is +// running. +func CloudAvailabilityZone(val string) attribute.KeyValue { + return CloudAvailabilityZoneKey.String(val) +} + +// CloudRegion returns an attribute KeyValue conforming to the "cloud.region" +// semantic conventions. It represents the geographical region within a cloud +// provider. When associated with a resource, this attribute specifies the region +// where the resource operates. When calling services or APIs deployed on a +// cloud, this attribute identifies the region where the called destination is +// deployed. +func CloudRegion(val string) attribute.KeyValue { + return CloudRegionKey.String(val) +} + +// CloudResourceID returns an attribute KeyValue conforming to the +// "cloud.resource_id" semantic conventions. It represents the cloud +// provider-specific native identifier of the monitored cloud resource (e.g. an +// [ARN] on AWS, a [fully qualified resource ID] on Azure, a [full resource name] +// on GCP). +// +// [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html +// [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id +// [full resource name]: https://google.aip.dev/122#full-resource-names +func CloudResourceID(val string) attribute.KeyValue { + return CloudResourceIDKey.String(val) +} + +// Enum values for cloud.platform +var ( + // Alibaba Cloud Elastic Compute Service + // Stability: development + CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs") + // Alibaba Cloud Function Compute + // Stability: development + CloudPlatformAlibabaCloudFC = CloudPlatformKey.String("alibaba_cloud_fc") + // Red Hat OpenShift on Alibaba Cloud + // Stability: development + CloudPlatformAlibabaCloudOpenShift = CloudPlatformKey.String("alibaba_cloud_openshift") + // AWS Elastic Compute Cloud + // Stability: development + CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2") + // AWS Elastic Container Service + // Stability: development + CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs") + // AWS Elastic Kubernetes Service + // Stability: development + CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks") + // AWS Lambda + // Stability: development + CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda") + // AWS Elastic Beanstalk + // Stability: development + CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk") + // AWS App Runner + // Stability: development + CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner") + // Red Hat OpenShift on AWS (ROSA) + // Stability: development + CloudPlatformAWSOpenShift = CloudPlatformKey.String("aws_openshift") + // Azure Virtual Machines + // Stability: development + CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm") + // Azure Container Apps + // Stability: development + CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure_container_apps") + // Azure Container Instances + // Stability: development + CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances") + // Azure Kubernetes Service + // Stability: development + CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks") + // Azure Functions + // Stability: development + CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions") + // Azure App Service + // Stability: development + CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service") + // Azure Red Hat OpenShift + // Stability: development + CloudPlatformAzureOpenShift = CloudPlatformKey.String("azure_openshift") + // Google Bare Metal Solution (BMS) + // Stability: development + CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution") + // Google Cloud Compute Engine (GCE) + // Stability: development + CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine") + // Google Cloud Run + // Stability: development + CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run") + // Google Cloud Kubernetes Engine (GKE) + // Stability: development + CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine") + // Google Cloud Functions (GCF) + // Stability: development + CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions") + // Google Cloud App Engine (GAE) + // Stability: development + CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine") + // Red Hat OpenShift on Google Cloud + // Stability: development + CloudPlatformGCPOpenShift = CloudPlatformKey.String("gcp_openshift") + // Red Hat OpenShift on IBM Cloud + // Stability: development + CloudPlatformIBMCloudOpenShift = CloudPlatformKey.String("ibm_cloud_openshift") + // Compute on Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudPlatformOracleCloudCompute = CloudPlatformKey.String("oracle_cloud_compute") + // Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudPlatformOracleCloudOKE = CloudPlatformKey.String("oracle_cloud_oke") + // Tencent Cloud Cloud Virtual Machine (CVM) + // Stability: development + CloudPlatformTencentCloudCVM = CloudPlatformKey.String("tencent_cloud_cvm") + // Tencent Cloud Elastic Kubernetes Service (EKS) + // Stability: development + CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks") + // Tencent Cloud Serverless Cloud Function (SCF) + // Stability: development + CloudPlatformTencentCloudSCF = CloudPlatformKey.String("tencent_cloud_scf") +) + +// Enum values for cloud.provider +var ( + // Alibaba Cloud + // Stability: development + CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud") + // Amazon Web Services + // Stability: development + CloudProviderAWS = CloudProviderKey.String("aws") + // Microsoft Azure + // Stability: development + CloudProviderAzure = CloudProviderKey.String("azure") + // Google Cloud Platform + // Stability: development + CloudProviderGCP = CloudProviderKey.String("gcp") + // Heroku Platform as a Service + // Stability: development + CloudProviderHeroku = CloudProviderKey.String("heroku") + // IBM Cloud + // Stability: development + CloudProviderIBMCloud = CloudProviderKey.String("ibm_cloud") + // Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudProviderOracleCloud = CloudProviderKey.String("oracle_cloud") + // Tencent Cloud + // Stability: development + CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud") +) + +// Namespace: cloudevents +const ( + // CloudEventsEventIDKey is the attribute Key conforming to the + // "cloudevents.event_id" semantic conventions. It represents the [event_id] + // uniquely identifies the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123e4567-e89b-12d3-a456-426614174000", "0001" + // + // [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id + CloudEventsEventIDKey = attribute.Key("cloudevents.event_id") + + // CloudEventsEventSourceKey is the attribute Key conforming to the + // "cloudevents.event_source" semantic conventions. It represents the [source] + // identifies the context in which an event happened. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://github.com/cloudevents", "/cloudevents/spec/pull/123", + // "my-service" + // + // [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1 + CloudEventsEventSourceKey = attribute.Key("cloudevents.event_source") + + // CloudEventsEventSpecVersionKey is the attribute Key conforming to the + // "cloudevents.event_spec_version" semantic conventions. It represents the + // [version of the CloudEvents specification] which the event uses. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + // + // [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion + CloudEventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version") + + // CloudEventsEventSubjectKey is the attribute Key conforming to the + // "cloudevents.event_subject" semantic conventions. It represents the [subject] + // of the event in the context of the event producer (identified by source). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: mynewfile.jpg + // + // [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject + CloudEventsEventSubjectKey = attribute.Key("cloudevents.event_subject") + + // CloudEventsEventTypeKey is the attribute Key conforming to the + // "cloudevents.event_type" semantic conventions. It represents the [event_type] + // contains a value describing the type of event related to the originating + // occurrence. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "com.github.pull_request.opened", "com.example.object.deleted.v2" + // + // [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type + CloudEventsEventTypeKey = attribute.Key("cloudevents.event_type") +) + +// CloudEventsEventID returns an attribute KeyValue conforming to the +// "cloudevents.event_id" semantic conventions. It represents the [event_id] +// uniquely identifies the event. +// +// [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id +func CloudEventsEventID(val string) attribute.KeyValue { + return CloudEventsEventIDKey.String(val) +} + +// CloudEventsEventSource returns an attribute KeyValue conforming to the +// "cloudevents.event_source" semantic conventions. It represents the [source] +// identifies the context in which an event happened. +// +// [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1 +func CloudEventsEventSource(val string) attribute.KeyValue { + return CloudEventsEventSourceKey.String(val) +} + +// CloudEventsEventSpecVersion returns an attribute KeyValue conforming to the +// "cloudevents.event_spec_version" semantic conventions. It represents the +// [version of the CloudEvents specification] which the event uses. +// +// [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion +func CloudEventsEventSpecVersion(val string) attribute.KeyValue { + return CloudEventsEventSpecVersionKey.String(val) +} + +// CloudEventsEventSubject returns an attribute KeyValue conforming to the +// "cloudevents.event_subject" semantic conventions. It represents the [subject] +// of the event in the context of the event producer (identified by source). +// +// [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject +func CloudEventsEventSubject(val string) attribute.KeyValue { + return CloudEventsEventSubjectKey.String(val) +} + +// CloudEventsEventType returns an attribute KeyValue conforming to the +// "cloudevents.event_type" semantic conventions. It represents the [event_type] +// contains a value describing the type of event related to the originating +// occurrence. +// +// [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type +func CloudEventsEventType(val string) attribute.KeyValue { + return CloudEventsEventTypeKey.String(val) +} + +// Namespace: cloudfoundry +const ( + // CloudFoundryAppIDKey is the attribute Key conforming to the + // "cloudfoundry.app.id" semantic conventions. It represents the guid of the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.application_id`. This is the same value as + // reported by `cf app --guid`. + CloudFoundryAppIDKey = attribute.Key("cloudfoundry.app.id") + + // CloudFoundryAppInstanceIDKey is the attribute Key conforming to the + // "cloudfoundry.app.instance.id" semantic conventions. It represents the index + // of the application instance. 0 when just one instance is active. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0", "1" + // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope] + // . + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the application instance index for applications + // deployed on the runtime. + // + // Application instrumentation should use the value from environment + // variable `CF_INSTANCE_INDEX`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + CloudFoundryAppInstanceIDKey = attribute.Key("cloudfoundry.app.instance.id") + + // CloudFoundryAppNameKey is the attribute Key conforming to the + // "cloudfoundry.app.name" semantic conventions. It represents the name of the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-app-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.application_name`. This is the same value + // as reported by `cf apps`. + CloudFoundryAppNameKey = attribute.Key("cloudfoundry.app.name") + + // CloudFoundryOrgIDKey is the attribute Key conforming to the + // "cloudfoundry.org.id" semantic conventions. It represents the guid of the + // CloudFoundry org the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.org_id`. This is the same value as + // reported by `cf org --guid`. + CloudFoundryOrgIDKey = attribute.Key("cloudfoundry.org.id") + + // CloudFoundryOrgNameKey is the attribute Key conforming to the + // "cloudfoundry.org.name" semantic conventions. It represents the name of the + // CloudFoundry organization the app is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-org-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.org_name`. This is the same value as + // reported by `cf orgs`. + CloudFoundryOrgNameKey = attribute.Key("cloudfoundry.org.name") + + // CloudFoundryProcessIDKey is the attribute Key conforming to the + // "cloudfoundry.process.id" semantic conventions. It represents the UID + // identifying the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + // `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + // For system components, this could be the actual PID. + CloudFoundryProcessIDKey = attribute.Key("cloudfoundry.process.id") + + // CloudFoundryProcessTypeKey is the attribute Key conforming to the + // "cloudfoundry.process.type" semantic conventions. It represents the type of + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "web" + // Note: CloudFoundry applications can consist of multiple jobs. Usually the + // main process will be of type `web`. There can be additional background + // tasks or side-cars with different process types. + CloudFoundryProcessTypeKey = attribute.Key("cloudfoundry.process.type") + + // CloudFoundrySpaceIDKey is the attribute Key conforming to the + // "cloudfoundry.space.id" semantic conventions. It represents the guid of the + // CloudFoundry space the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.space_id`. This is the same value as + // reported by `cf space --guid`. + CloudFoundrySpaceIDKey = attribute.Key("cloudfoundry.space.id") + + // CloudFoundrySpaceNameKey is the attribute Key conforming to the + // "cloudfoundry.space.name" semantic conventions. It represents the name of the + // CloudFoundry space the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-space-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.space_name`. This is the same value as + // reported by `cf spaces`. + CloudFoundrySpaceNameKey = attribute.Key("cloudfoundry.space.name") + + // CloudFoundrySystemIDKey is the attribute Key conforming to the + // "cloudfoundry.system.id" semantic conventions. It represents a guid or + // another name describing the event source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cf/gorouter" + // Note: CloudFoundry defines the `source_id` in the [Loggregator v2 envelope]. + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the component name, e.g. "gorouter", for + // CloudFoundry components. + // + // When system components are instrumented, values from the + // [Bosh spec] + // should be used. The `system.id` should be set to + // `spec.deployment/spec.name`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec + CloudFoundrySystemIDKey = attribute.Key("cloudfoundry.system.id") + + // CloudFoundrySystemInstanceIDKey is the attribute Key conforming to the + // "cloudfoundry.system.instance.id" semantic conventions. It represents a guid + // describing the concrete instance of the event source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope] + // . + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the vm id for CloudFoundry components. + // + // When system components are instrumented, values from the + // [Bosh spec] + // should be used. The `system.instance.id` should be set to `spec.id`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec + CloudFoundrySystemInstanceIDKey = attribute.Key("cloudfoundry.system.instance.id") +) + +// CloudFoundryAppID returns an attribute KeyValue conforming to the +// "cloudfoundry.app.id" semantic conventions. It represents the guid of the +// application. +func CloudFoundryAppID(val string) attribute.KeyValue { + return CloudFoundryAppIDKey.String(val) +} + +// CloudFoundryAppInstanceID returns an attribute KeyValue conforming to the +// "cloudfoundry.app.instance.id" semantic conventions. It represents the index +// of the application instance. 0 when just one instance is active. +func CloudFoundryAppInstanceID(val string) attribute.KeyValue { + return CloudFoundryAppInstanceIDKey.String(val) +} + +// CloudFoundryAppName returns an attribute KeyValue conforming to the +// "cloudfoundry.app.name" semantic conventions. It represents the name of the +// application. +func CloudFoundryAppName(val string) attribute.KeyValue { + return CloudFoundryAppNameKey.String(val) +} + +// CloudFoundryOrgID returns an attribute KeyValue conforming to the +// "cloudfoundry.org.id" semantic conventions. It represents the guid of the +// CloudFoundry org the application is running in. +func CloudFoundryOrgID(val string) attribute.KeyValue { + return CloudFoundryOrgIDKey.String(val) +} + +// CloudFoundryOrgName returns an attribute KeyValue conforming to the +// "cloudfoundry.org.name" semantic conventions. It represents the name of the +// CloudFoundry organization the app is running in. +func CloudFoundryOrgName(val string) attribute.KeyValue { + return CloudFoundryOrgNameKey.String(val) +} + +// CloudFoundryProcessID returns an attribute KeyValue conforming to the +// "cloudfoundry.process.id" semantic conventions. It represents the UID +// identifying the process. +func CloudFoundryProcessID(val string) attribute.KeyValue { + return CloudFoundryProcessIDKey.String(val) +} + +// CloudFoundryProcessType returns an attribute KeyValue conforming to the +// "cloudfoundry.process.type" semantic conventions. It represents the type of +// process. +func CloudFoundryProcessType(val string) attribute.KeyValue { + return CloudFoundryProcessTypeKey.String(val) +} + +// CloudFoundrySpaceID returns an attribute KeyValue conforming to the +// "cloudfoundry.space.id" semantic conventions. It represents the guid of the +// CloudFoundry space the application is running in. +func CloudFoundrySpaceID(val string) attribute.KeyValue { + return CloudFoundrySpaceIDKey.String(val) +} + +// CloudFoundrySpaceName returns an attribute KeyValue conforming to the +// "cloudfoundry.space.name" semantic conventions. It represents the name of the +// CloudFoundry space the application is running in. +func CloudFoundrySpaceName(val string) attribute.KeyValue { + return CloudFoundrySpaceNameKey.String(val) +} + +// CloudFoundrySystemID returns an attribute KeyValue conforming to the +// "cloudfoundry.system.id" semantic conventions. It represents a guid or another +// name describing the event source. +func CloudFoundrySystemID(val string) attribute.KeyValue { + return CloudFoundrySystemIDKey.String(val) +} + +// CloudFoundrySystemInstanceID returns an attribute KeyValue conforming to the +// "cloudfoundry.system.instance.id" semantic conventions. It represents a guid +// describing the concrete instance of the event source. +func CloudFoundrySystemInstanceID(val string) attribute.KeyValue { + return CloudFoundrySystemInstanceIDKey.String(val) +} + +// Namespace: code +const ( + // CodeColumnNumberKey is the attribute Key conforming to the + // "code.column.number" semantic conventions. It represents the column number in + // `code.file.path` best representing the operation. It SHOULD point within the + // code unit named in `code.function.name`. This attribute MUST NOT be used on + // the Profile signal since the data is already captured in 'message Line'. This + // constraint is imposed to prevent redundancy and maintain data integrity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + CodeColumnNumberKey = attribute.Key("code.column.number") + + // CodeFilePathKey is the attribute Key conforming to the "code.file.path" + // semantic conventions. It represents the source code file name that identifies + // the code unit as uniquely as possible (preferably an absolute file path). + // This attribute MUST NOT be used on the Profile signal since the data is + // already captured in 'message Function'. This constraint is imposed to prevent + // redundancy and maintain data integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: /usr/local/MyApplication/content_root/app/index.php + CodeFilePathKey = attribute.Key("code.file.path") + + // CodeFunctionNameKey is the attribute Key conforming to the + // "code.function.name" semantic conventions. It represents the method or + // function fully-qualified name without arguments. The value should fit the + // natural representation of the language runtime, which is also likely the same + // used within `code.stacktrace` attribute value. This attribute MUST NOT be + // used on the Profile signal since the data is already captured in 'message + // Function'. This constraint is imposed to prevent redundancy and maintain data + // integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "com.example.MyHttpService.serveRequest", + // "GuzzleHttp\Client::transfer", "fopen" + // Note: Values and format depends on each language runtime, thus it is + // impossible to provide an exhaustive list of examples. + // The values are usually the same (or prefixes of) the ones found in native + // stack trace representation stored in + // `code.stacktrace` without information on arguments. + // + // Examples: + // + // - Java method: `com.example.MyHttpService.serveRequest` + // - Java anonymous class method: `com.mycompany.Main$1.myMethod` + // - Java lambda method: + // `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + // - PHP function: `GuzzleHttp\Client::transfer` + // - Go function: `github.com/my/repo/pkg.foo.func5` + // - Elixir: `OpenTelemetry.Ctx.new` + // - Erlang: `opentelemetry_ctx:new` + // - Rust: `playground::my_module::my_cool_func` + // - C function: `fopen` + CodeFunctionNameKey = attribute.Key("code.function.name") + + // CodeLineNumberKey is the attribute Key conforming to the "code.line.number" + // semantic conventions. It represents the line number in `code.file.path` best + // representing the operation. It SHOULD point within the code unit named in + // `code.function.name`. This attribute MUST NOT be used on the Profile signal + // since the data is already captured in 'message Line'. This constraint is + // imposed to prevent redundancy and maintain data integrity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + CodeLineNumberKey = attribute.Key("code.line.number") + + // CodeStacktraceKey is the attribute Key conforming to the "code.stacktrace" + // semantic conventions. It represents a stacktrace as a string in the natural + // representation for the language runtime. The representation is identical to + // [`exception.stacktrace`]. This attribute MUST NOT be used on the Profile + // signal since the data is already captured in 'message Location'. This + // constraint is imposed to prevent redundancy and maintain data integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at + // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at + // com.example.GenerateTrace.main(GenerateTrace.java:5) + // + // [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation + CodeStacktraceKey = attribute.Key("code.stacktrace") +) + +// CodeColumnNumber returns an attribute KeyValue conforming to the +// "code.column.number" semantic conventions. It represents the column number in +// `code.file.path` best representing the operation. It SHOULD point within the +// code unit named in `code.function.name`. This attribute MUST NOT be used on +// the Profile signal since the data is already captured in 'message Line'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +func CodeColumnNumber(val int) attribute.KeyValue { + return CodeColumnNumberKey.Int(val) +} + +// CodeFilePath returns an attribute KeyValue conforming to the "code.file.path" +// semantic conventions. It represents the source code file name that identifies +// the code unit as uniquely as possible (preferably an absolute file path). This +// attribute MUST NOT be used on the Profile signal since the data is already +// captured in 'message Function'. This constraint is imposed to prevent +// redundancy and maintain data integrity. +func CodeFilePath(val string) attribute.KeyValue { + return CodeFilePathKey.String(val) +} + +// CodeFunctionName returns an attribute KeyValue conforming to the +// "code.function.name" semantic conventions. It represents the method or +// function fully-qualified name without arguments. The value should fit the +// natural representation of the language runtime, which is also likely the same +// used within `code.stacktrace` attribute value. This attribute MUST NOT be used +// on the Profile signal since the data is already captured in 'message +// Function'. This constraint is imposed to prevent redundancy and maintain data +// integrity. +func CodeFunctionName(val string) attribute.KeyValue { + return CodeFunctionNameKey.String(val) +} + +// CodeLineNumber returns an attribute KeyValue conforming to the +// "code.line.number" semantic conventions. It represents the line number in +// `code.file.path` best representing the operation. It SHOULD point within the +// code unit named in `code.function.name`. This attribute MUST NOT be used on +// the Profile signal since the data is already captured in 'message Line'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +func CodeLineNumber(val int) attribute.KeyValue { + return CodeLineNumberKey.Int(val) +} + +// CodeStacktrace returns an attribute KeyValue conforming to the +// "code.stacktrace" semantic conventions. It represents a stacktrace as a string +// in the natural representation for the language runtime. The representation is +// identical to [`exception.stacktrace`]. This attribute MUST NOT be used on the +// Profile signal since the data is already captured in 'message Location'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +// +// [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation +func CodeStacktrace(val string) attribute.KeyValue { + return CodeStacktraceKey.String(val) +} + +// Namespace: container +const ( + // ContainerCommandKey is the attribute Key conforming to the + // "container.command" semantic conventions. It represents the command used to + // run the container (i.e. the command name). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol" + // Note: If using embedded credentials or sensitive data, it is recommended to + // remove them to prevent potential leakage. + ContainerCommandKey = attribute.Key("container.command") + + // ContainerCommandArgsKey is the attribute Key conforming to the + // "container.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) run by the + // container. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol", "--config", "config.yaml" + ContainerCommandArgsKey = attribute.Key("container.command_args") + + // ContainerCommandLineKey is the attribute Key conforming to the + // "container.command_line" semantic conventions. It represents the full command + // run by the container as a single string representing the full command. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol --config config.yaml" + ContainerCommandLineKey = attribute.Key("container.command_line") + + // ContainerCSIPluginNameKey is the attribute Key conforming to the + // "container.csi.plugin.name" semantic conventions. It represents the name of + // the CSI ([Container Storage Interface]) plugin used by the volume. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pd.csi.storage.gke.io" + // Note: This can sometimes be referred to as a "driver" in CSI implementations. + // This should represent the `name` field of the GetPluginInfo RPC. + // + // [Container Storage Interface]: https://github.com/container-storage-interface/spec + ContainerCSIPluginNameKey = attribute.Key("container.csi.plugin.name") + + // ContainerCSIVolumeIDKey is the attribute Key conforming to the + // "container.csi.volume.id" semantic conventions. It represents the unique + // volume ID returned by the CSI ([Container Storage Interface]) plugin. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk" + // Note: This can sometimes be referred to as a "volume handle" in CSI + // implementations. This should represent the `Volume.volume_id` field in CSI + // spec. + // + // [Container Storage Interface]: https://github.com/container-storage-interface/spec + ContainerCSIVolumeIDKey = attribute.Key("container.csi.volume.id") + + // ContainerIDKey is the attribute Key conforming to the "container.id" semantic + // conventions. It represents the container ID. Usually a UUID, as for example + // used to [identify Docker containers]. The UUID might be abbreviated. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a3bf90e006b2" + // + // [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification + ContainerIDKey = attribute.Key("container.id") + + // ContainerImageIDKey is the attribute Key conforming to the + // "container.image.id" semantic conventions. It represents the runtime specific + // image identifier. Usually a hash algorithm followed by a UUID. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f" + // Note: Docker defines a sha256 of the image id; `container.image.id` + // corresponds to the `Image` field from the Docker container inspect [API] + // endpoint. + // K8s defines a link to the container registry repository with digest + // `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"` + // . + // The ID is assigned by the container runtime and can vary in different + // environments. Consider using `oci.manifest.digest` if it is important to + // identify the same image in different environments/runtimes. + // + // [API]: https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect + ContainerImageIDKey = attribute.Key("container.image.id") + + // ContainerImageNameKey is the attribute Key conforming to the + // "container.image.name" semantic conventions. It represents the name of the + // image the container was built on. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "gcr.io/opentelemetry/operator" + ContainerImageNameKey = attribute.Key("container.image.name") + + // ContainerImageRepoDigestsKey is the attribute Key conforming to the + // "container.image.repo_digests" semantic conventions. It represents the repo + // digests of the container image as provided by the container runtime. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", + // "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578" + // Note: [Docker] and [CRI] report those under the `RepoDigests` field. + // + // [Docker]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect + // [CRI]: https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238 + ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests") + + // ContainerImageTagsKey is the attribute Key conforming to the + // "container.image.tags" semantic conventions. It represents the container + // image tags. An example can be found in [Docker Image Inspect]. Should be only + // the `` section of the full name for example from + // `registry.example.com/my-org/my-image:`. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "v1.27.1", "3.5.7-0" + // + // [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect + ContainerImageTagsKey = attribute.Key("container.image.tags") + + // ContainerNameKey is the attribute Key conforming to the "container.name" + // semantic conventions. It represents the container name used by container + // runtime. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-autoconf" + ContainerNameKey = attribute.Key("container.name") + + // ContainerRuntimeKey is the attribute Key conforming to the + // "container.runtime" semantic conventions. It represents the container runtime + // managing this container. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "docker", "containerd", "rkt" + ContainerRuntimeKey = attribute.Key("container.runtime") +) + +// ContainerCommand returns an attribute KeyValue conforming to the +// "container.command" semantic conventions. It represents the command used to +// run the container (i.e. the command name). +func ContainerCommand(val string) attribute.KeyValue { + return ContainerCommandKey.String(val) +} + +// ContainerCommandArgs returns an attribute KeyValue conforming to the +// "container.command_args" semantic conventions. It represents the all the +// command arguments (including the command/executable itself) run by the +// container. +func ContainerCommandArgs(val ...string) attribute.KeyValue { + return ContainerCommandArgsKey.StringSlice(val) +} + +// ContainerCommandLine returns an attribute KeyValue conforming to the +// "container.command_line" semantic conventions. It represents the full command +// run by the container as a single string representing the full command. +func ContainerCommandLine(val string) attribute.KeyValue { + return ContainerCommandLineKey.String(val) +} + +// ContainerCSIPluginName returns an attribute KeyValue conforming to the +// "container.csi.plugin.name" semantic conventions. It represents the name of +// the CSI ([Container Storage Interface]) plugin used by the volume. +// +// [Container Storage Interface]: https://github.com/container-storage-interface/spec +func ContainerCSIPluginName(val string) attribute.KeyValue { + return ContainerCSIPluginNameKey.String(val) +} + +// ContainerCSIVolumeID returns an attribute KeyValue conforming to the +// "container.csi.volume.id" semantic conventions. It represents the unique +// volume ID returned by the CSI ([Container Storage Interface]) plugin. +// +// [Container Storage Interface]: https://github.com/container-storage-interface/spec +func ContainerCSIVolumeID(val string) attribute.KeyValue { + return ContainerCSIVolumeIDKey.String(val) +} + +// ContainerID returns an attribute KeyValue conforming to the "container.id" +// semantic conventions. It represents the container ID. Usually a UUID, as for +// example used to [identify Docker containers]. The UUID might be abbreviated. +// +// [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification +func ContainerID(val string) attribute.KeyValue { + return ContainerIDKey.String(val) +} + +// ContainerImageID returns an attribute KeyValue conforming to the +// "container.image.id" semantic conventions. It represents the runtime specific +// image identifier. Usually a hash algorithm followed by a UUID. +func ContainerImageID(val string) attribute.KeyValue { + return ContainerImageIDKey.String(val) +} + +// ContainerImageName returns an attribute KeyValue conforming to the +// "container.image.name" semantic conventions. It represents the name of the +// image the container was built on. +func ContainerImageName(val string) attribute.KeyValue { + return ContainerImageNameKey.String(val) +} + +// ContainerImageRepoDigests returns an attribute KeyValue conforming to the +// "container.image.repo_digests" semantic conventions. It represents the repo +// digests of the container image as provided by the container runtime. +func ContainerImageRepoDigests(val ...string) attribute.KeyValue { + return ContainerImageRepoDigestsKey.StringSlice(val) +} + +// ContainerImageTags returns an attribute KeyValue conforming to the +// "container.image.tags" semantic conventions. It represents the container image +// tags. An example can be found in [Docker Image Inspect]. Should be only the +// `` section of the full name for example from +// `registry.example.com/my-org/my-image:`. +// +// [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect +func ContainerImageTags(val ...string) attribute.KeyValue { + return ContainerImageTagsKey.StringSlice(val) +} + +// ContainerName returns an attribute KeyValue conforming to the "container.name" +// semantic conventions. It represents the container name used by container +// runtime. +func ContainerName(val string) attribute.KeyValue { + return ContainerNameKey.String(val) +} + +// ContainerRuntime returns an attribute KeyValue conforming to the +// "container.runtime" semantic conventions. It represents the container runtime +// managing this container. +func ContainerRuntime(val string) attribute.KeyValue { + return ContainerRuntimeKey.String(val) +} + +// Namespace: cpu +const ( + // CPULogicalNumberKey is the attribute Key conforming to the + // "cpu.logical_number" semantic conventions. It represents the logical CPU + // number [0..n-1]. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + CPULogicalNumberKey = attribute.Key("cpu.logical_number") + + // CPUModeKey is the attribute Key conforming to the "cpu.mode" semantic + // conventions. It represents the mode of the CPU. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "user", "system" + CPUModeKey = attribute.Key("cpu.mode") +) + +// CPULogicalNumber returns an attribute KeyValue conforming to the +// "cpu.logical_number" semantic conventions. It represents the logical CPU +// number [0..n-1]. +func CPULogicalNumber(val int) attribute.KeyValue { + return CPULogicalNumberKey.Int(val) +} + +// Enum values for cpu.mode +var ( + // user + // Stability: development + CPUModeUser = CPUModeKey.String("user") + // system + // Stability: development + CPUModeSystem = CPUModeKey.String("system") + // nice + // Stability: development + CPUModeNice = CPUModeKey.String("nice") + // idle + // Stability: development + CPUModeIdle = CPUModeKey.String("idle") + // iowait + // Stability: development + CPUModeIOWait = CPUModeKey.String("iowait") + // interrupt + // Stability: development + CPUModeInterrupt = CPUModeKey.String("interrupt") + // steal + // Stability: development + CPUModeSteal = CPUModeKey.String("steal") + // kernel + // Stability: development + CPUModeKernel = CPUModeKey.String("kernel") +) + +// Namespace: db +const ( + // DBClientConnectionPoolNameKey is the attribute Key conforming to the + // "db.client.connection.pool.name" semantic conventions. It represents the name + // of the connection pool; unique within the instrumented application. In case + // the connection pool implementation doesn't provide a name, instrumentation + // SHOULD use a combination of parameters that would make the name unique, for + // example, combining attributes `server.address`, `server.port`, and + // `db.namespace`, formatted as `server.address:server.port/db.namespace`. + // Instrumentations that generate connection pool name following different + // patterns SHOULD document it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myDataSource" + DBClientConnectionPoolNameKey = attribute.Key("db.client.connection.pool.name") + + // DBClientConnectionStateKey is the attribute Key conforming to the + // "db.client.connection.state" semantic conventions. It represents the state of + // a connection in the pool. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "idle" + DBClientConnectionStateKey = attribute.Key("db.client.connection.state") + + // DBCollectionNameKey is the attribute Key conforming to the + // "db.collection.name" semantic conventions. It represents the name of a + // collection (table, container) within the database. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "public.users", "customers" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // The collection name SHOULD NOT be extracted from `db.query.text`, + // when the database system supports query text with multiple collections + // in non-batch operations. + // + // For batch operations, if the individual operations are known to have the same + // collection name then that collection name SHOULD be used. + DBCollectionNameKey = attribute.Key("db.collection.name") + + // DBNamespaceKey is the attribute Key conforming to the "db.namespace" semantic + // conventions. It represents the name of the database, fully qualified within + // the server address and port. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "customers", "test.users" + // Note: If a database system has multiple namespace components, they SHOULD be + // concatenated from the most general to the most specific namespace component, + // using `|` as a separator between the components. Any missing components (and + // their associated separators) SHOULD be omitted. + // Semantic conventions for individual database systems SHOULD document what + // `db.namespace` means in the context of that system. + // It is RECOMMENDED to capture the value as provided by the application without + // attempting to do any case normalization. + DBNamespaceKey = attribute.Key("db.namespace") + + // DBOperationBatchSizeKey is the attribute Key conforming to the + // "db.operation.batch.size" semantic conventions. It represents the number of + // queries included in a batch operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 2, 3, 4 + // Note: Operations are only considered batches when they contain two or more + // operations, and so `db.operation.batch.size` SHOULD never be `1`. + DBOperationBatchSizeKey = attribute.Key("db.operation.batch.size") + + // DBOperationNameKey is the attribute Key conforming to the "db.operation.name" + // semantic conventions. It represents the name of the operation or command + // being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "findAndModify", "HMSET", "SELECT" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // The operation name SHOULD NOT be extracted from `db.query.text`, + // when the database system supports query text with multiple operations + // in non-batch operations. + // + // If spaces can occur in the operation name, multiple consecutive spaces + // SHOULD be normalized to a single space. + // + // For batch operations, if the individual operations are known to have the same + // operation name + // then that operation name SHOULD be used prepended by `BATCH `, + // otherwise `db.operation.name` SHOULD be `BATCH` or some other database + // system specific term if more applicable. + DBOperationNameKey = attribute.Key("db.operation.name") + + // DBQuerySummaryKey is the attribute Key conforming to the "db.query.summary" + // semantic conventions. It represents the low cardinality summary of a database + // query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SELECT wuser_table", "INSERT shipping_details SELECT orders", "get + // user by id" + // Note: The query summary describes a class of database queries and is useful + // as a grouping key, especially when analyzing telemetry for database + // calls involving complex queries. + // + // Summary may be available to the instrumentation through + // instrumentation hooks or other means. If it is not available, + // instrumentations + // that support query parsing SHOULD generate a summary following + // [Generating query summary] + // section. + // + // [Generating query summary]: /docs/database/database-spans.md#generating-a-summary-of-the-query + DBQuerySummaryKey = attribute.Key("db.query.summary") + + // DBQueryTextKey is the attribute Key conforming to the "db.query.text" + // semantic conventions. It represents the database query being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SELECT * FROM wuser_table where username = ?", "SET mykey ?" + // Note: For sanitization see [Sanitization of `db.query.text`]. + // For batch operations, if the individual operations are known to have the same + // query text then that query text SHOULD be used, otherwise all of the + // individual query texts SHOULD be concatenated with separator `; ` or some + // other database system specific separator if more applicable. + // Parameterized query text SHOULD NOT be sanitized. Even though parameterized + // query text can potentially have sensitive data, by using a parameterized + // query the user is giving a strong signal that any sensitive data will be + // passed as parameter values, and the benefit to observability of capturing the + // static part of the query text by default outweighs the risk. + // + // [Sanitization of `db.query.text`]: /docs/database/database-spans.md#sanitization-of-dbquerytext + DBQueryTextKey = attribute.Key("db.query.text") + + // DBResponseReturnedRowsKey is the attribute Key conforming to the + // "db.response.returned_rows" semantic conventions. It represents the number of + // rows returned by the operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10, 30, 1000 + DBResponseReturnedRowsKey = attribute.Key("db.response.returned_rows") + + // DBResponseStatusCodeKey is the attribute Key conforming to the + // "db.response.status_code" semantic conventions. It represents the database + // response status code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "102", "ORA-17002", "08P01", "404" + // Note: The status code returned by the database. Usually it represents an + // error code, but may also represent partial success, warning, or differentiate + // between various types of successful outcomes. + // Semantic conventions for individual database systems SHOULD document what + // `db.response.status_code` means in the context of that system. + DBResponseStatusCodeKey = attribute.Key("db.response.status_code") + + // DBStoredProcedureNameKey is the attribute Key conforming to the + // "db.stored_procedure.name" semantic conventions. It represents the name of a + // stored procedure within the database. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GetCustomer" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // For batch operations, if the individual operations are known to have the same + // stored procedure name then that stored procedure name SHOULD be used. + DBStoredProcedureNameKey = attribute.Key("db.stored_procedure.name") + + // DBSystemNameKey is the attribute Key conforming to the "db.system.name" + // semantic conventions. It represents the database management system (DBMS) + // product as identified by the client instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + // Note: The actual DBMS may differ from the one identified by the client. For + // example, when using PostgreSQL client libraries to connect to a CockroachDB, + // the `db.system.name` is set to `postgresql` based on the instrumentation's + // best knowledge. + DBSystemNameKey = attribute.Key("db.system.name") +) + +// DBClientConnectionPoolName returns an attribute KeyValue conforming to the +// "db.client.connection.pool.name" semantic conventions. It represents the name +// of the connection pool; unique within the instrumented application. In case +// the connection pool implementation doesn't provide a name, instrumentation +// SHOULD use a combination of parameters that would make the name unique, for +// example, combining attributes `server.address`, `server.port`, and +// `db.namespace`, formatted as `server.address:server.port/db.namespace`. +// Instrumentations that generate connection pool name following different +// patterns SHOULD document it. +func DBClientConnectionPoolName(val string) attribute.KeyValue { + return DBClientConnectionPoolNameKey.String(val) +} + +// DBCollectionName returns an attribute KeyValue conforming to the +// "db.collection.name" semantic conventions. It represents the name of a +// collection (table, container) within the database. +func DBCollectionName(val string) attribute.KeyValue { + return DBCollectionNameKey.String(val) +} + +// DBNamespace returns an attribute KeyValue conforming to the "db.namespace" +// semantic conventions. It represents the name of the database, fully qualified +// within the server address and port. +func DBNamespace(val string) attribute.KeyValue { + return DBNamespaceKey.String(val) +} + +// DBOperationBatchSize returns an attribute KeyValue conforming to the +// "db.operation.batch.size" semantic conventions. It represents the number of +// queries included in a batch operation. +func DBOperationBatchSize(val int) attribute.KeyValue { + return DBOperationBatchSizeKey.Int(val) +} + +// DBOperationName returns an attribute KeyValue conforming to the +// "db.operation.name" semantic conventions. It represents the name of the +// operation or command being executed. +func DBOperationName(val string) attribute.KeyValue { + return DBOperationNameKey.String(val) +} + +// DBQuerySummary returns an attribute KeyValue conforming to the +// "db.query.summary" semantic conventions. It represents the low cardinality +// summary of a database query. +func DBQuerySummary(val string) attribute.KeyValue { + return DBQuerySummaryKey.String(val) +} + +// DBQueryText returns an attribute KeyValue conforming to the "db.query.text" +// semantic conventions. It represents the database query being executed. +func DBQueryText(val string) attribute.KeyValue { + return DBQueryTextKey.String(val) +} + +// DBResponseReturnedRows returns an attribute KeyValue conforming to the +// "db.response.returned_rows" semantic conventions. It represents the number of +// rows returned by the operation. +func DBResponseReturnedRows(val int) attribute.KeyValue { + return DBResponseReturnedRowsKey.Int(val) +} + +// DBResponseStatusCode returns an attribute KeyValue conforming to the +// "db.response.status_code" semantic conventions. It represents the database +// response status code. +func DBResponseStatusCode(val string) attribute.KeyValue { + return DBResponseStatusCodeKey.String(val) +} + +// DBStoredProcedureName returns an attribute KeyValue conforming to the +// "db.stored_procedure.name" semantic conventions. It represents the name of a +// stored procedure within the database. +func DBStoredProcedureName(val string) attribute.KeyValue { + return DBStoredProcedureNameKey.String(val) +} + +// Enum values for db.client.connection.state +var ( + // idle + // Stability: development + DBClientConnectionStateIdle = DBClientConnectionStateKey.String("idle") + // used + // Stability: development + DBClientConnectionStateUsed = DBClientConnectionStateKey.String("used") +) + +// Enum values for db.system.name +var ( + // Some other SQL database. Fallback only. + // Stability: development + DBSystemNameOtherSQL = DBSystemNameKey.String("other_sql") + // [Adabas (Adaptable Database System)] + // Stability: development + // + // [Adabas (Adaptable Database System)]: https://documentation.softwareag.com/?pf=adabas + DBSystemNameSoftwareagAdabas = DBSystemNameKey.String("softwareag.adabas") + // [Actian Ingres] + // Stability: development + // + // [Actian Ingres]: https://www.actian.com/databases/ingres/ + DBSystemNameActianIngres = DBSystemNameKey.String("actian.ingres") + // [Amazon DynamoDB] + // Stability: development + // + // [Amazon DynamoDB]: https://aws.amazon.com/pm/dynamodb/ + DBSystemNameAWSDynamoDB = DBSystemNameKey.String("aws.dynamodb") + // [Amazon Redshift] + // Stability: development + // + // [Amazon Redshift]: https://aws.amazon.com/redshift/ + DBSystemNameAWSRedshift = DBSystemNameKey.String("aws.redshift") + // [Azure Cosmos DB] + // Stability: development + // + // [Azure Cosmos DB]: https://learn.microsoft.com/azure/cosmos-db + DBSystemNameAzureCosmosDB = DBSystemNameKey.String("azure.cosmosdb") + // [InterSystems Caché] + // Stability: development + // + // [InterSystems Caché]: https://www.intersystems.com/products/cache/ + DBSystemNameIntersystemsCache = DBSystemNameKey.String("intersystems.cache") + // [Apache Cassandra] + // Stability: development + // + // [Apache Cassandra]: https://cassandra.apache.org/ + DBSystemNameCassandra = DBSystemNameKey.String("cassandra") + // [ClickHouse] + // Stability: development + // + // [ClickHouse]: https://clickhouse.com/ + DBSystemNameClickHouse = DBSystemNameKey.String("clickhouse") + // [CockroachDB] + // Stability: development + // + // [CockroachDB]: https://www.cockroachlabs.com/ + DBSystemNameCockroachDB = DBSystemNameKey.String("cockroachdb") + // [Couchbase] + // Stability: development + // + // [Couchbase]: https://www.couchbase.com/ + DBSystemNameCouchbase = DBSystemNameKey.String("couchbase") + // [Apache CouchDB] + // Stability: development + // + // [Apache CouchDB]: https://couchdb.apache.org/ + DBSystemNameCouchDB = DBSystemNameKey.String("couchdb") + // [Apache Derby] + // Stability: development + // + // [Apache Derby]: https://db.apache.org/derby/ + DBSystemNameDerby = DBSystemNameKey.String("derby") + // [Elasticsearch] + // Stability: development + // + // [Elasticsearch]: https://www.elastic.co/elasticsearch + DBSystemNameElasticsearch = DBSystemNameKey.String("elasticsearch") + // [Firebird] + // Stability: development + // + // [Firebird]: https://www.firebirdsql.org/ + DBSystemNameFirebirdSQL = DBSystemNameKey.String("firebirdsql") + // [Google Cloud Spanner] + // Stability: development + // + // [Google Cloud Spanner]: https://cloud.google.com/spanner + DBSystemNameGCPSpanner = DBSystemNameKey.String("gcp.spanner") + // [Apache Geode] + // Stability: development + // + // [Apache Geode]: https://geode.apache.org/ + DBSystemNameGeode = DBSystemNameKey.String("geode") + // [H2 Database] + // Stability: development + // + // [H2 Database]: https://h2database.com/ + DBSystemNameH2database = DBSystemNameKey.String("h2database") + // [Apache HBase] + // Stability: development + // + // [Apache HBase]: https://hbase.apache.org/ + DBSystemNameHBase = DBSystemNameKey.String("hbase") + // [Apache Hive] + // Stability: development + // + // [Apache Hive]: https://hive.apache.org/ + DBSystemNameHive = DBSystemNameKey.String("hive") + // [HyperSQL Database] + // Stability: development + // + // [HyperSQL Database]: https://hsqldb.org/ + DBSystemNameHSQLDB = DBSystemNameKey.String("hsqldb") + // [IBM Db2] + // Stability: development + // + // [IBM Db2]: https://www.ibm.com/db2 + DBSystemNameIBMDB2 = DBSystemNameKey.String("ibm.db2") + // [IBM Informix] + // Stability: development + // + // [IBM Informix]: https://www.ibm.com/products/informix + DBSystemNameIBMInformix = DBSystemNameKey.String("ibm.informix") + // [IBM Netezza] + // Stability: development + // + // [IBM Netezza]: https://www.ibm.com/products/netezza + DBSystemNameIBMNetezza = DBSystemNameKey.String("ibm.netezza") + // [InfluxDB] + // Stability: development + // + // [InfluxDB]: https://www.influxdata.com/ + DBSystemNameInfluxDB = DBSystemNameKey.String("influxdb") + // [Instant] + // Stability: development + // + // [Instant]: https://www.instantdb.com/ + DBSystemNameInstantDB = DBSystemNameKey.String("instantdb") + // [MariaDB] + // Stability: stable + // + // [MariaDB]: https://mariadb.org/ + DBSystemNameMariaDB = DBSystemNameKey.String("mariadb") + // [Memcached] + // Stability: development + // + // [Memcached]: https://memcached.org/ + DBSystemNameMemcached = DBSystemNameKey.String("memcached") + // [MongoDB] + // Stability: development + // + // [MongoDB]: https://www.mongodb.com/ + DBSystemNameMongoDB = DBSystemNameKey.String("mongodb") + // [Microsoft SQL Server] + // Stability: stable + // + // [Microsoft SQL Server]: https://www.microsoft.com/sql-server + DBSystemNameMicrosoftSQLServer = DBSystemNameKey.String("microsoft.sql_server") + // [MySQL] + // Stability: stable + // + // [MySQL]: https://www.mysql.com/ + DBSystemNameMySQL = DBSystemNameKey.String("mysql") + // [Neo4j] + // Stability: development + // + // [Neo4j]: https://neo4j.com/ + DBSystemNameNeo4j = DBSystemNameKey.String("neo4j") + // [OpenSearch] + // Stability: development + // + // [OpenSearch]: https://opensearch.org/ + DBSystemNameOpenSearch = DBSystemNameKey.String("opensearch") + // [Oracle Database] + // Stability: development + // + // [Oracle Database]: https://www.oracle.com/database/ + DBSystemNameOracleDB = DBSystemNameKey.String("oracle.db") + // [PostgreSQL] + // Stability: stable + // + // [PostgreSQL]: https://www.postgresql.org/ + DBSystemNamePostgreSQL = DBSystemNameKey.String("postgresql") + // [Redis] + // Stability: development + // + // [Redis]: https://redis.io/ + DBSystemNameRedis = DBSystemNameKey.String("redis") + // [SAP HANA] + // Stability: development + // + // [SAP HANA]: https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html + DBSystemNameSAPHANA = DBSystemNameKey.String("sap.hana") + // [SAP MaxDB] + // Stability: development + // + // [SAP MaxDB]: https://maxdb.sap.com/ + DBSystemNameSAPMaxDB = DBSystemNameKey.String("sap.maxdb") + // [SQLite] + // Stability: development + // + // [SQLite]: https://www.sqlite.org/ + DBSystemNameSQLite = DBSystemNameKey.String("sqlite") + // [Teradata] + // Stability: development + // + // [Teradata]: https://www.teradata.com/ + DBSystemNameTeradata = DBSystemNameKey.String("teradata") + // [Trino] + // Stability: development + // + // [Trino]: https://trino.io/ + DBSystemNameTrino = DBSystemNameKey.String("trino") +) + +// Namespace: deployment +const ( + // DeploymentEnvironmentNameKey is the attribute Key conforming to the + // "deployment.environment.name" semantic conventions. It represents the name of + // the [deployment environment] (aka deployment tier). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "staging", "production" + // Note: `deployment.environment.name` does not affect the uniqueness + // constraints defined through + // the `service.namespace`, `service.name` and `service.instance.id` resource + // attributes. + // This implies that resources carrying the following attribute combinations + // MUST be + // considered to be identifying the same service: + // + // - `service.name=frontend`, `deployment.environment.name=production` + // - `service.name=frontend`, `deployment.environment.name=staging`. + // + // + // [deployment environment]: https://wikipedia.org/wiki/Deployment_environment + DeploymentEnvironmentNameKey = attribute.Key("deployment.environment.name") + + // DeploymentIDKey is the attribute Key conforming to the "deployment.id" + // semantic conventions. It represents the id of the deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1208" + DeploymentIDKey = attribute.Key("deployment.id") + + // DeploymentNameKey is the attribute Key conforming to the "deployment.name" + // semantic conventions. It represents the name of the deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "deploy my app", "deploy-frontend" + DeploymentNameKey = attribute.Key("deployment.name") + + // DeploymentStatusKey is the attribute Key conforming to the + // "deployment.status" semantic conventions. It represents the status of the + // deployment. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + DeploymentStatusKey = attribute.Key("deployment.status") +) + +// DeploymentEnvironmentName returns an attribute KeyValue conforming to the +// "deployment.environment.name" semantic conventions. It represents the name of +// the [deployment environment] (aka deployment tier). +// +// [deployment environment]: https://wikipedia.org/wiki/Deployment_environment +func DeploymentEnvironmentName(val string) attribute.KeyValue { + return DeploymentEnvironmentNameKey.String(val) +} + +// DeploymentID returns an attribute KeyValue conforming to the "deployment.id" +// semantic conventions. It represents the id of the deployment. +func DeploymentID(val string) attribute.KeyValue { + return DeploymentIDKey.String(val) +} + +// DeploymentName returns an attribute KeyValue conforming to the +// "deployment.name" semantic conventions. It represents the name of the +// deployment. +func DeploymentName(val string) attribute.KeyValue { + return DeploymentNameKey.String(val) +} + +// Enum values for deployment.status +var ( + // failed + // Stability: development + DeploymentStatusFailed = DeploymentStatusKey.String("failed") + // succeeded + // Stability: development + DeploymentStatusSucceeded = DeploymentStatusKey.String("succeeded") +) + +// Namespace: destination +const ( + // DestinationAddressKey is the attribute Key conforming to the + // "destination.address" semantic conventions. It represents the destination + // address - domain name if available without reverse DNS lookup; otherwise, IP + // address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "destination.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the source side, and when communicating through an + // intermediary, `destination.address` SHOULD represent the destination address + // behind any intermediaries, for example proxies, if it's available. + DestinationAddressKey = attribute.Key("destination.address") + + // DestinationPortKey is the attribute Key conforming to the "destination.port" + // semantic conventions. It represents the destination port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3389, 2888 + DestinationPortKey = attribute.Key("destination.port") +) + +// DestinationAddress returns an attribute KeyValue conforming to the +// "destination.address" semantic conventions. It represents the destination +// address - domain name if available without reverse DNS lookup; otherwise, IP +// address or Unix domain socket name. +func DestinationAddress(val string) attribute.KeyValue { + return DestinationAddressKey.String(val) +} + +// DestinationPort returns an attribute KeyValue conforming to the +// "destination.port" semantic conventions. It represents the destination port +// number. +func DestinationPort(val int) attribute.KeyValue { + return DestinationPortKey.Int(val) +} + +// Namespace: device +const ( + // DeviceIDKey is the attribute Key conforming to the "device.id" semantic + // conventions. It represents a unique identifier representing the device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123456789012345", "01:23:45:67:89:AB" + // Note: Its value SHOULD be identical for all apps on a device and it SHOULD + // NOT change if an app is uninstalled and re-installed. + // However, it might be resettable by the user for all apps on a device. + // Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) MAY be + // used as values. + // + // More information about Android identifier best practices can be found [here] + // . + // + // > [!WARNING]> This attribute may contain sensitive (PII) information. Caution + // > should be taken when storing personal data or anything which can identify a + // > user. GDPR and data protection laws may apply, + // > ensure you do your own due diligence.> Due to these reasons, this + // > identifier is not recommended for consumer applications and will likely + // > result in rejection from both Google Play and App Store. + // > However, it may be appropriate for specific enterprise scenarios, such as + // > kiosk devices or enterprise-managed devices, with appropriate compliance + // > clearance. + // > Any instrumentation providing this identifier MUST implement it as an + // > opt-in feature.> See [`app.installation.id`]> for a more + // > privacy-preserving alternative. + // + // [here]: https://developer.android.com/training/articles/user-data-ids + // [`app.installation.id`]: /docs/registry/attributes/app.md#app-installation-id + DeviceIDKey = attribute.Key("device.id") + + // DeviceManufacturerKey is the attribute Key conforming to the + // "device.manufacturer" semantic conventions. It represents the name of the + // device manufacturer. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Apple", "Samsung" + // Note: The Android OS provides this field via [Build]. iOS apps SHOULD + // hardcode the value `Apple`. + // + // [Build]: https://developer.android.com/reference/android/os/Build#MANUFACTURER + DeviceManufacturerKey = attribute.Key("device.manufacturer") + + // DeviceModelIdentifierKey is the attribute Key conforming to the + // "device.model.identifier" semantic conventions. It represents the model + // identifier for the device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iPhone3,4", "SM-G920F" + // Note: It's recommended this value represents a machine-readable version of + // the model identifier rather than the market or consumer-friendly name of the + // device. + DeviceModelIdentifierKey = attribute.Key("device.model.identifier") + + // DeviceModelNameKey is the attribute Key conforming to the "device.model.name" + // semantic conventions. It represents the marketing name for the device model. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iPhone 6s Plus", "Samsung Galaxy S6" + // Note: It's recommended this value represents a human-readable version of the + // device model rather than a machine-readable alternative. + DeviceModelNameKey = attribute.Key("device.model.name") +) + +// DeviceID returns an attribute KeyValue conforming to the "device.id" semantic +// conventions. It represents a unique identifier representing the device. +func DeviceID(val string) attribute.KeyValue { + return DeviceIDKey.String(val) +} + +// DeviceManufacturer returns an attribute KeyValue conforming to the +// "device.manufacturer" semantic conventions. It represents the name of the +// device manufacturer. +func DeviceManufacturer(val string) attribute.KeyValue { + return DeviceManufacturerKey.String(val) +} + +// DeviceModelIdentifier returns an attribute KeyValue conforming to the +// "device.model.identifier" semantic conventions. It represents the model +// identifier for the device. +func DeviceModelIdentifier(val string) attribute.KeyValue { + return DeviceModelIdentifierKey.String(val) +} + +// DeviceModelName returns an attribute KeyValue conforming to the +// "device.model.name" semantic conventions. It represents the marketing name for +// the device model. +func DeviceModelName(val string) attribute.KeyValue { + return DeviceModelNameKey.String(val) +} + +// Namespace: disk +const ( + // DiskIODirectionKey is the attribute Key conforming to the "disk.io.direction" + // semantic conventions. It represents the disk IO operation direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "read" + DiskIODirectionKey = attribute.Key("disk.io.direction") +) + +// Enum values for disk.io.direction +var ( + // read + // Stability: development + DiskIODirectionRead = DiskIODirectionKey.String("read") + // write + // Stability: development + DiskIODirectionWrite = DiskIODirectionKey.String("write") +) + +// Namespace: dns +const ( + // DNSQuestionNameKey is the attribute Key conforming to the "dns.question.name" + // semantic conventions. It represents the name being queried. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "www.example.com", "opentelemetry.io" + // Note: If the name field contains non-printable characters (below 32 or above + // 126), those characters should be represented as escaped base 10 integers + // (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, + // and line feeds should be converted to \t, \r, and \n respectively. + DNSQuestionNameKey = attribute.Key("dns.question.name") +) + +// DNSQuestionName returns an attribute KeyValue conforming to the +// "dns.question.name" semantic conventions. It represents the name being +// queried. +func DNSQuestionName(val string) attribute.KeyValue { + return DNSQuestionNameKey.String(val) +} + +// Namespace: elasticsearch +const ( + // ElasticsearchNodeNameKey is the attribute Key conforming to the + // "elasticsearch.node.name" semantic conventions. It represents the represents + // the human-readable identifier of the node/instance to which a request was + // routed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "instance-0000000001" + ElasticsearchNodeNameKey = attribute.Key("elasticsearch.node.name") +) + +// ElasticsearchNodeName returns an attribute KeyValue conforming to the +// "elasticsearch.node.name" semantic conventions. It represents the represents +// the human-readable identifier of the node/instance to which a request was +// routed. +func ElasticsearchNodeName(val string) attribute.KeyValue { + return ElasticsearchNodeNameKey.String(val) +} + +// Namespace: enduser +const ( + // EnduserIDKey is the attribute Key conforming to the "enduser.id" semantic + // conventions. It represents the unique identifier of an end user in the + // system. It maybe a username, email address, or other identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "username" + // Note: Unique identifier of an end user in the system. + // + // > [!Warning] + // > This field contains sensitive (PII) information. + EnduserIDKey = attribute.Key("enduser.id") + + // EnduserPseudoIDKey is the attribute Key conforming to the "enduser.pseudo.id" + // semantic conventions. It represents the pseudonymous identifier of an end + // user. This identifier should be a random value that is not directly linked or + // associated with the end user's actual identity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "QdH5CAWJgqVT4rOr0qtumf" + // Note: Pseudonymous identifier of an end user. + // + // > [!Warning] + // > This field contains sensitive (linkable PII) information. + EnduserPseudoIDKey = attribute.Key("enduser.pseudo.id") +) + +// EnduserID returns an attribute KeyValue conforming to the "enduser.id" +// semantic conventions. It represents the unique identifier of an end user in +// the system. It maybe a username, email address, or other identifier. +func EnduserID(val string) attribute.KeyValue { + return EnduserIDKey.String(val) +} + +// EnduserPseudoID returns an attribute KeyValue conforming to the +// "enduser.pseudo.id" semantic conventions. It represents the pseudonymous +// identifier of an end user. This identifier should be a random value that is +// not directly linked or associated with the end user's actual identity. +func EnduserPseudoID(val string) attribute.KeyValue { + return EnduserPseudoIDKey.String(val) +} + +// Namespace: error +const ( + // ErrorMessageKey is the attribute Key conforming to the "error.message" + // semantic conventions. It represents a message providing more detail about an + // error in human-readable form. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Unexpected input type: string", "The user has exceeded their + // storage quota" + // Note: `error.message` should provide additional context and detail about an + // error. + // It is NOT RECOMMENDED to duplicate the value of `error.type` in + // `error.message`. + // It is also NOT RECOMMENDED to duplicate the value of `exception.message` in + // `error.message`. + // + // `error.message` is NOT RECOMMENDED for metrics or spans due to its unbounded + // cardinality and overlap with span status. + ErrorMessageKey = attribute.Key("error.message") + + // ErrorTypeKey is the attribute Key conforming to the "error.type" semantic + // conventions. It represents the describes a class of error the operation ended + // with. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "timeout", "java.net.UnknownHostException", + // "server_certificate_invalid", "500" + // Note: The `error.type` SHOULD be predictable, and SHOULD have low + // cardinality. + // + // When `error.type` is set to a type (e.g., an exception type), its + // canonical class name identifying the type within the artifact SHOULD be used. + // + // Instrumentations SHOULD document the list of errors they report. + // + // The cardinality of `error.type` within one instrumentation library SHOULD be + // low. + // Telemetry consumers that aggregate data from multiple instrumentation + // libraries and applications + // should be prepared for `error.type` to have high cardinality at query time + // when no + // additional filters are applied. + // + // If the operation has completed successfully, instrumentations SHOULD NOT set + // `error.type`. + // + // If a specific domain defines its own set of error identifiers (such as HTTP + // or gRPC status codes), + // it's RECOMMENDED to: + // + // - Use a domain-specific attribute + // - Set `error.type` to capture all errors, regardless of whether they are + // defined within the domain-specific set or not. + ErrorTypeKey = attribute.Key("error.type") +) + +// ErrorMessage returns an attribute KeyValue conforming to the "error.message" +// semantic conventions. It represents a message providing more detail about an +// error in human-readable form. +func ErrorMessage(val string) attribute.KeyValue { + return ErrorMessageKey.String(val) +} + +// Enum values for error.type +var ( + // A fallback error value to be used when the instrumentation doesn't define a + // custom value. + // + // Stability: stable + ErrorTypeOther = ErrorTypeKey.String("_OTHER") +) + +// Namespace: exception +const ( + // ExceptionMessageKey is the attribute Key conforming to the + // "exception.message" semantic conventions. It represents the exception + // message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "Division by zero", "Can't convert 'int' object to str implicitly" + ExceptionMessageKey = attribute.Key("exception.message") + + // ExceptionStacktraceKey is the attribute Key conforming to the + // "exception.stacktrace" semantic conventions. It represents a stacktrace as a + // string in the natural representation for the language runtime. The + // representation is to be determined and documented by each language SIG. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: Exception in thread "main" java.lang.RuntimeException: Test + // exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at + // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at + // com.example.GenerateTrace.main(GenerateTrace.java:5) + ExceptionStacktraceKey = attribute.Key("exception.stacktrace") + + // ExceptionTypeKey is the attribute Key conforming to the "exception.type" + // semantic conventions. It represents the type of the exception (its + // fully-qualified class name, if applicable). The dynamic type of the exception + // should be preferred over the static type in languages that support it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "java.net.ConnectException", "OSError" + ExceptionTypeKey = attribute.Key("exception.type") +) + +// ExceptionMessage returns an attribute KeyValue conforming to the +// "exception.message" semantic conventions. It represents the exception message. +func ExceptionMessage(val string) attribute.KeyValue { + return ExceptionMessageKey.String(val) +} + +// ExceptionStacktrace returns an attribute KeyValue conforming to the +// "exception.stacktrace" semantic conventions. It represents a stacktrace as a +// string in the natural representation for the language runtime. The +// representation is to be determined and documented by each language SIG. +func ExceptionStacktrace(val string) attribute.KeyValue { + return ExceptionStacktraceKey.String(val) +} + +// ExceptionType returns an attribute KeyValue conforming to the "exception.type" +// semantic conventions. It represents the type of the exception (its +// fully-qualified class name, if applicable). The dynamic type of the exception +// should be preferred over the static type in languages that support it. +func ExceptionType(val string) attribute.KeyValue { + return ExceptionTypeKey.String(val) +} + +// Namespace: faas +const ( + // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart" + // semantic conventions. It represents a boolean that is true if the serverless + // function is executed for the first time (aka cold-start). + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSColdstartKey = attribute.Key("faas.coldstart") + + // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic + // conventions. It represents a string containing the schedule period as + // [Cron Expression]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0/5 * * * ? * + // + // [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm + FaaSCronKey = attribute.Key("faas.cron") + + // FaaSDocumentCollectionKey is the attribute Key conforming to the + // "faas.document.collection" semantic conventions. It represents the name of + // the source on which the triggering operation was performed. For example, in + // Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the + // database name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myBucketName", "myDbName" + FaaSDocumentCollectionKey = attribute.Key("faas.document.collection") + + // FaaSDocumentNameKey is the attribute Key conforming to the + // "faas.document.name" semantic conventions. It represents the document + // name/table subjected to the operation. For example, in Cloud Storage or S3 is + // the name of the file, and in Cosmos DB the table name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myFile.txt", "myTableName" + FaaSDocumentNameKey = attribute.Key("faas.document.name") + + // FaaSDocumentOperationKey is the attribute Key conforming to the + // "faas.document.operation" semantic conventions. It represents the describes + // the type of the operation that was performed on the data. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSDocumentOperationKey = attribute.Key("faas.document.operation") + + // FaaSDocumentTimeKey is the attribute Key conforming to the + // "faas.document.time" semantic conventions. It represents a string containing + // the time when the data was accessed in the [ISO 8601] format expressed in + // [UTC]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 2020-01-23T13:47:06Z + // + // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html + // [UTC]: https://www.w3.org/TR/NOTE-datetime + FaaSDocumentTimeKey = attribute.Key("faas.document.time") + + // FaaSInstanceKey is the attribute Key conforming to the "faas.instance" + // semantic conventions. It represents the execution environment ID as a string, + // that will be potentially reused for other invocations to the same + // function/function version. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de" + // Note: - **AWS Lambda:** Use the (full) log stream name. + FaaSInstanceKey = attribute.Key("faas.instance") + + // FaaSInvocationIDKey is the attribute Key conforming to the + // "faas.invocation_id" semantic conventions. It represents the invocation ID of + // the current function invocation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: af9d5aa4-a685-4c5f-a22b-444f80b3cc28 + FaaSInvocationIDKey = attribute.Key("faas.invocation_id") + + // FaaSInvokedNameKey is the attribute Key conforming to the "faas.invoked_name" + // semantic conventions. It represents the name of the invoked function. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: my-function + // Note: SHOULD be equal to the `faas.name` resource attribute of the invoked + // function. + FaaSInvokedNameKey = attribute.Key("faas.invoked_name") + + // FaaSInvokedProviderKey is the attribute Key conforming to the + // "faas.invoked_provider" semantic conventions. It represents the cloud + // provider of the invoked function. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: SHOULD be equal to the `cloud.provider` resource attribute of the + // invoked function. + FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider") + + // FaaSInvokedRegionKey is the attribute Key conforming to the + // "faas.invoked_region" semantic conventions. It represents the cloud region of + // the invoked function. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: eu-central-1 + // Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked + // function. + FaaSInvokedRegionKey = attribute.Key("faas.invoked_region") + + // FaaSMaxMemoryKey is the attribute Key conforming to the "faas.max_memory" + // semantic conventions. It represents the amount of memory available to the + // serverless function converted to Bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: It's recommended to set this attribute since e.g. too little memory can + // easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, + // the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this + // information (which must be multiplied by 1,048,576). + FaaSMaxMemoryKey = attribute.Key("faas.max_memory") + + // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic + // conventions. It represents the name of the single function that this runtime + // instance executes. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-function", "myazurefunctionapp/some-function-name" + // Note: This is the name of the function as configured/deployed on the FaaS + // platform and is usually different from the name of the callback + // function (which may be stored in the + // [`code.namespace`/`code.function.name`] + // span attributes). + // + // For some cloud providers, the above definition is ambiguous. The following + // definition of function name MUST be used for this attribute + // (and consequently the span name) for the listed cloud providers/products: + // + // - **Azure:** The full name `/`, i.e., function app name + // followed by a forward slash followed by the function name (this form + // can also be seen in the resource JSON for the function). + // This means that a span attribute MUST be used, as an Azure function + // app can host multiple functions that would usually share + // a TracerProvider (see also the `cloud.resource_id` attribute). + // + // + // [`code.namespace`/`code.function.name`]: /docs/general/attributes.md#source-code-attributes + FaaSNameKey = attribute.Key("faas.name") + + // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic + // conventions. It represents a string containing the function invocation time + // in the [ISO 8601] format expressed in [UTC]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 2020-01-23T13:47:06Z + // + // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html + // [UTC]: https://www.w3.org/TR/NOTE-datetime + FaaSTimeKey = attribute.Key("faas.time") + + // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" semantic + // conventions. It represents the type of the trigger which caused this function + // invocation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSTriggerKey = attribute.Key("faas.trigger") + + // FaaSVersionKey is the attribute Key conforming to the "faas.version" semantic + // conventions. It represents the immutable version of the function being + // executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "26", "pinkfroid-00002" + // Note: Depending on the cloud provider and platform, use: + // + // - **AWS Lambda:** The [function version] + // (an integer represented as a decimal string). + // - **Google Cloud Run (Services):** The [revision] + // (i.e., the function name plus the revision suffix). + // - **Google Cloud Functions:** The value of the + // [`K_REVISION` environment variable]. + // - **Azure Functions:** Not applicable. Do not set this attribute. + // + // + // [function version]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html + // [revision]: https://cloud.google.com/run/docs/managing/revisions + // [`K_REVISION` environment variable]: https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically + FaaSVersionKey = attribute.Key("faas.version") +) + +// FaaSColdstart returns an attribute KeyValue conforming to the "faas.coldstart" +// semantic conventions. It represents a boolean that is true if the serverless +// function is executed for the first time (aka cold-start). +func FaaSColdstart(val bool) attribute.KeyValue { + return FaaSColdstartKey.Bool(val) +} + +// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" semantic +// conventions. It represents a string containing the schedule period as +// [Cron Expression]. +// +// [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm +func FaaSCron(val string) attribute.KeyValue { + return FaaSCronKey.String(val) +} + +// FaaSDocumentCollection returns an attribute KeyValue conforming to the +// "faas.document.collection" semantic conventions. It represents the name of the +// source on which the triggering operation was performed. For example, in Cloud +// Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database +// name. +func FaaSDocumentCollection(val string) attribute.KeyValue { + return FaaSDocumentCollectionKey.String(val) +} + +// FaaSDocumentName returns an attribute KeyValue conforming to the +// "faas.document.name" semantic conventions. It represents the document +// name/table subjected to the operation. For example, in Cloud Storage or S3 is +// the name of the file, and in Cosmos DB the table name. +func FaaSDocumentName(val string) attribute.KeyValue { + return FaaSDocumentNameKey.String(val) +} + +// FaaSDocumentTime returns an attribute KeyValue conforming to the +// "faas.document.time" semantic conventions. It represents a string containing +// the time when the data was accessed in the [ISO 8601] format expressed in +// [UTC]. +// +// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html +// [UTC]: https://www.w3.org/TR/NOTE-datetime +func FaaSDocumentTime(val string) attribute.KeyValue { + return FaaSDocumentTimeKey.String(val) +} + +// FaaSInstance returns an attribute KeyValue conforming to the "faas.instance" +// semantic conventions. It represents the execution environment ID as a string, +// that will be potentially reused for other invocations to the same +// function/function version. +func FaaSInstance(val string) attribute.KeyValue { + return FaaSInstanceKey.String(val) +} + +// FaaSInvocationID returns an attribute KeyValue conforming to the +// "faas.invocation_id" semantic conventions. It represents the invocation ID of +// the current function invocation. +func FaaSInvocationID(val string) attribute.KeyValue { + return FaaSInvocationIDKey.String(val) +} + +// FaaSInvokedName returns an attribute KeyValue conforming to the +// "faas.invoked_name" semantic conventions. It represents the name of the +// invoked function. +func FaaSInvokedName(val string) attribute.KeyValue { + return FaaSInvokedNameKey.String(val) +} + +// FaaSInvokedRegion returns an attribute KeyValue conforming to the +// "faas.invoked_region" semantic conventions. It represents the cloud region of +// the invoked function. +func FaaSInvokedRegion(val string) attribute.KeyValue { + return FaaSInvokedRegionKey.String(val) +} + +// FaaSMaxMemory returns an attribute KeyValue conforming to the +// "faas.max_memory" semantic conventions. It represents the amount of memory +// available to the serverless function converted to Bytes. +func FaaSMaxMemory(val int) attribute.KeyValue { + return FaaSMaxMemoryKey.Int(val) +} + +// FaaSName returns an attribute KeyValue conforming to the "faas.name" semantic +// conventions. It represents the name of the single function that this runtime +// instance executes. +func FaaSName(val string) attribute.KeyValue { + return FaaSNameKey.String(val) +} + +// FaaSTime returns an attribute KeyValue conforming to the "faas.time" semantic +// conventions. It represents a string containing the function invocation time in +// the [ISO 8601] format expressed in [UTC]. +// +// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html +// [UTC]: https://www.w3.org/TR/NOTE-datetime +func FaaSTime(val string) attribute.KeyValue { + return FaaSTimeKey.String(val) +} + +// FaaSVersion returns an attribute KeyValue conforming to the "faas.version" +// semantic conventions. It represents the immutable version of the function +// being executed. +func FaaSVersion(val string) attribute.KeyValue { + return FaaSVersionKey.String(val) +} + +// Enum values for faas.document.operation +var ( + // When a new object is created. + // Stability: development + FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert") + // When an object is modified. + // Stability: development + FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit") + // When an object is deleted. + // Stability: development + FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete") +) + +// Enum values for faas.invoked_provider +var ( + // Alibaba Cloud + // Stability: development + FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud") + // Amazon Web Services + // Stability: development + FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws") + // Microsoft Azure + // Stability: development + FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure") + // Google Cloud Platform + // Stability: development + FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp") + // Tencent Cloud + // Stability: development + FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud") +) + +// Enum values for faas.trigger +var ( + // A response to some data source operation such as a database or filesystem + // read/write + // Stability: development + FaaSTriggerDatasource = FaaSTriggerKey.String("datasource") + // To provide an answer to an inbound HTTP request + // Stability: development + FaaSTriggerHTTP = FaaSTriggerKey.String("http") + // A function is set to be executed when messages are sent to a messaging system + // Stability: development + FaaSTriggerPubSub = FaaSTriggerKey.String("pubsub") + // A function is scheduled to be executed regularly + // Stability: development + FaaSTriggerTimer = FaaSTriggerKey.String("timer") + // If none of the others apply + // Stability: development + FaaSTriggerOther = FaaSTriggerKey.String("other") +) + +// Namespace: feature_flag +const ( + // FeatureFlagContextIDKey is the attribute Key conforming to the + // "feature_flag.context.id" semantic conventions. It represents the unique + // identifier for the flag evaluation context. For example, the targeting key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "5157782b-2203-4c80-a857-dbbd5e7761db" + FeatureFlagContextIDKey = attribute.Key("feature_flag.context.id") + + // FeatureFlagKeyKey is the attribute Key conforming to the "feature_flag.key" + // semantic conventions. It represents the lookup key of the feature flag. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "logo-color" + FeatureFlagKeyKey = attribute.Key("feature_flag.key") + + // FeatureFlagProviderNameKey is the attribute Key conforming to the + // "feature_flag.provider.name" semantic conventions. It represents the + // identifies the feature flag provider. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Flag Manager" + FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider.name") + + // FeatureFlagResultReasonKey is the attribute Key conforming to the + // "feature_flag.result.reason" semantic conventions. It represents the reason + // code which shows how a feature flag value was determined. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "static", "targeting_match", "error", "default" + FeatureFlagResultReasonKey = attribute.Key("feature_flag.result.reason") + + // FeatureFlagResultValueKey is the attribute Key conforming to the + // "feature_flag.result.value" semantic conventions. It represents the evaluated + // value of the feature flag. + // + // Type: any + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "#ff0000", true, 3 + // Note: With some feature flag providers, feature flag results can be quite + // large or contain private or sensitive details. + // Because of this, `feature_flag.result.variant` is often the preferred + // attribute if it is available. + // + // It may be desirable to redact or otherwise limit the size and scope of + // `feature_flag.result.value` if possible. + // Because the evaluated flag value is unstructured and may be any type, it is + // left to the instrumentation author to determine how best to achieve this. + FeatureFlagResultValueKey = attribute.Key("feature_flag.result.value") + + // FeatureFlagResultVariantKey is the attribute Key conforming to the + // "feature_flag.result.variant" semantic conventions. It represents a semantic + // identifier for an evaluated flag value. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "red", "true", "on" + // Note: A semantic identifier, commonly referred to as a variant, provides a + // means + // for referring to a value without including the value itself. This can + // provide additional context for understanding the meaning behind a value. + // For example, the variant `red` maybe be used for the value `#c05543`. + FeatureFlagResultVariantKey = attribute.Key("feature_flag.result.variant") + + // FeatureFlagSetIDKey is the attribute Key conforming to the + // "feature_flag.set.id" semantic conventions. It represents the identifier of + // the [flag set] to which the feature flag belongs. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "proj-1", "ab98sgs", "service1/dev" + // + // [flag set]: https://openfeature.dev/specification/glossary/#flag-set + FeatureFlagSetIDKey = attribute.Key("feature_flag.set.id") + + // FeatureFlagVersionKey is the attribute Key conforming to the + // "feature_flag.version" semantic conventions. It represents the version of the + // ruleset used during the evaluation. This may be any stable value which + // uniquely identifies the ruleset. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1", "01ABCDEF" + FeatureFlagVersionKey = attribute.Key("feature_flag.version") +) + +// FeatureFlagContextID returns an attribute KeyValue conforming to the +// "feature_flag.context.id" semantic conventions. It represents the unique +// identifier for the flag evaluation context. For example, the targeting key. +func FeatureFlagContextID(val string) attribute.KeyValue { + return FeatureFlagContextIDKey.String(val) +} + +// FeatureFlagKey returns an attribute KeyValue conforming to the +// "feature_flag.key" semantic conventions. It represents the lookup key of the +// feature flag. +func FeatureFlagKey(val string) attribute.KeyValue { + return FeatureFlagKeyKey.String(val) +} + +// FeatureFlagProviderName returns an attribute KeyValue conforming to the +// "feature_flag.provider.name" semantic conventions. It represents the +// identifies the feature flag provider. +func FeatureFlagProviderName(val string) attribute.KeyValue { + return FeatureFlagProviderNameKey.String(val) +} + +// FeatureFlagResultVariant returns an attribute KeyValue conforming to the +// "feature_flag.result.variant" semantic conventions. It represents a semantic +// identifier for an evaluated flag value. +func FeatureFlagResultVariant(val string) attribute.KeyValue { + return FeatureFlagResultVariantKey.String(val) +} + +// FeatureFlagSetID returns an attribute KeyValue conforming to the +// "feature_flag.set.id" semantic conventions. It represents the identifier of +// the [flag set] to which the feature flag belongs. +// +// [flag set]: https://openfeature.dev/specification/glossary/#flag-set +func FeatureFlagSetID(val string) attribute.KeyValue { + return FeatureFlagSetIDKey.String(val) +} + +// FeatureFlagVersion returns an attribute KeyValue conforming to the +// "feature_flag.version" semantic conventions. It represents the version of the +// ruleset used during the evaluation. This may be any stable value which +// uniquely identifies the ruleset. +func FeatureFlagVersion(val string) attribute.KeyValue { + return FeatureFlagVersionKey.String(val) +} + +// Enum values for feature_flag.result.reason +var ( + // The resolved value is static (no dynamic evaluation). + // Stability: development + FeatureFlagResultReasonStatic = FeatureFlagResultReasonKey.String("static") + // The resolved value fell back to a pre-configured value (no dynamic evaluation + // occurred or dynamic evaluation yielded no result). + // Stability: development + FeatureFlagResultReasonDefault = FeatureFlagResultReasonKey.String("default") + // The resolved value was the result of a dynamic evaluation, such as a rule or + // specific user-targeting. + // Stability: development + FeatureFlagResultReasonTargetingMatch = FeatureFlagResultReasonKey.String("targeting_match") + // The resolved value was the result of pseudorandom assignment. + // Stability: development + FeatureFlagResultReasonSplit = FeatureFlagResultReasonKey.String("split") + // The resolved value was retrieved from cache. + // Stability: development + FeatureFlagResultReasonCached = FeatureFlagResultReasonKey.String("cached") + // The resolved value was the result of the flag being disabled in the + // management system. + // Stability: development + FeatureFlagResultReasonDisabled = FeatureFlagResultReasonKey.String("disabled") + // The reason for the resolved value could not be determined. + // Stability: development + FeatureFlagResultReasonUnknown = FeatureFlagResultReasonKey.String("unknown") + // The resolved value is non-authoritative or possibly out of date + // Stability: development + FeatureFlagResultReasonStale = FeatureFlagResultReasonKey.String("stale") + // The resolved value was the result of an error. + // Stability: development + FeatureFlagResultReasonError = FeatureFlagResultReasonKey.String("error") +) + +// Namespace: file +const ( + // FileAccessedKey is the attribute Key conforming to the "file.accessed" + // semantic conventions. It represents the time when the file was last accessed, + // in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: This attribute might not be supported by some file systems — NFS, + // FAT32, in embedded OS, etc. + FileAccessedKey = attribute.Key("file.accessed") + + // FileAttributesKey is the attribute Key conforming to the "file.attributes" + // semantic conventions. It represents the array of file attributes. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "readonly", "hidden" + // Note: Attributes names depend on the OS or file system. Here’s a + // non-exhaustive list of values expected for this attribute: `archive`, + // `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, + // `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, + // `write`. + FileAttributesKey = attribute.Key("file.attributes") + + // FileChangedKey is the attribute Key conforming to the "file.changed" semantic + // conventions. It represents the time when the file attributes or metadata was + // last changed, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: `file.changed` captures the time when any of the file's properties or + // attributes (including the content) are changed, while `file.modified` + // captures the timestamp when the file content is modified. + FileChangedKey = attribute.Key("file.changed") + + // FileCreatedKey is the attribute Key conforming to the "file.created" semantic + // conventions. It represents the time when the file was created, in ISO 8601 + // format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: This attribute might not be supported by some file systems — NFS, + // FAT32, in embedded OS, etc. + FileCreatedKey = attribute.Key("file.created") + + // FileDirectoryKey is the attribute Key conforming to the "file.directory" + // semantic conventions. It represents the directory where the file is located. + // It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/home/user", "C:\Program Files\MyApp" + FileDirectoryKey = attribute.Key("file.directory") + + // FileExtensionKey is the attribute Key conforming to the "file.extension" + // semantic conventions. It represents the file extension, excluding the leading + // dot. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "png", "gz" + // Note: When the file name has multiple extensions (example.tar.gz), only the + // last one should be captured ("gz", not "tar.gz"). + FileExtensionKey = attribute.Key("file.extension") + + // FileForkNameKey is the attribute Key conforming to the "file.fork_name" + // semantic conventions. It represents the name of the fork. A fork is + // additional data associated with a filesystem object. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Zone.Identifer" + // Note: On Linux, a resource fork is used to store additional data with a + // filesystem object. A file always has at least one fork for the data portion, + // and additional forks may exist. + // On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default + // data stream for a file is just called $DATA. Zone.Identifier is commonly used + // by Windows to track contents downloaded from the Internet. An ADS is + // typically of the form: C:\path\to\filename.extension:some_fork_name, and + // some_fork_name is the value that should populate `fork_name`. + // `filename.extension` should populate `file.name`, and `extension` should + // populate `file.extension`. The full path, `file.path`, will include the fork + // name. + FileForkNameKey = attribute.Key("file.fork_name") + + // FileGroupIDKey is the attribute Key conforming to the "file.group.id" + // semantic conventions. It represents the primary Group ID (GID) of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1000" + FileGroupIDKey = attribute.Key("file.group.id") + + // FileGroupNameKey is the attribute Key conforming to the "file.group.name" + // semantic conventions. It represents the primary group name of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "users" + FileGroupNameKey = attribute.Key("file.group.name") + + // FileInodeKey is the attribute Key conforming to the "file.inode" semantic + // conventions. It represents the inode representing the file in the filesystem. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "256383" + FileInodeKey = attribute.Key("file.inode") + + // FileModeKey is the attribute Key conforming to the "file.mode" semantic + // conventions. It represents the mode of the file in octal representation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0640" + FileModeKey = attribute.Key("file.mode") + + // FileModifiedKey is the attribute Key conforming to the "file.modified" + // semantic conventions. It represents the time when the file content was last + // modified, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + FileModifiedKey = attribute.Key("file.modified") + + // FileNameKey is the attribute Key conforming to the "file.name" semantic + // conventions. It represents the name of the file including the extension, + // without the directory. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "example.png" + FileNameKey = attribute.Key("file.name") + + // FileOwnerIDKey is the attribute Key conforming to the "file.owner.id" + // semantic conventions. It represents the user ID (UID) or security identifier + // (SID) of the file owner. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1000" + FileOwnerIDKey = attribute.Key("file.owner.id") + + // FileOwnerNameKey is the attribute Key conforming to the "file.owner.name" + // semantic conventions. It represents the username of the file owner. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + FileOwnerNameKey = attribute.Key("file.owner.name") + + // FilePathKey is the attribute Key conforming to the "file.path" semantic + // conventions. It represents the full path to the file, including the file + // name. It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/home/alice/example.png", "C:\Program Files\MyApp\myapp.exe" + FilePathKey = attribute.Key("file.path") + + // FileSizeKey is the attribute Key conforming to the "file.size" semantic + // conventions. It represents the file size in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FileSizeKey = attribute.Key("file.size") + + // FileSymbolicLinkTargetPathKey is the attribute Key conforming to the + // "file.symbolic_link.target_path" semantic conventions. It represents the path + // to the target of a symbolic link. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/usr/bin/python3" + // Note: This attribute is only applicable to symbolic links. + FileSymbolicLinkTargetPathKey = attribute.Key("file.symbolic_link.target_path") +) + +// FileAccessed returns an attribute KeyValue conforming to the "file.accessed" +// semantic conventions. It represents the time when the file was last accessed, +// in ISO 8601 format. +func FileAccessed(val string) attribute.KeyValue { + return FileAccessedKey.String(val) +} + +// FileAttributes returns an attribute KeyValue conforming to the +// "file.attributes" semantic conventions. It represents the array of file +// attributes. +func FileAttributes(val ...string) attribute.KeyValue { + return FileAttributesKey.StringSlice(val) +} + +// FileChanged returns an attribute KeyValue conforming to the "file.changed" +// semantic conventions. It represents the time when the file attributes or +// metadata was last changed, in ISO 8601 format. +func FileChanged(val string) attribute.KeyValue { + return FileChangedKey.String(val) +} + +// FileCreated returns an attribute KeyValue conforming to the "file.created" +// semantic conventions. It represents the time when the file was created, in ISO +// 8601 format. +func FileCreated(val string) attribute.KeyValue { + return FileCreatedKey.String(val) +} + +// FileDirectory returns an attribute KeyValue conforming to the "file.directory" +// semantic conventions. It represents the directory where the file is located. +// It should include the drive letter, when appropriate. +func FileDirectory(val string) attribute.KeyValue { + return FileDirectoryKey.String(val) +} + +// FileExtension returns an attribute KeyValue conforming to the "file.extension" +// semantic conventions. It represents the file extension, excluding the leading +// dot. +func FileExtension(val string) attribute.KeyValue { + return FileExtensionKey.String(val) +} + +// FileForkName returns an attribute KeyValue conforming to the "file.fork_name" +// semantic conventions. It represents the name of the fork. A fork is additional +// data associated with a filesystem object. +func FileForkName(val string) attribute.KeyValue { + return FileForkNameKey.String(val) +} + +// FileGroupID returns an attribute KeyValue conforming to the "file.group.id" +// semantic conventions. It represents the primary Group ID (GID) of the file. +func FileGroupID(val string) attribute.KeyValue { + return FileGroupIDKey.String(val) +} + +// FileGroupName returns an attribute KeyValue conforming to the +// "file.group.name" semantic conventions. It represents the primary group name +// of the file. +func FileGroupName(val string) attribute.KeyValue { + return FileGroupNameKey.String(val) +} + +// FileInode returns an attribute KeyValue conforming to the "file.inode" +// semantic conventions. It represents the inode representing the file in the +// filesystem. +func FileInode(val string) attribute.KeyValue { + return FileInodeKey.String(val) +} + +// FileMode returns an attribute KeyValue conforming to the "file.mode" semantic +// conventions. It represents the mode of the file in octal representation. +func FileMode(val string) attribute.KeyValue { + return FileModeKey.String(val) +} + +// FileModified returns an attribute KeyValue conforming to the "file.modified" +// semantic conventions. It represents the time when the file content was last +// modified, in ISO 8601 format. +func FileModified(val string) attribute.KeyValue { + return FileModifiedKey.String(val) +} + +// FileName returns an attribute KeyValue conforming to the "file.name" semantic +// conventions. It represents the name of the file including the extension, +// without the directory. +func FileName(val string) attribute.KeyValue { + return FileNameKey.String(val) +} + +// FileOwnerID returns an attribute KeyValue conforming to the "file.owner.id" +// semantic conventions. It represents the user ID (UID) or security identifier +// (SID) of the file owner. +func FileOwnerID(val string) attribute.KeyValue { + return FileOwnerIDKey.String(val) +} + +// FileOwnerName returns an attribute KeyValue conforming to the +// "file.owner.name" semantic conventions. It represents the username of the file +// owner. +func FileOwnerName(val string) attribute.KeyValue { + return FileOwnerNameKey.String(val) +} + +// FilePath returns an attribute KeyValue conforming to the "file.path" semantic +// conventions. It represents the full path to the file, including the file name. +// It should include the drive letter, when appropriate. +func FilePath(val string) attribute.KeyValue { + return FilePathKey.String(val) +} + +// FileSize returns an attribute KeyValue conforming to the "file.size" semantic +// conventions. It represents the file size in bytes. +func FileSize(val int) attribute.KeyValue { + return FileSizeKey.Int(val) +} + +// FileSymbolicLinkTargetPath returns an attribute KeyValue conforming to the +// "file.symbolic_link.target_path" semantic conventions. It represents the path +// to the target of a symbolic link. +func FileSymbolicLinkTargetPath(val string) attribute.KeyValue { + return FileSymbolicLinkTargetPathKey.String(val) +} + +// Namespace: gcp +const ( + // GCPAppHubApplicationContainerKey is the attribute Key conforming to the + // "gcp.apphub.application.container" semantic conventions. It represents the + // container within GCP where the AppHub application is defined. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "projects/my-container-project" + GCPAppHubApplicationContainerKey = attribute.Key("gcp.apphub.application.container") + + // GCPAppHubApplicationIDKey is the attribute Key conforming to the + // "gcp.apphub.application.id" semantic conventions. It represents the name of + // the application as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-application" + GCPAppHubApplicationIDKey = attribute.Key("gcp.apphub.application.id") + + // GCPAppHubApplicationLocationKey is the attribute Key conforming to the + // "gcp.apphub.application.location" semantic conventions. It represents the GCP + // zone or region where the application is defined. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-central1" + GCPAppHubApplicationLocationKey = attribute.Key("gcp.apphub.application.location") + + // GCPAppHubServiceCriticalityTypeKey is the attribute Key conforming to the + // "gcp.apphub.service.criticality_type" semantic conventions. It represents the + // criticality of a service indicates its importance to the business. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub type enum] + // + // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type + GCPAppHubServiceCriticalityTypeKey = attribute.Key("gcp.apphub.service.criticality_type") + + // GCPAppHubServiceEnvironmentTypeKey is the attribute Key conforming to the + // "gcp.apphub.service.environment_type" semantic conventions. It represents the + // environment of a service is the stage of a software lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub environment type] + // + // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1 + GCPAppHubServiceEnvironmentTypeKey = attribute.Key("gcp.apphub.service.environment_type") + + // GCPAppHubServiceIDKey is the attribute Key conforming to the + // "gcp.apphub.service.id" semantic conventions. It represents the name of the + // service as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-service" + GCPAppHubServiceIDKey = attribute.Key("gcp.apphub.service.id") + + // GCPAppHubWorkloadCriticalityTypeKey is the attribute Key conforming to the + // "gcp.apphub.workload.criticality_type" semantic conventions. It represents + // the criticality of a workload indicates its importance to the business. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub type enum] + // + // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type + GCPAppHubWorkloadCriticalityTypeKey = attribute.Key("gcp.apphub.workload.criticality_type") + + // GCPAppHubWorkloadEnvironmentTypeKey is the attribute Key conforming to the + // "gcp.apphub.workload.environment_type" semantic conventions. It represents + // the environment of a workload is the stage of a software lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub environment type] + // + // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1 + GCPAppHubWorkloadEnvironmentTypeKey = attribute.Key("gcp.apphub.workload.environment_type") + + // GCPAppHubWorkloadIDKey is the attribute Key conforming to the + // "gcp.apphub.workload.id" semantic conventions. It represents the name of the + // workload as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-workload" + GCPAppHubWorkloadIDKey = attribute.Key("gcp.apphub.workload.id") + + // GCPClientServiceKey is the attribute Key conforming to the + // "gcp.client.service" semantic conventions. It represents the identifies the + // Google Cloud service for which the official client library is intended. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "appengine", "run", "firestore", "alloydb", "spanner" + // Note: Intended to be a stable identifier for Google Cloud client libraries + // that is uniform across implementation languages. The value should be derived + // from the canonical service domain for the service; for example, + // 'foo.googleapis.com' should result in a value of 'foo'. + GCPClientServiceKey = attribute.Key("gcp.client.service") + + // GCPCloudRunJobExecutionKey is the attribute Key conforming to the + // "gcp.cloud_run.job.execution" semantic conventions. It represents the name of + // the Cloud Run [execution] being run for the Job, as set by the + // [`CLOUD_RUN_EXECUTION`] environment variable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "job-name-xxxx", "sample-job-mdw84" + // + // [execution]: https://cloud.google.com/run/docs/managing/job-executions + // [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars + GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution") + + // GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the + // "gcp.cloud_run.job.task_index" semantic conventions. It represents the index + // for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`] + // environment variable. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 1 + // + // [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars + GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index") + + // GCPGCEInstanceHostnameKey is the attribute Key conforming to the + // "gcp.gce.instance.hostname" semantic conventions. It represents the hostname + // of a GCE instance. This is the full value of the default or [custom hostname] + // . + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-host1234.example.com", + // "sample-vm.us-west1-b.c.my-project.internal" + // + // [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm + GCPGCEInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname") + + // GCPGCEInstanceNameKey is the attribute Key conforming to the + // "gcp.gce.instance.name" semantic conventions. It represents the instance name + // of a GCE instance. This is the value provided by `host.name`, the visible + // name of the instance in the Cloud Console UI, and the prefix for the default + // hostname of the instance as defined by the [default internal DNS name]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "instance-1", "my-vm-name" + // + // [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names + GCPGCEInstanceNameKey = attribute.Key("gcp.gce.instance.name") +) + +// GCPAppHubApplicationContainer returns an attribute KeyValue conforming to the +// "gcp.apphub.application.container" semantic conventions. It represents the +// container within GCP where the AppHub application is defined. +func GCPAppHubApplicationContainer(val string) attribute.KeyValue { + return GCPAppHubApplicationContainerKey.String(val) +} + +// GCPAppHubApplicationID returns an attribute KeyValue conforming to the +// "gcp.apphub.application.id" semantic conventions. It represents the name of +// the application as configured in AppHub. +func GCPAppHubApplicationID(val string) attribute.KeyValue { + return GCPAppHubApplicationIDKey.String(val) +} + +// GCPAppHubApplicationLocation returns an attribute KeyValue conforming to the +// "gcp.apphub.application.location" semantic conventions. It represents the GCP +// zone or region where the application is defined. +func GCPAppHubApplicationLocation(val string) attribute.KeyValue { + return GCPAppHubApplicationLocationKey.String(val) +} + +// GCPAppHubServiceID returns an attribute KeyValue conforming to the +// "gcp.apphub.service.id" semantic conventions. It represents the name of the +// service as configured in AppHub. +func GCPAppHubServiceID(val string) attribute.KeyValue { + return GCPAppHubServiceIDKey.String(val) +} + +// GCPAppHubWorkloadID returns an attribute KeyValue conforming to the +// "gcp.apphub.workload.id" semantic conventions. It represents the name of the +// workload as configured in AppHub. +func GCPAppHubWorkloadID(val string) attribute.KeyValue { + return GCPAppHubWorkloadIDKey.String(val) +} + +// GCPClientService returns an attribute KeyValue conforming to the +// "gcp.client.service" semantic conventions. It represents the identifies the +// Google Cloud service for which the official client library is intended. +func GCPClientService(val string) attribute.KeyValue { + return GCPClientServiceKey.String(val) +} + +// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.execution" semantic conventions. It represents the name of +// the Cloud Run [execution] being run for the Job, as set by the +// [`CLOUD_RUN_EXECUTION`] environment variable. +// +// [execution]: https://cloud.google.com/run/docs/managing/job-executions +// [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars +func GCPCloudRunJobExecution(val string) attribute.KeyValue { + return GCPCloudRunJobExecutionKey.String(val) +} + +// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index +// for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`] +// environment variable. +// +// [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars +func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue { + return GCPCloudRunJobTaskIndexKey.Int(val) +} + +// GCPGCEInstanceHostname returns an attribute KeyValue conforming to the +// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname +// of a GCE instance. This is the full value of the default or [custom hostname] +// . +// +// [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm +func GCPGCEInstanceHostname(val string) attribute.KeyValue { + return GCPGCEInstanceHostnameKey.String(val) +} + +// GCPGCEInstanceName returns an attribute KeyValue conforming to the +// "gcp.gce.instance.name" semantic conventions. It represents the instance name +// of a GCE instance. This is the value provided by `host.name`, the visible name +// of the instance in the Cloud Console UI, and the prefix for the default +// hostname of the instance as defined by the [default internal DNS name]. +// +// [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names +func GCPGCEInstanceName(val string) attribute.KeyValue { + return GCPGCEInstanceNameKey.String(val) +} + +// Enum values for gcp.apphub.service.criticality_type +var ( + // Mission critical service. + // Stability: development + GCPAppHubServiceCriticalityTypeMissionCritical = GCPAppHubServiceCriticalityTypeKey.String("MISSION_CRITICAL") + // High impact. + // Stability: development + GCPAppHubServiceCriticalityTypeHigh = GCPAppHubServiceCriticalityTypeKey.String("HIGH") + // Medium impact. + // Stability: development + GCPAppHubServiceCriticalityTypeMedium = GCPAppHubServiceCriticalityTypeKey.String("MEDIUM") + // Low impact. + // Stability: development + GCPAppHubServiceCriticalityTypeLow = GCPAppHubServiceCriticalityTypeKey.String("LOW") +) + +// Enum values for gcp.apphub.service.environment_type +var ( + // Production environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeProduction = GCPAppHubServiceEnvironmentTypeKey.String("PRODUCTION") + // Staging environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeStaging = GCPAppHubServiceEnvironmentTypeKey.String("STAGING") + // Test environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeTest = GCPAppHubServiceEnvironmentTypeKey.String("TEST") + // Development environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeDevelopment = GCPAppHubServiceEnvironmentTypeKey.String("DEVELOPMENT") +) + +// Enum values for gcp.apphub.workload.criticality_type +var ( + // Mission critical service. + // Stability: development + GCPAppHubWorkloadCriticalityTypeMissionCritical = GCPAppHubWorkloadCriticalityTypeKey.String("MISSION_CRITICAL") + // High impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeHigh = GCPAppHubWorkloadCriticalityTypeKey.String("HIGH") + // Medium impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeMedium = GCPAppHubWorkloadCriticalityTypeKey.String("MEDIUM") + // Low impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeLow = GCPAppHubWorkloadCriticalityTypeKey.String("LOW") +) + +// Enum values for gcp.apphub.workload.environment_type +var ( + // Production environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeProduction = GCPAppHubWorkloadEnvironmentTypeKey.String("PRODUCTION") + // Staging environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeStaging = GCPAppHubWorkloadEnvironmentTypeKey.String("STAGING") + // Test environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeTest = GCPAppHubWorkloadEnvironmentTypeKey.String("TEST") + // Development environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeDevelopment = GCPAppHubWorkloadEnvironmentTypeKey.String("DEVELOPMENT") +) + +// Namespace: gen_ai +const ( + // GenAIAgentDescriptionKey is the attribute Key conforming to the + // "gen_ai.agent.description" semantic conventions. It represents the free-form + // description of the GenAI agent provided by the application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Helps with math problems", "Generates fiction stories" + GenAIAgentDescriptionKey = attribute.Key("gen_ai.agent.description") + + // GenAIAgentIDKey is the attribute Key conforming to the "gen_ai.agent.id" + // semantic conventions. It represents the unique identifier of the GenAI agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "asst_5j66UpCpwteGg4YSxUnt7lPY" + GenAIAgentIDKey = attribute.Key("gen_ai.agent.id") + + // GenAIAgentNameKey is the attribute Key conforming to the "gen_ai.agent.name" + // semantic conventions. It represents the human-readable name of the GenAI + // agent provided by the application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Math Tutor", "Fiction Writer" + GenAIAgentNameKey = attribute.Key("gen_ai.agent.name") + + // GenAIConversationIDKey is the attribute Key conforming to the + // "gen_ai.conversation.id" semantic conventions. It represents the unique + // identifier for a conversation (session, thread), used to store and correlate + // messages within this conversation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "conv_5j66UpCpwteGg4YSxUnt7lPY" + GenAIConversationIDKey = attribute.Key("gen_ai.conversation.id") + + // GenAIDataSourceIDKey is the attribute Key conforming to the + // "gen_ai.data_source.id" semantic conventions. It represents the data source + // identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "H7STPQYOND" + // Note: Data sources are used by AI agents and RAG applications to store + // grounding data. A data source may be an external database, object store, + // document collection, website, or any other storage system used by the GenAI + // agent or application. The `gen_ai.data_source.id` SHOULD match the identifier + // used by the GenAI system rather than a name specific to the external storage, + // such as a database or object store. Semantic conventions referencing + // `gen_ai.data_source.id` MAY also leverage additional attributes, such as + // `db.*`, to further identify and describe the data source. + GenAIDataSourceIDKey = attribute.Key("gen_ai.data_source.id") + + // GenAIOpenAIRequestServiceTierKey is the attribute Key conforming to the + // "gen_ai.openai.request.service_tier" semantic conventions. It represents the + // service tier requested. May be a specific tier, default, or auto. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "auto", "default" + GenAIOpenAIRequestServiceTierKey = attribute.Key("gen_ai.openai.request.service_tier") + + // GenAIOpenAIResponseServiceTierKey is the attribute Key conforming to the + // "gen_ai.openai.response.service_tier" semantic conventions. It represents the + // service tier used for the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "scale", "default" + GenAIOpenAIResponseServiceTierKey = attribute.Key("gen_ai.openai.response.service_tier") + + // GenAIOpenAIResponseSystemFingerprintKey is the attribute Key conforming to + // the "gen_ai.openai.response.system_fingerprint" semantic conventions. It + // represents a fingerprint to track any eventual change in the Generative AI + // environment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "fp_44709d6fcb" + GenAIOpenAIResponseSystemFingerprintKey = attribute.Key("gen_ai.openai.response.system_fingerprint") + + // GenAIOperationNameKey is the attribute Key conforming to the + // "gen_ai.operation.name" semantic conventions. It represents the name of the + // operation being performed. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: If one of the predefined values applies, but specific system uses a + // different name it's RECOMMENDED to document it in the semantic conventions + // for specific GenAI system and use system-specific name in the + // instrumentation. If a different name is not documented, instrumentation + // libraries SHOULD use applicable predefined value. + GenAIOperationNameKey = attribute.Key("gen_ai.operation.name") + + // GenAIOutputTypeKey is the attribute Key conforming to the + // "gen_ai.output.type" semantic conventions. It represents the represents the + // content type requested by the client. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This attribute SHOULD be used when the client requests output of a + // specific type. The model may return zero or more outputs of this type. + // This attribute specifies the output modality and not the actual output + // format. For example, if an image is requested, the actual output could be a + // URL pointing to an image file. + // Additional output format details may be recorded in the future in the + // `gen_ai.output.{type}.*` attributes. + GenAIOutputTypeKey = attribute.Key("gen_ai.output.type") + + // GenAIRequestChoiceCountKey is the attribute Key conforming to the + // "gen_ai.request.choice.count" semantic conventions. It represents the target + // number of candidate completions to return. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3 + GenAIRequestChoiceCountKey = attribute.Key("gen_ai.request.choice.count") + + // GenAIRequestEncodingFormatsKey is the attribute Key conforming to the + // "gen_ai.request.encoding_formats" semantic conventions. It represents the + // encoding formats requested in an embeddings operation, if specified. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "base64"], ["float", "binary" + // Note: In some GenAI systems the encoding formats are called embedding types. + // Also, some GenAI systems only accept a single format per request. + GenAIRequestEncodingFormatsKey = attribute.Key("gen_ai.request.encoding_formats") + + // GenAIRequestFrequencyPenaltyKey is the attribute Key conforming to the + // "gen_ai.request.frequency_penalty" semantic conventions. It represents the + // frequency penalty setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.1 + GenAIRequestFrequencyPenaltyKey = attribute.Key("gen_ai.request.frequency_penalty") + + // GenAIRequestMaxTokensKey is the attribute Key conforming to the + // "gen_ai.request.max_tokens" semantic conventions. It represents the maximum + // number of tokens the model generates for a request. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens") + + // GenAIRequestModelKey is the attribute Key conforming to the + // "gen_ai.request.model" semantic conventions. It represents the name of the + // GenAI model a request is being made to. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: gpt-4 + GenAIRequestModelKey = attribute.Key("gen_ai.request.model") + + // GenAIRequestPresencePenaltyKey is the attribute Key conforming to the + // "gen_ai.request.presence_penalty" semantic conventions. It represents the + // presence penalty setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.1 + GenAIRequestPresencePenaltyKey = attribute.Key("gen_ai.request.presence_penalty") + + // GenAIRequestSeedKey is the attribute Key conforming to the + // "gen_ai.request.seed" semantic conventions. It represents the requests with + // same seed value more likely to return same result. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIRequestSeedKey = attribute.Key("gen_ai.request.seed") + + // GenAIRequestStopSequencesKey is the attribute Key conforming to the + // "gen_ai.request.stop_sequences" semantic conventions. It represents the list + // of sequences that the model will use to stop generating further tokens. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "forest", "lived" + GenAIRequestStopSequencesKey = attribute.Key("gen_ai.request.stop_sequences") + + // GenAIRequestTemperatureKey is the attribute Key conforming to the + // "gen_ai.request.temperature" semantic conventions. It represents the + // temperature setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.0 + GenAIRequestTemperatureKey = attribute.Key("gen_ai.request.temperature") + + // GenAIRequestTopKKey is the attribute Key conforming to the + // "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling + // setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + GenAIRequestTopKKey = attribute.Key("gen_ai.request.top_k") + + // GenAIRequestTopPKey is the attribute Key conforming to the + // "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling + // setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + GenAIRequestTopPKey = attribute.Key("gen_ai.request.top_p") + + // GenAIResponseFinishReasonsKey is the attribute Key conforming to the + // "gen_ai.response.finish_reasons" semantic conventions. It represents the + // array of reasons the model stopped generating tokens, corresponding to each + // generation received. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "stop"], ["stop", "length" + GenAIResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons") + + // GenAIResponseIDKey is the attribute Key conforming to the + // "gen_ai.response.id" semantic conventions. It represents the unique + // identifier for the completion. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "chatcmpl-123" + GenAIResponseIDKey = attribute.Key("gen_ai.response.id") + + // GenAIResponseModelKey is the attribute Key conforming to the + // "gen_ai.response.model" semantic conventions. It represents the name of the + // model that generated the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "gpt-4-0613" + GenAIResponseModelKey = attribute.Key("gen_ai.response.model") + + // GenAISystemKey is the attribute Key conforming to the "gen_ai.system" + // semantic conventions. It represents the Generative AI product as identified + // by the client or server instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: openai + // Note: The `gen_ai.system` describes a family of GenAI models with specific + // model identified + // by `gen_ai.request.model` and `gen_ai.response.model` attributes. + // + // The actual GenAI product may differ from the one identified by the client. + // Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI + // client + // libraries. In such cases, the `gen_ai.system` is set to `openai` based on the + // instrumentation's best knowledge, instead of the actual system. The + // `server.address` + // attribute may help identify the actual system in use for `openai`. + // + // For custom model, a custom friendly name SHOULD be used. + // If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER` + // . + GenAISystemKey = attribute.Key("gen_ai.system") + + // GenAITokenTypeKey is the attribute Key conforming to the "gen_ai.token.type" + // semantic conventions. It represents the type of token being counted. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "input", "output" + GenAITokenTypeKey = attribute.Key("gen_ai.token.type") + + // GenAIToolCallIDKey is the attribute Key conforming to the + // "gen_ai.tool.call.id" semantic conventions. It represents the tool call + // identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "call_mszuSIzqtI65i1wAUOE8w5H4" + GenAIToolCallIDKey = attribute.Key("gen_ai.tool.call.id") + + // GenAIToolDescriptionKey is the attribute Key conforming to the + // "gen_ai.tool.description" semantic conventions. It represents the tool + // description. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Multiply two numbers" + GenAIToolDescriptionKey = attribute.Key("gen_ai.tool.description") + + // GenAIToolNameKey is the attribute Key conforming to the "gen_ai.tool.name" + // semantic conventions. It represents the name of the tool utilized by the + // agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Flights" + GenAIToolNameKey = attribute.Key("gen_ai.tool.name") + + // GenAIToolTypeKey is the attribute Key conforming to the "gen_ai.tool.type" + // semantic conventions. It represents the type of the tool utilized by the + // agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "function", "extension", "datastore" + // Note: Extension: A tool executed on the agent-side to directly call external + // APIs, bridging the gap between the agent and real-world systems. + // Agent-side operations involve actions that are performed by the agent on the + // server or within the agent's controlled environment. + // Function: A tool executed on the client-side, where the agent generates + // parameters for a predefined function, and the client executes the logic. + // Client-side operations are actions taken on the user's end or within the + // client application. + // Datastore: A tool used by the agent to access and query structured or + // unstructured external data for retrieval-augmented tasks or knowledge + // updates. + GenAIToolTypeKey = attribute.Key("gen_ai.tool.type") + + // GenAIUsageInputTokensKey is the attribute Key conforming to the + // "gen_ai.usage.input_tokens" semantic conventions. It represents the number of + // tokens used in the GenAI input (prompt). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIUsageInputTokensKey = attribute.Key("gen_ai.usage.input_tokens") + + // GenAIUsageOutputTokensKey is the attribute Key conforming to the + // "gen_ai.usage.output_tokens" semantic conventions. It represents the number + // of tokens used in the GenAI response (completion). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 180 + GenAIUsageOutputTokensKey = attribute.Key("gen_ai.usage.output_tokens") +) + +// GenAIAgentDescription returns an attribute KeyValue conforming to the +// "gen_ai.agent.description" semantic conventions. It represents the free-form +// description of the GenAI agent provided by the application. +func GenAIAgentDescription(val string) attribute.KeyValue { + return GenAIAgentDescriptionKey.String(val) +} + +// GenAIAgentID returns an attribute KeyValue conforming to the "gen_ai.agent.id" +// semantic conventions. It represents the unique identifier of the GenAI agent. +func GenAIAgentID(val string) attribute.KeyValue { + return GenAIAgentIDKey.String(val) +} + +// GenAIAgentName returns an attribute KeyValue conforming to the +// "gen_ai.agent.name" semantic conventions. It represents the human-readable +// name of the GenAI agent provided by the application. +func GenAIAgentName(val string) attribute.KeyValue { + return GenAIAgentNameKey.String(val) +} + +// GenAIConversationID returns an attribute KeyValue conforming to the +// "gen_ai.conversation.id" semantic conventions. It represents the unique +// identifier for a conversation (session, thread), used to store and correlate +// messages within this conversation. +func GenAIConversationID(val string) attribute.KeyValue { + return GenAIConversationIDKey.String(val) +} + +// GenAIDataSourceID returns an attribute KeyValue conforming to the +// "gen_ai.data_source.id" semantic conventions. It represents the data source +// identifier. +func GenAIDataSourceID(val string) attribute.KeyValue { + return GenAIDataSourceIDKey.String(val) +} + +// GenAIOpenAIResponseServiceTier returns an attribute KeyValue conforming to the +// "gen_ai.openai.response.service_tier" semantic conventions. It represents the +// service tier used for the response. +func GenAIOpenAIResponseServiceTier(val string) attribute.KeyValue { + return GenAIOpenAIResponseServiceTierKey.String(val) +} + +// GenAIOpenAIResponseSystemFingerprint returns an attribute KeyValue conforming +// to the "gen_ai.openai.response.system_fingerprint" semantic conventions. It +// represents a fingerprint to track any eventual change in the Generative AI +// environment. +func GenAIOpenAIResponseSystemFingerprint(val string) attribute.KeyValue { + return GenAIOpenAIResponseSystemFingerprintKey.String(val) +} + +// GenAIRequestChoiceCount returns an attribute KeyValue conforming to the +// "gen_ai.request.choice.count" semantic conventions. It represents the target +// number of candidate completions to return. +func GenAIRequestChoiceCount(val int) attribute.KeyValue { + return GenAIRequestChoiceCountKey.Int(val) +} + +// GenAIRequestEncodingFormats returns an attribute KeyValue conforming to the +// "gen_ai.request.encoding_formats" semantic conventions. It represents the +// encoding formats requested in an embeddings operation, if specified. +func GenAIRequestEncodingFormats(val ...string) attribute.KeyValue { + return GenAIRequestEncodingFormatsKey.StringSlice(val) +} + +// GenAIRequestFrequencyPenalty returns an attribute KeyValue conforming to the +// "gen_ai.request.frequency_penalty" semantic conventions. It represents the +// frequency penalty setting for the GenAI request. +func GenAIRequestFrequencyPenalty(val float64) attribute.KeyValue { + return GenAIRequestFrequencyPenaltyKey.Float64(val) +} + +// GenAIRequestMaxTokens returns an attribute KeyValue conforming to the +// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum +// number of tokens the model generates for a request. +func GenAIRequestMaxTokens(val int) attribute.KeyValue { + return GenAIRequestMaxTokensKey.Int(val) +} + +// GenAIRequestModel returns an attribute KeyValue conforming to the +// "gen_ai.request.model" semantic conventions. It represents the name of the +// GenAI model a request is being made to. +func GenAIRequestModel(val string) attribute.KeyValue { + return GenAIRequestModelKey.String(val) +} + +// GenAIRequestPresencePenalty returns an attribute KeyValue conforming to the +// "gen_ai.request.presence_penalty" semantic conventions. It represents the +// presence penalty setting for the GenAI request. +func GenAIRequestPresencePenalty(val float64) attribute.KeyValue { + return GenAIRequestPresencePenaltyKey.Float64(val) +} + +// GenAIRequestSeed returns an attribute KeyValue conforming to the +// "gen_ai.request.seed" semantic conventions. It represents the requests with +// same seed value more likely to return same result. +func GenAIRequestSeed(val int) attribute.KeyValue { + return GenAIRequestSeedKey.Int(val) +} + +// GenAIRequestStopSequences returns an attribute KeyValue conforming to the +// "gen_ai.request.stop_sequences" semantic conventions. It represents the list +// of sequences that the model will use to stop generating further tokens. +func GenAIRequestStopSequences(val ...string) attribute.KeyValue { + return GenAIRequestStopSequencesKey.StringSlice(val) +} + +// GenAIRequestTemperature returns an attribute KeyValue conforming to the +// "gen_ai.request.temperature" semantic conventions. It represents the +// temperature setting for the GenAI request. +func GenAIRequestTemperature(val float64) attribute.KeyValue { + return GenAIRequestTemperatureKey.Float64(val) +} + +// GenAIRequestTopK returns an attribute KeyValue conforming to the +// "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling +// setting for the GenAI request. +func GenAIRequestTopK(val float64) attribute.KeyValue { + return GenAIRequestTopKKey.Float64(val) +} + +// GenAIRequestTopP returns an attribute KeyValue conforming to the +// "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling +// setting for the GenAI request. +func GenAIRequestTopP(val float64) attribute.KeyValue { + return GenAIRequestTopPKey.Float64(val) +} + +// GenAIResponseFinishReasons returns an attribute KeyValue conforming to the +// "gen_ai.response.finish_reasons" semantic conventions. It represents the array +// of reasons the model stopped generating tokens, corresponding to each +// generation received. +func GenAIResponseFinishReasons(val ...string) attribute.KeyValue { + return GenAIResponseFinishReasonsKey.StringSlice(val) +} + +// GenAIResponseID returns an attribute KeyValue conforming to the +// "gen_ai.response.id" semantic conventions. It represents the unique identifier +// for the completion. +func GenAIResponseID(val string) attribute.KeyValue { + return GenAIResponseIDKey.String(val) +} + +// GenAIResponseModel returns an attribute KeyValue conforming to the +// "gen_ai.response.model" semantic conventions. It represents the name of the +// model that generated the response. +func GenAIResponseModel(val string) attribute.KeyValue { + return GenAIResponseModelKey.String(val) +} + +// GenAIToolCallID returns an attribute KeyValue conforming to the +// "gen_ai.tool.call.id" semantic conventions. It represents the tool call +// identifier. +func GenAIToolCallID(val string) attribute.KeyValue { + return GenAIToolCallIDKey.String(val) +} + +// GenAIToolDescription returns an attribute KeyValue conforming to the +// "gen_ai.tool.description" semantic conventions. It represents the tool +// description. +func GenAIToolDescription(val string) attribute.KeyValue { + return GenAIToolDescriptionKey.String(val) +} + +// GenAIToolName returns an attribute KeyValue conforming to the +// "gen_ai.tool.name" semantic conventions. It represents the name of the tool +// utilized by the agent. +func GenAIToolName(val string) attribute.KeyValue { + return GenAIToolNameKey.String(val) +} + +// GenAIToolType returns an attribute KeyValue conforming to the +// "gen_ai.tool.type" semantic conventions. It represents the type of the tool +// utilized by the agent. +func GenAIToolType(val string) attribute.KeyValue { + return GenAIToolTypeKey.String(val) +} + +// GenAIUsageInputTokens returns an attribute KeyValue conforming to the +// "gen_ai.usage.input_tokens" semantic conventions. It represents the number of +// tokens used in the GenAI input (prompt). +func GenAIUsageInputTokens(val int) attribute.KeyValue { + return GenAIUsageInputTokensKey.Int(val) +} + +// GenAIUsageOutputTokens returns an attribute KeyValue conforming to the +// "gen_ai.usage.output_tokens" semantic conventions. It represents the number of +// tokens used in the GenAI response (completion). +func GenAIUsageOutputTokens(val int) attribute.KeyValue { + return GenAIUsageOutputTokensKey.Int(val) +} + +// Enum values for gen_ai.openai.request.service_tier +var ( + // The system will utilize scale tier credits until they are exhausted. + // Stability: development + GenAIOpenAIRequestServiceTierAuto = GenAIOpenAIRequestServiceTierKey.String("auto") + // The system will utilize the default scale tier. + // Stability: development + GenAIOpenAIRequestServiceTierDefault = GenAIOpenAIRequestServiceTierKey.String("default") +) + +// Enum values for gen_ai.operation.name +var ( + // Chat completion operation such as [OpenAI Chat API] + // Stability: development + // + // [OpenAI Chat API]: https://platform.openai.com/docs/api-reference/chat + GenAIOperationNameChat = GenAIOperationNameKey.String("chat") + // Multimodal content generation operation such as [Gemini Generate Content] + // Stability: development + // + // [Gemini Generate Content]: https://ai.google.dev/api/generate-content + GenAIOperationNameGenerateContent = GenAIOperationNameKey.String("generate_content") + // Text completions operation such as [OpenAI Completions API (Legacy)] + // Stability: development + // + // [OpenAI Completions API (Legacy)]: https://platform.openai.com/docs/api-reference/completions + GenAIOperationNameTextCompletion = GenAIOperationNameKey.String("text_completion") + // Embeddings operation such as [OpenAI Create embeddings API] + // Stability: development + // + // [OpenAI Create embeddings API]: https://platform.openai.com/docs/api-reference/embeddings/create + GenAIOperationNameEmbeddings = GenAIOperationNameKey.String("embeddings") + // Create GenAI agent + // Stability: development + GenAIOperationNameCreateAgent = GenAIOperationNameKey.String("create_agent") + // Invoke GenAI agent + // Stability: development + GenAIOperationNameInvokeAgent = GenAIOperationNameKey.String("invoke_agent") + // Execute a tool + // Stability: development + GenAIOperationNameExecuteTool = GenAIOperationNameKey.String("execute_tool") +) + +// Enum values for gen_ai.output.type +var ( + // Plain text + // Stability: development + GenAIOutputTypeText = GenAIOutputTypeKey.String("text") + // JSON object with known or unknown schema + // Stability: development + GenAIOutputTypeJSON = GenAIOutputTypeKey.String("json") + // Image + // Stability: development + GenAIOutputTypeImage = GenAIOutputTypeKey.String("image") + // Speech + // Stability: development + GenAIOutputTypeSpeech = GenAIOutputTypeKey.String("speech") +) + +// Enum values for gen_ai.system +var ( + // OpenAI + // Stability: development + GenAISystemOpenAI = GenAISystemKey.String("openai") + // Any Google generative AI endpoint + // Stability: development + GenAISystemGCPGenAI = GenAISystemKey.String("gcp.gen_ai") + // Vertex AI + // Stability: development + GenAISystemGCPVertexAI = GenAISystemKey.String("gcp.vertex_ai") + // Gemini + // Stability: development + GenAISystemGCPGemini = GenAISystemKey.String("gcp.gemini") + // Deprecated: Use 'gcp.vertex_ai' instead. + GenAISystemVertexAI = GenAISystemKey.String("vertex_ai") + // Deprecated: Use 'gcp.gemini' instead. + GenAISystemGemini = GenAISystemKey.String("gemini") + // Anthropic + // Stability: development + GenAISystemAnthropic = GenAISystemKey.String("anthropic") + // Cohere + // Stability: development + GenAISystemCohere = GenAISystemKey.String("cohere") + // Azure AI Inference + // Stability: development + GenAISystemAzAIInference = GenAISystemKey.String("az.ai.inference") + // Azure OpenAI + // Stability: development + GenAISystemAzAIOpenAI = GenAISystemKey.String("az.ai.openai") + // IBM Watsonx AI + // Stability: development + GenAISystemIBMWatsonxAI = GenAISystemKey.String("ibm.watsonx.ai") + // AWS Bedrock + // Stability: development + GenAISystemAWSBedrock = GenAISystemKey.String("aws.bedrock") + // Perplexity + // Stability: development + GenAISystemPerplexity = GenAISystemKey.String("perplexity") + // xAI + // Stability: development + GenAISystemXai = GenAISystemKey.String("xai") + // DeepSeek + // Stability: development + GenAISystemDeepseek = GenAISystemKey.String("deepseek") + // Groq + // Stability: development + GenAISystemGroq = GenAISystemKey.String("groq") + // Mistral AI + // Stability: development + GenAISystemMistralAI = GenAISystemKey.String("mistral_ai") +) + +// Enum values for gen_ai.token.type +var ( + // Input tokens (prompt, input, etc.) + // Stability: development + GenAITokenTypeInput = GenAITokenTypeKey.String("input") + // Deprecated: Replaced by `output`. + GenAITokenTypeCompletion = GenAITokenTypeKey.String("output") + // Output tokens (completion, response, etc.) + // Stability: development + GenAITokenTypeOutput = GenAITokenTypeKey.String("output") +) + +// Namespace: geo +const ( + // GeoContinentCodeKey is the attribute Key conforming to the + // "geo.continent.code" semantic conventions. It represents the two-letter code + // representing continent’s name. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + GeoContinentCodeKey = attribute.Key("geo.continent.code") + + // GeoCountryISOCodeKey is the attribute Key conforming to the + // "geo.country.iso_code" semantic conventions. It represents the two-letter ISO + // Country Code ([ISO 3166-1 alpha2]). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CA" + // + // [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes + GeoCountryISOCodeKey = attribute.Key("geo.country.iso_code") + + // GeoLocalityNameKey is the attribute Key conforming to the "geo.locality.name" + // semantic conventions. It represents the locality name. Represents the name of + // a city, town, village, or similar populated place. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Montreal", "Berlin" + GeoLocalityNameKey = attribute.Key("geo.locality.name") + + // GeoLocationLatKey is the attribute Key conforming to the "geo.location.lat" + // semantic conventions. It represents the latitude of the geo location in + // [WGS84]. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 45.505918 + // + // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 + GeoLocationLatKey = attribute.Key("geo.location.lat") + + // GeoLocationLonKey is the attribute Key conforming to the "geo.location.lon" + // semantic conventions. It represents the longitude of the geo location in + // [WGS84]. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: -73.61483 + // + // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 + GeoLocationLonKey = attribute.Key("geo.location.lon") + + // GeoPostalCodeKey is the attribute Key conforming to the "geo.postal_code" + // semantic conventions. It represents the postal code associated with the + // location. Values appropriate for this field may also be known as a postcode + // or ZIP code and will vary widely from country to country. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "94040" + GeoPostalCodeKey = attribute.Key("geo.postal_code") + + // GeoRegionISOCodeKey is the attribute Key conforming to the + // "geo.region.iso_code" semantic conventions. It represents the region ISO code + // ([ISO 3166-2]). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CA-QC" + // + // [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2 + GeoRegionISOCodeKey = attribute.Key("geo.region.iso_code") +) + +// GeoCountryISOCode returns an attribute KeyValue conforming to the +// "geo.country.iso_code" semantic conventions. It represents the two-letter ISO +// Country Code ([ISO 3166-1 alpha2]). +// +// [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes +func GeoCountryISOCode(val string) attribute.KeyValue { + return GeoCountryISOCodeKey.String(val) +} + +// GeoLocalityName returns an attribute KeyValue conforming to the +// "geo.locality.name" semantic conventions. It represents the locality name. +// Represents the name of a city, town, village, or similar populated place. +func GeoLocalityName(val string) attribute.KeyValue { + return GeoLocalityNameKey.String(val) +} + +// GeoLocationLat returns an attribute KeyValue conforming to the +// "geo.location.lat" semantic conventions. It represents the latitude of the geo +// location in [WGS84]. +// +// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 +func GeoLocationLat(val float64) attribute.KeyValue { + return GeoLocationLatKey.Float64(val) +} + +// GeoLocationLon returns an attribute KeyValue conforming to the +// "geo.location.lon" semantic conventions. It represents the longitude of the +// geo location in [WGS84]. +// +// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 +func GeoLocationLon(val float64) attribute.KeyValue { + return GeoLocationLonKey.Float64(val) +} + +// GeoPostalCode returns an attribute KeyValue conforming to the +// "geo.postal_code" semantic conventions. It represents the postal code +// associated with the location. Values appropriate for this field may also be +// known as a postcode or ZIP code and will vary widely from country to country. +func GeoPostalCode(val string) attribute.KeyValue { + return GeoPostalCodeKey.String(val) +} + +// GeoRegionISOCode returns an attribute KeyValue conforming to the +// "geo.region.iso_code" semantic conventions. It represents the region ISO code +// ([ISO 3166-2]). +// +// [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2 +func GeoRegionISOCode(val string) attribute.KeyValue { + return GeoRegionISOCodeKey.String(val) +} + +// Enum values for geo.continent.code +var ( + // Africa + // Stability: development + GeoContinentCodeAf = GeoContinentCodeKey.String("AF") + // Antarctica + // Stability: development + GeoContinentCodeAn = GeoContinentCodeKey.String("AN") + // Asia + // Stability: development + GeoContinentCodeAs = GeoContinentCodeKey.String("AS") + // Europe + // Stability: development + GeoContinentCodeEu = GeoContinentCodeKey.String("EU") + // North America + // Stability: development + GeoContinentCodeNa = GeoContinentCodeKey.String("NA") + // Oceania + // Stability: development + GeoContinentCodeOc = GeoContinentCodeKey.String("OC") + // South America + // Stability: development + GeoContinentCodeSa = GeoContinentCodeKey.String("SA") +) + +// Namespace: go +const ( + // GoMemoryTypeKey is the attribute Key conforming to the "go.memory.type" + // semantic conventions. It represents the type of memory. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "other", "stack" + GoMemoryTypeKey = attribute.Key("go.memory.type") +) + +// Enum values for go.memory.type +var ( + // Memory allocated from the heap that is reserved for stack space, whether or + // not it is currently in-use. + // Stability: development + GoMemoryTypeStack = GoMemoryTypeKey.String("stack") + // Memory used by the Go runtime, excluding other categories of memory usage + // described in this enumeration. + // Stability: development + GoMemoryTypeOther = GoMemoryTypeKey.String("other") +) + +// Namespace: graphql +const ( + // GraphQLDocumentKey is the attribute Key conforming to the "graphql.document" + // semantic conventions. It represents the GraphQL document being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: query findBookById { bookById(id: ?) { name } } + // Note: The value may be sanitized to exclude sensitive information. + GraphQLDocumentKey = attribute.Key("graphql.document") + + // GraphQLOperationNameKey is the attribute Key conforming to the + // "graphql.operation.name" semantic conventions. It represents the name of the + // operation being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: findBookById + GraphQLOperationNameKey = attribute.Key("graphql.operation.name") + + // GraphQLOperationTypeKey is the attribute Key conforming to the + // "graphql.operation.type" semantic conventions. It represents the type of the + // operation being executed. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "query", "mutation", "subscription" + GraphQLOperationTypeKey = attribute.Key("graphql.operation.type") +) + +// GraphQLDocument returns an attribute KeyValue conforming to the +// "graphql.document" semantic conventions. It represents the GraphQL document +// being executed. +func GraphQLDocument(val string) attribute.KeyValue { + return GraphQLDocumentKey.String(val) +} + +// GraphQLOperationName returns an attribute KeyValue conforming to the +// "graphql.operation.name" semantic conventions. It represents the name of the +// operation being executed. +func GraphQLOperationName(val string) attribute.KeyValue { + return GraphQLOperationNameKey.String(val) +} + +// Enum values for graphql.operation.type +var ( + // GraphQL query + // Stability: development + GraphQLOperationTypeQuery = GraphQLOperationTypeKey.String("query") + // GraphQL mutation + // Stability: development + GraphQLOperationTypeMutation = GraphQLOperationTypeKey.String("mutation") + // GraphQL subscription + // Stability: development + GraphQLOperationTypeSubscription = GraphQLOperationTypeKey.String("subscription") +) + +// Namespace: heroku +const ( + // HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id" + // semantic conventions. It represents the unique identifier for the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2daa2797-e42b-4624-9322-ec3f968df4da" + HerokuAppIDKey = attribute.Key("heroku.app.id") + + // HerokuReleaseCommitKey is the attribute Key conforming to the + // "heroku.release.commit" semantic conventions. It represents the commit hash + // for the current release. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "e6134959463efd8966b20e75b913cafe3f5ec" + HerokuReleaseCommitKey = attribute.Key("heroku.release.commit") + + // HerokuReleaseCreationTimestampKey is the attribute Key conforming to the + // "heroku.release.creation_timestamp" semantic conventions. It represents the + // time and date the release was created. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2022-10-23T18:00:42Z" + HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp") +) + +// HerokuAppID returns an attribute KeyValue conforming to the "heroku.app.id" +// semantic conventions. It represents the unique identifier for the application. +func HerokuAppID(val string) attribute.KeyValue { + return HerokuAppIDKey.String(val) +} + +// HerokuReleaseCommit returns an attribute KeyValue conforming to the +// "heroku.release.commit" semantic conventions. It represents the commit hash +// for the current release. +func HerokuReleaseCommit(val string) attribute.KeyValue { + return HerokuReleaseCommitKey.String(val) +} + +// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming to the +// "heroku.release.creation_timestamp" semantic conventions. It represents the +// time and date the release was created. +func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue { + return HerokuReleaseCreationTimestampKey.String(val) +} + +// Namespace: host +const ( + // HostArchKey is the attribute Key conforming to the "host.arch" semantic + // conventions. It represents the CPU architecture the host system is running + // on. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HostArchKey = attribute.Key("host.arch") + + // HostCPUCacheL2SizeKey is the attribute Key conforming to the + // "host.cpu.cache.l2.size" semantic conventions. It represents the amount of + // level 2 memory cache available to the processor (in Bytes). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12288000 + HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size") + + // HostCPUFamilyKey is the attribute Key conforming to the "host.cpu.family" + // semantic conventions. It represents the family or generation of the CPU. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "6", "PA-RISC 1.1e" + HostCPUFamilyKey = attribute.Key("host.cpu.family") + + // HostCPUModelIDKey is the attribute Key conforming to the "host.cpu.model.id" + // semantic conventions. It represents the model identifier. It provides more + // granular information about the CPU, distinguishing it from other CPUs within + // the same family. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "6", "9000/778/B180L" + HostCPUModelIDKey = attribute.Key("host.cpu.model.id") + + // HostCPUModelNameKey is the attribute Key conforming to the + // "host.cpu.model.name" semantic conventions. It represents the model + // designation of the processor. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz" + HostCPUModelNameKey = attribute.Key("host.cpu.model.name") + + // HostCPUSteppingKey is the attribute Key conforming to the "host.cpu.stepping" + // semantic conventions. It represents the stepping or core revisions. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1", "r1p1" + HostCPUSteppingKey = attribute.Key("host.cpu.stepping") + + // HostCPUVendorIDKey is the attribute Key conforming to the + // "host.cpu.vendor.id" semantic conventions. It represents the processor + // manufacturer identifier. A maximum 12-character string. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "GenuineIntel" + // Note: [CPUID] command returns the vendor ID string in EBX, EDX and ECX + // registers. Writing these to memory in this order results in a 12-character + // string. + // + // [CPUID]: https://wiki.osdev.org/CPUID + HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id") + + // HostIDKey is the attribute Key conforming to the "host.id" semantic + // conventions. It represents the unique host ID. For Cloud, this must be the + // instance_id assigned by the cloud provider. For non-containerized systems, + // this should be the `machine-id`. See the table below for the sources to use + // to determine the `machine-id` based on operating system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "fdbf79e8af94cb7f9e8df36789187052" + HostIDKey = attribute.Key("host.id") + + // HostImageIDKey is the attribute Key conforming to the "host.image.id" + // semantic conventions. It represents the VM image ID or host OS image ID. For + // Cloud, this value is from the provider. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ami-07b06b442921831e5" + HostImageIDKey = attribute.Key("host.image.id") + + // HostImageNameKey is the attribute Key conforming to the "host.image.name" + // semantic conventions. It represents the name of the VM image or OS install + // the host was instantiated from. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "infra-ami-eks-worker-node-7d4ec78312", "CentOS-8-x86_64-1905" + HostImageNameKey = attribute.Key("host.image.name") + + // HostImageVersionKey is the attribute Key conforming to the + // "host.image.version" semantic conventions. It represents the version string + // of the VM image or host OS as defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0.1" + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + HostImageVersionKey = attribute.Key("host.image.version") + + // HostIPKey is the attribute Key conforming to the "host.ip" semantic + // conventions. It represents the available IP addresses of the host, excluding + // loopback interfaces. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "192.168.1.140", "fe80::abc2:4a28:737a:609e" + // Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 + // addresses MUST be specified in the [RFC 5952] format. + // + // [RFC 5952]: https://www.rfc-editor.org/rfc/rfc5952.html + HostIPKey = attribute.Key("host.ip") + + // HostMacKey is the attribute Key conforming to the "host.mac" semantic + // conventions. It represents the available MAC addresses of the host, excluding + // loopback interfaces. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F" + // Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal form]: as + // hyphen-separated octets in uppercase hexadecimal form from most to least + // significant. + // + // [IEEE RA hexadecimal form]: https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf + HostMacKey = attribute.Key("host.mac") + + // HostNameKey is the attribute Key conforming to the "host.name" semantic + // conventions. It represents the name of the host. On Unix systems, it may + // contain what the hostname command returns, or the fully qualified hostname, + // or another name specified by the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-test" + HostNameKey = attribute.Key("host.name") + + // HostTypeKey is the attribute Key conforming to the "host.type" semantic + // conventions. It represents the type of host. For Cloud, this must be the + // machine type. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "n1-standard-1" + HostTypeKey = attribute.Key("host.type") +) + +// HostCPUCacheL2Size returns an attribute KeyValue conforming to the +// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of +// level 2 memory cache available to the processor (in Bytes). +func HostCPUCacheL2Size(val int) attribute.KeyValue { + return HostCPUCacheL2SizeKey.Int(val) +} + +// HostCPUFamily returns an attribute KeyValue conforming to the +// "host.cpu.family" semantic conventions. It represents the family or generation +// of the CPU. +func HostCPUFamily(val string) attribute.KeyValue { + return HostCPUFamilyKey.String(val) +} + +// HostCPUModelID returns an attribute KeyValue conforming to the +// "host.cpu.model.id" semantic conventions. It represents the model identifier. +// It provides more granular information about the CPU, distinguishing it from +// other CPUs within the same family. +func HostCPUModelID(val string) attribute.KeyValue { + return HostCPUModelIDKey.String(val) +} + +// HostCPUModelName returns an attribute KeyValue conforming to the +// "host.cpu.model.name" semantic conventions. It represents the model +// designation of the processor. +func HostCPUModelName(val string) attribute.KeyValue { + return HostCPUModelNameKey.String(val) +} + +// HostCPUStepping returns an attribute KeyValue conforming to the +// "host.cpu.stepping" semantic conventions. It represents the stepping or core +// revisions. +func HostCPUStepping(val string) attribute.KeyValue { + return HostCPUSteppingKey.String(val) +} + +// HostCPUVendorID returns an attribute KeyValue conforming to the +// "host.cpu.vendor.id" semantic conventions. It represents the processor +// manufacturer identifier. A maximum 12-character string. +func HostCPUVendorID(val string) attribute.KeyValue { + return HostCPUVendorIDKey.String(val) +} + +// HostID returns an attribute KeyValue conforming to the "host.id" semantic +// conventions. It represents the unique host ID. For Cloud, this must be the +// instance_id assigned by the cloud provider. For non-containerized systems, +// this should be the `machine-id`. See the table below for the sources to use to +// determine the `machine-id` based on operating system. +func HostID(val string) attribute.KeyValue { + return HostIDKey.String(val) +} + +// HostImageID returns an attribute KeyValue conforming to the "host.image.id" +// semantic conventions. It represents the VM image ID or host OS image ID. For +// Cloud, this value is from the provider. +func HostImageID(val string) attribute.KeyValue { + return HostImageIDKey.String(val) +} + +// HostImageName returns an attribute KeyValue conforming to the +// "host.image.name" semantic conventions. It represents the name of the VM image +// or OS install the host was instantiated from. +func HostImageName(val string) attribute.KeyValue { + return HostImageNameKey.String(val) +} + +// HostImageVersion returns an attribute KeyValue conforming to the +// "host.image.version" semantic conventions. It represents the version string of +// the VM image or host OS as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func HostImageVersion(val string) attribute.KeyValue { + return HostImageVersionKey.String(val) +} + +// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic +// conventions. It represents the available IP addresses of the host, excluding +// loopback interfaces. +func HostIP(val ...string) attribute.KeyValue { + return HostIPKey.StringSlice(val) +} + +// HostMac returns an attribute KeyValue conforming to the "host.mac" semantic +// conventions. It represents the available MAC addresses of the host, excluding +// loopback interfaces. +func HostMac(val ...string) attribute.KeyValue { + return HostMacKey.StringSlice(val) +} + +// HostName returns an attribute KeyValue conforming to the "host.name" semantic +// conventions. It represents the name of the host. On Unix systems, it may +// contain what the hostname command returns, or the fully qualified hostname, or +// another name specified by the user. +func HostName(val string) attribute.KeyValue { + return HostNameKey.String(val) +} + +// HostType returns an attribute KeyValue conforming to the "host.type" semantic +// conventions. It represents the type of host. For Cloud, this must be the +// machine type. +func HostType(val string) attribute.KeyValue { + return HostTypeKey.String(val) +} + +// Enum values for host.arch +var ( + // AMD64 + // Stability: development + HostArchAMD64 = HostArchKey.String("amd64") + // ARM32 + // Stability: development + HostArchARM32 = HostArchKey.String("arm32") + // ARM64 + // Stability: development + HostArchARM64 = HostArchKey.String("arm64") + // Itanium + // Stability: development + HostArchIA64 = HostArchKey.String("ia64") + // 32-bit PowerPC + // Stability: development + HostArchPPC32 = HostArchKey.String("ppc32") + // 64-bit PowerPC + // Stability: development + HostArchPPC64 = HostArchKey.String("ppc64") + // IBM z/Architecture + // Stability: development + HostArchS390x = HostArchKey.String("s390x") + // 32-bit x86 + // Stability: development + HostArchX86 = HostArchKey.String("x86") +) + +// Namespace: http +const ( + // HTTPConnectionStateKey is the attribute Key conforming to the + // "http.connection.state" semantic conventions. It represents the state of the + // HTTP connection in the HTTP connection pool. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "active", "idle" + HTTPConnectionStateKey = attribute.Key("http.connection.state") + + // HTTPRequestBodySizeKey is the attribute Key conforming to the + // "http.request.body.size" semantic conventions. It represents the size of the + // request payload body in bytes. This is the number of bytes transferred + // excluding headers and is often, but not always, present as the + // [Content-Length] header. For requests using transport encoding, this should + // be the compressed size. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length + HTTPRequestBodySizeKey = attribute.Key("http.request.body.size") + + // HTTPRequestMethodKey is the attribute Key conforming to the + // "http.request.method" semantic conventions. It represents the HTTP request + // method. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GET", "POST", "HEAD" + // Note: HTTP request method value SHOULD be "known" to the instrumentation. + // By default, this convention defines "known" methods as the ones listed in + // [RFC9110] + // and the PATCH method defined in [RFC5789]. + // + // If the HTTP request method is not known to instrumentation, it MUST set the + // `http.request.method` attribute to `_OTHER`. + // + // If the HTTP instrumentation could end up converting valid HTTP request + // methods to `_OTHER`, then it MUST provide a way to override + // the list of known HTTP methods. If this override is done via environment + // variable, then the environment variable MUST be named + // OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of + // case-sensitive known HTTP methods + // (this list MUST be a full override of the default known method, it is not a + // list of known methods in addition to the defaults). + // + // HTTP method names are case-sensitive and `http.request.method` attribute + // value MUST match a known HTTP method name exactly. + // Instrumentations for specific web frameworks that consider HTTP methods to be + // case insensitive, SHOULD populate a canonical equivalent. + // Tracing instrumentations that do so, MUST also set + // `http.request.method_original` to the original value. + // + // [RFC9110]: https://www.rfc-editor.org/rfc/rfc9110.html#name-methods + // [RFC5789]: https://www.rfc-editor.org/rfc/rfc5789.html + HTTPRequestMethodKey = attribute.Key("http.request.method") + + // HTTPRequestMethodOriginalKey is the attribute Key conforming to the + // "http.request.method_original" semantic conventions. It represents the + // original HTTP method sent by the client in the request line. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GeT", "ACL", "foo" + HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original") + + // HTTPRequestResendCountKey is the attribute Key conforming to the + // "http.request.resend_count" semantic conventions. It represents the ordinal + // number of request resending attempt (for any reason, including redirects). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Note: The resend count SHOULD be updated each time an HTTP request gets + // resent by the client, regardless of what was the cause of the resending (e.g. + // redirection, authorization failure, 503 Server Unavailable, network issues, + // or any other). + HTTPRequestResendCountKey = attribute.Key("http.request.resend_count") + + // HTTPRequestSizeKey is the attribute Key conforming to the "http.request.size" + // semantic conventions. It represents the total size of the request in bytes. + // This should be the total number of bytes sent over the wire, including the + // request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request + // body if any. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + HTTPRequestSizeKey = attribute.Key("http.request.size") + + // HTTPResponseBodySizeKey is the attribute Key conforming to the + // "http.response.body.size" semantic conventions. It represents the size of the + // response payload body in bytes. This is the number of bytes transferred + // excluding headers and is often, but not always, present as the + // [Content-Length] header. For requests using transport encoding, this should + // be the compressed size. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length + HTTPResponseBodySizeKey = attribute.Key("http.response.body.size") + + // HTTPResponseSizeKey is the attribute Key conforming to the + // "http.response.size" semantic conventions. It represents the total size of + // the response in bytes. This should be the total number of bytes sent over the + // wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), + // headers, and response body and trailers if any. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + HTTPResponseSizeKey = attribute.Key("http.response.size") + + // HTTPResponseStatusCodeKey is the attribute Key conforming to the + // "http.response.status_code" semantic conventions. It represents the + // [HTTP response status code]. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 200 + // + // [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 + HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code") + + // HTTPRouteKey is the attribute Key conforming to the "http.route" semantic + // conventions. It represents the matched route, that is, the path template in + // the format used by the respective server framework. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "/users/:userID?", "{controller}/{action}/{id?}" + // Note: MUST NOT be populated when this is not supported by the HTTP server + // framework as the route attribute should have low-cardinality and the URI path + // can NOT substitute it. + // SHOULD include the [application root] if there is one. + // + // [application root]: /docs/http/http-spans.md#http-server-definitions + HTTPRouteKey = attribute.Key("http.route") +) + +// HTTPRequestBodySize returns an attribute KeyValue conforming to the +// "http.request.body.size" semantic conventions. It represents the size of the +// request payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func HTTPRequestBodySize(val int) attribute.KeyValue { + return HTTPRequestBodySizeKey.Int(val) +} + +// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the +// "http.request.method_original" semantic conventions. It represents the +// original HTTP method sent by the client in the request line. +func HTTPRequestMethodOriginal(val string) attribute.KeyValue { + return HTTPRequestMethodOriginalKey.String(val) +} + +// HTTPRequestResendCount returns an attribute KeyValue conforming to the +// "http.request.resend_count" semantic conventions. It represents the ordinal +// number of request resending attempt (for any reason, including redirects). +func HTTPRequestResendCount(val int) attribute.KeyValue { + return HTTPRequestResendCountKey.Int(val) +} + +// HTTPRequestSize returns an attribute KeyValue conforming to the +// "http.request.size" semantic conventions. It represents the total size of the +// request in bytes. This should be the total number of bytes sent over the wire, +// including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, +// and request body if any. +func HTTPRequestSize(val int) attribute.KeyValue { + return HTTPRequestSizeKey.Int(val) +} + +// HTTPResponseBodySize returns an attribute KeyValue conforming to the +// "http.response.body.size" semantic conventions. It represents the size of the +// response payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func HTTPResponseBodySize(val int) attribute.KeyValue { + return HTTPResponseBodySizeKey.Int(val) +} + +// HTTPResponseSize returns an attribute KeyValue conforming to the +// "http.response.size" semantic conventions. It represents the total size of the +// response in bytes. This should be the total number of bytes sent over the +// wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), +// headers, and response body and trailers if any. +func HTTPResponseSize(val int) attribute.KeyValue { + return HTTPResponseSizeKey.Int(val) +} + +// HTTPResponseStatusCode returns an attribute KeyValue conforming to the +// "http.response.status_code" semantic conventions. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func HTTPResponseStatusCode(val int) attribute.KeyValue { + return HTTPResponseStatusCodeKey.Int(val) +} + +// HTTPRoute returns an attribute KeyValue conforming to the "http.route" +// semantic conventions. It represents the matched route, that is, the path +// template in the format used by the respective server framework. +func HTTPRoute(val string) attribute.KeyValue { + return HTTPRouteKey.String(val) +} + +// Enum values for http.connection.state +var ( + // active state. + // Stability: development + HTTPConnectionStateActive = HTTPConnectionStateKey.String("active") + // idle state. + // Stability: development + HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle") +) + +// Enum values for http.request.method +var ( + // CONNECT method. + // Stability: stable + HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT") + // DELETE method. + // Stability: stable + HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE") + // GET method. + // Stability: stable + HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET") + // HEAD method. + // Stability: stable + HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD") + // OPTIONS method. + // Stability: stable + HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS") + // PATCH method. + // Stability: stable + HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH") + // POST method. + // Stability: stable + HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST") + // PUT method. + // Stability: stable + HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT") + // TRACE method. + // Stability: stable + HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE") + // Any HTTP method that the instrumentation has no prior knowledge of. + // Stability: stable + HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER") +) + +// Namespace: hw +const ( + // HwIDKey is the attribute Key conforming to the "hw.id" semantic conventions. + // It represents an identifier for the hardware component, unique within the + // monitored host. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "win32battery_battery_testsysa33_1" + HwIDKey = attribute.Key("hw.id") + + // HwNameKey is the attribute Key conforming to the "hw.name" semantic + // conventions. It represents an easily-recognizable name for the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "eth0" + HwNameKey = attribute.Key("hw.name") + + // HwParentKey is the attribute Key conforming to the "hw.parent" semantic + // conventions. It represents the unique identifier of the parent component + // (typically the `hw.id` attribute of the enclosure, or disk controller). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "dellStorage_perc_0" + HwParentKey = attribute.Key("hw.parent") + + // HwStateKey is the attribute Key conforming to the "hw.state" semantic + // conventions. It represents the current state of the component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwStateKey = attribute.Key("hw.state") + + // HwTypeKey is the attribute Key conforming to the "hw.type" semantic + // conventions. It represents the type of the component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: Describes the category of the hardware component for which `hw.state` + // is being reported. For example, `hw.type=temperature` along with + // `hw.state=degraded` would indicate that the temperature of the hardware + // component has been reported as `degraded`. + HwTypeKey = attribute.Key("hw.type") +) + +// HwID returns an attribute KeyValue conforming to the "hw.id" semantic +// conventions. It represents an identifier for the hardware component, unique +// within the monitored host. +func HwID(val string) attribute.KeyValue { + return HwIDKey.String(val) +} + +// HwName returns an attribute KeyValue conforming to the "hw.name" semantic +// conventions. It represents an easily-recognizable name for the hardware +// component. +func HwName(val string) attribute.KeyValue { + return HwNameKey.String(val) +} + +// HwParent returns an attribute KeyValue conforming to the "hw.parent" semantic +// conventions. It represents the unique identifier of the parent component +// (typically the `hw.id` attribute of the enclosure, or disk controller). +func HwParent(val string) attribute.KeyValue { + return HwParentKey.String(val) +} + +// Enum values for hw.state +var ( + // Ok + // Stability: development + HwStateOk = HwStateKey.String("ok") + // Degraded + // Stability: development + HwStateDegraded = HwStateKey.String("degraded") + // Failed + // Stability: development + HwStateFailed = HwStateKey.String("failed") +) + +// Enum values for hw.type +var ( + // Battery + // Stability: development + HwTypeBattery = HwTypeKey.String("battery") + // CPU + // Stability: development + HwTypeCPU = HwTypeKey.String("cpu") + // Disk controller + // Stability: development + HwTypeDiskController = HwTypeKey.String("disk_controller") + // Enclosure + // Stability: development + HwTypeEnclosure = HwTypeKey.String("enclosure") + // Fan + // Stability: development + HwTypeFan = HwTypeKey.String("fan") + // GPU + // Stability: development + HwTypeGpu = HwTypeKey.String("gpu") + // Logical disk + // Stability: development + HwTypeLogicalDisk = HwTypeKey.String("logical_disk") + // Memory + // Stability: development + HwTypeMemory = HwTypeKey.String("memory") + // Network + // Stability: development + HwTypeNetwork = HwTypeKey.String("network") + // Physical disk + // Stability: development + HwTypePhysicalDisk = HwTypeKey.String("physical_disk") + // Power supply + // Stability: development + HwTypePowerSupply = HwTypeKey.String("power_supply") + // Tape drive + // Stability: development + HwTypeTapeDrive = HwTypeKey.String("tape_drive") + // Temperature + // Stability: development + HwTypeTemperature = HwTypeKey.String("temperature") + // Voltage + // Stability: development + HwTypeVoltage = HwTypeKey.String("voltage") +) + +// Namespace: ios +const ( + // IOSAppStateKey is the attribute Key conforming to the "ios.app.state" + // semantic conventions. It represents the this attribute represents the state + // of the application. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The iOS lifecycle states are defined in the + // [UIApplicationDelegate documentation], and from which the `OS terminology` + // column values are derived. + // + // [UIApplicationDelegate documentation]: https://developer.apple.com/documentation/uikit/uiapplicationdelegate + IOSAppStateKey = attribute.Key("ios.app.state") +) + +// Enum values for ios.app.state +var ( + // The app has become `active`. Associated with UIKit notification + // `applicationDidBecomeActive`. + // + // Stability: development + IOSAppStateActive = IOSAppStateKey.String("active") + // The app is now `inactive`. Associated with UIKit notification + // `applicationWillResignActive`. + // + // Stability: development + IOSAppStateInactive = IOSAppStateKey.String("inactive") + // The app is now in the background. This value is associated with UIKit + // notification `applicationDidEnterBackground`. + // + // Stability: development + IOSAppStateBackground = IOSAppStateKey.String("background") + // The app is now in the foreground. This value is associated with UIKit + // notification `applicationWillEnterForeground`. + // + // Stability: development + IOSAppStateForeground = IOSAppStateKey.String("foreground") + // The app is about to terminate. Associated with UIKit notification + // `applicationWillTerminate`. + // + // Stability: development + IOSAppStateTerminate = IOSAppStateKey.String("terminate") +) + +// Namespace: k8s +const ( + // K8SClusterNameKey is the attribute Key conforming to the "k8s.cluster.name" + // semantic conventions. It represents the name of the cluster. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-cluster" + K8SClusterNameKey = attribute.Key("k8s.cluster.name") + + // K8SClusterUIDKey is the attribute Key conforming to the "k8s.cluster.uid" + // semantic conventions. It represents a pseudo-ID for the cluster, set to the + // UID of the `kube-system` namespace. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: K8s doesn't have support for obtaining a cluster ID. If this is ever + // added, we will recommend collecting the `k8s.cluster.uid` through the + // official APIs. In the meantime, we are able to use the `uid` of the + // `kube-system` namespace as a proxy for cluster ID. Read on for the + // rationale. + // + // Every object created in a K8s cluster is assigned a distinct UID. The + // `kube-system` namespace is used by Kubernetes itself and will exist + // for the lifetime of the cluster. Using the `uid` of the `kube-system` + // namespace is a reasonable proxy for the K8s ClusterID as it will only + // change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + // UUIDs as standardized by + // [ISO/IEC 9834-8 and ITU-T X.667]. + // Which states: + // + // > If generated according to one of the mechanisms defined in Rec. + // > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + // > different from all other UUIDs generated before 3603 A.D., or is + // > extremely likely to be different (depending on the mechanism chosen). + // + // Therefore, UIDs between clusters should be extremely unlikely to + // conflict. + // + // [ISO/IEC 9834-8 and ITU-T X.667]: https://www.itu.int/ITU-T/studygroups/com17/oid.html + K8SClusterUIDKey = attribute.Key("k8s.cluster.uid") + + // K8SContainerNameKey is the attribute Key conforming to the + // "k8s.container.name" semantic conventions. It represents the name of the + // Container from Pod specification, must be unique within a Pod. Container + // runtime usually uses different globally unique name (`container.name`). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "redis" + K8SContainerNameKey = attribute.Key("k8s.container.name") + + // K8SContainerRestartCountKey is the attribute Key conforming to the + // "k8s.container.restart_count" semantic conventions. It represents the number + // of times the container was restarted. This attribute can be used to identify + // a particular container (running or stopped) within a container spec. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count") + + // K8SContainerStatusLastTerminatedReasonKey is the attribute Key conforming to + // the "k8s.container.status.last_terminated_reason" semantic conventions. It + // represents the last terminated reason of the Container. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Evicted", "Error" + K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason") + + // K8SCronJobNameKey is the attribute Key conforming to the "k8s.cronjob.name" + // semantic conventions. It represents the name of the CronJob. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SCronJobNameKey = attribute.Key("k8s.cronjob.name") + + // K8SCronJobUIDKey is the attribute Key conforming to the "k8s.cronjob.uid" + // semantic conventions. It represents the UID of the CronJob. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid") + + // K8SDaemonSetNameKey is the attribute Key conforming to the + // "k8s.daemonset.name" semantic conventions. It represents the name of the + // DaemonSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name") + + // K8SDaemonSetUIDKey is the attribute Key conforming to the "k8s.daemonset.uid" + // semantic conventions. It represents the UID of the DaemonSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid") + + // K8SDeploymentNameKey is the attribute Key conforming to the + // "k8s.deployment.name" semantic conventions. It represents the name of the + // Deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SDeploymentNameKey = attribute.Key("k8s.deployment.name") + + // K8SDeploymentUIDKey is the attribute Key conforming to the + // "k8s.deployment.uid" semantic conventions. It represents the UID of the + // Deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid") + + // K8SHPANameKey is the attribute Key conforming to the "k8s.hpa.name" semantic + // conventions. It represents the name of the horizontal pod autoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SHPANameKey = attribute.Key("k8s.hpa.name") + + // K8SHPAUIDKey is the attribute Key conforming to the "k8s.hpa.uid" semantic + // conventions. It represents the UID of the horizontal pod autoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SHPAUIDKey = attribute.Key("k8s.hpa.uid") + + // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" semantic + // conventions. It represents the name of the Job. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SJobNameKey = attribute.Key("k8s.job.name") + + // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" semantic + // conventions. It represents the UID of the Job. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SJobUIDKey = attribute.Key("k8s.job.uid") + + // K8SNamespaceNameKey is the attribute Key conforming to the + // "k8s.namespace.name" semantic conventions. It represents the name of the + // namespace that the pod is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "default" + K8SNamespaceNameKey = attribute.Key("k8s.namespace.name") + + // K8SNamespacePhaseKey is the attribute Key conforming to the + // "k8s.namespace.phase" semantic conventions. It represents the phase of the + // K8s namespace. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "active", "terminating" + // Note: This attribute aligns with the `phase` field of the + // [K8s NamespaceStatus] + // + // [K8s NamespaceStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core + K8SNamespacePhaseKey = attribute.Key("k8s.namespace.phase") + + // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name" + // semantic conventions. It represents the name of the Node. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "node-1" + K8SNodeNameKey = attribute.Key("k8s.node.name") + + // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" semantic + // conventions. It represents the UID of the Node. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2" + K8SNodeUIDKey = attribute.Key("k8s.node.uid") + + // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" semantic + // conventions. It represents the name of the Pod. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-pod-autoconf" + K8SPodNameKey = attribute.Key("k8s.pod.name") + + // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" semantic + // conventions. It represents the UID of the Pod. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SPodUIDKey = attribute.Key("k8s.pod.uid") + + // K8SReplicaSetNameKey is the attribute Key conforming to the + // "k8s.replicaset.name" semantic conventions. It represents the name of the + // ReplicaSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name") + + // K8SReplicaSetUIDKey is the attribute Key conforming to the + // "k8s.replicaset.uid" semantic conventions. It represents the UID of the + // ReplicaSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid") + + // K8SReplicationControllerNameKey is the attribute Key conforming to the + // "k8s.replicationcontroller.name" semantic conventions. It represents the name + // of the replication controller. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SReplicationControllerNameKey = attribute.Key("k8s.replicationcontroller.name") + + // K8SReplicationControllerUIDKey is the attribute Key conforming to the + // "k8s.replicationcontroller.uid" semantic conventions. It represents the UID + // of the replication controller. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SReplicationControllerUIDKey = attribute.Key("k8s.replicationcontroller.uid") + + // K8SResourceQuotaNameKey is the attribute Key conforming to the + // "k8s.resourcequota.name" semantic conventions. It represents the name of the + // resource quota. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SResourceQuotaNameKey = attribute.Key("k8s.resourcequota.name") + + // K8SResourceQuotaUIDKey is the attribute Key conforming to the + // "k8s.resourcequota.uid" semantic conventions. It represents the UID of the + // resource quota. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SResourceQuotaUIDKey = attribute.Key("k8s.resourcequota.uid") + + // K8SStatefulSetNameKey is the attribute Key conforming to the + // "k8s.statefulset.name" semantic conventions. It represents the name of the + // StatefulSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name") + + // K8SStatefulSetUIDKey is the attribute Key conforming to the + // "k8s.statefulset.uid" semantic conventions. It represents the UID of the + // StatefulSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid") + + // K8SVolumeNameKey is the attribute Key conforming to the "k8s.volume.name" + // semantic conventions. It represents the name of the K8s volume. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "volume0" + K8SVolumeNameKey = attribute.Key("k8s.volume.name") + + // K8SVolumeTypeKey is the attribute Key conforming to the "k8s.volume.type" + // semantic conventions. It represents the type of the K8s volume. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "emptyDir", "persistentVolumeClaim" + K8SVolumeTypeKey = attribute.Key("k8s.volume.type") +) + +// K8SClusterName returns an attribute KeyValue conforming to the +// "k8s.cluster.name" semantic conventions. It represents the name of the +// cluster. +func K8SClusterName(val string) attribute.KeyValue { + return K8SClusterNameKey.String(val) +} + +// K8SClusterUID returns an attribute KeyValue conforming to the +// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the +// cluster, set to the UID of the `kube-system` namespace. +func K8SClusterUID(val string) attribute.KeyValue { + return K8SClusterUIDKey.String(val) +} + +// K8SContainerName returns an attribute KeyValue conforming to the +// "k8s.container.name" semantic conventions. It represents the name of the +// Container from Pod specification, must be unique within a Pod. Container +// runtime usually uses different globally unique name (`container.name`). +func K8SContainerName(val string) attribute.KeyValue { + return K8SContainerNameKey.String(val) +} + +// K8SContainerRestartCount returns an attribute KeyValue conforming to the +// "k8s.container.restart_count" semantic conventions. It represents the number +// of times the container was restarted. This attribute can be used to identify a +// particular container (running or stopped) within a container spec. +func K8SContainerRestartCount(val int) attribute.KeyValue { + return K8SContainerRestartCountKey.Int(val) +} + +// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue +// conforming to the "k8s.container.status.last_terminated_reason" semantic +// conventions. It represents the last terminated reason of the Container. +func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue { + return K8SContainerStatusLastTerminatedReasonKey.String(val) +} + +// K8SCronJobName returns an attribute KeyValue conforming to the +// "k8s.cronjob.name" semantic conventions. It represents the name of the +// CronJob. +func K8SCronJobName(val string) attribute.KeyValue { + return K8SCronJobNameKey.String(val) +} + +// K8SCronJobUID returns an attribute KeyValue conforming to the +// "k8s.cronjob.uid" semantic conventions. It represents the UID of the CronJob. +func K8SCronJobUID(val string) attribute.KeyValue { + return K8SCronJobUIDKey.String(val) +} + +// K8SDaemonSetName returns an attribute KeyValue conforming to the +// "k8s.daemonset.name" semantic conventions. It represents the name of the +// DaemonSet. +func K8SDaemonSetName(val string) attribute.KeyValue { + return K8SDaemonSetNameKey.String(val) +} + +// K8SDaemonSetUID returns an attribute KeyValue conforming to the +// "k8s.daemonset.uid" semantic conventions. It represents the UID of the +// DaemonSet. +func K8SDaemonSetUID(val string) attribute.KeyValue { + return K8SDaemonSetUIDKey.String(val) +} + +// K8SDeploymentName returns an attribute KeyValue conforming to the +// "k8s.deployment.name" semantic conventions. It represents the name of the +// Deployment. +func K8SDeploymentName(val string) attribute.KeyValue { + return K8SDeploymentNameKey.String(val) +} + +// K8SDeploymentUID returns an attribute KeyValue conforming to the +// "k8s.deployment.uid" semantic conventions. It represents the UID of the +// Deployment. +func K8SDeploymentUID(val string) attribute.KeyValue { + return K8SDeploymentUIDKey.String(val) +} + +// K8SHPAName returns an attribute KeyValue conforming to the "k8s.hpa.name" +// semantic conventions. It represents the name of the horizontal pod autoscaler. +func K8SHPAName(val string) attribute.KeyValue { + return K8SHPANameKey.String(val) +} + +// K8SHPAUID returns an attribute KeyValue conforming to the "k8s.hpa.uid" +// semantic conventions. It represents the UID of the horizontal pod autoscaler. +func K8SHPAUID(val string) attribute.KeyValue { + return K8SHPAUIDKey.String(val) +} + +// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name" +// semantic conventions. It represents the name of the Job. +func K8SJobName(val string) attribute.KeyValue { + return K8SJobNameKey.String(val) +} + +// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid" +// semantic conventions. It represents the UID of the Job. +func K8SJobUID(val string) attribute.KeyValue { + return K8SJobUIDKey.String(val) +} + +// K8SNamespaceName returns an attribute KeyValue conforming to the +// "k8s.namespace.name" semantic conventions. It represents the name of the +// namespace that the pod is running in. +func K8SNamespaceName(val string) attribute.KeyValue { + return K8SNamespaceNameKey.String(val) +} + +// K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name" +// semantic conventions. It represents the name of the Node. +func K8SNodeName(val string) attribute.KeyValue { + return K8SNodeNameKey.String(val) +} + +// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid" +// semantic conventions. It represents the UID of the Node. +func K8SNodeUID(val string) attribute.KeyValue { + return K8SNodeUIDKey.String(val) +} + +// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name" +// semantic conventions. It represents the name of the Pod. +func K8SPodName(val string) attribute.KeyValue { + return K8SPodNameKey.String(val) +} + +// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid" +// semantic conventions. It represents the UID of the Pod. +func K8SPodUID(val string) attribute.KeyValue { + return K8SPodUIDKey.String(val) +} + +// K8SReplicaSetName returns an attribute KeyValue conforming to the +// "k8s.replicaset.name" semantic conventions. It represents the name of the +// ReplicaSet. +func K8SReplicaSetName(val string) attribute.KeyValue { + return K8SReplicaSetNameKey.String(val) +} + +// K8SReplicaSetUID returns an attribute KeyValue conforming to the +// "k8s.replicaset.uid" semantic conventions. It represents the UID of the +// ReplicaSet. +func K8SReplicaSetUID(val string) attribute.KeyValue { + return K8SReplicaSetUIDKey.String(val) +} + +// K8SReplicationControllerName returns an attribute KeyValue conforming to the +// "k8s.replicationcontroller.name" semantic conventions. It represents the name +// of the replication controller. +func K8SReplicationControllerName(val string) attribute.KeyValue { + return K8SReplicationControllerNameKey.String(val) +} + +// K8SReplicationControllerUID returns an attribute KeyValue conforming to the +// "k8s.replicationcontroller.uid" semantic conventions. It represents the UID of +// the replication controller. +func K8SReplicationControllerUID(val string) attribute.KeyValue { + return K8SReplicationControllerUIDKey.String(val) +} + +// K8SResourceQuotaName returns an attribute KeyValue conforming to the +// "k8s.resourcequota.name" semantic conventions. It represents the name of the +// resource quota. +func K8SResourceQuotaName(val string) attribute.KeyValue { + return K8SResourceQuotaNameKey.String(val) +} + +// K8SResourceQuotaUID returns an attribute KeyValue conforming to the +// "k8s.resourcequota.uid" semantic conventions. It represents the UID of the +// resource quota. +func K8SResourceQuotaUID(val string) attribute.KeyValue { + return K8SResourceQuotaUIDKey.String(val) +} + +// K8SStatefulSetName returns an attribute KeyValue conforming to the +// "k8s.statefulset.name" semantic conventions. It represents the name of the +// StatefulSet. +func K8SStatefulSetName(val string) attribute.KeyValue { + return K8SStatefulSetNameKey.String(val) +} + +// K8SStatefulSetUID returns an attribute KeyValue conforming to the +// "k8s.statefulset.uid" semantic conventions. It represents the UID of the +// StatefulSet. +func K8SStatefulSetUID(val string) attribute.KeyValue { + return K8SStatefulSetUIDKey.String(val) +} + +// K8SVolumeName returns an attribute KeyValue conforming to the +// "k8s.volume.name" semantic conventions. It represents the name of the K8s +// volume. +func K8SVolumeName(val string) attribute.KeyValue { + return K8SVolumeNameKey.String(val) +} + +// Enum values for k8s.namespace.phase +var ( + // Active namespace phase as described by [K8s API] + // Stability: development + // + // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase + K8SNamespacePhaseActive = K8SNamespacePhaseKey.String("active") + // Terminating namespace phase as described by [K8s API] + // Stability: development + // + // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase + K8SNamespacePhaseTerminating = K8SNamespacePhaseKey.String("terminating") +) + +// Enum values for k8s.volume.type +var ( + // A [persistentVolumeClaim] volume + // Stability: development + // + // [persistentVolumeClaim]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim + K8SVolumeTypePersistentVolumeClaim = K8SVolumeTypeKey.String("persistentVolumeClaim") + // A [configMap] volume + // Stability: development + // + // [configMap]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap + K8SVolumeTypeConfigMap = K8SVolumeTypeKey.String("configMap") + // A [downwardAPI] volume + // Stability: development + // + // [downwardAPI]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi + K8SVolumeTypeDownwardAPI = K8SVolumeTypeKey.String("downwardAPI") + // An [emptyDir] volume + // Stability: development + // + // [emptyDir]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir + K8SVolumeTypeEmptyDir = K8SVolumeTypeKey.String("emptyDir") + // A [secret] volume + // Stability: development + // + // [secret]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret + K8SVolumeTypeSecret = K8SVolumeTypeKey.String("secret") + // A [local] volume + // Stability: development + // + // [local]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local + K8SVolumeTypeLocal = K8SVolumeTypeKey.String("local") +) + +// Namespace: linux +const ( + // LinuxMemorySlabStateKey is the attribute Key conforming to the + // "linux.memory.slab.state" semantic conventions. It represents the Linux Slab + // memory state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "reclaimable", "unreclaimable" + LinuxMemorySlabStateKey = attribute.Key("linux.memory.slab.state") +) + +// Enum values for linux.memory.slab.state +var ( + // reclaimable + // Stability: development + LinuxMemorySlabStateReclaimable = LinuxMemorySlabStateKey.String("reclaimable") + // unreclaimable + // Stability: development + LinuxMemorySlabStateUnreclaimable = LinuxMemorySlabStateKey.String("unreclaimable") +) + +// Namespace: log +const ( + // LogFileNameKey is the attribute Key conforming to the "log.file.name" + // semantic conventions. It represents the basename of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "audit.log" + LogFileNameKey = attribute.Key("log.file.name") + + // LogFileNameResolvedKey is the attribute Key conforming to the + // "log.file.name_resolved" semantic conventions. It represents the basename of + // the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "uuid.log" + LogFileNameResolvedKey = attribute.Key("log.file.name_resolved") + + // LogFilePathKey is the attribute Key conforming to the "log.file.path" + // semantic conventions. It represents the full path to the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/var/log/mysql/audit.log" + LogFilePathKey = attribute.Key("log.file.path") + + // LogFilePathResolvedKey is the attribute Key conforming to the + // "log.file.path_resolved" semantic conventions. It represents the full path to + // the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/var/lib/docker/uuid.log" + LogFilePathResolvedKey = attribute.Key("log.file.path_resolved") + + // LogIostreamKey is the attribute Key conforming to the "log.iostream" semantic + // conventions. It represents the stream associated with the log. See below for + // a list of well-known values. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + LogIostreamKey = attribute.Key("log.iostream") + + // LogRecordOriginalKey is the attribute Key conforming to the + // "log.record.original" semantic conventions. It represents the complete + // original Log Record. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - + // Something happened", "[INFO] 8/3/24 12:34:56 Something happened" + // Note: This value MAY be added when processing a Log Record which was + // originally transmitted as a string or equivalent data type AND the Body field + // of the Log Record does not contain the same value. (e.g. a syslog or a log + // record read from a file.) + LogRecordOriginalKey = attribute.Key("log.record.original") + + // LogRecordUIDKey is the attribute Key conforming to the "log.record.uid" + // semantic conventions. It represents a unique identifier for the Log Record. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "01ARZ3NDEKTSV4RRFFQ69G5FAV" + // Note: If an id is provided, other log records with the same id will be + // considered duplicates and can be removed safely. This means, that two + // distinguishable log records MUST have different values. + // The id MAY be an + // [Universally Unique Lexicographically Sortable Identifier (ULID)], but other + // identifiers (e.g. UUID) may be used as needed. + // + // [Universally Unique Lexicographically Sortable Identifier (ULID)]: https://github.com/ulid/spec + LogRecordUIDKey = attribute.Key("log.record.uid") +) + +// LogFileName returns an attribute KeyValue conforming to the "log.file.name" +// semantic conventions. It represents the basename of the file. +func LogFileName(val string) attribute.KeyValue { + return LogFileNameKey.String(val) +} + +// LogFileNameResolved returns an attribute KeyValue conforming to the +// "log.file.name_resolved" semantic conventions. It represents the basename of +// the file, with symlinks resolved. +func LogFileNameResolved(val string) attribute.KeyValue { + return LogFileNameResolvedKey.String(val) +} + +// LogFilePath returns an attribute KeyValue conforming to the "log.file.path" +// semantic conventions. It represents the full path to the file. +func LogFilePath(val string) attribute.KeyValue { + return LogFilePathKey.String(val) +} + +// LogFilePathResolved returns an attribute KeyValue conforming to the +// "log.file.path_resolved" semantic conventions. It represents the full path to +// the file, with symlinks resolved. +func LogFilePathResolved(val string) attribute.KeyValue { + return LogFilePathResolvedKey.String(val) +} + +// LogRecordOriginal returns an attribute KeyValue conforming to the +// "log.record.original" semantic conventions. It represents the complete +// original Log Record. +func LogRecordOriginal(val string) attribute.KeyValue { + return LogRecordOriginalKey.String(val) +} + +// LogRecordUID returns an attribute KeyValue conforming to the "log.record.uid" +// semantic conventions. It represents a unique identifier for the Log Record. +func LogRecordUID(val string) attribute.KeyValue { + return LogRecordUIDKey.String(val) +} + +// Enum values for log.iostream +var ( + // Logs from stdout stream + // Stability: development + LogIostreamStdout = LogIostreamKey.String("stdout") + // Events from stderr stream + // Stability: development + LogIostreamStderr = LogIostreamKey.String("stderr") +) + +// Namespace: messaging +const ( + // MessagingBatchMessageCountKey is the attribute Key conforming to the + // "messaging.batch.message_count" semantic conventions. It represents the + // number of messages sent, received, or processed in the scope of the batching + // operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 1, 2 + // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on + // spans that operate with a single message. When a messaging client library + // supports both batch and single-message API for the same operation, + // instrumentations SHOULD use `messaging.batch.message_count` for batching APIs + // and SHOULD NOT use it for single-message APIs. + MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count") + + // MessagingClientIDKey is the attribute Key conforming to the + // "messaging.client.id" semantic conventions. It represents a unique identifier + // for the client that consumes or produces a message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "client-5", "myhost@8742@s8083jm" + MessagingClientIDKey = attribute.Key("messaging.client.id") + + // MessagingConsumerGroupNameKey is the attribute Key conforming to the + // "messaging.consumer.group.name" semantic conventions. It represents the name + // of the consumer group with which a consumer is associated. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-group", "indexer" + // Note: Semantic conventions for individual messaging systems SHOULD document + // whether `messaging.consumer.group.name` is applicable and what it means in + // the context of that system. + MessagingConsumerGroupNameKey = attribute.Key("messaging.consumer.group.name") + + // MessagingDestinationAnonymousKey is the attribute Key conforming to the + // "messaging.destination.anonymous" semantic conventions. It represents a + // boolean that is true if the message destination is anonymous (could be + // unnamed or have auto-generated name). + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous") + + // MessagingDestinationNameKey is the attribute Key conforming to the + // "messaging.destination.name" semantic conventions. It represents the message + // destination name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MyQueue", "MyTopic" + // Note: Destination name SHOULD uniquely identify a specific queue, topic or + // other entity within the broker. If + // the broker doesn't have such notion, the destination name SHOULD uniquely + // identify the broker. + MessagingDestinationNameKey = attribute.Key("messaging.destination.name") + + // MessagingDestinationPartitionIDKey is the attribute Key conforming to the + // "messaging.destination.partition.id" semantic conventions. It represents the + // identifier of the partition messages are sent to or received from, unique + // within the `messaging.destination.name`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id") + + // MessagingDestinationSubscriptionNameKey is the attribute Key conforming to + // the "messaging.destination.subscription.name" semantic conventions. It + // represents the name of the destination subscription from which a message is + // consumed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "subscription-a" + // Note: Semantic conventions for individual messaging systems SHOULD document + // whether `messaging.destination.subscription.name` is applicable and what it + // means in the context of that system. + MessagingDestinationSubscriptionNameKey = attribute.Key("messaging.destination.subscription.name") + + // MessagingDestinationTemplateKey is the attribute Key conforming to the + // "messaging.destination.template" semantic conventions. It represents the low + // cardinality representation of the messaging destination name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/customers/{customerId}" + // Note: Destination names could be constructed from templates. An example would + // be a destination name involving a user name or product id. Although the + // destination name in this case is of high cardinality, the underlying template + // is of low cardinality and can be effectively used for grouping and + // aggregation. + MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template") + + // MessagingDestinationTemporaryKey is the attribute Key conforming to the + // "messaging.destination.temporary" semantic conventions. It represents a + // boolean that is true if the message destination is temporary and might not + // exist anymore after messages are processed. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary") + + // MessagingEventHubsMessageEnqueuedTimeKey is the attribute Key conforming to + // the "messaging.eventhubs.message.enqueued_time" semantic conventions. It + // represents the UTC epoch seconds at which the message has been accepted and + // stored in the entity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingEventHubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time") + + // MessagingGCPPubSubMessageAckDeadlineKey is the attribute Key conforming to + // the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It + // represents the ack deadline in seconds set for the modify ack deadline + // request. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingGCPPubSubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline") + + // MessagingGCPPubSubMessageAckIDKey is the attribute Key conforming to the + // "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the + // ack id for a given message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: ack_id + MessagingGCPPubSubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id") + + // MessagingGCPPubSubMessageDeliveryAttemptKey is the attribute Key conforming + // to the "messaging.gcp_pubsub.message.delivery_attempt" semantic conventions. + // It represents the delivery attempt for a given message. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingGCPPubSubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt") + + // MessagingGCPPubSubMessageOrderingKeyKey is the attribute Key conforming to + // the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It + // represents the ordering key for a given message. If the attribute is not + // present, the message does not have an ordering key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: ordering_key + MessagingGCPPubSubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key") + + // MessagingKafkaMessageKeyKey is the attribute Key conforming to the + // "messaging.kafka.message.key" semantic conventions. It represents the message + // keys in Kafka are used for grouping alike messages to ensure they're + // processed on the same partition. They differ from `messaging.message.id` in + // that they're not unique. If the key is `null`, the attribute MUST NOT be set. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myKey + // Note: If the key type is not string, it's string representation has to be + // supplied for the attribute. If the key has no unambiguous, canonical string + // form, don't include its value. + MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key") + + // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the + // "messaging.kafka.message.tombstone" semantic conventions. It represents a + // boolean that is true if the message is a tombstone. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone") + + // MessagingKafkaOffsetKey is the attribute Key conforming to the + // "messaging.kafka.offset" semantic conventions. It represents the offset of a + // record in the corresponding Kafka partition. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingKafkaOffsetKey = attribute.Key("messaging.kafka.offset") + + // MessagingMessageBodySizeKey is the attribute Key conforming to the + // "messaging.message.body.size" semantic conventions. It represents the size of + // the message body in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: This can refer to both the compressed or uncompressed body size. If + // both sizes are known, the uncompressed + // body size should be used. + MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size") + + // MessagingMessageConversationIDKey is the attribute Key conforming to the + // "messaging.message.conversation_id" semantic conventions. It represents the + // conversation ID identifying the conversation to which the message belongs, + // represented as a string. Sometimes called "Correlation ID". + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: MyConversationId + MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id") + + // MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the + // "messaging.message.envelope.size" semantic conventions. It represents the + // size of the message body and metadata in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: This can refer to both the compressed or uncompressed size. If both + // sizes are known, the uncompressed + // size should be used. + MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size") + + // MessagingMessageIDKey is the attribute Key conforming to the + // "messaging.message.id" semantic conventions. It represents a value used by + // the messaging system as an identifier for the message, represented as a + // string. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 452a7c7c7c7048c2f887f61572b18fc2 + MessagingMessageIDKey = attribute.Key("messaging.message.id") + + // MessagingOperationNameKey is the attribute Key conforming to the + // "messaging.operation.name" semantic conventions. It represents the + // system-specific name of the messaging operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ack", "nack", "send" + MessagingOperationNameKey = attribute.Key("messaging.operation.name") + + // MessagingOperationTypeKey is the attribute Key conforming to the + // "messaging.operation.type" semantic conventions. It represents a string + // identifying the type of the messaging operation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: If a custom value is used, it MUST be of low cardinality. + MessagingOperationTypeKey = attribute.Key("messaging.operation.type") + + // MessagingRabbitMQDestinationRoutingKeyKey is the attribute Key conforming to + // the "messaging.rabbitmq.destination.routing_key" semantic conventions. It + // represents the rabbitMQ message routing key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myKey + MessagingRabbitMQDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key") + + // MessagingRabbitMQMessageDeliveryTagKey is the attribute Key conforming to the + // "messaging.rabbitmq.message.delivery_tag" semantic conventions. It represents + // the rabbitMQ message delivery tag. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRabbitMQMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag") + + // MessagingRocketMQConsumptionModelKey is the attribute Key conforming to the + // "messaging.rocketmq.consumption_model" semantic conventions. It represents + // the model of message consumption. This only applies to consumer spans. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingRocketMQConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model") + + // MessagingRocketMQMessageDelayTimeLevelKey is the attribute Key conforming to + // the "messaging.rocketmq.message.delay_time_level" semantic conventions. It + // represents the delay time level for delay message, which determines the + // message delay time. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRocketMQMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level") + + // MessagingRocketMQMessageDeliveryTimestampKey is the attribute Key conforming + // to the "messaging.rocketmq.message.delivery_timestamp" semantic conventions. + // It represents the timestamp in milliseconds that the delay message is + // expected to be delivered to consumer. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRocketMQMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp") + + // MessagingRocketMQMessageGroupKey is the attribute Key conforming to the + // "messaging.rocketmq.message.group" semantic conventions. It represents the it + // is essential for FIFO message. Messages that belong to the same message group + // are always processed one by one within the same consumer group. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myMessageGroup + MessagingRocketMQMessageGroupKey = attribute.Key("messaging.rocketmq.message.group") + + // MessagingRocketMQMessageKeysKey is the attribute Key conforming to the + // "messaging.rocketmq.message.keys" semantic conventions. It represents the + // key(s) of message, another way to mark message besides message id. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "keyA", "keyB" + MessagingRocketMQMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys") + + // MessagingRocketMQMessageTagKey is the attribute Key conforming to the + // "messaging.rocketmq.message.tag" semantic conventions. It represents the + // secondary classifier of message besides topic. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: tagA + MessagingRocketMQMessageTagKey = attribute.Key("messaging.rocketmq.message.tag") + + // MessagingRocketMQMessageTypeKey is the attribute Key conforming to the + // "messaging.rocketmq.message.type" semantic conventions. It represents the + // type of message. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingRocketMQMessageTypeKey = attribute.Key("messaging.rocketmq.message.type") + + // MessagingRocketMQNamespaceKey is the attribute Key conforming to the + // "messaging.rocketmq.namespace" semantic conventions. It represents the + // namespace of RocketMQ resources, resources in different namespaces are + // individual. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myNamespace + MessagingRocketMQNamespaceKey = attribute.Key("messaging.rocketmq.namespace") + + // MessagingServiceBusDispositionStatusKey is the attribute Key conforming to + // the "messaging.servicebus.disposition_status" semantic conventions. It + // represents the describes the [settlement type]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [settlement type]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock + MessagingServiceBusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status") + + // MessagingServiceBusMessageDeliveryCountKey is the attribute Key conforming to + // the "messaging.servicebus.message.delivery_count" semantic conventions. It + // represents the number of deliveries that have been attempted for this + // message. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingServiceBusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count") + + // MessagingServiceBusMessageEnqueuedTimeKey is the attribute Key conforming to + // the "messaging.servicebus.message.enqueued_time" semantic conventions. It + // represents the UTC epoch seconds at which the message has been accepted and + // stored in the entity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingServiceBusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time") + + // MessagingSystemKey is the attribute Key conforming to the "messaging.system" + // semantic conventions. It represents the messaging system as identified by the + // client instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The actual messaging system may differ from the one known by the + // client. For example, when using Kafka client libraries to communicate with + // Azure Event Hubs, the `messaging.system` is set to `kafka` based on the + // instrumentation's best knowledge. + MessagingSystemKey = attribute.Key("messaging.system") +) + +// MessagingBatchMessageCount returns an attribute KeyValue conforming to the +// "messaging.batch.message_count" semantic conventions. It represents the number +// of messages sent, received, or processed in the scope of the batching +// operation. +func MessagingBatchMessageCount(val int) attribute.KeyValue { + return MessagingBatchMessageCountKey.Int(val) +} + +// MessagingClientID returns an attribute KeyValue conforming to the +// "messaging.client.id" semantic conventions. It represents a unique identifier +// for the client that consumes or produces a message. +func MessagingClientID(val string) attribute.KeyValue { + return MessagingClientIDKey.String(val) +} + +// MessagingConsumerGroupName returns an attribute KeyValue conforming to the +// "messaging.consumer.group.name" semantic conventions. It represents the name +// of the consumer group with which a consumer is associated. +func MessagingConsumerGroupName(val string) attribute.KeyValue { + return MessagingConsumerGroupNameKey.String(val) +} + +// MessagingDestinationAnonymous returns an attribute KeyValue conforming to the +// "messaging.destination.anonymous" semantic conventions. It represents a +// boolean that is true if the message destination is anonymous (could be unnamed +// or have auto-generated name). +func MessagingDestinationAnonymous(val bool) attribute.KeyValue { + return MessagingDestinationAnonymousKey.Bool(val) +} + +// MessagingDestinationName returns an attribute KeyValue conforming to the +// "messaging.destination.name" semantic conventions. It represents the message +// destination name. +func MessagingDestinationName(val string) attribute.KeyValue { + return MessagingDestinationNameKey.String(val) +} + +// MessagingDestinationPartitionID returns an attribute KeyValue conforming to +// the "messaging.destination.partition.id" semantic conventions. It represents +// the identifier of the partition messages are sent to or received from, unique +// within the `messaging.destination.name`. +func MessagingDestinationPartitionID(val string) attribute.KeyValue { + return MessagingDestinationPartitionIDKey.String(val) +} + +// MessagingDestinationSubscriptionName returns an attribute KeyValue conforming +// to the "messaging.destination.subscription.name" semantic conventions. It +// represents the name of the destination subscription from which a message is +// consumed. +func MessagingDestinationSubscriptionName(val string) attribute.KeyValue { + return MessagingDestinationSubscriptionNameKey.String(val) +} + +// MessagingDestinationTemplate returns an attribute KeyValue conforming to the +// "messaging.destination.template" semantic conventions. It represents the low +// cardinality representation of the messaging destination name. +func MessagingDestinationTemplate(val string) attribute.KeyValue { + return MessagingDestinationTemplateKey.String(val) +} + +// MessagingDestinationTemporary returns an attribute KeyValue conforming to the +// "messaging.destination.temporary" semantic conventions. It represents a +// boolean that is true if the message destination is temporary and might not +// exist anymore after messages are processed. +func MessagingDestinationTemporary(val bool) attribute.KeyValue { + return MessagingDestinationTemporaryKey.Bool(val) +} + +// MessagingEventHubsMessageEnqueuedTime returns an attribute KeyValue conforming +// to the "messaging.eventhubs.message.enqueued_time" semantic conventions. It +// represents the UTC epoch seconds at which the message has been accepted and +// stored in the entity. +func MessagingEventHubsMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingEventHubsMessageEnqueuedTimeKey.Int(val) +} + +// MessagingGCPPubSubMessageAckDeadline returns an attribute KeyValue conforming +// to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It +// represents the ack deadline in seconds set for the modify ack deadline +// request. +func MessagingGCPPubSubMessageAckDeadline(val int) attribute.KeyValue { + return MessagingGCPPubSubMessageAckDeadlineKey.Int(val) +} + +// MessagingGCPPubSubMessageAckID returns an attribute KeyValue conforming to the +// "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the +// ack id for a given message. +func MessagingGCPPubSubMessageAckID(val string) attribute.KeyValue { + return MessagingGCPPubSubMessageAckIDKey.String(val) +} + +// MessagingGCPPubSubMessageDeliveryAttempt returns an attribute KeyValue +// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic +// conventions. It represents the delivery attempt for a given message. +func MessagingGCPPubSubMessageDeliveryAttempt(val int) attribute.KeyValue { + return MessagingGCPPubSubMessageDeliveryAttemptKey.Int(val) +} + +// MessagingGCPPubSubMessageOrderingKey returns an attribute KeyValue conforming +// to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It +// represents the ordering key for a given message. If the attribute is not +// present, the message does not have an ordering key. +func MessagingGCPPubSubMessageOrderingKey(val string) attribute.KeyValue { + return MessagingGCPPubSubMessageOrderingKeyKey.String(val) +} + +// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the +// "messaging.kafka.message.key" semantic conventions. It represents the message +// keys in Kafka are used for grouping alike messages to ensure they're processed +// on the same partition. They differ from `messaging.message.id` in that they're +// not unique. If the key is `null`, the attribute MUST NOT be set. +func MessagingKafkaMessageKey(val string) attribute.KeyValue { + return MessagingKafkaMessageKeyKey.String(val) +} + +// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming to the +// "messaging.kafka.message.tombstone" semantic conventions. It represents a +// boolean that is true if the message is a tombstone. +func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue { + return MessagingKafkaMessageTombstoneKey.Bool(val) +} + +// MessagingKafkaOffset returns an attribute KeyValue conforming to the +// "messaging.kafka.offset" semantic conventions. It represents the offset of a +// record in the corresponding Kafka partition. +func MessagingKafkaOffset(val int) attribute.KeyValue { + return MessagingKafkaOffsetKey.Int(val) +} + +// MessagingMessageBodySize returns an attribute KeyValue conforming to the +// "messaging.message.body.size" semantic conventions. It represents the size of +// the message body in bytes. +func MessagingMessageBodySize(val int) attribute.KeyValue { + return MessagingMessageBodySizeKey.Int(val) +} + +// MessagingMessageConversationID returns an attribute KeyValue conforming to the +// "messaging.message.conversation_id" semantic conventions. It represents the +// conversation ID identifying the conversation to which the message belongs, +// represented as a string. Sometimes called "Correlation ID". +func MessagingMessageConversationID(val string) attribute.KeyValue { + return MessagingMessageConversationIDKey.String(val) +} + +// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to the +// "messaging.message.envelope.size" semantic conventions. It represents the size +// of the message body and metadata in bytes. +func MessagingMessageEnvelopeSize(val int) attribute.KeyValue { + return MessagingMessageEnvelopeSizeKey.Int(val) +} + +// MessagingMessageID returns an attribute KeyValue conforming to the +// "messaging.message.id" semantic conventions. It represents a value used by the +// messaging system as an identifier for the message, represented as a string. +func MessagingMessageID(val string) attribute.KeyValue { + return MessagingMessageIDKey.String(val) +} + +// MessagingOperationName returns an attribute KeyValue conforming to the +// "messaging.operation.name" semantic conventions. It represents the +// system-specific name of the messaging operation. +func MessagingOperationName(val string) attribute.KeyValue { + return MessagingOperationNameKey.String(val) +} + +// MessagingRabbitMQDestinationRoutingKey returns an attribute KeyValue +// conforming to the "messaging.rabbitmq.destination.routing_key" semantic +// conventions. It represents the rabbitMQ message routing key. +func MessagingRabbitMQDestinationRoutingKey(val string) attribute.KeyValue { + return MessagingRabbitMQDestinationRoutingKeyKey.String(val) +} + +// MessagingRabbitMQMessageDeliveryTag returns an attribute KeyValue conforming +// to the "messaging.rabbitmq.message.delivery_tag" semantic conventions. It +// represents the rabbitMQ message delivery tag. +func MessagingRabbitMQMessageDeliveryTag(val int) attribute.KeyValue { + return MessagingRabbitMQMessageDeliveryTagKey.Int(val) +} + +// MessagingRocketMQMessageDelayTimeLevel returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delay_time_level" semantic +// conventions. It represents the delay time level for delay message, which +// determines the message delay time. +func MessagingRocketMQMessageDelayTimeLevel(val int) attribute.KeyValue { + return MessagingRocketMQMessageDelayTimeLevelKey.Int(val) +} + +// MessagingRocketMQMessageDeliveryTimestamp returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic +// conventions. It represents the timestamp in milliseconds that the delay +// message is expected to be delivered to consumer. +func MessagingRocketMQMessageDeliveryTimestamp(val int) attribute.KeyValue { + return MessagingRocketMQMessageDeliveryTimestampKey.Int(val) +} + +// MessagingRocketMQMessageGroup returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.group" semantic conventions. It represents the it +// is essential for FIFO message. Messages that belong to the same message group +// are always processed one by one within the same consumer group. +func MessagingRocketMQMessageGroup(val string) attribute.KeyValue { + return MessagingRocketMQMessageGroupKey.String(val) +} + +// MessagingRocketMQMessageKeys returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.keys" semantic conventions. It represents the +// key(s) of message, another way to mark message besides message id. +func MessagingRocketMQMessageKeys(val ...string) attribute.KeyValue { + return MessagingRocketMQMessageKeysKey.StringSlice(val) +} + +// MessagingRocketMQMessageTag returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.tag" semantic conventions. It represents the +// secondary classifier of message besides topic. +func MessagingRocketMQMessageTag(val string) attribute.KeyValue { + return MessagingRocketMQMessageTagKey.String(val) +} + +// MessagingRocketMQNamespace returns an attribute KeyValue conforming to the +// "messaging.rocketmq.namespace" semantic conventions. It represents the +// namespace of RocketMQ resources, resources in different namespaces are +// individual. +func MessagingRocketMQNamespace(val string) attribute.KeyValue { + return MessagingRocketMQNamespaceKey.String(val) +} + +// MessagingServiceBusMessageDeliveryCount returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.delivery_count" semantic +// conventions. It represents the number of deliveries that have been attempted +// for this message. +func MessagingServiceBusMessageDeliveryCount(val int) attribute.KeyValue { + return MessagingServiceBusMessageDeliveryCountKey.Int(val) +} + +// MessagingServiceBusMessageEnqueuedTime returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.enqueued_time" semantic +// conventions. It represents the UTC epoch seconds at which the message has been +// accepted and stored in the entity. +func MessagingServiceBusMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingServiceBusMessageEnqueuedTimeKey.Int(val) +} + +// Enum values for messaging.operation.type +var ( + // A message is created. "Create" spans always refer to a single message and are + // used to provide a unique creation context for messages in batch sending + // scenarios. + // + // Stability: development + MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create") + // One or more messages are provided for sending to an intermediary. If a single + // message is sent, the context of the "Send" span can be used as the creation + // context and no "Create" span needs to be created. + // + // Stability: development + MessagingOperationTypeSend = MessagingOperationTypeKey.String("send") + // One or more messages are requested by a consumer. This operation refers to + // pull-based scenarios, where consumers explicitly call methods of messaging + // SDKs to receive messages. + // + // Stability: development + MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive") + // One or more messages are processed by a consumer. + // + // Stability: development + MessagingOperationTypeProcess = MessagingOperationTypeKey.String("process") + // One or more messages are settled. + // + // Stability: development + MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle") + // Deprecated: Replaced by `process`. + MessagingOperationTypeDeliver = MessagingOperationTypeKey.String("deliver") + // Deprecated: Replaced by `send`. + MessagingOperationTypePublish = MessagingOperationTypeKey.String("publish") +) + +// Enum values for messaging.rocketmq.consumption_model +var ( + // Clustering consumption model + // Stability: development + MessagingRocketMQConsumptionModelClustering = MessagingRocketMQConsumptionModelKey.String("clustering") + // Broadcasting consumption model + // Stability: development + MessagingRocketMQConsumptionModelBroadcasting = MessagingRocketMQConsumptionModelKey.String("broadcasting") +) + +// Enum values for messaging.rocketmq.message.type +var ( + // Normal message + // Stability: development + MessagingRocketMQMessageTypeNormal = MessagingRocketMQMessageTypeKey.String("normal") + // FIFO message + // Stability: development + MessagingRocketMQMessageTypeFifo = MessagingRocketMQMessageTypeKey.String("fifo") + // Delay message + // Stability: development + MessagingRocketMQMessageTypeDelay = MessagingRocketMQMessageTypeKey.String("delay") + // Transaction message + // Stability: development + MessagingRocketMQMessageTypeTransaction = MessagingRocketMQMessageTypeKey.String("transaction") +) + +// Enum values for messaging.servicebus.disposition_status +var ( + // Message is completed + // Stability: development + MessagingServiceBusDispositionStatusComplete = MessagingServiceBusDispositionStatusKey.String("complete") + // Message is abandoned + // Stability: development + MessagingServiceBusDispositionStatusAbandon = MessagingServiceBusDispositionStatusKey.String("abandon") + // Message is sent to dead letter queue + // Stability: development + MessagingServiceBusDispositionStatusDeadLetter = MessagingServiceBusDispositionStatusKey.String("dead_letter") + // Message is deferred + // Stability: development + MessagingServiceBusDispositionStatusDefer = MessagingServiceBusDispositionStatusKey.String("defer") +) + +// Enum values for messaging.system +var ( + // Apache ActiveMQ + // Stability: development + MessagingSystemActiveMQ = MessagingSystemKey.String("activemq") + // Amazon Simple Queue Service (SQS) + // Stability: development + MessagingSystemAWSSQS = MessagingSystemKey.String("aws_sqs") + // Azure Event Grid + // Stability: development + MessagingSystemEventGrid = MessagingSystemKey.String("eventgrid") + // Azure Event Hubs + // Stability: development + MessagingSystemEventHubs = MessagingSystemKey.String("eventhubs") + // Azure Service Bus + // Stability: development + MessagingSystemServiceBus = MessagingSystemKey.String("servicebus") + // Google Cloud Pub/Sub + // Stability: development + MessagingSystemGCPPubSub = MessagingSystemKey.String("gcp_pubsub") + // Java Message Service + // Stability: development + MessagingSystemJMS = MessagingSystemKey.String("jms") + // Apache Kafka + // Stability: development + MessagingSystemKafka = MessagingSystemKey.String("kafka") + // RabbitMQ + // Stability: development + MessagingSystemRabbitMQ = MessagingSystemKey.String("rabbitmq") + // Apache RocketMQ + // Stability: development + MessagingSystemRocketMQ = MessagingSystemKey.String("rocketmq") + // Apache Pulsar + // Stability: development + MessagingSystemPulsar = MessagingSystemKey.String("pulsar") +) + +// Namespace: network +const ( + // NetworkCarrierICCKey is the attribute Key conforming to the + // "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 + // alpha-2 2-character country code associated with the mobile carrier network. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: DE + NetworkCarrierICCKey = attribute.Key("network.carrier.icc") + + // NetworkCarrierMCCKey is the attribute Key conforming to the + // "network.carrier.mcc" semantic conventions. It represents the mobile carrier + // country code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 310 + NetworkCarrierMCCKey = attribute.Key("network.carrier.mcc") + + // NetworkCarrierMNCKey is the attribute Key conforming to the + // "network.carrier.mnc" semantic conventions. It represents the mobile carrier + // network code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 001 + NetworkCarrierMNCKey = attribute.Key("network.carrier.mnc") + + // NetworkCarrierNameKey is the attribute Key conforming to the + // "network.carrier.name" semantic conventions. It represents the name of the + // mobile carrier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: sprint + NetworkCarrierNameKey = attribute.Key("network.carrier.name") + + // NetworkConnectionStateKey is the attribute Key conforming to the + // "network.connection.state" semantic conventions. It represents the state of + // network connection. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "close_wait" + // Note: Connection states are defined as part of the [rfc9293] + // + // [rfc9293]: https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2 + NetworkConnectionStateKey = attribute.Key("network.connection.state") + + // NetworkConnectionSubtypeKey is the attribute Key conforming to the + // "network.connection.subtype" semantic conventions. It represents the this + // describes more details regarding the connection.type. It may be the type of + // cell technology connection, but it could be used for describing details about + // a wifi connection. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: LTE + NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype") + + // NetworkConnectionTypeKey is the attribute Key conforming to the + // "network.connection.type" semantic conventions. It represents the internet + // connection type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: wifi + NetworkConnectionTypeKey = attribute.Key("network.connection.type") + + // NetworkInterfaceNameKey is the attribute Key conforming to the + // "network.interface.name" semantic conventions. It represents the network + // interface name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "lo", "eth0" + NetworkInterfaceNameKey = attribute.Key("network.interface.name") + + // NetworkIODirectionKey is the attribute Key conforming to the + // "network.io.direction" semantic conventions. It represents the network IO + // operation direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "transmit" + NetworkIODirectionKey = attribute.Key("network.io.direction") + + // NetworkLocalAddressKey is the attribute Key conforming to the + // "network.local.address" semantic conventions. It represents the local address + // of the network connection - IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "10.1.2.80", "/tmp/my.sock" + NetworkLocalAddressKey = attribute.Key("network.local.address") + + // NetworkLocalPortKey is the attribute Key conforming to the + // "network.local.port" semantic conventions. It represents the local port + // number of the network connection. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + NetworkLocalPortKey = attribute.Key("network.local.port") + + // NetworkPeerAddressKey is the attribute Key conforming to the + // "network.peer.address" semantic conventions. It represents the peer address + // of the network connection - IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "10.1.2.80", "/tmp/my.sock" + NetworkPeerAddressKey = attribute.Key("network.peer.address") + + // NetworkPeerPortKey is the attribute Key conforming to the "network.peer.port" + // semantic conventions. It represents the peer port number of the network + // connection. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + NetworkPeerPortKey = attribute.Key("network.peer.port") + + // NetworkProtocolNameKey is the attribute Key conforming to the + // "network.protocol.name" semantic conventions. It represents the + // [OSI application layer] or non-OSI equivalent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "amqp", "http", "mqtt" + // Note: The value SHOULD be normalized to lowercase. + // + // [OSI application layer]: https://wikipedia.org/wiki/Application_layer + NetworkProtocolNameKey = attribute.Key("network.protocol.name") + + // NetworkProtocolVersionKey is the attribute Key conforming to the + // "network.protocol.version" semantic conventions. It represents the actual + // version of the protocol used for network communication. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.1", "2" + // Note: If protocol version is subject to negotiation (for example using [ALPN] + // ), this attribute SHOULD be set to the negotiated version. If the actual + // protocol version is not known, this attribute SHOULD NOT be set. + // + // [ALPN]: https://www.rfc-editor.org/rfc/rfc7301.html + NetworkProtocolVersionKey = attribute.Key("network.protocol.version") + + // NetworkTransportKey is the attribute Key conforming to the + // "network.transport" semantic conventions. It represents the + // [OSI transport layer] or [inter-process communication method]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "tcp", "udp" + // Note: The value SHOULD be normalized to lowercase. + // + // Consider always setting the transport when setting a port number, since + // a port number is ambiguous without knowing the transport. For example + // different processes could be listening on TCP port 12345 and UDP port 12345. + // + // [OSI transport layer]: https://wikipedia.org/wiki/Transport_layer + // [inter-process communication method]: https://wikipedia.org/wiki/Inter-process_communication + NetworkTransportKey = attribute.Key("network.transport") + + // NetworkTypeKey is the attribute Key conforming to the "network.type" semantic + // conventions. It represents the [OSI network layer] or non-OSI equivalent. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "ipv4", "ipv6" + // Note: The value SHOULD be normalized to lowercase. + // + // [OSI network layer]: https://wikipedia.org/wiki/Network_layer + NetworkTypeKey = attribute.Key("network.type") +) + +// NetworkCarrierICC returns an attribute KeyValue conforming to the +// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 +// alpha-2 2-character country code associated with the mobile carrier network. +func NetworkCarrierICC(val string) attribute.KeyValue { + return NetworkCarrierICCKey.String(val) +} + +// NetworkCarrierMCC returns an attribute KeyValue conforming to the +// "network.carrier.mcc" semantic conventions. It represents the mobile carrier +// country code. +func NetworkCarrierMCC(val string) attribute.KeyValue { + return NetworkCarrierMCCKey.String(val) +} + +// NetworkCarrierMNC returns an attribute KeyValue conforming to the +// "network.carrier.mnc" semantic conventions. It represents the mobile carrier +// network code. +func NetworkCarrierMNC(val string) attribute.KeyValue { + return NetworkCarrierMNCKey.String(val) +} + +// NetworkCarrierName returns an attribute KeyValue conforming to the +// "network.carrier.name" semantic conventions. It represents the name of the +// mobile carrier. +func NetworkCarrierName(val string) attribute.KeyValue { + return NetworkCarrierNameKey.String(val) +} + +// NetworkInterfaceName returns an attribute KeyValue conforming to the +// "network.interface.name" semantic conventions. It represents the network +// interface name. +func NetworkInterfaceName(val string) attribute.KeyValue { + return NetworkInterfaceNameKey.String(val) +} + +// NetworkLocalAddress returns an attribute KeyValue conforming to the +// "network.local.address" semantic conventions. It represents the local address +// of the network connection - IP address or Unix domain socket name. +func NetworkLocalAddress(val string) attribute.KeyValue { + return NetworkLocalAddressKey.String(val) +} + +// NetworkLocalPort returns an attribute KeyValue conforming to the +// "network.local.port" semantic conventions. It represents the local port number +// of the network connection. +func NetworkLocalPort(val int) attribute.KeyValue { + return NetworkLocalPortKey.Int(val) +} + +// NetworkPeerAddress returns an attribute KeyValue conforming to the +// "network.peer.address" semantic conventions. It represents the peer address of +// the network connection - IP address or Unix domain socket name. +func NetworkPeerAddress(val string) attribute.KeyValue { + return NetworkPeerAddressKey.String(val) +} + +// NetworkPeerPort returns an attribute KeyValue conforming to the +// "network.peer.port" semantic conventions. It represents the peer port number +// of the network connection. +func NetworkPeerPort(val int) attribute.KeyValue { + return NetworkPeerPortKey.Int(val) +} + +// NetworkProtocolName returns an attribute KeyValue conforming to the +// "network.protocol.name" semantic conventions. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func NetworkProtocolName(val string) attribute.KeyValue { + return NetworkProtocolNameKey.String(val) +} + +// NetworkProtocolVersion returns an attribute KeyValue conforming to the +// "network.protocol.version" semantic conventions. It represents the actual +// version of the protocol used for network communication. +func NetworkProtocolVersion(val string) attribute.KeyValue { + return NetworkProtocolVersionKey.String(val) +} + +// Enum values for network.connection.state +var ( + // closed + // Stability: development + NetworkConnectionStateClosed = NetworkConnectionStateKey.String("closed") + // close_wait + // Stability: development + NetworkConnectionStateCloseWait = NetworkConnectionStateKey.String("close_wait") + // closing + // Stability: development + NetworkConnectionStateClosing = NetworkConnectionStateKey.String("closing") + // established + // Stability: development + NetworkConnectionStateEstablished = NetworkConnectionStateKey.String("established") + // fin_wait_1 + // Stability: development + NetworkConnectionStateFinWait1 = NetworkConnectionStateKey.String("fin_wait_1") + // fin_wait_2 + // Stability: development + NetworkConnectionStateFinWait2 = NetworkConnectionStateKey.String("fin_wait_2") + // last_ack + // Stability: development + NetworkConnectionStateLastAck = NetworkConnectionStateKey.String("last_ack") + // listen + // Stability: development + NetworkConnectionStateListen = NetworkConnectionStateKey.String("listen") + // syn_received + // Stability: development + NetworkConnectionStateSynReceived = NetworkConnectionStateKey.String("syn_received") + // syn_sent + // Stability: development + NetworkConnectionStateSynSent = NetworkConnectionStateKey.String("syn_sent") + // time_wait + // Stability: development + NetworkConnectionStateTimeWait = NetworkConnectionStateKey.String("time_wait") +) + +// Enum values for network.connection.subtype +var ( + // GPRS + // Stability: development + NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs") + // EDGE + // Stability: development + NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge") + // UMTS + // Stability: development + NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts") + // CDMA + // Stability: development + NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma") + // EVDO Rel. 0 + // Stability: development + NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0") + // EVDO Rev. A + // Stability: development + NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a") + // CDMA2000 1XRTT + // Stability: development + NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt") + // HSDPA + // Stability: development + NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa") + // HSUPA + // Stability: development + NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa") + // HSPA + // Stability: development + NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa") + // IDEN + // Stability: development + NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden") + // EVDO Rev. B + // Stability: development + NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b") + // LTE + // Stability: development + NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte") + // EHRPD + // Stability: development + NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd") + // HSPAP + // Stability: development + NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap") + // GSM + // Stability: development + NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm") + // TD-SCDMA + // Stability: development + NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma") + // IWLAN + // Stability: development + NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan") + // 5G NR (New Radio) + // Stability: development + NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr") + // 5G NRNSA (New Radio Non-Standalone) + // Stability: development + NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa") + // LTE CA + // Stability: development + NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca") +) + +// Enum values for network.connection.type +var ( + // wifi + // Stability: development + NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi") + // wired + // Stability: development + NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired") + // cell + // Stability: development + NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell") + // unavailable + // Stability: development + NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable") + // unknown + // Stability: development + NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown") +) + +// Enum values for network.io.direction +var ( + // transmit + // Stability: development + NetworkIODirectionTransmit = NetworkIODirectionKey.String("transmit") + // receive + // Stability: development + NetworkIODirectionReceive = NetworkIODirectionKey.String("receive") +) + +// Enum values for network.transport +var ( + // TCP + // Stability: stable + NetworkTransportTCP = NetworkTransportKey.String("tcp") + // UDP + // Stability: stable + NetworkTransportUDP = NetworkTransportKey.String("udp") + // Named or anonymous pipe. + // Stability: stable + NetworkTransportPipe = NetworkTransportKey.String("pipe") + // Unix domain socket + // Stability: stable + NetworkTransportUnix = NetworkTransportKey.String("unix") + // QUIC + // Stability: stable + NetworkTransportQUIC = NetworkTransportKey.String("quic") +) + +// Enum values for network.type +var ( + // IPv4 + // Stability: stable + NetworkTypeIPv4 = NetworkTypeKey.String("ipv4") + // IPv6 + // Stability: stable + NetworkTypeIPv6 = NetworkTypeKey.String("ipv6") +) + +// Namespace: oci +const ( + // OCIManifestDigestKey is the attribute Key conforming to the + // "oci.manifest.digest" semantic conventions. It represents the digest of the + // OCI image manifest. For container images specifically is the digest by which + // the container image is known. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4" + // Note: Follows [OCI Image Manifest Specification], and specifically the + // [Digest property]. + // An example can be found in [Example Image Manifest]. + // + // [OCI Image Manifest Specification]: https://github.com/opencontainers/image-spec/blob/main/manifest.md + // [Digest property]: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests + // [Example Image Manifest]: https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest + OCIManifestDigestKey = attribute.Key("oci.manifest.digest") +) + +// OCIManifestDigest returns an attribute KeyValue conforming to the +// "oci.manifest.digest" semantic conventions. It represents the digest of the +// OCI image manifest. For container images specifically is the digest by which +// the container image is known. +func OCIManifestDigest(val string) attribute.KeyValue { + return OCIManifestDigestKey.String(val) +} + +// Namespace: opentracing +const ( + // OpenTracingRefTypeKey is the attribute Key conforming to the + // "opentracing.ref_type" semantic conventions. It represents the parent-child + // Reference type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The causal relationship between a child Span and a parent Span. + OpenTracingRefTypeKey = attribute.Key("opentracing.ref_type") +) + +// Enum values for opentracing.ref_type +var ( + // The parent Span depends on the child Span in some capacity + // Stability: development + OpenTracingRefTypeChildOf = OpenTracingRefTypeKey.String("child_of") + // The parent Span doesn't depend in any way on the result of the child Span + // Stability: development + OpenTracingRefTypeFollowsFrom = OpenTracingRefTypeKey.String("follows_from") +) + +// Namespace: os +const ( + // OSBuildIDKey is the attribute Key conforming to the "os.build_id" semantic + // conventions. It represents the unique identifier for a particular build or + // compilation of the operating system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TQ3C.230805.001.B2", "20E247", "22621" + OSBuildIDKey = attribute.Key("os.build_id") + + // OSDescriptionKey is the attribute Key conforming to the "os.description" + // semantic conventions. It represents the human readable (not intended to be + // parsed) OS version information, like e.g. reported by `ver` or + // `lsb_release -a` commands. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Microsoft Windows [Version 10.0.18363.778]", "Ubuntu 18.04.1 LTS" + OSDescriptionKey = attribute.Key("os.description") + + // OSNameKey is the attribute Key conforming to the "os.name" semantic + // conventions. It represents the human readable operating system name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iOS", "Android", "Ubuntu" + OSNameKey = attribute.Key("os.name") + + // OSTypeKey is the attribute Key conforming to the "os.type" semantic + // conventions. It represents the operating system type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + OSTypeKey = attribute.Key("os.type") + + // OSVersionKey is the attribute Key conforming to the "os.version" semantic + // conventions. It represents the version string of the operating system as + // defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.2.1", "18.04.1" + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + OSVersionKey = attribute.Key("os.version") +) + +// OSBuildID returns an attribute KeyValue conforming to the "os.build_id" +// semantic conventions. It represents the unique identifier for a particular +// build or compilation of the operating system. +func OSBuildID(val string) attribute.KeyValue { + return OSBuildIDKey.String(val) +} + +// OSDescription returns an attribute KeyValue conforming to the "os.description" +// semantic conventions. It represents the human readable (not intended to be +// parsed) OS version information, like e.g. reported by `ver` or +// `lsb_release -a` commands. +func OSDescription(val string) attribute.KeyValue { + return OSDescriptionKey.String(val) +} + +// OSName returns an attribute KeyValue conforming to the "os.name" semantic +// conventions. It represents the human readable operating system name. +func OSName(val string) attribute.KeyValue { + return OSNameKey.String(val) +} + +// OSVersion returns an attribute KeyValue conforming to the "os.version" +// semantic conventions. It represents the version string of the operating system +// as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func OSVersion(val string) attribute.KeyValue { + return OSVersionKey.String(val) +} + +// Enum values for os.type +var ( + // Microsoft Windows + // Stability: development + OSTypeWindows = OSTypeKey.String("windows") + // Linux + // Stability: development + OSTypeLinux = OSTypeKey.String("linux") + // Apple Darwin + // Stability: development + OSTypeDarwin = OSTypeKey.String("darwin") + // FreeBSD + // Stability: development + OSTypeFreeBSD = OSTypeKey.String("freebsd") + // NetBSD + // Stability: development + OSTypeNetBSD = OSTypeKey.String("netbsd") + // OpenBSD + // Stability: development + OSTypeOpenBSD = OSTypeKey.String("openbsd") + // DragonFly BSD + // Stability: development + OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd") + // HP-UX (Hewlett Packard Unix) + // Stability: development + OSTypeHPUX = OSTypeKey.String("hpux") + // AIX (Advanced Interactive eXecutive) + // Stability: development + OSTypeAIX = OSTypeKey.String("aix") + // SunOS, Oracle Solaris + // Stability: development + OSTypeSolaris = OSTypeKey.String("solaris") + // IBM z/OS + // Stability: development + OSTypeZOS = OSTypeKey.String("z_os") +) + +// Namespace: otel +const ( + // OTelComponentNameKey is the attribute Key conforming to the + // "otel.component.name" semantic conventions. It represents a name uniquely + // identifying the instance of the OpenTelemetry component within its containing + // SDK instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otlp_grpc_span_exporter/0", "custom-name" + // Note: Implementations SHOULD ensure a low cardinality for this attribute, + // even across application or SDK restarts. + // E.g. implementations MUST NOT use UUIDs as values for this attribute. + // + // Implementations MAY achieve these goals by following a + // `/` pattern, e.g. + // `batching_span_processor/0`. + // Hereby `otel.component.type` refers to the corresponding attribute value of + // the component. + // + // The value of `instance-counter` MAY be automatically assigned by the + // component and uniqueness within the enclosing SDK instance MUST be + // guaranteed. + // For example, `` MAY be implemented by using a monotonically + // increasing counter (starting with `0`), which is incremented every time an + // instance of the given component type is started. + // + // With this implementation, for example the first Batching Span Processor would + // have `batching_span_processor/0` + // as `otel.component.name`, the second one `batching_span_processor/1` and so + // on. + // These values will therefore be reused in the case of an application restart. + OTelComponentNameKey = attribute.Key("otel.component.name") + + // OTelComponentTypeKey is the attribute Key conforming to the + // "otel.component.type" semantic conventions. It represents a name identifying + // the type of the OpenTelemetry component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "batching_span_processor", "com.example.MySpanExporter" + // Note: If none of the standardized values apply, implementations SHOULD use + // the language-defined name of the type. + // E.g. for Java the fully qualified classname SHOULD be used in this case. + OTelComponentTypeKey = attribute.Key("otel.component.type") + + // OTelScopeNameKey is the attribute Key conforming to the "otel.scope.name" + // semantic conventions. It represents the name of the instrumentation scope - ( + // `InstrumentationScope.Name` in OTLP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "io.opentelemetry.contrib.mongodb" + OTelScopeNameKey = attribute.Key("otel.scope.name") + + // OTelScopeVersionKey is the attribute Key conforming to the + // "otel.scope.version" semantic conventions. It represents the version of the + // instrumentation scope - (`InstrumentationScope.Version` in OTLP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.0.0" + OTelScopeVersionKey = attribute.Key("otel.scope.version") + + // OTelSpanSamplingResultKey is the attribute Key conforming to the + // "otel.span.sampling_result" semantic conventions. It represents the result + // value of the sampler for this span. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + OTelSpanSamplingResultKey = attribute.Key("otel.span.sampling_result") + + // OTelStatusCodeKey is the attribute Key conforming to the "otel.status_code" + // semantic conventions. It represents the name of the code, either "OK" or + // "ERROR". MUST NOT be set if the status code is UNSET. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + OTelStatusCodeKey = attribute.Key("otel.status_code") + + // OTelStatusDescriptionKey is the attribute Key conforming to the + // "otel.status_description" semantic conventions. It represents the description + // of the Status if it has a value, otherwise not set. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "resource not found" + OTelStatusDescriptionKey = attribute.Key("otel.status_description") +) + +// OTelComponentName returns an attribute KeyValue conforming to the +// "otel.component.name" semantic conventions. It represents a name uniquely +// identifying the instance of the OpenTelemetry component within its containing +// SDK instance. +func OTelComponentName(val string) attribute.KeyValue { + return OTelComponentNameKey.String(val) +} + +// OTelScopeName returns an attribute KeyValue conforming to the +// "otel.scope.name" semantic conventions. It represents the name of the +// instrumentation scope - (`InstrumentationScope.Name` in OTLP). +func OTelScopeName(val string) attribute.KeyValue { + return OTelScopeNameKey.String(val) +} + +// OTelScopeVersion returns an attribute KeyValue conforming to the +// "otel.scope.version" semantic conventions. It represents the version of the +// instrumentation scope - (`InstrumentationScope.Version` in OTLP). +func OTelScopeVersion(val string) attribute.KeyValue { + return OTelScopeVersionKey.String(val) +} + +// OTelStatusDescription returns an attribute KeyValue conforming to the +// "otel.status_description" semantic conventions. It represents the description +// of the Status if it has a value, otherwise not set. +func OTelStatusDescription(val string) attribute.KeyValue { + return OTelStatusDescriptionKey.String(val) +} + +// Enum values for otel.component.type +var ( + // The builtin SDK batching span processor + // + // Stability: development + OTelComponentTypeBatchingSpanProcessor = OTelComponentTypeKey.String("batching_span_processor") + // The builtin SDK simple span processor + // + // Stability: development + OTelComponentTypeSimpleSpanProcessor = OTelComponentTypeKey.String("simple_span_processor") + // The builtin SDK batching log record processor + // + // Stability: development + OTelComponentTypeBatchingLogProcessor = OTelComponentTypeKey.String("batching_log_processor") + // The builtin SDK simple log record processor + // + // Stability: development + OTelComponentTypeSimpleLogProcessor = OTelComponentTypeKey.String("simple_log_processor") + // OTLP span exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCSpanExporter = OTelComponentTypeKey.String("otlp_grpc_span_exporter") + // OTLP span exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPSpanExporter = OTelComponentTypeKey.String("otlp_http_span_exporter") + // OTLP span exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONSpanExporter = OTelComponentTypeKey.String("otlp_http_json_span_exporter") + // OTLP log record exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCLogExporter = OTelComponentTypeKey.String("otlp_grpc_log_exporter") + // OTLP log record exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPLogExporter = OTelComponentTypeKey.String("otlp_http_log_exporter") + // OTLP log record exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONLogExporter = OTelComponentTypeKey.String("otlp_http_json_log_exporter") + // The builtin SDK periodically exporting metric reader + // + // Stability: development + OTelComponentTypePeriodicMetricReader = OTelComponentTypeKey.String("periodic_metric_reader") + // OTLP metric exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCMetricExporter = OTelComponentTypeKey.String("otlp_grpc_metric_exporter") + // OTLP metric exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPMetricExporter = OTelComponentTypeKey.String("otlp_http_metric_exporter") + // OTLP metric exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONMetricExporter = OTelComponentTypeKey.String("otlp_http_json_metric_exporter") +) + +// Enum values for otel.span.sampling_result +var ( + // The span is not sampled and not recording + // Stability: development + OTelSpanSamplingResultDrop = OTelSpanSamplingResultKey.String("DROP") + // The span is not sampled, but recording + // Stability: development + OTelSpanSamplingResultRecordOnly = OTelSpanSamplingResultKey.String("RECORD_ONLY") + // The span is sampled and recording + // Stability: development + OTelSpanSamplingResultRecordAndSample = OTelSpanSamplingResultKey.String("RECORD_AND_SAMPLE") +) + +// Enum values for otel.status_code +var ( + // The operation has been validated by an Application developer or Operator to + // have completed successfully. + // Stability: stable + OTelStatusCodeOk = OTelStatusCodeKey.String("OK") + // The operation contains an error. + // Stability: stable + OTelStatusCodeError = OTelStatusCodeKey.String("ERROR") +) + +// Namespace: peer +const ( + // PeerServiceKey is the attribute Key conforming to the "peer.service" semantic + // conventions. It represents the [`service.name`] of the remote service. SHOULD + // be equal to the actual `service.name` resource attribute of the remote + // service if any. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: AuthTokenCache + // + // [`service.name`]: /docs/resource/README.md#service + PeerServiceKey = attribute.Key("peer.service") +) + +// PeerService returns an attribute KeyValue conforming to the "peer.service" +// semantic conventions. It represents the [`service.name`] of the remote +// service. SHOULD be equal to the actual `service.name` resource attribute of +// the remote service if any. +// +// [`service.name`]: /docs/resource/README.md#service +func PeerService(val string) attribute.KeyValue { + return PeerServiceKey.String(val) +} + +// Namespace: process +const ( + // ProcessArgsCountKey is the attribute Key conforming to the + // "process.args_count" semantic conventions. It represents the length of the + // process.command_args array. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 4 + // Note: This field can be useful for querying or performing bucket analysis on + // how many arguments were provided to start a process. More arguments may be an + // indication of suspicious activity. + ProcessArgsCountKey = attribute.Key("process.args_count") + + // ProcessCommandKey is the attribute Key conforming to the "process.command" + // semantic conventions. It represents the command used to launch the process + // (i.e. the command name). On Linux based systems, can be set to the zeroth + // string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter + // extracted from `GetCommandLineW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cmd/otelcol" + ProcessCommandKey = attribute.Key("process.command") + + // ProcessCommandArgsKey is the attribute Key conforming to the + // "process.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) as received by + // the process. On Linux-based systems (and some other Unixoid systems + // supporting procfs), can be set according to the list of null-delimited + // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this + // would be the full argv vector passed to `main`. SHOULD NOT be collected by + // default unless there is sanitization that excludes sensitive data. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cmd/otecol", "--config=config.yaml" + ProcessCommandArgsKey = attribute.Key("process.command_args") + + // ProcessCommandLineKey is the attribute Key conforming to the + // "process.command_line" semantic conventions. It represents the full command + // used to launch the process as a single string representing the full command. + // On Windows, can be set to the result of `GetCommandLineW`. Do not set this if + // you have to assemble it just for monitoring; use `process.command_args` + // instead. SHOULD NOT be collected by default unless there is sanitization that + // excludes sensitive data. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "C:\cmd\otecol --config="my directory\config.yaml"" + ProcessCommandLineKey = attribute.Key("process.command_line") + + // ProcessContextSwitchTypeKey is the attribute Key conforming to the + // "process.context_switch_type" semantic conventions. It represents the + // specifies whether the context switches for this data point were voluntary or + // involuntary. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessContextSwitchTypeKey = attribute.Key("process.context_switch_type") + + // ProcessCreationTimeKey is the attribute Key conforming to the + // "process.creation.time" semantic conventions. It represents the date and time + // the process was created, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2023-11-21T09:25:34.853Z" + ProcessCreationTimeKey = attribute.Key("process.creation.time") + + // ProcessExecutableBuildIDGNUKey is the attribute Key conforming to the + // "process.executable.build_id.gnu" semantic conventions. It represents the GNU + // build ID as found in the `.note.gnu.build-id` ELF section (hex string). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "c89b11207f6479603b0d49bf291c092c2b719293" + ProcessExecutableBuildIDGNUKey = attribute.Key("process.executable.build_id.gnu") + + // ProcessExecutableBuildIDGoKey is the attribute Key conforming to the + // "process.executable.build_id.go" semantic conventions. It represents the Go + // build ID as retrieved by `go tool buildid `. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY" + ProcessExecutableBuildIDGoKey = attribute.Key("process.executable.build_id.go") + + // ProcessExecutableBuildIDHtlhashKey is the attribute Key conforming to the + // "process.executable.build_id.htlhash" semantic conventions. It represents the + // profiling specific build ID for executables. See the OTel specification for + // Profiles for more information. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "600DCAFE4A110000F2BF38C493F5FB92" + ProcessExecutableBuildIDHtlhashKey = attribute.Key("process.executable.build_id.htlhash") + + // ProcessExecutableNameKey is the attribute Key conforming to the + // "process.executable.name" semantic conventions. It represents the name of the + // process executable. On Linux based systems, this SHOULD be set to the base + // name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to + // the base name of `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcol" + ProcessExecutableNameKey = attribute.Key("process.executable.name") + + // ProcessExecutablePathKey is the attribute Key conforming to the + // "process.executable.path" semantic conventions. It represents the full path + // to the process executable. On Linux based systems, can be set to the target + // of `proc/[pid]/exe`. On Windows, can be set to the result of + // `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/usr/bin/cmd/otelcol" + ProcessExecutablePathKey = attribute.Key("process.executable.path") + + // ProcessExitCodeKey is the attribute Key conforming to the "process.exit.code" + // semantic conventions. It represents the exit code of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 127 + ProcessExitCodeKey = attribute.Key("process.exit.code") + + // ProcessExitTimeKey is the attribute Key conforming to the "process.exit.time" + // semantic conventions. It represents the date and time the process exited, in + // ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2023-11-21T09:26:12.315Z" + ProcessExitTimeKey = attribute.Key("process.exit.time") + + // ProcessGroupLeaderPIDKey is the attribute Key conforming to the + // "process.group_leader.pid" semantic conventions. It represents the PID of the + // process's group leader. This is also the process group ID (PGID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 23 + ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid") + + // ProcessInteractiveKey is the attribute Key conforming to the + // "process.interactive" semantic conventions. It represents the whether the + // process is connected to an interactive shell. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessInteractiveKey = attribute.Key("process.interactive") + + // ProcessLinuxCgroupKey is the attribute Key conforming to the + // "process.linux.cgroup" semantic conventions. It represents the control group + // associated with the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1:name=systemd:/user.slice/user-1000.slice/session-3.scope", + // "0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope" + // Note: Control groups (cgroups) are a kernel feature used to organize and + // manage process resources. This attribute provides the path(s) to the + // cgroup(s) associated with the process, which should match the contents of the + // [/proc/[PID]/cgroup] file. + // + // [/proc/[PID]/cgroup]: https://man7.org/linux/man-pages/man7/cgroups.7.html + ProcessLinuxCgroupKey = attribute.Key("process.linux.cgroup") + + // ProcessOwnerKey is the attribute Key conforming to the "process.owner" + // semantic conventions. It represents the username of the user that owns the + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + ProcessOwnerKey = attribute.Key("process.owner") + + // ProcessPagingFaultTypeKey is the attribute Key conforming to the + // "process.paging.fault_type" semantic conventions. It represents the type of + // page fault for this data point. Type `major` is for major/hard page faults, + // and `minor` is for minor/soft page faults. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessPagingFaultTypeKey = attribute.Key("process.paging.fault_type") + + // ProcessParentPIDKey is the attribute Key conforming to the + // "process.parent_pid" semantic conventions. It represents the parent Process + // identifier (PPID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 111 + ProcessParentPIDKey = attribute.Key("process.parent_pid") + + // ProcessPIDKey is the attribute Key conforming to the "process.pid" semantic + // conventions. It represents the process identifier (PID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1234 + ProcessPIDKey = attribute.Key("process.pid") + + // ProcessRealUserIDKey is the attribute Key conforming to the + // "process.real_user.id" semantic conventions. It represents the real user ID + // (RUID) of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1000 + ProcessRealUserIDKey = attribute.Key("process.real_user.id") + + // ProcessRealUserNameKey is the attribute Key conforming to the + // "process.real_user.name" semantic conventions. It represents the username of + // the real user of the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "operator" + ProcessRealUserNameKey = attribute.Key("process.real_user.name") + + // ProcessRuntimeDescriptionKey is the attribute Key conforming to the + // "process.runtime.description" semantic conventions. It represents an + // additional description about the runtime of the process, for example a + // specific vendor customization of the runtime environment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0 + ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description") + + // ProcessRuntimeNameKey is the attribute Key conforming to the + // "process.runtime.name" semantic conventions. It represents the name of the + // runtime of this process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "OpenJDK Runtime Environment" + ProcessRuntimeNameKey = attribute.Key("process.runtime.name") + + // ProcessRuntimeVersionKey is the attribute Key conforming to the + // "process.runtime.version" semantic conventions. It represents the version of + // the runtime of this process, as returned by the runtime without modification. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 14.0.2 + ProcessRuntimeVersionKey = attribute.Key("process.runtime.version") + + // ProcessSavedUserIDKey is the attribute Key conforming to the + // "process.saved_user.id" semantic conventions. It represents the saved user ID + // (SUID) of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1002 + ProcessSavedUserIDKey = attribute.Key("process.saved_user.id") + + // ProcessSavedUserNameKey is the attribute Key conforming to the + // "process.saved_user.name" semantic conventions. It represents the username of + // the saved user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "operator" + ProcessSavedUserNameKey = attribute.Key("process.saved_user.name") + + // ProcessSessionLeaderPIDKey is the attribute Key conforming to the + // "process.session_leader.pid" semantic conventions. It represents the PID of + // the process's session leader. This is also the session ID (SID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 14 + ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid") + + // ProcessTitleKey is the attribute Key conforming to the "process.title" + // semantic conventions. It represents the process title (proctitle). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cat /etc/hostname", "xfce4-session", "bash" + // Note: In many Unix-like systems, process title (proctitle), is the string + // that represents the name or command line of a running process, displayed by + // system monitoring tools like ps, top, and htop. + ProcessTitleKey = attribute.Key("process.title") + + // ProcessUserIDKey is the attribute Key conforming to the "process.user.id" + // semantic conventions. It represents the effective user ID (EUID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1001 + ProcessUserIDKey = attribute.Key("process.user.id") + + // ProcessUserNameKey is the attribute Key conforming to the "process.user.name" + // semantic conventions. It represents the username of the effective user of the + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + ProcessUserNameKey = attribute.Key("process.user.name") + + // ProcessVpidKey is the attribute Key conforming to the "process.vpid" semantic + // conventions. It represents the virtual process identifier. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12 + // Note: The process ID within a PID namespace. This is not necessarily unique + // across all processes on the host but it is unique within the process + // namespace that the process exists within. + ProcessVpidKey = attribute.Key("process.vpid") + + // ProcessWorkingDirectoryKey is the attribute Key conforming to the + // "process.working_directory" semantic conventions. It represents the working + // directory of the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/root" + ProcessWorkingDirectoryKey = attribute.Key("process.working_directory") +) + +// ProcessArgsCount returns an attribute KeyValue conforming to the +// "process.args_count" semantic conventions. It represents the length of the +// process.command_args array. +func ProcessArgsCount(val int) attribute.KeyValue { + return ProcessArgsCountKey.Int(val) +} + +// ProcessCommand returns an attribute KeyValue conforming to the +// "process.command" semantic conventions. It represents the command used to +// launch the process (i.e. the command name). On Linux based systems, can be set +// to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the +// first parameter extracted from `GetCommandLineW`. +func ProcessCommand(val string) attribute.KeyValue { + return ProcessCommandKey.String(val) +} + +// ProcessCommandArgs returns an attribute KeyValue conforming to the +// "process.command_args" semantic conventions. It represents the all the command +// arguments (including the command/executable itself) as received by the +// process. On Linux-based systems (and some other Unixoid systems supporting +// procfs), can be set according to the list of null-delimited strings extracted +// from `proc/[pid]/cmdline`. For libc-based executables, this would be the full +// argv vector passed to `main`. SHOULD NOT be collected by default unless there +// is sanitization that excludes sensitive data. +func ProcessCommandArgs(val ...string) attribute.KeyValue { + return ProcessCommandArgsKey.StringSlice(val) +} + +// ProcessCommandLine returns an attribute KeyValue conforming to the +// "process.command_line" semantic conventions. It represents the full command +// used to launch the process as a single string representing the full command. +// On Windows, can be set to the result of `GetCommandLineW`. Do not set this if +// you have to assemble it just for monitoring; use `process.command_args` +// instead. SHOULD NOT be collected by default unless there is sanitization that +// excludes sensitive data. +func ProcessCommandLine(val string) attribute.KeyValue { + return ProcessCommandLineKey.String(val) +} + +// ProcessCreationTime returns an attribute KeyValue conforming to the +// "process.creation.time" semantic conventions. It represents the date and time +// the process was created, in ISO 8601 format. +func ProcessCreationTime(val string) attribute.KeyValue { + return ProcessCreationTimeKey.String(val) +} + +// ProcessExecutableBuildIDGNU returns an attribute KeyValue conforming to the +// "process.executable.build_id.gnu" semantic conventions. It represents the GNU +// build ID as found in the `.note.gnu.build-id` ELF section (hex string). +func ProcessExecutableBuildIDGNU(val string) attribute.KeyValue { + return ProcessExecutableBuildIDGNUKey.String(val) +} + +// ProcessExecutableBuildIDGo returns an attribute KeyValue conforming to the +// "process.executable.build_id.go" semantic conventions. It represents the Go +// build ID as retrieved by `go tool buildid `. +func ProcessExecutableBuildIDGo(val string) attribute.KeyValue { + return ProcessExecutableBuildIDGoKey.String(val) +} + +// ProcessExecutableBuildIDHtlhash returns an attribute KeyValue conforming to +// the "process.executable.build_id.htlhash" semantic conventions. It represents +// the profiling specific build ID for executables. See the OTel specification +// for Profiles for more information. +func ProcessExecutableBuildIDHtlhash(val string) attribute.KeyValue { + return ProcessExecutableBuildIDHtlhashKey.String(val) +} + +// ProcessExecutableName returns an attribute KeyValue conforming to the +// "process.executable.name" semantic conventions. It represents the name of the +// process executable. On Linux based systems, this SHOULD be set to the base +// name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to the +// base name of `GetProcessImageFileNameW`. +func ProcessExecutableName(val string) attribute.KeyValue { + return ProcessExecutableNameKey.String(val) +} + +// ProcessExecutablePath returns an attribute KeyValue conforming to the +// "process.executable.path" semantic conventions. It represents the full path to +// the process executable. On Linux based systems, can be set to the target of +// `proc/[pid]/exe`. On Windows, can be set to the result of +// `GetProcessImageFileNameW`. +func ProcessExecutablePath(val string) attribute.KeyValue { + return ProcessExecutablePathKey.String(val) +} + +// ProcessExitCode returns an attribute KeyValue conforming to the +// "process.exit.code" semantic conventions. It represents the exit code of the +// process. +func ProcessExitCode(val int) attribute.KeyValue { + return ProcessExitCodeKey.Int(val) +} + +// ProcessExitTime returns an attribute KeyValue conforming to the +// "process.exit.time" semantic conventions. It represents the date and time the +// process exited, in ISO 8601 format. +func ProcessExitTime(val string) attribute.KeyValue { + return ProcessExitTimeKey.String(val) +} + +// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the +// "process.group_leader.pid" semantic conventions. It represents the PID of the +// process's group leader. This is also the process group ID (PGID) of the +// process. +func ProcessGroupLeaderPID(val int) attribute.KeyValue { + return ProcessGroupLeaderPIDKey.Int(val) +} + +// ProcessInteractive returns an attribute KeyValue conforming to the +// "process.interactive" semantic conventions. It represents the whether the +// process is connected to an interactive shell. +func ProcessInteractive(val bool) attribute.KeyValue { + return ProcessInteractiveKey.Bool(val) +} + +// ProcessLinuxCgroup returns an attribute KeyValue conforming to the +// "process.linux.cgroup" semantic conventions. It represents the control group +// associated with the process. +func ProcessLinuxCgroup(val string) attribute.KeyValue { + return ProcessLinuxCgroupKey.String(val) +} + +// ProcessOwner returns an attribute KeyValue conforming to the "process.owner" +// semantic conventions. It represents the username of the user that owns the +// process. +func ProcessOwner(val string) attribute.KeyValue { + return ProcessOwnerKey.String(val) +} + +// ProcessParentPID returns an attribute KeyValue conforming to the +// "process.parent_pid" semantic conventions. It represents the parent Process +// identifier (PPID). +func ProcessParentPID(val int) attribute.KeyValue { + return ProcessParentPIDKey.Int(val) +} + +// ProcessPID returns an attribute KeyValue conforming to the "process.pid" +// semantic conventions. It represents the process identifier (PID). +func ProcessPID(val int) attribute.KeyValue { + return ProcessPIDKey.Int(val) +} + +// ProcessRealUserID returns an attribute KeyValue conforming to the +// "process.real_user.id" semantic conventions. It represents the real user ID +// (RUID) of the process. +func ProcessRealUserID(val int) attribute.KeyValue { + return ProcessRealUserIDKey.Int(val) +} + +// ProcessRealUserName returns an attribute KeyValue conforming to the +// "process.real_user.name" semantic conventions. It represents the username of +// the real user of the process. +func ProcessRealUserName(val string) attribute.KeyValue { + return ProcessRealUserNameKey.String(val) +} + +// ProcessRuntimeDescription returns an attribute KeyValue conforming to the +// "process.runtime.description" semantic conventions. It represents an +// additional description about the runtime of the process, for example a +// specific vendor customization of the runtime environment. +func ProcessRuntimeDescription(val string) attribute.KeyValue { + return ProcessRuntimeDescriptionKey.String(val) +} + +// ProcessRuntimeName returns an attribute KeyValue conforming to the +// "process.runtime.name" semantic conventions. It represents the name of the +// runtime of this process. +func ProcessRuntimeName(val string) attribute.KeyValue { + return ProcessRuntimeNameKey.String(val) +} + +// ProcessRuntimeVersion returns an attribute KeyValue conforming to the +// "process.runtime.version" semantic conventions. It represents the version of +// the runtime of this process, as returned by the runtime without modification. +func ProcessRuntimeVersion(val string) attribute.KeyValue { + return ProcessRuntimeVersionKey.String(val) +} + +// ProcessSavedUserID returns an attribute KeyValue conforming to the +// "process.saved_user.id" semantic conventions. It represents the saved user ID +// (SUID) of the process. +func ProcessSavedUserID(val int) attribute.KeyValue { + return ProcessSavedUserIDKey.Int(val) +} + +// ProcessSavedUserName returns an attribute KeyValue conforming to the +// "process.saved_user.name" semantic conventions. It represents the username of +// the saved user. +func ProcessSavedUserName(val string) attribute.KeyValue { + return ProcessSavedUserNameKey.String(val) +} + +// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the +// "process.session_leader.pid" semantic conventions. It represents the PID of +// the process's session leader. This is also the session ID (SID) of the +// process. +func ProcessSessionLeaderPID(val int) attribute.KeyValue { + return ProcessSessionLeaderPIDKey.Int(val) +} + +// ProcessTitle returns an attribute KeyValue conforming to the "process.title" +// semantic conventions. It represents the process title (proctitle). +func ProcessTitle(val string) attribute.KeyValue { + return ProcessTitleKey.String(val) +} + +// ProcessUserID returns an attribute KeyValue conforming to the +// "process.user.id" semantic conventions. It represents the effective user ID +// (EUID) of the process. +func ProcessUserID(val int) attribute.KeyValue { + return ProcessUserIDKey.Int(val) +} + +// ProcessUserName returns an attribute KeyValue conforming to the +// "process.user.name" semantic conventions. It represents the username of the +// effective user of the process. +func ProcessUserName(val string) attribute.KeyValue { + return ProcessUserNameKey.String(val) +} + +// ProcessVpid returns an attribute KeyValue conforming to the "process.vpid" +// semantic conventions. It represents the virtual process identifier. +func ProcessVpid(val int) attribute.KeyValue { + return ProcessVpidKey.Int(val) +} + +// ProcessWorkingDirectory returns an attribute KeyValue conforming to the +// "process.working_directory" semantic conventions. It represents the working +// directory of the process. +func ProcessWorkingDirectory(val string) attribute.KeyValue { + return ProcessWorkingDirectoryKey.String(val) +} + +// Enum values for process.context_switch_type +var ( + // voluntary + // Stability: development + ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary") + // involuntary + // Stability: development + ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary") +) + +// Enum values for process.paging.fault_type +var ( + // major + // Stability: development + ProcessPagingFaultTypeMajor = ProcessPagingFaultTypeKey.String("major") + // minor + // Stability: development + ProcessPagingFaultTypeMinor = ProcessPagingFaultTypeKey.String("minor") +) + +// Namespace: profile +const ( + // ProfileFrameTypeKey is the attribute Key conforming to the + // "profile.frame.type" semantic conventions. It represents the describes the + // interpreter or compiler of a single frame. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cpython" + ProfileFrameTypeKey = attribute.Key("profile.frame.type") +) + +// Enum values for profile.frame.type +var ( + // [.NET] + // + // Stability: development + // + // [.NET]: https://wikipedia.org/wiki/.NET + ProfileFrameTypeDotnet = ProfileFrameTypeKey.String("dotnet") + // [JVM] + // + // Stability: development + // + // [JVM]: https://wikipedia.org/wiki/Java_virtual_machine + ProfileFrameTypeJVM = ProfileFrameTypeKey.String("jvm") + // [Kernel] + // + // Stability: development + // + // [Kernel]: https://wikipedia.org/wiki/Kernel_(operating_system) + ProfileFrameTypeKernel = ProfileFrameTypeKey.String("kernel") + // Can be one of but not limited to [C], [C++], [Go] or [Rust]. If possible, a + // more precise value MUST be used. + // + // Stability: development + // + // [C]: https://wikipedia.org/wiki/C_(programming_language) + // [C++]: https://wikipedia.org/wiki/C%2B%2B + // [Go]: https://wikipedia.org/wiki/Go_(programming_language) + // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language) + ProfileFrameTypeNative = ProfileFrameTypeKey.String("native") + // [Perl] + // + // Stability: development + // + // [Perl]: https://wikipedia.org/wiki/Perl + ProfileFrameTypePerl = ProfileFrameTypeKey.String("perl") + // [PHP] + // + // Stability: development + // + // [PHP]: https://wikipedia.org/wiki/PHP + ProfileFrameTypePHP = ProfileFrameTypeKey.String("php") + // [Python] + // + // Stability: development + // + // [Python]: https://wikipedia.org/wiki/Python_(programming_language) + ProfileFrameTypeCpython = ProfileFrameTypeKey.String("cpython") + // [Ruby] + // + // Stability: development + // + // [Ruby]: https://wikipedia.org/wiki/Ruby_(programming_language) + ProfileFrameTypeRuby = ProfileFrameTypeKey.String("ruby") + // [V8JS] + // + // Stability: development + // + // [V8JS]: https://wikipedia.org/wiki/V8_(JavaScript_engine) + ProfileFrameTypeV8JS = ProfileFrameTypeKey.String("v8js") + // [Erlang] + // + // Stability: development + // + // [Erlang]: https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine) + ProfileFrameTypeBeam = ProfileFrameTypeKey.String("beam") + // [Go], + // + // Stability: development + // + // [Go]: https://wikipedia.org/wiki/Go_(programming_language) + ProfileFrameTypeGo = ProfileFrameTypeKey.String("go") + // [Rust] + // + // Stability: development + // + // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language) + ProfileFrameTypeRust = ProfileFrameTypeKey.String("rust") +) + +// Namespace: rpc +const ( + // RPCConnectRPCErrorCodeKey is the attribute Key conforming to the + // "rpc.connect_rpc.error_code" semantic conventions. It represents the + // [error codes] of the Connect request. Error codes are always string values. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [error codes]: https://connectrpc.com//docs/protocol/#error-codes + RPCConnectRPCErrorCodeKey = attribute.Key("rpc.connect_rpc.error_code") + + // RPCGRPCStatusCodeKey is the attribute Key conforming to the + // "rpc.grpc.status_code" semantic conventions. It represents the + // [numeric status code] of the gRPC request. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [numeric status code]: https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md + RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") + + // RPCJSONRPCErrorCodeKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code` + // property of response if it is an error response. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: -32700, 100 + RPCJSONRPCErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code") + + // RPCJSONRPCErrorMessageKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_message" semantic conventions. It represents the + // `error.message` property of response if it is an error response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Parse error", "User already exists" + RPCJSONRPCErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message") + + // RPCJSONRPCRequestIDKey is the attribute Key conforming to the + // "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` + // property of request or response. Since protocol allows id to be int, string, + // `null` or missing (for notifications), value is expected to be cast to string + // for simplicity. Use empty string in case of `null` value. Omit entirely if + // this is a notification. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10", "request-7", "" + RPCJSONRPCRequestIDKey = attribute.Key("rpc.jsonrpc.request_id") + + // RPCJSONRPCVersionKey is the attribute Key conforming to the + // "rpc.jsonrpc.version" semantic conventions. It represents the protocol + // version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 + // doesn't specify this, the value can be omitted. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2.0", "1.0" + RPCJSONRPCVersionKey = attribute.Key("rpc.jsonrpc.version") + + // RPCMessageCompressedSizeKey is the attribute Key conforming to the + // "rpc.message.compressed_size" semantic conventions. It represents the + // compressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageCompressedSizeKey = attribute.Key("rpc.message.compressed_size") + + // RPCMessageIDKey is the attribute Key conforming to the "rpc.message.id" + // semantic conventions. It MUST be calculated as two different counters + // starting from `1` one for sent messages and one for received message.. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This way we guarantee that the values will be consistent between + // different implementations. + RPCMessageIDKey = attribute.Key("rpc.message.id") + + // RPCMessageTypeKey is the attribute Key conforming to the "rpc.message.type" + // semantic conventions. It represents the whether this is a received or sent + // message. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageTypeKey = attribute.Key("rpc.message.type") + + // RPCMessageUncompressedSizeKey is the attribute Key conforming to the + // "rpc.message.uncompressed_size" semantic conventions. It represents the + // uncompressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageUncompressedSizeKey = attribute.Key("rpc.message.uncompressed_size") + + // RPCMethodKey is the attribute Key conforming to the "rpc.method" semantic + // conventions. It represents the name of the (logical) method being called, + // must be equal to the $method part in the span name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: exampleMethod + // Note: This is the logical name of the method from the RPC interface + // perspective, which can be different from the name of any implementing + // method/function. The `code.function.name` attribute may be used to store the + // latter (e.g., method actually executing the call on the server side, RPC + // client stub method on the client side). + RPCMethodKey = attribute.Key("rpc.method") + + // RPCServiceKey is the attribute Key conforming to the "rpc.service" semantic + // conventions. It represents the full (logical) name of the service being + // called, including its package name, if applicable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myservice.EchoService + // Note: This is the logical name of the service from the RPC interface + // perspective, which can be different from the name of any implementing class. + // The `code.namespace` attribute may be used to store the latter (despite the + // attribute name, it may include a class name; e.g., class with method actually + // executing the call on the server side, RPC client stub class on the client + // side). + RPCServiceKey = attribute.Key("rpc.service") + + // RPCSystemKey is the attribute Key conforming to the "rpc.system" semantic + // conventions. It represents a string identifying the remoting system. See + // below for a list of well-known identifiers. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCSystemKey = attribute.Key("rpc.system") +) + +// RPCJSONRPCErrorCode returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code` +// property of response if it is an error response. +func RPCJSONRPCErrorCode(val int) attribute.KeyValue { + return RPCJSONRPCErrorCodeKey.Int(val) +} + +// RPCJSONRPCErrorMessage returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_message" semantic conventions. It represents the +// `error.message` property of response if it is an error response. +func RPCJSONRPCErrorMessage(val string) attribute.KeyValue { + return RPCJSONRPCErrorMessageKey.String(val) +} + +// RPCJSONRPCRequestID returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` property +// of request or response. Since protocol allows id to be int, string, `null` or +// missing (for notifications), value is expected to be cast to string for +// simplicity. Use empty string in case of `null` value. Omit entirely if this is +// a notification. +func RPCJSONRPCRequestID(val string) attribute.KeyValue { + return RPCJSONRPCRequestIDKey.String(val) +} + +// RPCJSONRPCVersion returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.version" semantic conventions. It represents the protocol version +// as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 doesn't +// specify this, the value can be omitted. +func RPCJSONRPCVersion(val string) attribute.KeyValue { + return RPCJSONRPCVersionKey.String(val) +} + +// RPCMessageCompressedSize returns an attribute KeyValue conforming to the +// "rpc.message.compressed_size" semantic conventions. It represents the +// compressed size of the message in bytes. +func RPCMessageCompressedSize(val int) attribute.KeyValue { + return RPCMessageCompressedSizeKey.Int(val) +} + +// RPCMessageID returns an attribute KeyValue conforming to the "rpc.message.id" +// semantic conventions. It MUST be calculated as two different counters starting +// from `1` one for sent messages and one for received message.. +func RPCMessageID(val int) attribute.KeyValue { + return RPCMessageIDKey.Int(val) +} + +// RPCMessageUncompressedSize returns an attribute KeyValue conforming to the +// "rpc.message.uncompressed_size" semantic conventions. It represents the +// uncompressed size of the message in bytes. +func RPCMessageUncompressedSize(val int) attribute.KeyValue { + return RPCMessageUncompressedSizeKey.Int(val) +} + +// RPCMethod returns an attribute KeyValue conforming to the "rpc.method" +// semantic conventions. It represents the name of the (logical) method being +// called, must be equal to the $method part in the span name. +func RPCMethod(val string) attribute.KeyValue { + return RPCMethodKey.String(val) +} + +// RPCService returns an attribute KeyValue conforming to the "rpc.service" +// semantic conventions. It represents the full (logical) name of the service +// being called, including its package name, if applicable. +func RPCService(val string) attribute.KeyValue { + return RPCServiceKey.String(val) +} + +// Enum values for rpc.connect_rpc.error_code +var ( + // cancelled + // Stability: development + RPCConnectRPCErrorCodeCancelled = RPCConnectRPCErrorCodeKey.String("cancelled") + // unknown + // Stability: development + RPCConnectRPCErrorCodeUnknown = RPCConnectRPCErrorCodeKey.String("unknown") + // invalid_argument + // Stability: development + RPCConnectRPCErrorCodeInvalidArgument = RPCConnectRPCErrorCodeKey.String("invalid_argument") + // deadline_exceeded + // Stability: development + RPCConnectRPCErrorCodeDeadlineExceeded = RPCConnectRPCErrorCodeKey.String("deadline_exceeded") + // not_found + // Stability: development + RPCConnectRPCErrorCodeNotFound = RPCConnectRPCErrorCodeKey.String("not_found") + // already_exists + // Stability: development + RPCConnectRPCErrorCodeAlreadyExists = RPCConnectRPCErrorCodeKey.String("already_exists") + // permission_denied + // Stability: development + RPCConnectRPCErrorCodePermissionDenied = RPCConnectRPCErrorCodeKey.String("permission_denied") + // resource_exhausted + // Stability: development + RPCConnectRPCErrorCodeResourceExhausted = RPCConnectRPCErrorCodeKey.String("resource_exhausted") + // failed_precondition + // Stability: development + RPCConnectRPCErrorCodeFailedPrecondition = RPCConnectRPCErrorCodeKey.String("failed_precondition") + // aborted + // Stability: development + RPCConnectRPCErrorCodeAborted = RPCConnectRPCErrorCodeKey.String("aborted") + // out_of_range + // Stability: development + RPCConnectRPCErrorCodeOutOfRange = RPCConnectRPCErrorCodeKey.String("out_of_range") + // unimplemented + // Stability: development + RPCConnectRPCErrorCodeUnimplemented = RPCConnectRPCErrorCodeKey.String("unimplemented") + // internal + // Stability: development + RPCConnectRPCErrorCodeInternal = RPCConnectRPCErrorCodeKey.String("internal") + // unavailable + // Stability: development + RPCConnectRPCErrorCodeUnavailable = RPCConnectRPCErrorCodeKey.String("unavailable") + // data_loss + // Stability: development + RPCConnectRPCErrorCodeDataLoss = RPCConnectRPCErrorCodeKey.String("data_loss") + // unauthenticated + // Stability: development + RPCConnectRPCErrorCodeUnauthenticated = RPCConnectRPCErrorCodeKey.String("unauthenticated") +) + +// Enum values for rpc.grpc.status_code +var ( + // OK + // Stability: development + RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0) + // CANCELLED + // Stability: development + RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1) + // UNKNOWN + // Stability: development + RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2) + // INVALID_ARGUMENT + // Stability: development + RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3) + // DEADLINE_EXCEEDED + // Stability: development + RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4) + // NOT_FOUND + // Stability: development + RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5) + // ALREADY_EXISTS + // Stability: development + RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6) + // PERMISSION_DENIED + // Stability: development + RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7) + // RESOURCE_EXHAUSTED + // Stability: development + RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8) + // FAILED_PRECONDITION + // Stability: development + RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9) + // ABORTED + // Stability: development + RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10) + // OUT_OF_RANGE + // Stability: development + RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11) + // UNIMPLEMENTED + // Stability: development + RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12) + // INTERNAL + // Stability: development + RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13) + // UNAVAILABLE + // Stability: development + RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14) + // DATA_LOSS + // Stability: development + RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15) + // UNAUTHENTICATED + // Stability: development + RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16) +) + +// Enum values for rpc.message.type +var ( + // sent + // Stability: development + RPCMessageTypeSent = RPCMessageTypeKey.String("SENT") + // received + // Stability: development + RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED") +) + +// Enum values for rpc.system +var ( + // gRPC + // Stability: development + RPCSystemGRPC = RPCSystemKey.String("grpc") + // Java RMI + // Stability: development + RPCSystemJavaRmi = RPCSystemKey.String("java_rmi") + // .NET WCF + // Stability: development + RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf") + // Apache Dubbo + // Stability: development + RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo") + // Connect RPC + // Stability: development + RPCSystemConnectRPC = RPCSystemKey.String("connect_rpc") +) + +// Namespace: security_rule +const ( + // SecurityRuleCategoryKey is the attribute Key conforming to the + // "security_rule.category" semantic conventions. It represents a categorization + // value keyword used by the entity using the rule for detection of this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Attempted Information Leak" + SecurityRuleCategoryKey = attribute.Key("security_rule.category") + + // SecurityRuleDescriptionKey is the attribute Key conforming to the + // "security_rule.description" semantic conventions. It represents the + // description of the rule generating the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Block requests to public DNS over HTTPS / TLS protocols" + SecurityRuleDescriptionKey = attribute.Key("security_rule.description") + + // SecurityRuleLicenseKey is the attribute Key conforming to the + // "security_rule.license" semantic conventions. It represents the name of the + // license under which the rule used to generate this event is made available. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Apache 2.0" + SecurityRuleLicenseKey = attribute.Key("security_rule.license") + + // SecurityRuleNameKey is the attribute Key conforming to the + // "security_rule.name" semantic conventions. It represents the name of the rule + // or signature generating the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "BLOCK_DNS_over_TLS" + SecurityRuleNameKey = attribute.Key("security_rule.name") + + // SecurityRuleReferenceKey is the attribute Key conforming to the + // "security_rule.reference" semantic conventions. It represents the reference + // URL to additional information about the rule used to generate this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://en.wikipedia.org/wiki/DNS_over_TLS" + // Note: The URL can point to the vendor’s documentation about the rule. If + // that’s not available, it can also be a link to a more general page + // describing this type of alert. + SecurityRuleReferenceKey = attribute.Key("security_rule.reference") + + // SecurityRuleRulesetNameKey is the attribute Key conforming to the + // "security_rule.ruleset.name" semantic conventions. It represents the name of + // the ruleset, policy, group, or parent category in which the rule used to + // generate this event is a member. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Standard_Protocol_Filters" + SecurityRuleRulesetNameKey = attribute.Key("security_rule.ruleset.name") + + // SecurityRuleUUIDKey is the attribute Key conforming to the + // "security_rule.uuid" semantic conventions. It represents a rule ID that is + // unique within the scope of a set or group of agents, observers, or other + // entities using the rule for detection of this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "550e8400-e29b-41d4-a716-446655440000", "1100110011" + SecurityRuleUUIDKey = attribute.Key("security_rule.uuid") + + // SecurityRuleVersionKey is the attribute Key conforming to the + // "security_rule.version" semantic conventions. It represents the version / + // revision of the rule being used for analysis. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.0.0" + SecurityRuleVersionKey = attribute.Key("security_rule.version") +) + +// SecurityRuleCategory returns an attribute KeyValue conforming to the +// "security_rule.category" semantic conventions. It represents a categorization +// value keyword used by the entity using the rule for detection of this event. +func SecurityRuleCategory(val string) attribute.KeyValue { + return SecurityRuleCategoryKey.String(val) +} + +// SecurityRuleDescription returns an attribute KeyValue conforming to the +// "security_rule.description" semantic conventions. It represents the +// description of the rule generating the event. +func SecurityRuleDescription(val string) attribute.KeyValue { + return SecurityRuleDescriptionKey.String(val) +} + +// SecurityRuleLicense returns an attribute KeyValue conforming to the +// "security_rule.license" semantic conventions. It represents the name of the +// license under which the rule used to generate this event is made available. +func SecurityRuleLicense(val string) attribute.KeyValue { + return SecurityRuleLicenseKey.String(val) +} + +// SecurityRuleName returns an attribute KeyValue conforming to the +// "security_rule.name" semantic conventions. It represents the name of the rule +// or signature generating the event. +func SecurityRuleName(val string) attribute.KeyValue { + return SecurityRuleNameKey.String(val) +} + +// SecurityRuleReference returns an attribute KeyValue conforming to the +// "security_rule.reference" semantic conventions. It represents the reference +// URL to additional information about the rule used to generate this event. +func SecurityRuleReference(val string) attribute.KeyValue { + return SecurityRuleReferenceKey.String(val) +} + +// SecurityRuleRulesetName returns an attribute KeyValue conforming to the +// "security_rule.ruleset.name" semantic conventions. It represents the name of +// the ruleset, policy, group, or parent category in which the rule used to +// generate this event is a member. +func SecurityRuleRulesetName(val string) attribute.KeyValue { + return SecurityRuleRulesetNameKey.String(val) +} + +// SecurityRuleUUID returns an attribute KeyValue conforming to the +// "security_rule.uuid" semantic conventions. It represents a rule ID that is +// unique within the scope of a set or group of agents, observers, or other +// entities using the rule for detection of this event. +func SecurityRuleUUID(val string) attribute.KeyValue { + return SecurityRuleUUIDKey.String(val) +} + +// SecurityRuleVersion returns an attribute KeyValue conforming to the +// "security_rule.version" semantic conventions. It represents the version / +// revision of the rule being used for analysis. +func SecurityRuleVersion(val string) attribute.KeyValue { + return SecurityRuleVersionKey.String(val) +} + +// Namespace: server +const ( + // ServerAddressKey is the attribute Key conforming to the "server.address" + // semantic conventions. It represents the server domain name if available + // without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the client side, and when communicating through an + // intermediary, `server.address` SHOULD represent the server address behind any + // intermediaries, for example proxies, if it's available. + ServerAddressKey = attribute.Key("server.address") + + // ServerPortKey is the attribute Key conforming to the "server.port" semantic + // conventions. It represents the server port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 80, 8080, 443 + // Note: When observed from the client side, and when communicating through an + // intermediary, `server.port` SHOULD represent the server port behind any + // intermediaries, for example proxies, if it's available. + ServerPortKey = attribute.Key("server.port") +) + +// ServerAddress returns an attribute KeyValue conforming to the "server.address" +// semantic conventions. It represents the server domain name if available +// without reverse DNS lookup; otherwise, IP address or Unix domain socket name. +func ServerAddress(val string) attribute.KeyValue { + return ServerAddressKey.String(val) +} + +// ServerPort returns an attribute KeyValue conforming to the "server.port" +// semantic conventions. It represents the server port number. +func ServerPort(val int) attribute.KeyValue { + return ServerPortKey.Int(val) +} + +// Namespace: service +const ( + // ServiceInstanceIDKey is the attribute Key conforming to the + // "service.instance.id" semantic conventions. It represents the string ID of + // the service instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "627cc493-f310-47de-96bd-71410b7dec09" + // Note: MUST be unique for each instance of the same + // `service.namespace,service.name` pair (in other words + // `service.namespace,service.name,service.instance.id` triplet MUST be globally + // unique). The ID helps to + // distinguish instances of the same service that exist at the same time (e.g. + // instances of a horizontally scaled + // service). + // + // Implementations, such as SDKs, are recommended to generate a random Version 1 + // or Version 4 [RFC + // 4122] UUID, but are free to use an inherent unique ID as + // the source of + // this value if stability is desirable. In that case, the ID SHOULD be used as + // source of a UUID Version 5 and + // SHOULD use the following UUID as the namespace: + // `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + // + // UUIDs are typically recommended, as only an opaque value for the purposes of + // identifying a service instance is + // needed. Similar to what can be seen in the man page for the + // [`/etc/machine-id`] file, the underlying + // data, such as pod name and namespace should be treated as confidential, being + // the user's choice to expose it + // or not via another resource attribute. + // + // For applications running behind an application server (like unicorn), we do + // not recommend using one identifier + // for all processes participating in the application. Instead, it's recommended + // each division (e.g. a worker + // thread in unicorn) to have its own instance.id. + // + // It's not recommended for a Collector to set `service.instance.id` if it can't + // unambiguously determine the + // service instance that is generating that telemetry. For instance, creating an + // UUID based on `pod.name` will + // likely be wrong, as the Collector might not know from which container within + // that pod the telemetry originated. + // However, Collectors can set the `service.instance.id` if they can + // unambiguously determine the service instance + // for that telemetry. This is typically the case for scraping receivers, as + // they know the target address and + // port. + // + // [RFC + // 4122]: https://www.ietf.org/rfc/rfc4122.txt + // [`/etc/machine-id`]: https://www.freedesktop.org/software/systemd/man/latest/machine-id.html + ServiceInstanceIDKey = attribute.Key("service.instance.id") + + // ServiceNameKey is the attribute Key conforming to the "service.name" semantic + // conventions. It represents the logical name of the service. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "shoppingcart" + // Note: MUST be the same for all instances of horizontally scaled services. If + // the value was not specified, SDKs MUST fallback to `unknown_service:` + // concatenated with [`process.executable.name`], e.g. `unknown_service:bash`. + // If `process.executable.name` is not available, the value MUST be set to + // `unknown_service`. + // + // [`process.executable.name`]: process.md + ServiceNameKey = attribute.Key("service.name") + + // ServiceNamespaceKey is the attribute Key conforming to the + // "service.namespace" semantic conventions. It represents a namespace for + // `service.name`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Shop" + // Note: A string value having a meaning that helps to distinguish a group of + // services, for example the team name that owns a group of services. + // `service.name` is expected to be unique within the same namespace. If + // `service.namespace` is not specified in the Resource then `service.name` is + // expected to be unique for all services that have no explicit namespace + // defined (so the empty/unspecified namespace is simply one more valid + // namespace). Zero-length namespace string is assumed equal to unspecified + // namespace. + ServiceNamespaceKey = attribute.Key("service.namespace") + + // ServiceVersionKey is the attribute Key conforming to the "service.version" + // semantic conventions. It represents the version string of the service API or + // implementation. The format is not defined by these conventions. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "2.0.0", "a01dbef8a" + ServiceVersionKey = attribute.Key("service.version") +) + +// ServiceInstanceID returns an attribute KeyValue conforming to the +// "service.instance.id" semantic conventions. It represents the string ID of the +// service instance. +func ServiceInstanceID(val string) attribute.KeyValue { + return ServiceInstanceIDKey.String(val) +} + +// ServiceName returns an attribute KeyValue conforming to the "service.name" +// semantic conventions. It represents the logical name of the service. +func ServiceName(val string) attribute.KeyValue { + return ServiceNameKey.String(val) +} + +// ServiceNamespace returns an attribute KeyValue conforming to the +// "service.namespace" semantic conventions. It represents a namespace for +// `service.name`. +func ServiceNamespace(val string) attribute.KeyValue { + return ServiceNamespaceKey.String(val) +} + +// ServiceVersion returns an attribute KeyValue conforming to the +// "service.version" semantic conventions. It represents the version string of +// the service API or implementation. The format is not defined by these +// conventions. +func ServiceVersion(val string) attribute.KeyValue { + return ServiceVersionKey.String(val) +} + +// Namespace: session +const ( + // SessionIDKey is the attribute Key conforming to the "session.id" semantic + // conventions. It represents a unique id to identify a session. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 00112233-4455-6677-8899-aabbccddeeff + SessionIDKey = attribute.Key("session.id") + + // SessionPreviousIDKey is the attribute Key conforming to the + // "session.previous_id" semantic conventions. It represents the previous + // `session.id` for this user, when known. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 00112233-4455-6677-8899-aabbccddeeff + SessionPreviousIDKey = attribute.Key("session.previous_id") +) + +// SessionID returns an attribute KeyValue conforming to the "session.id" +// semantic conventions. It represents a unique id to identify a session. +func SessionID(val string) attribute.KeyValue { + return SessionIDKey.String(val) +} + +// SessionPreviousID returns an attribute KeyValue conforming to the +// "session.previous_id" semantic conventions. It represents the previous +// `session.id` for this user, when known. +func SessionPreviousID(val string) attribute.KeyValue { + return SessionPreviousIDKey.String(val) +} + +// Namespace: signalr +const ( + // SignalRConnectionStatusKey is the attribute Key conforming to the + // "signalr.connection.status" semantic conventions. It represents the signalR + // HTTP connection closure status. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "app_shutdown", "timeout" + SignalRConnectionStatusKey = attribute.Key("signalr.connection.status") + + // SignalRTransportKey is the attribute Key conforming to the + // "signalr.transport" semantic conventions. It represents the + // [SignalR transport type]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "web_sockets", "long_polling" + // + // [SignalR transport type]: https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md + SignalRTransportKey = attribute.Key("signalr.transport") +) + +// Enum values for signalr.connection.status +var ( + // The connection was closed normally. + // Stability: stable + SignalRConnectionStatusNormalClosure = SignalRConnectionStatusKey.String("normal_closure") + // The connection was closed due to a timeout. + // Stability: stable + SignalRConnectionStatusTimeout = SignalRConnectionStatusKey.String("timeout") + // The connection was closed because the app is shutting down. + // Stability: stable + SignalRConnectionStatusAppShutdown = SignalRConnectionStatusKey.String("app_shutdown") +) + +// Enum values for signalr.transport +var ( + // ServerSentEvents protocol + // Stability: stable + SignalRTransportServerSentEvents = SignalRTransportKey.String("server_sent_events") + // LongPolling protocol + // Stability: stable + SignalRTransportLongPolling = SignalRTransportKey.String("long_polling") + // WebSockets protocol + // Stability: stable + SignalRTransportWebSockets = SignalRTransportKey.String("web_sockets") +) + +// Namespace: source +const ( + // SourceAddressKey is the attribute Key conforming to the "source.address" + // semantic conventions. It represents the source address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix domain + // socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "source.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the destination side, and when communicating through + // an intermediary, `source.address` SHOULD represent the source address behind + // any intermediaries, for example proxies, if it's available. + SourceAddressKey = attribute.Key("source.address") + + // SourcePortKey is the attribute Key conforming to the "source.port" semantic + // conventions. It represents the source port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3389, 2888 + SourcePortKey = attribute.Key("source.port") +) + +// SourceAddress returns an attribute KeyValue conforming to the "source.address" +// semantic conventions. It represents the source address - domain name if +// available without reverse DNS lookup; otherwise, IP address or Unix domain +// socket name. +func SourceAddress(val string) attribute.KeyValue { + return SourceAddressKey.String(val) +} + +// SourcePort returns an attribute KeyValue conforming to the "source.port" +// semantic conventions. It represents the source port number. +func SourcePort(val int) attribute.KeyValue { + return SourcePortKey.Int(val) +} + +// Namespace: system +const ( + // SystemCPULogicalNumberKey is the attribute Key conforming to the + // "system.cpu.logical_number" semantic conventions. It represents the + // deprecated, use `cpu.logical_number` instead. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + SystemCPULogicalNumberKey = attribute.Key("system.cpu.logical_number") + + // SystemDeviceKey is the attribute Key conforming to the "system.device" + // semantic conventions. It represents the device identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "(identifier)" + SystemDeviceKey = attribute.Key("system.device") + + // SystemFilesystemModeKey is the attribute Key conforming to the + // "system.filesystem.mode" semantic conventions. It represents the filesystem + // mode. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "rw, ro" + SystemFilesystemModeKey = attribute.Key("system.filesystem.mode") + + // SystemFilesystemMountpointKey is the attribute Key conforming to the + // "system.filesystem.mountpoint" semantic conventions. It represents the + // filesystem mount path. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/mnt/data" + SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint") + + // SystemFilesystemStateKey is the attribute Key conforming to the + // "system.filesystem.state" semantic conventions. It represents the filesystem + // state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "used" + SystemFilesystemStateKey = attribute.Key("system.filesystem.state") + + // SystemFilesystemTypeKey is the attribute Key conforming to the + // "system.filesystem.type" semantic conventions. It represents the filesystem + // type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ext4" + SystemFilesystemTypeKey = attribute.Key("system.filesystem.type") + + // SystemMemoryStateKey is the attribute Key conforming to the + // "system.memory.state" semantic conventions. It represents the memory state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "free", "cached" + SystemMemoryStateKey = attribute.Key("system.memory.state") + + // SystemPagingDirectionKey is the attribute Key conforming to the + // "system.paging.direction" semantic conventions. It represents the paging + // access direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "in" + SystemPagingDirectionKey = attribute.Key("system.paging.direction") + + // SystemPagingStateKey is the attribute Key conforming to the + // "system.paging.state" semantic conventions. It represents the memory paging + // state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "free" + SystemPagingStateKey = attribute.Key("system.paging.state") + + // SystemPagingTypeKey is the attribute Key conforming to the + // "system.paging.type" semantic conventions. It represents the memory paging + // type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "minor" + SystemPagingTypeKey = attribute.Key("system.paging.type") + + // SystemProcessStatusKey is the attribute Key conforming to the + // "system.process.status" semantic conventions. It represents the process + // state, e.g., [Linux Process State Codes]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "running" + // + // [Linux Process State Codes]: https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES + SystemProcessStatusKey = attribute.Key("system.process.status") +) + +// SystemCPULogicalNumber returns an attribute KeyValue conforming to the +// "system.cpu.logical_number" semantic conventions. It represents the +// deprecated, use `cpu.logical_number` instead. +func SystemCPULogicalNumber(val int) attribute.KeyValue { + return SystemCPULogicalNumberKey.Int(val) +} + +// SystemDevice returns an attribute KeyValue conforming to the "system.device" +// semantic conventions. It represents the device identifier. +func SystemDevice(val string) attribute.KeyValue { + return SystemDeviceKey.String(val) +} + +// SystemFilesystemMode returns an attribute KeyValue conforming to the +// "system.filesystem.mode" semantic conventions. It represents the filesystem +// mode. +func SystemFilesystemMode(val string) attribute.KeyValue { + return SystemFilesystemModeKey.String(val) +} + +// SystemFilesystemMountpoint returns an attribute KeyValue conforming to the +// "system.filesystem.mountpoint" semantic conventions. It represents the +// filesystem mount path. +func SystemFilesystemMountpoint(val string) attribute.KeyValue { + return SystemFilesystemMountpointKey.String(val) +} + +// Enum values for system.filesystem.state +var ( + // used + // Stability: development + SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used") + // free + // Stability: development + SystemFilesystemStateFree = SystemFilesystemStateKey.String("free") + // reserved + // Stability: development + SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved") +) + +// Enum values for system.filesystem.type +var ( + // fat32 + // Stability: development + SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32") + // exfat + // Stability: development + SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat") + // ntfs + // Stability: development + SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs") + // refs + // Stability: development + SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs") + // hfsplus + // Stability: development + SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus") + // ext4 + // Stability: development + SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4") +) + +// Enum values for system.memory.state +var ( + // used + // Stability: development + SystemMemoryStateUsed = SystemMemoryStateKey.String("used") + // free + // Stability: development + SystemMemoryStateFree = SystemMemoryStateKey.String("free") + // Deprecated: Removed, report shared memory usage with + // `metric.system.memory.shared` metric. + SystemMemoryStateShared = SystemMemoryStateKey.String("shared") + // buffers + // Stability: development + SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers") + // cached + // Stability: development + SystemMemoryStateCached = SystemMemoryStateKey.String("cached") +) + +// Enum values for system.paging.direction +var ( + // in + // Stability: development + SystemPagingDirectionIn = SystemPagingDirectionKey.String("in") + // out + // Stability: development + SystemPagingDirectionOut = SystemPagingDirectionKey.String("out") +) + +// Enum values for system.paging.state +var ( + // used + // Stability: development + SystemPagingStateUsed = SystemPagingStateKey.String("used") + // free + // Stability: development + SystemPagingStateFree = SystemPagingStateKey.String("free") +) + +// Enum values for system.paging.type +var ( + // major + // Stability: development + SystemPagingTypeMajor = SystemPagingTypeKey.String("major") + // minor + // Stability: development + SystemPagingTypeMinor = SystemPagingTypeKey.String("minor") +) + +// Enum values for system.process.status +var ( + // running + // Stability: development + SystemProcessStatusRunning = SystemProcessStatusKey.String("running") + // sleeping + // Stability: development + SystemProcessStatusSleeping = SystemProcessStatusKey.String("sleeping") + // stopped + // Stability: development + SystemProcessStatusStopped = SystemProcessStatusKey.String("stopped") + // defunct + // Stability: development + SystemProcessStatusDefunct = SystemProcessStatusKey.String("defunct") +) + +// Namespace: telemetry +const ( + // TelemetryDistroNameKey is the attribute Key conforming to the + // "telemetry.distro.name" semantic conventions. It represents the name of the + // auto instrumentation agent or distribution, if used. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "parts-unlimited-java" + // Note: Official auto instrumentation agents and distributions SHOULD set the + // `telemetry.distro.name` attribute to + // a string starting with `opentelemetry-`, e.g. + // `opentelemetry-java-instrumentation`. + TelemetryDistroNameKey = attribute.Key("telemetry.distro.name") + + // TelemetryDistroVersionKey is the attribute Key conforming to the + // "telemetry.distro.version" semantic conventions. It represents the version + // string of the auto instrumentation agent or distribution, if used. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.2.3" + TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version") + + // TelemetrySDKLanguageKey is the attribute Key conforming to the + // "telemetry.sdk.language" semantic conventions. It represents the language of + // the telemetry SDK. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language") + + // TelemetrySDKNameKey is the attribute Key conforming to the + // "telemetry.sdk.name" semantic conventions. It represents the name of the + // telemetry SDK as defined above. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "opentelemetry" + // Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to + // `opentelemetry`. + // If another SDK, like a fork or a vendor-provided implementation, is used, + // this SDK MUST set the + // `telemetry.sdk.name` attribute to the fully-qualified class or module name of + // this SDK's main entry point + // or another suitable identifier depending on the language. + // The identifier `opentelemetry` is reserved and MUST NOT be used in this case. + // All custom identifiers SHOULD be stable across different versions of an + // implementation. + TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name") + + // TelemetrySDKVersionKey is the attribute Key conforming to the + // "telemetry.sdk.version" semantic conventions. It represents the version + // string of the telemetry SDK. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.2.3" + TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version") +) + +// TelemetryDistroName returns an attribute KeyValue conforming to the +// "telemetry.distro.name" semantic conventions. It represents the name of the +// auto instrumentation agent or distribution, if used. +func TelemetryDistroName(val string) attribute.KeyValue { + return TelemetryDistroNameKey.String(val) +} + +// TelemetryDistroVersion returns an attribute KeyValue conforming to the +// "telemetry.distro.version" semantic conventions. It represents the version +// string of the auto instrumentation agent or distribution, if used. +func TelemetryDistroVersion(val string) attribute.KeyValue { + return TelemetryDistroVersionKey.String(val) +} + +// TelemetrySDKName returns an attribute KeyValue conforming to the +// "telemetry.sdk.name" semantic conventions. It represents the name of the +// telemetry SDK as defined above. +func TelemetrySDKName(val string) attribute.KeyValue { + return TelemetrySDKNameKey.String(val) +} + +// TelemetrySDKVersion returns an attribute KeyValue conforming to the +// "telemetry.sdk.version" semantic conventions. It represents the version string +// of the telemetry SDK. +func TelemetrySDKVersion(val string) attribute.KeyValue { + return TelemetrySDKVersionKey.String(val) +} + +// Enum values for telemetry.sdk.language +var ( + // cpp + // Stability: stable + TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp") + // dotnet + // Stability: stable + TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet") + // erlang + // Stability: stable + TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang") + // go + // Stability: stable + TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go") + // java + // Stability: stable + TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java") + // nodejs + // Stability: stable + TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs") + // php + // Stability: stable + TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php") + // python + // Stability: stable + TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python") + // ruby + // Stability: stable + TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby") + // rust + // Stability: stable + TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust") + // swift + // Stability: stable + TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift") + // webjs + // Stability: stable + TelemetrySDKLanguageWebJS = TelemetrySDKLanguageKey.String("webjs") +) + +// Namespace: test +const ( + // TestCaseNameKey is the attribute Key conforming to the "test.case.name" + // semantic conventions. It represents the fully qualified human readable name + // of the [test case]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "org.example.TestCase1.test1", "example/tests/TestCase1.test1", + // "ExampleTestCase1_test1" + // + // [test case]: https://wikipedia.org/wiki/Test_case + TestCaseNameKey = attribute.Key("test.case.name") + + // TestCaseResultStatusKey is the attribute Key conforming to the + // "test.case.result.status" semantic conventions. It represents the status of + // the actual test case result from test execution. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pass", "fail" + TestCaseResultStatusKey = attribute.Key("test.case.result.status") + + // TestSuiteNameKey is the attribute Key conforming to the "test.suite.name" + // semantic conventions. It represents the human readable name of a [test suite] + // . + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TestSuite1" + // + // [test suite]: https://wikipedia.org/wiki/Test_suite + TestSuiteNameKey = attribute.Key("test.suite.name") + + // TestSuiteRunStatusKey is the attribute Key conforming to the + // "test.suite.run.status" semantic conventions. It represents the status of the + // test suite run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "skipped", "aborted", "timed_out", + // "in_progress" + TestSuiteRunStatusKey = attribute.Key("test.suite.run.status") +) + +// TestCaseName returns an attribute KeyValue conforming to the "test.case.name" +// semantic conventions. It represents the fully qualified human readable name of +// the [test case]. +// +// [test case]: https://wikipedia.org/wiki/Test_case +func TestCaseName(val string) attribute.KeyValue { + return TestCaseNameKey.String(val) +} + +// TestSuiteName returns an attribute KeyValue conforming to the +// "test.suite.name" semantic conventions. It represents the human readable name +// of a [test suite]. +// +// [test suite]: https://wikipedia.org/wiki/Test_suite +func TestSuiteName(val string) attribute.KeyValue { + return TestSuiteNameKey.String(val) +} + +// Enum values for test.case.result.status +var ( + // pass + // Stability: development + TestCaseResultStatusPass = TestCaseResultStatusKey.String("pass") + // fail + // Stability: development + TestCaseResultStatusFail = TestCaseResultStatusKey.String("fail") +) + +// Enum values for test.suite.run.status +var ( + // success + // Stability: development + TestSuiteRunStatusSuccess = TestSuiteRunStatusKey.String("success") + // failure + // Stability: development + TestSuiteRunStatusFailure = TestSuiteRunStatusKey.String("failure") + // skipped + // Stability: development + TestSuiteRunStatusSkipped = TestSuiteRunStatusKey.String("skipped") + // aborted + // Stability: development + TestSuiteRunStatusAborted = TestSuiteRunStatusKey.String("aborted") + // timed_out + // Stability: development + TestSuiteRunStatusTimedOut = TestSuiteRunStatusKey.String("timed_out") + // in_progress + // Stability: development + TestSuiteRunStatusInProgress = TestSuiteRunStatusKey.String("in_progress") +) + +// Namespace: thread +const ( + // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic + // conventions. It represents the current "managed" thread ID (as opposed to OS + // thread ID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + ThreadIDKey = attribute.Key("thread.id") + + // ThreadNameKey is the attribute Key conforming to the "thread.name" semantic + // conventions. It represents the current thread name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: main + ThreadNameKey = attribute.Key("thread.name") +) + +// ThreadID returns an attribute KeyValue conforming to the "thread.id" semantic +// conventions. It represents the current "managed" thread ID (as opposed to OS +// thread ID). +func ThreadID(val int) attribute.KeyValue { + return ThreadIDKey.Int(val) +} + +// ThreadName returns an attribute KeyValue conforming to the "thread.name" +// semantic conventions. It represents the current thread name. +func ThreadName(val string) attribute.KeyValue { + return ThreadNameKey.String(val) +} + +// Namespace: tls +const ( + // TLSCipherKey is the attribute Key conforming to the "tls.cipher" semantic + // conventions. It represents the string indicating the [cipher] used during the + // current connection. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", + // "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + // Note: The values allowed for `tls.cipher` MUST be one of the `Descriptions` + // of the [registered TLS Cipher Suits]. + // + // [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5 + // [registered TLS Cipher Suits]: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4 + TLSCipherKey = attribute.Key("tls.cipher") + + // TLSClientCertificateKey is the attribute Key conforming to the + // "tls.client.certificate" semantic conventions. It represents the PEM-encoded + // stand-alone certificate offered by the client. This is usually + // mutually-exclusive of `client.certificate_chain` since this value also exists + // in that list. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII..." + TLSClientCertificateKey = attribute.Key("tls.client.certificate") + + // TLSClientCertificateChainKey is the attribute Key conforming to the + // "tls.client.certificate_chain" semantic conventions. It represents the array + // of PEM-encoded certificates that make up the certificate chain offered by the + // client. This is usually mutually-exclusive of `client.certificate` since that + // value should be the first certificate in the chain. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII...", "MI..." + TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain") + + // TLSClientHashMd5Key is the attribute Key conforming to the + // "tls.client.hash.md5" semantic conventions. It represents the certificate + // fingerprint using the MD5 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC" + TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5") + + // TLSClientHashSha1Key is the attribute Key conforming to the + // "tls.client.hash.sha1" semantic conventions. It represents the certificate + // fingerprint using the SHA1 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A" + TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1") + + // TLSClientHashSha256Key is the attribute Key conforming to the + // "tls.client.hash.sha256" semantic conventions. It represents the certificate + // fingerprint using the SHA256 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0" + TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256") + + // TLSClientIssuerKey is the attribute Key conforming to the "tls.client.issuer" + // semantic conventions. It represents the distinguished name of [subject] of + // the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + // + // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 + TLSClientIssuerKey = attribute.Key("tls.client.issuer") + + // TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3" + // semantic conventions. It represents a hash that identifies clients based on + // how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "d4e5b18d6b55c71272893221c96ba240" + TLSClientJa3Key = attribute.Key("tls.client.ja3") + + // TLSClientNotAfterKey is the attribute Key conforming to the + // "tls.client.not_after" semantic conventions. It represents the date/Time + // indicating when client certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T00:00:00.000Z" + TLSClientNotAfterKey = attribute.Key("tls.client.not_after") + + // TLSClientNotBeforeKey is the attribute Key conforming to the + // "tls.client.not_before" semantic conventions. It represents the date/Time + // indicating when client certificate is first considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1970-01-01T00:00:00.000Z" + TLSClientNotBeforeKey = attribute.Key("tls.client.not_before") + + // TLSClientSubjectKey is the attribute Key conforming to the + // "tls.client.subject" semantic conventions. It represents the distinguished + // name of subject of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=myclient, OU=Documentation Team, DC=example, DC=com" + TLSClientSubjectKey = attribute.Key("tls.client.subject") + + // TLSClientSupportedCiphersKey is the attribute Key conforming to the + // "tls.client.supported_ciphers" semantic conventions. It represents the array + // of ciphers offered by the client during the client hello. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + // "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers") + + // TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic + // conventions. It represents the string indicating the curve used for the given + // cipher, when applicable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "secp256r1" + TLSCurveKey = attribute.Key("tls.curve") + + // TLSEstablishedKey is the attribute Key conforming to the "tls.established" + // semantic conventions. It represents the boolean flag indicating if the TLS + // negotiation was successful and transitioned to an encrypted tunnel. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: true + TLSEstablishedKey = attribute.Key("tls.established") + + // TLSNextProtocolKey is the attribute Key conforming to the "tls.next_protocol" + // semantic conventions. It represents the string indicating the protocol being + // tunneled. Per the values in the [IANA registry], this string should be lower + // case. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "http/1.1" + // + // [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + TLSNextProtocolKey = attribute.Key("tls.next_protocol") + + // TLSProtocolNameKey is the attribute Key conforming to the "tls.protocol.name" + // semantic conventions. It represents the normalized lowercase protocol name + // parsed from original string of the negotiated [SSL/TLS protocol version]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values + TLSProtocolNameKey = attribute.Key("tls.protocol.name") + + // TLSProtocolVersionKey is the attribute Key conforming to the + // "tls.protocol.version" semantic conventions. It represents the numeric part + // of the version parsed from the original string of the negotiated + // [SSL/TLS protocol version]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.2", "3" + // + // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values + TLSProtocolVersionKey = attribute.Key("tls.protocol.version") + + // TLSResumedKey is the attribute Key conforming to the "tls.resumed" semantic + // conventions. It represents the boolean flag indicating if this TLS connection + // was resumed from an existing TLS negotiation. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: true + TLSResumedKey = attribute.Key("tls.resumed") + + // TLSServerCertificateKey is the attribute Key conforming to the + // "tls.server.certificate" semantic conventions. It represents the PEM-encoded + // stand-alone certificate offered by the server. This is usually + // mutually-exclusive of `server.certificate_chain` since this value also exists + // in that list. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII..." + TLSServerCertificateKey = attribute.Key("tls.server.certificate") + + // TLSServerCertificateChainKey is the attribute Key conforming to the + // "tls.server.certificate_chain" semantic conventions. It represents the array + // of PEM-encoded certificates that make up the certificate chain offered by the + // server. This is usually mutually-exclusive of `server.certificate` since that + // value should be the first certificate in the chain. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII...", "MI..." + TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain") + + // TLSServerHashMd5Key is the attribute Key conforming to the + // "tls.server.hash.md5" semantic conventions. It represents the certificate + // fingerprint using the MD5 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC" + TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5") + + // TLSServerHashSha1Key is the attribute Key conforming to the + // "tls.server.hash.sha1" semantic conventions. It represents the certificate + // fingerprint using the SHA1 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A" + TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1") + + // TLSServerHashSha256Key is the attribute Key conforming to the + // "tls.server.hash.sha256" semantic conventions. It represents the certificate + // fingerprint using the SHA256 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0" + TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256") + + // TLSServerIssuerKey is the attribute Key conforming to the "tls.server.issuer" + // semantic conventions. It represents the distinguished name of [subject] of + // the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + // + // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 + TLSServerIssuerKey = attribute.Key("tls.server.issuer") + + // TLSServerJa3sKey is the attribute Key conforming to the "tls.server.ja3s" + // semantic conventions. It represents a hash that identifies servers based on + // how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "d4e5b18d6b55c71272893221c96ba240" + TLSServerJa3sKey = attribute.Key("tls.server.ja3s") + + // TLSServerNotAfterKey is the attribute Key conforming to the + // "tls.server.not_after" semantic conventions. It represents the date/Time + // indicating when server certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T00:00:00.000Z" + TLSServerNotAfterKey = attribute.Key("tls.server.not_after") + + // TLSServerNotBeforeKey is the attribute Key conforming to the + // "tls.server.not_before" semantic conventions. It represents the date/Time + // indicating when server certificate is first considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1970-01-01T00:00:00.000Z" + TLSServerNotBeforeKey = attribute.Key("tls.server.not_before") + + // TLSServerSubjectKey is the attribute Key conforming to the + // "tls.server.subject" semantic conventions. It represents the distinguished + // name of subject of the x.509 certificate presented by the server. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=myserver, OU=Documentation Team, DC=example, DC=com" + TLSServerSubjectKey = attribute.Key("tls.server.subject") +) + +// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher" +// semantic conventions. It represents the string indicating the [cipher] used +// during the current connection. +// +// [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5 +func TLSCipher(val string) attribute.KeyValue { + return TLSCipherKey.String(val) +} + +// TLSClientCertificate returns an attribute KeyValue conforming to the +// "tls.client.certificate" semantic conventions. It represents the PEM-encoded +// stand-alone certificate offered by the client. This is usually +// mutually-exclusive of `client.certificate_chain` since this value also exists +// in that list. +func TLSClientCertificate(val string) attribute.KeyValue { + return TLSClientCertificateKey.String(val) +} + +// TLSClientCertificateChain returns an attribute KeyValue conforming to the +// "tls.client.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by the +// client. This is usually mutually-exclusive of `client.certificate` since that +// value should be the first certificate in the chain. +func TLSClientCertificateChain(val ...string) attribute.KeyValue { + return TLSClientCertificateChainKey.StringSlice(val) +} + +// TLSClientHashMd5 returns an attribute KeyValue conforming to the +// "tls.client.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate offered +// by the client. For consistency with other hash values, this value should be +// formatted as an uppercase hash. +func TLSClientHashMd5(val string) attribute.KeyValue { + return TLSClientHashMd5Key.String(val) +} + +// TLSClientHashSha1 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha1(val string) attribute.KeyValue { + return TLSClientHashSha1Key.String(val) +} + +// TLSClientHashSha256 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha256(val string) attribute.KeyValue { + return TLSClientHashSha256Key.String(val) +} + +// TLSClientIssuer returns an attribute KeyValue conforming to the +// "tls.client.issuer" semantic conventions. It represents the distinguished name +// of [subject] of the issuer of the x.509 certificate presented by the client. +// +// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 +func TLSClientIssuer(val string) attribute.KeyValue { + return TLSClientIssuerKey.String(val) +} + +// TLSClientJa3 returns an attribute KeyValue conforming to the "tls.client.ja3" +// semantic conventions. It represents a hash that identifies clients based on +// how they perform an SSL/TLS handshake. +func TLSClientJa3(val string) attribute.KeyValue { + return TLSClientJa3Key.String(val) +} + +// TLSClientNotAfter returns an attribute KeyValue conforming to the +// "tls.client.not_after" semantic conventions. It represents the date/Time +// indicating when client certificate is no longer considered valid. +func TLSClientNotAfter(val string) attribute.KeyValue { + return TLSClientNotAfterKey.String(val) +} + +// TLSClientNotBefore returns an attribute KeyValue conforming to the +// "tls.client.not_before" semantic conventions. It represents the date/Time +// indicating when client certificate is first considered valid. +func TLSClientNotBefore(val string) attribute.KeyValue { + return TLSClientNotBeforeKey.String(val) +} + +// TLSClientSubject returns an attribute KeyValue conforming to the +// "tls.client.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the client. +func TLSClientSubject(val string) attribute.KeyValue { + return TLSClientSubjectKey.String(val) +} + +// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the +// "tls.client.supported_ciphers" semantic conventions. It represents the array +// of ciphers offered by the client during the client hello. +func TLSClientSupportedCiphers(val ...string) attribute.KeyValue { + return TLSClientSupportedCiphersKey.StringSlice(val) +} + +// TLSCurve returns an attribute KeyValue conforming to the "tls.curve" semantic +// conventions. It represents the string indicating the curve used for the given +// cipher, when applicable. +func TLSCurve(val string) attribute.KeyValue { + return TLSCurveKey.String(val) +} + +// TLSEstablished returns an attribute KeyValue conforming to the +// "tls.established" semantic conventions. It represents the boolean flag +// indicating if the TLS negotiation was successful and transitioned to an +// encrypted tunnel. +func TLSEstablished(val bool) attribute.KeyValue { + return TLSEstablishedKey.Bool(val) +} + +// TLSNextProtocol returns an attribute KeyValue conforming to the +// "tls.next_protocol" semantic conventions. It represents the string indicating +// the protocol being tunneled. Per the values in the [IANA registry], this +// string should be lower case. +// +// [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids +func TLSNextProtocol(val string) attribute.KeyValue { + return TLSNextProtocolKey.String(val) +} + +// TLSProtocolVersion returns an attribute KeyValue conforming to the +// "tls.protocol.version" semantic conventions. It represents the numeric part of +// the version parsed from the original string of the negotiated +// [SSL/TLS protocol version]. +// +// [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values +func TLSProtocolVersion(val string) attribute.KeyValue { + return TLSProtocolVersionKey.String(val) +} + +// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed" +// semantic conventions. It represents the boolean flag indicating if this TLS +// connection was resumed from an existing TLS negotiation. +func TLSResumed(val bool) attribute.KeyValue { + return TLSResumedKey.Bool(val) +} + +// TLSServerCertificate returns an attribute KeyValue conforming to the +// "tls.server.certificate" semantic conventions. It represents the PEM-encoded +// stand-alone certificate offered by the server. This is usually +// mutually-exclusive of `server.certificate_chain` since this value also exists +// in that list. +func TLSServerCertificate(val string) attribute.KeyValue { + return TLSServerCertificateKey.String(val) +} + +// TLSServerCertificateChain returns an attribute KeyValue conforming to the +// "tls.server.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by the +// server. This is usually mutually-exclusive of `server.certificate` since that +// value should be the first certificate in the chain. +func TLSServerCertificateChain(val ...string) attribute.KeyValue { + return TLSServerCertificateChainKey.StringSlice(val) +} + +// TLSServerHashMd5 returns an attribute KeyValue conforming to the +// "tls.server.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate offered +// by the server. For consistency with other hash values, this value should be +// formatted as an uppercase hash. +func TLSServerHashMd5(val string) attribute.KeyValue { + return TLSServerHashMd5Key.String(val) +} + +// TLSServerHashSha1 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha1(val string) attribute.KeyValue { + return TLSServerHashSha1Key.String(val) +} + +// TLSServerHashSha256 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha256(val string) attribute.KeyValue { + return TLSServerHashSha256Key.String(val) +} + +// TLSServerIssuer returns an attribute KeyValue conforming to the +// "tls.server.issuer" semantic conventions. It represents the distinguished name +// of [subject] of the issuer of the x.509 certificate presented by the client. +// +// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 +func TLSServerIssuer(val string) attribute.KeyValue { + return TLSServerIssuerKey.String(val) +} + +// TLSServerJa3s returns an attribute KeyValue conforming to the +// "tls.server.ja3s" semantic conventions. It represents a hash that identifies +// servers based on how they perform an SSL/TLS handshake. +func TLSServerJa3s(val string) attribute.KeyValue { + return TLSServerJa3sKey.String(val) +} + +// TLSServerNotAfter returns an attribute KeyValue conforming to the +// "tls.server.not_after" semantic conventions. It represents the date/Time +// indicating when server certificate is no longer considered valid. +func TLSServerNotAfter(val string) attribute.KeyValue { + return TLSServerNotAfterKey.String(val) +} + +// TLSServerNotBefore returns an attribute KeyValue conforming to the +// "tls.server.not_before" semantic conventions. It represents the date/Time +// indicating when server certificate is first considered valid. +func TLSServerNotBefore(val string) attribute.KeyValue { + return TLSServerNotBeforeKey.String(val) +} + +// TLSServerSubject returns an attribute KeyValue conforming to the +// "tls.server.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the server. +func TLSServerSubject(val string) attribute.KeyValue { + return TLSServerSubjectKey.String(val) +} + +// Enum values for tls.protocol.name +var ( + // ssl + // Stability: development + TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl") + // tls + // Stability: development + TLSProtocolNameTLS = TLSProtocolNameKey.String("tls") +) + +// Namespace: url +const ( + // URLDomainKey is the attribute Key conforming to the "url.domain" semantic + // conventions. It represents the domain extracted from the `url.full`, such as + // "opentelemetry.io". + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "www.foo.bar", "opentelemetry.io", "3.12.167.2", + // "[1080:0:0:0:8:800:200C:417A]" + // Note: In some cases a URL may refer to an IP and/or port directly, without a + // domain name. In this case, the IP address would go to the domain field. If + // the URL contains a [literal IPv6 address] enclosed by `[` and `]`, the `[` + // and `]` characters should also be captured in the domain field. + // + // [literal IPv6 address]: https://www.rfc-editor.org/rfc/rfc2732#section-2 + URLDomainKey = attribute.Key("url.domain") + + // URLExtensionKey is the attribute Key conforming to the "url.extension" + // semantic conventions. It represents the file extension extracted from the + // `url.full`, excluding the leading dot. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "png", "gz" + // Note: The file extension is only set if it exists, as not every url has a + // file extension. When the file name has multiple extensions `example.tar.gz`, + // only the last one should be captured `gz`, not `tar.gz`. + URLExtensionKey = attribute.Key("url.extension") + + // URLFragmentKey is the attribute Key conforming to the "url.fragment" semantic + // conventions. It represents the [URI fragment] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SemConv" + // + // [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5 + URLFragmentKey = attribute.Key("url.fragment") + + // URLFullKey is the attribute Key conforming to the "url.full" semantic + // conventions. It represents the absolute URL describing a network resource + // according to [RFC3986]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", "//localhost" + // Note: For network calls, URL usually has + // `scheme://host[:port][path][?query][#fragment]` format, where the fragment + // is not transmitted over HTTP, but if it is known, it SHOULD be included + // nevertheless. + // + // `url.full` MUST NOT contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. + // In such case username and password SHOULD be redacted and attribute's value + // SHOULD be `https://REDACTED:REDACTED@www.example.com/`. + // + // `url.full` SHOULD capture the absolute URL when it is available (or can be + // reconstructed). + // + // Sensitive content provided in `url.full` SHOULD be scrubbed when + // instrumentations can identify it. + // + // + // Query string values for the following keys SHOULD be redacted by default and + // replaced by the + // value `REDACTED`: + // + // - [`AWSAccessKeyId`] + // - [`Signature`] + // - [`sig`] + // - [`X-Goog-Signature`] + // + // This list is subject to change over time. + // + // When a query string value is redacted, the query string key SHOULD still be + // preserved, e.g. + // `https://www.example.com/path?color=blue&sig=REDACTED`. + // + // [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986 + // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token + // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls + URLFullKey = attribute.Key("url.full") + + // URLOriginalKey is the attribute Key conforming to the "url.original" semantic + // conventions. It represents the unmodified original URL as seen in the event + // source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", + // "search?q=OpenTelemetry" + // Note: In network monitoring, the observed URL may be a full URL, whereas in + // access logs, the URL is often just represented as a path. This field is meant + // to represent the URL as it was observed, complete or not. + // `url.original` might contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. In such case password and + // username SHOULD NOT be redacted and attribute's value SHOULD remain the same. + URLOriginalKey = attribute.Key("url.original") + + // URLPathKey is the attribute Key conforming to the "url.path" semantic + // conventions. It represents the [URI path] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "/search" + // Note: Sensitive content provided in `url.path` SHOULD be scrubbed when + // instrumentations can identify it. + // + // [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3 + URLPathKey = attribute.Key("url.path") + + // URLPortKey is the attribute Key conforming to the "url.port" semantic + // conventions. It represents the port extracted from the `url.full`. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 443 + URLPortKey = attribute.Key("url.port") + + // URLQueryKey is the attribute Key conforming to the "url.query" semantic + // conventions. It represents the [URI query] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "q=OpenTelemetry" + // Note: Sensitive content provided in `url.query` SHOULD be scrubbed when + // instrumentations can identify it. + // + // + // Query string values for the following keys SHOULD be redacted by default and + // replaced by the value `REDACTED`: + // + // - [`AWSAccessKeyId`] + // - [`Signature`] + // - [`sig`] + // - [`X-Goog-Signature`] + // + // This list is subject to change over time. + // + // When a query string value is redacted, the query string key SHOULD still be + // preserved, e.g. + // `q=OpenTelemetry&sig=REDACTED`. + // + // [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4 + // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token + // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls + URLQueryKey = attribute.Key("url.query") + + // URLRegisteredDomainKey is the attribute Key conforming to the + // "url.registered_domain" semantic conventions. It represents the highest + // registered url domain, stripped of the subdomain. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "example.com", "foo.co.uk" + // Note: This value can be determined precisely with the [public suffix list]. + // For example, the registered domain for `foo.example.com` is `example.com`. + // Trying to approximate this by simply taking the last two labels will not work + // well for TLDs such as `co.uk`. + // + // [public suffix list]: https://publicsuffix.org/ + URLRegisteredDomainKey = attribute.Key("url.registered_domain") + + // URLSchemeKey is the attribute Key conforming to the "url.scheme" semantic + // conventions. It represents the [URI scheme] component identifying the used + // protocol. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "https", "ftp", "telnet" + // + // [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 + URLSchemeKey = attribute.Key("url.scheme") + + // URLSubdomainKey is the attribute Key conforming to the "url.subdomain" + // semantic conventions. It represents the subdomain portion of a fully + // qualified domain name includes all of the names except the host name under + // the registered_domain. In a partially qualified domain, or if the + // qualification level of the full name cannot be determined, subdomain contains + // all of the names below the registered domain. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "east", "sub2.sub1" + // Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the + // domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the + // subdomain field should contain `sub2.sub1`, with no trailing period. + URLSubdomainKey = attribute.Key("url.subdomain") + + // URLTemplateKey is the attribute Key conforming to the "url.template" semantic + // conventions. It represents the low-cardinality template of an + // [absolute path reference]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/users/{id}", "/users/:id", "/users?id={id}" + // + // [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 + URLTemplateKey = attribute.Key("url.template") + + // URLTopLevelDomainKey is the attribute Key conforming to the + // "url.top_level_domain" semantic conventions. It represents the effective top + // level domain (eTLD), also known as the domain suffix, is the last part of the + // domain name. For example, the top level domain for example.com is `com`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "com", "co.uk" + // Note: This value can be determined precisely with the [public suffix list]. + // + // [public suffix list]: https://publicsuffix.org/ + URLTopLevelDomainKey = attribute.Key("url.top_level_domain") +) + +// URLDomain returns an attribute KeyValue conforming to the "url.domain" +// semantic conventions. It represents the domain extracted from the `url.full`, +// such as "opentelemetry.io". +func URLDomain(val string) attribute.KeyValue { + return URLDomainKey.String(val) +} + +// URLExtension returns an attribute KeyValue conforming to the "url.extension" +// semantic conventions. It represents the file extension extracted from the +// `url.full`, excluding the leading dot. +func URLExtension(val string) attribute.KeyValue { + return URLExtensionKey.String(val) +} + +// URLFragment returns an attribute KeyValue conforming to the "url.fragment" +// semantic conventions. It represents the [URI fragment] component. +// +// [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5 +func URLFragment(val string) attribute.KeyValue { + return URLFragmentKey.String(val) +} + +// URLFull returns an attribute KeyValue conforming to the "url.full" semantic +// conventions. It represents the absolute URL describing a network resource +// according to [RFC3986]. +// +// [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986 +func URLFull(val string) attribute.KeyValue { + return URLFullKey.String(val) +} + +// URLOriginal returns an attribute KeyValue conforming to the "url.original" +// semantic conventions. It represents the unmodified original URL as seen in the +// event source. +func URLOriginal(val string) attribute.KeyValue { + return URLOriginalKey.String(val) +} + +// URLPath returns an attribute KeyValue conforming to the "url.path" semantic +// conventions. It represents the [URI path] component. +// +// [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3 +func URLPath(val string) attribute.KeyValue { + return URLPathKey.String(val) +} + +// URLPort returns an attribute KeyValue conforming to the "url.port" semantic +// conventions. It represents the port extracted from the `url.full`. +func URLPort(val int) attribute.KeyValue { + return URLPortKey.Int(val) +} + +// URLQuery returns an attribute KeyValue conforming to the "url.query" semantic +// conventions. It represents the [URI query] component. +// +// [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4 +func URLQuery(val string) attribute.KeyValue { + return URLQueryKey.String(val) +} + +// URLRegisteredDomain returns an attribute KeyValue conforming to the +// "url.registered_domain" semantic conventions. It represents the highest +// registered url domain, stripped of the subdomain. +func URLRegisteredDomain(val string) attribute.KeyValue { + return URLRegisteredDomainKey.String(val) +} + +// URLScheme returns an attribute KeyValue conforming to the "url.scheme" +// semantic conventions. It represents the [URI scheme] component identifying the +// used protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func URLScheme(val string) attribute.KeyValue { + return URLSchemeKey.String(val) +} + +// URLSubdomain returns an attribute KeyValue conforming to the "url.subdomain" +// semantic conventions. It represents the subdomain portion of a fully qualified +// domain name includes all of the names except the host name under the +// registered_domain. In a partially qualified domain, or if the qualification +// level of the full name cannot be determined, subdomain contains all of the +// names below the registered domain. +func URLSubdomain(val string) attribute.KeyValue { + return URLSubdomainKey.String(val) +} + +// URLTemplate returns an attribute KeyValue conforming to the "url.template" +// semantic conventions. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func URLTemplate(val string) attribute.KeyValue { + return URLTemplateKey.String(val) +} + +// URLTopLevelDomain returns an attribute KeyValue conforming to the +// "url.top_level_domain" semantic conventions. It represents the effective top +// level domain (eTLD), also known as the domain suffix, is the last part of the +// domain name. For example, the top level domain for example.com is `com`. +func URLTopLevelDomain(val string) attribute.KeyValue { + return URLTopLevelDomainKey.String(val) +} + +// Namespace: user +const ( + // UserEmailKey is the attribute Key conforming to the "user.email" semantic + // conventions. It represents the user email address. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a.einstein@example.com" + UserEmailKey = attribute.Key("user.email") + + // UserFullNameKey is the attribute Key conforming to the "user.full_name" + // semantic conventions. It represents the user's full name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Albert Einstein" + UserFullNameKey = attribute.Key("user.full_name") + + // UserHashKey is the attribute Key conforming to the "user.hash" semantic + // conventions. It represents the unique user hash to correlate information for + // a user in anonymized form. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "364fc68eaf4c8acec74a4e52d7d1feaa" + // Note: Useful if `user.id` or `user.name` contain confidential information and + // cannot be used. + UserHashKey = attribute.Key("user.hash") + + // UserIDKey is the attribute Key conforming to the "user.id" semantic + // conventions. It represents the unique identifier of the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "S-1-5-21-202424912787-2692429404-2351956786-1000" + UserIDKey = attribute.Key("user.id") + + // UserNameKey is the attribute Key conforming to the "user.name" semantic + // conventions. It represents the short name or login/username of the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a.einstein" + UserNameKey = attribute.Key("user.name") + + // UserRolesKey is the attribute Key conforming to the "user.roles" semantic + // conventions. It represents the array of user roles at the time of the event. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "admin", "reporting_user" + UserRolesKey = attribute.Key("user.roles") +) + +// UserEmail returns an attribute KeyValue conforming to the "user.email" +// semantic conventions. It represents the user email address. +func UserEmail(val string) attribute.KeyValue { + return UserEmailKey.String(val) +} + +// UserFullName returns an attribute KeyValue conforming to the "user.full_name" +// semantic conventions. It represents the user's full name. +func UserFullName(val string) attribute.KeyValue { + return UserFullNameKey.String(val) +} + +// UserHash returns an attribute KeyValue conforming to the "user.hash" semantic +// conventions. It represents the unique user hash to correlate information for a +// user in anonymized form. +func UserHash(val string) attribute.KeyValue { + return UserHashKey.String(val) +} + +// UserID returns an attribute KeyValue conforming to the "user.id" semantic +// conventions. It represents the unique identifier of the user. +func UserID(val string) attribute.KeyValue { + return UserIDKey.String(val) +} + +// UserName returns an attribute KeyValue conforming to the "user.name" semantic +// conventions. It represents the short name or login/username of the user. +func UserName(val string) attribute.KeyValue { + return UserNameKey.String(val) +} + +// UserRoles returns an attribute KeyValue conforming to the "user.roles" +// semantic conventions. It represents the array of user roles at the time of the +// event. +func UserRoles(val ...string) attribute.KeyValue { + return UserRolesKey.StringSlice(val) +} + +// Namespace: user_agent +const ( + // UserAgentNameKey is the attribute Key conforming to the "user_agent.name" + // semantic conventions. It represents the name of the user-agent extracted from + // original. Usually refers to the browser's name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Safari", "YourApp" + // Note: [Example] of extracting browser's name from original string. In the + // case of using a user-agent for non-browser products, such as microservices + // with multiple names/versions inside the `user_agent.original`, the most + // significant name SHOULD be selected. In such a scenario it should align with + // `user_agent.version` + // + // [Example]: https://www.whatsmyua.info + UserAgentNameKey = attribute.Key("user_agent.name") + + // UserAgentOriginalKey is the attribute Key conforming to the + // "user_agent.original" semantic conventions. It represents the value of the + // [HTTP User-Agent] header sent by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "CERN-LineMode/2.15 libwww/2.17b3", "Mozilla/5.0 (iPhone; CPU + // iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) + // Version/14.1.2 Mobile/15E148 Safari/604.1", "YourApp/1.0.0 + // grpc-java-okhttp/1.27.2" + // + // [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent + UserAgentOriginalKey = attribute.Key("user_agent.original") + + // UserAgentOSNameKey is the attribute Key conforming to the + // "user_agent.os.name" semantic conventions. It represents the human readable + // operating system name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iOS", "Android", "Ubuntu" + // Note: For mapping user agent strings to OS names, libraries such as + // [ua-parser] can be utilized. + // + // [ua-parser]: https://github.com/ua-parser + UserAgentOSNameKey = attribute.Key("user_agent.os.name") + + // UserAgentOSVersionKey is the attribute Key conforming to the + // "user_agent.os.version" semantic conventions. It represents the version + // string of the operating system as defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.2.1", "18.04.1" + // Note: For mapping user agent strings to OS versions, libraries such as + // [ua-parser] can be utilized. + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + // [ua-parser]: https://github.com/ua-parser + UserAgentOSVersionKey = attribute.Key("user_agent.os.version") + + // UserAgentSyntheticTypeKey is the attribute Key conforming to the + // "user_agent.synthetic.type" semantic conventions. It represents the specifies + // the category of synthetic traffic, such as tests or bots. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This attribute MAY be derived from the contents of the + // `user_agent.original` attribute. Components that populate the attribute are + // responsible for determining what they consider to be synthetic bot or test + // traffic. This attribute can either be set for self-identification purposes, + // or on telemetry detected to be generated as a result of a synthetic request. + // This attribute is useful for distinguishing between genuine client traffic + // and synthetic traffic generated by bots or tests. + UserAgentSyntheticTypeKey = attribute.Key("user_agent.synthetic.type") + + // UserAgentVersionKey is the attribute Key conforming to the + // "user_agent.version" semantic conventions. It represents the version of the + // user-agent extracted from original. Usually refers to the browser's version. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.1.2", "1.0.0" + // Note: [Example] of extracting browser's version from original string. In the + // case of using a user-agent for non-browser products, such as microservices + // with multiple names/versions inside the `user_agent.original`, the most + // significant version SHOULD be selected. In such a scenario it should align + // with `user_agent.name` + // + // [Example]: https://www.whatsmyua.info + UserAgentVersionKey = attribute.Key("user_agent.version") +) + +// UserAgentName returns an attribute KeyValue conforming to the +// "user_agent.name" semantic conventions. It represents the name of the +// user-agent extracted from original. Usually refers to the browser's name. +func UserAgentName(val string) attribute.KeyValue { + return UserAgentNameKey.String(val) +} + +// UserAgentOriginal returns an attribute KeyValue conforming to the +// "user_agent.original" semantic conventions. It represents the value of the +// [HTTP User-Agent] header sent by the client. +// +// [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent +func UserAgentOriginal(val string) attribute.KeyValue { + return UserAgentOriginalKey.String(val) +} + +// UserAgentOSName returns an attribute KeyValue conforming to the +// "user_agent.os.name" semantic conventions. It represents the human readable +// operating system name. +func UserAgentOSName(val string) attribute.KeyValue { + return UserAgentOSNameKey.String(val) +} + +// UserAgentOSVersion returns an attribute KeyValue conforming to the +// "user_agent.os.version" semantic conventions. It represents the version string +// of the operating system as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func UserAgentOSVersion(val string) attribute.KeyValue { + return UserAgentOSVersionKey.String(val) +} + +// UserAgentVersion returns an attribute KeyValue conforming to the +// "user_agent.version" semantic conventions. It represents the version of the +// user-agent extracted from original. Usually refers to the browser's version. +func UserAgentVersion(val string) attribute.KeyValue { + return UserAgentVersionKey.String(val) +} + +// Enum values for user_agent.synthetic.type +var ( + // Bot source. + // Stability: development + UserAgentSyntheticTypeBot = UserAgentSyntheticTypeKey.String("bot") + // Synthetic test source. + // Stability: development + UserAgentSyntheticTypeTest = UserAgentSyntheticTypeKey.String("test") +) + +// Namespace: vcs +const ( + // VCSChangeIDKey is the attribute Key conforming to the "vcs.change.id" + // semantic conventions. It represents the ID of the change (pull request/merge + // request/changelist) if applicable. This is usually a unique (within + // repository) identifier generated by the VCS system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123" + VCSChangeIDKey = attribute.Key("vcs.change.id") + + // VCSChangeStateKey is the attribute Key conforming to the "vcs.change.state" + // semantic conventions. It represents the state of the change (pull + // request/merge request/changelist). + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "open", "closed", "merged" + VCSChangeStateKey = attribute.Key("vcs.change.state") + + // VCSChangeTitleKey is the attribute Key conforming to the "vcs.change.title" + // semantic conventions. It represents the human readable title of the change + // (pull request/merge request/changelist). This title is often a brief summary + // of the change and may get merged in to a ref as the commit summary. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Fixes broken thing", "feat: add my new feature", "[chore] update + // dependency" + VCSChangeTitleKey = attribute.Key("vcs.change.title") + + // VCSLineChangeTypeKey is the attribute Key conforming to the + // "vcs.line_change.type" semantic conventions. It represents the type of line + // change being measured on a branch or change. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "added", "removed" + VCSLineChangeTypeKey = attribute.Key("vcs.line_change.type") + + // VCSOwnerNameKey is the attribute Key conforming to the "vcs.owner.name" + // semantic conventions. It represents the group owner within the version + // control system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-org", "myteam", "business-unit" + VCSOwnerNameKey = attribute.Key("vcs.owner.name") + + // VCSProviderNameKey is the attribute Key conforming to the "vcs.provider.name" + // semantic conventions. It represents the name of the version control system + // provider. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "github", "gitlab", "gitea", "bitbucket" + VCSProviderNameKey = attribute.Key("vcs.provider.name") + + // VCSRefBaseNameKey is the attribute Key conforming to the "vcs.ref.base.name" + // semantic conventions. It represents the name of the [reference] such as + // **branch** or **tag** in the repository. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-feature-branch", "tag-1-test" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefBaseNameKey = attribute.Key("vcs.ref.base.name") + + // VCSRefBaseRevisionKey is the attribute Key conforming to the + // "vcs.ref.base.revision" semantic conventions. It represents the revision, + // literally [revised version], The revision most often refers to a commit + // object in Git, or a revision number in SVN. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc", + // "main", "123", "HEAD" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. The + // revision can be a full [hash value (see + // glossary)], + // of the recorded change to a ref within a repository pointing to a + // commit [commit] object. It does + // not necessarily have to be a hash; it can simply define a [revision + // number] + // which is an integer that is monotonically increasing. In cases where + // it is identical to the `ref.base.name`, it SHOULD still be included. + // It is up to the implementer to decide which value to set as the + // revision based on the VCS system and situational context. + // + // [revised version]: https://www.merriam-webster.com/dictionary/revision + // [hash value (see + // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [commit]: https://git-scm.com/docs/git-commit + // [revision + // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html + VCSRefBaseRevisionKey = attribute.Key("vcs.ref.base.revision") + + // VCSRefBaseTypeKey is the attribute Key conforming to the "vcs.ref.base.type" + // semantic conventions. It represents the type of the [reference] in the + // repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefBaseTypeKey = attribute.Key("vcs.ref.base.type") + + // VCSRefHeadNameKey is the attribute Key conforming to the "vcs.ref.head.name" + // semantic conventions. It represents the name of the [reference] such as + // **branch** or **tag** in the repository. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-feature-branch", "tag-1-test" + // Note: `head` refers to where you are right now; the current reference at a + // given time. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefHeadNameKey = attribute.Key("vcs.ref.head.name") + + // VCSRefHeadRevisionKey is the attribute Key conforming to the + // "vcs.ref.head.revision" semantic conventions. It represents the revision, + // literally [revised version], The revision most often refers to a commit + // object in Git, or a revision number in SVN. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc", + // "main", "123", "HEAD" + // Note: `head` refers to where you are right now; the current reference at a + // given time.The revision can be a full [hash value (see + // glossary)], + // of the recorded change to a ref within a repository pointing to a + // commit [commit] object. It does + // not necessarily have to be a hash; it can simply define a [revision + // number] + // which is an integer that is monotonically increasing. In cases where + // it is identical to the `ref.head.name`, it SHOULD still be included. + // It is up to the implementer to decide which value to set as the + // revision based on the VCS system and situational context. + // + // [revised version]: https://www.merriam-webster.com/dictionary/revision + // [hash value (see + // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [commit]: https://git-scm.com/docs/git-commit + // [revision + // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html + VCSRefHeadRevisionKey = attribute.Key("vcs.ref.head.revision") + + // VCSRefHeadTypeKey is the attribute Key conforming to the "vcs.ref.head.type" + // semantic conventions. It represents the type of the [reference] in the + // repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // Note: `head` refers to where you are right now; the current reference at a + // given time. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefHeadTypeKey = attribute.Key("vcs.ref.head.type") + + // VCSRefTypeKey is the attribute Key conforming to the "vcs.ref.type" semantic + // conventions. It represents the type of the [reference] in the repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefTypeKey = attribute.Key("vcs.ref.type") + + // VCSRepositoryNameKey is the attribute Key conforming to the + // "vcs.repository.name" semantic conventions. It represents the human readable + // name of the repository. It SHOULD NOT include any additional identifier like + // Group/SubGroup in GitLab or organization in GitHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "semantic-conventions", "my-cool-repo" + // Note: Due to it only being the name, it can clash with forks of the same + // repository if collecting telemetry across multiple orgs or groups in + // the same backends. + VCSRepositoryNameKey = attribute.Key("vcs.repository.name") + + // VCSRepositoryURLFullKey is the attribute Key conforming to the + // "vcs.repository.url.full" semantic conventions. It represents the + // [canonical URL] of the repository providing the complete HTTP(S) address in + // order to locate and identify the repository through a browser. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/opentelemetry/open-telemetry-collector-contrib", + // "https://gitlab.com/my-org/my-project/my-projects-project/repo" + // Note: In Git Version Control Systems, the canonical URL SHOULD NOT include + // the `.git` extension. + // + // [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical. + VCSRepositoryURLFullKey = attribute.Key("vcs.repository.url.full") + + // VCSRevisionDeltaDirectionKey is the attribute Key conforming to the + // "vcs.revision_delta.direction" semantic conventions. It represents the type + // of revision comparison. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ahead", "behind" + VCSRevisionDeltaDirectionKey = attribute.Key("vcs.revision_delta.direction") +) + +// VCSChangeID returns an attribute KeyValue conforming to the "vcs.change.id" +// semantic conventions. It represents the ID of the change (pull request/merge +// request/changelist) if applicable. This is usually a unique (within +// repository) identifier generated by the VCS system. +func VCSChangeID(val string) attribute.KeyValue { + return VCSChangeIDKey.String(val) +} + +// VCSChangeTitle returns an attribute KeyValue conforming to the +// "vcs.change.title" semantic conventions. It represents the human readable +// title of the change (pull request/merge request/changelist). This title is +// often a brief summary of the change and may get merged in to a ref as the +// commit summary. +func VCSChangeTitle(val string) attribute.KeyValue { + return VCSChangeTitleKey.String(val) +} + +// VCSOwnerName returns an attribute KeyValue conforming to the "vcs.owner.name" +// semantic conventions. It represents the group owner within the version control +// system. +func VCSOwnerName(val string) attribute.KeyValue { + return VCSOwnerNameKey.String(val) +} + +// VCSRefBaseName returns an attribute KeyValue conforming to the +// "vcs.ref.base.name" semantic conventions. It represents the name of the +// [reference] such as **branch** or **tag** in the repository. +// +// [reference]: https://git-scm.com/docs/gitglossary#def_ref +func VCSRefBaseName(val string) attribute.KeyValue { + return VCSRefBaseNameKey.String(val) +} + +// VCSRefBaseRevision returns an attribute KeyValue conforming to the +// "vcs.ref.base.revision" semantic conventions. It represents the revision, +// literally [revised version], The revision most often refers to a commit object +// in Git, or a revision number in SVN. +// +// [revised version]: https://www.merriam-webster.com/dictionary/revision +func VCSRefBaseRevision(val string) attribute.KeyValue { + return VCSRefBaseRevisionKey.String(val) +} + +// VCSRefHeadName returns an attribute KeyValue conforming to the +// "vcs.ref.head.name" semantic conventions. It represents the name of the +// [reference] such as **branch** or **tag** in the repository. +// +// [reference]: https://git-scm.com/docs/gitglossary#def_ref +func VCSRefHeadName(val string) attribute.KeyValue { + return VCSRefHeadNameKey.String(val) +} + +// VCSRefHeadRevision returns an attribute KeyValue conforming to the +// "vcs.ref.head.revision" semantic conventions. It represents the revision, +// literally [revised version], The revision most often refers to a commit object +// in Git, or a revision number in SVN. +// +// [revised version]: https://www.merriam-webster.com/dictionary/revision +func VCSRefHeadRevision(val string) attribute.KeyValue { + return VCSRefHeadRevisionKey.String(val) +} + +// VCSRepositoryName returns an attribute KeyValue conforming to the +// "vcs.repository.name" semantic conventions. It represents the human readable +// name of the repository. It SHOULD NOT include any additional identifier like +// Group/SubGroup in GitLab or organization in GitHub. +func VCSRepositoryName(val string) attribute.KeyValue { + return VCSRepositoryNameKey.String(val) +} + +// VCSRepositoryURLFull returns an attribute KeyValue conforming to the +// "vcs.repository.url.full" semantic conventions. It represents the +// [canonical URL] of the repository providing the complete HTTP(S) address in +// order to locate and identify the repository through a browser. +// +// [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical. +func VCSRepositoryURLFull(val string) attribute.KeyValue { + return VCSRepositoryURLFullKey.String(val) +} + +// Enum values for vcs.change.state +var ( + // Open means the change is currently active and under review. It hasn't been + // merged into the target branch yet, and it's still possible to make changes or + // add comments. + // Stability: development + VCSChangeStateOpen = VCSChangeStateKey.String("open") + // WIP (work-in-progress, draft) means the change is still in progress and not + // yet ready for a full review. It might still undergo significant changes. + // Stability: development + VCSChangeStateWip = VCSChangeStateKey.String("wip") + // Closed means the merge request has been closed without merging. This can + // happen for various reasons, such as the changes being deemed unnecessary, the + // issue being resolved in another way, or the author deciding to withdraw the + // request. + // Stability: development + VCSChangeStateClosed = VCSChangeStateKey.String("closed") + // Merged indicates that the change has been successfully integrated into the + // target codebase. + // Stability: development + VCSChangeStateMerged = VCSChangeStateKey.String("merged") +) + +// Enum values for vcs.line_change.type +var ( + // How many lines were added. + // Stability: development + VCSLineChangeTypeAdded = VCSLineChangeTypeKey.String("added") + // How many lines were removed. + // Stability: development + VCSLineChangeTypeRemoved = VCSLineChangeTypeKey.String("removed") +) + +// Enum values for vcs.provider.name +var ( + // [GitHub] + // Stability: development + // + // [GitHub]: https://github.com + VCSProviderNameGithub = VCSProviderNameKey.String("github") + // [GitLab] + // Stability: development + // + // [GitLab]: https://gitlab.com + VCSProviderNameGitlab = VCSProviderNameKey.String("gitlab") + // Deprecated: Replaced by `gitea`. + VCSProviderNameGittea = VCSProviderNameKey.String("gittea") + // [Gitea] + // Stability: development + // + // [Gitea]: https://gitea.io + VCSProviderNameGitea = VCSProviderNameKey.String("gitea") + // [Bitbucket] + // Stability: development + // + // [Bitbucket]: https://bitbucket.org + VCSProviderNameBitbucket = VCSProviderNameKey.String("bitbucket") +) + +// Enum values for vcs.ref.base.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefBaseTypeBranch = VCSRefBaseTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefBaseTypeTag = VCSRefBaseTypeKey.String("tag") +) + +// Enum values for vcs.ref.head.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefHeadTypeBranch = VCSRefHeadTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefHeadTypeTag = VCSRefHeadTypeKey.String("tag") +) + +// Enum values for vcs.ref.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefTypeBranch = VCSRefTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefTypeTag = VCSRefTypeKey.String("tag") +) + +// Enum values for vcs.revision_delta.direction +var ( + // How many revisions the change is behind the target ref. + // Stability: development + VCSRevisionDeltaDirectionBehind = VCSRevisionDeltaDirectionKey.String("behind") + // How many revisions the change is ahead of the target ref. + // Stability: development + VCSRevisionDeltaDirectionAhead = VCSRevisionDeltaDirectionKey.String("ahead") +) + +// Namespace: webengine +const ( + // WebEngineDescriptionKey is the attribute Key conforming to the + // "webengine.description" semantic conventions. It represents the additional + // description of the web engine (e.g. detailed version and edition + // information). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - + // 2.2.2.Final" + WebEngineDescriptionKey = attribute.Key("webengine.description") + + // WebEngineNameKey is the attribute Key conforming to the "webengine.name" + // semantic conventions. It represents the name of the web engine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "WildFly" + WebEngineNameKey = attribute.Key("webengine.name") + + // WebEngineVersionKey is the attribute Key conforming to the + // "webengine.version" semantic conventions. It represents the version of the + // web engine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "21.0.0" + WebEngineVersionKey = attribute.Key("webengine.version") +) + +// WebEngineDescription returns an attribute KeyValue conforming to the +// "webengine.description" semantic conventions. It represents the additional +// description of the web engine (e.g. detailed version and edition information). +func WebEngineDescription(val string) attribute.KeyValue { + return WebEngineDescriptionKey.String(val) +} + +// WebEngineName returns an attribute KeyValue conforming to the "webengine.name" +// semantic conventions. It represents the name of the web engine. +func WebEngineName(val string) attribute.KeyValue { + return WebEngineNameKey.String(val) +} + +// WebEngineVersion returns an attribute KeyValue conforming to the +// "webengine.version" semantic conventions. It represents the version of the web +// engine. +func WebEngineVersion(val string) attribute.KeyValue { + return WebEngineVersionKey.String(val) +} \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go similarity index 65% rename from vendor/go.opentelemetry.io/otel/semconv/v1.17.0/doc.go rename to vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go index e087c9c04..2c5c7ebd0 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/doc.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go @@ -4,6 +4,6 @@ // Package semconv implements OpenTelemetry semantic conventions. // // OpenTelemetry semantic conventions are agreed standardized naming -// patterns for OpenTelemetry things. This package represents the conventions -// as of the v1.17.0 version of the OpenTelemetry specification. -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" +// patterns for OpenTelemetry things. This package represents the v1.34.0 +// version of the OpenTelemetry semantic conventions. +package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go similarity index 74% rename from vendor/go.opentelemetry.io/otel/semconv/v1.17.0/exception.go rename to vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go index 137acc67d..88a998f1e 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/exception.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go @@ -1,7 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" +package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0" const ( // ExceptionEventName is the name of the Span event representing an exception. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/httpconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/httpconv/metric.go new file mode 100644 index 000000000..79843adbb --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/httpconv/metric.go @@ -0,0 +1,1418 @@ +// Code generated from semantic convention specification. DO NOT EDIT. + +// Package httpconv provides types and functionality for OpenTelemetry semantic +// conventions in the "http" namespace. +package httpconv + +import ( + "context" + "sync" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/noop" +) + +var ( + addOptPool = &sync.Pool{New: func() any { return &[]metric.AddOption{} }} + recOptPool = &sync.Pool{New: func() any { return &[]metric.RecordOption{} }} +) + +// ErrorTypeAttr is an attribute conforming to the error.type semantic +// conventions. It represents the describes a class of error the operation ended +// with. +type ErrorTypeAttr string + +var ( + // ErrorTypeOther is a fallback error value to be used when the instrumentation + // doesn't define a custom value. + ErrorTypeOther ErrorTypeAttr = "_OTHER" +) + +// ConnectionStateAttr is an attribute conforming to the http.connection.state +// semantic conventions. It represents the state of the HTTP connection in the +// HTTP connection pool. +type ConnectionStateAttr string + +var ( + // ConnectionStateActive is the active state. + ConnectionStateActive ConnectionStateAttr = "active" + // ConnectionStateIdle is the idle state. + ConnectionStateIdle ConnectionStateAttr = "idle" +) + +// RequestMethodAttr is an attribute conforming to the http.request.method +// semantic conventions. It represents the HTTP request method. +type RequestMethodAttr string + +var ( + // RequestMethodConnect is the CONNECT method. + RequestMethodConnect RequestMethodAttr = "CONNECT" + // RequestMethodDelete is the DELETE method. + RequestMethodDelete RequestMethodAttr = "DELETE" + // RequestMethodGet is the GET method. + RequestMethodGet RequestMethodAttr = "GET" + // RequestMethodHead is the HEAD method. + RequestMethodHead RequestMethodAttr = "HEAD" + // RequestMethodOptions is the OPTIONS method. + RequestMethodOptions RequestMethodAttr = "OPTIONS" + // RequestMethodPatch is the PATCH method. + RequestMethodPatch RequestMethodAttr = "PATCH" + // RequestMethodPost is the POST method. + RequestMethodPost RequestMethodAttr = "POST" + // RequestMethodPut is the PUT method. + RequestMethodPut RequestMethodAttr = "PUT" + // RequestMethodTrace is the TRACE method. + RequestMethodTrace RequestMethodAttr = "TRACE" + // RequestMethodOther is the any HTTP method that the instrumentation has no + // prior knowledge of. + RequestMethodOther RequestMethodAttr = "_OTHER" +) + +// UserAgentSyntheticTypeAttr is an attribute conforming to the +// user_agent.synthetic.type semantic conventions. It represents the specifies +// the category of synthetic traffic, such as tests or bots. +type UserAgentSyntheticTypeAttr string + +var ( + // UserAgentSyntheticTypeBot is the bot source. + UserAgentSyntheticTypeBot UserAgentSyntheticTypeAttr = "bot" + // UserAgentSyntheticTypeTest is the synthetic test source. + UserAgentSyntheticTypeTest UserAgentSyntheticTypeAttr = "test" +) + +// ClientActiveRequests is an instrument used to record metric values conforming +// to the "http.client.active_requests" semantic conventions. It represents the +// number of active HTTP requests. +type ClientActiveRequests struct { + metric.Int64UpDownCounter +} + +// NewClientActiveRequests returns a new ClientActiveRequests instrument. +func NewClientActiveRequests( + m metric.Meter, + opt ...metric.Int64UpDownCounterOption, +) (ClientActiveRequests, error) { + // Check if the meter is nil. + if m == nil { + return ClientActiveRequests{noop.Int64UpDownCounter{}}, nil + } + + i, err := m.Int64UpDownCounter( + "http.client.active_requests", + append([]metric.Int64UpDownCounterOption{ + metric.WithDescription("Number of active HTTP requests."), + metric.WithUnit("{request}"), + }, opt...)..., + ) + if err != nil { + return ClientActiveRequests{noop.Int64UpDownCounter{}}, err + } + return ClientActiveRequests{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientActiveRequests) Inst() metric.Int64UpDownCounter { + return m.Int64UpDownCounter +} + +// Name returns the semantic convention name of the instrument. +func (ClientActiveRequests) Name() string { + return "http.client.active_requests" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientActiveRequests) Unit() string { + return "{request}" +} + +// Description returns the semantic convention description of the instrument +func (ClientActiveRequests) Description() string { + return "Number of active HTTP requests." +} + +// Add adds incr to the existing count. +// +// The serverAddress is the server domain name if available without reverse DNS +// lookup; otherwise, IP address or Unix domain socket name. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +func (m ClientActiveRequests) Add( + ctx context.Context, + incr int64, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := addOptPool.Get().(*[]metric.AddOption) + defer func() { + *o = (*o)[:0] + addOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Int64UpDownCounter.Add(ctx, incr, *o...) +} + +// AttrURLTemplate returns an optional attribute for the "url.template" semantic +// convention. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func (ClientActiveRequests) AttrURLTemplate(val string) attribute.KeyValue { + return attribute.String("url.template", val) +} + +// AttrRequestMethod returns an optional attribute for the "http.request.method" +// semantic convention. It represents the HTTP request method. +func (ClientActiveRequests) AttrRequestMethod(val RequestMethodAttr) attribute.KeyValue { + return attribute.String("http.request.method", string(val)) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientActiveRequests) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// ClientConnectionDuration is an instrument used to record metric values +// conforming to the "http.client.connection.duration" semantic conventions. It +// represents the duration of the successfully established outbound HTTP +// connections. +type ClientConnectionDuration struct { + metric.Float64Histogram +} + +// NewClientConnectionDuration returns a new ClientConnectionDuration instrument. +func NewClientConnectionDuration( + m metric.Meter, + opt ...metric.Float64HistogramOption, +) (ClientConnectionDuration, error) { + // Check if the meter is nil. + if m == nil { + return ClientConnectionDuration{noop.Float64Histogram{}}, nil + } + + i, err := m.Float64Histogram( + "http.client.connection.duration", + append([]metric.Float64HistogramOption{ + metric.WithDescription("The duration of the successfully established outbound HTTP connections."), + metric.WithUnit("s"), + }, opt...)..., + ) + if err != nil { + return ClientConnectionDuration{noop.Float64Histogram{}}, err + } + return ClientConnectionDuration{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientConnectionDuration) Inst() metric.Float64Histogram { + return m.Float64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientConnectionDuration) Name() string { + return "http.client.connection.duration" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientConnectionDuration) Unit() string { + return "s" +} + +// Description returns the semantic convention description of the instrument +func (ClientConnectionDuration) Description() string { + return "The duration of the successfully established outbound HTTP connections." +} + +// Record records val to the current distribution. +// +// The serverAddress is the server domain name if available without reverse DNS +// lookup; otherwise, IP address or Unix domain socket name. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +func (m ClientConnectionDuration) Record( + ctx context.Context, + val float64, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Float64Histogram.Record(ctx, val, *o...) +} + +// AttrNetworkPeerAddress returns an optional attribute for the +// "network.peer.address" semantic convention. It represents the peer address of +// the network connection - IP address or Unix domain socket name. +func (ClientConnectionDuration) AttrNetworkPeerAddress(val string) attribute.KeyValue { + return attribute.String("network.peer.address", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ClientConnectionDuration) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientConnectionDuration) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// ClientOpenConnections is an instrument used to record metric values conforming +// to the "http.client.open_connections" semantic conventions. It represents the +// number of outbound HTTP connections that are currently active or idle on the +// client. +type ClientOpenConnections struct { + metric.Int64UpDownCounter +} + +// NewClientOpenConnections returns a new ClientOpenConnections instrument. +func NewClientOpenConnections( + m metric.Meter, + opt ...metric.Int64UpDownCounterOption, +) (ClientOpenConnections, error) { + // Check if the meter is nil. + if m == nil { + return ClientOpenConnections{noop.Int64UpDownCounter{}}, nil + } + + i, err := m.Int64UpDownCounter( + "http.client.open_connections", + append([]metric.Int64UpDownCounterOption{ + metric.WithDescription("Number of outbound HTTP connections that are currently active or idle on the client."), + metric.WithUnit("{connection}"), + }, opt...)..., + ) + if err != nil { + return ClientOpenConnections{noop.Int64UpDownCounter{}}, err + } + return ClientOpenConnections{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientOpenConnections) Inst() metric.Int64UpDownCounter { + return m.Int64UpDownCounter +} + +// Name returns the semantic convention name of the instrument. +func (ClientOpenConnections) Name() string { + return "http.client.open_connections" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientOpenConnections) Unit() string { + return "{connection}" +} + +// Description returns the semantic convention description of the instrument +func (ClientOpenConnections) Description() string { + return "Number of outbound HTTP connections that are currently active or idle on the client." +} + +// Add adds incr to the existing count. +// +// The connectionState is the state of the HTTP connection in the HTTP connection +// pool. +// +// The serverAddress is the server domain name if available without reverse DNS +// lookup; otherwise, IP address or Unix domain socket name. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +func (m ClientOpenConnections) Add( + ctx context.Context, + incr int64, + connectionState ConnectionStateAttr, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := addOptPool.Get().(*[]metric.AddOption) + defer func() { + *o = (*o)[:0] + addOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.connection.state", string(connectionState)), + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Int64UpDownCounter.Add(ctx, incr, *o...) +} + +// AttrNetworkPeerAddress returns an optional attribute for the +// "network.peer.address" semantic convention. It represents the peer address of +// the network connection - IP address or Unix domain socket name. +func (ClientOpenConnections) AttrNetworkPeerAddress(val string) attribute.KeyValue { + return attribute.String("network.peer.address", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ClientOpenConnections) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientOpenConnections) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// ClientRequestBodySize is an instrument used to record metric values conforming +// to the "http.client.request.body.size" semantic conventions. It represents the +// size of HTTP client request bodies. +type ClientRequestBodySize struct { + metric.Int64Histogram +} + +// NewClientRequestBodySize returns a new ClientRequestBodySize instrument. +func NewClientRequestBodySize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientRequestBodySize, error) { + // Check if the meter is nil. + if m == nil { + return ClientRequestBodySize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "http.client.request.body.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Size of HTTP client request bodies."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ClientRequestBodySize{noop.Int64Histogram{}}, err + } + return ClientRequestBodySize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientRequestBodySize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientRequestBodySize) Name() string { + return "http.client.request.body.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientRequestBodySize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ClientRequestBodySize) Description() string { + return "Size of HTTP client request bodies." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The serverAddress is the host identifier of the ["URI origin"] HTTP request is +// sent to. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +// +// The size of the request payload body in bytes. This is the number of bytes +// transferred excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func (m ClientRequestBodySize) Record( + ctx context.Context, + val int64, + requestMethod RequestMethodAttr, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Int64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ClientRequestBodySize) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ClientRequestBodySize) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ClientRequestBodySize) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrURLTemplate returns an optional attribute for the "url.template" semantic +// convention. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func (ClientRequestBodySize) AttrURLTemplate(val string) attribute.KeyValue { + return attribute.String("url.template", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ClientRequestBodySize) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientRequestBodySize) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// ClientRequestDuration is an instrument used to record metric values conforming +// to the "http.client.request.duration" semantic conventions. It represents the +// duration of HTTP client requests. +type ClientRequestDuration struct { + metric.Float64Histogram +} + +// NewClientRequestDuration returns a new ClientRequestDuration instrument. +func NewClientRequestDuration( + m metric.Meter, + opt ...metric.Float64HistogramOption, +) (ClientRequestDuration, error) { + // Check if the meter is nil. + if m == nil { + return ClientRequestDuration{noop.Float64Histogram{}}, nil + } + + i, err := m.Float64Histogram( + "http.client.request.duration", + append([]metric.Float64HistogramOption{ + metric.WithDescription("Duration of HTTP client requests."), + metric.WithUnit("s"), + }, opt...)..., + ) + if err != nil { + return ClientRequestDuration{noop.Float64Histogram{}}, err + } + return ClientRequestDuration{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientRequestDuration) Inst() metric.Float64Histogram { + return m.Float64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientRequestDuration) Name() string { + return "http.client.request.duration" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientRequestDuration) Unit() string { + return "s" +} + +// Description returns the semantic convention description of the instrument +func (ClientRequestDuration) Description() string { + return "Duration of HTTP client requests." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The serverAddress is the host identifier of the ["URI origin"] HTTP request is +// sent to. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +func (m ClientRequestDuration) Record( + ctx context.Context, + val float64, + requestMethod RequestMethodAttr, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Float64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ClientRequestDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ClientRequestDuration) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ClientRequestDuration) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ClientRequestDuration) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientRequestDuration) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// AttrURLTemplate returns an optional attribute for the "url.template" semantic +// convention. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func (ClientRequestDuration) AttrURLTemplate(val string) attribute.KeyValue { + return attribute.String("url.template", val) +} + +// ClientResponseBodySize is an instrument used to record metric values +// conforming to the "http.client.response.body.size" semantic conventions. It +// represents the size of HTTP client response bodies. +type ClientResponseBodySize struct { + metric.Int64Histogram +} + +// NewClientResponseBodySize returns a new ClientResponseBodySize instrument. +func NewClientResponseBodySize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientResponseBodySize, error) { + // Check if the meter is nil. + if m == nil { + return ClientResponseBodySize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "http.client.response.body.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Size of HTTP client response bodies."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ClientResponseBodySize{noop.Int64Histogram{}}, err + } + return ClientResponseBodySize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientResponseBodySize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientResponseBodySize) Name() string { + return "http.client.response.body.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientResponseBodySize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ClientResponseBodySize) Description() string { + return "Size of HTTP client response bodies." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The serverAddress is the host identifier of the ["URI origin"] HTTP request is +// sent to. +// +// The serverPort is the port identifier of the ["URI origin"] HTTP request is +// sent to. +// +// All additional attrs passed are included in the recorded value. +// +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +// ["URI origin"]: https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin +// +// The size of the response payload body in bytes. This is the number of bytes +// transferred excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func (m ClientResponseBodySize) Record( + ctx context.Context, + val int64, + requestMethod RequestMethodAttr, + serverAddress string, + serverPort int, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("server.address", serverAddress), + attribute.Int("server.port", serverPort), + )..., + ), + ) + + m.Int64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ClientResponseBodySize) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ClientResponseBodySize) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ClientResponseBodySize) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrURLTemplate returns an optional attribute for the "url.template" semantic +// convention. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func (ClientResponseBodySize) AttrURLTemplate(val string) attribute.KeyValue { + return attribute.String("url.template", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ClientResponseBodySize) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrURLScheme returns an optional attribute for the "url.scheme" semantic +// convention. It represents the [URI scheme] component identifying the used +// protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (ClientResponseBodySize) AttrURLScheme(val string) attribute.KeyValue { + return attribute.String("url.scheme", val) +} + +// ServerActiveRequests is an instrument used to record metric values conforming +// to the "http.server.active_requests" semantic conventions. It represents the +// number of active HTTP server requests. +type ServerActiveRequests struct { + metric.Int64UpDownCounter +} + +// NewServerActiveRequests returns a new ServerActiveRequests instrument. +func NewServerActiveRequests( + m metric.Meter, + opt ...metric.Int64UpDownCounterOption, +) (ServerActiveRequests, error) { + // Check if the meter is nil. + if m == nil { + return ServerActiveRequests{noop.Int64UpDownCounter{}}, nil + } + + i, err := m.Int64UpDownCounter( + "http.server.active_requests", + append([]metric.Int64UpDownCounterOption{ + metric.WithDescription("Number of active HTTP server requests."), + metric.WithUnit("{request}"), + }, opt...)..., + ) + if err != nil { + return ServerActiveRequests{noop.Int64UpDownCounter{}}, err + } + return ServerActiveRequests{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerActiveRequests) Inst() metric.Int64UpDownCounter { + return m.Int64UpDownCounter +} + +// Name returns the semantic convention name of the instrument. +func (ServerActiveRequests) Name() string { + return "http.server.active_requests" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerActiveRequests) Unit() string { + return "{request}" +} + +// Description returns the semantic convention description of the instrument +func (ServerActiveRequests) Description() string { + return "Number of active HTTP server requests." +} + +// Add adds incr to the existing count. +// +// The requestMethod is the HTTP request method. +// +// The urlScheme is the the [URI scheme] component identifying the used protocol. +// +// All additional attrs passed are included in the recorded value. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (m ServerActiveRequests) Add( + ctx context.Context, + incr int64, + requestMethod RequestMethodAttr, + urlScheme string, + attrs ...attribute.KeyValue, +) { + o := addOptPool.Get().(*[]metric.AddOption) + defer func() { + *o = (*o)[:0] + addOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("url.scheme", urlScheme), + )..., + ), + ) + + m.Int64UpDownCounter.Add(ctx, incr, *o...) +} + +// AttrServerAddress returns an optional attribute for the "server.address" +// semantic convention. It represents the name of the local HTTP server that +// received the request. +func (ServerActiveRequests) AttrServerAddress(val string) attribute.KeyValue { + return attribute.String("server.address", val) +} + +// AttrServerPort returns an optional attribute for the "server.port" semantic +// convention. It represents the port of the local HTTP server that received the +// request. +func (ServerActiveRequests) AttrServerPort(val int) attribute.KeyValue { + return attribute.Int("server.port", val) +} + +// ServerRequestBodySize is an instrument used to record metric values conforming +// to the "http.server.request.body.size" semantic conventions. It represents the +// size of HTTP server request bodies. +type ServerRequestBodySize struct { + metric.Int64Histogram +} + +// NewServerRequestBodySize returns a new ServerRequestBodySize instrument. +func NewServerRequestBodySize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerRequestBodySize, error) { + // Check if the meter is nil. + if m == nil { + return ServerRequestBodySize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "http.server.request.body.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Size of HTTP server request bodies."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ServerRequestBodySize{noop.Int64Histogram{}}, err + } + return ServerRequestBodySize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerRequestBodySize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerRequestBodySize) Name() string { + return "http.server.request.body.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerRequestBodySize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ServerRequestBodySize) Description() string { + return "Size of HTTP server request bodies." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The urlScheme is the the [URI scheme] component identifying the used protocol. +// +// All additional attrs passed are included in the recorded value. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +// +// The size of the request payload body in bytes. This is the number of bytes +// transferred excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func (m ServerRequestBodySize) Record( + ctx context.Context, + val int64, + requestMethod RequestMethodAttr, + urlScheme string, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("url.scheme", urlScheme), + )..., + ), + ) + + m.Int64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ServerRequestBodySize) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ServerRequestBodySize) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrRoute returns an optional attribute for the "http.route" semantic +// convention. It represents the matched route, that is, the path template in the +// format used by the respective server framework. +func (ServerRequestBodySize) AttrRoute(val string) attribute.KeyValue { + return attribute.String("http.route", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ServerRequestBodySize) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ServerRequestBodySize) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrServerAddress returns an optional attribute for the "server.address" +// semantic convention. It represents the name of the local HTTP server that +// received the request. +func (ServerRequestBodySize) AttrServerAddress(val string) attribute.KeyValue { + return attribute.String("server.address", val) +} + +// AttrServerPort returns an optional attribute for the "server.port" semantic +// convention. It represents the port of the local HTTP server that received the +// request. +func (ServerRequestBodySize) AttrServerPort(val int) attribute.KeyValue { + return attribute.Int("server.port", val) +} + +// AttrUserAgentSyntheticType returns an optional attribute for the +// "user_agent.synthetic.type" semantic convention. It represents the specifies +// the category of synthetic traffic, such as tests or bots. +func (ServerRequestBodySize) AttrUserAgentSyntheticType(val UserAgentSyntheticTypeAttr) attribute.KeyValue { + return attribute.String("user_agent.synthetic.type", string(val)) +} + +// ServerRequestDuration is an instrument used to record metric values conforming +// to the "http.server.request.duration" semantic conventions. It represents the +// duration of HTTP server requests. +type ServerRequestDuration struct { + metric.Float64Histogram +} + +// NewServerRequestDuration returns a new ServerRequestDuration instrument. +func NewServerRequestDuration( + m metric.Meter, + opt ...metric.Float64HistogramOption, +) (ServerRequestDuration, error) { + // Check if the meter is nil. + if m == nil { + return ServerRequestDuration{noop.Float64Histogram{}}, nil + } + + i, err := m.Float64Histogram( + "http.server.request.duration", + append([]metric.Float64HistogramOption{ + metric.WithDescription("Duration of HTTP server requests."), + metric.WithUnit("s"), + }, opt...)..., + ) + if err != nil { + return ServerRequestDuration{noop.Float64Histogram{}}, err + } + return ServerRequestDuration{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerRequestDuration) Inst() metric.Float64Histogram { + return m.Float64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerRequestDuration) Name() string { + return "http.server.request.duration" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerRequestDuration) Unit() string { + return "s" +} + +// Description returns the semantic convention description of the instrument +func (ServerRequestDuration) Description() string { + return "Duration of HTTP server requests." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The urlScheme is the the [URI scheme] component identifying the used protocol. +// +// All additional attrs passed are included in the recorded value. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func (m ServerRequestDuration) Record( + ctx context.Context, + val float64, + requestMethod RequestMethodAttr, + urlScheme string, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("url.scheme", urlScheme), + )..., + ), + ) + + m.Float64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ServerRequestDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ServerRequestDuration) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrRoute returns an optional attribute for the "http.route" semantic +// convention. It represents the matched route, that is, the path template in the +// format used by the respective server framework. +func (ServerRequestDuration) AttrRoute(val string) attribute.KeyValue { + return attribute.String("http.route", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ServerRequestDuration) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ServerRequestDuration) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrServerAddress returns an optional attribute for the "server.address" +// semantic convention. It represents the name of the local HTTP server that +// received the request. +func (ServerRequestDuration) AttrServerAddress(val string) attribute.KeyValue { + return attribute.String("server.address", val) +} + +// AttrServerPort returns an optional attribute for the "server.port" semantic +// convention. It represents the port of the local HTTP server that received the +// request. +func (ServerRequestDuration) AttrServerPort(val int) attribute.KeyValue { + return attribute.Int("server.port", val) +} + +// AttrUserAgentSyntheticType returns an optional attribute for the +// "user_agent.synthetic.type" semantic convention. It represents the specifies +// the category of synthetic traffic, such as tests or bots. +func (ServerRequestDuration) AttrUserAgentSyntheticType(val UserAgentSyntheticTypeAttr) attribute.KeyValue { + return attribute.String("user_agent.synthetic.type", string(val)) +} + +// ServerResponseBodySize is an instrument used to record metric values +// conforming to the "http.server.response.body.size" semantic conventions. It +// represents the size of HTTP server response bodies. +type ServerResponseBodySize struct { + metric.Int64Histogram +} + +// NewServerResponseBodySize returns a new ServerResponseBodySize instrument. +func NewServerResponseBodySize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerResponseBodySize, error) { + // Check if the meter is nil. + if m == nil { + return ServerResponseBodySize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "http.server.response.body.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Size of HTTP server response bodies."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ServerResponseBodySize{noop.Int64Histogram{}}, err + } + return ServerResponseBodySize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerResponseBodySize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerResponseBodySize) Name() string { + return "http.server.response.body.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerResponseBodySize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ServerResponseBodySize) Description() string { + return "Size of HTTP server response bodies." +} + +// Record records val to the current distribution. +// +// The requestMethod is the HTTP request method. +// +// The urlScheme is the the [URI scheme] component identifying the used protocol. +// +// All additional attrs passed are included in the recorded value. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +// +// The size of the response payload body in bytes. This is the number of bytes +// transferred excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func (m ServerResponseBodySize) Record( + ctx context.Context, + val int64, + requestMethod RequestMethodAttr, + urlScheme string, + attrs ...attribute.KeyValue, +) { + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append( + *o, + metric.WithAttributes( + append( + attrs, + attribute.String("http.request.method", string(requestMethod)), + attribute.String("url.scheme", urlScheme), + )..., + ), + ) + + m.Int64Histogram.Record(ctx, val, *o...) +} + +// AttrErrorType returns an optional attribute for the "error.type" semantic +// convention. It represents the describes a class of error the operation ended +// with. +func (ServerResponseBodySize) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue { + return attribute.String("error.type", string(val)) +} + +// AttrResponseStatusCode returns an optional attribute for the +// "http.response.status_code" semantic convention. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func (ServerResponseBodySize) AttrResponseStatusCode(val int) attribute.KeyValue { + return attribute.Int("http.response.status_code", val) +} + +// AttrRoute returns an optional attribute for the "http.route" semantic +// convention. It represents the matched route, that is, the path template in the +// format used by the respective server framework. +func (ServerResponseBodySize) AttrRoute(val string) attribute.KeyValue { + return attribute.String("http.route", val) +} + +// AttrNetworkProtocolName returns an optional attribute for the +// "network.protocol.name" semantic convention. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func (ServerResponseBodySize) AttrNetworkProtocolName(val string) attribute.KeyValue { + return attribute.String("network.protocol.name", val) +} + +// AttrNetworkProtocolVersion returns an optional attribute for the +// "network.protocol.version" semantic convention. It represents the actual +// version of the protocol used for network communication. +func (ServerResponseBodySize) AttrNetworkProtocolVersion(val string) attribute.KeyValue { + return attribute.String("network.protocol.version", val) +} + +// AttrServerAddress returns an optional attribute for the "server.address" +// semantic convention. It represents the name of the local HTTP server that +// received the request. +func (ServerResponseBodySize) AttrServerAddress(val string) attribute.KeyValue { + return attribute.String("server.address", val) +} + +// AttrServerPort returns an optional attribute for the "server.port" semantic +// convention. It represents the port of the local HTTP server that received the +// request. +func (ServerResponseBodySize) AttrServerPort(val int) attribute.KeyValue { + return attribute.Int("server.port", val) +} + +// AttrUserAgentSyntheticType returns an optional attribute for the +// "user_agent.synthetic.type" semantic convention. It represents the specifies +// the category of synthetic traffic, such as tests or bots. +func (ServerResponseBodySize) AttrUserAgentSyntheticType(val UserAgentSyntheticTypeAttr) attribute.KeyValue { + return attribute.String("user_agent.synthetic.type", string(val)) +} \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/rpcconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/rpcconv/metric.go new file mode 100644 index 000000000..f6185bb69 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/rpcconv/metric.go @@ -0,0 +1,713 @@ +// Code generated from semantic convention specification. DO NOT EDIT. + +// Package httpconv provides types and functionality for OpenTelemetry semantic +// conventions in the "rpc" namespace. +package rpcconv + +import ( + "context" + "sync" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/noop" +) + +var ( + addOptPool = &sync.Pool{New: func() any { return &[]metric.AddOption{} }} + recOptPool = &sync.Pool{New: func() any { return &[]metric.RecordOption{} }} +) + +// ClientDuration is an instrument used to record metric values conforming to the +// "rpc.client.duration" semantic conventions. It represents the measures the +// duration of outbound RPC. +type ClientDuration struct { + metric.Float64Histogram +} + +// NewClientDuration returns a new ClientDuration instrument. +func NewClientDuration( + m metric.Meter, + opt ...metric.Float64HistogramOption, +) (ClientDuration, error) { + // Check if the meter is nil. + if m == nil { + return ClientDuration{noop.Float64Histogram{}}, nil + } + + i, err := m.Float64Histogram( + "rpc.client.duration", + append([]metric.Float64HistogramOption{ + metric.WithDescription("Measures the duration of outbound RPC."), + metric.WithUnit("ms"), + }, opt...)..., + ) + if err != nil { + return ClientDuration{noop.Float64Histogram{}}, err + } + return ClientDuration{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientDuration) Inst() metric.Float64Histogram { + return m.Float64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientDuration) Name() string { + return "rpc.client.duration" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientDuration) Unit() string { + return "ms" +} + +// Description returns the semantic convention description of the instrument +func (ClientDuration) Description() string { + return "Measures the duration of outbound RPC." +} + +// Record records val to the current distribution. +// +// While streaming RPCs may record this metric as start-of-batch +// to end-of-batch, it's hard to interpret in practice. +// +// **Streaming**: N/A. +func (m ClientDuration) Record(ctx context.Context, val float64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Float64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Float64Histogram.Record(ctx, val, *o...) +} + +// ClientRequestSize is an instrument used to record metric values conforming to +// the "rpc.client.request.size" semantic conventions. It represents the measures +// the size of RPC request messages (uncompressed). +type ClientRequestSize struct { + metric.Int64Histogram +} + +// NewClientRequestSize returns a new ClientRequestSize instrument. +func NewClientRequestSize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientRequestSize, error) { + // Check if the meter is nil. + if m == nil { + return ClientRequestSize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.client.request.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the size of RPC request messages (uncompressed)."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ClientRequestSize{noop.Int64Histogram{}}, err + } + return ClientRequestSize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientRequestSize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientRequestSize) Name() string { + return "rpc.client.request.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientRequestSize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ClientRequestSize) Description() string { + return "Measures the size of RPC request messages (uncompressed)." +} + +// Record records val to the current distribution. +// +// **Streaming**: Recorded per message in a streaming batch +func (m ClientRequestSize) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ClientRequestsPerRPC is an instrument used to record metric values conforming +// to the "rpc.client.requests_per_rpc" semantic conventions. It represents the +// measures the number of messages received per RPC. +type ClientRequestsPerRPC struct { + metric.Int64Histogram +} + +// NewClientRequestsPerRPC returns a new ClientRequestsPerRPC instrument. +func NewClientRequestsPerRPC( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientRequestsPerRPC, error) { + // Check if the meter is nil. + if m == nil { + return ClientRequestsPerRPC{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.client.requests_per_rpc", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the number of messages received per RPC."), + metric.WithUnit("{count}"), + }, opt...)..., + ) + if err != nil { + return ClientRequestsPerRPC{noop.Int64Histogram{}}, err + } + return ClientRequestsPerRPC{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientRequestsPerRPC) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientRequestsPerRPC) Name() string { + return "rpc.client.requests_per_rpc" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientRequestsPerRPC) Unit() string { + return "{count}" +} + +// Description returns the semantic convention description of the instrument +func (ClientRequestsPerRPC) Description() string { + return "Measures the number of messages received per RPC." +} + +// Record records val to the current distribution. +// +// Should be 1 for all non-streaming RPCs. +// +// **Streaming**: This metric is required for server and client streaming RPCs +func (m ClientRequestsPerRPC) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ClientResponseSize is an instrument used to record metric values conforming to +// the "rpc.client.response.size" semantic conventions. It represents the +// measures the size of RPC response messages (uncompressed). +type ClientResponseSize struct { + metric.Int64Histogram +} + +// NewClientResponseSize returns a new ClientResponseSize instrument. +func NewClientResponseSize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientResponseSize, error) { + // Check if the meter is nil. + if m == nil { + return ClientResponseSize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.client.response.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the size of RPC response messages (uncompressed)."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ClientResponseSize{noop.Int64Histogram{}}, err + } + return ClientResponseSize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientResponseSize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientResponseSize) Name() string { + return "rpc.client.response.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientResponseSize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ClientResponseSize) Description() string { + return "Measures the size of RPC response messages (uncompressed)." +} + +// Record records val to the current distribution. +// +// **Streaming**: Recorded per response in a streaming batch +func (m ClientResponseSize) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ClientResponsesPerRPC is an instrument used to record metric values conforming +// to the "rpc.client.responses_per_rpc" semantic conventions. It represents the +// measures the number of messages sent per RPC. +type ClientResponsesPerRPC struct { + metric.Int64Histogram +} + +// NewClientResponsesPerRPC returns a new ClientResponsesPerRPC instrument. +func NewClientResponsesPerRPC( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ClientResponsesPerRPC, error) { + // Check if the meter is nil. + if m == nil { + return ClientResponsesPerRPC{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.client.responses_per_rpc", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the number of messages sent per RPC."), + metric.WithUnit("{count}"), + }, opt...)..., + ) + if err != nil { + return ClientResponsesPerRPC{noop.Int64Histogram{}}, err + } + return ClientResponsesPerRPC{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ClientResponsesPerRPC) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ClientResponsesPerRPC) Name() string { + return "rpc.client.responses_per_rpc" +} + +// Unit returns the semantic convention unit of the instrument +func (ClientResponsesPerRPC) Unit() string { + return "{count}" +} + +// Description returns the semantic convention description of the instrument +func (ClientResponsesPerRPC) Description() string { + return "Measures the number of messages sent per RPC." +} + +// Record records val to the current distribution. +// +// Should be 1 for all non-streaming RPCs. +// +// **Streaming**: This metric is required for server and client streaming RPCs +func (m ClientResponsesPerRPC) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ServerDuration is an instrument used to record metric values conforming to the +// "rpc.server.duration" semantic conventions. It represents the measures the +// duration of inbound RPC. +type ServerDuration struct { + metric.Float64Histogram +} + +// NewServerDuration returns a new ServerDuration instrument. +func NewServerDuration( + m metric.Meter, + opt ...metric.Float64HistogramOption, +) (ServerDuration, error) { + // Check if the meter is nil. + if m == nil { + return ServerDuration{noop.Float64Histogram{}}, nil + } + + i, err := m.Float64Histogram( + "rpc.server.duration", + append([]metric.Float64HistogramOption{ + metric.WithDescription("Measures the duration of inbound RPC."), + metric.WithUnit("ms"), + }, opt...)..., + ) + if err != nil { + return ServerDuration{noop.Float64Histogram{}}, err + } + return ServerDuration{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerDuration) Inst() metric.Float64Histogram { + return m.Float64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerDuration) Name() string { + return "rpc.server.duration" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerDuration) Unit() string { + return "ms" +} + +// Description returns the semantic convention description of the instrument +func (ServerDuration) Description() string { + return "Measures the duration of inbound RPC." +} + +// Record records val to the current distribution. +// +// While streaming RPCs may record this metric as start-of-batch +// to end-of-batch, it's hard to interpret in practice. +// +// **Streaming**: N/A. +func (m ServerDuration) Record(ctx context.Context, val float64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Float64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Float64Histogram.Record(ctx, val, *o...) +} + +// ServerRequestSize is an instrument used to record metric values conforming to +// the "rpc.server.request.size" semantic conventions. It represents the measures +// the size of RPC request messages (uncompressed). +type ServerRequestSize struct { + metric.Int64Histogram +} + +// NewServerRequestSize returns a new ServerRequestSize instrument. +func NewServerRequestSize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerRequestSize, error) { + // Check if the meter is nil. + if m == nil { + return ServerRequestSize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.server.request.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the size of RPC request messages (uncompressed)."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ServerRequestSize{noop.Int64Histogram{}}, err + } + return ServerRequestSize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerRequestSize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerRequestSize) Name() string { + return "rpc.server.request.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerRequestSize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ServerRequestSize) Description() string { + return "Measures the size of RPC request messages (uncompressed)." +} + +// Record records val to the current distribution. +// +// **Streaming**: Recorded per message in a streaming batch +func (m ServerRequestSize) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ServerRequestsPerRPC is an instrument used to record metric values conforming +// to the "rpc.server.requests_per_rpc" semantic conventions. It represents the +// measures the number of messages received per RPC. +type ServerRequestsPerRPC struct { + metric.Int64Histogram +} + +// NewServerRequestsPerRPC returns a new ServerRequestsPerRPC instrument. +func NewServerRequestsPerRPC( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerRequestsPerRPC, error) { + // Check if the meter is nil. + if m == nil { + return ServerRequestsPerRPC{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.server.requests_per_rpc", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the number of messages received per RPC."), + metric.WithUnit("{count}"), + }, opt...)..., + ) + if err != nil { + return ServerRequestsPerRPC{noop.Int64Histogram{}}, err + } + return ServerRequestsPerRPC{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerRequestsPerRPC) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerRequestsPerRPC) Name() string { + return "rpc.server.requests_per_rpc" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerRequestsPerRPC) Unit() string { + return "{count}" +} + +// Description returns the semantic convention description of the instrument +func (ServerRequestsPerRPC) Description() string { + return "Measures the number of messages received per RPC." +} + +// Record records val to the current distribution. +// +// Should be 1 for all non-streaming RPCs. +// +// **Streaming** : This metric is required for server and client streaming RPCs +func (m ServerRequestsPerRPC) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ServerResponseSize is an instrument used to record metric values conforming to +// the "rpc.server.response.size" semantic conventions. It represents the +// measures the size of RPC response messages (uncompressed). +type ServerResponseSize struct { + metric.Int64Histogram +} + +// NewServerResponseSize returns a new ServerResponseSize instrument. +func NewServerResponseSize( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerResponseSize, error) { + // Check if the meter is nil. + if m == nil { + return ServerResponseSize{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.server.response.size", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the size of RPC response messages (uncompressed)."), + metric.WithUnit("By"), + }, opt...)..., + ) + if err != nil { + return ServerResponseSize{noop.Int64Histogram{}}, err + } + return ServerResponseSize{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerResponseSize) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerResponseSize) Name() string { + return "rpc.server.response.size" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerResponseSize) Unit() string { + return "By" +} + +// Description returns the semantic convention description of the instrument +func (ServerResponseSize) Description() string { + return "Measures the size of RPC response messages (uncompressed)." +} + +// Record records val to the current distribution. +// +// **Streaming**: Recorded per response in a streaming batch +func (m ServerResponseSize) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} + +// ServerResponsesPerRPC is an instrument used to record metric values conforming +// to the "rpc.server.responses_per_rpc" semantic conventions. It represents the +// measures the number of messages sent per RPC. +type ServerResponsesPerRPC struct { + metric.Int64Histogram +} + +// NewServerResponsesPerRPC returns a new ServerResponsesPerRPC instrument. +func NewServerResponsesPerRPC( + m metric.Meter, + opt ...metric.Int64HistogramOption, +) (ServerResponsesPerRPC, error) { + // Check if the meter is nil. + if m == nil { + return ServerResponsesPerRPC{noop.Int64Histogram{}}, nil + } + + i, err := m.Int64Histogram( + "rpc.server.responses_per_rpc", + append([]metric.Int64HistogramOption{ + metric.WithDescription("Measures the number of messages sent per RPC."), + metric.WithUnit("{count}"), + }, opt...)..., + ) + if err != nil { + return ServerResponsesPerRPC{noop.Int64Histogram{}}, err + } + return ServerResponsesPerRPC{i}, nil +} + +// Inst returns the underlying metric instrument. +func (m ServerResponsesPerRPC) Inst() metric.Int64Histogram { + return m.Int64Histogram +} + +// Name returns the semantic convention name of the instrument. +func (ServerResponsesPerRPC) Name() string { + return "rpc.server.responses_per_rpc" +} + +// Unit returns the semantic convention unit of the instrument +func (ServerResponsesPerRPC) Unit() string { + return "{count}" +} + +// Description returns the semantic convention description of the instrument +func (ServerResponsesPerRPC) Description() string { + return "Measures the number of messages sent per RPC." +} + +// Record records val to the current distribution. +// +// Should be 1 for all non-streaming RPCs. +// +// **Streaming**: This metric is required for server and client streaming RPCs +func (m ServerResponsesPerRPC) Record(ctx context.Context, val int64, attrs ...attribute.KeyValue) { + if len(attrs) == 0 { + m.Int64Histogram.Record(ctx, val) + } + + o := recOptPool.Get().(*[]metric.RecordOption) + defer func() { + *o = (*o)[:0] + recOptPool.Put(o) + }() + + *o = append(*o, metric.WithAttributes(attrs...)) + m.Int64Histogram.Record(ctx, val, *o...) +} \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go similarity index 71% rename from vendor/go.opentelemetry.io/otel/semconv/v1.17.0/schema.go rename to vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go index 634a1dce0..3c23d4592 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.17.0/schema.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go @@ -1,9 +1,9 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package semconv // import "go.opentelemetry.io/otel/semconv/v1.17.0" +package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0" // SchemaURL is the schema URL that matches the version of the semantic conventions // that this package defines. Semconv packages starting from v1.4.0 must declare // non-empty schema URL in the form https://opentelemetry.io/schemas/ -const SchemaURL = "https://opentelemetry.io/schemas/1.17.0" +const SchemaURL = "https://opentelemetry.io/schemas/1.34.0" diff --git a/vendor/go.opentelemetry.io/otel/trace/auto.go b/vendor/go.opentelemetry.io/otel/trace/auto.go index 7e2910025..f3aa39813 100644 --- a/vendor/go.opentelemetry.io/otel/trace/auto.go +++ b/vendor/go.opentelemetry.io/otel/trace/auto.go @@ -20,7 +20,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.34.0" "go.opentelemetry.io/otel/trace/embedded" "go.opentelemetry.io/otel/trace/internal/telemetry" ) @@ -57,14 +57,15 @@ type autoTracer struct { var _ Tracer = autoTracer{} func (t autoTracer) Start(ctx context.Context, name string, opts ...SpanStartOption) (context.Context, Span) { - var psc SpanContext + var psc, sc SpanContext sampled := true span := new(autoSpan) // Ask eBPF for sampling decision and span context info. - t.start(ctx, span, &psc, &sampled, &span.spanContext) + t.start(ctx, span, &psc, &sampled, &sc) span.sampled.Store(sampled) + span.spanContext = sc ctx = ContextWithSpan(ctx, span) diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go index 3c5e1cdb1..e7ca62c66 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go @@ -251,13 +251,20 @@ func (s *Span) UnmarshalJSON(data []byte) error { type SpanFlags int32 const ( + // SpanFlagsTraceFlagsMask is a mask for trace-flags. + // // Bits 0-7 are used for trace flags. SpanFlagsTraceFlagsMask SpanFlags = 255 - // Bits 8 and 9 are used to indicate that the parent span or link span is remote. - // Bit 8 (`HAS_IS_REMOTE`) indicates whether the value is known. - // Bit 9 (`IS_REMOTE`) indicates whether the span or link is remote. + // SpanFlagsContextHasIsRemoteMask is a mask for HAS_IS_REMOTE status. + // + // Bits 8 and 9 are used to indicate that the parent span or link span is + // remote. Bit 8 (`HAS_IS_REMOTE`) indicates whether the value is known. SpanFlagsContextHasIsRemoteMask SpanFlags = 256 - // SpanFlagsContextHasIsRemoteMask indicates the Span is remote. + // SpanFlagsContextIsRemoteMask is a mask for IS_REMOTE status. + // + // Bits 8 and 9 are used to indicate that the parent span or link span is + // remote. Bit 9 (`IS_REMOTE`) indicates whether the span or link is + // remote. SpanFlagsContextIsRemoteMask SpanFlags = 512 ) @@ -266,27 +273,31 @@ const ( type SpanKind int32 const ( - // Indicates that the span represents an internal operation within an application, - // as opposed to an operation happening at the boundaries. Default value. + // SpanKindInternal indicates that the span represents an internal + // operation within an application, as opposed to an operation happening at + // the boundaries. SpanKindInternal SpanKind = 1 - // Indicates that the span covers server-side handling of an RPC or other - // remote network request. + // SpanKindServer indicates that the span covers server-side handling of an + // RPC or other remote network request. SpanKindServer SpanKind = 2 - // Indicates that the span describes a request to some remote service. + // SpanKindClient indicates that the span describes a request to some + // remote service. SpanKindClient SpanKind = 3 - // Indicates that the span describes a producer sending a message to a broker. - // Unlike CLIENT and SERVER, there is often no direct critical path latency relationship - // between producer and consumer spans. A PRODUCER span ends when the message was accepted - // by the broker while the logical processing of the message might span a much longer time. + // SpanKindProducer indicates that the span describes a producer sending a + // message to a broker. Unlike SpanKindClient and SpanKindServer, there is + // often no direct critical path latency relationship between producer and + // consumer spans. A SpanKindProducer span ends when the message was + // accepted by the broker while the logical processing of the message might + // span a much longer time. SpanKindProducer SpanKind = 4 - // Indicates that the span describes consumer receiving a message from a broker. - // Like the PRODUCER kind, there is often no direct critical path latency relationship - // between producer and consumer spans. + // SpanKindConsumer indicates that the span describes a consumer receiving + // a message from a broker. Like SpanKindProducer, there is often no direct + // critical path latency relationship between producer and consumer spans. SpanKindConsumer SpanKind = 5 ) -// Event is a time-stamped annotation of the span, consisting of user-supplied -// text description and key-value pairs. +// SpanEvent is a time-stamped annotation of the span, consisting of +// user-supplied text description and key-value pairs. type SpanEvent struct { // time_unix_nano is the time the event occurred. Time time.Time `json:"timeUnixNano,omitempty"` @@ -369,10 +380,11 @@ func (se *SpanEvent) UnmarshalJSON(data []byte) error { return nil } -// A pointer from the current span to another span in the same trace or in a -// different trace. For example, this can be used in batching operations, -// where a single batch handler processes multiple requests from different -// traces or when the handler receives a request from a different project. +// SpanLink is a reference from the current span to another span in the same +// trace or in a different trace. For example, this can be used in batching +// operations, where a single batch handler processes multiple requests from +// different traces or when the handler receives a request from a different +// project. type SpanLink struct { // A unique identifier of a trace that this linked span is part of. The ID is a // 16-byte array. diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go index 1d013a8fa..1039bf40c 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/status.go @@ -3,17 +3,19 @@ package telemetry // import "go.opentelemetry.io/otel/trace/internal/telemetry" +// StatusCode is the status of a Span. +// // For the semantics of status codes see // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status type StatusCode int32 const ( - // The default status. + // StatusCodeUnset is the default status. StatusCodeUnset StatusCode = 0 - // The Span has been validated by an Application developer or Operator to - // have completed successfully. + // StatusCodeOK is used when the Span has been validated by an Application + // developer or Operator to have completed successfully. StatusCodeOK StatusCode = 1 - // The Span contains an error. + // StatusCodeError is used when the Span contains an error. StatusCodeError StatusCode = 2 ) @@ -30,7 +32,7 @@ func (s StatusCode) String() string { return "" } -// The Status type defines a logical error model that is suitable for different +// Status defines a logical error model that is suitable for different // programming environments, including REST APIs and RPC APIs. type Status struct { // A developer-facing human readable error message. diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go index b03940708..e5f10767c 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/traces.go @@ -71,7 +71,7 @@ func (td *Traces) UnmarshalJSON(data []byte) error { return nil } -// A collection of ScopeSpans from a Resource. +// ResourceSpans is a collection of ScopeSpans from a Resource. type ResourceSpans struct { // The resource for the spans in this message. // If this field is not set then no resource info is known. @@ -128,7 +128,7 @@ func (rs *ResourceSpans) UnmarshalJSON(data []byte) error { return nil } -// A collection of Spans produced by an InstrumentationScope. +// ScopeSpans is a collection of Spans produced by an InstrumentationScope. type ScopeSpans struct { // The instrumentation scope information for the spans in this message. // Semantically when InstrumentationScope isn't set, it is equivalent with diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go index 7251492da..ae9ce102a 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go @@ -316,7 +316,7 @@ func (v Value) String() string { case ValueKindBool: return strconv.FormatBool(v.asBool()) case ValueKindBytes: - return fmt.Sprint(v.asBytes()) + return string(v.asBytes()) case ValueKindMap: return fmt.Sprint(v.asMap()) case ValueKindSlice: diff --git a/vendor/go.opentelemetry.io/otel/trace/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop.go index c8b1ae5d6..0f56e4dbb 100644 --- a/vendor/go.opentelemetry.io/otel/trace/noop.go +++ b/vendor/go.opentelemetry.io/otel/trace/noop.go @@ -95,6 +95,8 @@ var autoInstEnabled = new(bool) // tracerProvider return a noopTracerProvider if autoEnabled is false, // otherwise it will return a TracerProvider from the sdk package used in // auto-instrumentation. +// +//go:noinline func (noopSpan) tracerProvider(autoEnabled *bool) TracerProvider { if *autoEnabled { return newAutoTracerProvider() diff --git a/vendor/go.opentelemetry.io/otel/verify_readmes.sh b/vendor/go.opentelemetry.io/otel/verify_readmes.sh deleted file mode 100644 index 1e87855ee..000000000 --- a/vendor/go.opentelemetry.io/otel/verify_readmes.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Copyright The OpenTelemetry Authors -# SPDX-License-Identifier: Apache-2.0 - -set -euo pipefail - -dirs=$(find . -type d -not -path "*/internal*" -not -path "*/test*" -not -path "*/example*" -not -path "*/.*" | sort) - -missingReadme=false -for dir in $dirs; do - if [ ! -f "$dir/README.md" ]; then - echo "couldn't find README.md for $dir" - missingReadme=true - fi -done - -if [ "$missingReadme" = true ] ; then - echo "Error: some READMEs couldn't be found." - exit 1 -fi diff --git a/vendor/go.opentelemetry.io/otel/version.go b/vendor/go.opentelemetry.io/otel/version.go index d5fa71f67..7afe92b59 100644 --- a/vendor/go.opentelemetry.io/otel/version.go +++ b/vendor/go.opentelemetry.io/otel/version.go @@ -5,5 +5,5 @@ package otel // import "go.opentelemetry.io/otel" // Version is the current release version of OpenTelemetry in use. func Version() string { - return "1.35.0" + return "1.37.0" } diff --git a/vendor/go.opentelemetry.io/otel/versions.yaml b/vendor/go.opentelemetry.io/otel/versions.yaml index 2b4cb4b41..9d4742a17 100644 --- a/vendor/go.opentelemetry.io/otel/versions.yaml +++ b/vendor/go.opentelemetry.io/otel/versions.yaml @@ -3,13 +3,12 @@ module-sets: stable-v1: - version: v1.35.0 + version: v1.37.0 modules: - go.opentelemetry.io/otel - go.opentelemetry.io/otel/bridge/opencensus - go.opentelemetry.io/otel/bridge/opencensus/test - go.opentelemetry.io/otel/bridge/opentracing - - go.opentelemetry.io/otel/bridge/opentracing/test - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp - go.opentelemetry.io/otel/exporters/otlp/otlptrace @@ -23,14 +22,16 @@ module-sets: - go.opentelemetry.io/otel/sdk/metric - go.opentelemetry.io/otel/trace experimental-metrics: - version: v0.57.0 + version: v0.59.0 modules: - go.opentelemetry.io/otel/exporters/prometheus experimental-logs: - version: v0.11.0 + version: v0.13.0 modules: - go.opentelemetry.io/otel/log + - go.opentelemetry.io/otel/log/logtest - go.opentelemetry.io/otel/sdk/log + - go.opentelemetry.io/otel/sdk/log/logtest - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp - go.opentelemetry.io/otel/exporters/stdout/stdoutlog diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go index 52c414db0..7692bb346 100644 --- a/vendor/golang.org/x/crypto/blake2b/blake2x.go +++ b/vendor/golang.org/x/crypto/blake2b/blake2x.go @@ -12,6 +12,8 @@ import ( // XOF defines the interface to hash functions that // support arbitrary-length output. +// +// New callers should prefer the standard library [hash.XOF]. type XOF interface { // Write absorbs more data into the hash's state. It panics if called // after Read. @@ -47,6 +49,8 @@ const maxOutputLength = (1 << 32) * 64 // // A non-nil key turns the hash into a MAC. The key must between // zero and 32 bytes long. +// +// The result can be safely interface-upgraded to [hash.XOF]. func NewXOF(size uint32, key []byte) (XOF, error) { if len(key) > Size { return nil, errKeySize @@ -93,6 +97,10 @@ func (x *xof) Clone() XOF { return &clone } +func (x *xof) BlockSize() int { + return x.d.BlockSize() +} + func (x *xof) Reset() { x.cfg[0] = byte(Size) binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length diff --git a/vendor/golang.org/x/crypto/blake2b/go125.go b/vendor/golang.org/x/crypto/blake2b/go125.go new file mode 100644 index 000000000..67e990b7e --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/go125.go @@ -0,0 +1,11 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.25 + +package blake2b + +import "hash" + +var _ hash.XOF = (*xof)(nil) diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go index a3dc629c6..139fa31e1 100644 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ b/vendor/golang.org/x/crypto/ssh/certs.go @@ -233,7 +233,11 @@ func parseCert(in []byte, privAlgo string) (*Certificate, error) { if err != nil { return nil, err } - + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[k.Type()]; ok { + return nil, fmt.Errorf("ssh: the signature key type %q is invalid for certificates", k.Type()) + } c.SignatureKey = k c.Signature, rest, ok = parseSignatureBody(g.Signature) if !ok || len(rest) > 0 { @@ -301,16 +305,13 @@ type CertChecker struct { SupportedCriticalOptions []string // IsUserAuthority should return true if the key is recognized as an - // authority for the given user certificate. This allows for - // certificates to be signed by other certificates. This must be set - // if this CertChecker will be checking user certificates. + // authority for user certificate. This must be set if this CertChecker + // will be checking user certificates. IsUserAuthority func(auth PublicKey) bool // IsHostAuthority should report whether the key is recognized as - // an authority for this host. This allows for certificates to be - // signed by other keys, and for those other keys to only be valid - // signers for particular hostnames. This must be set if this - // CertChecker will be checking host certificates. + // an authority for this host. This must be set if this CertChecker + // will be checking host certificates. IsHostAuthority func(auth PublicKey, address string) bool // Clock is used for verifying time stamps. If nil, time.Now @@ -447,12 +448,19 @@ func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { // SignCert signs the certificate with an authority, setting the Nonce, // SignatureKey, and Signature fields. If the authority implements the // MultiAlgorithmSigner interface the first algorithm in the list is used. This -// is useful if you want to sign with a specific algorithm. +// is useful if you want to sign with a specific algorithm. As specified in +// [SSH-CERTS], Section 2.1.1, authority can't be a [Certificate]. func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { c.Nonce = make([]byte, 32) if _, err := io.ReadFull(rand, c.Nonce); err != nil { return err } + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[authority.PublicKey().Type()]; ok { + return fmt.Errorf("ssh: certificates cannot be used as authority (public key type %q)", + authority.PublicKey().Type()) + } c.SignatureKey = authority.PublicKey() if v, ok := authority.(MultiAlgorithmSigner); ok { diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go index b86dde151..c12818fdc 100644 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ b/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -289,7 +289,7 @@ func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiA } } - algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos) + algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos, true) if err != nil { // If there is no overlap, return the fallback algorithm to support // servers that fail to list all supported algorithms. diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index 0415d3396..f2ec0896c 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -336,7 +336,7 @@ func parseError(tag uint8) error { return fmt.Errorf("ssh: parse error in message type %d", tag) } -func findCommon(what string, client []string, server []string) (common string, err error) { +func findCommon(what string, client []string, server []string, isClient bool) (string, error) { for _, c := range client { for _, s := range server { if c == s { @@ -344,7 +344,32 @@ func findCommon(what string, client []string, server []string) (common string, e } } } - return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) + err := &AlgorithmNegotiationError{ + What: what, + } + if isClient { + err.SupportedAlgorithms = client + err.RequestedAlgorithms = server + } else { + err.SupportedAlgorithms = server + err.RequestedAlgorithms = client + } + return "", err +} + +// AlgorithmNegotiationError defines the error returned if the client and the +// server cannot agree on an algorithm for key exchange, host key, cipher, MAC. +type AlgorithmNegotiationError struct { + What string + // RequestedAlgorithms lists the algorithms supported by the peer. + RequestedAlgorithms []string + // SupportedAlgorithms lists the algorithms supported on our side. + SupportedAlgorithms []string +} + +func (a *AlgorithmNegotiationError) Error() string { + return fmt.Sprintf("ssh: no common algorithm for %s; we offered: %v, peer offered: %v", + a.What, a.SupportedAlgorithms, a.RequestedAlgorithms) } // DirectionAlgorithms defines the algorithms negotiated in one direction @@ -379,12 +404,12 @@ var aeadCiphers = map[string]bool{ func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *NegotiatedAlgorithms, err error) { result := &NegotiatedAlgorithms{} - result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) + result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos, isClient) if err != nil { return } - result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos) + result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos, isClient) if err != nil { return } @@ -394,36 +419,36 @@ func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMs ctos, stoc = stoc, ctos } - ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) + ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer, isClient) if err != nil { return } - stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) + stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient, isClient) if err != nil { return } if !aeadCiphers[ctos.Cipher] { - ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) + ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer, isClient) if err != nil { return } } if !aeadCiphers[stoc.Cipher] { - stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) + stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient, isClient) if err != nil { return } } - ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) + ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer, isClient) if err != nil { return } - stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) + stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient, isClient) if err != nil { return } diff --git a/vendor/golang.org/x/crypto/ssh/doc.go b/vendor/golang.org/x/crypto/ssh/doc.go index f5d352fe3..04ccce346 100644 --- a/vendor/golang.org/x/crypto/ssh/doc.go +++ b/vendor/golang.org/x/crypto/ssh/doc.go @@ -16,6 +16,7 @@ References: [PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 + [SSH-CERTS]: https://datatracker.ietf.org/doc/html/draft-miller-ssh-cert-01 This package does not fall under the stability promise of the Go language itself, so its API may be changed when pressing needs arise. diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go index 566e09d5a..a28c0de50 100644 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ b/vendor/golang.org/x/crypto/ssh/keys.go @@ -273,7 +273,7 @@ func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []str return nil, "", nil, nil, errors.New("ssh: no key found") } -// ParsePublicKey parses an SSH public key formatted for use in +// ParsePublicKey parses an SSH public key or certificate formatted for use in // the SSH wire protocol according to RFC 4253, section 6.6. func ParsePublicKey(in []byte) (out PublicKey, err error) { algo, in, ok := parseString(in) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 4f432bfe8..9e7a6c5a4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -319,6 +319,7 @@ const ( AUDIT_INTEGRITY_POLICY_RULE = 0x70f AUDIT_INTEGRITY_RULE = 0x70d AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_INTEGRITY_USERSPACE = 0x710 AUDIT_IPC = 0x517 AUDIT_IPC_SET_PERM = 0x51f AUDIT_IPE_ACCESS = 0x58c @@ -843,9 +844,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2023-03-01)" + DM_VERSION_EXTRA = "-ioctl (2025-01-17)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x30 + DM_VERSION_MINOR = 0x31 DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -941,6 +942,8 @@ const ( ETHER_FLOW = 0x12 ETHTOOL_BUSINFO_LEN = 0x20 ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FAMILY_NAME = "ethtool" + ETHTOOL_FAMILY_VERSION = 0x1 ETHTOOL_FEC_AUTO = 0x2 ETHTOOL_FEC_BASER = 0x10 ETHTOOL_FEC_LLRS = 0x20 @@ -1203,6 +1206,9 @@ const ( FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 FAN_EPIDFD = -0x2 + FAN_ERRNO_BITS = 0x8 + FAN_ERRNO_MASK = 0xff + FAN_ERRNO_SHIFT = 0x18 FAN_EVENT_INFO_TYPE_DFID = 0x3 FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 FAN_EVENT_INFO_TYPE_ERROR = 0x5 @@ -1210,6 +1216,7 @@ const ( FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa FAN_EVENT_INFO_TYPE_PIDFD = 0x4 + FAN_EVENT_INFO_TYPE_RANGE = 0x6 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_FS_ERROR = 0x8000 @@ -1240,6 +1247,7 @@ const ( FAN_OPEN_EXEC = 0x1000 FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 + FAN_PRE_ACCESS = 0x100000 FAN_Q_OVERFLOW = 0x4000 FAN_RENAME = 0x10000000 FAN_REPORT_DFID_NAME = 0xc00 @@ -2787,7 +2795,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1e + RTA_MAX = 0x1f RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -2864,10 +2872,12 @@ const ( RTM_DELACTION = 0x31 RTM_DELADDR = 0x15 RTM_DELADDRLABEL = 0x49 + RTM_DELANYCAST = 0x3d RTM_DELCHAIN = 0x65 RTM_DELLINK = 0x11 RTM_DELLINKPROP = 0x6d RTM_DELMDB = 0x55 + RTM_DELMULTICAST = 0x39 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 RTM_DELNEXTHOP = 0x69 @@ -2917,11 +2927,13 @@ const ( RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWANYCAST = 0x3c RTM_NEWCACHEREPORT = 0x60 RTM_NEWCHAIN = 0x64 RTM_NEWLINK = 0x10 RTM_NEWLINKPROP = 0x6c RTM_NEWMDB = 0x54 + RTM_NEWMULTICAST = 0x38 RTM_NEWNDUSEROPT = 0x44 RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 @@ -2987,11 +2999,12 @@ const ( RUSAGE_THREAD = 0x1 RWF_APPEND = 0x10 RWF_ATOMIC = 0x40 + RWF_DONTCACHE = 0x80 RWF_DSYNC = 0x2 RWF_HIPRI = 0x1 RWF_NOAPPEND = 0x20 RWF_NOWAIT = 0x8 - RWF_SUPPORTED = 0x7f + RWF_SUPPORTED = 0xff RWF_SYNC = 0x4 RWF_WRITE_LIFE_NOT_SET = 0x0 SCHED_BATCH = 0x3 @@ -3271,6 +3284,7 @@ const ( STATX_BTIME = 0x800 STATX_CTIME = 0x80 STATX_DIOALIGN = 0x2000 + STATX_DIO_READ_ALIGN = 0x20000 STATX_GID = 0x10 STATX_INO = 0x100 STATX_MNT_ID = 0x1000 @@ -3322,7 +3336,7 @@ const ( TASKSTATS_GENL_NAME = "TASKSTATS" TASKSTATS_GENL_VERSION = 0x1 TASKSTATS_TYPE_MAX = 0x6 - TASKSTATS_VERSION = 0xe + TASKSTATS_VERSION = 0xf TCIFLUSH = 0x0 TCIOFF = 0x2 TCIOFLUSH = 0x2 @@ -3503,6 +3517,7 @@ const ( TP_STATUS_WRONG_FORMAT = 0x4 TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 + UBI_IOCECNFO = 0xc01c6f06 UDF_SUPER_MAGIC = 0x15013346 UDP_CORK = 0x1 UDP_ENCAP = 0x64 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 75207613c..a8c421e29 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -372,6 +372,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index c68acda53..9a88d1813 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -373,6 +373,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a8c607ab8..7cb6a867e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -378,6 +378,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 18563dd8d..d0ecd2c58 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 22912cdaa..7a2940ae0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -365,6 +365,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 29344eb37..d14ca8f2e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 20d51fb96..2da1bac1e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 321b60902..28727514b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 9bacdf1e2..7f287b54b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index c22427261..7e5f9e6aa 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -426,6 +426,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 6270c8ee1..37c87952f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -430,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 9966c1941..522013361 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -430,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 848e5fcc4..4bfe2b5b6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -362,6 +362,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 669b2adb8..e3cffb869 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -434,6 +434,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 4834e5751..c219c8db3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -473,6 +473,7 @@ const ( SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 SO_RCVMARK = 0x54 + SO_RCVPRIORITY = 0x5b SO_RCVTIMEO = 0x2000 SO_RCVTIMEO_NEW = 0x44 SO_RCVTIMEO_OLD = 0x2000 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index a46abe647..8bcac2835 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -114,7 +114,7 @@ type Statx_t struct { Atomic_write_unit_min uint32 Atomic_write_unit_max uint32 Atomic_write_segments_max uint32 - _ [1]uint32 + Dio_read_offset_align uint32 _ [9]uint64 } @@ -2226,8 +2226,11 @@ const ( NFT_PAYLOAD_LL_HEADER = 0x0 NFT_PAYLOAD_NETWORK_HEADER = 0x1 NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_INNER_HEADER = 0x3 + NFT_PAYLOAD_TUN_HEADER = 0x4 NFT_PAYLOAD_CSUM_NONE = 0x0 NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_CSUM_SCTP = 0x2 NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 NFTA_PAYLOAD_UNSPEC = 0x0 NFTA_PAYLOAD_DREG = 0x1 @@ -3802,7 +3805,16 @@ const ( ETHTOOL_MSG_PSE_GET = 0x24 ETHTOOL_MSG_PSE_SET = 0x25 ETHTOOL_MSG_RSS_GET = 0x26 - ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_PLCA_GET_CFG = 0x27 + ETHTOOL_MSG_PLCA_SET_CFG = 0x28 + ETHTOOL_MSG_PLCA_GET_STATUS = 0x29 + ETHTOOL_MSG_MM_GET = 0x2a + ETHTOOL_MSG_MM_SET = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_ACT = 0x2c + ETHTOOL_MSG_PHY_GET = 0x2d + ETHTOOL_MSG_TSCONFIG_GET = 0x2e + ETHTOOL_MSG_TSCONFIG_SET = 0x2f + ETHTOOL_MSG_USER_MAX = 0x2f ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3842,7 +3854,17 @@ const ( ETHTOOL_MSG_MODULE_NTF = 0x24 ETHTOOL_MSG_PSE_GET_REPLY = 0x25 ETHTOOL_MSG_RSS_GET_REPLY = 0x26 - ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 0x27 + ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 0x28 + ETHTOOL_MSG_PLCA_NTF = 0x29 + ETHTOOL_MSG_MM_GET_REPLY = 0x2a + ETHTOOL_MSG_MM_NTF = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_NTF = 0x2c + ETHTOOL_MSG_PHY_GET_REPLY = 0x2d + ETHTOOL_MSG_PHY_NTF = 0x2e + ETHTOOL_MSG_TSCONFIG_GET_REPLY = 0x2f + ETHTOOL_MSG_TSCONFIG_SET_REPLY = 0x30 + ETHTOOL_MSG_KERNEL_MAX = 0x30 ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 ETHTOOL_FLAG_OMIT_REPLY = 0x2 ETHTOOL_FLAG_STATS = 0x4 @@ -3949,7 +3971,12 @@ const ( ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb ETHTOOL_A_RINGS_CQE_SIZE = 0xc ETHTOOL_A_RINGS_TX_PUSH = 0xd - ETHTOOL_A_RINGS_MAX = 0x10 + ETHTOOL_A_RINGS_RX_PUSH = 0xe + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 0xf + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 0x10 + ETHTOOL_A_RINGS_HDS_THRESH = 0x11 + ETHTOOL_A_RINGS_HDS_THRESH_MAX = 0x12 + ETHTOOL_A_RINGS_MAX = 0x12 ETHTOOL_A_CHANNELS_UNSPEC = 0x0 ETHTOOL_A_CHANNELS_HEADER = 0x1 ETHTOOL_A_CHANNELS_RX_MAX = 0x2 @@ -4015,7 +4042,9 @@ const ( ETHTOOL_A_TSINFO_TX_TYPES = 0x3 ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 - ETHTOOL_A_TSINFO_MAX = 0x6 + ETHTOOL_A_TSINFO_STATS = 0x6 + ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER = 0x7 + ETHTOOL_A_TSINFO_MAX = 0x7 ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_HEADER = 0x1 ETHTOOL_A_CABLE_TEST_MAX = 0x1 @@ -4613,6 +4642,7 @@ const ( NL80211_ATTR_AKM_SUITES = 0x4c NL80211_ATTR_AP_ISOLATE = 0x60 NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 + NL80211_ATTR_ASSOC_SPP_AMSDU = 0x14a NL80211_ATTR_AUTH_DATA = 0x9c NL80211_ATTR_AUTH_TYPE = 0x35 NL80211_ATTR_BANDS = 0xef @@ -4623,6 +4653,7 @@ const ( NL80211_ATTR_BSS_BASIC_RATES = 0x24 NL80211_ATTR_BSS = 0x2f NL80211_ATTR_BSS_CTS_PROT = 0x1c + NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA = 0x147 NL80211_ATTR_BSS_HT_OPMODE = 0x6d NL80211_ATTR_BSSID = 0xf5 NL80211_ATTR_BSS_SELECT = 0xe3 @@ -4682,6 +4713,7 @@ const ( NL80211_ATTR_DTIM_PERIOD = 0xd NL80211_ATTR_DURATION = 0x57 NL80211_ATTR_EHT_CAPABILITY = 0x136 + NL80211_ATTR_EMA_RNR_ELEMS = 0x145 NL80211_ATTR_EML_CAPABILITY = 0x13d NL80211_ATTR_EXT_CAPA = 0xa9 NL80211_ATTR_EXT_CAPA_MASK = 0xaa @@ -4717,6 +4749,7 @@ const ( NL80211_ATTR_HIDDEN_SSID = 0x7e NL80211_ATTR_HT_CAPABILITY = 0x1f NL80211_ATTR_HT_CAPABILITY_MASK = 0x94 + NL80211_ATTR_HW_TIMESTAMP_ENABLED = 0x144 NL80211_ATTR_IE_ASSOC_RESP = 0x80 NL80211_ATTR_IE = 0x2a NL80211_ATTR_IE_PROBE_RESP = 0x7f @@ -4747,9 +4780,10 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x14d + NL80211_ATTR_MAX = 0x150 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce + NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS = 0x143 NL80211_ATTR_MAX_MATCH_SETS = 0x85 NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 @@ -4774,9 +4808,12 @@ const ( NL80211_ATTR_MGMT_SUBTYPE = 0x29 NL80211_ATTR_MLD_ADDR = 0x13a NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e + NL80211_ATTR_MLO_LINK_DISABLED = 0x146 NL80211_ATTR_MLO_LINK_ID = 0x139 NL80211_ATTR_MLO_LINKS = 0x138 NL80211_ATTR_MLO_SUPPORT = 0x13b + NL80211_ATTR_MLO_TTLM_DLINK = 0x148 + NL80211_ATTR_MLO_TTLM_ULINK = 0x149 NL80211_ATTR_MNTR_FLAGS = 0x17 NL80211_ATTR_MPATH_INFO = 0x1b NL80211_ATTR_MPATH_NEXT_HOP = 0x1a @@ -4809,12 +4846,14 @@ const ( NL80211_ATTR_PORT_AUTHORIZED = 0x103 NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN = 0x5 NL80211_ATTR_POWER_RULE_MAX_EIRP = 0x6 + NL80211_ATTR_POWER_RULE_PSD = 0x8 NL80211_ATTR_PREV_BSSID = 0x4f NL80211_ATTR_PRIVACY = 0x46 NL80211_ATTR_PROBE_RESP = 0x91 NL80211_ATTR_PROBE_RESP_OFFLOAD = 0x90 NL80211_ATTR_PROTOCOL_FEATURES = 0xad NL80211_ATTR_PS_STATE = 0x5d + NL80211_ATTR_PUNCT_BITMAP = 0x142 NL80211_ATTR_QOS_MAP = 0xc7 NL80211_ATTR_RADAR_BACKGROUND = 0x134 NL80211_ATTR_RADAR_EVENT = 0xa8 @@ -4943,7 +4982,9 @@ const ( NL80211_ATTR_WIPHY_FREQ = 0x26 NL80211_ATTR_WIPHY_FREQ_HINT = 0xc9 NL80211_ATTR_WIPHY_FREQ_OFFSET = 0x122 + NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS = 0x14c NL80211_ATTR_WIPHY_NAME = 0x2 + NL80211_ATTR_WIPHY_RADIOS = 0x14b NL80211_ATTR_WIPHY_RETRY_LONG = 0x3e NL80211_ATTR_WIPHY_RETRY_SHORT = 0x3d NL80211_ATTR_WIPHY_RTS_THRESHOLD = 0x40 @@ -4978,6 +5019,8 @@ const ( NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 NL80211_BAND_ATTR_MAX = 0xd NL80211_BAND_ATTR_RATES = 0x2 + NL80211_BAND_ATTR_S1G_CAPA = 0xd + NL80211_BAND_ATTR_S1G_MCS_NSS_SET = 0xc NL80211_BAND_ATTR_VHT_CAPA = 0x8 NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 @@ -5001,6 +5044,10 @@ const ( NL80211_BSS_BEACON_INTERVAL = 0x4 NL80211_BSS_BEACON_TSF = 0xd NL80211_BSS_BSSID = 0x1 + NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH = 0x2 + NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY = 0x1 + NL80211_BSS_CANNOT_USE_REASONS = 0x18 + NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH = 0x2 NL80211_BSS_CAPABILITY = 0x5 NL80211_BSS_CHAIN_SIGNAL = 0x13 NL80211_BSS_CHAN_WIDTH_10 = 0x1 @@ -5032,6 +5079,9 @@ const ( NL80211_BSS_STATUS = 0x9 NL80211_BSS_STATUS_IBSS_JOINED = 0x2 NL80211_BSS_TSF = 0x3 + NL80211_BSS_USE_FOR = 0x17 + NL80211_BSS_USE_FOR_MLD_LINK = 0x2 + NL80211_BSS_USE_FOR_NORMAL = 0x1 NL80211_CHAN_HT20 = 0x1 NL80211_CHAN_HT40MINUS = 0x2 NL80211_CHAN_HT40PLUS = 0x3 @@ -5117,7 +5167,8 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x9b + NL80211_CMD_LINKS_REMOVED = 0x9a + NL80211_CMD_MAX = 0x9d NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_MODIFY_LINK_STA = 0x97 NL80211_CMD_NAN_MATCH = 0x78 @@ -5161,6 +5212,7 @@ const ( NL80211_CMD_SET_COALESCE = 0x65 NL80211_CMD_SET_CQM = 0x3f NL80211_CMD_SET_FILS_AAD = 0x92 + NL80211_CMD_SET_HW_TIMESTAMP = 0x99 NL80211_CMD_SET_INTERFACE = 0x6 NL80211_CMD_SET_KEY = 0xa NL80211_CMD_SET_MAC_ACL = 0x5d @@ -5180,6 +5232,7 @@ const ( NL80211_CMD_SET_SAR_SPECS = 0x8c NL80211_CMD_SET_STATION = 0x12 NL80211_CMD_SET_TID_CONFIG = 0x89 + NL80211_CMD_SET_TID_TO_LINK_MAPPING = 0x9b NL80211_CMD_SET_TX_BITRATE_MASK = 0x39 NL80211_CMD_SET_WDS_PEER = 0x42 NL80211_CMD_SET_WIPHY = 0x2 @@ -5247,6 +5300,7 @@ const ( NL80211_EXT_FEATURE_AIRTIME_FAIRNESS = 0x21 NL80211_EXT_FEATURE_AP_PMKSA_CACHING = 0x22 NL80211_EXT_FEATURE_AQL = 0x28 + NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA = 0x40 NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT = 0x2e NL80211_EXT_FEATURE_BEACON_PROTECTION = 0x29 NL80211_EXT_FEATURE_BEACON_RATE_HE = 0x36 @@ -5262,6 +5316,7 @@ const ( NL80211_EXT_FEATURE_CQM_RSSI_LIST = 0xd NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = 0x1b NL80211_EXT_FEATURE_DEL_IBSS_STA = 0x2c + NL80211_EXT_FEATURE_DFS_CONCURRENT = 0x43 NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 @@ -5281,9 +5336,12 @@ const ( NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 + NL80211_EXT_FEATURE_OWE_OFFLOAD_AP = 0x42 + NL80211_EXT_FEATURE_OWE_OFFLOAD = 0x41 NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 + NL80211_EXT_FEATURE_PUNCT = 0x3e NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c NL80211_EXT_FEATURE_RRM = 0x1 NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 @@ -5295,8 +5353,10 @@ const ( NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23 NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI = 0xc NL80211_EXT_FEATURE_SECURE_LTF = 0x37 + NL80211_EXT_FEATURE_SECURE_NAN = 0x3f NL80211_EXT_FEATURE_SECURE_RTT = 0x38 NL80211_EXT_FEATURE_SET_SCAN_DWELL = 0x5 + NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT = 0x44 NL80211_EXT_FEATURE_STA_TX_PWR = 0x25 NL80211_EXT_FEATURE_TXQS = 0x1c NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 0x35 @@ -5343,7 +5403,10 @@ const ( NL80211_FREQUENCY_ATTR_2MHZ = 0x16 NL80211_FREQUENCY_ATTR_4MHZ = 0x17 NL80211_FREQUENCY_ATTR_8MHZ = 0x18 + NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP = 0x21 + NL80211_FREQUENCY_ATTR_CAN_MONITOR = 0x20 NL80211_FREQUENCY_ATTR_DFS_CAC_TIME = 0xd + NL80211_FREQUENCY_ATTR_DFS_CONCURRENT = 0x1d NL80211_FREQUENCY_ATTR_DFS_STATE = 0x7 NL80211_FREQUENCY_ATTR_DFS_TIME = 0x8 NL80211_FREQUENCY_ATTR_DISABLED = 0x2 @@ -5357,6 +5420,8 @@ const ( NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a + NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b NL80211_FREQUENCY_ATTR_NO_HE = 0x13 @@ -5364,8 +5429,11 @@ const ( NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa NL80211_FREQUENCY_ATTR_NO_IBSS = 0x3 NL80211_FREQUENCY_ATTR_NO_IR = 0x3 + NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_OFFSET = 0x14 NL80211_FREQUENCY_ATTR_PASSIVE_SCAN = 0x3 + NL80211_FREQUENCY_ATTR_PSD = 0x1c NL80211_FREQUENCY_ATTR_RADAR = 0x5 NL80211_FREQUENCY_ATTR_WMM = 0x12 NL80211_FTM_RESP_ATTR_CIVICLOC = 0x3 @@ -5430,6 +5498,7 @@ const ( NL80211_IFTYPE_STATION = 0x2 NL80211_IFTYPE_UNSPECIFIED = 0x0 NL80211_IFTYPE_WDS = 0x5 + NL80211_KCK_EXT_LEN_32 = 0x20 NL80211_KCK_EXT_LEN = 0x18 NL80211_KCK_LEN = 0x10 NL80211_KEK_EXT_LEN = 0x20 @@ -5458,6 +5527,7 @@ const ( NL80211_MAX_SUPP_HT_RATES = 0x4d NL80211_MAX_SUPP_RATES = 0x20 NL80211_MAX_SUPP_REG_RULES = 0x80 + NL80211_MAX_SUPP_SELECTORS = 0x80 NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5 @@ -5703,11 +5773,16 @@ const ( NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa + NL80211_RATE_INFO_16_MHZ_WIDTH = 0x1d + NL80211_RATE_INFO_1_MHZ_WIDTH = 0x19 + NL80211_RATE_INFO_2_MHZ_WIDTH = 0x1a NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 + NL80211_RATE_INFO_4_MHZ_WIDTH = 0x1b NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 + NL80211_RATE_INFO_8_MHZ_WIDTH = 0x1c NL80211_RATE_INFO_BITRATE32 = 0x5 NL80211_RATE_INFO_BITRATE = 0x1 NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 @@ -5753,6 +5828,8 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 NL80211_RATE_INFO_MAX = 0x1d NL80211_RATE_INFO_MCS = 0x2 + NL80211_RATE_INFO_S1G_MCS = 0x17 + NL80211_RATE_INFO_S1G_NSS = 0x18 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 NL80211_RATE_INFO_VHT_NSS = 0x7 @@ -5770,14 +5847,19 @@ const ( NL80211_REKEY_DATA_KEK = 0x1 NL80211_REKEY_DATA_REPLAY_CTR = 0x3 NL80211_REPLAY_CTR_LEN = 0x8 + NL80211_RRF_ALLOW_6GHZ_VLP_AP = 0x1000000 NL80211_RRF_AUTO_BW = 0x800 NL80211_RRF_DFS = 0x10 + NL80211_RRF_DFS_CONCURRENT = 0x200000 NL80211_RRF_GO_CONCURRENT = 0x1000 NL80211_RRF_IR_CONCURRENT = 0x1000 NL80211_RRF_NO_160MHZ = 0x10000 NL80211_RRF_NO_320MHZ = 0x40000 + NL80211_RRF_NO_6GHZ_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_6GHZ_VLP_CLIENT = 0x400000 NL80211_RRF_NO_80MHZ = 0x8000 NL80211_RRF_NO_CCK = 0x2 + NL80211_RRF_NO_EHT = 0x80000 NL80211_RRF_NO_HE = 0x20000 NL80211_RRF_NO_HT40 = 0x6000 NL80211_RRF_NO_HT40MINUS = 0x2000 @@ -5788,7 +5870,10 @@ const ( NL80211_RRF_NO_IR = 0x80 NL80211_RRF_NO_OFDM = 0x1 NL80211_RRF_NO_OUTDOOR = 0x8 + NL80211_RRF_NO_UHB_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_UHB_VLP_CLIENT = 0x400000 NL80211_RRF_PASSIVE_SCAN = 0x80 + NL80211_RRF_PSD = 0x100000 NL80211_RRF_PTMP_ONLY = 0x40 NL80211_RRF_PTP_ONLY = 0x20 NL80211_RXMGMT_FLAG_ANSWERED = 0x1 @@ -5849,6 +5934,7 @@ const ( NL80211_STA_FLAG_MAX_OLD_API = 0x6 NL80211_STA_FLAG_MFP = 0x4 NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 + NL80211_STA_FLAG_SPP_AMSDU = 0x8 NL80211_STA_FLAG_TDLS_PEER = 0x6 NL80211_STA_FLAG_WME = 0x3 NL80211_STA_INFO_ACK_SIGNAL_AVG = 0x23 @@ -6007,6 +6093,13 @@ const ( NL80211_VHT_CAPABILITY_LEN = 0xc NL80211_VHT_NSS_MAX = 0x8 NL80211_WIPHY_NAME_MAXLEN = 0x40 + NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE = 0x2 + NL80211_WIPHY_RADIO_ATTR_INDEX = 0x1 + NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION = 0x3 + NL80211_WIPHY_RADIO_ATTR_MAX = 0x4 + NL80211_WIPHY_RADIO_FREQ_ATTR_END = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_START = 0x1 NL80211_WMMR_AIFSN = 0x3 NL80211_WMMR_CW_MAX = 0x2 NL80211_WMMR_CW_MIN = 0x1 @@ -6038,6 +6131,7 @@ const ( NL80211_WOWLAN_TRIG_PKT_PATTERN = 0x4 NL80211_WOWLAN_TRIG_RFKILL_RELEASE = 0x9 NL80211_WOWLAN_TRIG_TCP_CONNECTION = 0xe + NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC = 0x14 NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 = 0xa NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN = 0xb NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 = 0xc diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index fd402da43..62db85f6c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -285,10 +285,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -324,11 +330,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -336,8 +348,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index eb7a5e186..7d89d648d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -300,10 +300,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -338,19 +344,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index d78ac108b..9c0b39eec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -276,10 +276,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -315,11 +321,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -327,8 +339,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index cd06d47f1..de9c7ff36 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -279,10 +279,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -317,19 +323,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 2f28fe26c..2336bd2bf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -280,10 +280,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -318,19 +324,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 71d6cac2f..4711f0be1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 8596d4535..ab99a34b9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index cd60ea186..04c9866e3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index b0ae420c4..60aa69f61 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 835972875..cb4fad785 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -288,10 +288,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,11 +333,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -339,8 +351,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 69eb6a5c6..60272cfce 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 5f583cb62..3f5b91bc0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index ad05b51a6..51550f15a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -307,10 +307,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -345,19 +351,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index cf3ce9003..3239e50e0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -302,10 +302,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -340,19 +346,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 590b56739..faf200278 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -284,10 +284,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -322,19 +328,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/time/rate/sometimes.go b/vendor/golang.org/x/time/rate/sometimes.go index 6ba99ddb6..9b8393269 100644 --- a/vendor/golang.org/x/time/rate/sometimes.go +++ b/vendor/golang.org/x/time/rate/sometimes.go @@ -61,7 +61,9 @@ func (s *Sometimes) Do(f func()) { (s.Every > 0 && s.count%s.Every == 0) || (s.Interval > 0 && time.Since(s.last) >= s.Interval) { f() - s.last = time.Now() + if s.Interval > 0 { + s.last = time.Now() + } } s.count++ } diff --git a/vendor/google.golang.org/api/internal/cba.go b/vendor/google.golang.org/api/internal/cba.go index fbf4ef1c6..7b13dc836 100644 --- a/vendor/google.golang.org/api/internal/cba.go +++ b/vendor/google.golang.org/api/internal/cba.go @@ -42,7 +42,6 @@ import ( "strings" "github.com/google/s2a-go" - "github.com/google/s2a-go/fallback" "google.golang.org/api/internal/cert" "google.golang.org/grpc/credentials" ) @@ -242,17 +241,8 @@ func GetGRPCTransportConfigAndEndpoint(settings *DialSettings) (credentials.Tran return defaultTransportCreds, config.endpoint, nil } - var fallbackOpts *s2a.FallbackOptions - // In case of S2A failure, fall back to the endpoint that would've been used without S2A. - if fallbackHandshake, err := fallback.DefaultFallbackClientHandshakeFunc(config.endpoint); err == nil { - fallbackOpts = &s2a.FallbackOptions{ - FallbackClientHandshakeFunc: fallbackHandshake, - } - } - s2aTransportCreds, err := s2a.NewClientCreds(&s2a.ClientOptions{ - S2AAddress: config.s2aAddress, - FallbackOpts: fallbackOpts, + S2AAddress: config.s2aAddress, }) if err != nil { // Use default if we cannot initialize S2A client transport credentials. @@ -273,22 +263,8 @@ func GetHTTPTransportConfigAndEndpoint(settings *DialSettings) (cert.Source, fun return config.clientCertSource, nil, config.endpoint, nil } - var fallbackOpts *s2a.FallbackOptions - // In case of S2A failure, fall back to the endpoint that would've been used without S2A. - if fallbackURL, err := url.Parse(config.endpoint); err == nil { - if fallbackDialer, fallbackServerAddr, err := fallback.DefaultFallbackDialerAndAddress(fallbackURL.Hostname()); err == nil { - fallbackOpts = &s2a.FallbackOptions{ - FallbackDialer: &s2a.FallbackDialer{ - Dialer: fallbackDialer, - ServerAddr: fallbackServerAddr, - }, - } - } - } - dialTLSContextFunc := s2a.NewS2ADialTLSContextFunc(&s2a.ClientOptions{ - S2AAddress: config.s2aAddress, - FallbackOpts: fallbackOpts, + S2AAddress: config.s2aAddress, }) return nil, dialTLSContextFunc, config.s2aMTLSEndpoint, nil } diff --git a/vendor/google.golang.org/api/internal/creds.go b/vendor/google.golang.org/api/internal/creds.go index 86861e243..92bb42c32 100644 --- a/vendor/google.golang.org/api/internal/creds.go +++ b/vendor/google.golang.org/api/internal/creds.go @@ -47,7 +47,13 @@ func Creds(ctx context.Context, ds *DialSettings) (*google.Credentials, error) { // options provided via [option.ClientOption], including legacy oauth2/google // options. If there are no applicable options, then it returns the result of // [cloud.google.com/go/auth/credentials.DetectDefault]. +// Note: If NoAuth is true, when [google.golang.org/api/option.WithoutAuthentication] +// is passed, then no authentication will be performed and this function will +// return nil, nil. func AuthCreds(ctx context.Context, settings *DialSettings) (*auth.Credentials, error) { + if settings.NoAuth { + return nil, nil + } if settings.AuthCredentials != nil { return settings.AuthCredentials, nil } diff --git a/vendor/google.golang.org/api/internal/gensupport/resumable.go b/vendor/google.golang.org/api/internal/gensupport/resumable.go index d74fe2a29..143a48923 100644 --- a/vendor/google.golang.org/api/internal/gensupport/resumable.go +++ b/vendor/google.golang.org/api/internal/gensupport/resumable.go @@ -126,16 +126,21 @@ func (rx *ResumableUpload) reportProgress(old, updated int64) { } } -// transferChunk performs a single HTTP request to upload a single chunk from rx.Media. -func (rx *ResumableUpload) transferChunk(ctx context.Context) (*http.Response, error) { - chunk, off, size, err := rx.Media.Chunk() - - done := err == io.EOF - if !done && err != nil { - return nil, err +// transferChunk performs a single HTTP request to upload a single chunk. +func (rx *ResumableUpload) transferChunk(ctx context.Context, chunk io.Reader, off, size int64, done bool) (*http.Response, error) { + // rCtx is derived from a context with a defined ChunkTransferTimeout with non-zero value. + // If a particular request exceeds this transfer time for getting response, the rCtx deadline will be exceeded, + // triggering a retry of the request. + var rCtx context.Context + var cancel context.CancelFunc + + rCtx = ctx + if rx.ChunkTransferTimeout != 0 { + rCtx, cancel = context.WithTimeout(ctx, rx.ChunkTransferTimeout) + defer cancel() } - res, err := rx.doUploadRequest(ctx, chunk, off, int64(size), done) + res, err := rx.doUploadRequest(rCtx, chunk, off, size, done) if err != nil { return res, err } @@ -149,16 +154,98 @@ func (rx *ResumableUpload) transferChunk(ctx context.Context) (*http.Response, e if res.StatusCode == http.StatusOK { rx.reportProgress(off, off+int64(size)) } + return res, nil +} - if statusResumeIncomplete(res) { - rx.Media.Next() +// uploadChunkWithRetries attempts to upload a single chunk, with retries +// within ChunkRetryDeadline if ChunkTransferTimeout is non-zero. +func (rx *ResumableUpload) uploadChunkWithRetries(ctx context.Context, chunk io.Reader, off, size int64, done bool) (*http.Response, error) { + // Configure error retryable criteria. + shouldRetry := rx.Retry.errorFunc() + + // Configure single chunk retry deadline. + retryDeadline := defaultRetryDeadline + if rx.ChunkRetryDeadline != 0 { + retryDeadline = rx.ChunkRetryDeadline + } + + // Each chunk gets its own initialized-at-zero backoff and invocation ID. + bo := rx.Retry.backoff() + quitAfterTimer := time.NewTimer(retryDeadline) + defer quitAfterTimer.Stop() + rx.attempts = 1 + rx.invocationID = uuid.New().String() + + var pause time.Duration + var resp *http.Response + var err error + + // Retry loop for a single chunk. + for { + // Wait for the backoff period, unless the context is canceled or the + // retry deadline is hit. + pauseTimer := time.NewTimer(pause) + select { + case <-ctx.Done(): + pauseTimer.Stop() + if err == nil { + err = ctx.Err() + } + return resp, err + case <-pauseTimer.C: + case <-quitAfterTimer.C: + pauseTimer.Stop() + return resp, err + } + pauseTimer.Stop() + + // Check for context cancellation or timeout once more. If more than one + // case in the select statement above was satisfied at the same time, Go + // will choose one arbitrarily. + // That can cause an operation to go through even if the context was + // canceled before or the timeout was reached. + select { + case <-ctx.Done(): + if err == nil { + err = ctx.Err() + } + return resp, err + case <-quitAfterTimer.C: + return resp, err + default: + } + + // We close the response's body here, since we definitely will not + // return `resp` now. If we close it before the select case above, a + // timer may fire and cause us to return a response with a closed body + // (in which case, the caller will not get the error message in the body). + if resp != nil && resp.Body != nil { + // Read the body to EOF - if the Body is not both read to EOF and closed, + // the Client's underlying RoundTripper may not be able to re-use the + // persistent TCP connection to the server for a subsequent "keep-alive" request. + // See https://pkg.go.dev/net/http#Client.Do + io.Copy(io.Discard, resp.Body) + resp.Body.Close() + } + + resp, err = rx.transferChunk(ctx, chunk, off, size, done) + status := 0 + if resp != nil { + status = resp.StatusCode + } + // Chunk upload should be retried if the ChunkTransferTimeout is non-zero and err is context deadline exceeded + // or we encounter a retryable error. + if (rx.ChunkTransferTimeout != 0 && errors.Is(err, context.DeadlineExceeded)) || shouldRetry(status, err) { + rx.attempts++ + pause = bo.Pause() + chunk, _, _, _ = rx.Media.Chunk() + continue + } + return resp, err } - return res, nil } // Upload starts the process of a resumable upload with a cancellable context. -// It retries using the provided back off strategy until cancelled or the -// strategy indicates to stop retrying. // It is called from the auto-generated API code and is not visible to the user. // Before sending an HTTP request, Upload calls any registered hook functions, // and calls the returned functions after the request returns (see send.go). @@ -166,144 +253,47 @@ func (rx *ResumableUpload) transferChunk(ctx context.Context) (*http.Response, e // Exactly one of resp or err will be nil. If resp is non-nil, the caller must call resp.Body.Close. // Upload does not parse the response into the error on a non 200 response; // it is the caller's responsibility to call resp.Body.Close. -func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error) { +func (rx *ResumableUpload) Upload(ctx context.Context) (*http.Response, error) { + for { + chunk, off, size, err := rx.Media.Chunk() + done := err == io.EOF + if !done && err != nil { + return nil, err + } - // There are a couple of cases where it's possible for err and resp to both - // be non-nil. However, we expose a simpler contract to our callers: exactly - // one of resp and err will be non-nil. This means that any response body - // must be closed here before returning a non-nil error. - var prepareReturn = func(resp *http.Response, err error) (*http.Response, error) { + resp, err := rx.uploadChunkWithRetries(ctx, chunk, off, int64(size), done) + // There are a couple of cases where it's possible for err and resp to both + // be non-nil. However, we expose a simpler contract to our callers: exactly + // one of resp and err will be non-nil. This means that any response body + // must be closed here before returning a non-nil error. if err != nil { if resp != nil && resp.Body != nil { resp.Body.Close() } // If there were retries, indicate this in the error message and wrap the final error. if rx.attempts > 1 { - return nil, fmt.Errorf("chunk upload failed after %d attempts;, final error: %w", rx.attempts, err) + return nil, fmt.Errorf("chunk upload failed after %d attempts, final error: %w", rx.attempts, err) } return nil, err } + // This case is very unlikely but possible only if rx.ChunkRetryDeadline is // set to a very small value, in which case no requests will be sent before // the deadline. Return an error to avoid causing a panic. if resp == nil { - return nil, fmt.Errorf("upload request to %v not sent, choose larger value for ChunkRetryDealine", rx.URI) + return nil, fmt.Errorf("upload request to %v not sent, choose larger value for ChunkRetryDeadline", rx.URI) } - return resp, nil - } - // Configure retryable error criteria. - errorFunc := rx.Retry.errorFunc() - - // Configure per-chunk retry deadline. - var retryDeadline time.Duration - if rx.ChunkRetryDeadline != 0 { - retryDeadline = rx.ChunkRetryDeadline - } else { - retryDeadline = defaultRetryDeadline - } - - // Send all chunks. - for { - var pause time.Duration - - // Each chunk gets its own initialized-at-zero backoff and invocation ID. - bo := rx.Retry.backoff() - quitAfterTimer := time.NewTimer(retryDeadline) - rx.attempts = 1 - rx.invocationID = uuid.New().String() - - // Retry loop for a single chunk. - for { - pauseTimer := time.NewTimer(pause) - select { - case <-ctx.Done(): - quitAfterTimer.Stop() - pauseTimer.Stop() - if err == nil { - err = ctx.Err() - } - return prepareReturn(resp, err) - case <-pauseTimer.C: - case <-quitAfterTimer.C: - pauseTimer.Stop() - return prepareReturn(resp, err) - } - pauseTimer.Stop() - - // Check for context cancellation or timeout once more. If more than one - // case in the select statement above was satisfied at the same time, Go - // will choose one arbitrarily. - // That can cause an operation to go through even if the context was - // canceled before or the timeout was reached. - select { - case <-ctx.Done(): - quitAfterTimer.Stop() - if err == nil { - err = ctx.Err() - } - return prepareReturn(resp, err) - case <-quitAfterTimer.C: - return prepareReturn(resp, err) - default: - } - // rCtx is derived from a context with a defined transferTimeout with non-zero value. - // If a particular request exceeds this transfer time for getting response, the rCtx deadline will be exceeded, - // triggering a retry of the request. - var rCtx context.Context - var cancel context.CancelFunc - - rCtx = ctx - if rx.ChunkTransferTimeout != 0 { - rCtx, cancel = context.WithTimeout(ctx, rx.ChunkTransferTimeout) - } - - // We close the response's body here, since we definitely will not - // return `resp` now. If we close it before the select case above, a - // timer may fire and cause us to return a response with a closed body - // (in which case, the caller will not get the error message in the body). - if resp != nil && resp.Body != nil { - // Read the body to EOF - if the Body is not both read to EOF and closed, - // the Client's underlying RoundTripper may not be able to re-use the - // persistent TCP connection to the server for a subsequent "keep-alive" request. - // See https://pkg.go.dev/net/http#Client.Do + if statusResumeIncomplete(resp) { + // The upload is not yet complete, but the server has acknowledged this chunk. + // We don't have anything to do with the response body. + if resp.Body != nil { io.Copy(io.Discard, resp.Body) resp.Body.Close() } - resp, err = rx.transferChunk(rCtx) - - var status int - if resp != nil { - status = resp.StatusCode - } - - // The upload should be retried if the rCtx is canceled due to a timeout. - select { - case <-rCtx.Done(): - if rx.ChunkTransferTimeout != 0 && errors.Is(rCtx.Err(), context.DeadlineExceeded) { - // Cancel the context for rCtx - cancel() - continue - } - default: - } - - // Check if we should retry the request. - if !errorFunc(status, err) { - quitAfterTimer.Stop() - break - } - - rx.attempts++ - pause = bo.Pause() - } - - // If the chunk was uploaded successfully, but there's still - // more to go, upload the next chunk without any delay. - if statusResumeIncomplete(resp) { + rx.Media.Next() continue } - - return prepareReturn(resp, err) + return resp, nil } } diff --git a/vendor/google.golang.org/api/internal/settings.go b/vendor/google.golang.org/api/internal/settings.go index beec4ea0d..a81d149ae 100644 --- a/vendor/google.golang.org/api/internal/settings.go +++ b/vendor/google.golang.org/api/internal/settings.go @@ -110,6 +110,9 @@ func (ds *DialSettings) IsNewAuthLibraryEnabled() bool { if ds.EnableNewAuthLibrary { return true } + if ds.AuthCredentials != nil { + return true + } if b, err := strconv.ParseBool(os.Getenv(newAuthLibEnvVar)); err == nil { return b } diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go index 34d75cbe3..dfdef9bbb 100644 --- a/vendor/google.golang.org/api/internal/version.go +++ b/vendor/google.golang.org/api/internal/version.go @@ -5,4 +5,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.231.0" +const Version = "0.243.0" diff --git a/vendor/google.golang.org/api/option/internaloption/internaloption.go b/vendor/google.golang.org/api/option/internaloption/internaloption.go index 18fec9c98..931f093d8 100644 --- a/vendor/google.golang.org/api/option/internaloption/internaloption.go +++ b/vendor/google.golang.org/api/option/internaloption/internaloption.go @@ -289,21 +289,22 @@ func GetLogger(opts []option.ClientOption) *slog.Logger { // options provided via [option.ClientOption], including legacy oauth2/google // options, in this order: // -// * [option.WithAuthCredentials] -// * [option/internaloption.WithCredentials] (internal use only) -// * [option.WithCredentials] -// * [option.WithTokenSource] +// - [option.WithoutAuthentication] +// - [option.WithAuthCredentials] +// - [WithCredentials] (internal use only) +// - [option.WithCredentials] +// - [option.WithTokenSource] // // If there are no applicable credentials options, then it passes the // following options to [cloud.google.com/go/auth/credentials.DetectDefault] and // returns the result: // -// * [option.WithAudiences] -// * [option.WithCredentialsFile] -// * [option.WithCredentialsJSON] -// * [option.WithScopes] -// * [option/internaloption.WithDefaultScopes] (internal use only) -// * [option/internaloption.EnableJwtWithScope] (internal use only) +// - [option.WithAudiences] +// - [option.WithCredentialsFile] +// - [option.WithCredentialsJSON] +// - [option.WithScopes] +// - [WithDefaultScopes] (internal use only) +// - [EnableJwtWithScope] (internal use only) // // This function should only be used internally by generated clients. This is an // EXPERIMENTAL API and may be changed or removed in the future. diff --git a/vendor/google.golang.org/api/storage/v1/storage-api.json b/vendor/google.golang.org/api/storage/v1/storage-api.json index 33a686647..8ad0d403b 100644 --- a/vendor/google.golang.org/api/storage/v1/storage-api.json +++ b/vendor/google.golang.org/api/storage/v1/storage-api.json @@ -236,9 +236,24 @@ "description": "Regional Endpoint", "endpointUrl": "https://storage.northamerica-northeast1.rep.googleapis.com/", "location": "northamerica-northeast1" + }, + { + "description": "Regional Endpoint", + "endpointUrl": "https://storage.europe-north2.rep.googleapis.com/", + "location": "europe-north2" + }, + { + "description": "Regional Endpoint", + "endpointUrl": "https://storage.us-west8.rep.googleapis.com/", + "location": "us-west8" + }, + { + "description": "Regional Endpoint", + "endpointUrl": "https://storage.northamerica-south1.rep.googleapis.com/", + "location": "northamerica-south1" } ], - "etag": "\"36333136333838383435323333303139303231\"", + "etag": "\"31353834363234393531343533373938353433\"", "icons": { "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png", "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png" @@ -257,10 +272,12 @@ "default": "json", "description": "Data format for the response.", "enum": [ - "json" + "json", + "media" ], "enumDescriptions": [ - "Responses with Content-Type of application/json" + "Responses with Content-Type of application/json", + "Responses containing object data" ], "location": "query", "type": "string" @@ -3289,6 +3306,11 @@ "location": "query", "type": "string" }, + "filter": { + "description": "Filter the returned objects. Currently only supported for the contexts field. If delimiter is set, the returned prefixes are exempt from this filter.", + "location": "query", + "type": "string" + }, "includeFoldersAsPrefixes": { "description": "Only applicable if delimiter is set to '/'. If true, will also include folders and managed folders (besides objects) in the returned prefixes.", "location": "query", @@ -3439,6 +3461,19 @@ "location": "query", "type": "string" }, + "projection": { + "description": "Set of properties to return. Defaults to noAcl.", + "enum": [ + "full", + "noAcl" + ], + "enumDescriptions": [ + "Include all properties.", + "Omit the owner, acl property." + ], + "location": "query", + "type": "string" + }, "sourceObject": { "description": "Name of the source object. For information about how to URL encode object names to be path safe, see [Encoding URI Path Parts](https://cloud.google.com/storage/docs/request-endpoints#encoding).", "location": "path", @@ -4509,7 +4544,7 @@ } } }, - "revision": "20250420", + "revision": "20250629", "rootUrl": "https://storage.googleapis.com/", "schemas": { "AdvanceRelocateBucketOperationRequest": { @@ -4801,6 +4836,14 @@ "ipFilter": { "description": "The bucket's IP filter configuration. Specifies the network sources that are allowed to access the operations on the bucket, as well as its underlying objects. Only enforced when the mode is set to 'Enabled'.", "properties": { + "allowAllServiceAgentAccess": { + "description": "Whether to allow all service agents to access the bucket regardless of the IP filter configuration.", + "type": "boolean" + }, + "allowCrossOrgVpcs": { + "description": "Whether to allow cross-org VPCs in the bucket's IP filter configuration.", + "type": "boolean" + }, "mode": { "description": "The mode of the IP filter. Valid values are 'Enabled' and 'Disabled'.", "type": "string" @@ -5894,6 +5937,20 @@ "description": "Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream.", "type": "string" }, + "contexts": { + "description": "User-defined or system-defined object contexts. Each object context is a key-payload pair, where the key provides the identification and the payload holds the associated value and additional metadata.", + "properties": { + "custom": { + "additionalProperties": { + "$ref": "ObjectCustomContextPayload", + "description": "A single user-defined object context." + }, + "description": "User-defined object contexts.", + "type": "object" + } + }, + "type": "object" + }, "crc32c": { "description": "CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see [Data Validation and Change Detection](https://cloud.google.com/storage/docs/data-validation).", "type": "string" @@ -6163,6 +6220,27 @@ }, "type": "object" }, + "ObjectCustomContextPayload": { + "description": "The payload of a single user-defined object context.", + "id": "ObjectCustomContextPayload", + "properties": { + "createTime": { + "description": "The time at which the object context was created in RFC 3339 format.", + "format": "date-time", + "type": "string" + }, + "updateTime": { + "description": "The time at which the object context was last updated in RFC 3339 format.", + "format": "date-time", + "type": "string" + }, + "value": { + "description": "The value of the object context.", + "type": "string" + } + }, + "type": "object" + }, "Objects": { "description": "A list of objects.", "id": "Objects", diff --git a/vendor/google.golang.org/api/storage/v1/storage-gen.go b/vendor/google.golang.org/api/storage/v1/storage-gen.go index 149762980..0983dadf4 100644 --- a/vendor/google.golang.org/api/storage/v1/storage-gen.go +++ b/vendor/google.golang.org/api/storage/v1/storage-gen.go @@ -852,6 +852,12 @@ func (s BucketIamConfigurationUniformBucketLevelAccess) MarshalJSON() ([]byte, e // sources that are allowed to access the operations on the bucket, as well as // its underlying objects. Only enforced when the mode is set to 'Enabled'. type BucketIpFilter struct { + // AllowAllServiceAgentAccess: Whether to allow all service agents to access + // the bucket regardless of the IP filter configuration. + AllowAllServiceAgentAccess bool `json:"allowAllServiceAgentAccess,omitempty"` + // AllowCrossOrgVpcs: Whether to allow cross-org VPCs in the bucket's IP filter + // configuration. + AllowCrossOrgVpcs bool `json:"allowCrossOrgVpcs,omitempty"` // Mode: The mode of the IP filter. Valid values are 'Enabled' and 'Disabled'. Mode string `json:"mode,omitempty"` // PublicNetworkSource: The public network source of the bucket's IP filter. @@ -859,15 +865,15 @@ type BucketIpFilter struct { // VpcNetworkSources: The list of VPC network // (https://cloud.google.com/vpc/docs/vpc) sources of the bucket's IP filter. VpcNetworkSources []*BucketIpFilterVpcNetworkSources `json:"vpcNetworkSources,omitempty"` - // ForceSendFields is a list of field names (e.g. "Mode") to unconditionally - // include in API requests. By default, fields with empty or default values are - // omitted from API requests. See + // ForceSendFields is a list of field names (e.g. "AllowAllServiceAgentAccess") + // to unconditionally include in API requests. By default, fields with empty or + // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "Mode") to include in API requests - // with the JSON null value. By default, fields with empty values are omitted - // from API requests. See + // NullFields is a list of field names (e.g. "AllowAllServiceAgentAccess") to + // include in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } @@ -2206,6 +2212,10 @@ type Object struct { // ContentType: Content-Type of the object data. If an object is stored without // a Content-Type, it is served as application/octet-stream. ContentType string `json:"contentType,omitempty"` + // Contexts: User-defined or system-defined object contexts. Each object + // context is a key-payload pair, where the key provides the identification and + // the payload holds the associated value and additional metadata. + Contexts *ObjectContexts `json:"contexts,omitempty"` // Crc32c: CRC32c checksum, as described in RFC 4960, Appendix B; encoded using // base64 in big-endian byte order. For more information about using the CRC32c // checksum, see Data Validation and Change Detection @@ -2334,6 +2344,30 @@ func (s Object) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } +// ObjectContexts: User-defined or system-defined object contexts. Each object +// context is a key-payload pair, where the key provides the identification and +// the payload holds the associated value and additional metadata. +type ObjectContexts struct { + // Custom: User-defined object contexts. + Custom map[string]ObjectCustomContextPayload `json:"custom,omitempty"` + // ForceSendFields is a list of field names (e.g. "Custom") to unconditionally + // include in API requests. By default, fields with empty or default values are + // omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more + // details. + ForceSendFields []string `json:"-"` + // NullFields is a list of field names (e.g. "Custom") to include in API + // requests with the JSON null value. By default, fields with empty values are + // omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. + NullFields []string `json:"-"` +} + +func (s ObjectContexts) MarshalJSON() ([]byte, error) { + type NoMethod ObjectContexts + return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) +} + // ObjectCustomerEncryption: Metadata of customer-supplied encryption key, if // the object is encrypted by such a key. type ObjectCustomerEncryption struct { @@ -2525,6 +2559,35 @@ func (s ObjectAccessControls) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } +// ObjectCustomContextPayload: The payload of a single user-defined object +// context. +type ObjectCustomContextPayload struct { + // CreateTime: The time at which the object context was created in RFC 3339 + // format. + CreateTime string `json:"createTime,omitempty"` + // UpdateTime: The time at which the object context was last updated in RFC + // 3339 format. + UpdateTime string `json:"updateTime,omitempty"` + // Value: The value of the object context. + Value string `json:"value,omitempty"` + // ForceSendFields is a list of field names (e.g. "CreateTime") to + // unconditionally include in API requests. By default, fields with empty or + // default values are omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more + // details. + ForceSendFields []string `json:"-"` + // NullFields is a list of field names (e.g. "CreateTime") to include in API + // requests with the JSON null value. By default, fields with empty values are + // omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. + NullFields []string `json:"-"` +} + +func (s ObjectCustomContextPayload) MarshalJSON() ([]byte, error) { + type NoMethod ObjectCustomContextPayload + return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) +} + // Objects: A list of objects. type Objects struct { // Items: The list of items. @@ -10910,6 +10973,14 @@ func (c *ObjectsListCall) EndOffset(endOffset string) *ObjectsListCall { return c } +// Filter sets the optional parameter "filter": Filter the returned objects. +// Currently only supported for the contexts field. If delimiter is set, the +// returned prefixes are exempt from this filter. +func (c *ObjectsListCall) Filter(filter string) *ObjectsListCall { + c.urlParams_.Set("filter", filter) + return c +} + // IncludeFoldersAsPrefixes sets the optional parameter // "includeFoldersAsPrefixes": Only applicable if delimiter is set to '/'. If // true, will also include folders and managed folders (besides objects) in the @@ -11228,6 +11299,18 @@ func (c *ObjectsMoveCall) IfSourceMetagenerationNotMatch(ifSourceMetagenerationN return c } +// Projection sets the optional parameter "projection": Set of properties to +// return. Defaults to noAcl. +// +// Possible values: +// +// "full" - Include all properties. +// "noAcl" - Omit the owner, acl property. +func (c *ObjectsMoveCall) Projection(projection string) *ObjectsMoveCall { + c.urlParams_.Set("projection", projection) + return c +} + // UserProject sets the optional parameter "userProject": The project to be // billed for this request. Required for Requester Pays buckets. func (c *ObjectsMoveCall) UserProject(userProject string) *ObjectsMoveCall { diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md index d9bfa6e1e..1de0ce666 100644 --- a/vendor/google.golang.org/grpc/CONTRIBUTING.md +++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md @@ -1,73 +1,102 @@ # How to contribute -We definitely welcome your patches and contributions to gRPC! Please read the gRPC -organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md) -and [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding. +We welcome your patches and contributions to gRPC! Please read the gRPC +organization's [governance +rules](https://github.com/grpc/grpc-community/blob/master/governance.md) before +proceeding. If you are new to GitHub, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/) ## Legal requirements In order to protect both you and ourselves, you will need to sign the -[Contributor License Agreement](https://identity.linuxfoundation.org/projects/cncf). +[Contributor License +Agreement](https://identity.linuxfoundation.org/projects/cncf). When you create +your first PR, a link will be added as a comment that contains the steps needed +to complete this process. -## Guidelines for Pull Requests -How to get your contributions merged smoothly and quickly. +## Getting Started -- Create **small PRs** that are narrowly focused on **addressing a single - concern**. We often times receive PRs that are trying to fix several things at - a time, but only one fix is considered acceptable, nothing gets merged and - both author's & review's time is wasted. Create more PRs to address different - concerns and everyone will be happy. +A great way to start is by searching through our open issues. [Unassigned issues +labeled as "help +wanted"](https://github.com/grpc/grpc-go/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20label%3A%22Status%3A%20Help%20Wanted%22%20no%3Aassignee) +are especially nice for first-time contributors, as they should be well-defined +problems that already have agreed-upon solutions. -- If you are searching for features to work on, issues labeled [Status: Help - Wanted](https://github.com/grpc/grpc-go/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Status%3A+Help+Wanted%22) - is a great place to start. These issues are well-documented and usually can be - resolved with a single pull request. +## Code Style -- If you are adding a new file, make sure it has the copyright message template - at the top as a comment. You can copy over the message from an existing file - and update the year. +We follow [Google's published Go style +guide](https://google.github.io/styleguide/go/). Note that there are three +primary documents that make up this style guide; please follow them as closely +as possible. If a reviewer recommends something that contradicts those +guidelines, there may be valid reasons to do so, but it should be rare. -- The grpc package should only depend on standard Go packages and a small number - of exceptions. If your contribution introduces new dependencies which are NOT - in the [list](https://godoc.org/google.golang.org/grpc?imports), you need a - discussion with gRPC-Go authors and consultants. +## Guidelines for Pull Requests -- For speculative changes, consider opening an issue and discussing it first. If - you are suggesting a behavioral or API change, consider starting with a [gRFC - proposal](https://github.com/grpc/proposal). +How to get your contributions merged smoothly and quickly: + +- Create **small PRs** that are narrowly focused on **addressing a single + concern**. We often receive PRs that attempt to fix several things at the same + time, and if one part of the PR has a problem, that will hold up the entire + PR. + +- For **speculative changes**, consider opening an issue and discussing it + first. If you are suggesting a behavioral or API change, consider starting + with a [gRFC proposal](https://github.com/grpc/proposal). Many new features + that are not bug fixes will require cross-language agreement. + +- If you want to fix **formatting or style**, consider whether your changes are + an obvious improvement or might be considered a personal preference. If a + style change is based on preference, it likely will not be accepted. If it + corrects widely agreed-upon anti-patterns, then please do create a PR and + explain the benefits of the change. + +- For correcting **misspellings**, please be aware that we use some terms that + are sometimes flagged by spell checkers. As an example, "if an only if" is + often written as "iff". Please do not make spelling correction changes unless + you are certain they are misspellings. - Provide a good **PR description** as a record of **what** change is being made and **why** it was made. Link to a GitHub issue if it exists. -- If you want to fix formatting or style, consider whether your changes are an - obvious improvement or might be considered a personal preference. If a style - change is based on preference, it likely will not be accepted. If it corrects - widely agreed-upon anti-patterns, then please do create a PR and explain the - benefits of the change. +- Maintain a **clean commit history** and use **meaningful commit messages**. + PRs with messy commit histories are difficult to review and won't be merged. + Before sending your PR, ensure your changes are based on top of the latest + `upstream/master` commits, and avoid rebasing in the middle of a code review. + You should **never use `git push -f`** unless absolutely necessary during a + review, as it can interfere with GitHub's tracking of comments. -- Unless your PR is trivial, you should expect there will be reviewer comments - that you'll need to address before merging. We'll mark it as `Status: Requires - Reporter Clarification` if we expect you to respond to these comments in a - timely manner. If the PR remains inactive for 6 days, it will be marked as - `stale` and automatically close 7 days after that if we don't hear back from - you. +- **All tests need to be passing** before your change can be merged. We + recommend you run tests locally before creating your PR to catch breakages + early on: -- Maintain **clean commit history** and use **meaningful commit messages**. PRs - with messy commit history are difficult to review and won't be merged. Use - `rebase -i upstream/master` to curate your commit history and/or to bring in - latest changes from master (but avoid rebasing in the middle of a code - review). + - `./scripts/vet.sh` to catch vet errors. + - `go test -cpu 1,4 -timeout 7m ./...` to run the tests. + - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode. -- Keep your PR up to date with upstream/master (if there are merge conflicts, we - can't really merge your change). + Note that we have a multi-module repo, so `go test` commands may need to be + run from the root of each module in order to cause all tests to run. -- **All tests need to be passing** before your change can be merged. We - recommend you **run tests locally** before creating your PR to catch breakages - early on. - - `./scripts/vet.sh` to catch vet errors - - `go test -cpu 1,4 -timeout 7m ./...` to run the tests - - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode + *Alternatively*, you may find it easier to push your changes to your fork on + GitHub, which will trigger a GitHub Actions run that you can use to verify + everything is passing. + +- If you are adding a new file, make sure it has the **copyright message** + template at the top as a comment. You can copy the message from an existing + file and update the year. + +- The grpc package should only depend on standard Go packages and a small number + of exceptions. **If your contribution introduces new dependencies**, you will + need a discussion with gRPC-Go maintainers. A GitHub action check will run on + every PR, and will flag any transitive dependency changes from any public + package. + +- Unless your PR is trivial, you should **expect reviewer comments** that you + will need to address before merging. We'll label the PR as `Status: Requires + Reporter Clarification` if we expect you to respond to these comments in a + timely manner. If the PR remains inactive for 6 days, it will be marked as + `stale`, and we will automatically close it after 7 days if we don't hear back + from you. Please feel free to ping issues or bugs if you do not get a response + within a week. -- Exceptions to the rules can be made if there's a compelling reason for doing so. +- Exceptions to the rules can be made if there's a compelling reason to do so. diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md index b572707c6..f9a88d597 100644 --- a/vendor/google.golang.org/grpc/README.md +++ b/vendor/google.golang.org/grpc/README.md @@ -32,6 +32,7 @@ import "google.golang.org/grpc" - [Low-level technical docs](Documentation) from this repository - [Performance benchmark][] - [Examples](examples) +- [Contribution guidelines](CONTRIBUTING.md) ## FAQ diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index c9b343c71..b1264017d 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -360,6 +360,10 @@ type Balancer interface { // call SubConn.Shutdown for its existing SubConns; however, this will be // required in a future release, so it is recommended. Close() + // ExitIdle instructs the LB policy to reconnect to backends / exit the + // IDLE state, if appropriate and possible. Note that SubConns that enter + // the IDLE state will not reconnect until SubConn.Connect is called. + ExitIdle() } // ExitIdler is an optional interface for balancers to implement. If @@ -367,8 +371,8 @@ type Balancer interface { // the ClientConn is idle. If unimplemented, ClientConn.Connect will cause // all SubConns to connect. // -// Notice: it will be required for all balancers to implement this in a future -// release. +// Deprecated: All balancers must implement this interface. This interface will +// be removed in a future release. type ExitIdler interface { // ExitIdle instructs the LB policy to reconnect to backends / exit the // IDLE state, if appropriate and possible. Note that SubConns that enter diff --git a/vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go b/vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go index cc606f4da..0ad6bb1f2 100644 --- a/vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go +++ b/vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go @@ -45,7 +45,15 @@ type ChildState struct { // Balancer exposes only the ExitIdler interface of the child LB policy. // Other methods of the child policy are called only by endpointsharding. - Balancer balancer.ExitIdler + Balancer ExitIdler +} + +// ExitIdler provides access to only the ExitIdle method of the child balancer. +type ExitIdler interface { + // ExitIdle instructs the LB policy to reconnect to backends / exit the + // IDLE state, if appropriate and possible. Note that SubConns that enter + // the IDLE state will not reconnect until SubConn.Connect is called. + ExitIdle() } // Options are the options to configure the behaviour of the @@ -205,6 +213,16 @@ func (es *endpointSharding) Close() { } } +func (es *endpointSharding) ExitIdle() { + es.childMu.Lock() + defer es.childMu.Unlock() + for _, bw := range es.children.Load().Values() { + if !bw.isClosed { + bw.child.ExitIdle() + } + } +} + // updateState updates this component's state. It sends the aggregated state, // and a picker with round robin behavior with all the child states present if // needed. @@ -326,15 +344,13 @@ func (bw *balancerWrapper) UpdateState(state balancer.State) { // ExitIdle pings an IDLE child balancer to exit idle in a new goroutine to // avoid deadlocks due to synchronous balancer state updates. func (bw *balancerWrapper) ExitIdle() { - if ei, ok := bw.child.(balancer.ExitIdler); ok { - go func() { - bw.es.childMu.Lock() - if !bw.isClosed { - ei.ExitIdle() - } - bw.es.childMu.Unlock() - }() - } + go func() { + bw.es.childMu.Lock() + if !bw.isClosed { + bw.child.ExitIdle() + } + bw.es.childMu.Unlock() + }() } // updateClientConnStateLocked delivers the ClientConnState to the child diff --git a/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go b/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go index 732eb56bb..01ac7f6f3 100644 --- a/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go +++ b/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go @@ -19,7 +19,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/lb/v1/load_balancer.proto @@ -642,115 +642,47 @@ func (x *Server) GetDrop() bool { var File_grpc_lb_v1_load_balancer_proto protoreflect.FileDescriptor -var file_grpc_lb_v1_load_balancer_proto_rawDesc = string([]byte{ - 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x01, - 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x2f, 0x0a, 0x19, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x50, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x22, 0xb0, 0x03, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2a, - 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75, - 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x2d, 0x6e, 0x75, 0x6d, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x26, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x12, 0x58, 0x0a, 0x18, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x15, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10, - 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x90, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x53, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, - 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x66, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1c, 0x0a, 0x1a, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x61, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e, - 0x0a, 0x1a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x1c, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x40, - 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, - 0x22, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2c, - 0x0a, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x64, 0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x72, 0x6f, 0x70, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x32, 0x62, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x57, 0x0a, 0x0d, 0x69, 0x6f, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x4c, 0x6f, 0x61, - 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x62, - 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_lb_v1_load_balancer_proto_rawDesc = "" + + "\n" + + "\x1egrpc/lb/v1/load_balancer.proto\x12\n" + + "grpc.lb.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc1\x01\n" + + "\x12LoadBalanceRequest\x12P\n" + + "\x0finitial_request\x18\x01 \x01(\v2%.grpc.lb.v1.InitialLoadBalanceRequestH\x00R\x0einitialRequest\x12<\n" + + "\fclient_stats\x18\x02 \x01(\v2\x17.grpc.lb.v1.ClientStatsH\x00R\vclientStatsB\x1b\n" + + "\x19load_balance_request_type\"/\n" + + "\x19InitialLoadBalanceRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"`\n" + + "\x13ClientStatsPerToken\x12,\n" + + "\x12load_balance_token\x18\x01 \x01(\tR\x10loadBalanceToken\x12\x1b\n" + + "\tnum_calls\x18\x02 \x01(\x03R\bnumCalls\"\xb0\x03\n" + + "\vClientStats\x128\n" + + "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12*\n" + + "\x11num_calls_started\x18\x02 \x01(\x03R\x0fnumCallsStarted\x12,\n" + + "\x12num_calls_finished\x18\x03 \x01(\x03R\x10numCallsFinished\x12]\n" + + "-num_calls_finished_with_client_failed_to_send\x18\x06 \x01(\x03R&numCallsFinishedWithClientFailedToSend\x12H\n" + + "!num_calls_finished_known_received\x18\a \x01(\x03R\x1dnumCallsFinishedKnownReceived\x12X\n" + + "\x18calls_finished_with_drop\x18\b \x03(\v2\x1f.grpc.lb.v1.ClientStatsPerTokenR\x15callsFinishedWithDropJ\x04\b\x04\x10\x05J\x04\b\x05\x10\x06\"\x90\x02\n" + + "\x13LoadBalanceResponse\x12S\n" + + "\x10initial_response\x18\x01 \x01(\v2&.grpc.lb.v1.InitialLoadBalanceResponseH\x00R\x0finitialResponse\x129\n" + + "\vserver_list\x18\x02 \x01(\v2\x16.grpc.lb.v1.ServerListH\x00R\n" + + "serverList\x12K\n" + + "\x11fallback_response\x18\x03 \x01(\v2\x1c.grpc.lb.v1.FallbackResponseH\x00R\x10fallbackResponseB\x1c\n" + + "\x1aload_balance_response_type\"\x12\n" + + "\x10FallbackResponse\"~\n" + + "\x1aInitialLoadBalanceResponse\x12Z\n" + + "\x1cclient_stats_report_interval\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x19clientStatsReportIntervalJ\x04\b\x01\x10\x02\"@\n" + + "\n" + + "ServerList\x12,\n" + + "\aservers\x18\x01 \x03(\v2\x12.grpc.lb.v1.ServerR\aserversJ\x04\b\x03\x10\x04\"\x83\x01\n" + + "\x06Server\x12\x1d\n" + + "\n" + + "ip_address\x18\x01 \x01(\fR\tipAddress\x12\x12\n" + + "\x04port\x18\x02 \x01(\x05R\x04port\x12,\n" + + "\x12load_balance_token\x18\x03 \x01(\tR\x10loadBalanceToken\x12\x12\n" + + "\x04drop\x18\x04 \x01(\bR\x04dropJ\x04\b\x05\x10\x062b\n" + + "\fLoadBalancer\x12R\n" + + "\vBalanceLoad\x12\x1e.grpc.lb.v1.LoadBalanceRequest\x1a\x1f.grpc.lb.v1.LoadBalanceResponse(\x010\x01BW\n" + + "\rio.grpc.lb.v1B\x11LoadBalancerProtoP\x01Z1google.golang.org/grpc/balancer/grpclb/grpc_lb_v1b\x06proto3" var ( file_grpc_lb_v1_load_balancer_proto_rawDescOnce sync.Once diff --git a/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go b/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go index 84e6a2505..c4ace87b2 100644 --- a/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go +++ b/vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go @@ -86,7 +86,7 @@ type LoadBalancerServer interface { type UnimplementedLoadBalancerServer struct{} func (UnimplementedLoadBalancerServer) BalanceLoad(grpc.BidiStreamingServer[LoadBalanceRequest, LoadBalanceResponse]) error { - return status.Errorf(codes.Unimplemented, "method BalanceLoad not implemented") + return status.Error(codes.Unimplemented, "method BalanceLoad not implemented") } func (UnimplementedLoadBalancerServer) testEmbeddedByValue() {} diff --git a/vendor/google.golang.org/grpc/balancer/lazy/lazy.go b/vendor/google.golang.org/grpc/balancer/lazy/lazy.go index 7368d8f4b..314ccd1b0 100644 --- a/vendor/google.golang.org/grpc/balancer/lazy/lazy.go +++ b/vendor/google.golang.org/grpc/balancer/lazy/lazy.go @@ -125,9 +125,7 @@ func (lb *lazyBalancer) ExitIdle() { lb.mu.Lock() defer lb.mu.Unlock() if lb.delegate != nil { - if d, ok := lb.delegate.(balancer.ExitIdler); ok { - d.ExitIdle() - } + lb.delegate.ExitIdle() return } lb.delegate = lb.childBuilder(lb.cc, lb.buildOptions) diff --git a/vendor/google.golang.org/grpc/balancer/leastrequest/leastrequest.go b/vendor/google.golang.org/grpc/balancer/leastrequest/leastrequest.go index dd46dfa8f..f9cf7ccfc 100644 --- a/vendor/google.golang.org/grpc/balancer/leastrequest/leastrequest.go +++ b/vendor/google.golang.org/grpc/balancer/leastrequest/leastrequest.go @@ -97,11 +97,8 @@ func (bb) Build(cc balancer.ClientConn, bOpts balancer.BuildOptions) balancer.Ba } type leastRequestBalancer struct { - // Embeds balancer.Balancer because needs to intercept UpdateClientConnState - // to learn about choiceCount. - balancer.Balancer - // Embeds balancer.ClientConn because needs to intercept UpdateState calls - // from the child balancer. + // Embeds balancer.ClientConn because we need to intercept UpdateState + // calls from the child balancer. balancer.ClientConn child balancer.Balancer logger *internalgrpclog.PrefixLogger @@ -118,6 +115,19 @@ func (lrb *leastRequestBalancer) Close() { lrb.endpointRPCCounts = nil } +func (lrb *leastRequestBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { + lrb.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", sc, state) +} + +func (lrb *leastRequestBalancer) ResolverError(err error) { + // Will cause inline picker update from endpoint sharding. + lrb.child.ResolverError(err) +} + +func (lrb *leastRequestBalancer) ExitIdle() { + lrb.child.ExitIdle() +} + func (lrb *leastRequestBalancer) UpdateClientConnState(ccs balancer.ClientConnState) error { lrCfg, ok := ccs.BalancerConfig.(*LBConfig) if !ok { diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go index 494314f23..e62047256 100644 --- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go +++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go @@ -54,18 +54,9 @@ func init() { balancer.Register(pickfirstBuilder{}) } -type ( - // enableHealthListenerKeyType is a unique key type used in resolver - // attributes to indicate whether the health listener usage is enabled. - enableHealthListenerKeyType struct{} - // managedByPickfirstKeyType is an attribute key type to inform Outlier - // Detection that the generic health listener is being used. - // TODO: https://github.com/grpc/grpc-go/issues/7915 - Remove this when - // implementing the dualstack design. This is a hack. Once Dualstack is - // completed, outlier detection will stop sending ejection updates through - // the connectivity listener. - managedByPickfirstKeyType struct{} -) +// enableHealthListenerKeyType is a unique key type used in resolver +// attributes to indicate whether the health listener usage is enabled. +type enableHealthListenerKeyType struct{} var ( logger = grpclog.Component("pick-first-leaf-lb") @@ -149,17 +140,6 @@ func EnableHealthListener(state resolver.State) resolver.State { return state } -// IsManagedByPickfirst returns whether an address belongs to a SubConn -// managed by the pickfirst LB policy. -// TODO: https://github.com/grpc/grpc-go/issues/7915 - This is a hack to disable -// outlier_detection via the with connectivity listener when using pick_first. -// Once Dualstack changes are complete, all SubConns will be created by -// pick_first and outlier detection will only use the health listener for -// ejection. This hack can then be removed. -func IsManagedByPickfirst(addr resolver.Address) bool { - return addr.BalancerAttributes.Value(managedByPickfirstKeyType{}) != nil -} - type pfConfig struct { serviceconfig.LoadBalancingConfig `json:"-"` @@ -186,7 +166,6 @@ type scData struct { } func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) { - addr.BalancerAttributes = addr.BalancerAttributes.WithValue(managedByPickfirstKeyType{}, true) sd := &scData{ rawConnectivityState: connectivity.Idle, effectiveState: connectivity.Idle, diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/config.go b/vendor/google.golang.org/grpc/balancer/ringhash/config.go similarity index 85% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/config.go rename to vendor/google.golang.org/grpc/balancer/ringhash/config.go index 044d698a2..65d9e8e46 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/config.go +++ b/vendor/google.golang.org/grpc/balancer/ringhash/config.go @@ -25,26 +25,17 @@ import ( "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/metadata" - "google.golang.org/grpc/serviceconfig" + iringhash "google.golang.org/grpc/internal/ringhash" ) -// LBConfig is the balancer config for ring_hash balancer. -type LBConfig struct { - serviceconfig.LoadBalancingConfig `json:"-"` - - MinRingSize uint64 `json:"minRingSize,omitempty"` - MaxRingSize uint64 `json:"maxRingSize,omitempty"` - RequestHashHeader string `json:"requestHashHeader,omitempty"` -} - const ( defaultMinSize = 1024 defaultMaxSize = 4096 ringHashSizeUpperBound = 8 * 1024 * 1024 // 8M ) -func parseConfig(c json.RawMessage) (*LBConfig, error) { - var cfg LBConfig +func parseConfig(c json.RawMessage) (*iringhash.LBConfig, error) { + var cfg iringhash.LBConfig if err := json.Unmarshal(c, &cfg); err != nil { return nil, err } diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/logging.go b/vendor/google.golang.org/grpc/balancer/ringhash/logging.go similarity index 100% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/logging.go rename to vendor/google.golang.org/grpc/balancer/ringhash/logging.go diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/picker.go b/vendor/google.golang.org/grpc/balancer/ringhash/picker.go similarity index 97% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/picker.go rename to vendor/google.golang.org/grpc/balancer/ringhash/picker.go index 1488d7806..96f72905e 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/picker.go +++ b/vendor/google.golang.org/grpc/balancer/ringhash/picker.go @@ -23,8 +23,10 @@ import ( "strings" xxhash "github.com/cespare/xxhash/v2" + "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" + iringhash "google.golang.org/grpc/internal/ringhash" "google.golang.org/grpc/metadata" ) @@ -55,7 +57,7 @@ func (p *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { var requestHash uint64 if p.requestHashHeader == "" { var ok bool - if requestHash, ok = XDSRequestHash(info.Ctx); !ok { + if requestHash, ok = iringhash.XDSRequestHash(info.Ctx); !ok { return balancer.PickResult{}, fmt.Errorf("ringhash: expected xDS config selector to set the request hash") } } else { diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/ring.go b/vendor/google.golang.org/grpc/balancer/ringhash/ring.go similarity index 100% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/ring.go rename to vendor/google.golang.org/grpc/balancer/ringhash/ring.go diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/ringhash.go b/vendor/google.golang.org/grpc/balancer/ringhash/ringhash.go similarity index 94% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/ringhash.go rename to vendor/google.golang.org/grpc/balancer/ringhash/ringhash.go index 87d26db3c..d4c41facb 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/ringhash.go +++ b/vendor/google.golang.org/grpc/balancer/ringhash/ringhash.go @@ -16,7 +16,16 @@ * */ -// Package ringhash implements the ringhash balancer. +// Package ringhash implements the ringhash balancer. See the following +// gRFCs for details: +// - https://github.com/grpc/proposal/blob/master/A42-xds-ring-hash-lb-policy.md +// - https://github.com/grpc/proposal/blob/master/A61-IPv4-IPv6-dualstack-backends.md#ring-hash +// - https://github.com/grpc/proposal/blob/master/A76-ring-hash-improvements.md +// +// # Experimental +// +// Notice: This package is EXPERIMENTAL and may be changed or removed in a +// later release. package ringhash import ( @@ -36,6 +45,7 @@ import ( "google.golang.org/grpc/internal/balancer/weight" "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/pretty" + iringhash "google.golang.org/grpc/internal/ringhash" "google.golang.org/grpc/resolver" "google.golang.org/grpc/resolver/ringhash" "google.golang.org/grpc/serviceconfig" @@ -85,7 +95,7 @@ type ringhashBalancer struct { child balancer.Balancer mu sync.Mutex - config *LBConfig + config *iringhash.LBConfig inhibitChildUpdates bool shouldRegenerateRing bool endpointStates *resolver.EndpointMap[*endpointState] @@ -173,7 +183,7 @@ func (b *ringhashBalancer) UpdateClientConnState(ccs balancer.ClientConnState) e b.logger.Infof("Received update from resolver, balancer config: %+v", pretty.ToJSON(ccs.BalancerConfig)) } - newConfig, ok := ccs.BalancerConfig.(*LBConfig) + newConfig, ok := ccs.BalancerConfig.(*iringhash.LBConfig) if !ok { return fmt.Errorf("unexpected balancer config with type: %T", ccs.BalancerConfig) } @@ -258,7 +268,7 @@ func (b *ringhashBalancer) updatePickerLocked() { sort.Slice(endpointStates, func(i, j int) bool { return endpointStates[i].hashKey < endpointStates[j].hashKey }) - var idleBalancer balancer.ExitIdler + var idleBalancer endpointsharding.ExitIdler for _, es := range endpointStates { connState := es.state.ConnectivityState if connState == connectivity.Connecting { @@ -389,7 +399,7 @@ type endpointState struct { // overridden, for example based on EDS endpoint metadata. hashKey string weight uint32 - balancer balancer.ExitIdler + balancer endpointsharding.ExitIdler // state is updated by the balancer while receiving resolver updates from // the channel and picker updates from its children. Access to it is guarded diff --git a/vendor/google.golang.org/grpc/balancer/rls/control_channel.go b/vendor/google.golang.org/grpc/balancer/rls/control_channel.go index 28f063e73..60e6a021d 100644 --- a/vendor/google.golang.org/grpc/balancer/rls/control_channel.go +++ b/vendor/google.golang.org/grpc/balancer/rls/control_channel.go @@ -92,12 +92,7 @@ func newControlChannel(rlsServerName, serviceConfig string, rpcTimeout time.Dura ctrlCh.cc.Connect() ctrlCh.client = rlsgrpc.NewRouteLookupServiceClient(ctrlCh.cc) ctrlCh.logger.Infof("Control channel created to RLS server at: %v", rlsServerName) - start := make(chan struct{}) - go func() { - close(start) - ctrlCh.monitorConnectivityState() - }() - <-start + go ctrlCh.monitorConnectivityState() return ctrlCh, nil } diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go index 35da5d1ec..22045bf39 100644 --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go @@ -70,10 +70,3 @@ func (b *rrBalancer) UpdateClientConnState(ccs balancer.ClientConnState) error { ResolverState: pickfirstleaf.EnableHealthListener(ccs.ResolverState), }) } - -func (b *rrBalancer) ExitIdle() { - // Should always be ok, as child is endpoint sharding. - if ei, ok := b.Balancer.(balancer.ExitIdler); ok { - ei.ExitIdle() - } -} diff --git a/vendor/google.golang.org/grpc/balancer/weightedroundrobin/balancer.go b/vendor/google.golang.org/grpc/balancer/weightedroundrobin/balancer.go index 0ee707601..fe8ebff1f 100644 --- a/vendor/google.golang.org/grpc/balancer/weightedroundrobin/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/weightedroundrobin/balancer.go @@ -404,9 +404,7 @@ func (b *wrrBalancer) Close() { } func (b *wrrBalancer) ExitIdle() { - if ei, ok := b.child.(balancer.ExitIdler); ok { // Should always be ok, as child is endpoint sharding. - ei.ExitIdle() - } + b.child.ExitIdle() } // picker is the WRR policy's picker. It uses live-updating backend weights to @@ -497,7 +495,6 @@ func (p *picker) start(stopPicker *grpcsync.Event) { // that listener. type endpointWeight struct { // The following fields are immutable. - balancer.SubConn logger *grpclog.PrefixLogger target string metricsRecorder estats.MetricsRecorder @@ -527,7 +524,7 @@ type endpointWeight struct { func (w *endpointWeight) OnLoadReport(load *v3orcapb.OrcaLoadReport) { if w.logger.V(2) { - w.logger.Infof("Received load report for subchannel %v: %v", w.SubConn, load) + w.logger.Infof("Received load report for subchannel %v: %v", w.pickedSC, load) } // Update weights of this endpoint according to the reported load. utilization := load.ApplicationUtilization @@ -536,7 +533,7 @@ func (w *endpointWeight) OnLoadReport(load *v3orcapb.OrcaLoadReport) { } if utilization == 0 || load.RpsFractional == 0 { if w.logger.V(2) { - w.logger.Infof("Ignoring empty load report for subchannel %v", w.SubConn) + w.logger.Infof("Ignoring empty load report for subchannel %v", w.pickedSC) } return } @@ -547,7 +544,7 @@ func (w *endpointWeight) OnLoadReport(load *v3orcapb.OrcaLoadReport) { errorRate := load.Eps / load.RpsFractional w.weightVal = load.RpsFractional / (utilization + errorRate*w.cfg.ErrorUtilizationPenalty) if w.logger.V(2) { - w.logger.Infof("New weight for subchannel %v: %v", w.SubConn, w.weightVal) + w.logger.Infof("New weight for subchannel %v: %v", w.pickedSC, w.weightVal) } w.lastUpdated = internal.TimeNow() diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go index 825c31795..b1364a032 100644 --- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go +++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/binlog/v1/binarylog.proto @@ -858,133 +858,68 @@ func (x *Address) GetIpPort() uint32 { var File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor -var file_grpc_binlog_v1_binarylog_proto_rawDesc = string([]byte{ - 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31, - 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, - 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e, - 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46, - 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, - 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69, - 0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b, - 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70, - 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, - 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, - 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a, - 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72, - 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, - 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, - 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, - 0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, - 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a, - 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14, - 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, - 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -}) +const file_grpc_binlog_v1_binarylog_proto_rawDesc = "" + + "\n" + + "\x1egrpc/binlog/v1/binarylog.proto\x12\x11grpc.binarylog.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbb\a\n" + + "\fGrpcLogEntry\x128\n" + + "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x17\n" + + "\acall_id\x18\x02 \x01(\x04R\x06callId\x125\n" + + "\x17sequence_id_within_call\x18\x03 \x01(\x04R\x14sequenceIdWithinCall\x12=\n" + + "\x04type\x18\x04 \x01(\x0e2).grpc.binarylog.v1.GrpcLogEntry.EventTypeR\x04type\x12>\n" + + "\x06logger\x18\x05 \x01(\x0e2&.grpc.binarylog.v1.GrpcLogEntry.LoggerR\x06logger\x12F\n" + + "\rclient_header\x18\x06 \x01(\v2\x1f.grpc.binarylog.v1.ClientHeaderH\x00R\fclientHeader\x12F\n" + + "\rserver_header\x18\a \x01(\v2\x1f.grpc.binarylog.v1.ServerHeaderH\x00R\fserverHeader\x126\n" + + "\amessage\x18\b \x01(\v2\x1a.grpc.binarylog.v1.MessageH\x00R\amessage\x126\n" + + "\atrailer\x18\t \x01(\v2\x1a.grpc.binarylog.v1.TrailerH\x00R\atrailer\x12+\n" + + "\x11payload_truncated\x18\n" + + " \x01(\bR\x10payloadTruncated\x12.\n" + + "\x04peer\x18\v \x01(\v2\x1a.grpc.binarylog.v1.AddressR\x04peer\"\xf5\x01\n" + + "\tEventType\x12\x16\n" + + "\x12EVENT_TYPE_UNKNOWN\x10\x00\x12\x1c\n" + + "\x18EVENT_TYPE_CLIENT_HEADER\x10\x01\x12\x1c\n" + + "\x18EVENT_TYPE_SERVER_HEADER\x10\x02\x12\x1d\n" + + "\x19EVENT_TYPE_CLIENT_MESSAGE\x10\x03\x12\x1d\n" + + "\x19EVENT_TYPE_SERVER_MESSAGE\x10\x04\x12 \n" + + "\x1cEVENT_TYPE_CLIENT_HALF_CLOSE\x10\x05\x12\x1d\n" + + "\x19EVENT_TYPE_SERVER_TRAILER\x10\x06\x12\x15\n" + + "\x11EVENT_TYPE_CANCEL\x10\a\"B\n" + + "\x06Logger\x12\x12\n" + + "\x0eLOGGER_UNKNOWN\x10\x00\x12\x11\n" + + "\rLOGGER_CLIENT\x10\x01\x12\x11\n" + + "\rLOGGER_SERVER\x10\x02B\t\n" + + "\apayload\"\xbb\x01\n" + + "\fClientHeader\x127\n" + + "\bmetadata\x18\x01 \x01(\v2\x1b.grpc.binarylog.v1.MetadataR\bmetadata\x12\x1f\n" + + "\vmethod_name\x18\x02 \x01(\tR\n" + + "methodName\x12\x1c\n" + + "\tauthority\x18\x03 \x01(\tR\tauthority\x123\n" + + "\atimeout\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\atimeout\"G\n" + + "\fServerHeader\x127\n" + + "\bmetadata\x18\x01 \x01(\v2\x1b.grpc.binarylog.v1.MetadataR\bmetadata\"\xb1\x01\n" + + "\aTrailer\x127\n" + + "\bmetadata\x18\x01 \x01(\v2\x1b.grpc.binarylog.v1.MetadataR\bmetadata\x12\x1f\n" + + "\vstatus_code\x18\x02 \x01(\rR\n" + + "statusCode\x12%\n" + + "\x0estatus_message\x18\x03 \x01(\tR\rstatusMessage\x12%\n" + + "\x0estatus_details\x18\x04 \x01(\fR\rstatusDetails\"5\n" + + "\aMessage\x12\x16\n" + + "\x06length\x18\x01 \x01(\rR\x06length\x12\x12\n" + + "\x04data\x18\x02 \x01(\fR\x04data\"B\n" + + "\bMetadata\x126\n" + + "\x05entry\x18\x01 \x03(\v2 .grpc.binarylog.v1.MetadataEntryR\x05entry\"7\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\fR\x05value\"\xb8\x01\n" + + "\aAddress\x123\n" + + "\x04type\x18\x01 \x01(\x0e2\x1f.grpc.binarylog.v1.Address.TypeR\x04type\x12\x18\n" + + "\aaddress\x18\x02 \x01(\tR\aaddress\x12\x17\n" + + "\aip_port\x18\x03 \x01(\rR\x06ipPort\"E\n" + + "\x04Type\x12\x10\n" + + "\fTYPE_UNKNOWN\x10\x00\x12\r\n" + + "\tTYPE_IPV4\x10\x01\x12\r\n" + + "\tTYPE_IPV6\x10\x02\x12\r\n" + + "\tTYPE_UNIX\x10\x03B\\\n" + + "\x14io.grpc.binarylog.v1B\x0eBinaryLogProtoP\x01Z2google.golang.org/grpc/binarylog/grpc_binarylog_v1b\x06proto3" var ( file_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index 4f350ca56..cd3eaf8dd 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -689,22 +689,31 @@ func (cc *ClientConn) Connect() { cc.mu.Unlock() } -// waitForResolvedAddrs blocks until the resolver has provided addresses or the -// context expires. Returns nil unless the context expires first; otherwise -// returns a status error based on the context. -func (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) error { +// waitForResolvedAddrs blocks until the resolver provides addresses or the +// context expires, whichever happens first. +// +// Error is nil unless the context expires first; otherwise returns a status +// error based on the context. +// +// The returned boolean indicates whether it did block or not. If the +// resolution has already happened once before, it returns false without +// blocking. Otherwise, it wait for the resolution and return true if +// resolution has succeeded or return false along with error if resolution has +// failed. +func (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) (bool, error) { // This is on the RPC path, so we use a fast path to avoid the // more-expensive "select" below after the resolver has returned once. if cc.firstResolveEvent.HasFired() { - return nil + return false, nil } + internal.NewStreamWaitingForResolver() select { case <-cc.firstResolveEvent.Done(): - return nil + return true, nil case <-ctx.Done(): - return status.FromContextError(ctx.Err()).Err() + return false, status.FromContextError(ctx.Err()).Err() case <-cc.ctx.Done(): - return ErrClientConnClosing + return false, ErrClientConnClosing } } diff --git a/vendor/google.golang.org/grpc/credentials/alts/alts.go b/vendor/google.golang.org/grpc/credentials/alts/alts.go index afcdb8a0d..35539eb1a 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/alts.go +++ b/vendor/google.golang.org/grpc/credentials/alts/alts.go @@ -133,10 +133,11 @@ func DefaultServerOptions() *ServerOptions { // altsTC is the credentials required for authenticating a connection using ALTS. // It implements credentials.TransportCredentials interface. type altsTC struct { - info *credentials.ProtocolInfo - side core.Side - accounts []string - hsAddress string + info *credentials.ProtocolInfo + side core.Side + accounts []string + hsAddress string + boundAccessToken string } // NewClientCreds constructs a client-side ALTS TransportCredentials object. @@ -198,6 +199,7 @@ func (g *altsTC) ClientHandshake(ctx context.Context, addr string, rawConn net.C MaxRpcVersion: maxRPCVersion, MinRpcVersion: minRPCVersion, } + opts.BoundAccessToken = g.boundAccessToken chs, err := handshaker.NewClientHandshaker(ctx, hsConn, rawConn, opts) if err != nil { return nil, nil, err diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/conn/common.go b/vendor/google.golang.org/grpc/credentials/alts/internal/conn/common.go index 1795d0c9e..46617132a 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/conn/common.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/conn/common.go @@ -54,11 +54,10 @@ func SliceForAppend(in []byte, n int) (head, tail []byte) { func ParseFramedMsg(b []byte, maxLen uint32) ([]byte, []byte, error) { // If the size field is not complete, return the provided buffer as // remaining buffer. - if len(b) < MsgLenFieldSize { + length, sufficientBytes := parseMessageLength(b) + if !sufficientBytes { return nil, b, nil } - msgLenField := b[:MsgLenFieldSize] - length := binary.LittleEndian.Uint32(msgLenField) if length > maxLen { return nil, nil, fmt.Errorf("received the frame length %d larger than the limit %d", length, maxLen) } @@ -68,3 +67,14 @@ func ParseFramedMsg(b []byte, maxLen uint32) ([]byte, []byte, error) { } return b[:MsgLenFieldSize+length], b[MsgLenFieldSize+length:], nil } + +// parseMessageLength returns the message length based on frame header. It also +// returns a boolean indicating if the buffer contains sufficient bytes to parse +// the length header. If there are insufficient bytes, (0, false) is returned. +func parseMessageLength(b []byte) (uint32, bool) { + if len(b) < MsgLenFieldSize { + return 0, false + } + msgLenField := b[:MsgLenFieldSize] + return binary.LittleEndian.Uint32(msgLenField), true +} diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/conn/record.go b/vendor/google.golang.org/grpc/credentials/alts/internal/conn/record.go index f1ea7bb20..f9d2646d4 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/conn/record.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/conn/record.go @@ -31,14 +31,18 @@ import ( // ALTSRecordCrypto is the interface for gRPC ALTS record protocol. type ALTSRecordCrypto interface { - // Encrypt encrypts the plaintext and computes the tag (if any) of dst - // and plaintext. dst and plaintext may fully overlap or not at all. + // Encrypt encrypts the plaintext, computes the tag (if any) of dst and + // plaintext, and appends the result to dst, returning the updated slice. + // dst and plaintext may fully overlap or not at all. Encrypt(dst, plaintext []byte) ([]byte, error) // EncryptionOverhead returns the tag size (if any) in bytes. EncryptionOverhead() int - // Decrypt decrypts ciphertext and verify the tag (if any). dst and - // ciphertext may alias exactly or not at all. To reuse ciphertext's - // storage for the decrypted output, use ciphertext[:0] as dst. + // Decrypt decrypts ciphertext and verifies the tag (if any). If successful, + // this function appends the resulting plaintext to dst, returning the + // updated slice. dst and ciphertext may alias exactly or not at all. To + // reuse ciphertext's storage for the decrypted output, use ciphertext[:0] + // as dst. Even if the function fails, the contents of dst, up to its + // capacity, may be overwritten. Decrypt(dst, ciphertext []byte) ([]byte, error) } @@ -63,6 +67,8 @@ const ( // The maximum write buffer size. This *must* be multiple of // altsRecordDefaultLength. altsWriteBufferMaxSize = 512 * 1024 // 512KiB + // The initial buffer used to read from the network. + altsReadBufferInitialSize = 32 * 1024 // 32KiB ) var ( @@ -83,7 +89,7 @@ type conn struct { net.Conn crypto ALTSRecordCrypto // buf holds data that has been read from the connection and decrypted, - // but has not yet been returned by Read. + // but has not yet been returned by Read. It is a sub-slice of protected. buf []byte payloadLengthLimit int // protected holds data read from the network but have not yet been @@ -111,21 +117,13 @@ func NewConn(c net.Conn, side core.Side, recordProtocol string, key []byte, prot } overhead := MsgLenFieldSize + msgTypeFieldSize + crypto.EncryptionOverhead() payloadLengthLimit := altsRecordDefaultLength - overhead - var protectedBuf []byte - if protected == nil { - // We pre-allocate protected to be of size - // 2*altsRecordDefaultLength-1 during initialization. We only - // read from the network into protected when protected does not - // contain a complete frame, which is at most - // altsRecordDefaultLength-1 (bytes). And we read at most - // altsRecordDefaultLength (bytes) data into protected at one - // time. Therefore, 2*altsRecordDefaultLength-1 is large enough - // to buffer data read from the network. - protectedBuf = make([]byte, 0, 2*altsRecordDefaultLength-1) - } else { - protectedBuf = make([]byte, len(protected)) - copy(protectedBuf, protected) - } + // We pre-allocate protected to be of size 32KB during initialization. + // We increase the size of the buffer by the required amount if it can't + // hold a complete encrypted record. + protectedBuf := make([]byte, max(altsReadBufferInitialSize, len(protected))) + // Copy additional data from hanshaker service. + copy(protectedBuf, protected) + protectedBuf = protectedBuf[:len(protected)] altsConn := &conn{ Conn: c, @@ -162,11 +160,26 @@ func (p *conn) Read(b []byte) (n int, err error) { // Check whether a complete frame has been received yet. for len(framedMsg) == 0 { if len(p.protected) == cap(p.protected) { - tmp := make([]byte, len(p.protected), cap(p.protected)+altsRecordDefaultLength) - copy(tmp, p.protected) - p.protected = tmp + // We can parse the length header to know exactly how large + // the buffer needs to be to hold the entire frame. + length, didParse := parseMessageLength(p.protected) + if !didParse { + // The protected buffer is initialized with a capacity of + // larger than 4B. It should always hold the message length + // header. + panic(fmt.Sprintf("protected buffer length shorter than expected: %d vs %d", len(p.protected), MsgLenFieldSize)) + } + oldProtectedBuf := p.protected + // The new buffer must be able to hold the message length header + // and the entire message. + requiredCapacity := int(length) + MsgLenFieldSize + p.protected = make([]byte, requiredCapacity) + // Copy the contents of the old buffer and set the length of the + // new buffer to the number of bytes already read. + copy(p.protected, oldProtectedBuf) + p.protected = p.protected[:len(oldProtectedBuf)] } - n, err = p.Conn.Read(p.protected[len(p.protected):min(cap(p.protected), len(p.protected)+altsRecordDefaultLength)]) + n, err = p.Conn.Read(p.protected[len(p.protected):cap(p.protected)]) if err != nil { return 0, err } @@ -185,6 +198,15 @@ func (p *conn) Read(b []byte) (n int, err error) { } ciphertext := msg[msgTypeFieldSize:] + // Decrypt directly into the buffer, avoiding a copy from p.buf if + // possible. + if len(b) >= len(ciphertext) { + dec, err := p.crypto.Decrypt(b[:0], ciphertext) + if err != nil { + return 0, err + } + return len(dec), nil + } // Decrypt requires that if the dst and ciphertext alias, they // must alias exactly. Code here used to use msg[:0], but msg // starts MsgLenFieldSize+msgTypeFieldSize bytes earlier than diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/handshaker.go b/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/handshaker.go index 50721f690..0360842eb 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/handshaker.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/handshaker.go @@ -88,6 +88,8 @@ type ClientHandshakerOptions struct { TargetServiceAccounts []string // RPCVersions specifies the gRPC versions accepted by the client. RPCVersions *altspb.RpcProtocolVersions + // BoundAccessToken is a bound access token to be sent to the server for authentication. + BoundAccessToken string } // ServerHandshakerOptions contains the server handshaker options that can @@ -195,7 +197,9 @@ func (h *altsHandshaker) ClientHandshake(ctx context.Context) (net.Conn, credent }, }, } - + if h.clientOpts.BoundAccessToken != "" { + req.GetClientStart().AccessToken = h.clientOpts.BoundAccessToken + } conn, result, err := h.doHandshake(req) if err != nil { return nil, nil, err @@ -308,6 +312,7 @@ func (h *altsHandshaker) accessHandshakerService(req *altspb.HandshakerReq) (*al // whatever received from the network and send it to the handshaker service. func (h *altsHandshaker) processUntilDone(resp *altspb.HandshakerResp, extra []byte) (*altspb.HandshakerResult, []byte, error) { var lastWriteTime time.Time + buf := make([]byte, frameLimit) for { if len(resp.OutFrames) > 0 { lastWriteTime = time.Now() @@ -318,7 +323,6 @@ func (h *altsHandshaker) processUntilDone(resp *altspb.HandshakerResp, extra []b if resp.Result != nil { return resp.Result, extra, nil } - buf := make([]byte, frameLimit) n, err := h.conn.Read(buf) if err != nil && err != io.EOF { return nil, nil, err diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/service/service.go b/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/service/service.go index e0a1afc11..2580995d9 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/service/service.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/service/service.go @@ -22,9 +22,12 @@ package service import ( "sync" + "time" grpc "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/internal/envconfig" + "google.golang.org/grpc/keepalive" ) var ( @@ -50,7 +53,17 @@ func Dial(hsAddress string) (*grpc.ClientConn, error) { // Disable the service config to avoid unnecessary TXT record lookups that // cause timeouts with some versions of systemd-resolved. var err error - hsConn, err = grpc.NewClient(hsAddress, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDisableServiceConfig()) + opts := []grpc.DialOption{ + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDisableServiceConfig(), + } + if envconfig.ALTSHandshakerKeepaliveParams { + opts = append(opts, grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Timeout: 10 * time.Second, + Time: 10 * time.Minute, + })) + } + hsConn, err = grpc.NewClient(hsAddress, opts...) if err != nil { return nil, err } diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go index ac2957a4e..331dd6c84 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/gcp/altscontext.proto @@ -139,52 +139,21 @@ func (x *AltsContext) GetPeerAttributes() map[string]string { var File_grpc_gcp_altscontext_proto protoreflect.FileDescriptor -var file_grpc_gcp_altscontext_proto_rawDesc = string([]byte{ - 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xf1, 0x03, 0x0a, 0x0b, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3e, 0x0a, 0x0e, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x14, - 0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x65, 0x65, 0x72, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, - 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65, - 0x65, 0x72, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, - 0x0f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, - 0x70, 0x2e, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x6c, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x10, 0x41, - 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, - 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, - 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_gcp_altscontext_proto_rawDesc = "" + + "\n" + + "\x1agrpc/gcp/altscontext.proto\x12\bgrpc.gcp\x1a(grpc/gcp/transport_security_common.proto\"\xf1\x03\n" + + "\vAltsContext\x121\n" + + "\x14application_protocol\x18\x01 \x01(\tR\x13applicationProtocol\x12'\n" + + "\x0frecord_protocol\x18\x02 \x01(\tR\x0erecordProtocol\x12>\n" + + "\x0esecurity_level\x18\x03 \x01(\x0e2\x17.grpc.gcp.SecurityLevelR\rsecurityLevel\x120\n" + + "\x14peer_service_account\x18\x04 \x01(\tR\x12peerServiceAccount\x122\n" + + "\x15local_service_account\x18\x05 \x01(\tR\x13localServiceAccount\x12I\n" + + "\x11peer_rpc_versions\x18\x06 \x01(\v2\x1d.grpc.gcp.RpcProtocolVersionsR\x0fpeerRpcVersions\x12R\n" + + "\x0fpeer_attributes\x18\a \x03(\v2).grpc.gcp.AltsContext.PeerAttributesEntryR\x0epeerAttributes\x1aA\n" + + "\x13PeerAttributesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01Bl\n" + + "\x15io.grpc.alts.internalB\x10AltsContextProtoP\x01Z?google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcpb\x06proto3" var ( file_grpc_gcp_altscontext_proto_rawDescOnce sync.Once diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go index 12759ac28..6370b2a6d 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/gcp/handshaker.proto @@ -331,9 +331,11 @@ type StartClientHandshakeReq struct { // ALTS connections. The access token that should be used to authenticate to // the peer. The access token MUST be strongly bound to the ALTS credentials // used to establish the connection that the token is sent over. - AccessToken string `protobuf:"bytes,11,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + AccessToken string `protobuf:"bytes,11,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + // (Optional) Ordered transport protocol preferences supported by the client. + TransportProtocolPreferences *TransportProtocolPreferences `protobuf:"bytes,12,opt,name=transport_protocol_preferences,json=transportProtocolPreferences,proto3" json:"transport_protocol_preferences,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartClientHandshakeReq) Reset() { @@ -443,6 +445,13 @@ func (x *StartClientHandshakeReq) GetAccessToken() string { return "" } +func (x *StartClientHandshakeReq) GetTransportProtocolPreferences() *TransportProtocolPreferences { + if x != nil { + return x.TransportProtocolPreferences + } + return nil +} + type ServerHandshakeParameters struct { state protoimpl.MessageState `protogen:"open.v1"` // The record protocols supported by the server, e.g., @@ -534,9 +543,11 @@ type StartServerHandshakeReq struct { // (Optional) RPC protocol versions supported by the server. RpcVersions *RpcProtocolVersions `protobuf:"bytes,6,opt,name=rpc_versions,json=rpcVersions,proto3" json:"rpc_versions,omitempty"` // (Optional) Maximum frame size supported by the server. - MaxFrameSize uint32 `protobuf:"varint,7,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + MaxFrameSize uint32 `protobuf:"varint,7,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"` + // (Optional) Transport protocol preferences supported by the server. + TransportProtocolPreferences *TransportProtocolPreferences `protobuf:"bytes,8,opt,name=transport_protocol_preferences,json=transportProtocolPreferences,proto3" json:"transport_protocol_preferences,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartServerHandshakeReq) Reset() { @@ -618,6 +629,13 @@ func (x *StartServerHandshakeReq) GetMaxFrameSize() uint32 { return 0 } +func (x *StartServerHandshakeReq) GetTransportProtocolPreferences() *TransportProtocolPreferences { + if x != nil { + return x.TransportProtocolPreferences + } + return nil +} + type NextHandshakeMessageReq struct { state protoimpl.MessageState `protogen:"open.v1"` // Bytes in out_frames returned from the peer's HandshakerResp. It is possible @@ -798,9 +816,11 @@ type HandshakerResult struct { // The RPC protocol versions supported by the peer. PeerRpcVersions *RpcProtocolVersions `protobuf:"bytes,7,opt,name=peer_rpc_versions,json=peerRpcVersions,proto3" json:"peer_rpc_versions,omitempty"` // The maximum frame size of the peer. - MaxFrameSize uint32 `protobuf:"varint,8,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + MaxFrameSize uint32 `protobuf:"varint,8,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"` + // (Optional) The transport protocol negotiated for this connection. + TransportProtocol *NegotiatedTransportProtocol `protobuf:"bytes,9,opt,name=transport_protocol,json=transportProtocol,proto3" json:"transport_protocol,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HandshakerResult) Reset() { @@ -889,6 +909,13 @@ func (x *HandshakerResult) GetMaxFrameSize() uint32 { return 0 } +func (x *HandshakerResult) GetTransportProtocol() *NegotiatedTransportProtocol { + if x != nil { + return x.TransportProtocol + } + return nil +} + type HandshakerStatus struct { state protoimpl.MessageState `protogen:"open.v1"` // The status code. This could be the gRPC status code. @@ -1024,206 +1051,94 @@ func (x *HandshakerResp) GetStatus() *HandshakerStatus { var File_grpc_gcp_handshaker_proto protoreflect.FileDescriptor -var file_grpc_gcp_handshaker_proto_rawDesc = string([]byte{ - 0x0a, 0x19, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x68, 0x61, 0x6e, 0x64, 0x73, - 0x68, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x74, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x35, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xe8, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, - 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, - 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, - 0x22, 0xfb, 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x1b, - 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, - 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x19, - 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x29, - 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x11, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, - 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0x80, 0x01, - 0x01, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xaf, - 0x01, 0x0a, 0x19, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, - 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0x80, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0xa5, 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x15, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, - 0x65, 0x71, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x61, 0x6e, - 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, - 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6b, 0x0a, 0x18, 0x48, - 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x67, 0x63, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, - 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x62, 0x0a, 0x17, 0x4e, 0x65, 0x78, 0x74, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, - 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x22, 0xe5, 0x01, 0x0a, - 0x0d, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x46, - 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, - 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x37, - 0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64, - 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9a, 0x03, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, - 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x37, 0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, - 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x70, 0x65, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, - 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65, 0x65, 0x72, - 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, - 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0x40, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, - 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x41, 0x4e, - 0x44, 0x53, 0x48, 0x41, 0x4b, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, - 0x03, 0x54, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4c, 0x54, 0x53, 0x10, 0x02, - 0x2a, 0x45, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07, - 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x02, 0x32, 0x5b, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, - 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0b, - 0x44, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x28, 0x01, 0x30, 0x01, 0x42, 0x6b, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x0f, 0x48, - 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, - 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_gcp_handshaker_proto_rawDesc = "" + + "\n" + + "\x19grpc/gcp/handshaker.proto\x12\bgrpc.gcp\x1a(grpc/gcp/transport_security_common.proto\"t\n" + + "\bEndpoint\x12\x1d\n" + + "\n" + + "ip_address\x18\x01 \x01(\tR\tipAddress\x12\x12\n" + + "\x04port\x18\x02 \x01(\x05R\x04port\x125\n" + + "\bprotocol\x18\x03 \x01(\x0e2\x19.grpc.gcp.NetworkProtocolR\bprotocol\"\xe8\x01\n" + + "\bIdentity\x12)\n" + + "\x0fservice_account\x18\x01 \x01(\tH\x00R\x0eserviceAccount\x12\x1c\n" + + "\bhostname\x18\x02 \x01(\tH\x00R\bhostname\x12B\n" + + "\n" + + "attributes\x18\x03 \x03(\v2\".grpc.gcp.Identity.AttributesEntryR\n" + + "attributes\x1a=\n" + + "\x0fAttributesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x10\n" + + "\x0eidentity_oneof\"\xe9\x05\n" + + "\x17StartClientHandshakeReq\x12[\n" + + "\x1bhandshake_security_protocol\x18\x01 \x01(\x0e2\x1b.grpc.gcp.HandshakeProtocolR\x19handshakeSecurityProtocol\x123\n" + + "\x15application_protocols\x18\x02 \x03(\tR\x14applicationProtocols\x12)\n" + + "\x10record_protocols\x18\x03 \x03(\tR\x0frecordProtocols\x12?\n" + + "\x11target_identities\x18\x04 \x03(\v2\x12.grpc.gcp.IdentityR\x10targetIdentities\x129\n" + + "\x0elocal_identity\x18\x05 \x01(\v2\x12.grpc.gcp.IdentityR\rlocalIdentity\x129\n" + + "\x0elocal_endpoint\x18\x06 \x01(\v2\x12.grpc.gcp.EndpointR\rlocalEndpoint\x12;\n" + + "\x0fremote_endpoint\x18\a \x01(\v2\x12.grpc.gcp.EndpointR\x0eremoteEndpoint\x12\x1f\n" + + "\vtarget_name\x18\b \x01(\tR\n" + + "targetName\x12@\n" + + "\frpc_versions\x18\t \x01(\v2\x1d.grpc.gcp.RpcProtocolVersionsR\vrpcVersions\x12$\n" + + "\x0emax_frame_size\x18\n" + + " \x01(\rR\fmaxFrameSize\x12&\n" + + "\faccess_token\x18\v \x01(\tB\x03\x80\x01\x01R\vaccessToken\x12l\n" + + "\x1etransport_protocol_preferences\x18\f \x01(\v2&.grpc.gcp.TransportProtocolPreferencesR\x1ctransportProtocolPreferences\"\xaf\x01\n" + + "\x19ServerHandshakeParameters\x12)\n" + + "\x10record_protocols\x18\x01 \x03(\tR\x0frecordProtocols\x12=\n" + + "\x10local_identities\x18\x02 \x03(\v2\x12.grpc.gcp.IdentityR\x0flocalIdentities\x12\x1e\n" + + "\x05token\x18\x03 \x01(\tB\x03\x80\x01\x01H\x00R\x05token\x88\x01\x01B\b\n" + + "\x06_token\"\x93\x05\n" + + "\x17StartServerHandshakeReq\x123\n" + + "\x15application_protocols\x18\x01 \x03(\tR\x14applicationProtocols\x12m\n" + + "\x14handshake_parameters\x18\x02 \x03(\v2:.grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntryR\x13handshakeParameters\x12\x19\n" + + "\bin_bytes\x18\x03 \x01(\fR\ainBytes\x129\n" + + "\x0elocal_endpoint\x18\x04 \x01(\v2\x12.grpc.gcp.EndpointR\rlocalEndpoint\x12;\n" + + "\x0fremote_endpoint\x18\x05 \x01(\v2\x12.grpc.gcp.EndpointR\x0eremoteEndpoint\x12@\n" + + "\frpc_versions\x18\x06 \x01(\v2\x1d.grpc.gcp.RpcProtocolVersionsR\vrpcVersions\x12$\n" + + "\x0emax_frame_size\x18\a \x01(\rR\fmaxFrameSize\x12l\n" + + "\x1etransport_protocol_preferences\x18\b \x01(\v2&.grpc.gcp.TransportProtocolPreferencesR\x1ctransportProtocolPreferences\x1ak\n" + + "\x18HandshakeParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\x05R\x03key\x129\n" + + "\x05value\x18\x02 \x01(\v2#.grpc.gcp.ServerHandshakeParametersR\x05value:\x028\x01\"b\n" + + "\x17NextHandshakeMessageReq\x12\x19\n" + + "\bin_bytes\x18\x01 \x01(\fR\ainBytes\x12,\n" + + "\x12network_latency_ms\x18\x02 \x01(\rR\x10networkLatencyMs\"\xe5\x01\n" + + "\rHandshakerReq\x12F\n" + + "\fclient_start\x18\x01 \x01(\v2!.grpc.gcp.StartClientHandshakeReqH\x00R\vclientStart\x12F\n" + + "\fserver_start\x18\x02 \x01(\v2!.grpc.gcp.StartServerHandshakeReqH\x00R\vserverStart\x127\n" + + "\x04next\x18\x03 \x01(\v2!.grpc.gcp.NextHandshakeMessageReqH\x00R\x04nextB\v\n" + + "\treq_oneof\"\xf0\x03\n" + + "\x10HandshakerResult\x121\n" + + "\x14application_protocol\x18\x01 \x01(\tR\x13applicationProtocol\x12'\n" + + "\x0frecord_protocol\x18\x02 \x01(\tR\x0erecordProtocol\x12\x19\n" + + "\bkey_data\x18\x03 \x01(\fR\akeyData\x127\n" + + "\rpeer_identity\x18\x04 \x01(\v2\x12.grpc.gcp.IdentityR\fpeerIdentity\x129\n" + + "\x0elocal_identity\x18\x05 \x01(\v2\x12.grpc.gcp.IdentityR\rlocalIdentity\x12*\n" + + "\x11keep_channel_open\x18\x06 \x01(\bR\x0fkeepChannelOpen\x12I\n" + + "\x11peer_rpc_versions\x18\a \x01(\v2\x1d.grpc.gcp.RpcProtocolVersionsR\x0fpeerRpcVersions\x12$\n" + + "\x0emax_frame_size\x18\b \x01(\rR\fmaxFrameSize\x12T\n" + + "\x12transport_protocol\x18\t \x01(\v2%.grpc.gcp.NegotiatedTransportProtocolR\x11transportProtocol\"@\n" + + "\x10HandshakerStatus\x12\x12\n" + + "\x04code\x18\x01 \x01(\rR\x04code\x12\x18\n" + + "\adetails\x18\x02 \x01(\tR\adetails\"\xbe\x01\n" + + "\x0eHandshakerResp\x12\x1d\n" + + "\n" + + "out_frames\x18\x01 \x01(\fR\toutFrames\x12%\n" + + "\x0ebytes_consumed\x18\x02 \x01(\rR\rbytesConsumed\x122\n" + + "\x06result\x18\x03 \x01(\v2\x1a.grpc.gcp.HandshakerResultR\x06result\x122\n" + + "\x06status\x18\x04 \x01(\v2\x1a.grpc.gcp.HandshakerStatusR\x06status*J\n" + + "\x11HandshakeProtocol\x12\"\n" + + "\x1eHANDSHAKE_PROTOCOL_UNSPECIFIED\x10\x00\x12\a\n" + + "\x03TLS\x10\x01\x12\b\n" + + "\x04ALTS\x10\x02*E\n" + + "\x0fNetworkProtocol\x12 \n" + + "\x1cNETWORK_PROTOCOL_UNSPECIFIED\x10\x00\x12\a\n" + + "\x03TCP\x10\x01\x12\a\n" + + "\x03UDP\x10\x022[\n" + + "\x11HandshakerService\x12F\n" + + "\vDoHandshake\x12\x17.grpc.gcp.HandshakerReq\x1a\x18.grpc.gcp.HandshakerResp\"\x00(\x010\x01Bk\n" + + "\x15io.grpc.alts.internalB\x0fHandshakerProtoP\x01Z?google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcpb\x06proto3" var ( file_grpc_gcp_handshaker_proto_rawDescOnce sync.Once @@ -1240,21 +1155,23 @@ func file_grpc_gcp_handshaker_proto_rawDescGZIP() []byte { var file_grpc_gcp_handshaker_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_grpc_gcp_handshaker_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_grpc_gcp_handshaker_proto_goTypes = []any{ - (HandshakeProtocol)(0), // 0: grpc.gcp.HandshakeProtocol - (NetworkProtocol)(0), // 1: grpc.gcp.NetworkProtocol - (*Endpoint)(nil), // 2: grpc.gcp.Endpoint - (*Identity)(nil), // 3: grpc.gcp.Identity - (*StartClientHandshakeReq)(nil), // 4: grpc.gcp.StartClientHandshakeReq - (*ServerHandshakeParameters)(nil), // 5: grpc.gcp.ServerHandshakeParameters - (*StartServerHandshakeReq)(nil), // 6: grpc.gcp.StartServerHandshakeReq - (*NextHandshakeMessageReq)(nil), // 7: grpc.gcp.NextHandshakeMessageReq - (*HandshakerReq)(nil), // 8: grpc.gcp.HandshakerReq - (*HandshakerResult)(nil), // 9: grpc.gcp.HandshakerResult - (*HandshakerStatus)(nil), // 10: grpc.gcp.HandshakerStatus - (*HandshakerResp)(nil), // 11: grpc.gcp.HandshakerResp - nil, // 12: grpc.gcp.Identity.AttributesEntry - nil, // 13: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry - (*RpcProtocolVersions)(nil), // 14: grpc.gcp.RpcProtocolVersions + (HandshakeProtocol)(0), // 0: grpc.gcp.HandshakeProtocol + (NetworkProtocol)(0), // 1: grpc.gcp.NetworkProtocol + (*Endpoint)(nil), // 2: grpc.gcp.Endpoint + (*Identity)(nil), // 3: grpc.gcp.Identity + (*StartClientHandshakeReq)(nil), // 4: grpc.gcp.StartClientHandshakeReq + (*ServerHandshakeParameters)(nil), // 5: grpc.gcp.ServerHandshakeParameters + (*StartServerHandshakeReq)(nil), // 6: grpc.gcp.StartServerHandshakeReq + (*NextHandshakeMessageReq)(nil), // 7: grpc.gcp.NextHandshakeMessageReq + (*HandshakerReq)(nil), // 8: grpc.gcp.HandshakerReq + (*HandshakerResult)(nil), // 9: grpc.gcp.HandshakerResult + (*HandshakerStatus)(nil), // 10: grpc.gcp.HandshakerStatus + (*HandshakerResp)(nil), // 11: grpc.gcp.HandshakerResp + nil, // 12: grpc.gcp.Identity.AttributesEntry + nil, // 13: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry + (*RpcProtocolVersions)(nil), // 14: grpc.gcp.RpcProtocolVersions + (*TransportProtocolPreferences)(nil), // 15: grpc.gcp.TransportProtocolPreferences + (*NegotiatedTransportProtocol)(nil), // 16: grpc.gcp.NegotiatedTransportProtocol } var file_grpc_gcp_handshaker_proto_depIdxs = []int32{ 1, // 0: grpc.gcp.Endpoint.protocol:type_name -> grpc.gcp.NetworkProtocol @@ -1265,27 +1182,30 @@ var file_grpc_gcp_handshaker_proto_depIdxs = []int32{ 2, // 5: grpc.gcp.StartClientHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint 2, // 6: grpc.gcp.StartClientHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint 14, // 7: grpc.gcp.StartClientHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions - 3, // 8: grpc.gcp.ServerHandshakeParameters.local_identities:type_name -> grpc.gcp.Identity - 13, // 9: grpc.gcp.StartServerHandshakeReq.handshake_parameters:type_name -> grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry - 2, // 10: grpc.gcp.StartServerHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint - 2, // 11: grpc.gcp.StartServerHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint - 14, // 12: grpc.gcp.StartServerHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions - 4, // 13: grpc.gcp.HandshakerReq.client_start:type_name -> grpc.gcp.StartClientHandshakeReq - 6, // 14: grpc.gcp.HandshakerReq.server_start:type_name -> grpc.gcp.StartServerHandshakeReq - 7, // 15: grpc.gcp.HandshakerReq.next:type_name -> grpc.gcp.NextHandshakeMessageReq - 3, // 16: grpc.gcp.HandshakerResult.peer_identity:type_name -> grpc.gcp.Identity - 3, // 17: grpc.gcp.HandshakerResult.local_identity:type_name -> grpc.gcp.Identity - 14, // 18: grpc.gcp.HandshakerResult.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions - 9, // 19: grpc.gcp.HandshakerResp.result:type_name -> grpc.gcp.HandshakerResult - 10, // 20: grpc.gcp.HandshakerResp.status:type_name -> grpc.gcp.HandshakerStatus - 5, // 21: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry.value:type_name -> grpc.gcp.ServerHandshakeParameters - 8, // 22: grpc.gcp.HandshakerService.DoHandshake:input_type -> grpc.gcp.HandshakerReq - 11, // 23: grpc.gcp.HandshakerService.DoHandshake:output_type -> grpc.gcp.HandshakerResp - 23, // [23:24] is the sub-list for method output_type - 22, // [22:23] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 15, // 8: grpc.gcp.StartClientHandshakeReq.transport_protocol_preferences:type_name -> grpc.gcp.TransportProtocolPreferences + 3, // 9: grpc.gcp.ServerHandshakeParameters.local_identities:type_name -> grpc.gcp.Identity + 13, // 10: grpc.gcp.StartServerHandshakeReq.handshake_parameters:type_name -> grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry + 2, // 11: grpc.gcp.StartServerHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint + 2, // 12: grpc.gcp.StartServerHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint + 14, // 13: grpc.gcp.StartServerHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions + 15, // 14: grpc.gcp.StartServerHandshakeReq.transport_protocol_preferences:type_name -> grpc.gcp.TransportProtocolPreferences + 4, // 15: grpc.gcp.HandshakerReq.client_start:type_name -> grpc.gcp.StartClientHandshakeReq + 6, // 16: grpc.gcp.HandshakerReq.server_start:type_name -> grpc.gcp.StartServerHandshakeReq + 7, // 17: grpc.gcp.HandshakerReq.next:type_name -> grpc.gcp.NextHandshakeMessageReq + 3, // 18: grpc.gcp.HandshakerResult.peer_identity:type_name -> grpc.gcp.Identity + 3, // 19: grpc.gcp.HandshakerResult.local_identity:type_name -> grpc.gcp.Identity + 14, // 20: grpc.gcp.HandshakerResult.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions + 16, // 21: grpc.gcp.HandshakerResult.transport_protocol:type_name -> grpc.gcp.NegotiatedTransportProtocol + 9, // 22: grpc.gcp.HandshakerResp.result:type_name -> grpc.gcp.HandshakerResult + 10, // 23: grpc.gcp.HandshakerResp.status:type_name -> grpc.gcp.HandshakerStatus + 5, // 24: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry.value:type_name -> grpc.gcp.ServerHandshakeParameters + 8, // 25: grpc.gcp.HandshakerService.DoHandshake:input_type -> grpc.gcp.HandshakerReq + 11, // 26: grpc.gcp.HandshakerService.DoHandshake:output_type -> grpc.gcp.HandshakerResp + 26, // [26:27] is the sub-list for method output_type + 25, // [25:26] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name } func init() { file_grpc_gcp_handshaker_proto_init() } diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker_grpc.pb.go b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker_grpc.pb.go index 34443b1d2..21cb01be6 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker_grpc.pb.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker_grpc.pb.go @@ -95,7 +95,7 @@ type HandshakerServiceServer interface { type UnimplementedHandshakerServiceServer struct{} func (UnimplementedHandshakerServiceServer) DoHandshake(grpc.BidiStreamingServer[HandshakerReq, HandshakerResp]) error { - return status.Errorf(codes.Unimplemented, "method DoHandshake not implemented") + return status.Error(codes.Unimplemented, "method DoHandshake not implemented") } func (UnimplementedHandshakerServiceServer) mustEmbedUnimplementedHandshakerServiceServer() {} func (UnimplementedHandshakerServiceServer) testEmbeddedByValue() {} diff --git a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go index 5d38a74c6..cf48193cb 100644 --- a/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go +++ b/vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/gcp/transport_security_common.proto @@ -144,6 +144,97 @@ func (x *RpcProtocolVersions) GetMinRpcVersion() *RpcProtocolVersions_Version { return nil } +// The ordered list of protocols that the client wishes to use, or the set +// that the server supports. +type TransportProtocolPreferences struct { + state protoimpl.MessageState `protogen:"open.v1"` + TransportProtocol []string `protobuf:"bytes,1,rep,name=transport_protocol,json=transportProtocol,proto3" json:"transport_protocol,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransportProtocolPreferences) Reset() { + *x = TransportProtocolPreferences{} + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransportProtocolPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransportProtocolPreferences) ProtoMessage() {} + +func (x *TransportProtocolPreferences) ProtoReflect() protoreflect.Message { + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransportProtocolPreferences.ProtoReflect.Descriptor instead. +func (*TransportProtocolPreferences) Descriptor() ([]byte, []int) { + return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{1} +} + +func (x *TransportProtocolPreferences) GetTransportProtocol() []string { + if x != nil { + return x.TransportProtocol + } + return nil +} + +// The negotiated transport protocol. +type NegotiatedTransportProtocol struct { + state protoimpl.MessageState `protogen:"open.v1"` + TransportProtocol string `protobuf:"bytes,1,opt,name=transport_protocol,json=transportProtocol,proto3" json:"transport_protocol,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NegotiatedTransportProtocol) Reset() { + *x = NegotiatedTransportProtocol{} + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NegotiatedTransportProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NegotiatedTransportProtocol) ProtoMessage() {} + +func (x *NegotiatedTransportProtocol) ProtoReflect() protoreflect.Message { + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NegotiatedTransportProtocol.ProtoReflect.Descriptor instead. +func (*NegotiatedTransportProtocol) Descriptor() ([]byte, []int) { + return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{2} +} + +func (x *NegotiatedTransportProtocol) GetTransportProtocol() string { + if x != nil { + return x.TransportProtocol + } + return "" +} + // RPC version contains a major version and a minor version. type RpcProtocolVersions_Version struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -155,7 +246,7 @@ type RpcProtocolVersions_Version struct { func (x *RpcProtocolVersions_Version) Reset() { *x = RpcProtocolVersions_Version{} - mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1] + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -167,7 +258,7 @@ func (x *RpcProtocolVersions_Version) String() string { func (*RpcProtocolVersions_Version) ProtoMessage() {} func (x *RpcProtocolVersions_Version) ProtoReflect() protoreflect.Message { - mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1] + mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -199,40 +290,24 @@ func (x *RpcProtocolVersions_Version) GetMinor() uint32 { var File_grpc_gcp_transport_security_common_proto protoreflect.FileDescriptor -var file_grpc_gcp_transport_security_common_proto_rawDesc = string([]byte{ - 0x0a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x67, 0x63, 0x70, 0x22, 0xea, 0x01, 0x0a, 0x13, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f, - 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, - 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, - 0x78, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, - 0x69, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, - 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, - 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x35, 0x0a, 0x07, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, - 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, - 0x72, 0x2a, 0x51, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x54, - 0x45, 0x47, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, - 0x43, 0x59, 0x10, 0x02, 0x42, 0x78, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x1c, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, 0x70, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_gcp_transport_security_common_proto_rawDesc = "" + + "\n" + + "(grpc/gcp/transport_security_common.proto\x12\bgrpc.gcp\"\xea\x01\n" + + "\x13RpcProtocolVersions\x12M\n" + + "\x0fmax_rpc_version\x18\x01 \x01(\v2%.grpc.gcp.RpcProtocolVersions.VersionR\rmaxRpcVersion\x12M\n" + + "\x0fmin_rpc_version\x18\x02 \x01(\v2%.grpc.gcp.RpcProtocolVersions.VersionR\rminRpcVersion\x1a5\n" + + "\aVersion\x12\x14\n" + + "\x05major\x18\x01 \x01(\rR\x05major\x12\x14\n" + + "\x05minor\x18\x02 \x01(\rR\x05minor\"M\n" + + "\x1cTransportProtocolPreferences\x12-\n" + + "\x12transport_protocol\x18\x01 \x03(\tR\x11transportProtocol\"L\n" + + "\x1bNegotiatedTransportProtocol\x12-\n" + + "\x12transport_protocol\x18\x01 \x01(\tR\x11transportProtocol*Q\n" + + "\rSecurityLevel\x12\x11\n" + + "\rSECURITY_NONE\x10\x00\x12\x12\n" + + "\x0eINTEGRITY_ONLY\x10\x01\x12\x19\n" + + "\x15INTEGRITY_AND_PRIVACY\x10\x02Bx\n" + + "\x15io.grpc.alts.internalB\x1cTransportSecurityCommonProtoP\x01Z?google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcpb\x06proto3" var ( file_grpc_gcp_transport_security_common_proto_rawDescOnce sync.Once @@ -247,15 +322,17 @@ func file_grpc_gcp_transport_security_common_proto_rawDescGZIP() []byte { } var file_grpc_gcp_transport_security_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_grpc_gcp_transport_security_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_grpc_gcp_transport_security_common_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_grpc_gcp_transport_security_common_proto_goTypes = []any{ - (SecurityLevel)(0), // 0: grpc.gcp.SecurityLevel - (*RpcProtocolVersions)(nil), // 1: grpc.gcp.RpcProtocolVersions - (*RpcProtocolVersions_Version)(nil), // 2: grpc.gcp.RpcProtocolVersions.Version + (SecurityLevel)(0), // 0: grpc.gcp.SecurityLevel + (*RpcProtocolVersions)(nil), // 1: grpc.gcp.RpcProtocolVersions + (*TransportProtocolPreferences)(nil), // 2: grpc.gcp.TransportProtocolPreferences + (*NegotiatedTransportProtocol)(nil), // 3: grpc.gcp.NegotiatedTransportProtocol + (*RpcProtocolVersions_Version)(nil), // 4: grpc.gcp.RpcProtocolVersions.Version } var file_grpc_gcp_transport_security_common_proto_depIdxs = []int32{ - 2, // 0: grpc.gcp.RpcProtocolVersions.max_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version - 2, // 1: grpc.gcp.RpcProtocolVersions.min_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version + 4, // 0: grpc.gcp.RpcProtocolVersions.max_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version + 4, // 1: grpc.gcp.RpcProtocolVersions.min_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version 2, // [2:2] is the sub-list for method output_type 2, // [2:2] is the sub-list for method input_type 2, // [2:2] is the sub-list for extension type_name @@ -274,7 +351,7 @@ func file_grpc_gcp_transport_security_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_grpc_gcp_transport_security_common_proto_rawDesc), len(file_grpc_gcp_transport_security_common_proto_rawDesc)), NumEnums: 1, - NumMessages: 2, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go index 665e790bb..a63ab606e 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/credentials/credentials.go @@ -120,6 +120,20 @@ type AuthInfo interface { AuthType() string } +// AuthorityValidator validates the authority used to override the `:authority` +// header. This is an optional interface that implementations of AuthInfo can +// implement if they support per-RPC authority overrides. It is invoked when the +// application attempts to override the HTTP/2 `:authority` header using the +// CallAuthority call option. +type AuthorityValidator interface { + // ValidateAuthority checks the authority value used to override the + // `:authority` header. The authority parameter is the override value + // provided by the application via the CallAuthority option. This value + // typically corresponds to the server hostname or endpoint the RPC is + // targeting. It returns non-nil error if the validation fails. + ValidateAuthority(authority string) error +} + // ErrConnDispatched indicates that rawConn has been dispatched out of gRPC // and the caller should not close rawConn. var ErrConnDispatched = errors.New("credentials: rawConn is dispatched out of gRPC") @@ -207,14 +221,32 @@ type RequestInfo struct { AuthInfo AuthInfo } +// requestInfoKey is a struct to be used as the key to store RequestInfo in a +// context. +type requestInfoKey struct{} + // RequestInfoFromContext extracts the RequestInfo from the context if it exists. // // This API is experimental. func RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) { - ri, ok = icredentials.RequestInfoFromContext(ctx).(RequestInfo) + ri, ok = ctx.Value(requestInfoKey{}).(RequestInfo) return ri, ok } +// NewContextWithRequestInfo creates a new context from ctx and attaches ri to it. +// +// This RequestInfo will be accessible via RequestInfoFromContext. +// +// Intended to be used from tests for PerRPCCredentials implementations (that +// often need to check connection's SecurityLevel). Should not be used from +// non-test code: the gRPC client already prepares a context with the correct +// RequestInfo attached when calling PerRPCCredentials.GetRequestMetadata. +// +// This API is experimental. +func NewContextWithRequestInfo(ctx context.Context, ri RequestInfo) context.Context { + return context.WithValue(ctx, requestInfoKey{}, ri) +} + // ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes // it possible to pass arbitrary data to the handshaker from gRPC, resolver, // balancer etc. Individual credential implementations control the actual diff --git a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go index 4c805c644..93156c0f3 100644 --- a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go +++ b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go @@ -30,7 +30,7 @@ import ( // NewCredentials returns a credentials which disables transport security. // // Note that using this credentials with per-RPC credentials which require -// transport security is incompatible and will cause grpc.Dial() to fail. +// transport security is incompatible and will cause RPCs to fail. func NewCredentials() credentials.TransportCredentials { return insecureTC{} } @@ -71,6 +71,12 @@ func (info) AuthType() string { return "insecure" } +// ValidateAuthority allows any value to be overridden for the :authority +// header. +func (info) ValidateAuthority(string) error { + return nil +} + // insecureBundle implements an insecure bundle. // An insecure bundle provides a thin wrapper around insecureTC to support // the credentials.Bundle interface. diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go index bd5fe22b6..20f65f7bd 100644 --- a/vendor/google.golang.org/grpc/credentials/tls.go +++ b/vendor/google.golang.org/grpc/credentials/tls.go @@ -22,6 +22,7 @@ import ( "context" "crypto/tls" "crypto/x509" + "errors" "fmt" "net" "net/url" @@ -50,6 +51,21 @@ func (t TLSInfo) AuthType() string { return "tls" } +// ValidateAuthority validates the provided authority being used to override the +// :authority header by verifying it against the peer certificates. It returns a +// non-nil error if the validation fails. +func (t TLSInfo) ValidateAuthority(authority string) error { + var errs []error + for _, cert := range t.State.PeerCertificates { + var err error + if err = cert.VerifyHostname(authority); err == nil { + return nil + } + errs = append(errs, err) + } + return fmt.Errorf("credentials: invalid authority %q: %v", authority, errors.Join(errs...)) +} + // cipherSuiteLookup returns the string version of a TLS cipher suite ID. func cipherSuiteLookup(cipherSuiteID uint16) string { for _, s := range tls.CipherSuites() { diff --git a/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/builder.go b/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/builder.go index ad4207892..a7f2f7910 100644 --- a/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/builder.go +++ b/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/builder.go @@ -24,6 +24,7 @@ import ( "time" "google.golang.org/grpc/credentials/tls/certprovider" + "google.golang.org/grpc/internal/envconfig" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/types/known/durationpb" ) @@ -63,19 +64,24 @@ func pluginConfigFromJSON(jd json.RawMessage) (Options, error) { // is that the refresh_interval is represented here as a duration proto, // while in the latter a time.Duration is used. cfg := &struct { - CertificateFile string `json:"certificate_file,omitempty"` - PrivateKeyFile string `json:"private_key_file,omitempty"` - CACertificateFile string `json:"ca_certificate_file,omitempty"` - RefreshInterval json.RawMessage `json:"refresh_interval,omitempty"` + CertificateFile string `json:"certificate_file,omitempty"` + PrivateKeyFile string `json:"private_key_file,omitempty"` + CACertificateFile string `json:"ca_certificate_file,omitempty"` + SPIFFETrustBundleMapFile string `json:"spiffe_trust_bundle_map_file,omitempty"` + RefreshInterval json.RawMessage `json:"refresh_interval,omitempty"` }{} if err := json.Unmarshal(jd, cfg); err != nil { return Options{}, fmt.Errorf("pemfile: json.Unmarshal(%s) failed: %v", string(jd), err) } + if !envconfig.XDSSPIFFEEnabled { + cfg.SPIFFETrustBundleMapFile = "" + } opts := Options{ - CertFile: cfg.CertificateFile, - KeyFile: cfg.PrivateKeyFile, - RootFile: cfg.CACertificateFile, + CertFile: cfg.CertificateFile, + KeyFile: cfg.PrivateKeyFile, + RootFile: cfg.CACertificateFile, + SPIFFEBundleMapFile: cfg.SPIFFETrustBundleMapFile, // Refresh interval is the only field in the configuration for which we // support a default value. We cannot possibly have valid defaults for // file paths to watch. Also, it is valid to specify an empty path for diff --git a/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/watcher.go b/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/watcher.go index d7b5e1f12..bc9c545a7 100644 --- a/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/watcher.go +++ b/vendor/google.golang.org/grpc/credentials/tls/certprovider/pemfile/watcher.go @@ -115,7 +115,7 @@ func newProvider(o Options) certprovider.Provider { if o.CertFile != "" && o.KeyFile != "" { provider.identityDistributor = newDistributor() } - if o.RootFile != "" { + if o.RootFile != "" || o.SPIFFEBundleMapFile != "" { provider.rootDistributor = newDistributor() } diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go index 405a2ffeb..ec0ca89cc 100644 --- a/vendor/google.golang.org/grpc/dialoptions.go +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -213,6 +213,7 @@ func WithReadBufferSize(s int) DialOption { func WithInitialWindowSize(s int32) DialOption { return newFuncDialOption(func(o *dialOptions) { o.copts.InitialWindowSize = s + o.copts.StaticWindowSize = true }) } @@ -222,6 +223,26 @@ func WithInitialWindowSize(s int32) DialOption { func WithInitialConnWindowSize(s int32) DialOption { return newFuncDialOption(func(o *dialOptions) { o.copts.InitialConnWindowSize = s + o.copts.StaticWindowSize = true + }) +} + +// WithStaticStreamWindowSize returns a DialOption which sets the initial +// stream window size to the value provided and disables dynamic flow control. +func WithStaticStreamWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialWindowSize = s + o.copts.StaticWindowSize = true + }) +} + +// WithStaticConnWindowSize returns a DialOption which sets the initial +// connection window size to the value provided and disables dynamic flow +// control. +func WithStaticConnWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialConnWindowSize = s + o.copts.StaticWindowSize = true }) } @@ -360,7 +381,7 @@ func WithReturnConnectionError() DialOption { // // Note that using this DialOption with per-RPC credentials (through // WithCredentialsBundle or WithPerRPCCredentials) which require transport -// security is incompatible and will cause grpc.Dial() to fail. +// security is incompatible and will cause RPCs to fail. // // Deprecated: use WithTransportCredentials and insecure.NewCredentials() // instead. Will be supported throughout 1.x. diff --git a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go index fbc1ca356..ba25b8988 100644 --- a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go +++ b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go @@ -223,15 +223,7 @@ func (gsb *Balancer) ExitIdle() { // There is no need to protect this read with a mutex, as the write to the // Balancer field happens in SwitchTo, which completes before this can be // called. - if ei, ok := balToUpdate.Balancer.(balancer.ExitIdler); ok { - ei.ExitIdle() - return - } - gsb.mu.Lock() - defer gsb.mu.Unlock() - for sc := range balToUpdate.subconns { - sc.Connect() - } + balToUpdate.ExitIdle() } // updateSubConnState forwards the update to the appropriate child. diff --git a/vendor/google.golang.org/grpc/internal/balancer/nop/nop.go b/vendor/google.golang.org/grpc/internal/balancer/nop/nop.go index 0c96f1b81..8c5bf96f2 100644 --- a/vendor/google.golang.org/grpc/internal/balancer/nop/nop.go +++ b/vendor/google.golang.org/grpc/internal/balancer/nop/nop.go @@ -60,3 +60,6 @@ func (b *bal) UpdateSubConnState(_ balancer.SubConn, _ balancer.SubConnState) {} // Close is a no-op. func (b *bal) Close() {} + +// ExitIdle is a no-op. +func (b *bal) ExitIdle() {} diff --git a/vendor/google.golang.org/grpc/internal/balancergroup/balancergroup.go b/vendor/google.golang.org/grpc/internal/balancergroup/balancergroup.go index 9addcf185..cd1a9ed17 100644 --- a/vendor/google.golang.org/grpc/internal/balancergroup/balancergroup.go +++ b/vendor/google.golang.org/grpc/internal/balancergroup/balancergroup.go @@ -106,15 +106,14 @@ func (sbc *subBalancerWrapper) startBalancer() { } } -// exitIdle invokes the sub-balancer's ExitIdle method. Returns a boolean -// indicating whether or not the operation was completed. -func (sbc *subBalancerWrapper) exitIdle() (complete bool) { +// exitIdle invokes the ExitIdle method on the sub-balancer, a gracefulswitch +// balancer. +func (sbc *subBalancerWrapper) exitIdle() { b := sbc.balancer if b == nil { - return true + return } b.ExitIdle() - return true } func (sbc *subBalancerWrapper) updateClientConnState(s balancer.ClientConnState) error { @@ -411,20 +410,6 @@ func (bg *BalancerGroup) cleanupSubConns(config *subBalancerWrapper) { } } -// connect attempts to connect to all subConns belonging to sb. -func (bg *BalancerGroup) connect(sb *subBalancerWrapper) { - bg.incomingMu.Lock() - defer bg.incomingMu.Unlock() - if bg.incomingClosed { - return - } - for sc, b := range bg.scToSubBalancer { - if b == sb { - sc.Connect() - } - } -} - // Following are actions from the parent grpc.ClientConn, forward to sub-balancers. // updateSubConnState forwards the update to cb and updates scToSubBalancer if @@ -575,9 +560,7 @@ func (bg *BalancerGroup) ExitIdle() { return } for _, config := range bg.idToBalancerConfig { - if !config.exitIdle() { - bg.connect(config) - } + config.exitIdle() } } @@ -590,9 +573,7 @@ func (bg *BalancerGroup) ExitIdleOne(id string) { return } if config := bg.idToBalancerConfig[id]; config != nil { - if !config.exitIdle() { - bg.connect(config) - } + config.exitIdle() } } diff --git a/vendor/google.golang.org/grpc/internal/credentials/credentials.go b/vendor/google.golang.org/grpc/internal/credentials/credentials.go index 9deee7f65..48b22d9cf 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/internal/credentials/credentials.go @@ -20,20 +20,6 @@ import ( "context" ) -// requestInfoKey is a struct to be used as the key to store RequestInfo in a -// context. -type requestInfoKey struct{} - -// NewRequestInfoContext creates a context with ri. -func NewRequestInfoContext(ctx context.Context, ri any) context.Context { - return context.WithValue(ctx, requestInfoKey{}, ri) -} - -// RequestInfoFromContext extracts the RequestInfo from ctx. -func RequestInfoFromContext(ctx context.Context) any { - return ctx.Value(requestInfoKey{}) -} - // clientHandshakeInfoKey is a struct used as the key to store // ClientHandshakeInfo in a context. type clientHandshakeInfoKey struct{} diff --git a/vendor/google.golang.org/grpc/internal/credentials/spiffe/spiffe.go b/vendor/google.golang.org/grpc/internal/credentials/spiffe/spiffe.go index e8a9cef8b..7be008a19 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/spiffe/spiffe.go +++ b/vendor/google.golang.org/grpc/internal/credentials/spiffe/spiffe.go @@ -22,6 +22,7 @@ package spiffe import ( + "crypto/x509" "encoding/json" "fmt" @@ -61,3 +62,46 @@ func BundleMapFromBytes(bundleMapBytes []byte) (map[string]*spiffebundle.Bundle, } return bundleMap, nil } + +// GetRootsFromSPIFFEBundleMap returns the root trust certificates from the +// SPIFFE bundle map for the given trust domain from the leaf certificate. +func GetRootsFromSPIFFEBundleMap(bundleMap map[string]*spiffebundle.Bundle, leafCert *x509.Certificate) (*x509.CertPool, error) { + // 1. Upon receiving a peer certificate, verify that it is a well-formed SPIFFE + // leaf certificate. In particular, it must have a single URI SAN containing + // a well-formed SPIFFE ID ([SPIFFE ID format]). + spiffeID, err := idFromCert(leafCert) + if err != nil { + return nil, fmt.Errorf("spiffe: could not get spiffe ID from peer leaf cert but verification with spiffe trust map was configured: %v", err) + } + + // 2. Use the trust domain in the peer certificate's SPIFFE ID to lookup + // the SPIFFE trust bundle. If the trust domain is not contained in the + // configured trust map, reject the certificate. + spiffeBundle, ok := bundleMap[spiffeID.TrustDomain().Name()] + if !ok { + return nil, fmt.Errorf("spiffe: no bundle found for peer certificates trust domain %q but verification with a SPIFFE trust map was configured", spiffeID.TrustDomain().Name()) + } + roots := spiffeBundle.X509Authorities() + rootPool := x509.NewCertPool() + for _, root := range roots { + rootPool.AddCert(root) + } + return rootPool, nil +} + +// idFromCert parses the SPIFFE ID from the x509.Certificate. If the certificate +// does not have a valid SPIFFE ID, returns an error. +func idFromCert(cert *x509.Certificate) (*spiffeid.ID, error) { + if cert == nil { + return nil, fmt.Errorf("input cert is nil") + } + // A valid SPIFFE Certificate should have exactly one URI. + if len(cert.URIs) != 1 { + return nil, fmt.Errorf("input cert has %v URIs but should have 1", len(cert.URIs)) + } + id, err := spiffeid.FromURI(cert.URIs[0]) + if err != nil { + return nil, fmt.Errorf("invalid spiffeid: %v", err) + } + return &id, nil +} diff --git a/vendor/google.golang.org/grpc/internal/credentials/xds/handshake_info.go b/vendor/google.golang.org/grpc/internal/credentials/xds/handshake_info.go index dcff7ad62..81074bedb 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/xds/handshake_info.go +++ b/vendor/google.golang.org/grpc/internal/credentials/xds/handshake_info.go @@ -31,6 +31,7 @@ import ( "google.golang.org/grpc/attributes" "google.golang.org/grpc/credentials/tls/certprovider" "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/credentials/spiffe" "google.golang.org/grpc/internal/xds/matcher" "google.golang.org/grpc/resolver" ) @@ -144,6 +145,7 @@ func (hi *HandshakeInfo) ClientSideTLSConfig(ctx context.Context) (*tls.Config, return nil, fmt.Errorf("xds: fetching trusted roots from CertificateProvider failed: %v", err) } cfg.RootCAs = km.Roots + cfg.VerifyPeerCertificate = hi.buildVerifyFunc(km, true) if idProv != nil { km, err := idProv.KeyMaterial(ctx) @@ -155,6 +157,60 @@ func (hi *HandshakeInfo) ClientSideTLSConfig(ctx context.Context) (*tls.Config, return cfg, nil } +func (hi *HandshakeInfo) buildVerifyFunc(km *certprovider.KeyMaterial, isClient bool) func(rawCerts [][]byte, _ [][]*x509.Certificate) error { + return func(rawCerts [][]byte, _ [][]*x509.Certificate) error { + // Parse all raw certificates presented by the peer. + var certs []*x509.Certificate + for _, rc := range rawCerts { + cert, err := x509.ParseCertificate(rc) + if err != nil { + return err + } + certs = append(certs, cert) + } + + // Build the intermediates list and verify that the leaf certificate is + // signed by one of the root certificates. If a SPIFFE Bundle Map is + // configured, it is used to get the root certs. Otherwise, the + // configured roots in the root provider are used. + intermediates := x509.NewCertPool() + for _, cert := range certs[1:] { + intermediates.AddCert(cert) + } + roots := km.Roots + // If a SPIFFE Bundle Map is configured, find the roots for the trust + // domain of the leaf certificate. + if km.SPIFFEBundleMap != nil { + var err error + roots, err = spiffe.GetRootsFromSPIFFEBundleMap(km.SPIFFEBundleMap, certs[0]) + if err != nil { + return err + } + } + opts := x509.VerifyOptions{ + Roots: roots, + Intermediates: intermediates, + KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + } + if isClient { + opts.KeyUsages = []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth} + } else { + opts.KeyUsages = []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth} + } + if _, err := certs[0].Verify(opts); err != nil { + return err + } + // The SANs sent by the MeshCA are encoded as SPIFFE IDs. We need to + // only look at the SANs on the leaf cert. + if cert := certs[0]; !hi.MatchingSANExists(cert) { + // TODO: Print the complete certificate once the x509 package + // supports a String() method on the Certificate type. + return fmt.Errorf("xds: received SANs {DNSNames: %v, EmailAddresses: %v, IPAddresses: %v, URIs: %v} do not match any of the accepted SANs", cert.DNSNames, cert.EmailAddresses, cert.IPAddresses, cert.URIs) + } + return nil + } +} + // ServerSideTLSConfig constructs a tls.Config to be used in a server-side // handshake based on the contents of the HandshakeInfo. func (hi *HandshakeInfo) ServerSideTLSConfig(ctx context.Context) (*tls.Config, error) { @@ -186,7 +242,15 @@ func (hi *HandshakeInfo) ServerSideTLSConfig(ctx context.Context) (*tls.Config, if err != nil { return nil, fmt.Errorf("xds: fetching trusted roots from CertificateProvider failed: %v", err) } - cfg.ClientCAs = km.Roots + if km.SPIFFEBundleMap != nil && hi.requireClientCert { + // ClientAuth, if set greater than tls.RequireAnyClientCert, must be + // dropped to tls.RequireAnyClientCert so that custom verification + // to use SPIFFE Bundles is done. + cfg.ClientAuth = tls.RequireAnyClientCert + cfg.VerifyPeerCertificate = hi.buildVerifyFunc(km, false) + } else { + cfg.ClientCAs = km.Roots + } } return cfg, nil } diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index cc5713fd9..2fdaed88d 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -33,10 +33,6 @@ var ( // "GRPC_RING_HASH_CAP". This does not override the default bounds // checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M). RingHashCap = uint64FromEnv("GRPC_RING_HASH_CAP", 4096, 1, 8*1024*1024) - // LeastRequestLB is set if we should support the least_request_experimental - // LB policy, which can be enabled by setting the environment variable - // "GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST" to "true". - LeastRequestLB = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST", false) // ALTSMaxConcurrentHandshakes is the maximum number of concurrent ALTS // handshakes that can be performed. ALTSMaxConcurrentHandshakes = uint64FromEnv("GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES", 100, 1, 100) @@ -69,6 +65,10 @@ var ( // to gRFC A76. It can be enabled by setting the environment variable // "GRPC_EXPERIMENTAL_RING_HASH_SET_REQUEST_HASH_KEY" to "true". RingHashSetRequestHashKey = boolFromEnv("GRPC_EXPERIMENTAL_RING_HASH_SET_REQUEST_HASH_KEY", false) + + // ALTSHandshakerKeepaliveParams is set if we should add the + // KeepaliveParams when dial the ALTS handshaker service. + ALTSHandshakerKeepaliveParams = boolFromEnv("GRPC_EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS", false) ) func boolFromEnv(envVar string, def bool) bool { diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go index 2eb97f832..e87551552 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/xds.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go @@ -63,4 +63,9 @@ var ( // For more details, see: // https://github.com/grpc/proposal/blob/master/A82-xds-system-root-certs.md. XDSSystemRootCertsEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_SYSTEM_ROOT_CERTS", false) + + // XDSSPIFFEEnabled controls if SPIFFE Bundle Maps can be used as roots of + // trust. For more details, see: + // https://github.com/grpc/proposal/blob/master/A87-mtls-spiffe-support.md + XDSSPIFFEEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_MTLS_SPIFFE", false) ) diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/event.go b/vendor/google.golang.org/grpc/internal/grpcsync/event.go index fbe697c37..d788c2493 100644 --- a/vendor/google.golang.org/grpc/internal/grpcsync/event.go +++ b/vendor/google.golang.org/grpc/internal/grpcsync/event.go @@ -21,28 +21,25 @@ package grpcsync import ( - "sync" "sync/atomic" ) // Event represents a one-time event that may occur in the future. type Event struct { - fired int32 + fired atomic.Bool c chan struct{} - o sync.Once } // Fire causes e to complete. It is safe to call multiple times, and // concurrently. It returns true iff this call to Fire caused the signaling -// channel returned by Done to close. +// channel returned by Done to close. If Fire returns false, it is possible +// the Done channel has not been closed yet. func (e *Event) Fire() bool { - ret := false - e.o.Do(func() { - atomic.StoreInt32(&e.fired, 1) + if e.fired.CompareAndSwap(false, true) { close(e.c) - ret = true - }) - return ret + return true + } + return false } // Done returns a channel that will be closed when Fire is called. @@ -52,7 +49,7 @@ func (e *Event) Done() <-chan struct{} { // HasFired returns true if Fire has been called. func (e *Event) HasFired() bool { - return atomic.LoadInt32(&e.fired) == 1 + return e.fired.Load() } // NewEvent returns a new, ready-to-use Event. diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go index 2ce012cda..3ac798e8e 100644 --- a/vendor/google.golang.org/grpc/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/internal.go @@ -266,6 +266,13 @@ var ( TimeAfterFunc = func(d time.Duration, f func()) Timer { return time.AfterFunc(d, f) } + + // NewStreamWaitingForResolver is a test hook that is triggered when a + // new stream blocks while waiting for name resolution. This can be + // used in tests to synchronize resolver updates and avoid race conditions. + // When set, the function will be called before the stream enters + // the blocking state. + NewStreamWaitingForResolver = func() {} ) // HealthChecker defines the signature of the client-side LB channel health diff --git a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls.pb.go b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls.pb.go index c5c777c1f..3503f7d3e 100644 --- a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls.pb.go +++ b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/lookup/v1/rls.proto @@ -237,62 +237,35 @@ func (x *RouteLookupResponse) GetExtensions() []*anypb.Any { var File_grpc_lookup_v1_rls_proto protoreflect.FileDescriptor -var file_grpc_lookup_v1_rls_proto_rawDesc = string([]byte{ - 0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x03, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x61, - 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x07, - 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6b, - 0x65, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, - 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4b, - 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, - 0x49, 0x53, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, - 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x32, 0x6e, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, - 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4d, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x52, - 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, - 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_lookup_v1_rls_proto_rawDesc = "" + + "\n" + + "\x18grpc/lookup/v1/rls.proto\x12\x0egrpc.lookup.v1\x1a\x19google/protobuf/any.proto\"\xb9\x03\n" + + "\x12RouteLookupRequest\x12\x1f\n" + + "\vtarget_type\x18\x03 \x01(\tR\n" + + "targetType\x12A\n" + + "\x06reason\x18\x05 \x01(\x0e2).grpc.lookup.v1.RouteLookupRequest.ReasonR\x06reason\x12*\n" + + "\x11stale_header_data\x18\x06 \x01(\tR\x0fstaleHeaderData\x12G\n" + + "\akey_map\x18\x04 \x03(\v2..grpc.lookup.v1.RouteLookupRequest.KeyMapEntryR\x06keyMap\x124\n" + + "\n" + + "extensions\x18\a \x03(\v2\x14.google.protobuf.AnyR\n" + + "extensions\x1a9\n" + + "\vKeyMapEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"?\n" + + "\x06Reason\x12\x12\n" + + "\x0eREASON_UNKNOWN\x10\x00\x12\x0f\n" + + "\vREASON_MISS\x10\x01\x12\x10\n" + + "\fREASON_STALE\x10\x02J\x04\b\x01\x10\x02J\x04\b\x02\x10\x03R\x06serverR\x04path\"\x94\x01\n" + + "\x13RouteLookupResponse\x12\x18\n" + + "\atargets\x18\x03 \x03(\tR\atargets\x12\x1f\n" + + "\vheader_data\x18\x02 \x01(\tR\n" + + "headerData\x124\n" + + "\n" + + "extensions\x18\x04 \x03(\v2\x14.google.protobuf.AnyR\n" + + "extensionsJ\x04\b\x01\x10\x02R\x06target2n\n" + + "\x12RouteLookupService\x12X\n" + + "\vRouteLookup\x12\".grpc.lookup.v1.RouteLookupRequest\x1a#.grpc.lookup.v1.RouteLookupResponse\"\x00BM\n" + + "\x11io.grpc.lookup.v1B\bRlsProtoP\x01Z,google.golang.org/grpc/lookup/grpc_lookup_v1b\x06proto3" var ( file_grpc_lookup_v1_rls_proto_rawDescOnce sync.Once diff --git a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_config.pb.go b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_config.pb.go index 89fdb7fcf..9e24bbde8 100644 --- a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_config.pb.go +++ b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_config.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc v5.27.1 // source: grpc/lookup/v1/rls_config.proto @@ -655,123 +655,53 @@ func (x *GrpcKeyBuilder_ExtraKeys) GetMethod() string { var File_grpc_lookup_v1_rls_config_proto protoreflect.FileDescriptor -var file_grpc_lookup_v1_rls_config_proto_rawDesc = string([]byte{ - 0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, - 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x5c, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, - 0xf0, 0x03, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x65, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, - 0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x47, 0x0a, - 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, - 0x72, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x09, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, - 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0x51, - 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x89, 0x03, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, - 0x73, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, - 0x74, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, - 0x46, 0x0a, 0x10, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x55, - 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0x3f, 0x0a, - 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, - 0x04, 0x0a, 0x11, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6b, 0x65, 0x79, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, - 0x68, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x49, 0x0a, 0x10, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, - 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x4b, - 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x4f, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, - 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x41, 0x67, 0x65, 0x12, 0x28, - 0x0a, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, - 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x1b, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x70, 0x0a, 0x1b, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, - 0x52, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, - 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_grpc_lookup_v1_rls_config_proto_rawDesc = "" + + "\n" + + "\x1fgrpc/lookup/v1/rls_config.proto\x12\x0egrpc.lookup.v1\x1a\x1egoogle/protobuf/duration.proto\"\\\n" + + "\vNameMatcher\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05names\x18\x02 \x03(\tR\x05names\x12%\n" + + "\x0erequired_match\x18\x03 \x01(\bR\rrequiredMatch\"\xf0\x03\n" + + "\x0eGrpcKeyBuilder\x129\n" + + "\x05names\x18\x01 \x03(\v2#.grpc.lookup.v1.GrpcKeyBuilder.NameR\x05names\x12G\n" + + "\n" + + "extra_keys\x18\x03 \x01(\v2(.grpc.lookup.v1.GrpcKeyBuilder.ExtraKeysR\textraKeys\x125\n" + + "\aheaders\x18\x02 \x03(\v2\x1b.grpc.lookup.v1.NameMatcherR\aheaders\x12U\n" + + "\rconstant_keys\x18\x04 \x03(\v20.grpc.lookup.v1.GrpcKeyBuilder.ConstantKeysEntryR\fconstantKeys\x1a8\n" + + "\x04Name\x12\x18\n" + + "\aservice\x18\x01 \x01(\tR\aservice\x12\x16\n" + + "\x06method\x18\x02 \x01(\tR\x06method\x1aQ\n" + + "\tExtraKeys\x12\x12\n" + + "\x04host\x18\x01 \x01(\tR\x04host\x12\x18\n" + + "\aservice\x18\x02 \x01(\tR\aservice\x12\x16\n" + + "\x06method\x18\x03 \x01(\tR\x06method\x1a?\n" + + "\x11ConstantKeysEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x89\x03\n" + + "\x0eHttpKeyBuilder\x12#\n" + + "\rhost_patterns\x18\x01 \x03(\tR\fhostPatterns\x12#\n" + + "\rpath_patterns\x18\x02 \x03(\tR\fpathPatterns\x12F\n" + + "\x10query_parameters\x18\x03 \x03(\v2\x1b.grpc.lookup.v1.NameMatcherR\x0fqueryParameters\x125\n" + + "\aheaders\x18\x04 \x03(\v2\x1b.grpc.lookup.v1.NameMatcherR\aheaders\x12U\n" + + "\rconstant_keys\x18\x05 \x03(\v20.grpc.lookup.v1.HttpKeyBuilder.ConstantKeysEntryR\fconstantKeys\x12\x16\n" + + "\x06method\x18\x06 \x01(\tR\x06method\x1a?\n" + + "\x11ConstantKeysEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa6\x04\n" + + "\x11RouteLookupConfig\x12I\n" + + "\x10http_keybuilders\x18\x01 \x03(\v2\x1e.grpc.lookup.v1.HttpKeyBuilderR\x0fhttpKeybuilders\x12I\n" + + "\x10grpc_keybuilders\x18\x02 \x03(\v2\x1e.grpc.lookup.v1.GrpcKeyBuilderR\x0fgrpcKeybuilders\x12%\n" + + "\x0elookup_service\x18\x03 \x01(\tR\rlookupService\x12O\n" + + "\x16lookup_service_timeout\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\x14lookupServiceTimeout\x122\n" + + "\amax_age\x18\x05 \x01(\v2\x19.google.protobuf.DurationR\x06maxAge\x126\n" + + "\tstale_age\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\bstaleAge\x12(\n" + + "\x10cache_size_bytes\x18\a \x01(\x03R\x0ecacheSizeBytes\x12#\n" + + "\rvalid_targets\x18\b \x03(\tR\fvalidTargets\x12%\n" + + "\x0edefault_target\x18\t \x01(\tR\rdefaultTargetJ\x04\b\n" + + "\x10\vR\x1brequest_processing_strategy\"p\n" + + "\x1bRouteLookupClusterSpecifier\x12Q\n" + + "\x13route_lookup_config\x18\x01 \x01(\v2!.grpc.lookup.v1.RouteLookupConfigR\x11routeLookupConfigBS\n" + + "\x11io.grpc.lookup.v1B\x0eRlsConfigProtoP\x01Z,google.golang.org/grpc/lookup/grpc_lookup_v1b\x06proto3" var ( file_grpc_lookup_v1_rls_config_proto_rawDescOnce sync.Once diff --git a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_grpc.pb.go b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_grpc.pb.go index 23dcb2100..16611074c 100644 --- a/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_grpc.pb.go +++ b/vendor/google.golang.org/grpc/internal/proto/grpc_lookup_v1/rls_grpc.pb.go @@ -79,7 +79,7 @@ type RouteLookupServiceServer interface { type UnimplementedRouteLookupServiceServer struct{} func (UnimplementedRouteLookupServiceServer) RouteLookup(context.Context, *RouteLookupRequest) (*RouteLookupResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RouteLookup not implemented") + return nil, status.Error(codes.Unimplemented, "method RouteLookup not implemented") } func (UnimplementedRouteLookupServiceServer) mustEmbedUnimplementedRouteLookupServiceServer() {} func (UnimplementedRouteLookupServiceServer) testEmbeddedByValue() {} diff --git a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go index 7b93f692b..20b8fb098 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go +++ b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go @@ -28,6 +28,8 @@ import ( "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/proxyattributes" + "google.golang.org/grpc/internal/transport" + "google.golang.org/grpc/internal/transport/networktype" "google.golang.org/grpc/resolver" "google.golang.org/grpc/serviceconfig" ) @@ -40,7 +42,7 @@ var ( // delegatingResolver manages both target URI and proxy address resolution by // delegating these tasks to separate child resolvers. Essentially, it acts as -// a intermediary between the gRPC ClientConn and the child resolvers. +// an intermediary between the gRPC ClientConn and the child resolvers. // // It implements the [resolver.Resolver] interface. type delegatingResolver struct { @@ -48,6 +50,9 @@ type delegatingResolver struct { cc resolver.ClientConn // gRPC ClientConn proxyURL *url.URL // proxy URL, derived from proxy environment and target + // We do not hold both mu and childMu in the same goroutine. Avoid holding + // both locks when calling into the child, as the child resolver may + // synchronously callback into the channel. mu sync.Mutex // protects all the fields below targetResolverState *resolver.State // state of the target resolver proxyAddrs []resolver.Address // resolved proxy addresses; empty if no proxy is configured @@ -66,8 +71,8 @@ func (nopResolver) ResolveNow(resolver.ResolveNowOptions) {} func (nopResolver) Close() {} -// proxyURLForTarget determines the proxy URL for the given address based on -// the environment. It can return the following: +// proxyURLForTarget determines the proxy URL for the given address based on the +// environment. It can return the following: // - nil URL, nil error: No proxy is configured or the address is excluded // using the `NO_PROXY` environment variable or if req.URL.Host is // "localhost" (with or without // a port number) @@ -86,7 +91,8 @@ func proxyURLForTarget(address string) (*url.URL, error) { // resolvers: // - one to resolve the proxy address specified using the supported // environment variables. This uses the registered resolver for the "dns" -// scheme. +// scheme. It is lazily built when a target resolver update contains at least +// one TCP address. // - one to resolve the target URI using the resolver specified by the scheme // in the target URI or specified by the user using the WithResolvers dial // option. As a special case, if the target URI's scheme is "dns" and a @@ -95,8 +101,10 @@ func proxyURLForTarget(address string) (*url.URL, error) { // resolution is enabled using the dial option. func New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions, targetResolverBuilder resolver.Builder, targetResolutionEnabled bool) (resolver.Resolver, error) { r := &delegatingResolver{ - target: target, - cc: cc, + target: target, + cc: cc, + proxyResolver: nopResolver{}, + targetResolver: nopResolver{}, } var err error @@ -123,37 +131,26 @@ func New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOpti // resolution should be handled by the proxy, not the client. Therefore, we // bypass the target resolver and store the unresolved target address. if target.URL.Scheme == "dns" && !targetResolutionEnabled { - state := resolver.State{ + r.targetResolverState = &resolver.State{ Addresses: []resolver.Address{{Addr: target.Endpoint()}}, Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: target.Endpoint()}}}}, } - r.targetResolverState = &state - } else { - wcc := &wrappingClientConn{ - stateListener: r.updateTargetResolverState, - parent: r, - } - if r.targetResolver, err = targetResolverBuilder.Build(target, wcc, opts); err != nil { - return nil, fmt.Errorf("delegating_resolver: unable to build the resolver for target %s: %v", target, err) - } - } - - if r.proxyResolver, err = r.proxyURIResolver(opts); err != nil { - return nil, fmt.Errorf("delegating_resolver: failed to build resolver for proxy URL %q: %v", r.proxyURL, err) + r.updateTargetResolverState(*r.targetResolverState) + return r, nil } - - if r.targetResolver == nil { - r.targetResolver = nopResolver{} + wcc := &wrappingClientConn{ + stateListener: r.updateTargetResolverState, + parent: r, } - if r.proxyResolver == nil { - r.proxyResolver = nopResolver{} + if r.targetResolver, err = targetResolverBuilder.Build(target, wcc, opts); err != nil { + return nil, fmt.Errorf("delegating_resolver: unable to build the resolver for target %s: %v", target, err) } return r, nil } -// proxyURIResolver creates a resolver for resolving proxy URIs using the -// "dns" scheme. It adjusts the proxyURL to conform to the "dns:///" format and -// builds a resolver with a wrappingClientConn to capture resolved addresses. +// proxyURIResolver creates a resolver for resolving proxy URIs using the "dns" +// scheme. It adjusts the proxyURL to conform to the "dns:///" format and builds +// a resolver with a wrappingClientConn to capture resolved addresses. func (r *delegatingResolver) proxyURIResolver(opts resolver.BuildOptions) (resolver.Resolver, error) { proxyBuilder := resolver.Get("dns") if proxyBuilder == nil { @@ -189,18 +186,58 @@ func (r *delegatingResolver) Close() { r.proxyResolver = nil } -// updateClientConnStateLocked creates a list of combined addresses by -// pairing each proxy address with every target address. For each pair, it -// generates a new [resolver.Address] using the proxy address, and adding the -// target address as the attribute along with user info. It returns nil if -// either resolver has not sent update even once and returns the error from -// ClientConn update once both resolvers have sent update atleast once. +func needsProxyResolver(state *resolver.State) bool { + for _, addr := range state.Addresses { + if !skipProxy(addr) { + return true + } + } + for _, endpoint := range state.Endpoints { + for _, addr := range endpoint.Addresses { + if !skipProxy(addr) { + return true + } + } + } + return false +} + +func skipProxy(address resolver.Address) bool { + // Avoid proxy when network is not tcp. + networkType, ok := networktype.Get(address) + if !ok { + networkType, _ = transport.ParseDialTarget(address.Addr) + } + if networkType != "tcp" { + return true + } + + req := &http.Request{URL: &url.URL{ + Scheme: "https", + Host: address.Addr, + }} + // Avoid proxy when address included in `NO_PROXY` environment variable or + // fails to get the proxy address. + url, err := HTTPSProxyFromEnvironment(req) + if err != nil || url == nil { + return true + } + return false +} + +// updateClientConnStateLocked constructs a combined list of addresses by +// pairing each proxy address with every target address of type TCP. For each +// pair, it creates a new [resolver.Address] using the proxy address and +// attaches the corresponding target address and user info as attributes. Target +// addresses that are not of type TCP are appended to the list as-is. The +// function returns nil if either resolver has not yet provided an update, and +// returns the result of ClientConn.UpdateState once both resolvers have +// provided at least one update. func (r *delegatingResolver) updateClientConnStateLocked() error { if r.targetResolverState == nil || r.proxyAddrs == nil { return nil } - curState := *r.targetResolverState // If multiple resolved proxy addresses are present, we send only the // unresolved proxy host and let net.Dial handle the proxy host name // resolution when creating the transport. Sending all resolved addresses @@ -218,24 +255,29 @@ func (r *delegatingResolver) updateClientConnStateLocked() error { } var addresses []resolver.Address for _, targetAddr := range (*r.targetResolverState).Addresses { + if skipProxy(targetAddr) { + addresses = append(addresses, targetAddr) + continue + } addresses = append(addresses, proxyattributes.Set(proxyAddr, proxyattributes.Options{ User: r.proxyURL.User, ConnectAddr: targetAddr.Addr, })) } - // Create a list of combined endpoints by pairing all proxy endpoints - // with every target endpoint. Each time, it constructs a new - // [resolver.Endpoint] using the all addresses from all the proxy endpoint - // and the target addresses from one endpoint. The target address and user - // information from the proxy URL are added as attributes to the proxy - // address.The resulting list of addresses is then grouped into endpoints, - // covering all combinations of proxy and target endpoints. + // For each target endpoint, construct a new [resolver.Endpoint] that + // includes all addresses from all proxy endpoints and the addresses from + // that target endpoint, preserving the number of target endpoints. var endpoints []resolver.Endpoint for _, endpt := range (*r.targetResolverState).Endpoints { var addrs []resolver.Address - for _, proxyAddr := range r.proxyAddrs { - for _, targetAddr := range endpt.Addresses { + for _, targetAddr := range endpt.Addresses { + // Avoid proxy when network is not tcp. + if skipProxy(targetAddr) { + addrs = append(addrs, targetAddr) + continue + } + for _, proxyAddr := range r.proxyAddrs { addrs = append(addrs, proxyattributes.Set(proxyAddr, proxyattributes.Options{ User: r.proxyURL.User, ConnectAddr: targetAddr.Addr, @@ -246,8 +288,9 @@ func (r *delegatingResolver) updateClientConnStateLocked() error { } // Use the targetResolverState for its service config and attributes // contents. The state update is only sent after both the target and proxy - // resolvers have sent their updates, and curState has been updated with - // the combined addresses. + // resolvers have sent their updates, and curState has been updated with the + // combined addresses. + curState := *r.targetResolverState curState.Addresses = addresses curState.Endpoints = endpoints return r.cc.UpdateState(curState) @@ -257,7 +300,8 @@ func (r *delegatingResolver) updateClientConnStateLocked() error { // addresses and endpoints, marking the resolver as ready, and triggering a // state update if both proxy and target resolvers are ready. If the ClientConn // returns a non-nil error, it calls `ResolveNow()` on the target resolver. It -// is a StateListener function of wrappingClientConn passed to the proxy resolver. +// is a StateListener function of wrappingClientConn passed to the proxy +// resolver. func (r *delegatingResolver) updateProxyResolverState(state resolver.State) error { r.mu.Lock() defer r.mu.Unlock() @@ -265,8 +309,8 @@ func (r *delegatingResolver) updateProxyResolverState(state resolver.State) erro logger.Infof("Addresses received from proxy resolver: %s", state.Addresses) } if len(state.Endpoints) > 0 { - // We expect exactly one address per endpoint because the proxy - // resolver uses "dns" resolution. + // We expect exactly one address per endpoint because the proxy resolver + // uses "dns" resolution. r.proxyAddrs = make([]resolver.Address, 0, len(state.Endpoints)) for _, endpoint := range state.Endpoints { r.proxyAddrs = append(r.proxyAddrs, endpoint.Addresses...) @@ -294,11 +338,14 @@ func (r *delegatingResolver) updateProxyResolverState(state resolver.State) erro return err } -// updateTargetResolverState updates the target resolver state by storing target -// addresses, endpoints, and service config, marking the resolver as ready, and -// triggering a state update if both resolvers are ready. If the ClientConn -// returns a non-nil error, it calls `ResolveNow()` on the proxy resolver. It -// is a StateListener function of wrappingClientConn passed to the target resolver. +// updateTargetResolverState is the StateListener function provided to the +// target resolver via wrappingClientConn. It updates the resolver state and +// marks the target resolver as ready. If the update includes at least one TCP +// address and the proxy resolver has not yet been constructed, it initializes +// the proxy resolver. A combined state update is triggered once both resolvers +// are ready. If all addresses are non-TCP, it proceeds without waiting for the +// proxy resolver. If ClientConn.UpdateState returns a non-nil error, +// ResolveNow() is called on the proxy resolver. func (r *delegatingResolver) updateTargetResolverState(state resolver.State) error { r.mu.Lock() defer r.mu.Unlock() @@ -307,6 +354,32 @@ func (r *delegatingResolver) updateTargetResolverState(state resolver.State) err logger.Infof("Addresses received from target resolver: %v", state.Addresses) } r.targetResolverState = &state + // If all addresses returned by the target resolver have a non-TCP network + // type, or are listed in the `NO_PROXY` environment variable, do not wait + // for proxy update. + if !needsProxyResolver(r.targetResolverState) { + return r.cc.UpdateState(*r.targetResolverState) + } + + // The proxy resolver may be rebuilt multiple times, specifically each time + // the target resolver sends an update, even if the target resolver is built + // successfully but building the proxy resolver fails. + if len(r.proxyAddrs) == 0 { + go func() { + r.childMu.Lock() + defer r.childMu.Unlock() + if _, ok := r.proxyResolver.(nopResolver); !ok { + return + } + proxyResolver, err := r.proxyURIResolver(resolver.BuildOptions{}) + if err != nil { + r.cc.ReportError(fmt.Errorf("delegating_resolver: unable to build the proxy resolver: %v", err)) + return + } + r.proxyResolver = proxyResolver + }() + } + err := r.updateClientConnStateLocked() if err != nil { go func() { @@ -335,7 +408,8 @@ func (wcc *wrappingClientConn) UpdateState(state resolver.State) error { return wcc.stateListener(state) } -// ReportError intercepts errors from the child resolvers and passes them to ClientConn. +// ReportError intercepts errors from the child resolvers and passes them to +// ClientConn. func (wcc *wrappingClientConn) ReportError(err error) { wcc.parent.cc.ReportError(err) } @@ -346,8 +420,8 @@ func (wcc *wrappingClientConn) NewAddress(addrs []resolver.Address) { wcc.UpdateState(resolver.State{Addresses: addrs}) } -// ParseServiceConfig parses the provided service config and returns an -// object that provides the parsed config. +// ParseServiceConfig parses the provided service config and returns an object +// that provides the parsed config. func (wcc *wrappingClientConn) ParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult { return wcc.parent.cc.ParseServiceConfig(serviceConfigJSON) } diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/util.go b/vendor/google.golang.org/grpc/internal/ringhash/ringhash.go similarity index 64% rename from vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/util.go rename to vendor/google.golang.org/grpc/internal/ringhash/ringhash.go index 371c3c3e3..c75ac1ce6 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/ringhash/util.go +++ b/vendor/google.golang.org/grpc/internal/ringhash/ringhash.go @@ -1,6 +1,6 @@ /* * - * Copyright 2021 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,12 +16,28 @@ * */ +// Package ringhash (internal) contains functions and types that need to be +// shared by the ring hash balancer and other gRPC code (such as xDS) +// without being exported. package ringhash import ( "context" + + "google.golang.org/grpc/serviceconfig" ) +// LBConfig is the balancer config for ring_hash balancer. +type LBConfig struct { + serviceconfig.LoadBalancingConfig `json:"-"` + + MinRingSize uint64 `json:"minRingSize,omitempty"` + MaxRingSize uint64 `json:"maxRingSize,omitempty"` + RequestHashHeader string `json:"requestHashHeader,omitempty"` +} + +// xdsHashKey is the type used as the key to store request hash in the context +// used when combining the Ring Hash load balancing policy with xDS. type xdsHashKey struct{} // XDSRequestHash returns the request hash in the context and true if it was set diff --git a/vendor/google.golang.org/grpc/internal/status/status.go b/vendor/google.golang.org/grpc/internal/status/status.go index 1186f1e9a..aad171cd0 100644 --- a/vendor/google.golang.org/grpc/internal/status/status.go +++ b/vendor/google.golang.org/grpc/internal/status/status.go @@ -236,3 +236,11 @@ func IsRestrictedControlPlaneCode(s *Status) bool { } return false } + +// RawStatusProto returns the internal protobuf message for use by gRPC itself. +func RawStatusProto(s *Status) *spb.Status { + if s == nil { + return nil + } + return s.s +} diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index ef72fbb3a..a2831e5d0 100644 --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -40,6 +40,13 @@ var updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { e.SetMaxDynamicTableSizeLimit(v) } +// itemNodePool is used to reduce heap allocations. +var itemNodePool = sync.Pool{ + New: func() any { + return &itemNode{} + }, +} + type itemNode struct { it any next *itemNode @@ -51,7 +58,9 @@ type itemList struct { } func (il *itemList) enqueue(i any) { - n := &itemNode{it: i} + n := itemNodePool.Get().(*itemNode) + n.next = nil + n.it = i if il.tail == nil { il.head, il.tail = n, n return @@ -71,7 +80,9 @@ func (il *itemList) dequeue() any { return nil } i := il.head.it + temp := il.head il.head = il.head.next + itemNodePool.Put(temp) if il.head == nil { il.tail = nil } @@ -146,10 +157,11 @@ type earlyAbortStream struct { func (*earlyAbortStream) isTransportResponseFrame() bool { return false } type dataFrame struct { - streamID uint32 - endStream bool - h []byte - reader mem.Reader + streamID uint32 + endStream bool + h []byte + data mem.BufferSlice + processing bool // onEachWrite is called every time // a part of data is written out. onEachWrite func() @@ -234,6 +246,7 @@ type outStream struct { itl *itemList bytesOutStanding int wq *writeQuota + reader mem.Reader next *outStream prev *outStream @@ -461,7 +474,9 @@ func (c *controlBuffer) finish() { v.onOrphaned(ErrConnClosing) } case *dataFrame: - _ = v.reader.Close() + if !v.processing { + v.data.Free() + } } } @@ -650,10 +665,11 @@ func (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error { func (l *loopyWriter) registerStreamHandler(h *registerStream) { str := &outStream{ - id: h.streamID, - state: empty, - itl: &itemList{}, - wq: h.wq, + id: h.streamID, + state: empty, + itl: &itemList{}, + wq: h.wq, + reader: mem.BufferSlice{}.Reader(), } l.estdStreams[h.streamID] = str } @@ -685,10 +701,11 @@ func (l *loopyWriter) headerHandler(h *headerFrame) error { } // Case 2: Client wants to originate stream. str := &outStream{ - id: h.streamID, - state: empty, - itl: &itemList{}, - wq: h.wq, + id: h.streamID, + state: empty, + itl: &itemList{}, + wq: h.wq, + reader: mem.BufferSlice{}.Reader(), } return l.originateStream(str, h) } @@ -790,10 +807,13 @@ func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error { // a RST_STREAM before stream initialization thus the stream might // not be established yet. delete(l.estdStreams, c.streamID) + str.reader.Close() str.deleteSelf() for head := str.itl.dequeueAll(); head != nil; head = head.next { if df, ok := head.it.(*dataFrame); ok { - _ = df.reader.Close() + if !df.processing { + df.data.Free() + } } } } @@ -928,7 +948,13 @@ func (l *loopyWriter) processData() (bool, error) { if str == nil { return true, nil } + reader := str.reader dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream. + if !dataItem.processing { + dataItem.processing = true + str.reader.Reset(dataItem.data) + dataItem.data.Free() + } // A data item is represented by a dataFrame, since it later translates into // multiple HTTP2 data frames. // Every dataFrame has two buffers; h that keeps grpc-message header and data @@ -936,13 +962,13 @@ func (l *loopyWriter) processData() (bool, error) { // from data is copied to h to make as big as the maximum possible HTTP2 frame // size. - if len(dataItem.h) == 0 && dataItem.reader.Remaining() == 0 { // Empty data frame + if len(dataItem.h) == 0 && reader.Remaining() == 0 { // Empty data frame // Client sends out empty data frame with endStream = true if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil { return false, err } str.itl.dequeue() // remove the empty data item from stream - _ = dataItem.reader.Close() + _ = reader.Close() if str.itl.isEmpty() { str.state = empty } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers. @@ -971,8 +997,8 @@ func (l *loopyWriter) processData() (bool, error) { } // Compute how much of the header and data we can send within quota and max frame length hSize := min(maxSize, len(dataItem.h)) - dSize := min(maxSize-hSize, dataItem.reader.Remaining()) - remainingBytes := len(dataItem.h) + dataItem.reader.Remaining() - hSize - dSize + dSize := min(maxSize-hSize, reader.Remaining()) + remainingBytes := len(dataItem.h) + reader.Remaining() - hSize - dSize size := hSize + dSize var buf *[]byte @@ -993,7 +1019,7 @@ func (l *loopyWriter) processData() (bool, error) { defer pool.Put(buf) copy((*buf)[:hSize], dataItem.h) - _, _ = dataItem.reader.Read((*buf)[hSize:]) + _, _ = reader.Read((*buf)[hSize:]) } // Now that outgoing flow controls are checked we can replenish str's write quota @@ -1014,7 +1040,7 @@ func (l *loopyWriter) processData() (bool, error) { dataItem.h = dataItem.h[hSize:] if remainingBytes == 0 { // All the data from that message was written out. - _ = dataItem.reader.Close() + _ = reader.Close() str.itl.dequeue() } if str.itl.isEmpty() { diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index ae9316662..5467fe971 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -176,7 +176,7 @@ func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error return fn(ctx, address) } if !ok { - networkType, address = parseDialTarget(address) + networkType, address = ParseDialTarget(address) } if opts, present := proxyattributes.Get(addr); present { return proxyDial(ctx, addr, grpcUA, opts) @@ -309,11 +309,9 @@ func NewHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts scheme = "https" } } - dynamicWindow := true icwz := int32(initialWindowSize) if opts.InitialConnWindowSize >= defaultWindowSize { icwz = opts.InitialConnWindowSize - dynamicWindow = false } writeBufSize := opts.WriteBufferSize readBufSize := opts.ReadBufferSize @@ -381,9 +379,8 @@ func NewHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts t.controlBuf = newControlBuffer(t.ctxDone) if opts.InitialWindowSize >= defaultWindowSize { t.initialWindowSize = opts.InitialWindowSize - dynamicWindow = false } - if dynamicWindow { + if !opts.StaticWindowSize { t.bdpEst = &bdpEstimator{ bdp: initialWindowSize, updateFlowControl: t.updateFlowControl, @@ -545,7 +542,7 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) Method: callHdr.Method, AuthInfo: t.authInfo, } - ctxWithRequestInfo := icredentials.NewRequestInfoContext(ctx, ri) + ctxWithRequestInfo := credentials.NewContextWithRequestInfo(ctx, ri) authData, err := t.getTrAuthData(ctxWithRequestInfo, aud) if err != nil { return nil, err @@ -592,6 +589,9 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) // Send out timeout regardless its value. The server can detect timeout context by itself. // TODO(mmukhi): Perhaps this field should be updated when actually writing out to the wire. timeout := time.Until(dl) + if timeout <= 0 { + return nil, status.Error(codes.DeadlineExceeded, context.DeadlineExceeded.Error()) + } headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-timeout", Value: grpcutil.EncodeDuration(timeout)}) } for k, v := range authData { @@ -749,6 +749,25 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*ClientS callHdr = &newCallHdr } + // The authority specified via the `CallAuthority` CallOption takes the + // highest precedence when determining the `:authority` header. It overrides + // any value present in the Host field of CallHdr. Before applying this + // override, the authority string is validated. If the credentials do not + // implement the AuthorityValidator interface, or if validation fails, the + // RPC is failed with a status code of `UNAVAILABLE`. + if callHdr.Authority != "" { + auth, ok := t.authInfo.(credentials.AuthorityValidator) + if !ok { + return nil, &NewStreamError{Err: status.Errorf(codes.Unavailable, "credentials type %q does not implement the AuthorityValidator interface, but authority override specified with CallAuthority call option", t.authInfo.AuthType())} + } + if err := auth.ValidateAuthority(callHdr.Authority); err != nil { + return nil, &NewStreamError{Err: status.Errorf(codes.Unavailable, "failed to validate authority %q : %v", callHdr.Authority, err)} + } + newCallHdr := *callHdr + newCallHdr.Host = callHdr.Authority + callHdr = &newCallHdr + } + headerFields, err := t.createHeaderFields(ctx, callHdr) if err != nil { return nil, &NewStreamError{Err: err, AllowTransparentRetry: false} @@ -1069,32 +1088,29 @@ func (t *http2Client) GracefulClose() { // Write formats the data into HTTP2 data frame(s) and sends it out. The caller // should proceed only if Write returns nil. func (t *http2Client) write(s *ClientStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error { - reader := data.Reader() - if opts.Last { // If it's the last message, update stream state. if !s.compareAndSwapState(streamActive, streamWriteDone) { - _ = reader.Close() return errStreamDone } } else if s.getState() != streamActive { - _ = reader.Close() return errStreamDone } df := &dataFrame{ streamID: s.id, endStream: opts.Last, h: hdr, - reader: reader, + data: data, } - if hdr != nil || df.reader.Remaining() != 0 { // If it's not an empty data frame, check quota. - if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil { - _ = reader.Close() + dataLen := data.Len() + if hdr != nil || dataLen != 0 { // If it's not an empty data frame, check quota. + if err := s.wq.get(int32(len(hdr) + dataLen)); err != nil { return err } } + data.Ref() if err := t.controlBuf.put(df); err != nil { - _ = reader.Close() + data.Free() return err } t.incrMsgSent() @@ -1242,7 +1258,8 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { statusCode = codes.DeadlineExceeded } } - t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode), nil, false) + st := status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode) + t.closeStream(s, st.Err(), false, http2.ErrCodeNo, st, nil, false) } func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index 7e53eb173..9f725e15a 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -39,6 +39,7 @@ import ( "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/grpcutil" "google.golang.org/grpc/internal/pretty" + istatus "google.golang.org/grpc/internal/status" "google.golang.org/grpc/internal/syscall" "google.golang.org/grpc/mem" "google.golang.org/protobuf/proto" @@ -131,6 +132,10 @@ type http2Server struct { maxStreamID uint32 // max stream ID ever seen logger *grpclog.PrefixLogger + // setResetPingStrikes is stored as a closure instead of making this a + // method on http2Server to avoid a heap allocation when converting a method + // to a closure for passing to frames objects. + setResetPingStrikes func() } // NewServerTransport creates a http2 transport with conn and configuration @@ -175,16 +180,13 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, Val: config.MaxStreams, }) } - dynamicWindow := true iwz := int32(initialWindowSize) if config.InitialWindowSize >= defaultWindowSize { iwz = config.InitialWindowSize - dynamicWindow = false } icwz := int32(initialWindowSize) if config.InitialConnWindowSize >= defaultWindowSize { icwz = config.InitialConnWindowSize - dynamicWindow = false } if iwz != defaultWindowSize { isettings = append(isettings, http2.Setting{ @@ -265,6 +267,9 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, initialWindowSize: iwz, bufferPool: config.BufferPool, } + t.setResetPingStrikes = func() { + atomic.StoreUint32(&t.resetPingStrikes, 1) + } var czSecurity credentials.ChannelzSecurityValue if au, ok := authInfo.(credentials.ChannelzSecurityInfo); ok { czSecurity = au.GetSecurityValue() @@ -284,7 +289,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, t.logger = prefixLoggerForServerTransport(t) t.controlBuf = newControlBuffer(t.done) - if dynamicWindow { + if !config.StaticWindowSize { t.bdpEst = &bdpEstimator{ bdp: initialWindowSize, updateFlowControl: t.updateFlowControl, @@ -595,10 +600,25 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade return nil } } + + if s.ctx.Err() != nil { + t.mu.Unlock() + // Early abort in case the timeout was zero or so low it already fired. + t.controlBuf.put(&earlyAbortStream{ + httpStatus: http.StatusOK, + streamID: s.id, + contentSubtype: s.contentSubtype, + status: status.New(codes.DeadlineExceeded, context.DeadlineExceeded.Error()), + rst: !frame.StreamEnded(), + }) + return nil + } + t.activeStreams[streamID] = s if len(t.activeStreams) == 1 { t.idle = time.Time{} } + // Start a timer to close the stream on reaching the deadline. if timeoutSet { // We need to wait for s.cancel to be updated before calling @@ -1015,10 +1035,6 @@ func (t *http2Server) writeHeader(s *ServerStream, md metadata.MD) error { return nil } -func (t *http2Server) setResetPingStrikes() { - atomic.StoreUint32(&t.resetPingStrikes, 1) -} - func (t *http2Server) writeHeaderLocked(s *ServerStream) error { // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields // first and create a slice of that exact size. @@ -1055,7 +1071,7 @@ func (t *http2Server) writeHeaderLocked(s *ServerStream) error { return nil } -// WriteStatus sends stream status to the client and terminates the stream. +// writeStatus sends stream status to the client and terminates the stream. // There is no further I/O operations being able to perform on this stream. // TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early // OK is adopted. @@ -1083,7 +1099,7 @@ func (t *http2Server) writeStatus(s *ServerStream, st *status.Status) error { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status", Value: strconv.Itoa(int(st.Code()))}) headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-message", Value: encodeGrpcMessage(st.Message())}) - if p := st.Proto(); p != nil && len(p.Details) > 0 { + if p := istatus.RawStatusProto(st); len(p.GetDetails()) > 0 { // Do not use the user's grpc-status-details-bin (if present) if we are // even attempting to set our own. delete(s.trailer, grpcStatusDetailsBinHeader) @@ -1131,17 +1147,13 @@ func (t *http2Server) writeStatus(s *ServerStream, st *status.Status) error { // Write converts the data into HTTP2 data frame and sends it out. Non-nil error // is returns if it fails (e.g., framing error, transport error). func (t *http2Server) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ *WriteOptions) error { - reader := data.Reader() - if !s.isHeaderSent() { // Headers haven't been written yet. if err := t.writeHeader(s, nil); err != nil { - _ = reader.Close() return err } } else { // Writing headers checks for this condition. if s.getState() == streamDone { - _ = reader.Close() return t.streamContextErr(s) } } @@ -1149,15 +1161,16 @@ func (t *http2Server) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ df := &dataFrame{ streamID: s.id, h: hdr, - reader: reader, + data: data, onEachWrite: t.setResetPingStrikes, } - if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil { - _ = reader.Close() + dataLen := data.Len() + if err := s.wq.get(int32(len(hdr) + dataLen)); err != nil { return t.streamContextErr(s) } + data.Ref() if err := t.controlBuf.put(df); err != nil { - _ = reader.Close() + data.Free() return err } t.incrMsgSent() diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go index 3613d7b64..e3663f87f 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -196,11 +196,11 @@ func decodeTimeout(s string) (time.Duration, error) { if !ok { return 0, fmt.Errorf("transport: timeout unit is not recognized: %q", s) } - t, err := strconv.ParseInt(s[:size-1], 10, 64) + t, err := strconv.ParseUint(s[:size-1], 10, 64) if err != nil { return 0, err } - const maxHours = math.MaxInt64 / int64(time.Hour) + const maxHours = math.MaxInt64 / uint64(time.Hour) if d == time.Hour && t > maxHours { // This timeout would overflow math.MaxInt64; clamp it. return time.Duration(math.MaxInt64), nil @@ -439,8 +439,8 @@ func getWriteBufferPool(size int) *sync.Pool { return pool } -// parseDialTarget returns the network and address to pass to dialer. -func parseDialTarget(target string) (string, string) { +// ParseDialTarget returns the network and address to pass to dialer. +func ParseDialTarget(target string) (string, string) { net := "tcp" m1 := strings.Index(target, ":") m2 := strings.Index(target, ":/") diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index af4a4aeab..7dd53e80a 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -466,6 +466,7 @@ type ServerConfig struct { MaxHeaderListSize *uint32 HeaderTableSize *uint32 BufferPool mem.BufferPool + StaticWindowSize bool } // ConnectOptions covers all relevant options for communicating with the server. @@ -504,6 +505,8 @@ type ConnectOptions struct { MaxHeaderListSize *uint32 // The mem.BufferPool to use when reading/writing to the wire. BufferPool mem.BufferPool + // StaticWindowSize controls whether dynamic window sizing is enabled. + StaticWindowSize bool } // WriteOptions provides additional hints and information for message @@ -540,6 +543,11 @@ type CallHdr struct { PreviousAttempts int // value of grpc-previous-rpc-attempts header to set DoneFunc func() // called when the stream is finished + + // Authority is used to explicitly override the `:authority` header. If set, + // this value takes precedence over the Host field and will be used as the + // value for the `:authority` header. + Authority string } // ClientTransport is the common interface for all gRPC client-side transport diff --git a/vendor/google.golang.org/grpc/internal/xds/bootstrap/bootstrap.go b/vendor/google.golang.org/grpc/internal/xds/bootstrap/bootstrap.go index 69b7ee80d..6c7b2332f 100644 --- a/vendor/google.golang.org/grpc/internal/xds/bootstrap/bootstrap.go +++ b/vendor/google.golang.org/grpc/internal/xds/bootstrap/bootstrap.go @@ -206,7 +206,7 @@ func (sc *ServerConfig) ServerFeatures() []string { // // This feature controls the behavior of the xDS client when the server deletes // a previously sent Listener or Cluster resource. If set, the xDS client will -// not invoke the watchers' OnResourceDoesNotExist() method when a resource is +// not invoke the watchers' ResourceError() method when a resource is // deleted, nor will it remove the existing resource value from its cache. func (sc *ServerConfig) ServerFeaturesIgnoreResourceDeletion() bool { for _, sf := range sc.serverFeatures { @@ -217,10 +217,16 @@ func (sc *ServerConfig) ServerFeaturesIgnoreResourceDeletion() bool { return false } +// SelectedCreds returns the selected credentials configuration for +// communicating with this server. +func (sc *ServerConfig) SelectedCreds() ChannelCreds { + return sc.selectedCreds +} + // DialOptions returns a slice of all the configured dial options for this -// server. +// server except grpc.WithCredentialsBundle(). func (sc *ServerConfig) DialOptions() []grpc.DialOption { - dopts := []grpc.DialOption{sc.credsDialOption} + var dopts []grpc.DialOption if sc.extraDialOptions != nil { dopts = append(dopts, sc.extraDialOptions...) } @@ -570,6 +576,9 @@ func (c *Config) UnmarshalJSON(data []byte) error { // the presence of the errors) and may return a Config object with certain // fields left unspecified, in which case the caller should use some sane // defaults. +// +// This function returns an error if it's unable to parse the contents of the +// bootstrap config. It returns (nil, nil) if none of the env vars are set. func GetConfiguration() (*Config, error) { fName := envconfig.XDSBootstrapFileName fContent := envconfig.XDSBootstrapFileContent @@ -592,7 +601,7 @@ func GetConfiguration() (*Config, error) { return NewConfigFromContents([]byte(fContent)) } - return nil, fmt.Errorf("bootstrap environment variables (%q or %q) not defined", envconfig.XDSBootstrapFileNameEnv, envconfig.XDSBootstrapFileContentEnv) + return nil, nil } // NewConfigFromContents creates a new bootstrap configuration from the provided diff --git a/vendor/google.golang.org/grpc/internal/xds/bootstrap/tlscreds/bundle.go b/vendor/google.golang.org/grpc/internal/xds/bootstrap/tlscreds/bundle.go index ed90720b5..dda233137 100644 --- a/vendor/google.golang.org/grpc/internal/xds/bootstrap/tlscreds/bundle.go +++ b/vendor/google.golang.org/grpc/internal/xds/bootstrap/tlscreds/bundle.go @@ -23,15 +23,20 @@ package tlscreds import ( "context" "crypto/tls" + "crypto/x509" "encoding/json" "errors" "fmt" "net" "sync" + "time" + "github.com/spiffe/go-spiffe/v2/bundle/spiffebundle" "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/tls/certprovider" "google.golang.org/grpc/credentials/tls/certprovider/pemfile" + "google.golang.org/grpc/internal/credentials/spiffe" + "google.golang.org/grpc/internal/envconfig" ) // bundle is an implementation of credentials.Bundle which implements mTLS @@ -48,9 +53,10 @@ type bundle struct { // See gRFC A65: github.com/grpc/proposal/blob/master/A65-xds-mtls-creds-in-bootstrap.md func NewBundle(jd json.RawMessage) (credentials.Bundle, func(), error) { cfg := &struct { - CertificateFile string `json:"certificate_file"` - CACertificateFile string `json:"ca_certificate_file"` - PrivateKeyFile string `json:"private_key_file"` + CertificateFile string `json:"certificate_file"` + CACertificateFile string `json:"ca_certificate_file"` + PrivateKeyFile string `json:"private_key_file"` + SPIFFETrustBundleMapFile string `json:"spiffe_trust_bundle_map_file"` }{} if jd != nil { @@ -59,7 +65,10 @@ func NewBundle(jd json.RawMessage) (credentials.Bundle, func(), error) { } } // Else the config field is absent. Treat it as an empty config. - if cfg.CACertificateFile == "" && cfg.CertificateFile == "" && cfg.PrivateKeyFile == "" { + if !envconfig.XDSSPIFFEEnabled { + cfg.SPIFFETrustBundleMapFile = "" + } + if cfg.CACertificateFile == "" && cfg.CertificateFile == "" && cfg.PrivateKeyFile == "" && cfg.SPIFFETrustBundleMapFile == "" { // We cannot use (and do not need) a file_watcher provider in this case, // and can simply directly use the TLS transport credentials. // Quoting A65: @@ -69,6 +78,8 @@ func NewBundle(jd json.RawMessage) (credentials.Bundle, func(), error) { // > provider, at least one of the "certificate_file" or // > "ca_certificate_file" fields must be specified, whereas in this // > configuration, it is acceptable to specify neither one. + // Further, with the introduction of SPIFFE Trust Map support, we also + // check for this value. return &bundle{transportCredentials: credentials.NewTLS(&tls.Config{})}, func() {}, nil } // Otherwise we need to use a file_watcher provider to watch the CA, @@ -114,9 +125,18 @@ func (c *reloadingCreds) ClientHandshake(ctx context.Context, authority string, if err != nil { return nil, nil, err } - config := &tls.Config{ - RootCAs: km.Roots, - Certificates: km.Certs, + var config *tls.Config + if km.SPIFFEBundleMap != nil { + config = &tls.Config{ + InsecureSkipVerify: true, + VerifyPeerCertificate: buildSPIFFEVerifyFunc(km.SPIFFEBundleMap), + Certificates: km.Certs, + } + } else { + config = &tls.Config{ + RootCAs: km.Roots, + Certificates: km.Certs, + } } return credentials.NewTLS(config).ClientHandshake(ctx, authority, rawConn) } @@ -136,3 +156,39 @@ func (c *reloadingCreds) OverrideServerName(string) error { func (c *reloadingCreds) ServerHandshake(net.Conn) (net.Conn, credentials.AuthInfo, error) { return nil, nil, errors.New("server handshake is not supported by xDS client TLS credentials") } + +func buildSPIFFEVerifyFunc(spiffeBundleMap map[string]*spiffebundle.Bundle) func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error { + return func(rawCerts [][]byte, _ [][]*x509.Certificate) error { + rawCertList := make([]*x509.Certificate, len(rawCerts)) + for i, asn1Data := range rawCerts { + cert, err := x509.ParseCertificate(asn1Data) + if err != nil { + return fmt.Errorf("spiffe: verify function could not parse input certificate: %v", err) + } + rawCertList[i] = cert + } + if len(rawCertList) == 0 { + return fmt.Errorf("spiffe: verify function has no valid input certificates") + } + leafCert := rawCertList[0] + roots, err := spiffe.GetRootsFromSPIFFEBundleMap(spiffeBundleMap, leafCert) + if err != nil { + return err + } + + opts := x509.VerifyOptions{ + Roots: roots, + CurrentTime: time.Now(), + Intermediates: x509.NewCertPool(), + } + + for _, cert := range rawCertList[1:] { + opts.Intermediates.AddCert(cert) + } + // The verified chain is (surprisingly) unused. + if _, err = rawCertList[0].Verify(opts); err != nil { + return fmt.Errorf("spiffe: x509 certificate Verify failed: %v", err) + } + return nil + } +} diff --git a/vendor/google.golang.org/grpc/mem/buffer_slice.go b/vendor/google.golang.org/grpc/mem/buffer_slice.go index 65002e2cc..af510d20c 100644 --- a/vendor/google.golang.org/grpc/mem/buffer_slice.go +++ b/vendor/google.golang.org/grpc/mem/buffer_slice.go @@ -137,6 +137,9 @@ type Reader interface { Close() error // Remaining returns the number of unread bytes remaining in the slice. Remaining() int + // Reset frees the currently held buffer slice and starts reading from the + // provided slice. This allows reusing the reader object. + Reset(s BufferSlice) } type sliceReader struct { @@ -150,6 +153,14 @@ func (r *sliceReader) Remaining() int { return r.len } +func (r *sliceReader) Reset(s BufferSlice) { + r.data.Free() + s.Ref() + r.data = s + r.len = s.Len() + r.bufferIdx = 0 +} + func (r *sliceReader) Close() error { r.data.Free() r.data = nil diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index ad20e9dff..47ea09f5c 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -160,6 +160,7 @@ type callInfo struct { codec baseCodec maxRetryRPCBufferSize int onFinish []func(err error) + authority string } func defaultCallInfo() *callInfo { @@ -365,6 +366,36 @@ func (o MaxRecvMsgSizeCallOption) before(c *callInfo) error { } func (o MaxRecvMsgSizeCallOption) after(*callInfo, *csAttempt) {} +// CallAuthority returns a CallOption that sets the HTTP/2 :authority header of +// an RPC to the specified value. When using CallAuthority, the credentials in +// use must implement the AuthorityValidator interface. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a later +// release. +func CallAuthority(authority string) CallOption { + return AuthorityOverrideCallOption{Authority: authority} +} + +// AuthorityOverrideCallOption is a CallOption that indicates the HTTP/2 +// :authority header value to use for the call. +// +// # Experimental +// +// Notice: This type is EXPERIMENTAL and may be changed or removed in a later +// release. +type AuthorityOverrideCallOption struct { + Authority string +} + +func (o AuthorityOverrideCallOption) before(c *callInfo) error { + c.authority = o.Authority + return nil +} + +func (o AuthorityOverrideCallOption) after(*callInfo, *csAttempt) {} + // MaxCallSendMsgSize returns a CallOption which sets the maximum message size // in bytes the client can send. If this is not set, gRPC uses the default // `math.MaxInt32`. diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index 976e70ae0..70fe23f55 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -179,6 +179,7 @@ type serverOptions struct { numServerWorkers uint32 bufferPool mem.BufferPool waitForHandlers bool + staticWindowSize bool } var defaultServerOptions = serverOptions{ @@ -279,6 +280,7 @@ func ReadBufferSize(s int) ServerOption { func InitialWindowSize(s int32) ServerOption { return newFuncServerOption(func(o *serverOptions) { o.initialWindowSize = s + o.staticWindowSize = true }) } @@ -287,6 +289,29 @@ func InitialWindowSize(s int32) ServerOption { func InitialConnWindowSize(s int32) ServerOption { return newFuncServerOption(func(o *serverOptions) { o.initialConnWindowSize = s + o.staticWindowSize = true + }) +} + +// StaticStreamWindowSize returns a ServerOption to set the initial stream +// window size to the value provided and disables dynamic flow control. +// The lower bound for window size is 64K and any value smaller than that +// will be ignored. +func StaticStreamWindowSize(s int32) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.initialWindowSize = s + o.staticWindowSize = true + }) +} + +// StaticConnWindowSize returns a ServerOption to set the initial connection +// window size to the value provided and disables dynamic flow control. +// The lower bound for window size is 64K and any value smaller than that +// will be ignored. +func StaticConnWindowSize(s int32) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.initialConnWindowSize = s + o.staticWindowSize = true }) } @@ -986,6 +1011,7 @@ func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { MaxHeaderListSize: s.opts.maxHeaderListSize, HeaderTableSize: s.opts.headerTableSize, BufferPool: s.opts.bufferPool, + StaticWindowSize: s.opts.staticWindowSize, } st, err := transport.NewServerTransport(c, config) if err != nil { diff --git a/vendor/google.golang.org/grpc/stats/handlers.go b/vendor/google.golang.org/grpc/stats/handlers.go index dc03731e4..67194a592 100644 --- a/vendor/google.golang.org/grpc/stats/handlers.go +++ b/vendor/google.golang.org/grpc/stats/handlers.go @@ -38,6 +38,15 @@ type RPCTagInfo struct { // FailFast indicates if this RPC is failfast. // This field is only valid on client side, it's always false on server side. FailFast bool + // NameResolutionDelay indicates if the RPC needed to wait for the + // initial name resolver update before it could begin. This should only + // happen if the channel is IDLE when the RPC is started. Note that + // all retry or hedging attempts for an RPC that experienced a delay + // will have it set. + // + // This field is only valid on the client side; it is always false on + // the server side. + NameResolutionDelay bool } // Handler defines the interface for the related stats handling (e.g., RPCs, connections). diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/client_metrics.go b/vendor/google.golang.org/grpc/stats/opentelemetry/client_metrics.go index 4fffba60f..7422bebd4 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/client_metrics.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/client_metrics.go @@ -21,27 +21,23 @@ import ( "sync/atomic" "time" - otelcodes "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/trace" + otelattribute "go.opentelemetry.io/otel/attribute" + otelmetric "go.opentelemetry.io/otel/metric" "google.golang.org/grpc" - grpccodes "google.golang.org/grpc/codes" estats "google.golang.org/grpc/experimental/stats" istats "google.golang.org/grpc/internal/stats" "google.golang.org/grpc/metadata" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - - otelattribute "go.opentelemetry.io/otel/attribute" - otelmetric "go.opentelemetry.io/otel/metric" ) -type clientStatsHandler struct { +type clientMetricsHandler struct { estats.MetricsRecorder options Options clientMetrics clientMetrics } -func (h *clientStatsHandler) initializeMetrics() { +func (h *clientMetricsHandler) initializeMetrics() { // Will set no metrics to record, logically making this stats handler a // no-op. if h.options.MetricsOptions.MeterProvider == nil { @@ -71,12 +67,25 @@ func (h *clientStatsHandler) initializeMetrics() { rm.registerMetrics(metrics, meter) } -func (h *clientStatsHandler) unaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { - ci := &callInfo{ - target: cc.CanonicalTarget(), - method: h.determineMethod(method, opts...), +// getOrCreateCallInfo returns the existing callInfo from context if present, +// or creates and attaches a new one. +func getOrCreateCallInfo(ctx context.Context, cc *grpc.ClientConn, method string, opts ...grpc.CallOption) (context.Context, *callInfo) { + ci := getCallInfo(ctx) + if ci == nil { + if logger.V(2) { + logger.Info("Creating new CallInfo since its not present in context") + } + ci = &callInfo{ + target: cc.CanonicalTarget(), + method: determineMethod(method, opts...), + } + ctx = setCallInfo(ctx, ci) } - ctx = setCallInfo(ctx, ci) + return ctx, ci +} + +func (h *clientMetricsHandler) unaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { + ctx, ci := getOrCreateCallInfo(ctx, cc, method, opts...) if h.options.MetricsOptions.pluginOption != nil { md := h.options.MetricsOptions.pluginOption.GetMetadata() @@ -88,19 +97,15 @@ func (h *clientStatsHandler) unaryInterceptor(ctx context.Context, method string } startTime := time.Now() - var span trace.Span - if h.options.isTracingEnabled() { - ctx, span = h.createCallTraceSpan(ctx, method) - } err := invoker(ctx, method, req, reply, cc, opts...) - h.perCallTracesAndMetrics(ctx, err, startTime, ci, span) + h.perCallMetrics(ctx, err, startTime, ci) return err } // determineMethod determines the method to record attributes with. This will be // "other" if StaticMethod isn't specified or if method filter is set and // specifies, the method name as is otherwise. -func (h *clientStatsHandler) determineMethod(method string, opts ...grpc.CallOption) string { +func determineMethod(method string, opts ...grpc.CallOption) string { for _, opt := range opts { if _, ok := opt.(grpc.StaticMethodCallOption); ok { return removeLeadingSlash(method) @@ -109,12 +114,8 @@ func (h *clientStatsHandler) determineMethod(method string, opts ...grpc.CallOpt return "other" } -func (h *clientStatsHandler) streamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { - ci := &callInfo{ - target: cc.CanonicalTarget(), - method: h.determineMethod(method, opts...), - } - ctx = setCallInfo(ctx, ci) +func (h *clientMetricsHandler) streamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { + ctx, ci := getOrCreateCallInfo(ctx, cc, method, opts...) if h.options.MetricsOptions.pluginOption != nil { md := h.options.MetricsOptions.pluginOption.GetMetadata() @@ -126,49 +127,45 @@ func (h *clientStatsHandler) streamInterceptor(ctx context.Context, desc *grpc.S } startTime := time.Now() - var span trace.Span - if h.options.isTracingEnabled() { - ctx, span = h.createCallTraceSpan(ctx, method) - } callback := func(err error) { - h.perCallTracesAndMetrics(ctx, err, startTime, ci, span) + h.perCallMetrics(ctx, err, startTime, ci) } opts = append([]grpc.CallOption{grpc.OnFinish(callback)}, opts...) return streamer(ctx, desc, cc, method, opts...) } -// perCallTracesAndMetrics records per call trace spans and metrics. -func (h *clientStatsHandler) perCallTracesAndMetrics(ctx context.Context, err error, startTime time.Time, ci *callInfo, ts trace.Span) { - if h.options.isTracingEnabled() { - s := status.Convert(err) - if s.Code() == grpccodes.OK { - ts.SetStatus(otelcodes.Ok, s.Message()) - } else { - ts.SetStatus(otelcodes.Error, s.Message()) - } - ts.End() - } - if h.options.isMetricsEnabled() { - callLatency := float64(time.Since(startTime)) / float64(time.Second) - attrs := otelmetric.WithAttributeSet(otelattribute.NewSet( - otelattribute.String("grpc.method", ci.method), - otelattribute.String("grpc.target", ci.target), - otelattribute.String("grpc.status", canonicalString(status.Code(err))), - )) - h.clientMetrics.callDuration.Record(ctx, callLatency, attrs) - } +// perCallMetrics records per call metrics for both unary and stream calls. +func (h *clientMetricsHandler) perCallMetrics(ctx context.Context, err error, startTime time.Time, ci *callInfo) { + callLatency := float64(time.Since(startTime)) / float64(time.Second) + attrs := otelmetric.WithAttributeSet(otelattribute.NewSet( + otelattribute.String("grpc.method", ci.method), + otelattribute.String("grpc.target", ci.target), + otelattribute.String("grpc.status", canonicalString(status.Code(err))), + )) + h.clientMetrics.callDuration.Record(ctx, callLatency, attrs) } // TagConn exists to satisfy stats.Handler. -func (h *clientStatsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { +func (h *clientMetricsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { return ctx } // HandleConn exists to satisfy stats.Handler. -func (h *clientStatsHandler) HandleConn(context.Context, stats.ConnStats) {} +func (h *clientMetricsHandler) HandleConn(context.Context, stats.ConnStats) {} + +// getOrCreateRPCAttemptInfo retrieves or creates an rpc attemptInfo object +// and ensures it is set in the context along with the rpcInfo. +func getOrCreateRPCAttemptInfo(ctx context.Context) (context.Context, *attemptInfo) { + ri := getRPCInfo(ctx) + if ri != nil { + return ctx, ri.ai + } + ri = &rpcInfo{ai: &attemptInfo{}} + return setRPCInfo(ctx, ri), ri.ai +} -// TagRPC implements per RPC attempt context management. -func (h *clientStatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { +// TagRPC implements per RPC attempt context management for metrics. +func (h *clientMetricsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { // Numerous stats handlers can be used for the same channel. The cluster // impl balancer which writes to this will only write once, thus have this // stats handler's per attempt scoped context point to the same optional @@ -185,34 +182,25 @@ func (h *clientStatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) } ctx = istats.SetLabels(ctx, labels) } - ai := &attemptInfo{ - startTime: time.Now(), - xdsLabels: labels.TelemetryLabels, - method: removeLeadingSlash(info.FullMethodName), - } - if h.options.isTracingEnabled() { - ctx, ai = h.traceTagRPC(ctx, ai) - } - return setRPCInfo(ctx, &rpcInfo{ - ai: ai, - }) + ctx, ai := getOrCreateRPCAttemptInfo(ctx) + ai.startTime = time.Now() + ai.xdsLabels = labels.TelemetryLabels + ai.method = removeLeadingSlash(info.FullMethodName) + + return setRPCInfo(ctx, &rpcInfo{ai: ai}) } -func (h *clientStatsHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { +// HandleRPC handles per RPC stats implementation. +func (h *clientMetricsHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { ri := getRPCInfo(ctx) if ri == nil { logger.Error("ctx passed into client side stats handler metrics event handling has no client attempt data present") return } - if h.options.isMetricsEnabled() { - h.processRPCEvent(ctx, rs, ri.ai) - } - if h.options.isTracingEnabled() { - populateSpan(rs, ri.ai) - } + h.processRPCEvent(ctx, rs, ri.ai) } -func (h *clientStatsHandler) processRPCEvent(ctx context.Context, s stats.RPCStats, ai *attemptInfo) { +func (h *clientMetricsHandler) processRPCEvent(ctx context.Context, s stats.RPCStats, ai *attemptInfo) { switch st := s.(type) { case *stats.Begin: ci := getCallInfo(ctx) @@ -240,7 +228,7 @@ func (h *clientStatsHandler) processRPCEvent(ctx context.Context, s stats.RPCSta } } -func (h *clientStatsHandler) setLabelsFromPluginOption(ai *attemptInfo, incomingMetadata metadata.MD) { +func (h *clientMetricsHandler) setLabelsFromPluginOption(ai *attemptInfo, incomingMetadata metadata.MD) { if ai.pluginOptionLabels == nil && h.options.MetricsOptions.pluginOption != nil { labels := h.options.MetricsOptions.pluginOption.GetLabels(incomingMetadata) if labels == nil { @@ -250,7 +238,7 @@ func (h *clientStatsHandler) setLabelsFromPluginOption(ai *attemptInfo, incoming } } -func (h *clientStatsHandler) processRPCEnd(ctx context.Context, ai *attemptInfo, e *stats.End) { +func (h *clientMetricsHandler) processRPCEnd(ctx context.Context, ai *attemptInfo, e *stats.End) { ci := getCallInfo(ctx) if ci == nil { logger.Error("ctx passed into client side stats handler metrics event handling has no metrics data present") diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/client_tracing.go b/vendor/google.golang.org/grpc/stats/opentelemetry/client_tracing.go index 2cc974b56..868d6a2fc 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/client_tracing.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/client_tracing.go @@ -18,21 +18,80 @@ package opentelemetry import ( "context" + "log" "strings" + otelcodes "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" + grpccodes "google.golang.org/grpc/codes" + "google.golang.org/grpc/stats" otelinternaltracing "google.golang.org/grpc/stats/opentelemetry/internal/tracing" + "google.golang.org/grpc/status" ) -const tracerName = "grpc-go" +const ( + delayedResolutionEventName = "Delayed name resolution complete" + tracerName = "grpc-go" +) + +type clientTracingHandler struct { + options Options +} + +func (h *clientTracingHandler) initializeTraces() { + if h.options.TraceOptions.TracerProvider == nil { + log.Printf("TracerProvider is not provided in client TraceOptions") + return + } +} + +func (h *clientTracingHandler) unaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { + ctx, _ = getOrCreateCallInfo(ctx, cc, method, opts...) + + var span trace.Span + ctx, span = h.createCallTraceSpan(ctx, method) + err := invoker(ctx, method, req, reply, cc, opts...) + h.finishTrace(err, span) + return err +} + +func (h *clientTracingHandler) streamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { + ctx, _ = getOrCreateCallInfo(ctx, cc, method, opts...) + + var span trace.Span + ctx, span = h.createCallTraceSpan(ctx, method) + callback := func(err error) { h.finishTrace(err, span) } + opts = append([]grpc.CallOption{grpc.OnFinish(callback)}, opts...) + return streamer(ctx, desc, cc, method, opts...) +} + +// finishTrace sets the span status based on the RPC result and ends the span. +// It is used to finalize tracing for both unary and streaming calls. +func (h *clientTracingHandler) finishTrace(err error, ts trace.Span) { + s := status.Convert(err) + if s.Code() == grpccodes.OK { + ts.SetStatus(otelcodes.Ok, s.Message()) + } else { + ts.SetStatus(otelcodes.Error, s.Message()) + } + ts.End() +} // traceTagRPC populates provided context with a new span using the // TextMapPropagator supplied in trace options and internal itracing.carrier. // It creates a new outgoing carrier which serializes information about this // span into gRPC Metadata, if TextMapPropagator is provided in the trace // options. if TextMapPropagator is not provided, it returns the context as is. -func (h *clientStatsHandler) traceTagRPC(ctx context.Context, ai *attemptInfo) (context.Context, *attemptInfo) { +func (h *clientTracingHandler) traceTagRPC(ctx context.Context, ai *attemptInfo, nameResolutionDelayed bool) (context.Context, *attemptInfo) { + // Add a "Delayed name resolution complete" event to the call span + // if there was name resolution delay. In case of multiple retry attempts, + // ensure that event is added only once. + callSpan := trace.SpanFromContext(ctx) + ci := getCallInfo(ctx) + if nameResolutionDelayed && !ci.nameResolutionEventAdded.Swap(true) && callSpan.SpanContext().IsValid() { + callSpan.AddEvent(delayedResolutionEventName) + } mn := "Attempt." + strings.Replace(ai.method, "/", ".", -1) tracer := h.options.TraceOptions.TracerProvider.Tracer(tracerName, trace.WithInstrumentationVersion(grpc.Version)) ctx, span := tracer.Start(ctx, mn) @@ -44,13 +103,34 @@ func (h *clientStatsHandler) traceTagRPC(ctx context.Context, ai *attemptInfo) ( // createCallTraceSpan creates a call span to put in the provided context using // provided TraceProvider. If TraceProvider is nil, it returns context as is. -func (h *clientStatsHandler) createCallTraceSpan(ctx context.Context, method string) (context.Context, trace.Span) { - if h.options.TraceOptions.TracerProvider == nil { - logger.Error("TraceProvider is not provided in trace options") - return ctx, nil - } - mn := strings.Replace(removeLeadingSlash(method), "/", ".", -1) +func (h *clientTracingHandler) createCallTraceSpan(ctx context.Context, method string) (context.Context, trace.Span) { + mn := "Sent." + strings.Replace(removeLeadingSlash(method), "/", ".", -1) tracer := h.options.TraceOptions.TracerProvider.Tracer(tracerName, trace.WithInstrumentationVersion(grpc.Version)) ctx, span := tracer.Start(ctx, mn, trace.WithSpanKind(trace.SpanKindClient)) return ctx, span } + +// TagConn exists to satisfy stats.Handler for tracing. +func (h *clientTracingHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { + return ctx +} + +// HandleConn exists to satisfy stats.Handler for tracing. +func (h *clientTracingHandler) HandleConn(context.Context, stats.ConnStats) {} + +// TagRPC implements per RPC attempt context management for traces. +func (h *clientTracingHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { + ctx, ai := getOrCreateRPCAttemptInfo(ctx) + ctx, ai = h.traceTagRPC(ctx, ai, info.NameResolutionDelay) + return setRPCInfo(ctx, &rpcInfo{ai: ai}) +} + +// HandleRPC handles per RPC tracing implementation. +func (h *clientTracingHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { + ri := getRPCInfo(ctx) + if ri == nil { + logger.Error("ctx passed into client side tracing handler trace event handling has no client attempt data present") + return + } + populateSpan(rs, ri.ai) +} diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/opentelemetry.go b/vendor/google.golang.org/grpc/stats/opentelemetry/opentelemetry.go index d99169e2d..cd01f86c4 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/opentelemetry.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/opentelemetry.go @@ -25,6 +25,7 @@ package opentelemetry import ( "context" "strings" + "sync/atomic" "time" otelattribute "go.opentelemetry.io/otel/attribute" @@ -117,10 +118,23 @@ type MetricsOptions struct { // MeterProvider. If the passed in Meter Provider does not have the view // configured for an individual metric turned on, the API call in this component // will create a default view for that metric. +// +// For the traces supported by this instrumentation code, provide an +// implementation of a TextMapPropagator and OpenTelemetry TracerProvider. func DialOption(o Options) grpc.DialOption { - csh := &clientStatsHandler{options: o} - csh.initializeMetrics() - return joinDialOptions(grpc.WithChainUnaryInterceptor(csh.unaryInterceptor), grpc.WithChainStreamInterceptor(csh.streamInterceptor), grpc.WithStatsHandler(csh)) + var metricsOpts, tracingOpts []grpc.DialOption + + if o.isMetricsEnabled() { + metricsHandler := &clientMetricsHandler{options: o} + metricsHandler.initializeMetrics() + metricsOpts = append(metricsOpts, grpc.WithChainUnaryInterceptor(metricsHandler.unaryInterceptor), grpc.WithChainStreamInterceptor(metricsHandler.streamInterceptor), grpc.WithStatsHandler(metricsHandler)) + } + if o.isTracingEnabled() { + tracingHandler := &clientTracingHandler{options: o} + tracingHandler.initializeTraces() + tracingOpts = append(tracingOpts, grpc.WithChainUnaryInterceptor(tracingHandler.unaryInterceptor), grpc.WithChainStreamInterceptor(tracingHandler.streamInterceptor), grpc.WithStatsHandler(tracingHandler)) + } + return joinDialOptions(append(metricsOpts, tracingOpts...)...) } var joinServerOptions = internal.JoinServerOptions.(func(...grpc.ServerOption) grpc.ServerOption) @@ -137,10 +151,23 @@ var joinServerOptions = internal.JoinServerOptions.(func(...grpc.ServerOption) g // MeterProvider. If the passed in Meter Provider does not have the view // configured for an individual metric turned on, the API call in this component // will create a default view for that metric. +// +// For the traces supported by this instrumentation code, provide an +// implementation of a TextMapPropagator and OpenTelemetry TracerProvider. func ServerOption(o Options) grpc.ServerOption { - ssh := &serverStatsHandler{options: o} - ssh.initializeMetrics() - return joinServerOptions(grpc.ChainUnaryInterceptor(ssh.unaryInterceptor), grpc.ChainStreamInterceptor(ssh.streamInterceptor), grpc.StatsHandler(ssh)) + var metricsOpts, tracingOpts []grpc.ServerOption + + if o.isMetricsEnabled() { + metricsHandler := &serverMetricsHandler{options: o} + metricsHandler.initializeMetrics() + metricsOpts = append(metricsOpts, grpc.ChainUnaryInterceptor(metricsHandler.unaryInterceptor), grpc.ChainStreamInterceptor(metricsHandler.streamInterceptor), grpc.StatsHandler(metricsHandler)) + } + if o.isTracingEnabled() { + tracingHandler := &serverTracingHandler{options: o} + tracingHandler.initializeTraces() + tracingOpts = append(tracingOpts, grpc.StatsHandler(tracingHandler)) + } + return joinServerOptions(append(metricsOpts, tracingOpts...)...) } // callInfo is information pertaining to the lifespan of the RPC client side. @@ -148,6 +175,10 @@ type callInfo struct { target string method string + + // nameResolutionEventAdded is set when the resolver delay trace event + // is added. Prevents duplicate events, since it is reported per-attempt. + nameResolutionEventAdded atomic.Bool } type callInfoKey struct{} diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/server_metrics.go b/vendor/google.golang.org/grpc/stats/opentelemetry/server_metrics.go index da3f60a9e..a02fc33b9 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/server_metrics.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/server_metrics.go @@ -21,24 +21,24 @@ import ( "sync/atomic" "time" + otelattribute "go.opentelemetry.io/otel/attribute" + otelmetric "go.opentelemetry.io/otel/metric" + "google.golang.org/grpc" estats "google.golang.org/grpc/experimental/stats" "google.golang.org/grpc/internal" "google.golang.org/grpc/metadata" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - - otelattribute "go.opentelemetry.io/otel/attribute" - otelmetric "go.opentelemetry.io/otel/metric" ) -type serverStatsHandler struct { +type serverMetricsHandler struct { estats.MetricsRecorder options Options serverMetrics serverMetrics } -func (h *serverStatsHandler) initializeMetrics() { +func (h *serverMetricsHandler) initializeMetrics() { // Will set no metrics to record, logically making this stats handler a // no-op. if h.options.MetricsOptions.MeterProvider == nil { @@ -90,7 +90,7 @@ func (s *attachLabelsTransportStream) SendHeader(md metadata.MD) error { return s.ServerTransportStream.SendHeader(md) } -func (h *serverStatsHandler) unaryInterceptor(ctx context.Context, req any, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error) { +func (h *serverMetricsHandler) unaryInterceptor(ctx context.Context, req any, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error) { var metadataExchangeLabels metadata.MD if h.options.MetricsOptions.pluginOption != nil { metadataExchangeLabels = h.options.MetricsOptions.pluginOption.GetMetadata() @@ -151,7 +151,7 @@ func (s *attachLabelsStream) SendMsg(m any) error { return s.ServerStream.SendMsg(m) } -func (h *serverStatsHandler) streamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error { +func (h *serverMetricsHandler) streamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error { var metadataExchangeLabels metadata.MD if h.options.MetricsOptions.pluginOption != nil { metadataExchangeLabels = h.options.MetricsOptions.pluginOption.GetMetadata() @@ -171,15 +171,15 @@ func (h *serverStatsHandler) streamInterceptor(srv any, ss grpc.ServerStream, _ } // TagConn exists to satisfy stats.Handler. -func (h *serverStatsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { +func (h *serverMetricsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { return ctx } // HandleConn exists to satisfy stats.Handler. -func (h *serverStatsHandler) HandleConn(context.Context, stats.ConnStats) {} +func (h *serverMetricsHandler) HandleConn(context.Context, stats.ConnStats) {} -// TagRPC implements per RPC context management. -func (h *serverStatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { +// TagRPC implements per RPC context management for metrics. +func (h *serverMetricsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { method := info.FullMethodName if h.options.MetricsOptions.MethodAttributeFilter != nil { if !h.options.MetricsOptions.MethodAttributeFilter(method) { @@ -196,35 +196,24 @@ func (h *serverStatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) method = "other" } } + ctx, ai := getOrCreateRPCAttemptInfo(ctx) + ai.startTime = time.Now() + ai.method = removeLeadingSlash(method) - ai := &attemptInfo{ - startTime: time.Now(), - method: removeLeadingSlash(method), - } - if h.options.isTracingEnabled() { - ctx, ai = h.traceTagRPC(ctx, ai) - } - return setRPCInfo(ctx, &rpcInfo{ - ai: ai, - }) + return setRPCInfo(ctx, &rpcInfo{ai: ai}) } -// HandleRPC implements per RPC tracing and stats implementation. -func (h *serverStatsHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { +// HandleRPC handles per RPC stats implementation. +func (h *serverMetricsHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { ri := getRPCInfo(ctx) if ri == nil { logger.Error("ctx passed into server side stats handler metrics event handling has no server call data present") return } - if h.options.isTracingEnabled() { - populateSpan(rs, ri.ai) - } - if h.options.isMetricsEnabled() { - h.processRPCData(ctx, rs, ri.ai) - } + h.processRPCData(ctx, rs, ri.ai) } -func (h *serverStatsHandler) processRPCData(ctx context.Context, s stats.RPCStats, ai *attemptInfo) { +func (h *serverMetricsHandler) processRPCData(ctx context.Context, s stats.RPCStats, ai *attemptInfo) { switch st := s.(type) { case *stats.InHeader: if ai.pluginOptionLabels == nil && h.options.MetricsOptions.pluginOption != nil { @@ -248,7 +237,7 @@ func (h *serverStatsHandler) processRPCData(ctx context.Context, s stats.RPCStat } } -func (h *serverStatsHandler) processRPCEnd(ctx context.Context, ai *attemptInfo, e *stats.End) { +func (h *serverMetricsHandler) processRPCEnd(ctx context.Context, ai *attemptInfo, e *stats.End) { latency := float64(time.Since(ai.startTime)) / float64(time.Second) st := "OK" if e.Error != nil { diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/server_tracing.go b/vendor/google.golang.org/grpc/stats/opentelemetry/server_tracing.go index f04d28c52..0e2181bf1 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/server_tracing.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/server_tracing.go @@ -18,13 +18,33 @@ package opentelemetry import ( "context" + "log" "strings" "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" + "google.golang.org/grpc/stats" otelinternaltracing "google.golang.org/grpc/stats/opentelemetry/internal/tracing" ) +type serverTracingHandler struct { + options Options +} + +func (h *serverTracingHandler) initializeTraces() { + if h.options.TraceOptions.TracerProvider == nil { + log.Printf("TracerProvider is not provided in server TraceOptions") + return + } +} + +// TagRPC implements per RPC attempt context management for traces. +func (h *serverTracingHandler) TagRPC(ctx context.Context, _ *stats.RPCTagInfo) context.Context { + ctx, ai := getOrCreateRPCAttemptInfo(ctx) + ctx, ai = h.traceTagRPC(ctx, ai) + return setRPCInfo(ctx, &rpcInfo{ai: ai}) +} + // traceTagRPC populates context with new span data using the TextMapPropagator // supplied in trace options and internal itracing.Carrier. It creates a new // incoming carrier which extracts an existing span context (if present) by @@ -32,8 +52,8 @@ import ( // is set as parent of the new span otherwise new span remains the root span. // If TextMapPropagator is not provided in the trace options, it returns context // as is. -func (h *serverStatsHandler) traceTagRPC(ctx context.Context, ai *attemptInfo) (context.Context, *attemptInfo) { - mn := strings.Replace(ai.method, "/", ".", -1) +func (h *serverTracingHandler) traceTagRPC(ctx context.Context, ai *attemptInfo) (context.Context, *attemptInfo) { + mn := "Recv." + strings.Replace(ai.method, "/", ".", -1) var span trace.Span tracer := h.options.TraceOptions.TracerProvider.Tracer(tracerName, trace.WithInstrumentationVersion(grpc.Version)) ctx = h.options.TraceOptions.TextMapPropagator.Extract(ctx, otelinternaltracing.NewIncomingCarrier(ctx)) @@ -44,3 +64,21 @@ func (h *serverStatsHandler) traceTagRPC(ctx context.Context, ai *attemptInfo) ( ai.traceSpan = span return ctx, ai } + +// HandleRPC handles per RPC tracing implementation. +func (h *serverTracingHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) { + ri := getRPCInfo(ctx) + if ri == nil { + logger.Error("ctx passed into server side tracing handler trace event handling has no server call data present") + return + } + populateSpan(rs, ri.ai) +} + +// TagConn exists to satisfy stats.Handler for tracing. +func (h *serverTracingHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { + return ctx +} + +// HandleConn exists to satisfy stats.Handler for tracing. +func (h *serverTracingHandler) HandleConn(context.Context, stats.ConnStats) {} diff --git a/vendor/google.golang.org/grpc/stats/opentelemetry/trace.go b/vendor/google.golang.org/grpc/stats/opentelemetry/trace.go index 4a49d8b03..efafdd075 100644 --- a/vendor/google.golang.org/grpc/stats/opentelemetry/trace.go +++ b/vendor/google.golang.org/grpc/stats/opentelemetry/trace.go @@ -57,18 +57,24 @@ func populateSpan(rs stats.RPCStats, ai *attemptInfo) { case *stats.InPayload: // message id - "must be calculated as two different counters starting // from one for sent messages and one for received messages." - span.AddEvent("Inbound compressed message", trace.WithAttributes( + attrs := []attribute.KeyValue{ attribute.Int64("sequence-number", int64(ai.countRecvMsg)), attribute.Int64("message-size", int64(rs.Length)), - attribute.Int64("message-size-compressed", int64(rs.CompressedLength)), - )) + } + if rs.CompressedLength != rs.Length { + attrs = append(attrs, attribute.Int64("message-size-compressed", int64(rs.CompressedLength))) + } + span.AddEvent("Inbound message", trace.WithAttributes(attrs...)) ai.countRecvMsg++ case *stats.OutPayload: - span.AddEvent("Outbound compressed message", trace.WithAttributes( + attrs := []attribute.KeyValue{ attribute.Int64("sequence-number", int64(ai.countSentMsg)), attribute.Int64("message-size", int64(rs.Length)), - attribute.Int64("message-size-compressed", int64(rs.CompressedLength)), - )) + } + if rs.CompressedLength != rs.Length { + attrs = append(attrs, attribute.Int64("message-size-compressed", int64(rs.CompressedLength))) + } + span.AddEvent("Outbound message", trace.WithAttributes(attrs...)) ai.countSentMsg++ case *stats.End: if rs.Error != nil { diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index 12163150b..ca6948926 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -101,9 +101,9 @@ type ClientStream interface { // It must only be called after stream.CloseAndRecv has returned, or // stream.Recv has returned a non-nil error (including io.EOF). Trailer() metadata.MD - // CloseSend closes the send direction of the stream. It closes the stream - // when non-nil error is met. It is also not safe to call CloseSend - // concurrently with SendMsg. + // CloseSend closes the send direction of the stream. This method always + // returns a nil error. The status of the stream may be discovered using + // RecvMsg. It is also not safe to call CloseSend concurrently with SendMsg. CloseSend() error // Context returns the context for this stream. // @@ -212,14 +212,15 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } // Provide an opportunity for the first RPC to see the first service config // provided by the resolver. - if err := cc.waitForResolvedAddrs(ctx); err != nil { + nameResolutionDelayed, err := cc.waitForResolvedAddrs(ctx) + if err != nil { return nil, err } var mc serviceconfig.MethodConfig var onCommit func() newStream := func(ctx context.Context, done func()) (iresolver.ClientStream, error) { - return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, opts...) + return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, nameResolutionDelayed, opts...) } rpcInfo := iresolver.RPCInfo{Context: ctx, Method: method} @@ -257,7 +258,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth return newStream(ctx, func() {}) } -func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), opts ...CallOption) (_ iresolver.ClientStream, err error) { +func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) { callInfo := defaultCallInfo() if mc.WaitForReady != nil { callInfo.failFast = !*mc.WaitForReady @@ -296,6 +297,7 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client Method: method, ContentSubtype: callInfo.contentSubtype, DoneFunc: doneFunc, + Authority: callInfo.authority, } // Set our outgoing compression according to the UseCompressor CallOption, if @@ -321,19 +323,20 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client } cs := &clientStream{ - callHdr: callHdr, - ctx: ctx, - methodConfig: &mc, - opts: opts, - callInfo: callInfo, - cc: cc, - desc: desc, - codec: callInfo.codec, - compressorV0: compressorV0, - compressorV1: compressorV1, - cancel: cancel, - firstAttempt: true, - onCommit: onCommit, + callHdr: callHdr, + ctx: ctx, + methodConfig: &mc, + opts: opts, + callInfo: callInfo, + cc: cc, + desc: desc, + codec: callInfo.codec, + compressorV0: compressorV0, + compressorV1: compressorV1, + cancel: cancel, + firstAttempt: true, + onCommit: onCommit, + nameResolutionDelay: nameResolutionDelayed, } if !cc.dopts.disableRetry { cs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler) @@ -417,7 +420,7 @@ func (cs *clientStream) newAttemptLocked(isTransparent bool) (*csAttempt, error) var beginTime time.Time shs := cs.cc.dopts.copts.StatsHandlers for _, sh := range shs { - ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast}) + ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast, NameResolutionDelay: cs.nameResolutionDelay}) beginTime = time.Now() begin := &stats.Begin{ Client: true, @@ -573,6 +576,9 @@ type clientStream struct { onCommit func() replayBuffer []replayOp // operations to replay on retry replayBufferSize int // current size of replayBuffer + // nameResolutionDelay indicates if there was a delay in the name resolution. + // This field is only valid on client side, it's always false on server side. + nameResolutionDelay bool } type replayOp struct { @@ -987,7 +993,7 @@ func (cs *clientStream) RecvMsg(m any) error { func (cs *clientStream) CloseSend() error { if cs.sentLast { - // TODO: return an error and finish the stream instead, due to API misuse? + // Return a nil error on repeated calls to this method. return nil } cs.sentLast = true @@ -1008,7 +1014,10 @@ func (cs *clientStream) CloseSend() error { binlog.Log(cs.ctx, chc) } } - // We never returned an error here for reasons. + // We don't return an error here as we expect users to read all messages + // from the stream and get the RPC status from RecvMsg(). Note that + // SendMsg() must return an error when one occurs so the application + // knows to stop sending messages, but that does not apply here. return nil } @@ -1162,7 +1171,7 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) { } else if err != nil { return toRPCErr(err) } - return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) + return status.Errorf(codes.Internal, "cardinality violation: expected for non server-streaming RPCs, but received another message") } func (a *csAttempt) finish(err error) { @@ -1372,7 +1381,7 @@ func (as *addrConnStream) Trailer() metadata.MD { func (as *addrConnStream) CloseSend() error { if as.sentLast { - // TODO: return an error and finish the stream instead, due to API misuse? + // Return a nil error on repeated calls to this method. return nil } as.sentLast = true @@ -1486,7 +1495,7 @@ func (as *addrConnStream) RecvMsg(m any) (err error) { } else if err != nil { return toRPCErr(err) } - return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) + return status.Errorf(codes.Internal, "cardinality violation: expected for non server-streaming RPCs, but received another message") } func (as *addrConnStream) finish(err error) { diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 90237b1db..8b0e5f973 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.72.0" +const Version = "1.74.2" diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cdsbalancer.go b/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cdsbalancer.go index 3572ff343..3a0e3f9e6 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cdsbalancer.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cdsbalancer.go @@ -424,9 +424,7 @@ func (b *cdsBalancer) ExitIdle() { // ExitIdle (but still checks for the interface's existence to // avoid a panic if not). If the child does not, no subconns // will be connected. - if ei, ok := b.childLB.(balancer.ExitIdler); ok { - ei.ExitIdle() - } + b.childLB.ExitIdle() }) } @@ -542,38 +540,27 @@ func (b *cdsBalancer) onClusterUpdate(name string, update xdsresource.ClusterUpd } } -// Handles an error Cluster update from the xDS client. Propagates the error -// down to the child policy if one exists, or puts the channel in -// TRANSIENT_FAILURE. +// Handles an ambient error Cluster update from the xDS client to not stop +// using the previously seen resource. // // Only executed in the context of a serializer callback. -func (b *cdsBalancer) onClusterError(name string, err error) { - b.logger.Warningf("Cluster resource %q received error update: %v", name, err) +func (b *cdsBalancer) onClusterAmbientError(name string, err error) { + b.logger.Warningf("Cluster resource %q received ambient error update: %v", name, err) - if b.childLB != nil { - if xdsresource.ErrType(err) != xdsresource.ErrorTypeConnection { - // Connection errors will be sent to the child balancers directly. - // There's no need to forward them. - b.childLB.ResolverError(err) - } - } else { - // If child balancer was never created, fail the RPCs with - // errors. - b.ccw.UpdateState(balancer.State{ - ConnectivityState: connectivity.TransientFailure, - Picker: base.NewErrPicker(fmt.Errorf("%q: %v", name, err)), - }) + if xdsresource.ErrType(err) != xdsresource.ErrorTypeConnection && b.childLB != nil { + // Connection errors will be sent to the child balancers directly. + // There's no need to forward them. + b.childLB.ResolverError(err) } } -// Handles a resource-not-found error from the xDS client. Propagates the error -// down to the child policy if one exists, or puts the channel in -// TRANSIENT_FAILURE. +// Handles an error Cluster update from the xDS client to stop using the +// previously seen resource. Propagates the error down to the child policy +// if one exists, and puts the channel in TRANSIENT_FAILURE. // // Only executed in the context of a serializer callback. -func (b *cdsBalancer) onClusterResourceNotFound(name string) { - b.logger.Warningf("CDS watch for resource %q reported resource-does-not-exist error", name) - err := b.annotateErrorWithNodeID(xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "cluster %q not found", name)) +func (b *cdsBalancer) onClusterResourceError(name string, err error) { + b.logger.Warningf("CDS watch for resource %q reported resource error", name) b.closeChildPolicyAndReportTF(err) } @@ -677,6 +664,14 @@ func (b *cdsBalancer) generateDMsForCluster(name string, depth int, dms []cluste return append(dms, dm), true, nil } +func (b *cdsBalancer) onClusterError(name string, err error) { + if b.childLB != nil { + b.onClusterAmbientError(name, err) + } else { + b.onClusterResourceError(name, err) + } +} + // ccWrapper wraps the balancer.ClientConn passed to the CDS balancer at // creation and intercepts the NewSubConn() and UpdateAddresses() call from the // child policy to add security configuration required by xDS credentials. diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cluster_watcher.go b/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cluster_watcher.go index 835461d09..a9adea0c8 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cluster_watcher.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/cdsbalancer/cluster_watcher.go @@ -32,19 +32,19 @@ type clusterWatcher struct { parent *cdsBalancer } -func (cw *clusterWatcher) OnUpdate(u *xdsresource.ClusterResourceData, onDone xdsresource.OnDoneFunc) { +func (cw *clusterWatcher) ResourceChanged(u *xdsresource.ClusterResourceData, onDone func()) { handleUpdate := func(context.Context) { cw.parent.onClusterUpdate(cw.name, u.Resource); onDone() } cw.parent.serializer.ScheduleOr(handleUpdate, onDone) } -func (cw *clusterWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { - handleError := func(context.Context) { cw.parent.onClusterError(cw.name, err); onDone() } - cw.parent.serializer.ScheduleOr(handleError, onDone) +func (cw *clusterWatcher) ResourceError(err error, onDone func()) { + handleResourceError := func(context.Context) { cw.parent.onClusterResourceError(cw.name, err); onDone() } + cw.parent.serializer.ScheduleOr(handleResourceError, onDone) } -func (cw *clusterWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { - handleNotFound := func(context.Context) { cw.parent.onClusterResourceNotFound(cw.name); onDone() } - cw.parent.serializer.ScheduleOr(handleNotFound, onDone) +func (cw *clusterWatcher) AmbientError(err error, onDone func()) { + handleError := func(context.Context) { cw.parent.onClusterAmbientError(cw.name, err); onDone() } + cw.parent.serializer.ScheduleOr(handleError, onDone) } // watcherState groups the state associated with a clusterWatcher. diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/clusterimpl.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/clusterimpl.go index 71a4c9c9d..096b738b0 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/clusterimpl.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/clusterimpl.go @@ -24,10 +24,12 @@ package clusterimpl import ( + "context" "encoding/json" "fmt" "sync" "sync/atomic" + "time" "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" @@ -41,14 +43,16 @@ import ( "google.golang.org/grpc/serviceconfig" xdsinternal "google.golang.org/grpc/xds/internal" "google.golang.org/grpc/xds/internal/balancer/loadstore" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/lrsclient" "google.golang.org/grpc/xds/internal/xdsclient" - "google.golang.org/grpc/xds/internal/xdsclient/load" ) const ( // Name is the name of the cluster_impl balancer. Name = "xds_cluster_impl_experimental" defaultRequestCountMax = 1024 + loadStoreStopTimeout = 1 * time.Second ) var ( @@ -90,13 +94,15 @@ type clusterImplBalancer struct { // The following fields are set at creation time, and are read-only after // that, and therefore need not be protected by a mutex. - logger *grpclog.PrefixLogger + logger *grpclog.PrefixLogger + // TODO: #8366 - Refactor usage of loadWrapper to easily plugin a test + // load reporter from tests. loadWrapper *loadstore.Wrapper // The following fields are only accessed from balancer API methods, which // are guaranteed to be called serially by gRPC. xdsClient xdsclient.XDSClient // Sent down in ResolverState attributes. - cancelLoadReport func() // To stop reporting load through the above xDS client. + cancelLoadReport func(context.Context) // To stop reporting load through the above xDS client. edsServiceName string // EDS service name to report load for. lrsServer *bootstrap.ServerConfig // Load reporting server configuration. dropCategories []DropConfig // The categories for drops. @@ -218,7 +224,9 @@ func (b *clusterImplBalancer) updateLoadStore(newConfig *LBConfig) error { if stopOldLoadReport { if b.cancelLoadReport != nil { - b.cancelLoadReport() + stopCtx, stopCancel := context.WithTimeout(context.Background(), loadStoreStopTimeout) + defer stopCancel() + b.cancelLoadReport(stopCtx) b.cancelLoadReport = nil if !startNewLoadReport { // If a new LRS stream will be started later, no need to update @@ -228,7 +236,7 @@ func (b *clusterImplBalancer) updateLoadStore(newConfig *LBConfig) error { } } if startNewLoadReport { - var loadStore *load.Store + var loadStore *lrsclient.LoadStore if b.xdsClient != nil { loadStore, b.cancelLoadReport = b.xdsClient.ReportLoad(b.lrsServer) } @@ -344,7 +352,9 @@ func (b *clusterImplBalancer) Close() { b.childState = balancer.State{} if b.cancelLoadReport != nil { - b.cancelLoadReport() + stopCtx, stopCancel := context.WithTimeout(context.Background(), loadStoreStopTimeout) + defer stopCancel() + b.cancelLoadReport(stopCtx) b.cancelLoadReport = nil } b.logger.Infof("Shutdown") @@ -406,16 +416,19 @@ type scWrapper struct { balancer.SubConn // locality needs to be atomic because it can be updated while being read by // the picker. - locality atomic.Value // type xdsinternal.LocalityID + locality atomic.Pointer[clients.Locality] } -func (scw *scWrapper) updateLocalityID(lID xdsinternal.LocalityID) { - scw.locality.Store(lID) +func (scw *scWrapper) updateLocalityID(lID clients.Locality) { + scw.locality.Store(&lID) } -func (scw *scWrapper) localityID() xdsinternal.LocalityID { - lID, _ := scw.locality.Load().(xdsinternal.LocalityID) - return lID +func (scw *scWrapper) localityID() clients.Locality { + lID := scw.locality.Load() + if lID == nil { + return clients.Locality{} + } + return *lID } func (b *clusterImplBalancer) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { @@ -436,7 +449,7 @@ func (b *clusterImplBalancer) NewSubConn(addrs []resolver.Address, opts balancer // address's locality. https://github.com/grpc/grpc-go/issues/7339 addr := connectedAddress(state) lID := xdsinternal.GetLocalityID(addr) - if lID.Empty() { + if (lID == clients.Locality{}) { if b.logger.V(2) { b.logger.Infof("Locality ID for %s unexpectedly empty", addr) } @@ -459,7 +472,7 @@ func (b *clusterImplBalancer) RemoveSubConn(sc balancer.SubConn) { func (b *clusterImplBalancer) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) { clusterName := b.getClusterName() newAddrs := make([]resolver.Address, len(addrs)) - var lID xdsinternal.LocalityID + var lID clients.Locality for i, addr := range addrs { newAddrs[i] = xds.SetXDSHandshakeClusterName(addr, clusterName) lID = xdsinternal.GetLocalityID(newAddrs[i]) diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/picker.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/picker.go index cd94182fa..9ed16ffbe 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/picker.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterimpl/picker.go @@ -28,6 +28,8 @@ import ( "google.golang.org/grpc/internal/stats" "google.golang.org/grpc/internal/wrr" "google.golang.org/grpc/status" + "google.golang.org/grpc/xds/internal" + "google.golang.org/grpc/xds/internal/clients" "google.golang.org/grpc/xds/internal/xdsclient" ) @@ -71,10 +73,10 @@ func (d *dropper) drop() (ret bool) { // loadReporter wraps the methods from the loadStore that are used here. type loadReporter interface { - CallStarted(locality string) - CallFinished(locality string, err error) - CallServerLoad(locality, name string, val float64) - CallDropped(locality string) + CallStarted(locality clients.Locality) + CallFinished(locality clients.Locality, err error) + CallServerLoad(locality clients.Locality, name string, val float64) + CallDropped(category string) } // Picker implements RPC drop, circuit breaking drop and load reporting. @@ -133,19 +135,15 @@ func (d *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { } } - var lIDStr string + var lID clients.Locality pr, err := d.s.Picker.Pick(info) if scw, ok := pr.SubConn.(*scWrapper); ok { // This OK check also covers the case err!=nil, because SubConn will be // nil. pr.SubConn = scw.SubConn - var e error // If locality ID isn't found in the wrapper, an empty locality ID will // be used. - lIDStr, e = scw.localityID().ToString() - if e != nil { - logger.Infof("failed to marshal LocalityID: %#v, loads won't be reported", scw.localityID()) - } + lID = scw.localityID() } if err != nil { @@ -157,24 +155,25 @@ func (d *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { } if labels := telemetryLabels(info.Ctx); labels != nil { - labels["grpc.lb.locality"] = lIDStr + labels["grpc.lb.locality"] = internal.LocalityString(lID) } if d.loadStore != nil { - d.loadStore.CallStarted(lIDStr) + locality := clients.Locality{Region: lID.Region, Zone: lID.Zone, SubZone: lID.SubZone} + d.loadStore.CallStarted(locality) oldDone := pr.Done pr.Done = func(info balancer.DoneInfo) { if oldDone != nil { oldDone(info) } - d.loadStore.CallFinished(lIDStr, info.Err) + d.loadStore.CallFinished(locality, info.Err) load, ok := info.ServerLoad.(*v3orcapb.OrcaLoadReport) if !ok || load == nil { return } for n, c := range load.NamedMetrics { - d.loadStore.CallServerLoad(lIDStr, n, c) + d.loadStore.CallServerLoad(locality, n, c) } } } diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/clusterresolver.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/clusterresolver.go index fe5d93dbf..f9ce57293 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/clusterresolver.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/clusterresolver.go @@ -335,13 +335,7 @@ func (b *clusterResolverBalancer) run() { } break } - // This implementation assumes the child balancer supports - // ExitIdle (but still checks for the interface's existence to - // avoid a panic if not). If the child does not, no subconns - // will be connected. - if ei, ok := b.child.(balancer.ExitIdler); ok { - ei.ExitIdle() - } + b.child.ExitIdle() } case u := <-b.resourceWatcher.updateChannel: b.handleResourceUpdate(u) diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder.go index fb2bc7629..9c7fed862 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder.go @@ -257,10 +257,7 @@ func priorityLocalitiesToClusterImpl(localities []xdsresource.Locality, priority if locality.Weight != 0 { lw = locality.Weight } - localityStr, err := locality.ID.ToString() - if err != nil { - localityStr = fmt.Sprintf("%+v", locality.ID) - } + localityStr := internal.LocalityString(locality.ID) for _, endpoint := range locality.Endpoints { // Filter out all "unhealthy" endpoints (unknown and healthy are // both considered to be healthy: diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder_childname.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder_childname.go index 119f4c474..bf4e33496 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder_childname.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/configbuilder_childname.go @@ -20,7 +20,7 @@ package clusterresolver import ( "fmt" - "google.golang.org/grpc/xds/internal" + "google.golang.org/grpc/xds/internal/clients" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" ) @@ -31,7 +31,7 @@ import ( // struct keeps state between generate() calls, and a later generate() might // return names returned by the previous call. type nameGenerator struct { - existingNames map[internal.LocalityID]string + existingNames map[clients.Locality]string prefix uint64 nextID uint64 } @@ -55,7 +55,7 @@ func newNameGenerator(prefix uint64) *nameGenerator { func (ng *nameGenerator) generate(priorities [][]xdsresource.Locality) []string { var ret []string usedNames := make(map[string]bool) - newNames := make(map[internal.LocalityID]string) + newNames := make(map[clients.Locality]string) for _, priority := range priorities { var nameFound string for _, locality := range priority { diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver.go index d9315c3ac..c1a656c59 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver.go @@ -38,7 +38,7 @@ type resourceUpdate struct { priorities []priorityConfig // To be invoked once the update is completely processed, or is dropped in // favor of a newer update. - onDone xdsresource.OnDoneFunc + onDone func() } // topLevelResolver is used by concrete endpointsResolver implementations for @@ -50,7 +50,7 @@ type topLevelResolver interface { // endpointsResolver implementation. The onDone callback is to be invoked // once the update is completely processed, or is dropped in favor of a // newer update. - onUpdate(onDone xdsresource.OnDoneFunc) + onUpdate(onDone func()) } // endpointsResolver wraps the functionality to resolve a given resource name to @@ -282,7 +282,7 @@ func (rr *resourceResolver) stop(closing bool) { // clusterresolver LB policy. // // Caller must hold rr.mu. -func (rr *resourceResolver) generateLocked(onDone xdsresource.OnDoneFunc) { +func (rr *resourceResolver) generateLocked(onDone func()) { var ret []priorityConfig for _, rDM := range rr.children { u, ok := rDM.r.lastUpdate() @@ -312,7 +312,7 @@ func (rr *resourceResolver) generateLocked(onDone xdsresource.OnDoneFunc) { rr.updateChannel <- &resourceUpdate{priorities: ret, onDone: onDone} } -func (rr *resourceResolver) onUpdate(onDone xdsresource.OnDoneFunc) { +func (rr *resourceResolver) onUpdate(onDone func()) { handleUpdate := func(context.Context) { rr.mu.Lock() rr.generateLocked(onDone) diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver_eds.go b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver_eds.go index 31a06c4c7..043def950 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver_eds.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/clusterresolver/resource_resolver_eds.go @@ -75,8 +75,8 @@ func newEDSResolver(nameToWatch string, producer xdsresource.Producer, topLevelR return ret } -// OnUpdate is invoked to report an update for the resource being watched. -func (er *edsDiscoveryMechanism) OnUpdate(update *xdsresource.EndpointsResourceData, onDone xdsresource.OnDoneFunc) { +// ResourceChanged is invoked to report an update for the resource being watched. +func (er *edsDiscoveryMechanism) ResourceChanged(update *xdsresource.EndpointsResourceData, onDone func()) { if er.stopped.HasFired() { onDone() return @@ -89,54 +89,36 @@ func (er *edsDiscoveryMechanism) OnUpdate(update *xdsresource.EndpointsResourceD er.topLevelResolver.onUpdate(onDone) } -func (er *edsDiscoveryMechanism) OnError(err error, onDone xdsresource.OnDoneFunc) { +func (er *edsDiscoveryMechanism) ResourceError(err error, onDone func()) { if er.stopped.HasFired() { onDone() return } if er.logger.V(2) { - er.logger.Infof("EDS discovery mechanism for resource %q reported error: %v", er.nameToWatch, err) + er.logger.Infof("EDS discovery mechanism for resource %q reported resource error: %v", er.nameToWatch, err) } - er.mu.Lock() - if er.update != nil { - // Continue using a previously received good configuration if one - // exists. - er.mu.Unlock() - onDone() - return - } - - // Else report an empty update that would result in no priority child being + // Report an empty update that would result in no priority child being // created for this discovery mechanism. This would result in the priority // LB policy reporting TRANSIENT_FAILURE (as there would be no priorities or // localities) if this was the only discovery mechanism, or would result in // the priority LB policy using a lower priority discovery mechanism when // that becomes available. + er.mu.Lock() er.update = &xdsresource.EndpointsUpdate{} er.mu.Unlock() er.topLevelResolver.onUpdate(onDone) } -func (er *edsDiscoveryMechanism) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { +func (er *edsDiscoveryMechanism) AmbientError(err error, onDone func()) { if er.stopped.HasFired() { onDone() return } - er.logger.Warningf("EDS discovery mechanism for resource %q reported resource-does-not-exist error", er.nameToWatch) - - // Report an empty update that would result in no priority child being - // created for this discovery mechanism. This would result in the priority - // LB policy reporting TRANSIENT_FAILURE (as there would be no priorities or - // localities) if this was the only discovery mechanism, or would result in - // the priority LB policy using a lower priority discovery mechanism when - // that becomes available. - er.mu.Lock() - er.update = &xdsresource.EndpointsUpdate{} - er.mu.Unlock() - - er.topLevelResolver.onUpdate(onDone) + if er.logger.V(2) { + er.logger.Infof("EDS discovery mechanism for resource %q reported ambient error: %v", er.nameToWatch, err) + } } diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/loadstore/load_store_wrapper.go b/vendor/google.golang.org/grpc/xds/internal/balancer/loadstore/load_store_wrapper.go index f5605df83..48a2b7d1e 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/loadstore/load_store_wrapper.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/loadstore/load_store_wrapper.go @@ -22,7 +22,8 @@ package loadstore import ( "sync" - "google.golang.org/grpc/xds/internal/xdsclient/load" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/lrsclient" ) // NewWrapper creates a Wrapper. @@ -53,8 +54,8 @@ type Wrapper struct { // store and perCluster are initialized as nil. They are only set by the // balancer when LRS is enabled. Before that, all functions to record loads // are no-op. - store *load.Store - perCluster load.PerClusterReporter + store *lrsclient.LoadStore + perCluster *lrsclient.PerClusterReporter } // UpdateClusterAndService updates the cluster name and eds service for this @@ -68,23 +69,30 @@ func (lsw *Wrapper) UpdateClusterAndService(cluster, edsService string) { } lsw.cluster = cluster lsw.edsService = edsService - lsw.perCluster = lsw.store.PerCluster(lsw.cluster, lsw.edsService) + if lsw.store == nil { + return + } + lsw.perCluster = lsw.store.ReporterForCluster(lsw.cluster, lsw.edsService) } // UpdateLoadStore updates the load store for this wrapper. If it is changed // from before, the perCluster store in this wrapper will also be updated. -func (lsw *Wrapper) UpdateLoadStore(store *load.Store) { +func (lsw *Wrapper) UpdateLoadStore(store *lrsclient.LoadStore) { lsw.mu.Lock() defer lsw.mu.Unlock() if store == lsw.store { return } lsw.store = store - lsw.perCluster = lsw.store.PerCluster(lsw.cluster, lsw.edsService) + if lsw.store == nil { + lsw.perCluster = nil + return + } + lsw.perCluster = lsw.store.ReporterForCluster(lsw.cluster, lsw.edsService) } // CallStarted records a call started in the store. -func (lsw *Wrapper) CallStarted(locality string) { +func (lsw *Wrapper) CallStarted(locality clients.Locality) { lsw.mu.RLock() defer lsw.mu.RUnlock() if lsw.perCluster != nil { @@ -93,7 +101,7 @@ func (lsw *Wrapper) CallStarted(locality string) { } // CallFinished records a call finished in the store. -func (lsw *Wrapper) CallFinished(locality string, err error) { +func (lsw *Wrapper) CallFinished(locality clients.Locality, err error) { lsw.mu.RLock() defer lsw.mu.RUnlock() if lsw.perCluster != nil { @@ -102,7 +110,7 @@ func (lsw *Wrapper) CallFinished(locality string, err error) { } // CallServerLoad records the server load in the store. -func (lsw *Wrapper) CallServerLoad(locality, name string, val float64) { +func (lsw *Wrapper) CallServerLoad(locality clients.Locality, name string, val float64) { lsw.mu.RLock() defer lsw.mu.RUnlock() if lsw.perCluster != nil { diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/balancer.go b/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/balancer.go index bc5cea40c..1b0149e30 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/balancer.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/balancer.go @@ -32,7 +32,6 @@ import ( "time" "google.golang.org/grpc/balancer" - "google.golang.org/grpc/balancer/pickfirst/pickfirstleaf" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/internal/balancer/gracefulswitch" "google.golang.org/grpc/internal/buffer" @@ -467,12 +466,10 @@ func (b *outlierDetectionBalancer) UpdateState(s balancer.State) { func (b *outlierDetectionBalancer) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { oldListener := opts.StateListener scw := &subConnWrapper{ - addresses: addrs, - scUpdateCh: b.scUpdateCh, - listener: oldListener, - latestRawConnectivityState: balancer.SubConnState{ConnectivityState: connectivity.Idle}, - latestHealthState: balancer.SubConnState{ConnectivityState: connectivity.Connecting}, - healthListenerEnabled: len(addrs) == 1 && pickfirstleaf.IsManagedByPickfirst(addrs[0]), + addresses: addrs, + scUpdateCh: b.scUpdateCh, + listener: oldListener, + latestHealthState: balancer.SubConnState{ConnectivityState: connectivity.Connecting}, } opts.StateListener = func(state balancer.SubConnState) { b.updateSubConnState(scw, state) } b.mu.Lock() diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/subconn_wrapper.go b/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/subconn_wrapper.go index 2c390d230..b893ea68e 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/subconn_wrapper.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/outlierdetection/subconn_wrapper.go @@ -40,16 +40,6 @@ type subConnWrapper struct { // that. listener func(balancer.SubConnState) - // healthListenerEnabled indicates whether the leaf LB policy is using a - // generic health listener. When enabled, ejection updates are sent via the - // health listener instead of the connectivity listener. Once Dualstack - // changes are complete, all SubConns will be created by pickfirst which - // uses the health listener. - // TODO: https://github.com/grpc/grpc-go/issues/7915 - Once Dualstack - // changes are complete, all SubConns will be created by pick_first and - // outlier detection will only use the health listener for ejection and - // this field can be removed. - healthListenerEnabled bool scUpdateCh *buffer.Unbounded @@ -67,9 +57,6 @@ type subConnWrapper struct { // latestHealthState is tracked to update the child policy during // unejection. latestHealthState balancer.SubConnState - // latestRawConnectivityState is tracked to update the child policy during - // unejection. - latestRawConnectivityState balancer.SubConnState // Access to the following fields are protected by a mutex. These fields // should not be accessed from outside this file, instead use methods @@ -114,12 +101,7 @@ func (scw *subConnWrapper) RegisterHealthListener(listener func(balancer.SubConn // pick_first the universal leaf policy (see A61), both these mechanisms // started using the new health listener to make health signal visible to // the petiole policies without affecting the underlying connectivity - // management of the pick_first policy - if !scw.healthListenerEnabled { - logger.Errorf("Health listener unexpectedly registered on SubConn %v.", scw) - return - } - + // management of the pick_first policy. scw.mu.Lock() defer scw.mu.Unlock() @@ -157,12 +139,6 @@ func (scw *subConnWrapper) updateSubConnHealthState(scs balancer.SubConnState) { // updateSubConnConnectivityState stores the latest connectivity state for // unejection and updates the raw connectivity listener. func (scw *subConnWrapper) updateSubConnConnectivityState(scs balancer.SubConnState) { - scw.latestRawConnectivityState = scs - // If the raw connectivity listener is used for ejection, and the SubConn is - // ejected, don't send the update. - if scw.ejected && !scw.healthListenerEnabled { - return - } if scw.listener != nil { scw.listener(scs) } @@ -176,12 +152,6 @@ func (scw *subConnWrapper) clearHealthListener() { func (scw *subConnWrapper) handleUnejection() { scw.ejected = false - if !scw.healthListenerEnabled { - // If scw.latestRawConnectivityState has never been written to will - // default to connectivity IDLE, which is fine. - scw.updateSubConnConnectivityState(scw.latestRawConnectivityState) - return - } // If scw.latestHealthState has never been written to will use the health // state CONNECTING set during object creation. scw.updateSubConnHealthState(scw.latestHealthState) @@ -192,12 +162,6 @@ func (scw *subConnWrapper) handleEjection() { stateToUpdate := balancer.SubConnState{ ConnectivityState: connectivity.TransientFailure, } - if !scw.healthListenerEnabled { - if scw.listener != nil { - scw.listener(stateToUpdate) - } - return - } scw.mu.Lock() defer scw.mu.Unlock() if scw.healthListener != nil { diff --git a/vendor/google.golang.org/grpc/xds/internal/balancer/wrrlocality/balancer.go b/vendor/google.golang.org/grpc/xds/internal/balancer/wrrlocality/balancer.go index 2b289a811..0c99c108f 100644 --- a/vendor/google.golang.org/grpc/xds/internal/balancer/wrrlocality/balancer.go +++ b/vendor/google.golang.org/grpc/xds/internal/balancer/wrrlocality/balancer.go @@ -154,6 +154,10 @@ type wrrLocalityBalancer struct { logger *grpclog.PrefixLogger } +func (b *wrrLocalityBalancer) ExitIdle() { + b.child.ExitIdle() +} + func (b *wrrLocalityBalancer) UpdateClientConnState(s balancer.ClientConnState) error { lbCfg, ok := s.BalancerConfig.(*LBConfig) if !ok { @@ -167,11 +171,7 @@ func (b *wrrLocalityBalancer) UpdateClientConnState(s balancer.ClientConnState) // shouldn't happen though (this attribute that is set actually gets // used to build localities in the first place), and thus don't error // out, and just build a weighted target with undefined behavior. - locality, err := internal.GetLocalityID(addr).ToString() - if err != nil { - // Should never happen. - logger.Errorf("Failed to marshal LocalityID: %v, skipping this locality in weighted target") - } + locality := internal.LocalityString(internal.GetLocalityID(addr)) ai, ok := getAddrInfo(addr) if !ok { return fmt.Errorf("xds_wrr_locality: missing locality weight information in address %q", addr) diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/config.go b/vendor/google.golang.org/grpc/xds/internal/clients/config.go new file mode 100644 index 000000000..f106465f6 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/config.go @@ -0,0 +1,112 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * 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 clients provides implementations of the clients to interact with +// xDS and LRS servers. +// +// # xDS Client +// +// The xDS client allows applications to: +// - Create client instances with in-memory configurations. +// - Register watches for named resources. +// - Receive resources via the ADS (Aggregated Discovery Service) stream. +// +// This enables applications to dynamically discover and configure resources +// such as listeners, routes, clusters, and endpoints from an xDS management +// server. +// +// # LRS Client +// +// The LRS (Load Reporting Service) client allows applications to report load +// data to an LRS server via the LRS stream. This data can be used for +// monitoring, traffic management, and other purposes. +// +// # Experimental +// +// NOTICE: This package is EXPERIMENTAL and may be changed or removed +// in a later release. +package clients + +// ServerIdentifier holds identifying information for connecting to an xDS +// management or LRS server. +type ServerIdentifier struct { + // ServerURI is the target URI of the server. + ServerURI string + + // Extensions can be populated with arbitrary data to be passed to the + // TransportBuilder and/or xDS Client's ResourceType implementations. + // This field can be used to provide additional configuration or context + // specific to the user's needs. + // + // The xDS and LRS clients do not interpret the contents of this field. + // It is the responsibility of the user's custom TransportBuilder and/or + // ResourceType implementations to handle and interpret these extensions. + // + // For example, a custom TransportBuilder might use this field to + // configure a specific security credentials. + // + // Extensions may be any type that is comparable, as they are used as map + // keys internally. If Extensions are not able to be used as a map key, + // the client may panic. + // + // See: https://go.dev/ref/spec#Comparison_operators + // + // Any equivalent extensions in all ServerIdentifiers present in a single + // client's configuration should have the same value. Not following this + // restriction may result in excess resource usage. + Extensions any +} + +// Node represents the identity of the xDS client, allowing xDS and LRS servers +// to identify the source of xDS requests. +type Node struct { + // ID is a string identifier of the application. + ID string + // Cluster is the name of the cluster the application belongs to. + Cluster string + // Locality is the location of the application including region, zone, + // sub-zone. + Locality Locality + // Metadata provides additional context about the application by associating + // arbitrary key-value pairs with it. + Metadata any + // UserAgentName is the user agent name of application. + UserAgentName string + // UserAgentVersion is the user agent version of application. + UserAgentVersion string +} + +// Locality represents the location of the xDS client application. +type Locality struct { + // Region is the region of the xDS client application. + Region string + // Zone is the area within a region. + Zone string + // SubZone is the further subdivision within a zone. + SubZone string +} + +// MetricsReporter is used by the XDSClient to report metrics. +type MetricsReporter interface { + // ReportMetric reports a metric. The metric will be one of the predefined + // set of types depending on the client (XDSClient or LRSClient). + // + // Each client will produce different metrics. Please see the client's + // documentation for a list of possible metrics events. + ReportMetric(metric any) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/grpctransport/grpc_transport.go b/vendor/google.golang.org/grpc/xds/internal/clients/grpctransport/grpc_transport.go new file mode 100644 index 000000000..2659c301e --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/grpctransport/grpc_transport.go @@ -0,0 +1,237 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 grpctransport provides an implementation of the +// clients.TransportBuilder interface using gRPC. +package grpctransport + +import ( + "context" + "fmt" + "sync" + "time" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/xds/internal/clients" +) + +var ( + logger = grpclog.Component("grpctransport") +) + +// ServerIdentifierExtension holds settings for connecting to a gRPC server, +// such as an xDS management or an LRS server. +// +// It must be set by value (not pointer) in the +// clients.ServerIdentifier.Extensions field (See Example). +type ServerIdentifierExtension struct { + // ConfigName is the name of the configuration to use for this transport. + // It must be present as a key in the map of configs passed to NewBuilder. + ConfigName string +} + +// Builder creates gRPC-based Transports. It must be paired with ServerIdentifiers +// that contain an Extension field of type ServerIdentifierExtension. +type Builder struct { + // configs is a map of configuration names to their respective Config. + configs map[string]Config + + mu sync.Mutex + // connections is a map of clients.ServerIdentifiers in use by the Builder + // to connect to different servers. + connections map[clients.ServerIdentifier]*grpc.ClientConn + // refs tracks the number of active references to each connection. + refs map[clients.ServerIdentifier]int +} + +// Config defines the configuration for connecting to a gRPC server, including +// credentials and an optional custom new client function. +type Config struct { + // Credentials is the credentials bundle to be used for the connection. + Credentials credentials.Bundle + // GRPCNewClient is an optional custom function to establish a gRPC connection. + // If nil, grpc.NewClient will be used as the default. + GRPCNewClient func(target string, opts ...grpc.DialOption) (*grpc.ClientConn, error) +} + +// NewBuilder provides a builder for creating gRPC-based Transports using +// the credentials from provided map of credentials names to +// credentials.Bundle. +func NewBuilder(configs map[string]Config) *Builder { + return &Builder{ + configs: configs, + connections: make(map[clients.ServerIdentifier]*grpc.ClientConn), + refs: make(map[clients.ServerIdentifier]int), + } +} + +// Build returns a gRPC-based clients.Transport. +// +// The Extension field of the ServerIdentifier must be a ServerIdentifierExtension. +func (b *Builder) Build(si clients.ServerIdentifier) (clients.Transport, error) { + if si.ServerURI == "" { + return nil, fmt.Errorf("grpctransport: ServerURI is not set in ServerIdentifier") + } + if si.Extensions == nil { + return nil, fmt.Errorf("grpctransport: Extensions is not set in ServerIdentifier") + } + sce, ok := si.Extensions.(ServerIdentifierExtension) + if !ok { + return nil, fmt.Errorf("grpctransport: Extensions field is %T, but must be %T in ServerIdentifier", si.Extensions, ServerIdentifierExtension{}) + } + + config, ok := b.configs[sce.ConfigName] + if !ok { + return nil, fmt.Errorf("grpctransport: unknown config name %q specified in ServerIdentifierExtension", sce.ConfigName) + } + if config.Credentials == nil { + return nil, fmt.Errorf("grpctransport: config %q has nil credentials bundle", sce.ConfigName) + } + + b.mu.Lock() + defer b.mu.Unlock() + + if cc, ok := b.connections[si]; ok { + if logger.V(2) { + logger.Info("Reusing existing connection to the server for ServerIdentifier: %v", si) + } + b.refs[si]++ + tr := &grpcTransport{cc: cc} + tr.cleanup = b.cleanupFunc(si, tr) + return tr, nil + } + + // Create a new gRPC client/channel for the server with the provided + // credentials, server URI, and a byte codec to send and receive messages. + // Also set a static keepalive configuration that is common across gRPC + // language implementations. + kpCfg := grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Time: 5 * time.Minute, + Timeout: 20 * time.Second, + }) + dopts := []grpc.DialOption{kpCfg, grpc.WithCredentialsBundle(config.Credentials), grpc.WithDefaultCallOptions(grpc.ForceCodec(&byteCodec{}))} + newClientFunc := grpc.NewClient + if config.GRPCNewClient != nil { + newClientFunc = config.GRPCNewClient + } + cc, err := newClientFunc(si.ServerURI, dopts...) + if err != nil { + return nil, fmt.Errorf("grpctransport: failed to create connection to server %q: %v", si.ServerURI, err) + } + tr := &grpcTransport{cc: cc} + // Register a cleanup function that decrements the refs to the gRPC + // transport each time Close() is called to close it and remove from + // transports and connections map if last reference is being released. + tr.cleanup = b.cleanupFunc(si, tr) + + // Add the newly created connection to the maps to re-use the transport + // channel and track references. + b.connections[si] = cc + b.refs[si] = 1 + + if logger.V(2) { + logger.Info("Created a new transport to the server for ServerIdentifier: %v", si) + } + return tr, nil +} + +func (b *Builder) cleanupFunc(si clients.ServerIdentifier, tr *grpcTransport) func() { + return sync.OnceFunc(func() { + b.mu.Lock() + defer b.mu.Unlock() + + b.refs[si]-- + if b.refs[si] != 0 { + return + } + + tr.cc.Close() + tr.cc = nil + delete(b.connections, si) + delete(b.refs, si) + }) +} + +type grpcTransport struct { + cc *grpc.ClientConn + + // cleanup is the function to be invoked for releasing the references to + // the gRPC transport each time Close() is called. + cleanup func() +} + +// NewStream creates a new gRPC stream to the server for the specified method. +func (g *grpcTransport) NewStream(ctx context.Context, method string) (clients.Stream, error) { + s, err := g.cc.NewStream(ctx, &grpc.StreamDesc{ClientStreams: true, ServerStreams: true}, method) + if err != nil { + return nil, err + } + return &stream{stream: s}, nil +} + +// Close closes the gRPC channel to the server. +func (g *grpcTransport) Close() { + g.cleanup() +} + +type stream struct { + stream grpc.ClientStream +} + +// Send sends a message to the server. +func (s *stream) Send(msg []byte) error { + return s.stream.SendMsg(msg) +} + +// Recv receives a message from the server. +func (s *stream) Recv() ([]byte, error) { + var typedRes []byte + + if err := s.stream.RecvMsg(&typedRes); err != nil { + return nil, err + } + return typedRes, nil +} + +// byteCodec here is still sending proto messages. It's just they are +// in []byte form. +type byteCodec struct{} + +func (c *byteCodec) Marshal(v any) ([]byte, error) { + if b, ok := v.([]byte); ok { + return b, nil + } + return nil, fmt.Errorf("grpctransport: message is %T, but must be a []byte", v) +} + +func (c *byteCodec) Unmarshal(data []byte, v any) error { + if b, ok := v.(*[]byte); ok { + *b = data + return nil + } + return fmt.Errorf("grpctransport: target is %T, but must be *[]byte", v) +} + +func (c *byteCodec) Name() string { + // Return "" to ensure the Content-Type header is "application/grpc", + // which is expected by standard gRPC servers for protobuf messages. + return "" +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/backoff/backoff.go new file mode 100644 index 000000000..c07e155b7 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/backoff/backoff.go @@ -0,0 +1,124 @@ +/* + * + * Copyright 2017 gRPC authors. + * + * 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 backoff implements the backoff strategy for clients. +// +// This is kept in internal until the clients project decides whether or not to +// allow alternative backoff strategies. +package backoff + +import ( + "context" + "errors" + rand "math/rand/v2" + "time" +) + +// config defines the configuration options for backoff. +type config struct { + // baseDelay is the amount of time to backoff after the first failure. + baseDelay time.Duration + // multiplier is the factor with which to multiply backoffs after a + // failed retry. Should ideally be greater than 1. + multiplier float64 + // jitter is the factor with which backoffs are randomized. + jitter float64 + // maxDelay is the upper bound of backoff delay. + maxDelay time.Duration +} + +// defaultConfig is a backoff configuration with the default values specified +// at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. +// +// This should be useful for callers who want to configure backoff with +// non-default values only for a subset of the options. +var defaultConfig = config{ + baseDelay: 1.0 * time.Second, + multiplier: 1.6, + jitter: 0.2, + maxDelay: 120 * time.Second, +} + +// DefaultExponential is an exponential backoff implementation using the +// default values for all the configurable knobs defined in +// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. +var DefaultExponential = exponential{config: defaultConfig} + +// exponential implements exponential backoff algorithm as defined in +// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. +type exponential struct { + // Config contains all options to configure the backoff algorithm. + config config +} + +// Backoff returns the amount of time to wait before the next retry given the +// number of retries. +func (bc exponential) Backoff(retries int) time.Duration { + if retries == 0 { + return bc.config.baseDelay + } + backoff, max := float64(bc.config.baseDelay), float64(bc.config.maxDelay) + for backoff < max && retries > 0 { + backoff *= bc.config.multiplier + retries-- + } + if backoff > max { + backoff = max + } + // Randomize backoff delays so that if a cluster of requests start at + // the same time, they won't operate in lockstep. + backoff *= 1 + bc.config.jitter*(rand.Float64()*2-1) + if backoff < 0 { + return 0 + } + return time.Duration(backoff) +} + +// ErrResetBackoff is the error to be returned by the function executed by RunF, +// to instruct the latter to reset its backoff state. +var ErrResetBackoff = errors.New("reset backoff state") + +// RunF provides a convenient way to run a function f repeatedly until the +// context expires or f returns a non-nil error that is not ErrResetBackoff. +// When f returns ErrResetBackoff, RunF continues to run f, but resets its +// backoff state before doing so. backoff accepts an integer representing the +// number of retries, and returns the amount of time to backoff. +func RunF(ctx context.Context, f func() error, backoff func(int) time.Duration) { + attempt := 0 + timer := time.NewTimer(0) + for ctx.Err() == nil { + select { + case <-timer.C: + case <-ctx.Done(): + timer.Stop() + return + } + + err := f() + if errors.Is(err, ErrResetBackoff) { + timer.Reset(0) + attempt = 0 + continue + } + if err != nil { + return + } + timer.Reset(backoff(attempt)) + attempt++ + } +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/buffer/unbounded.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/buffer/unbounded.go new file mode 100644 index 000000000..3e6e99d0e --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/buffer/unbounded.go @@ -0,0 +1,116 @@ +/* + * Copyright 2019 gRPC authors. + * + * 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 buffer provides an implementation of an unbounded buffer. +package buffer + +import ( + "errors" + "sync" +) + +// Unbounded is an implementation of an unbounded buffer which does not use +// extra goroutines. This is typically used for passing updates from one entity +// to another within gRPC. +// +// All methods on this type are thread-safe and don't block on anything except +// the underlying mutex used for synchronization. +// +// Unbounded supports values of any type to be stored in it by using a channel +// of `any`. This means that a call to Put() incurs an extra memory allocation, +// and also that users need a type assertion while reading. For performance +// critical code paths, using Unbounded is strongly discouraged and defining a +// new type specific implementation of this buffer is preferred. See +// internal/transport/transport.go for an example of this. +type Unbounded struct { + c chan any + closed bool + closing bool + mu sync.Mutex + backlog []any +} + +// NewUnbounded returns a new instance of Unbounded. +func NewUnbounded() *Unbounded { + return &Unbounded{c: make(chan any, 1)} +} + +var errBufferClosed = errors.New("Put() called on closed buffer.Unbounded") + +// Put adds t to the unbounded buffer. +func (b *Unbounded) Put(t any) error { + b.mu.Lock() + defer b.mu.Unlock() + if b.closing { + return errBufferClosed + } + if len(b.backlog) == 0 { + select { + case b.c <- t: + return nil + default: + } + } + b.backlog = append(b.backlog, t) + return nil +} + +// Load sends the earliest buffered data, if any, onto the read channel returned +// by Get(). Users are expected to call this every time they successfully read a +// value from the read channel. +func (b *Unbounded) Load() { + b.mu.Lock() + defer b.mu.Unlock() + if len(b.backlog) > 0 { + select { + case b.c <- b.backlog[0]: + b.backlog[0] = nil + b.backlog = b.backlog[1:] + default: + } + } else if b.closing && !b.closed { + close(b.c) + } +} + +// Get returns a read channel on which values added to the buffer, via Put(), +// are sent on. +// +// Upon reading a value from this channel, users are expected to call Load() to +// send the next buffered value onto the channel if there is any. +// +// If the unbounded buffer is closed, the read channel returned by this method +// is closed after all data is drained. +func (b *Unbounded) Get() <-chan any { + return b.c +} + +// Close closes the unbounded buffer. No subsequent data may be Put(), and the +// channel returned from Get() will be closed after all the data is read and +// Load() is called for the final time. +func (b *Unbounded) Close() { + b.mu.Lock() + defer b.mu.Unlock() + if b.closing { + return + } + b.closing = true + if len(b.backlog) == 0 { + b.closed = true + close(b.c) + } +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/internal.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/internal.go new file mode 100644 index 000000000..371b4d19d --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/internal.go @@ -0,0 +1,71 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 internal contains helpers for xDS and LRS clients. +package internal + +import ( + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/structpb" + + v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3" +) + +// NodeProto returns a protobuf representation of clients.Node n. +// +// This function is intended to be used by the client implementation to convert +// the user-provided Node configuration to its protobuf representation. +func NodeProto(n clients.Node) *v3corepb.Node { + return &v3corepb.Node{ + Id: n.ID, + Cluster: n.Cluster, + Locality: func() *v3corepb.Locality { + if isLocalityEmpty(n.Locality) { + return nil + } + return &v3corepb.Locality{ + Region: n.Locality.Region, + Zone: n.Locality.Zone, + SubZone: n.Locality.SubZone, + } + }(), + Metadata: func() *structpb.Struct { + if n.Metadata == nil { + return nil + } + if md, ok := n.Metadata.(*structpb.Struct); ok { + return proto.Clone(md).(*structpb.Struct) + } + return nil + }(), + UserAgentName: n.UserAgentName, + UserAgentVersionType: &v3corepb.Node_UserAgentVersion{UserAgentVersion: n.UserAgentVersion}, + } +} + +// isLocalityEqual reports whether clients.Locality l is considered empty. +func isLocalityEmpty(l clients.Locality) bool { + return isLocalityEqual(l, clients.Locality{}) +} + +// isLocalityEqual returns true if clients.Locality l1 and l2 are considered +// equal. +func isLocalityEqual(l1, l2 clients.Locality) bool { + return l1.Region == l2.Region && l1.Zone == l2.Zone && l1.SubZone == l2.SubZone +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/pretty/pretty.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/pretty/pretty.go new file mode 100644 index 000000000..dbee7a60d --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/pretty/pretty.go @@ -0,0 +1,73 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * 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 pretty defines helper functions to pretty-print structs for logging. +package pretty + +import ( + "bytes" + "encoding/json" + "fmt" + + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/protoadapt" +) + +const jsonIndent = " " + +// ToJSON marshals the input into a json string. +// +// If marshal fails, it falls back to fmt.Sprintf("%+v"). +func ToJSON(e any) string { + if ee, ok := e.(protoadapt.MessageV1); ok { + e = protoadapt.MessageV2Of(ee) + } + + if ee, ok := e.(protoadapt.MessageV2); ok { + mm := protojson.MarshalOptions{ + Indent: jsonIndent, + Multiline: true, + } + ret, err := mm.Marshal(ee) + if err != nil { + // This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2 + // messages are not imported, and this will fail because the message + // is not found. + return fmt.Sprintf("%+v", ee) + } + return string(ret) + } + + ret, err := json.MarshalIndent(e, "", jsonIndent) + if err != nil { + return fmt.Sprintf("%+v", e) + } + return string(ret) +} + +// FormatJSON formats the input json bytes with indentation. +// +// If Indent fails, it returns the unchanged input as string. +func FormatJSON(b []byte) string { + var out bytes.Buffer + err := json.Indent(&out, b, "", jsonIndent) + if err != nil { + return string(b) + } + return out.String() +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/callback_serializer.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/callback_serializer.go new file mode 100644 index 000000000..9ad1be517 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/callback_serializer.go @@ -0,0 +1,112 @@ +/* + * + * Copyright 2022 gRPC authors. + * + * 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 syncutil + +import ( + "context" + + "google.golang.org/grpc/xds/internal/clients/internal/buffer" +) + +// CallbackSerializer provides a mechanism to schedule callbacks in a +// synchronized manner. It provides a FIFO guarantee on the order of execution +// of scheduled callbacks. New callbacks can be scheduled by invoking the +// Schedule() method. +// +// This type is safe for concurrent access. +type CallbackSerializer struct { + // done is closed once the serializer is shut down completely, i.e all + // scheduled callbacks are executed and the serializer has deallocated all + // its resources. + done chan struct{} + + callbacks *buffer.Unbounded +} + +// NewCallbackSerializer returns a new CallbackSerializer instance. The provided +// context will be passed to the scheduled callbacks. Users should cancel the +// provided context to shutdown the CallbackSerializer. It is guaranteed that no +// callbacks will be added once this context is canceled, and any pending un-run +// callbacks will be executed before the serializer is shut down. +func NewCallbackSerializer(ctx context.Context) *CallbackSerializer { + cs := &CallbackSerializer{ + done: make(chan struct{}), + callbacks: buffer.NewUnbounded(), + } + go cs.run(ctx) + return cs +} + +// TrySchedule tries to schedule the provided callback function f to be +// executed in the order it was added. This is a best-effort operation. If the +// context passed to NewCallbackSerializer was canceled before this method is +// called, the callback will not be scheduled. +// +// Callbacks are expected to honor the context when performing any blocking +// operations, and should return early when the context is canceled. +func (cs *CallbackSerializer) TrySchedule(f func(ctx context.Context)) { + cs.callbacks.Put(f) +} + +// ScheduleOr schedules the provided callback function f to be executed in the +// order it was added. If the context passed to NewCallbackSerializer has been +// canceled before this method is called, the onFailure callback will be +// executed inline instead. +// +// Callbacks are expected to honor the context when performing any blocking +// operations, and should return early when the context is canceled. +func (cs *CallbackSerializer) ScheduleOr(f func(ctx context.Context), onFailure func()) { + if cs.callbacks.Put(f) != nil { + onFailure() + } +} + +func (cs *CallbackSerializer) run(ctx context.Context) { + defer close(cs.done) + + // TODO: when Go 1.21 is the oldest supported version, this loop and Close + // can be replaced with: + // + // context.AfterFunc(ctx, cs.callbacks.Close) + for ctx.Err() == nil { + select { + case <-ctx.Done(): + // Do nothing here. Next iteration of the for loop will not happen, + // since ctx.Err() would be non-nil. + case cb := <-cs.callbacks.Get(): + cs.callbacks.Load() + cb.(func(context.Context))(ctx) + } + } + + // Close the buffer to prevent new callbacks from being added. + cs.callbacks.Close() + + // Run all pending callbacks. + for cb := range cs.callbacks.Get() { + cs.callbacks.Load() + cb.(func(context.Context))(ctx) + } +} + +// Done returns a channel that is closed after the context passed to +// NewCallbackSerializer is canceled and all callbacks have been executed. +func (cs *CallbackSerializer) Done() <-chan struct{} { + return cs.done +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/event.go b/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/event.go new file mode 100644 index 000000000..1850ca379 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/internal/syncutil/event.go @@ -0,0 +1,61 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * 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 syncutil implements additional synchronization primitives built upon +// the sync package. +package syncutil + +import ( + "sync" + "sync/atomic" +) + +// Event represents a one-time event that may occur in the future. +type Event struct { + fired int32 + c chan struct{} + o sync.Once +} + +// Fire causes e to complete. It is safe to call multiple times, and +// concurrently. It returns true iff this call to Fire caused the signaling +// channel returned by Done to close. +func (e *Event) Fire() bool { + ret := false + e.o.Do(func() { + atomic.StoreInt32(&e.fired, 1) + close(e.c) + ret = true + }) + return ret +} + +// Done returns a channel that will be closed when Fire is called. +func (e *Event) Done() <-chan struct{} { + return e.c +} + +// HasFired returns true if Fire has been called. +func (e *Event) HasFired() bool { + return atomic.LoadInt32(&e.fired) == 1 +} + +// NewEvent returns a new, ready-to-use Event. +func NewEvent() *Event { + return &Event{c: make(chan struct{})} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/load/reporter.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/internal/internal.go similarity index 64% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/load/reporter.go rename to vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/internal/internal.go index 67e29e5ba..86eb14ea4 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/load/reporter.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/internal/internal.go @@ -1,6 +1,6 @@ /* * - * Copyright 2020 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,15 +13,14 @@ * 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 load +// Package internal contains functionality internal to the lrsclient package. +package internal + +import "time" -// PerClusterReporter wraps the methods from the loadStore that are used here. -type PerClusterReporter interface { - CallStarted(locality string) - CallFinished(locality string, err error) - CallServerLoad(locality, name string, val float64) - CallDropped(category string) -} +var ( + // TimeNow is used to get the current time. It can be overridden in tests. + TimeNow func() time.Time +) diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/load_store.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/load_store.go new file mode 100644 index 000000000..6b35fd979 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/load_store.go @@ -0,0 +1,438 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 lrsclient + +import ( + "context" + "sync" + "sync/atomic" + "time" + + "google.golang.org/grpc/xds/internal/clients" + lrsclientinternal "google.golang.org/grpc/xds/internal/clients/lrsclient/internal" +) + +// A LoadStore aggregates loads for multiple clusters and services that are +// intended to be reported via LRS. +// +// LoadStore stores loads reported to a single LRS server. Use multiple stores +// for multiple servers. +// +// It is safe for concurrent use. +type LoadStore struct { + // stop is the function to call to Stop the LoadStore reporting. + stop func(ctx context.Context) + + // mu only protects the map (2 layers). The read/write to + // *PerClusterReporter doesn't need to hold the mu. + mu sync.Mutex + // clusters is a map with cluster name as the key. The second layer is a + // map with service name as the key. Each value (PerClusterReporter) + // contains data for a (cluster, service) pair. + // + // Note that new entries are added to this map, but never removed. This is + // potentially a memory leak. But the memory is allocated for each new + // (cluster,service) pair, and the memory allocated is just pointers and + // maps. So this shouldn't get too bad. + clusters map[string]map[string]*PerClusterReporter +} + +func init() { + lrsclientinternal.TimeNow = time.Now +} + +// newLoadStore creates a LoadStore. +func newLoadStore() *LoadStore { + return &LoadStore{ + clusters: make(map[string]map[string]*PerClusterReporter), + } +} + +// Stop signals the LoadStore to stop reporting. +// +// Before closing the underlying LRS stream, this method may block until a +// final load report send attempt completes or the provided context `ctx` +// expires. +// +// The provided context must have a deadline or timeout set to prevent Stop +// from blocking indefinitely if the final send attempt fails to complete. +// +// Calling Stop on an already stopped LoadStore is a no-op. +func (ls *LoadStore) Stop(ctx context.Context) { + ls.stop(ctx) +} + +// ReporterForCluster returns the PerClusterReporter for the given cluster and +// service. +func (ls *LoadStore) ReporterForCluster(clusterName, serviceName string) *PerClusterReporter { + ls.mu.Lock() + defer ls.mu.Unlock() + c, ok := ls.clusters[clusterName] + if !ok { + c = make(map[string]*PerClusterReporter) + ls.clusters[clusterName] = c + } + + if p, ok := c[serviceName]; ok { + return p + } + p := &PerClusterReporter{ + cluster: clusterName, + service: serviceName, + lastLoadReportAt: lrsclientinternal.TimeNow(), + } + c[serviceName] = p + return p +} + +// stats returns the load data for the given cluster names. Data is returned in +// a slice with no specific order. +// +// If no clusterName is given (an empty slice), all data for all known clusters +// is returned. +// +// If a cluster's loadData is empty (no load to report), it's not appended to +// the returned slice. +func (ls *LoadStore) stats(clusterNames []string) []*loadData { + ls.mu.Lock() + defer ls.mu.Unlock() + + var ret []*loadData + if len(clusterNames) == 0 { + for _, c := range ls.clusters { + ret = appendClusterStats(ret, c) + } + return ret + } + for _, n := range clusterNames { + if c, ok := ls.clusters[n]; ok { + ret = appendClusterStats(ret, c) + } + } + + return ret +} + +// PerClusterReporter records load data pertaining to a single cluster. It +// provides methods to record call starts, finishes, server-reported loads, +// and dropped calls. +// +// It is safe for concurrent use. +// +// TODO(purnesh42h): Use regular maps with mutexes instead of sync.Map here. +// The latter is optimized for two common use cases: (1) when the entry for a +// given key is only ever written once but read many times, as in caches that +// only grow, or (2) when multiple goroutines read, write, and overwrite +// entries for disjoint sets of keys. In these two cases, use of a Map may +// significantly reduce lock contention compared to a Go map paired with a +// separate Mutex or RWMutex. +// Neither of these conditions are met here, and we should transition to a +// regular map with a mutex for better type safety. +type PerClusterReporter struct { + cluster, service string + drops sync.Map // map[string]*uint64 + localityRPCCount sync.Map // map[clients.Locality]*rpcCountData + + mu sync.Mutex + lastLoadReportAt time.Time +} + +// CallStarted records a call started in the LoadStore. +func (p *PerClusterReporter) CallStarted(locality clients.Locality) { + s, ok := p.localityRPCCount.Load(locality) + if !ok { + tp := newRPCCountData() + s, _ = p.localityRPCCount.LoadOrStore(locality, tp) + } + s.(*rpcCountData).incrInProgress() + s.(*rpcCountData).incrIssued() +} + +// CallFinished records a call finished in the LoadStore. +func (p *PerClusterReporter) CallFinished(locality clients.Locality, err error) { + f, ok := p.localityRPCCount.Load(locality) + if !ok { + // The map is never cleared, only values in the map are reset. So the + // case where entry for call-finish is not found should never happen. + return + } + f.(*rpcCountData).decrInProgress() + if err == nil { + f.(*rpcCountData).incrSucceeded() + } else { + f.(*rpcCountData).incrErrored() + } +} + +// CallServerLoad records the server load in the LoadStore. +func (p *PerClusterReporter) CallServerLoad(locality clients.Locality, name string, val float64) { + s, ok := p.localityRPCCount.Load(locality) + if !ok { + // The map is never cleared, only values in the map are reset. So the + // case where entry for callServerLoad is not found should never happen. + return + } + s.(*rpcCountData).addServerLoad(name, val) +} + +// CallDropped records a call dropped in the LoadStore. +func (p *PerClusterReporter) CallDropped(category string) { + d, ok := p.drops.Load(category) + if !ok { + tp := new(uint64) + d, _ = p.drops.LoadOrStore(category, tp) + } + atomic.AddUint64(d.(*uint64), 1) +} + +// stats returns and resets all loads reported to the store, except inProgress +// rpc counts. +// +// It returns nil if the store doesn't contain any (new) data. +func (p *PerClusterReporter) stats() *loadData { + sd := newLoadData(p.cluster, p.service) + p.drops.Range(func(key, val any) bool { + d := atomic.SwapUint64(val.(*uint64), 0) + if d == 0 { + return true + } + sd.totalDrops += d + keyStr := key.(string) + if keyStr != "" { + // Skip drops without category. They are counted in total_drops, but + // not in per category. One example is drops by circuit breaking. + sd.drops[keyStr] = d + } + return true + }) + p.localityRPCCount.Range(func(key, val any) bool { + countData := val.(*rpcCountData) + succeeded := countData.loadAndClearSucceeded() + inProgress := countData.loadInProgress() + errored := countData.loadAndClearErrored() + issued := countData.loadAndClearIssued() + if succeeded == 0 && inProgress == 0 && errored == 0 && issued == 0 { + return true + } + + ld := localityData{ + requestStats: requestData{ + succeeded: succeeded, + errored: errored, + inProgress: inProgress, + issued: issued, + }, + loadStats: make(map[string]serverLoadData), + } + countData.serverLoads.Range(func(key, val any) bool { + sum, count := val.(*rpcLoadData).loadAndClear() + if count == 0 { + return true + } + ld.loadStats[key.(string)] = serverLoadData{ + count: count, + sum: sum, + } + return true + }) + sd.localityStats[key.(clients.Locality)] = ld + return true + }) + + p.mu.Lock() + sd.reportInterval = lrsclientinternal.TimeNow().Sub(p.lastLoadReportAt) + p.lastLoadReportAt = lrsclientinternal.TimeNow() + p.mu.Unlock() + + if sd.totalDrops == 0 && len(sd.drops) == 0 && len(sd.localityStats) == 0 { + return nil + } + return sd +} + +// loadData contains all load data reported to the LoadStore since the most recent +// call to stats(). +type loadData struct { + // cluster is the name of the cluster this data is for. + cluster string + // service is the name of the EDS service this data is for. + service string + // totalDrops is the total number of dropped requests. + totalDrops uint64 + // drops is the number of dropped requests per category. + drops map[string]uint64 + // localityStats contains load reports per locality. + localityStats map[clients.Locality]localityData + // reportInternal is the duration since last time load was reported (stats() + // was called). + reportInterval time.Duration +} + +// localityData contains load data for a single locality. +type localityData struct { + // requestStats contains counts of requests made to the locality. + requestStats requestData + // loadStats contains server load data for requests made to the locality, + // indexed by the load type. + loadStats map[string]serverLoadData +} + +// requestData contains request counts. +type requestData struct { + // succeeded is the number of succeeded requests. + succeeded uint64 + // errored is the number of requests which ran into errors. + errored uint64 + // inProgress is the number of requests in flight. + inProgress uint64 + // issued is the total number requests that were sent. + issued uint64 +} + +// serverLoadData contains server load data. +type serverLoadData struct { + // count is the number of load reports. + count uint64 + // sum is the total value of all load reports. + sum float64 +} + +// appendClusterStats gets the Data for all the given clusters, append to ret, +// and return the new slice. +// +// Data is only appended to ret if it's not empty. +func appendClusterStats(ret []*loadData, clusters map[string]*PerClusterReporter) []*loadData { + for _, d := range clusters { + data := d.stats() + if data == nil { + // Skip this data if it doesn't contain any information. + continue + } + ret = append(ret, data) + } + return ret +} + +func newLoadData(cluster, service string) *loadData { + return &loadData{ + cluster: cluster, + service: service, + drops: make(map[string]uint64), + localityStats: make(map[clients.Locality]localityData), + } +} + +type rpcCountData struct { + // Only atomic accesses are allowed for the fields. + succeeded *uint64 + errored *uint64 + inProgress *uint64 + issued *uint64 + + // Map from load desc to load data (sum+count). Loading data from map is + // atomic, but updating data takes a lock, which could cause contention when + // multiple RPCs try to report loads for the same desc. + // + // To fix the contention, shard this map. + serverLoads sync.Map // map[string]*rpcLoadData +} + +func newRPCCountData() *rpcCountData { + return &rpcCountData{ + succeeded: new(uint64), + errored: new(uint64), + inProgress: new(uint64), + issued: new(uint64), + } +} + +func (rcd *rpcCountData) incrSucceeded() { + atomic.AddUint64(rcd.succeeded, 1) +} + +func (rcd *rpcCountData) loadAndClearSucceeded() uint64 { + return atomic.SwapUint64(rcd.succeeded, 0) +} + +func (rcd *rpcCountData) incrErrored() { + atomic.AddUint64(rcd.errored, 1) +} + +func (rcd *rpcCountData) loadAndClearErrored() uint64 { + return atomic.SwapUint64(rcd.errored, 0) +} + +func (rcd *rpcCountData) incrInProgress() { + atomic.AddUint64(rcd.inProgress, 1) +} + +func (rcd *rpcCountData) decrInProgress() { + atomic.AddUint64(rcd.inProgress, ^uint64(0)) // atomic.Add(x, -1) +} + +func (rcd *rpcCountData) loadInProgress() uint64 { + return atomic.LoadUint64(rcd.inProgress) // InProgress count is not clear when reading. +} + +func (rcd *rpcCountData) incrIssued() { + atomic.AddUint64(rcd.issued, 1) +} + +func (rcd *rpcCountData) loadAndClearIssued() uint64 { + return atomic.SwapUint64(rcd.issued, 0) +} + +func (rcd *rpcCountData) addServerLoad(name string, d float64) { + loads, ok := rcd.serverLoads.Load(name) + if !ok { + tl := newRPCLoadData() + loads, _ = rcd.serverLoads.LoadOrStore(name, tl) + } + loads.(*rpcLoadData).add(d) +} + +// rpcLoadData is data for server loads (from trailers or oob). Fields in this +// struct must be updated consistently. +// +// The current solution is to hold a lock, which could cause contention. To fix, +// shard serverLoads map in rpcCountData. +type rpcLoadData struct { + mu sync.Mutex + sum float64 + count uint64 +} + +func newRPCLoadData() *rpcLoadData { + return &rpcLoadData{} +} + +func (rld *rpcLoadData) add(v float64) { + rld.mu.Lock() + rld.sum += v + rld.count++ + rld.mu.Unlock() +} + +func (rld *rpcLoadData) loadAndClear() (s float64, c uint64) { + rld.mu.Lock() + s, rld.sum = rld.sum, 0 + c, rld.count = rld.count, 0 + rld.mu.Unlock() + return s, c +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/logging.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/logging.go new file mode 100644 index 000000000..032b56bd8 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/logging.go @@ -0,0 +1,36 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 lrsclient + +import ( + "fmt" + + "google.golang.org/grpc/grpclog" + internalgrpclog "google.golang.org/grpc/internal/grpclog" +) + +var logger = grpclog.Component("xds") + +func prefixLogger(c *LRSClient) *internalgrpclog.PrefixLogger { + return internalgrpclog.NewPrefixLogger(logger, clientPrefix(c)) +} + +func clientPrefix(c *LRSClient) string { + return fmt.Sprintf("[lrs-client %p] ", c) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/lrs/lrs_stream.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrs_stream.go similarity index 57% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/lrs/lrs_stream.go rename to vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrs_stream.go index e33ac694d..bb275bdb4 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/lrs/lrs_stream.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrs_stream.go @@ -1,6 +1,6 @@ /* * - * Copyright 2024 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,24 +15,19 @@ * limitations under the License. */ -// Package lrs provides the implementation of an LRS (Load Reporting Service) -// stream for the xDS client. -package lrs +package lrsclient import ( "context" "fmt" "io" - "sync" "time" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/backoff" igrpclog "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/pretty" - "google.golang.org/grpc/xds/internal" - "google.golang.org/grpc/xds/internal/xdsclient/load" - "google.golang.org/grpc/xds/internal/xdsclient/transport" + "google.golang.org/grpc/xds/internal/clients" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/durationpb" @@ -46,101 +41,58 @@ import ( // terse output should be at `INFO` and verbosity 2. const perRPCVerbosityLevel = 9 -// StreamImpl provides all the functionality associated with an LRS (Load Reporting -// Service) stream on the client-side. It manages the lifecycle of the LRS stream, -// including starting, stopping, and retrying the stream. It also provides a -// load.Store that can be used to report load, and a cleanup function that should -// be called when the load reporting is no longer needed. -type StreamImpl struct { - // The following fields are initialized when a Stream instance is created +// streamImpl provides all the functionality associated with an LRS (Load +// Reporting Service) stream on the client-side. It manages the lifecycle of +// the LRS stream, including starting, stopping, and retrying the stream. It +// also provides a LoadStore that can be used to report load, with a Stop +// function that should be called when the load reporting is no longer +// needed. +type streamImpl struct { + // The following fields are initialized when a stream instance is created // and are read-only afterwards, and hence can be accessed without a mutex. - transport transport.Transport // Transport to use for LRS stream. + transport clients.Transport // Transport to use for LRS stream. backoff func(int) time.Duration // Backoff for retries, after stream failures. nodeProto *v3corepb.Node // Identifies the gRPC application. doneCh chan struct{} // To notify exit of LRS goroutine. logger *igrpclog.PrefixLogger - // Guards access to the below fields. - mu sync.Mutex cancelStream context.CancelFunc // Cancel the stream. If nil, the stream is not active. - refCount int // Number of interested parties. - lrsStore *load.Store // Store returned to user for pushing loads. + loadStore *LoadStore // LoadStore returned to user for pushing loads. + + finalSendRequest chan struct{} // To request for the final attempt to send loads. + finalSendDone chan error // To signal completion of the final attempt of sending loads. } -// StreamOpts holds the options for creating an lrsStream. -type StreamOpts struct { - Transport transport.Transport // xDS transport to create the stream on. - Backoff func(int) time.Duration // Backoff for retries, after stream failures. - NodeProto *v3corepb.Node // Node proto to identify the gRPC application. - LogPrefix string // Prefix to be used for log messages. +// streamOpts holds the options for creating an lrsStream. +type streamOpts struct { + transport clients.Transport // xDS transport to create the stream on. + backoff func(int) time.Duration // Backoff for retries, after stream failures. + nodeProto *v3corepb.Node // Node proto to identify the gRPC application. + logPrefix string // Prefix to be used for log messages. } -// NewStreamImpl creates a new StreamImpl with the provided options. +// newStreamImpl creates a new StreamImpl with the provided options. // // The actual streaming RPC call is initiated when the first call to ReportLoad // is made, and is terminated when the last call to ReportLoad is canceled. -func NewStreamImpl(opts StreamOpts) *StreamImpl { - lrs := &StreamImpl{ - transport: opts.Transport, - backoff: opts.Backoff, - nodeProto: opts.NodeProto, - lrsStore: load.NewStore(), - } - - l := grpclog.Component("xds") - lrs.logger = igrpclog.NewPrefixLogger(l, opts.LogPrefix+fmt.Sprintf("[lrs-stream %p] ", lrs)) - return lrs -} - -// ReportLoad returns a load.Store that can be used to report load, and a -// cleanup function that should be called when the load reporting is no longer -// needed. -// -// The first call to ReportLoad sets the reference count to one, and starts the -// LRS streaming call. Subsequent calls increment the reference count and return -// the same load.Store. -// -// The cleanup function decrements the reference count and stops the LRS stream -// when the last reference is removed. -func (lrs *StreamImpl) ReportLoad() (*load.Store, func()) { - lrs.mu.Lock() - defer lrs.mu.Unlock() - - cleanup := sync.OnceFunc(func() { - lrs.mu.Lock() - defer lrs.mu.Unlock() - - if lrs.refCount == 0 { - lrs.logger.Errorf("Attempting to stop already stopped StreamImpl") - return - } - lrs.refCount-- - if lrs.refCount != 0 { - return - } - - if lrs.cancelStream == nil { - // It is possible that Stop() is called before the cleanup function - // is called, thereby setting cancelStream to nil. Hence we need a - // nil check here bofore invoking the cancel function. - return - } - lrs.cancelStream() - lrs.cancelStream = nil - lrs.logger.Infof("Stopping StreamImpl") - }) +func newStreamImpl(opts streamOpts) *streamImpl { + ctx, cancel := context.WithCancel(context.Background()) - if lrs.refCount != 0 { - lrs.refCount++ - return lrs.lrsStore, cleanup + lrs := &streamImpl{ + transport: opts.transport, + backoff: opts.backoff, + nodeProto: opts.nodeProto, + cancelStream: cancel, + doneCh: make(chan struct{}), + finalSendRequest: make(chan struct{}, 1), + finalSendDone: make(chan error, 1), } - lrs.refCount++ - ctx, cancel := context.WithCancel(context.Background()) - lrs.cancelStream = cancel - lrs.doneCh = make(chan struct{}) + l := grpclog.Component("xds") + lrs.logger = igrpclog.NewPrefixLogger(l, opts.logPrefix+fmt.Sprintf("[lrs-stream %p] ", lrs)) + lrs.loadStore = newLoadStore() go lrs.runner(ctx) - return lrs.lrsStore, cleanup + return lrs } // runner is responsible for managing the lifetime of an LRS streaming call. It @@ -148,7 +100,7 @@ func (lrs *StreamImpl) ReportLoad() (*load.Store, func()) { // LoadStatsResponse, and then starts a goroutine to periodically send // LoadStatsRequests. The runner will restart the stream if it encounters any // errors. -func (lrs *StreamImpl) runner(ctx context.Context) { +func (lrs *streamImpl) runner(ctx context.Context) { defer close(lrs.doneCh) // This feature indicates that the client supports the @@ -163,7 +115,7 @@ func (lrs *StreamImpl) runner(ctx context.Context) { streamCtx, cancel := context.WithCancel(ctx) defer cancel() - stream, err := lrs.transport.CreateStreamingCall(streamCtx, "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats") + stream, err := lrs.transport.NewStream(streamCtx, "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats") if err != nil { lrs.logger.Warningf("Failed to create new LRS streaming RPC: %v", err) return nil @@ -194,7 +146,7 @@ func (lrs *StreamImpl) runner(ctx context.Context) { // sendLoads is responsible for periodically sending load reports to the LRS // server at the specified interval for the specified clusters, until the passed // in context is canceled. -func (lrs *StreamImpl) sendLoads(ctx context.Context, stream transport.StreamingCall, clusterNames []string, interval time.Duration) { +func (lrs *streamImpl) sendLoads(ctx context.Context, stream clients.Stream, clusterNames []string, interval time.Duration) { tick := time.NewTicker(interval) defer tick.Stop() for { @@ -202,20 +154,40 @@ func (lrs *StreamImpl) sendLoads(ctx context.Context, stream transport.Streaming case <-tick.C: case <-ctx.Done(): return + case <-lrs.finalSendRequest: + var finalSendErr error + if lrs.logger.V(2) { + lrs.logger.Infof("Final send request received. Attempting final LRS report.") + } + if err := lrs.sendLoadStatsRequest(stream, lrs.loadStore.stats(clusterNames)); err != nil { + lrs.logger.Warningf("Failed to send final load report. Writing to LRS stream failed: %v", err) + finalSendErr = err + } + if lrs.logger.V(2) { + lrs.logger.Infof("Successfully sent final load report.") + } + lrs.finalSendDone <- finalSendErr + return } - if err := lrs.sendLoadStatsRequest(stream, lrs.lrsStore.Stats(clusterNames)); err != nil { - lrs.logger.Warningf("Writing to LRS stream failed: %v", err) + + if err := lrs.sendLoadStatsRequest(stream, lrs.loadStore.stats(clusterNames)); err != nil { + lrs.logger.Warningf("Failed to send periodic load report. Writing to LRS stream failed: %v", err) return } } } -func (lrs *StreamImpl) sendFirstLoadStatsRequest(stream transport.StreamingCall, node *v3corepb.Node) error { +func (lrs *streamImpl) sendFirstLoadStatsRequest(stream clients.Stream, node *v3corepb.Node) error { req := &v3lrspb.LoadStatsRequest{Node: node} if lrs.logger.V(perRPCVerbosityLevel) { lrs.logger.Infof("Sending initial LoadStatsRequest: %s", pretty.ToJSON(req)) } - err := stream.Send(req) + msg, err := proto.Marshal(req) + if err != nil { + lrs.logger.Warningf("Failed to marshal LoadStatsRequest: %v", err) + return err + } + err = stream.Send(msg) if err == io.EOF { return getStreamError(stream) } @@ -228,17 +200,20 @@ func (lrs *StreamImpl) sendFirstLoadStatsRequest(stream transport.StreamingCall, // server requested for load from all clusters // - the load reporting interval, and // - any error encountered -func (lrs *StreamImpl) recvFirstLoadStatsResponse(stream transport.StreamingCall) ([]string, time.Duration, error) { +func (lrs *streamImpl) recvFirstLoadStatsResponse(stream clients.Stream) ([]string, time.Duration, error) { r, err := stream.Recv() if err != nil { return nil, 0, fmt.Errorf("lrs: failed to receive first LoadStatsResponse: %v", err) } - resp, ok := r.(*v3lrspb.LoadStatsResponse) - if !ok { + var resp v3lrspb.LoadStatsResponse + if err := proto.Unmarshal(r, &resp); err != nil { + if lrs.logger.V(2) { + lrs.logger.Infof("Failed to unmarshal response to LoadStatsResponse: %v", err) + } return nil, time.Duration(0), fmt.Errorf("lrs: unexpected message type %T", r) } if lrs.logger.V(perRPCVerbosityLevel) { - lrs.logger.Infof("Received first LoadStatsResponse: %s", pretty.ToJSON(resp)) + lrs.logger.Infof("Received first LoadStatsResponse: %s", pretty.ToJSON(&resp)) } internal := resp.GetLoadReportingInterval() @@ -256,28 +231,24 @@ func (lrs *StreamImpl) recvFirstLoadStatsResponse(stream transport.StreamingCall return clusters, loadReportingInterval, nil } -func (lrs *StreamImpl) sendLoadStatsRequest(stream transport.StreamingCall, loads []*load.Data) error { +func (lrs *streamImpl) sendLoadStatsRequest(stream clients.Stream, loads []*loadData) error { clusterStats := make([]*v3endpointpb.ClusterStats, 0, len(loads)) for _, sd := range loads { - droppedReqs := make([]*v3endpointpb.ClusterStats_DroppedRequests, 0, len(sd.Drops)) - for category, count := range sd.Drops { + droppedReqs := make([]*v3endpointpb.ClusterStats_DroppedRequests, 0, len(sd.drops)) + for category, count := range sd.drops { droppedReqs = append(droppedReqs, &v3endpointpb.ClusterStats_DroppedRequests{ Category: category, DroppedCount: count, }) } - localityStats := make([]*v3endpointpb.UpstreamLocalityStats, 0, len(sd.LocalityStats)) - for l, localityData := range sd.LocalityStats { - lid, err := internal.LocalityIDFromString(l) - if err != nil { - return err - } - loadMetricStats := make([]*v3endpointpb.EndpointLoadMetricStats, 0, len(localityData.LoadStats)) - for name, loadData := range localityData.LoadStats { + localityStats := make([]*v3endpointpb.UpstreamLocalityStats, 0, len(sd.localityStats)) + for lid, localityData := range sd.localityStats { + loadMetricStats := make([]*v3endpointpb.EndpointLoadMetricStats, 0, len(localityData.loadStats)) + for name, loadData := range localityData.loadStats { loadMetricStats = append(loadMetricStats, &v3endpointpb.EndpointLoadMetricStats{ MetricName: name, - NumRequestsFinishedWithMetric: loadData.Count, - TotalMetricValue: loadData.Sum, + NumRequestsFinishedWithMetric: loadData.count, + TotalMetricValue: loadData.sum, }) } localityStats = append(localityStats, &v3endpointpb.UpstreamLocalityStats{ @@ -286,22 +257,22 @@ func (lrs *StreamImpl) sendLoadStatsRequest(stream transport.StreamingCall, load Zone: lid.Zone, SubZone: lid.SubZone, }, - TotalSuccessfulRequests: localityData.RequestStats.Succeeded, - TotalRequestsInProgress: localityData.RequestStats.InProgress, - TotalErrorRequests: localityData.RequestStats.Errored, - TotalIssuedRequests: localityData.RequestStats.Issued, + TotalSuccessfulRequests: localityData.requestStats.succeeded, + TotalRequestsInProgress: localityData.requestStats.inProgress, + TotalErrorRequests: localityData.requestStats.errored, + TotalIssuedRequests: localityData.requestStats.issued, LoadMetricStats: loadMetricStats, UpstreamEndpointStats: nil, // TODO: populate for per endpoint loads. }) } clusterStats = append(clusterStats, &v3endpointpb.ClusterStats{ - ClusterName: sd.Cluster, - ClusterServiceName: sd.Service, + ClusterName: sd.cluster, + ClusterServiceName: sd.service, UpstreamLocalityStats: localityStats, - TotalDroppedRequests: sd.TotalDrops, + TotalDroppedRequests: sd.totalDrops, DroppedRequests: droppedReqs, - LoadReportInterval: durationpb.New(sd.ReportInterval), + LoadReportInterval: durationpb.New(sd.reportInterval), }) } @@ -309,31 +280,24 @@ func (lrs *StreamImpl) sendLoadStatsRequest(stream transport.StreamingCall, load if lrs.logger.V(perRPCVerbosityLevel) { lrs.logger.Infof("Sending LRS loads: %s", pretty.ToJSON(req)) } - err := stream.Send(req) + msg, err := proto.Marshal(req) + if err != nil { + if lrs.logger.V(2) { + lrs.logger.Infof("Failed to marshal LoadStatsRequest: %v", err) + } + return err + } + err = stream.Send(msg) if err == io.EOF { return getStreamError(stream) } return err } -func getStreamError(stream transport.StreamingCall) error { +func getStreamError(stream clients.Stream) error { for { if _, err := stream.Recv(); err != nil { return err } } } - -// Stop blocks until the stream is closed and all spawned goroutines exit. -func (lrs *StreamImpl) Stop() { - lrs.mu.Lock() - defer lrs.mu.Unlock() - - if lrs.cancelStream == nil { - return - } - lrs.cancelStream() - lrs.cancelStream = nil - lrs.logger.Infof("Stopping LRS stream") - <-lrs.doneCh -} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsclient.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsclient.go new file mode 100644 index 000000000..af163e220 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsclient.go @@ -0,0 +1,183 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 lrsclient provides an LRS (Load Reporting Service) client. +// +// See: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/load_stats/v3/lrs.proto +package lrsclient + +import ( + "context" + "errors" + "fmt" + "sync" + "time" + + "google.golang.org/grpc/grpclog" + igrpclog "google.golang.org/grpc/internal/grpclog" + "google.golang.org/grpc/xds/internal/clients" + clientsinternal "google.golang.org/grpc/xds/internal/clients/internal" + "google.golang.org/grpc/xds/internal/clients/internal/backoff" +) + +const ( + clientFeatureNoOverprovisioning = "envoy.lb.does_not_support_overprovisioning" + clientFeatureResourceWrapper = "xds.config.resource-in-sotw" +) + +var ( + defaultExponentialBackoff = backoff.DefaultExponential.Backoff +) + +// LRSClient is an LRS (Load Reporting Service) client. +type LRSClient struct { + transportBuilder clients.TransportBuilder + node clients.Node + backoff func(int) time.Duration // Backoff for LRS stream failures. + logger *igrpclog.PrefixLogger + + // The LRSClient owns a bunch of streams to individual LRS servers. + // + // Once all references to a stream are dropped, the stream is closed. + mu sync.Mutex + lrsStreams map[clients.ServerIdentifier]*streamImpl // Map from server config to in-use streamImpls. + lrsRefs map[clients.ServerIdentifier]int // Map from server config to number of references. +} + +// New returns a new LRS Client configured with the provided config. +func New(config Config) (*LRSClient, error) { + switch { + case config.Node.ID == "": + return nil, errors.New("lrsclient: node ID in node is empty") + case config.TransportBuilder == nil: + return nil, errors.New("lrsclient: transport builder is nil") + } + + c := &LRSClient{ + transportBuilder: config.TransportBuilder, + node: config.Node, + backoff: defaultExponentialBackoff, + lrsStreams: make(map[clients.ServerIdentifier]*streamImpl), + lrsRefs: make(map[clients.ServerIdentifier]int), + } + c.logger = prefixLogger(c) + return c, nil +} + +// ReportLoad creates and returns a LoadStore for the caller to report loads +// using a LoadReportingStream. +// +// Caller must call Stop on the returned LoadStore when they are done reporting +// load to this server. +func (c *LRSClient) ReportLoad(si clients.ServerIdentifier) (*LoadStore, error) { + lrs, err := c.getOrCreateLRSStream(si) + if err != nil { + return nil, err + } + return lrs.loadStore, nil +} + +// getOrCreateLRSStream returns an lrs stream for the given server identifier. +// +// If an active lrs stream exists for the given server identifier, it is +// returned. Otherwise, a new lrs stream is created and returned. +func (c *LRSClient) getOrCreateLRSStream(serverIdentifier clients.ServerIdentifier) (*streamImpl, error) { + c.mu.Lock() + defer c.mu.Unlock() + + if c.logger.V(2) { + c.logger.Infof("Received request for a reference to an lrs stream for server identifier %q", serverIdentifier) + } + + // Use an existing stream, if one exists for this server identifier. + if s, ok := c.lrsStreams[serverIdentifier]; ok { + if c.logger.V(2) { + c.logger.Infof("Reusing an existing lrs stream for server identifier %q", serverIdentifier) + } + c.lrsRefs[serverIdentifier]++ + return s, nil + } + + if c.logger.V(2) { + c.logger.Infof("Creating a new lrs stream for server identifier %q", serverIdentifier) + } + + l := grpclog.Component("xds") + logPrefix := clientPrefix(c) + c.logger = igrpclog.NewPrefixLogger(l, logPrefix) + + // Create a new transport and create a new lrs stream, and add it to the + // map of lrs streams. + tr, err := c.transportBuilder.Build(serverIdentifier) + if err != nil { + return nil, fmt.Errorf("lrsclient: failed to create transport for server identifier %s: %v", serverIdentifier, err) + } + + nodeProto := clientsinternal.NodeProto(c.node) + nodeProto.ClientFeatures = []string{clientFeatureNoOverprovisioning, clientFeatureResourceWrapper} + lrs := newStreamImpl(streamOpts{ + transport: tr, + backoff: c.backoff, + nodeProto: nodeProto, + logPrefix: logPrefix, + }) + + // Register a stop function that decrements the reference count, stops + // the LRS stream when the last reference is removed and closes the + // transport and removes the lrs stream and its references from the + // respective maps. Before closing the stream, it waits for the provided + // context to be done (timeout or cancellation). + stop := func(ctx context.Context) { + c.mu.Lock() + defer c.mu.Unlock() + + if r, ok := c.lrsRefs[serverIdentifier]; !ok || r == 0 { + c.logger.Errorf("Attempting to stop already stopped StreamImpl") + return + } + c.lrsRefs[serverIdentifier]-- + if c.lrsRefs[serverIdentifier] != 0 { + return + } + + lrs.finalSendRequest <- struct{}{} + + select { + case err := <-lrs.finalSendDone: + if err != nil { + c.logger.Warningf("Final send attempt failed: %v", err) + } + case <-ctx.Done(): + c.logger.Warningf("Context canceled before finishing the final send attempt: %v", err) + } + + lrs.cancelStream() + lrs.cancelStream = nil + lrs.logger.Infof("Stopping LRS stream") + <-lrs.doneCh + + delete(c.lrsStreams, serverIdentifier) + tr.Close() + } + lrs.loadStore.stop = stop + + c.lrsStreams[serverIdentifier] = lrs + c.lrsRefs[serverIdentifier] = 1 + + return lrs, nil +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsconfig.go b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsconfig.go new file mode 100644 index 000000000..c4862ff76 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/lrsclient/lrsconfig.go @@ -0,0 +1,35 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 lrsclient + +import ( + "google.golang.org/grpc/xds/internal/clients" +) + +// Config is used to configure an LRS client. After one has been passed to the +// LRS client's New function, no part of it may modified. A Config may be +// reused; the lrsclient package will also not modify it. +type Config struct { + // Node is the identity of the client application reporting load to the + // LRS server. + Node clients.Node + + // TransportBuilder is used to connect to the LRS server. + TransportBuilder clients.TransportBuilder +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/transport_builder.go b/vendor/google.golang.org/grpc/xds/internal/clients/transport_builder.go new file mode 100644 index 000000000..f940675d9 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/transport_builder.go @@ -0,0 +1,53 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * 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 clients + +import ( + "context" +) + +// TransportBuilder provides the functionality to create a communication +// channel to an xDS or LRS server. +type TransportBuilder interface { + // Build creates a new Transport instance to the server based on the + // provided ServerIdentifier. + Build(serverIdentifier ServerIdentifier) (Transport, error) +} + +// Transport provides the functionality to communicate with an xDS or LRS +// server using streaming calls. +type Transport interface { + // NewStream creates a new streaming call to the server for the specific + // RPC method name. The returned Stream interface can be used to send and + // receive messages on the stream. + NewStream(context.Context, string) (Stream, error) + + // Close closes the Transport. + Close() +} + +// Stream provides methods to send and receive messages on a stream. Messages +// are represented as a byte slice. +type Stream interface { + // Send sends the provided message on the stream. + Send([]byte) error + + // Recv blocks until the next message is received on the stream. + Recv() ([]byte, error) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/ads/ads_stream.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/ads_stream.go similarity index 68% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/ads/ads_stream.go rename to vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/ads_stream.go index fc41b38ed..774f8ab24 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/ads/ads_stream.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/ads_stream.go @@ -1,6 +1,6 @@ /* * - * Copyright 2024 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,11 +13,10 @@ * 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 ads provides the implementation of an ADS (Aggregated Discovery -// Service) stream for the xDS client. -package ads +package xdsclient import ( "context" @@ -26,95 +25,73 @@ import ( "sync/atomic" "time" - "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal/backoff" - "google.golang.org/grpc/internal/buffer" igrpclog "google.golang.org/grpc/internal/grpclog" - "google.golang.org/grpc/internal/pretty" - "google.golang.org/grpc/xds/internal/xdsclient/transport" - "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/internal/backoff" + "google.golang.org/grpc/xds/internal/clients/internal/buffer" + "google.golang.org/grpc/xds/internal/clients/internal/pretty" + "google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource" + + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3" v3discoverypb "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" + cpb "google.golang.org/genproto/googleapis/rpc/code" statuspb "google.golang.org/genproto/googleapis/rpc/status" ) -// Any per-RPC level logs which print complete request or response messages -// should be gated at this verbosity level. Other per-RPC level logs which print -// terse output should be at `INFO` and verbosity 2. -const perRPCVerbosityLevel = 9 +const ( + // Any per-RPC level logs which print complete request or response messages + // should be gated at this verbosity level. Other per-RPC level logs which print + // terse output should be at `INFO` and verbosity 2. + perRPCVerbosityLevel = 9 +) -// Response represents a response received on the ADS stream. It contains the +// response represents a response received on the ADS stream. It contains the // type URL, version, and resources for the response. -type Response struct { - TypeURL string - Version string - Resources []*anypb.Any +type response struct { + typeURL string + version string + resources []*anypb.Any } -// DataAndErrTuple is a struct that holds a resource and an error. It is used to +// dataAndErrTuple is a struct that holds a resource and an error. It is used to // return a resource and any associated error from a function. -type DataAndErrTuple struct { - Resource xdsresource.ResourceData +type dataAndErrTuple struct { + Resource ResourceData Err error } -// StreamEventHandler is an interface that defines the callbacks for events that +// adsStreamEventHandler is an interface that defines the callbacks for events that // occur on the ADS stream. Methods on this interface may be invoked // concurrently and implementations need to handle them in a thread-safe manner. -type StreamEventHandler interface { - OnADSStreamError(error) // Called when the ADS stream breaks. - OnADSWatchExpiry(xdsresource.Type, string) // Called when the watch timer expires for a resource. - OnADSResponse(Response, func()) ([]string, error) // Called when a response is received on the ADS stream. +type adsStreamEventHandler interface { + onStreamError(error) // Called when the ADS stream breaks. + onWatchExpiry(ResourceType, string) // Called when the watch timer expires for a resource. + onResponse(response, func()) ([]string, error) // Called when a response is received on the ADS stream. } -// WatchState is a enum that describes the watch state of a particular -// resource. -type WatchState int - -const ( - // ResourceWatchStateStarted is the state where a watch for a resource was - // started, but a request asking for that resource is yet to be sent to the - // management server. - ResourceWatchStateStarted WatchState = iota - // ResourceWatchStateRequested is the state when a request has been sent for - // the resource being watched. - ResourceWatchStateRequested - // ResourceWatchStateReceived is the state when a response has been received - // for the resource being watched. - ResourceWatchStateReceived - // ResourceWatchStateTimeout is the state when the watch timer associated - // with the resource expired because no response was received. - ResourceWatchStateTimeout -) - -// ResourceWatchState is the state corresponding to a resource being watched. -type ResourceWatchState struct { - State WatchState // Watch state of the resource. - ExpiryTimer *time.Timer // Timer for the expiry of the watch. -} - -// State corresponding to a resource type. +// state corresponding to a resource type. type resourceTypeState struct { - version string // Last acked version. Should not be reset when the stream breaks. - nonce string // Last received nonce. Should be reset when the stream breaks. - bufferedRequests chan struct{} // Channel to buffer requests when writing is blocked. - subscribedResources map[string]*ResourceWatchState // Map of subscribed resource names to their state. - pendingWrite bool // True if there is a pending write for this resource type. + version string // Last acked version. Should not be reset when the stream breaks. + nonce string // Last received nonce. Should be reset when the stream breaks. + bufferedRequests chan struct{} // Channel to buffer requests when writing is blocked. + subscribedResources map[string]*xdsresource.ResourceWatchState // Map of subscribed resource names to their state. + pendingWrite bool // True if there is a pending write for this resource type. } -// StreamImpl provides the functionality associated with an ADS (Aggregated +// adsStreamImpl provides the functionality associated with an ADS (Aggregated // Discovery Service) stream on the client side. It manages the lifecycle of the // ADS stream, including creating the stream, sending requests, and handling // responses. It also handles flow control and retries for the stream. -type StreamImpl struct { +type adsStreamImpl struct { // The following fields are initialized from arguments passed to the // constructor and are read-only afterwards, and hence can be accessed // without a mutex. - transport transport.Transport // Transport to use for ADS stream. - eventHandler StreamEventHandler // Callbacks into the xdsChannel. + transport clients.Transport // Transport to use for ADS stream. + eventHandler adsStreamEventHandler // Callbacks into the xdsChannel. backoff func(int) time.Duration // Backoff for retries, after stream failures. nodeProto *v3corepb.Node // Identifies the gRPC application. watchExpiryTimeout time.Duration // Resource watch expiry timeout @@ -122,47 +99,47 @@ type StreamImpl struct { // The following fields are initialized in the constructor and are not // written to afterwards, and hence can be accessed without a mutex. - streamCh chan transport.StreamingCall // New ADS streams are pushed here. - requestCh *buffer.Unbounded // Subscriptions and unsubscriptions are pushed here. - runnerDoneCh chan struct{} // Notify completion of runner goroutine. - cancel context.CancelFunc // To cancel the context passed to the runner goroutine. + streamCh chan clients.Stream // New ADS streams are pushed here. + requestCh *buffer.Unbounded // Subscriptions and unsubscriptions are pushed here. + runnerDoneCh chan struct{} // Notify completion of runner goroutine. + cancel context.CancelFunc // To cancel the context passed to the runner goroutine. // Guards access to the below fields (and to the contents of the map). mu sync.Mutex - resourceTypeState map[xdsresource.Type]*resourceTypeState // Map of resource types to their state. - fc *adsFlowControl // Flow control for ADS stream. - firstRequest bool // False after the first request is sent out. + resourceTypeState map[ResourceType]*resourceTypeState // Map of resource types to their state. + fc *adsFlowControl // Flow control for ADS stream. + firstRequest bool // False after the first request is sent out. } -// StreamOpts contains the options for creating a new ADS Stream. -type StreamOpts struct { - Transport transport.Transport // xDS transport to create the stream on. - EventHandler StreamEventHandler // Callbacks for stream events. - Backoff func(int) time.Duration // Backoff for retries, after stream failures. - NodeProto *v3corepb.Node // Node proto to identify the gRPC application. - WatchExpiryTimeout time.Duration // Resource watch expiry timeout. - LogPrefix string // Prefix to be used for log messages. +// adsStreamOpts contains the options for creating a new ADS Stream. +type adsStreamOpts struct { + transport clients.Transport // xDS transport to create the stream on. + eventHandler adsStreamEventHandler // Callbacks for stream events. + backoff func(int) time.Duration // Backoff for retries, after stream failures. + nodeProto *v3corepb.Node // Node proto to identify the gRPC application. + watchExpiryTimeout time.Duration // Resource watch expiry timeout. + logPrefix string // Prefix to be used for log messages. } -// NewStreamImpl initializes a new StreamImpl instance using the given +// newADSStreamImpl initializes a new adsStreamImpl instance using the given // parameters. It also launches goroutines responsible for managing reads and // writes for messages of the underlying stream. -func NewStreamImpl(opts StreamOpts) *StreamImpl { - s := &StreamImpl{ - transport: opts.Transport, - eventHandler: opts.EventHandler, - backoff: opts.Backoff, - nodeProto: opts.NodeProto, - watchExpiryTimeout: opts.WatchExpiryTimeout, - - streamCh: make(chan transport.StreamingCall, 1), +func newADSStreamImpl(opts adsStreamOpts) *adsStreamImpl { + s := &adsStreamImpl{ + transport: opts.transport, + eventHandler: opts.eventHandler, + backoff: opts.backoff, + nodeProto: opts.nodeProto, + watchExpiryTimeout: opts.watchExpiryTimeout, + + streamCh: make(chan clients.Stream, 1), requestCh: buffer.NewUnbounded(), runnerDoneCh: make(chan struct{}), - resourceTypeState: make(map[xdsresource.Type]*resourceTypeState), + resourceTypeState: make(map[ResourceType]*resourceTypeState), } l := grpclog.Component("xds") - s.logger = igrpclog.NewPrefixLogger(l, opts.LogPrefix+fmt.Sprintf("[ads-stream %p] ", s)) + s.logger = igrpclog.NewPrefixLogger(l, opts.logPrefix+fmt.Sprintf("[ads-stream %p] ", s)) ctx, cancel := context.WithCancel(context.Background()) s.cancel = cancel @@ -171,20 +148,20 @@ func NewStreamImpl(opts StreamOpts) *StreamImpl { } // Stop blocks until the stream is closed and all spawned goroutines exit. -func (s *StreamImpl) Stop() { +func (s *adsStreamImpl) Stop() { s.cancel() s.requestCh.Close() <-s.runnerDoneCh - s.logger.Infof("Stopping ADS stream") + s.logger.Infof("Shutdown ADS stream") } -// Subscribe subscribes to the given resource. It is assumed that multiple +// subscribe subscribes to the given resource. It is assumed that multiple // subscriptions for the same resource is deduped at the caller. A discovery // request is sent out on the underlying stream for the resource type when there // is sufficient flow control quota. -func (s *StreamImpl) Subscribe(typ xdsresource.Type, name string) { +func (s *adsStreamImpl) subscribe(typ ResourceType, name string) { if s.logger.V(2) { - s.logger.Infof("Subscribing to resource %q of type %q", name, typ.TypeName()) + s.logger.Infof("Subscribing to resource %q of type %q", name, typ.TypeName) } s.mu.Lock() @@ -195,7 +172,7 @@ func (s *StreamImpl) Subscribe(typ xdsresource.Type, name string) { // An entry in the type state map is created as part of the first // subscription request for this type. state = &resourceTypeState{ - subscribedResources: make(map[string]*ResourceWatchState), + subscribedResources: make(map[string]*xdsresource.ResourceWatchState), bufferedRequests: make(chan struct{}, 1), } s.resourceTypeState[typ] = state @@ -203,7 +180,7 @@ func (s *StreamImpl) Subscribe(typ xdsresource.Type, name string) { // Create state for the newly subscribed resource. The watch timer will // be started when a request for this resource is actually sent out. - state.subscribedResources[name] = &ResourceWatchState{State: ResourceWatchStateStarted} + state.subscribedResources[name] = &xdsresource.ResourceWatchState{State: xdsresource.ResourceWatchStateStarted} state.pendingWrite = true // Send a request for the resource type with updated subscriptions. @@ -214,9 +191,9 @@ func (s *StreamImpl) Subscribe(typ xdsresource.Type, name string) { // the given resource does not exist. The watch expiry timer associated with the // resource is stopped if one is active. A discovery request is sent out on the // stream for the resource type when there is sufficient flow control quota. -func (s *StreamImpl) Unsubscribe(typ xdsresource.Type, name string) { +func (s *adsStreamImpl) Unsubscribe(typ ResourceType, name string) { if s.logger.V(2) { - s.logger.Infof("Unsubscribing to resource %q of type %q", name, typ.TypeName()) + s.logger.Infof("Unsubscribing to resource %q of type %q", name, typ.TypeName) } s.mu.Lock() @@ -246,13 +223,13 @@ func (s *StreamImpl) Unsubscribe(typ xdsresource.Type, name string) { // messages on the stream. Whenever an existing stream fails, it performs // exponential backoff (if no messages were received on that stream) before // creating a new stream. -func (s *StreamImpl) runner(ctx context.Context) { +func (s *adsStreamImpl) runner(ctx context.Context) { defer close(s.runnerDoneCh) go s.send(ctx) runStreamWithBackoff := func() error { - stream, err := s.transport.CreateStreamingCall(ctx, "/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources") + stream, err := s.transport.NewStream(ctx, "/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources") if err != nil { s.logger.Warningf("Failed to create a new ADS streaming RPC: %v", err) s.onError(err, false) @@ -291,9 +268,9 @@ func (s *StreamImpl) runner(ctx context.Context) { // two scenarios: // - a new subscription or unsubscription request is received // - a new stream is created after the previous one failed -func (s *StreamImpl) send(ctx context.Context) { +func (s *adsStreamImpl) send(ctx context.Context) { // Stores the most recent stream instance received on streamCh. - var stream transport.StreamingCall + var stream clients.Stream for { select { case <-ctx.Done(): @@ -311,7 +288,7 @@ func (s *StreamImpl) send(ctx context.Context) { } s.requestCh.Load() - typ := req.(xdsresource.Type) + typ := req.(ResourceType) if err := s.sendNew(stream, typ); err != nil { stream = nil continue @@ -325,7 +302,7 @@ func (s *StreamImpl) send(ctx context.Context) { // and will be sent later. This method also starts the watch expiry timer for // resources that were sent in the request for the first time, i.e. their watch // state is `watchStateStarted`. -func (s *StreamImpl) sendNew(stream transport.StreamingCall, typ xdsresource.Type) error { +func (s *adsStreamImpl) sendNew(stream clients.Stream, typ ResourceType) error { s.mu.Lock() defer s.mu.Unlock() @@ -356,7 +333,7 @@ func (s *StreamImpl) sendNew(stream transport.StreamingCall, typ xdsresource.Typ // recovering from a broken stream. // // The stream argument is guaranteed to be non-nil. -func (s *StreamImpl) sendExisting(stream transport.StreamingCall) error { +func (s *adsStreamImpl) sendExisting(stream clients.Stream) error { s.mu.Lock() defer s.mu.Unlock() @@ -391,7 +368,7 @@ func (s *StreamImpl) sendExisting(stream transport.StreamingCall) error { // received response was not yet complete. // // The stream argument is guaranteed to be non-nil. -func (s *StreamImpl) sendBuffered(stream transport.StreamingCall) error { +func (s *adsStreamImpl) sendBuffered(stream clients.Stream) error { s.mu.Lock() defer s.mu.Unlock() @@ -416,16 +393,16 @@ func (s *StreamImpl) sendBuffered(stream transport.StreamingCall) error { // watch timers are started for the resources in the request. // // Caller needs to hold c.mu. -func (s *StreamImpl) sendMessageIfWritePendingLocked(stream transport.StreamingCall, typ xdsresource.Type, state *resourceTypeState) error { +func (s *adsStreamImpl) sendMessageIfWritePendingLocked(stream clients.Stream, typ ResourceType, state *resourceTypeState) error { if !state.pendingWrite { if s.logger.V(2) { - s.logger.Infof("Skipping sending request for type %q, because all subscribed resources were already sent", typ.TypeURL()) + s.logger.Infof("Skipping sending request for type %q, because all subscribed resources were already sent", typ.TypeURL) } return nil } names := resourceNames(state.subscribedResources) - if err := s.sendMessageLocked(stream, names, typ.TypeURL(), state.version, state.nonce, nil); err != nil { + if err := s.sendMessageLocked(stream, names, typ.TypeURL, state.version, state.nonce, nil); err != nil { return err } state.pendingWrite = false @@ -446,7 +423,7 @@ func (s *StreamImpl) sendMessageIfWritePendingLocked(stream transport.StreamingC // error if the request could not be sent. // // Caller needs to hold c.mu. -func (s *StreamImpl) sendMessageLocked(stream transport.StreamingCall, names []string, url, version, nonce string, nackErr error) error { +func (s *adsStreamImpl) sendMessageLocked(stream clients.Stream, names []string, url, version, nonce string, nackErr error) error { req := &v3discoverypb.DiscoveryRequest{ ResourceNames: names, TypeUrl: url, @@ -463,11 +440,16 @@ func (s *StreamImpl) sendMessageLocked(stream transport.StreamingCall, names []s if nackErr != nil { req.ErrorDetail = &statuspb.Status{ - Code: int32(codes.InvalidArgument), Message: nackErr.Error(), + Code: int32(cpb.Code_INVALID_ARGUMENT), Message: nackErr.Error(), } } - if err := stream.Send(req); err != nil { + msg, err := proto.Marshal(req) + if err != nil { + s.logger.Warningf("Failed to marshal DiscoveryRequest: %v", err) + return err + } + if err := stream.Send(msg); err != nil { s.logger.Warningf("Sending ADS request for type %q, resources: %v, version: %q, nonce: %q failed: %v", url, names, version, nonce, err) return err } @@ -494,7 +476,7 @@ func (s *StreamImpl) sendMessageLocked(stream transport.StreamingCall, names []s // // It returns a boolean indicating whether at least one message was received // from the server. -func (s *StreamImpl) recv(ctx context.Context, stream transport.StreamingCall) bool { +func (s *adsStreamImpl) recv(ctx context.Context, stream clients.Stream) bool { msgReceived := false for { // Wait for ADS stream level flow control to be available, and send out @@ -518,20 +500,20 @@ func (s *StreamImpl) recv(ctx context.Context, stream transport.StreamingCall) b // Invoke the onResponse event handler to parse the incoming message and // decide whether to send an ACK or NACK. - resp := Response{ - Resources: resources, - TypeURL: url, - Version: version, + resp := response{ + resources: resources, + typeURL: url, + version: version, } var resourceNames []string var nackErr error s.fc.setPending() - resourceNames, nackErr = s.eventHandler.OnADSResponse(resp, s.fc.onDone) + resourceNames, nackErr = s.eventHandler.onResponse(resp, s.fc.onDone) if xdsresource.ErrType(nackErr) == xdsresource.ErrorTypeResourceTypeUnsupported { - // Based on gRFC A27, a general guiding principle is that if the - // server sends something the client didn't actually subscribe to, - // then the client ignores it. Here, we have received a response - // with resources of a type that we don't know about. + // A general guiding principle is that if the server sends + // something the client didn't actually subscribe to, then the + // client ignores it. Here, we have received a response with + // resources of a type that we don't know about. // // Sending a NACK doesn't really seem appropriate here, since we're // not actually validating what the server sent and therefore don't @@ -545,19 +527,18 @@ func (s *StreamImpl) recv(ctx context.Context, stream transport.StreamingCall) b } } -func (s *StreamImpl) recvMessage(stream transport.StreamingCall) (resources []*anypb.Any, url, version, nonce string, err error) { +func (s *adsStreamImpl) recvMessage(stream clients.Stream) (resources []*anypb.Any, url, version, nonce string, err error) { r, err := stream.Recv() if err != nil { return nil, "", "", "", err } - resp, ok := r.(*v3discoverypb.DiscoveryResponse) - if !ok { - s.logger.Infof("Message received on ADS stream of unexpected type: %T", r) + var resp v3discoverypb.DiscoveryResponse + if err := proto.Unmarshal(r, &resp); err != nil { + s.logger.Infof("Failed to unmarshal response to DiscoveryResponse: %v", err) return nil, "", "", "", fmt.Errorf("unexpected message type %T", r) } - if s.logger.V(perRPCVerbosityLevel) { - s.logger.Infof("ADS response received: %v", pretty.ToJSON(resp)) + s.logger.Infof("ADS response received: %v", pretty.ToJSON(&resp)) } else if s.logger.V(2) { s.logger.Infof("ADS response received for type %q, version %q, nonce %q", resp.GetTypeUrl(), resp.GetVersionInfo(), resp.GetNonce()) } @@ -571,14 +552,14 @@ func (s *StreamImpl) recvMessage(stream transport.StreamingCall) (resources []*a // - updates resource type specific state // - updates resource specific state for resources in the response // - sends an ACK or NACK to the server based on the response -func (s *StreamImpl) onRecv(stream transport.StreamingCall, names []string, url, version, nonce string, nackErr error) { +func (s *adsStreamImpl) onRecv(stream clients.Stream, names []string, url, version, nonce string, nackErr error) { s.mu.Lock() defer s.mu.Unlock() // Lookup the resource type specific state based on the type URL. - var typ xdsresource.Type + var typ ResourceType for t := range s.resourceTypeState { - if t.TypeURL() == url { + if t.TypeURL == url { typ = t break } @@ -609,8 +590,8 @@ func (s *StreamImpl) onRecv(stream transport.StreamingCall, names []string, url, s.logger.Warningf("ADS stream received a response for resource %q, but no state exists for it", name) continue } - if ws := rs.State; ws == ResourceWatchStateStarted || ws == ResourceWatchStateRequested { - rs.State = ResourceWatchStateReceived + if ws := rs.State; ws == xdsresource.ResourceWatchStateStarted || ws == xdsresource.ResourceWatchStateRequested { + rs.State = xdsresource.ResourceWatchStateReceived if rs.ExpiryTimer != nil { rs.ExpiryTimer.Stop() rs.ExpiryTimer = nil @@ -637,7 +618,7 @@ func (s *StreamImpl) onRecv(stream transport.StreamingCall, names []string, url, // resources that were in the requested state. It also handles the case where // the ADS stream was closed after receiving a response, which is not // considered an error. -func (s *StreamImpl) onError(err error, msgReceived bool) { +func (s *adsStreamImpl) onError(err error, msgReceived bool) { // For resources that been requested but not yet responded to by the // management server, stop the resource timers and reset the watch state to // watchStateStarted. This is because we don't want the expiry timer to be @@ -645,14 +626,14 @@ func (s *StreamImpl) onError(err error, msgReceived bool) { s.mu.Lock() for _, state := range s.resourceTypeState { for _, rs := range state.subscribedResources { - if rs.State != ResourceWatchStateRequested { + if rs.State != xdsresource.ResourceWatchStateRequested { continue } if rs.ExpiryTimer != nil { rs.ExpiryTimer.Stop() rs.ExpiryTimer = nil } - rs.State = ResourceWatchStateStarted + rs.State = xdsresource.ResourceWatchStateStarted } } s.mu.Unlock() @@ -667,7 +648,7 @@ func (s *StreamImpl) onError(err error, msgReceived bool) { err = xdsresource.NewError(xdsresource.ErrTypeStreamFailedAfterRecv, err.Error()) } - s.eventHandler.OnADSStreamError(err) + s.eventHandler.onStreamError(err) } // startWatchTimersLocked starts the expiry timers for the given resource names @@ -677,84 +658,52 @@ func (s *StreamImpl) onError(err error, msgReceived bool) { // watch state is set to "timeout" and the event handler callback is called. // // The caller must hold the s.mu lock. -func (s *StreamImpl) startWatchTimersLocked(typ xdsresource.Type, names []string) { +func (s *adsStreamImpl) startWatchTimersLocked(typ ResourceType, names []string) { typeState := s.resourceTypeState[typ] for _, name := range names { resourceState, ok := typeState.subscribedResources[name] if !ok { continue } - if resourceState.State != ResourceWatchStateStarted { + if resourceState.State != xdsresource.ResourceWatchStateStarted { continue } - resourceState.State = ResourceWatchStateRequested + resourceState.State = xdsresource.ResourceWatchStateRequested rs := resourceState resourceState.ExpiryTimer = time.AfterFunc(s.watchExpiryTimeout, func() { s.mu.Lock() - rs.State = ResourceWatchStateTimeout + rs.State = xdsresource.ResourceWatchStateTimeout rs.ExpiryTimer = nil s.mu.Unlock() - s.eventHandler.OnADSWatchExpiry(typ, name) + s.eventHandler.onWatchExpiry(typ, name) }) } } -func resourceNames(m map[string]*ResourceWatchState) []string { - ret := make([]string, len(m)) - idx := 0 - for name := range m { - ret[idx] = name - idx++ - } - return ret -} - -// TriggerResourceNotFoundForTesting triggers a resource not found event for the -// given resource type and name. This is intended for testing purposes only, to -// simulate a resource not found scenario. -func (s *StreamImpl) TriggerResourceNotFoundForTesting(typ xdsresource.Type, resourceName string) { +func (s *adsStreamImpl) adsResourceWatchStateForTesting(rType ResourceType, resourceName string) (xdsresource.ResourceWatchState, error) { s.mu.Lock() + defer s.mu.Unlock() - state, ok := s.resourceTypeState[typ] + state, ok := s.resourceTypeState[rType] if !ok { - s.mu.Unlock() - return + return xdsresource.ResourceWatchState{}, fmt.Errorf("unknown resource type: %v", rType) } resourceState, ok := state.subscribedResources[resourceName] if !ok { - s.mu.Unlock() - return + return xdsresource.ResourceWatchState{}, fmt.Errorf("unknown resource name: %v", resourceName) } - - if s.logger.V(2) { - s.logger.Infof("Triggering resource not found for type: %s, resource name: %s", typ.TypeName(), resourceName) - } - resourceState.State = ResourceWatchStateTimeout - if resourceState.ExpiryTimer != nil { - resourceState.ExpiryTimer.Stop() - resourceState.ExpiryTimer = nil - } - s.mu.Unlock() - go s.eventHandler.OnADSWatchExpiry(typ, resourceName) + return *resourceState, nil } -// ResourceWatchStateForTesting returns the ResourceWatchState for the given -// resource type and name. This is intended for testing purposes only, to -// inspect the internal state of the ADS stream. -func (s *StreamImpl) ResourceWatchStateForTesting(typ xdsresource.Type, resourceName string) (ResourceWatchState, error) { - s.mu.Lock() - defer s.mu.Unlock() - - state, ok := s.resourceTypeState[typ] - if !ok { - return ResourceWatchState{}, fmt.Errorf("unknown resource type: %v", typ) - } - resourceState, ok := state.subscribedResources[resourceName] - if !ok { - return ResourceWatchState{}, fmt.Errorf("unknown resource name: %v", resourceName) +func resourceNames(m map[string]*xdsresource.ResourceWatchState) []string { + ret := make([]string, len(m)) + idx := 0 + for name := range m { + ret[idx] = name + idx++ } - return *resourceState, nil + return ret } // adsFlowControl implements ADS stream level flow control that enables the diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/authority.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/authority.go similarity index 83% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/authority.go rename to vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/authority.go index 05c3e49b2..7a3a29691 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/authority.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/authority.go @@ -1,6 +1,6 @@ /* * - * Copyright 2021 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ * 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 xdsclient @@ -23,13 +24,12 @@ import ( "sync" "sync/atomic" - "google.golang.org/grpc/experimental/stats" "google.golang.org/grpc/grpclog" igrpclog "google.golang.org/grpc/internal/grpclog" - "google.golang.org/grpc/internal/grpcsync" - "google.golang.org/grpc/internal/xds/bootstrap" - "google.golang.org/grpc/xds/internal/xdsclient/transport/ads" - "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/internal/syncutil" + "google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource" + "google.golang.org/grpc/xds/internal/clients/xdsclient/metrics" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" @@ -38,11 +38,11 @@ import ( ) type resourceState struct { - watchers map[xdsresource.ResourceWatcher]bool // Set of watchers for this resource. - cache xdsresource.ResourceData // Most recent ACKed update for this resource. - md xdsresource.UpdateMetadata // Metadata for the most recent update. - deletionIgnored bool // True, if resource deletion was ignored for a prior update. - xdsChannelConfigs map[*xdsChannelWithConfig]bool // Set of xdsChannels where this resource is subscribed. + watchers map[ResourceWatcher]bool // Set of watchers for this resource. + cache ResourceData // Most recent ACKed update for this resource. + md xdsresource.UpdateMetadata // Metadata for the most recent update. + deletionIgnored bool // True, if resource deletion was ignored for a prior update. + xdsChannelConfigs map[*xdsChannelWithConfig]bool // Set of xdsChannels where this resource is subscribed. } // xdsChannelForADS is used to acquire a reference to an xdsChannel. This @@ -56,22 +56,22 @@ type resourceState struct { // Returns a reference to the xdsChannel and a function to release the same. A // non-nil error is returned if the channel creation fails and the first two // return values are meaningless in this case. -type xdsChannelForADS func(*bootstrap.ServerConfig, *authority) (*xdsChannel, func(), error) +type xdsChannelForADS func(*ServerConfig, *authority) (*xdsChannel, func(), error) // xdsChannelWithConfig is a struct that holds an xdsChannel and its associated // ServerConfig, along with a cleanup function to release the xdsChannel. type xdsChannelWithConfig struct { channel *xdsChannel - serverConfig *bootstrap.ServerConfig + serverConfig *ServerConfig cleanup func() } // authority provides the functionality required to communicate with a // management server corresponding to an authority name specified in the -// bootstrap configuration. +// xDS client configuration. // // It holds references to one or more xdsChannels, one for each server -// configuration in the bootstrap, to allow fallback from a primary management +// configuration in the config, to allow fallback from a primary management // server to a secondary management server. Authorities that contain similar // server configuration entries will end up sharing the xdsChannel for that // server configuration. The xdsChannels are owned and managed by the xdsClient. @@ -82,14 +82,14 @@ type xdsChannelWithConfig struct { type authority struct { // The following fields are initialized at creation time and are read-only // afterwards, and therefore don't need to be protected with a mutex. - name string // Name of the authority from bootstrap configuration. - watcherCallbackSerializer *grpcsync.CallbackSerializer // Serializer to run watcher callbacks, owned by the xDS client implementation. + name string // Name of the authority from xDS client configuration. + watcherCallbackSerializer *syncutil.CallbackSerializer // Serializer to run watcher callbacks, owned by the xDS client implementation. getChannelForADS xdsChannelForADS // Function to get an xdsChannel for ADS, provided by the xDS client implementation. - xdsClientSerializer *grpcsync.CallbackSerializer // Serializer to run call ins from the xDS client, owned by this authority. + xdsClientSerializer *syncutil.CallbackSerializer // Serializer to run call ins from the xDS client, owned by this authority. xdsClientSerializerClose func() // Function to close the above serializer. logger *igrpclog.PrefixLogger // Logger for this authority. target string // The gRPC Channel target. - metricsRecorder stats.MetricsRecorder // The metrics recorder used for emitting metrics. + metricsReporter clients.MetricsReporter // The below defined fields must only be accessed in the context of the // serializer callback, owned by this authority. @@ -102,10 +102,10 @@ type authority struct { // // The second level map key is the resource name, with the value being the // actual state of the resource. - resources map[xdsresource.Type]map[string]*resourceState + resources map[ResourceType]map[string]*resourceState // An ordered list of xdsChannels corresponding to the list of server - // configurations specified for this authority in the bootstrap. The + // configurations specified for this authority in the config. The // ordering specifies the order in which these channels are preferred for // fallback. xdsChannelConfigs []*xdsChannelWithConfig @@ -118,13 +118,13 @@ type authority struct { // authorityBuildOptions wraps arguments required to create a new authority. type authorityBuildOptions struct { - serverConfigs bootstrap.ServerConfigs // Server configs for the authority + serverConfigs []ServerConfig // Server configs for the authority name string // Name of the authority - serializer *grpcsync.CallbackSerializer // Callback serializer for invoking watch callbacks + serializer *syncutil.CallbackSerializer // Callback serializer for invoking watch callbacks getChannelForADS xdsChannelForADS // Function to acquire a reference to an xdsChannel logPrefix string // Prefix for logging target string // Target for the gRPC Channel that owns xDS Client/Authority - metricsRecorder stats.MetricsRecorder // metricsRecorder to emit metrics + metricsReporter clients.MetricsReporter // Metrics reporter for the authority } // newAuthority creates a new authority instance with the provided @@ -144,12 +144,12 @@ func newAuthority(args authorityBuildOptions) *authority { name: args.name, watcherCallbackSerializer: args.serializer, getChannelForADS: args.getChannelForADS, - xdsClientSerializer: grpcsync.NewCallbackSerializer(ctx), + xdsClientSerializer: syncutil.NewCallbackSerializer(ctx), xdsClientSerializerClose: cancel, logger: igrpclog.NewPrefixLogger(l, logPrefix), - resources: make(map[xdsresource.Type]map[string]*resourceState), + resources: make(map[ResourceType]map[string]*resourceState), target: args.target, - metricsRecorder: args.metricsRecorder, + metricsReporter: args.metricsReporter, } // Create an ordered list of xdsChannels with their server configs. The @@ -157,7 +157,7 @@ func newAuthority(args authorityBuildOptions) *authority { // first watch is registered, and channels to other server configurations // are created as needed to support fallback. for _, sc := range args.serverConfigs { - ret.xdsChannelConfigs = append(ret.xdsChannelConfigs, &xdsChannelWithConfig{serverConfig: sc}) + ret.xdsChannelConfigs = append(ret.xdsChannelConfigs, &xdsChannelWithConfig{serverConfig: &sc}) } return ret } @@ -170,7 +170,7 @@ func newAuthority(args authorityBuildOptions) *authority { // authorities) when a stream error is reported by an xdsChannel. // // Errors of type xdsresource.ErrTypeStreamFailedAfterRecv are ignored. -func (a *authority) adsStreamFailure(serverConfig *bootstrap.ServerConfig, err error) { +func (a *authority) adsStreamFailure(serverConfig *ServerConfig, err error) { a.xdsClientSerializer.TrySchedule(func(context.Context) { a.handleADSStreamFailure(serverConfig, err) }) @@ -180,7 +180,7 @@ func (a *authority) adsStreamFailure(serverConfig *bootstrap.ServerConfig, err e // fallback if the associated conditions are met. // // Only executed in the context of a serializer callback. -func (a *authority) handleADSStreamFailure(serverConfig *bootstrap.ServerConfig, err error) { +func (a *authority) handleADSStreamFailure(serverConfig *ServerConfig, err error) { if a.logger.V(2) { a.logger.Infof("Connection to server %s failed with error: %v", serverConfig, err) } @@ -238,9 +238,15 @@ func (a *authority) propagateConnectivityErrorToAllWatchers(err error) { for _, rType := range a.resources { for _, state := range rType { for watcher := range state.watchers { - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { - watcher.OnError(xdsresource.NewErrorf(xdsresource.ErrorTypeConnection, "xds: error received from xDS stream: %v", err), func() {}) - }) + if state.cache == nil { + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { + watcher.ResourceError(xdsresource.NewErrorf(xdsresource.ErrorTypeConnection, "xds: error received from xDS stream: %v", err), func() {}) + }) + } else { + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { + watcher.AmbientError(xdsresource.NewErrorf(xdsresource.ErrorTypeConnection, "xds: error received from xDS stream: %v", err), func() {}) + }) + } } } } @@ -249,9 +255,9 @@ func (a *authority) propagateConnectivityErrorToAllWatchers(err error) { // serverIndexForConfig returns the index of the xdsChannelConfig matching the // provided server config, panicking if no match is found (which indicates a // programming error). -func (a *authority) serverIndexForConfig(sc *bootstrap.ServerConfig) int { +func (a *authority) serverIndexForConfig(sc *ServerConfig) int { for i, cfg := range a.xdsChannelConfigs { - if cfg.serverConfig.Equal(sc) { + if isServerConfigEqual(sc, cfg.serverConfig) { return i } } @@ -288,7 +294,7 @@ func (a *authority) fallbackToServer(xc *xdsChannelWithConfig) bool { for typ, resources := range a.resources { for name, state := range resources { if a.logger.V(2) { - a.logger.Infof("Resubscribing to resource of type %q and name %q", typ.TypeName(), name) + a.logger.Infof("Resubscribing to resource of type %q and name %q", typ.TypeName, name) } xc.channel.subscribe(typ, name) @@ -307,7 +313,7 @@ func (a *authority) fallbackToServer(xc *xdsChannelWithConfig) bool { // // This method is called by the xDS client implementation (on all interested // authorities) when a stream error is reported by an xdsChannel. -func (a *authority) adsResourceUpdate(serverConfig *bootstrap.ServerConfig, rType xdsresource.Type, updates map[string]ads.DataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { +func (a *authority) adsResourceUpdate(serverConfig *ServerConfig, rType ResourceType, updates map[string]dataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { a.xdsClientSerializer.TrySchedule(func(context.Context) { a.handleADSResourceUpdate(serverConfig, rType, updates, md, onDone) }) @@ -323,7 +329,7 @@ func (a *authority) adsResourceUpdate(serverConfig *bootstrap.ServerConfig, rTyp // to invoke the onDone callback. // // Only executed in the context of a serializer callback. -func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig, rType xdsresource.Type, updates map[string]ads.DataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { +func (a *authority) handleADSResourceUpdate(serverConfig *ServerConfig, rType ResourceType, updates map[string]dataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { a.handleRevertingToPrimaryOnUpdate(serverConfig) // We build a list of callback funcs to invoke, and invoke them at the end @@ -362,33 +368,45 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig // On error, keep previous version of the resource. But update status // and error. if uErr.Err != nil { - xdsClientResourceUpdatesInvalidMetric.Record(a.metricsRecorder, 1, a.target, serverConfig.ServerURI(), rType.TypeName()) + if a.metricsReporter != nil { + a.metricsReporter.ReportMetric(&metrics.ResourceUpdateInvalid{ + ServerURI: serverConfig.ServerIdentifier.ServerURI, ResourceType: rType.TypeName, + }) + } state.md.ErrState = md.ErrState state.md.Status = md.Status for watcher := range state.watchers { watcher := watcher err := uErr.Err watcherCnt.Add(1) - funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.OnError(err, done) }) + if state.cache == nil { + funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.ResourceError(err, done) }) + } else { + funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.AmbientError(err, done) }) + } } continue } - xdsClientResourceUpdatesValidMetric.Record(a.metricsRecorder, 1, a.target, serverConfig.ServerURI(), rType.TypeName()) + if a.metricsReporter != nil { + a.metricsReporter.ReportMetric(&metrics.ResourceUpdateValid{ + ServerURI: serverConfig.ServerIdentifier.ServerURI, ResourceType: rType.TypeName, + }) + } if state.deletionIgnored { state.deletionIgnored = false - a.logger.Infof("A valid update was received for resource %q of type %q after previously ignoring a deletion", name, rType.TypeName()) + a.logger.Infof("A valid update was received for resource %q of type %q after previously ignoring a deletion", name, rType.TypeName) } // Notify watchers if any of these conditions are met: // - this is the first update for this resource // - this update is different from the one currently cached // - the previous update for this resource was NACKed, but the update // before that was the same as this update. - if state.cache == nil || !state.cache.RawEqual(uErr.Resource) || state.md.ErrState != nil { + if state.cache == nil || !state.cache.Equal(uErr.Resource) || state.md.ErrState != nil { // Update the resource cache. if a.logger.V(2) { - a.logger.Infof("Resource type %q with name %q added to cache", rType.TypeName(), name) + a.logger.Infof("Resource type %q with name %q added to cache", rType.TypeName, name) } state.cache = uErr.Resource @@ -396,7 +414,7 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig watcher := watcher resource := uErr.Resource watcherCnt.Add(1) - funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.OnUpdate(resource, done) }) + funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.ResourceChanged(resource, done) }) } } @@ -416,7 +434,7 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig // previously seen resource will be interpreted as a deletion of that // resource unless ignore_resource_deletion option was set in the server // config. - if !rType.AllResourcesRequiredInSotW() { + if !rType.AllResourcesRequiredInSotW { return } for name, state := range resourceStates { @@ -449,16 +467,16 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig // "resource-not-found" error. continue } - if serverConfig.ServerFeaturesIgnoreResourceDeletion() { + if serverConfig.IgnoreResourceDeletion { // Per A53, resource deletions are ignored if the // `ignore_resource_deletion` server feature is enabled through the - // bootstrap configuration. If the resource deletion is to be + // xDS client configuration. If the resource deletion is to be // ignored, the resource is not removed from the cache and the // corresponding OnResourceDoesNotExist() callback is not invoked on // the watchers. if !state.deletionIgnored { state.deletionIgnored = true - a.logger.Warningf("Ignoring resource deletion for resource %q of type %q", name, rType.TypeName()) + a.logger.Warningf("Ignoring resource deletion for resource %q of type %q", name, rType.TypeName) } continue } @@ -473,7 +491,9 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig for watcher := range state.watchers { watcher := watcher watcherCnt.Add(1) - funcsToSchedule = append(funcsToSchedule, func(context.Context) { watcher.OnResourceDoesNotExist(done) }) + funcsToSchedule = append(funcsToSchedule, func(context.Context) { + watcher.ResourceError(xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q has been removed", name, rType.TypeName), done) + }) } } } @@ -481,7 +501,7 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig // adsResourceDoesNotExist is called by the xDS client implementation (on all // interested authorities) to notify the authority that a subscribed resource // does not exist. -func (a *authority) adsResourceDoesNotExist(rType xdsresource.Type, resourceName string) { +func (a *authority) adsResourceDoesNotExist(rType ResourceType, resourceName string) { a.xdsClientSerializer.TrySchedule(func(context.Context) { a.handleADSResourceDoesNotExist(rType, resourceName) }) @@ -491,22 +511,22 @@ func (a *authority) adsResourceDoesNotExist(rType xdsresource.Type, resourceName // exist. It removes the resource from the cache, updates the metadata status // to ServiceStatusNotExist, and notifies all watchers that the resource does // not exist. -func (a *authority) handleADSResourceDoesNotExist(rType xdsresource.Type, resourceName string) { +func (a *authority) handleADSResourceDoesNotExist(rType ResourceType, resourceName string) { if a.logger.V(2) { - a.logger.Infof("Watch for resource %q of type %s timed out", resourceName, rType.TypeName()) + a.logger.Infof("Watch for resource %q of type %s timed out", resourceName, rType.TypeName) } resourceStates := a.resources[rType] if resourceStates == nil { if a.logger.V(2) { - a.logger.Infof("Resource %q of type %s currently not being watched", resourceName, rType.TypeName()) + a.logger.Infof("Resource %q of type %s currently not being watched", resourceName, rType.TypeName) } return } state, ok := resourceStates[resourceName] if !ok { if a.logger.V(2) { - a.logger.Infof("Resource %q of type %s currently not being watched", resourceName, rType.TypeName()) + a.logger.Infof("Resource %q of type %s currently not being watched", resourceName, rType.TypeName) } return } @@ -515,7 +535,9 @@ func (a *authority) handleADSResourceDoesNotExist(rType xdsresource.Type, resour state.md = xdsresource.UpdateMetadata{Status: xdsresource.ServiceStatusNotExist} for watcher := range state.watchers { watcher := watcher - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.OnResourceDoesNotExist(func() {}) }) + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { + watcher.ResourceError(xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q has been removed", resourceName, rType.TypeName), func() {}) + }) } } @@ -527,8 +549,8 @@ func (a *authority) handleADSResourceDoesNotExist(rType xdsresource.Type, resour // highest priority server that sent the update. // // This method is only executed in the context of a serializer callback. -func (a *authority) handleRevertingToPrimaryOnUpdate(serverConfig *bootstrap.ServerConfig) { - if a.activeXDSChannel != nil && a.activeXDSChannel.serverConfig.Equal(serverConfig) { +func (a *authority) handleRevertingToPrimaryOnUpdate(serverConfig *ServerConfig) { + if a.activeXDSChannel != nil && isServerConfigEqual(serverConfig, a.activeXDSChannel.serverConfig) { // If the resource update is from the current active server, nothing // needs to be done from fallback point of view. return @@ -593,7 +615,7 @@ func (a *authority) handleRevertingToPrimaryOnUpdate(serverConfig *bootstrap.Ser // the resource with the xdsChannel. If a cached copy of the resource exists, it // will immediately notify the new watcher. When the last watcher for a resource // is removed, it will unsubscribe the resource from the xdsChannel. -func (a *authority) watchResource(rType xdsresource.Type, resourceName string, watcher xdsresource.ResourceWatcher) func() { +func (a *authority) watchResource(rType ResourceType, resourceName string, watcher ResourceWatcher) func() { cleanup := func() {} done := make(chan struct{}) @@ -601,12 +623,12 @@ func (a *authority) watchResource(rType xdsresource.Type, resourceName string, w defer close(done) if a.logger.V(2) { - a.logger.Infof("New watch for type %q, resource name %q", rType.TypeName(), resourceName) + a.logger.Infof("New watch for type %q, resource name %q", rType.TypeName, resourceName) } xdsChannel, err := a.xdsChannelToUse() if err != nil { - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.OnError(err, func() {}) }) + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.ResourceError(err, func() {}) }) return } @@ -624,10 +646,10 @@ func (a *authority) watchResource(rType xdsresource.Type, resourceName string, w state := resources[resourceName] if state == nil { if a.logger.V(2) { - a.logger.Infof("First watch for type %q, resource name %q", rType.TypeName(), resourceName) + a.logger.Infof("First watch for type %q, resource name %q", rType.TypeName, resourceName) } state = &resourceState{ - watchers: make(map[xdsresource.ResourceWatcher]bool), + watchers: make(map[ResourceWatcher]bool), md: xdsresource.UpdateMetadata{Status: xdsresource.ServiceStatusRequested}, xdsChannelConfigs: map[*xdsChannelWithConfig]bool{xdsChannel: true}, } @@ -641,35 +663,41 @@ func (a *authority) watchResource(rType xdsresource.Type, resourceName string, w // immediately. if state.cache != nil { if a.logger.V(2) { - a.logger.Infof("Resource type %q with resource name %q found in cache: %s", rType.TypeName(), resourceName, state.cache.ToJSON()) + a.logger.Infof("Resource type %q with resource name %q found in cache: %v", rType.TypeName, resourceName, state.cache) } // state can only be accessed in the context of an // xdsClientSerializer callback. Hence making a copy of the cached // resource here for watchCallbackSerializer. resource := state.cache - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.OnUpdate(resource, func() {}) }) + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.ResourceChanged(resource, func() {}) }) } // If last update was NACK'd, notify the new watcher of error // immediately as well. if state.md.Status == xdsresource.ServiceStatusNACKed { if a.logger.V(2) { - a.logger.Infof("Resource type %q with resource name %q was NACKed", rType.TypeName(), resourceName) + a.logger.Infof("Resource type %q with resource name %q was NACKed", rType.TypeName, resourceName) } // state can only be accessed in the context of an // xdsClientSerializer callback. Hence making a copy of the error // here for watchCallbackSerializer. err := state.md.ErrState.Err - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.OnError(err, func() {}) }) + if state.cache == nil { + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.ResourceError(err, func() {}) }) + } else { + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.AmbientError(err, func() {}) }) + } } // If the metadata field is updated to indicate that the management // server does not have this resource, notify the new watcher. if state.md.Status == xdsresource.ServiceStatusNotExist { - a.watcherCallbackSerializer.TrySchedule(func(context.Context) { watcher.OnResourceDoesNotExist(func() {}) }) + a.watcherCallbackSerializer.TrySchedule(func(context.Context) { + watcher.ResourceError(xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q has been removed", resourceName, rType.TypeName), func() {}) + }) } cleanup = a.unwatchResource(rType, resourceName, watcher) }, func() { if a.logger.V(2) { - a.logger.Infof("Failed to schedule a watch for type %q, resource name %q, because the xDS client is closed", rType.TypeName(), resourceName) + a.logger.Infof("Failed to schedule a watch for type %q, resource name %q, because the xDS client is closed", rType.TypeName, resourceName) } close(done) }) @@ -677,14 +705,14 @@ func (a *authority) watchResource(rType xdsresource.Type, resourceName string, w return cleanup } -func (a *authority) unwatchResource(rType xdsresource.Type, resourceName string, watcher xdsresource.ResourceWatcher) func() { +func (a *authority) unwatchResource(rType ResourceType, resourceName string, watcher ResourceWatcher) func() { return sync.OnceFunc(func() { done := make(chan struct{}) a.xdsClientSerializer.ScheduleOr(func(context.Context) { defer close(done) if a.logger.V(2) { - a.logger.Infof("Canceling a watch for type %q, resource name %q", rType.TypeName(), resourceName) + a.logger.Infof("Canceling a watch for type %q, resource name %q", rType.TypeName, resourceName) } // Lookup the resource type from the resource cache. The entry is @@ -698,7 +726,7 @@ func (a *authority) unwatchResource(rType xdsresource.Type, resourceName string, delete(state.watchers, watcher) if len(state.watchers) > 0 { if a.logger.V(2) { - a.logger.Infof("Other watchers exist for type %q, resource name %q", rType.TypeName(), resourceName) + a.logger.Infof("Other watchers exist for type %q, resource name %q", rType.TypeName, resourceName) } return } @@ -718,7 +746,7 @@ func (a *authority) unwatchResource(rType xdsresource.Type, resourceName string, // resource type from the top-level map. if len(resources) == 0 { if a.logger.V(2) { - a.logger.Infof("Removing last watch for resource type %q", rType.TypeName()) + a.logger.Infof("Removing last watch for resource type %q", rType.TypeName) } delete(a.resources, rType) } @@ -811,11 +839,11 @@ func (a *authority) dumpResources() []*v3statuspb.ClientConfig_GenericXdsConfig func (a *authority) resourceConfig() []*v3statuspb.ClientConfig_GenericXdsConfig { var ret []*v3statuspb.ClientConfig_GenericXdsConfig for rType, resourceStates := range a.resources { - typeURL := rType.TypeURL() + typeURL := rType.TypeURL for name, state := range resourceStates { var raw *anypb.Any if state.cache != nil { - raw = state.cache.Raw() + raw = &anypb.Any{TypeUrl: typeURL, Value: state.cache.Bytes()} } config := &v3statuspb.ClientConfig_GenericXdsConfig{ TypeUrl: typeURL, diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/channel.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/channel.go similarity index 56% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/channel.go rename to vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/channel.go index 60ab9290b..2d424b811 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/channel.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/channel.go @@ -1,6 +1,6 @@ /* * - * Copyright 2024 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ * 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 xdsclient @@ -24,15 +25,17 @@ import ( "time" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal/backoff" igrpclog "google.golang.org/grpc/internal/grpclog" - "google.golang.org/grpc/internal/grpcsync" - "google.golang.org/grpc/internal/xds/bootstrap" - "google.golang.org/grpc/xds/internal/xdsclient/load" - "google.golang.org/grpc/xds/internal/xdsclient/transport" - "google.golang.org/grpc/xds/internal/xdsclient/transport/ads" - "google.golang.org/grpc/xds/internal/xdsclient/transport/lrs" - "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/internal" + "google.golang.org/grpc/xds/internal/clients/internal/backoff" + "google.golang.org/grpc/xds/internal/clients/internal/syncutil" + "google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource" +) + +const ( + clientFeatureNoOverprovisioning = "envoy.lb.does_not_support_overprovisioning" + clientFeatureResourceWrapper = "xds.config.resource-in-sotw" ) // xdsChannelEventHandler wraps callbacks used to notify the xDS client about @@ -51,23 +54,22 @@ type xdsChannelEventHandler interface { // - a map of resources in the response, keyed by resource name // - the metadata associated with the response // - a callback to be invoked when the updated is processed - adsResourceUpdate(xdsresource.Type, map[string]ads.DataAndErrTuple, xdsresource.UpdateMetadata, func()) + adsResourceUpdate(ResourceType, map[string]dataAndErrTuple, xdsresource.UpdateMetadata, func()) // adsResourceDoesNotExist is called when the xdsChannel determines that a // requested ADS resource does not exist. - adsResourceDoesNotExist(xdsresource.Type, string) + adsResourceDoesNotExist(ResourceType, string) } // xdsChannelOpts holds the options for creating a new xdsChannel. type xdsChannelOpts struct { - transport transport.Transport // Takes ownership of this transport. - serverConfig *bootstrap.ServerConfig // Configuration of the server to connect to. - bootstrapConfig *bootstrap.Config // Complete bootstrap configuration, used to decode resources. - resourceTypeGetter func(string) xdsresource.Type // Function to retrieve resource parsing functionality, based on resource type. - eventHandler xdsChannelEventHandler // Callbacks for ADS stream events. - backoff func(int) time.Duration // Backoff function to use for stream retries. Defaults to exponential backoff, if unset. - watchExpiryTimeout time.Duration // Timeout for ADS resource watch expiry. - logPrefix string // Prefix to use for logging. + transport clients.Transport // Takes ownership of this transport. + serverConfig *ServerConfig // Configuration of the server to connect to. + clientConfig *Config // Complete xDS client configuration, used to decode resources. + eventHandler xdsChannelEventHandler // Callbacks for ADS stream events. + backoff func(int) time.Duration // Backoff function to use for stream retries. Defaults to exponential backoff, if unset. + watchExpiryTimeout time.Duration // Timeout for ADS resource watch expiry. + logPrefix string // Prefix to use for logging. } // newXDSChannel creates a new xdsChannel instance with the provided options. @@ -76,24 +78,21 @@ type xdsChannelOpts struct { func newXDSChannel(opts xdsChannelOpts) (*xdsChannel, error) { switch { case opts.transport == nil: - return nil, errors.New("xdsChannel: transport is nil") + return nil, errors.New("xdsclient: transport is nil") case opts.serverConfig == nil: - return nil, errors.New("xdsChannel: serverConfig is nil") - case opts.bootstrapConfig == nil: - return nil, errors.New("xdsChannel: bootstrapConfig is nil") - case opts.resourceTypeGetter == nil: - return nil, errors.New("xdsChannel: resourceTypeGetter is nil") + return nil, errors.New("xdsclient: serverConfig is nil") + case opts.clientConfig == nil: + return nil, errors.New("xdsclient: clientConfig is nil") case opts.eventHandler == nil: - return nil, errors.New("xdsChannel: eventHandler is nil") + return nil, errors.New("xdsclient: eventHandler is nil") } xc := &xdsChannel{ - transport: opts.transport, - serverConfig: opts.serverConfig, - bootstrapConfig: opts.bootstrapConfig, - resourceTypeGetter: opts.resourceTypeGetter, - eventHandler: opts.eventHandler, - closed: grpcsync.NewEvent(), + transport: opts.transport, + serverConfig: opts.serverConfig, + clientConfig: opts.clientConfig, + eventHandler: opts.eventHandler, + closed: syncutil.NewEvent(), } l := grpclog.Component("xds") @@ -103,90 +102,76 @@ func newXDSChannel(opts xdsChannelOpts) (*xdsChannel, error) { if opts.backoff == nil { opts.backoff = backoff.DefaultExponential.Backoff } - xc.ads = ads.NewStreamImpl(ads.StreamOpts{ - Transport: xc.transport, - EventHandler: xc, - Backoff: opts.backoff, - NodeProto: xc.bootstrapConfig.Node(), - WatchExpiryTimeout: opts.watchExpiryTimeout, - LogPrefix: logPrefix, - }) - xc.lrs = lrs.NewStreamImpl(lrs.StreamOpts{ - Transport: xc.transport, - Backoff: opts.backoff, - NodeProto: xc.bootstrapConfig.Node(), - LogPrefix: logPrefix, + np := internal.NodeProto(opts.clientConfig.Node) + np.ClientFeatures = []string{clientFeatureNoOverprovisioning, clientFeatureResourceWrapper} + xc.ads = newADSStreamImpl(adsStreamOpts{ + transport: opts.transport, + eventHandler: xc, + backoff: opts.backoff, + nodeProto: np, + watchExpiryTimeout: opts.watchExpiryTimeout, + logPrefix: logPrefix, }) + if xc.logger.V(2) { + xc.logger.Infof("xdsChannel is created for ServerConfig %v", opts.serverConfig) + } return xc, nil } // xdsChannel represents a client channel to a management server, and is // responsible for managing the lifecycle of the ADS and LRS streams. It invokes // callbacks on the registered event handler for various ADS stream events. +// +// It is safe for concurrent use. type xdsChannel struct { // The following fields are initialized at creation time and are read-only // after that, and hence need not be guarded by a mutex. - transport transport.Transport // Takes ownership of this transport (used to make streaming calls). - ads *ads.StreamImpl // An ADS stream to the management server. - lrs *lrs.StreamImpl // An LRS stream to the management server. - serverConfig *bootstrap.ServerConfig // Configuration of the server to connect to. - bootstrapConfig *bootstrap.Config // Complete bootstrap configuration, used to decode resources. - resourceTypeGetter func(string) xdsresource.Type // Function to retrieve resource parsing functionality, based on resource type. - eventHandler xdsChannelEventHandler // Callbacks for ADS stream events. - logger *igrpclog.PrefixLogger // Logger to use for logging. - closed *grpcsync.Event // Fired when the channel is closed. + transport clients.Transport // Takes ownership of this transport (used to make streaming calls). + ads *adsStreamImpl // An ADS stream to the management server. + serverConfig *ServerConfig // Configuration of the server to connect to. + clientConfig *Config // Complete xDS client configuration, used to decode resources. + eventHandler xdsChannelEventHandler // Callbacks for ADS stream events. + logger *igrpclog.PrefixLogger // Logger to use for logging. + closed *syncutil.Event // Fired when the channel is closed. } func (xc *xdsChannel) close() { xc.closed.Fire() xc.ads.Stop() - xc.lrs.Stop() xc.transport.Close() xc.logger.Infof("Shutdown") } -// reportLoad returns a load.Store that can be used to report load to the LRS, and a -// function that can be called to stop reporting load. -func (xc *xdsChannel) reportLoad() (*load.Store, func()) { - if xc.closed.HasFired() { - if xc.logger.V(2) { - xc.logger.Infof("Attempt to start load reporting on closed channel") - } - return nil, func() {} - } - return xc.lrs.ReportLoad() -} - // subscribe adds a subscription for the given resource name of the given // resource type on the ADS stream. -func (xc *xdsChannel) subscribe(typ xdsresource.Type, name string) { +func (xc *xdsChannel) subscribe(typ ResourceType, name string) { if xc.closed.HasFired() { if xc.logger.V(2) { - xc.logger.Infof("Attempt to subscribe to an xDS resource of type %s and name %q on a closed channel", typ.TypeName(), name) + xc.logger.Infof("Attempt to subscribe to an xDS resource of type %s and name %q on a closed channel", typ.TypeName, name) } return } - xc.ads.Subscribe(typ, name) + xc.ads.subscribe(typ, name) } // unsubscribe removes the subscription for the given resource name of the given // resource type from the ADS stream. -func (xc *xdsChannel) unsubscribe(typ xdsresource.Type, name string) { +func (xc *xdsChannel) unsubscribe(typ ResourceType, name string) { if xc.closed.HasFired() { if xc.logger.V(2) { - xc.logger.Infof("Attempt to unsubscribe to an xDS resource of type %s and name %q on a closed channel", typ.TypeName(), name) + xc.logger.Infof("Attempt to unsubscribe to an xDS resource of type %s and name %q on a closed channel", typ.TypeName, name) } return } xc.ads.Unsubscribe(typ, name) } -// The following OnADSXxx() methods implement the ads.StreamEventHandler interface +// The following onADSXxx() methods implement the StreamEventHandler interface // and are invoked by the ADS stream implementation. -// OnADSStreamError is invoked when an error occurs on the ADS stream. It +// onStreamError is invoked when an error occurs on the ADS stream. It // propagates the update to the xDS client. -func (xc *xdsChannel) OnADSStreamError(err error) { +func (xc *xdsChannel) onStreamError(err error) { if xc.closed.HasFired() { if xc.logger.V(2) { xc.logger.Infof("Received ADS stream error on a closed xdsChannel: %v", err) @@ -196,9 +181,9 @@ func (xc *xdsChannel) OnADSStreamError(err error) { xc.eventHandler.adsStreamFailure(err) } -// OnADSWatchExpiry is invoked when a watch for a resource expires. It +// onWatchExpiry is invoked when a watch for a resource expires. It // propagates the update to the xDS client. -func (xc *xdsChannel) OnADSWatchExpiry(typ xdsresource.Type, name string) { +func (xc *xdsChannel) onWatchExpiry(typ ResourceType, name string) { if xc.closed.HasFired() { if xc.logger.V(2) { xc.logger.Infof("Received ADS resource watch expiry for resource %q on a closed xdsChannel", name) @@ -208,13 +193,13 @@ func (xc *xdsChannel) OnADSWatchExpiry(typ xdsresource.Type, name string) { xc.eventHandler.adsResourceDoesNotExist(typ, name) } -// OnADSResponse is invoked when a response is received on the ADS stream. It +// onResponse is invoked when a response is received on the ADS stream. It // decodes the resources in the response, and propagates the updates to the xDS // client. // // It returns the list of resource names in the response and any errors // encountered during decoding. -func (xc *xdsChannel) OnADSResponse(resp ads.Response, onDone func()) ([]string, error) { +func (xc *xdsChannel) onResponse(resp response, onDone func()) ([]string, error) { if xc.closed.HasFired() { if xc.logger.V(2) { xc.logger.Infof("Received an update from the ADS stream on closed ADS stream") @@ -223,17 +208,17 @@ func (xc *xdsChannel) OnADSResponse(resp ads.Response, onDone func()) ([]string, } // Lookup the resource parser based on the resource type. - rType := xc.resourceTypeGetter(resp.TypeURL) - if rType == nil { - return nil, xdsresource.NewErrorf(xdsresource.ErrorTypeResourceTypeUnsupported, "Resource type URL %q unknown in response from server", resp.TypeURL) + rType, ok := xc.clientConfig.ResourceTypes[resp.typeURL] + if !ok { + return nil, xdsresource.NewErrorf(xdsresource.ErrorTypeResourceTypeUnsupported, "Resource type URL %q unknown in response from server", resp.typeURL) } // Decode the resources and build the list of resource names to return. - opts := &xdsresource.DecodeOptions{ - BootstrapConfig: xc.bootstrapConfig, - ServerConfig: xc.serverConfig, + opts := &DecodeOptions{ + Config: xc.clientConfig, + ServerConfig: xc.serverConfig, } - updates, md, err := decodeResponse(opts, rType, resp) + updates, md, err := decodeResponse(opts, &rType, resp) var names []string for name := range updates { names = append(names, name) @@ -257,18 +242,21 @@ func (xc *xdsChannel) OnADSResponse(resp ads.Response, onDone func()) ([]string, // If there are any errors decoding the resources, the metadata will indicate // that the update was NACKed, and the returned error will contain information // about all errors encountered by this function. -func decodeResponse(opts *xdsresource.DecodeOptions, rType xdsresource.Type, resp ads.Response) (map[string]ads.DataAndErrTuple, xdsresource.UpdateMetadata, error) { +func decodeResponse(opts *DecodeOptions, rType *ResourceType, resp response) (map[string]dataAndErrTuple, xdsresource.UpdateMetadata, error) { timestamp := time.Now() md := xdsresource.UpdateMetadata{ - Version: resp.Version, + Version: resp.version, Timestamp: timestamp, } topLevelErrors := make([]error, 0) // Tracks deserialization errors, where we don't have a resource name. perResourceErrors := make(map[string]error) // Tracks resource validation errors, where we have a resource name. - ret := make(map[string]ads.DataAndErrTuple) // Return result, a map from resource name to either resource data or error. - for _, r := range resp.Resources { - result, err := rType.Decode(opts, r) + ret := make(map[string]dataAndErrTuple) // Return result, a map from resource name to either resource data or error. + for _, r := range resp.resources { + result, err := rType.Decoder.Decode(AnyProto{ + TypeURL: r.GetTypeUrl(), + Value: r.GetValue(), + }, *opts) // Name field of the result is left unpopulated only when resource // deserialization fails. @@ -277,7 +265,7 @@ func decodeResponse(opts *xdsresource.DecodeOptions, rType xdsresource.Type, res name = xdsresource.ParseName(result.Name).String() } if err == nil { - ret[name] = ads.DataAndErrTuple{Resource: result.Resource} + ret[name] = dataAndErrTuple{Resource: result.Resource} continue } if name == "" { @@ -287,7 +275,7 @@ func decodeResponse(opts *xdsresource.DecodeOptions, rType xdsresource.Type, res perResourceErrors[name] = err // Add place holder in the map so we know this resource name was in // the response. - ret[name] = ads.DataAndErrTuple{Err: xdsresource.NewError(xdsresource.ErrorTypeNACKed, err.Error())} + ret[name] = dataAndErrTuple{Err: xdsresource.NewError(xdsresource.ErrorTypeNACKed, err.Error())} } if len(topLevelErrors) == 0 && len(perResourceErrors) == 0 { @@ -296,9 +284,9 @@ func decodeResponse(opts *xdsresource.DecodeOptions, rType xdsresource.Type, res } md.Status = xdsresource.ServiceStatusNACKed - errRet := combineErrors(rType.TypeName(), topLevelErrors, perResourceErrors) + errRet := combineErrors(rType.TypeName, topLevelErrors, perResourceErrors) md.ErrState = &xdsresource.UpdateErrorMetadata{ - Version: resp.Version, + Version: resp.version, Err: xdsresource.NewError(xdsresource.ErrorTypeNACKed, errRet.Error()), Timestamp: timestamp, } @@ -329,14 +317,3 @@ func combineErrors(rType string, topLevelErrors []error, perResourceErrors map[s } return errors.New(errStrB.String()) } - -func (xc *xdsChannel) triggerResourceNotFoundForTesting(rType xdsresource.Type, resourceName string) error { - if xc.closed.HasFired() { - return fmt.Errorf("triggerResourceNotFoundForTesting() called on a closed channel") - } - if xc.logger.V(2) { - xc.logger.Infof("Triggering resource not found for type: %s, resource name: %s", rType.TypeName(), resourceName) - } - xc.ads.TriggerResourceNotFoundForTesting(rType, resourceName) - return nil -} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/clientimpl_watchers.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/clientimpl_watchers.go new file mode 100644 index 000000000..913e313e1 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/clientimpl_watchers.go @@ -0,0 +1,102 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +import ( + "fmt" + + "google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource" +) + +// wrappingWatcher is a wrapper around an xdsresource.ResourceWatcher that adds +// the node ID to the error messages reported to the watcher. +type wrappingWatcher struct { + ResourceWatcher + nodeID string +} + +func (w *wrappingWatcher) AmbientError(err error, done func()) { + w.ResourceWatcher.AmbientError(fmt.Errorf("[xDS node id: %v]: %w", w.nodeID, err), done) +} + +func (w *wrappingWatcher) ResourceError(err error, done func()) { + w.ResourceWatcher.ResourceError(fmt.Errorf("[xDS node id: %v]: %w", w.nodeID, err), done) +} + +// WatchResource starts watching the specified resource. +// +// typeURL specifies the resource type implementation to use. The watch fails +// if there is no resource type implementation for the given typeURL. See the +// ResourceTypes field in the Config struct used to create the XDSClient. +// +// The returned function cancels the watch and prevents future calls to the +// watcher. +func (c *XDSClient) WatchResource(typeURL, resourceName string, watcher ResourceWatcher) (cancel func()) { + // Return early if the client is already closed. + if c.done.HasFired() { + logger.Warningf("Watch registered for type %q, but client is closed", typeURL) + return func() {} + } + + watcher = &wrappingWatcher{ + ResourceWatcher: watcher, + nodeID: c.config.Node.ID, + } + + rType, ok := c.config.ResourceTypes[typeURL] + if !ok { + logger.Warningf("ResourceType implementation for resource type url %v is not found", rType.TypeURL) + watcher.ResourceError(fmt.Errorf("ResourceType implementation for resource type url %v is not found", rType.TypeURL), func() {}) + return func() {} + } + + n := xdsresource.ParseName(resourceName) + a := c.getAuthorityForResource(n) + if a == nil { + logger.Warningf("Watch registered for name %q of type %q, authority %q is not found", rType.TypeName, resourceName, n.Authority) + watcher.ResourceError(fmt.Errorf("authority %q not found in bootstrap config for resource %q", n.Authority, resourceName), func() {}) + return func() {} + } + // The watchResource method on the authority is invoked with n.String() + // instead of resourceName because n.String() canonicalizes the given name. + // So, two resource names which don't differ in the query string, but only + // differ in the order of context params will result in the same resource + // being watched by the authority. + return a.watchResource(rType, n.String(), watcher) +} + +// Gets the authority for the given resource name. +// +// See examples in this section of the gRFC: +// https://github.com/grpc/proposal/blob/master/A47-xds-federation.md#bootstrap-config-changes +func (c *XDSClient) getAuthorityForResource(name *xdsresource.Name) *authority { + // For new-style resource names, always lookup the authorities map. If the + // name does not specify an authority, we will end up looking for an entry + // in the map with the empty string as the key. + if name.Scheme == xdsresource.FederationScheme { + return c.authorities[name.Authority] + } + + // For old-style resource names, we use the top-level authority if the name + // does not specify an authority. + if name.Authority == "" { + return c.topLevelAuthority + } + return c.authorities[name.Authority] +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/internal/internal.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/internal.go similarity index 63% rename from vendor/google.golang.org/grpc/xds/internal/xdsclient/internal/internal.go rename to vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/internal.go index cdbb86db8..7adb67190 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/internal/internal.go +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/internal.go @@ -1,6 +1,6 @@ /* * - * Copyright 2024 gRPC authors. + * Copyright 2025 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,16 +18,19 @@ // Package internal contains functionality internal to the xdsclient package. package internal -// The following vars can be overridden by tests. +import "time" + var ( - // GRPCNewClient returns a new gRPC Client. - GRPCNewClient any // func(string, ...grpc.DialOption) (*grpc.ClientConn, error) + // WatchExpiryTimeout is the watch expiry timeout for xDS client. It can be + // overridden by tests to change the default watch expiry timeout. + WatchExpiryTimeout time.Duration - // NewADSStream returns a new ADS stream. - NewADSStream any // func(context.Context, *grpc.ClientConn) (v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesClient, error) + // StreamBackoff is the stream backoff for xDS client. It can be overridden + // by tests to change the default backoff strategy. + StreamBackoff func(int) time.Duration // ResourceWatchStateForTesting gets the watch state for the resource // identified by the given resource type and resource name. Returns a // non-nil error if there is no such resource being watched. - ResourceWatchStateForTesting any // func(xdsclient.XDSClient, xdsresource.Type, string) error + ResourceWatchStateForTesting any // func(*xdsclient.XDSClient, xdsclient.ResourceType, string) error ) diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/ads_stream.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/ads_stream.go new file mode 100644 index 000000000..87fe9ac86 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/ads_stream.go @@ -0,0 +1,46 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * 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 xdsresource + +import "time" + +// WatchState is a enum that describes the watch state of a particular +// resource. +type WatchState int + +const ( + // ResourceWatchStateStarted is the state where a watch for a resource was + // started, but a request asking for that resource is yet to be sent to the + // management server. + ResourceWatchStateStarted WatchState = iota + // ResourceWatchStateRequested is the state when a request has been sent for + // the resource being watched. + ResourceWatchStateRequested + // ResourceWatchStateReceived is the state when a response has been received + // for the resource being watched. + ResourceWatchStateReceived + // ResourceWatchStateTimeout is the state when the watch timer associated + // with the resource expired because no response was received. + ResourceWatchStateTimeout +) + +// ResourceWatchState is the state corresponding to a resource being watched. +type ResourceWatchState struct { + State WatchState // Watch state of the resource. + ExpiryTimer *time.Timer // Timer for the expiry of the watch. +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/errors.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/errors.go new file mode 100644 index 000000000..2bcc2e540 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/errors.go @@ -0,0 +1,78 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * 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 xdsresource + +import ( + "errors" + "fmt" +) + +// ErrorType is the type of the error that the watcher will receive from the xds +// client. +type ErrorType int + +const ( + // ErrorTypeUnknown indicates the error doesn't have a specific type. It is + // the default value, and is returned if the error is not an xds error. + ErrorTypeUnknown ErrorType = iota + // ErrorTypeConnection indicates a connection error from the gRPC client. + ErrorTypeConnection + // ErrorTypeResourceNotFound indicates a resource is not found from the xds + // response. It's typically returned if the resource is removed in the xds + // server. + ErrorTypeResourceNotFound + // ErrorTypeResourceTypeUnsupported indicates the receipt of a message from + // the management server with resources of an unsupported resource type. + ErrorTypeResourceTypeUnsupported + // ErrTypeStreamFailedAfterRecv indicates an ADS stream error, after + // successful receipt of at least one message from the server. + ErrTypeStreamFailedAfterRecv + // ErrorTypeNACKed indicates that configuration provided by the xDS management + // server was NACKed. + ErrorTypeNACKed +) + +type xdsClientError struct { + t ErrorType + desc string +} + +func (e *xdsClientError) Error() string { + return e.desc +} + +// NewErrorf creates an xDS client error. The callbacks are called with this +// error, to pass additional information about the error. +func NewErrorf(t ErrorType, format string, args ...any) error { + return &xdsClientError{t: t, desc: fmt.Sprintf(format, args...)} +} + +// NewError creates an xDS client error. The callbacks are called with this +// error, to pass additional information about the error. +func NewError(t ErrorType, message string) error { + return NewErrorf(t, "%s", message) +} + +// ErrType returns the error's type. +func ErrType(e error) ErrorType { + var xe *xdsClientError + if ok := errors.As(e, &xe); ok { + return xe.t + } + return ErrorTypeUnknown +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/name.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/name.go new file mode 100644 index 000000000..24200ea8d --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/name.go @@ -0,0 +1,127 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * 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 xdsresource + +import ( + "net/url" + "sort" + "strings" +) + +// FederationScheme is the scheme of a federation resource name. +const FederationScheme = "xdstp" + +// Name contains the parsed component of an xDS resource name. +// +// An xDS resource name is in the format of +// xdstp://[{authority}]/{resource type}/{id/*}?{context parameters}{#processing directive,*} +// +// See +// https://github.com/cncf/xds/blob/main/proposals/TP1-xds-transport-next.md#uri-based-xds-resource-names +// for details, and examples. +type Name struct { + Scheme string + Authority string + Type string + ID string + + ContextParams map[string]string + + processingDirective string +} + +// ParseName splits the name and returns a struct representation of the Name. +// +// If the name isn't a valid new-style xDS name, field ID is set to the input. +// Note that this is not an error, because we still support the old-style +// resource names (those not starting with "xdstp:"). +// +// The caller can tell if the parsing is successful by checking the returned +// Scheme. +func ParseName(name string) *Name { + if !strings.Contains(name, "://") { + // Only the long form URL, with ://, is valid. + return &Name{ID: name} + } + parsed, err := url.Parse(name) + if err != nil { + return &Name{ID: name} + } + + ret := &Name{ + Scheme: parsed.Scheme, + Authority: parsed.Host, + } + split := strings.SplitN(parsed.Path, "/", 3) + if len(split) < 3 { + // Path is in the format of "/type/id". There must be at least 3 + // segments after splitting. + return &Name{ID: name} + } + ret.Type = split[1] + ret.ID = split[2] + if len(parsed.Query()) != 0 { + ret.ContextParams = make(map[string]string) + for k, vs := range parsed.Query() { + if len(vs) > 0 { + // We only keep one value of each key. Behavior for multiple values + // is undefined. + ret.ContextParams[k] = vs[0] + } + } + } + // TODO: processing directive (the part comes after "#" in the URL, stored + // in parsed.RawFragment) is kept but not processed. Add support for that + // when it's needed. + ret.processingDirective = parsed.RawFragment + return ret +} + +// String returns a canonicalized string of name. The context parameters are +// sorted by the keys. +func (n *Name) String() string { + if n.Scheme == "" { + return n.ID + } + + // Sort and build query. + keys := make([]string, 0, len(n.ContextParams)) + for k := range n.ContextParams { + keys = append(keys, k) + } + sort.Strings(keys) + var pairs []string + for _, k := range keys { + pairs = append(pairs, strings.Join([]string{k, n.ContextParams[k]}, "=")) + } + rawQuery := strings.Join(pairs, "&") + + path := n.Type + if n.ID != "" { + path = "/" + path + "/" + n.ID + } + + tempURL := &url.URL{ + Scheme: n.Scheme, + Host: n.Authority, + Path: path, + RawQuery: rawQuery, + RawFragment: n.processingDirective, + } + return tempURL.String() +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/type.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/type.go new file mode 100644 index 000000000..ea4d85447 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/type.go @@ -0,0 +1,101 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * 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 xdsresource + +import ( + "time" + + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/anypb" + + v3discoverypb "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" +) + +// UpdateMetadata contains the metadata for each update, including timestamp, +// raw message, and so on. +type UpdateMetadata struct { + // Status is the status of this resource, e.g. ACKed, NACKed, or + // Not_exist(removed). + Status ServiceStatus + // Version is the version of the xds response. Note that this is the version + // of the resource in use (previous ACKed). If a response is NACKed, the + // NACKed version is in ErrState. + Version string + // Timestamp is when the response is received. + Timestamp time.Time + // ErrState is set when the update is NACKed. + ErrState *UpdateErrorMetadata +} + +// IsListenerResource returns true if the provider URL corresponds to an xDS +// Listener resource. +func IsListenerResource(url string) bool { + return url == V3ListenerURL +} + +// IsHTTPConnManagerResource returns true if the provider URL corresponds to an xDS +// HTTPConnManager resource. +func IsHTTPConnManagerResource(url string) bool { + return url == V3HTTPConnManagerURL +} + +// UnwrapResource unwraps and returns the inner resource if it's in a resource +// wrapper. The original resource is returned if it's not wrapped. +func UnwrapResource(r *anypb.Any) (*anypb.Any, error) { + url := r.GetTypeUrl() + if url != V3ResourceWrapperURL { + // Not wrapped. + return r, nil + } + inner := &v3discoverypb.Resource{} + if err := proto.Unmarshal(r.GetValue(), inner); err != nil { + return nil, err + } + return inner.Resource, nil +} + +// ServiceStatus is the status of the update. +type ServiceStatus int + +const ( + // ServiceStatusUnknown is the default state, before a watch is started for + // the resource. + ServiceStatusUnknown ServiceStatus = iota + // ServiceStatusRequested is when the watch is started, but before and + // response is received. + ServiceStatusRequested + // ServiceStatusNotExist is when the resource doesn't exist in + // state-of-the-world responses (e.g. LDS and CDS), which means the resource + // is removed by the management server. + ServiceStatusNotExist // Resource is removed in the server, in LDS/CDS. + // ServiceStatusACKed is when the resource is ACKed. + ServiceStatusACKed + // ServiceStatusNACKed is when the resource is NACKed. + ServiceStatusNACKed +) + +// UpdateErrorMetadata is part of UpdateMetadata. It contains the error state +// when a response is NACKed. +type UpdateErrorMetadata struct { + // Version is the version of the NACKed response. + Version string + // Err contains why the response was NACKed. + Err error + // Timestamp is when the NACKed response was received. + Timestamp time.Time +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/version.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/version.go new file mode 100644 index 000000000..60f47e694 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource/version.go @@ -0,0 +1,31 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsresource defines constants to distinguish between supported xDS +// API versions. +package xdsresource + +// Resource URLs. We need to be able to accept either version of the resource +// regardless of the version of the transport protocol in use. +const ( + googleapiPrefix = "type.googleapis.com/" + + V3ListenerURL = googleapiPrefix + "envoy.config.listener.v3.Listener" + V3HTTPConnManagerURL = googleapiPrefix + "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager" + V3ResourceWrapperURL = googleapiPrefix + "envoy.service.discovery.v3.Resource" +) diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/logging.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/logging.go new file mode 100644 index 000000000..c7ba21c49 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/logging.go @@ -0,0 +1,36 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +import ( + "fmt" + + "google.golang.org/grpc/grpclog" + internalgrpclog "google.golang.org/grpc/internal/grpclog" +) + +var logger = grpclog.Component("xds") + +func prefixLogger(p *XDSClient) *internalgrpclog.PrefixLogger { + return internalgrpclog.NewPrefixLogger(logger, clientPrefix(p)) +} + +func clientPrefix(p *XDSClient) string { + return fmt.Sprintf("[xds-client %p] ", p) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/metrics/metrics.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/metrics/metrics.go new file mode 100644 index 000000000..2e14efb1a --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/metrics/metrics.go @@ -0,0 +1,42 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 metrics defines all metrics that can be produced by an xDS client. +// All calls to the MetricsRecorder by the xDS client will contain a struct +// from this package passed by pointer. +package metrics + +// ResourceUpdateValid is a metric to report a valid resource update from +// the xDS management server for a given resource type. +type ResourceUpdateValid struct { + ServerURI string + ResourceType string +} + +// ResourceUpdateInvalid is a metric to report an invalid resource update +// from the xDS management server for a given resource type. +type ResourceUpdateInvalid struct { + ServerURI string + ResourceType string +} + +// ServerFailure is a metric to report a server failure of the xDS +// management server. +type ServerFailure struct { + ServerURI string +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_type.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_type.go new file mode 100644 index 000000000..ae8e21dfe --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_type.go @@ -0,0 +1,104 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +// ResourceType wraps all resource-type specific functionality. Each supported +// resource type needs to provide an implementation of the Decoder. +type ResourceType struct { + // TypeURL is the xDS type URL of this resource type for the v3 xDS + // protocol. This URL is used as the key to look up the corresponding + // ResourceType implementation in the ResourceTypes map provided in the + // Config. + TypeURL string + + // TODO: Revisit if we need TypeURL to be part of the struct because it is + // already a key in config's ResouceTypes map. + + // TypeName is a shorter representation of the TypeURL to identify the + // resource type. It is used for logging/debugging purposes. + TypeName string + + // AllResourcesRequiredInSotW indicates whether this resource type requires + // that all resources be present in every SotW response from the server. If + // true, a response that does not include a previously seen resource will + // be interpreted as a deletion of that resource. + AllResourcesRequiredInSotW bool + + // Decoder is used to deserialize and validate an xDS resource received + // from the xDS management server. + Decoder Decoder +} + +// Decoder wraps the resource-type specific functionality for validation +// and deserialization. +type Decoder interface { + // Decode deserializes and validates an xDS resource as received from the + // xDS management server. + // + // The `resource` parameter may contain a value of the serialized wrapped + // resource (i.e. with the type URL + // `type.googleapis.com/envoy.service.discovery.v3.Resource`). + // Implementations are responsible for unwrapping the underlying resource if + // it is wrapped. + // + // If unmarshalling or validation fails, it returns a non-nil error. + // Otherwise, returns a fully populated DecodeResult. + Decode(resource AnyProto, options DecodeOptions) (*DecodeResult, error) +} + +// AnyProto contains the type URL and serialized proto data of an xDS resource. +type AnyProto struct { + TypeURL string + Value []byte +} + +// DecodeOptions wraps the options required by ResourceType implementations for +// decoding configuration received from the xDS management server. +type DecodeOptions struct { + // Config contains the complete configuration passed to the xDS client. + // This contains useful data for resource validation. + Config *Config + + // ServerConfig contains the configuration of the xDS server that provided + // the current resource being decoded. + ServerConfig *ServerConfig +} + +// DecodeResult is the result of a decode operation. +type DecodeResult struct { + // Name is the name of the decoded resource. + Name string + + // Resource contains the configuration associated with the decoded + // resource. + Resource ResourceData +} + +// ResourceData contains the configuration data sent by the xDS management +// server, associated with the resource being watched. Every resource type must +// provide an implementation of this interface to represent the configuration +// received from the xDS management server. +type ResourceData interface { + // Equal returns true if the passed in resource data is equal to that of + // the receiver. + Equal(other ResourceData) bool + + // Bytes returns the underlying raw bytes of the resource proto. + Bytes() []byte +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_watcher.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_watcher.go new file mode 100644 index 000000000..37d01bc71 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/resource_watcher.go @@ -0,0 +1,45 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +// ResourceWatcher is notified of the resource updates and errors that are +// received by the xDS client from the management server. +// +// All methods contain a done parameter which should be called when processing +// of the update has completed. For example, if processing a resource requires +// watching new resources, those watches should be completed before done is +// called, which can happen after the ResourceWatcher method has returned. +// Failure to call done will prevent the xDS client from providing future +// ResourceWatcher notifications. +type ResourceWatcher interface { + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resourceData ResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsclient.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsclient.go new file mode 100644 index 000000000..c9cd52a1e --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsclient.go @@ -0,0 +1,452 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient provides an xDS (* Discovery Service) client. +// +// It allows applications to: +// - Create xDS client instances with in-memory configurations. +// - Register watches for named resources. +// - Receive resources via an ADS (Aggregated Discovery Service) stream. +// - Register watches for named resources (e.g. listeners, routes, or +// clusters). +// +// This enables applications to dynamically discover and configure resources +// such as listeners, routes, clusters, and endpoints from an xDS management +// server. +package xdsclient + +import ( + "context" + "errors" + "fmt" + "sync" + "sync/atomic" + "time" + + "google.golang.org/grpc/internal/grpclog" + "google.golang.org/grpc/xds/internal/clients" + clientsinternal "google.golang.org/grpc/xds/internal/clients/internal" + "google.golang.org/grpc/xds/internal/clients/internal/backoff" + "google.golang.org/grpc/xds/internal/clients/internal/syncutil" + xdsclientinternal "google.golang.org/grpc/xds/internal/clients/xdsclient/internal" + "google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource" + "google.golang.org/grpc/xds/internal/clients/xdsclient/metrics" + "google.golang.org/protobuf/proto" + + v3statuspb "github.com/envoyproxy/go-control-plane/envoy/service/status/v3" +) + +const ( + defaultWatchExpiryTimeout = 15 * time.Second + name = "xds-client" +) + +var ( + defaultExponentialBackoff = backoff.DefaultExponential.Backoff +) + +func init() { + xdsclientinternal.WatchExpiryTimeout = defaultWatchExpiryTimeout + xdsclientinternal.StreamBackoff = defaultExponentialBackoff + xdsclientinternal.ResourceWatchStateForTesting = resourceWatchStateForTesting +} + +// XDSClient is a client which queries a set of discovery APIs (collectively +// termed as xDS) on a remote management server, to discover +// various dynamic resources. +type XDSClient struct { + // The following fields are initialized at creation time and are read-only + // after that, and therefore can be accessed without a mutex. + done *syncutil.Event // Fired when the client is closed. + topLevelAuthority *authority // The top-level authority, used only for old-style names without an authority. + authorities map[string]*authority // Map from authority names in config to authority struct. + config *Config // Complete xDS client configuration. + watchExpiryTimeout time.Duration // Expiry timeout for ADS watch. + backoff func(int) time.Duration // Backoff for ADS and LRS stream failures. + transportBuilder clients.TransportBuilder // Builder to create transports to xDS server. + resourceTypes map[string]ResourceType // Registry of resource types, for parsing incoming ADS responses. + serializer *syncutil.CallbackSerializer // Serializer for invoking resource watcher callbacks. + serializerClose func() // Function to close the serializer. + logger *grpclog.PrefixLogger + target string + metricsReporter clients.MetricsReporter + + // The XDSClient owns a bunch of channels to individual xDS servers + // specified in the xDS client configuration. Authorities acquire references + // to these channels based on server configs within the authority config. + // The XDSClient maintains a list of interested authorities for each of + // these channels, and forwards updates from the channels to each of these + // authorities. + // + // Once all references to a channel are dropped, the channel is closed. + channelsMu sync.Mutex + xdsActiveChannels map[ServerConfig]*channelState // Map from server config to in-use xdsChannels. +} + +// New returns a new xDS Client configured with the provided config. +func New(config Config) (*XDSClient, error) { + switch { + case config.Node.ID == "": + return nil, errors.New("xdsclient: node ID is empty") + case config.ResourceTypes == nil: + return nil, errors.New("xdsclient: resource types map is nil") + case config.TransportBuilder == nil: + return nil, errors.New("xdsclient: transport builder is nil") + case config.Authorities == nil && config.Servers == nil: + return nil, errors.New("xdsclient: no servers or authorities specified") + } + + client, err := newClient(&config, name) + if err != nil { + return nil, err + } + return client, nil +} + +// SetWatchExpiryTimeoutForTesting override the default watch expiry timeout +// with provided timeout value. +func (c *XDSClient) SetWatchExpiryTimeoutForTesting(watchExpiryTimeout time.Duration) { + c.watchExpiryTimeout = watchExpiryTimeout +} + +// newClient returns a new XDSClient with the given config. +func newClient(config *Config, target string) (*XDSClient, error) { + ctx, cancel := context.WithCancel(context.Background()) + c := &XDSClient{ + target: target, + done: syncutil.NewEvent(), + authorities: make(map[string]*authority), + config: config, + watchExpiryTimeout: xdsclientinternal.WatchExpiryTimeout, + backoff: xdsclientinternal.StreamBackoff, + serializer: syncutil.NewCallbackSerializer(ctx), + serializerClose: cancel, + transportBuilder: config.TransportBuilder, + resourceTypes: config.ResourceTypes, + xdsActiveChannels: make(map[ServerConfig]*channelState), + metricsReporter: config.MetricsReporter, + } + + for name, cfg := range config.Authorities { + // If server configs are specified in the authorities map, use that. + // Else, use the top-level server configs. + serverCfg := config.Servers + if len(cfg.XDSServers) >= 1 { + serverCfg = cfg.XDSServers + } + c.authorities[name] = newAuthority(authorityBuildOptions{ + serverConfigs: serverCfg, + name: name, + serializer: c.serializer, + getChannelForADS: c.getChannelForADS, + logPrefix: clientPrefix(c), + target: target, + metricsReporter: c.metricsReporter, + }) + } + c.topLevelAuthority = newAuthority(authorityBuildOptions{ + serverConfigs: config.Servers, + name: "", + serializer: c.serializer, + getChannelForADS: c.getChannelForADS, + logPrefix: clientPrefix(c), + target: target, + metricsReporter: c.metricsReporter, + }) + c.logger = prefixLogger(c) + + return c, nil +} + +// Close closes the xDS client and releases all resources. +func (c *XDSClient) Close() { + if c.done.HasFired() { + return + } + c.done.Fire() + + c.topLevelAuthority.close() + for _, a := range c.authorities { + a.close() + } + + // Channel close cannot be invoked with the lock held, because it can race + // with stream failure happening at the same time. The latter will callback + // into the XDSClient and will attempt to grab the lock. This will result + // in a deadlock. So instead, we release the lock and wait for all active + // channels to be closed. + var channelsToClose []*xdsChannel + c.channelsMu.Lock() + for _, cs := range c.xdsActiveChannels { + channelsToClose = append(channelsToClose, cs.channel) + } + c.xdsActiveChannels = nil + c.channelsMu.Unlock() + for _, c := range channelsToClose { + c.close() + } + + c.serializerClose() + <-c.serializer.Done() + + c.logger.Infof("Shutdown") +} + +// getChannelForADS returns an xdsChannel for the given server configuration. +// +// If an xdsChannel exists for the given server configuration, it is returned. +// Else a new one is created. It also ensures that the calling authority is +// added to the set of interested authorities for the returned channel. +// +// It returns the xdsChannel and a function to release the calling authority's +// reference on the channel. The caller must call the cancel function when it is +// no longer interested in this channel. +// +// A non-nil error is returned if an xdsChannel was not created. +func (c *XDSClient) getChannelForADS(serverConfig *ServerConfig, callingAuthority *authority) (*xdsChannel, func(), error) { + if c.done.HasFired() { + return nil, nil, errors.New("xds: the xDS client is closed") + } + + initLocked := func(s *channelState) { + if c.logger.V(2) { + c.logger.Infof("Adding authority %q to the set of interested authorities for channel [%p]", callingAuthority.name, s.channel) + } + s.interestedAuthorities[callingAuthority] = true + } + deInitLocked := func(s *channelState) { + if c.logger.V(2) { + c.logger.Infof("Removing authority %q from the set of interested authorities for channel [%p]", callingAuthority.name, s.channel) + } + delete(s.interestedAuthorities, callingAuthority) + } + + return c.getOrCreateChannel(serverConfig, initLocked, deInitLocked) +} + +// getOrCreateChannel returns an xdsChannel for the given server configuration. +// +// If an active xdsChannel exists for the given server configuration, it is +// returned. If an idle xdsChannel exists for the given server configuration, it +// is revived from the idle cache and returned. Else a new one is created. +// +// The initLocked function runs some initialization logic before the channel is +// returned. This includes adding the calling authority to the set of interested +// authorities for the channel or incrementing the count of the number of LRS +// calls on the channel. +// +// The deInitLocked function runs some cleanup logic when the returned cleanup +// function is called. This involves removing the calling authority from the set +// of interested authorities for the channel or decrementing the count of the +// number of LRS calls on the channel. +// +// Both initLocked and deInitLocked are called with the c.channelsMu held. +// +// Returns the xdsChannel and a cleanup function to be invoked when the channel +// is no longer required. A non-nil error is returned if an xdsChannel was not +// created. +func (c *XDSClient) getOrCreateChannel(serverConfig *ServerConfig, initLocked, deInitLocked func(*channelState)) (*xdsChannel, func(), error) { + c.channelsMu.Lock() + defer c.channelsMu.Unlock() + + if c.logger.V(2) { + c.logger.Infof("Received request for a reference to an xdsChannel for server config %q", serverConfig) + } + + // Use an existing channel, if one exists for this server config. + if st, ok := c.xdsActiveChannels[*serverConfig]; ok { + if c.logger.V(2) { + c.logger.Infof("Reusing an existing xdsChannel for server config %q", serverConfig) + } + initLocked(st) + return st.channel, c.releaseChannel(serverConfig, st, deInitLocked), nil + } + + if c.logger.V(2) { + c.logger.Infof("Creating a new xdsChannel for server config %q", serverConfig) + } + + // Create a new transport and create a new xdsChannel, and add it to the + // map of xdsChannels. + tr, err := c.transportBuilder.Build(serverConfig.ServerIdentifier) + if err != nil { + return nil, func() {}, fmt.Errorf("xds: failed to create transport for server config %v: %v", serverConfig, err) + } + state := &channelState{ + parent: c, + serverConfig: serverConfig, + interestedAuthorities: make(map[*authority]bool), + } + channel, err := newXDSChannel(xdsChannelOpts{ + transport: tr, + serverConfig: serverConfig, + clientConfig: c.config, + eventHandler: state, + backoff: c.backoff, + watchExpiryTimeout: c.watchExpiryTimeout, + logPrefix: clientPrefix(c), + }) + if err != nil { + return nil, func() {}, fmt.Errorf("xds: failed to create a new channel for server config %v: %v", serverConfig, err) + } + state.channel = channel + c.xdsActiveChannels[*serverConfig] = state + initLocked(state) + return state.channel, c.releaseChannel(serverConfig, state, deInitLocked), nil +} + +// releaseChannel is a function that is called when a reference to an xdsChannel +// needs to be released. It handles closing channels with no active references. +// +// The function takes the following parameters: +// - serverConfig: the server configuration for the xdsChannel +// - state: the state of the xdsChannel +// - deInitLocked: a function that performs any necessary cleanup for the xdsChannel +// +// The function returns another function that can be called to release the +// reference to the xdsChannel. This returned function is idempotent, meaning +// it can be called multiple times without any additional effect. +func (c *XDSClient) releaseChannel(serverConfig *ServerConfig, state *channelState, deInitLocked func(*channelState)) func() { + return sync.OnceFunc(func() { + c.channelsMu.Lock() + + if c.logger.V(2) { + c.logger.Infof("Received request to release a reference to an xdsChannel for server config %q", serverConfig) + } + deInitLocked(state) + + // The channel has active users. Do nothing and return. + if len(state.interestedAuthorities) != 0 { + if c.logger.V(2) { + c.logger.Infof("xdsChannel %p has other active references", state.channel) + } + c.channelsMu.Unlock() + return + } + + delete(c.xdsActiveChannels, *serverConfig) + if c.logger.V(2) { + c.logger.Infof("Closing xdsChannel [%p] for server config %s", state.channel, serverConfig) + } + channelToClose := state.channel + c.channelsMu.Unlock() + + channelToClose.close() + }) +} + +// DumpResources returns the status and contents of all xDS resources being +// watched by the xDS client. +func (c *XDSClient) DumpResources() ([]byte, error) { + retCfg := c.topLevelAuthority.dumpResources() + for _, a := range c.authorities { + retCfg = append(retCfg, a.dumpResources()...) + } + + nodeProto := clientsinternal.NodeProto(c.config.Node) + nodeProto.ClientFeatures = []string{clientFeatureNoOverprovisioning, clientFeatureResourceWrapper} + resp := &v3statuspb.ClientStatusResponse{} + resp.Config = append(resp.Config, &v3statuspb.ClientConfig{ + Node: nodeProto, + GenericXdsConfigs: retCfg, + }) + return proto.Marshal(resp) +} + +// channelState represents the state of an xDS channel. It tracks the number of +// LRS references, the authorities interested in the channel, and the server +// configuration used for the channel. +// +// It receives callbacks for events on the underlying ADS stream and invokes +// corresponding callbacks on interested authorities. +type channelState struct { + parent *XDSClient + serverConfig *ServerConfig + + // Access to the following fields should be protected by the parent's + // channelsMu. + channel *xdsChannel + interestedAuthorities map[*authority]bool +} + +func (cs *channelState) adsStreamFailure(err error) { + if cs.parent.done.HasFired() { + return + } + + if xdsresource.ErrType(err) != xdsresource.ErrTypeStreamFailedAfterRecv && cs.parent.metricsReporter != nil { + cs.parent.metricsReporter.ReportMetric(&metrics.ServerFailure{ + ServerURI: cs.serverConfig.ServerIdentifier.ServerURI, + }) + } + + cs.parent.channelsMu.Lock() + defer cs.parent.channelsMu.Unlock() + for authority := range cs.interestedAuthorities { + authority.adsStreamFailure(cs.serverConfig, err) + } +} + +func (cs *channelState) adsResourceUpdate(typ ResourceType, updates map[string]dataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { + if cs.parent.done.HasFired() { + return + } + + cs.parent.channelsMu.Lock() + defer cs.parent.channelsMu.Unlock() + + if len(cs.interestedAuthorities) == 0 { + onDone() + return + } + + authorityCnt := new(atomic.Int64) + authorityCnt.Add(int64(len(cs.interestedAuthorities))) + done := func() { + if authorityCnt.Add(-1) == 0 { + onDone() + } + } + for authority := range cs.interestedAuthorities { + authority.adsResourceUpdate(cs.serverConfig, typ, updates, md, done) + } +} + +func (cs *channelState) adsResourceDoesNotExist(typ ResourceType, resourceName string) { + if cs.parent.done.HasFired() { + return + } + + cs.parent.channelsMu.Lock() + defer cs.parent.channelsMu.Unlock() + for authority := range cs.interestedAuthorities { + authority.adsResourceDoesNotExist(typ, resourceName) + } +} + +func resourceWatchStateForTesting(c *XDSClient, rType ResourceType, resourceName string) (xdsresource.ResourceWatchState, error) { + c.channelsMu.Lock() + defer c.channelsMu.Unlock() + + for _, state := range c.xdsActiveChannels { + if st, err := state.channel.ads.adsResourceWatchStateForTesting(rType, resourceName); err == nil { + return st, nil + } + } + return xdsresource.ResourceWatchState{}, fmt.Errorf("unable to find watch state for resource type %q and name %q", rType.TypeName, resourceName) +} diff --git a/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsconfig.go b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsconfig.go new file mode 100644 index 000000000..a276309df --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/clients/xdsclient/xdsconfig.go @@ -0,0 +1,93 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +import ( + "google.golang.org/grpc/xds/internal/clients" +) + +// Config is used to configure an xDS client. After one has been passed to the +// xDS client's New function, no part of it may be modified. A Config may be +// reused; the xdsclient package will also not modify it. +type Config struct { + // Servers specifies a list of xDS management servers to connect to. The + // order of the servers in this list reflects the order of preference of + // the data returned by those servers. The xDS client uses the first + // available server from the list. + // + // See gRFC A71 for more details on fallback behavior when the primary + // xDS server is unavailable. + // + // gRFC A71: https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md + Servers []ServerConfig + + // Authorities defines the configuration for each xDS authority. Federated resources + // will be fetched from the servers specified by the corresponding Authority. + Authorities map[string]Authority + + // Node is the identity of the xDS client connecting to the xDS + // management server. + Node clients.Node + + // TransportBuilder is used to create connections to xDS management servers. + TransportBuilder clients.TransportBuilder + + // ResourceTypes is a map from resource type URLs to resource type + // implementations. Each resource type URL uniquely identifies a specific + // kind of xDS resource, and the corresponding resource type implementation + // provides logic for parsing, validating, and processing resources of that + // type. + // + // For example: "type.googleapis.com/envoy.config.listener.v3.Listener" + ResourceTypes map[string]ResourceType + + // MetricsReporter is used to report registered metrics. If unset, no + // metrics will be reported. + MetricsReporter clients.MetricsReporter +} + +// ServerConfig contains configuration for an xDS management server. +type ServerConfig struct { + ServerIdentifier clients.ServerIdentifier + + // IgnoreResourceDeletion is a server feature which if set to true, + // indicates that resource deletion errors from xDS management servers can + // be ignored and cached resource data can be used. + // + // This will be removed in the future once we implement gRFC A88 + // and two new fields FailOnDataErrors and + // ResourceTimerIsTransientError will be introduced. + IgnoreResourceDeletion bool + + // TODO: Link to gRFC A88 +} + +// Authority contains configuration for an xDS control plane authority. +// +// See: https://www.envoyproxy.io/docs/envoy/latest/xds/core/v3/resource_locator.proto#xds-core-v3-resourcelocator +type Authority struct { + // XDSServers contains the list of server configurations for this authority. + // + // See Config.Servers for more details. + XDSServers []ServerConfig +} + +func isServerConfigEqual(a, b *ServerConfig) bool { + return a.ServerIdentifier == b.ServerIdentifier && a.IgnoreResourceDeletion == b.IgnoreResourceDeletion +} diff --git a/vendor/google.golang.org/grpc/xds/internal/internal.go b/vendor/google.golang.org/grpc/xds/internal/internal.go index 74c919521..9e0b7931b 100644 --- a/vendor/google.golang.org/grpc/xds/internal/internal.go +++ b/vendor/google.golang.org/grpc/xds/internal/internal.go @@ -20,52 +20,33 @@ package internal import ( - "encoding/json" "fmt" "google.golang.org/grpc/resolver" + "google.golang.org/grpc/xds/internal/clients" ) -// LocalityID is xds.Locality without XXX fields, so it can be used as map -// keys. -// -// xds.Locality cannot be map keys because one of the XXX fields is a slice. -type LocalityID struct { - Region string `json:"region,omitempty"` - Zone string `json:"zone,omitempty"` - SubZone string `json:"subZone,omitempty"` +// LocalityString generates a string representation of clients.Locality in the +// format specified in gRFC A76. +func LocalityString(l clients.Locality) string { + return fmt.Sprintf("{region=%q, zone=%q, sub_zone=%q}", l.Region, l.Zone, l.SubZone) } -// ToString generates a string representation of LocalityID by marshalling it into -// json. Not calling it String() so printf won't call it. -func (l LocalityID) ToString() (string, error) { - b, err := json.Marshal(l) - if err != nil { - return "", err - } - return string(b), nil -} - -// Equal allows the values to be compared by Attributes.Equal. -func (l LocalityID) Equal(o any) bool { - ol, ok := o.(LocalityID) +// IsLocalityEqual allows the values to be compared by Attributes.Equal. +func IsLocalityEqual(l clients.Locality, o any) bool { + ol, ok := o.(clients.Locality) if !ok { return false } return l.Region == ol.Region && l.Zone == ol.Zone && l.SubZone == ol.SubZone } -// Empty returns whether or not the locality ID is empty. -func (l LocalityID) Empty() bool { - return l.Region == "" && l.Zone == "" && l.SubZone == "" -} - -// LocalityIDFromString converts a json representation of locality, into a -// LocalityID struct. -func LocalityIDFromString(s string) (ret LocalityID, _ error) { - err := json.Unmarshal([]byte(s), &ret) +// LocalityFromString converts a string representation of clients.locality as +// specified in gRFC A76, into a LocalityID struct. +func LocalityFromString(s string) (ret clients.Locality, _ error) { + _, err := fmt.Sscanf(s, "{region=%q, zone=%q, sub_zone=%q}", &ret.Region, &ret.Zone, &ret.SubZone) if err != nil { - return LocalityID{}, fmt.Errorf("%s is not a well formatted locality ID, error: %v", s, err) + return clients.Locality{}, fmt.Errorf("%s is not a well formatted locality ID, error: %v", s, err) } return ret, nil } @@ -75,19 +56,19 @@ type localityKeyType string const localityKey = localityKeyType("grpc.xds.internal.address.locality") // GetLocalityID returns the locality ID of addr. -func GetLocalityID(addr resolver.Address) LocalityID { - path, _ := addr.BalancerAttributes.Value(localityKey).(LocalityID) +func GetLocalityID(addr resolver.Address) clients.Locality { + path, _ := addr.BalancerAttributes.Value(localityKey).(clients.Locality) return path } // SetLocalityID sets locality ID in addr to l. -func SetLocalityID(addr resolver.Address, l LocalityID) resolver.Address { +func SetLocalityID(addr resolver.Address, l clients.Locality) resolver.Address { addr.BalancerAttributes = addr.BalancerAttributes.WithValue(localityKey, l) return addr } // SetLocalityIDInEndpoint sets locality ID in endpoint to l. -func SetLocalityIDInEndpoint(endpoint resolver.Endpoint, l LocalityID) resolver.Endpoint { +func SetLocalityIDInEndpoint(endpoint resolver.Endpoint, l clients.Locality) resolver.Endpoint { endpoint.Attributes = endpoint.Attributes.WithValue(localityKey, l) return endpoint } diff --git a/vendor/google.golang.org/grpc/xds/internal/resolver/serviceconfig.go b/vendor/google.golang.org/grpc/xds/internal/resolver/serviceconfig.go index dbefe9801..40f038b8a 100644 --- a/vendor/google.golang.org/grpc/xds/internal/resolver/serviceconfig.go +++ b/vendor/google.golang.org/grpc/xds/internal/resolver/serviceconfig.go @@ -32,12 +32,12 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/internal/grpcutil" iresolver "google.golang.org/grpc/internal/resolver" + iringhash "google.golang.org/grpc/internal/ringhash" "google.golang.org/grpc/internal/serviceconfig" "google.golang.org/grpc/internal/wrr" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/grpc/xds/internal/balancer/clustermanager" - "google.golang.org/grpc/xds/internal/balancer/ringhash" "google.golang.org/grpc/xds/internal/httpfilter" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" ) @@ -141,8 +141,8 @@ type erroringConfigSelector struct { err error } -func newErroringConfigSelector(xdsNodeID string) *erroringConfigSelector { - return &erroringConfigSelector{err: annotateErrorWithNodeID(status.Errorf(codes.Unavailable, "no valid clusters"), xdsNodeID)} +func newErroringConfigSelector(err error, xdsNodeID string) *erroringConfigSelector { + return &erroringConfigSelector{err: annotateErrorWithNodeID(status.Error(codes.Unavailable, err.Error()), xdsNodeID)} } func (cs *erroringConfigSelector) SelectConfig(iresolver.RPCInfo) (*iresolver.RPCConfig, error) { @@ -203,7 +203,7 @@ func (cs *configSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*iresolver.RP } lbCtx := clustermanager.SetPickedCluster(rpcInfo.Context, cluster.name) - lbCtx = ringhash.SetXDSRequestHash(lbCtx, cs.generateHash(rpcInfo, rt.hashPolicies)) + lbCtx = iringhash.SetXDSRequestHash(lbCtx, cs.generateHash(rpcInfo, rt.hashPolicies)) config := &iresolver.RPCConfig{ // Communicate to the LB policy the chosen cluster and request hash, if Ring Hash LB policy. diff --git a/vendor/google.golang.org/grpc/xds/internal/resolver/watch_service.go b/vendor/google.golang.org/grpc/xds/internal/resolver/watch_service.go index 0de660448..e8d52d0e0 100644 --- a/vendor/google.golang.org/grpc/xds/internal/resolver/watch_service.go +++ b/vendor/google.golang.org/grpc/xds/internal/resolver/watch_service.go @@ -36,19 +36,19 @@ func newListenerWatcher(resourceName string, parent *xdsResolver) *listenerWatch return lw } -func (l *listenerWatcher) OnUpdate(update *xdsresource.ListenerResourceData, onDone xdsresource.OnDoneFunc) { +func (l *listenerWatcher) ResourceChanged(update *xdsresource.ListenerResourceData, onDone func()) { handleUpdate := func(context.Context) { l.parent.onListenerResourceUpdate(update.Resource); onDone() } l.parent.serializer.ScheduleOr(handleUpdate, onDone) } -func (l *listenerWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { +func (l *listenerWatcher) ResourceError(err error, onDone func()) { handleError := func(context.Context) { l.parent.onListenerResourceError(err); onDone() } l.parent.serializer.ScheduleOr(handleError, onDone) } -func (l *listenerWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { - handleNotFound := func(context.Context) { l.parent.onListenerResourceNotFound(); onDone() } - l.parent.serializer.ScheduleOr(handleNotFound, onDone) +func (l *listenerWatcher) AmbientError(err error, onDone func()) { + handleError := func(context.Context) { l.parent.onListenerResourceAmbientError(err); onDone() } + l.parent.serializer.ScheduleOr(handleError, onDone) } func (l *listenerWatcher) stop() { @@ -68,7 +68,7 @@ func newRouteConfigWatcher(resourceName string, parent *xdsResolver) *routeConfi return rw } -func (r *routeConfigWatcher) OnUpdate(u *xdsresource.RouteConfigResourceData, onDone xdsresource.OnDoneFunc) { +func (r *routeConfigWatcher) ResourceChanged(u *xdsresource.RouteConfigResourceData, onDone func()) { handleUpdate := func(context.Context) { r.parent.onRouteConfigResourceUpdate(r.resourceName, u.Resource) onDone() @@ -76,14 +76,14 @@ func (r *routeConfigWatcher) OnUpdate(u *xdsresource.RouteConfigResourceData, on r.parent.serializer.ScheduleOr(handleUpdate, onDone) } -func (r *routeConfigWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { +func (r *routeConfigWatcher) ResourceError(err error, onDone func()) { handleError := func(context.Context) { r.parent.onRouteConfigResourceError(r.resourceName, err); onDone() } r.parent.serializer.ScheduleOr(handleError, onDone) } -func (r *routeConfigWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { - handleNotFound := func(context.Context) { r.parent.onRouteConfigResourceNotFound(r.resourceName); onDone() } - r.parent.serializer.ScheduleOr(handleNotFound, onDone) +func (r *routeConfigWatcher) AmbientError(err error, onDone func()) { + handleError := func(context.Context) { r.parent.onRouteConfigResourceAmbientError(r.resourceName, err); onDone() } + r.parent.serializer.ScheduleOr(handleError, onDone) } func (r *routeConfigWatcher) stop() { diff --git a/vendor/google.golang.org/grpc/xds/internal/resolver/xds_resolver.go b/vendor/google.golang.org/grpc/xds/internal/resolver/xds_resolver.go index 3f9e187cc..a66719d06 100644 --- a/vendor/google.golang.org/grpc/xds/internal/resolver/xds_resolver.go +++ b/vendor/google.golang.org/grpc/xds/internal/resolver/xds_resolver.go @@ -459,7 +459,10 @@ func (r *xdsResolver) onResolutionComplete() { func (r *xdsResolver) applyRouteConfigUpdate(update xdsresource.RouteConfigUpdate) { matchVh := xdsresource.FindBestMatchingVirtualHost(r.dataplaneAuthority, update.VirtualHosts) if matchVh == nil { - r.onError(fmt.Errorf("no matching virtual host found for %q", r.dataplaneAuthority)) + // TODO(purnesh42h): Should this be a resource or ambient error? Note + // that its being called only from resource update methods when we have + // finished removing the previous update. + r.onAmbientError(fmt.Errorf("no matching virtual host found for %q", r.dataplaneAuthority)) return } r.currentRouteConfig = update @@ -469,12 +472,12 @@ func (r *xdsResolver) applyRouteConfigUpdate(update xdsresource.RouteConfigUpdat r.onResolutionComplete() } -// onError propagates the error up to the channel. And since this is invoked -// only for non resource-not-found errors, we don't have to update resolver +// onAmbientError propagates the error up to the channel. And since this is +// invoked only for non resource errors, we don't have to update resolver // state and we can keep using the old config. // // Only executed in the context of a serializer callback. -func (r *xdsResolver) onError(err error) { +func (r *xdsResolver) onAmbientError(err error) { r.cc.ReportError(err) } @@ -482,7 +485,7 @@ func (r *xdsResolver) onError(err error) { // are removed. // // Only executed in the context of a serializer callback. -func (r *xdsResolver) onResourceNotFound() { +func (r *xdsResolver) onResourceError(err error) { // We cannot remove clusters from the service config that have ongoing RPCs. // Instead, what we can do is to send an erroring config selector // along with normal service config. This will ensure that new RPCs will @@ -491,7 +494,7 @@ func (r *xdsResolver) onResourceNotFound() { // service config with no addresses. This results in the pick-first // LB policy being configured on the channel, and since there are no // address, pick-first will put the channel in TRANSIENT_FAILURE. - cs := newErroringConfigSelector(r.xdsClient.BootstrapConfig().Node().GetId()) + cs := newErroringConfigSelector(err, r.xdsClient.BootstrapConfig().Node().GetId()) r.sendNewServiceConfig(cs) // Stop and dereference the active config selector, if one exists. @@ -546,16 +549,18 @@ func (r *xdsResolver) onListenerResourceUpdate(update xdsresource.ListenerUpdate r.routeConfigWatcher = newRouteConfigWatcher(r.rdsResourceName, r) } -func (r *xdsResolver) onListenerResourceError(err error) { +func (r *xdsResolver) onListenerResourceAmbientError(err error) { if r.logger.V(2) { - r.logger.Infof("Received error for Listener resource %q: %v", r.ldsResourceName, err) + r.logger.Infof("Received ambient error for Listener resource %q: %v", r.ldsResourceName, err) } - r.onError(err) + r.onAmbientError(err) } // Only executed in the context of a serializer callback. -func (r *xdsResolver) onListenerResourceNotFound() { - r.logger.Warningf("Received resource-not-found-error for Listener resource %q", r.ldsResourceName) +func (r *xdsResolver) onListenerResourceError(err error) { + if r.logger.V(2) { + r.logger.Infof("Received resource error for Listener resource %q: %v", r.ldsResourceName, err) + } r.listenerUpdateRecvd = false if r.routeConfigWatcher != nil { @@ -566,7 +571,7 @@ func (r *xdsResolver) onListenerResourceNotFound() { r.routeConfigUpdateRecvd = false r.routeConfigWatcher = nil - r.onResourceNotFound() + r.onResourceError(err) } // Only executed in the context of a serializer callback. @@ -584,21 +589,23 @@ func (r *xdsResolver) onRouteConfigResourceUpdate(name string, update xdsresourc } // Only executed in the context of a serializer callback. -func (r *xdsResolver) onRouteConfigResourceError(name string, err error) { +func (r *xdsResolver) onRouteConfigResourceAmbientError(name string, err error) { if r.logger.V(2) { - r.logger.Infof("Received error for RouteConfiguration resource %q: %v", name, err) + r.logger.Infof("Received ambient error for RouteConfiguration resource %q: %v", name, err) } - r.onError(err) + r.onAmbientError(err) } // Only executed in the context of a serializer callback. -func (r *xdsResolver) onRouteConfigResourceNotFound(name string) { - r.logger.Warningf("Received resource-not-found-error for RouteConfiguration resource %q", name) +func (r *xdsResolver) onRouteConfigResourceError(name string, err error) { + if r.logger.V(2) { + r.logger.Infof("Received resource error for RouteConfiguration resource %q: %v", name, err) + } if r.rdsResourceName != name { return } - r.onResourceNotFound() + r.onResourceError(err) } // Only executed in the context of a serializer callback. diff --git a/vendor/google.golang.org/grpc/xds/internal/server/listener_wrapper.go b/vendor/google.golang.org/grpc/xds/internal/server/listener_wrapper.go index 62d59c487..2c32ace8a 100644 --- a/vendor/google.golang.org/grpc/xds/internal/server/listener_wrapper.go +++ b/vendor/google.golang.org/grpc/xds/internal/server/listener_wrapper.go @@ -159,36 +159,6 @@ type listenerWrapper struct { rdsHandler *rdsHandler } -func (l *listenerWrapper) handleLDSUpdate(update xdsresource.ListenerUpdate) { - ilc := update.InboundListenerCfg - // Make sure that the socket address on the received Listener resource - // matches the address of the net.Listener passed to us by the user. This - // check is done here instead of at the XDSClient layer because of the - // following couple of reasons: - // - XDSClient cannot know the listening address of every listener in the - // system, and hence cannot perform this check. - // - this is a very context-dependent check and only the server has the - // appropriate context to perform this check. - // - // What this means is that the XDSClient has ACKed a resource which can push - // the server into a "not serving" mode. This is not ideal, but this is - // what we have decided to do. - if ilc.Address != l.addr || ilc.Port != l.port { - l.mu.Lock() - err := l.annotateErrorWithNodeID(fmt.Errorf("address (%s:%s) in Listener update does not match listening address: (%s:%s)", ilc.Address, ilc.Port, l.addr, l.port)) - l.switchModeLocked(connectivity.ServingModeNotServing, err) - l.mu.Unlock() - return - } - - l.pendingFilterChainManager = ilc.FilterChains - l.rdsHandler.updateRouteNamesToWatch(ilc.FilterChains.RouteConfigNames) - - if l.rdsHandler.determineRouteConfigurationReady() { - l.maybeUpdateFilterChains() - } -} - // maybeUpdateFilterChains swaps in the pending filter chain manager to the // active one if the pending filter chain manager is present. If a swap occurs, // it also drains (gracefully stops) any connections that were accepted on the @@ -408,19 +378,6 @@ func (l *listenerWrapper) switchModeLocked(newMode connectivity.ServingMode, err } } -func (l *listenerWrapper) annotateErrorWithNodeID(err error) error { - return fmt.Errorf("[xDS node id: %v]: %w", l.xdsNodeID, err) -} - -func (l *listenerWrapper) onLDSResourceDoesNotExist(err error) { - l.mu.Lock() - defer l.mu.Unlock() - l.switchModeLocked(connectivity.ServingModeNotServing, l.annotateErrorWithNodeID(err)) - l.activeFilterChainManager = nil - l.pendingFilterChainManager = nil - l.rdsHandler.updateRouteNamesToWatch(make(map[string]bool)) -} - // ldsWatcher implements the xdsresource.ListenerWatcher interface and is // passed to the WatchListener API. type ldsWatcher struct { @@ -429,7 +386,7 @@ type ldsWatcher struct { name string } -func (lw *ldsWatcher) OnUpdate(update *xdsresource.ListenerResourceData, onDone xdsresource.OnDoneFunc) { +func (lw *ldsWatcher) ResourceChanged(update *xdsresource.ListenerResourceData, onDone func()) { defer onDone() if lw.parent.closed.HasFired() { lw.logger.Warningf("Resource %q received update: %#v after listener was closed", lw.name, update) @@ -438,30 +395,64 @@ func (lw *ldsWatcher) OnUpdate(update *xdsresource.ListenerResourceData, onDone if lw.logger.V(2) { lw.logger.Infof("LDS watch for resource %q received update: %#v", lw.name, update.Resource) } - lw.parent.handleLDSUpdate(update.Resource) + l := lw.parent + ilc := update.Resource.InboundListenerCfg + // Make sure that the socket address on the received Listener resource + // matches the address of the net.Listener passed to us by the user. This + // check is done here instead of at the XDSClient layer because of the + // following couple of reasons: + // - XDSClient cannot know the listening address of every listener in the + // system, and hence cannot perform this check. + // - this is a very context-dependent check and only the server has the + // appropriate context to perform this check. + // + // What this means is that the XDSClient has ACKed a resource which can push + // the server into a "not serving" mode. This is not ideal, but this is + // what we have decided to do. + if ilc.Address != l.addr || ilc.Port != l.port { + // TODO(purnesh42h): Are there any other cases where this can be + // treated as an ambient error? + l.mu.Lock() + err := fmt.Errorf("[xDS node id: %v]: %w", l.xdsNodeID, fmt.Errorf("address (%s:%s) in Listener update does not match listening address: (%s:%s)", ilc.Address, ilc.Port, l.addr, l.port)) + l.switchModeLocked(connectivity.ServingModeNotServing, err) + l.mu.Unlock() + return + } + + l.pendingFilterChainManager = ilc.FilterChains + l.rdsHandler.updateRouteNamesToWatch(ilc.FilterChains.RouteConfigNames) + + if l.rdsHandler.determineRouteConfigurationReady() { + l.maybeUpdateFilterChains() + } } -func (lw *ldsWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { +func (lw *ldsWatcher) ResourceError(err error, onDone func()) { defer onDone() if lw.parent.closed.HasFired() { - lw.logger.Warningf("Resource %q received error: %v after listener was closed", lw.name, err) + lw.logger.Warningf("Resource %q received resource error: %v after listener was closed", lw.name, err) return } if lw.logger.V(2) { - lw.logger.Infof("LDS watch for resource %q reported error: %v", lw.name, err) + lw.logger.Infof("LDS watch for resource %q reported resource error: %v", lw.name, err) } - // For errors which are anything other than "resource-not-found", we - // continue to use the old configuration. + + l := lw.parent + l.mu.Lock() + defer l.mu.Unlock() + l.switchModeLocked(connectivity.ServingModeNotServing, err) + l.activeFilterChainManager = nil + l.pendingFilterChainManager = nil + l.rdsHandler.updateRouteNamesToWatch(make(map[string]bool)) } -func (lw *ldsWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { +func (lw *ldsWatcher) AmbientError(err error, onDone func()) { defer onDone() if lw.parent.closed.HasFired() { - lw.logger.Warningf("Resource %q received resource-does-not-exist error after listener was closed", lw.name) + lw.logger.Warningf("Resource %q received ambient error: %v after listener was closed", lw.name, err) return } - lw.logger.Warningf("LDS watch for resource %q reported resource-does-not-exist error", lw.name) - - err := xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "resource name %q of type Listener not found in received response", lw.name) - lw.parent.onLDSResourceDoesNotExist(err) + if lw.logger.V(2) { + lw.logger.Infof("LDS watch for resource %q reported ambient error: %v", lw.name, err) + } } diff --git a/vendor/google.golang.org/grpc/xds/internal/server/rds_handler.go b/vendor/google.golang.org/grpc/xds/internal/server/rds_handler.go index 29bbf1804..4b8eb22de 100644 --- a/vendor/google.golang.org/grpc/xds/internal/server/rds_handler.go +++ b/vendor/google.golang.org/grpc/xds/internal/server/rds_handler.go @@ -19,7 +19,6 @@ package server import ( - "fmt" "sync" igrpclog "google.golang.org/grpc/internal/grpclog" @@ -109,21 +108,6 @@ func (rh *rdsHandler) determineRouteConfigurationReady() bool { return len(rh.updates) == len(rh.cancels) } -// Must be called from an xDS Client Callback. -func (rh *rdsHandler) handleRouteUpdate(routeName string, update rdsWatcherUpdate) { - rwu := rh.updates[routeName] - - // Accept the new update if any of the following are true: - // 1. we had no valid update data. - // 2. the update is valid. - // 3. the update error is ResourceNotFound. - if rwu.data == nil || update.err == nil || xdsresource.ErrType(update.err) == xdsresource.ErrorTypeResourceNotFound { - rwu = update - } - rh.updates[routeName] = rwu - rh.callback(routeName, rwu) -} - // close() is meant to be called by wrapped listener when the wrapped listener // is closed, and it cleans up resources by canceling all the active RDS // watches. @@ -151,7 +135,7 @@ type rdsWatcher struct { canceled bool // eats callbacks if true } -func (rw *rdsWatcher) OnUpdate(update *xdsresource.RouteConfigResourceData, onDone xdsresource.OnDoneFunc) { +func (rw *rdsWatcher) ResourceChanged(update *xdsresource.RouteConfigResourceData, onDone func()) { defer onDone() rw.mu.Lock() if rw.canceled { @@ -162,10 +146,14 @@ func (rw *rdsWatcher) OnUpdate(update *xdsresource.RouteConfigResourceData, onDo if rw.logger.V(2) { rw.logger.Infof("RDS watch for resource %q received update: %#v", rw.routeName, update.Resource) } - rw.parent.handleRouteUpdate(rw.routeName, rdsWatcherUpdate{data: &update.Resource}) + + routeName := rw.routeName + rwu := rdsWatcherUpdate{data: &update.Resource} + rw.parent.updates[routeName] = rwu + rw.parent.callback(routeName, rwu) } -func (rw *rdsWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { +func (rw *rdsWatcher) ResourceError(err error, onDone func()) { defer onDone() rw.mu.Lock() if rw.canceled { @@ -174,12 +162,16 @@ func (rw *rdsWatcher) OnError(err error, onDone xdsresource.OnDoneFunc) { } rw.mu.Unlock() if rw.logger.V(2) { - rw.logger.Infof("RDS watch for resource %q reported error: %v", rw.routeName, err) + rw.logger.Infof("RDS watch for resource %q reported resource error", rw.routeName) } - rw.parent.handleRouteUpdate(rw.routeName, rdsWatcherUpdate{err: err}) + + routeName := rw.routeName + rwu := rdsWatcherUpdate{err: err} + rw.parent.updates[routeName] = rwu + rw.parent.callback(routeName, rwu) } -func (rw *rdsWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { +func (rw *rdsWatcher) AmbientError(err error, onDone func()) { defer onDone() rw.mu.Lock() if rw.canceled { @@ -187,8 +179,10 @@ func (rw *rdsWatcher) OnResourceDoesNotExist(onDone xdsresource.OnDoneFunc) { return } rw.mu.Unlock() - rw.logger.Warningf("RDS watch for resource %q reported resource-does-not-exist error", rw.routeName) - err := xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "resource name %q of type RouteConfiguration not found in received response", rw.routeName) - err = fmt.Errorf("[xDS node id: %v]: %w", rw.parent.xdsNodeID, err) - rw.parent.handleRouteUpdate(rw.routeName, rdsWatcherUpdate{err: err}) + if rw.logger.V(2) { + rw.logger.Infof("RDS watch for resource %q reported ambient error: %v", rw.routeName, err) + } + routeName := rw.routeName + rwu := rw.parent.updates[routeName] + rw.parent.callback(routeName, rwu) } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/client.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/client.go index 8fa6b1a52..42f1a28f0 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/client.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/client.go @@ -21,9 +21,11 @@ package xdsclient import ( + "context" + v3statuspb "github.com/envoyproxy/go-control-plane/envoy/service/status/v3" "google.golang.org/grpc/internal/xds/bootstrap" - "google.golang.org/grpc/xds/internal/xdsclient/load" + "google.golang.org/grpc/xds/internal/clients/lrsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" ) @@ -47,7 +49,7 @@ type XDSClient interface { // the watcher is canceled. Callers need to handle this case. WatchResource(rType xdsresource.Type, resourceName string, watcher xdsresource.ResourceWatcher) (cancel func()) - ReportLoad(*bootstrap.ServerConfig) (*load.Store, func()) + ReportLoad(*bootstrap.ServerConfig) (*lrsclient.LoadStore, func(context.Context)) BootstrapConfig() *bootstrap.Config } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl.go index d8e727e31..967182740 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl.go @@ -19,25 +19,22 @@ package xdsclient import ( - "context" - "errors" "fmt" - "sync" "sync/atomic" "time" - v3statuspb "github.com/envoyproxy/go-control-plane/envoy/service/status/v3" + "google.golang.org/grpc" estats "google.golang.org/grpc/experimental/stats" - "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/grpclog" - "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/internal/xds/bootstrap" - xdsclientinternal "google.golang.org/grpc/xds/internal/xdsclient/internal" - "google.golang.org/grpc/xds/internal/xdsclient/transport" - "google.golang.org/grpc/xds/internal/xdsclient/transport/ads" - "google.golang.org/grpc/xds/internal/xdsclient/transport/grpctransport" - "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" + + xdsbootstrap "google.golang.org/grpc/xds/bootstrap" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/grpctransport" + "google.golang.org/grpc/xds/internal/clients/lrsclient" + "google.golang.org/grpc/xds/internal/clients/xdsclient" + "google.golang.org/grpc/xds/internal/clients/xdsclient/metrics" ) const ( @@ -50,11 +47,6 @@ const ( ) var ( - _ XDSClient = &clientImpl{} - - // ErrClientClosed is returned when the xDS client is closed. - ErrClientClosed = errors.New("xds: the xDS client is closed") - // The following functions are no-ops in the actual code, but can be // overridden in tests to give them visibility into certain events. xdsClientImplCreateHook = func(string) {} @@ -85,88 +77,59 @@ var ( }) ) -// clientImpl is the real implementation of the xDS client. The exported Client -// is a wrapper of this struct with a ref count. +// clientImpl embed xdsclient.XDSClient and implement internal XDSClient +// interface with ref counting so that it can be shared by the xds resolver and +// balancer implementations, across multiple ClientConns and Servers. type clientImpl struct { + *xdsclient.XDSClient // TODO: #8313 - get rid of embedding, if possible. + // The following fields are initialized at creation time and are read-only - // after that, and therefore can be accessed without a mutex. - done *grpcsync.Event // Fired when the client is closed. - topLevelAuthority *authority // The top-level authority, used only for old-style names without an authority. - authorities map[string]*authority // Map from authority names in bootstrap to authority struct. - config *bootstrap.Config // Complete bootstrap configuration. - watchExpiryTimeout time.Duration // Expiry timeout for ADS watch. - backoff func(int) time.Duration // Backoff for ADS and LRS stream failures. - transportBuilder transport.Builder // Builder to create transports to xDS server. - resourceTypes *resourceTypeRegistry // Registry of resource types, for parsing incoming ADS responses. - serializer *grpcsync.CallbackSerializer // Serializer for invoking resource watcher callbacks. - serializerClose func() // Function to close the serializer. - logger *grpclog.PrefixLogger // Logger for this client. - metricsRecorder estats.MetricsRecorder // Metrics recorder for metrics. - target string // The gRPC target for this client. + // after that. + xdsClientConfig xdsclient.Config + bootstrapConfig *bootstrap.Config + logger *grpclog.PrefixLogger + target string + lrsClient *lrsclient.LRSClient - // The clientImpl owns a bunch of channels to individual xDS servers - // specified in the bootstrap configuration. Authorities acquire references - // to these channels based on server configs within the authority config. - // The clientImpl maintains a list of interested authorities for each of - // these channels, and forwards updates from the channels to each of these - // authorities. - // - // Once all references to a channel are dropped, the channel is closed. - channelsMu sync.Mutex - xdsActiveChannels map[string]*channelState // Map from server config to in-use xdsChannels. + // Accessed atomically + refCount int32 } -func init() { - internal.TriggerXDSResourceNotFoundForTesting = triggerXDSResourceNotFoundForTesting - xdsclientinternal.ResourceWatchStateForTesting = resourceWatchStateForTesting - - DefaultPool = &Pool{clients: make(map[string]*clientRefCounted)} +// metricsReporter implements the clients.MetricsReporter interface and uses an +// underlying stats.MetricsRecorderList to record metrics. +type metricsReporter struct { + recorder estats.MetricsRecorder + target string } -// newClientImpl returns a new xdsClient with the given config. -func newClientImpl(config *bootstrap.Config, watchExpiryTimeout time.Duration, streamBackoff func(int) time.Duration, mr estats.MetricsRecorder, target string) (*clientImpl, error) { - ctx, cancel := context.WithCancel(context.Background()) - c := &clientImpl{ - metricsRecorder: mr, - target: target, - done: grpcsync.NewEvent(), - authorities: make(map[string]*authority), - config: config, - watchExpiryTimeout: watchExpiryTimeout, - backoff: streamBackoff, - serializer: grpcsync.NewCallbackSerializer(ctx), - serializerClose: cancel, - transportBuilder: &grpctransport.Builder{}, - resourceTypes: newResourceTypeRegistry(), - xdsActiveChannels: make(map[string]*channelState), +// ReportMetric implements the clients.MetricsReporter interface. +// It receives metric data, determines the appropriate metric based on the type +// of the data, and records it using the embedded MetricsRecorderList. +func (mr *metricsReporter) ReportMetric(metric any) { + if mr.recorder == nil { + return } - for name, cfg := range config.Authorities() { - // If server configs are specified in the authorities map, use that. - // Else, use the top-level server configs. - serverCfg := config.XDSServers() - if len(cfg.XDSServers) >= 1 { - serverCfg = cfg.XDSServers - } - c.authorities[name] = newAuthority(authorityBuildOptions{ - serverConfigs: serverCfg, - name: name, - serializer: c.serializer, - getChannelForADS: c.getChannelForADS, - logPrefix: clientPrefix(c), - target: target, - metricsRecorder: c.metricsRecorder, - }) + switch m := metric.(type) { + case *metrics.ResourceUpdateValid: + xdsClientResourceUpdatesValidMetric.Record(mr.recorder, 1, mr.target, m.ServerURI, m.ResourceType) + case *metrics.ResourceUpdateInvalid: + xdsClientResourceUpdatesInvalidMetric.Record(mr.recorder, 1, mr.target, m.ServerURI, m.ResourceType) + case *metrics.ServerFailure: + xdsClientServerFailureMetric.Record(mr.recorder, 1, mr.target, m.ServerURI) } - c.topLevelAuthority = newAuthority(authorityBuildOptions{ - serverConfigs: config.XDSServers(), - name: "", - serializer: c.serializer, - getChannelForADS: c.getChannelForADS, - logPrefix: clientPrefix(c), - target: target, - metricsRecorder: c.metricsRecorder, - }) +} + +func newClientImpl(config *bootstrap.Config, metricsRecorder estats.MetricsRecorder, target string) (*clientImpl, error) { + gConfig, err := buildXDSClientConfig(config, metricsRecorder, target) + if err != nil { + return nil, err + } + client, err := xdsclient.New(gConfig) + if err != nil { + return nil, err + } + c := &clientImpl{XDSClient: client, xdsClientConfig: gConfig, bootstrapConfig: config, target: target, refCount: 1} c.logger = prefixLogger(c) return c, nil } @@ -174,332 +137,102 @@ func newClientImpl(config *bootstrap.Config, watchExpiryTimeout time.Duration, s // BootstrapConfig returns the configuration read from the bootstrap file. // Callers must treat the return value as read-only. func (c *clientImpl) BootstrapConfig() *bootstrap.Config { - return c.config + return c.bootstrapConfig } -// close closes the xDS client and releases all resources. -func (c *clientImpl) close() { - if c.done.HasFired() { - return - } - c.done.Fire() - - c.topLevelAuthority.close() - for _, a := range c.authorities { - a.close() - } +func (c *clientImpl) incrRef() int32 { + return atomic.AddInt32(&c.refCount, 1) +} - // Channel close cannot be invoked with the lock held, because it can race - // with stream failure happening at the same time. The latter will callback - // into the clientImpl and will attempt to grab the lock. This will result - // in a deadlock. So instead, we release the lock and wait for all active - // channels to be closed. - var channelsToClose []*xdsChannel - c.channelsMu.Lock() - for _, cs := range c.xdsActiveChannels { - channelsToClose = append(channelsToClose, cs.channel) - } - c.xdsActiveChannels = nil - c.channelsMu.Unlock() - for _, c := range channelsToClose { - c.close() - } +func (c *clientImpl) decrRef() int32 { + return atomic.AddInt32(&c.refCount, -1) +} - c.serializerClose() - <-c.serializer.Done() +// buildXDSClientConfig builds the xdsclient.Config from the bootstrap.Config. +func buildXDSClientConfig(config *bootstrap.Config, metricsRecorder estats.MetricsRecorder, target string) (xdsclient.Config, error) { + grpcTransportConfigs := make(map[string]grpctransport.Config) + gServerCfgMap := make(map[xdsclient.ServerConfig]*bootstrap.ServerConfig) - for _, s := range c.config.XDSServers() { - for _, f := range s.Cleanups() { - f() + gAuthorities := make(map[string]xdsclient.Authority) + for name, cfg := range config.Authorities() { + // If server configs are specified in the authorities map, use that. + // Else, use the top-level server configs. + serverCfg := config.XDSServers() + if len(cfg.XDSServers) >= 1 { + serverCfg = cfg.XDSServers } - } - for _, a := range c.config.Authorities() { - for _, s := range a.XDSServers { - for _, f := range s.Cleanups() { - f() + var gServerCfg []xdsclient.ServerConfig + for _, sc := range serverCfg { + if err := populateGRPCTransportConfigsFromServerConfig(sc, grpcTransportConfigs); err != nil { + return xdsclient.Config{}, err } + gsc := xdsclient.ServerConfig{ + ServerIdentifier: clients.ServerIdentifier{ServerURI: sc.ServerURI(), Extensions: grpctransport.ServerIdentifierExtension{ConfigName: sc.SelectedCreds().Type}}, + IgnoreResourceDeletion: sc.ServerFeaturesIgnoreResourceDeletion()} + gServerCfg = append(gServerCfg, gsc) + gServerCfgMap[gsc] = sc } - } - c.logger.Infof("Shutdown") -} - -// getChannelForADS returns an xdsChannel for the given server configuration. -// -// If an xdsChannel exists for the given server configuration, it is returned. -// Else a new one is created. It also ensures that the calling authority is -// added to the set of interested authorities for the returned channel. -// -// It returns the xdsChannel and a function to release the calling authority's -// reference on the channel. The caller must call the cancel function when it is -// no longer interested in this channel. -// -// A non-nil error is returned if an xdsChannel was not created. -func (c *clientImpl) getChannelForADS(serverConfig *bootstrap.ServerConfig, callingAuthority *authority) (*xdsChannel, func(), error) { - if c.done.HasFired() { - return nil, nil, ErrClientClosed + gAuthorities[name] = xdsclient.Authority{XDSServers: gServerCfg} } - initLocked := func(s *channelState) { - if c.logger.V(2) { - c.logger.Infof("Adding authority %q to the set of interested authorities for channel [%p]", callingAuthority.name, s.channel) + gServerCfgs := make([]xdsclient.ServerConfig, 0, len(config.XDSServers())) + for _, sc := range config.XDSServers() { + if err := populateGRPCTransportConfigsFromServerConfig(sc, grpcTransportConfigs); err != nil { + return xdsclient.Config{}, err } - s.interestedAuthorities[callingAuthority] = true - } - deInitLocked := func(s *channelState) { - if c.logger.V(2) { - c.logger.Infof("Removing authority %q from the set of interested authorities for channel [%p]", callingAuthority.name, s.channel) - } - delete(s.interestedAuthorities, callingAuthority) - } - - return c.getOrCreateChannel(serverConfig, initLocked, deInitLocked) -} - -// getChannelForLRS returns an xdsChannel for the given server configuration. -// -// If an xdsChannel exists for the given server configuration, it is returned. -// Else a new one is created. A reference count that tracks the number of LRS -// calls on the returned channel is incremented before returning the channel. -// -// It returns the xdsChannel and a function to decrement the reference count -// that tracks the number of LRS calls on the returned channel. The caller must -// call the cancel function when it is no longer interested in this channel. -// -// A non-nil error is returned if an xdsChannel was not created. -func (c *clientImpl) getChannelForLRS(serverConfig *bootstrap.ServerConfig) (*xdsChannel, func(), error) { - if c.done.HasFired() { - return nil, nil, ErrClientClosed - } - - initLocked := func(s *channelState) { s.lrsRefs++ } - deInitLocked := func(s *channelState) { s.lrsRefs-- } - - return c.getOrCreateChannel(serverConfig, initLocked, deInitLocked) -} - -// getOrCreateChannel returns an xdsChannel for the given server configuration. -// -// If an active xdsChannel exists for the given server configuration, it is -// returned. If an idle xdsChannel exists for the given server configuration, it -// is revived from the idle cache and returned. Else a new one is created. -// -// The initLocked function runs some initialization logic before the channel is -// returned. This includes adding the calling authority to the set of interested -// authorities for the channel or incrementing the count of the number of LRS -// calls on the channel. -// -// The deInitLocked function runs some cleanup logic when the returned cleanup -// function is called. This involves removing the calling authority from the set -// of interested authorities for the channel or decrementing the count of the -// number of LRS calls on the channel. -// -// Both initLocked and deInitLocked are called with the c.channelsMu held. -// -// Returns the xdsChannel and a cleanup function to be invoked when the channel -// is no longer required. A non-nil error is returned if an xdsChannel was not -// created. -func (c *clientImpl) getOrCreateChannel(serverConfig *bootstrap.ServerConfig, initLocked, deInitLocked func(*channelState)) (*xdsChannel, func(), error) { - c.channelsMu.Lock() - defer c.channelsMu.Unlock() - - if c.logger.V(2) { - c.logger.Infof("Received request for a reference to an xdsChannel for server config %q", serverConfig) - } - - // Use an existing channel, if one exists for this server config. - if state, ok := c.xdsActiveChannels[serverConfig.String()]; ok { - if c.logger.V(2) { - c.logger.Infof("Reusing an existing xdsChannel for server config %q", serverConfig) + gsc := xdsclient.ServerConfig{ + ServerIdentifier: clients.ServerIdentifier{ServerURI: sc.ServerURI(), Extensions: grpctransport.ServerIdentifierExtension{ConfigName: sc.SelectedCreds().Type}}, + IgnoreResourceDeletion: sc.ServerFeaturesIgnoreResourceDeletion()} + gServerCfgs = append(gServerCfgs, gsc) + gServerCfgMap[gsc] = sc + } + + node := config.Node() + gNode := clients.Node{ + ID: node.GetId(), + Cluster: node.GetCluster(), + Metadata: node.Metadata, + UserAgentName: node.UserAgentName, + UserAgentVersion: node.GetUserAgentVersion(), + } + if node.Locality != nil { + gNode.Locality = clients.Locality{ + Region: node.Locality.Region, + Zone: node.Locality.Zone, + SubZone: node.Locality.SubZone, } - initLocked(state) - return state.channel, c.releaseChannel(serverConfig, state, deInitLocked), nil - } - - if c.logger.V(2) { - c.logger.Infof("Creating a new xdsChannel for server config %q", serverConfig) - } - - // Create a new transport and create a new xdsChannel, and add it to the - // map of xdsChannels. - tr, err := c.transportBuilder.Build(transport.BuildOptions{ServerConfig: serverConfig}) - if err != nil { - return nil, func() {}, fmt.Errorf("xds: failed to create transport for server config %s: %v", serverConfig, err) } - state := &channelState{ - parent: c, - serverConfig: serverConfig, - interestedAuthorities: make(map[*authority]bool), - } - channel, err := newXDSChannel(xdsChannelOpts{ - transport: tr, - serverConfig: serverConfig, - bootstrapConfig: c.config, - resourceTypeGetter: c.resourceTypes.get, - eventHandler: state, - backoff: c.backoff, - watchExpiryTimeout: c.watchExpiryTimeout, - logPrefix: clientPrefix(c), - }) - if err != nil { - return nil, func() {}, fmt.Errorf("xds: failed to create xdsChannel for server config %s: %v", serverConfig, err) - } - state.channel = channel - c.xdsActiveChannels[serverConfig.String()] = state - initLocked(state) - return state.channel, c.releaseChannel(serverConfig, state, deInitLocked), nil -} - -// releaseChannel is a function that is called when a reference to an xdsChannel -// needs to be released. It handles closing channels with no active references. -// -// The function takes the following parameters: -// - serverConfig: the server configuration for the xdsChannel -// - state: the state of the xdsChannel -// - deInitLocked: a function that performs any necessary cleanup for the xdsChannel -// -// The function returns another function that can be called to release the -// reference to the xdsChannel. This returned function is idempotent, meaning -// it can be called multiple times without any additional effect. -func (c *clientImpl) releaseChannel(serverConfig *bootstrap.ServerConfig, state *channelState, deInitLocked func(*channelState)) func() { - return sync.OnceFunc(func() { - c.channelsMu.Lock() - if c.logger.V(2) { - c.logger.Infof("Received request to release a reference to an xdsChannel for server config %q", serverConfig) + return xdsclient.Config{ + Authorities: gAuthorities, + Servers: gServerCfgs, + Node: gNode, + TransportBuilder: grpctransport.NewBuilder(grpcTransportConfigs), + ResourceTypes: supportedResourceTypes(config, gServerCfgMap), + MetricsReporter: &metricsReporter{recorder: metricsRecorder, target: target}, + }, nil +} + +// populateGRPCTransportConfigsFromServerConfig iterates through the channel +// credentials of the provided server configuration, builds credential bundles, +// and populates the grpctransport.Config map. +func populateGRPCTransportConfigsFromServerConfig(sc *bootstrap.ServerConfig, grpcTransportConfigs map[string]grpctransport.Config) error { + for _, cc := range sc.ChannelCreds() { + c := xdsbootstrap.GetCredentials(cc.Type) + if c == nil { + continue } - deInitLocked(state) - - // The channel has active users. Do nothing and return. - if state.lrsRefs != 0 || len(state.interestedAuthorities) != 0 { - if c.logger.V(2) { - c.logger.Infof("xdsChannel %p has other active references", state.channel) - } - c.channelsMu.Unlock() - return + bundle, _, err := c.Build(cc.Config) + if err != nil { + return fmt.Errorf("xds: failed to build credentials bundle from bootstrap for %q: %v", cc.Type, err) } - - delete(c.xdsActiveChannels, serverConfig.String()) - if c.logger.V(2) { - c.logger.Infof("Closing xdsChannel [%p] for server config %s", state.channel, serverConfig) - } - channelToClose := state.channel - c.channelsMu.Unlock() - - channelToClose.close() - }) -} - -// dumpResources returns the status and contents of all xDS resources. -func (c *clientImpl) dumpResources() *v3statuspb.ClientConfig { - retCfg := c.topLevelAuthority.dumpResources() - for _, a := range c.authorities { - retCfg = append(retCfg, a.dumpResources()...) - } - - return &v3statuspb.ClientConfig{ - Node: c.config.Node(), - GenericXdsConfigs: retCfg, - } -} - -// channelState represents the state of an xDS channel. It tracks the number of -// LRS references, the authorities interested in the channel, and the server -// configuration used for the channel. -// -// It receives callbacks for events on the underlying ADS stream and invokes -// corresponding callbacks on interested authorities. -type channelState struct { - parent *clientImpl - serverConfig *bootstrap.ServerConfig - - // Access to the following fields should be protected by the parent's - // channelsMu. - channel *xdsChannel - lrsRefs int - interestedAuthorities map[*authority]bool -} - -func (cs *channelState) adsStreamFailure(err error) { - if cs.parent.done.HasFired() { - return - } - - if xdsresource.ErrType(err) != xdsresource.ErrTypeStreamFailedAfterRecv { - xdsClientServerFailureMetric.Record(cs.parent.metricsRecorder, 1, cs.parent.target, cs.serverConfig.ServerURI()) - } - - cs.parent.channelsMu.Lock() - defer cs.parent.channelsMu.Unlock() - for authority := range cs.interestedAuthorities { - authority.adsStreamFailure(cs.serverConfig, err) - } -} - -func (cs *channelState) adsResourceUpdate(typ xdsresource.Type, updates map[string]ads.DataAndErrTuple, md xdsresource.UpdateMetadata, onDone func()) { - if cs.parent.done.HasFired() { - return - } - - cs.parent.channelsMu.Lock() - defer cs.parent.channelsMu.Unlock() - - if len(cs.interestedAuthorities) == 0 { - onDone() - return - } - - authorityCnt := new(atomic.Int64) - authorityCnt.Add(int64(len(cs.interestedAuthorities))) - done := func() { - if authorityCnt.Add(-1) == 0 { - onDone() + grpcTransportConfigs[cc.Type] = grpctransport.Config{ + Credentials: bundle, + GRPCNewClient: func(target string, opts ...grpc.DialOption) (*grpc.ClientConn, error) { + opts = append(opts, sc.DialOptions()...) + return grpc.NewClient(target, opts...) + }, } } - for authority := range cs.interestedAuthorities { - authority.adsResourceUpdate(cs.serverConfig, typ, updates, md, done) - } -} - -func (cs *channelState) adsResourceDoesNotExist(typ xdsresource.Type, resourceName string) { - if cs.parent.done.HasFired() { - return - } - - cs.parent.channelsMu.Lock() - defer cs.parent.channelsMu.Unlock() - for authority := range cs.interestedAuthorities { - authority.adsResourceDoesNotExist(typ, resourceName) - } -} - -// clientRefCounted is ref-counted, and to be shared by the xds resolver and -// balancer implementations, across multiple ClientConns and Servers. -type clientRefCounted struct { - *clientImpl - - refCount int32 // accessed atomically -} - -func (c *clientRefCounted) incrRef() int32 { - return atomic.AddInt32(&c.refCount, 1) -} - -func (c *clientRefCounted) decrRef() int32 { - return atomic.AddInt32(&c.refCount, -1) -} - -func triggerXDSResourceNotFoundForTesting(client XDSClient, typ xdsresource.Type, name string) error { - crc, ok := client.(*clientRefCounted) - if !ok { - return fmt.Errorf("xds: xDS client is of type %T, want %T", client, &clientRefCounted{}) - } - return crc.clientImpl.triggerResourceNotFoundForTesting(typ, name) -} - -func resourceWatchStateForTesting(client XDSClient, typ xdsresource.Type, name string) (ads.ResourceWatchState, error) { - crc, ok := client.(*clientRefCounted) - if !ok { - return ads.ResourceWatchState{}, fmt.Errorf("xds: xDS client is of type %T, want %T", client, &clientRefCounted{}) - } - return crc.clientImpl.resourceWatchStateForTesting(typ, name) + return nil } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_loadreport.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_loadreport.go index efb41b87d..39004ae7e 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_loadreport.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_loadreport.go @@ -18,24 +18,44 @@ package xdsclient import ( + "context" + "sync" + "google.golang.org/grpc/internal/xds/bootstrap" - "google.golang.org/grpc/xds/internal/xdsclient/load" + "google.golang.org/grpc/xds/internal/clients" + "google.golang.org/grpc/xds/internal/clients/grpctransport" + "google.golang.org/grpc/xds/internal/clients/lrsclient" ) // ReportLoad starts a load reporting stream to the given server. All load // reports to the same server share the LRS stream. // -// It returns a Store for the user to report loads, a function to cancel the -// load reporting stream. -func (c *clientImpl) ReportLoad(server *bootstrap.ServerConfig) (*load.Store, func()) { - xc, releaseChannelRef, err := c.getChannelForLRS(server) +// It returns a lrsclient.LoadStore for the user to report loads. +func (c *clientImpl) ReportLoad(server *bootstrap.ServerConfig) (*lrsclient.LoadStore, func(context.Context)) { + if c.lrsClient == nil { + lrsC, err := lrsclient.New(lrsclient.Config{ + Node: c.xdsClientConfig.Node, + TransportBuilder: c.xdsClientConfig.TransportBuilder, + }) + if err != nil { + c.logger.Warningf("Failed to create an lrs client to the management server to report load: %v", server, err) + return nil, func(context.Context) {} + } + c.lrsClient = lrsC + } + + load, err := c.lrsClient.ReportLoad(clients.ServerIdentifier{ + ServerURI: server.ServerURI(), + Extensions: grpctransport.ServerIdentifierExtension{ + ConfigName: server.SelectedCreds().Type, + }, + }) if err != nil { - c.logger.Warningf("Failed to create a channel to the management server to report load: %v", server, err) - return nil, func() {} + c.logger.Warningf("Failed to create a load store to the management server to report load: %v", server, err) + return nil, func(context.Context) {} } - load, stopLoadReporting := xc.reportLoad() - return load, func() { - stopLoadReporting() - releaseChannelRef() + var loadStop sync.Once + return load, func(ctx context.Context) { + loadStop.Do(func() { load.Stop(ctx) }) } } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_watchers.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_watchers.go index c080a0b4c..29435993f 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_watchers.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/clientimpl_watchers.go @@ -18,143 +18,14 @@ package xdsclient import ( - "context" - "fmt" - "sync" - - "google.golang.org/grpc/xds/internal/xdsclient/transport/ads" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" ) -// wrappingWatcher is a wrapper around an xdsresource.ResourceWatcher that adds -// the node ID to the error messages reported to the watcher. -type wrappingWatcher struct { - xdsresource.ResourceWatcher - nodeID string -} - -func (w *wrappingWatcher) OnError(err error, done xdsresource.OnDoneFunc) { - w.ResourceWatcher.OnError(fmt.Errorf("[xDS node id: %v]: %w", w.nodeID, err), done) -} - // WatchResource uses xDS to discover the resource associated with the provided // resource name. The resource type implementation determines how xDS responses // are are deserialized and validated, as received from the xDS management // server. Upon receipt of a response from the management server, an // appropriate callback on the watcher is invoked. func (c *clientImpl) WatchResource(rType xdsresource.Type, resourceName string, watcher xdsresource.ResourceWatcher) (cancel func()) { - // Return early if the client is already closed. - // - // The client returned from the top-level API is a ref-counted client which - // contains a pointer to `clientImpl`. When all references are released, the - // ref-counted client sets its pointer to `nil`. And if any watch APIs are - // made on such a closed client, we will get here with a `nil` receiver. - if c == nil || c.done.HasFired() { - logger.Warningf("Watch registered for name %q of type %q, but client is closed", rType.TypeName(), resourceName) - return func() {} - } - - watcher = &wrappingWatcher{ - ResourceWatcher: watcher, - nodeID: c.config.Node().GetId(), - } - - if err := c.resourceTypes.maybeRegister(rType); err != nil { - logger.Warningf("Watch registered for name %q of type %q which is already registered", rType.TypeName(), resourceName) - c.serializer.TrySchedule(func(context.Context) { watcher.OnError(err, func() {}) }) - return func() {} - } - - n := xdsresource.ParseName(resourceName) - a := c.getAuthorityForResource(n) - if a == nil { - logger.Warningf("Watch registered for name %q of type %q, authority %q is not found", rType.TypeName(), resourceName, n.Authority) - watcher.OnError(fmt.Errorf("authority %q not found in bootstrap config for resource %q", n.Authority, resourceName), func() {}) - return func() {} - } - // The watchResource method on the authority is invoked with n.String() - // instead of resourceName because n.String() canonicalizes the given name. - // So, two resource names which don't differ in the query string, but only - // differ in the order of context params will result in the same resource - // being watched by the authority. - return a.watchResource(rType, n.String(), watcher) -} - -// Gets the authority for the given resource name. -// -// See examples in this section of the gRFC: -// https://github.com/grpc/proposal/blob/master/A47-xds-federation.md#bootstrap-config-changes -func (c *clientImpl) getAuthorityForResource(name *xdsresource.Name) *authority { - // For new-style resource names, always lookup the authorities map. If the - // name does not specify an authority, we will end up looking for an entry - // in the map with the empty string as the key. - if name.Scheme == xdsresource.FederationScheme { - return c.authorities[name.Authority] - } - - // For old-style resource names, we use the top-level authority if the name - // does not specify an authority. - if name.Authority == "" { - return c.topLevelAuthority - } - return c.authorities[name.Authority] -} - -// A registry of xdsresource.Type implementations indexed by their corresponding -// type URLs. Registration of an xdsresource.Type happens the first time a watch -// for a resource of that type is invoked. -type resourceTypeRegistry struct { - mu sync.Mutex - types map[string]xdsresource.Type -} - -func newResourceTypeRegistry() *resourceTypeRegistry { - return &resourceTypeRegistry{types: make(map[string]xdsresource.Type)} -} - -func (r *resourceTypeRegistry) get(url string) xdsresource.Type { - r.mu.Lock() - defer r.mu.Unlock() - return r.types[url] -} - -func (r *resourceTypeRegistry) maybeRegister(rType xdsresource.Type) error { - r.mu.Lock() - defer r.mu.Unlock() - - url := rType.TypeURL() - typ, ok := r.types[url] - if ok && typ != rType { - return fmt.Errorf("attempt to re-register a resource type implementation for %v", rType.TypeName()) - } - r.types[url] = rType - return nil -} - -func (c *clientImpl) triggerResourceNotFoundForTesting(rType xdsresource.Type, resourceName string) error { - c.channelsMu.Lock() - defer c.channelsMu.Unlock() - - if c.logger.V(2) { - c.logger.Infof("Triggering resource not found for type: %s, resource name: %s", rType.TypeName(), resourceName) - } - - for _, state := range c.xdsActiveChannels { - if err := state.channel.triggerResourceNotFoundForTesting(rType, resourceName); err != nil { - return err - } - } - return nil -} - -func (c *clientImpl) resourceWatchStateForTesting(rType xdsresource.Type, resourceName string) (ads.ResourceWatchState, error) { - c.channelsMu.Lock() - defer c.channelsMu.Unlock() - - for _, state := range c.xdsActiveChannels { - if st, err := state.channel.ads.ResourceWatchStateForTesting(rType, resourceName); err == nil { - return st, nil - } - } - return ads.ResourceWatchState{}, fmt.Errorf("unable to find watch state for resource type %q and name %q", rType.TypeName(), resourceName) + return c.XDSClient.WatchResource(rType.TypeURL(), resourceName, xdsresource.GenericResourceWatcher(watcher)) } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/load/store.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/load/store.go deleted file mode 100644 index f1e265ee7..000000000 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/load/store.go +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Copyright 2020 gRPC authors. - * - * 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 load provides functionality to record and maintain load data. -package load - -import ( - "sync" - "sync/atomic" - "time" -) - -const negativeOneUInt64 = ^uint64(0) - -// Store keeps the loads for multiple clusters and services to be reported via -// LRS. It contains loads to reported to one LRS server. Create multiple stores -// for multiple servers. -// -// It is safe for concurrent use. -type Store struct { - // mu only protects the map (2 layers). The read/write to *perClusterStore - // doesn't need to hold the mu. - mu sync.Mutex - // clusters is a map with cluster name as the key. The second layer is a map - // with service name as the key. Each value (perClusterStore) contains data - // for a (cluster, service) pair. - // - // Note that new entries are added to this map, but never removed. This is - // potentially a memory leak. But the memory is allocated for each new - // (cluster,service) pair, and the memory allocated is just pointers and - // maps. So this shouldn't get too bad. - clusters map[string]map[string]*perClusterStore -} - -// NewStore creates a Store. -func NewStore() *Store { - return &Store{ - clusters: make(map[string]map[string]*perClusterStore), - } -} - -// Stats returns the load data for the given cluster names. Data is returned in -// a slice with no specific order. -// -// If no clusterName is given (an empty slice), all data for all known clusters -// is returned. -// -// If a cluster's Data is empty (no load to report), it's not appended to the -// returned slice. -func (s *Store) Stats(clusterNames []string) []*Data { - var ret []*Data - s.mu.Lock() - defer s.mu.Unlock() - - if len(clusterNames) == 0 { - for _, c := range s.clusters { - ret = appendClusterStats(ret, c) - } - return ret - } - - for _, n := range clusterNames { - if c, ok := s.clusters[n]; ok { - ret = appendClusterStats(ret, c) - } - } - return ret -} - -// appendClusterStats gets Data for the given cluster, append to ret, and return -// the new slice. -// -// Data is only appended to ret if it's not empty. -func appendClusterStats(ret []*Data, cluster map[string]*perClusterStore) []*Data { - for _, d := range cluster { - data := d.stats() - if data == nil { - // Skip this data if it doesn't contain any information. - continue - } - ret = append(ret, data) - } - return ret -} - -// PerCluster returns the perClusterStore for the given clusterName + -// serviceName. -func (s *Store) PerCluster(clusterName, serviceName string) PerClusterReporter { - if s == nil { - return nil - } - - s.mu.Lock() - defer s.mu.Unlock() - c, ok := s.clusters[clusterName] - if !ok { - c = make(map[string]*perClusterStore) - s.clusters[clusterName] = c - } - - if p, ok := c[serviceName]; ok { - return p - } - p := &perClusterStore{ - cluster: clusterName, - service: serviceName, - } - c[serviceName] = p - return p -} - -// perClusterStore is a repository for LB policy implementations to report store -// load data. It contains load for a (cluster, edsService) pair. -// -// It is safe for concurrent use. -// -// TODO(easwars): Use regular maps with mutexes instead of sync.Map here. The -// latter is optimized for two common use cases: (1) when the entry for a given -// key is only ever written once but read many times, as in caches that only -// grow, or (2) when multiple goroutines read, write, and overwrite entries for -// disjoint sets of keys. In these two cases, use of a Map may significantly -// reduce lock contention compared to a Go map paired with a separate Mutex or -// RWMutex. -// Neither of these conditions are met here, and we should transition to a -// regular map with a mutex for better type safety. -type perClusterStore struct { - cluster, service string - drops sync.Map // map[string]*uint64 - localityRPCCount sync.Map // map[string]*rpcCountData - - mu sync.Mutex - lastLoadReportAt time.Time -} - -// Update functions are called by picker for each RPC. To avoid contention, all -// updates are done atomically. - -// CallDropped adds one drop record with the given category to store. -func (ls *perClusterStore) CallDropped(category string) { - if ls == nil { - return - } - - p, ok := ls.drops.Load(category) - if !ok { - tp := new(uint64) - p, _ = ls.drops.LoadOrStore(category, tp) - } - atomic.AddUint64(p.(*uint64), 1) -} - -// CallStarted adds one call started record for the given locality. -func (ls *perClusterStore) CallStarted(locality string) { - if ls == nil { - return - } - - p, ok := ls.localityRPCCount.Load(locality) - if !ok { - tp := newRPCCountData() - p, _ = ls.localityRPCCount.LoadOrStore(locality, tp) - } - p.(*rpcCountData).incrInProgress() - p.(*rpcCountData).incrIssued() -} - -// CallFinished adds one call finished record for the given locality. -// For successful calls, err needs to be nil. -func (ls *perClusterStore) CallFinished(locality string, err error) { - if ls == nil { - return - } - - p, ok := ls.localityRPCCount.Load(locality) - if !ok { - // The map is never cleared, only values in the map are reset. So the - // case where entry for call-finish is not found should never happen. - return - } - p.(*rpcCountData).decrInProgress() - if err == nil { - p.(*rpcCountData).incrSucceeded() - } else { - p.(*rpcCountData).incrErrored() - } -} - -// CallServerLoad adds one server load record for the given locality. The -// load type is specified by desc, and its value by val. -func (ls *perClusterStore) CallServerLoad(locality, name string, d float64) { - if ls == nil { - return - } - - p, ok := ls.localityRPCCount.Load(locality) - if !ok { - // The map is never cleared, only values in the map are reset. So the - // case where entry for callServerLoad is not found should never happen. - return - } - p.(*rpcCountData).addServerLoad(name, d) -} - -// Data contains all load data reported to the Store since the most recent call -// to stats(). -type Data struct { - // Cluster is the name of the cluster this data is for. - Cluster string - // Service is the name of the EDS service this data is for. - Service string - // TotalDrops is the total number of dropped requests. - TotalDrops uint64 - // Drops is the number of dropped requests per category. - Drops map[string]uint64 - // LocalityStats contains load reports per locality. - LocalityStats map[string]LocalityData - // ReportInternal is the duration since last time load was reported (stats() - // was called). - ReportInterval time.Duration -} - -// LocalityData contains load data for a single locality. -type LocalityData struct { - // RequestStats contains counts of requests made to the locality. - RequestStats RequestData - // LoadStats contains server load data for requests made to the locality, - // indexed by the load type. - LoadStats map[string]ServerLoadData -} - -// RequestData contains request counts. -type RequestData struct { - // Succeeded is the number of succeeded requests. - Succeeded uint64 - // Errored is the number of requests which ran into errors. - Errored uint64 - // InProgress is the number of requests in flight. - InProgress uint64 - // Issued is the total number requests that were sent. - Issued uint64 -} - -// ServerLoadData contains server load data. -type ServerLoadData struct { - // Count is the number of load reports. - Count uint64 - // Sum is the total value of all load reports. - Sum float64 -} - -func newData(cluster, service string) *Data { - return &Data{ - Cluster: cluster, - Service: service, - Drops: make(map[string]uint64), - LocalityStats: make(map[string]LocalityData), - } -} - -// stats returns and resets all loads reported to the store, except inProgress -// rpc counts. -// -// It returns nil if the store doesn't contain any (new) data. -func (ls *perClusterStore) stats() *Data { - if ls == nil { - return nil - } - - sd := newData(ls.cluster, ls.service) - ls.drops.Range(func(key, val any) bool { - d := atomic.SwapUint64(val.(*uint64), 0) - if d == 0 { - return true - } - sd.TotalDrops += d - keyStr := key.(string) - if keyStr != "" { - // Skip drops without category. They are counted in total_drops, but - // not in per category. One example is drops by circuit breaking. - sd.Drops[keyStr] = d - } - return true - }) - ls.localityRPCCount.Range(func(key, val any) bool { - countData := val.(*rpcCountData) - succeeded := countData.loadAndClearSucceeded() - inProgress := countData.loadInProgress() - errored := countData.loadAndClearErrored() - issued := countData.loadAndClearIssued() - if succeeded == 0 && inProgress == 0 && errored == 0 && issued == 0 { - return true - } - - ld := LocalityData{ - RequestStats: RequestData{ - Succeeded: succeeded, - Errored: errored, - InProgress: inProgress, - Issued: issued, - }, - LoadStats: make(map[string]ServerLoadData), - } - countData.serverLoads.Range(func(key, val any) bool { - sum, count := val.(*rpcLoadData).loadAndClear() - if count == 0 { - return true - } - ld.LoadStats[key.(string)] = ServerLoadData{ - Count: count, - Sum: sum, - } - return true - }) - sd.LocalityStats[key.(string)] = ld - return true - }) - - ls.mu.Lock() - sd.ReportInterval = time.Since(ls.lastLoadReportAt) - ls.lastLoadReportAt = time.Now() - ls.mu.Unlock() - - if sd.TotalDrops == 0 && len(sd.Drops) == 0 && len(sd.LocalityStats) == 0 { - return nil - } - return sd -} - -type rpcCountData struct { - // Only atomic accesses are allowed for the fields. - succeeded *uint64 - errored *uint64 - inProgress *uint64 - issued *uint64 - - // Map from load desc to load data (sum+count). Loading data from map is - // atomic, but updating data takes a lock, which could cause contention when - // multiple RPCs try to report loads for the same desc. - // - // To fix the contention, shard this map. - serverLoads sync.Map // map[string]*rpcLoadData -} - -func newRPCCountData() *rpcCountData { - return &rpcCountData{ - succeeded: new(uint64), - errored: new(uint64), - inProgress: new(uint64), - issued: new(uint64), - } -} - -func (rcd *rpcCountData) incrSucceeded() { - atomic.AddUint64(rcd.succeeded, 1) -} - -func (rcd *rpcCountData) loadAndClearSucceeded() uint64 { - return atomic.SwapUint64(rcd.succeeded, 0) -} - -func (rcd *rpcCountData) incrErrored() { - atomic.AddUint64(rcd.errored, 1) -} - -func (rcd *rpcCountData) loadAndClearErrored() uint64 { - return atomic.SwapUint64(rcd.errored, 0) -} - -func (rcd *rpcCountData) incrInProgress() { - atomic.AddUint64(rcd.inProgress, 1) -} - -func (rcd *rpcCountData) decrInProgress() { - atomic.AddUint64(rcd.inProgress, negativeOneUInt64) // atomic.Add(x, -1) -} - -func (rcd *rpcCountData) loadInProgress() uint64 { - return atomic.LoadUint64(rcd.inProgress) // InProgress count is not clear when reading. -} - -func (rcd *rpcCountData) incrIssued() { - atomic.AddUint64(rcd.issued, 1) -} - -func (rcd *rpcCountData) loadAndClearIssued() uint64 { - return atomic.SwapUint64(rcd.issued, 0) -} - -func (rcd *rpcCountData) addServerLoad(name string, d float64) { - loads, ok := rcd.serverLoads.Load(name) - if !ok { - tl := newRPCLoadData() - loads, _ = rcd.serverLoads.LoadOrStore(name, tl) - } - loads.(*rpcLoadData).add(d) -} - -// Data for server loads (from trailers or oob). Fields in this struct must be -// updated consistently. -// -// The current solution is to hold a lock, which could cause contention. To fix, -// shard serverLoads map in rpcCountData. -type rpcLoadData struct { - mu sync.Mutex - sum float64 - count uint64 -} - -func newRPCLoadData() *rpcLoadData { - return &rpcLoadData{} -} - -func (rld *rpcLoadData) add(v float64) { - rld.mu.Lock() - rld.sum += v - rld.count++ - rld.mu.Unlock() -} - -func (rld *rpcLoadData) loadAndClear() (s float64, c uint64) { - rld.mu.Lock() - s = rld.sum - rld.sum = 0 - c = rld.count - rld.count = 0 - rld.mu.Unlock() - return -} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/pool.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/pool.go index 4a9c0e092..d1cc84762 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/pool.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/pool.go @@ -25,15 +25,20 @@ import ( v3statuspb "github.com/envoyproxy/go-control-plane/envoy/service/status/v3" estats "google.golang.org/grpc/experimental/stats" - "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/internal/envconfig" istats "google.golang.org/grpc/internal/stats" "google.golang.org/grpc/internal/xds/bootstrap" + "google.golang.org/protobuf/proto" ) var ( // DefaultPool is the default pool for xDS clients. It is created at init - // time by reading bootstrap configuration from env vars. - DefaultPool *Pool + // time and reads bootstrap configuration from env vars to create the xDS + // client. + DefaultPool = &Pool{ + clients: make(map[string]*clientImpl), + getConfiguration: sync.OnceValues(bootstrap.GetConfiguration), + } ) // Pool represents a pool of xDS clients that share the same bootstrap @@ -42,9 +47,12 @@ type Pool struct { // Note that mu should ideally only have to guard clients. But here, we need // it to guard config as well since SetFallbackBootstrapConfig writes to // config. - mu sync.Mutex - clients map[string]*clientRefCounted - config *bootstrap.Config + mu sync.Mutex + clients map[string]*clientImpl + fallbackConfig *bootstrap.Config + // getConfiguration is a sync.OnceValues that attempts to read the bootstrap + // configuration from environment variables once. + getConfiguration func() (*bootstrap.Config, error) } // OptionsForTesting contains options to configure xDS client creation for @@ -76,8 +84,10 @@ type OptionsForTesting struct { // bootstrap configuration), xDS client creation will fail. func NewPool(config *bootstrap.Config) *Pool { return &Pool{ - clients: make(map[string]*clientRefCounted), - config: config, + clients: make(map[string]*clientImpl), + getConfiguration: func() (*bootstrap.Config, error) { + return config, nil + }, } } @@ -89,7 +99,7 @@ func NewPool(config *bootstrap.Config) *Pool { // expected to invoke once they are done using the client. It is safe for the // caller to invoke this close function multiple times. func (p *Pool) NewClient(name string, metricsRecorder estats.MetricsRecorder) (XDSClient, func(), error) { - return p.newRefCounted(name, defaultWatchExpiryTimeout, backoff.DefaultExponential.Backoff, metricsRecorder) + return p.newRefCounted(name, metricsRecorder) } // NewClientForTesting returns an xDS client configured with the provided @@ -116,7 +126,12 @@ func (p *Pool) NewClientForTesting(opts OptionsForTesting) (XDSClient, func(), e if opts.MetricsRecorder == nil { opts.MetricsRecorder = istats.NewMetricsRecorderList(nil) } - return p.newRefCounted(opts.Name, opts.WatchExpiryTimeout, opts.StreamBackoffAfterFailure, opts.MetricsRecorder) + c, cancel, err := p.newRefCounted(opts.Name, opts.MetricsRecorder) + if err != nil { + return nil, nil, err + } + c.SetWatchExpiryTimeoutForTesting(opts.WatchExpiryTimeout) + return c, cancel, nil } // GetClientForTesting returns an xDS client created earlier using the given @@ -148,12 +163,7 @@ func (p *Pool) GetClientForTesting(name string) (XDSClient, func(), error) { func (p *Pool) SetFallbackBootstrapConfig(config *bootstrap.Config) { p.mu.Lock() defer p.mu.Unlock() - - if p.config != nil { - logger.Error("Attempt to set a bootstrap configuration even though one is already set via environment variables.") - return - } - p.config = config + p.fallbackConfig = config } // DumpResources returns the status and contents of all xDS resources. @@ -163,7 +173,15 @@ func (p *Pool) DumpResources() *v3statuspb.ClientStatusResponse { resp := &v3statuspb.ClientStatusResponse{} for key, client := range p.clients { - cfg := client.dumpResources() + b, err := client.DumpResources() + if err != nil { + return nil + } + r := &v3statuspb.ClientStatusResponse{} + if err := proto.Unmarshal(b, r); err != nil { + return nil + } + cfg := r.Config[0] cfg.ClientScope = key resp.Config = append(resp.Config, cfg) } @@ -177,7 +195,11 @@ func (p *Pool) DumpResources() *v3statuspb.ClientStatusResponse { func (p *Pool) BootstrapConfigForTesting() *bootstrap.Config { p.mu.Lock() defer p.mu.Unlock() - return p.config + cfg, _ := p.getConfiguration() + if cfg != nil { + return cfg + } + return p.fallbackConfig } // UnsetBootstrapConfigForTesting unsets the bootstrap configuration used by @@ -187,7 +209,8 @@ func (p *Pool) BootstrapConfigForTesting() *bootstrap.Config { func (p *Pool) UnsetBootstrapConfigForTesting() { p.mu.Lock() defer p.mu.Unlock() - p.config = nil + p.fallbackConfig = nil + p.getConfiguration = sync.OnceValues(bootstrap.GetConfiguration) } func (p *Pool) clientRefCountedClose(name string) { @@ -203,42 +226,49 @@ func (p *Pool) clientRefCountedClose(name string) { return } delete(p.clients, name) + + for _, s := range client.bootstrapConfig.XDSServers() { + for _, f := range s.Cleanups() { + f() + } + } + for _, a := range client.bootstrapConfig.Authorities() { + for _, s := range a.XDSServers { + for _, f := range s.Cleanups() { + f() + } + } + } p.mu.Unlock() // This attempts to close the transport to the management server and could // theoretically call back into the xdsclient package again and deadlock. // Hence, this needs to be called without holding the lock. - client.clientImpl.close() + client.Close() + xdsClientImplCloseHook(name) } // newRefCounted creates a new reference counted xDS client implementation for // name, if one does not exist already. If an xDS client for the given name // exists, it gets a reference to it and returns it. -func (p *Pool) newRefCounted(name string, watchExpiryTimeout time.Duration, streamBackoff func(int) time.Duration, metricsRecorder estats.MetricsRecorder) (XDSClient, func(), error) { +func (p *Pool) newRefCounted(name string, metricsRecorder estats.MetricsRecorder) (*clientImpl, func(), error) { p.mu.Lock() defer p.mu.Unlock() - if p.config == nil { - if len(p.clients) != 0 || p != DefaultPool { - // If the current pool `p` already contains xDS clients or it is not - // the `DefaultPool`, the bootstrap config should have been already - // present in the pool. - return nil, nil, fmt.Errorf("xds: bootstrap configuration not set in the pool") - } - // If the current pool `p` is the `DefaultPool` and has no clients, it - // might be the first time an xDS client is being created on it. So, - // the bootstrap configuration is read from environment variables. - // - // DefaultPool is initialized with bootstrap configuration from one of the - // supported environment variables. If the environment variables are not - // set, then fallback bootstrap configuration should be set before - // attempting to create an xDS client, else xDS client creation will fail. - config, err := bootstrap.GetConfiguration() - if err != nil { - return nil, nil, fmt.Errorf("xds: failed to read xDS bootstrap config from env vars: %v", err) - } - p.config = config + config, err := p.getConfiguration() + if err != nil { + return nil, nil, fmt.Errorf("xds: failed to read xDS bootstrap config from env vars: %v", err) + } + + if config == nil { + // If the environment variables are not set, then fallback bootstrap + // configuration should be set before attempting to create an xDS client, + // else xDS client creation will fail. + config = p.fallbackConfig + } + if config == nil { + return nil, nil, fmt.Errorf("failed to read xDS bootstrap config from env vars: bootstrap environment variables (%q or %q) not defined and fallback config not set", envconfig.XDSBootstrapFileNameEnv, envconfig.XDSBootstrapFileContentEnv) } if c := p.clients[name]; c != nil { @@ -246,17 +276,16 @@ func (p *Pool) newRefCounted(name string, watchExpiryTimeout time.Duration, stre return c, sync.OnceFunc(func() { p.clientRefCountedClose(name) }), nil } - c, err := newClientImpl(p.config, watchExpiryTimeout, streamBackoff, metricsRecorder, name) + c, err := newClientImpl(config, metricsRecorder, name) if err != nil { return nil, nil, err } if logger.V(2) { - c.logger.Infof("Created client with name %q and bootstrap configuration:\n %s", name, p.config) + c.logger.Infof("Created client with name %q and bootstrap configuration:\n %s", name, config) } - client := &clientRefCounted{clientImpl: c, refCount: 1} - p.clients[name] = client + p.clients[name] = c xdsClientImplCreateHook(name) - logger.Infof("xDS node ID: %s", p.config.Node().GetId()) - return client, sync.OnceFunc(func() { p.clientRefCountedClose(name) }), nil + logger.Infof("xDS node ID: %s", config.Node().GetId()) + return c, sync.OnceFunc(func() { p.clientRefCountedClose(name) }), nil } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/resource_types.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/resource_types.go new file mode 100644 index 000000000..2f76c83c8 --- /dev/null +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/resource_types.go @@ -0,0 +1,54 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * 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 xdsclient + +import ( + "google.golang.org/grpc/internal/xds/bootstrap" + "google.golang.org/grpc/xds/internal/clients/xdsclient" + "google.golang.org/grpc/xds/internal/xdsclient/xdsresource" + "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" +) + +func supportedResourceTypes(config *bootstrap.Config, gServerCfgMap map[xdsclient.ServerConfig]*bootstrap.ServerConfig) map[string]xdsclient.ResourceType { + return map[string]xdsclient.ResourceType{ + version.V3ListenerURL: { + TypeURL: version.V3ListenerURL, + TypeName: xdsresource.ListenerResourceTypeName, + AllResourcesRequiredInSotW: true, + Decoder: xdsresource.NewGenericListenerResourceTypeDecoder(config), + }, + version.V3RouteConfigURL: { + TypeURL: version.V3RouteConfigURL, + TypeName: xdsresource.RouteConfigTypeName, + AllResourcesRequiredInSotW: false, + Decoder: xdsresource.NewGenericRouteConfigResourceTypeDecoder(), + }, + version.V3ClusterURL: { + TypeURL: version.V3ClusterURL, + TypeName: xdsresource.ClusterResourceTypeName, + AllResourcesRequiredInSotW: true, + Decoder: xdsresource.NewGenericClusterResourceTypeDecoder(config, gServerCfgMap), + }, + version.V3EndpointsURL: { + TypeURL: version.V3EndpointsURL, + TypeName: xdsresource.EndpointsResourceTypeName, + AllResourcesRequiredInSotW: false, + Decoder: xdsresource.NewGenericEndpointsResourceTypeDecoder(), + }, + } +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/grpctransport/grpctransport.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/grpctransport/grpctransport.go deleted file mode 100644 index fb740ade1..000000000 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/grpctransport/grpctransport.go +++ /dev/null @@ -1,138 +0,0 @@ -/* - * - * Copyright 2024 gRPC authors. - * - * 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 grpctransport provides an implementation of the transport interface -// using gRPC. -package grpctransport - -import ( - "context" - "fmt" - "time" - - "google.golang.org/grpc" - "google.golang.org/grpc/keepalive" - "google.golang.org/grpc/xds/internal/xdsclient/internal" - "google.golang.org/grpc/xds/internal/xdsclient/transport" - - v3adsgrpc "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" - v3adspb "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" - v3lrsgrpc "github.com/envoyproxy/go-control-plane/envoy/service/load_stats/v3" - v3lrspb "github.com/envoyproxy/go-control-plane/envoy/service/load_stats/v3" -) - -func init() { - internal.GRPCNewClient = grpc.NewClient - internal.NewADSStream = func(ctx context.Context, cc *grpc.ClientConn) (v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesClient, error) { - return v3adsgrpc.NewAggregatedDiscoveryServiceClient(cc).StreamAggregatedResources(ctx) - } -} - -// Builder provides a way to build a gRPC-based transport to an xDS server. -type Builder struct{} - -// Build creates a new gRPC-based transport to an xDS server using the provided -// options. This involves creating a grpc.ClientConn to the server identified by -// the server URI in the provided options. -func (b *Builder) Build(opts transport.BuildOptions) (transport.Transport, error) { - if opts.ServerConfig == nil { - return nil, fmt.Errorf("ServerConfig field in opts cannot be nil") - } - - // NOTE: The bootstrap package ensures that the server_uri and credentials - // inside the server config are always populated. If we end up using a - // different type in BuildOptions to specify the server configuration, we - // must ensure that those fields are not empty before proceeding. - - // Dial the xDS management server with dial options specified by the server - // configuration and a static keepalive configuration that is common across - // gRPC language implementations. - kpCfg := grpc.WithKeepaliveParams(keepalive.ClientParameters{ - Time: 5 * time.Minute, - Timeout: 20 * time.Second, - }) - dopts := append(opts.ServerConfig.DialOptions(), kpCfg) - dialer := internal.GRPCNewClient.(func(string, ...grpc.DialOption) (*grpc.ClientConn, error)) - cc, err := dialer(opts.ServerConfig.ServerURI(), dopts...) - if err != nil { - // An error from a non-blocking dial indicates something serious. - return nil, fmt.Errorf("failed to create a grpc transport to the management server %q: %v", opts.ServerConfig.ServerURI(), err) - } - cc.Connect() - - return &grpcTransport{cc: cc}, nil -} - -type grpcTransport struct { - cc *grpc.ClientConn -} - -func (g *grpcTransport) CreateStreamingCall(ctx context.Context, method string) (transport.StreamingCall, error) { - switch method { - case v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResources_FullMethodName: - return g.newADSStreamingCall(ctx) - case v3lrsgrpc.LoadReportingService_StreamLoadStats_FullMethodName: - return g.newLRSStreamingCall(ctx) - default: - return nil, fmt.Errorf("unsupported method: %v", method) - } -} - -func (g *grpcTransport) newADSStreamingCall(ctx context.Context) (transport.StreamingCall, error) { - newStream := internal.NewADSStream.(func(context.Context, *grpc.ClientConn) (v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesClient, error)) - stream, err := newStream(ctx, g.cc) - if err != nil { - return nil, fmt.Errorf("failed to create an ADS stream: %v", err) - } - return &adsStream{stream: stream}, nil -} - -func (g *grpcTransport) newLRSStreamingCall(ctx context.Context) (transport.StreamingCall, error) { - stream, err := v3lrsgrpc.NewLoadReportingServiceClient(g.cc).StreamLoadStats(ctx) - if err != nil { - return nil, fmt.Errorf("failed to create an LRS stream: %v", err) - } - return &lrsStream{stream: stream}, nil -} - -func (g *grpcTransport) Close() error { - return g.cc.Close() -} - -type adsStream struct { - stream v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesClient -} - -func (a *adsStream) Send(msg any) error { - return a.stream.Send(msg.(*v3adspb.DiscoveryRequest)) -} - -func (a *adsStream) Recv() (any, error) { - return a.stream.Recv() -} - -type lrsStream struct { - stream v3lrsgrpc.LoadReportingService_StreamLoadStatsClient -} - -func (l *lrsStream) Send(msg any) error { - return l.stream.Send(msg.(*v3lrspb.LoadStatsRequest)) -} - -func (l *lrsStream) Recv() (any, error) { - return l.stream.Recv() -} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/transport_interface.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/transport_interface.go deleted file mode 100644 index 48ce82a06..000000000 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/transport/transport_interface.go +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * Copyright 2024 gRPC authors. - * - * 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 transport defines the interface that describe the functionality -// required to communicate with an xDS server using streaming calls. -package transport - -import ( - "context" - - "google.golang.org/grpc/internal/xds/bootstrap" -) - -// Builder is an interface for building a new xDS transport. -type Builder interface { - // Build creates a new xDS transport with the provided options. - Build(opts BuildOptions) (Transport, error) -} - -// BuildOptions contains the options for building a new xDS transport. -type BuildOptions struct { - // ServerConfig contains the configuration that controls how the transport - // interacts with the xDS server. This includes the server URI and the - // credentials to use to connect to the server, among other things. - ServerConfig *bootstrap.ServerConfig -} - -// Transport provides the functionality to communicate with an xDS server using -// streaming calls. -type Transport interface { - // CreateStreamingCall creates a new streaming call to the xDS server for the - // specified method name. The returned StreamingCall interface can be used to - // send and receive messages on the stream. - CreateStreamingCall(context.Context, string) (StreamingCall, error) - - // Close closes the underlying connection and cleans up any resources used by the - // Transport. - Close() error -} - -// StreamingCall is an interface that provides a way to send and receive -// messages on a stream. The methods accept or return any.Any messages instead -// of concrete types to allow this interface to be used for both ADS and LRS. -type StreamingCall interface { - // Send sends the provided message on the stream. - Send(any) error - - // Recv block until the next message is received on the stream. - Recv() (any, error) -} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter/converter.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter/converter.go index 3c48f1bde..959c6588b 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter/converter.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter/converter.go @@ -30,11 +30,11 @@ import ( "google.golang.org/grpc/balancer" "google.golang.org/grpc/balancer/leastrequest" "google.golang.org/grpc/balancer/pickfirst" + "google.golang.org/grpc/balancer/ringhash" "google.golang.org/grpc/balancer/roundrobin" "google.golang.org/grpc/balancer/weightedroundrobin" - "google.golang.org/grpc/internal/envconfig" + iringhash "google.golang.org/grpc/internal/ringhash" internalserviceconfig "google.golang.org/grpc/internal/serviceconfig" - "google.golang.org/grpc/xds/internal/balancer/ringhash" "google.golang.org/grpc/xds/internal/balancer/wrrlocality" "google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry" "google.golang.org/protobuf/proto" @@ -83,7 +83,7 @@ func convertRingHashProtoToServiceConfig(rawProto []byte, _ int) (json.RawMessag maxSize = max.GetValue() } - rhCfg := &ringhash.LBConfig{ + rhCfg := &iringhash.LBConfig{ MinRingSize: minSize, MaxRingSize: maxSize, } @@ -176,9 +176,6 @@ func convertWeightedRoundRobinProtoToServiceConfig(rawProto []byte, _ int) (json } func convertLeastRequestProtoToServiceConfig(rawProto []byte, _ int) (json.RawMessage, error) { - if !envconfig.LeastRequestLB { - return nil, nil - } lrProto := &v3leastrequestpb.LeastRequest{} if err := proto.Unmarshal(rawProto, lrProto); err != nil { return nil, fmt.Errorf("failed to unmarshal resource: %v", err) diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/xdslbregistry.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/xdslbregistry.go index a7782709d..88ee9fab7 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/xdslbregistry.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/xdslbregistry.go @@ -69,8 +69,6 @@ func ConvertToServiceConfig(lbPolicy *v3clusterpb.LoadBalancingPolicy, depth int converter := m[policy.GetTypedExtensionConfig().GetTypedConfig().GetTypeUrl()] // "Any entry not in the above list is unsupported and will be skipped." // - A52 - // This includes Least Request as well, since grpc-go does not support - // the Least Request Load Balancing Policy. if converter == nil { continue } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/cluster_resource_type.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/cluster_resource_type.go index 8e9375fcb..de6335081 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/cluster_resource_type.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/cluster_resource_type.go @@ -19,6 +19,8 @@ package xdsresource import ( "google.golang.org/grpc/internal/pretty" + "google.golang.org/grpc/internal/xds/bootstrap" + xdsclient "google.golang.org/grpc/xds/internal/clients/xdsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" @@ -108,41 +110,40 @@ func (c *ClusterResourceData) Raw() *anypb.Any { } // ClusterWatcher wraps the callbacks to be invoked for different events -// corresponding to the cluster resource being watched. +// corresponding to the cluster resource being watched. gRFC A88 contains an +// exhaustive list of what method is invoked under what conditions. type ClusterWatcher interface { - // OnUpdate is invoked to report an update for the resource being watched. - OnUpdate(*ClusterResourceData, OnDoneFunc) - - // OnError is invoked under different error conditions including but not - // limited to the following: - // - authority mentioned in the resource is not found - // - resource name parsing error - // - resource deserialization error - // - resource validation error - // - ADS stream failure - // - connection failure - OnError(error, OnDoneFunc) - - // OnResourceDoesNotExist is invoked for a specific error condition where - // the requested resource is not found on the xDS management server. - OnResourceDoesNotExist(OnDoneFunc) + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resource *ClusterResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) } type delegatingClusterWatcher struct { watcher ClusterWatcher } -func (d *delegatingClusterWatcher) OnUpdate(data ResourceData, onDone OnDoneFunc) { +func (d *delegatingClusterWatcher) ResourceChanged(data ResourceData, onDone func()) { c := data.(*ClusterResourceData) - d.watcher.OnUpdate(c, onDone) + d.watcher.ResourceChanged(c, onDone) } -func (d *delegatingClusterWatcher) OnError(err error, onDone OnDoneFunc) { - d.watcher.OnError(err, onDone) +func (d *delegatingClusterWatcher) ResourceError(err error, onDone func()) { + d.watcher.ResourceError(err, onDone) } -func (d *delegatingClusterWatcher) OnResourceDoesNotExist(onDone OnDoneFunc) { - d.watcher.OnResourceDoesNotExist(onDone) +func (d *delegatingClusterWatcher) AmbientError(err error, onDone func()) { + d.watcher.AmbientError(err, onDone) } // WatchCluster uses xDS to discover the configuration associated with the @@ -151,3 +152,9 @@ func WatchCluster(p Producer, name string, w ClusterWatcher) (cancel func()) { delegator := &delegatingClusterWatcher{watcher: w} return p.WatchResource(clusterType, name, delegator) } + +// NewGenericClusterResourceTypeDecoder returns a xdsclient.Decoder that +// wraps the xdsresource.clusterType. +func NewGenericClusterResourceTypeDecoder(bc *bootstrap.Config, gServerCfgMap map[xdsclient.ServerConfig]*bootstrap.ServerConfig) xdsclient.Decoder { + return &GenericResourceTypeDecoder{ResourceType: clusterType, BootstrapConfig: bc, ServerConfigMap: gServerCfgMap} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/endpoints_resource_type.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/endpoints_resource_type.go index 94c03d0c5..dd8a3b38c 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/endpoints_resource_type.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/endpoints_resource_type.go @@ -19,6 +19,7 @@ package xdsresource import ( "google.golang.org/grpc/internal/pretty" + xdsclient "google.golang.org/grpc/xds/internal/clients/xdsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" @@ -104,41 +105,40 @@ func (e *EndpointsResourceData) Raw() *anypb.Any { } // EndpointsWatcher wraps the callbacks to be invoked for different -// events corresponding to the endpoints resource being watched. +// events corresponding to the endpoints resource being watched. gRFC A88 +// contains an exhaustive list of what method is invoked under what conditions. type EndpointsWatcher interface { - // OnUpdate is invoked to report an update for the resource being watched. - OnUpdate(*EndpointsResourceData, OnDoneFunc) - - // OnError is invoked under different error conditions including but not - // limited to the following: - // - authority mentioned in the resource is not found - // - resource name parsing error - // - resource deserialization error - // - resource validation error - // - ADS stream failure - // - connection failure - OnError(error, OnDoneFunc) - - // OnResourceDoesNotExist is invoked for a specific error condition where - // the requested resource is not found on the xDS management server. - OnResourceDoesNotExist(OnDoneFunc) + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resource *EndpointsResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) } type delegatingEndpointsWatcher struct { watcher EndpointsWatcher } -func (d *delegatingEndpointsWatcher) OnUpdate(data ResourceData, onDone OnDoneFunc) { +func (d *delegatingEndpointsWatcher) ResourceChanged(data ResourceData, onDone func()) { e := data.(*EndpointsResourceData) - d.watcher.OnUpdate(e, onDone) + d.watcher.ResourceChanged(e, onDone) } -func (d *delegatingEndpointsWatcher) OnError(err error, onDone OnDoneFunc) { - d.watcher.OnError(err, onDone) +func (d *delegatingEndpointsWatcher) ResourceError(err error, onDone func()) { + d.watcher.ResourceError(err, onDone) } -func (d *delegatingEndpointsWatcher) OnResourceDoesNotExist(onDone OnDoneFunc) { - d.watcher.OnResourceDoesNotExist(onDone) +func (d *delegatingEndpointsWatcher) AmbientError(err error, onDone func()) { + d.watcher.AmbientError(err, onDone) } // WatchEndpoints uses xDS to discover the configuration associated with the @@ -147,3 +147,9 @@ func WatchEndpoints(p Producer, name string, w EndpointsWatcher) (cancel func()) delegator := &delegatingEndpointsWatcher{watcher: w} return p.WatchResource(endpointsType, name, delegator) } + +// NewGenericEndpointsResourceTypeDecoder returns a xdsclient.Decoder that +// wraps the xdsresource.endpointsType. +func NewGenericEndpointsResourceTypeDecoder() xdsclient.Decoder { + return &GenericResourceTypeDecoder{ResourceType: endpointsType} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/listener_resource_type.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/listener_resource_type.go index e3ca1134a..29ff88704 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/listener_resource_type.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/listener_resource_type.go @@ -22,6 +22,7 @@ import ( "google.golang.org/grpc/internal/pretty" "google.golang.org/grpc/internal/xds/bootstrap" + xdsclient "google.golang.org/grpc/xds/internal/clients/xdsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" @@ -103,7 +104,6 @@ func (listenerResourceType) Decode(opts *DecodeOptions, resource *anypb.Any) (*D } return &DecodeResult{Name: name, Resource: &ListenerResourceData{Resource: listener}}, nil - } // ListenerResourceData wraps the configuration of a Listener resource as @@ -127,7 +127,6 @@ func (l *ListenerResourceData) RawEqual(other ResourceData) bool { return false } return proto.Equal(l.Resource.Raw, other.Raw()) - } // ToJSON returns a JSON string representation of the resource data. @@ -141,41 +140,39 @@ func (l *ListenerResourceData) Raw() *anypb.Any { } // ListenerWatcher wraps the callbacks to be invoked for different -// events corresponding to the listener resource being watched. +// events corresponding to the listener resource being watched. gRFC A88 +// contains an exhaustive list of what method is invoked under what conditions. type ListenerWatcher interface { - // OnUpdate is invoked to report an update for the resource being watched. - OnUpdate(*ListenerResourceData, OnDoneFunc) - - // OnError is invoked under different error conditions including but not - // limited to the following: - // - authority mentioned in the resource is not found - // - resource name parsing error - // - resource deserialization error - // - resource validation error - // - ADS stream failure - // - connection failure - OnError(error, OnDoneFunc) - - // OnResourceDoesNotExist is invoked for a specific error condition where - // the requested resource is not found on the xDS management server. - OnResourceDoesNotExist(OnDoneFunc) + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resource *ListenerResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) } type delegatingListenerWatcher struct { watcher ListenerWatcher } -func (d *delegatingListenerWatcher) OnUpdate(data ResourceData, onDone OnDoneFunc) { +func (d *delegatingListenerWatcher) ResourceChanged(data ResourceData, onDone func()) { l := data.(*ListenerResourceData) - d.watcher.OnUpdate(l, onDone) + d.watcher.ResourceChanged(l, onDone) } - -func (d *delegatingListenerWatcher) OnError(err error, onDone OnDoneFunc) { - d.watcher.OnError(err, onDone) +func (d *delegatingListenerWatcher) ResourceError(err error, onDone func()) { + d.watcher.ResourceError(err, onDone) } -func (d *delegatingListenerWatcher) OnResourceDoesNotExist(onDone OnDoneFunc) { - d.watcher.OnResourceDoesNotExist(onDone) +func (d *delegatingListenerWatcher) AmbientError(err error, onDone func()) { + d.watcher.AmbientError(err, onDone) } // WatchListener uses xDS to discover the configuration associated with the @@ -184,3 +181,9 @@ func WatchListener(p Producer, name string, w ListenerWatcher) (cancel func()) { delegator := &delegatingListenerWatcher{watcher: w} return p.WatchResource(listenerType, name, delegator) } + +// NewGenericListenerResourceTypeDecoder returns a xdsclient.Decoder that wraps +// the xdsresource.listenerType. +func NewGenericListenerResourceTypeDecoder(bc *bootstrap.Config) xdsclient.Decoder { + return &GenericResourceTypeDecoder{ResourceType: listenerType, BootstrapConfig: bc} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/resource_type.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/resource_type.go index e14f56f78..4ecf63a1c 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/resource_type.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/resource_type.go @@ -25,8 +25,11 @@ package xdsresource import ( + "fmt" + "google.golang.org/grpc/internal/xds/bootstrap" xdsinternal "google.golang.org/grpc/xds/internal" + "google.golang.org/grpc/xds/internal/clients/xdsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" "google.golang.org/protobuf/types/known/anypb" ) @@ -52,33 +55,30 @@ type Producer interface { WatchResource(rType Type, resourceName string, watcher ResourceWatcher) (cancel func()) } -// OnDoneFunc is a function to be invoked by watcher implementations upon -// completing the processing of a callback from the xDS client. Failure to -// invoke this callback prevents the xDS client from reading further messages -// from the xDS server. -type OnDoneFunc func() - -// ResourceWatcher wraps the callbacks to be invoked for different events -// corresponding to the resource being watched. +// ResourceWatcher is notified of the resource updates and errors that are +// received by the xDS client from the management server. +// +// All methods contain a done parameter which should be called when processing +// of the update has completed. For example, if processing a resource requires +// watching new resources, registration of those new watchers should be +// completed before done is called, which can happen after the ResourceWatcher +// method has returned. Failure to call done will prevent the xDS client from +// providing future ResourceWatcher notifications. type ResourceWatcher interface { - // OnUpdate is invoked to report an update for the resource being watched. - // The ResourceData parameter needs to be type asserted to the appropriate - // type for the resource being watched. - OnUpdate(ResourceData, OnDoneFunc) - - // OnError is invoked under different error conditions including but not - // limited to the following: - // - authority mentioned in the resource is not found - // - resource name parsing error - // - resource deserialization error - // - resource validation error - // - ADS stream failure - // - connection failure - OnError(error, OnDoneFunc) - - // OnResourceDoesNotExist is invoked for a specific error condition where - // the requested resource is not found on the xDS management server. - OnResourceDoesNotExist(OnDoneFunc) + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resourceData ResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) } // TODO: Once the implementation is complete, rename this interface as @@ -170,3 +170,119 @@ func (r resourceTypeState) TypeName() string { func (r resourceTypeState) AllResourcesRequiredInSotW() bool { return r.allResourcesRequiredInSotW } + +// GenericResourceTypeDecoder wraps an xdsresource.Type and implements +// xdsclient.Decoder. +// +// TODO: #8313 - Delete this once the internal xdsclient usages are updated +// to use the generic xdsclient.ResourceType interface directly. +type GenericResourceTypeDecoder struct { + ResourceType Type + BootstrapConfig *bootstrap.Config + ServerConfigMap map[xdsclient.ServerConfig]*bootstrap.ServerConfig +} + +// Decode deserialize and validate resource bytes of an xDS resource received +// from the xDS management server. +func (gd *GenericResourceTypeDecoder) Decode(resource xdsclient.AnyProto, gOpts xdsclient.DecodeOptions) (*xdsclient.DecodeResult, error) { + rProto := &anypb.Any{ + TypeUrl: resource.TypeURL, + Value: resource.Value, + } + opts := &DecodeOptions{BootstrapConfig: gd.BootstrapConfig} + if gOpts.ServerConfig != nil { + opts.ServerConfig = gd.ServerConfigMap[*gOpts.ServerConfig] + } + + result, err := gd.ResourceType.Decode(opts, rProto) + if result == nil { + return nil, err + } + if err != nil { + return &xdsclient.DecodeResult{Name: result.Name}, err + } + + return &xdsclient.DecodeResult{Name: result.Name, Resource: &genericResourceData{resourceData: result.Resource}}, nil +} + +// genericResourceData embed an xdsresource.ResourceData and implements +// xdsclient.ResourceData. +// +// TODO: #8313 - Delete this once the internal xdsclient usages are updated +// to use the generic xdsclient.ResourceData interface directly. +type genericResourceData struct { + resourceData ResourceData +} + +// Equal returns true if the passed in xdsclient.ResourceData +// is equal to that of the receiver. +func (grd *genericResourceData) Equal(other xdsclient.ResourceData) bool { + if other == nil { + return false + } + otherResourceData, ok := other.(*genericResourceData) + if !ok { + return false + } + return grd.resourceData.RawEqual(otherResourceData.resourceData) +} + +// Bytes returns the underlying raw bytes of the wrapped resource. +func (grd *genericResourceData) Bytes() []byte { + rawAny := grd.resourceData.Raw() + if rawAny == nil { + return nil + } + return rawAny.Value +} + +// genericResourceWatcher wraps xdsresource.ResourceWatcher and implements +// xdsclient.ResourceWatcher. +// +// TODO: #8313 - Delete this once the internal xdsclient usages are updated +// to use the generic xdsclient.ResourceWatcher interface directly. +type genericResourceWatcher struct { + xdsResourceWatcher ResourceWatcher +} + +// ResourceChanged indicates a new version of the wrapped resource is +// available. +func (gw *genericResourceWatcher) ResourceChanged(gData xdsclient.ResourceData, done func()) { + if gData == nil { + gw.xdsResourceWatcher.ResourceChanged(nil, done) + return + } + + grd, ok := gData.(*genericResourceData) + if !ok { + err := fmt.Errorf("genericResourceWatcher received unexpected xdsclient.ResourceData type %T, want *genericResourceData", gData) + gw.xdsResourceWatcher.ResourceError(err, done) + return + } + gw.xdsResourceWatcher.ResourceChanged(grd.resourceData, done) +} + +// ResourceError indicates an error occurred while trying to fetch or +// decode the associated wrapped resource. The previous version of the +// wrapped resource should be considered invalid. +func (gw *genericResourceWatcher) ResourceError(err error, done func()) { + gw.xdsResourceWatcher.ResourceError(err, done) +} + +// AmbientError indicates an error occurred after a resource has been +// received that should not modify the use of that wrapped resource but may +// provide useful information about the state of the XDSClient for debugging +// purposes. The previous version of the wrapped resource should still be +// considered valid. +func (gw *genericResourceWatcher) AmbientError(err error, done func()) { + gw.xdsResourceWatcher.AmbientError(err, done) +} + +// GenericResourceWatcher returns a xdsclient.ResourceWatcher that wraps an +// xdsresource.ResourceWatcher to make it compatible with xdsclient.ResourceWatcher. +func GenericResourceWatcher(xdsResourceWatcher ResourceWatcher) xdsclient.ResourceWatcher { + if xdsResourceWatcher == nil { + return nil + } + return &genericResourceWatcher{xdsResourceWatcher: xdsResourceWatcher} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/route_config_resource_type.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/route_config_resource_type.go index 98ac31328..344932e93 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/route_config_resource_type.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/route_config_resource_type.go @@ -19,6 +19,7 @@ package xdsresource import ( "google.golang.org/grpc/internal/pretty" + xdsclient "google.golang.org/grpc/xds/internal/clients/xdsclient" "google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" @@ -105,41 +106,41 @@ func (r *RouteConfigResourceData) Raw() *anypb.Any { } // RouteConfigWatcher wraps the callbacks to be invoked for different -// events corresponding to the route configuration resource being watched. +// events corresponding to the route configuration resource being watched. gRFC +// A88 contains an exhaustive list of what method is invoked under what +// conditions. type RouteConfigWatcher interface { - // OnUpdate is invoked to report an update for the resource being watched. - OnUpdate(*RouteConfigResourceData, OnDoneFunc) - - // OnError is invoked under different error conditions including but not - // limited to the following: - // - authority mentioned in the resource is not found - // - resource name parsing error - // - resource deserialization error - // - resource validation error - // - ADS stream failure - // - connection failure - OnError(error, OnDoneFunc) - - // OnResourceDoesNotExist is invoked for a specific error condition where - // the requested resource is not found on the xDS management server. - OnResourceDoesNotExist(OnDoneFunc) + // ResourceChanged indicates a new version of the resource is available. + ResourceChanged(resource *RouteConfigResourceData, done func()) + + // ResourceError indicates an error occurred while trying to fetch or + // decode the associated resource. The previous version of the resource + // should be considered invalid. + ResourceError(err error, done func()) + + // AmbientError indicates an error occurred after a resource has been + // received that should not modify the use of that resource but may provide + // useful information about the state of the XDSClient for debugging + // purposes. The previous version of the resource should still be + // considered valid. + AmbientError(err error, done func()) } type delegatingRouteConfigWatcher struct { watcher RouteConfigWatcher } -func (d *delegatingRouteConfigWatcher) OnUpdate(data ResourceData, onDone OnDoneFunc) { +func (d *delegatingRouteConfigWatcher) ResourceChanged(data ResourceData, onDone func()) { rc := data.(*RouteConfigResourceData) - d.watcher.OnUpdate(rc, onDone) + d.watcher.ResourceChanged(rc, onDone) } -func (d *delegatingRouteConfigWatcher) OnError(err error, onDone OnDoneFunc) { - d.watcher.OnError(err, onDone) +func (d *delegatingRouteConfigWatcher) ResourceError(err error, onDone func()) { + d.watcher.ResourceError(err, onDone) } -func (d *delegatingRouteConfigWatcher) OnResourceDoesNotExist(onDone OnDoneFunc) { - d.watcher.OnResourceDoesNotExist(onDone) +func (d *delegatingRouteConfigWatcher) AmbientError(err error, onDone func()) { + d.watcher.AmbientError(err, onDone) } // WatchRouteConfig uses xDS to discover the configuration associated with the @@ -148,3 +149,9 @@ func WatchRouteConfig(p Producer, name string, w RouteConfigWatcher) (cancel fun delegator := &delegatingRouteConfigWatcher{watcher: w} return p.WatchResource(routeConfigType, name, delegator) } + +// NewGenericRouteConfigResourceTypeDecoder returns a xdsclient.Decoder that +// wraps the xdsresource.routeConfigType. +func NewGenericRouteConfigResourceTypeDecoder() xdsclient.Decoder { + return &GenericResourceTypeDecoder{ResourceType: routeConfigType} +} diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/type_eds.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/type_eds.go index a7eab2361..12294626f 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/type_eds.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/type_eds.go @@ -18,7 +18,7 @@ package xdsresource import ( - "google.golang.org/grpc/xds/internal" + "google.golang.org/grpc/xds/internal/clients" "google.golang.org/protobuf/types/known/anypb" ) @@ -58,7 +58,7 @@ type Endpoint struct { // Locality contains information of a locality. type Locality struct { Endpoints []Endpoint - ID internal.LocalityID + ID clients.Locality Priority uint32 Weight uint32 } diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_cds.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_cds.go index 00b73383b..c2ced0d62 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_cds.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_cds.go @@ -133,10 +133,6 @@ func validateClusterAndConstructClusterUpdate(cluster *v3clusterpb.Cluster, serv rhLBCfg := []byte(fmt.Sprintf("{\"minRingSize\": %d, \"maxRingSize\": %d}", minSize, maxSize)) lbPolicy = []byte(fmt.Sprintf(`[{"ring_hash_experimental": %s}]`, rhLBCfg)) case v3clusterpb.Cluster_LEAST_REQUEST: - if !envconfig.LeastRequestLB { - return ClusterUpdate{}, fmt.Errorf("unexpected lbPolicy %v in response: %+v", cluster.GetLbPolicy(), cluster) - } - // "The configuration for the Least Request LB policy is the // least_request_lb_config field. The field is optional; if not present, // defaults will be assumed for all of its values." - A48 diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_eds.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_eds.go index 26e16ce47..d56b42dd3 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_eds.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_eds.go @@ -29,6 +29,7 @@ import ( "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/pretty" "google.golang.org/grpc/xds/internal" + "google.golang.org/grpc/xds/internal/clients" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" ) @@ -164,12 +165,12 @@ func parseEDSRespProto(m *v3endpointpb.ClusterLoadAssignment) (EndpointsUpdate, localitiesWithPriority = make(map[string]bool) priorities[priority] = localitiesWithPriority } - lid := internal.LocalityID{ + lid := clients.Locality{ Region: l.Region, Zone: l.Zone, SubZone: l.SubZone, } - lidStr, _ := lid.ToString() + lidStr := internal.LocalityString(lid) // "Since an xDS configuration can place a given locality under multiple // priorities, it is possible to see locality weight attributes with diff --git a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_lds.go b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_lds.go index 1b0d4599f..475300cef 100644 --- a/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_lds.go +++ b/vendor/google.golang.org/grpc/xds/internal/xdsclient/xdsresource/unmarshal_lds.go @@ -250,7 +250,7 @@ func processServerSideListener(lis *v3listenerpb.Listener) (*ListenerUpdate, err if n := len(lis.ListenerFilters); n != 0 { return nil, fmt.Errorf("unsupported field 'listener_filters' contains %d entries", n) } - if useOrigDst := lis.GetUseOriginalDst(); useOrigDst != nil && useOrigDst.GetValue() { + if lis.GetUseOriginalDst().GetValue() { return nil, errors.New("unsupported field 'use_original_dst' is present and set to true") } addr := lis.GetAddress() diff --git a/vendor/modules.txt b/vendor/modules.txt index 4dbf96243..3b6b1e40c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,13 +1,13 @@ -# cel.dev/expr v0.23.1 +# cel.dev/expr v0.24.0 ## explicit; go 1.22.0 cel.dev/expr -# cloud.google.com/go v0.121.0 +# cloud.google.com/go v0.121.4 ## explicit; go 1.23.0 cloud.google.com/go/internal cloud.google.com/go/internal/optional cloud.google.com/go/internal/trace cloud.google.com/go/internal/version -# cloud.google.com/go/auth v0.16.1 +# cloud.google.com/go/auth v0.16.3 ## explicit; go 1.23.0 cloud.google.com/go/auth cloud.google.com/go/auth/credentials @@ -27,8 +27,8 @@ cloud.google.com/go/auth/internal/transport/cert # cloud.google.com/go/auth/oauth2adapt v0.2.8 ## explicit; go 1.23.0 cloud.google.com/go/auth/oauth2adapt -# cloud.google.com/go/compute/metadata v0.6.0 -## explicit; go 1.21 +# cloud.google.com/go/compute/metadata v0.7.0 +## explicit; go 1.23.0 cloud.google.com/go/compute/metadata # cloud.google.com/go/iam v1.5.2 ## explicit; go 1.23.0 @@ -39,7 +39,7 @@ cloud.google.com/go/iam/apiv1/iampb cloud.google.com/go/monitoring/apiv3/v2 cloud.google.com/go/monitoring/apiv3/v2/monitoringpb cloud.google.com/go/monitoring/internal -# cloud.google.com/go/storage v1.53.0 +# cloud.google.com/go/storage v1.56.0 ## explicit; go 1.23.0 cloud.google.com/go/storage cloud.google.com/go/storage/experimental @@ -112,10 +112,10 @@ cuelang.org/go/pkg/tool/file cuelang.org/go/pkg/tool/http cuelang.org/go/pkg/tool/os cuelang.org/go/pkg/uuid -# dario.cat/mergo v1.0.1 +# dario.cat/mergo v1.0.2 ## explicit; go 1.13 dario.cat/mergo -# github.com/99designs/gqlgen v0.17.76 +# github.com/99designs/gqlgen v0.17.78 ## explicit; go 1.23.0 github.com/99designs/gqlgen/complexity github.com/99designs/gqlgen/graphql @@ -127,14 +127,14 @@ github.com/99designs/gqlgen/graphql/handler/lru github.com/99designs/gqlgen/graphql/handler/transport github.com/99designs/gqlgen/graphql/introspection github.com/99designs/gqlgen/graphql/playground -# github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 -## explicit; go 1.22 +# github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 +## explicit; go 1.23.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp -# github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 -## explicit; go 1.22 +# github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 +## explicit; go 1.23.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric -# github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 -## explicit; go 1.22 +# github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 +## explicit; go 1.23.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping # github.com/Microsoft/go-winio v0.6.2 ## explicit; go 1.21 @@ -143,7 +143,7 @@ github.com/Microsoft/go-winio/internal/fs github.com/Microsoft/go-winio/internal/socket github.com/Microsoft/go-winio/internal/stringbuffer github.com/Microsoft/go-winio/pkg/guid -# github.com/ProtonMail/go-crypto v1.2.0 +# github.com/ProtonMail/go-crypto v1.3.0 ## explicit; go 1.22.0 github.com/ProtonMail/go-crypto/bitcurves github.com/ProtonMail/go-crypto/brainpool @@ -236,7 +236,7 @@ github.com/beorn7/perks/quantile # github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d ## explicit github.com/bgentry/go-netrc/netrc -# github.com/bytedance/sonic v1.13.2 +# github.com/bytedance/sonic v1.14.0 ## explicit; go 1.17 github.com/bytedance/sonic github.com/bytedance/sonic/ast @@ -270,7 +270,7 @@ github.com/bytedance/sonic/internal/utils github.com/bytedance/sonic/option github.com/bytedance/sonic/unquote github.com/bytedance/sonic/utf8 -# github.com/bytedance/sonic/loader v0.2.4 +# github.com/bytedance/sonic/loader v0.3.0 ## explicit; go 1.16 github.com/bytedance/sonic/loader github.com/bytedance/sonic/loader/internal/abi @@ -286,7 +286,7 @@ github.com/charmbracelet/colorprofile # github.com/charmbracelet/lipgloss v1.1.0 ## explicit; go 1.18 github.com/charmbracelet/lipgloss -# github.com/charmbracelet/x/ansi v0.9.2 +# github.com/charmbracelet/x/ansi v0.9.3 ## explicit; go 1.23.0 github.com/charmbracelet/x/ansi github.com/charmbracelet/x/ansi/kitty @@ -403,7 +403,7 @@ github.com/gabriel-vasile/mimetype/internal/magic # github.com/gin-contrib/sse v1.1.0 ## explicit; go 1.23 github.com/gin-contrib/sse -# github.com/gin-gonic/gin v1.10.0 +# github.com/gin-gonic/gin v1.10.1 ## explicit; go 1.20 github.com/gin-gonic/gin github.com/gin-gonic/gin/binding @@ -424,7 +424,7 @@ github.com/go-git/go-billy/v5/helper/polyfill github.com/go-git/go-billy/v5/memfs github.com/go-git/go-billy/v5/osfs github.com/go-git/go-billy/v5/util -# github.com/go-git/go-git/v5 v5.16.0 +# github.com/go-git/go-git/v5 v5.16.2 ## explicit; go 1.23.0 github.com/go-git/go-git/v5 github.com/go-git/go-git/v5/config @@ -472,12 +472,12 @@ github.com/go-git/go-git/v5/utils/merkletrie/internal/frame github.com/go-git/go-git/v5/utils/merkletrie/noder github.com/go-git/go-git/v5/utils/sync github.com/go-git/go-git/v5/utils/trace -# github.com/go-jose/go-jose/v4 v4.1.0 -## explicit; go 1.24 +# github.com/go-jose/go-jose/v4 v4.1.1 +## explicit; go 1.23.0 github.com/go-jose/go-jose/v4 github.com/go-jose/go-jose/v4/cipher github.com/go-jose/go-jose/v4/json -# github.com/go-logr/logr v1.4.2 +# github.com/go-logr/logr v1.4.3 ## explicit; go 1.18 github.com/go-logr/logr github.com/go-logr/logr/funcr @@ -491,10 +491,10 @@ github.com/go-playground/locales/currency # github.com/go-playground/universal-translator v0.18.1 ## explicit; go 1.18 github.com/go-playground/universal-translator -# github.com/go-playground/validator/v10 v10.26.0 +# github.com/go-playground/validator/v10 v10.27.0 ## explicit; go 1.20 github.com/go-playground/validator/v10 -# github.com/go-viper/mapstructure/v2 v2.3.0 +# github.com/go-viper/mapstructure/v2 v2.4.0 ## explicit; go 1.18 github.com/go-viper/mapstructure/v2 github.com/go-viper/mapstructure/v2/internal/errors @@ -509,7 +509,7 @@ github.com/goccy/go-json/internal/encoder/vm_color_indent github.com/goccy/go-json/internal/encoder/vm_indent github.com/goccy/go-json/internal/errors github.com/goccy/go-json/internal/runtime -# github.com/golang-jwt/jwt/v5 v5.2.2 +# github.com/golang-jwt/jwt/v5 v5.2.3 ## explicit; go 1.18 github.com/golang-jwt/jwt/v5 # github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 @@ -553,8 +553,8 @@ github.com/google/uuid ## explicit; go 1.23.0 github.com/googleapis/enterprise-certificate-proxy/client github.com/googleapis/enterprise-certificate-proxy/client/util -# github.com/googleapis/gax-go/v2 v2.14.1 -## explicit; go 1.21 +# github.com/googleapis/gax-go/v2 v2.15.0 +## explicit; go 1.23.0 github.com/googleapis/gax-go/v2 github.com/googleapis/gax-go/v2/apierror github.com/googleapis/gax-go/v2/apierror/internal/proto @@ -591,8 +591,8 @@ github.com/jackc/pgpassfile # github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 ## explicit; go 1.14 github.com/jackc/pgservicefile -# github.com/jackc/pgx/v5 v5.7.4 -## explicit; go 1.21 +# github.com/jackc/pgx/v5 v5.7.5 +## explicit; go 1.23.0 github.com/jackc/pgx/v5 github.com/jackc/pgx/v5/internal/iobufpool github.com/jackc/pgx/v5/internal/pgio @@ -625,7 +625,7 @@ github.com/klauspost/compress/internal/le github.com/klauspost/compress/internal/snapref github.com/klauspost/compress/zstd github.com/klauspost/compress/zstd/internal/xxhash -# github.com/klauspost/cpuid/v2 v2.2.10 +# github.com/klauspost/cpuid/v2 v2.3.0 ## explicit; go 1.22 github.com/klauspost/cpuid/v2 # github.com/leodido/go-urn v1.4.0 @@ -662,7 +662,7 @@ github.com/muesli/termenv # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 ## explicit github.com/munnerz/goautoneg -# github.com/nhost/be v0.0.0-20250729094706-ada22fe1437e +# github.com/nhost/be v0.0.0-20250730065440-072ba750534a ## explicit; go 1.24.2 github.com/nhost/be/lib/graphql github.com/nhost/be/lib/graphql/context @@ -683,7 +683,7 @@ github.com/pelletier/go-toml/v2/internal/characters github.com/pelletier/go-toml/v2/internal/danger github.com/pelletier/go-toml/v2/internal/tracker github.com/pelletier/go-toml/v2/unstable -# github.com/pjbgf/sha1cd v0.3.2 +# github.com/pjbgf/sha1cd v0.4.0 ## explicit; go 1.21 github.com/pjbgf/sha1cd github.com/pjbgf/sha1cd/internal @@ -712,11 +712,11 @@ github.com/prometheus/client_golang/prometheus/promhttp/internal # github.com/prometheus/client_model v0.6.2 ## explicit; go 1.22.0 github.com/prometheus/client_model/go -# github.com/prometheus/common v0.63.0 -## explicit; go 1.21 +# github.com/prometheus/common v0.65.0 +## explicit; go 1.23.0 github.com/prometheus/common/expfmt github.com/prometheus/common/model -# github.com/prometheus/procfs v0.16.1 +# github.com/prometheus/procfs v0.17.0 ## explicit; go 1.23.0 github.com/prometheus/procfs github.com/prometheus/procfs/internal/fs @@ -734,7 +734,7 @@ github.com/rs/cors/wrapper/gin # github.com/russross/blackfriday/v2 v2.1.0 ## explicit github.com/russross/blackfriday/v2 -# github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 +# github.com/sergi/go-diff v1.4.0 ## explicit; go 1.13 github.com/sergi/go-diff/diffmatchpatch # github.com/sirupsen/logrus v1.9.3 @@ -787,8 +787,8 @@ github.com/twitchyliquid64/golang-asm/objabi github.com/twitchyliquid64/golang-asm/src github.com/twitchyliquid64/golang-asm/sys github.com/twitchyliquid64/golang-asm/unsafeheader -# github.com/ugorji/go/codec v1.2.12 -## explicit; go 1.11 +# github.com/ugorji/go/codec v1.3.0 +## explicit; go 1.21 github.com/ugorji/go/codec # github.com/ulikunitz/xz v0.5.12 ## explicit; go 1.12 @@ -815,7 +815,7 @@ github.com/vektah/gqlparser/v2/parser github.com/vektah/gqlparser/v2/validator github.com/vektah/gqlparser/v2/validator/core github.com/vektah/gqlparser/v2/validator/rules -# github.com/wI2L/jsondiff v0.6.1 +# github.com/wI2L/jsondiff v0.7.0 ## explicit; go 1.21 github.com/wI2L/jsondiff # github.com/xanzy/ssh-agent v0.3.3 @@ -824,7 +824,7 @@ github.com/xanzy/ssh-agent # github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e ## explicit; go 1.19 github.com/xo/terminfo -# github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 +# github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 ## explicit; go 1.15 github.com/xrash/smetrics # github.com/zeebo/errs v1.4.0 @@ -834,63 +834,64 @@ github.com/zeebo/errs ## explicit; go 1.22.0 go.opentelemetry.io/auto/sdk go.opentelemetry.io/auto/sdk/internal/telemetry -# go.opentelemetry.io/contrib/detectors/gcp v1.35.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/contrib/detectors/gcp v1.37.0 +## explicit; go 1.23.8 go.opentelemetry.io/contrib/detectors/gcp -# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 +## explicit; go 1.23.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal -# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 +## explicit; go 1.23.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil -# go.opentelemetry.io/otel v1.35.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/otel v1.37.0 +## explicit; go 1.23.0 go.opentelemetry.io/otel go.opentelemetry.io/otel/attribute +go.opentelemetry.io/otel/attribute/internal go.opentelemetry.io/otel/baggage go.opentelemetry.io/otel/codes -go.opentelemetry.io/otel/internal -go.opentelemetry.io/otel/internal/attribute go.opentelemetry.io/otel/internal/baggage go.opentelemetry.io/otel/internal/global go.opentelemetry.io/otel/propagation -go.opentelemetry.io/otel/semconv/v1.17.0 go.opentelemetry.io/otel/semconv/v1.20.0 go.opentelemetry.io/otel/semconv/v1.24.0 go.opentelemetry.io/otel/semconv/v1.26.0 -# go.opentelemetry.io/otel/metric v1.35.0 -## explicit; go 1.22.0 +go.opentelemetry.io/otel/semconv/v1.34.0 +go.opentelemetry.io/otel/semconv/v1.34.0/httpconv +go.opentelemetry.io/otel/semconv/v1.34.0/rpcconv +# go.opentelemetry.io/otel/metric v1.37.0 +## explicit; go 1.23.0 go.opentelemetry.io/otel/metric go.opentelemetry.io/otel/metric/embedded go.opentelemetry.io/otel/metric/noop -# go.opentelemetry.io/otel/sdk v1.35.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/otel/sdk v1.37.0 +## explicit; go 1.23.0 go.opentelemetry.io/otel/sdk go.opentelemetry.io/otel/sdk/instrumentation go.opentelemetry.io/otel/sdk/internal/x go.opentelemetry.io/otel/sdk/resource -# go.opentelemetry.io/otel/sdk/metric v1.35.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/otel/sdk/metric v1.37.0 +## explicit; go 1.23.0 go.opentelemetry.io/otel/sdk/metric go.opentelemetry.io/otel/sdk/metric/exemplar go.opentelemetry.io/otel/sdk/metric/internal go.opentelemetry.io/otel/sdk/metric/internal/aggregate go.opentelemetry.io/otel/sdk/metric/internal/x go.opentelemetry.io/otel/sdk/metric/metricdata -# go.opentelemetry.io/otel/trace v1.35.0 -## explicit; go 1.22.0 +# go.opentelemetry.io/otel/trace v1.37.0 +## explicit; go 1.23.0 go.opentelemetry.io/otel/trace go.opentelemetry.io/otel/trace/embedded go.opentelemetry.io/otel/trace/internal/telemetry go.opentelemetry.io/otel/trace/noop -# golang.org/x/arch v0.17.0 +# golang.org/x/arch v0.19.0 ## explicit; go 1.23.0 golang.org/x/arch/x86/x86asm -# golang.org/x/crypto v0.39.0 +# golang.org/x/crypto v0.40.0 ## explicit; go 1.23.0 golang.org/x/crypto/argon2 golang.org/x/crypto/blake2b @@ -910,10 +911,10 @@ golang.org/x/crypto/ssh golang.org/x/crypto/ssh/agent golang.org/x/crypto/ssh/internal/bcrypt_pbkdf golang.org/x/crypto/ssh/knownhosts -# golang.org/x/mod v0.25.0 +# golang.org/x/mod v0.26.0 ## explicit; go 1.23.0 golang.org/x/mod/semver -# golang.org/x/net v0.41.0 +# golang.org/x/net v0.42.0 ## explicit; go 1.23.0 golang.org/x/net/context golang.org/x/net/html @@ -940,10 +941,10 @@ golang.org/x/oauth2/google/internal/stsexchange golang.org/x/oauth2/internal golang.org/x/oauth2/jws golang.org/x/oauth2/jwt -# golang.org/x/sync v0.15.0 +# golang.org/x/sync v0.16.0 ## explicit; go 1.23.0 golang.org/x/sync/semaphore -# golang.org/x/sys v0.33.0 +# golang.org/x/sys v0.34.0 ## explicit; go 1.23.0 golang.org/x/sys/cpu golang.org/x/sys/execabs @@ -951,10 +952,10 @@ golang.org/x/sys/plan9 golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/term v0.32.0 +# golang.org/x/term v0.33.0 ## explicit; go 1.23.0 golang.org/x/term -# golang.org/x/text v0.26.0 +# golang.org/x/text v0.27.0 ## explicit; go 1.23.0 golang.org/x/text/cases golang.org/x/text/encoding @@ -974,10 +975,10 @@ golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm golang.org/x/text/width -# golang.org/x/time v0.11.0 +# golang.org/x/time v0.12.0 ## explicit; go 1.23.0 golang.org/x/time/rate -# google.golang.org/api v0.231.0 +# google.golang.org/api v0.243.0 ## explicit; go 1.23.0 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport @@ -994,13 +995,13 @@ google.golang.org/api/storage/v1 google.golang.org/api/transport google.golang.org/api/transport/grpc google.golang.org/api/transport/http -# google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 +# google.golang.org/genproto v0.0.0-20250728155136-f173205681a0 ## explicit; go 1.23.0 google.golang.org/genproto/googleapis/type/calendarperiod google.golang.org/genproto/googleapis/type/date google.golang.org/genproto/googleapis/type/expr google.golang.org/genproto/googleapis/type/timeofday -# google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 +# google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 ## explicit; go 1.23.0 google.golang.org/genproto/googleapis/api google.golang.org/genproto/googleapis/api/annotations @@ -1009,13 +1010,13 @@ google.golang.org/genproto/googleapis/api/expr/v1alpha1 google.golang.org/genproto/googleapis/api/label google.golang.org/genproto/googleapis/api/metric google.golang.org/genproto/googleapis/api/monitoredres -# google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2 +# google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 ## explicit; go 1.23.0 google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/errdetails google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.72.0 -## explicit; go 1.23 +# google.golang.org/grpc v1.74.2 +## explicit; go 1.23.0 google.golang.org/grpc google.golang.org/grpc/attributes google.golang.org/grpc/authz/audit @@ -1032,6 +1033,7 @@ google.golang.org/grpc/balancer/leastrequest google.golang.org/grpc/balancer/pickfirst google.golang.org/grpc/balancer/pickfirst/internal google.golang.org/grpc/balancer/pickfirst/pickfirstleaf +google.golang.org/grpc/balancer/ringhash google.golang.org/grpc/balancer/rls google.golang.org/grpc/balancer/rls/internal/adaptive google.golang.org/grpc/balancer/rls/internal/keys @@ -1096,6 +1098,7 @@ google.golang.org/grpc/internal/resolver/dns google.golang.org/grpc/internal/resolver/dns/internal google.golang.org/grpc/internal/resolver/passthrough google.golang.org/grpc/internal/resolver/unix +google.golang.org/grpc/internal/ringhash google.golang.org/grpc/internal/serviceconfig google.golang.org/grpc/internal/stats google.golang.org/grpc/internal/status @@ -1138,8 +1141,20 @@ google.golang.org/grpc/xds/internal/balancer/clusterresolver google.golang.org/grpc/xds/internal/balancer/loadstore google.golang.org/grpc/xds/internal/balancer/outlierdetection google.golang.org/grpc/xds/internal/balancer/priority -google.golang.org/grpc/xds/internal/balancer/ringhash google.golang.org/grpc/xds/internal/balancer/wrrlocality +google.golang.org/grpc/xds/internal/clients +google.golang.org/grpc/xds/internal/clients/grpctransport +google.golang.org/grpc/xds/internal/clients/internal +google.golang.org/grpc/xds/internal/clients/internal/backoff +google.golang.org/grpc/xds/internal/clients/internal/buffer +google.golang.org/grpc/xds/internal/clients/internal/pretty +google.golang.org/grpc/xds/internal/clients/internal/syncutil +google.golang.org/grpc/xds/internal/clients/lrsclient +google.golang.org/grpc/xds/internal/clients/lrsclient/internal +google.golang.org/grpc/xds/internal/clients/xdsclient +google.golang.org/grpc/xds/internal/clients/xdsclient/internal +google.golang.org/grpc/xds/internal/clients/xdsclient/internal/xdsresource +google.golang.org/grpc/xds/internal/clients/xdsclient/metrics google.golang.org/grpc/xds/internal/clusterspecifier google.golang.org/grpc/xds/internal/clusterspecifier/rls google.golang.org/grpc/xds/internal/httpfilter @@ -1150,12 +1165,6 @@ google.golang.org/grpc/xds/internal/resolver google.golang.org/grpc/xds/internal/resolver/internal google.golang.org/grpc/xds/internal/server google.golang.org/grpc/xds/internal/xdsclient -google.golang.org/grpc/xds/internal/xdsclient/internal -google.golang.org/grpc/xds/internal/xdsclient/load -google.golang.org/grpc/xds/internal/xdsclient/transport -google.golang.org/grpc/xds/internal/xdsclient/transport/ads -google.golang.org/grpc/xds/internal/xdsclient/transport/grpctransport -google.golang.org/grpc/xds/internal/xdsclient/transport/lrs google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter google.golang.org/grpc/xds/internal/xdsclient/xdsresource